Android
Android · strings.xml · 46 languages · Free

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.

Translate your strings.xml $ pip install kaeris
%1$s / %2$d positional-safe Inline <b>/<i> markup preserved values-<lang>/ output, ready to copy in Real strings.xml, not a JSON wrapper No account needed
Localize your Android app in 3 steps
1

Upload strings.xml

Drop res/values/strings.xml in, or run kaeris translate res/values/strings.xml --langs de,ja,uk from the CLI.

2

Pick target locales

46 languages, named to match your values-XX/ qualifier folders directly (de, ja, zh-rCN…).

3

Ship

Each file downloads pre-named values-de/strings.xml — drop it into res/ and rebuild.

Real Android XML, escaping and all

Before → after

res/values/strings.xml
<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>
res/values-de/strings.xml
<!-- 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.

Built for Android

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.

Why KAERIS
Placeholder-safe%1$s/%2$d is never dropped, reordered or mistranslated.
Format-native — real Android XML out, escaped correctly, not a flattened JSON dump.
Verify-meaning QA — every string is back-translated to catch meaning drift before you ship.
No account needed — drag & drop free up to 10,000 characters, or use the CLI/API.
Honest flat pricing — no per-seat, no per-language multiplier. See plans

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
Translate your strings.xml now