crowdin-cli-tool
Crowdin CLI optimized for work with branches
Requirements
- Node 12+
CLI description
- source - root language setuped in crowdin
- targetLanguage - all languages setuped in crowdin for project
Example workflow
- Add keys and translations in source file
- Upload only added in new crowdin branch
crowdin push-diff -b new-branch
- Wait for translators work
- Download and merge it
crowdin pull-diff -b new-branch
Installation
npm i @cadolabs/crowdin-cli
or yarn add @cadolabs/crowdin-cli
Can be installed global (run as crowdin
) or in project dependencies (run npx crowdin
or yarn crowdin
from project) (Recomended).
For check installation run
crowdin -v
Setup
Write token in .crowdin
file.
File will be created in command run directory
crowin init --token <crowdin_token>
Where <crowdin_token>
- api token generated in crowdin profile with access all
checkbox
Add .crowdin in .gitignore
commands
init
- Save token in .crowdin
file
lint
- Check translations syntax
push-diff
- Upload translations diff (Throw error in master branch)
pull-diff
- Download translations diff (Throw error in master branch)
upload-source
- Upload only source file
upload-translations
- DEPRECATED. Upload only translations (Throw error if source not uploaded).
upload
or push
- UDEPRECATED. pload source and then translations (runs upload-source
and upload-translations
)
download
or pull
- DDEPRECATED. ownload all translations
task
- Create task in crowdin
clean
- Remove branch in crowdin
sync
- DEPRECATED. Upload source, translations, and download all from crowdin
Params
-v
or --version
- Show CLI version
-h
or --help
- Show help
-b
or --branch
- Crowdin branch
-c
or --config
- Path to config file
-l
or --languages
- Comma separetd language list (all by default). Ex. crowdin upload -l "ru, en, fr"
--silent
- Show logs line by line, without animations
--token
- Generated in crowdin api-token
--organization
- Organization name in crowdin enterprise
--fix
- Fix errors with lint
command. ATTENTION! This delete crowdin branch too!
--diff-with
- With push
or push-diff
create diff with coomit/tag/etc.
--project-id
- Crowdin project ID
--base-dir
- Look at 'Config'
--path
- Look at 'Config'
--use-git-branch-as-default
- Look at 'Config'
--import-eq-suggestions
- Defines whether to add translation if it's the same as the source string
--auto-approve-imported
- Mark uploaded translations as approved
--skip-untranslated-strings
- Defines whether to export only translated strings
--skip-format-step
- Deprecated. Skip format step after download translations
--contributors
- Comma separated user id list to assign new tasks
Config
Some params can be represent in config.
Place file .crowdin-config.json
in project directory.
.crowdin-config.json
file contents:
{
"token": string, // api token generated in crowdin profile. Strongly non recommend to place it project config
"organization": string, // Organization name in crowdin enterprise
"projectId": string, // Crowdin project ID
"baseDir": string, // Path to translations/directories to upload in crowdin.
// Relative to config file or absolute
// Children directory structure will be saved in crowdin.
"path": string, // Path to files relative to 'baseDir'
// Glob syntax allowed
// File name require on of theese variables: %{id/name/editorCode/twoLettersCode/threeLettersCode/locale/androidCode/osxLocale}!
// Example: './config/**/locale_prefex.%{twoLettersCode}.yml'
// For files 'config/dir1/locale_prefex.en.yml' and 'config/dir1/locale_prefex.ru.yml'
"useGitBranchAsDefault": boolean, // Use git branch by default
// Blocks uploading to master branch
// Ignored with param '-b' or '--branch
"importEqSuggestions": boolean, // Defines whether to add translation if it's the same as the source string
"autoApproveImported": boolean, // Mark uploaded translations as approved
"skipUntranslatedStrings": boolean, // Defines whether to export only translated strings
"contributors": string[], // Comma separated user id list to assign new tasks
"translateHidden": boolean, // Allow translations upload to hidden source strings
"skipAssignedStrings": boolean, // Skip strings already included in other tasks
"exportWithMinApprovalsCount": number, // Defines whether to export only approved strings
"skipFormatStep": boolean, // Deprecated. Skip format step after download translations
}
Links
Contributing
Contributing Rules | Code of Conduct
License
Released under MIT License.