Localizely logo
  • Home
  • Getting started
  • How it works
  • Pricing
  • FAQ
Sign up

I18n questions · Android

What are the Android resource folder names for languages and regions, including Simplified and Traditional Chinese? 

Three forms are accepted, all next to the default res/values folder:

  • values-fr: a two-letter ISO 639-1 language code.
  • values-pt-rBR: language plus a two-letter ISO 3166-1 region code behind a lowercase r. A region alone is not allowed.
  • values-b+sr+Latn, values-b+es+419, values-b+zh+Hant+TW: the BCP 47 form, b+ followed by subtags joined with +. It is the only form that can carry a script subtag (four letters, ISO 15924) or a three-digit UN M.49 region. Both forms also accept three-letter language codes, although the documentation only mentions two-letter ones.

Folder names are not case-sensitive, but the usual spelling is lowercase language, title-case script, uppercase region. Code lists: language and country codes and ISO 15924 script codes.

Since Android 7.0 the resolver tries the exact locale, then the language alone, then the closest related variant (a fr-CH user gets values-fr-rFR when there is no values-fr), then the user's next preferred language, and finally the default values. Matching also compares scripts. When a folder name has no script, the system infers the likely one from language and region, so values-zh-rTW counts as Hant and values-sr as Cyrl. Before 7.0 only language and region were compared. Keep strings in the most common parent (values-fr, not values-fr-rFR) and add regional folders only for real differences; the multilingual support guide walks through the resolution order with examples.

Chinese is where region-based names go wrong, because the difference users care about is the script, not the country. Name the folders by script:

res/values-b+zh+Hans/strings.xml     Simplified: mainland China, Singapore
res/values-b+zh+Hant/strings.xml     Traditional: Taiwan, Hong Kong, Macau
res/values-b+zh+Hant+HK/strings.xml  optional Hong Kong wording on top of Hant

Users in Hong Kong, Macau or Singapore then get the right script even though no folder names their region. values-zh-rCN and values-zh-rTW also resolve by inferred script on 7.0 and later, but their names describe regions you are not actually distinguishing, and Android's own per-app language configuration uses script-based tags such as zh-Hant-MO.

Pitfalls:

  • A bare values-zh folder is treated as Simplified, because the likely script for zh without a region is Hans. Traditional Chinese users do not match it, so always add values-b+zh+Hant.
  • Only values is guaranteed to be used. Every string must exist there, or the app crashes on an unsupported language.

Reference: the language and region qualifier in the providing-resources guide.

Published Oct 9, 2026 · Markdown version

Related Android localization questions:

Android localization files:

Learn about Android XML string resources
Localizely logo
About
Free tools
Boring stuff
  • Privacy Policy
  • Terms of Service
  • Cookie Policy
  • Compare
Newsletter
Copyrights 2026 © Localizely