[Bug] Zes talen tonen Engelse kwaliteitsmeldingen terwijl de poort groen staat #677

Closed
opened 2026-07-22 19:59:15 +00:00 by brenno · 1 comment
Owner

Gevonden terwijl de nieuwe lege-dia-melding uit #583 werd vertaald.

Wat er staat. In de, fr, es, it, fy en pap staat een blok bestaande kwaliteitsmeldingen als onvertaald Engels in het vertaalbestand. Bijvoorbeeld in lib/l10n/translations/de.dart rond regel 2249:

'Veel bullets op deze slide': 'Many bullets on this slide',
'Splits deze inhoud over meerdere slides.':
    'Split this content across multiple slides.',

Waarom make l10n-check dit niet ziet. De poort toetst dekking — staat er een waarde bij deze sleutel? — en niet of die waarde in de doeltaal staat. Een Engelse string in het Duitse bestand is voor de poort een ingevulde string. Dat is precies het gat waar deze schuld al die tijd in kon blijven zitten.

Waarom het meer is dan slordig. Het kwaliteitspaneel toont deze meldingen naast elkaar. Een Duitse gebruiker ziet daar straks de correct vertaalde lege-dia-melding pal naast Many bullets on this slide. Dat leest niet als "één string mist" maar als "dit product is half af", en het is de plek waar de app juist gezaghebbend hoort te klinken: hij vertelt je wat er mis is met jouw werk.

Twee dingen om te beslissen:

  1. De zes talen bijwerken — mechanisch werk, de bronstrings staan er al.
  2. Of de poort iets kan zien wat hij nu niet ziet. Een volwaardige taaldetectie is te veel, maar het goedkope geval dekt waarschijnlijk het meeste: een waarde die identiek is aan de Engelse vertaling van dezelfde sleutel, in een taal die niet en is, is vrijwel altijd een niet-vertaalde string. Er zijn echte uitzonderingen (leenwoorden), en daar bestaat de unchanged-lijst in tool/add_l10n.dart al voor — die kan dienstdoen als de uitzonderingslijst van zo'n controle.

Zonder punt 2 komt dit terug: het is niet één keer ontstaan en het is nu ook niet één keer opgemerkt.

Gevonden terwijl de nieuwe lege-dia-melding uit #583 werd vertaald. **Wat er staat.** In `de`, `fr`, `es`, `it`, `fy` en `pap` staat een blok bestaande kwaliteitsmeldingen als onvertaald **Engels** in het vertaalbestand. Bijvoorbeeld in `lib/l10n/translations/de.dart` rond regel 2249: ```dart 'Veel bullets op deze slide': 'Many bullets on this slide', 'Splits deze inhoud over meerdere slides.': 'Split this content across multiple slides.', ``` **Waarom `make l10n-check` dit niet ziet.** De poort toetst *dekking* — staat er een waarde bij deze sleutel? — en niet of die waarde in de doeltaal staat. Een Engelse string in het Duitse bestand is voor de poort een ingevulde string. Dat is precies het gat waar deze schuld al die tijd in kon blijven zitten. **Waarom het meer is dan slordig.** Het kwaliteitspaneel toont deze meldingen naast elkaar. Een Duitse gebruiker ziet daar straks de correct vertaalde lege-dia-melding pal naast `Many bullets on this slide`. Dat leest niet als "één string mist" maar als "dit product is half af", en het is de plek waar de app juist gezaghebbend hoort te klinken: hij vertelt je wat er mis is met jouw werk. **Twee dingen om te beslissen:** 1. De zes talen bijwerken — mechanisch werk, de bronstrings staan er al. 2. Of de poort iets kan zien wat hij nu niet ziet. Een volwaardige taaldetectie is te veel, maar het goedkope geval dekt waarschijnlijk het meeste: een waarde die *identiek* is aan de Engelse vertaling van dezelfde sleutel, in een taal die niet `en` is, is vrijwel altijd een niet-vertaalde string. Er zijn echte uitzonderingen (leenwoorden), en daar bestaat de `unchanged`-lijst in `tool/add_l10n.dart` al voor — die kan dienstdoen als de uitzonderingslijst van zo'n controle. Zonder punt 2 komt dit terug: het is niet één keer ontstaan en het is nu ook niet één keer opgemerkt.
Author
Owner

