---
title: "What are the Android resource folder names for languages and regions, including Simplified and Traditional Chinese?"
description: "Use `values-<lang>` (ISO 639-1), `values-<lang>-r<REGION>` such as `values-pt-rBR`, or the BCP 47 form `values-b+<lang>+<script>+<region>` such as `values-b+sr+Latn`. For Chinese, name folders by script, `values-b+zh+Hans` and `values-b+zh+Hant`, rather than by region."
category: android
date: 2026-10-09
canonical: https://localizely.com/i18n-questions/android/what-are-the-android-resource-folder-names-for-languages-and-regions/
---

# 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](/language-country-codes/) and [ISO 15924 script codes](/iso-15924-list/).

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](https://developer.android.com/guide/topics/resources/multilingual-support) 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:

```text
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](https://developer.android.com/guide/topics/resources/providing-resources#LocaleQualifier) in the providing-resources guide.

Source: https://localizely.com/i18n-questions/android/what-are-the-android-resource-folder-names-for-languages-and-regions/
