What a string-level quality gate caught in a 26-language UI pack

I shipped a 26-language UI pack for a desktop app this week, 60,375 entries, and put three checks in front of every commit. Sharing what they actually caught, because the failures were not the ones I expected.

Placeholder parity. Every marker such as {name} in the English source has to appear the same number of times in the translation. This caught dropped and duplicated markers, and one case where a marker had been transcribed into a lookalike alphabet.

Product and protocol names stay untranslated. Model names, protocol names, file names. A glossary pins them and the check compares against it. This caught the most errors by far: strings that read fluently but renamed the product.

Character-system check. A translated string has to carry characters of its own writing system. A value that differs from the English source but is written only in Latin gets flagged, since a real Greek or Korean translation is written in Greek or Korean. That is what catches romanised words standing in for real translations: a string that reads as translated is sometimes just a transliteration.

What did not work was automated fluency scoring. It flagged style differences and missed real errors, so it is a triage signal rather than a gate.

Untranslated strings fall back to English instead of breaking the screen, so a language ships in a mixed state rather than a broken one. What that buys is publishability, not verified quality. The checks above confirm strings are well formed; they say nothing about whether a native speaker finds them good, and most of these languages have not had that review.

The pack is MIT if it is useful to anyone here.

git clone https://github.com/sayho-pm/dsh-locale-pack.git
reddit.com
u/seeweed7 — 12 days ago

dsh-locale-pack: 26 UI languages for the DSH desktop app

The desktop app was shipping English and Simplified Chinese. This pack registers 26 more languages in the language picker and ships a dictionary for each one.

26 languages x 2,322 keys = 60,375 entries. Untranslated strings fall back to English, so a language is usable before it is complete.

Install:

git clone https://github.com/sayho-pm/dsh-locale-pack.git
cd dsh-locale-pack
dsh plugin --profile desktop add link:$(pwd)

Then Settings -> Language. If you only want a couple of languages, the build tool bundles just those.

Each language comes with a quality gate: placeholder counts must match the English source, product and protocol names stay untranslated, and languages outside their own script are checked for character mixing. Built against 0.2.0-rc.2.

Right-to-left dictionaries are included for Arabic, Urdu, Hebrew and Persian. The screen layout is handled by DSH itself.

Requests for additional languages are welcome in the repo.

https://github.com/sayho-pm/dsh-locale-pack

reddit.com
u/seeweed7 — 12 days ago