iOS · Android · SDK
Localization
How the SDK requests languages, how the API selects translated content, and which texts your app controls.
Requested language
The SDK sends language tags with region and script, such as pt-BR or zh-Hant-TW, with each request.
| Platform | Source | When it changes |
|---|---|---|
| iOS | Up to three languages of Locale.preferredLanguages, in the user's order | Captured at the first request; a language change applies after the app relaunches. |
| Android | Up to three of the app's configured locales, in order | Captured during Joe.configure; a language change applies after the app relaunches. |
On iOS, the languages follow the user's language settings, not the localizations of your app. A German user of an English-only app gets German FAQs if you added a de translation, while your app and the SDK screens stay in English.
Translated content
Add translations to FAQs and alerts in the dashboard. For each requested language in order, the API uses an exact translation such as pt-BR, then the language translation pt. Without a match, or when the requested language is your app's source language, it returns the original text. For en-GB,de-DE with English original text, users get the original text, not the German translation.
- A language translation such as
ptserves every region. Regional translations (en-AU,en-CA,en-GB,en-US,fr-CA,pt-BR,pt-PT) serve only their region, also for the source language. - A translation replaces the whole text: an alert translation without a message shows no message.
- Feature plans are not translated. FAQs keep their dashboard order in every language.
Change the source language, English by default, in the app settings.
Interface labels
The standard screens include labels in English and German. The configuration of FAQs and Feature Plans accepts your own email subject and body; the FAQ configuration also accepts support labels.
Test a translation
Add a de translation to a live FAQ, set your device or app language to German, relaunch the app, and open the FAQs. If the original text remains, check the translation's language code and follow Troubleshooting.