CLI от Lingo.dev переводит файлы ресурсов вашего веб-приложения — JSON, YAML, XLIFF, PO или PHP — через настроенный движок локализации. Настройте i18n в своём фреймворке, укажите CLI путь к файлам переводов и запустите команду.
Как это работает#
У каждого веб-фреймворка есть i18n-библиотека, которая загружает переводы из файлов ресурсов: JSON для React, XLIFF для Angular, PO для Django и так далее. CLI переводит эти файлы напрямую, поэтому фреймворк подхватывает переводы без каких-либо изменений в коде.
Настройте i18n в своём фреймворке
Используйте официальную i18n-библиотеку вашего фреймворка, чтобы добавить маршрутизацию с учётом локали, функцию перевода и файлы ресурсов на исходном языке. В разделе каждого фреймворка ниже есть ссылка на официальное руководство по настройке.
Настройте CLI
Запустите lingo init, чтобы создать .lingo/config.json с исходной и целевыми локалями и шаблонами файлов для перевода, затем lingo link — чтобы привязать организацию и движок. CLI сам определяет формат каждого файла по расширению, тип бакета указывать не нужно. Зафиксируйте .lingo/config.json.
Запустите перевод
Запустите lingo push, и CLI переведёт ваши файлы ресурсов через движок локализации — правила глоссария, тональность бренда и выбранная модель применятся автоматически.
Что понадобится#
Установите CLI и войдите в аккаунт:
npm install -g @lingo.dev/cli
lingo loginCLI требует Node.js 22+. В CI пропустите интерактивный вход и передайте ключ через --api-key или переменную окружения LINGO_API_KEY.
При каждом запуске CLI контент проходит через движок локализации — это конфигурация, которая задаёт LLM-модель, глоссарий, тональность бренда и правила обработки. Создайте движок в панели Lingo.dev и сгенерируйте API-ключ. lingo link сохраняет orgId и engineId движка в .lingo/config.json.
Настройка с помощью AI
i18n MCP может автоматически развернуть всю i18n-инфраструктуру вашего фреймворка. Подключите его к Claude Code, Cursor или GitHub Copilot и дайте команду "Set up i18n" — агент пройдёт чек-лист из 13 шагов и настроит маршрутизацию, файлы переводов и переключатель языка.
JavaScript-фреймворки#
Сегмент локали в каждом pattern подставляется для каждой целевой локали — public/locales/en/translation.json становится public/locales/de/translation.json и так далее. Путь к исходному файлу должен содержать код исходной локали.
react-i18next загружает переводы из JSON-файлов и предоставляет хук useTranslation, который сопоставляет ключи с переведёнными строками во время выполнения.
{
"orgId": "org_...",
"engineId": "eng_...",
"sourceLocale": "en",
"targetLocales": ["es", "fr", "de", "ja"],
"files": [{ "pattern": "public/locales/en/translation.json" }]
}Серверные фреймворки#
Laravel поставляется со встроенной локализацией, которая загружает переводы из PHP-файлов, организованных по директориям локалей.
{
"orgId": "org_...",
"engineId": "eng_...",
"sourceLocale": "en",
"targetLocales": ["es", "fr", "de", "ja"],
"files": [{ "pattern": "lang/en/messages.php" }]
}Запуск перевода#
Когда .lingo/config.json на месте, переведите все файлы ресурсов одной командой:
lingo pushCLI читает файлы исходной локали, вычисляет изменения с момента последнего запуска с помощью lockfile (.lingo/lock.json, зафиксированного рядом с конфигом), переводит только разницу и записывает результаты в файлы целевых локалей. Существующие переводы сохраняются — CLI заполняет только отсутствующие или обновлённые строки.
При первом запуске или после добавления новой целевой локали переведите всё с нуля:
lingo push --backfill-missingЧтобы ограничить запуск частью файлов, передайте glob:
lingo push "messages/**"Чтобы получить актуальные переводы в другом месте (например, на другой машине или на этапе сборки) без запуска перевода, выполните lingo pull. Используйте lingo check как условие деплоя — так вы убедитесь, что переводы не устарели.
