feat(i18n): 分流规则页静态标签接单源 + 修 mobile 设置行模式 pill 语言
路由页此前静态标签硬编码中文,EN 模式混语。全部接进 strings.json 单源: - 新增 26 个 routing* 产品 getter(6 语):代理模式/内置规则/国内直连/我的规则/ 添加规则/从文本导入/重置默认/最终/直连·走隧道·拒绝/域名后缀/GeoSite 规则集/返回设置… (复用 smartRoute;seg 三项 EN 取短词 Global/Smart/Direct 适配段宽)。 - app_text.dart +26 抽象声明;重生成 6 份 strings_*.dart;alias.json desktop +24 / mobile +19。 - markup 加 data-i18n;JS pill(直连/走隧道/拒绝、FINAL)统一改从生成的 I18N 单源取(_ri), 与静态 pill 同源。JS-owned 的模式说明 rtModeNote 保留 _t 双语(不加 data-i18n)。 - desktop LAN 行(此前未接)补接 rr.lan/rr.lanSub + 新 routingForcedPill。 - 修 mobile 设置行「Routing rules」的模式 pill:缺 data-i18n → EN 显中文,补 setSmartRoute (en=Smart routing,与 desktop 一致)。 验收:l10n 重生成+analyze 0 issue、原型 0 unresolved、生成器零 diff、244 测试全绿、无红线词。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A79VtQA1BwTuQN1ThpvYpo
This commit is contained in:
@@ -2000,6 +2000,198 @@
|
||||
"ko": "항상 켜짐",
|
||||
"ru": "Всегда включено",
|
||||
"es": "Siempre activo"
|
||||
},
|
||||
"routingForcedPill": {
|
||||
"zh": "🔒 强制",
|
||||
"en": "🔒 Forced",
|
||||
"ja": "🔒 強制",
|
||||
"ko": "🔒 강제",
|
||||
"ru": "🔒 Принудительно",
|
||||
"es": "🔒 Forzado"
|
||||
},
|
||||
"routingProxyMode": {
|
||||
"zh": "代理模式",
|
||||
"en": "Proxy mode",
|
||||
"ja": "プロキシモード",
|
||||
"ko": "프록시 모드",
|
||||
"ru": "Режим прокси",
|
||||
"es": "Modo de proxy"
|
||||
},
|
||||
"routingModeGlobal": {
|
||||
"zh": "全局代理",
|
||||
"en": "Global",
|
||||
"ja": "グローバル",
|
||||
"ko": "전체",
|
||||
"ru": "Глобально",
|
||||
"es": "Global"
|
||||
},
|
||||
"routingModeSmart": {
|
||||
"zh": "智能分流",
|
||||
"en": "Smart",
|
||||
"ja": "スマート",
|
||||
"ko": "스마트",
|
||||
"ru": "Умный",
|
||||
"es": "Inteligente"
|
||||
},
|
||||
"routingModeDirect": {
|
||||
"zh": "全部直连",
|
||||
"en": "Direct",
|
||||
"ja": "直接",
|
||||
"ko": "직접",
|
||||
"ru": "Напрямую",
|
||||
"es": "Directo"
|
||||
},
|
||||
"routingBuiltin": {
|
||||
"zh": "内置规则",
|
||||
"en": "Built-in rules",
|
||||
"ja": "組み込みルール",
|
||||
"ko": "기본 규칙",
|
||||
"ru": "Встроенные правила",
|
||||
"es": "Reglas integradas"
|
||||
},
|
||||
"routingCnDirect": {
|
||||
"zh": "国内直连",
|
||||
"en": "China direct",
|
||||
"ja": "国内は直接接続",
|
||||
"ko": "국내 직접 연결",
|
||||
"ru": "Прямой доступ внутри страны",
|
||||
"es": "Directo nacional"
|
||||
},
|
||||
"routingMyRulesOrdered": {
|
||||
"zh": "我的规则 · 有序,首命中生效",
|
||||
"en": "My rules · ordered, first match wins",
|
||||
"ja": "マイルール · 順序あり、最初の一致が有効",
|
||||
"ko": "내 규칙 · 순서대로, 첫 일치 적용",
|
||||
"ru": "Мои правила · по порядку, срабатывает первое совпадение",
|
||||
"es": "Mis reglas · en orden, gana la primera coincidencia"
|
||||
},
|
||||
"routingMyRulesFirst": {
|
||||
"zh": "我的规则 · 首命中生效",
|
||||
"en": "My rules · first match wins",
|
||||
"ja": "マイルール · 最初の一致が有効",
|
||||
"ko": "내 규칙 · 첫 일치 적용",
|
||||
"ru": "Мои правила · срабатывает первое совпадение",
|
||||
"es": "Mis reglas · gana la primera coincidencia"
|
||||
},
|
||||
"routingFinalLong": {
|
||||
"zh": "最终(未命中任何规则)",
|
||||
"en": "Final (no rule matched)",
|
||||
"ja": "最終(どのルールにも一致しない)",
|
||||
"ko": "최종(일치하는 규칙 없음)",
|
||||
"ru": "Итог (ни одно правило не совпало)",
|
||||
"es": "Final (ninguna regla coincide)"
|
||||
},
|
||||
"routingFinalShort": {
|
||||
"zh": "最终(未命中)",
|
||||
"en": "Final (no match)",
|
||||
"ja": "最終(一致なし)",
|
||||
"ko": "최종(일치 없음)",
|
||||
"ru": "Итог (нет совпадений)",
|
||||
"es": "Final (sin coincidencia)"
|
||||
},
|
||||
"routingFinalFallback": {
|
||||
"zh": "FINAL 兜底",
|
||||
"en": "FINAL fallback",
|
||||
"ja": "FINAL フォールバック",
|
||||
"ko": "FINAL 폴백",
|
||||
"ru": "FINAL — резерв",
|
||||
"es": "FINAL — reserva"
|
||||
},
|
||||
"routingTypeDomainSuffix": {
|
||||
"zh": "域名后缀",
|
||||
"en": "Domain suffix",
|
||||
"ja": "ドメインサフィックス",
|
||||
"ko": "도메인 접미사",
|
||||
"ru": "Суффикс домена",
|
||||
"es": "Sufijo de dominio"
|
||||
},
|
||||
"routingTypeDomainSuffixCi": {
|
||||
"zh": "域名后缀 · CI 源",
|
||||
"en": "Domain suffix · CI source",
|
||||
"ja": "ドメインサフィックス · CI ソース",
|
||||
"ko": "도메인 접미사 · CI 소스",
|
||||
"ru": "Суффикс домена · CI-источник",
|
||||
"es": "Sufijo de dominio · fuente CI"
|
||||
},
|
||||
"routingTypeDomainSuffixMirror": {
|
||||
"zh": "域名后缀 · 镜像",
|
||||
"en": "Domain suffix · Mirror",
|
||||
"ja": "ドメインサフィックス · ミラー",
|
||||
"ko": "도메인 접미사 · 미러",
|
||||
"ru": "Суффикс домена · зеркало",
|
||||
"es": "Sufijo de dominio · espejo"
|
||||
},
|
||||
"routingTypeGeosite": {
|
||||
"zh": "GeoSite 规则集",
|
||||
"en": "GeoSite rule-set",
|
||||
"ja": "GeoSite ルールセット",
|
||||
"ko": "GeoSite 규칙 세트",
|
||||
"ru": "Набор правил GeoSite",
|
||||
"es": "Conjunto de reglas GeoSite"
|
||||
},
|
||||
"routingActDirect": {
|
||||
"zh": "直连",
|
||||
"en": "Direct",
|
||||
"ja": "直接接続",
|
||||
"ko": "직접 연결",
|
||||
"ru": "Напрямую",
|
||||
"es": "Directo"
|
||||
},
|
||||
"routingActProxy": {
|
||||
"zh": "走隧道",
|
||||
"en": "Tunnel",
|
||||
"ja": "トンネル",
|
||||
"ko": "터널",
|
||||
"ru": "Туннель",
|
||||
"es": "Túnel"
|
||||
},
|
||||
"routingActReject": {
|
||||
"zh": "拒绝",
|
||||
"en": "Reject",
|
||||
"ja": "拒否",
|
||||
"ko": "거부",
|
||||
"ru": "Отклонить",
|
||||
"es": "Rechazar"
|
||||
},
|
||||
"routingForcedRow": {
|
||||
"zh": "⚠ 该域名由系统强制走隧道,此规则不生效",
|
||||
"en": "⚠ Forced to tunnel by the system; this rule is inactive",
|
||||
"ja": "⚠ このドメインはシステムにより強制的にトンネル経由となり、このルールは無効です",
|
||||
"ko": "⚠ 이 도메인은 시스템에 의해 강제로 터널을 사용하며, 이 규칙은 적용되지 않습니다",
|
||||
"ru": "⚠ Домен принудительно направлен через туннель системой; правило неактивно",
|
||||
"es": "⚠ El sistema fuerza el túnel para este dominio; esta regla no se aplica"
|
||||
},
|
||||
"routingAddRule": {
|
||||
"zh": "添加规则",
|
||||
"en": "Add rule",
|
||||
"ja": "ルールを追加",
|
||||
"ko": "규칙 추가",
|
||||
"ru": "Добавить правило",
|
||||
"es": "Añadir regla"
|
||||
},
|
||||
"routingImport": {
|
||||
"zh": "从文本导入",
|
||||
"en": "Import from text",
|
||||
"ja": "テキストから読み込み",
|
||||
"ko": "텍스트에서 가져오기",
|
||||
"ru": "Импорт из текста",
|
||||
"es": "Importar desde texto"
|
||||
},
|
||||
"routingReset": {
|
||||
"zh": "重置默认",
|
||||
"en": "Reset defaults",
|
||||
"ja": "デフォルトに戻す",
|
||||
"ko": "기본값 재설정",
|
||||
"ru": "Сбросить настройки",
|
||||
"es": "Restablecer"
|
||||
},
|
||||
"routingBack": {
|
||||
"zh": "返回设置",
|
||||
"en": "Back to settings",
|
||||
"ja": "設定に戻る",
|
||||
"ko": "설정으로 돌아가기",
|
||||
"ru": "Назад к настройкам",
|
||||
"es": "Volver a ajustes"
|
||||
}
|
||||
},
|
||||
"lists": {
|
||||
|
||||
Reference in New Issue
Block a user