# Localization

The app uses `app/src/main/res/raw/supported_locales.tsv` as the locale source of truth. The catalog is seeded from `target_countries.txt`.

Locale status controls rollout:

- `complete`: included in the in-app language picker and generated Android `localeConfig`.
- `partial`: included in both, and shown as partial in the picker.
- `planned`: tracked for target-country coverage, but not exposed to users.

To add a translated language:

1. Create the matching `app/src/main/res/<resourceQualifier>/strings.xml`.
2. Translate every key from `app/src/main/res/values/strings.xml`.
3. If marking the locale `complete`, also translate `app/src/main/res/raw/privacy_policy.txt` into the matching raw resource folder, such as `raw-es/privacy_policy.txt`.
4. Change the locale row status in `supported_locales.tsv` from `planned` to `complete` or `partial`.
5. Run `bash gradlew verifyLocalization`.

Mark a locale `complete` when all required UI strings and localized privacy policy copy are present and accepted for release. Native or legal review is recommended for sensitive markets, but the build only enforces resource completeness.

`generateLocaleConfig` builds `@xml/locales_config` from active rows, so do not hand-edit a static `locales_config.xml`.
