6 Commits

Author SHA1 Message Date
Ken-ichi Ueda
7910fd05bc fix: restore Crowdin sync for InfoPlist.xcstrings
Solution was disabling en as a target language for this file on Crowdin...
even though this file specifies that en is the source locale.
2025-02-18 10:52:17 -08:00
Ken-ichi Ueda
a4a2f3d16c fix: stop syncing translations for InfoPlist.xcstrings
There's a problem with Crowdin CLI or our config that results in the source
text getting removed from this file after sync, so we're just omitting it for
now.
2025-02-05 13:56:47 -08:00
Johannes Klein
9aef4db8bb Internationalize app store metadata (#2341)
* Add Fastlate app store metadata files as Crowdin translation sources
* Update i18ncli.js to move and rename translations so Fastlane can use them
* Update `fastlane prod` so it prompts for public release notes and cues a new
  release in the App Store that still requires the manual attachment of a
  build
* Add `fastlane android upload_metadata` to upload metadata to Play Store

Closes #2248

---------

Co-authored-by: Ken-ichi <kenichi.ueda@gmail.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-11-18 16:02:53 -08:00
Ken-ichi
3dcc833c98 feat: support basic layout, typography, and photo carousel in RTL (#2334)
* Use a wrapper around Text for all typography components that sets
  app-specific defaults, allowing default RTL to work
* feat: make iOS permission prompt text translatable
* fix: allow RTL layout of char limit on text input bottom sheet
* fix: allow RTL photo carousel on ObsDetails and TaxonDetails

Removes react-native-reanimated-carousel, which needs to be patched to support
RTL and maybe wasn't providing anything beyond FlatList for us anyway.

InfoPlist.xcstrings will not be automatically updated on Crowdin sync pending
a Crowdin bug.

Work toward #2099
2024-11-01 12:59:25 -07:00
Ken-ichi
80ecc0b7c1 Sync with Crowdin (#2195)
Github Actions and scripts to

* push strings.ftl to Crowdin when it changes
* pull translations from Crowdin every day and a PR should get made if there are changes
* FTL validation and normalization happens in the action and will prevent a PR from being created

Closes #2103
Closes #2104
2024-10-02 10:52:30 -07:00
Ken-ichi
9ea8bf7070 i18n with Fluent and i18next (#40)
* Support localization with i18next and Fluent

* src/i18n/strings.ftl holds all application strings. If you're going to add a
  string, add it there
* src/i18n/l10n/ has all the translations (or localizations), both .ftl files
  in Fluent format and .ftl.json files in which the file structure is JSON
  but the values are Fluent strings
* src/i18n/i18ncli.js is a CLI tool to generate files and code given
  localizations in .ftl files

So the process for adding strings looks like

1. Update src/i18n/strings.ftl
2. Add strings to code using the useTranslation hook
3. Run `node src/i18n/i18ncli.js ftl2json`
4. Build

* Set up for use with Crowdin CLI or github integration

* Added some example strings that might not change

* Expanded README to explain how to add new text
2022-01-24 12:02:44 -08:00