Skip to content

Разделение по namespace

vueI18nNamespacePlugin сканирует директорию с разбитыми файлами локалей и генерирует виртуальный модуль virtual:vue-i18n-namespaces. Модуль экспортирует объект locales, готовый для передачи в createVueI18nPlugin — каждая запись локали включает динамические вызовы import() по неймспейсам, так что Vite автоматически разбивает их на отдельные чанки.

ts
// 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'] },
      },
    }),
  ],
})

Использование в приложении

ts
import { locales } from 'virtual:vue-i18n-namespaces'

app.use(createVueI18nPlugin({ defaultLocale: 'en', locales }))

Неймспейсы, не входящие в eagerNamespaces, загружаются лениво через useNamespace():

ts
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 автоматически инвалидирует и перезагружает виртуальный модуль.