Found while clearing the cognate debt on #2634, and deliberately not fixed there — restoring these needs ~2,285 corrections records to satisfy selfcheck, which is its own change.
What is wrong
Three shipped bundles are substantially a different language:
| locale |
actually |
evidence |
be Belarusian |
Russian |
1,414 of 2,720 values byte-identical to ru.js; 4,336 occurrences of и and 131 of щ — letters that do not exist in the Belarusian alphabet |
lb Luxembourgish |
Dutch |
820 of 2,720 identical to nl.js (Add → Toevoegen, Er is een deactiveringsverzoek in behandeling.) |
rm Rumantsch |
Rumantsch/Portuguese hybrid |
1,007 of 2,720 identical to pt.js; pt-identity jumped 40 → 1,005 at 42e94f75e |
I verified the Belarusian numbers independently: 1,414 identical to ru, 4,336 и.
be.json\s own corrections record already says "the value was RUSSIAN, not Belarusian… Belarusian has no и" — that audit ran against the authentic bundle, which was then destroyed.
Root cause — the same bug that ate 1,140 other values
Earlier finishing passes wrote only l10n/<loc>.js. That file is generated from l10n/<loc>.json. Commit 99409853f ("rebuild the browser catalogues") regenerated all 37 .js from the unchanged .json sources and silently reverted every authored value.
Provable rather than inferred: for ro, the recovered set is 288 values = exactly its parity debt, its 63 untouched values = exactly its 63 recorded cognates, and its 67 deltas = exactly its 67 recorded corrections. Same shape for bg (285/42/3).
The authentic text still exists in git
| locale |
recoverable |
from |
be |
1,013 values |
b6d3727e1 |
lb |
561 values |
de9ade74e |
rm |
711 values |
c959c9526 |
Why this needs its own change
Restoring them trips selfcheck, which requires a corrections record per changed value — roughly 2,285 records. That is a deliberate pass, not a cherry-pick.
The check that would have caught all of it
Nothing asserts that l10n/<loc>.js matches what regenerating it from l10n/<loc>.json would produce. check:l10n-js exists but ran after the damage. A CI check that regenerates and diffs would have failed the moment a .js-only edit landed, instead of letting a later rebuild quietly discard 1,140+ authored values across at least seven locales.
Related: #3093 (Icelandic corrections recorded but never applied) is the same family — a decision that exists in config and not in the shipped bundle.
Found while clearing the cognate debt on #2634, and deliberately not fixed there — restoring these needs ~2,285
correctionsrecords to satisfyselfcheck, which is its own change.What is wrong
Three shipped bundles are substantially a different language:
beBelarusianru.js; 4,336 occurrences ofиand 131 ofщ— letters that do not exist in the Belarusian alphabetlbLuxembourgishnl.js(Add→Toevoegen,Er is een deactiveringsverzoek in behandeling.)rmRumantschpt.js; pt-identity jumped 40 → 1,005 at42e94f75eI verified the Belarusian numbers independently: 1,414 identical to
ru, 4,336и.be.json\s owncorrectionsrecord already says "the value was RUSSIAN, not Belarusian… Belarusian has no и" — that audit ran against the authentic bundle, which was then destroyed.Root cause — the same bug that ate 1,140 other values
Earlier finishing passes wrote only
l10n/<loc>.js. That file is generated froml10n/<loc>.json. Commit99409853f("rebuild the browser catalogues") regenerated all 37.jsfrom the unchanged.jsonsources and silently reverted every authored value.Provable rather than inferred: for
ro, the recovered set is 288 values = exactly its parity debt, its 63 untouched values = exactly its 63 recorded cognates, and its 67 deltas = exactly its 67 recorded corrections. Same shape forbg(285/42/3).The authentic text still exists in git
beb6d3727e1lbde9ade74ermc959c9526Why this needs its own change
Restoring them trips
selfcheck, which requires acorrectionsrecord per changed value — roughly 2,285 records. That is a deliberate pass, not a cherry-pick.The check that would have caught all of it
Nothing asserts that
l10n/<loc>.jsmatches what regenerating it froml10n/<loc>.jsonwould produce.check:l10n-jsexists but ran after the damage. A CI check that regenerates and diffs would have failed the moment a.js-only edit landed, instead of letting a later rebuild quietly discard 1,140+ authored values across at least seven locales.Related: #3093 (Icelandic corrections recorded but never applied) is the same family — a decision that exists in config and not in the shipped bundle.