Repository navigation
feat(i18n): ship Ukrainian - #9190
Conversation
Adds uk to SUPPORTED_LOCALES, the lazy catalog map and lingui.config, with a complete catalog of 7,053 messages, plus the mobile side: iOS permission strings, composer and attachments-sheet .lproj resources, and the Hermes PluralRules and RelativeTimeFormat locale data. The code is uk (the language), not ua (the country). The picker shows "Українська". Plurals carry all four CLDR categories (one, few, many, other), and the native test now expects few/many for uk as it does for pl, ru and cs. Spelling follows the 2019 orthography (проєкт). Product vocabulary translates per the glossary: робочий простір, агент, панель, завдання, сеанс, гілка. Git verbs keep the forms Ukrainian developers use (коміт, закомітити, запушити, злити, перебазувати); worktree, diff, stash and issue stay in Latin script. Paywall is пейвол, added to the glossary row.
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Register Ukrainian locale and plural handling packages/i18n/src/locales.ts, packages/i18n/lingui.config.ts, packages/i18n/src/index.ts, apps/mobile/lib/intl-polyfills/intl-polyfills.ts, packages/i18n/test/native-localization.test.ts, packages/i18n/glossary.md |
The supported locale list, locale labels, and catalog map include Ukrainian. The PluralRules and RelativeTimeFormat polyfills load Ukrainian locale data. The plural-category test and glossary include Ukrainian. |
Add Ukrainian mobile and iOS strings apps/mobile/locales/uk.json, apps/mobile/modules/attachments-sheet/ios/Resources/uk.lproj/Localizable.strings, apps/mobile/modules/composer/ios/Resources/uk.lproj/Localizable.strings, apps/mobile/modules/composer/ios/Resources/uk.lproj/Localizable.stringsdict |
Ukrainian permission descriptions and native attachment and composer translations are added. The attachment count resource defines one, few, many, and other forms. |
Estimated code review effort: 2 (Simple) | ~10 minutes
Change: Feature · Severity of issue fixed: Medium
Suggested reviewers: kitenite, saddlepaddle
Merge Risk: 
Minimal · up to af314
-
The Ukrainian locale resources are consistent across runtime and native consumers, with no identified merge-blocking risk.
Pre-merge checks: 
5
-
Full details: Linked Issues check
-
Explanation
Issue
#9189is open and directly linked. The PR addsuktoSUPPORTED_LOCALES,lingui.config, and the lazy catalog map. It addspackages/i18n/locales/uk/messages.poand reports 7,054 messages with none missing andcompile --strictpassing. The catalog uses Ukrainianone,few,many, andotherforms. The PR adds iOS permission strings, native composer and attachments-sheet resources, and HermesPluralRulesandRelativeTimeFormatdata. It adds the requested glossary-aligned terminology and updates the native plural test foruk.
Full details: Out of Scope Changes check
-
Explanation
The changes stay within issue
#9189. Locale registration, catalog content, plural handling, mobile resources, Hermes data, glossary guidance, and the related plural test all support shipping Ukrainian as an app language. No unrelated product behavior or unrelated feature work is identified.
Full details: Docstring Coverage
-
Explanation
No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 5 files. (5 skipped: 5 unsupported.)
Full details: Description check
-
Explanation
The description includes complete What & why, How I tested it, and Checklist sections. It explains the Ukrainian localization scope, links the issue, documents targeted and broader testing, and marks all checklist items complete.
-
Finishing Touches
-
Generate unit tests (beta)
-
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
[Medium impact] The PR appears safe to merge; no actionable issues were found. SummaryAdds Ukrainian across the shared app catalog and mobile native text.
Reviews (1) · Last reviewed commit: "feat(i18n): ship Ukrainian" · Reviewed by Greptile |
Brings in main up to 0dcd64a (ParadevAI#9190), which adds the Ukrainian catalog. The next commit adds this branch's new string to it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ParadevAI#9190 added the Ukrainian catalog after this branch added "Refreshes when Codex next runs." to the other catalogs, so `lingui compile --strict` failed for uk. The wording matches the catalog's entries for Claude Code and OpenCode. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What & why
Adds Ukrainian (
uk) as a full app language: all 7,054 messages, plus the iOS permission prompts and the native composer and attachments-sheet strings. A user who picks «Українська» in Settings, or whose system language is uk-UA, gets the app in Ukrainian. Closes #9189.ukinSUPPORTED_LOCALES, the lazy catalog map andlingui.config; the picker label is «Українська».locales/uk.json,uk.lprojfor the composer and attachments sheet, and the Hermes PluralRules and RelativeTimeFormat data foruk. The native test now expects few/many foruk, as it does for pl, ru and cs.Terms follow the glossary's "product vocabulary translates" rule, in the register Ukrainian developers actually use: workspace is робочий простір, session is сеанс, task is завдання, but coding agent is кодинг-агент, thread is тред, logs are логи, seed round is seed-раунд. Git verbs keep the forms teams say (коміт, запушити, злити, ребейз); worktree, diff, stash and issue stay in Latin script. Plain UI chrome stays standard product Ukrainian (Налаштування, Скасувати, Застосунок). Spelling follows the 2019 orthography (проєкт). Three new glossary rows record the funding terms, the developer terms and the verb forms for future strings.
Review: a second model read a random 500-string sample (12 fixes), then three reviewers read the whole catalog for register, meaning a dictionary-correct word that Ukrainian developers do not use (208 fixes, one pick per term family).
How I tested it
bun run check:i18n: uk has 7,054 messages and 0 missing;compile --strictpasses.tscpasses inpackages/i18nandapps/mobile.packages/i18ntests pass (169/169), and so doapps/mobiletests (250/250).bun run teston my machine: every task passes except time-outs in host-service and desktop git and shell tests, under load from other builds. This change does not touch those packages.@superset/i18nresolves uk-UA touk, lazy-loads the catalog and renders the plurals above.Checklist
type(scope): subject)bun run lintandbun run typecheckpass (CI fails on lint warnings too)