Translate react-i18next, then read every line back before you ship
Drop in your locales/en/translation.json — KAERIS translates all 46 languages, then reads each line back to you in your own language and flags the ones worth a second look. Catch the shaky ones before release, not after. Interpolation, plural suffixes and <Trans> markup stay intact.
Upload your namespace
Drop locales/en/translation.json, or run kaeris init --preset i18next to wire the CLI into your repo.
Pick target locales
46 languages — use the Europe/CIS/Asia presets or hand-pick exactly the locales your app ships.
Ship
Download translation.json per locale, or let the GitHub Action open a PR whenever new keys land.
Before → after
{ "welcome": "Welcome back, {{name}}!", "cart_count_one": "You have {{count}} item", "cart_count_other": "You have {{count}} items", "save": "Save changes" }
{ "welcome": "Willkommen zurück, {{name}}!", "cart_count_one": "Du hast {{count}} Artikel", "cart_count_other": "Du hast {{count}} Artikel", "save": "Änderungen speichern" }
Every {{placeholder}} and every _one/_other plural key is translated per target locale with its suffix intact — KAERIS never collapses them into a single flat string.
<Trans> markup passes through untouched
// Source key: "welcome_html": "Welcome back, <strong>{{name}}</strong>!" <Trans i18nKey="welcome_html" values={{ name }}> Welcome back, <strong>{name}</strong>! </Trans>
The <strong> tag inside the string value survives translation exactly — no lost tags, no re-nested markup.
Namespace-aware
Keeps your translation.json / common.json / errors.json split and folder layout exactly as-is — nothing gets merged into one file.
Plural-safe
Translates each of your i18next plural keys — _one, _other, _few, _many — into every locale, keeping the suffixes and the count variable intact. Add the forms a locale needs and KAERIS translates them; the CLDR check flags a locale that's still missing one.
<Trans>-safe
Inline tags inside string values (<strong>, <0>) pass through unchanged — keeping your JSX intact.
One CLI command
kaeris init --preset i18next scaffolds locale detection straight from your existing locales/ folder.
{{var}} is never dropped, renamed or mistranslated.Beyond i18next JSON, KAERIS speaks all 11 formats — JSON, YAML, .strings, .po, ARB, Android XML, CSV (incl. Godot/Unity), XLIFF, .properties, .resx and Mozilla Fluent (.ftl) — same placeholder-safe engine across your whole stack.
Ship react-i18next in every market
46 languages, placeholder-safe, format-native. Free to start, no account required.
$ pip install kaeris $ kaeris init --preset i18next