Skip to content

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

Базовый словарь (extends) ​

Поле extends в i18n-kit.config.json позволяет проекту наследовать переводы из общей базы — например, из корпоративного терминологического словаря, поддерживаемого централизованно в монорепозитории или npm-пакете.

json
// i18n-kit.config.json
{
  "extends": "../../shared-i18n"
}

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

Типичная структура:

monorepo/
├── shared-i18n/
│   ├── en.json     ← базовый словарь (общекорпоративные термины)
│   └── ru.json
└── my-app/
    ├── i18n-kit.config.json   ← "extends": "../shared-i18n"
    └── src/locales/
        ├── en.json   ← переопределения для приложения
        └── ru.json

Заблокированные ключи ​

Поле locked в базовом конфиге объявляет ключи, которые дочерние проекты не могут изменять.

jsonc
// shared-i18n/i18n-kit.config.json
{
  "localesDir": "locales",
  "locked": ["brand.name", "brand.tagline", "legal.*"],
}
УровеньПоведение
UI редактораЯчейка серая со значком замка; подсказка «Ключ заблокирован базовым словарём»
PUT /api/locale/:codeСервер возвращает 403, если значение заблокированного ключа изменяется
merge --overwriteЗаблокированные ключи пропускаются даже с --overwrite
pruneЗаблокированные ключи никогда не удаляются

Шаблоны заблокированных ключей поддерживают glob-синтаксис: "legal.*" (все ключи под legal), "brand.name" (точное совпадение), "**" (всё).

Правила валидации (rules) ​

Раздел rules в i18n-kit.config.json настраивает поведение валидации редактора локалей. Все поля опциональны.

jsonc
// i18n-kit.config.json
{
  "rules": {
    "interpolationPatterns": ["{var}", "{{var}}"],
    "lengthWarningFactor": 3,
    "warnOnHtmlTags": true,
    "warnOnIcuErrors": true,
    "warnOnDuplicateValues": true,
    "minValueLength": 0,
  },
}
ПолеПо умолчаниюОписание
interpolationPatterns["{var}"]Что считается переменной интерполяции. Также поддерживает "{{var}}", ":param", "%(var)s".
lengthWarningFactor2.5Предупреждать, если value.length > ref.length × фактор. Установите 0, чтобы отключить.
warnOnHtmlTagstrueПредупреждать, когда значения содержат HTML-теги.
warnOnIcuErrorstrueПредупреждать о некорректном ICU (незакрытые скобки, отсутствие other{}).
warnOnDuplicateValuestrueПредупреждать, если у ключа одинаковые значения во всех локалях.
minValueLength0Предупреждать, если значение короче этого количества символов (0 = отключено).

Тот же объект rules можно передать в vueI18nCheckPlugin.

Списки исключений (ignore) ​

Раздел ignore позволяет добавить в белый список ключи и пути, которые в противном случае вызывали бы предупреждения или удалялись бы инструментами CLI.

jsonc
// i18n-kit.config.json
{
  "ignore": {
    "prune": ["status.*", "dynamic.*"],
    "duplicates": ["brand.name", "app.version"],
    "unused": ["seo.*", "meta.*"],
    "scanExclude": ["src/tests/**", "scripts/**"],
  },
}

Все шаблоны поддерживают glob-синтаксис: * соответствует одному сегменту, ** — любому числу сегментов пути.

Шаблоны ignore.prune также учитываются предпросмотром prune --dry.

Режим namespace (namespaces) ​

boolean · по умолчанию: false. Включает режим namespace: верхнеуровневые ключи JSON трактуются как namespace.

jsonc
// i18n-kit.config.json
{
  "namespaces": true,
}

Отслеживание устаревания (staleTracking) ​

boolean · по умолчанию: false. Отслеживает изменения значений референсной локали, чтобы переводы в других локалях можно было пометить как «требуют проверки». Полный механизм — см. Обнаружение устаревших переводов — хэши хранятся в i18n-kit.notes.json.

jsonc
// i18n-kit.config.json
{
  "staleTracking": true,
}

Машинный перевод (translation) ​

Настройки функции автоперевода в редакторе — выбор движка и опции для каждого движка. Ключи API хранятся в UI редактора (localStorage), а не в этом файле, из соображений безопасности. См. Машинный перевод, как работают оба движка и обработка плейсхолдеров.

jsonc
// i18n-kit.config.json
{
  "translation": {
    "engine": "deepl",
    "deepl": {
      "formality": "more",
    },
    "libretranslate": {
      "apiUrl": "https://libretranslate.com",
    },
  },
}
  • translation.engine — 'libretranslate' | 'deepl' · по умолчанию: 'libretranslate'.
  • translation.deepl.formality — 'default' | 'more' | 'less' | 'prefer_more' | 'prefer_less' · по умолчанию: 'default'. Поддерживается только для некоторых целевых языков (DE, FR, IT, ES, NL, PL, PT, JA, RU).
  • translation.libretranslate.apiUrl — string, опционально. URL инстанса LibreTranslate для self-hosted развёртываний.

Память переводов (memory) ​

jsonc
// i18n-kit.config.json
{
  "memory": {
    "enabled": true,
  },
}
  • memory.enabled — boolean · по умолчанию: true. Установите false, чтобы полностью отключить память переводов. Когда включена, прошлые переводы сохраняются в i18n-kit.memory.json и предлагаются как чипы в один клик при редактировании похожих исходных строк в редакторе.

Сканирование исходников (scanner) ​

jsonc
// i18n-kit.config.json
{
  "scanner": {
    "include": ["src/**/*.{vue,ts,tsx}"],
    "exclude": ["src/tests/**"],
  },
}
  • scanner.include — string[]. Glob-шаблоны для сканирования использования ключей t()/tm()/$t() в исходных файлах — питает обнаружение неиспользуемых/фантомных ключей и карту использования в редакторе.
  • scanner.exclude — string[]. Glob-шаблоны, исключённые из сканирования. ignore.scanExclude (выше) объединяется с этим списком.
  • scanner.lastScan — string, записывается автоматически после каждого сканирования. Не предназначено для ручного редактирования.

Автоматически управляемые поля ​

Следующие верхнеуровневые поля записываются vue-i18n-kit init/auto-config/самим редактором, а не предназначены для ручного редактирования — перечислены здесь, чтобы не быть загадкой при открытии сгенерированного i18n-kit.config.json:

  • version — версия схемы конфига (сейчас 1).
  • localesDir — директория с JSON-файлами локалей относительно корня проекта.
  • toolkitDir — директория для сгенерированных файлов тулкита (карта локалей, карта записей) относительно корня проекта.
  • locales — массив записей { code, path, meta, createdAt, updatedAt }, по одной на каждую зарегистрированную локаль — собственная запись редактора о каждом файле локали, отличная от опции locales плагина в рантайме, см. Настройка плагина.
  • integrations — { viteConfigPath?, nuxtConfigPath?, pluginAdded, lastUpdated }. Отслеживает, был ли уже вставлен vueI18nMapPlugin в ваш Vite/Nuxt-конфиг, чтобы init/auto-config не вставляли его дважды.