@@ -62,32 +62,37 @@ export async function loadInitialMessages<Context extends NuxtApp = NuxtApp>(
6262 initialLocale : Locale
6363 fallbackLocale : FallbackLocale
6464 localeCodes : string [ ]
65- }
65+ } ,
66+ nuxt : { runWithContext : NuxtApp [ 'runWithContext' ] }
6667 // eslint-disable-next-line @typescript-eslint/no-explicit-any
6768) : Promise < Record < string , any > > {
6869 const { defaultLocale, initialLocale, localeCodes, fallbackLocale, lazy } = options
6970
7071 // load fallback messages
7172 if ( lazy && fallbackLocale ) {
7273 const fallbackLocales = makeFallbackLocaleCodes ( fallbackLocale , [ defaultLocale , initialLocale ] )
73- await Promise . all ( fallbackLocales . map ( locale => loadAndSetLocaleMessages ( locale , localeLoaders , messages ) ) )
74+ await Promise . all ( fallbackLocales . map ( locale => loadAndSetLocaleMessages ( locale , localeLoaders , messages , nuxt ) ) )
7475 }
7576
7677 // load initial messages
7778 const locales = lazy ? [ ...new Set < Locale > ( ) . add ( defaultLocale ) . add ( initialLocale ) ] : localeCodes
78- await Promise . all ( locales . map ( ( locale : Locale ) => loadAndSetLocaleMessages ( locale , localeLoaders , messages ) ) )
79+ await Promise . all ( locales . map ( ( locale : Locale ) => loadAndSetLocaleMessages ( locale , localeLoaders , messages , nuxt ) ) )
7980
8081 return messages
8182}
8283
83- async function loadMessage ( locale : Locale , { key, load } : LocaleLoader ) {
84+ async function loadMessage (
85+ locale : Locale ,
86+ { key, load } : LocaleLoader ,
87+ nuxt : { runWithContext : NuxtApp [ 'runWithContext' ] }
88+ ) {
8489 const logger = /*#__PURE__*/ createLogger ( 'loadMessage' )
8590 let message : LocaleMessages < DefineLocaleMessage > | null = null
8691 try {
8792 __DEBUG__ && logger . log ( { locale } )
8893 const getter = await load ( ) . then ( r => ( 'default' in r ? r . default : r ) )
8994 if ( isFunction ( getter ) ) {
90- message = await getter ( locale )
95+ message = await nuxt . runWithContext ( ( ) => getter ( locale ) )
9196 __DEBUG__ && logger . log ( 'dynamic load' , logger . level >= 999 ? message : '' )
9297 } else {
9398 message = getter
@@ -105,7 +110,8 @@ async function loadMessage(locale: Locale, { key, load }: LocaleLoader) {
105110export async function loadLocale (
106111 locale : Locale ,
107112 localeLoaders : Record < Locale , LocaleLoader [ ] > ,
108- setter : ( locale : Locale , message : LocaleMessages < DefineLocaleMessage > ) => void
113+ setter : ( locale : Locale , message : LocaleMessages < DefineLocaleMessage > ) => void ,
114+ nuxt : { runWithContext : NuxtApp [ 'runWithContext' ] }
109115) {
110116 const logger = /*#__PURE__*/ createLogger ( 'loadLocale' )
111117 const loaders = localeLoaders [ locale ]
@@ -125,7 +131,7 @@ export async function loadLocale(
125131 } else {
126132 __DEBUG__ && ! loader . cache && logger . log ( loader . key + ' bypassing cache!' )
127133 __DEBUG__ && logger . log ( loader . key + ' is loading ...' )
128- message = await loadMessage ( locale , loader )
134+ message = await nuxt . runWithContext ( ( ) => loadMessage ( locale , loader , nuxt ) )
129135 }
130136
131137 if ( message != null ) {
@@ -142,13 +148,14 @@ type LocaleLoaderMessages =
142148export async function loadAndSetLocaleMessages (
143149 locale : Locale ,
144150 localeLoaders : Record < Locale , LocaleLoader [ ] > ,
145- messages : LocaleLoaderMessages
151+ messages : LocaleLoaderMessages ,
152+ nuxt : { runWithContext : NuxtApp [ 'runWithContext' ] }
146153) {
147154 const setter = ( locale : Locale , message : LocaleMessages < DefineLocaleMessage , Locale > ) => {
148155 const base = messages [ locale ] || { }
149156 deepCopy ( message , base )
150157 messages [ locale ] = base
151158 }
152159
153- await loadLocale ( locale , localeLoaders , setter )
160+ await loadLocale ( locale , localeLoaders , setter , nuxt )
154161}
0 commit comments