Files
ShadowsocksX-NG/docs/design/app-language-selection.md

41 lines
1.9 KiB
Markdown

# 应用语言选择
## 范围
在设置的「常规」末尾新增语言下拉框,提供自动检测、简体中文、英文。
默认自动检测。保存后下次启动生效,不自动退出或重启应用。
本文件记录本次需求与实现取舍,不作为项目当前状态的持续维护文档。
## 展示
- 收起时显示所选项的单个名称:自动检测使用当前界面语言,语言项使用自称。
- 展开时显示「自称 · 当前界面语言名称」。重复名称保留。
- 自动检测的固定前缀为 `Auto Detect`。
- 顺序为自动检测、简体中文、英文。
- 行标题为「语言」/ `Language`,说明为「下次启动生效」/ `Takes effect next launch`。
| 选项 | 中文界面 | 英文界面 |
| --- | --- | --- |
| 自动检测 | Auto Detect · 自动检测 | Auto Detect · Auto Detect |
| 简体中文 | 简体中文 · 简体中文 | 简体中文 · Simplified Chinese |
| 英文 | English · 英文 | English · English |
## 偏好与生效
语言选择只影响本应用。显式选择写入应用级 `AppleLanguages`,自动检测移除该覆盖。
自动检测沿用 macOS 对应用支持语言的匹配;开发语言为简体中文。
不改全局语言、地区格式、代理设置或代理运行状态。
应用现有 SwiftUI 与 Foundation 本地化在下次启动读取同一应用偏好。
本次不迁移既有未本地化文案。
## Module 与测试 seam
`AppLanguagePreferences` 的 Interface 提供当前选择与保存选择。
该 Module 隐藏应用偏好域的读取及语言覆盖的写入。
`AppLanguage` 提供收起名称与双语菜单名称。
使用系统原生 Picker,独立提供当前值标签。
测试通过上述 Interface 检查缺失偏好、持久化往返、清除覆盖与双语名称。
测试使用进程私有 UserDefaults 域。
启动解析另外通过隔离的小型应用 bundle 验证,覆盖自动检测与显式覆盖。