|Labs
Заказать демоПлатформа
React (Lingo Compiler)
Альфа
React (MCP)React (i18n)CLI прежней версии (v0)
Устаревшее

Lingo.dev CLI

  • Как это работает
  • Настройка
  • Быстрый старт
  • Монорепозитории

Конфигурация

  • Поддерживаемые форматы
  • i18n.json
  • i18n.lock
  • Поддерживаемые локали

Возможности

  • Существующие переводы
  • Добавление языков
  • Переопределения
  • Примечания для переводчика
  • Ключи перевода
  • Переименование ключей
  • Блокировка ключей
  • Игнорирование ключей
  • Сохранение ключей
  • Извлечение ключей с помощью ИИ

Производительность

  • Крупные проекты
  • Параллельная обработка
  • Оценка стоимости

Повторный перевод

  • Автоматический повторный перевод
  • Повторный перевод
  • Удаление переводов

Эта документация посвящена CLI прежней версии (v0) и считается устаревшей. Текущая версия CLI — v1. См. документацию по текущей версии CLI

Конфигурация i18n.json

i18n.json — файл конфигурации, который управляет CLI Lingo.dev и интеграциями CI/CD. Он задаёт, какие языки переводить, где находится переводимый контент и какой backend перевода использовать.

Минимальный пример#

json
{
  "$schema": "https://lingo.dev/schema/i18n.json",
  "version": "1.15",
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "ja"]
  },
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"]
    }
  }
}

Поле $schema включает автодополнение и валидацию в IDE. Поле version отслеживает версию схемы для совместимости с автоматическими миграциями.

Локаль#

Раздел locale задаёт исходный и целевые языки:

json
{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de", "ja"]
  }
}
ПолеОписание
locale.sourceЯзык, на котором написан исходный контент. Все переводы выполняются из этой локали.
locale.targetsМассив целевых языков. Для каждого из них создаётся отдельный файл или раздел — в зависимости от формата bucket.

Коды языков соответствуют стандарту BCP 47 — поддерживаются en, en-US, es-ES, zh-Hans, а также платформенные форматы, например Android-формат en-rUS.

Чтобы вывести список доступных кодов локалей:

bash
npx lingo.dev@latest show locale sources   # Available source languages
npx lingo.dev@latest show locale targets   # Available target languages

Buckets#

Buckets задают шаблоны поиска файлов и правила обработки. Каждый ключ bucket определяет формат файла, а его значение настраивает, какие файлы включать или исключать:

json
{
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"],
      "exclude": ["locales/[locale]/internal.json"]
    },
    "markdown": {
      "include": ["docs/[locale]/*.md"]
    }
  }
}
ПолеОписание
includeМассив шаблонов файлов с плейсхолдером [locale]. Поддерживаются glob-шаблоны (*).
excludeНеобязательно. Массив шаблонов, которые нужно пропускать при обработке.
lockedKeysНеобязательно. Ключи, значения которых копируются из исходного текста без перевода. См. Блокировка ключей.
ignoredKeysНеобязательно. Ключи, полностью исключённые из перевода — они не появляются в целевых файлах. См. Игнорирование ключей.
preservedKeysНеобязательно. Ключи, которые один раз инициализируются из исходного текста, а затем защищаются от автоматических обновлений. См. Сохранение ключей.
injectLocaleНеобязательно. Ключи, в которые код целевой локали подставляется автоматически.

Шаблоны включения#

В шаблонах включения используется плейсхолдер [locale], который во время выполнения заменяется на настроенные коды локалей:

  • locales/[locale].json → locales/en.json, locales/es.json
  • docs/[locale]/*.md → docs/en/*.md, docs/es/*.md

Рекурсивные glob-шаблоны (**/*.json) не поддерживаются. Вместо них используйте явные пути к каталогам.

Пользовательские разделители локалей#

По умолчанию коды локалей в именах файлов используют дефис (-) в качестве разделителя: en-US.json. Чтобы использовать подчёркивания, передайте объект с полем delimiter:

json
{
  "include": [
    "standard/[locale].json",
    { "path": "legacy/[locale].json", "delimiter": "_" }
  ]
}

В результате получится legacy/en_US.json вместо legacy/en-US.json.

Нотация путей ключей#

Массивы lockedKeys, ignoredKeys и preservedKeys используют запись с прямой косой чертой (/) для вложенных ключей и звёздочкой (*) для wildcard-шаблонов:

json
{
  "lockedKeys": ["brand/name", "config/*"]
}

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

Провайдер#

Раздел provider настраивает LLM-провайдера напрямую для перевода. Этот раздел необязателен — если его не указать, CLI будет использовать движок локализации в Lingo.dev.

json
{
  "provider": {
    "id": "openai",
    "model": "gpt-4o-mini",
    "prompt": "Translate the provided text from {source} to {target}."
  }
}
ПолеОписание
provider.idИдентификатор провайдера: openai, anthropic, google, mistral, openrouter или ollama.
provider.modelНазвание модели у провайдера, например gpt-4o-mini или claude-3-haiku.
provider.promptСистемный промпт. {source} и {target} заменяются кодами локалей во время выполнения.
provider.baseUrlНеобязательно. Пользовательский API endpoint (обязательно для Ollama: http://localhost:11434).

Подключение движка#

Чтобы направлять переводы через определённый движок локализации, добавьте поле engineId:

json
{
  "engineId": "eng_SxjMwMsfOIsvV1wh"
}

Если задано engineId, к каждому запросу на перевод автоматически применяются тональность бренда, глоссарий, инструкции и конфигурация модели вашего движка. Если поле не указано, но задано LINGO_API_KEY, CLI использует движок по умолчанию в вашей организации.

Полное руководство по настройке см. в разделе Подключите свой движок.

Переменные окружения#

ПеременнаяОбязательноОписание
LINGO_API_KEYДля Lingo.dev EngineВаш API-ключ Lingo.dev.
LINGO_API_URLНетПользовательский базовый URL API (для self-hosted или staging).
OPENAI_API_KEYДля провайдера OpenAIAPI-ключ OpenAI.
ANTHROPIC_API_KEYДля провайдера AnthropicAPI-ключ Anthropic.
GOOGLE_API_KEYДля провайдера GoogleAPI-ключ Google.
MISTRAL_API_KEYДля провайдера MistralAPI-ключ Mistral.
OPENROUTER_API_KEYДля провайдера OpenRouterAPI-ключ OpenRouter.

Полный пример#

json
{
  "$schema": "https://lingo.dev/schema/i18n.json",
  "version": "1.15",
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de", "ja"]
  },
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"],
      "lockedKeys": ["brand/name", "brand/tagline"],
      "ignoredKeys": ["internal/*"]
    },
    "markdown": {
      "include": ["docs/[locale]/*.md"]
    }
  },
  "engineId": "eng_SxjMwMsfOIsvV1wh"
}

Миграция версий#

CLI автоматически мигрирует старые конфигурации i18n.json на последнюю версию схемы. Он создаёт резервную копию текущего файла, обновляет схему и сохраняет все настройки. Ручное вмешательство не требуется.

Следующие шаги#

Поддерживаемые форматы
Все типы bucket и их конфигурация
i18n.lock
Как lockfile отслеживает состояние перевода
Подключите свой движок
Направляйте переводы через свой движок локализации
Настройка
Установите CLI и начните работу

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

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