Translate react-i18next without breaking a single {{variable}}
Drop in your locales/en/translation.json, pick languages, and KAERIS ships back real i18next JSON — interpolation, plural suffixes and <Trans> markup all 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 in your cart", "cart_count_other": "You have {{count}} items in your cart", "save": "Save changes" }
{ "welcome": "Willkommen zurück, {{name}}!", "cart_count_one": "Du hast {{count}} Artikel im Warenkorb", "cart_count_other": "Du hast {{count}} Artikel im Warenkorb", "save": "Änderungen speichern" }
Every {{placeholder}} and every _one/_other plural key is generated per target locale — 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
Generates the right _one / _other (and _few / _many where a locale needs them) from your singular source key — no manual CLDR lookups.
<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.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