siteConfig.currentLocalesiteConfig.currentLocale在Nuxt 4中,把生成的html中的改为,无论是在nuxt.config.ts中配置app.head.htmlAttrs.lang="zh-CN",还是使用服务端插件监听render:html事件动态修改都不起作用,应该在nuxt.config.ts中配置site.currentLocale或site.defaultLocale为zh-CN。
在nuxt.config.ts中配置app.head.htmlAttrs.lang属性,调试代码可知,这个配置会被前面的lang="en"的配置覆盖掉,不起作用。
export default defineNuxtConfig({
app: {
head: {
htmlAttrs: {
lang: 'zh-CN'
}
}
}
})使用服务端插件server/plugins/extend-html.ts,动态修改生成的html,在开发时有效,但是打包后部署到服务器上,仍然是html lang="en"。
export default defineNitroPlugin((nitro) => {
nitro.hooks.hook('render:html', (html) => {
html.htmlAttrs.splice(0, 0, 'lang="zh-cn"')
})
})
在官方文档上没有这个配置,经过本人调试代码,在nuxt.config.ts里面把site.currentLocale配置成zh-CN即可解决。
export default defineNuxtConfig({
site: {
currentLocale: 'zh-CN'
},
})或者
export default defineNuxtConfig({
site: {
defaultLocale: 'zh-CN'
},
})在appDefault.js第12行,由于siteConfig.currentLocale和siteConfig.defaultLocale都是undefined,所以采用了默认值en。如图:
