Authoritative list of launch locales, the customer and admin surfaces each
covers, and the coverage tier. Companion to
docs/launch/translation-workflow.md and the runtime catalog at
libs/oshun/i18n/.
Launch locales#
| Locale | Direction | Calendar | Customer launch coverage | Admin launch coverage | Tier |
|---|---|---|---|---|---|
en-US |
LTR | Gregorian | Full shell + every domain + assistant + privacy + billing + offline + PWA | Full admin shell + every operator workspace | Launch-quality |
es-US |
LTR | Gregorian | Shell, Tara, Arete, Veritas-MVP, assistant disclosures, support, billing | Operator shell, support workspace | Launch-quality |
fr-FR |
LTR | Gregorian | Shell, Tara, Nisaba, Veritas (incl. source inspection), assistant disclosures | Operator shell, support workspace | Launch-quality |
de-DE |
LTR | Gregorian | Shell, Tara, Veritas-MVP, Nisaba-MVP, assistant disclosures, billing | Operator shell | Launch-quality |
ar |
RTL | Gregorian | Shell, Tara, Nisaba reader, assistant disclosures, RTL smoke; minimum-viable assistant | Operator shell (LTR fallback for dense data) | Minimum-viable |
he |
RTL | Gregorian | Shell, Nisaba reader, assistant disclosures, RTL smoke | Operator shell (LTR fallback) | Minimum-viable |
ja-JP |
LTR | Gregorian | Shell, Tara, Veritas-MVP, assistant disclosures, Nisaba reader for Japanese editions | Operator shell | Launch-quality |
pt-BR |
LTR | Gregorian | Shell, Tara, Veritas-MVP, Arete, assistant disclosures, billing | Operator shell, support workspace | Launch-quality |
Customer profile preferences and language-switcher values use compact aliases for backward compatibility with existing preference storage:
| Preference alias | Launch locale |
|---|---|
en |
en-US |
es |
es-US |
fr |
fr-FR |
de |
de-DE |
ar |
ar |
he |
he |
ja |
ja-JP |
pt |
pt-BR |
Aliases outside this table are staging-only and are not customer-selectable in V1.
Tier definitions:
- Launch-quality: every catalog key resolves directly (no fallback), every shell view passes RTL/expansion QA, every shared disclosure has T&S/privacy sign-off, the locale appears as a first-class option in the locale picker.
- Minimum-viable: every catalog key resolves directly, RTL/ expansion QA
passes on the supported shell views, the locale appears in the locale picker
with a note explaining the coverage limit (e.g., "Some content is shown in
English"). Domains outside the listed coverage fall back to
en-USper the documented chain.
Fallback rules#
- Requested locale → language-only →
en-US. Implemented inresolveFallbackChain/translateinlibs/oshun/i18n/src/index.ts. - A fallback hit on the customer shell emits an analytics event for monitoring; a fallback hit on a launch-quality locale's shell is a bug.
- Disclosure and crisis-flow strings never fall back silently — those surfaces are gated by the catalog-coverage test and cannot ship with gaps.
RTL and bidi#
- Mirror layout, mirror direction-implying icons, preserve bidi isolation for customer-controlled strings.
- Default to western numerals; opt-in Arabic-Indic digits per content piece for
ar. - Punctuation set switches per locale; the shared shell components centralize this.
Text-expansion QA#
- Budget table is canonical in
LOCALE_EXPANSION_BUDGET(libs/oshun/i18n/src/index.ts). - Automated suite renders every shell view at the budget's synthetic length; truncation, overflow, or unintended wrap is a layout bug.
- Manual review additionally checks for line-break aesthetics on Asian-script locales (CJK) and on RTL locales.
Date/time, calendar, number, currency, region#
- Date/time formatting goes through
Intl.DateTimeFormatwith the customer's timezone — never operator timezone, never browser default when the customer has set one. - Currency formatting goes through
Intl.NumberFormatper locale; the customer's billing currency is canonical for billing surfaces and the per-region default is canonical for non-billing display. - Region formatting (addresses, phone numbers, names) follows the CLDR per locale.
Updating the coverage list#
Locale coverage moves up a tier when:
- The catalog-coverage test is green for the locale.
- RTL/expansion QA passes for every listed shell view.
- Disclosure and crisis-flow copy is reviewed by T&S/privacy/legal.
- A locale-coverage launch-readiness review confirms the tier.
The launch gate at docs/launch/go-no-go.md reads from this document to verify
that launch-quality locales meet their bar before GA.
Owner#
Localization lead owns this document. T&S lead, privacy lead, and the platform UI lead co-own the tier transitions. Updates require localization sign-off and any affected co-owner sign-off.