国际化与本地化
应用支持简体中文(zh)、繁体中文(zh_Hant)、英语(en)与日语(ja)。在「设置 → 语言」即时切换,偏好保存到本机。首次启动按系统首选语言列表选择;中文依据 Hans/Hant 脚本及 TW/HK/MO 地区识别,未匹配时回退英语。后续启动优先恢复用户的语言偏好。
使用 Flutter 官方 gen-l10n 与 ARB。apps/vex/lib/l10n/app_zh.arb 是模板,其余三个 ARB 必须具有相同消息键。资源覆盖工作区、菜单、布局、排版、配色、查找、文件冲突与保存提示、表格、导出、设置、关于、引导和内置示例。数字与英语复数通过 ICU 消息处理。繁体中文采用「儲存、原始碼、心智圖、取代、復原」等用语,表格使用「列/欄」。
cd apps/vex
flutter gen-l10n
flutter test --no-pub test/localization_test.dart
flutter test --no-pub integration_test/localization_test.dart -d windows
flutter test integration_test/localization_test.dart --flavor preview -d <Android设备编号>修改 ARB 后重新生成 lib/l10n/generated,生成结果随源码提交。业务与视图通过 l10n.dart 的类型安全接口访问翻译;不得拼接中文后再运行时查表。ViewModel 保存可按当前语言计算的状态消息,语言改变后不会保留旧语言的错误提示。
内置示例只在初始化时按语言创建;已打开的文档、文件名、选区、编辑内容和撤销历史不因界面语言切换而被重写。新建文件、插入表头、新增章节及引导演练使用操作发生时的语言。语言设置不更改磁盘上的用户内容。
独立编辑器与导图包通过 MarkdownEditorLabels/MindMapLabels 接收宿主翻译,默认英语,不依赖应用或 provider。表头使用 columnLabel 回调。简体中文、繁体中文与日语分别使用系统字体回退;不新增大型 CJK 字体。
Android 启动器标签包含语言资源及 preview 覆盖;iOS/macOS 声明四种支持语言。系统文件选择器和操作系统权限界面遵从平台自己的语言规则。Apple 原生构建与设备上的系统界面尚待 macOS/iOS 环境验证;鸿蒙仍需对应 SDK 与设备适配。
自动测试检查四份资源齐全、语言持久化、中文脚本识别、无损切换、状态消息与表头,并覆盖桌面/平板/手机的布局、六种对话框与六步引导。原生集成测试检查四语言切换及字号/字形效果;这不代表已完成原型 98% 的视觉量化验收。
有疑问或建议,欢迎到 GitHub 提交 Issue 参与讨论。