feat(l10n): translate the versioniq admin UI into Dutch - #324
Merged
Conversation
The settings panel rendered entirely in English on a Dutch account: Apps,
History, Sources, Tokens, Trusted sources, Discover, Artifact cache, Automatic
updates, Security advisory checks. Every one of those was ABSENT from the
catalogue, not mistranslated.
Measured with a scanner that catches this.t( and $t( as well as bare t(, since
a naive pattern under-reports Options-API components:
distinct t('versioniq', ...) keys in src/ 181
already in nl.json 25
missing 156
All 156 translated. en.json did not exist at all and is added as identity, so
the pair matches the rest of the fleet and check:l10n-js has both halves to
compare.
This is a SEPARATE gap from the missing-.js fault fixed in #296. That one made
27 existing translations unreachable by the browser; this one is that the other
156 strings were never written. Fixing the artefact could not have revealed
them, because before #296 all 181 rendered English identically.
Placeholders are preserved exactly ({hours}, {minutes}, {level}, {source},
{min}, {max}, {forge}, {days}, {version}, {user}, {date}, {size}, {keep},
{pattern}, {count}) -- verified programmatically, 0 mismatches.
No em-dashes in the Dutch, per the writing skill's voice rules, even where the
English source uses them; those become a colon or a full stop.
Verified: check:l10n-js exits 0 with en.js 156 keys and nl.js 183; the file the
browser loads was fetched from the running server and carries the Dutch.
Contributor
Quality Report — ConductionNL/versioniq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| composer | ✅ | ✅ 29/29 | |||
| npm | ✅ | ✅ 302/302 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ⏭️ | ||||
| Playwright | 🚨 NO VERDICT — enabled but never ran | ||||
| Hydra gates | ✅ |
Quality workflow — 2026-08-31 03:38 UTC
Download the full PDF report from the workflow artifacts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The settings panel rendered entirely in English on a Dutch account: Apps, History, Sources, Tokens, Trusted sources, Discover, Artifact cache, Automatic updates, Security advisory checks. Every one of those was absent from the catalogue, not mistranslated.
Measured with a scanner that catches
this.t(and$t(as well as baret(, since a naive pattern under-reports Options-API components:t('versioniq', …)keys insrc/nl.jsonAll 156 translated.
en.jsondid not exist at all and is added as identity, so the pair matches the rest of the fleet andcheck:l10n-jshas both halves to compare.This is a separate gap from #296
#296 fixed a mechanical fault:
l10n/nl.jswas missing, so 27 existing translations never reached the browser. This PR is the other half — the remaining 156 strings were never written.Fixing the artefact could not have revealed them, because before #296 all 181 rendered English identically. Only once the 27 started working did the other 156 stand out as the ones still in English.
Care taken
{hours},{minutes},{level},{source},{min},{max},{forge},{days},{version},{user},{date},{size},{keep},{pattern},{count}. Verified programmatically: 0 mismatches.Verification
check:l10n-jsexits 0 —en.js156 keys,nl.js183.status 200,appId "versioniq", Dutch present.One thing I could not verify: the rendered page flipping to Dutch. The local instance serves a cached
nl.jsunder an unchanged?v=hash andocc maintenance:repairdid not rotate it, so the browser kept the old 27-key copy. That is a local caching artefact rather than evidence against the change, but it is not the end-to-end proof I would prefer.🤖 Generated with Claude Code