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
+279
View File
@@ -0,0 +1,279 @@
{
"desktop": {
"nav.nodes": "tabServers",
"nav.stats": "tabStats",
"nav.settings": "settingsTitle",
"nav.orders": "ordersTitle",
"nav.notifications": "notifTitle",
"nav.invite": "inviteTitle",
"acc.buy": "purchaseTitle",
"acc.orders": "ordersTitle",
"acc.invite": "inviteEntry",
"acc.inviteSub": "inviteEntrySub",
"nt.title": "notifTitle",
"nt.tImportant": "notifTypeImportant",
"nt.tFeature": "notifTypeFeature",
"nt.tNews": "notifTypeNews",
"nt.tVersion": "notifTypeVersion",
"inv.title": "inviteTitle",
"inv.progHead": "inviteProgressTitle",
"inv.invited": "inviteStatInvited",
"inv.converted": "inviteStatConverted",
"inv.earned": "inviteStatDays",
"inv.tasksHead": "inviteTasksTitle",
"inv.tgTitle": "inviteJoinTgTitle",
"inv.tgJoinBtn": "inviteJoinTgBtn",
"inv.tgVerifyBtn": "inviteVerifyBtn",
"inv.tgDoneBtn": "inviteTaskDone",
"set.orders": "ordersTitle",
"ord.kOrderNo": "orderNoLabel",
"ord.kPlan": "orderPlanLabel",
"ord.kAmount": "orderAmountLabel",
"ord.kMethod": "orderMethodLabel",
"ord.kCreated": "orderCreatedLabel",
"ord.actContinue": "orderContinuePay",
"ord.actCancel": "cancelOrder",
"ord.actRefresh": "orderRefresh",
"ord.actBuyAgain": "orderRebuy",
"ord.copied": "copied",
"pur.channel": "payChannel",
"pur.chanUsdt": "payChannelUsdt",
"pur.chanCny": "payChannelCny",
"pur.pop": "mostPopular",
"pur.buy": "buyNow",
"pur.network": "payNetworkLabel",
"pur.address": "payAddressLabel",
"pur.cancel": "cancelOrder",
"pur.done": "payDone",
"pur.failTitle": "payFailed",
"brand.name": "brand",
"q.remain": "quotaToday",
"nodes.smart": "smartSelect",
"nodes.rec": "recommended",
"stats.month": "periodMonth",
"stats.week": "periodWeek",
"stats.today": "periodToday",
"stats.down": "statDown",
"stats.up": "statUp",
"stats.chart": "chartTwoWeeks",
"stats.allDevices": "allDevices",
"acc.info": "accInfoTitle",
"acc.change": "accChange",
"acc.myDevices": "myDevices",
"acc.lang": "language",
"acc.dark": "darkAppearance",
"acc.protocol": "protocol",
"acc.upgrade": "upgradeBtn",
"acc.logout": "signOut",
"set.redeem": "redeemTitle",
"set.redeemSub": "proMember",
"set.autostart": "autostart",
"set.autostartSub": "autostartSub",
"set.autoconnect": "autoConnect",
"set.autoconnectSub": "autoConnectSub",
"set.smart": "smartRoute",
"set.routeModeSmart": "smartRoute",
"set.lang": "language",
"set.dark": "darkAppearance",
"set.protocol": "protocol",
"set.grpAppear": "settingsGroupAppearance",
"set.grpAbout": "settingsGroupAbout",
"set.update": "checkUpdate",
"contact.web": "contactWebsite",
"contact.hoursTitle": "contactHoursTitle",
"contact.hours": "contactHours",
"dl.title": "deviceLimitTitle",
"dl.remove": "deviceLimitRemoveOldest",
"dl.logout": "signOut",
"dev.current": "thisDevice",
"dev.remove": "remove",
"dev.lastOnline": "devLastOnline",
"dev.mRename": "devRename",
"dev.mForceLogout": "devForceLogout",
"dev.mClearLogin": "devClearLogin",
"state.on": "stateOn",
"state.off": "followLight",
"nav.connect": "tabConnect",
"ord.kValid": "payExpiresAt",
"acc.email": "accEmail",
"acc.pwd": "accPassword",
"set.grpConn": "settingsGroupConn",
"contact.email": "contactEmail",
"login.email": "emailLabel",
"login.pwd": "pwLabel",
"login.signin": "doLogin",
"nav.contact": "contactEntry",
"nav.account": "tabMe",
"nav.purchase": "purchaseTitle",
"nav.devices": "myDevices",
"nav.redeem": "redeemCodeTitle",
"acc.redeem": "redeemCodeTitle",
"nt.tReward": "notifTypeReward",
"nt.tPromo": "notifTypePromo",
"inv.rewardsHead": "inviteRewardsTitle",
"rd.title": "redeemCodeTitle",
"rd.ph": "redeemPh",
"rd.btn": "redeemBtn",
"pur.amount": "payAmountLabel",
"pur.switch": "switchPayMethod",
"pur.okTitle": "paySucceeded",
"pur.retry": "payRetry",
"nodes.smartSub": "smartSub",
"stats.dur": "statDuration",
"acc.devices": "myDevices",
"set.smartSub": "smartRouteSub",
"set.kill": "killSwitch",
"set.killSub": "killSwitchSub",
"set.web": "webUserCenter",
"contact.intro": "contactIntro",
"login.signupTitle": "tabRegister",
"nav.routing": "routingRulesTitle",
"set.routing": "routingRulesTitle",
"set.routingSub": "routingRulesSub"
},
"mobile": {
"brandName": "brand",
"dlTitle": "deviceLimitTitle",
"dlRemoveLru": "deviceLimitRemoveOldest",
"dlRemove": "remove",
"dlOnline": "devOnline",
"navNodes": "tabServers",
"navStats": "tabStats",
"rateDown": "download",
"rateUp": "upload",
"latency": "latency",
"searchPh": "searchPh",
"smartTitle": "smartSelect",
"recommend": "recommended",
"periodMonth": "periodMonth",
"periodWeek": "periodWeek",
"periodToday": "periodToday",
"statDur": "statDuration",
"chartTwoWeeks": "chartTwoWeeks",
"upgrade": "upgradeBtn",
"renew": "upgradeBtn",
"secAccount": "accInfoTitle",
"accChange": "accChange",
"myDevices": "myDevices",
"thisDevice": "thisDevice",
"lastOnline": "devLastOnline",
"devRename": "devRename",
"devForceLogout": "devForceLogout",
"devClearLogin": "devClearLogin",
"prefLang": "language",
"prefTheme": "darkAppearance",
"prefProtocol": "protocol",
"followLight": "followLight",
"stateOn": "stateOn",
"navSettings": "settingsTitle",
"navRedeem": "redeemTitle",
"logout": "signOut",
"navOrders": "ordersTitle",
"ordDetailTitle": "orderDetailTitle",
"kOrderNo": "orderNoLabel",
"kPlan": "orderPlanLabel",
"kAmount": "orderAmountLabel",
"kMethod": "orderMethodLabel",
"kCreated": "orderCreatedLabel",
"actContinue": "orderContinuePay",
"actCancel": "cancelOrder",
"actRefresh": "orderRefresh",
"actBuyAgain": "orderRebuy",
"connOff": "connectNow",
"cbSubOn": "secure",
"stOff": "capOff",
"stDoing": "capConnecting",
"stOn": "capOn",
"pillOn": "secure",
"authRegister": "tabRegister",
"authTagline": "authTagline",
"authForgot": "forgotPw",
"authTos": "tos",
"authSendCode": "sendCode",
"authRegBtn": "tabRegister",
"devAll": "allDevices",
"planPop": "mostPopular",
"buyNow": "buyNow",
"payChannel": "payChannel",
"chanSwUsdt": "payChannelUsdt",
"chanSwCny": "payChannelCny",
"ordPlan": "orderPlanLabel",
"ordAmount": "orderAmountLabel",
"payNetwork": "payNetworkLabel",
"payAddr": "payAddressLabel",
"payCancel": "cancelOrder",
"purDone": "payDone",
"failTitle": "payFailed",
"rowBuyPlan": "purchaseTitle",
"inviteEntry": "inviteEntry",
"setLaunch": "autostart",
"setAutoConn": "autoConnect",
"setSmartRoute": "smartRoute",
"setGrpAppr": "settingsGroupAppearance",
"setGrpAbout": "settingsGroupAbout",
"setCheckUpdate": "checkUpdate",
"contactWeb": "contactWebsite",
"contactHours": "contactHoursTitle",
"navNotifications": "notifTitle",
"nt1Type": "notifTypeImportant",
"nt2Type": "notifTypeFeature",
"nt3Type": "notifTypeNews",
"nt5Type": "notifTypeVersion",
"inviteTitle": "inviteTitle",
"inviteHeadline": "inviteEntry",
"inviteCode": "inviteCodeLabel",
"inviteLink": "inviteLinkLabel",
"inviteRewards": "inviteRewardsTitle",
"inviteR1": "inviteRewardRegister",
"inviteProgress": "inviteProgressTitle",
"inviteStatInvited": "inviteStatInvited",
"inviteStatConverted": "inviteStatConverted",
"inviteStatDays": "inviteStatDays",
"inviteTasksTitle": "inviteTasksTitle",
"inviteJoinTgTitle": "inviteJoinTgTitle",
"inviteJoinTgBtn": "inviteJoinTgBtn",
"inviteVerifyBtn": "inviteVerifyBtn",
"inviteTaskDone": "inviteTaskDone",
"navConnect": "tabConnect",
"planFree": "planFreeTag",
"accEmail": "accEmail",
"accPassword": "accPassword",
"navContact": "contactEntry",
"kValid": "payExpiresAt",
"pillFree": "planFreeTag",
"authLogin": "tabLogin",
"authEmail": "emailLabel",
"authPassword": "pwLabel",
"authLoginBtn": "doLogin",
"setGrpConn": "settingsGroupConn",
"contactEmail": "emailLabel",
"navAccount": "tabMe",
"smartSub": "smartSub",
"devMgmt": "myDevices",
"navDevices": "myDevices",
"navWebUC": "webUserCenter",
"authCode": "codeLabel",
"purTitle": "purchaseTitle",
"purCheckout": "paymentTitle",
"perMo": "perMonthSuffix",
"ordUntil": "payExpiresAt",
"payAmount": "payAmountLabel",
"payOpenAlipay": "openAlipay",
"paySwitch": "switchPayMethod",
"succTitle": "paySucceeded",
"purRetry": "payRetry",
"setKill": "killSwitch",
"contactHoursVal": "contactHours",
"nt4Type": "notifTypeReward",
"nt6Type": "notifTypePromo",
"inviteEntrySub": "inviteEntrySub",
"inviteR2": "inviteRewardFirstBuy",
"inviteR3": "inviteRewardJoinTg",
"navRedeemCode": "redeemCodeTitle",
"redeemPh": "redeemPh",
"redeemBtn": "redeemBtn",
"navRouting": "routingRulesTitle",
"rr.lan": "routingLanDirect",
"rr.lanSub": "routingLanForced"
}
}
+34
View File
@@ -0,0 +1,34 @@
{
"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"
}
}
+814
View File
@@ -0,0 +1,814 @@
{
"desktop": {
"acc.billing": {
"zh": "购买 & 订单 & 兑换",
"en": "Buy · Orders · Redeem"
},
"acc.buySub": {
"zh": "升级 PRO 会员",
"en": "Upgrade to PRO"
},
"acc.ordersSub": {
"zh": "查看订单记录",
"en": "View order history"
},
"acc.redeemSub": {
"zh": "输入激活码开通",
"en": "Activate with a code"
},
"nt.back": {
"zh": "返回",
"en": "Back"
},
"nt.n1t": {
"zh": "服务条款与隐私政策更新",
"en": "Terms & privacy policy updated"
},
"nt.n1s": {
"zh": "我们更新了服务条款,请查阅最新内容。",
"en": "We have updated our terms — please review the latest version."
},
"nt.n2t": {
"zh": "新增日本 · 大阪加速线路",
"en": "New Japan · Osaka lines added"
},
"nt.n2s": {
"zh": "三条低延迟线路已上线,欢迎体验。",
"en": "Three low-latency lines are now live."
},
"nt.n3t": {
"zh": "邀请好友活动进行中",
"en": "Invite-a-friend event is live"
},
"nt.n3s": {
"zh": "邀请好友注册,双方都可获得会员天数。",
"en": "Invite friends to sign up — both sides earn membership days."
},
"nt.n1full": {
"zh": "本次更新新增数据留存与第三方共享条款说明,不影响现有账户与订阅权益,建议登录网页用户中心查看完整版本。",
"en": "This update adds details on data retention and third-party sharing. It does not affect your existing account or subscription — please review the full version in the web user center."
},
"nt.n4t": {
"zh": "邀请奖励 +3 天已到账",
"en": "Referral reward: +3 days credited"
},
"nt.n4s": {
"zh": "好友已完成注册,会员天数已计入你的账户。",
"en": "Your friend has completed sign-up — the days have been added to your account."
},
"nt.n5t": {
"zh": "v1.0.73 已发布",
"en": "v1.0.73 is out"
},
"nt.n5s": {
"zh": "修复已知问题,建议尽快更新。",
"en": "Bug fixes included — update is recommended."
},
"nt.updateBtn": {
"zh": "去更新",
"en": "Update now"
},
"nt.n6t": {
"zh": "¥6 月付优惠上线",
"en": "¥6/mo promo is live"
},
"nt.n6s": {
"zh": "限时活动,PRO 月付低至 ¥6,先到先得。",
"en": "Limited-time offer — PRO monthly as low as ¥6, while it lasts."
},
"inv.back": {
"zh": "返回",
"en": "Back"
},
"inv.lead": {
"zh": "分享你的邀请码或链接,好友注册后双方都得会员天数。",
"en": "Share your code or link — when a friend signs up, both of you earn membership days."
},
"inv.r1": {
"zh": "好友注册",
"en": "Friend signs up"
},
"inv.r1s": {
"zh": "双方各得 3 天",
"en": "Both earn 3 days each"
},
"inv.r2": {
"zh": "好友首次购买",
"en": "Friend first purchase"
},
"inv.r2s": {
"zh": "双方各得 7 天",
"en": "Both earn 7 days each"
},
"inv.r3": {
"zh": "加入 TG 频道",
"en": "Join the TG channel"
},
"inv.r3s": {
"zh": "获得 3 天",
"en": "Earn 3 days"
},
"inv.tgSub": {
"zh": "+3 天",
"en": "+3 days"
},
"inv.tgDemoPending": {
"zh": "演示态 · 待验证",
"en": "Demo · pending"
},
"inv.tgDemoDone": {
"zh": "演示态 · 已领取",
"en": "Demo · claimed"
},
"rd.back": {
"zh": "返回",
"en": "Back"
},
"rd.label": {
"zh": "兑换码",
"en": "Redemption code"
},
"rd.hint": {
"zh": "输入卡密即可激活对应时长,激活后立即生效。",
"en": "Enter a code to instantly activate plan time."
},
"set.ordersSub": {
"zh": "查看订单记录",
"en": "View order history"
},
"ord.back": {
"zh": "返回",
"en": "Back"
},
"ord.details": {
"zh": "明细",
"en": "Details"
},
"ord.kStatus": {
"zh": "状态",
"en": "Status"
},
"ord.kDeadline": {
"zh": "支付截止",
"en": "Pay before"
},
"ord.kTrade": {
"zh": "交易流水号",
"en": "Trade No."
},
"ord.actMembership": {
"zh": "查看会员",
"en": "View membership"
},
"pur.aliScan": {
"zh": "用支付宝扫码支付",
"en": "Scan with Alipay to pay"
},
"pur.back": {
"zh": "返回",
"en": "Back"
},
"pur.proIncludes": {
"zh": "PRO 全部特性",
"en": "Everything in PRO"
},
"pur.f1": {
"zh": "不限时长 · 不限流量",
"en": "Unlimited time & data"
},
"pur.f2": {
"zh": "80+ 全球加速线路",
"en": "80+ global lines"
},
"pur.f3": {
"zh": "5 台设备同时在线",
"en": "5 devices at once"
},
"pur.f4": {
"zh": "优先客服支持",
"en": "Priority support"
},
"pur.month": {
"zh": "按月",
"en": "Monthly"
},
"pur.quarter": {
"zh": "按季",
"en": "Quarterly"
},
"pur.year": {
"zh": "按年",
"en": "Yearly"
},
"pur.usdtHint": {
"zh": "请按精确金额(含小数末位)转账,金额用于自动对账识别,多退少不到账。",
"en": "Send the exact amount (incl. trailing decimals) — it is used to auto-match your order."
},
"pur.alipayHint": {
"zh": "付款后自动开通,无需手动确认。",
"en": "Activated automatically after payment — no manual confirmation needed."
},
"pur.waitCrypto": {
"zh": "等待到账确认…",
"en": "Waiting for confirmation…"
},
"pur.waitAlipay": {
"zh": "等待付款确认…",
"en": "Waiting for payment…"
},
"pur.demo": {
"zh": "评审演示",
"en": "Review demo"
},
"pur.simPaid": {
"zh": "▸ 模拟到账",
"en": "▸ Simulate paid"
},
"pur.simFail": {
"zh": "▸ 模拟失败",
"en": "▸ Simulate failure"
},
"pur.failSub": {
"zh": "订单已超时,请重试",
"en": "Order timed out, please retry"
},
"plan.free": {
"zh": "免费版",
"en": "Free"
},
"q.zero": {
"zh": "0 分钟",
"en": "0 min"
},
"nodes.search": {
"zh": "搜索加速线路…",
"en": "Search lines…"
},
"nodes.stream": {
"zh": "流媒体",
"en": "Streaming"
},
"nodes.hk": {
"zh": "香港 · 优选",
"en": "Hong Kong · Premium"
},
"nodes.jp": {
"zh": "日本 · 东京",
"en": "Japan · Tokyo"
},
"nodes.sg": {
"zh": "新加坡",
"en": "Singapore"
},
"nodes.us": {
"zh": "美国 · 洛杉矶",
"en": "US · Los Angeles"
},
"nodes.de": {
"zh": "德国 · 法兰克福",
"en": "Germany · Frankfurt"
},
"nodes.unavail": {
"zh": "暂不可用",
"en": "Unavailable"
},
"acc.pref": {
"zh": "偏好",
"en": "Preferences"
},
"acc.myDevicesSub": {
"zh": "重命名 · 强制下线 · 移除",
"en": "Rename · force offline · remove"
},
"ub.title": {
"zh": "发现新版本 v2.5.0,建议更新",
"en": "New version v2.5.0 available"
},
"ub.cta": {
"zh": "立即更新",
"en": "Update"
},
"dl.desc": {
"zh": "你的套餐最多 5 台设备,请移除一台以继续。",
"en": "Your plan allows up to 5 devices. Remove one to continue."
},
"dev.back": {
"zh": "返回",
"en": "Back"
},
"dev.now": {
"zh": "刚刚",
"en": "just now"
},
"dev.h2": {
"zh": "2 小时前",
"en": "2h ago"
},
"dev.yesterday": {
"zh": "昨天",
"en": "yesterday"
},
"dev.tRenamed": {
"zh": "已重命名(演示)",
"en": "Renamed (demo)"
},
"dev.tLoggedOut": {
"zh": "已强制退出(演示)",
"en": "Force logged out (demo)"
},
"dev.tCleared": {
"zh": "已清除登录信息(演示)",
"en": "Login info cleared (demo)"
},
"demo.theme": {
"zh": "主题",
"en": "Theme"
},
"demo.light": {
"zh": "明",
"en": "Light"
},
"demo.dark": {
"zh": "暗",
"en": "Dark"
},
"demo.lang": {
"zh": "语言",
"en": "Language"
},
"demo.persp": {
"zh": "视角",
"en": "Perspective"
},
"demo.upd": {
"zh": "更新条",
"en": "Banner"
},
"demo.show": {
"zh": "显",
"en": "On"
},
"demo.hide": {
"zh": "隐",
"en": "Off"
},
"demo.gate": {
"zh": "挡板",
"en": "Gate"
},
"demo.deviceLimit": {
"zh": "设备超限",
"en": "Device limit"
},
"login.frame": {
"zh": "分屏卡 · 品牌左 / 表单右",
"en": "Split card · brand left / form right"
},
"login.note": {
"zh": "(独立静态屏,不并入交互窗口)",
"en": "(standalone static screen, outside the interactive window)"
},
"login.slogan": {
"zh": "极速畅连 · 稳定加速线路<br>隐私保护 · 全程无日志",
"en": "Fast & stable lines<br>Privacy protected · No logs"
},
"login.title": {
"zh": "登录账户",
"en": "Sign in"
},
"login.signup": {
"zh": "没有账户?免费注册",
"en": "No account? Sign up free"
},
"login.pwd2": {
"zh": "确认密码",
"en": "Confirm password"
},
"login.signupBtn": {
"zh": "免费注册",
"en": "Sign up free"
},
"login.haveAccount": {
"zh": "已有账户?登录",
"en": "Have an account? Sign in"
}
},
"mobile": {
"brandLatin": {
"zh": "Pangolin",
"en": ""
},
"demoTheme": {
"zh": "主题",
"en": "Theme"
},
"demoLang": {
"zh": "语言",
"en": "Language"
},
"demoView": {
"zh": "视角",
"en": "View"
},
"demoUpdate": {
"zh": "更新",
"en": "Update"
},
"demoGate": {
"zh": "挡板",
"en": "Gate"
},
"demoDeviceLimit": {
"zh": "设备超限",
"en": "Device limit"
},
"dlDesc": {
"zh": "你的账户最多可同时登录 5 台设备,请移除一台后继续。",
"en": "Your account allows up to 5 devices at once. Remove one to continue."
},
"segLight": {
"zh": "明",
"en": "Light"
},
"segDark": {
"zh": "暗",
"en": "Dark"
},
"segFree": {
"zh": "免费版",
"en": "Free"
},
"segPro": {
"zh": "PRO",
"en": "PRO"
},
"segShow": {
"zh": "显示",
"en": "Show"
},
"segHide": {
"zh": "隐藏",
"en": "Hide"
},
"disconnect": {
"zh": "断开连接",
"en": "Disconnect"
},
"nHKt": {
"zh": "香港 01",
"en": "Hong Kong 01"
},
"nJPt": {
"zh": "日本 · 东京 02",
"en": "Japan · Tokyo 02"
},
"nSGt": {
"zh": "新加坡 01",
"en": "Singapore 01"
},
"nUSt": {
"zh": "美国 · 洛杉矶 03",
"en": "USA · Los Angeles 03"
},
"nTWt": {
"zh": "台湾 01",
"en": "Taiwan 01"
},
"tagStream": {
"zh": "流媒体",
"en": "Streaming"
},
"tagLowLat": {
"zh": "低延迟",
"en": "Low latency"
},
"tagStable": {
"zh": "高速稳定",
"en": "Fast & stable"
},
"tagDistant": {
"zh": "远距离",
"en": "Distant"
},
"maintenance": {
"zh": "维护中",
"en": "Maintenance"
},
"unavail": {
"zh": "不可用",
"en": "Unavailable"
},
"statDownArr": {
"zh": "↓ 下行",
"en": "↓ Down"
},
"statUpArr": {
"zh": "↑ 上行",
"en": "↑ Up"
},
"planProMeta": {
"zh": "PRO 会员 · 2027-07-11",
"en": "PRO member · 2027-07-11"
},
"devFreeLbl": {
"zh": "我的设备 · 1 / 1 台",
"en": "My devices · 1 / 1"
},
"devProLbl": {
"zh": "我的设备 · 3 / 5 台",
"en": "My devices · 3 / 5"
},
"secDevices": {
"zh": "设备",
"en": "Devices"
},
"devOnlineNow": {
"zh": "当前在线",
"en": "Online now"
},
"rel2h": {
"zh": "2 小时前",
"en": "2h ago"
},
"relYday": {
"zh": "昨天",
"en": "yesterday"
},
"devRenamedToast": {
"zh": "已重命名(演示)",
"en": "Renamed (demo)"
},
"devLoggedOutToast": {
"zh": "已强制退出(演示)",
"en": "Force logged out (demo)"
},
"devClearedToast": {
"zh": "已清除登录信息(演示)",
"en": "Login info cleared (demo)"
},
"secPref": {
"zh": "偏好",
"en": "Preferences"
},
"secMore": {
"zh": "更多",
"en": "More"
},
"rr.forced": {
"zh": "🔒",
"en": "🔒"
},
"ordSecDetail": {
"zh": "明细",
"en": "Details"
},
"kStatus": {
"zh": "状态",
"en": "Status"
},
"kDeadline": {
"zh": "支付截止",
"en": "Pay before"
},
"kTrade": {
"zh": "交易流水号",
"en": "Trade No."
},
"actMembership": {
"zh": "查看会员",
"en": "View membership"
},
"updateTitle": {
"zh": "发现新版本 v1.1.0",
"en": "New version v1.1.0"
},
"updateCta": {
"zh": "更新",
"en": "Update"
},
"connDoing": {
"zh": "连接中",
"en": "Connecting"
},
"pillDoing": {
"zh": "连接中",
"en": "Connecting"
},
"pillOffPro": {
"zh": "未连接",
"en": "Not connected"
},
"toastUpdate": {
"zh": "演示:前往应用商店更新",
"en": "Demo: go to store to update"
},
"authEmailPh": {
"zh": "you@example.com",
"en": "you@example.com"
},
"authCodePh": {
"zh": "6 位验证码",
"en": "6-digit code"
},
"authSetPw": {
"zh": "设置密码",
"en": "Set password"
},
"authSetPwPh": {
"zh": "至少 6 位",
"en": "At least 6 characters"
},
"statsFilterLbl": {
"zh": "设备",
"en": "Device"
},
"proIncludes": {
"zh": "所有套餐均含",
"en": "All plans include"
},
"featSupport": {
"zh": "优先客服",
"en": "Priority support"
},
"planMonth": {
"zh": "按月",
"en": "Monthly"
},
"planQuarter": {
"zh": "按季",
"en": "Quarterly"
},
"planYear": {
"zh": "按年",
"en": "Yearly"
},
"featUnlimited": {
"zh": "不限时长 · 不限流量",
"en": "Unlimited time & data"
},
"feat80": {
"zh": "80+ 全球加速线路",
"en": "80+ global nodes"
},
"feat5": {
"zh": "5 台设备同时在线",
"en": "5 devices at once"
},
"chanUsdt": {
"zh": "加密货币 · USDT",
"en": "Crypto · USDT"
},
"chanCny": {
"zh": "支付宝 · 人民币",
"en": "Alipay · CNY"
},
"payHintCryptoTpl": {
"zh": "请转账 {amt} USDT(含小数末位),金额用于自动对账识别,多退少不到账。",
"en": "Send exactly {amt} USDT (including the last decimals) — the amount is used for automatic reconciliation."
},
"payHintAlipay": {
"zh": "将跳转至支付宝完成付款,付款后自动返回本页并开通。",
"en": "You will be redirected to Alipay; after payment you return here and get activated."
},
"payWaitCrypto": {
"zh": "等待到账确认…",
"en": "Waiting for confirmation…"
},
"payWaitAlipay": {
"zh": "等待付款确认…",
"en": "Waiting for payment…"
},
"demoReview": {
"zh": "评审演示",
"en": "Demo"
},
"demoPaid": {
"zh": "▸ 模拟到账",
"en": "▸ Simulate paid"
},
"demoFailed": {
"zh": "▸ 模拟失败",
"en": "▸ Simulate failure"
},
"succSubTpl": {
"zh": "PRO{name})有效期至 {date}",
"en": "PRO ({name}) · valid until {date}"
},
"failSub": {
"zh": "订单已超时,请重试",
"en": "Order timed out, please retry"
},
"toastCopied": {
"zh": "已复制:{v}",
"en": "Copied: {v}"
},
"toastAlipay": {
"zh": "已拉起支付宝(演示)",
"en": "Opened Alipay (demo)"
},
"secBilling": {
"zh": "购买 · 订单 · 兑换",
"en": "Buy · Orders · Redeem"
},
"secInvite": {
"zh": "推广",
"en": "Referral"
},
"secGeneral": {
"zh": "通用",
"en": "General"
},
"notiFoot": {
"zh": "仅显示最近通知(演示占位)",
"en": "Recent notifications only (demo)"
},
"nt1Title": {
"zh": "服务条款与隐私政策更新",
"en": "Terms & privacy policy updated"
},
"nt1Sub": {
"zh": "我们更新了服务条款,请查阅最新内容。",
"en": "We have updated our terms — please review the latest version."
},
"nt1Full": {
"zh": "本次更新新增数据留存与第三方共享条款说明,不影响现有账户与订阅权益,建议登录网页用户中心查看完整版本。",
"en": "This update adds details on data retention and third-party sharing. It does not affect your existing account or subscription — please review the full version in the web user center."
},
"nt2Title": {
"zh": "新增日本 · 大阪加速线路",
"en": "New Japan · Osaka lines added"
},
"nt2Sub": {
"zh": "三条低延迟线路已上线,欢迎体验。",
"en": "Three low-latency lines are now live."
},
"nt3Title": {
"zh": "邀请好友活动进行中",
"en": "Invite-a-friend event is live"
},
"nt3Sub": {
"zh": "邀请好友注册,双方都可获得会员天数。",
"en": "Invite friends to sign up — both sides earn membership days."
},
"nt4Title": {
"zh": "邀请奖励 +3 天已到账",
"en": "Referral reward: +3 days credited"
},
"nt4Sub": {
"zh": "好友已完成注册,会员天数已计入你的账户。",
"en": "Your friend has completed sign-up — the days have been added to your account."
},
"nt5Title": {
"zh": "v1.0.73 已发布",
"en": "v1.0.73 is out"
},
"nt5Sub": {
"zh": "修复已知问题,建议尽快更新。",
"en": "Bug fixes included — update is recommended."
},
"nt5Btn": {
"zh": "去更新",
"en": "Update now"
},
"nt6Title": {
"zh": "¥6 月付优惠上线",
"en": "¥6/mo promo is live"
},
"nt6Sub": {
"zh": "限时活动,PRO 月付低至 ¥6,先到先得。",
"en": "Limited-time offer — PRO monthly as low as ¥6, while it lasts."
},
"inviteLede": {
"zh": "好友注册、首购、加入社区,双方都各得订阅天数。",
"en": "When friends sign up, buy, or join the community, both of you earn plan days."
},
"inviteProgressSub": {
"zh": "已邀请 2 位好友,累计获得 6 天会员(演示占位)",
"en": "Invited 2 friends · earned 6 days (demo)"
},
"inviteShare": {
"zh": "分享邀请链接",
"en": "Share invite link"
},
"inviteTgSub": {
"zh": "+3 天",
"en": "+3 days"
},
"inviteTgDemoPending": {
"zh": "演示态 · 待验证",
"en": "Demo · pending"
},
"inviteTgDemoDone": {
"zh": "演示态 · 已领取",
"en": "Demo · claimed"
},
"redeemLabel": {
"zh": "兑换码",
"en": "Redemption code"
},
"redeemHint": {
"zh": "输入卡密即可激活对应时长,激活后立即生效。",
"en": "Enter a code to instantly activate plan time."
}
}
}