
Lokalise CLI v2
CLILokalise's official CLI (lokalise2) covering the Lokalise API v2: upload and download language files and manage keys, translations, screenshots, translation tasks and contributors. Needs a Lokalise account (paid, 14-day free trial) and an API token passed via --token.
Lokalise CLI v2
Getting started
Lokalise CLI v2 allows you to manipulate any object or data in your Lokalise workspace, which includes files, projects, keys, translations, comments, contributors, teams and more.
Whats new in v2?
This version of CLI tool has been completely rebuilt from scratch and is not compatible with the v1 CLI command syntax. Instead of being just an upload/download tool this release supports all Lokalise API v2 endpoints.
Installation
Get the binaries for your platform, unarchive and put into any executable folder. All set!
MacOS
Install using Homebrew:
brew tap lokalise/cli-2
brew install lokalise2
Direct download:
Linux
Get the binaries (including for Raspberry Pi) using our installer script:
curl -sfL https://raw.githubusercontent.com/lokalise/lokalise-cli-2-go/master/install.sh | sh
Direct download:
FreeBSD
Windows
Install using scoop:
scoop bucket add extras
scoop install lokalise2
Direct download:
Docker
Docker image could be downloaded from the following registries:
Tokens
All endpoints require the --token parameter. You can generate your API token in Personal profile. Note, the token is personal and mimics your access level on team and project level. If you require a user-independent API token, create a separate user in your team (e.g. API user), set proper access rights and use this user's token.
Passing the flags
Boolean
All boolean flags must be passed via the = sign, i.e. --original-filenames=false.
Strings
Flags of type strings should be comma-delimited, i.e. --include-tags=one,two.
JSON objects
Some flags require a JSON-encoded object passed as string, i.e. --languages='[{"lang_iso":"en","custom_iso":"en-us"},{"lang_iso":"en_GB","custom_iso":"en-gb"}]'. There is an online tool to help you with the escaping.
Usage
Run lokalise2 --help from the terminal to see the list of commands and subcommands. Run lokalise2 command subcommand --help to see the help page.
Commands
- lokalise2 branch - Manage branches
- lokalise2 comment - Manage key comments
- lokalise2 contributor - Manage project contributors
- lokalise2 file - Upload and download files
- lokalise2 key - Manage keys
- lokalise2 language - Manage languages
- lokalise2 order - Manage orders
- lokalise2 payment-card - Manage payment cards
- lokalise2 project - Manage projects
- lokalise2 queued-process - Manage queued processes
- lokalise2 screenshot - Manage screenshots
- lokalise2 snapshot - Manage snapshots
- lokalise2 task - Manage tasks
- lokalise2 team - List teams
- lokalise2 team-user - Manage team users
- lokalise2 team-user-group - Manage team user groups
- lokalise2 translation - Manage translations
- lokalise2 translation-provider - List translation providers
- lokalise2 translation-status - Manage custom translation statuses
- lokalise2 webhook - Manage webhooks
Examples
Download files from Lokalise
lokalise2 \
--token <token> \
--project-id <project_id> \
file download \
--format json \
--unzip-to ./locales
Upload a file to Lokalise
lokalise2 \
--token <token> \
--project-id <project_id> \
file upload \
--file /tmp/en.json \
--lang-iso en
Branches
If you are using project branching feature in Lokalise, simply add branch name separated by semicolon to the project ID in any command to access the branch, i.e. 3002780358964f9bab5a92.87762498:feature/new-release.
Config file
Optionally, you may rename included config-example.yml to config.yml and set various CLI tool parameters like token or timeouts. You can specify a config file location using --config parameter.
Rate limits
Access to all endpoints is limited to 6 requests per second from 14 September, 2021. This limit is applied per API token and per IP address. If you exceed the limit, a 429 HTTP status code will be returned and the corresponding exception will be raised that you should handle properly. To handle such errors, we recommend an exponential backoff mechanism with a limited number of retries.
Only one concurrent request per token is allowed.
How to bump go-lokalise-api version?
- modify
go.modfile around linegithub.com/lokalise/go-lokalise-api/v4 v4.1.6by changing version on the end - use
go mod tidycommand to updatego.sumwith new version - remember to commit
go.modandgo.sumtogether
Release new version
- if you updated
go-lokalise-apias well, follow steps from above - update version number in
root.go - update
README.mdchangelog - merge changes to
mainbranch - release should happen automatically
Changes
3.1.5 (Jul 13, 2026)
- Fixed
detailsobject empty when retrieving a process for an uploaded file - Bumped
go-lokalise-apito v5.1.0
3.1.4 (May 13, 2025)
- Improved speed for async export status check
3.1.3 (Apr 16, 2025)
- Fixed empty object returned with key/translation lists endpoint
3.1.2 (Mar 26, 2025)
- Added warning for
file downloadsync command when 'X-Response-Too-Big' header is present - Added error message from process when
file download --asyncfails
3.1.1 (Mar 13, 2025)
- Fixed issue with too long filename during async download.
3.1.0 (Mar 12, 2025)
- Added support for async file download.
3.0.0 (Jun 04, 2024)
- Upgraded lokalise-go-api to v4, which includes breaking changes
- Added support for cursor based pagination for Keys and Translations endpoints
2.6.14 (May 29, 2024)
- Fix module versioning
2.6.13 (May 29, 2024)
- Add GH action for automated full gorelease process
2.6.12 (May 22, 2024)
- Add GH action automated release process
2.6.11 (May 21, 2024)
- Fix versioning issues
2.6.10 (Oct 03, 2023)
- Fix binary paths for goreleaser
2.6.9 (Oct 03, 2023)
- Updated Lokalise GO SDK to v3.4.0
- Upgraded Go to v1.21
- Upgraded Docker images to Alpine 3.18
- Multi arch Docker images
2.6.8 (Oct 21, 2021)
- Updated Lokalise GO SDK to v3.2.0
2.6.7 (Jul 27, 2021)
- Added binaries for Apple M1
- Fixed release automation configuration
- Upgraded Go to v1.16
2.6.6 (Jul 12, 2021)
- Fixed
--key-nameparameter being optional for key update - Updated documentation link to supported file formats
2.6.5 (Jul 12, 2021)
- Added note for file download
--disable-referencesflag
2.6.4 (Mar 15, 2021)
- Fixed file upload poll for project branch
2.6.3 (Dec 21, 2020)
- Added
--branchflag for webhook create and update actions
2.6.2 (Nov 23, 2020)
- Added
--use-automationsflag to file upload, create keys and bulk update
2.6.1 (October 28, 2020)
- Fixed file path detection for file upload action
2.6.0 (August 5, 2020)
- Added BSD-Clause-3 license
2.5.2 (July 28, 2020)
- Added
--skip-detect-lang-isoflag for file upload action
2.5.1 (May 28, 2020)
- Fix flag naming typo for file upload
- Changed
--poolto--poll - Changed
--pool-timeoutto--poll
- Changed
2.5.0 (May 28, 2020)
- Added queued process commands
- Changed file upload to use queued processing
- Added
--poolflag to obtain the upload result - Added
--pool-timeoutflag to configure the upload pooling maximum duration - Changed
--convert-placeholdersdefault value totrue
- Added
2.3.1 (April 30, 2020)
Added --custom-translation-status-ids flag for file upload action, along with --custom-translation-status-inserted-keys, --custom-translation-status-skipped-keys and --custom-translation-status-updated-keys flags
2.3.0 (February 26, 2020)
Added --hidden-from-contributors flag for file upload action
2.2.3 (February 7, 2020)
Added better description for boolean flags
2.2.2 (January 27, 2020)
Changed upper case in archive names. Removed README.md from binary archives
2.2.1 (January 17, 2020)
Fixes:
--project-idhasn't been processed correctly
2.2.0 (January 16, 2020)
Added possibility to specify a configuration file with a --config flag
2.1.0 (November 25, 2019)
Updated go-lokalise-api library version, bug fixes, switched binary building to goreleaser
2.03 (October 22, 2019)
Endpoint parameter fixes.
2.00 (October 15, 2019)
Initial release.
관련 리소스

