Translate res/values/strings.xml, then read every line back before you ship
Upload res/values/strings.xml — 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. %1$s/%2$d positional specifiers and inline <b>/<i> markup stay intact.
Upload strings.xml
Drop res/values/strings.xml in, or run kaeris translate res/values/strings.xml --langs de,ja,uk from the CLI.
Pick target locales
46 languages, named to match your values-XX/ qualifier folders directly (de, ja, zh-rCN…).
Ship
Each file downloads pre-named values-de/strings.xml — drop it into res/ and rebuild.
Before → after
<resources> <string name="welcome">Welcome back, %1$s!</string> <string name="items_left">%2$d items left in stock</string> <string name="tap_continue">Tap <b>here</b> to continue</string> </resources>
<!-- Generated by KAERIS i18n Tool — de --> <resources> <string name="welcome">Willkommen zurück, %1$s!</string> <string name="items_left">Noch %2$d Artikel auf Lager</string> <string name="tap_continue">Tippe <b>hier</b>, um fortzufahren</string> </resources>
KAERIS translates <string> resources — the bulk of an app's UI text — plus <plurals> quantity blocks and <string-array> lists, re-escaping &/</' for valid XML on the way out. Plural and array <item> values are translated in place and their parent element is rebuilt; the plural forms present in your source are translated as-is — if a target language needs an extra CLDR category (Russian few/many, Arabic), add that <item quantity="…"> slot.
Positional specifiers preserved
%1$s, %2$d and friends are never dropped, reordered or mistranslated — critical since Android indexes them by position.
Inline markup-safe
<b>/<i> tags inside a <string> value pass through as literal text, exactly like Android's own resource compiler expects.
values-<lang>/ output
Every download is pre-named values-de/strings.xml, values-ja/strings.xml — no renaming before it lands in res/.
One CLI command
kaeris translate res/values/strings.xml --langs de,ja,uk --out res — no config file required to get started.
%1$s/%2$d is never dropped, reordered or mistranslated.Beyond strings.xml, 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 your Android app in every market
46 languages, positional-specifier-safe, values-<lang>/ ready. Free to start, no account required.
$ pip install kaeris $ kaeris translate res/values/strings.xml --langs de,ja,uk