New in CLI: Release tags merging, language aliases, iOS update and more!

If you are a developer who uses Localazy, you are already familiar with the CLI tool. It makes Localazy integration and localization automation smooth and allows you to manage your localizable files effectively.

The Release Tags feature is already helpful when you need to lock the current state of translation to prevent affecting your production and retaining the possibility to test localization during development and in the staging environment.

With merging, you can modify existing tags in many different ways:

  • merge missing translations from one tag to another
  • update translations in the tag using another tag as a source
  • overwrite keys including the source language
  • merge only selected languages and keys
  • add/remove selected languages and keys
  • publish/unpublish languages
  • apply changes only if the source language content matches
  • apply changes only for arrays with the same length
  • update language, project, and metadata information

And that’s awesome as you can, e.g., update only selected languages/keys in your production environment once you have tested them on staging.


🖊️ Language aliases and expansions

You can now easily change languages or expand them to more output files. For example, with a simple configuration shown below, locale zh-Hant-TW will be stored as zh-TW, zh-MO, zh-CN.

"langAliases": {
  "zh-Hant-TW": "zh-TW"
"langExpansions": {
  "zh-Hant-TW": ["zh-MO", "zh-CN"]

Aliases are handy, e.g., for Chinese locales on Android or to support both new and legacy locales. It also works for the format conversions feature allowing you to consider platform-specific locale differences easily.


🗝️ Including and excluding keys

You can now include and exclude keys based on exact match, prefix, suffix, or a regular expression when uploading files or converting them. It allows you to remove sensitive data from your string files or use format conversions to output files, e.g., for Android and iOS while eliminating platform-specific parts.

  "excludeKeys": [


🆕 More improvements

No need for write key and config file

We have reworked how configuration works, so it’s no longer necessary to have the configuration file and writeKey for commands that don’t really need it. The configuration file is now required only for upload and download commands. The writeKey is required for file manipulations, release tags actions, and upload.

Showing of upload stats

When uploading files in the synchronous mode, after the upload, additional details are provided - at the moment, it’s the number of added, updated, and deprecated phrases.

Downloading iOS data

We have added the option to download iOS data in a highly compressed binary format. This is an integral part of our upcoming iOS SDK. Stay tuned!

Newer version of node-fetch

We have bumped the version of the node-fetch dependency for the NPM version of our CLI as the previous version has known vulnerability.

Improved Docker images

Our Docker image is now based on ubuntu:20.04, and we have improved our build script to remove apt caches and other unnecessary files to reduce the size and remove the possible vulnerability.

Improved error reporting

  • When the upload fails because there are no files for uploading (e.g., invalid pattern), the CLI returns a non-zero exit code.
  • Improved error reporting for NPM version - avoid Kotlin/JS incompatibility in exceptions

Fixed bug with -s parameter

The simulate parameter wasn’t correctly applied for generating metadata files. The files were generated and stored even with the `-s’ parameter provided.

NPM version is minified now

NPM version of the CLI is now minified, has only half of the size, and is faster.

🗨️ Join the discussion!

Any thoughts and comments are welcome in the Localazy forum. Tell us what you think!

This is a companion discussion topic for the original entry at