UNPKG

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.

36 lines (35 loc) 1.3 kB
import { useLocaleHead } from "../composables/useLocaleHead.js"; import { useRequestURL, useHead, defineNuxtPlugin, useRuntimeConfig, useRoute } from "#imports"; import { watch } from "vue"; import { isMetaDisabledForRoute } from "../utils/route-utils.js"; const host = process.env.HOST ?? "localhost"; const port = process.env.PORT ?? "host"; export default defineNuxtPlugin((nuxtApp) => { const config = useRuntimeConfig(); const route = useRoute(); const i18nConfig = config.public.i18nConfig; const currentLocale = nuxtApp.$getLocale?.(); if (isMetaDisabledForRoute(route, i18nConfig.routeDisableMeta, currentLocale)) { return; } const schema = port === "443" ? "https" : "http"; const defaultUrl = port === "80" || port === "443" ? `${schema}://${host}` : `${schema}://${host}:${port}`; const url = useRequestURL(); const baseUrl = (i18nConfig.metaBaseUrl || url.origin || defaultUrl).toString(); const { metaObject, updateMeta } = useLocaleHead({ addDirAttribute: true, identifierAttribute: "id", addSeoAttributes: true, baseUrl }); useHead(metaObject); if (import.meta.server) { updateMeta(); } else if (import.meta.client) { watch( () => useRoute().fullPath, () => updateMeta(), { immediate: true } ); } });