Конфигурация
Базовый словарь (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.
Режим namespace (namespaces)
boolean · по умолчанию: false. Включает режим namespace: верхнеуровневые ключи JSON трактуются как namespace.
// i18n-kit.config.json
{
"namespaces": true,
}- CLI — включает
vue-i18n-kit split/vue-i18n-kit merge-ns(см. CLI — генерация и скаффолдинг). - Редактор — показывает фильтр по namespace над таблицей ключей.
- Vite-плагин — механизм ленивой загрузки в рантайме, работающий в паре с этим полем, см. Разделение по namespace.
Отслеживание устаревания (staleTracking)
boolean · по умолчанию: false. Отслеживает изменения значений референсной локали, чтобы переводы в других локалях можно было пометить как «требуют проверки». Полный механизм — см. Обнаружение устаревших переводов — хэши хранятся в i18n-kit.notes.json.
// i18n-kit.config.json
{
"staleTracking": true,
}Машинный перевод (translation)
Настройки функции автоперевода в редакторе — выбор движка и опции для каждого движка. Ключи API хранятся в UI редактора (localStorage), а не в этом файле, из соображений безопасности. См. Машинный перевод, как работают оба движка и обработка плейсхолдеров.
// 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)
// i18n-kit.config.json
{
"memory": {
"enabled": true,
},
}memory.enabled—boolean· по умолчанию:true. Установитеfalse, чтобы полностью отключить память переводов. Когда включена, прошлые переводы сохраняются вi18n-kit.memory.jsonи предлагаются как чипы в один клик при редактировании похожих исходных строк в редакторе.
Сканирование исходников (scanner)
// 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не вставляли его дважды.