Convert Between Localization Formats with the LocaleKit CLI

Moving between platforms means converting localization files. iOS uses .xcstrings, Android uses strings.xml, Flutter uses .arb, and web frameworks use .json. The LocaleKit CLI converts between all of these formats in one command, preserving placeholders and plural rules across the transformation.
Docs Reference
Full CLI documentation is available at docs.localekit.app
Supported formats
LocaleKit reads and writes all major localization formats:
- Xcode: .xcstrings, .strings, .stringsdict, .xliff
- Android: strings.xml, .properties
- Flutter: .arb (Application Resource Bundle)
- Web: .json (flat, nested, i18next, react-intl)
Convert: transform one file to another format
The localekit convert command takes an input file and writes it in a new format.
# Convert Xcode String Catalog to Flutter ARB
$ localekit convert ./Localizable.xcstrings --to arb --output ./lib/l10n/
Converted 42 entries to ARB format
Output: ./lib/l10n/app_en.arb
# Convert Android XML to JSON for React Native
$ localekit convert ./res/values/strings.xml --to json
Converted 38 entries to JSON format
Output: ./res/values/strings.jsonExport: extract specific languages from a multi-language file
The localekit export command lets you extract specific languages from a file that contains multiple locales (like .xcstrings).
# Export German and French from an Xcode String Catalog
$ localekit export ./Localizable.xcstrings \
--format strings \
--languages de-DE,fr-FR \
--output ./exported/
Exported 2 languages:
./exported/de-DE.lproj/Localizable.strings
./exported/fr-FR.lproj/Localizable.stringsFormat conversion examples
iOS to Flutter
$ localekit convert \
./Localizable.xcstrings \
--to arbConverts Xcode String Catalog to Flutter ARB files. Preserves plurals and placeholders.
Android to iOS
$ localekit convert \
./res/values/strings.xml \
--to xcstringsConverts Android strings.xml to Xcode String Catalog. Maps Android format specifiers to iOS equivalents.
iOS to JSON
$ localekit export \
./Localizable.xcstrings \
--format jsonExports to flat JSON for web or React Native. Each language gets its own .json file.
Format FAQ
Does conversion preserve plurals?
Yes. LocaleKit maps plural categories between formats. For example, Android's <plurals> converts to .stringsdict on iOS and ICU syntax in ARB.
What about string interpolation placeholders?
LocaleKit converts placeholders between formats: %@ (iOS) to %1\$s (Android) to {name} (ARB/JSON). Named placeholders are preserved where the target format supports them.
Can I convert an entire directory?
For convert, you pass a single file. For export, you can pass a directory and LocaleKit will find all localization files. Use --languages to filter specific locales.
Stop managing translation files manually
LocaleKit detects, translates, and syncs all your localization files — iOS, Android, Flutter, and more. Everything runs locally on your machine.
Privacy-first. No cloud required.