4.0 KiB
title, parent, nav_order, last_updated, aliases
| title | parent | nav_order | last_updated | aliases | |||
|---|---|---|---|---|---|---|---|
| Translate the App | User Guide | 17 | 2026-05-13 |
|
Translate the App
Contributing translations helps make Meshtastic accessible to a wider audience. The app uses Crowdin to manage community translations for both the user interface and in-app documentation.
What Gets Translated
| Resource | Source Location | Белешке |
|---|---|---|
| UI strings | composeResources/values/strings.xml |
Buttons, labels, messages, and all user-visible text |
| User Guide pages | docs/user/*.md |
In-app documentation shown in Help & Documentation |
| Fastlane metadata | fastlane/metadata/android/en-US/ |
App Store listing title, description, and changelogs |
Note — Developer Guide pages are English-only. Code-focused documentation targeting contributors is not translated.
How to Contribute
- Visit the Crowdin project. Open the Meshtastic Android Crowdin project and sign in or create a free account.
- Choose your language. Select an existing language or request a new one by opening a GitHub issue.
- Translate strings. Crowdin shows the English source on the left and your translation on the right. Translate each string and save.
- Review context. Many strings include screenshots or context comments — check these to understand where the text appears in the app.
- Submit. Approved translations are automatically merged into the next release.
Tip — Keep translations short. UI strings often appear in buttons, chips, or narrow columns. If a translation is significantly longer than the English original, consider abbreviating where the meaning stays clear.
Adding a New Language
If your language is not yet listed on Crowdin:
- Open an issue on GitHub requesting the new locale.
- A maintainer will add the language to Crowdin and configure
crowdin.yml. - Once added, you can begin translating immediately.
How Translations Are Organized
The Android app uses Compose Multiplatform resources for all user-visible strings:
core/resources/src/commonMain/composeResources/
├── values/ ← English (default)
│ └── strings.xml
├── values-de/ ← German
│ └── strings.xml
├── values-fr/ ← French
│ └── strings.xml
└── ...
In-app documentation follows a similar pattern under docs/:
docs/
├── user/ ← English source (default)
│ ├── onboarding.md
│ └── ...
├── fr/user/ ← French translations
│ ├── onboarding.md
│ └── ...
└── ...
The app automatically selects the correct locale based on your device's Language & Region settings.
Translation Guidelines
- Do not translate technical terms like "LoRa", "MQTT", "BLE", "TAK", "SNR", or "RSSI" — these are universal.
- Keep placeholders intact. Strings like
%1$sor%dare filled in at runtime. Do not remove or reorder them unless the grammar of your language requires it. - Match tone. The app uses a friendly, direct voice. Avoid overly formal language.
- Test if possible. Switch your device language and open the app to see how translations look in context.
Questions?
If you have questions about a specific string's context or need help getting started, open a discussion on the Meshtastic GitHub Discussions page.
Thank you for helping expand the reach of Meshtastic!