Skip to content

fix(l10n): every required locale translates every source string - #1765

Merged
rubenvdlinde merged 1 commit into
developmentfrom
fix/l10n-parity-all-locales
Oct 16, 2026
Merged

rubenvdlinde merged 1 commit into
developmentfrom
fix/l10n-parity-all-locales

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

npm run test:l10n:parity was red on development (exit 1). It now exits 0.

What was missing

  • nl: 79 strings (approval route and decision field descriptions)
  • de, fr, es, it: 1,477 each
  • bg, hr, da, et, fi, el, hu, ga, lv, lt, mt, pl, pt, ro, sq, is, nb, ru, tr: 1,625 each
  • cs, sk, sl, sv, sr, bs, mk, uk, be, ca, lb, rm: no catalogue at all (3,301 strings each)

What changed

  • l10n/<locale>.json: the missing strings are added at the end of each existing catalogue, and the 12 new catalogues are created.
  • l10n/<locale>.js: regenerated with npm run l10n:build.

Only l10n/ is touched: 48 files, +73,843 / -50. The -50 are the trailing-comma line of each existing file, plus the keys 2026 and 2027 in nl.json, which a JSON rewrite moves to the top.

Dutch is written by hand. The other locales are machine translated, reuse the terms already in each existing catalogue, and use a fixed glossary for the new ones. The merge script checked that every placeholder (%s, %n, %1$d, {name}) is kept in every string. No translated value contains an em-dash.

Verified locally

  • npm run test:l10n:parity: exit 1 before, exit 0 after
  • npm run check:l10n-js: 0
  • npm run test:l10n: 0
  • npm run check:schema-l10n: 0
  • npx prettier --check l10n/: 0
  • No PHP changed, so composer check:strict was not run.

Known limits

  • The one plural string (_in %n open vote_::_in %n open votes_) has 2 forms in every locale. That matches the default nplurals=2 the build declares, but Slavic and Baltic languages, Romanian and Irish use more forms.
  • Ambiguous short strings were translated without context. "No." became a number column header, and "Put" and "Store" are guesses in some locales. A native reviewer should check these.
  • test:l10n:parity is still not a CI leg (see code-quality.yml). With the backlog cleared it could be one.

This PR was prepared with AI assistance (Claude Code).

🤖 Generated with Claude Code

test:l10n:parity failed on development: nl missed 79 strings, de/fr/es/it
1,477, 19 other locales 1,625, and 12 required locales (cs, sk, sl, sv, sr,
bs, mk, uk, be, ca, lb, rm) had no catalogue at all. The missing strings are
now translated in l10n/<locale>.json and l10n/<locale>.js is regenerated
with l10n:build, so test:l10n:parity, check:l10n-js and test:l10n exit 0.

Assisted-by: ClaudeCode:claude-opus-5-5
@rubenvdlinde
rubenvdlinde merged commit 0557aab into development Oct 16, 2026
41 of 43 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/decidiq @ e002d5d

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
check-nav-ceiling ✅
test-l10n ✅
format ❌
check-l10n-js ✅
check-schema-l10n ✅
composer ✅ ✅ 107/107
npm ✅ ✅ 652/652
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit ✅ 2691/2691 · 8 skipped
Newman ✅ 363/363 · 1 skipped
Playwright ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ❌

Quality workflow — 2026-10-16 18:30 UTC

Download the full PDF report from the workflow artifacts.

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