Skip to content

Commit 356927e

Browse files
okamoaiBobbieGoede
andauthored
perf: load client-side locale files in parallel (#3875)
Co-authored-by: Bobbie Goede <[email protected]>
1 parent 9f62ed8 commit 356927e

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

src/runtime/shared/messages.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,15 @@ async function getLocaleMessages(locale: string, loader: LocaleLoader) {
6767
*/
6868
export async function getLocaleMessagesMerged(locale: string, loaders: LocaleLoader[] = []) {
6969
const nuxtApp = useNuxtApp()
70+
const messages = await Promise.all(
71+
loaders.map(loader => nuxtApp.runWithContext(() => getLocaleMessages(locale, loader))),
72+
)
73+
7074
const merged: LocaleMessages<DefineLocaleMessage> = {}
71-
for (const loader of loaders) {
72-
deepCopy(await nuxtApp.runWithContext(async () => await getLocaleMessages(locale, loader)), merged)
75+
for (const message of messages) {
76+
deepCopy(message, merged)
7377
}
78+
7479
return merged
7580
}
7681

@@ -79,17 +84,20 @@ export async function getLocaleMessagesMerged(locale: string, loaders: LocaleLoa
7984
*/
8085
export async function getLocaleMessagesMergedCached(locale: string, loaders: LocaleLoader[] = []) {
8186
const nuxtApp = useNuxtApp()
82-
const merged: LocaleMessages<DefineLocaleMessage> = {}
83-
84-
for (const loader of loaders) {
87+
const messages = await Promise.all(loaders.map(async (loader) => {
8588
const cached = getCachedMessages(loader)
86-
const messages = cached || (await nuxtApp.runWithContext(async () => await getLocaleMessages(locale, loader)))
89+
const messages = cached || (await nuxtApp.runWithContext(() => getLocaleMessages(locale, loader)))
8790

8891
if (!cached && loader.cache !== false) {
8992
cacheMessages.set(loader.key, { ttl: Date.now() + __I18N_CACHE_LIFETIME__ * 1000, value: messages })
9093
}
9194

92-
deepCopy(messages, merged)
95+
return messages
96+
}))
97+
98+
const merged: LocaleMessages<DefineLocaleMessage> = {}
99+
for (const message of messages) {
100+
deepCopy(message, merged)
93101
}
94102

95103
return merged

0 commit comments

Comments
 (0)