Translate Your Expo App with AI in Minutes
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.
Why teams automate this
Two translation surfaces to maintain
Expo apps need both in-app strings (locales/*.json) and native store metadata (locales/native/*.json). Keeping them in sync manually doubles the work.
Manual copy-paste before every release
Adding a language means duplicating JSON files, translating by hand, and hoping nothing breaks in expo-localization setup.
No CI pipeline for translations
Without automation, translated files drift from source strings and block releases when new keys land in English.
How it works
Initialize with the Expo preset
From your Expo project root, run the official preset. Babely installs i18n-js and expo-localization, creates the locale folder structure, and configures app.json.
npx @babely/cli@latest init --preset expoConfigure target languages
Set your source locale and targets in babely.json. Babely watches both app strings and native metadata paths.
{
"locale": {
"source": "en",
"targets": ["es", "sv"]
},
"files": {
"json": {
"include": [
"locales/native/[locale].json",
"locales/[locale].json"
]
}
}
}Translate changed strings
Run translate locally or in CI. Babely detects new or modified keys via Git diff and generates AI translations only where needed.
npx @babely/cli@latest translateWire into GitHub Actions
Add the Babely GitHub Action so every pull request keeps translations up to date before you ship to TestFlight or the Play Store.
# See docs/github-actions for the full workflowExample babely.json
Copy this config into your project root and adjust targets to match your locale folders.
{
"locale": {
"source": "en",
"targets": ["es", "sv"]
},
"files": {
"json": {
"include": [
"locales/native/[locale].json",
"locales/[locale].json"
]
}
}
}Why Babely for Expo
Official Expo preset
One command sets up i18n-js, expo-localization, locale folders, and app.json — the fastest path from zero to multilingual.
App + store metadata
Translate UI copy and native App Store / Play Store strings in a single babely.json config.
Git-aware translations
Only changed keys are sent for translation, keeping costs low and diffs reviewable in pull requests.
Developer-friendly pricing
Starts at $6.99/month — a fraction of enterprise localization platforms built for marketing teams, not mobile devs.
Related documentation
Other use cases
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.
react-i18next
Babely translates your locales/[locale].json files while preserving {{interpolation}}, nested namespaces, and plural keys — the most widely used React i18n library.
Android
Babely translates your strings.xml resources while preserving plurals, string arrays, and format specifiers — the standard Android localization workflow, automated.
Start translating your Expo 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 expo-localization?
Yes. The Expo preset configures expo-localization and i18n-js out of the box. Babely manages the JSON translation files your app already reads at runtime.
Can I translate App Store and Play Store metadata?
Yes. Include locales/native/[locale].json in your babely.json so store listing strings are translated alongside in-app copy.
Do I need a translation management platform?
No. Babely is CLI-first: translations live in your repo as JSON files, fit your existing Git workflow, and sync via GitHub Actions when you choose.
Will OTA updates pick up new translations?
Yes. Translated JSON files are bundled like any other asset. Run Babely before your EAS build or in CI so every release ships fresh locale files.