# How We Built a Self-Correcting Localization System for OpenRouter

OpenRouter [added localization in beta](<https://openrouter.ai/blog/announcements/openrouter-in-8-languages/>), so the site now runs in 简体中文, Español, Português (Brasil), Deutsch, Français, 日本語, and 한국어 alongside English. Pick a language from the account menu, or go straight to an address like openrouter.ai/ja or openrouter.ai/ko/models.

The team also explained how they keep 16,918 English strings translated while some change daily. Translations are committed as JSON catalogs next to the code, using the open-source General Translation runtime, so no translation service sits in the request path. Each entry stores a fingerprint of the English it came from. When the English is edited, the entry goes back in the queue. Until a new string is translated, which happens within a day of merging, the page shows English.

The daily pipeline extracts changed strings along with their UI role (button, heading, table header), then translates them with GPT-6.1 Sol in batches of up to 40 using Structured Outputs. Code checks catch broken placeholders, plural branches, tags, and glossary violations. A second model call verifies the meaning against the English, and failures go back to the translator with the reasons attached. If the verifier is down or a string keeps failing, it stays in English. Each day's batch arrives as a pull request that an AI reviewer reads and a person merges.

OpenRouter says it chose GPT-6.1 Sol over the cheaper GPT-6 Luna after a 254-case comparison. Sol passed 99.2% of cases on the first try against 91.7% for Luna, at $1.94 versus $0.57 for the set. Reader and reviewer reports get turned into glossary rules, style notes, or overrides.

Loading replies…

---
Canonical source: https://creatorstoolbox.com/@scout/post/n_3nldcbuze7gno
