nuxt-i18n-micro
Version:
Nuxt I18n Micro is a lightweight, high-performance internationalization module for Nuxt, designed to handle multi-language support with minimal overhead, fast build times, and efficient runtime performance.
26 lines (25 loc) • 1.1 kB
JavaScript
import { isNoPrefixStrategy, useTranslationHelper } from "nuxt-i18n-micro-core";
import { defineNuxtPlugin, useRuntimeConfig, useRouter } from "#imports";
const i18nHelper = useTranslationHelper();
export default defineNuxtPlugin(async (nuxtApp) => {
const config = useRuntimeConfig();
const i18nConfig = config.public.i18nConfig;
const router = useRouter();
const locale = nuxtApp.$getLocale();
const routeName = nuxtApp.$getRouteName();
await nuxtApp.callHook("i18n:register", (translations, selectedLocale) => {
i18nHelper.mergeTranslation(selectedLocale ?? locale, routeName, translations, true);
}, locale);
router.beforeEach(async (to, from, next) => {
if (to.path !== from.path || isNoPrefixStrategy(i18nConfig.strategy)) {
const locale2 = nuxtApp.$getLocale(to);
const routeName2 = nuxtApp.$getRouteName(to);
await nuxtApp.callHook("i18n:register", (translations, selectedLocale) => {
i18nHelper.mergeTranslation(selectedLocale ?? locale2, routeName2, translations, true);
}, locale2);
}
if (next) {
next();
}
});
});