Skip to content

fix(l10n): every Dutch key once, and a spec that keeps it so - #857

Merged
rubenvdlinde merged 1 commit into
developmentfrom
fix/l10n-duplicate-keys
Oct 13, 2026
Merged

rubenvdlinde merged 1 commit into
developmentfrom
fix/l10n-duplicate-keys

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

The Dutch catalogues carried keys twice. Parallel pull requests each appended the same key, and git merged both lines without a conflict.

What changed

  • l10n/nl.json: "Flows", "Reports" and "Store" appeared twice with the same value. One copy each is gone.
  • l10n/nl.js (what the browser loads): fifteen keys appeared twice. In a JS object the LAST copy wins, so two of them showed a different word than the rest of the app:
    • "Set as default": dropped "Instellen als standaard", kept "Als standaard instellen" (the nl.json value).
    • "View mode": dropped "Weergave", kept "Weergavemodus" (the nl.json value).
    • The other thirteen (Cancel, Close, Default, Delete, User, Group dashboards, Create, Creating…, Period, Name, Flows, Reports, Store) had the same value twice; one copy each is gone.
  • New spec src/__tests__/l10nNoDuplicateKeys.spec.js reads the raw text of nl.json and of the object in nl.js and fails on a key that occurs twice. Approach copied from nextcloud-vue tests/l10n/catalogueNoDuplicateKeys.spec.js. A third case proves it finds a duplicate. On development's catalogues it fails (['Store', 'Reports', 'Flows'] and fifteen keys in nl.js); with this change it passes.

What a user sees

"Als standaard instellen" and "Weergavemodus" where they read "Instellen als standaard" and "Weergave". Nothing else changes.

Verified (local)

  • l10n parity: exit 0. npm run lint: exit 0.
  • npx vitest run --maxWorkers=2: exit 1, 965 of 965 tests pass, 121 of 122 files; tests/vitest/shared-instance.spec.ts fails to load (@vue/tsconfig above the mount, same on development).
  • npm run build: exit 0. No PHP changed.
  • No pixel diff: no board shows these two labels.

Left open

The other locale catalogues (be, bg, bs, ca, cs, da, de, el, es, et and more) each carry two duplicate keys too. The guard covers Dutch only; extending it means cleaning those first.

nl.json carried Flows, Reports and Store twice, nl.js fifteen keys. In
nl.js the last copy won, so Set as default read "Instellen als standaard"
and View mode "Weergave" while nl.json says "Als standaard instellen"
and "Weergavemodus". The nl.json values stay.
@rubenvdlinde
rubenvdlinde merged commit dcdafcb into development Oct 13, 2026
32 of 34 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/launchpad @ 7f2ec53

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
format ❌
check-schema-l10n ✅
composer ✅ ✅ 107/107
npm ✅ ✅ 636/636
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit ✅ 1953/1953
Newman ✅ 224/224
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-13 17:15 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.

1 participant