2.9 KiB
2.9 KiB
ARR Web 中英泰国际化实现
结论
2026-07-31 用户确认执行后,ARR Web 展示层完成 zh-CN、en、th 三语切换基础实现。桌面 /、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.html、h5.html、login.html增加语言选择器和 runtime;app.js、h5.js、login.js接入状态、Toast、确认/空态、错误、任务日志、无障碍属性及 locale-change 重绘。styles.css、h5.css、login.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 与当前 LAN192.168.3.103的/login、/healthz和/assets/i18n.js分别返回 200,匿名根路径返回登录重定向。原192.168.3.48已不在本机网卡上,未执行业务写操作。 - 完整
python3 -m unittest discover -s tests:298 个测试中 8 个环境错误,均为既有测试环境缺少httpx或 OSS client 映射为 unavailable;未出现与本次 Web 国际化改动相关的失败。