多语言
Nexus 内置自研 i18n 引擎,支持 URL 语言前缀与双语 SEO,让产品可以「一份代码、多语言发布」。
语言包
- 文案集中在
app/locales/:zh.ts(中文)、en.ts(英文)、index.ts(聚合与语言列表)。 - 组件通过
useI18n/useLocale组合式函数读取当前语言文案。 - 语言切换由
app/middleware/locale.global.ts在路由层面生效。
URL 语言前缀
构建期开关 localeUrlPrefix(默认开启,对应 NUXT_LOCALE_URL_PREFIX)决定 URL 形态:
| 模式 | 行为 |
|---|---|
| 开启(默认) | 中文无前缀、英文带 /en 前缀(prefix_except_default);SEO 双语言索引 |
| 关闭 | 退化为纯 cookie 单语言 URL,不复制 /en 路由;hreflang 只出 x-default,sitemap 只出单版本 |
示例:
- 中文首页:
/ - 英文首页:
/en
双语 SEO
- Sitemap:
server/routes/sitemap.xml.ts生成包含各语言版本的站点地图。 - hreflang / canonical:自动注入
<link rel="alternate" hreflang="...">与 canonical,域名来源为NUXT_APP_URL。 - OpenID 发现:配合 OAuth 的
.well-known/openid-configuration,多语言站点也能正确暴露元数据。
因为 SEO 相关地址依赖
NUXT_APP_URL,请确保其值(协议+host+端口)与浏览器实际访问地址完全一致,否则 hreflang / sitemap 域名会异常。
运行期语言配置
- 默认语言与「是否显示语言切换器」由系统配置页「语言」Tab 管理,修改即时生效(存
settings表)。 - 这与构建期
localeUrlPrefix开关互补:前者控制「默认语言与 UI 开关」,后者控制「URL 是否带前缀」。
相关位置
| 路径 | 作用 |
|---|---|
app/locales/zh.ts | 中文文案 |
app/locales/en.ts | 英文文案 |
app/locales/index.ts | 语言列表与聚合 |
app/composables/useI18n.ts | i18n 组合式函数 |
app/composables/useLocale.ts | 当前语言/切换 |
app/middleware/locale.global.ts | 语言路由中间件 |
nuxt.config.ts → runtimeConfig.localeUrlPrefix | URL 前缀开关 |

