fix(l10n): laat de blokkerende meldingen de taal van de gebruiker volgen (#576) #671

Merged
brenno merged 1 commit from wip/576-reden into main 2026-07-22 19:00:45 +00:00
Owner

De vertaallaag sleutelt op letterlijke Nederlandse brontekst. Een zin die een waarde interpoleert heeft geen letterlijke vorm en kan dus per definitie niet opgezocht worden — dat is geen vergeten string maar een structurele grens.

Hij trof precies de verkeerde categorie. De classificatieweigeringen zijn de meldingen die je tégenhouden: wie ze niet leest, weet niet waarom zijn export niet doorgaat.

De vorm

De dienst geeft nu een reden terug in plaats van proza: een enum plus de twee TLP-niveaus. De schil maakt daar een zin van in de taal van de gebruiker, met dezelfde {…}-plaatshouders die slide_quality_localization.dart al gebruikte.

Dat raakte acht aanroepplekken, want de kant-en-klare zin reisde door ExportResult, ExportReadiness, ReviewResult en ReleaseResult heen. Allemaal dragen ze nu de beslissing in plaats van de tekst. Dat is meer dan de issue schatte, en het is meteen de reden dat het zo lang kon blijven zitten: de zin was al vier lagen diep voordat iemand hem zag.

De asserties zijn verhuisd, niet verdwenen

De tests die de zinsinhoud controleerden stonden op de dienst. Ze staan nu op de laag waar de zin gemaakt wordt — dat is het punt van deze hele wijziging. Er is een test bij die bewijst dat Duits en Nederlands verschíllen.

Die had ik eerst fout, en dat is het vermelden waard: de taal komt uit de statische setActiveLanguageCode, niet uit de Locale in de constructor. Mijn eerste versie gaf een Locale('de') mee, zocht in de Nederlandse tak, en stond groen zonder iets te bewijzen. De taalbouwer-agent zag het.

Ook meegenomen

De drie kale literals uit de issue. 'Nieuw' is het eerste woord linksboven in het venster en stond in alle 32 talen in het Nederlands.

Vier nieuwe l10n-strings in alle 31 talen, met de plaatshouders per taal nagemeten.

Drie klassenratchets vielen onderweg om; opgelost door de aanroepen compacter te maken, niet door plafonds te verhogen — _SlideListPanelState staat netto lager dan ervoor (1053 → 1050).

make check groen.

Closes #576

De vertaallaag sleutelt op letterlijke Nederlandse brontekst. Een zin die een waarde **interpoleert** heeft geen letterlijke vorm en kan dus per definitie niet opgezocht worden — dat is geen vergeten string maar een structurele grens. Hij trof precies de verkeerde categorie. De classificatieweigeringen zijn de meldingen die je *tégenhouden*: wie ze niet leest, weet niet waarom zijn export niet doorgaat. ## De vorm De dienst geeft nu een **reden** terug in plaats van proza: een enum plus de twee TLP-niveaus. De schil maakt daar een zin van in de taal van de gebruiker, met dezelfde `{…}`-plaatshouders die `slide_quality_localization.dart` al gebruikte. Dat raakte **acht aanroepplekken**, want de kant-en-klare zin reisde door `ExportResult`, `ExportReadiness`, `ReviewResult` en `ReleaseResult` heen. Allemaal dragen ze nu de beslissing in plaats van de tekst. Dat is meer dan de issue schatte, en het is meteen de reden dat het zo lang kon blijven zitten: de zin was al vier lagen diep voordat iemand hem zag. ## De asserties zijn verhuisd, niet verdwenen De tests die de zinsinhoud controleerden stonden op de dienst. Ze staan nu op de laag waar de zin gemaakt wordt — dat is het punt van deze hele wijziging. Er is een test bij die bewijst dat Duits en Nederlands verschíllen. **Die had ik eerst fout**, en dat is het vermelden waard: de taal komt uit de statische `setActiveLanguageCode`, niet uit de `Locale` in de constructor. Mijn eerste versie gaf een `Locale('de')` mee, zocht in de Nederlandse tak, en stond groen zonder iets te bewijzen. De taalbouwer-agent zag het. ## Ook meegenomen De drie kale literals uit de issue. `'Nieuw'` is het eerste woord linksboven in het venster en stond in alle 32 talen in het Nederlands. Vier nieuwe l10n-strings in alle 31 talen, met de plaatshouders per taal nagemeten. Drie klassenratchets vielen onderweg om; opgelost door de aanroepen compacter te maken, niet door plafonds te verhogen — `_SlideListPanelState` staat netto lager dan ervoor (1053 → 1050). `make check` groen. Closes #576
fix(l10n): laat de blokkerende meldingen de taal van de gebruiker volgen
Some checks failed
CI / Gate (Linux) · Format · Analyze · Coverage (push) Failing after 26s
CI / Docs links (push) Failing after 24s
CI / Web hardening (push) Failing after 25s
CI / Gate (Linux) · Format · Analyze · Coverage (pull_request) Failing after 19s
CI / Web hardening (pull_request) Failing after 23s
CI / Supply-chain (Trivy · advisory) (push) Failing after 26s
CI / Docs links (pull_request) Failing after 19s
CI / Supply-chain (Trivy · advisory) (pull_request) Failing after 19s
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Test (macos-latest) (pull_request) Has been cancelled
CI / Test (windows-latest) (pull_request) Has been cancelled
46284cfa55
De vertaallaag sleutelt op letterlijke Nederlandse brontekst. Een zin die een
waarde interpoleert heeft geen letterlijke vorm en kan dus per definitie niet
opgezocht worden — dat is geen vergeten string maar een structurele grens.

Hij trof precies de verkeerde categorie. De classificatieweigeringen zijn de
meldingen die je tégenhouden: wie ze niet leest, weet niet waarom zijn export
niet doorgaat.

De dienst geeft nu een reden terug in plaats van proza: een enum plus de twee
TLP-niveaus. De schil maakt daar een zin van met de taal van de gebruiker
(`l10n/export_block_localization.dart`, met dezelfde {…}-plaatshouders die
slide_quality_localization al gebruikte).

Dat raakte acht aanroepplekken, want de kant-en-klare zin reisde door
ExportResult, ExportReadiness, ReviewResult en ReleaseResult heen. Allemaal
dragen ze nu de beslissing.

De asserties op de zinsinhoud zijn niet verdwenen maar verhuisd naar de laag
waar de zin gemaakt wordt — dat is het punt van de hele wijziging. Er staat een
test bij die bewijst dat Duits en Nederlands verschillen; die had ik eerst fout,
want de taal komt uit de statische `setActiveLanguageCode` en niet uit de Locale
in de constructor. Zonder die correctie stond hij groen zonder iets te bewijzen.

Ook de drie kale literals: 'Nieuw' is het eerste woord linksboven in het venster
en stond in alle 32 talen in het Nederlands.

Vier nieuwe l10n-strings, in alle 31 talen, met de plaatshouders nagemeten.

Closes #576
brenno merged commit 606d28a9e0 into main 2026-07-22 19:00:45 +00:00
Sign in to join this conversation.
No description provided.