ETN Website i18n 国际化设计文档
目标
为 ETN 网站(Docusaurus 3.9.2)添加中英双语支持,面向海外用户扩展。中文保持现有 URL,英文走 /en/ 前缀,SEO 双语收录,首次访问自动检测语言。
架构
URL 结构
| Locale | URL | 构建输出 |
|---|---|---|
| 中文(默认) | everythingto.site/website/ | build/website/ |
| English | everythingto.site/en/website/ | build/en/website/ |
技术选型
- 翻译方式:Docusaurus 官方
<Translate>组件 +code.json翻译文件 - 构建方式:
npm run build静态生成两套完整 HTML,SEO 可索引 - 语言检测:
navigator.language+localStorage("etn-locale")客户端模块 - hreflang:Docusaurus 自动注入,告知搜索引擎中英页面关系
文件结构
etn-website/
├── i18n/
│ └── en/
│ ├── code.json # 所有 <Translate> 字符串英文版
│ └── docusaurus-theme-classic/
│ ├── navbar.json # 导航标签英文
│ └── footer.json # Footer 英文
├── src/
│ └── clientModules/
│ └── autoLocale.ts # 首次访问语言自动检测
└── docusaurus.config.ts # 新增 en locale 配置
各模块设计
1. Docusaurus 配置变更(docusaurus.config.ts)
i18n: {
defaultLocale: 'zh-Hans',
locales: ['zh-Hans', 'en'],
localeConfigs: {
'zh-Hans': { label: '中文', direction: 'ltr' },
'en': { label: 'English', direction: 'ltr' },
},
},
新增 clientModules:
clientModules: ['./src/clientModules/autoLocale.ts'],
2. 自动语言检测(src/clientModules/autoLocale.ts)
逻辑: