diff --git a/src/runtime/plugins/i18n.ts b/src/runtime/plugins/i18n.ts index ba29f4852..5341129dc 100644 --- a/src/runtime/plugins/i18n.ts +++ b/src/runtime/plugins/i18n.ts @@ -32,8 +32,7 @@ import { extendBaseUrl, extendPrefixable, extendSwitchLocalePathIntercepter, - _setLocale, - resolveVueI18nOptions + _setLocale } from '#build/i18n.utils.mjs' import { getBrowserLocale as _getBrowserLocale, @@ -42,8 +41,9 @@ import { detectBrowserLanguage, DefaultDetectBrowserLanguageFromResult } from '#build/i18n.internal.mjs' +import defu from 'defu' -import type { Composer, Locale } from 'vue-i18n' +import type { Composer, Locale, I18nOptions } from 'vue-i18n' import type { LocaleObject, ExtendProperyDescripters, VueI18nRoutingPluginOptions } from 'vue-i18n-routing' import type { NuxtApp } from '#app' @@ -62,7 +62,13 @@ export default defineNuxtPlugin({ const { vueApp: app } = nuxt const nuxtContext = nuxt as unknown as NuxtApp - const vueI18nOptions = await resolveVueI18nOptions(vueI18nConfigs) + let vueI18nOptions: I18nOptions = { messages: {} } + for (const configFile of vueI18nConfigs) { + const { default: resolver } = await configFile() + const resolved = typeof resolver === 'function' ? await resolver() : resolver + + vueI18nOptions = defu(vueI18nOptions, resolved) + } const useCookie = nuxtI18nOptions.detectBrowserLanguage && nuxtI18nOptions.detectBrowserLanguage.useCookie const { __normalizedLocales: normalizedLocales } = nuxtI18nInternalOptions diff --git a/src/runtime/utils.ts b/src/runtime/utils.ts index c7ac783d2..34c92f888 100644 --- a/src/runtime/utils.ts +++ b/src/runtime/utils.ts @@ -31,7 +31,6 @@ import { DefaultDetectBrowserLanguageFromResult } from '#build/i18n.internal.mjs' import { joinURL, isEqual } from 'ufo' -import defu from 'defu' import type { Route, @@ -44,12 +43,7 @@ import type { } from 'vue-i18n-routing' import type { NuxtApp } from '#app' import type { I18n, I18nOptions, Locale, FallbackLocale, LocaleMessages, DefineLocaleMessage } from 'vue-i18n' -import type { - NuxtI18nOptions, - DetectBrowserLanguageOptions, - RootRedirectOptions, - VueI18nConfig -} from '#build/i18n.options.mjs' +import type { NuxtI18nOptions, DetectBrowserLanguageOptions, RootRedirectOptions } from '#build/i18n.options.mjs' import type { DetectLocaleContext } from '#build/i18n.internal.mjs' import type { DeepRequired } from 'ts-essentials' @@ -537,17 +531,4 @@ export function extendBaseUrl( } } -export const resolveVueI18nOptions = async (configFiles: VueI18nConfig[]) => { - let resolvedOptions: I18nOptions = { messages: {} } - - for (const configFile of configFiles) { - const { default: resolver } = await configFile() - const resolved = typeof resolver === 'function' ? await resolver() : resolver - - resolvedOptions = defu(resolvedOptions, resolved) - } - - return resolvedOptions -} - /* eslint-enable @typescript-eslint/no-explicit-any */