Lingo.dev CLI переводит статические файлы в вашем репозитории — Markdown, MDX, Markdoc, JSON, YAML, субтитры и многое другое — через настроенный движок локализации. Просто укажите путь к контенту, запустите команду один раз и получите переведённые файлы рядом с исходниками.
Поддерживаемые типы контента#
| Тип контента | Формат | Бакет CLI | Пример пути |
|---|---|---|---|
| Документация | Markdown | markdown | docs/[locale]/getting-started.md |
| Документация | MDX | mdx | docs/[locale]/getting-started.mdx |
| Документация | Markdoc | markdoc | docs/[locale]/getting-started.mdoc |
| Структурированные данные | JSON | json | data/[locale].json |
| Структурированные данные | YAML | yaml | data/[locale].yaml |
| Статьи блога | Markdown / MDX | markdown / mdx | blog/[locale]/post-slug.md |
| Субтитры | SRT | srt | subs/[locale]/intro.srt |
| Субтитры | VTT | vtt | subs/[locale]/intro.vtt |
| Таблицы | CSV | csv-per-locale | data/[locale].csv |
| Строки конфигурации | Properties | properties | lang/[locale].properties |
| Строки конфигурации | Gettext PO | po | locale/[locale]/messages.po |
| Обычный текст | TXT | txt | content/[locale]/readme.txt |
Что понадобится#
При каждом запуске CLI контент проходит через движок локализации — конфигурацию, которая определяет, какая модель LLM, глоссарий, тональность бренда и инструкции будут использоваться. Создайте её в панели Lingo.dev и сгенерируйте API-ключ.
Сайты с документацией#
Большинство фреймворков для документации размещают переведённый контент по отдельным каталогам для каждой локали. Бакеты CLI markdown, mdx и markdoc переводят такие файлы, сохраняя frontmatter, блоки кода и синтаксис компонентов.
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.15",
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja"]
},
"buckets": {
"markdown": {
"include": ["docs/[locale]/getting-started.md"]
},
"mdx": {
"include": ["docs/[locale]/setup.mdx"]
}
}
}Подстройте шаблон include под принятую в вашем фреймворке структуру каталогов:
| Фреймворк | Структура каталогов локалей | Справка |
|---|---|---|
| Docusaurus | i18n/[locale]/docusaurus-plugin-content-docs/current/ | Руководство по i18n в Docusaurus |
| Nextra | Отдельные страницы для каждой локали или JSON-словари | Документация Nextra |
| Hugo | content/[locale]/ | Руководство по мультиязычности в Hugo |
| Astro | src/content/[locale]/ или JSON-словари | Руководство по i18n в Astro |
| VitePress | Префикс каталога [locale]/ | i18n в VitePress |
| MkDocs | Отдельный docs/ для каждой локали с i18n-плагином | i18n-плагин для MkDocs |
Компоненты MDX
Бакет mdx сохраняет синтаксис JSX-компонентов при переводе. Пользовательские компоненты вроде <Callout>, <Tabs> и <CodeBlock> остаются без изменений — переводится только текст внутри них.
Структурированные данные#
Файлы JSON и YAML переводятся через бакеты json и yaml. Используйте заблокированные ключи, чтобы не изменять непереводимые значения, такие как ID, URL и флаги конфигурации.
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.15",
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja"]
},
"buckets": {
"json": {
"include": ["content/[locale].json"],
"lockedKeys": ["id", "slug", "url"]
},
"yaml": {
"include": ["data/[locale].yaml"]
}
}
}Для YAML-файлов, где код локали используется как корневой ключ, что часто встречается в Rails и Hugo, используйте вместо этого бакет yaml-root-key — он читает данные из ключа исходной локали и записывает их в ключи целевых локалей в том же файле.
Субтитры#
Файлы субтитров SRT и VTT переводятся через бакеты srt и vtt. CLI сохраняет все временные метки, индексы реплик и теги форматирования — переводится только текст.
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.15",
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja"]
},
"buckets": {
"srt": {
"include": ["subs/[locale]/intro.srt"]
}
}
}Работа с большим объёмом контента#
Репозитории со статическим контентом могут содержать тысячи файлов. CLI эффективно справляется с этим благодаря трём механизмам:
| Механизм | Как помогает |
|---|---|
| Lockfile | Отслеживает SHA-256-отпечатки исходного контента. При следующих запусках переводятся только новые или изменённые файлы. |
| Параллельная обработка | Распределяет перевод между параллельными воркерами. Настраивается через run --concurrency 20. |
| Точечные запуски | Обрабатывайте только нужный бакет или локаль: run --bucket markdown или run --target-locale es. |
