If you ship an app to both Google Play and the App Store, you have probably copied a locale code from one console to the other. It looks harmless, because both stores follow BCP-47 on paper. In practice they don't accept the same codes, and a wrong one can silently drop a market.
Why the codes don't map 1:1
-
Play Console stayed close to BCP-47 and still accepts several legacy ISO 639-1 codes that predate the modern spec:
iw,in,ji. Android's ownvalues-*folders use them. -
App Store Connect uses Apple's variant, which prefers the modern codes (
he,id,yi) and uses explicit script tags for Chinese (zh-Hans,zh-Hant) instead of region tags (zh-CN,zh-TW).
The practical result: App Store Connect doesn't throw an error on zh-CN. It just doesn't find a match, so Simplified Chinese screenshots never publish. Same story for Hebrew and Indonesian.
The mismatches worth memorizing
| Language / market | Google Play | App Store Connect |
|---|---|---|
| Simplified Chinese (China) | zh-CN | zh-Hans |
| Traditional Chinese (Taiwan) | zh-TW | zh-Hant |
| Hebrew (Israel) | iw | he |
| Indonesian | in | id |
| Yiddish | ji | yi |
| Norwegian (unified) | no | not supported, use nb only |
Identical on both stores (safe to copy across)
| Language / market | Code | Note |
|---|---|---|
| English (US) | en-US | |
| English (UK) | en-GB | |
| French (France) | fr-FR | distinct from Canadian French |
| French (Canada) | fr-CA | |
| German | de-DE | Play also accepts bare de
|
| Spanish (Spain) | es-ES | Play also accepts es
|
| Spanish (Mexico / Latam) | es-MX | the App Store Connect key for Latin America |
| Dutch | nl-NL | Play accepts bare nl
|
| Portuguese (Brazil) | pt-BR | |
| Portuguese (Portugal) | pt-PT |
Japanese (ja), Korean (ko), Italian (it), Russian (ru), Turkish (tr), Arabic (ar), Thai (th), Vietnamese (vi), Polish (pl), Swedish (sv), Danish (da), Finnish (fi), Greek (el), Czech (cs), Hungarian (hu), Romanian (ro), Slovak (sk), Bulgarian (bg), Ukrainian (uk) and Croatian (hr) are the same on both.
Common mistakes
- Copying
zh-CNinto App Store Connect and wondering why Chinese screenshots never appear. - Entering
hein Play Console when Android expectsiw. - Treating Norwegian as one locale on both stores.
- Assuming a code that works in one console is valid in the other without checking.
Before every release
Run your locale list through both consoles' code sets once, and compare the two lists side by side instead of reusing one list for both. The full table with all the details, plus a pre-submission checklist, is in our reference guide: Google Play Console vs App Store Connect locale codes.
Top comments (0)