Opgelost in PR #690, op main.

De vijftien meldingen zijn vertaald in de zes talen, met register en terminologie uit het bestand zelf. Er kwamen er vier bij die de telling niet had: woorden, niveau en tegenover waren net zo Engels en wórden getoond — een Duitse gebruiker las (140 words) en (level 4).

En het woord bullets stond twee keer hardgecodeerd buiten l10n.d(), midden in een verder wél vertaalde zin: Viele Stichpunkte auf dieser Folie (12 bullets). De sleutel bestond al in alle 32 talen en werd alleen niet aangeroepen. Dezelfde fout, één laag dieper — en hij botste ook met de regel "geen zichtbare tekst buiten l10n.d()".

De poort staat er, en het tweede punt uit het issue was moeilijker dan het leek. Een naïeve "gelijk aan de Engelse vertaling"-toets vindt er 446 en heeft in ruim driehonderd gevallen ongelijk: Logo, Design, Version, Classification in het Frans zijn gewoon identiek. Dat is geen poort maar ruis, en ruis wordt weggeklikt.

Daarom telt alleen wat drie woorden of meer is — een hele zin die in twee talen identiek is, is geen toeval. Dat vond er precies 93: de 90 echte plus drie terechte uitzonderingen, die met reden in de lijst staan (een pangram als lettertypevoorbeeld, een CVSS-vakterm, één Deens leenwoord). Jouw suggestie om de unchanged-lijst uit add_l10n.dart te hergebruiken bleek niet nodig; die lijst gaat over iets anders, en drie uitzonderingen met een reden ernaast lezen beter dan een gedeelde lijst.

Wat de keuze kost staat in de test zelf: een onvertaalde string van één of twee woorden glipt erdoorheen. Dat is de prijs voor een poort die niet liegt, en hij is te betalen — deze fout bestond uit hele zinnen.

Opgelost in PR #690, op main. **De vijftien meldingen zijn vertaald** in de zes talen, met register en terminologie uit het bestand zelf. Er kwamen er vier bij die de telling niet had: `woorden`, `niveau` en `tegenover` waren net zo Engels en wórden getoond — een Duitse gebruiker las `(140 words)` en `(level 4)`. **En het woord `bullets` stond twee keer hardgecodeerd buiten `l10n.d()`**, midden in een verder wél vertaalde zin: `Viele Stichpunkte auf dieser Folie (12 bullets).` De sleutel bestond al in alle 32 talen en werd alleen niet aangeroepen. Dezelfde fout, één laag dieper — en hij botste ook met de regel "geen zichtbare tekst buiten `l10n.d()`". **De poort staat er, en het tweede punt uit het issue was moeilijker dan het leek.** Een naïeve "gelijk aan de Engelse vertaling"-toets vindt er **446** en heeft in ruim driehonderd gevallen ongelijk: `Logo`, `Design`, `Version`, `Classification` in het Frans zijn gewoon identiek. Dat is geen poort maar ruis, en ruis wordt weggeklikt. Daarom telt alleen wat drie woorden of meer is — een hele zin die in twee talen identiek is, is geen toeval. Dat vond er precies 93: de 90 echte plus drie terechte uitzonderingen, die met reden in de lijst staan (een pangram als lettertypevoorbeeld, een CVSS-vakterm, één Deens leenwoord). Jouw suggestie om de `unchanged`-lijst uit `add_l10n.dart` te hergebruiken bleek niet nodig; die lijst gaat over iets anders, en drie uitzonderingen met een reden ernaast lezen beter dan een gedeelde lijst. **Wat de keuze kost staat in de test zelf:** een onvertaalde string van één of twee woorden glipt erdoorheen. Dat is de prijs voor een poort die niet liegt, en hij is te betalen — deze fout bestond uit hele zinnen.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#677
No description provided.