
Translate .strings Files Without Breaking Your App
Keys untouched. Format specifiers preserved. Plural rules correct. Your Localizable.strings translated in seconds, not days.
Apple .strings Translation Is Tedious and Error-Prone
You export your Localizable.strings, hand it to a translator or paste it into a generic tool, get back corrupted format specifiers, broken escape sequences, and mangled plural rules. Then you spend hours debugging why your app crashes on launch in Japanese.
Format specifiers like %@, %d, and %1$@ get translated, reordered, or removed by generic tools
Escape sequences (\n, \", \t) get corrupted or double-escaped, breaking string parsing
Stringsdict plural rules need language-specific CLDR categories that most tools ignore entirely
Translator comments and context hints are stripped, leading to wrong translations
/* Localizable.strings (English) */
"welcome_title" = "Welcome to MyApp";
"login_button" = "Sign In";
"greeting" = "Hello, %@!";
"items_count" = "%d items in your cart";
"transfer" = "Send %1$@ to %2$@";/* Localizable.strings (Japanese) */
"welcome_title" = "MyAppへようこそ";
"login_button" = "サインイン";
"greeting" = "%@さん、こんにちは!";
"items_count" = "カートに%d個のアイテム";
"transfer" = "%2$@に%1$@を送信";What i18n Agent Preserves
Format Specifiers
Positional (%1$@) and type-specific (%d, %f, %@) specifiers are detected and left untouched
Escape Sequences
Newlines (\n), tabs (\t), quotes (\"), and Unicode escapes are preserved correctly
Stringsdict Plurals
CLDR plural categories (zero, one, two, few, many, other) are set correctly per target language
Comments & Context
Translator comments and developer notes are preserved to maintain translation context
Works Across Apple Platforms
Open-Source Tools for iOS Localization
i18n Agent for Xcode
A macOS menu bar app that adds one-click localization to Xcode. It auto-detects your active project, translates your .strings, .xcstrings, and .stringsdict files, and writes them to the correct .lproj directories. Push existing translations as translation memory for consistent results across your project.
LocaleChain
iOS has a known gap: when a user's regional locale (like pt-BR) is missing, the system skips straight to English instead of trying a related locale (like pt-PT). LocaleChain is a Swift package that fixes this with configurable fallback chains. One line of setup, zero changes to your existing code.
How It Works

No manual copy-paste. No string extraction. Just translated files.
Try i18n Agent Now
Drop your translation file here
JSON, YAML, PO, XML, CSV, Markdown, Properties
or click to browse
Target languages
Frequently Asked Questions
Enterprise team?
Still stuck on a TMS contract? Let's talk about migrating.