@localizify/cli

Локализация из терминала

Загружайте новые ключи, переводите их с помощью ИИ и скачивайте готовые файлы обратно в репозиторий. Один конфиг, четыре команды, одинаково работает на ноутбуке и в CI.

$ npm i -D @localizify/cli
Открыть в npm

Установка

Нужен Node.js 20 или новее. Добавьте CLI как dev-зависимость, чтобы вся команда работала с одной версией:

$ npm i -D @localizify/cli

После такой установки команда называется просто localizify. Можно и запустить один раз без установки:

# Or run it without installing
$ npx @localizify/cli --help

Авторизация

Создайте API-токен в разделе Настройки → API-токены и передайте его через LOCALIZIFY_TOKEN. Токен, ограниченный одним проектом, имеет доступ только к нему.

$ export LOCALIZIFY_TOKEN=loc_...
# Self-hosted or staging only:
$ export LOCALIZIFY_HOST=https://localizify.com

Храните токен в окружении или секретах CI. Никогда не коммитьте его и не пишите в конфиг.

Настройка

Добавьте localizify.json в корень репозитория. Пути указываются относительно файла конфига.

{
  "projectId": 123,
  "source": { "provider": "Angular XLIFF", "path": "src/locale/messages.xlf", "lang": "en" },
  "files": [
    { "provider": "Angular XLIFF", "lang": "uk", "path": "src/locale/messages.uk.xlf" },
    { "provider": "Angular XLIFF", "lang": "de", "path": "src/locale/messages.de.xlf" }
  ]
}
  • projectId · id проекта из его URL
  • source · файл с исходными строками, его загружает push
  • files · по записи на каждый файл перевода, их используют pull и translate
  • provider · название формата точно как в окне экспорта, например "JSON Key Value" или "Gettext Po"
  • lang · код языка, добавленного в проект

Все поддерживаемые форматы

Команды

Каждая команда читает localizify.json из текущей папки и выводит по строке на результат.

localizify push

Импортирует исходный файл и добавляет только новые ключи. С --with-translations также импортирует строки файла как переводы для source.lang, не трогая существующие.

$ localizify push
pushed src/locale/messages.xlf: 3 new keys, 148 processed
$ localizify push --with-translations

localizify translate

Переводит все непереведённые термины. Провайдер выбирается через --provider: anthropic (по умолчанию), openai, deepl, google или microsoft; языки ограничиваются через --lang.

$ localizify translate --provider anthropic --lang uk,de
uk: 3 terms translated
de: 3 terms translated

localizify pull

Скачивает каждый файл из files и записывает его по указанному пути, создавая папки при необходимости.

$ localizify pull
pulled uk -> src/locale/messages.uk.xlf (18342 bytes)
pulled de -> src/locale/messages.de.xlf (18911 bytes)

localizify status

Показывает число ключей и прогресс по каждому языку.

$ localizify status
151 keys
uk       145/151 (96%)
de       151/151 (100%)

Запуск в CI

Сохраните токен как секрет CI и запускайте push, translate и pull при каждом мерже. Процесс ниже падает при ошибках API, поэтому неверный токен или лимит тарифа не пройдут незамеченными.

# .github/workflows/i18n.yml
name: i18n
on:
  push:
    branches: [main]
jobs:
  sync:
    runs-on: ubuntu-latest
    env:
      LOCALIZIFY_TOKEN: ${{ secrets.LOCALIZIFY_TOKEN }}
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 22 }
      - run: npx @localizify/cli push
      - run: npx @localizify/cli translate
      - run: npx @localizify/cli pull
      - run: git status --porcelain src/locale

Машиночитаемый вывод

Добавьте --json к любой команде, чтобы получить один JSON-объект в stdout для jq или скрипта сборки.

$ localizify status --json
{"termsCount":151,"languages":[{"languageCode":"uk","translatedCount":145,"totalCount":151,"progress":96}]}

Справочник

Параметры

-c, --config <path>Путь к конфигу. По умолчанию: localizify.json.
--with-translationspush: также импортировать переводы из исходного файла.
--provider <name>translate: anthropic, openai, deepl, google или microsoft. По умолчанию: anthropic.
--lang <a,b>translate: коды целевых языков. По умолчанию: все lang из files, кроме исходного.
--jsonВывести один JSON-объект вместо текста.
-h, --helpПоказать справку.

Коды выхода

0Успех.
1Ошибка API или сети: неверный токен, лимит тарифа или лимит запросов.
2Ошибка конфига или параметров.

CLI работает поверх публичного REST API. Прямые запросы к API и MCP-сервер описаны в разделе Разработчикам.