/* global React */
// Tiny i18n: { zh: {...}, en: {...} } keyed by short string id.
// Components access via useT() which returns the t() function bound to current language.
// Language state is held at App level + persisted to localStorage.

const LangContext = React.createContext("zh");

const STRINGS = {
  // Nav — short labels, icons rendered separately so they don't get cropped
  "nav.markets":   { zh: "市场",         en: "Markets" },
  "nav.goals":     { zh: "进球榜",       en: "Goals" },
  "nav.gainers":   { zh: "涨幅榜",       en: "Gainers" },
  "nav.mvp":       { zh: "MVP 回购",     en: "MVP Buyback" },
  "nav.audit":     { zh: "安全审计",     en: "Audit" },
  "nav.search":    { zh: "搜索球员 / 代币 / 国家", en: "Search players, tokens, countries" },
  "nav.connect":   { zh: "连接钱包",     en: "Connect Wallet" },
  "nav.portfolio": { zh: "我的资产",     en: "Portfolio" },

  // Portfolio / Staking
  "pf.title":        { zh: "我的资产",       en: "My Portfolio" },
  "pf.sub":          { zh: "质押 GOLDBALL 获得银球,银球用于交易球员币,盈利沉淀为金球可提取 BNB",
                      en: "Stake GOLDBALL to earn silver, trade silver for player tokens, profits crystallize to gold redeemable 1:1 for BNB" },
  "pf.stake.title":  { zh: "💰 质押 GOLDBALL", en: "💰 Stake GOLDBALL" },
  "pf.stake.staked": { zh: "已质押",          en: "Staked" },
  "pf.stake.bal":    { zh: "钱包余额",         en: "Wallet Balance" },
  "pf.stake.unlock": { zh: "解锁剩余",         en: "Unlock in" },
  "pf.stake.locked": { zh: "(15 分钟反 JIT 锁定)", en: "(15-min anti-JIT lockup)" },
  "pf.stake.btn":    { zh: "质押",            en: "Stake" },
  "pf.unstake.btn":  { zh: "解除质押",         en: "Unstake" },
  "pf.silver.title": { zh: "🥈 银球 SILVER",  en: "🥈 SILVER" },
  "pf.silver.avail": { zh: "可用余额",         en: "Available" },
  "pf.silver.pending":{zh: "待收获 (每 5 分钟分发)", en: "Pending (dispatched every 5 min)" },
  "pf.silver.harvest":{zh: "收获 Harvest",     en: "Harvest" },
  "pf.silver.spend":  {zh: "去交易球员币 →",   en: "Trade for player tokens →" },
  "pf.gold.title":    {zh: "🥇 金球 GOLD",    en: "🥇 GOLD" },
  "pf.gold.bal":      {zh: "可提取",           en: "Withdrawable" },
  "pf.gold.note":     {zh: "由盈利交易自动沉淀 · 1 金球 = 1 BNB", en: "Crystallized from profitable trades · 1 GOLD = 1 BNB" },
  "pf.gold.withdraw": {zh: "提取为 BNB",       en: "Withdraw as BNB" },
  "pf.pos.title":     {zh: "📊 我的持仓 (球员币)", en: "📊 Positions (Player Tokens)" },
  "pf.pos.col.player":{zh: "球员币",           en: "Token" },
  "pf.pos.col.qty":   {zh: "持有",            en: "Holdings" },
  "pf.pos.col.avg":   {zh: "均价",            en: "Avg Price" },
  "pf.pos.col.price": {zh: "最新价",           en: "Last Price" },
  "pf.pos.col.value": {zh: "价值",            en: "Value" },
  "pf.pos.col.pnl":   {zh: "未实现盈亏",       en: "Unrealized P&L" },
  "pf.pos.empty":     {zh: "暂无持仓 — 先从市场买入球员币",
                       en: "No positions yet — buy player tokens from the market" },
  "pf.history.title": {zh: "🧾 交易历史",      en: "🧾 Trade History" },
  "pf.history.col.time":  {zh: "时间", en: "Time" },
  "pf.history.col.action":{zh: "操作", en: "Action" },
  "pf.history.col.amount":{zh: "数量", en: "Amount" },
  "pf.history.col.price": {zh: "价格", en: "Price" },
  "pf.flow.title":   {zh: "🔄 资金流", en: "🔄 Flow" },
  "pf.flow.step1":   {zh: "GOLDBALL", en: "GOLDBALL" },
  "pf.flow.step2":   {zh: "SILVER",   en: "SILVER" },
  "pf.flow.step3":   {zh: "球员币",    en: "Player Token" },
  "pf.flow.step4":   {zh: "GOLD",     en: "GOLD" },
  "pf.flow.step5":   {zh: "BNB",      en: "BNB" },
  "pf.flow.arrow1":  {zh: "质押",      en: "stake" },
  "pf.flow.arrow2":  {zh: "买入",      en: "buy" },
  "pf.flow.arrow3":  {zh: "卖出盈利",   en: "sell profit" },
  "pf.flow.arrow4":  {zh: "提取",      en: "withdraw" },

  // Banner
  "banner.eyebrow.mvp":     { zh: "🏆 金靴领跑者 · MVP 候选",  en: "🏆 Golden Boot Leader · MVP Candidate" },
  "banner.eyebrow.reserve": { zh: "MVP Reserve · 决赛回购金", en: "MVP Reserve · Finals Buyback Fund" },
  "banner.goals":           { zh: "本届进球",                en: "Goals" },
  "banner.thisMatch":       { zh: "本场",                   en: "this match" },
  "banner.dispatch":        { zh: "每 5 分钟分发",            en: "dispatched every 5 min" },
  "banner.cta":             { zh: "交易",                   en: "Trade" },

  // Countdown
  "cd.title": { zh: "⏱ 世界杯开赛倒计时", en: "⏱ World Cup Kickoff Countdown" },
  "cd.d":     { zh: "天",                en: "DAYS" },
  "cd.h":     { zh: "时",                en: "HRS" },
  "cd.m":     { zh: "分",                en: "MIN" },
  "cd.s":     { zh: "秒",                en: "SEC" },

  // Buyback history
  "buyback.title": { zh: "🔥 最近 GOLDBALL 回购", en: "🔥 Recent GOLDBALL Buybacks" },
  "buyback.minAgo": { zh: "分钟前",         en: "min ago" },

  // Stats
  "stats.totalGoals":   { zh: "⚽ 本届总进球",        en: "⚽ Total Goals" },
  "stats.totalGoalsSub":{ zh: "+12 今日",            en: "+12 today" },
  "stats.totalMcap":    { zh: "📊 总市值 (球员币)", en: "📊 Total Mcap (Player Tokens)" },
  "stats.reserve":      { zh: "💰 MVP Reserve",     en: "💰 MVP Reserve" },
  "stats.reserveSub":   { zh: "链上累计 · 决赛回购",    en: "On-chain · Finals buyback" },
  "stats.tokens":       { zh: "🪙 上线代币",         en: "🪙 Listed Tokens" },
  "stats.tokensSub":    { zh: "小组赛后陆续上线",      en: "Listed throughout group stage" },
  "stats.holders":      { zh: "👥 持币地址",         en: "👥 Holders" },
  "stats.burned":       { zh: "🔥 GOLDBALL 已销毁", en: "🔥 GOLDBALL Burned" },
  "stats.burnedSub":    { zh: "via 5% 转账税",       en: "via 5% transfer tax" },
  "stats.24h":          { zh: "24h",                en: "24h" },

  // Market table
  "mt.tab.goals":     { zh: "⚽ 进球榜",   en: "⚽ Goals" },
  "mt.tab.gainers":   { zh: "📈 涨幅榜",   en: "📈 Gainers" },
  "mt.tab.losers":    { zh: "📉 跌幅榜",   en: "📉 Losers" },
  "mt.tab.volume":    { zh: "💧 成交量",   en: "💧 Volume" },
  "mt.tab.new":       { zh: "🆕 新上线",   en: "🆕 New" },
  "mt.tab.graduated": { zh: "🎓 已毕业",   en: "🎓 Graduated" },
  "mt.search":  { zh: "过滤",      en: "Filter" },
  "mt.col.pair":  { zh: "球员 / 代币", en: "Player / Token" },
  "mt.col.price": { zh: "最新价",      en: "Last Price" },
  "mt.col.change":{ zh: "24h 涨跌",    en: "24h Change" },
  "mt.col.high":  { zh: "24h 最高",    en: "24h High" },
  "mt.col.low":   { zh: "24h 最低",    en: "24h Low" },
  "mt.col.vol":   { zh: "24h 成交量",  en: "24h Volume" },
  "mt.col.goals": { zh: "进球",        en: "Goals" },
  "mt.col.prog":  { zh: "毕业进度",    en: "Progress" },
  "mt.col.action":{ zh: "操作",        en: "Action" },
  "mt.action":    { zh: "交易",        en: "Trade" },
  "mt.empty":     { zh: "暂无符合条件的市场", en: "No markets match" },

  // Audit row
  "audit.title":   { zh: "🛡 合约审计与安全", en: "🛡 Contract Audit & Security" },
  "audit.view":    { zh: "查看完整审计 →", en: "View full audit →" },
  "audit.ready":   { zh: "✓ 审计材料已就绪",   en: "✓ Audit materials ready" },
  "audit.pending": { zh: "● 等待官方审核",     en: "● Awaiting official review" },
  "audit.flap":    { zh: "✓ Flap 自定义金库工厂已识别", en: "✓ Flap custom vault factory recognized" },
  "audit.hardhat": { zh: "✓ Hardhat 14 项通过",  en: "✓ Hardhat: 14 tests passing" },
  "audit.foundry": { zh: "✓ Foundry 集成测试完成", en: "✓ Foundry integration tests complete" },
  "audit.bsc":     { zh: "✓ BNB Smart Chain 部署", en: "✓ Deployed on BNB Smart Chain" },

  // Footer
  "foot.about":   { zh: "金球",  en: "GOLDENBALL" },
  "foot.contracts": { zh: "合约",   en: "Contracts" },
  "foot.data":    { zh: "数据",   en: "Data" },
  "foot.community": { zh: "社区", en: "Community" },
  "foot.disc":    { zh: "© 2026 金球 GOLDENBALL · 仅作 MVP 演示 · Powered by Flap · BNB Smart Chain",
                   en: "© 2026 GOLDENBALL · MVP demo · Powered by Flap · BNB Smart Chain" },

  // Trade view
  "tv.back":         { zh: "返回",          en: "Back" },
  "tv.mvp":          { zh: "🥇 MVP 领跑",   en: "🥇 MVP Leader" },
  "tv.lastPrice":    { zh: "最新价",        en: "Last Price" },
  "tv.change24":     { zh: "24h 涨跌",      en: "24h Change" },
  "tv.high24":       { zh: "24h 最高",      en: "24h High" },
  "tv.low24":        { zh: "24h 最低",      en: "24h Low" },
  "tv.vol24":        { zh: "24h 成交量",    en: "24h Volume" },
  "tv.goals":        { zh: "⚽ 进球",      en: "⚽ Goals" },
  "tv.thisMatch":    { zh: "本场",          en: "this match" },
  "tv.inner":        { zh: "内盘 · Bonding Curve", en: "Inner · Bonding Curve" },
  "tv.outer":        { zh: "外盘 · PancakeSwap V2", en: "Outer · PancakeSwap V2" },
  "tv.race":         { zh: "金靴争夺",      en: "Golden Boot race" },

  // Curve panel
  "cp.title":     { zh: "Bonding Curve",     en: "Bonding Curve" },
  "cp.realRes":   { zh: "Real Silver Reserve", en: "Real Silver Reserve" },
  "cp.virtRes":   { zh: "Virtual Silver",     en: "Virtual Silver" },
  "cp.issued":    { zh: "已发行",            en: "Issued" },
  "cp.threshold": { zh: "毕业阈值",          en: "Grad. Threshold" },
  "cp.progress":  { zh: "毕业进度 (达成后自动上 PancakeSwap V2)", en: "Graduation Progress (auto-lists on PancakeSwap V2)" },

  // Swap
  "sp.title":      { zh: "市价 · Swap",  en: "Swap" },
  "sp.slippage":   { zh: "滑点",         en: "Slippage" },
  "sp.pay":        { zh: "付出",         en: "You Pay" },
  "sp.receive":    { zh: "收到 (预估)",  en: "You Receive (est.)" },
  "sp.balance":    { zh: "余额",         en: "Balance" },
  "sp.rate":       { zh: "汇率",         en: "Rate" },
  "sp.impact":     { zh: "价格冲击",     en: "Price Impact" },
  "sp.minRecv":    { zh: "最少收到",     en: "Min. Received" },
  "sp.tax":        { zh: "Curve 税 (5%)", en: "Curve Tax (5%)" },
  "sp.taxAction":  { zh: "→ 销毁 GOLDBALL", en: "→ burn GOLDBALL" },
  "sp.route":      { zh: "路由",         en: "Route" },
  "sp.enterAmount":{ zh: "输入金额",     en: "Enter amount" },
  "sp.insufficient":{ zh: "余额不足",     en: "Insufficient balance" },
  "sp.buy":        { zh: "买入",         en: "Buy" },
  "sp.sell":       { zh: "卖出",         en: "Sell" },
  "sp.connect":    { zh: "连接钱包",     en: "Connect Wallet" },
  "sp.connecting": { zh: "连接中…",      en: "Connecting…" },
  "sp.approving":  { zh: "授权中…",      en: "Approving…" },
  "sp.confirming": { zh: "请在钱包确认…", en: "Confirm in wallet…" },
  "sp.pending":    { zh: "广播中…",      en: "Pending…" },
  "sp.done":       { zh: "✓ 完成!",     en: "✓ Done!" },

  // Info panel
  "ip.contract":   { zh: "合约地址",     en: "Contract" },
  "ip.goals":      { zh: "本届进球",     en: "Tournament goals" },
  "ip.rank":       { zh: "金靴排名",     en: "Golden Boot rank" },
  "ip.holders":    { zh: "持有人",       en: "Holders" },
  "ip.mcap":       { zh: "市值",         en: "Market Cap" },
  "ip.prog":       { zh: "毕业进度",     en: "Graduation" },
  "ip.mvpNote":    { zh: "⚽ 当前 MVP 候选 · 决赛时获得全部 BNB 储备金回购",
                    en: "⚽ Current MVP candidate · receives all BNB reserve buyback at finals" },

  // Live trades
  "lt.title":    { zh: "实时成交 · On-chain", en: "Live Trades · On-chain" },
  "lt.price":    { zh: "价格 (BNB)",    en: "Price (BNB)" },
  "lt.qty":      { zh: "数量",          en: "Qty" },
  "lt.wallet":   { zh: "钱包",          en: "Wallet" },
  "lt.time":     { zh: "时间",          en: "Time" },
};

function useT() {
  const lang = React.useContext(LangContext);
  return (id) => (STRINGS[id] && STRINGS[id][lang]) || id;
}

function useLang() {
  return React.useContext(LangContext);
}

window.LangContext = LangContext;
window.useT = useT;
window.useLang = useLang;
