Convert Between Localization Formats with the LocaleKit CLI

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.

Terminalbash
# 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.json

Export: 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).

Terminalbash
# 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.strings

Format conversion examples

iOS to Flutter

$ localekit convert \
./Localizable.xcstrings \
--to arb

Converts Xcode String Catalog to Flutter ARB files. Preserves plurals and placeholders.

Android to iOS

$ localekit convert \
./res/values/strings.xml \
--to xcstrings

Converts Android strings.xml to Xcode String Catalog. Maps Android format specifiers to iOS equivalents.

iOS to JSON

$ localekit export \
./Localizable.xcstrings \
--format json

Exports 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.