Skip to content

feat(i18n): add Russian locale - #90

Merged
alvarolorentedev merged 4 commits into
alvarolorentedev:mainfrom
dev-drozd:feat/i18n-ru
Oct 29, 2026
Merged

alvarolorentedev merged 4 commits into
alvarolorentedev:mainfrom
dev-drozd:feat/i18n-ru

Conversation

@dev-drozd

Copy link
Copy Markdown
Contributor

Summary

Adds Russian (ru) as a shipped locale, translated across all eight namespaces.

  • New lib/i18n/locales/ru/: chat, common, notifications, onboarding, project, settings, share, terminal
  • lib/i18n/languages.ts: Русский added to SUPPORTED_LANGUAGES
  • lib/i18n/resources.ts: ru resources registered
  • app.config.ts: ru added to supportedLocales for iOS and Android
  • docs/integrations-and-operations.md: shipped-locales list updated

Plural forms

Russian selects the few category for counts 2-4 and 22-24 (1 файл / 2 файла / 5 файлов), so the ru strings provide _one, _few, _many, and _other forms.

The locale contract test requires every locale to expose the same key set, so *_few keys were also added to the existing chat.json files for en, de, es, fr, hi, ja, pt, and zh, each mirroring that locale's *_other value. If you would rather relax the key-parity assertion instead of duplicating _few for non-Slavic locales, I am happy to rework that part.

Testing

  • npm run test:ci:static: lint, typecheck, and 652 vitest tests pass
  • npm run test:fake-server:self: V1 and V2 contract passes
  • npm run test:e2e:web: 162/162 Playwright flows pass
  • Release APK installed on an Android 14 emulator with the system locale set to ru-RU: onboarding renders fully in Russian, and plural forms were verified at runtime (1 файл, 2 файла, 5 файлов, 21 файл, 11 файлов)

Notes

tests/vitest/i18n.test.ts used ru as an example of an unsupported language in the fallback assertion; it now uses xx / yy-YY since ru is supported.

dev-drozd and others added 2 commits October 28, 2026 03:29
Translate all ru namespaces, add the few plural category required by ru Intl.PluralRules across locales, and align the resolveLanguage fallback test.
@dev-drozd

Copy link
Copy Markdown
Contributor Author

Local verification before submission

For reference, what was already run on the fork before opening this PR:

  • npm run test:ci:static — green (lint, typecheck, 652 vitest tests)
  • npm run test:fake-server:self — V1 + V2 contracts pass
  • npm run test:e2e:web — 162/162 Playwright flows pass
  • Release APK built locally, installed on an Android 14 emulator, system locale set to ru-RU: onboarding renders in Russian and plural forms are verified at runtime (1 файл, 2 файла, 5 файлов, 21 файл, 11 файлов).

If you want, I can run the same checks against this branch once CI is visible on the upstream side.

About the _few keys in the non-Slavic chat.json files: they exist because the i18n locale-contract test requires identical key sets across locales. If you would rather relax that assertion and drop the duplicated keys, I can rework this part.

@dev-drozd dev-drozd closed this Oct 28, 2026
@dev-drozd dev-drozd reopened this Oct 28, 2026
@alvarolorentedev

Copy link
Copy Markdown
Owner

hello @dev-drozd thanks a lot for the PR, I will merge it and release as soon as possible.

Thans a lot again for your contribution :)

@alvarolorentedev
alvarolorentedev merged commit 3060191 into alvarolorentedev:main Oct 29, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants