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

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 i18n создаст новый файл перевода для немецкого языка:

locales/
  en.json    (исходный - без изменений)
  es.json    (существующий - без изменений)
  fr.json    (существующий - без изменений)
  de.json    (новый - полностью переведен)

Как работает генерация нового языка

Lingo.dev CLI обрабатывает новые языки иначе, чем существующие:

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

Пример с частично существующими переводами:

// locales/en.json (исходный)
{
  "welcome": "Welcome",
  "button.save": "Save",
  "error.network": "Network error"
}

// locales/es.json (существующий с отсутствующими переводами)
{
  "welcome": "Bienvenido"
}

После добавления немецкого языка и выполнения CLI:

// locales/es.json (пробелы заполнены)
{
  "welcome": "Bienvenido",
  "button.save": "Guardar",
  "error.network": "Error de red"
}

// locales/de.json (полностью новый файл)
{
  "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 создает новые файлы в соответствии с вашими шаблонами размещения. Для разных форматов файлов:

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

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

Вы можете сгенерировать переводы для конкретных новых языков, используя флаг --locale:

npx lingo.dev@latest i18n --locale de

Это создаст только немецкие переводы, оставив другие новые языки для последующей обработки.

Удаление языка

Чтобы удалить язык, просто удалите его из массива targets. CLI не будет удалять существующие файлы, но прекратит обработку этого локаля:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr"]
  }
}

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