Skip to content

feat(i18n): add Ukrainian (uk) localization - #2226

Merged
lawrencecchen merged 6 commits into
manaflow-ai:mainfrom
serzhik:i18n/add-ukrainian-locale
Mar 27, 2026
Merged

lawrencecchen merged 6 commits into
manaflow-ai:mainfrom
serzhik:i18n/add-ukrainian-locale

Conversation

@serzhik

@serzhik serzhik commented Mar 27, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds complete Ukrainian (uk) localization to cmux:

  • Website translations (web/messages/uk.json) — all ~150 keys translated
  • Locale registration (web/i18n/routing.ts) — added "uk" to locales array and localeNames
  • macOS app strings (Resources/Localizable.xcstrings) — all 916 keys translated with format specifiers preserved
  • Ukrainian README (README.uk.md) — full translation of the main README
  • Language selectors — added Ukrainian link to all 18 existing README files

All translations use natural Ukrainian language, preserving placeholders ({year}, etc.), HTML-like tags (, , etc.), and format specifiers (%@, %lld, %1$@, etc.).

Test plan

  • Verify web/messages/uk.json is valid JSON and renders correctly with next-intl
  • Verify Resources/Localizable.xcstrings is valid and loads in Xcode
  • Check Ukrainian locale appears in the website language picker
  • Verify README.uk.md renders correctly on GitHub
  • Verify language selector links work in all README files

🤖 Generated with Claude Code


Summary by cubic

Adds full Ukrainian (uk) localization across the website and macOS app, plus a Ukrainian README and language links; also fixes two truncated Ukrainian CLI usage strings.

  • New Features

    • Website: added web/messages/uk.json and registered uk in web/i18n/routing.ts (locales and localeNames).
    • macOS app: translated Resources/Localizable.xcstrings (916 keys), preserving format specifiers.
    • Docs: added README.uk.md and linked “Українська” in all README language selectors.
  • Bug Fixes

    • Fixed truncated Ukrainian translations for CLI usage strings in web/messages/uk.json (cli.claude-teams.usage, cli.omo.usage).

Written for commit 86ef371. Summary will update on new commits.

Summary by CodeRabbit

Release Notes

  • Documentation

    • Added Ukrainian language support across all documentation.
    • Created comprehensive Ukrainian documentation including installation instructions, feature guides, keyboard shortcuts, and licensing information.
    • Updated language selector links in all README translations to include the new Ukrainian option.
  • Localization

    • Added complete Ukrainian UI translations and metadata for the web interface.

serzhik and others added 5 commits March 27, 2026 01:58
Translate all 681 keys from en.json to uk.json for the cmux website.
Preserves all placeholders and HTML-like tags. Testimonials kept in original language.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Translated all 916 string keys from English to natural Ukrainian.
All format specifiers (%@, %lld, %1$@, etc.) preserved.
JSON syntax validated.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Added Українська link to the language selector paragraph in all 20 existing
README files (README.md and README.*.md), pointing to README.uk.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Mar 27, 2026

Copy link
Copy Markdown

@serzhik is attempting to deploy a commit to the Manaflow Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai

coderabbitai Bot commented Mar 27, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

💤 Files selected but had no reviewable changes (1)
  • Resources/Localizable.xcstrings
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: eeb67e07-4a8c-4001-98e5-3589d5dff682

📥 Commits

Reviewing files that changed from the base of the PR and between bca54de and 86ef371.

📒 Files selected for processing (1)
  • Resources/Localizable.xcstrings

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This change adds Ukrainian language support to the cmux project by creating a Ukrainian README file (275 lines), adding a complete Ukrainian localization catalog (757 translation strings), registering the Ukrainian locale in the routing configuration, and updating all 20 existing README files to include Ukrainian in the language selector navigation.

Changes

Cohort / File(s) Summary
README Language Selector Updates
README.md, README.ar.md, README.bs.md, ..., README.zh-TW.md (20 files)
Added Ukrainian language link (README.uk.md / "Українська") to the language selector navigation in all README variants.
Localization Infrastructure
web/i18n/routing.ts
Registered Ukrainian locale "uk" in the locales array and added display name "Українська" to localeNames mapping.
Ukrainian Documentation & Localization Data
README.uk.md, web/messages/uk.json
Created new Ukrainian README with complete project documentation (275 lines) and Ukrainian localization catalog containing UI copy, page metadata, and feature documentation (757 translation strings).

Possibly related PRs

  • manaflow-ai/cmux#1647: Modified README language-selector links across multiple README files, similar pattern to this PR's language navigation updates.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 A new tongue joins our merry crew,
Українська, we welcome you!
Through routing code and docs so wide,
Twenty READMEs swell with pride.
Translations dance—our joy cannot hide! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat(i18n): add Ukrainian (uk) localization' clearly and concisely summarizes the main change—adding Ukrainian language support—which aligns with all the file modifications in the changeset.
Description check ✅ Passed The description is comprehensive and well-structured, covering what changed (website translations, locale registration, app strings, README, language selectors) and why. It includes a test plan with specific verification steps, though some checklist items are incomplete.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 24 files


