Справочник
Архитектура
vue-i18n-kit
│
├── plugin.ts
│ createVueI18nPlugin() — устанавливает vue-i18n, предзагружает defaultLocale/fallbackLocale,
│ хранит I18nService через app.provide(); возвращает Plugin & { service }
│
├── state.ts
│ Состояние на приложение через provide/inject — Ref locale, Ref isLoading, availableLocales,
│ список подписчиков, кэш сообщений; безопасно для SSR (без синглтонов на уровне модуля)
│
├── composables/
│ useLocale() — locale, setLocale, isLoading, localeMeta
│ useT() — поиск ключа t() + интерполяция; tm() ICU-плюрализация
│ useAvailableLocales() — вычисляемый список { code, meta } из зарегистрированных локалей
│ useFormat() — formatDate / formatNumber / formatCurrency через Intl
│ usePluralize() — движок Intl.PluralRules, питающий tm(); экспортирует pluralCategory()
│
├── utils/
│ loadLocale.ts — разрешает синхронные объекты и асинхронные загрузчики; кэширует по коду локали
│ persistLocale.ts — хелперы чтения/записи localStorage (try/catch для SSR/приватного режима)
│ localeKeys.ts — flattenKeys, compareLocales (общие для CLI + Vite-плагина)
│ localeEntry.ts — isLocaleDefinition, extractMessages, extractMeta
│
├── vite-plugin/
│ vueI18nCheckPlugin — сравнение ключей при buildStart + HMR с референсной локалью
│ vueI18nInlinePlugin — virtual:vue-i18n-kit/locales (встраивает JSON в бандл)
│ vueI18nNamespacePlugin — virtual:vue-i18n-namespaces (динамические импорты по неймспейсам)
│ vueI18nDevPlugin — переписывание шаблонов SFC (автообёртка); внедряет оверлей I18nInspect
│ vueI18nMapPlugin — карта локалей для сервера редактора (пишется через auto-config)
│
├── ui-app/ — SPA редактора локалей на Vue (собирается в dist/ui-server/public/)
│ App.vue, LocaleTable.vue, Dashboard.vue, api.ts
│
├── ui-server/
│ server.ts — HTTP-сервер Node.js; читает/пишет JSON локали; SSE для живой перезагрузки
│
└── cli/
init / add / check / merge / prune / types / split / merge-ns
stale / export / import / stats / auto-config / ui / devРазмер бандла и peer-зависимости
| Точка входа | Peer-зависимости | Примечания |
|---|---|---|
vue-i18n-kit | vue ^3.3, vue-i18n ^9.0 | Runtime composables и плагин — для приложений Vue |
vue-i18n-kit/vite | vue ^3.3, vite >=5.0 (опционально) | Плагины Vite — для vite.config.ts |
vue-i18n-kit (bin) | — | CLI — init, add, check, ui, dev и другое |
Пакет поставляется как tree-shakeable ESM (dist/index.mjs) и CommonJS (dist/index.cjs). Неиспользуемые composables удаляются tree-shaking'ом. Vite-плагины и CLI не входят в браузерный бандл.
Разработка
bash
# Установить зависимости
npm install
# Сборка (ESM + CJS + декларации типов)
npm run build
# Запустить тесты
npm test
# Режим наблюдения
npm run test:watch
# Проверка типов
npm run typecheckТесты написаны с использованием Vitest и @vue/test-utils. Тестовый набор покрывает плагин, все composables, движок ICU, утилиты ключей локали и логику разграничения LocaleEntry.
Лицензия
MIT