hyperlocalise lokalise to upload locale files, wait for queued imports, and
download translations from a Lokalise project. Keep these operations alongside
local AI translation and other TMS workflows in the all-in-one localization CLI.
Start with a Lokalise upload and download
Install Hyperlocalise, setLOKALISE_API_TOKEN
in your shell or CI secret manager, and use a project with English and French
locales. Create locales/en.json with your source strings. Replace
your-project-id with the ID from Lokalise:
locales list. The upload waits for processing;
it does not wait for human translation. The download writes the exported French
file. Review it before committing; use --force only when you intend to replace
an existing output file. For existing translated files, follow
upload translations and wait for processing.
Hyperlocalise vs the official Lokalise CLI
Hyperlocalise is a Lokalise CLI alternative for the documented file workflows. It usesupload sources and download translations instead of the official
lokalise2 file upload and file download syntax. You must adapt flags and
credentials when moving scripts.
Prefix commands in the last column with
hyperlocalise. Existing Lokalise CLI
config files are not read. See the official lokalise2 documentation
when your workflow needs broader API coverage.
Command reference
--config to reuse projectID and token settings from an i18n.yml storage block.
What this command family does
These commands talk to the Lokalise API v2 file, language, queued-process, and glossary endpoints. They are separate from Hyperlocalise nativei18n.yml and sync push / sync pull workflows. Use shared TMS sync when you want Hyperlocalise-managed entry sync through the Lokalise adapter. Use this surface when you want flag-driven file upload and download against a Lokalise project.
Use them for:
- listing project locales (
locales list; lokalise2language list) - listing project files (
files list; lokalise2file list) - source-file upload (
upload sources) - import of a pre-translated locale file (
upload translations) - source download (
download sources) - translation download (
download translations) - glossary download (Hyperlocalise-shaped CSV)
file upload / file download with --lang-iso. Hyperlocalise keeps the same command family shape as Crowdin, Phrase, and Smartling (upload sources, download translations).
Credentials
Hyperlocalise reads--token-env (default LOKALISE_API_TOKEN).
Do not put the API token in i18n.yml. Point apiTokenEnv at an environment variable instead.
Command notes
locales list prints id, iso, and name from Lokalise project languages. iso is the value to pass as --source-locale or --target-locale. Lokalise has no default-locale field on this API. --output is text or json, not a file path. Empty projects print nothing in text mode and [] with --output json. Both exit 0.
files list prints id, filename, and keys. Keys with no file association appear as __unassigned__. --filter-filename is Lokalise’s substring filter, not a glob. --output is text or json.
upload sources requires --project-id (or projectID in --config), --source-locale (or sourceLanguage in --config), and at least one --file. --dry-run checks files and flags and does not need a token.
upload translations requires --target-locale on every run. It does not take the locale from sourceLanguage or targetLanguages in --config. Config may still supply the project id and token. The locale comes from the flag, not the filename: uploading en.json as French uses --target-locale fr.
--replace-modified maps to Lokalise replace_modified. Off (the default) preserves translations Lokalise treats as modified. On replaces those modified translations from the uploaded file. It is not a guarantee that every existing key stays unchanged. Dry-run and the success line print modified_translations=preserved or modified_translations=replaced.
Without --poll, success means the import is queued. The command prints a process id and stops. --poll waits until the queued process reaches finished (lokalise2 --poll). --poll-timeout defaults to 30s, matching lokalise2. CI should pass a longer duration such as --poll-timeout 10m. --poll does not mean translations were kept. --dry-run does not poll. --poll-timeout without --poll is ignored. This is not Phrase --wait.
Lokalise matches files by name. Use the same filename as the source file when you can. Language codes in the name (en.json / fr.json) are usually treated as one file. A totally different name can create a second file.
--file can repeat for several files in that one locale. Use a separate invocation for each target locale. --poll waits for each file in order.
download translations can take more than one --target-locale. Use %locale% in --output when you download more than one locale to files.
glossary download writes CSV to stdout unless you pass --output. That --output is a file path, unlike list --output text|json.

