Добавление языков
Lingo.dev CLI позволяет легко добавить новые языки в ваш проект — просто укажите нужные локали в конфиге i18n.json и выполните одну команду.
Когда вы добавляете новые языки, CLI генерирует полные файлы переводов для новых локалей, при этом все существующие переводы сохраняются, а система контроля версий контента остаётся прежней.
Как добавить первый новый язык
Чтобы добавить новый язык, обновите массив targets в вашем конфиге i18n.json:
Исходная конфигурация:
{
"locale": {
"source": "en",
"targets": ["es", "fr"]
},
"buckets": {
"json": {
"include": ["locales/[locale].json"]
}
}
}
Обновлённая конфигурация с немецким:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"json": {
"include": ["locales/[locale].json"]
}
}
}
Выполнение npx lingo.dev@latest run создаёт новый файл перевода на немецкий язык:
locales/
en.json (source - unchanged)
es.json (existing - unchanged)
fr.json (existing - unchanged)
de.json (new - fully translated)
Как работает генерация новых языков
Lingo.dev CLI по-разному обрабатывает новые и существующие языки:
- Существующие языки — генерируются только недостающие переводы
- Новые языки — создаются полные файлы переводов с нуля
Пример с частично переведёнными языками:
// locales/en.json (source)
{
"welcome": "Welcome",
"button.save": "Save",
"error.network": "Network error"
}
// locales/es.json (existing with missing translations)
{
"welcome": "Bienvenido"
}
После добавления немецкого и запуска CLI:
// locales/es.json (gaps filled)
{
"welcome": "Bienvenido",
"button.save": "Guardar",
"error.network": "Error de red"
}
// locales/de.json (complete new file)
{
"welcome": "Willkommen",
"button.save": "Speichern",
"error.network": "Netzwerkfehler"
}
Добавление нескольких языков
Можно добавить сразу несколько языков одновременно:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja", "zh"]
}
}
CLI обработает все новые языки и создаст для каждой локали полный файл перевода.
Региональные варианты
Lingo.dev CLI поддерживает региональные языковые варианты с помощью тегов BCP 47:
{
"locale": {
"source": "en-US",
"targets": ["en-GB", "es-ES", "es-MX", "fr-FR", "fr-CA"]
}
}
Это создаёт отдельные файлы переводов для каждого регионального варианта, учитывая различия в терминологии, написании и культурном контексте.
Влияние на структуру файлов
CLI создаёт новые файлы в соответствии с вашими шаблонами bucket. Для разных форматов файлов:
JSON-бакеты:
locales/[locale].json → locales/de.json, locales/ja.json
Markdown-бакеты:
content/[locale]/*.md → content/de/*.md, content/ja/*.md
Вложенные структуры:
app/[locale]/messages.json → app/de/messages.json, app/ja/messages.json
Добавление целевого языка
Вы можете сгенерировать переводы для конкретных новых языков с помощью флага --target-locale:
npx lingo.dev@latest run --target-locale de
Это создаёт только немецкие переводы, а остальные новые языки можно обработать позже.
Удаление языка
Чтобы удалить язык, просто уберите его из массива targets. CLI не будет удалять существующие файлы, но перестанет обрабатывать этот язык:
{
"locale": {
"source": "en",
"targets": ["es", "fr"]
}
}
При необходимости вы можете вручную удалить соответствующие файлы переводов.