Nuxt 4 HTML语言属性配置:从en改为zh-CN的正确方法
2025-10-11 21:32:07 2025-10-11 21:46:40 李腾 11 次阅读 0 次点赞
本文针对Nuxt 4开发中遇到的html lang属性无法从en改为zh-CN的问题,深入分析了两种常见错误配置方法:app.head.htmlAttrs.lang配置和服务端插件动态修改。通过源码调试发现,正确解决方案是在nuxt.config.ts中配置site.currentLocale或site.defaultLocale为zh-CN。文档提供了完整的代码示例和配置说明,帮助开发者快速解决多语言SEO优化问题。
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。如图:
本文由人工编写,AI优化,请仔细甄别,转载请注明转自www.hylab.cn,原文地址:Nuxt 4 HTML语言设置:解决lang属性无法修改为zh-CN的完整指南