feat(i18n): ③ 原型接单源 — I18N 块由 strings.json 生成,消除重复翻译

原型 design/prototype/screens/{ui-desktop,ui-mobile}.html 的 I18N 数据块不再手写,
改由 strings.json 生成(marker 包裹、生成器唯一写):
- alias.json:protoKey → flutterKey(产品串取单源 zh/en,单源赢);desktop 130 / mobile 143。
- overlay.json:原型专属(开发挡板 + app 没有的串,zh/en);desktop 98 / mobile 104。
- new-strings.json:4 个新产品串(分流规则/自定义/局域网直连/强制),6 语,已并入
  strings.json + app_text.dart 抽象声明 + 重生成 6 份 strings_*.dart。
- gen_proto_i18n.mjs:strings.json+alias+overlay → 两份 HTML 的 I18N 块;--check 只比对
  marker 块(unrelated HTML 编辑不误报)。
- check-proto-i18n.mjs:两份 HTML 所有 data-i18n key 的 zh/en 必须 resolve。
- ci/check-codegen-drift.sh:加原型 i18n 段(--check 漂移 + resolution 验收)。

同带入之前路由原型 WIP 的 i18n 收口:私有服务内置行→局域网/私网直连行、rr.* 接 data-i18n
(rr.lan→routingLanDirect 等)。路由页其余 UI(段选/添加规则页)仍为独立后续。

验收(自复核全绿):生成器跑通、data-i18n 0 unresolved、两生成器重生成零 diff、
flutter analyze lib/l10n 0 issue、flutter test 244 全绿、new-strings 无红线词。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A79VtQA1BwTuQN1ThpvYpo
This commit is contained in:
wangjia
2026-07-27 09:59:18 +08:00
parent f46191ef4d
commit 75d23023e3
16 changed files with 2139 additions and 264 deletions
+32
View File
@@ -1968,6 +1968,38 @@
"ko": "정가",
"ru": "Было",
"es": "Antes"
},
"routingRulesTitle": {
"zh": "分流规则",
"en": "Routing rules",
"ja": "ルーティングルール",
"ko": "라우팅 규칙",
"ru": "Правила маршрутизации",
"es": "Reglas de enrutamiento"
},
"routingRulesSub": {
"zh": "自定义直连 / 走隧道 / 拒绝",
"en": "Custom direct / tunnel / reject",
"ja": "直接接続 / トンネル / 拒否をカスタム",
"ko": "직접 연결 / 터널 / 거부 사용자 지정",
"ru": "Настройка: напрямую / туннель / отклонить",
"es": "Personalizar: directo / túnel / rechazar"
},
"routingLanDirect": {
"zh": "局域网 / 私网直连",
"en": "LAN & private direct",
"ja": "LAN・プライベート直接接続",
"ko": "LAN / 사설망 직접 연결",
"ru": "Локальная и частная сеть напрямую",
"es": "LAN y red privada directas"
},
"routingLanForced": {
"zh": "强制,不可关",
"en": "Always on",
"ja": "常時オン",
"ko": "항상 켜짐",
"ru": "Всегда включено",
"es": "Siempre activo"
}
},
"lists": {