iOS & Android Locale Codes Reference (BCP-47, es-MX, pt-BR, zh-Hans)

By The strings.dev team · Last updated

Frequently asked questions

What is the difference between an iOS locale code and an Android values folder code?

iOS names each localization with a BCP-47 language ID that doubles as the .lproj folder name (fr.lproj, pt-BR.lproj, zh-Hans.lproj). Android encodes the same locale as a resource-folder qualifier: values-fr, values-pt-rBR, or the BCP-47 form values-b+zh+Hans. The region uses a lowercase r prefix on Android (values-es-rMX) but a hyphen on iOS (es-MX).

How do I write a Chinese Simplified or Traditional folder on Android?

Use the BCP-47 script notation: values-b+zh+Hans for Simplified and values-b+zh+Hant for Traditional. That form requires API level 21 or newer. For older devices, fall back to the region approximations values-zh-rCN and values-zh-rTW. On iOS the corresponding language IDs are zh-Hans and zh-Hant.

Why does Android use values-iw for Hebrew and values-in for Indonesian?

Android preserves the older ISO 639 codes for a few languages: Hebrew is iw (not he), Indonesian is in (not id), and Yiddish is ji. Even though your BCP-47 tag uses the modern code, the resource folder must use the legacy one or the folder will not resolve.

Are App Store and Play Store language codes the same as my in-app resource codes?

They largely overlap with the same BCP-47 tags but are a separate localization surface for store metadata and screenshots, and are not always one-to-one with your in-app folders. strings.dev localizes in-app native strings only; store listings are a distinct workflow you handle yourself.

How many languages can I localize on the free tier?

The free Indie tier covers 1 project and 1 language with unlimited word translations plus app and brand localization. Indie Plus adds unlimited languages, 2 projects, brand context, and the QA & analytics dashboard for $20/mo, or $10/mo billed annually.

Related

Localize your app free