Guide
App Store vs Google Play Locale Codes: A Mapping Reference
App Store Connect and Google Play Console name the same languages with different codes. Apple uses bare codes for most languages (ja, ko, tr) and script codes for Chinese (zh-Hans), while Google Play usually adds a region (ja-JP, ko-KR, tr-TR, zh-CN). Spanish differs most: Apple offers es-MX and es-ES, Google Play offers es-419, es-ES and es-US.
Last updated: 9 min read
Why do the two stores use different locale codes?
Each store keeps its own list of listing languages. Apple's list comes from the App Store Connect API locale shortcodes (opens in a new tab) page, which says the App Store is available in 175 regions and 50 languages. Google's list sits under "View list of available languages" in Play Console Help: Translate and localize your app (opens in a new tab).
The two lists overlap heavily, but the codes do not match. A script or CI job that reuses one store's folder names for the other will fail or put assets in the wrong language. The fix is a mapping table you check once and then keep.
- Apple mostly uses bare language codes: ja, ko, tr, it, sv, and so on. Region suffixes appear only where Apple splits a language (en-US, en-GB, pt-BR, pt-PT, es-MX, es-ES, fr-FR, fr-CA) and on a few others such as de-DE, nl-NL and ar-SA.
- Google Play mostly adds a region: ja-JP, ko-KR, tr-TR, it-IT, sv-SE. A few languages stay bare, including ar, id, ro, sk, th, uk and vi.
- Chinese uses different schemes: Apple identifies Chinese by script (zh-Hans, zh-Hant). Google Play identifies it by region (zh-CN, zh-TW, zh-HK).
- Hebrew uses an older code on Google Play: iw-IL, not he. Apple uses he.
How do App Store Connect and Google Play codes map by language?
The table below lists every language StoreLocale can translate into, plus English as the source language. The codes are taken exactly from Apple's shortcode list and Google's Play Console language list. The first column is the code StoreLocale uses internally and for export folder names.
| StoreLocale code | Language | App Store Connect | Google Play Console |
|---|---|---|---|
| en (source) | English | en-US, en-GB, en-AU, en-CA | en-US, en-GB, en-AU, en-CA, en-IN, en-SG, en-ZA |
| ar | Arabic | ar-SA | ar |
| ca | Catalan | ca | ca |
| zh | Chinese (Simplified) | zh-Hans | zh-CN |
| zh-TW | Chinese (Traditional) | zh-Hant | zh-TW (zh-HK is a separate Hong Kong listing) |
| hr | Croatian | hr | hr |
| cs | Czech | cs | cs-CZ |
| da | Danish | da | da-DK |
| nl | Dutch | nl-NL | nl-NL |
| fi | Finnish | fi | fi-FI |
| fr | French | fr-FR, fr-CA | fr-FR, fr-CA |
| de | German | de-DE | de-DE |
| el | Greek | el | el-GR |
| he | Hebrew | he | iw-IL |
| hi | Hindi | hi | hi-IN |
| hu | Hungarian | hu | hu-HU |
| id | Indonesian | id | id |
| it | Italian | it | it-IT |
| ja | Japanese | ja | ja-JP |
| ko | Korean | ko | ko-KR |
| ms | Malay | ms | ms, ms-MY |
| no | Norwegian | no | no-NO |
| pl | Polish | pl | pl-PL |
| pt | Portuguese | pt-BR, pt-PT | pt-BR, pt-PT |
| ro | Romanian | ro | ro |
| ru | Russian | ru | ru-RU |
| sk | Slovak | sk | sk |
| es | Spanish | es-MX, es-ES | es-419, es-ES, es-US |
| sv | Swedish | sv | sv-SE |
| th | Thai | th | th |
| tr | Turkish | tr | tr-TR |
| uk | Ukrainian | uk | uk |
| vi | Vietnamese | vi | vi |
Codes match exactly on both stores for Catalan, Croatian, Indonesian, Malay (ms), Romanian, Slovak, Thai, Ukrainian and Vietnamese, plus nl-NL, de-DE, fr-FR, fr-CA, pt-BR, pt-PT, es-ES and the four shared English codes. Most other languages differ only by a region suffix, such as it versus it-IT, which is easy to miss in a folder listing.
Which differences cause the most upload mistakes?
| Language | App Store Connect | Google Play Console | What to watch |
|---|---|---|---|
| Spanish (Latin America) | es-MX | es-419 | Apple has no es-419. Its Latin American listing is labeled Spanish (Mexico). |
| Spanish (United States) | No separate locale | es-US | Google Play only. On Apple, the US storefront lists Spanish (Mexico) as an additional language. |
| Spanish (Spain) | es-ES | es-ES | Same code on both stores. |
| Portuguese | pt-BR, pt-PT | pt-BR, pt-PT | Two separate listings on both stores. Neither store offers a generic pt. |
| Chinese (Simplified) | zh-Hans | zh-CN | Script code on Apple, region code on Google Play. |
| Chinese (Traditional) | zh-Hant | zh-TW, zh-HK | Google Play splits Taiwan and Hong Kong. Apple has one Traditional Chinese listing. |
| French (Canada) | fr-CA | fr-CA | Same code on both. Apple's Canada storefront lists French (Canada) as its additional language. |
| English | en-US, en-GB, en-AU, en-CA | en-US, en-GB, en-AU, en-CA, en-IN, en-SG, en-ZA | Google Play has three extra English listings. |
| Hebrew | he | iw-IL | Google Play uses the older iw code. |
| Arabic | ar-SA | ar | Apple adds a region, Google Play does not. |
Spanish needs the most planning. If you write one Latin American Spanish set, upload it to es-MX on Apple and to es-419 on Google Play. Add es-US on Google Play only if you want a separate US Spanish listing.
Which language does each App Store storefront show by default?
A locale code is not a country. Apple's App Store localizations reference (opens in a new tab) gives each storefront a default language and a list of additional languages. Some of these defaults are not obvious.
| Storefront | Default language | Additional languages |
|---|---|---|
| United States | English (US) | Arabic, Chinese (Simplified), Chinese (Traditional), French, Korean, Portuguese (Brazil), Russian, Spanish (Mexico), Vietnamese |
| Mexico | Spanish (Mexico) | English (U.K.) |
| Argentina | Spanish (Mexico) | English (U.K.) |
| Spain | Spanish (Spain) | Catalan, English (U.K.) |
| Brazil | Portuguese (Brazil) | English (U.K.) |
| Portugal | Portuguese (Portugal) | English (U.K.) |
| Canada | English (Canada) | French (Canada) |
| Japan | Japanese | English (US) |
| Türkiye | English (U.K.) | Turkish |
| Israel | English (U.K.) | Hebrew |
| Saudi Arabia | English (U.K.) | Arabic |
| Taiwan | Chinese (Traditional) | English (U.K.) |
Two practical points follow from this table. First, es-MX is the default for most Spanish-speaking Latin American storefronts, not only Mexico; Uruguay, which defaults to English (U.K.), is the exception. Second, several markets such as Türkiye, Israel and Saudi Arabia default to English (U.K.), so an en-GB listing is worth reviewing even if your source copy is US English.
What happens when a locale has no screenshots?
On Apple, when you add a language (opens in a new tab), its screenshots start as copies of the primary language's screenshots. Apple also says that if no localization matches a user's language setting, the next most relevant localization is used. Otherwise the metadata appears in the primary language.
For app previews, Apple's upload guide (opens in a new tab) says that when a localization has no preview, the preview from the next best available language is shown instead. The same page notes that if your UI is the same across sizes and localizations, you only need to provide the highest-resolution screenshots.
On Google Play, Play Console Help (opens in a new tab) says that if you translate text without adding localized images, your graphic assets are shown from the default language. Google Play users can also view an automated translation of your app's page. That translation applies to the listing text, while words baked into screenshot images stay as uploaded.
How should you name folders so exports map to the right locale?
Pick one internal language code per screenshot set and keep a single mapping file that turns it into store codes. One set can feed several listings. For example, a Brazilian Portuguese set may go to pt-BR on both stores, and a Latin American Spanish set may go to es-MX and es-419.
- List the store locales you plan to publish on each store, using the exact codes from the tables above.
- Assign each store locale to one screenshot set (for example es for both es-MX and es-419).
- Rename or copy export folders to the store code just before upload, not earlier, so your source stays language-based.
- Check the upload for each locale in the console language menu, including the regional pairs (pt-BR and pt-PT, es-MX and es-ES).
StoreLocale exports a ZIP of PNGs organized as Platform / locale / size, with folders such as App Store (iOS) and Google Play. The locale folder uses the StoreLocale code from the first table (for example ja, zh or es), so map it to ja, zh-Hans or es-MX on Apple and to ja-JP, zh-CN or es-419 on Google Play. StoreLocale does not upload to either console, so the final upload is a manual step.
How does StoreLocale handle regional variants?
StoreLocale translates into 32 target languages plus English as the source. Simplified Chinese (zh) and Traditional Chinese (zh-TW) are separate targets, and Arabic and Hebrew are supported right-to-left languages.
Each project holds one Portuguese set (pt), one Spanish set (es) and one French set (fr). If you publish both pt-BR and pt-PT, or both es-MX and es-ES, you can export that one set for both listings. To tailor the second market, export the first set, then edit the text and export again, or build a separate project for that market.
Text that an AI repaint placed inside the app UI does not change when you edit captions, so it needs a new generation, which uses credits. Have a native speaker check regional vocabulary before you upload to a second variant. This matters most for European versus Brazilian Portuguese.
Which store languages are not StoreLocale targets?
Both stores support languages beyond StoreLocale's target list. On Apple these are Bengali (bn-BD), Gujarati (gu-IN), Kannada (kn-IN), Malayalam (ml-IN), Marathi (mr-IN), Oriya (or-IN), Punjabi (pa-IN), Slovenian (sl-SI), Tamil (ta-IN), Telugu (te-IN) and Urdu (ur-PK).
Google Play's list is longer still, with languages such as Afrikaans (af), Filipino (fil), Persian (fa, fa-AE, fa-AF, fa-IR), and Swahili (sw). Also note that Google's code for Slovenian is sl, while Apple's is sl-SI. For these listings you need another translation workflow, or you can leave them on the default-language screenshots.
Frequently asked questions
Is es-419 available in App Store Connect?
No. Apple's locale shortcode list (opens in a new tab) has es-MX and es-ES only. es-419 (Spanish, Latin America) is a Google Play Console code. On Apple, Spanish (Mexico) is the default language for most Spanish-speaking Latin American storefronts, such as Mexico and Argentina.
Should Simplified Chinese be zh-Hans or zh-CN?
Use zh-Hans in App Store Connect and zh-CN in Google Play Console. Both refer to Simplified Chinese. For Traditional Chinese, Apple uses zh-Hant and Google Play uses zh-TW, with zh-HK as a separate Hong Kong listing.
Why does Google Play use iw-IL for Hebrew?
Google Play lists Hebrew as iw-IL in its language list (opens in a new tab) without explaining the choice. iw is the older ISO 639 code for Hebrew, later replaced by he, which App Store Connect uses. Map your Hebrew set to each code separately.
Do I need separate screenshots for pt-BR and pt-PT?
Both stores treat them as separate listings, so each needs its own upload. The images can be identical if the text works for both markets, but vocabulary differs between Brazilian and European Portuguese, so a native review is worth it.
What do users see if I skip screenshots for a locale?
On Apple, a newly added language starts with the primary language's screenshots. On Google Play, graphic assets are shown from the default language if you do not localize them. Either way, users may see untranslated screenshots next to translated text.
Can StoreLocale export folders named with store locale codes?
Export folders use StoreLocale's own language codes (such as ja, zh, es) inside App Store (iOS) and Google Play folders. Rename them to the store codes from this guide when you upload, since StoreLocale does not upload to the consoles directly.
Sources
Related pages
App screenshot localization
Produce localized screenshot sets for each storefront language.
Google Play screenshot generator
Build Play Store screenshot sets and export them per locale.
App Store screenshot sizes
Current Apple and Google Play screenshot dimensions in one place.
Screenshot localization checklist
A pre-upload checklist for every locale you publish.
RTL app store screenshots
How to prepare Arabic and Hebrew screenshot sets.
Spanish screenshots
es-MX, es-ES and es-419 in practice.
Portuguese screenshots
Planning pt-BR and pt-PT listings.
Simplified Chinese screenshots
zh-Hans and zh-CN listings and typography.
Translate your next screenshot set with StoreLocale
Upload your screenshots, pick target languages, and review every localized version before you export.