I built the localization checker before the localization. It still missed three defects.
Parlotype's UI was English-only, with the copy baked into markup and C#: 211 literal attributes across 26 .axaml files, roughly 200 string literals across 48 view models, plus the tray menu, the dialogs and the toasts. I wanted Russian and Spanish, and I wanted the ninth language to cost one translation file and nothing else. Most of that work is mechanical, which makes it a good fit for an…
Parlotype developed a localization checker before the actual translation work began, but despite this early focus on guardrails, three user-visible defects still slipped through. The app, built in .NET 10 and Avalonia 12, featured English-only UI with copy hard-coded into markup and C# code, totaling 211 literal attributes across 26 .axaml files and 200 string literals across 48 view models. The checker aimed to support Russian, Spanish, and additional languages, with the vision of achieving localization efficiency.
The process began with building scripts to ensure parity between locales and placeholders, as well as scanning for any hard-coded literals in the .axaml files. Claude Code assisted in implementing these checks, which were integrated as a directed session alongside key extraction, translation, testing, and implementation. This approach yielded 389 keys in three languages, with 122 files changed, amounting to an overall modification of +11,467 / -618.
Despite these precautions, three defects made it past the guardrails, each representing a different type of oversight. These defects were unrelated to translation errors, highlighting the importance of the guardrails in detecting issues during the development process. The post reaches out to discuss the development of these guardrails and the lessons learned from the experience.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.