Getting access
Create a Crowdin account
Sign up at crowdin.com if you do not already have an account.
Request access to the Wire Android project
Visit the wire-android-reloaded Crowdin project and request access to contribute translations.
Supported languages
For the official list of supported languages and which are open for community contributions, refer to the Wire language support page. The following locale directories are currently present in the repository:ar, bg, bs, cs, da, de, el, es, et, fi, fr, hr, hu, it, ja, lb, lt, lv, mk, mt, nl, pl, pt, ro, ru, si, sk, sl, sq, sr, sv, tr, uk, zh, and Serbian variants (b+sr+Cyrl+ME, b+sr+Latn, b+sr+Latn+ME).
String resource structure
String resources are split across several modules. Each module has its ownstrings.xml source file that Crowdin manages independently.
| Module | Source file |
|---|---|
app | app/src/main/res/values/strings.xml |
core/ui-common | core/ui-common/src/main/res/values/strings.xml |
features/cells | features/cells/src/main/res/values/strings.xml |
features/meetings | features/meetings/src/main/res/values/strings.xml |
features/sketch | features/sketch/src/main/res/values/strings.xml |
features/sync | features/sync/src/main/res/values/strings.xml |
Translatable vs non-translatable strings
Some strings in the source file are markedtranslatable="false" and are intentionally excluded from translation (for example, debug identifiers). These strings do not appear in the Crowdin editor.
Crowdin configuration
The Crowdin integration is configured incrowdin.yml at the repository root. It maps each source file to its translated output using the %two_letters_code% placeholder for the locale qualifier.
New module string files are added to
crowdin.yml via the addEntryToCrowdinFile Gradle task, but existing entries are not removed automatically.How translations get merged
Translation synchronisation is fully automated through GitHub Actions.Source upload
When changes are pushed to the
develop branch, new and updated English strings are automatically uploaded to Crowdin for translation.Translation download
Completed translations are periodically downloaded from Crowdin and a pull request is opened automatically against the
develop (or release/candidate) branch.AndroidBob bot with:
- Branch name:
chore/sync-and-update-localization-<base-branch> - Labels:
l10n,crowdin - Reviewers:
@wireapp/android
skip_untranslated_strings: true), so the English fallback in values/strings.xml is used at runtime for any language with incomplete coverage.