Skip to content

Справочник

Архитектура

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-kitvue ^3.3, vue-i18n ^9.0Runtime composables и плагин — для приложений Vue
vue-i18n-kit/vitevue ^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