Конфигурация
Базовый словарь (extends)
Поле extends в i18n-kit.config.json позволяет проекту наследовать переводы из общей базы — например, из корпоративного терминологического словаря, поддерживаемого централизованно в монорепозитории или npm-пакете.
// 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 в базовом конфиге объявляет ключи, которые дочерние проекты не могут изменять.
// 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 настраивает поведение валидации редактора локалей. Все поля опциональны.
// i18n-kit.config.json
{
"rules": {
"interpolationPatterns": ["{var}", "{{var}}"],
"lengthWarningFactor": 3,
"warnOnHtmlTags": true,
"warnOnIcuErrors": true,
"warnOnDuplicateValues": true,
"minValueLength": 0,
},
}| Поле | По умолчанию | Описание |
|---|---|---|
interpolationPatterns | ["{var}"] | Что считается переменной интерполяции. Также поддерживает "{{var}}", ":param", "%(var)s". |
lengthWarningFactor | 2.5 | Предупреждать, если value.length > ref.length × фактор. Установите 0, чтобы отключить. |
warnOnHtmlTags | true | Предупреждать, когда значения содержат HTML-теги. |
warnOnIcuErrors | true | Предупреждать о некорректном ICU (незакрытые скобки, отсутствие other{}). |
warnOnDuplicateValues | true | Предупреждать, если у ключа одинаковые значения во всех локалях. |
minValueLength | 0 | Предупреждать, если значение короче этого количества символов (0 = отключено). |
Тот же объект rules можно передать в vueI18nCheckPlugin.
Списки исключений (ignore)
Раздел ignore позволяет добавить в белый список ключи и пути, которые в противном случае вызывали бы предупреждения или удалялись бы инструментами CLI.
// 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.