Localization CLI
for Developers

Automate i18n workflows and sync localization files with one command.

No credit card required•14-day free trial•Tracking-free service
Using an AI coding agent?·
Terminal
# simplelocalize.yml (`simplelocalize init` creates a sample) uploadPath: ./src/locales/{lang}.json uploadFormat: single-language-json downloadPath: ./src/locales/{lang}.json downloadFormat: single-language-json $ export SIMPLELOCALIZE_API_KEY=<your project API key> # list the files to upload, without uploading $ simplelocalize upload --dryRun # push new keys, auto-translate, pull translations $ simplelocalize upload $ simplelocalize auto-translate $ simplelocalize download
GitHub ActionsGitLab CI/CDCircleCITravis CIAWS CodeBuildJSONYAMLXLIFFPO/POTARBAndroid StringsiOS StringsRESXGitHub ActionsGitLab CI/CDCircleCITravis CIAWS CodeBuildJSONYAMLXLIFFPO/POTARBAndroid StringsiOS StringsRESX

We power your product localization
From first commit to global launch

Used at IntersportUsed at IKEAUsed at InvisalignUsed at AmdocsUsed at OSRAMUsed at project44Used at nglUsed at IQAirUsed at walcuUsed at UNICEFUsed at AstraZenecaUsed at nabooUsed at SagemathUsed at Brite

What is SimpleLocalize CLI

Automate your i18n

SimpleLocalize CLI is a developer-first tool designed to bridge the gap between your local codebase and our cloud-based translation management system. It acts as a powerful automation layer that eliminates manual file handling, allowing you to push and pull translations directly from your terminal or CI/CD pipelines.

Install it the way that fits your project: as a native binary for macOS, Windows, and Linux with one command, as the @simplelocalize/cli npm package, or run the Java version with java -jar.

Localization CLI publishing translations to the cloud

How the localization CLI works

From local files to translated app in four steps

SimpleLocalize CLI bridges your local project and the cloud-based translation editor. Upload source strings, translate with your team or AI, and pull translations back into your build.

1

Install the CLI

Run a single shell command to install. Create a simplelocalize.yml config file with your project settings.

2

Upload source strings

Push your local translation files to the cloud editor. Supports JSON, YAML, XLIFF, and 25+ other formats.

3

Translate in the editor

Use the web-based translation editor, invite translators, or auto-translate with DeepL, Google, or OpenAI.

4

Download translations

Pull finished translations back into your repo. Use in CI/CD pipelines for fully automated localization.

For a step-by-step walkthrough, see the getting started guide.

Copy, paste, run

A config for your stack

Pick your framework, save the config as simplelocalize.yml in your project, and run simplelocalize upload and simplelocalize download.

simplelocalize.yml
uploadFormat: single-language-json uploadLanguageKey: en uploadPath: ./public/locales/en/{ns}.json downloadFormat: single-language-json downloadPath: ./public/locales/{lang}/{ns}.json
One JSON file per language and namespace, as used by i18next and next-i18next.next-i18next guide

What you can do with the CLI

Upload, download, auto-translate, and extract translation keys, all from your terminal.
Integrate into any CI/CD pipeline and keep your localization workflow fully automated.

Upload translations
from any format

Push local translation files to the cloud editor with a single command. Use {lang} and {ns} placeholders in the path to map files to languages and namespaces, and check what will be uploaded first with --dryRun. Upload from JSON, YAML, XLIFF, PO, ARB, and 25+ other formats.

Upload source translations
Terminal
# {lang} and {ns} map files to languages and namespaces $ simplelocalize upload \ --uploadPath ./locales/{ns}/{lang}.json \ --uploadFormat single-language-json \ --dryRun # --dryRun lists the files without uploading them

Download translations
in any format

Pull finished translations back into your project. Export to a different format than you uploaded: import JSON, export Android Strings. Download only the languages, namespaces or tags you need, and sort keys for clean diffs.

Download translated strings
Terminal
# uploaded as JSON, downloaded as Android Strings $ simplelocalize download \ --downloadFormat android-strings \ --downloadPath ./values-{lang}/strings.xml \ --downloadTags mobile

Auto-translate
from the terminal

Run simplelocalize auto-translate to fill in missing translations with the providers set up for each language in your project: DeepL, Google Translate, OpenAI, Anthropic, Gemini or OpenRouter. The command waits until the jobs finish, so the next download in your CI/CD pipeline gets every language up to date.

Auto-translate strings
Terminal
# fill in missing French and Polish translations $ simplelocalize auto-translate --languageKeys fr,pl # then bring them into your project $ simplelocalize download

File format support

Supports 25+
localization formats

Import and export JSON, YAML, XLIFF, PO/POT, ARB (Flutter), Android Strings, iOS Strings, Java Properties, PHP, RESX, CSV, Excel, and more. Import in one format, export in another. The CLI handles the conversion.

Use namespaces to manage translations for a React frontend (JSON), an Android app (Android Strings), and an iOS app (Strings) all in the same project.

JSON
YAML
XLIFF
PO / POT
ARB (Flutter)
Android Strings
iOS Strings
Java Properties
PHP
RESX
CSV
Excel