Lingo.dev CLI
CLILingo.dev's official CLI: lingo push sends JSON, YAML, Markdown, PO, XLIFF, Android/Xcode strings and other files from your repo to its LLM localization engine, and lingo pull brings translations back; CI-ready. Needs a Lingo.dev account; usage-based pricing with a free sandbox.
lingodotdev/lingo.dev5.4k
Languine
CLIAI localization: deploy the server to your own Vercel account (Postgres and AI Gateway included; enable deployment protection afterwards), then run npx languine@selfhosted translate to translate locale files with LLMs. A GitHub Action can open PRs. Needs a Vercel account and Node.js.
languine-ai/languine2k
attranslate
CLIOffline translation sync for coding agents: hands only new strings in JSON, YAML, PO, CSV and other locale files to the agent for translation and never overwrites human-edited translations, saving tokens. Needs Node.js; calls no translation API itself.
fkirc/attranslate358
Crowdin CLI
CLICrowdin's official CLI: push source files and pull translations back in place, track progress, manage glossaries and TM, and run machine or AI pre-translation, with JSON output for agents. Needs a Crowdin account (free trial; free for open source) and a token; crowdin init sets up config.
crowdin/crowdin-cli321
SimpleLocalize CLI
CLISimpleLocalize's official CLI: upload and download translation files, trigger machine and AI auto-translation, publish translations to the CDN, and extract translation keys from source code for CI. Needs a SimpleLocalize account and project API key; paid service with a 14-day free trial.
simplelocalize/simplelocalize-cli80
locize-cli
CLILocize's official CLI: sync local translation files with the Locize platform, add, remove and look up keys, download published translations, manage versions and branches, and export JSON, XLIFF, PO, CSV or Excel for translators. Needs a Locize account, project ID and API key; free plan available.
locize/locize-cli71