Локализация веб-приложений
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 push --waitCLI читает файлы исходной локали, вычисляет изменения с момента последнего запуска с помощью lockfile (.lingo/lock.json, зафиксированного рядом с конфигом), переводит только разницу и записывает результаты в файлы целевых локалей. Существующие переводы сохраняются — CLI заполняет только отсутствующие или обновлённые строки.
При первом запуске или после добавления новой целевой локали переведите всё с нуля:
lingo push --backfill-missing --waitЧтобы ограничить запуск частью файлов, передайте glob:
lingo push "messages/**"Чтобы получить результаты последнего push из этого checkout без повторного перевода, выполните lingo pull. Другие машины получат переводы после коммита. Используйте lingo check как шлюз развёртывания, чтобы убедиться, что переводы актуальны.