GitHub Actions

Translations in every push

The official SimpleLocalize GitHub Action runs any CLI command in your workflow. This one uploads new texts, auto-translates them and downloads the translations on every push to main.

Add your project API key as the SIMPLELOCALIZE_API_KEY secret, save the file as .github/workflows/translations.yml, and push.

GitHub Actions guide
.github/workflows/translations.yml
name: 'My project' on: push: branches: [ main ] env: cli-version: '2.12.0' jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Upload translations uses: simplelocalize/github-action-cli@v5 with: api-key: ${{ secrets.SIMPLELOCALIZE_API_KEY }} command: 'upload' cli-version: ${{ env.cli-version }} args: '--uploadPath ./translations/{lang}.json --uploadFormat single-language-json' - name: Auto-translate project uses: simplelocalize/github-action-cli@v5 with: api-key: ${{ secrets.SIMPLELOCALIZE_API_KEY }} command: 'auto-translate' cli-version: ${{ env.cli-version }} - name: Download translations uses: simplelocalize/github-action-cli@v5 with: api-key: ${{ secrets.SIMPLELOCALIZE_API_KEY }} command: 'download' cli-version: ${{ env.cli-version }} args: '--downloadPath ./translations/{lang}.json --downloadFormat single-language-json'

Built for CI/CD pipelines

Automate your entire localization workflow. Run the CLI in any CI/CD environment to upload source strings, auto-translate, and download finished translations as part of your build.

How to get started
with SimpleLocalize CLI

SimpleLocalize CLI is a powerful tool that helps you to automate the translation process in your project.
You can easily synchronize translation files between you local project and SimpleLocalize Translation Editor.

curl -s https://get.simplelocalize.io/2.12/install | bash
curl -s https://get.simplelocalize.io/2.12/install | bash

Install CLI

0
Execute a shell script to auto-install CLI or download a binary file. Create a YAML file with configuration for your project.
Get started with CLI

Upload translations

1
Execute upload command to push your local translation files to translation editor.
See how to upload translations
simplelocalize upload \ --apiKey YOU_API_KEY \ --uploadPath ./source_messages.json \ --uploadFormat single-language-json
simplelocalize upload \
        --apiKey YOU_API_KEY \
        --uploadPath ./source_messages.json \
        --uploadFormat single-language-json
translation editor for translation strings and localization files

Manage translations

2
Your translations will show up in a translation editor. In web client you start auto-translation, see translations suggestions, edit translations and more.
Go to Translation Editor

Download translations

3
Download translations in any format you want. You can use CLI command or download translations manually.
See how to download translations
simplelocalize download \ --apiKey YOUR_API_KEY \ --downloadFormat single-language-json \ --downloadPath ./messages_{lang}.json
simplelocalize download \
        --apiKey YOUR_API_KEY \
        --downloadFormat single-language-json \
        --downloadPath ./messages_{lang}.json
cdn.simplelocalize.io
{ "en": { "CREATE_ACCOUNT": "Create account", "SIGN_IN": "Sign in", "WELCOME_TO_THE_JUNGLE" : "Welcome to the jungle" }, "es": { "CREATE_ACCOUNT": "Crear cuenta", "SIGN_IN": "Iniciar", "WELCOME_TO_THE_JUNGLE": "Bienvenido a la jungla" } }
{
  "en": {
    "CREATE_ACCOUNT": "Create account",
    "SIGN_IN": "Sign in",
    "WELCOME_TO_THE_JUNGLE" : "Welcome to the jungle"
  },
  "es": {
    "CREATE_ACCOUNT": "Crear cuenta",
    "SIGN_IN": "Iniciar",
    "WELCOME_TO_THE_JUNGLE": "Bienvenido a la jungla"
  }
}

Host translations

4
Instead of downloading translations, you can host them on SimpleLocalize CDN. It's free and you can use it with any programming language.
Learn about Translation Hosting

Why use a localization CLI

Stop copying translation files by hand

Manually copying translation files between your repo and TMS leads to missed strings, stale translations, and broken builds. A localization CLI eliminates these risks.

Sync frequency
Copy files manually before each release → Automated sync on every push or build
Missing keys
Developers forget to add new keys to the TMS → Extract keys from source code with simplelocalize extract
Time to translate
Days of back-and-forth with translators → Auto-translate missing strings with one command
Format conversion
Convert between formats manually or with scripts → Import in one format, export in another
CI/CD integration
No automation, manual steps before deploy → Runs in GitHub Actions, GitLab CI/CD, CircleCI, or any pipeline
Consistency
Translations drift between repo and TMS → Single source of truth, always in sync

Why SimpleLocalize?

Most tools are overkill.
SimpleLocalize is fast, simple, and works out of the box.

Fast and customizable

SimpleLocalize is easy to get started with and focuses on the features that you and your team need the most. You can customize the editor to your needs choosing from a variety of options.

Flat pricing

No hidden costs! SimpleLocalize offers a simple and affordable plans for you and your projects. Within easy integration options and intuitive translation editor, it creates a wonderful selection.

Team members included

