Vertaaltabellen kunnen ongemerkt uiteenlopen zolang een sleutel ongebruikt is #1523
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1523
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Bij het opruimen van de wezen (#1520) bleek dat zes talen —
de,es,fr,fy,it,pap— twaalf bronsleutels al misten vóór die opruiming. Onder meerGeen audio gekozen,Auto (A),Sneltoetsen (?)enPresenter view (P).Dat viel niemand op, en dat is het punt: de dekkingstoets
all literal Dutch source strings are translated in every languagescantlib/opd('…')-literalen en eist alleen voor díe sleutels een vertaling in elke taal. Staat een sleutel wél in de tabellen maar wordt hij (even) nergens opgevraagd, dan mag hij in de ene taal bestaan en in de andere ontbreken zonder dat iets klaagt.De twaalf zijn nu verdwenen omdat ze wees waren. Maar het gat in de bewaking blijft: een sleutel die tijdelijk niet wordt aangeroepen — bijvoorbeeld omdat een scherm in verbouwing is — kan in die periode stilletjes uit een paar talen verdwijnen, en komt dan onvolledig terug in gebruik.
Wat dit issue vraagt: een controle die de tabellen onderling vergelijkt in plaats van alleen tegen het gebruik in
lib/. Elke sleutel die in één taal bestaat hoort in alle talen te bestaan, ongeacht of hij op dit moment wordt opgevraagd.Aandachtspunten:
nl.dartis de brontaal en heeft alleen_stringsNl; de Nederlandse bronstrings staan per definitie niet als sleutel in die tabel. De controle moet dat weten en niet elked('…')-sleutel als ontbrekend innlmelden._strings*,_dutchSource*,_dutchSourceAdd*); de vergelijking moet per tabel gebeuren.Gevonden bij #1520.
Gebouwd en gemerged in #1529 (
f3bac2a4).De poort.
tool/check_l10n_table_parity.dart+make check-l10n-parity, AST-gemeten. Twee families in plaats van drie:_dutchSource*en_dutchSourceAdd*zijn één naamruimte —add-l10nschrijft in de toevoegingen,d()leest uit allebei, en waar de knip ligt verschilt per taal puur door volgorde (meest 1266/2014, de/es/fr/it 501/2777, tr 1949/1331); per tabel vergelijken zou ruim duizend betekenisloze verschillen per taal melden. nl doet alleen mee in de_strings*-familie, zoals het issue vroeg.In
check, niet incheck-full. Exacte verzamelingsvergelijking: geen tekstheuristiek, dus geen valse melding mogelijk en geen basislijn nodig. 32 bestanden, klaar in een seconde.Gaten bij invoering, alle drie opgeruimd in dezelfde tak — geen basislijn:
Subtitel,Kies een video,Kies een audiobestand,Platte tekst) ontbraken in de, es, fr, fy, it en pap terwijl 25 talen ze hadden en de app ze wél opvraagt → aangevuld, in de stem van de zusterregels die er al stonden.Toestemming ingetrokkenenU moet eerst de privacy- en gebruiksvoorwaarden accepteren…stonden alléén in diezelfde zes talen en worden nergens opgehaald → weggehaald; aanvullen zou 50 regels dode vertaling opleveren en de wezenbasislijn van nul breken._stringsNl(één met een Engelse waarde) en zijn onbereikbaar, wantd()raadpleegt voor nl geen tabel → weggehaald.De test toetst in twee richtingen op mini-repo's: geen alarm bij gelijke tabellen (ook met nl zonder brontabellen en met de knip op een andere plek), wél alarm bij elk geslagen gat.