Skip to content

Localisation

Lwb89dev edited this page Oct 19, 2026 · 1 revision

Localisation

Roadstr is localised in 27 languages: all the official languages of the European Union plus Russian, Japanese and Chinese.

bg Bulgarian · cs Czech · da Danish · de German · el Greek · en English · es Spanish · et Estonian · fi Finnish · fr French · ga Irish · hr Croatian · hu Hungarian · it Italian · ja Japanese · lt Lithuanian · lv Latvian · mt Maltese · nl Dutch · pl Polish · pt Portuguese · ro Romanian · ru Russian · sk Slovak · sl Slovenian · sv Swedish · zh Chinese

Change the language in Settings → Language; the default follows the system.

State of the translations

  • The core app is fully translated into all 27 languages.
  • The voice-search texts are translated into all 27 languages.
  • The newest texts of other features — the interoperability and MeshCore settings, Explore, Journey, the performance profile and the latest public-transport additions — exist in English and Italian only. In the other 25 languages those texts appear in English until they are translated.
  • No language has had a full native-speaker review. Irish (ga) and Maltese (mt) are the least reliable and most want a native speaker's eye; Estonian, Latvian and Lithuanian carry an inflection risk.
  • Spoken navigation guidance exists in eight languages (Italian, English, Spanish, French, Japanese, Chinese, Portuguese, German); the others keep text instructions. Plain-language place search has full word lists for seven languages; see Search and Explore.

How translations are organised

Where What
lib/l10n/app_<locale>.arb The source for the core app. One file per language; feeds both the Dart classes and the Android string resources
tools/kotlin_rewrite/native_recovery_translations.dart Start-up screens and the bunker login, which exist only in the Kotlin app
tools/kotlin_rewrite/native_speech_translations.json The voice-search texts
tools/kotlin_rewrite/native_feature_strings.json Explore and Journey settings texts (English and Italian)
android/app/src/main/res/values-<locale>/ The generated Android resources

A test fails if a language lacks a key of the English template or changes its placeholders.

Contributing a translation

  1. Fork the repository and edit the language's lib/l10n/app_<locale>.arb (or the relevant tool file above).
  2. Regenerate everything derived from it:
    flutter gen-l10n
    for g in tools/kotlin_rewrite/generate_android_*_strings.dart; do dart run "$g"; done
  3. Run flutter test — it checks keys, placeholders and that generated files are current.
  4. Open a pull request.

Conventions

  • Keep placeholders (%1$d, {count}) exactly as in the English text.
  • Use the register the language already uses in the app. By convention: formal in German (Sie), Dutch (u), French, Portuguese, Czech, Slovak, Slovenian, Croatian, Hungarian, Estonian, Bulgarian, Greek, Latvian, Lithuanian, Russian and Chinese (您); informal in Italian, Spanish, Danish, Swedish, Polish, Romanian, Irish and Maltese; polite form in Japanese.
  • Where a sentence would need the user's gender (“I did not hear anything”), prefer an impersonal wording.
  • Keep licence and attribution text in English.
  • Say what is sent and to whom in privacy sentences — a reviewer will check them first.

The review notes, with the confidence for each language, are in docs/world-discovery/LOCALIZATION_REVIEW.md.

Clone this wiki locally