Jewelry AI - first launch and default language
The app reads your phone's whole language list before it settles on English
A first launch shows the phone's language, not a language the app picked for you. Where the phone reports a regional variant, the interface answers with the version the app ships; English appears only after every entry on the list has been tried.
What the app reads when nothing has been chosen
The input to this rule is not a single phone setting. It is the ordered list of languages the phone reports, and every part of the outcome follows from that.
- The input is an ordered list.
- The interface language is resolved from the language tags the phone reports, in the order it reports them (apps/jewelry-mobile/src/i18n/i18n-provider.tsx, resolveDeviceLocale(deviceLanguageTags(), catalogBackedLocales())).
- A supported language lower on the list answers before English does.
- English is the outcome of the whole list failing to match, not of the top entry failing to match (apps/jewelry-mobile/src/i18n/locales.ts, return enabled.has('en-US') ? 'en-US' : enabledLocales[0] ?? 'en-US').
- An exact match is used as it stands.
- The fold is reached only where the tag the phone reports does not match exactly, so a phone whose language the app ships gets that language directly.
- The fold produces the shipped catalogue, not a substitute.
- Traditional Chinese resolves to Simplified Chinese and European Portuguese to Brazilian Portuguese (apps/jewelry-mobile/src/i18n/locales.ts, zh: 'zh-Hans-CN'); the generic Norwegian tag resolves to Norwegian Bokmal. In each case what is drawn is the version the app ships for that language.
The order the resolution works in
Each stage below is reached only because the one before it did not settle the question.
The phone's language tags are collected in order
The app asks the phone for its language list and keeps the order the phone gives, then compares that list against the languages the interface is offered in.
A tag that matches exactly settles it
Where a tag matches one of those languages as it stands, that language is used and nothing further is consulted.
A regional variant folds into the shipped version
Where the tag does not match exactly, the variant resolves to the version the app ships for that language: Traditional Chinese to Simplified Chinese, European Portuguese to Brazilian Portuguese, the generic Norwegian tag to Norwegian Bokmal.
English answers only once the list is exhausted
If no tag on the list, at any position, matched any of the twenty languages the interface is offered in, the app opens in English.
The same order runs again when you come back
Changing the phone's language while the app is in the background sends the resolution through these stages again as you return, without a close and reopen.
What the phone reports, and what the interface shows
Each row is an outcome of the same rule. Read the last column as the reason for the middle one.
| The phone reports | The interface shows | What that tells you |
|---|---|---|
| Traditional Chinese | Simplified Chinese | The exact tag did not match, so the version the app ships for that language answered. |
| European Portuguese | Brazilian Portuguese | The same fold, and the same catalogue - not a second translation of Portuguese. |
| Norwegian, as the generic tag | Norwegian Bokmal | A generic tag resolves to the variant the app ships. |
| A language that is not offered, with a supported language further down the list | That supported language | The list is read past its first entry. |
| A language that is not offered, with nothing supported anywhere on the list | English | The list was tried in full and nothing matched. |
A safeguard for a language that is no longer selectable
A language already fixed on a device is checked against the languages that can currently be selected before it is applied. If it is not among them, the app does not force it; it returns to resolving from the phone instead (apps/jewelry-mobile/src/i18n/locales.ts, if (preference !== 'system' && enabledLocales.includes(preference)) {).
This is a safeguard rather than an experience. Every language in the list can be selected in a normal build, so the path is not reached there. It carries meaning only if a language were taken out of the list, or if a language selected in a preview build were not among those a normal build offers.
The practical consequence is narrow but worth stating: such a device is resolved by the same ordered read described above, as though no language had been fixed on it.
Outside the resolution rule
This page explains what decides the language when you have chosen nothing. The following sit outside it.
- Where a language is changed by hand, and what such a choice is written to, are not described here.
- The relaunch that follows a change of writing direction is a behaviour of its own and is not covered on this page.
- How a phone builds and orders its own language list is a matter for the operating system, and nothing here describes it.
- Whether messages that arrive from the server follow the language the interface resolved to is not something this page can state.
Questions
My phone is not set to English, so why did the app open in English?
English is used when no entry on the phone's language list matches any of the twenty languages the interface is offered in. It is the outcome of the whole list being tried, so the list is worth checking before concluding that a language is missing.
Why is the app in Brazilian Portuguese when my phone is set to Portugal?
The exact tag did not match, so the variant resolved to the version the app ships for that language. What you are reading is that shipped version itself, not a separate translation standing in for another one.
The app changed language while I was using another app. Is that a fault?
No. On a device that is still resolving automatically, changing the phone's language causes the interface language to be resolved again when you return to the app, so no close and reopen is needed.
I changed my phone's language and the app stayed as it was. Why?
The phone's language decides only while nothing has been chosen in the app. On a device where a language has already been chosen, the interface stays where it was put and the phone's setting no longer takes part.