Translate iOS XCStrings with AI
Babely translates your Localizable.xcstrings catalogs while preserving pluralization rules, string variations, and developer comments — Xcode's modern localization format, automated.
Why teams automate this
String catalogs grow with every feature
XCStrings catalogs accumulate keys across SwiftUI views and UIKit screens. Adding a language manually in Xcode does not scale for fast-moving teams.
Pluralization and variations are fragile
XCStrings supports plural rules and device variations. Generic translation tools break the JSON structure inside the catalog file.
No CI workflow for string catalogs
When English strings change, target locale entries in the catalog lag until someone updates them manually before App Store submission.
How it works
Configure Babely for XCStrings
Point Babely at your .xcstrings catalog file. Set source and target locales in babely.json.
{
"locale": {
"source": "en",
"targets": ["de", "fr", "es"]
},
"files": {
"xcode-xcstrings": {
"include": ["MyApp/Localizable.xcstrings"]
}
}
}Translate changed strings
Run translate after adding or editing keys in Xcode. Babely updates target locale entries in the catalog.
npx @babely/cli@latest translateReview catalog diffs in Git
Check that pluralization rules, variations, and developer comments stayed intact in the XCStrings JSON structure.
Ship with CI
Run Babely in GitHub Actions before archiving your iOS build so every locale is current at App Store submission.
# See docs/ci for pipeline setupExample babely.json
Copy this config into your project root and adjust targets to match your locale folders.
{
"locale": {
"source": "en",
"targets": ["de", "fr"]
},
"files": {
"xcode-xcstrings": {
"include": ["Example/Localizable.xcstrings"]
}
}
}Why Babely for iOS XCStrings
XCStrings-native workflow
Babely works directly on .xcstrings catalogs — no export to XLIFF or third-party TMS required.
Pluralization preserved
Plural rules and string variations in the catalog stay valid for each target language.
Developer comments kept
Context comments you add in Xcode remain intact to help reviewers understand each string.
Git-friendly diffs
Catalog changes are reviewable in pull requests alongside your Swift code changes.
Related documentation
Other use cases
Expo
Babely is the only translation CLI with an official Expo preset. Automate app strings, native App Store metadata, and CI workflows — without a heavyweight TMS.
Android
Babely translates your strings.xml resources while preserving plurals, string arrays, and format specifiers — the standard Android localization workflow, automated.
next-intl
Babely translates your messages/[locale].json files while preserving ICU plurals, select rules, rich text tags, and nested keys — the same stack we use on babely.dev.
Start translating your iOS XCStrings project
Set up Babely in minutes, automate translations in CI, and ship multilingual products without enterprise localization overhead.
Frequently Asked Questions
Does Babely work with Xcode 15+ string catalogs?
Yes. Babely supports the XCStrings format used by modern Xcode string catalogs for iOS and macOS apps.
Can I translate multiple .xcstrings files?
Yes. Add multiple include paths or a glob pattern in babely.json to cover all catalogs in your project.
Are pluralization rules handled per locale?
Yes. Babely preserves the catalog structure so each target locale gets valid plural forms for its language rules.
Does Babely replace Xcode localization?
No. Babely automates catalog translation in your repo. Xcode still manages exports, previews, and App Store localization settings.