Игнорирование ключей

Lingo.dev CLI позволяет игнорировать определённые ключи перевода, чтобы они полностью исключались из процесса перевода. Игнорируемые ключи не копируются в целевые файлы и остаются нетронутыми во время операций CLI.

Когда вы игнорируете ключи, CLI полностью пропускает их при обнаружении контента и генерации перевода.

Настройка игнорирования ключей

Добавьте ignoredKeys в конфигурацию вашего bucket в файле i18n.json:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"],
      "ignoredKeys": ["internal/debug", "dev/settings", "temp/cache"]
    }
  }
}

Массив ignoredKeys использует обозначение с косой чертой (/) для указания вложенных ключей.

Как работает игнорирование ключей

Во время обработки перевода Lingo.dev CLI:

  1. Определяет игнорируемые ключи из вашей конфигурации
  2. Исключает их из обнаружения контента — игнорируемые ключи никогда не обрабатываются
  3. Пропускает их в целевых файлах — игнорируемые ключи не появляются в сгенерированных переводах
  4. Сохраняет разделение между контентом для разработки и производства

Пример рабочего процесса:

// locales/en.json (исходный файл)
{
  "welcome": "Welcome to our platform",
  "system": {
    "component": "Lingo.dev CLI",
    "version": "1.0.0"
  },
  "internal": {
    "debug": "Debug mode enabled",
    "testData": "Sample test content"
  }
}

С конфигурацией игнорируемых ключей:

{
  "ignoredKeys": ["internal/debug", "internal/testData"]
}

Сгенерированный перевод на испанский:

// locales/es.json (сгенерированный файл)
{
  "welcome": "Bienvenido a nuestra plataforma",
  "system": {
    "component": "Lingo.dev CLI",
    "version": "1.0.0"
  }
}

Переводятся только неигнорируемые ключи. Весь раздел internal исключён из целевых файлов.

Вложенные пути ключей

Используйте обозначение с косой чертой (/), чтобы игнорировать ключи на любой глубине:

{
  "ignoredKeys": [
    "development/logging/level",
    "testing/mock/data",
    "admin/internal/config"
  ]
}

Это обозначение работает с сложными вложенными структурами:

// Исходная структура
{
  "development": {
    "logging": {
      "level": "verbose"
    }
  }
}

Путь development/logging/level исключает эту конфигурацию из перевода.

Ключи с точками

Обозначение с косой чертой обрабатывает ключи, содержащие точки в их названиях:

// Исходные данные с ключами, содержащими точки
{
  "dev": {
    "api.mock": "Мок API включен",
    "cache.clear": "Очистить кэш при запуске"
  }
}

Игнорируйте эти ключи с помощью:

{
  "ignoredKeys": ["dev/api.mock", "dev/cache.clear"]
}

Несколько типов хранилищ

Разные форматы файлов могут иметь разные игнорируемые ключи:

{
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"],
      "ignoredKeys": ["internal/debug", "dev/settings"]
    },
    "yaml": {
      "include": ["translations/[locale].yml"],
      "ignoredKeys": ["test/data", "admin/config"]
    }
  }
}

Каждый тип хранилища поддерживает собственный список игнорируемых ключей в зависимости от структуры содержимого.

Игнорирование ключей vs Блокировка ключей

Игнорирование ключей и блокировка ключей имеют разные цели:

Игнорирование ключей (ignoredKeys):

  • Ключи полностью исключаются из процесса перевода
  • Игнорируемые ключи не появляются в целевых файлах
  • Используется для разработки, тестирования или внутреннего контента, который не должен переводиться

Блокировка ключей (lockedKeys):

  • Ключи включаются в процесс перевода, но их значения остаются неизменными
  • Заблокированные ключи появляются в целевых файлах с идентичными исходными значениями
  • Используется для технических идентификаторов, названий компонентов или значений, которые должны оставаться неизменными

Пример сравнения:

// Исходный файл
{
  "welcome": "Добро пожаловать",
  "system": {
    "component": "Lingo.dev Engine"
  },
  "internal": {
    "debug": "Отладка включена"
  }
}

// Конфигурация
{
  "lockedKeys": ["system/component"],
  "ignoredKeys": ["internal/debug"]
}

// Сгенерированный целевой файл
{
  "welcome": "Добро пожаловать",
  "system": {
    "component": "Lingo.dev Engine"
  }
  // internal/debug полностью отсутствует
}