Since this is your first cubic review, here's how it works:

  • cubic automatically reviews your code and comments on bugs and improvements
  • Teach cubic by replying to its comments. cubic learns from your replies and gets better over time
  • Add one-off context when rerunning by tagging @cubic-dev-ai with guidance or docs links (including llms.txt)
  • Ask questions if you need clarification on any suggestion

@greptile-apps

greptile-apps Bot commented Mar 27, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds a complete Ukrainian (uk) localization to cmux, covering the website (web/messages/uk.json), locale registration (web/i18n/routing.ts), macOS app strings (Resources/Localizable.xcstrings), a translated README, and Ukrainian language selector links in all 18 existing README files.\n\nKey changes:\n- web/messages/uk.json — 757-line file exactly matching the English key structure; all placeholders, HTML-like tags, and interpolations are correctly preserved.\n- web/i18n/routing.ts — \"uk\" and \"Українська\" added to locales and localeNames respectively.\n- Resources/Localizable.xcstrings — 916 Ukrainian string units added; two CLI help strings are truncated (see inline comments): cli.claude-teams.usage is missing the last three bullet points and the examples block, and cli.omo.usage ends mid-sentence with no period.\n- README.uk.md — well-structured full translation with all links, badges, and code blocks intact.\n- All 18 sibling README files — one-line Ukrainian selector link added consistently.

Confidence Score: 4/5

Safe to merge after fixing the two truncated CLI help strings in Localizable.xcstrings — all other translation surfaces are complete and correct.

The vast majority of the PR (web JSON, routing registration, README files) is clean and well-executed. Only two strings out of 916+ xcstrings entries are incomplete, and they affect only the --help output for the claude-teams and omo subcommands on Ukrainian-locale macOS systems — not runtime functionality. One targeted fix resolves the remaining concern.

Resources/Localizable.xcstrings — specifically the cli.claude-teams.usage (line 139) and cli.omo.usage (line 162) Ukrainian string values.

Important Files Changed

Filename Overview
Resources/Localizable.xcstrings 916 Ukrainian string entries added; two CLI help strings (cli.claude-teams.usage, cli.omo.usage) are truncated mid-translation, missing bullet points and examples blocks.
web/messages/uk.json Complete Ukrainian web translations — 757 lines matching the English source exactly; all keys present with natural-sounding Ukrainian text and placeholders preserved.
web/i18n/routing.ts Correctly adds "uk" to the locales array and "Українська" to localeNames; no issues.
README.uk.md Full Ukrainian translation of the main README; structure, links, badges, and code blocks all preserved correctly.
README.md Ukrainian language selector link added consistently across all 18 existing README language files (one-line change per file).

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Ukrainian locale 'uk' added] --> B[web/i18n/routing.ts\nlocales array + localeNames]
    A --> C[web/messages/uk.json\n757 keys — complete ✅]
    A --> D[Resources/Localizable.xcstrings\n916 string units]
    A --> E[README.uk.md\nFull translation ✅]
    A --> F[18 README files\nLanguage selector link added ✅]
    D --> G[Most strings — complete ✅]
    D --> H[cli.claude-teams.usage\nTruncated — 2/5 bullets, no examples ⚠️]
    D --> I[cli.omo.usage\nEnds mid-sentence ⚠️]
Loading

Reviews (1): Last reviewed commit: "feat: add Ukrainian language link to all..." | Re-trigger Greptile

