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.
38 lines (37 loc) • 1.6 kB
JavaScript
import { getEnabledLocaleCodes, getEnabledLocales } from "@i18n-micro/utils/active-locales";
import { resolveI18nConfigWithRuntimeOverrides } from "@i18n-micro/utils/runtime-config";
import { getI18nConfig } from "#i18n-internal/strategy";
import { useRuntimeConfig } from "#imports";
import { detectCurrentLocale } from "./locale-detector.js";
export const useLocaleServerMiddleware = (event, defaultLocale, currentLocale) => {
const config = resolveI18nConfigWithRuntimeOverrides(
getI18nConfig(),
useRuntimeConfig(event).public
);
const { locales, defaultLocale: configDefaultLocale, fallbackLocale } = config;
const enabledLocales = getEnabledLocales(locales);
const detectedLocale = currentLocale || detectCurrentLocale(
event,
{
fallbackLocale,
defaultLocale: defaultLocale || configDefaultLocale,
locales: enabledLocales,
localeCookie: config.localeCookie || "user-locale",
autoDetectLanguage: true
},
defaultLocale
);
const localeConfig = enabledLocales.find((l) => l.code === detectedLocale) ?? null;
const availableLocales = getEnabledLocaleCodes(locales);
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
};
};