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 `pt` serves 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](https://docs.mobilejoe.dev/sdk/troubleshooting.md#missing-content).
