Nuxt 4 HTML语言属性配置:从en改为zh-CN的正确方法

2025-10-11 李腾 65 次阅读 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。如图:

wechat_2025-10-11_213802_566.png

本文由人工编写,AI优化,转载请注明原文地址: Nuxt 4 HTML语言设置:解决lang属性无法修改为zh-CN的完整指南

评论 (3)

登录后发表评论
雨薇Emily2025-11-14 18:32:20
太感谢了!之前用htmlAttrs和插件都失败了,原来是site.currentLocale的问题,终于解决了!
王同学2025-11-12 15:53:19
太感谢了!之前试了各种方法都不行,原来是要配置site.currentLocale,终于解决了这个头疼的问题!
墨染青衣2025-11-11 18:28:38
评论已被隐藏,暂未显示