Files
gemini-nexus/openspec/changes/localize-app-chinese-default/design.md
T
2025-12-23 01:38:53 +08:00

31 lines
1.1 KiB
Markdown

# 设计:多语言支持
## 架构
应用使用 `react-i18next` 进行国际化,并配合 `i18next-browser-languagedetector` 进行语言检测。配置集中在 `src/localization/i18n.ts` 中。
### 语言资源
翻译资源将作为 JSON 对象构建在 `i18n.ts` 中(如果太大则分文件)。
我们将在 `resources` 对象中添加 `zh-CN` 键。
### 默认语言策略
我们将引入 `LanguageDetector` 插件。
`i18n.use(LanguageDetector).init({...})` 将被配置为首先检查 `localStorage`,然后检查 `navigator`(浏览器/系统语言)。
`fallbackLng` 将保持为 `'en'`,作为最后的兜底。
### 键映射
我们将把现有的英文字符串映射到语义键(例如 `home.title`, `settings.theme`)。
## 数据流
1. 应用启动。
2. `i18next` 初始化,通过 `LanguageDetector` 确定语言:
* 检查 `localStorage` 是否有保存的偏好。
* 如果无,检查 `navigator.language`。
* 如果检测到的语言受支持(`en` 或 `zh-CN`),则使用该语言。
* 否则,使用 `fallbackLng` (`en`)。
3. 组件使用 `useTranslation` hook 根据当前语言获取字符串。