Manage .arb translation files, auto-translate with AI,
and sync with your Flutter project via CLI.


Flutter localization starts simple: a few .arb files, flutter gen-l10n, and AppLocalizations. But as your app grows to 10+ languages, keeping .arb files in sync across branches becomes painful. Translators editing JSON by hand introduce broken placeholders and merge conflicts.
SimpleLocalize acts as the single source of truth for your translations. Upload .arb files via CLI, translate with AI or your team, and download clean .arb files ready for flutter gen-l10n. No manual JSON editing, no merge conflicts. Learn how to manage ARB translation files effectively.
From .arb files to AppLocalizations, SimpleLocalize fits into every step of your Flutter i18n pipeline.
A CLI-first workflow that keeps your Flutter translations in sync with every release.
Run simplelocalize upload to push your source app_en.arb file. Keys, values, descriptions, and metadata are preserved.
Auto-translate with DeepL or OpenAI, then review in the online editor. Placeholders and plural forms are validated automatically.
Run simplelocalize download to pull translated .arb files. Then run flutter gen-l10n to generate type-safe AppLocalizations.
For a step-by-step walkthrough, see the getting started guide.
Start a free project and upload your first .arb file in minutes.
Start for freeCLI pipeline
Upload your source locale, translate in the cloud, and pull back clean .arb files ready for flutter gen-l10n.
Add these commands to your CI/CD pipeline for fully automated localization with every build. Read the ARB file format documentation or get started with the CLI.
Building a cross-platform app with native components? Manage all translations in a single SimpleLocalize project and export each platform's format separately.
Upload and download .arb files with translation descriptions. Works with flutter gen-l10n and the Intl package.
Export .strings and .stringsdict files for native iOS components. Same keys, same project.
Export Android XML string resources for native Android modules. One source, multiple output formats.

Why SimpleLocalize
Developer-first tooling that fits the Flutter localization workflow.
Guides and tutorials for Flutter localization with SimpleLocalize.

The engineering decisions you make during internationalization directly shape what localization will cost you. Here is what to watch out for, with real examples.

Hardcoded date formats and number separators are among the most common i18n mistakes. This guide covers locale-aware formatting for dates, times, time zones, numbers, and currencies, with JavaScript examples and real-world pitfalls.

Retrofitting internationalization into an existing codebase is one of the most expensive engineering decisions a product team can delay. Here is exactly why, with real examples of what breaks and what it costs to fix.

How SaaS teams approach internationalization: ownership, architecture decisions, team workflows, tooling, and how to ship multilingual features without slowing down product velocity.

Unicode characters that are invisible, look identical, or behave unexpectedly across languages. A practical guide to the encoding issues that break localized apps in ways that are very hard to debug.

Translated text is almost always longer than English. Learn how text expansion breaks UI layouts, how much expansion to expect per language, and the CSS and design patterns that prevent it.
SimpleLocalize natively supports the ARB file format. When you upload an .arb file, all keys, values, @-prefixed descriptions, and ICU metadata are parsed and preserved. When you download, you get clean .arb files that work directly with flutter gen-l10n and the Intl package. Placeholders and plural forms are validated across all languages to catch errors early.
The typical workflow is: run simplelocalize upload to push your source app_en.arb file, translate in SimpleLocalize (manually or with AI), then run simplelocalize download to pull translated .arb files for all locales. Finally, run flutter gen-l10n to regenerate your type-safe AppLocalizations class. Add these commands to your CI/CD pipeline for fully automated localization with every build.
Yes. SimpleLocalize uses a universal format internally, so one project can hold all your translation keys and export them as .arb (Flutter), .strings/.stringsdict (iOS), or Android XML. This is ideal for teams building cross-platform apps with native components. You translate once and export to every format your app needs.
The SimpleLocalize CLI acts as the single source of truth for translations. Instead of editing .arb files by hand in different branches, every branch pulls the latest translations from SimpleLocalize. This eliminates merge conflicts in .arb files and ensures every build uses consistent, up-to-date translations. You can integrate the upload and download commands into CI/CD pipelines so syncing happens automatically.
Yes. SimpleLocalize downloads .arb files into the directory specified in your l10n.yaml configuration (typically lib/l10n/). After downloading, you run flutter gen-l10n as usual to generate the AppLocalizations class. No changes to your Flutter project configuration are needed.
SimpleLocalize supports ICU message format including pluralization, gender rules, and variable interpolation. Placeholder validation catches broken {count} or missing plural forms across all target languages. You can also use auto-translation with DeepL, Google Translate, or OpenAI, set up no-code automations, and deliver translations via CDN for over-the-air updates. See our developer localization platform page for the full feature set.