@localizify/cli
Локалізація з терміналу
Завантажуйте нові ключі, перекладайте їх за допомогою ШІ та отримуйте готові файли назад у репозиторій. Один конфіг, чотири команди, однаково працює на ноутбуці і в CI.
$ npm i -D @localizify/cli
$ npx @localizify/cli push pushed src/locale/messages.xlf: 3 new keys, 148 processed $ npx @localizify/cli translate --lang uk,de uk: 3 terms translated de: 3 terms translated $ npx @localizify/cli pull pulled uk -> src/locale/messages.uk.xlf (18342 bytes) pulled de -> src/locale/messages.de.xlf (18911 bytes) $
Встановлення
Потрібен 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 проєкту з його URLsource· файл із вихідними рядками, його завантажує pushfiles· по запису на кожен файл перекладу, їх використовують pull і translateprovider· назва формату точно як у вікні експорту, наприклад "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-translations | push: також імпортувати переклади з вихідного файлу. |
| --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-сервер описані в розділі Розробникам.