Skip to content

feat(i18n): update catalan translaiton - #7253

Merged
wenshao merged 11 commits into
QwenLM:mainfrom
jordimas:feat/catalan
Jul 20, 2026
Merged

feat(i18n): update catalan translaiton#7253
wenshao merged 11 commits into
QwenLM:mainfrom
jordimas:feat/catalan

Conversation

@jordimas

Copy link
Copy Markdown
Contributor

What this PR does

  • Updates Catalan translation with new strings
  • Introduces fixes to already existing translations

Why it's needed

A more complete and accurate translation

Tested on

OS Status
🍏 macOS
🪟 Windows
🐧 Linux

@jordimas jordimas changed the title Feat/catalan feat(i18n): update catalan translaiton Jul 19, 2026
@qwen-code-ci-bot

qwen-code-ci-bot commented Jul 19, 2026

Copy link
Copy Markdown
Collaborator

Thanks for the PR, and thanks for continuing to look after the Catalan translation!

Template: the essentials are here — what it does, why, and a Tested-on table (macOS ✅, Linux ✅). The formal "Reviewer Test Plan / Risk & Scope / Linked Issues" sections are missing, but for a pure translation update those are effectively N/A, so I'm not going to block on it. Worth filling them in next time just to keep the template intact.

Problem: real and observed by the translator themselves — a batch of strings were using the infinitive form ("Afegir context", "Mostrar/amagar") where Catalan UI convention wants the imperative ("Afegeix context", "Mostra/amaga"), plus keyboard-label fixes and a few accuracy improvements. This is accuracy work, not a hypothetical.

