Files
HiveGrid-Wireframes/03 Quellen und Referenzen/hivegrid-cloud/docs/contributing/i18n/ROLLOUT.md
T

37 lines
2.9 KiB
Markdown

# Six-locale rollout and rollback
Polish (`pl`), Ukrainian (`uk`), Russian (`ru`) and Hungarian (`hu`) ship as static catalogs but remain disabled until their own release gate passes. The checked-in and production default for `I18N_ENABLED_LOCALES` is `de,en`.
## Release gate
Each locale must have a current `reviews/<locale>.json` manifest before activation. A native speaker reviews all Auth, error, billing, transactional-mail and formal-override copy, completes the critical App and Customer Portal journeys, and records at least 200 stratified samples from the other namespaces. The manifest records reviewer, date, sample size and corrections. A changed German source hash makes the catalog review-pending again.
Technical presence is not release approval. `packages/i18n/src/locales.ts` keeps every new locale in the `review` stage, so production configuration rejects it even if it is added to the environment variable. The stage may move to `production` only after the manifest gate has passed.
## Staged activation
Activate one locale at a time on staging in this order:
1. `pl`
2. `uk`
3. `ru`
4. `hu`
For each locale, append only that code to `I18N_ENABLED_LOCALES`, deploy the same immutable image, and run the Du/Sie browser and mail UAT. Cover login/password reset, navigation/dashboard/search, CRM/projects/pipelines/workflows, destructive dialogs/errors/toasts, billing/checkout, settings/language changes, Customer Portal and transactional mail. Check desktop, tablet and mobile layouts, including Cyrillic, Polish `ą ć ę ł ń ó ś ź ż` and Hungarian `á é í ó ö ő ú ü ű`.
After corrections and a completed manifest, promote the locale release stage, add it to the production environment variable and monitor the deploy. Do not activate multiple new locales in the same rollout step.
## Performance gate
Run `pnpm verify:i18n-performance`. It measures synchronous JSON parsing and retained RSS for `de,en` versus all six base/formal bundles in isolated Node processes. A delta above 250 ms or 30 MB fails the command and requires locale-scoped cached loading before release. Record the measured result in the ticket implementation note.
Measurement on 2026-08-02: the median `de,en` load was 11.29 ms and 5.30 MB retained RSS; all six locales loaded in 33.17 ms and 16.59 MB. The resulting delta was **+21.88 ms and +11.29 MB**, so eager once-per-process loading remains within the release contract.
## Rollback
Remove the affected locale from `I18N_ENABLED_LOCALES`, redeploy, and if needed redeploy the previous immutable image SHA. Catalog files may remain in the image: disabled locales cannot be selected or activated through a stored preference, cookie, request parameter or `Accept-Language` header. No database rollback is required.
## Next candidates
Romanian is the next planned expansion, but this change intentionally adds no `ro` type, catalog or runtime option. Turkish and Bulgarian remain later market candidates only.