2026-05-23 23:30:48 +08:00
export function createAccountCopy ( isEn : boolean ) : Record < string , string > {
return {
backHome : isEn ? "Back to Home" : "返回首页" ,
accountCenter : isEn ? "Account Center" : "账户中心" ,
loadingAccount : isEn ? "Loading account info..." : "加载账户信息中..." ,
refresh : isEn ? "Refresh" : "刷新" ,
signOut : isEn ? "Sign Out" : "退出" ,
signIn : isEn ? "Sign In" : "登录" ,
upgradePro : isEn ? "Upgrade Pro" : "升级 Pro" ,
2026-05-25 00:16:32 +08:00
guestUser : isEn ? "Signed-out account" : "未登录账户" ,
2026-05-23 23:30:48 +08:00
joinedAt : isEn ? "Joined" : "加入时间" ,
totalPoints : isEn ? "Total Points" : "总积分 (荣誉)" ,
2026-05-30 18:04:36 +08:00
weeklyPoints : isEn ? "This Month Invites" : "本月有效邀请" ,
weeklyRank : isEn ? "Monthly Cap" : "月度上限" ,
weeklyRewards : isEn ? "Referral Rewards" : "邀请奖励" ,
2026-05-23 23:30:48 +08:00
membershipDetails : isEn ? "Membership Details" : "会员权限详情" ,
identityStatus : isEn ? "Identity Status" : "身份状态" ,
authMode : isEn ? "Auth Mode" : "鉴权模式" ,
weatherEngine : isEn ? "Weather Engine" : "气象引擎" ,
intradayAnalysis : isEn ? "Intraday Analysis" : "今日内分析" ,
historyFuture : isEn
? "Future-date + Decision Card Analysis"
: "未来日期分析 + 城市决策卡" ,
smartPush : isEn
? "Cross-platform Smart Weather Push"
: "全平台智能气象查询" ,
deepMode : isEn
? "Deep mode (incl. high-temp window)"
: "深度版(含高温时段)" ,
compactVisible : isEn ? "Compact visible" : "简版可见" ,
enabled : isEn ? "Enabled" : "已开启" ,
locked : isEn ? "Locked" : "锁定" ,
boundEmail : isEn ? "Bound Email" : "绑定邮箱" ,
loginMethod : isEn ? "Sign-in Method" : "登录方式" ,
renewalDate : isEn ? "Renewal Date" : "续费日期" ,
accessUntil : isEn ? "Access Until" : "可用至" ,
authResult : isEn ? "Auth Result" : "鉴权结果" ,
passed : isEn ? "Passed" : "通过" ,
restricted : isEn ? "Restricted" : "受限" ,
telegramBind : isEn ? "Telegram Bot Binding" : "Telegram Bot 绑定" ,
telegramHint : isEn
? "Use one-click Telegram binding first to sync notifications and access. After binding, refresh this page and submit your Telegram group join request."
: "优先使用「一键绑定 Telegram Bot」同步通知与权限。绑定完成后刷新本页,再提交 Telegram 群组入群申请。" ,
telegramFallbackHint : isEn
2026-05-24 16:03:29 +08:00
? "Fallback copy method: only use this if one-click binding does not open Telegram correctly. Copy the command below and send it to @polyyuanbot. After binding, refresh this page to show the group entry."
: "兜底复制方式:仅在一键绑定无法正常打开 Telegram 时使用。请复制下方命令并发送给 @polyyuanbot。绑定完成后刷新本页,即可显示入群入口。" ,
2026-05-23 23:30:48 +08:00
paymentManualSupport : isEn
? "If payment succeeds but Pro is still not activated, email yhrsc30@gmail.com. This project is currently maintained by one developer, so manual recovery may be needed in edge cases."
: "如果付款成功后 Pro 仍未开通,请发邮件到 yhrsc30@gmail.com。当前项目由我一人维护,极少数边缘情况可能需要人工补开。给你带来的不便,敬请谅解!" ,
telegramBotLink : isEn
2026-05-24 16:03:29 +08:00
? "Open Bot (@polyyuanbot)"
: "打开机器人 (@polyyuanbot)" ,
2026-05-23 23:30:48 +08:00
telegramBotBindLink : isEn ? "One-click Telegram Binding" : "一键绑定 Telegram Bot" ,
telegramGroupLink : isEn ? "Join Telegram Group" : "加入 Telegram 群组" ,
telegramTopicsGroupLink : isEn
? "Real-time Weather Updates"
: "城市实测温度群" ,
copyCommand : isEn ? "Copy fallback command" : "复制兜底命令" ,
paymentMgmt : isEn ? "Payment Management" : "支付管理" ,
2026-05-29 19:24:46 +08:00
proPlan : isEn ? "Pro Plan" : "Pro 套餐" ,
monthlyPlan : isEn ? "Monthly" : "月付" ,
quarterlyPlan : isEn ? "Quarterly" : "季度" ,
trialBadge : isEn ? "3-day trial" : "3天试用" ,
trialPaidGroupLocked : isEn
? "Trial users can use the core product experience, but the paid Telegram group is available to full Pro subscriptions only."
: "3天试用用户可体验核心产品,但无法进入付费 Telegram 群;付费群仅对正式 Pro 开放。" ,
referralTitle : isEn ? "Referral Code" : "邀请码" ,
referralMyCode : isEn ? "My invite code" : "我的邀请码" ,
referralApplyLabel : isEn ? "Use invite code" : "使用邀请码" ,
referralApplyPlaceholder : isEn ? "Enter invite code" : "输入邀请码" ,
referralApplyButton : isEn ? "Apply" : "应用" ,
referralApplied : isEn
? "Referral code applied. Your first monthly payment is now discounted."
: "邀请码已应用,首月 Pro 将按邀请价结算。" ,
referralApplyFailed : isEn ? "Failed to apply referral code" : "邀请码应用失败" ,
referralDiscountHint : isEn
2026-05-30 18:04:36 +08:00
? "Invite discount: first monthly Pro is 20 USDC."
: "邀请首月价:Pro 月付 20 USDC。" ,
2026-05-29 19:24:46 +08:00
referralRewardHint : isEn
2026-05-30 18:04:36 +08:00
? "When an invited user pays for Pro, you receive +3500 points."
: "被邀请人成功付费后,邀请人获得 +3500 积分。" ,
2026-05-29 19:24:46 +08:00
referralInviteLimit : isEn
2026-05-30 18:04:36 +08:00
? "Monthly referral reward cap: 10 paid invites, up to +35000 points."
: "每月最多 10 个有效付费邀请奖励,最高 +35000 积分。" ,
2026-05-23 23:30:48 +08:00
paymentToken : isEn ? "Payment Token" : "支付币种" ,
paymentAccount : isEn ? "Subscription Account" : "订阅归属账号" ,
paymentWallet : isEn ? "Paying Wallet" : "付款钱包" ,
paymentReceiver : isEn ? "Receiver Contract" : "当前收款合约" ,
paymentNetwork : isEn ? "Payment Network" : "支付网络" ,
paymentHost : isEn ? "Payment Host" : "支付域名" ,
primary : "Primary" ,
polygonChain : isEn ? "Polygon Network" : "Polygon 网络" ,
noWallet : isEn ? "No payment wallet bound yet." : "未绑定任何付款钱包" ,
bindExt : isEn
? "Bind Browser Wallet (EVM Extension)"
: "绑定浏览器钱包(EVM扩展)" ,
bindQr : isEn
? "Bind via QR (WalletConnect)"
: "扫码绑定(WalletConnect) " ,
walletConnectMissing : isEn
? "WalletConnect disabled: please configure"
: "未启用 WalletConnect:请配置" ,
walletExtensionDetected : isEn
? "Detected browser wallets"
: "检测到的浏览器钱包" ,
walletExtensionChoose : isEn
? "Choose extension wallet"
: "选择浏览器钱包" ,
walletRecoveryBusy : isEn
? "Recovering Pro entitlement after on-chain payment..."
: "正在根据链上支付恢复 Pro 权限..." ,
walletRecoveryDone : isEn
? "Pro entitlement recovered."
: "Pro 权限已恢复。" ,
walletRecoveryFailed : isEn
? "A recent on-chain payment is still syncing to your subscription. Please refresh in a minute or contact support."
: "检测到最近的链上支付流程,但订阅状态仍在同步中。请稍后刷新,或联系管理员处理。" ,
unbind : isEn ? "Unbind" : "解绑" ,
unbindConfirm : isEn
? "Unbind wallet {address}? You can bind it again later."
: "确认解绑钱包 {address}?后续可重新绑定。" ,
unbindDone : isEn ? "Wallet unbound." : "钱包已解绑。" ,
unbindDonePrimary : isEn
? "Wallet unbound. New primary: {address}"
: "钱包已解绑,新的主钱包:{address}" ,
unbindFailed : isEn ? "Failed to unbind wallet" : "解绑钱包失败" ,
authExpired : isEn
? "Session expired. Please sign out and sign in again."
: "登录会话已失效,请退出后重新登录。" ,
payNow : isEn ? "Subscribe & Activate" : "立即订阅并激活服务" ,
connectAndPay : isEn ? "Connect Wallet & Pay" : "连接钱包并支付" ,
loginBeforeBind : isEn
? "Please sign in before binding wallet."
: "请先登录后再绑定钱包。" ,
loginBeforePay : isEn
? "Please sign in before payment."
: "请先登录后再支付。" ,
bindFirstBeforePay : isEn
? "Please bind a wallet first."
: "请先绑定钱包。" ,
payNotReady : isEn
? "Payment service is not fully configured."
: "支付服务未配置完成。" ,
paymentHostBlocked : isEn
? "Payments are disabled on this host. Please return to the production site: {host}"
: "当前域名不允许发起支付,请回到主站后重试:{host}" ,
paymentGuardHint : isEn
? "Payment will be credited to the current account and bound wallet shown below."
: "支付将记入下方显示的当前账号和绑定钱包,请先核对。" ,
openBindFlow : isEn
? "Please bind a wallet first. Opening bind flow..."
: "请先完成钱包绑定,正在拉起绑定流程..." ,
walletBoundCreatingOrder : isEn
? "Wallet bound. Creating order and sending payment..."
: "钱包已绑定,正在创建订单并发起支付..." ,
proMember : "PRO MEMBER" ,
proPendingSync : isEn ? "Activated (pending sync)" : "已开通(待同步)" ,
2026-05-27 12:14:07 +08:00
subscriptionChecking : isEn ? "Checking subscription" : "订阅同步中" ,
subscriptionUnknown : isEn
? "Subscription status is syncing. Please refresh shortly."
: "订阅状态正在同步,请稍后刷新。" ,
2026-05-23 23:30:48 +08:00
noProSubscription : isEn ? "No Pro subscription" : "暂无 Pro 订阅" ,
proEndsSoonTitle : isEn ? "Pro renewal due soon" : "Pro 即将到期" ,
proEndsSoonBody : isEn
? "Your Pro membership will expire soon. Renew now to avoid interruption."
: "你的 Pro 会员即将到期。现在续费可避免权限中断。" ,
proExpiredTitle : isEn ? "Pro expired" : "Pro 已到期" ,
proExpiredBody : isEn
? "Your Pro membership has expired. Renew now to restore premium access."
: "你的 Pro 会员已到期。立即续费可恢复高级权限。" ,
renewNow : isEn ? "Renew Now" : "立即续费" ,
daysLeft : isEn ? "{days} days left" : "剩余 {days} 天" ,
queuedExtensionSummary : isEn
? "Current plan until {current}. Queued extension: +{days} days. Total access until {total}."
: "当前订阅至 {current},已排队延长 +{days} 天,总可用至 {total}。" ,
paymentMethodLabel : isEn ? "Payment Method" : "请选择支付方式" ,
paymentMethodWallet : isEn ? "Wallet Quick Pay" : "钱包快捷支付" ,
paymentMethodManual : isEn ? "Manual On-chain Transfer" : "手动链上转账" ,
paymentWalletDesc : isEn
? "Option 1: Bind your EVM wallet (e.g. MetaMask extension or WalletConnect QR scan) to sign and pay via smart contract. Credits are credited instantly."
: "方式一:绑定您的 EVM 钱包(如 MetaMask 扩展或 WalletConnect 扫码),通过智能合约自动签名付款,额度即时到账。" ,
paymentGasWarning : isEn
? "Your wallet needs a small amount of POL for gas fees; USDC alone may not complete authorization or payment. Please confirm your wallet is on Polygon network and keep some POL before paying."
: "钱包里需要少量 POL 作为 gas 手续费;只有 USDC 可能无法完成授权或支付。请确认当前钱包在 Polygon 网络,并预留一点 POL 后再支付。" ,
paymentManualDesc : isEn
? "Option 2: Transfer directly to the platform's receiver contract without binding a wallet. After the transfer, submit the transaction hash (Tx Hash) and the system will verify and activate Pro automatically."
: "方式二:无需将钱包绑定到账号,直接向平台收款合约转账。转账完成后提交交易哈希(Tx Hash)系统会自动验签并开通 Pro。" ,
paymentManualTitle : isEn
? "Manual Transfer (No Wallet Binding)"
: "手动转账(无需绑定钱包)" ,
paymentManualHint : isEn
? "Create an order first, transfer to the specified receiver address, then submit the tx hash here. Do not mix with the wallet payment channel."
: "先创建订单,向指定收款地址转账,完成后在此处提交 tx hash。请勿与钱包付款通道重复混用。" ,
paymentManualCreate : isEn ? "Create Transfer Order" : "创建转账订单" ,
paymentAmount : isEn ? "Amount" : "金额" ,
paymentReceiverLabel : isEn ? "Receiver" : "收款地址" ,
paymentTxHash : "Tx Hash" ,
paymentCopyAddress : isEn ? "Copy" : "复制" ,
paymentManualSubmit : isEn
? "Submit Tx Hash & Confirm"
: "提交 tx hash 并自动确认" ,
chainReadError : isEn ? "Reading wallet network" : "读取钱包网络" ,
chainSwitchError : isEn ? "Switch wallet network" : "切换钱包网络" ,
chainAddPolygon : isEn ? "Add Polygon network" : "添加 Polygon 网络" ,
chainSwitchPrompt : isEn
? "Please manually switch to Polygon network in your wallet and try again."
: "请在钱包中手动切换到 Polygon 网络后再试。" ,
2026-05-25 01:56:17 +08:00
// ── Payment status messages ──────────────────────────────────────
orderAlreadyPaid : isEn
? "This order is already paid. Restoring subscription..."
: "该订单已支付,正在恢复订阅..." ,
orderExpired : isEn
? "Payment order expired (valid for 30 minutes). Please create a new order."
: "支付订单已过期(30分钟有效),请重新创建订单。" ,
paymentConfirmed : isEn
? "Payment confirmed. Transaction: {txHash}"
: "支付确认成功,交易: {txHash}" ,
txSubmitted : isEn
? "Transaction submitted: {txHash}, confirming on chain (status: {status})..."
: "交易已提交: {txHash},正在链上确认(状态: {status}) ..." ,
paymentPendingTimeout : isEn
? "Payment pending timeout."
: "支付等待超时。" ,
approvalDetected : isEn
? "Insufficient allowance detected. Requesting {symbol} approval..."
: "检测到授权不足,正在发起 {symbol} 授权..." ,
approvalDone : isEn
? "{symbol} approval successful. Sending payment..."
: "{symbol} 授权成功,正在发起支付..." ,
approvalSufficient : isEn
? "Allowance sufficient. Sending payment..."
: "授权额度充足,正在发起支付..." ,
approvalDoneCancelled : isEn
? "{symbol} approval completed. This payment was cancelled. You can pay again."
: "{symbol} 授权已完成,本次支付已取消,可直接再次点击支付。" ,
approvalDoneRetry : isEn
? "{symbol} approval completed but payment incomplete. Please retry."
: "{symbol} 授权已完成,但支付未完成,请重试。" ,
paymentConfigUpdated : isEn
? "Payment config updated. Switched to latest address {address}."
: "检测到支付配置已更新,已切换到最新地址 {address}。" ,
currentReceiver : isEn
? "Current receiver contract: {address}"
: "当前收款合约: {address}" ,
manualOrderCreated : isEn
2026-05-29 01:57:42 +08:00
? "Manual transfer order created. Send {amount} {symbol} on {chain} to {receiver}, then submit your tx hash below."
: "手动转账订单已创建:请在 {chain} 转 {amount} {symbol} 到 {receiver},完成后在下方提交 tx hash。" ,
2026-05-25 01:56:17 +08:00
manualOrderRequired : isEn
? "Please create a manual transfer order first."
: "请先创建手动转账订单。" ,
txHashRequired : isEn
? "Please enter a valid tx hash."
: "请输入有效的 tx hash。" ,
verifying : isEn ? "Verifying..." : "验证中..." ,
verifyAddressMatch : isEn
? "Receiver address and amount match"
: "收款地址和金额匹配" ,
verifyTxNotMined : isEn
? "Transaction not yet mined. Please wait."
: "交易未上链,请等待" ,
verifyAddressMismatch : isEn
? "Receiver address mismatch! Please transfer to the correct receiver address."
: "收款地址不匹配!请转账到正确的收款地址。" ,
verifyAmountLow : isEn
? "Transfer amount is insufficient."
: "转账金额不足" ,
verifyTxReverted : isEn
? "This transaction was reverted."
: "该交易已回滚" ,
verifyFailed : isEn ? "Verification failed: " : "验证失败: " ,
verifyUnknown : isEn ? "Unknown error" : "未知错误" ,
// ── Telegram bind messages ────────────────────────────────────────
telegramVerifySuccess : isEn
2026-05-29 19:24:46 +08:00
? "Telegram group membership verified. Checkout follows the selected Pro plan."
: "Telegram 群成员验证成功,结算金额以当前选择的 Pro 套餐为准。" ,
2026-05-25 01:56:17 +08:00
telegramBindClickHint : isEn
? "Open the Telegram Bot, click Start, and confirm binding. Then refresh this page to request group entry."
: "已打开 Telegram Bot,请在 Bot 内点击 Start 并确认绑定;完成后刷新本页再申请入群。" ,
telegramPopupBlocked : isEn
? "Popup blocked. Please click the link below to complete binding:"
: "弹窗被拦截,请点击下方链接完成绑定:" ,
telegramBindFailed : isEn
? "Failed to create Telegram bind link"
: "创建 Telegram 绑定链接失败" ,
telegramBindLinkMissing : isEn
? "Telegram bind link missing"
: "Telegram 绑定链接缺失" ,
// ── Wallet errors ──────────────────────────────────────────────────
noWalletProvider : isEn
? "No EVM wallet provider found"
: "未检测到 EVM 钱包插件" ,
txReverted : isEn
? "Transaction reverted: {txHash}"
: "交易已回滚: {txHash}" ,
txConfirmTimeout : isEn
? "Transaction confirmation timeout: {txHash}"
: "交易确认超时: {txHash}" ,
queryIntentFailed : isEn
? "Query intent failed: {raw}"
: "查询支付意向失败: {raw}" ,
paymentStatus : isEn ? "Payment {status}" : "支付状态: {status}" ,
createIntentFailed : isEn
? "Create intent failed: {raw}"
: "创建支付意向失败: {raw}" ,
intentPayloadInvalid : isEn
? "Intent payload invalid"
: "支付意向数据无效" ,
intentTokenInvalid : isEn
? "Intent token/amount invalid"
: "支付币种或金额无效" ,
submitTxFailed : isEn
? "Submit transaction failed: {raw}"
: "提交交易失败: {raw}" ,
confirmFailed : isEn
? "Confirm failed: {raw}"
: "确认失败: {raw}" ,
createManualIntentFailed : isEn
? "Create manual intent failed: {raw}"
: "创建手动转账订单失败: {raw}" ,
manualPaymentInvalid : isEn
? "Manual payment payload invalid"
: "手动转账数据无效" ,
bindFailed : isEn ? "Bind failed: {raw}" : "绑定失败: {raw}" ,
challengeFailed : isEn
? "Challenge failed: {raw}"
: "钱包验证挑战失败: {raw}" ,
challengeInvalid : isEn
? "Challenge payload invalid"
: "验证挑战数据无效" ,
verifyFailedRaw : isEn ? "Verify failed: {raw}" : "钱包验证失败: {raw}" ,
httpError : isEn ? "HTTP {status} {raw}" : "HTTP 错误 {status}: {raw}" ,
loadConfigFailed : isEn
? "Load payment config failed: {raw}"
: "加载支付配置失败: {raw}" ,
// ── Points / Footer ────────────────────────────────────────────────
pointsRule : isEn
2026-05-30 18:04:36 +08:00
? "Points rule: points are earned through successful paid referrals only. 500 points = 1 USDC. Monthly orders can use up to 3 USDC off; quarterly orders can use up to 8 USDC off."
: "积分规则:积分仅通过有效付费邀请获得。500 积分 = 1 USDC。月付订单最多抵扣 3 USDC,季度订单最多抵扣 8 USDC。" ,
2026-05-25 01:56:17 +08:00
pointsDiscount : isEn
? "Available: {points} points discounting ${amount}. Applied automatically on renewal."
: "当前可用 {points} 积分抵扣 ${amount},续费时会自动生效。" ,
footerEngine : isEn
? "PolyWeather Global Meteorological Engine · Powered by AI"
: "PolyWeather 全球气象引擎 · AI 驱动" ,
binanceBindHint : isEn
? "Binance extension bound. If payment is stuck, please use WalletConnect QR payment."
: "Binance 扩展已绑定;如支付卡住,请优先使用 WalletConnect 扫码支付。" ,
walletBound : isEn
? "{label} bound: {address}. You can now pay to activate your subscription."
: "{label} 已绑定: {address}。现在可点击「立即订阅并激活服务」。" ,
walletBoundSuccess : isEn
? "{label} bound: {address}."
: "{label} 绑定成功: {address}。" ,
2026-05-23 23:30:48 +08:00
};
}