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:
@@ -750,7 +750,6 @@
|
||||
<div class="card card-flush" style="margin-bottom:var(--space-5)">
|
||||
<div class="setting-row"><span class="icon-box"><svg><use href="#i-globe"/></svg></span><div class="st-body"><div class="st-title">国内直连</div><div class="st-sub">GeoIP / GeoSite CN</div></div><span class="st-trail"><button class="toggle is-on"><i></i></button></span></div>
|
||||
<div class="setting-row"><span class="icon-box"><svg><use href="#i-home"/></svg></span><div class="st-body"><div class="st-title">局域网 / 私网直连</div><div class="st-sub">强制,不可关</div></div><span class="st-trail"><span class="pill is-neutral">🔒 强制</span></span></div>
|
||||
<div class="setting-row"><span class="icon-box"><svg><use href="#i-shield"/></svg></span><div class="st-body"><div class="st-title">私有服务走隧道</div><div class="st-sub">服务端下发</div></div><span class="st-trail"><span class="pill is-neutral">🔒 服务端</span></span></div>
|
||||
</div>
|
||||
<div class="sec-label">我的规则 · 有序,首命中生效</div>
|
||||
<div class="card card-flush" style="margin-bottom:var(--space-4)">
|
||||
@@ -1174,127 +1173,238 @@
|
||||
|
||||
<script>
|
||||
/* ========= i18n 字典(产品内单显中/EN;langsel 6 语为显示层) ========= */
|
||||
// <<<gen-i18n>>> 由 design/codegen/gen_proto_i18n.mjs 生成(单源 design/i18n/strings.json + i18n/{alias,overlay}.json),勿手改
|
||||
var I18N = {
|
||||
'nav.connect':{zh:'连接',en:'Connect'}, 'nav.nodes':{zh:'节点',en:'Nodes'},
|
||||
'nav.stats':{zh:'统计',en:'Stats'}, 'nav.settings':{zh:'设置',en:'Settings'},
|
||||
'nav.contact':{zh:'联系',en:'Contact'}, 'nav.account':{zh:'账户',en:'Account'},
|
||||
'nav.purchase':{zh:'升级 PRO',en:'Upgrade PRO'},
|
||||
'nav.orders':{zh:'我的订单',en:'Orders'},
|
||||
'nav.account':{zh:'账户',en:'Account'},
|
||||
'nav.notifications':{zh:'通知',en:'Notifications'}, 'nav.invite':{zh:'邀请好友',en:'Invite friends'},
|
||||
'nav.devices':{zh:'设备管理',en:'Devices'}, 'nav.redeem':{zh:'兑换码',en:'Redeem code'},
|
||||
'acc.billing':{zh:'购买 & 订单 & 兑换',en:'Buy · Orders · Redeem'},
|
||||
'acc.buy':{zh:'购买套餐',en:'Buy a plan'}, 'acc.buySub':{zh:'升级 PRO 会员',en:'Upgrade to PRO'},
|
||||
'acc.orders':{zh:'我的订单',en:'My orders'}, 'acc.ordersSub':{zh:'查看订单记录',en:'View order history'},
|
||||
'acc.redeem':{zh:'兑换码',en:'Redeem code'}, 'acc.redeemSub':{zh:'输入激活码开通',en:'Activate with a code'},
|
||||
'acc.invite':{zh:'邀请好友得会员',en:'Invite friends, earn membership'}, 'acc.inviteSub':{zh:'好友注册 · 双方都得会员天数',en:'Both sides earn membership days'},
|
||||
'nt.back':{zh:'返回',en:'Back'}, 'nt.title':{zh:'通知',en:'Notifications'},
|
||||
'nt.tImportant':{zh:'重要',en:'Important'}, 'nt.tFeature':{zh:'功能',en:'Feature'}, 'nt.tNews':{zh:'新闻',en:'News'},
|
||||
'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.tReward':{zh:'奖励',en:'Reward'}, 'nt.tVersion':{zh:'版本',en:'Version'}, 'nt.tPromo':{zh:'优惠',en:'Promo'},
|
||||
'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.title':{zh:'邀请好友',en:'Invite friends'},
|
||||
'acc.buy':{zh:'购买套餐',en:'Purchase'},
|
||||
'acc.buySub':{zh:'升级 PRO 会员',en:'Upgrade to PRO'},
|
||||
'acc.change':{zh:'修改',en:'Change'},
|
||||
'acc.dark':{zh:'深色外观',en:'Dark appearance'},
|
||||
'acc.devices':{zh:'我的设备',en:'My devices'},
|
||||
'acc.email':{zh:'邮箱',en:'Email'},
|
||||
'acc.info':{zh:'账户信息',en:'Account info'},
|
||||
'acc.invite':{zh:'邀请好友得会员',en:'Invite friends, earn membership'},
|
||||
'acc.inviteSub':{zh:'好友注册 · 双方都得会员天数',en:'Friend signs up · both earn days'},
|
||||
'acc.lang':{zh:'语言',en:'Language'},
|
||||
'acc.logout':{zh:'退出登录',en:'Sign out'},
|
||||
'acc.myDevices':{zh:'我的设备',en:'My devices'},
|
||||
'acc.myDevicesSub':{zh:'重命名 · 强制下线 · 移除',en:'Rename · force offline · remove'},
|
||||
'acc.orders':{zh:'我的订单',en:'My orders'},
|
||||
'acc.ordersSub':{zh:'查看订单记录',en:'View order history'},
|
||||
'acc.pref':{zh:'偏好',en:'Preferences'},
|
||||
'acc.protocol':{zh:'协议',en:'Protocol'},
|
||||
'acc.pwd':{zh:'密码',en:'Password'},
|
||||
'acc.redeem':{zh:'兑换激活码',en:'Redeem a code'},
|
||||
'acc.redeemSub':{zh:'输入激活码开通',en:'Activate with a code'},
|
||||
'acc.upgrade':{zh:'续费 / 升级',en:'Renew / Upgrade'},
|
||||
'brand.name':{zh:'穿山甲',en:'Pangolin'},
|
||||
'contact.email':{zh:'邮箱客服',en:'Email support'},
|
||||
'contact.hours':{zh:'每日 9:00 – 24:00 (GMT+8)',en:'Daily 9:00 – 24:00 (GMT+8)'},
|
||||
'contact.hoursTitle':{zh:'服务时间',en:'Support hours'},
|
||||
'contact.intro':{zh:'遇到问题?通过以下任一渠道联系我们,通常数分钟内回复。',en:'Need help? Reach us via any channel below — usually replies in minutes.'},
|
||||
'contact.web':{zh:'官网',en:'Website'},
|
||||
'demo.dark':{zh:'暗',en:'Dark'},
|
||||
'demo.deviceLimit':{zh:'设备超限',en:'Device limit'},
|
||||
'demo.gate':{zh:'挡板',en:'Gate'},
|
||||
'demo.hide':{zh:'隐',en:'Off'},
|
||||
'demo.lang':{zh:'语言',en:'Language'},
|
||||
'demo.light':{zh:'明',en:'Light'},
|
||||
'demo.persp':{zh:'视角',en:'Perspective'},
|
||||
'demo.show':{zh:'显',en:'On'},
|
||||
'demo.theme':{zh:'主题',en:'Theme'},
|
||||
'demo.upd':{zh:'更新条',en:'Banner'},
|
||||
'dev.back':{zh:'返回',en:'Back'},
|
||||
'dev.current':{zh:'本机',en:'This device'},
|
||||
'dev.h2':{zh:'2 小时前',en:'2h ago'},
|
||||
'dev.lastOnline':{zh:'最后在线',en:'Last online'},
|
||||
'dev.mClearLogin':{zh:'清除登录信息',en:'Clear login info'},
|
||||
'dev.mForceLogout':{zh:'强制退出',en:'Force logout'},
|
||||
'dev.mRename':{zh:'重命名',en:'Rename'},
|
||||
'dev.now':{zh:'刚刚',en:'just now'},
|
||||
'dev.remove':{zh:'移除',en:'Remove'},
|
||||
'dev.tCleared':{zh:'已清除登录信息(演示)',en:'Login info cleared (demo)'},
|
||||
'dev.tLoggedOut':{zh:'已强制退出(演示)',en:'Force logged out (demo)'},
|
||||
'dev.tRenamed':{zh:'已重命名(演示)',en:'Renamed (demo)'},
|
||||
'dev.yesterday':{zh:'昨天',en:'yesterday'},
|
||||
'dl.desc':{zh:'你的套餐最多 5 台设备,请移除一台以继续。',en:'Your plan allows up to 5 devices. Remove one to continue.'},
|
||||
'dl.logout':{zh:'退出登录',en:'Sign out'},
|
||||
'dl.remove':{zh:'移除最久未用',en:'Remove least recently used'},
|
||||
'dl.title':{zh:'设备数已达上限',en:'Device limit reached'},
|
||||
'inv.back':{zh:'返回',en:'Back'},
|
||||
'inv.converted':{zh:'已转化',en:'Converted'},
|
||||
'inv.earned':{zh:'累计获赠(天)',en:'Days earned'},
|
||||
'inv.invited':{zh:'已邀请',en:'Invited'},
|
||||
'inv.lead':{zh:'分享你的邀请码或链接,好友注册后双方都得会员天数。',en:'Share your code or link — when a friend signs up, both of you earn membership days.'},
|
||||
'inv.rewardsHead':{zh:'奖励说明 · 双方都得',en:'Rewards · both sides earn'},
|
||||
'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.progHead':{zh:'我的奖励',en:'My rewards'},
|
||||
'inv.invited':{zh:'已邀请',en:'Friends invited'}, 'inv.converted':{zh:'已转化',en:'Converted'}, 'inv.earned':{zh:'累计获赠(天)',en:'Days earned'},
|
||||
'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.rewardsHead':{zh:'奖励规则',en:'Rewards'},
|
||||
'inv.tasksHead':{zh:'更多得会员',en:'More ways to earn'},
|
||||
'inv.tgTitle':{zh:'加入 Telegram 频道',en:'Join Telegram channel'}, 'inv.tgSub':{zh:'+3 天',en:'+3 days'},
|
||||
'inv.tgJoinBtn':{zh:'加入频道',en:'Join channel'}, 'inv.tgVerifyBtn':{zh:'验证领取',en:'Verify & claim'}, 'inv.tgDoneBtn':{zh:'已领 +3 天',en:'Claimed +3 days'},
|
||||
'inv.tgDemoPending':{zh:'演示态 · 待验证',en:'Demo · pending'}, 'inv.tgDemoDone':{zh:'演示态 · 已领取',en:'Demo · claimed'},
|
||||
'rd.back':{zh:'返回',en:'Back'}, 'rd.title':{zh:'兑换码',en:'Redeem code'},
|
||||
'rd.label':{zh:'兑换码',en:'Redemption code'}, 'rd.ph':{zh:'输入兑换 / 激活码',en:'Enter activation code'},
|
||||
'rd.btn':{zh:'立即兑换',en:'Redeem'}, 'rd.hint':{zh:'输入卡密即可激活对应时长,激活后立即生效。',en:'Enter a code to instantly activate plan time.'},
|
||||
'set.orders':{zh:'我的订单',en:'My orders'}, 'set.ordersSub':{zh:'查看订单记录',en:'View order history'},
|
||||
'ord.back':{zh:'返回',en:'Back'}, 'ord.details':{zh:'明细',en:'Details'},
|
||||
'ord.kOrderNo':{zh:'订单号',en:'Order No.'}, 'ord.kPlan':{zh:'套餐',en:'Plan'}, 'ord.kAmount':{zh:'金额',en:'Amount'},
|
||||
'ord.kMethod':{zh:'支付方式',en:'Payment'}, 'ord.kStatus':{zh:'状态',en:'Status'}, 'ord.kCreated':{zh:'创建时间',en:'Created'},
|
||||
'ord.kValid':{zh:'有效期至',en:'Valid until'}, 'ord.kDeadline':{zh:'支付截止',en:'Pay before'}, 'ord.kTrade':{zh:'交易流水号',en:'Trade No.'},
|
||||
'ord.actContinue':{zh:'继续支付',en:'Continue payment'}, 'ord.actCancel':{zh:'取消订单',en:'Cancel order'},
|
||||
'ord.actRefresh':{zh:'刷新状态',en:'Refresh status'}, 'ord.actMembership':{zh:'查看会员',en:'View membership'},
|
||||
'ord.actBuyAgain':{zh:'重新购买',en:'Buy again'}, 'ord.copied':{zh:'已复制',en:'Copied'},
|
||||
'inv.tgDemoDone':{zh:'演示态 · 已领取',en:'Demo · claimed'},
|
||||
'inv.tgDemoPending':{zh:'演示态 · 待验证',en:'Demo · pending'},
|
||||
'inv.tgDoneBtn':{zh:'已领 +3 天',en:'Claimed +3 days'},
|
||||
'inv.tgJoinBtn':{zh:'加入频道',en:'Join channel'},
|
||||
'inv.tgSub':{zh:'+3 天',en:'+3 days'},
|
||||
'inv.tgTitle':{zh:'加入 Telegram 频道',en:'Join Telegram channel'},
|
||||
'inv.tgVerifyBtn':{zh:'验证领取',en:'Verify & claim'},
|
||||
'inv.title':{zh:'邀请好友',en:'Invite friends'},
|
||||
'login.email':{zh:'邮箱',en:'Email'},
|
||||
'login.frame':{zh:'分屏卡 · 品牌左 / 表单右',en:'Split card · brand left / form right'},
|
||||
'login.haveAccount':{zh:'已有账户?登录',en:'Have an account? Sign in'},
|
||||
'login.note':{zh:'(独立静态屏,不并入交互窗口)',en:'(standalone static screen, outside the interactive window)'},
|
||||
'login.pwd':{zh:'密码',en:'Password'},
|
||||
'login.pwd2':{zh:'确认密码',en:'Confirm password'},
|
||||
'login.signin':{zh:'登录',en:'Log in'},
|
||||
'login.signup':{zh:'没有账户?免费注册',en:'No account? Sign up free'},
|
||||
'login.signupBtn':{zh:'免费注册',en:'Sign up free'},
|
||||
'login.signupTitle':{zh:'注册',en:'Sign up'},
|
||||
'login.slogan':{zh:'极速畅连 · 稳定加速线路<br>隐私保护 · 全程无日志',en:'Fast & stable lines<br>Privacy protected · No logs'},
|
||||
'login.title':{zh:'登录账户',en:'Sign in'},
|
||||
'nav.account':{zh:'我的',en:'Account'},
|
||||
'nav.connect':{zh:'连接',en:'Connect'},
|
||||
'nav.contact':{zh:'联系我们',en:'Contact us'},
|
||||
'nav.devices':{zh:'我的设备',en:'My devices'},
|
||||
'nav.invite':{zh:'邀请好友',en:'Invite friends'},
|
||||
'nav.nodes':{zh:'节点',en:'Servers'},
|
||||
'nav.notifications':{zh:'通知',en:'Notifications'},
|
||||
'nav.orders':{zh:'我的订单',en:'My orders'},
|
||||
'nav.purchase':{zh:'购买套餐',en:'Purchase'},
|
||||
'nav.redeem':{zh:'兑换激活码',en:'Redeem a code'},
|
||||
'nav.routing':{zh:'分流规则',en:'Routing rules'},
|
||||
'nav.settings':{zh:'设置',en:'Settings'},
|
||||
'nav.stats':{zh:'统计',en:'Stats'},
|
||||
'nodes.de':{zh:'德国 · 法兰克福',en:'Germany · Frankfurt'},
|
||||
'nodes.hk':{zh:'香港 · 优选',en:'Hong Kong · Premium'},
|
||||
'nodes.jp':{zh:'日本 · 东京',en:'Japan · Tokyo'},
|
||||
'nodes.rec':{zh:'推荐',en:'Recommended'},
|
||||
'nodes.search':{zh:'搜索加速线路…',en:'Search lines…'},
|
||||
'nodes.sg':{zh:'新加坡',en:'Singapore'},
|
||||
'nodes.smart':{zh:'智能选择',en:'Smart select'},
|
||||
'nodes.smartSub':{zh:'根据当前网络环境,自动选择最优节点',en:'Picks the best node for your network'},
|
||||
'nodes.stream':{zh:'流媒体',en:'Streaming'},
|
||||
'nodes.unavail':{zh:'暂不可用',en:'Unavailable'},
|
||||
'nodes.us':{zh:'美国 · 洛杉矶',en:'US · Los Angeles'},
|
||||
'nt.back':{zh:'返回',en:'Back'},
|
||||
'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.n1s':{zh:'我们更新了服务条款,请查阅最新内容。',en:'We have updated our terms — please review the latest version.'},
|
||||
'nt.n1t':{zh:'服务条款与隐私政策更新',en:'Terms & privacy policy updated'},
|
||||
'nt.n2s':{zh:'三条低延迟线路已上线,欢迎体验。',en:'Three low-latency lines are now live.'},
|
||||
'nt.n2t':{zh:'新增日本 · 大阪加速线路',en:'New Japan · Osaka lines added'},
|
||||
'nt.n3s':{zh:'邀请好友注册,双方都可获得会员天数。',en:'Invite friends to sign up — both sides earn membership days.'},
|
||||
'nt.n3t':{zh:'邀请好友活动进行中',en:'Invite-a-friend event is live'},
|
||||
'nt.n4s':{zh:'好友已完成注册,会员天数已计入你的账户。',en:'Your friend has completed sign-up — the days have been added to your account.'},
|
||||
'nt.n4t':{zh:'邀请奖励 +3 天已到账',en:'Referral reward: +3 days credited'},
|
||||
'nt.n5s':{zh:'修复已知问题,建议尽快更新。',en:'Bug fixes included — update is recommended.'},
|
||||
'nt.n5t':{zh:'v1.0.73 已发布',en:'v1.0.73 is out'},
|
||||
'nt.n6s':{zh:'限时活动,PRO 月付低至 ¥6,先到先得。',en:'Limited-time offer — PRO monthly as low as ¥6, while it lasts.'},
|
||||
'nt.n6t':{zh:'¥6 月付优惠上线',en:'¥6/mo promo is live'},
|
||||
'nt.tFeature':{zh:'功能',en:'Feature'},
|
||||
'nt.tImportant':{zh:'重要',en:'Important'},
|
||||
'nt.tNews':{zh:'新闻',en:'News'},
|
||||
'nt.tPromo':{zh:'活动',en:'Promo'},
|
||||
'nt.tReward':{zh:'到账',en:'Credited'},
|
||||
'nt.tVersion':{zh:'版本',en:'Update'},
|
||||
'nt.title':{zh:'通知',en:'Notifications'},
|
||||
'nt.updateBtn':{zh:'去更新',en:'Update now'},
|
||||
'ord.actBuyAgain':{zh:'重新购买',en:'Buy again'},
|
||||
'ord.actCancel':{zh:'取消订单',en:'Cancel order'},
|
||||
'ord.actContinue':{zh:'继续支付',en:'Continue payment'},
|
||||
'ord.actMembership':{zh:'查看会员',en:'View membership'},
|
||||
'ord.actRefresh':{zh:'刷新状态',en:'Refresh'},
|
||||
'ord.back':{zh:'返回',en:'Back'},
|
||||
'ord.copied':{zh:'已复制',en:'Copied'},
|
||||
'ord.details':{zh:'明细',en:'Details'},
|
||||
'ord.kAmount':{zh:'金额',en:'Amount'},
|
||||
'ord.kCreated':{zh:'创建时间',en:'Created'},
|
||||
'ord.kDeadline':{zh:'支付截止',en:'Pay before'},
|
||||
'ord.kMethod':{zh:'支付方式',en:'Payment method'},
|
||||
'ord.kOrderNo':{zh:'订单号',en:'Order no.'},
|
||||
'ord.kPlan':{zh:'套餐',en:'Plan'},
|
||||
'ord.kStatus':{zh:'状态',en:'Status'},
|
||||
'ord.kTrade':{zh:'交易流水号',en:'Trade No.'},
|
||||
'ord.kValid':{zh:'有效期至',en:'Valid until'},
|
||||
'plan.free':{zh:'免费版',en:'Free'},
|
||||
'pur.address':{zh:'收款地址',en:'Address'},
|
||||
'pur.aliScan':{zh:'用支付宝扫码支付',en:'Scan with Alipay to pay'},
|
||||
'pur.alipayHint':{zh:'付款后自动开通,无需手动确认。',en:'Activated automatically after payment — no manual confirmation needed.'},
|
||||
'pur.amount':{zh:'转账金额',en:'Amount'},
|
||||
'pur.back':{zh:'返回',en:'Back'},
|
||||
'pur.proIncludes':{zh:'PRO 全部特性',en:'Everything in PRO'},
|
||||
'pur.buy':{zh:'立即购买',en:'Buy now'},
|
||||
'pur.cancel':{zh:'取消订单',en:'Cancel order'},
|
||||
'pur.chanCny':{zh:'人民币 · 支付宝',en:'CNY · Alipay'},
|
||||
'pur.chanUsdt':{zh:'USDT · 加密货币',en:'USDT · Crypto'},
|
||||
'pur.channel':{zh:'支付渠道',en:'Payment channel'},
|
||||
'pur.demo':{zh:'评审演示',en:'Review demo'},
|
||||
'pur.done':{zh:'完成',en:'Done'},
|
||||
'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.channel':{zh:'支付渠道',en:'Payment channel'},
|
||||
'pur.chanUsdt':{zh:'USDT · 加密货币',en:'USDT · Crypto'},
|
||||
'pur.chanCny':{zh:'人民币 · 支付宝',en:'CNY · Alipay'},
|
||||
'pur.pop':{zh:'最受欢迎',en:'Most popular'}, 'pur.buy':{zh:'立即购买',en:'Buy now'},
|
||||
'pur.network':{zh:'网络',en:'Network'}, 'pur.address':{zh:'收款地址',en:'Address'}, 'pur.amount':{zh:'精确金额',en:'Exact amount'},
|
||||
'pur.failSub':{zh:'订单已超时,请重试',en:'Order timed out, please retry'},
|
||||
'pur.failTitle':{zh:'支付失败',en:'Payment failed'},
|
||||
'pur.month':{zh:'按月',en:'Monthly'},
|
||||
'pur.network':{zh:'网络',en:'Network'},
|
||||
'pur.okTitle':{zh:'已开通',en:'Activated'},
|
||||
'pur.pop':{zh:'最受欢迎',en:'Popular'},
|
||||
'pur.proIncludes':{zh:'PRO 全部特性',en:'Everything in PRO'},
|
||||
'pur.quarter':{zh:'按季',en:'Quarterly'},
|
||||
'pur.retry':{zh:'重试',en:'Retry'},
|
||||
'pur.simFail':{zh:'▸ 模拟失败',en:'▸ Simulate failure'},
|
||||
'pur.simPaid':{zh:'▸ 模拟到账',en:'▸ Simulate paid'},
|
||||
'pur.switch':{zh:'换一种支付方式',en:'Switch payment method'},
|
||||
'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.switch':{zh:'更换支付渠道',en:'Change channel'}, 'pur.cancel':{zh:'取消订单',en:'Cancel order'},
|
||||
'pur.demo':{zh:'评审演示',en:'Review demo'}, 'pur.simPaid':{zh:'▸ 模拟到账',en:'▸ Simulate paid'}, 'pur.simFail':{zh:'▸ 模拟失败',en:'▸ Simulate failure'},
|
||||
'pur.okTitle':{zh:'支付成功',en:'Payment successful'}, 'pur.done':{zh:'完成',en:'Done'},
|
||||
'pur.failTitle':{zh:'支付失败',en:'Payment failed'}, 'pur.failSub':{zh:'订单已超时,请重试',en:'Order timed out, please retry'}, 'pur.retry':{zh:'重新支付',en:'Pay again'},
|
||||
'brand.name':{zh:'穿山甲',en:'Pangolin'},
|
||||
'plan.free':{zh:'免费版',en:'Free'},
|
||||
'q.remain':{zh:'今日剩余',en:'Remaining today'}, 'q.zero':{zh:'0 分钟',en:'0 min'},
|
||||
'nodes.search':{zh:'搜索加速线路…',en:'Search lines…'}, 'nodes.smart':{zh:'智能选择',en:'Smart Select'},
|
||||
'nodes.smartSub':{zh:'根据当前网络环境,自动选择最优节点',en:'Auto-select the best node for your network'},
|
||||
'nodes.rec':{zh:'推荐',en:'Recommended'}, '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'},
|
||||
'stats.month':{zh:'本月',en:'This month'}, 'stats.week':{zh:'本周',en:'This week'}, 'stats.today':{zh:'今日',en:'Today'},
|
||||
'stats.down':{zh:'下行',en:'Down'}, 'stats.up':{zh:'上行',en:'Up'}, 'stats.dur':{zh:'时长',en:'Time'},
|
||||
'stats.chart':{zh:'最近两周流量',en:'Last 14 days'},
|
||||
'stats.allDevices':{zh:'全部设备',en:'All devices'},
|
||||
'acc.info':{zh:'账户信息',en:'Account info'}, 'acc.email':{zh:'邮箱',en:'Email'}, 'acc.pwd':{zh:'密码',en:'Password'},
|
||||
'acc.change':{zh:'修改',en:'Change'}, 'acc.devices':{zh:'设备管理',en:'Devices'}, 'acc.pref':{zh:'偏好',en:'Preferences'},
|
||||
'acc.myDevices':{zh:'我的设备',en:'My Devices'}, 'acc.myDevicesSub':{zh:'重命名 · 强制下线 · 移除',en:'Rename · force offline · remove'},
|
||||
'acc.lang':{zh:'语言',en:'Language'}, 'acc.dark':{zh:'深色外观',en:'Dark appearance'}, 'acc.protocol':{zh:'协议',en:'Protocol'},
|
||||
'acc.upgrade':{zh:'续费 / 升级',en:'Renew / Upgrade'}, 'acc.logout':{zh:'退出登录',en:'Sign out'},
|
||||
'set.redeem':{zh:'兑换 & 购买',en:'Redeem & buy'}, 'set.redeemSub':{zh:'PRO 会员',en:'PRO member'},
|
||||
'set.autostart':{zh:'开机自启',en:'Launch at startup'}, 'set.autostartSub':{zh:'系统启动时自动运行',en:'Run automatically on system start'},
|
||||
'set.autoconnect':{zh:'自动连接',en:'Auto-connect'}, 'set.autoconnectSub':{zh:'启动时自动连接节点',en:'Connect automatically on launch'},
|
||||
'set.smart':{zh:'智能分流',en:'Smart routing'}, 'set.smartSub':{zh:'海外应用走加速,国内直连',en:'Accelerate abroad, direct at home'},
|
||||
'nav.routing':{zh:'分流规则',en:'Routing rules'},
|
||||
'set.routing':{zh:'分流规则',en:'Routing rules'}, 'set.routingSub':{zh:'自定义直连 / 走隧道 / 拒绝',en:'Custom direct / proxy / reject'}, 'set.routeModeSmart':{zh:'智能分流',en:'Smart routing'},
|
||||
'set.kill':{zh:'断连保护 Kill Switch',en:'Kill Switch'}, 'set.killSub':{zh:'断线时阻断网络,防止数据泄露',en:'Block traffic if the link drops'},
|
||||
'set.lang':{zh:'语言',en:'Language'}, 'set.dark':{zh:'深色外观',en:'Dark appearance'},
|
||||
'set.protocol':{zh:'协议',en:'Protocol'}, 'set.web':{zh:'网页版用户中心',en:'Web User Center'},
|
||||
'set.grpConn':{zh:'连接',en:'Connection'}, 'set.grpAppear':{zh:'外观',en:'Appearance'}, 'set.grpAbout':{zh:'关于',en:'About'},
|
||||
'pur.waitAlipay':{zh:'等待付款确认…',en:'Waiting for payment…'},
|
||||
'pur.waitCrypto':{zh:'等待到账确认…',en:'Waiting for confirmation…'},
|
||||
'pur.year':{zh:'按年',en:'Yearly'},
|
||||
'q.remain':{zh:'今日剩余',en:'Left today'},
|
||||
'q.zero':{zh:'0 分钟',en:'0 min'},
|
||||
'rd.back':{zh:'返回',en:'Back'},
|
||||
'rd.btn':{zh:'激活',en:'Redeem'},
|
||||
'rd.hint':{zh:'输入卡密即可激活对应时长,激活后立即生效。',en:'Enter a code to instantly activate plan time.'},
|
||||
'rd.label':{zh:'兑换码',en:'Redemption code'},
|
||||
'rd.ph':{zh:'输入激活码',en:'Enter activation code'},
|
||||
'rd.title':{zh:'兑换激活码',en:'Redeem a code'},
|
||||
'set.autoconnect':{zh:'自动连接',en:'Auto-connect'},
|
||||
'set.autoconnectSub':{zh:'启动时自动连接节点',en:'Connect automatically on launch'},
|
||||
'set.autostart':{zh:'开机自启',en:'Launch at startup'},
|
||||
'set.autostartSub':{zh:'系统启动时自动运行',en:'Run automatically on system start'},
|
||||
'set.dark':{zh:'深色外观',en:'Dark appearance'},
|
||||
'set.grpAbout':{zh:'关于',en:'About'},
|
||||
'set.grpAppear':{zh:'外观',en:'Appearance'},
|
||||
'set.grpConn':{zh:'连接',en:'Connection'},
|
||||
'set.kill':{zh:'Kill Switch',en:'Kill Switch'},
|
||||
'set.killSub':{zh:'断线时阻断网络,防止泄露',en:'Block traffic if the link drops'},
|
||||
'set.lang':{zh:'语言',en:'Language'},
|
||||
'set.orders':{zh:'我的订单',en:'My orders'},
|
||||
'set.ordersSub':{zh:'查看订单记录',en:'View order history'},
|
||||
'set.protocol':{zh:'协议',en:'Protocol'},
|
||||
'set.redeem':{zh:'兑换 & 购买',en:'Redeem & buy'},
|
||||
'set.redeemSub':{zh:'PRO 会员',en:'PRO member'},
|
||||
'set.routeModeSmart':{zh:'智能分流',en:'Smart routing'},
|
||||
'set.routing':{zh:'分流规则',en:'Routing rules'},
|
||||
'set.routingSub':{zh:'自定义直连 / 走隧道 / 拒绝',en:'Custom direct / tunnel / reject'},
|
||||
'set.smart':{zh:'智能分流',en:'Smart routing'},
|
||||
'set.smartSub':{zh:'海外应用走加速,国内直连',en:'Accelerate abroad, direct at home'},
|
||||
'set.update':{zh:'检查更新',en:'Check for updates'},
|
||||
'contact.intro':{zh:'遇到问题?通过以下任一渠道联系我们,通常数分钟内回复。',en:'Having trouble? Reach us on any channel below — usually a reply within minutes.'},
|
||||
'contact.email':{zh:'邮箱客服',en:'Email support'}, 'contact.web':{zh:'官网',en:'Website'},
|
||||
'contact.hoursTitle':{zh:'服务时间',en:'Support hours'}, 'contact.hours':{zh:'每日 9:00 – 24:00 (GMT+8)',en:'Daily 9:00 – 24:00 (GMT+8)'},
|
||||
'ub.title':{zh:'发现新版本 v2.5.0,建议更新',en:'New version v2.5.0 available'}, 'ub.cta':{zh:'立即更新',en:'Update'},
|
||||
'dl.title':{zh:'设备数已达上限',en:'Device limit reached'},
|
||||
'dl.desc':{zh:'你的套餐最多 5 台设备,请移除一台以继续。',en:'Your plan allows up to 5 devices. Remove one to continue.'},
|
||||
'dl.remove':{zh:'移除最久未用',en:'Remove least recently used'}, 'dl.logout':{zh:'退出登录',en:'Sign out'},
|
||||
'dev.current':{zh:'本机',en:'This device'}, 'dev.remove':{zh:'移除',en:'Remove'}, 'dev.back':{zh:'返回',en:'Back'},
|
||||
'dev.lastOnline':{zh:'最后在线',en:'Last online'}, 'dev.now':{zh:'刚刚',en:'just now'},
|
||||
'dev.h2':{zh:'2 小时前',en:'2h ago'}, 'dev.yesterday':{zh:'昨天',en:'yesterday'},
|
||||
'dev.mRename':{zh:'重命名',en:'Rename'}, 'dev.mForceLogout':{zh:'强制退出',en:'Force logout'}, 'dev.mClearLogin':{zh:'清除登录信息',en:'Clear login info'},
|
||||
'dev.tRenamed':{zh:'已重命名(演示)',en:'Renamed (demo)'}, 'dev.tLoggedOut':{zh:'已强制退出(演示)',en:'Force logged out (demo)'}, 'dev.tCleared':{zh:'已清除登录信息(演示)',en:'Login info cleared (demo)'},
|
||||
'state.on':{zh:'已开启',en:'On'}, 'state.off':{zh:'跟随浅色',en:'Off'},
|
||||
'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.email':{zh:'邮箱',en:'Email'}, 'login.pwd':{zh:'密码',en:'Password'},
|
||||
'login.signin':{zh:'登录',en:'Sign in'}, 'login.signup':{zh:'没有账户?免费注册',en:'No account? Sign up free'},
|
||||
'login.signupTitle':{zh:'注册账户',en:'Sign up'}, 'login.pwd2':{zh:'确认密码',en:'Confirm password'},
|
||||
'login.signupBtn':{zh:'免费注册',en:'Sign up free'}, 'login.haveAccount':{zh:'已有账户?登录',en:'Have an account? Sign in'}
|
||||
'set.web':{zh:'用户中心(网页)',en:'User Center (Web)'},
|
||||
'state.off':{zh:'跟随浅色',en:'Off'},
|
||||
'state.on':{zh:'已开启',en:'On'},
|
||||
'stats.allDevices':{zh:'全部设备',en:'All devices'},
|
||||
'stats.chart':{zh:'最近两周流量',en:'Last 2 weeks'},
|
||||
'stats.down':{zh:'下行',en:'Download'},
|
||||
'stats.dur':{zh:'使用时长',en:'Duration'},
|
||||
'stats.month':{zh:'本月',en:'This month'},
|
||||
'stats.today':{zh:'今日',en:'Today'},
|
||||
'stats.up':{zh:'上行',en:'Upload'},
|
||||
'stats.week':{zh:'本周',en:'This week'},
|
||||
'ub.cta':{zh:'立即更新',en:'Update'},
|
||||
'ub.title':{zh:'发现新版本 v2.5.0,建议更新',en:'New version v2.5.0 available'}
|
||||
};
|
||||
// <<<end-gen-i18n>>>
|
||||
var HTML_KEYS = { 'login.slogan':1 };
|
||||
|
||||
/* 状态/视角相关的动态串(随 lang 计算,不走 data-i18n) */
|
||||
|
||||
@@ -928,8 +928,7 @@
|
||||
<div class="sec-label">内置规则</div>
|
||||
<div class="card card-flush">
|
||||
<div class="setting-row"><span class="icon-box"><svg><use href="#i-globe"/></svg></span><div class="st-body"><div class="st-title">国内直连</div><div class="st-sub">GeoIP / GeoSite CN</div></div><div class="st-trail"><button class="toggle is-on"><i></i></button></div></div>
|
||||
<div class="setting-row"><span class="icon-box"><svg><use href="#i-home"/></svg></span><div class="st-body"><div class="st-title">局域网 / 私网直连</div><div class="st-sub">强制,不可关</div></div><div class="st-trail"><span class="pill is-neutral">🔒</span></div></div>
|
||||
<div class="setting-row"><span class="icon-box"><svg><use href="#i-shield"/></svg></span><div class="st-body"><div class="st-title">私有服务走隧道</div><div class="st-sub">服务端下发</div></div><div class="st-trail"><span class="pill is-neutral">🔒</span></div></div>
|
||||
<div class="setting-row"><span class="icon-box"><svg><use href="#i-home"/></svg></span><div class="st-body"><div class="st-title" data-i18n="rr.lan">局域网 / 私网直连</div><div class="st-sub" data-i18n="rr.lanSub">强制,不可关</div></div><div class="st-trail"><span class="pill is-neutral" data-i18n="rr.forced">🔒</span></div></div>
|
||||
</div>
|
||||
<div class="sec-label">我的规则 · 首命中生效</div>
|
||||
<div class="card card-flush">
|
||||
@@ -1285,170 +1284,508 @@
|
||||
|
||||
<script>
|
||||
/* ---------- i18n 字典(覆盖导航/CTA/标题;数据值不翻) ---------- */
|
||||
// <<<gen-i18n>>> 由 design/codegen/gen_proto_i18n.mjs 生成(单源 design/i18n/strings.json + i18n/{alias,overlay}.json),勿手改
|
||||
const I18N = {
|
||||
zh:{
|
||||
brandName:'穿山甲', brandLatin:'Pangolin',
|
||||
demoTheme:'主题', demoLang:'语言', demoView:'视角', demoUpdate:'更新',
|
||||
demoGate:'挡板', demoDeviceLimit:'设备超限',
|
||||
dlTitle:'设备数已达上限', dlDesc:'你的账户最多可同时登录 5 台设备,请移除一台后继续。', dlRemoveLru:'移除最久未用', dlRemove:'移除', dlOnline:'在线',
|
||||
segLight:'明', segDark:'暗', segFree:'免费版', segPro:'PRO',
|
||||
segShow:'显示', segHide:'隐藏',
|
||||
navConnect:'连接', navNodes:'节点', navStats:'统计', navAccount:'账户',
|
||||
rateDown:'下载', rateUp:'上传', latency:'延迟', disconnect:'断开连接',
|
||||
searchPh:'搜索国家 / 城市', smartTitle:'智能选择', smartSub:'根据当前网络环境,自动选择最优节点', recommend:'推荐',
|
||||
nHKt:'香港 01', nJPt:'日本 · 东京 02', nSGt:'新加坡 01', nUSt:'美国 · 洛杉矶 03', nTWt:'台湾 01',
|
||||
tagStream:'流媒体', tagLowLat:'低延迟', tagStable:'高速稳定', tagDistant:'远距离', maintenance:'维护中', unavail:'不可用',
|
||||
periodMonth:'本月', periodWeek:'本周', periodToday:'今日',
|
||||
statDownArr:'↓ 下行', statUpArr:'↑ 上行', statDur:'使用时长', chartTwoWeeks:'最近两周流量',
|
||||
planFree:'免费版', planProMeta:'PRO 会员 · 2027-07-11', upgrade:'续费 / 升级', renew:'续费 / 升级',
|
||||
secAccount:'账户信息', accEmail:'邮箱', accPassword:'密码', accChange:'修改',
|
||||
devFreeLbl:'我的设备 · 1 / 1 台', devProLbl:'我的设备 · 3 / 5 台',
|
||||
secDevices:'设备', myDevices:'我的设备', devMgmt:'设备管理',
|
||||
thisDevice:'本机', devOnlineNow:'当前在线', lastOnline:'最后在线', rel2h:'2 小时前', relYday:'昨天',
|
||||
devRename:'重命名', devForceLogout:'强制退出', devClearLogin:'清除登录信息',
|
||||
devRenamedToast:'已重命名(演示)', devLoggedOutToast:'已强制退出(演示)', devClearedToast:'已清除登录信息(演示)',
|
||||
secPref:'偏好', prefLang:'语言', prefTheme:'深色外观', prefProtocol:'协议', followLight:'跟随浅色', stateOn:'已开启',
|
||||
secMore:'更多', navDevices:'设备管理', navSettings:'设置', navRouting:'分流规则', navRedeem:'兑换 & 购买',
|
||||
navContact:'联系我们', navWebUC:'网页用户中心', logout:'退出登录',
|
||||
navOrders:'我的订单', ordDetailTitle:'订单详情', ordSecDetail:'明细',
|
||||
kOrderNo:'订单号', kPlan:'套餐', kAmount:'金额', kMethod:'支付方式', kStatus:'状态',
|
||||
kCreated:'创建时间', kValid:'有效期至', kDeadline:'支付截止', kTrade:'交易流水号',
|
||||
actContinue:'继续支付', actCancel:'取消订单', actRefresh:'刷新状态', actMembership:'查看会员', actBuyAgain:'重新购买',
|
||||
updateTitle:'发现新版本 v1.1.0', updateCta:'更新',
|
||||
connOff:'点击连接', connDoing:'连接中', cbSubOn:'已加密',
|
||||
stOff:'未连接 · 轻点连接', stDoing:'连接中…', stOn:'已连接 · 网络已加密',
|
||||
pillFree:'免费版', pillDoing:'连接中', pillOn:'已加密', pillOffPro:'未连接',
|
||||
toastUpdate:'演示:前往应用商店更新',
|
||||
authLogin:'登录', authRegister:'注册', authTagline:'极速 · 稳定 · 省心',
|
||||
authEmail:'邮箱', authEmailPh:'you@example.com', authPassword:'密码', authForgot:'忘记密码?',
|
||||
authLoginBtn:'登录', authTos:'继续即代表同意《服务条款》与《隐私政策》',
|
||||
authCode:'验证码', authCodePh:'6 位验证码', authSendCode:'发送验证码',
|
||||
authSetPw:'设置密码', authSetPwPh:'至少 6 位', authRegBtn:'注册',
|
||||
statsFilterLbl:'设备', devAll:'全部设备',
|
||||
purTitle:'升级 PRO', purCheckout:'完成支付',
|
||||
proIncludes:'所有套餐均含', featSupport:'优先客服',
|
||||
planMonth:'按月', planQuarter:'按季', planYear:'按年',
|
||||
perMo:' / 月', planPop:'最受欢迎',
|
||||
featUnlimited:'不限时长 · 不限流量', feat80:'80+ 全球加速线路', feat5:'5 台设备同时在线',
|
||||
accChange:'修改',
|
||||
accEmail:'邮箱',
|
||||
accPassword:'密码',
|
||||
actBuyAgain:'重新购买',
|
||||
actCancel:'取消订单',
|
||||
actContinue:'继续支付',
|
||||
actMembership:'查看会员',
|
||||
actRefresh:'刷新状态',
|
||||
authCode:'邮箱验证码',
|
||||
authCodePh:'6 位验证码',
|
||||
authEmail:'邮箱',
|
||||
authEmailPh:'you@example.com',
|
||||
authForgot:'忘记密码?',
|
||||
authLogin:'登录',
|
||||
authLoginBtn:'登录',
|
||||
authPassword:'密码',
|
||||
authRegBtn:'注册',
|
||||
authRegister:'注册',
|
||||
authSendCode:'发送验证码',
|
||||
authSetPw:'设置密码',
|
||||
authSetPwPh:'至少 6 位',
|
||||
authTagline:'极速 · 稳定 · 省心',
|
||||
authTos:'继续即代表同意《服务条款》与《隐私政策》',
|
||||
brandLatin:'Pangolin',
|
||||
brandName:'穿山甲',
|
||||
buyNow:'立即购买',
|
||||
payChannel:'支付渠道',
|
||||
chanSwUsdt:'USDT · 加密货币', chanSwCny:'人民币 · 支付宝',
|
||||
chanUsdt:'加密货币 · USDT', chanCny:'支付宝 · 人民币',
|
||||
ordPlan:'套餐', ordAmount:'金额', ordUntil:'到期',
|
||||
payNetwork:'网络', payAddr:'收款地址', payAmount:'精确金额',
|
||||
payHintCryptoTpl:'请转账 {amt} USDT(含小数末位),金额用于自动对账识别,多退少不到账。',
|
||||
payOpenAlipay:'打开支付宝', payHintAlipay:'将跳转至支付宝完成付款,付款后自动返回本页并开通。',
|
||||
payWaitCrypto:'等待到账确认…', payWaitAlipay:'等待付款确认…',
|
||||
paySwitch:'更换支付渠道', payCancel:'取消订单',
|
||||
demoReview:'评审演示', demoPaid:'▸ 模拟到账', demoFailed:'▸ 模拟失败',
|
||||
succTitle:'支付成功', succSubTpl:'PRO({name})有效期至 {date}', purDone:'完成',
|
||||
failTitle:'支付失败', failSub:'订单已超时,请重试', purRetry:'重新支付',
|
||||
toastCopied:'已复制:{v}', toastAlipay:'已拉起支付宝(演示)',
|
||||
secBilling:'购买 · 订单 · 兑换', rowBuyPlan:'购买套餐', navRedeemCode:'兑换码',
|
||||
secInvite:'推广', inviteEntry:'邀请好友得会员', inviteEntrySub:'双方各得订阅天数', secGeneral:'通用',
|
||||
setGrpConn:'连接', setLaunch:'开机自启', setAutoConn:'自动连接', setSmartRoute:'智能分流', setKill:'断网保护',
|
||||
setGrpAppr:'外观', setGrpAbout:'关于', setCheckUpdate:'检查更新',
|
||||
contactEmail:'邮箱', contactWeb:'官网', contactHours:'服务时间', contactHoursVal:'每日 9:00–24:00 (GMT+8)',
|
||||
navNotifications:'通知', notiFoot:'仅显示最近通知(演示占位)',
|
||||
nt1Type:'重要', nt1Title:'服务条款与隐私政策更新', nt1Sub:'我们更新了服务条款,请查阅最新内容。',
|
||||
cbSubOn:'已加密',
|
||||
chanCny:'支付宝 · 人民币',
|
||||
chanSwCny:'人民币 · 支付宝',
|
||||
chanSwUsdt:'USDT · 加密货币',
|
||||
chanUsdt:'加密货币 · USDT',
|
||||
chartTwoWeeks:'最近两周流量',
|
||||
connDoing:'连接中',
|
||||
connOff:'点击连接',
|
||||
contactEmail:'邮箱',
|
||||
contactHours:'服务时间',
|
||||
contactHoursVal:'每日 9:00 – 24:00 (GMT+8)',
|
||||
contactWeb:'官网',
|
||||
demoDeviceLimit:'设备超限',
|
||||
demoFailed:'▸ 模拟失败',
|
||||
demoGate:'挡板',
|
||||
demoLang:'语言',
|
||||
demoPaid:'▸ 模拟到账',
|
||||
demoReview:'评审演示',
|
||||
demoTheme:'主题',
|
||||
demoUpdate:'更新',
|
||||
demoView:'视角',
|
||||
devAll:'全部设备',
|
||||
devClearLogin:'清除登录信息',
|
||||
devClearedToast:'已清除登录信息(演示)',
|
||||
devForceLogout:'强制退出',
|
||||
devFreeLbl:'我的设备 · 1 / 1 台',
|
||||
devLoggedOutToast:'已强制退出(演示)',
|
||||
devMgmt:'我的设备',
|
||||
devOnlineNow:'当前在线',
|
||||
devProLbl:'我的设备 · 3 / 5 台',
|
||||
devRename:'重命名',
|
||||
devRenamedToast:'已重命名(演示)',
|
||||
disconnect:'断开连接',
|
||||
dlDesc:'你的账户最多可同时登录 5 台设备,请移除一台后继续。',
|
||||
dlOnline:'在线',
|
||||
dlRemove:'移除',
|
||||
dlRemoveLru:'移除最久未用',
|
||||
dlTitle:'设备数已达上限',
|
||||
failSub:'订单已超时,请重试',
|
||||
failTitle:'支付失败',
|
||||
feat5:'5 台设备同时在线',
|
||||
feat80:'80+ 全球加速线路',
|
||||
featSupport:'优先客服',
|
||||
featUnlimited:'不限时长 · 不限流量',
|
||||
followLight:'跟随浅色',
|
||||
inviteCode:'邀请码',
|
||||
inviteEntry:'邀请好友得会员',
|
||||
inviteEntrySub:'好友注册 · 双方都得会员天数',
|
||||
inviteHeadline:'邀请好友得会员',
|
||||
inviteJoinTgBtn:'加入频道',
|
||||
inviteJoinTgTitle:'加入 Telegram 频道',
|
||||
inviteLede:'好友注册、首购、加入社区,双方都各得订阅天数。',
|
||||
inviteLink:'邀请链接',
|
||||
inviteProgress:'我的奖励',
|
||||
inviteProgressSub:'已邀请 2 位好友,累计获得 6 天会员(演示占位)',
|
||||
inviteR1:'好友注册 · 双方各得 3 天',
|
||||
inviteR2:'好友首购 · 双方各得 7 天',
|
||||
inviteR3:'加入 TG 频道 · 得 3 天',
|
||||
inviteRewards:'奖励规则',
|
||||
inviteShare:'分享邀请链接',
|
||||
inviteStatConverted:'已转化',
|
||||
inviteStatDays:'累计获赠(天)',
|
||||
inviteStatInvited:'已邀请',
|
||||
inviteTaskDone:'已领 +3 天',
|
||||
inviteTasksTitle:'更多得会员',
|
||||
inviteTgDemoDone:'演示态 · 已领取',
|
||||
inviteTgDemoPending:'演示态 · 待验证',
|
||||
inviteTgSub:'+3 天',
|
||||
inviteTitle:'邀请好友',
|
||||
inviteVerifyBtn:'验证领取',
|
||||
kAmount:'金额',
|
||||
kCreated:'创建时间',
|
||||
kDeadline:'支付截止',
|
||||
kMethod:'支付方式',
|
||||
kOrderNo:'订单号',
|
||||
kPlan:'套餐',
|
||||
kStatus:'状态',
|
||||
kTrade:'交易流水号',
|
||||
kValid:'有效期至',
|
||||
lastOnline:'最后在线',
|
||||
latency:'延迟',
|
||||
logout:'退出登录',
|
||||
maintenance:'维护中',
|
||||
myDevices:'我的设备',
|
||||
nHKt:'香港 01',
|
||||
nJPt:'日本 · 东京 02',
|
||||
nSGt:'新加坡 01',
|
||||
nTWt:'台湾 01',
|
||||
nUSt:'美国 · 洛杉矶 03',
|
||||
navAccount:'我的',
|
||||
navConnect:'连接',
|
||||
navContact:'联系我们',
|
||||
navDevices:'我的设备',
|
||||
navNodes:'节点',
|
||||
navNotifications:'通知',
|
||||
navOrders:'我的订单',
|
||||
navRedeem:'兑换 & 购买',
|
||||
navRedeemCode:'兑换激活码',
|
||||
navRouting:'分流规则',
|
||||
navSettings:'设置',
|
||||
navStats:'统计',
|
||||
navWebUC:'用户中心(网页)',
|
||||
notiFoot:'仅显示最近通知(演示占位)',
|
||||
nt1Full:'本次更新新增数据留存与第三方共享条款说明,不影响现有账户与订阅权益,建议登录网页用户中心查看完整版本。',
|
||||
nt2Type:'功能', nt2Title:'新增日本 · 大阪加速线路', nt2Sub:'三条低延迟线路已上线,欢迎体验。',
|
||||
nt3Type:'新闻', nt3Title:'邀请好友活动进行中', nt3Sub:'邀请好友注册,双方都可获得会员天数。',
|
||||
nt4Type:'奖励', nt4Title:'邀请奖励 +3 天已到账', nt4Sub:'好友已完成注册,会员天数已计入你的账户。',
|
||||
nt5Type:'版本', nt5Title:'v1.0.73 已发布', nt5Sub:'修复已知问题,建议尽快更新。', nt5Btn:'去更新',
|
||||
nt6Type:'优惠', nt6Title:'¥6 月付优惠上线', nt6Sub:'限时活动,PRO 月付低至 ¥6,先到先得。',
|
||||
inviteTitle:'邀请好友', inviteHeadline:'邀请好友得会员', inviteLede:'好友注册、首购、加入社区,双方都各得订阅天数。',
|
||||
inviteCode:'邀请码', inviteLink:'邀请链接', inviteRewards:'奖励规则',
|
||||
inviteR1:'好友注册 · 双方各得 3 天', inviteR2:'好友首次购买 · 双方各得 7 天', inviteR3:'加入 TG 频道 · 获得 3 天',
|
||||
inviteProgress:'我的奖励', inviteProgressSub:'已邀请 2 位好友,累计获得 6 天会员(演示占位)', inviteShare:'分享邀请链接',
|
||||
inviteStatInvited:'已邀请', inviteStatConverted:'已转化', inviteStatDays:'累计获赠(天)',
|
||||
inviteTasksTitle:'更多得会员', inviteJoinTgTitle:'加入 Telegram 频道', inviteTgSub:'+3 天',
|
||||
inviteJoinTgBtn:'加入频道', inviteVerifyBtn:'验证领取', inviteTaskDone:'已领 +3 天',
|
||||
inviteTgDemoPending:'演示态 · 待验证', inviteTgDemoDone:'演示态 · 已领取',
|
||||
redeemLabel:'兑换码', redeemPh:'输入兑换 / 激活码', redeemBtn:'立即兑换', redeemHint:'输入卡密即可激活对应时长,激活后立即生效。'
|
||||
nt1Sub:'我们更新了服务条款,请查阅最新内容。',
|
||||
nt1Title:'服务条款与隐私政策更新',
|
||||
nt1Type:'重要',
|
||||
nt2Sub:'三条低延迟线路已上线,欢迎体验。',
|
||||
nt2Title:'新增日本 · 大阪加速线路',
|
||||
nt2Type:'功能',
|
||||
nt3Sub:'邀请好友注册,双方都可获得会员天数。',
|
||||
nt3Title:'邀请好友活动进行中',
|
||||
nt3Type:'新闻',
|
||||
nt4Sub:'好友已完成注册,会员天数已计入你的账户。',
|
||||
nt4Title:'邀请奖励 +3 天已到账',
|
||||
nt4Type:'到账',
|
||||
nt5Btn:'去更新',
|
||||
nt5Sub:'修复已知问题,建议尽快更新。',
|
||||
nt5Title:'v1.0.73 已发布',
|
||||
nt5Type:'版本',
|
||||
nt6Sub:'限时活动,PRO 月付低至 ¥6,先到先得。',
|
||||
nt6Title:'¥6 月付优惠上线',
|
||||
nt6Type:'活动',
|
||||
ordAmount:'金额',
|
||||
ordDetailTitle:'订单详情',
|
||||
ordPlan:'套餐',
|
||||
ordSecDetail:'明细',
|
||||
ordUntil:'有效期至',
|
||||
payAddr:'收款地址',
|
||||
payAmount:'转账金额',
|
||||
payCancel:'取消订单',
|
||||
payChannel:'支付渠道',
|
||||
payHintAlipay:'将跳转至支付宝完成付款,付款后自动返回本页并开通。',
|
||||
payHintCryptoTpl:'请转账 {amt} USDT(含小数末位),金额用于自动对账识别,多退少不到账。',
|
||||
payNetwork:'网络',
|
||||
payOpenAlipay:'打开支付宝支付',
|
||||
paySwitch:'换一种支付方式',
|
||||
payWaitAlipay:'等待付款确认…',
|
||||
payWaitCrypto:'等待到账确认…',
|
||||
perMo:' /月',
|
||||
periodMonth:'本月',
|
||||
periodToday:'今日',
|
||||
periodWeek:'本周',
|
||||
pillDoing:'连接中',
|
||||
pillFree:'免费版',
|
||||
pillOffPro:'未连接',
|
||||
pillOn:'已加密',
|
||||
planFree:'免费版',
|
||||
planMonth:'按月',
|
||||
planPop:'最受欢迎',
|
||||
planProMeta:'PRO 会员 · 2027-07-11',
|
||||
planQuarter:'按季',
|
||||
planYear:'按年',
|
||||
prefLang:'语言',
|
||||
prefProtocol:'协议',
|
||||
prefTheme:'深色外观',
|
||||
proIncludes:'所有套餐均含',
|
||||
purCheckout:'支付',
|
||||
purDone:'完成',
|
||||
purRetry:'重试',
|
||||
purTitle:'购买套餐',
|
||||
rateDown:'下载',
|
||||
rateUp:'上传',
|
||||
recommend:'推荐',
|
||||
redeemBtn:'激活',
|
||||
redeemHint:'输入卡密即可激活对应时长,激活后立即生效。',
|
||||
redeemLabel:'兑换码',
|
||||
redeemPh:'输入激活码',
|
||||
rel2h:'2 小时前',
|
||||
relYday:'昨天',
|
||||
renew:'续费 / 升级',
|
||||
rowBuyPlan:'购买套餐',
|
||||
'rr.forced':'🔒',
|
||||
'rr.lan':'局域网 / 私网直连',
|
||||
'rr.lanSub':'强制,不可关',
|
||||
searchPh:'搜索国家 / 城市',
|
||||
secAccount:'账户信息',
|
||||
secBilling:'购买 · 订单 · 兑换',
|
||||
secDevices:'设备',
|
||||
secGeneral:'通用',
|
||||
secInvite:'推广',
|
||||
secMore:'更多',
|
||||
secPref:'偏好',
|
||||
segDark:'暗',
|
||||
segFree:'免费版',
|
||||
segHide:'隐藏',
|
||||
segLight:'明',
|
||||
segPro:'PRO',
|
||||
segShow:'显示',
|
||||
setAutoConn:'自动连接',
|
||||
setCheckUpdate:'检查更新',
|
||||
setGrpAbout:'关于',
|
||||
setGrpAppr:'外观',
|
||||
setGrpConn:'连接',
|
||||
setKill:'Kill Switch',
|
||||
setLaunch:'开机自启',
|
||||
setSmartRoute:'智能分流',
|
||||
smartSub:'根据当前网络环境,自动选择最优节点',
|
||||
smartTitle:'智能选择',
|
||||
stDoing:'连接中…',
|
||||
stOff:'未连接 · 轻点连接',
|
||||
stOn:'已连接 · 网络已加密',
|
||||
statDownArr:'↓ 下行',
|
||||
statDur:'使用时长',
|
||||
statUpArr:'↑ 上行',
|
||||
stateOn:'已开启',
|
||||
statsFilterLbl:'设备',
|
||||
succSubTpl:'PRO({name})有效期至 {date}',
|
||||
succTitle:'已开通',
|
||||
tagDistant:'远距离',
|
||||
tagLowLat:'低延迟',
|
||||
tagStable:'高速稳定',
|
||||
tagStream:'流媒体',
|
||||
thisDevice:'本机',
|
||||
toastAlipay:'已拉起支付宝(演示)',
|
||||
toastCopied:'已复制:{v}',
|
||||
toastUpdate:'演示:前往应用商店更新',
|
||||
unavail:'不可用',
|
||||
updateCta:'更新',
|
||||
updateTitle:'发现新版本 v1.1.0',
|
||||
upgrade:'续费 / 升级'
|
||||
},
|
||||
en:{
|
||||
brandName:'Pangolin', brandLatin:'',
|
||||
demoTheme:'Theme', demoLang:'Language', demoView:'View', demoUpdate:'Update',
|
||||
demoGate:'Gate', demoDeviceLimit:'Device limit',
|
||||
dlTitle:'Device limit reached', dlDesc:'Your account allows up to 5 devices at once. Remove one to continue.', dlRemoveLru:'Remove least recently used', dlRemove:'Remove', dlOnline:'Online',
|
||||
segLight:'Light', segDark:'Dark', segFree:'Free', segPro:'PRO',
|
||||
segShow:'Show', segHide:'Hide',
|
||||
navConnect:'Connect', navNodes:'Nodes', navStats:'Stats', navAccount:'Account',
|
||||
rateDown:'Down', rateUp:'Up', latency:'Ping', disconnect:'Disconnect',
|
||||
searchPh:'Search country or city', smartTitle:'Smart Select', smartSub:'Auto-picks the best node for your network', recommend:'Best',
|
||||
nHKt:'Hong Kong 01', nJPt:'Japan · Tokyo 02', nSGt:'Singapore 01', nUSt:'USA · Los Angeles 03', nTWt:'Taiwan 01',
|
||||
tagStream:'Streaming', tagLowLat:'Low latency', tagStable:'Fast & stable', tagDistant:'Distant', maintenance:'Maintenance', unavail:'Unavailable',
|
||||
periodMonth:'Month', periodWeek:'Week', periodToday:'Today',
|
||||
statDownArr:'↓ Down', statUpArr:'↑ Up', statDur:'Duration', chartTwoWeeks:'Last 2 weeks',
|
||||
planFree:'Free', planProMeta:'PRO member · 2027-07-11', upgrade:'Renew / Upgrade', renew:'Renew / Upgrade',
|
||||
secAccount:'Account', accEmail:'Email', accPassword:'Password', accChange:'Change',
|
||||
devFreeLbl:'My devices · 1 / 1', devProLbl:'My devices · 3 / 5',
|
||||
secDevices:'Devices', myDevices:'My Devices', devMgmt:'Device management',
|
||||
thisDevice:'This device', devOnlineNow:'Online now', lastOnline:'Last online', rel2h:'2h ago', relYday:'yesterday',
|
||||
devRename:'Rename', devForceLogout:'Force logout', devClearLogin:'Clear login info',
|
||||
devRenamedToast:'Renamed (demo)', devLoggedOutToast:'Force logged out (demo)', devClearedToast:'Login info cleared (demo)',
|
||||
secPref:'Preferences', prefLang:'Language', prefTheme:'Dark appearance', prefProtocol:'Protocol', followLight:'Follow light', stateOn:'On',
|
||||
secMore:'More', navDevices:'Devices', navSettings:'Settings', navRouting:'Routing rules', navRedeem:'Redeem & Buy',
|
||||
navContact:'Contact us', navWebUC:'Web user center', logout:'Sign out',
|
||||
navOrders:'Orders', ordDetailTitle:'Order Detail', ordSecDetail:'Details',
|
||||
kOrderNo:'Order No.', kPlan:'Plan', kAmount:'Amount', kMethod:'Payment', kStatus:'Status',
|
||||
kCreated:'Created', kValid:'Valid until', kDeadline:'Pay before', kTrade:'Trade No.',
|
||||
actContinue:'Continue payment', actCancel:'Cancel order', actRefresh:'Refresh status', actMembership:'View membership', actBuyAgain:'Buy again',
|
||||
updateTitle:'New version v1.1.0', updateCta:'Update',
|
||||
connOff:'CONNECT', connDoing:'Connecting', cbSubOn:'SECURE',
|
||||
stOff:'Tap to connect', stDoing:'Connecting…', stOn:'Connected · Encrypted',
|
||||
pillFree:'Free', pillDoing:'Connecting', pillOn:'Encrypted', pillOffPro:'Not connected',
|
||||
toastUpdate:'Demo: go to store to update',
|
||||
authLogin:'Log In', authRegister:'Sign Up', authTagline:'Fast · Stable · Effortless',
|
||||
authEmail:'Email', authEmailPh:'you@example.com', authPassword:'Password', authForgot:'Forgot password?',
|
||||
authLoginBtn:'Log In', authTos:'By continuing you agree to the Terms of Service and Privacy Policy',
|
||||
authCode:'Verification code', authCodePh:'6-digit code', authSendCode:'Send code',
|
||||
authSetPw:'Set password', authSetPwPh:'At least 6 characters', authRegBtn:'Create Account',
|
||||
statsFilterLbl:'Device', devAll:'All devices',
|
||||
purTitle:'Upgrade to PRO', purCheckout:'Checkout',
|
||||
proIncludes:'All plans include', featSupport:'Priority support',
|
||||
planMonth:'Monthly', planQuarter:'Quarterly', planYear:'Yearly',
|
||||
perMo:' / mo', planPop:'Most popular',
|
||||
featUnlimited:'Unlimited time & data', feat80:'80+ global nodes', feat5:'5 devices at once',
|
||||
accChange:'Change',
|
||||
accEmail:'Email',
|
||||
accPassword:'Password',
|
||||
actBuyAgain:'Buy again',
|
||||
actCancel:'Cancel order',
|
||||
actContinue:'Continue payment',
|
||||
actMembership:'View membership',
|
||||
actRefresh:'Refresh',
|
||||
authCode:'Verification code',
|
||||
authCodePh:'6-digit code',
|
||||
authEmail:'Email',
|
||||
authEmailPh:'you@example.com',
|
||||
authForgot:'Forgot password?',
|
||||
authLogin:'Log in',
|
||||
authLoginBtn:'Log in',
|
||||
authPassword:'Password',
|
||||
authRegBtn:'Sign up',
|
||||
authRegister:'Sign up',
|
||||
authSendCode:'Send code',
|
||||
authSetPw:'Set password',
|
||||
authSetPwPh:'At least 6 characters',
|
||||
authTagline:'Fast · Stable · Effortless',
|
||||
authTos:'By continuing you agree to our Terms & Privacy Policy',
|
||||
brandLatin:'',
|
||||
brandName:'Pangolin',
|
||||
buyNow:'Buy now',
|
||||
payChannel:'Payment channel',
|
||||
chanSwUsdt:'USDT · Crypto', chanSwCny:'CNY · Alipay',
|
||||
chanUsdt:'Crypto · USDT', chanCny:'Alipay · CNY',
|
||||
ordPlan:'Plan', ordAmount:'Amount', ordUntil:'Valid until',
|
||||
payNetwork:'Network', payAddr:'Address', payAmount:'Exact amount',
|
||||
payHintCryptoTpl:'Send exactly {amt} USDT (including the last decimals) — the amount is used for automatic reconciliation.',
|
||||
payOpenAlipay:'Open Alipay', payHintAlipay:'You will be redirected to Alipay; after payment you return here and get activated.',
|
||||
payWaitCrypto:'Waiting for confirmation…', payWaitAlipay:'Waiting for payment…',
|
||||
paySwitch:'Change channel', payCancel:'Cancel order',
|
||||
demoReview:'Demo', demoPaid:'▸ Simulate paid', demoFailed:'▸ Simulate failure',
|
||||
succTitle:'Payment successful', succSubTpl:'PRO ({name}) · valid until {date}', purDone:'Done',
|
||||
failTitle:'Payment failed', failSub:'Order timed out, please retry', purRetry:'Retry',
|
||||
toastCopied:'Copied: {v}', toastAlipay:'Opened Alipay (demo)',
|
||||
secBilling:'Buy · Orders · Redeem', rowBuyPlan:'Buy a plan', navRedeemCode:'Redeem code',
|
||||
secInvite:'Referral', inviteEntry:'Invite friends, earn membership', inviteEntrySub:'Both sides earn plan days', secGeneral:'General',
|
||||
setGrpConn:'Connection', setLaunch:'Launch at startup', setAutoConn:'Auto-connect', setSmartRoute:'Smart routing', setKill:'Kill Switch',
|
||||
setGrpAppr:'Appearance', setGrpAbout:'About', setCheckUpdate:'Check for updates',
|
||||
contactEmail:'Email', contactWeb:'Website', contactHours:'Service hours', contactHoursVal:'Daily 9:00–24:00 (GMT+8)',
|
||||
navNotifications:'Notifications', notiFoot:'Recent notifications only (demo)',
|
||||
nt1Type:'Important', nt1Title:'Terms & privacy policy updated', nt1Sub:'We have updated our terms — please review the latest version.',
|
||||
cbSubOn:'SECURE',
|
||||
chanCny:'Alipay · CNY',
|
||||
chanSwCny:'CNY · Alipay',
|
||||
chanSwUsdt:'USDT · Crypto',
|
||||
chanUsdt:'Crypto · USDT',
|
||||
chartTwoWeeks:'Last 2 weeks',
|
||||
connDoing:'Connecting',
|
||||
connOff:'CONNECT',
|
||||
contactEmail:'Email',
|
||||
contactHours:'Support hours',
|
||||
contactHoursVal:'Daily 9:00 – 24:00 (GMT+8)',
|
||||
contactWeb:'Website',
|
||||
demoDeviceLimit:'Device limit',
|
||||
demoFailed:'▸ Simulate failure',
|
||||
demoGate:'Gate',
|
||||
demoLang:'Language',
|
||||
demoPaid:'▸ Simulate paid',
|
||||
demoReview:'Demo',
|
||||
demoTheme:'Theme',
|
||||
demoUpdate:'Update',
|
||||
demoView:'View',
|
||||
devAll:'All devices',
|
||||
devClearLogin:'Clear login info',
|
||||
devClearedToast:'Login info cleared (demo)',
|
||||
devForceLogout:'Force logout',
|
||||
devFreeLbl:'My devices · 1 / 1',
|
||||
devLoggedOutToast:'Force logged out (demo)',
|
||||
devMgmt:'My devices',
|
||||
devOnlineNow:'Online now',
|
||||
devProLbl:'My devices · 3 / 5',
|
||||
devRename:'Rename',
|
||||
devRenamedToast:'Renamed (demo)',
|
||||
disconnect:'Disconnect',
|
||||
dlDesc:'Your account allows up to 5 devices at once. Remove one to continue.',
|
||||
dlOnline:'Online',
|
||||
dlRemove:'Remove',
|
||||
dlRemoveLru:'Remove least recently used',
|
||||
dlTitle:'Device limit reached',
|
||||
failSub:'Order timed out, please retry',
|
||||
failTitle:'Payment failed',
|
||||
feat5:'5 devices at once',
|
||||
feat80:'80+ global nodes',
|
||||
featSupport:'Priority support',
|
||||
featUnlimited:'Unlimited time & data',
|
||||
followLight:'Off',
|
||||
inviteCode:'Invite code',
|
||||
inviteEntry:'Invite friends, earn membership',
|
||||
inviteEntrySub:'Friend signs up · both earn days',
|
||||
inviteHeadline:'Invite friends, earn membership',
|
||||
inviteJoinTgBtn:'Join channel',
|
||||
inviteJoinTgTitle:'Join Telegram channel',
|
||||
inviteLede:'When friends sign up, buy, or join the community, both of you earn plan days.',
|
||||
inviteLink:'Invite link',
|
||||
inviteProgress:'My rewards',
|
||||
inviteProgressSub:'Invited 2 friends · earned 6 days (demo)',
|
||||
inviteR1:'Sign up · +3 days each',
|
||||
inviteR2:'First purchase · +7 days each',
|
||||
inviteR3:'Join TG · +3 days',
|
||||
inviteRewards:'Rewards',
|
||||
inviteShare:'Share invite link',
|
||||
inviteStatConverted:'Converted',
|
||||
inviteStatDays:'Days earned',
|
||||
inviteStatInvited:'Invited',
|
||||
inviteTaskDone:'Claimed +3 days',
|
||||
inviteTasksTitle:'More ways to earn',
|
||||
inviteTgDemoDone:'Demo · claimed',
|
||||
inviteTgDemoPending:'Demo · pending',
|
||||
inviteTgSub:'+3 days',
|
||||
inviteTitle:'Invite friends',
|
||||
inviteVerifyBtn:'Verify & claim',
|
||||
kAmount:'Amount',
|
||||
kCreated:'Created',
|
||||
kDeadline:'Pay before',
|
||||
kMethod:'Payment method',
|
||||
kOrderNo:'Order no.',
|
||||
kPlan:'Plan',
|
||||
kStatus:'Status',
|
||||
kTrade:'Trade No.',
|
||||
kValid:'Valid until',
|
||||
lastOnline:'Last online',
|
||||
latency:'Ping',
|
||||
logout:'Sign out',
|
||||
maintenance:'Maintenance',
|
||||
myDevices:'My devices',
|
||||
nHKt:'Hong Kong 01',
|
||||
nJPt:'Japan · Tokyo 02',
|
||||
nSGt:'Singapore 01',
|
||||
nTWt:'Taiwan 01',
|
||||
nUSt:'USA · Los Angeles 03',
|
||||
navAccount:'Account',
|
||||
navConnect:'Connect',
|
||||
navContact:'Contact us',
|
||||
navDevices:'My devices',
|
||||
navNodes:'Servers',
|
||||
navNotifications:'Notifications',
|
||||
navOrders:'My orders',
|
||||
navRedeem:'Redeem & buy',
|
||||
navRedeemCode:'Redeem a code',
|
||||
navRouting:'Routing rules',
|
||||
navSettings:'Settings',
|
||||
navStats:'Stats',
|
||||
navWebUC:'User Center (Web)',
|
||||
notiFoot:'Recent notifications only (demo)',
|
||||
nt1Full:'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.',
|
||||
nt2Type:'Feature', nt2Title:'New Japan · Osaka lines added', nt2Sub:'Three low-latency lines are now live.',
|
||||
nt3Type:'News', nt3Title:'Invite-a-friend event is live', nt3Sub:'Invite friends to sign up — both sides earn membership days.',
|
||||
nt4Type:'Reward', nt4Title:'Referral reward: +3 days credited', nt4Sub:'Your friend has completed sign-up — the days have been added to your account.',
|
||||
nt5Type:'Version', nt5Title:'v1.0.73 is out', nt5Sub:'Bug fixes included — update is recommended.', nt5Btn:'Update now',
|
||||
nt6Type:'Promo', nt6Title:'¥6/mo promo is live', nt6Sub:'Limited-time offer — PRO monthly as low as ¥6, while it lasts.',
|
||||
inviteTitle:'Invite friends', inviteHeadline:'Invite friends, earn membership', inviteLede:'When friends sign up, buy, or join the community, both of you earn plan days.',
|
||||
inviteCode:'Invite code', inviteLink:'Invite link', inviteRewards:'How rewards work',
|
||||
inviteR1:'Friend signs up · +3 days each', inviteR2:'Friend first purchase · +7 days each', inviteR3:'Join TG channel · earn 3 days',
|
||||
inviteProgress:'My rewards', inviteProgressSub:'Invited 2 friends · earned 6 days (demo)', inviteShare:'Share invite link',
|
||||
inviteStatInvited:'Invited', inviteStatConverted:'Converted', inviteStatDays:'Days earned',
|
||||
inviteTasksTitle:'More ways to earn', inviteJoinTgTitle:'Join Telegram channel', inviteTgSub:'+3 days',
|
||||
inviteJoinTgBtn:'Join channel', inviteVerifyBtn:'Verify & claim', inviteTaskDone:'Claimed +3 days',
|
||||
inviteTgDemoPending:'Demo · pending', inviteTgDemoDone:'Demo · claimed',
|
||||
redeemLabel:'Redemption code', redeemPh:'Enter your code', redeemBtn:'Redeem now', redeemHint:'Enter a code to instantly activate plan time.'
|
||||
nt1Sub:'We have updated our terms — please review the latest version.',
|
||||
nt1Title:'Terms & privacy policy updated',
|
||||
nt1Type:'Important',
|
||||
nt2Sub:'Three low-latency lines are now live.',
|
||||
nt2Title:'New Japan · Osaka lines added',
|
||||
nt2Type:'Feature',
|
||||
nt3Sub:'Invite friends to sign up — both sides earn membership days.',
|
||||
nt3Title:'Invite-a-friend event is live',
|
||||
nt3Type:'News',
|
||||
nt4Sub:'Your friend has completed sign-up — the days have been added to your account.',
|
||||
nt4Title:'Referral reward: +3 days credited',
|
||||
nt4Type:'Credited',
|
||||
nt5Btn:'Update now',
|
||||
nt5Sub:'Bug fixes included — update is recommended.',
|
||||
nt5Title:'v1.0.73 is out',
|
||||
nt5Type:'Update',
|
||||
nt6Sub:'Limited-time offer — PRO monthly as low as ¥6, while it lasts.',
|
||||
nt6Title:'¥6/mo promo is live',
|
||||
nt6Type:'Promo',
|
||||
ordAmount:'Amount',
|
||||
ordDetailTitle:'Order details',
|
||||
ordPlan:'Plan',
|
||||
ordSecDetail:'Details',
|
||||
ordUntil:'Valid until',
|
||||
payAddr:'Address',
|
||||
payAmount:'Amount',
|
||||
payCancel:'Cancel order',
|
||||
payChannel:'Payment channel',
|
||||
payHintAlipay:'You will be redirected to Alipay; after payment you return here and get activated.',
|
||||
payHintCryptoTpl:'Send exactly {amt} USDT (including the last decimals) — the amount is used for automatic reconciliation.',
|
||||
payNetwork:'Network',
|
||||
payOpenAlipay:'Pay with Alipay',
|
||||
paySwitch:'Switch payment method',
|
||||
payWaitAlipay:'Waiting for payment…',
|
||||
payWaitCrypto:'Waiting for confirmation…',
|
||||
perMo:' /mo',
|
||||
periodMonth:'This month',
|
||||
periodToday:'Today',
|
||||
periodWeek:'This week',
|
||||
pillDoing:'Connecting',
|
||||
pillFree:'Free',
|
||||
pillOffPro:'Not connected',
|
||||
pillOn:'SECURE',
|
||||
planFree:'Free',
|
||||
planMonth:'Monthly',
|
||||
planPop:'Popular',
|
||||
planProMeta:'PRO member · 2027-07-11',
|
||||
planQuarter:'Quarterly',
|
||||
planYear:'Yearly',
|
||||
prefLang:'Language',
|
||||
prefProtocol:'Protocol',
|
||||
prefTheme:'Dark appearance',
|
||||
proIncludes:'All plans include',
|
||||
purCheckout:'Payment',
|
||||
purDone:'Done',
|
||||
purRetry:'Retry',
|
||||
purTitle:'Purchase',
|
||||
rateDown:'Down',
|
||||
rateUp:'Up',
|
||||
recommend:'Recommended',
|
||||
redeemBtn:'Redeem',
|
||||
redeemHint:'Enter a code to instantly activate plan time.',
|
||||
redeemLabel:'Redemption code',
|
||||
redeemPh:'Enter activation code',
|
||||
rel2h:'2h ago',
|
||||
relYday:'yesterday',
|
||||
renew:'Renew / Upgrade',
|
||||
rowBuyPlan:'Purchase',
|
||||
'rr.forced':'🔒',
|
||||
'rr.lan':'LAN & private direct',
|
||||
'rr.lanSub':'Always on',
|
||||
searchPh:'Search country / city',
|
||||
secAccount:'Account info',
|
||||
secBilling:'Buy · Orders · Redeem',
|
||||
secDevices:'Devices',
|
||||
secGeneral:'General',
|
||||
secInvite:'Referral',
|
||||
secMore:'More',
|
||||
secPref:'Preferences',
|
||||
segDark:'Dark',
|
||||
segFree:'Free',
|
||||
segHide:'Hide',
|
||||
segLight:'Light',
|
||||
segPro:'PRO',
|
||||
segShow:'Show',
|
||||
setAutoConn:'Auto-connect',
|
||||
setCheckUpdate:'Check for updates',
|
||||
setGrpAbout:'About',
|
||||
setGrpAppr:'Appearance',
|
||||
setGrpConn:'Connection',
|
||||
setKill:'Kill Switch',
|
||||
setLaunch:'Launch at startup',
|
||||
setSmartRoute:'Smart routing',
|
||||
smartSub:'Picks the best node for your network',
|
||||
smartTitle:'Smart select',
|
||||
stDoing:'Connecting…',
|
||||
stOff:'Tap to connect',
|
||||
stOn:'Connected · Encrypted',
|
||||
statDownArr:'↓ Down',
|
||||
statDur:'Duration',
|
||||
statUpArr:'↑ Up',
|
||||
stateOn:'On',
|
||||
statsFilterLbl:'Device',
|
||||
succSubTpl:'PRO ({name}) · valid until {date}',
|
||||
succTitle:'Activated',
|
||||
tagDistant:'Distant',
|
||||
tagLowLat:'Low latency',
|
||||
tagStable:'Fast & stable',
|
||||
tagStream:'Streaming',
|
||||
thisDevice:'This device',
|
||||
toastAlipay:'Opened Alipay (demo)',
|
||||
toastCopied:'Copied: {v}',
|
||||
toastUpdate:'Demo: go to store to update',
|
||||
unavail:'Unavailable',
|
||||
updateCta:'Update',
|
||||
updateTitle:'New version v1.1.0',
|
||||
upgrade:'Renew / Upgrade'
|
||||
}
|
||||
};
|
||||
// <<<end-gen-i18n>>>
|
||||
|
||||
/* ---------- 节点数据 ---------- */
|
||||
const NODES = {
|
||||
|
||||
Reference in New Issue
Block a user