CLI
@ownlate/cli отправляет исходные строки наверх и забирает переводы обратно. Формат файла тот же, что читает интеграция с Git, поэтому репозиторий, настроенный для одного, работает и с другим.
Установка
Заголовок раздела «Установка»npm install -g @ownlate/cliИли запуск без установки:
npx @ownlate/cli <команда>Есть и образ контейнера:
docker run --rm -it \ -v "$HOME/.ownlate:/root/.ownlate" \ -v "$(pwd):/app" -w /app \ ownlate/ownlate-cli <команда>Быстрый старт
Заголовок раздела «Быстрый старт»ownlate login # сохранить ключ APIownlate init # выбрать проект, записать конфигурациюownlate push # отправить исходные строкиownlate pull # забрать переводыКонфигурация
Заголовок раздела «Конфигурация»CLI ищет ownlate.yml в текущем каталоге.
project_id: f4092389-de6a-49ee-af84-46d59ba618f0
files: - source: locales/en.json translation: locales/{lang}.jsonВсе доступные параметры:
project_id: <uuid>
api_token_env: OWNLATE_API_TOKEN
files: - source: locales/en.json translation: locales/{lang}.json flat: false languages_mapping: zh-Hans: zh_CN zh-Hant: zh_TW| Ключ | Что значит |
|---|---|
project_id | С каким проектом синхронизироваться |
api_token_env | Имя переменной окружения с токеном вместо ~/.ownlate |
files[].source | Какой исходный файл загружать |
files[].translation | Куда писать переведённые файлы; обязан содержать {lang} |
files[].flat | Оставлять вложенные ключи как есть, не разворачивая |
files[].languages_mapping | Сопоставить код языка другому куску имени файла |
Без ownlate.yml CLI возьмёт конфигурацию проекта, которую ownlate init положил в ~/.ownlate.
Авторизация
Заголовок раздела «Авторизация»ownlate login # спросит ключ API, проверит его, запишет ~/.ownlateownlate logout # удалит ~/.ownlateДля пайплайна укажите вместо этого api_token_env с именем переменной окружения:
export OWNLATE_API_TOKEN=own_xxxxxxxxxxxxownlate pushКлючи создаются в разделе Профиль → Ключи API — см. REST API.
Команды
Заголовок раздела «Команды»ownlate init
Заголовок раздела «ownlate init»Забирает список ваших проектов, даёт выбрать один и записывает конфигурацию для текущего каталога.
ownlate push
Заголовок раздела «ownlate push»Загружает каждый files[].source и создаёт или обновляет по нему сегменты.
| Флаг | Описание |
|---|---|
-w, --watch | Следить за исходными файлами и отправлять при каждом сохранении |
-n, --dry-run | Показать, что было бы отправлено, ничего не загружая |
ownlate pull
Заголовок раздела «ownlate pull»Скачивает переведённые файлы по путям из files[].translation.
| Флаг | Описание |
|---|---|
-l, --lang <код> | Забрать только один язык |
ownlate status
Заголовок раздела «ownlate status»Печатает таблицу прогресса по всем целевым языкам.
Project My App f4092389-…
Lang ████████████░░░░░░░░ % Total Untrans Draft Transl Approved ──────────────────────────────────────────────────────────────────────────── fr ████████████████████ 100% 484 0 0 0 484 de ██████████░░░░░░░░░░ 51% 484 237 12 89 146 es ████░░░░░░░░░░░░░░░░ 20% 484 387 4 51 42 ──────────────────────────────────────────────────────────────────────────── 3 langs 57% 1452 624 16 140 672| Флаг | Описание |
|---|---|
--min <процент> | Выйти с кодом 1, если какой-то язык ниже порога, — гейт для CI |
ownlate translate
Заголовок раздела «ownlate translate»Предпереводит непереведённые сегменты. Работа идёт в фоне на сервере; прогресс потом смотрите через ownlate status.
| Флаг | Описание |
|---|---|
-l, --lang <код> | Только один язык |
-p, --provider <тип> | tm — память переводов (по умолчанию), mt — встроенный ИИ-движок |
-s, --score <n> | Минимальная оценка совпадения по памяти, 0–100 (по умолчанию 100, действует для tm) |
Что каждый источник делает со статусом сегмента — см. Память переводов.
ownlate project list и ownlate project create
Заголовок раздела «ownlate project list и ownlate project create»ownlate project listownlate project create "Mobile App" --source en --langs fr,de,es| Флаг | Описание |
|---|---|
-s, --source <язык> | Код исходного языка |
-l, --langs <коды> | Целевые языки через запятую |
В пайплайне
Заголовок раздела «В пайплайне»- name: Push source strings run: npx @ownlate/cli push env: OWNLATE_API_TOKEN: ${{ secrets.OWNLATE_API_TOKEN }}
- name: Fail if a language is behind run: npx @ownlate/cli status --min 90 env: OWNLATE_API_TOKEN: ${{ secrets.OWNLATE_API_TOKEN }}Отправляйте при каждом слиянии в основную ветку, а забирайте по расписанию или перед релизом — так источник правды остаётся в Ownlate, а сборка воспроизводится из репозитория.