|
Документация
Заказать демоПлатформа
ПлатформаMCPCLIAPIРабочие процессы
Руководства
Журнал изменений

Локализация

  • Обзор
  • API локализации
  • Локализация веб-приложений
  • Локализация мобильных приложений
  • iOS и String Catalogs
  • Android и strings.xml
  • Локализация email-писем
  • Статический контент, например .md и .json
  • Next.js с Markdoc
  • Rails с i18n

Рабочие процессы

  • Настройка движка с MCP
  • Jira Triage
  • CI/CD

Локализация статического контента

Lingo.dev CLI переводит статические файлы в вашем репозитории — Markdown, MDX, Markdoc, JSON, YAML, субтитры и многое другое — через настроенный движок локализации. Просто укажите путь к контенту, запустите команду один раз и получите переведённые файлы рядом с исходниками.

Поддерживаемые типы контента#

CLI определяет формат каждого файла по расширению — тип хранилища настраивать не нужно. Локаль задаётся прямо в пути (content/en/x.md превращается в content/de/x.md), так что плейсхолдер [locale] не нужен.

Тип контентаФорматПример пути
ДокументацияMarkdowndocs/en/getting-started.md
ДокументацияMDXdocs/en/getting-started.mdx
ДокументацияMarkdocdocs/en/getting-started.mdoc
Структурированные данныеJSONdata/en.json
Структурированные данныеYAMLdata/en.yaml
Статьи блогаMarkdown / MDXblog/en/post-slug.md
ЛокализацияGettext POlocale/en/messages.po
ЛокализацияXLIFFlocale/en.xliff
СубтитрыSRTsubs/en/intro.srt

Полный список поддерживаемых форматов — в справочнике форматов.

В новом CLI пока не поддерживается

CSV (csv-per-locale), субтитры VTT, обычный текст .txt и Java .properties пока не поддерживаются новым CLI. Оставьте эти файлы в старом CLI и следите за обновлениями в журнале изменений.

Что понадобится#

При каждом запуске контент проходит через движок локализации — он определяет, какая языковая модель, глоссарий, тональность бренда и правила используются. Создайте движок в панели управления Lingo.dev и настройте CLI (Node 22+):

bash
npm install -g @lingo.dev/cli
lingo login
lingo init
lingo link

lingo init и lingo link создают .lingo/config.json, связывая CLI с вашей организацией и движком. Зафиксируйте этот файл в репозитории — тогда все окружения будут использовать одну конфигурацию.

json
{
  "orgId": "org_abc123",
  "engineId": "eng_abc123",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [{ "pattern": "docs/en/getting-started.md" }]
}

В CI пропустите lingo login и передайте LINGO_API_KEY как переменную окружения. Сгенерировать её можно в разделе API-ключей.

Сайты с документацией#

Большинство фреймворков для документации хранят переводы в отдельных директориях для каждой локали. Добавьте паттерн для каждого исходного файла (или глоб) в files. CLI сохраняет frontmatter, блоки кода и синтаксис компонентов, переводя Markdown, MDX и Markdoc.

json
{
  "orgId": "org_abc123",
  "engineId": "eng_abc123",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [
    { "pattern": "docs/en/getting-started.md" },
    { "pattern": "docs/en/setup.mdx" }
  ]
}

Запустите первый перевод, заполнив все целевые локали:

bash
lingo push --backfill-missing

При следующих запусках lingo push переводит только то, что изменилось. Используйте lingo pull, чтобы получить переводы, созданные в другом месте.

Скорректируйте путь к источнику под структуру директорий вашего фреймворка:

ФреймворкСтруктура каталогов локалейСправка
Docusaurusi18n/[locale]/docusaurus-plugin-content-docs/current/Руководство по i18n в Docusaurus
NextraОтдельные страницы для каждой локали или JSON-словариДокументация Nextra
Hugocontent/[locale]/Руководство по мультиязычности в Hugo
Astrosrc/content/[locale]/ или JSON-словариРуководство по i18n в Astro
VitePressПрефикс каталога [locale]/i18n в VitePress
MkDocsОтдельный docs/ для каждой локали с i18n-плагиномi18n-плагин для MkDocs

Компоненты MDX

При переводе MDX синтаксис JSX-компонентов сохраняется. Пользовательские компоненты — например <Callout>, <Tabs> и <CodeBlock> — передаются как есть, переводится только текст внутри них.

Структурированные данные#

JSON и YAML переводятся автоматически по расширению. Используйте управление ключами, чтобы защитить непереводимые значения (идентификаторы, URL, флаги конфигурации) от изменений.

json
{
  "orgId": "org_abc123",
  "engineId": "eng_abc123",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [
    { "pattern": "content/en.json" },
    { "pattern": "data/en.yaml" }
  ]
}

Для обычного YAML поле format не нужно. Явно указать yaml-openapi в записи файла требуется только для yaml-root-key, android и "format".

YAML с корневым ключом локали

В YAML-файлах, где корневой ключ — это код локали (как в Rails и Hugo), нужно явно указать "format": "yaml-root-key": корневой ключ будет заменён на локаль целевого языка. См. Справочник форматов.

Субтитры#

SRT-файлы субтитров переводятся по расширению. CLI сохраняет все тайминги, индексы реплик и теги форматирования — переводится только текст.

json
{
  "orgId": "org_abc123",
  "engineId": "eng_abc123",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [{ "pattern": "subs/en/intro.srt" }]
}

VTT пока не поддерживается

Субтитры WebVTT (.vtt) новым CLI пока не поддерживаются. Оставьте VTT-файлы в старом CLI и следите за обновлениями в журнале изменений.

Работа с большим объёмом контента#

Статические репозитории контента могут содержать тысячи файлов. CLI справляется с этим без проблем:

МеханизмКак помогает
Состояние запуска.lingo/lock.json отслеживает отпечатки исходного контента, поэтому lingo push переводит только новые или изменённые файлы. Зафиксируйте его в репозитории — при каждом пуше он пересоздаётся.
Параллелизм на стороне сервераДвижок распараллеливает перевод автоматически — никаких настроек параллелизма не нужно.
Точечные запускиОграничьте запуск конкретными файлами с помощью глоба: lingo push "docs/en/**".

Чтобы проверить актуальность переводов без записи файлов — удобно как CI-проверка — запустите lingo check.

Что дальше#

Поддерживаемые форматы
Полный справочник по всем форматам файлов, которые поддерживает CLI
Примеры проектов
Готовые репозитории с Markdown, MDX, Markdoc и OpenAPI — конфигурация и переводы уже добавлены в репозитории
Управление ключами
Не переводите значения, которые должны оставаться без изменений
GitHub App
Автоматизируйте перевод статического контента при каждом push
Состояние запуска
Как работает отслеживание инкрементальных переводов с помощью .lingo/lock.json

Эта страница была полезной?

Max PrilutskiyMax Prilutskiy·Обновлено 8 дней назад·4 минуты чтения