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.