{"slug": "the-translation-was-still-there-that-was-the-bug", "title": "The Translation Was Still There. That Was the Bug.", "summary": "A developer has built Translatron, an open-source localization tool that treats translations as outputs produced under specific assumptions, regenerating only the strings affected when source text or product rules change and preserving human-edited or unrelated translations. The project, inspired in part by Transformers, is positioned as a \"localization compiler\" that identifies affected output, regenerates and validates it, and leaves everything else untouched while still emitting ordinary JSON. The developer notes that a changed source string like \"Pay now\" to \"Continue to payment\" leaves valid but stale French and German translations, a class of bug invisible to the application itself.", "body_md": "I changed a checkout button from **`Pay now`** to **` Continue to payment`**.\n\nNothing failed. The app built normally, the translation keys were still present, and every locale file was perfectly valid.\n\nBut the French and German strings were now translations of something the product no longer said.\n\nThat is a strange kind of bug because, from the application's point of view, there is no bug at all.\n\nWhen I originally built Translatron, translation itself was the focus. Give an LLM some source strings, generate the target languages, save the JSON.\n\nThe more I worked with it, the less interesting that part became.\n\nModern models can translate text well. The real engineering problem starts once the translated text has to survive inside a product that keeps changing.\n\nA string like **`Continue`** is a simple example. It might mean continue checkout, continue onboarding or continue reading. The source string alone isn't enough to understand it.\n\nThe same applies to product rules. Perhaps `Workspace` should never be translated. Maybe checkout buttons must stay short. Maybe somebody on the team manually corrected the French version because the generated sentence sounded unnatural.\n\nThose aren't edge cases. They're part of the history of the translation.\n\n**A translation is not just output. It's output produced under a particular set of assumptions.**\n\nIf those assumptions change, the translation may need attention. If they don't, regenerating it is unnecessary — and can sometimes make things worse.\n\nThat's the direction Translatron has been moving toward: identify what was affected, update those translations, and leave unrelated or intentionally human-edited work alone.\n\nWhen I came up with **Translatron**, *Transformers* was part of the inspiration.\n\nOriginally the joke was obvious: one language transforms into another.\n\nAfter building the project further, I think the reference works better in another way.\n\nThe goal isn't to transform everything whenever the tool runs. It's to figure out what actually needs to change.\n\nThat has become the principle I like most:\n\n**Transform what needs transforming. Preserve what doesn't.**\n\nSomewhere along the way, that also made Translatron feel less like an AI translator and more like a localization compiler.\n\nSomething changes. The affected output is identified. The necessary pieces are regenerated and validated. Everything else stays where it is.\n\nAnd your application still receives ordinary JSON at the end.\n\nThat's the kind of AI tooling I want to build: useful where uncertainty exists, predictable everywhere else.\n\nTranslatron is open source at `[github.com/Msalways/Translatron](https://github.com/Msalways/Translatron)`.\n\nIf you've dealt with localization in production, I'm curious how your team knows when an existing translation needs another review.", "url": "https://wpnews.pro/news/the-translation-was-still-there-that-was-the-bug", "canonical_source": "https://dev.to/msalways/the-translation-was-still-there-that-was-the-bug-3e54", "published_at": "2026-09-27 16:22:29+00:00", "updated_at": "2026-09-27 17:01:08.523270+00:00", "lang": "en", "topics": ["ai-tools", "natural-language-processing", "developer-tools", "large-language-models"], "entities": ["Translatron", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/the-translation-was-still-there-that-was-the-bug", "markdown": "https://wpnews.pro/news/the-translation-was-still-there-that-was-the-bug.md", "text": "https://wpnews.pro/news/the-translation-was-still-there-that-was-the-bug.txt", "jsonld": "https://wpnews.pro/news/the-translation-was-still-there-that-was-the-bug.jsonld"}}