新闻发布单位语言修复¶
本轮处理中文界面显示英文发布单位的问题,随 0.11.2 发布。
原因与边界¶
新闻解析器直接保留学校接口的 dwmc_show、fbdwmcList、text。
这些字段受信息门户会话语言影响。原新闻页与首页分别使用 core 与 info-lib,
两处均未按界面语言设置门户语言,新闻缓存键也没有语言维度。
因此会话返回英文单位时,中文页面会持续显示相同数据。
改动¶
InfoClient的列表、搜索、订阅动态、单位列表、订阅条件读取新增可选zh/en参数,默认中文。- 沿用 info-lib 已有
/f/lang/change?websiteShowLanguage=协议;中文值awefawef、英文值en_US。 语言设置与随后读取共用客户端队列;会话恢复重试时再次设置语言。 设置失败会结束本次读取,后续请求可以继续使用队列。 - 首页新闻统一使用该入口。首页订阅按服务端条件 ID 和合并分页取数, 原本保存的英文标签不会导致中文订阅列表丢失。
- 新闻页与首页使用带版本和语言的缓存键,旧缓存不再用于这两处展示。 页面切换语言或页码时即时隐藏旧数据,迟到的请求仅保留在对应缓存中。
- 单位选择、订阅筛选和新闻搜索随语言刷新。订阅条件刷新期间保留所选 ID, 单位操作等待权威条件到达。已打开的文章保留正文,来源元信息随列表更新。
- 其他界面语言使用学校的英文单位名称。新闻标题、正文、附件及关键词保留原文。
这会同步当前门户会话的语言偏好;实现不额外发送登录或凭据请求。
验证¶
| 验证 | 结果 |
|---|---|
node --import ./tools/ts-resolve-register.mjs tools/news-language-test.mjs |
8 项,真实 HttpClient / InfoClient 与合成传输;覆盖五种读取、跨语言并发、设置失败、原文和缓存键 |
node tools/news-language-browser-test.mjs |
8 项,Chromium 与真实 React StrictMode hooks;覆盖旧缓存、订阅、语言切换、迟到响应和翻页 |
| core / desktop TypeScript | 通过 |
node tools/i18n-business-boundaries-test.mjs |
41 项通过 |
浏览器夹具默认使用 127.0.0.1:5210 的 Vite,可通过 ONETHU_TEST_URL 调整。
测试使用独立上下文与虚构数据,外网请求全部阻断。没有使用真实账号切换校园门户语言,
也没有把用户新闻响应保存到测试。学校当前服务的实时行为需要安装后核实。