Files
wyndham-ARR/.project-docs/50-evidence/topics/2026-07-31-web-i18n-implementation.md
2026-08-02 12:56:22 +08:00

2.9 KiB
Raw Blame History

ARR Web 中英泰国际化实现

结论

2026-07-31 用户确认执行后ARR Web 展示层完成 zh-CNenth 三语切换基础实现。桌面 /、H5 /h5 和登录 /login 共用一个前端词典/runtime默认中文语言选择保存到 localStorage 与同源 cookie并同步 html.lang。顶部品牌 ARR Report、XML/Excel/Booking/Finance/BI/C/O、字段名、公司/渠道/房型和报告文件/worksheet 等专有名词保持原样或仅翻译其周边说明。

实施范围

  • 新增 arr_web/static/i18n.js:语义词典、稳定 API 错误码映射、动态 DOM/属性翻译、分页/任务文本模式、日期/整数/CNY/耗时格式化;泰文格式强制 Gregorian calendar 与 Latin digits业务时区仍为 Asia/Bangkok
  • arr_web/static/index.htmlh5.htmllogin.html 增加语言选择器和 runtimeapp.jsh5.jslogin.js 接入状态、Toast、确认/空态、错误、任务日志、无障碍属性及 locale-change 重绘。
  • styles.cssh5.csslogin.css 增加泰文字体回退和选择器样式;arr_web/app.py 将 i18n runtime 加入静态路由及匿名登录资源白名单。

边界与不变量

  • 未触发上传、月报/公司报表生成、Booking 草稿删除/激活、下载或数据库写入未修改认证、CSRF、轮询和业务状态判断。
  • 业务状态值、API 结构和报表 Excel 文件名、sheet、表头、公式契约保持不变语言只作用于用户展示层。API 错误继续通过 code 识别,前端按 locale 显示人类可见文案。
  • 语言切换不把已翻译文本当作源文本runtime 保存原始文案,因此可以从英文/泰文切回中文。

验证

  • node --check arr_web/static/i18n.js arr_web/static/app.js arr_web/static/h5.js arr_web/static/login.js:通过。
  • Node DOM/runtime smoke中文 → English → ไทย → 中文恢复正常;2026-07 月份文案和 Thai/English locale 格式化通过;未知 API 错误在英文/泰文下回退到对应语言通用提示。
  • python3 -m unittest discover -s tests -p 'test_arr_web*.py'61/61 通过。
  • 当前源码临时预览的 390px 登录页验证中文、English、ไทย切换ARR Report 保持不变,泰文长文案无横向溢出。预览进程已关闭,未触碰共享 8766 服务或业务数据。
  • 19:27:42 +08 按现有 Screen/Keychain launcher 重启共享 8766旧进程因未重启仍重定向 /assets/i18n.js,重启后 loopback 与当前 LAN 192.168.3.103/login/healthz/assets/i18n.js 分别返回 200匿名根路径返回登录重定向。原 192.168.3.48 已不在本机网卡上,未执行业务写操作。
  • 完整 python3 -m unittest discover -s tests298 个测试中 8 个环境错误,均为既有测试环境缺少 httpx 或 OSS client 映射为 unavailable未出现与本次 Web 国际化改动相关的失败。