Добавление языков

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 по-разному обрабатывает новые и существующие языки:

  1. Существующие языки — генерируются только недостающие переводы
  2. Новые языки — создаются полные файлы переводов с нуля

Пример с частично переведёнными языками:

// 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"]
  }
}

При необходимости вы можете вручную удалить соответствующие файлы переводов.