fix(updater,i18n): 对抗性审查修复(1中 + 3低)
- [中] 手动检查不再丢弃「已下载」事实:runCheck('manual') 原来无条件清
抑制记录,导致下载完成后点「检查更新」会把关于页从「重启安装」退回
「下载」(包已在磁盘)。改为保留 downloaded 记录,只清 announcement
记账;测试 §19 补 manual-check 保持 downloaded 的口径(153 断言)
- website 首帧脚本:?lang= 的 decodeURIComponent 包 try/catch(畸形转义
会在 IIFE 内抛 URIError,跳过 html[lang] 与防闪标记,指定语言被静默
忽略);zh-Hant-TW/zh-Hant-HK/zh-Hant 按 BCP-47 语义判为繁体
(normalize 与 i18n-apply.js 双处同步)
- ZmodemOffers 是 App 兄弟节点,语言切换时父级 children bailout 不重渲染:
订阅 language 并以 tFor 显式翻译(事件回调内的 t() 保留)
- ROADMAP 补录对抗性审查推迟项(周期检查可被设置写入推迟、启动开关
即时生效语义、下载无整体超时、--channel-only/--skip-gitea 矛盾)
This commit is contained in:
1 parent
7c2044fdf4
commit
2027fa3310
6 files changed
+58
-11
No files matched your search
@@ -27,6 +27,8 @@
|
||||
if (!tag) return null;
|
||||
var t = String(tag).replace(/_/g, '-');
|
||||
if (/^zh-?(tw|hk|mo)/i.test(t)) return 'zh-TW';
|
||||
// zh-Hant-* is Traditional by definition (kept in sync with the head script).
|
||||
if (/^zh-hant/i.test(t)) return 'zh-TW';
|
||||
if (/^zh/i.test(t)) return 'zh-CN';
|
||||
if (/^ja/i.test(t)) return 'ja';
|
||||
if (/^en/i.test(t)) return 'en';
|
||||
|
||||
+9
-1
@@ -27,6 +27,9 @@
|
||||
if (!tag) return null;
|
||||
var t = String(tag).replace(/_/g, '-');
|
||||
if (/^zh-?(tw|hk|mo)/i.test(t)) return 'zh-TW';
|
||||
// BCP-47 can carry a script subtag (zh-Hant-TW, zh-Hant-HK, zh-Hant):
|
||||
// some browsers report those forms, and they are Traditional by definition.
|
||||
if (/^zh-hant/i.test(t)) return 'zh-TW';
|
||||
if (/^zh/i.test(t)) return 'zh-CN';
|
||||
if (/^ja/i.test(t)) return 'ja';
|
||||
if (/^en/i.test(t)) return 'en';
|
||||
@@ -35,7 +38,12 @@
|
||||
function pickLang() {
|
||||
var m = /[?&]lang=([^&]+)/.exec(location.search);
|
||||
if (m) {
|
||||
var fromUrl = normalize(decodeURIComponent(m[1]));
|
||||
// A truncated % escape in a shared link must not throw inside this
|
||||
// first-frame IIFE: a throw here would skip setting html[lang] AND the
|
||||
// pending flag, leaving the page stuck on the default language.
|
||||
var raw = null;
|
||||
try { raw = decodeURIComponent(m[1]); } catch (e) {}
|
||||
var fromUrl = normalize(raw);
|
||||
if (fromUrl) return fromUrl;
|
||||
}
|
||||
try {
|
||||
|
||||
Reference in new issue
Block a user