Разделение по namespace
vueI18nNamespacePlugin сканирует директорию с разбитыми файлами локалей и генерирует виртуальный модуль virtual:vue-i18n-namespaces. Модуль экспортирует объект locales, готовый для передачи в createVueI18nPlugin — каждая запись локали включает динамические вызовы import() по неймспейсам, так что Vite автоматически разбивает их на отдельные чанки.
// vite.config.ts
import { vueI18nNamespacePlugin } from 'vue-i18n-kit/vite'
export default defineConfig({
plugins: [
vue(),
vueI18nNamespacePlugin({
dir: 'src/locales/split',
locales: {
en: { meta: { display: 'English', flag: '🇬🇧' }, eagerNamespaces: ['common'] },
ru: { meta: { display: 'Русский', flag: '🇷🇺' }, eagerNamespaces: ['common'] },
},
}),
],
})Использование в приложении
import { locales } from 'virtual:vue-i18n-namespaces'
app.use(createVueI18nPlugin({ defaultLocale: 'en', locales }))Неймспейсы, не входящие в eagerNamespaces, загружаются лениво через useNamespace():
const { isLoading } = useNamespace('dashboard')
// или несколько сразу:
const { isLoading } = useNamespace(['dashboard', 'charts'])Опции
dir
string · по умолчанию: 'src/locales/split'. Директория, содержащая поддиректории локалей (<dir>/<locale>/<namespace>.json).
locales
Record<string, { meta?, eagerNamespaces? }> · по умолчанию: {}. Конфигурация по локалям. Локали, найденные в директории, но не перечисленные здесь, включаются автоматически.
HMR: при изменении любого JSON-файла неймспейса внутри dir Vite автоматически инвалидирует и перезагружает виртуальный модуль.