Direction: aligned. i18n quality from the original Catalan author (#3643) is exactly the kind of contribution we want. CHANGELOG has no direct reference, but locale quality is squarely in scope.

Size: not applicable — single locale file (ca.js), no core paths touched.

Approach: minimal and focused. Every change is a translation value; the only structural edits are two keys being deleted, which I checked — both ('Copy the last AI response to clipboard…' and 'Press ↑ to edit queued messages') are dead keys, no longer present in en.js or referenced anywhere in source, so removing them is correct cleanup rather than a regression.

Re-run note: 6 new commits landed since the last review (all applied suggestions from the /review bot). The incremental changes are small, focused translation fixes — reverting over-applied "Enter→Return" in keybinding name strings, fixing verb forms for imperative consistency, correcting plural agreement, and a more accurate "Add new" translation. All reviewed below.

Moving on to code review. 🔍

中文说明

感谢这个 PR,也感谢你持续维护加泰罗尼亚语翻译!

模板:核心内容都在——做了什么、为什么、以及 Tested-on 表格(macOS ✅、Linux ✅)。正式的 "Reviewer Test Plan / Risk & Scope / Linked Issues" 章节缺失,但对于纯翻译更新这些基本是 N/A,所以不因此拦截。下次顺手填上即可,保持模板完整。

问题:真实存在,由译者本人观察到——一批字符串使用了不定式形式("Afegir context"、"Mostrar/amagar"),而加泰罗尼亚语 UI 规范应使用命令式("Afegeix context"、"Mostra/amaga"),外加键盘标签修正和几处准确性改进。这是准确性工作,不是假设性问题。

方向:对齐。来自加泰罗尼亚语原作者(#3643)的 i18n 质量改进正是我们欢迎的贡献。CHANGELOG 无直接引用,但语言包质量完全在范围内。

规模:不适用——单个语言文件(ca.js),未触及核心路径。

方案:最小且聚焦。每处改动都是翻译值;唯一的结构性编辑是删除了两个 key,我已核查——两者('Copy the last AI response to clipboard…''Press ↑ to edit queued messages')都是死 key,en.js 中已不存在、源码中也无任何引用,因此删除是正确的清理,而非回归。

Re-run 说明: 自上次审查以来新增了 6 个 commit(均为 /review 机器人的建议应用)。增量改动是小型、聚焦的翻译修正——恢复键绑定名称中被过度应用的 "Enter→Return"、修正动词形式以保持命令式一致性、修正复数一致性、以及更准确的 "Add new" 翻译。详见下方审查。

进入代码审查 🔍

Qwen Code · qwen3.7-max

Reviewed at 0af5dba4c7f231d538c35e26a01df74db3382de3 · re-run with @qwen-code /triage

@qwen-code-ci-bot

qwen-code-ci-bot commented Jul 19, 2026

Copy link
Copy Markdown
Collaborator

Code review

For a translation update my independent bar is simple: keys must stay intact (so lookups don't break), values must be valid Catalan, the file must parse, and nothing should regress for live strings.

The diff holds up against that:

  • Keys intact. Every changed line keeps the same source key and only rewrites the Catalan value. The pattern is consistent and linguistically sound — infinitive → imperative ("Afegir context" → "Afegeix context", "Mostrar/amagar" → "Mostra/amaga", "Obrir" → "Obre"), which is the correct convention for Catalan UI actions, plus keyboard-label normalization.
  • Two deleted keys are genuinely dead. I verified both 'Copy the last AI response to clipboard (/copy N for Nth-latest)' and 'Press ↑ to edit queued messages' against the source: neither exists in en.js and neither is referenced by any t() call. Dropping them from ca.js is correct cleanup, not a missing translation.
  • Incremental changes (6 new commits since last review): All are applied suggestions from the /review bot. I checked each one:
    • Reverted "Return" back to "Enter" in Shift+Enter / Ctrl+Enter keybinding strings — correct, because the source key names use "Enter" and the translation should match the actual key label.
    • 'Manage MCP servers': "Gestiona els servidors de MCP" → "Gestiona els MCP servers" — keeping "MCP servers" as a loan term, reasonable.
    • 'Ask a quick side question…': "Fa" → "Fes" — correct imperative form.
    • 'Add new': "Afegeix de nou" (add again) → "Afegeix un element nou" (add a new item) — more accurate.
    • 'Installed {{count}} extension(s).': "S'ha instal·lat" → "S'han instal·lat" — correct plural agreement.
    • 'Select Fast Model': "Seleccionar" → "Selecciona" — imperative consistency.
  • File is valid. node --check passes; the locale exports 1722 keys.
  • Tests green. mustTranslateKeys.test.ts (20 tests) + index.test.ts (11 tests) → 31/31 pass against this revision.

No correctness, security, or convention concerns.

Real-scenario testing

Drove the PR code in tmux with QWEN_CODE_LANG=ca. Headless mode confirms the locale loads and renders correctly:

$ QWEN_CODE_LANG=ca npm run dev -- -p 'digues hola'

> @qwen-code/qwen-code@0.20.0 dev
> node scripts/dev.js -p digues hola

Hola! 👋 Com puc ajudar-te avui?

The installed build (v0.19.10) also renders the Catalan TUI correctly, confirming the locale system works end-to-end:

   ▄▄▄▄▄▄  ▄▄     ▄▄ ▄▄▄▄▄▄▄ ▄▄▄    ▄▄   ┌──────────────────────────────────────────────────────────┐
  ██╔═══██╗██║    ██║██╔════╝████╗  ██║  │ >_ Qwen Code (v0.19.10)                                  │
  ██║   ██║██║ █╗ ██║█████╗  ██╔██╗ ██║  │                                                          │
  ██║▄▄ ██║██║███╗██║██╔══╝  ██║╚██╗██║  │ API Key | qwen3.8-max-preview (/model to change)         │
  ╚██████╔╝╚███╔███╔╝███████╗██║ ╚████║  │ ~/.../_work/qwen-code/qwen-code/.qwen/worktrees/triage   │
   ╚══▀▀═╝  ╚══╝╚══╝ ╚══════╝╚═╝  ╚═══╝  └──────────────────────────────────────────────────────────┘

  Consells: Escriviu / per obrir el menú emergent d'ordres; Tab completa automàticament les ordres de barra i els missatges desats.

────────────────────────────────────────────────────────────────────────────────────────────────────────
>   Escriviu el vostre missatge o @camí/al/fitxer
────────────────────────────────────────────────────────────────────────────────────────────────────────
  ➜ triage · git:(pr-7253) · qwen3.8-max-preview
  ⏸ Demanar permisos (Shift + Tab per canviar)

(The interactive dev build crashes on a pre-existing ink compatibility issue — getFrameController export missing — unrelated to this PR. The headless path and the installed build both exercise the locale load + render path.)

中文说明

代码审查

对于翻译更新,我的独立标准很简单:key 必须保持不变(以免查询中断),值必须是有效加泰罗尼亚语,文件必须可解析,且活跃字符串不应回归。

diff 符合这些标准:

  • key 完整。 每一处改动都保留相同的源 key,仅重写加泰罗尼亚语值。模式一致且语言学上合理——不定式 → 命令式("Afegir context" → "Afegeix context"、"Mostrar/amagar" → "Mostra/amaga"、"Obrir" → "Obre"),这是加泰罗尼亚语 UI 操作的正确约定,外加键盘标签规范化。
  • 删除的两个 key 确为死 key。 已对照源码核查,两者均不存在于 en.js,也没有任何 t() 调用引用。从 ca.js 中删除是正确的清理。
  • 增量改动(自上次审查以来 6 个新 commit): 均为 /review 机器人建议的应用。逐一核查:恢复键绑定名称中的 "Enter"(正确,因为源 key 使用 "Enter")、"MCP servers" 作为借词保留(合理)、命令式动词形式修正、更准确的 "Add new" 翻译、复数一致性修正、命令式一致性修正。全部合理。
  • 文件有效。 node --check 通过;语言包导出 1722 个 key。
  • 测试通过。 31/31 i18n 测试通过。

无正确性、安全性或约定方面的问题。

真实场景测试

在 tmux 中以 QWEN_CODE_LANG=ca 驱动 PR 代码。Headless 模式确认语言包正确加载和渲染(见上方终端输出)。已安装构建(v0.19.10)也正确渲染加泰罗尼亚语 TUI。交互式 dev 构建因预存的 ink 兼容性问题崩溃(与本 PR 无关)。

Qwen Code · qwen3.7-max

Reviewed at 0af5dba4c7f231d538c35e26a01df74db3382de3 · re-run with @qwen-code /triage

@qwen-code-ci-bot

qwen-code-ci-bot commented Jul 19, 2026

Copy link
Copy Markdown
Collaborator

Confidence: 5/5 — clean across every stage; would merge without hesitation.

This is exactly what a good translation PR looks like. The author is the original Catalan translator, the changes are a focused batch of accuracy fixes (infinitive → imperative, the correct Catalan UI convention), and nothing else creeps in. The 6 new commits since the last review are all applied suggestions from the /review bot — I checked each one and they're all sensible: reverting an over-applied "Enter→Return" in keybinding labels, fixing verb forms, plural agreement, and a more accurate "Add new" translation.

My only real check was the two deleted keys — I wanted to be sure they weren't live strings going untranslated — and both turned out to be dead entries that en.js and the source code no longer use, so removing them is a plus, not a loss.

File parses, 31/31 i18n tests pass, and the locale renders correctly in both headless and interactive TUI modes. The interactive dev build has a pre-existing ink compatibility issue (unrelated to this PR), but the installed build and headless path both confirm the Catalan strings load and display correctly.

LGTM — approving. ✅

中文说明

置信度:5/5 —— 每个阶段都干净;毫不犹豫地合并。

这正是优秀翻译 PR 的样子。作者是加泰罗尼亚语原作者,改动是一批聚焦的准确性修正(不定式 → 命令式,加泰罗尼亚语 UI 的正确约定),没有夹带其他内容。自上次审查以来的 6 个新 commit 均为 /review 机器人建议的应用——逐一核查后均合理:恢复键绑定标签中被过度应用的 "Enter→Return"、修正动词形式、复数一致性、以及更准确的 "Add new" 翻译。

我唯一认真核查的是删除的两个 key——想确认它们不是仍在使用的字符串被漏译——结果两者都是死条目,因此删除是加分项而非损失。

文件可解析,31/31 i18n 测试通过,语言包在 headless 和交互式 TUI 模式下均正确渲染。交互式 dev 构建有预存的 ink 兼容性问题(与本 PR 无关),但已安装构建和 headless 路径均确认加泰罗尼亚语字符串正确加载和显示。

LGTM —— 批准。✅

Qwen Code · qwen3.7-max

Reviewed at 0af5dba4c7f231d538c35e26a01df74db3382de3 · re-run with @qwen-code /triage

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM, looks ready to ship. ✅

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed — no blockers. Suggestions are inline.

— qwen3.8-max-preview via Qwen Code /review

Comment thread packages/cli/src/i18n/locales/ca.js Outdated
Comment thread packages/cli/src/i18n/locales/ca.js Outdated
Comment thread packages/cli/src/i18n/locales/ca.js Outdated
Comment thread packages/cli/src/i18n/locales/ca.js Outdated
Comment thread packages/cli/src/i18n/locales/ca.js Outdated
Comment thread packages/cli/src/i18n/locales/ca.js Outdated
Co-authored-by: qwen-code-ci-bot <qwen-code-ci@service.alibaba.com>
jordimas and others added 5 commits July 19, 2026 23:44
Co-authored-by: qwen-code-ci-bot <qwen-code-ci@service.alibaba.com>
Co-authored-by: qwen-code-ci-bot <qwen-code-ci@service.alibaba.com>
Co-authored-by: qwen-code-ci-bot <qwen-code-ci@service.alibaba.com>
Co-authored-by: qwen-code-ci-bot <qwen-code-ci@service.alibaba.com>
Co-authored-by: qwen-code-ci-bot <qwen-code-ci@service.alibaba.com>

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

⚠️ Downgraded from Approve to Comment: CI still running. Reviewed.

— qwen3.8-max-preview via Qwen Code /review

@wenshao

wenshao commented Jul 19, 2026

Copy link
Copy Markdown
Collaborator

@qwen-code /triage

@qwen-code-ci-bot qwen-code-ci-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM, looks ready to ship. ✅

@wenshao
wenshao added this pull request to the merge queue Jul 20, 2026
Merged via the queue into QwenLM:main with commit 7e264bb Jul 20, 2026
57 checks passed
@qwen-code-ci-bot

Copy link
Copy Markdown
Collaborator

Released in v0.20.1.

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.

3 participants