Translate config/locales/en.yml without breaking a single %{name}
Upload config/locales/en.yml, pick locales, and get back de.yml, uk.yml… — %{name} interpolation and nested one/other pluralization keys translated in place, same shape the I18n gem expects.
Upload en.yml
Drop config/locales/en.yml in, or run kaeris translate config/locales/en.yml --langs de,fr,ru.
Pick target locales
46 languages — KAERIS detects the single en: root key and re-roots each output under its own locale code.
Ship
Drop de.yml into config/locales/ and add :de to available_locales.
Before → after
en: welcome: "Welcome back, %{name}!" cart: zero: "Your cart is empty" one: "%{count} item in your cart" other: "%{count} items in your cart" save: "Save changes"
de: welcome: "Willkommen zurück, %{name}!" cart: zero: "Dein Warenkorb ist leer" one: "%{count} Artikel im Warenkorb" other: "%{count} Artikel im Warenkorb" save: "Änderungen speichern"
Rails detects a single 2-letter root key (en:) and nests everything underneath — KAERIS recognizes that shape automatically and re-roots the translated tree under each target's own code. Since Rails pluralization is just nested zero/one/other keys, KAERIS translates whichever categories you already have; add few/many to your source first if a Slavic target locale's I18n backend expects them.
%{name} interpolation preserved
Ruby-style %{name} placeholders are never dropped, renamed or mistranslated.
Pluralization keys kept
zero/one/other nested under a key are each translated on their own — no collapsing into a single string.
Locale-rooted YAML aware
Recognizes Rails' en:-rooted convention and rewrites the root key per target locale automatically.
One CLI command
kaeris translate config/locales/en.yml --langs de,fr,ru — wire it into a Rake task or CI job.
%{name} is never dropped or mistranslated.Ship your Rails app in every market
46 languages, %{name}-safe, I18n-native. Free to start, no account required.
$ pip install kaeris $ kaeris translate config/locales/en.yml --langs de,fr,ru