Skip to content

fix(i18n): correct Catalan (ca) locale and add ca glossary - #42842

Open
Qjammer wants to merge 1 commit into
anomalyco:devfrom
Qjammer:fix/catalan-locale
Open

fix(i18n): correct Catalan (ca) locale and add ca glossary#42842
Qjammer wants to merge 1 commit into
anomalyco:devfrom
Qjammer:fix/catalan-locale

Conversation

@Qjammer

@Qjammer Qjammer commented Aug 16, 2026

Copy link
Copy Markdown

Issue for this PR

Closes #42837

Type of change

  • Bug fix
  • New feature
  • Refactor / code improvement
  • Documentation

What does this PR do?

I'm a native Catalan speaker. The ca locale added in #40992 has strings that say something
different from the English, not merely awkward ones:

Key English Was What it said
ui.basicTool.called Called {{tool}} Es diu {{tool}} "it is named", not invoked
settings.general.row.showCustomAgents.title Show agent Agent d'espectacles "entertainment agent"
provider.connect.method.apiKey (×4) API key tecla API "API keyboard-key"
settings.general.row.shell.title Terminal shell Carcassa terminal "terminal casing"
context.stats.inputTokens (×6) Input Tokens Fitxes d'entrada "input filing-cards"
context.breakdown.tool Tool Calls Trucades d'eines "phone calls of tools"

Three self-inconsistencies too: shell was rendered five different ways; web switched gender
inside a single popover; and workspace.resetting.title / workspace.reset.success.title were
byte-identical, so in-progress and finished were indistinguishable.

The rest is grammar. Catalan uses the singular imperative for menu and button labels, and the
vós plural for messages addressed to the user (Softcatalà style guide, Formes verbals). The
locale mixed them arbitrarily — desktop.menu.restart was Reinicieu in packages/app but
Reinicia in packages/desktop. Labels that used the infinitive (Tancar, Enviar, Publicar,
Desfer, Tallar) are now imperatives — Catalan doesn't allow the infinitive for commands. Bare
gerunds became S'està….

244 values changed across the three files. No English string or key is touched.

I also added .opencode/glossary/ca.md, which is arguably the actual fix:
.opencode/command/translate.md loads .opencode/glossary/<locale>.md when present, and Catalan
was translated without one while 16 other locales have theirs. Term choices there are backed by the
Catalan translation memories Softcatalà publishes (KDE, GNOME, LibreOffice, Microsoft Terminology,
Chromium) plus Git's for Git vocabulary, with segment counts cited per row so each can be checked
without reading Catalan. Happy to split it into its own PR if you'd rather review them separately.

How did you verify your code works?

No behaviour changes, so I verified structure and consistency rather than runtime:

  • Key sets still match en.ts exactly — nothing added, removed or renamed. The only extras
    are the Catalan CLDR .many plural forms English doesn't have, and the desktop.* keys every
    locale already carries.
  • Placeholders preserved. Every {{var}} and \n matches the English for all 1,246 keys that
    have an English counterpart. The 8 .many keys have no English counterpart, so I checked those
    against their own .one/.other siblings instead.
  • All three files parse.
  • The repo's own i18n tests pass against this branch: packages/app/src/i18n/parity.test.ts
    (5 pass, 979 assertions) and packages/app/src/i18n/desktop-native.test.ts (8 pass, 455
    assertions). parity.test.ts is the locale-coverage test and already lists ca. I couldn't run
    packages/ui/src/context/i18n.test.ts locally as it needs React installed, but it covers the
    i18n machinery rather than locale content, which this PR doesn't touch.

Easiest confirmation for a reviewer: git diff --stat shows the three locale files at +166/−166,
+70/−70 and +8/−8 — exactly balanced, so only values changed and nothing structural.

Screenshots / recordings

N/A — locale strings only, no layout or component changes.

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

The ca locale was machine-generated in anomalyco#40992 without a locale glossary.
This corrects mistranslations (Called -> "Es diu", Show agent -> "Agent
d'espectacles", API key -> "tecla API", shell -> "closca"/"Carcassa",
tool calls -> "trucades"), applies the Softcatala rule of singular
imperative for commands and vos for messages, and replaces bare gerunds
with "S'esta ...".

Adds .opencode/glossary/ca.md so future translation passes have the
locale guidance the other 16 locales already have.

Fixes anomalyco#42837
@github-actions github-actions Bot added the needs:compliance This means the issue will auto-close after 2 hours. label Aug 16, 2026
@github-actions

Copy link
Copy Markdown
Contributor

The following comment was made by an LLM, it may be inaccurate:

No duplicate PRs found.

@github-actions github-actions Bot removed the needs:compliance This means the issue will auto-close after 2 hours. label Aug 16, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Thanks for updating your PR! It now meets our contributing guidelines. 👍

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.

Catalan (ca) locale has systematic mistranslations

1 participant