Skip to main content

Crowdin CLI 4.0

ยท 6 min read
Andrii Bodnar
Yevheniy Oliynyk

Today we are happy to announce Crowdin CLI 4.0! ๐Ÿฅณ

social-card image

It has been almost five years since the release of Crowdin CLI 3.0. During this time, we have received extensive feedback from our users and worked diligently to improve the tool. As a result, we've made many changes and improvements.

The new version of Crowdin CLI introduces a lot of new features and enhancements. We've added new commands, updated existing ones, and significantly improved the overall user experience.

This post is intended to highlight the most important changes and help you migrate from CLI 3.x with ease. It is not a comprehensive guide, but rather a list of the most important changes.

Requirementsโ€‹

As part of this release, the minimum Java version has been updated to 17 LTS.

New commandsโ€‹

New command optionsโ€‹

Command
Option/Description
init--quiet option to skip interactive input prompts
string add--branch option to specify the branch to which the new string should be added
string list--directory and --scope options to filter strings by directory and scope
pre-translate--file option to specify the file(s) in the Crowdin project to pre-translate
pre-translateai method and --ai-prompt parameter to allow pre-translation via AI
file upload--type and --parser-version options to specify the file type and parser version respectively
file upload--context option to provide a context about the whole file
file list--verbose option to show more information about the files
language list--all option to list all languages for the current account

Command updatesโ€‹

Pre-translateโ€‹

We've made significant changes to the pre-translate command. The command now requires the --file parameter for file-based projects. The --file parameter determines which files to pre-translate. Previously, the command relied on the current configuration, and it was only possible to pre-translate the files that matched the configuration patterns. Now you can specify any file(s) in the Crowdin project to pre-translate.

Tip: Use the file list command to get the file paths in the current project.

Stringโ€‹

  • The string edit command changes:
    • Moved id to a parameter instead of a command option.
    • Now --identifier is used as an option to edit and not to find the needed string.
  • The string delete command changes:
    • Moved id to a parameter instead of a command option. Now only 1 string can be removed at a time.
    • Removed the --text and --identifier options. Only ID is used as a string identifier.
  • The comment command has been replaced with the comment add command.
-crowdin string add Download --file main/src/strings.xml --identifier "download"
+crowdin string add Download --file src/strings.xml --branch main --identifier "download"

-crowdin string edit --id 12 --text new
+crowdin string edit 12 --text new

-crowdin string delete --id 12
+crowdin string delete 12

Listโ€‹

  • The list branches command has been replaced with the branch list command.
  • The list sources command has been replaced with the config sources command.
  • The list translations command has been replaced with the config translations command.
  • The list project command has been replaced with the file list command.
  • The list languages command has been replaced with the language list command.
-crowdin list branches
+crowdin branch list

-crowdin list project
+crowdin file list

-crowdin list sources
+crowdin config sources

-crowdin list translations
+crowdin config translations

-crowdin list languages
+crowdin language list
info

The default language code for the language list command output has been changed from two_letters_code to id.

This change makes it more convenient, as the id is used consistently for the --language parameter across various commands.

Glossaryโ€‹

The --name option has been removed from the upload and download commands, and the <id> parameter is now used instead:

-crowdin glossary download --id <id>
-crowdin glossary download --name <name>
+crowdin glossary download <id>

-crowdin glossary upload <file> --name <name>
+crowdin glossary upload <file> --id <id>

Tip: Use the glossary list command to get the id.

TMโ€‹

The --name option has been removed from upload and download commands, and the <id> parameter is now used instead:

-crowdin tm download --id <id>
-crowdin tm download --name <name>
+crowdin tm download <id>

-crowdin tm upload <file> --name <name>
+crowdin tm upload <file> --id <id>

Tip: Use the tm list command to get the id.

Screenshotโ€‹

The --name option has been replaced with the <id> parameter for the delete command because there can be multiple screenshots with the same name:

-crowdin screenshot delete <name>
+crowdin screenshot delete <id>

Tip: Use the screenshot list command to get the id.

Initโ€‹

The generate alias has been removed:

-crowdin generate
+crowdin init

Lintโ€‹

The lint command has been replaced with the config lint command:

- crowdin lint
+ crowdin config lint

Bundleโ€‹

The download bundle command has been replaced with the bundle download command.

Exit codesโ€‹

This release also includes more exit codes (previously we only had 0 for success and 1 for failure).

See the official documentation for more details.

Environment variablesโ€‹

Previously, it was necessary to specify the environment variables in the configuration file in order to load the configuration from them.

Now the CLI can automatically pick up the environment variables if they are set in the shell. The supported environment variables are:

  • CROWDIN_PROJECT_ID
  • CROWDIN_PERSONAL_TOKEN
  • CROWDIN_BASE_PATH
  • CROWDIN_BASE_URL

Thanks to this change, it's now easier to work with the CLI in CI/CD environments, especially in the no-configuration-file use case.

Visit the Configuration File article for more details.

Deprecations and backward compatibilityโ€‹

Download targetsโ€‹

The deprecated download targets command has been removed. The configuration file no longer supports the targets section as well. Use Bundles instead.

Task commandโ€‹

Removed backward compatibility for file numeric id in the task add command. Now only file path is supported:

-crowdin task add --file 12 --language uk
+crowdin task add --file src/strings.xml --language uk

Command output updatesโ€‹

In this release, we've also reviewed and improved the output of many commands to make them more informative and user-friendly. Changes include list, add, upload, download, delete, and other commands for various resources.

tip

Need help or have questions? Let's discuss it!