Cryptocurrency Tracker docs
v2.0.0
Live demoConsole demo Get help
● Set up · 9 languages

Localization
9 languages, one more is easy.

The app, the widgets, the push texts and the Automatic summary come in English, German, Spanish, French, Portuguese, Arabic, Hindi, Indonesian and Turkish.

en de es fr pt ar hi id trRight-to-left Arabic

01Languages and where their texts live

PartFiles
App screensapp/lib/l10n/app_<code>.arb. English is the template, generated from app/tool/gen_en_arb.py.
Android widgetsapp/android/app/src/main/res/values-<code>/ct_widget_strings.xml (Indonesian uses values-in)
iOS widgetsapp/ios/CryptoTrackerWidget/<code>.lproj/
iOS language listCFBundleLocalizations in app/ios/Runner/Info.plist
Push texts for alerts, Automatic summary, disclaimerfirebase/functions/src/api/i18n.ts (server-side templates)
AI brief and reportsGenerated in the requested language by the AI provider

The app follows the phone's language, or the language chosen in Settings. Arabic is laid out right to left.

02Change a text

  1. EnglishEdit the entry in app/tool/gen_en_arb.py and run python3 tool/gen_en_arb.py in app/. It rewrites lib/l10n/app_en.arb.
  2. Other languagesEdit the same key in lib/l10n/app_<code>.arb.
  3. Regenerateflutter gen-l10n (it also runs automatically on flutter pub get and on every build, because generate: true is set in pubspec.yaml).
  4. Checkflutter test test/l10n_parity_test.dart checks that every language has every key.

Texts that the operator controls (the disclaimer, the AI, automatic, sponsored and affiliate labels, the Pro perks, the affiliate disclosure, the Buy button) are set in the console and shown as entered.

03Add a language

  1. App textsCopy app/lib/l10n/app_en.arb to app_<code>.arb, set "@@locale" and translate every value. Keep the placeholders in braces, like {time}.
  2. Language pickerAdd the code to appLanguages in app/lib/state/app_state.dart and its name to languageNames in app/lib/ui/screens/settings_screen.dart.
  3. WidgetsAdd values-<code>/ct_widget_strings.xml on Android and <code>.lproj on iOS; add the code to CFBundleLocalizations and to LANGUAGES in app/ios/scripts/add_widget_extension.rb, then run the script.
  4. BackendAdd the code to APP_LANGS in firebase/functions/src/api/defaults.ts and a dictionary with every key to firebase/functions/src/api/i18n.ts, then deploy the functions. Until then the backend answers that language in English (parseLang falls back to en).
  5. Testflutter test in app/ and npm test in firebase/functions.