|
Документация
Заказать демоПлатформа
ПлатформаMCPCLI
APIПроцессы
РуководстваЖурнал изменений

Обзор

  • @lingo.dev/cli

Начало работы

  • Быстрый старт
  • Конфигурация

Справочник

  • lingo push
  • lingo pull
  • Другие команды
  • lingo purge

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

  • Управление ключами
  • Форматы
  • Локали

Руководства

  • Добавление локали
  • Существующие переводы
  • Повторный перевод
  • Примечания для переводчика
  • Запуски, состояние и восстановление
  • CI/CD
  • Монорепозитории
  • Крупные проекты

Ищете CLI прежней версии (v0)? См. документацию по CLI прежней версии

Управление ключами

Обычно требуется переводить все строки в файле. Но для исключений — названий брендов, feature flag, юридических текстов, внутреннего мусора — в CLI есть три настройки на уровне файла, которые задаются внутри записи files[] в .lingo/config.json.

НастройкаПоле конфигурацииЧто делает движок
LocklockedKeysКопирует исходное значение во все целевые локали без перевода.
PreservepreservedKeysСохраняет всё, что уже есть в целевом файле, и никогда это не перезаписывает.
IgnoreignoredKeysПолностью исключает ключ из целевого файла.

Все три принимают пути к ключам в dot/bracket notation, которая повторяет структуру файла:

json
{
  "files": [
    {
      "pattern": "content/en/app.json",
      "lockedKeys": ["meta.version"],
      "preservedKeys": ["legal.terms"],
      "ignoredKeys": ["internal.debug"]
    }
  ]
}

Lock — чтобы значение везде оставалось одинаковым#

lockedKeys копирует исходное значение в каждый целевой файл без перевода. Используйте это для значений, которые должны оставаться побайтно идентичными во всех локалях:

json
{
  "pattern": "content/en/app.json",
  "lockedKeys": ["meta.version", "config.apiUrl"]
}

de.json и fr.json получают meta.version с точной строкой из исходника. Измените исходник — и следующий lingo push распространит новое значение на все локали, по-прежнему без перевода.

Preserve — защитите перевод, сделанный вручную#

preservedKeys указывает движку никогда не перезаписывать уже существующее целевое значение. Используйте это, когда ключу нужен человеческий перевод — юридический текст, compliance-тексты и всё, что вы уже проверили и не хотите, чтобы модель трогала:

json
{
  "pattern": "content/en/settings.jsonc",
  "preservedKeys": ["featureFlags"]
}

При первом переводе движок подставляет значение из исходника, а затем оставляет ваши правки нетронутыми при каждом следующем запуске. Сравните с overrides ниже.

Ignore — уберите ключ из выходного файла#

ignoredKeys полностью удаляет ключ из целевых файлов — он не переводится, не копируется и не записывается. Используйте это для отладочных строк, внутренних флагов и тестовых данных, которые не должны попадать в локализованную сборку:

json
{
  "pattern": "content/en/app.json",
  "ignoredKeys": ["internal.debug", "dev.testData"]
}

JSON и JSONC

Управление ключами работает со структурированными форматами ключ/значение — json и jsonc. Для форматов семейства Markdown вместо этого ограничивайте область перевода с помощью translateFrontmatterFields и translateComponentProps (см. Formats).

Overrides и preserve#

Существующее целевое значение может пережить запуск двумя способами:

  • Preserve (preservedKeys) — декларативный подход. Ключ защищён конфигурацией во всех локалях и навсегда.
  • Локальные правки — lingo push сравнивает хеш каждого целевого файла с lockfile. Если вы вручную изменили целевой файл, push помечает это как skipped (local edits) и оставляет без изменений. Передайте --force (с областью действия), чтобы перезаписать. См. lingo push.

Используйте preservedKeys, если защита должна быть постоянной и действовать для всех локалей; для разовых ручных правок полагайтесь на обнаружение локальных изменений.

Переход с legacy CLI#

В legacy CLI также было переименование ключей (перенос существующего перевода при изменении идентификатора ключа). В текущем CLI этого нет — состояние перевода отслеживается по хешу файла, поэтому при переименовании ключ будет переведён заново при следующем push. Lock, preserve и ignore сохраняются, но с одним изменением: пути используют dot/bracket notation (meta.version) вместо прежней slash notation (meta/version).

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

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