Skip to content

Commit 6fc0277

Browse files
committed
fix(prerendering): use i18n:registerModule hook
1 parent 4793150 commit 6fc0277

File tree

3 files changed

+44
-17
lines changed

3 files changed

+44
-17
lines changed

layer/i18n/i18n.config.ts

Lines changed: 0 additions & 15 deletions
This file was deleted.

layer/modules/default-configs.ts

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { defineNuxtModule } from '@nuxt/kit'
1+
import { createResolver, defineNuxtModule } from '@nuxt/kit'
22
import { defu } from 'defu'
33
import { inferSiteURL, getPackageJsonMetadata } from '../utils/meta'
44
import { getGitBranch, getGitEnv, getLocalGitInfo } from '../utils/git'
@@ -60,6 +60,29 @@ export default defineNuxtModule({
6060
...nuxt.options.i18n,
6161
strategy: 'prefix',
6262
}
63+
64+
nuxt.hook('i18n:registerModule', (register) => {
65+
const { resolve } = createResolver(import.meta.url)
66+
67+
const locales = nuxt.options.i18n?.locales?.map((locale) => {
68+
return typeof locale === 'string'
69+
? {
70+
code: locale,
71+
name: locale,
72+
file: `${locale}.json`,
73+
}
74+
: {
75+
code: locale.code,
76+
name: locale.name || locale.code,
77+
file: `${locale.code}.json`,
78+
}
79+
})
80+
81+
register({
82+
langDir: resolve('../i18n/locales'),
83+
locales,
84+
})
85+
})
6386
}
6487
},
6588
})

layer/nuxt.config.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { extendViteConfig, createResolver } from '@nuxt/kit'
1+
import { extendViteConfig, createResolver, useNuxt } from '@nuxt/kit'
22

33
const { resolve } = createResolver(import.meta.url)
44

@@ -44,6 +44,25 @@ export default defineNuxtConfig({
4444
autoSubfolderIndex: false,
4545
},
4646
},
47+
hooks: {
48+
'nitro:config'(nitroConfig) {
49+
const nuxt = useNuxt()
50+
51+
const i18nOptions = nuxt.options.i18n
52+
53+
const routes: string[] = []
54+
if (!i18nOptions) {
55+
routes.push('/')
56+
}
57+
else {
58+
routes.push(...(i18nOptions.locales?.map(locale => typeof locale === 'string' ? `/${locale}` : `/${locale.code}`) || []))
59+
}
60+
61+
nitroConfig.prerender = nitroConfig.prerender || {}
62+
nitroConfig.prerender.routes = nitroConfig.prerender.routes || []
63+
nitroConfig.prerender.routes.push(...(routes || []))
64+
},
65+
},
4766
icon: {
4867
provider: 'iconify',
4968
},

0 commit comments

Comments
 (0)