Every paid plan comes with a number of users you can add to your project. You don't need to worry about number of users as the price does not increase with every user.

Auto-translation included

Every paid plan comes with auto-translation characters that you receive every month. You can also use bring your own API keys and use them with SimpleLocalize in any plan (even free!).

Tools for Developers

SimpleLocalize gives developers the tools they need to automate and integrate localization into any workflow, such as CLI tool, VS Code extension, IntelliJ plugin, Figma integration, and more.

Personal support

From “how do I get started” to “I need XYZ” requests, when you need that extra helping hand, we’re here for you. We are here to make sure you get the most out of SimpleLocalize.

Start automating your i18n workflow

  • Install with a single command on macOS, Windows, or Linux
  • Upload and download 25+ translation file formats
  • Auto-translate with the providers set up in your project
  • Extract translation keys from source code
  • Integrate with GitHub Actions, GitLab CI/CD, or any pipeline
  • Keep all settings in one simplelocalize.yml file
Install the CLI
No credit card required∙5-minute setup
"The product
and support
are fantastic."
Laars Buur|CTO
"The support is
blazing fast,
thank you Jakub!"
Stefan|Developer
"Interface that
makes any dev
feel at home!"
Dario De Cianni|CTO
"Excellent app,
saves my time
and money"
Dmitry Melnik|Developer

What is a localization CLI?

A localization CLI (command-line interface) is a developer tool that automates the synchronization of translation files between a local codebase and a cloud-based translation management system (TMS). Instead of manually copying JSON, YAML, or XLIFF files back and forth, developers run a single command to upload source strings and download finished translations.

The SimpleLocalize CLI is an open-source i18n CLI tool that works on macOS (Apple Silicon and Intel), Windows, and Linux. It's available as a native binary installed with one command, as an npm package, and as a Java jar. It works in any CI/CD pipeline, with documented examples for GitHub Actions and AWS CodeBuild.

How the SimpleLocalize CLI fits into continuous localization

Continuous localization means keeping translations in sync with your code at all times — not as a one-time export before a release. The SimpleLocalize CLI enables this by running as part of your build or deploy process. On every push, the CLI uploads new or changed source strings to the TMS, the auto-translate command fills in missing translations, and download brings the latest translations into your repo.

This eliminates the manual handoff between developers and translators. Developers commit code with new strings, the CI pipeline uploads them, translators or AI complete the translations in the online translation editor, and the next build pulls everything back. The entire flow is automated and version-controlled.

Supported file formats

The CLI supports over 25 localization file formats including JSON (single-language and multi-language), YAML, XLIFF 1.2 and 2.0, PO/POT (Gettext), ARB (Flutter), Android Strings, iOS Strings, Stringsdict and String Catalogs (xcstrings), Java Properties, PHP arrays, RESX, Qt Linguist, CSV, and Excel. You can import in one format and export in another, for example, import from a single-language JSON used in your React app and export to Android Strings for your mobile team.

Translation key extraction from source code

The simplelocalize extract command scans your source code for translation keys and writes them to extraction.json, which you upload like any other file. It supports react-intl (FormattedMessage, defineMessages, intl.formatMessage), i18next (t() and i18nKey), Android, iOS and macOS, EJS, and HTML elements with a data-i18n-key attribute. Learn more in the extraction documentation.

Frequently asked questions

How do I install the SimpleLocalize CLI?

Run a single command to install the CLI binary. On macOS and Linux: curl -s https://get.simplelocalize.io/2.12/install | bash. On Windows, run the PowerShell installer from the docs, or install it with npm: npm install @simplelocalize/cli. See the getting started guide for details.

What file formats does the CLI support?

The CLI supports 25+ formats including JSON, YAML, XLIFF, PO/POT, ARB (Flutter), Android Strings, iOS Strings, Java Properties, PHP, RESX, CSV, Excel, and more. You can import in one format and export in another.

Can I use the CLI in CI/CD pipelines?

Yes. The CLI is a native binary installed with one command, so it fits GitHub Actions (with the official simplelocalize/github-action-cli action), GitLab CI/CD, CircleCI, AWS CodeBuild, or any other CI/CD tool. Use it to upload source strings and download translations as part of your build.

Does the CLI support auto-translation?

Yes. The auto-translate command starts auto-translation with the providers set up for each language in your project (DeepL, Google Translate, OpenAI, Anthropic, Gemini or OpenRouter) and waits until it finishes. This is useful in CI/CD pipelines to fill in missing translations before downloading.

How does the CLI relate to the SimpleLocalize TMS?

The CLI is part of the SimpleLocalize Translation Management System. It acts as the bridge between your local code and the cloud-based translation editor. Upload strings via CLI, manage translations in the editor, and pull them back with the CLI. It also works with the REST API and CDN hosting.

Is the CLI open-source?

Yes. The SimpleLocalize CLI is open source under the MIT license and available on GitHub. You can inspect the code, contribute, or build from source.

Does the CLI work with customer-specific translations?

Yes. Use the --downloadCustomerId flag to download translations for a specific tenant or customer context (available on the Business plan). This is useful for white-label and multi-tenant applications where each client needs customized text.