Comment on lines +139 to 144
"uk": {
"stringUnit": {
"state": "translated",
"value": "Використання: cmux claude-teams [аргументи-claude...]\n\nЗапуск Claude Code з увімкненими командами агентів.\n\nЦя команда:\n - типово вмикає режим teammate для Claude\n - забезпечує підтримку cmux для сеансу"
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Truncated cli.claude-teams.usage translation

The Ukrainian translation for cli.claude-teams.usage is missing the last three bullet points, the tmux shim explanation, and all three examples. The English source string has five listed actions:

- defaults Claude teammate mode to auto
- sets a tmux-like environment so Claude auto mode uses cmux splits
- sets CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1       ← missing
- prepends a private tmux shim to PATH              ← missing
- forwards all remaining arguments to claude        ← missing

The tmux shim explanation paragraph and the Examples: block are also absent. Users running cmux claude-teams --help on a Ukrainian system would see an incomplete help string.

Comment on lines +162 to 167
"uk": {
"stringUnit": {
"state": "translated",
"value": "Використання: cmux omo [аргументи-opencode...]\n\nЗапуск OpenCode з oh-my-openagent у середовищі cmux.\n\noh-my-openagent оркеструє кілька моделей ШІ"
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Truncated cli.omo.usage translation — ends mid-sentence

The Ukrainian translation for cli.omo.usage ends abruptly mid-sentence with no terminating punctuation: "oh-my-openagent оркеструє кілька моделей ШІ". The entire This command: section, the tmux shim description paragraph, and the Examples: block are all missing. A Ukrainian user running cmux omo --help would see a visibly cut-off help string.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@README.uk.md`:
- Line 13: The language selector in README.uk.md contains an extra anchor `<a
href="README.vi.md">Tiếng Việt</a>` that is not present in other translated
READMEs; either remove this Vietnamese anchor from the selector in README.uk.md
to match the standard pattern or add the corresponding `README.vi.md` entry to
all other language READMEs (or update their selectors) so the navigation is
consistent; locate and edit the language selector line containing `<a
href="README.vi.md">Tiếng Việt</a>` to perform the chosen fix.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: dfd02780-b2d6-49e8-aabb-1cdf20aacaf3

📥 Commits

Reviewing files that changed from the base of the PR and between ccd84bd and bca54de.

📒 Files selected for processing (24)
  • README.ar.md
  • README.bs.md
  • README.da.md
  • README.de.md
  • README.es.md
  • README.fr.md
  • README.it.md
  • README.ja.md
  • README.km.md
  • README.ko.md
  • README.md
  • README.no.md
  • README.pl.md
  • README.pt-BR.md
  • README.ru.md
  • README.th.md
  • README.tr.md
  • README.uk.md
  • README.vi.md
  • README.zh-CN.md
  • README.zh-TW.md
  • Resources/Localizable.xcstrings
  • web/i18n/routing.ts
  • web/messages/uk.json

Comment thread README.uk.md
</p>

<p align="center">
<a href="README.md">English</a> | <a href="README.ja.md">日本語</a> | <a href="README.vi.md">Tiếng Việt</a> | <a href="README.zh-CN.md">简体中文</a> | <a href="README.zh-TW.md">繁體中文</a> | <a href="README.ko.md">한국어</a> | <a href="README.de.md">Deutsch</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.it.md">Italiano</a> | <a href="README.da.md">Dansk</a> | <a href="README.pl.md">Polski</a> | <a href="README.ru.md">Русский</a> | <a href="README.bs.md">Bosanski</a> | <a href="README.ar.md">العربية</a> | <a href="README.no.md">Norsk</a> | <a href="README.pt-BR.md">Português (Brasil)</a> | <a href="README.th.md">ไทย</a> | <a href="README.tr.md">Türkçe</a> | <a href="README.km.md">ភាសាខ្មែរ</a> | Українська

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Print selector lines from all README locale files to compare language sets.
rg -n --type=md '^  <a href="README\.md">English</a> \|' README*.md -A1 -B1

# Specifically check whether README.vi.md is referenced and where.
rg -n --type=md 'README\.vi\.md' README*.md

Repository: manaflow-ai/cmux

Length of output: 17474


Align language selector with other translated README files. README.uk.md includes <a href="README.vi.md">Tiếng Việt</a> in the language selector, but no other translated READMEs (de, es, fr, it, da, pl, ru, bs, ar, no, pt-BR, th, tr, km, ja, zh-CN, zh-TW, ko) have Vietnamese. This creates inconsistent navigation across language variants. If intentional, align other files; if unintentional, remove Vietnamese from README.uk.md to match the standard pattern.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.uk.md` at line 13, The language selector in README.uk.md contains an
extra anchor `<a href="README.vi.md">Tiếng Việt</a>` that is not present in
other translated READMEs; either remove this Vietnamese anchor from the selector
in README.uk.md to match the standard pattern or add the corresponding
`README.vi.md` entry to all other language READMEs (or update their selectors)
so the navigation is consistent; locate and edit the language selector line
containing `<a href="README.vi.md">Tiếng Việt</a>` to perform the chosen fix.

@lawrencecchen
lawrencecchen merged commit c0ec7dc into manaflow-ai:main Mar 27, 2026
3 of 4 checks passed
@lawrencecchen

Copy link
Copy Markdown
Contributor

Thank you for the contribution!

bn-l pushed a commit to bn-l/cmux that referenced this pull request Apr 3, 2026
* feat: add Ukrainian (uk) website translation

Translate all 681 keys from en.json to uk.json for the cmux website.
Preserves all placeholders and HTML-like tags. Testimonials kept in original language.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: register Ukrainian locale in web i18n routing config

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add Ukrainian translations to Localizable.xcstrings (916 keys)

Translated all 916 string keys from English to natural Ukrainian.
All format specifiers (%@, %lld, %1$@, etc.) preserved.
JSON syntax validated.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add Ukrainian README translation (README.uk.md)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add Ukrainian language link to all README language selectors

Added Українська link to the language selector paragraph in all 20 existing
README files (README.md and README.*.md), pointing to README.uk.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix truncated Ukrainian translations for cli.claude-teams.usage and cli.omo.usage

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Lawrence Chen <lawrencecchen@users.noreply.github.com>
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