Skip to content

CLI — генерация и скаффолдинг

CLI vue-i18n-kit помогает скаффолдить и аудировать JSON-файлы локалей.

bash
# Через npx (установка не нужна)
npx vue-i18n-kit <command> [options]

# Или после установки пакета
vue-i18n-kit <command> [options]

Эта страница описывает команды скаффолдинга и генерации — init, add, merge, types, split, merge-ns. Команды аудита и отчётности (check, prune, stale, export, import, stats) — на странице CLI — аудит и отчёты.

init — интерактивный мастер настройки

Запускает интерактивный мастер, который скаффолдит всю настройку локализации.

bash
vue-i18n-kit init

Что он делает:

  1. Автоматически сканирует проект на наличие существующего вызова createVueI18nPlugin и предзаполняет коды локалей по умолчанию.
  2. Запрашивает коды локалей, отображаемые имена и эмодзи-флаги.
  3. Запрашивает пути к директории локалей и директории тулкита.
  4. Обнаруживает vite.config.ts / nuxt.config.ts и опционально автоматически добавляет vueI18nMapPlugin.
  5. Обрабатывает существующие JSON-файлы локалей — сохранить, перезаписать или скопировать структуру из другой локали.
  6. Записывает i18n-kit.config.json, i18n-tools/locales.config.json, заготовки JSON локалей.

Запуск vue-i18n-kit init в существующем проекте предлагает три варианта: использовать текущий конфиг как есть, обновить настройки или переинициализировать с нуля.

Интеграция с i18n Ally — мастер опционально генерирует .vscode/settings.json для i18n Ally с инлайн-предпросмотром переводов и подсветкой отсутствующих ключей.

add — добавить новую локаль

Копирует структуру существующего файла локали в новый.

bash
vue-i18n-kit add fr
vue-i18n-kit add fr --from en --empty
vue-i18n-kit add de --dir src/i18n --from en --empty
ФлагПо умолчаниюОписание
--dir <path>src/localesДиректория локалей.
--from <locale>первый файл в директорииИсходная локаль для копирования структуры.
--emptyfalseЗаписывать пустые строки вместо копирования значений источника.

merge — слить общий словарь

Глубоко сливает базовый или корпоративный JSON-словарь в файлы локалей проекта. По умолчанию добавляет только отсутствующие ключи — существующие переводы остаются нетронутыми, если не передан --overwrite.

bash
vue-i18n-kit merge shared/base.json --dry
vue-i18n-kit merge shared/base.json
vue-i18n-kit merge updates.json --locale ru --overwrite
ФлагПо умолчаниюОписание
--dir <path>src/localesДиректория локалей.
--locale <code>все локалиСлить только в эту локаль.
--overwritefalseПерезаписывать существующие ключи вместо их пропуска.
--dryfalseПредпросмотр изменений без записи файлов.
--no-sortfalseПропустить алфавитную сортировку результирующих ключей.

Ключи, перечисленные в ignore.prune и locked в i18n-kit.config.json, никогда не перезаписываются — даже с --overwrite.

types — сгенерировать типы TypeScript

Генерирует union-тип TranslationKey из референсного файла локали. Даёт автодополнение и проверку ключей на этапе компиляции при вызове t().

bash
vue-i18n-kit types
vue-i18n-kit types --out src/types/i18n.d.ts --locale en --watch
ФлагПо умолчаниюОписание
--out <path>src/i18n.d.tsПуть к выходному файлу.
--locale <code>первая в конфигеЛокаль, используемая как источник ключей.
--dir <path>src/localesДиректория локалей.
--watchfalseАвтоматически перегенерировать при изменении файла локали.

Пример сгенерированного файла:

ts
// src/i18n.d.ts — сгенерировано vue-i18n-kit, не редактировать

export type TranslationKey = 'buttons.cancel' | 'buttons.submit' | 'greeting' | 'items'

declare module 'vue-i18n-kit' {
  interface Register {
    key: TranslationKey
  }
}

С расширением Register компилятор будет выдавать ошибку на неизвестных ключах:

ts
const { t } = useT()
t('buttons.submit') // ✓
t('buttons.submitt') // ✗ ошибка TypeScript

split — разбить монолитную локаль на неймспейсы

Разбивает каждый {locale}.json на файлы по неймспейсам: {locale}/{namespace}.json.

bash
vue-i18n-kit split
vue-i18n-kit split --dir src/locales --out src/locales/split --dry
ФлагПо умолчаниюОписание
--dir <path>localesDir из конфигаИсходная директория локалей.
--out <path><dir>/splitВыходная директория.
--dryfalseПредпросмотр без записи файлов.

merge-ns — слить файлы неймспейсов обратно в плоский JSON

Обратная операция к split: читает все файлы *.json в каждой поддиректории локали и сливает их в единый {locale}.json.

bash
vue-i18n-kit merge-ns
vue-i18n-kit merge-ns --dir src/locales/split --out src/locales --dry