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.
21 lines (20 loc) • 1.09 kB
JavaScript
import { detectCurrentLocale } from "./utils/locale-detector.js";
import { useRuntimeConfig } from "#imports";
export const useLocaleServerMiddleware = (event, defaultLocale, currentLocale) => {
const config = useRuntimeConfig(event);
const { locales, defaultLocale: configDefaultLocale, fallbackLocale } = config.public.i18nConfig;
const detectedLocale = currentLocale || detectCurrentLocale(event, { fallbackLocale, defaultLocale: defaultLocale || configDefaultLocale });
const localeConfig = locales?.find((l) => l.code === detectedLocale) ?? null;
const availableLocales = locales?.map((l) => l.code) ?? [];
const isDefault = detectedLocale === (defaultLocale || configDefaultLocale || "en");
const isFallback = detectedLocale === (fallbackLocale || defaultLocale || configDefaultLocale || "en");
return {
current: detectedLocale,
default: defaultLocale || configDefaultLocale || "en",
fallback: fallbackLocale || defaultLocale || configDefaultLocale || "en",
available: availableLocales,
locale: localeConfig,
isDefault,
isFallback
};
};