Translate your iOS .strings, with %@ and %d exactly where they belong
Drop in your Localizable.strings. KAERIS translates all 46 languages, keeps Apple format specifiers like %@, %d and positional %1$@ intact, preserves escaping, and reads each line back so meaning drift never ships to the App Store.
Format specifiers that stay valid
Reorder or drop a %@ and your app crashes at runtime. KAERIS preserves every specifier — including positional %1$@ %2$d — and read-back flags any that go missing.
Escaping that survives
Quotes, newlines and Unicode escapes are kept correct so the file compiles in Xcode without a genstrings round-trip.
Meaning read back
Each translation is read back into your language and checked — the App Store review won't tell you a button now says the opposite thing, but KAERIS will.
Before → after
/* welcome banner */ "welcome" = "Welcome back, %@!"; "cart" = "%d items in your cart";
/* welcome banner */ "welcome" = "%@さん、おかえりなさい!"; "cart" = "カート内 %d 点";
Drop your .strings file
Upload it as-is, or run pip install kaeris and translate from your terminal or CI.
Pick languages & verify
Choose from 46 languages. Leave read-back on to catch meaning drift, lost placeholders and overflow.
Ship the .strings back
Download one .strings per language, structure intact — or let the GitHub Action open a PR when new keys land.
Free, no account. Read every line back in your own language.
Drop your .strings file →See the read-back benchmark · CLI & GitHub Action