/* global React */
/* =========================================================================
   i18n — 14 languages, RTL-aware, context provider + useT hook + LangPicker

   NOTE (deprecated): Governance sub-tab labels are now translatable via gov.tab.* keys (was kept in Spanish, fixed 2026-04-25). Original comment kept for context.
   Democracia / Comité Técnico) are intentionally kept in Spanish across
   ALL locales — they are proper names of the SORA on-chain governance
   structure, not translatable UI chrome.
   ========================================================================= */
const { createContext, useContext, useState, useEffect, useMemo, useRef, useCallback } = React;

const LANGS = [
  { code: 'es', native: 'Español',     flag: '🇪🇸', rtl: false },
  { code: 'en', native: 'English',     flag: '🇬🇧', rtl: false },
  { code: 'fr', native: 'Français',    flag: '🇫🇷', rtl: false },
  { code: 'de', native: 'Deutsch',     flag: '🇩🇪', rtl: false },
  { code: 'it', native: 'Italiano',    flag: '🇮🇹', rtl: false },
  { code: 'pt', native: 'Português',   flag: '🇵🇹', rtl: false },
  { code: 'ru', native: 'Русский',     flag: '🇷🇺', rtl: false },
  { code: 'zh', native: '中文',         flag: '🇨🇳', rtl: false },
  { code: 'ja', native: '日本語',       flag: '🇯🇵', rtl: false },
  { code: 'ko', native: '한국어',        flag: '🇰🇷', rtl: false },
  { code: 'ar', native: 'العربية',     flag: '🇸🇦', rtl: true  },
  { code: 'he', native: 'עברית',       flag: '🇮🇱', rtl: true  },
  { code: 'ur', native: 'اردو',        flag: '🇵🇰', rtl: true  },
  { code: 'hi', native: 'हिन्दी',        flag: '🇮🇳', rtl: false },
];

const LANG_BY_CODE = Object.fromEntries(LANGS.map(l => [l.code, l]));

/* ---------- Translation dictionary ---------------------------------------
   Structure: DICT[key][lang] = string
   Key convention: dot-separated. Missing → English → key itself.
--------------------------------------------------------------------------- */
const DICT = {
  /* ===== Nav groups ===== */
  'nav.featured':    { en:'Featured',   es:'Destacados', fr:'En vedette', de:'Empfohlen', it:'In evidenza', pt:'Destaques',  ru:'Избранное', zh:'精选',    ja:'注目',     ko:'추천',       ar:'مميز',        he:'מומלצים',    ur:'نمایاں',      hi:'विशेष' },
  'nav.network':     { en:'Network',    es:'Red',        fr:'Réseau',     de:'Netzwerk',  it:'Rete',        pt:'Rede',       ru:'Сеть',      zh:'网络',    ja:'ネットワーク', ko:'네트워크',     ar:'الشبكة',      he:'רשת',        ur:'نیٹ ورک',     hi:'नेटवर्क' },
  'nav.my':          { en:'My',         es:'Mi',         fr:'Mon',        de:'Mein',      it:'Mio',         pt:'Meu',        ru:'Моё',       zh:'我的',    ja:'マイ',      ko:'내',         ar:'خاصتي',       he:'שלי',        ur:'میرا',        hi:'मेरा' },

  /* ===== Nav items ===== */
  'nav.burnTracker': { en:'Burn Tracker',   es:'Rastreador de Quemas', fr:'Suivi des burns',     de:'Burn-Tracker',      it:'Tracker di burn',      pt:'Rastreador de queimas', ru:'Трекер сжиганий',    zh:'销毁追踪',  ja:'バーントラッカー', ko:'소각 추적',    ar:'متتبع الحرق',      he:'מעקב שריפה',  ur:'برن ٹریکر',       hi:'बर्न ट्रैकर' },
  'nav.xorMigration':{ en:'XOR migration',  es:'Migración XOR',        fr:'Migration XOR',       de:'XOR-Migration',     it:'Migrazione XOR',       pt:'Migração XOR',          ru:'Миграция XOR',       zh:'XOR迁移',   ja:'XOR 移行',       ko:'XOR 마이그레이션', ar:'هجرة XOR',      he:'הגירת XOR',  ur:'XOR منتقلی',      hi:'XOR माइग्रेशन' },
  'nav.pulse':       { en:'Network Pulse',  es:'Pulso de la Red',      fr:'Pouls du réseau',     de:'Netzwerk-Puls',     it:'Pulso di rete',        pt:'Pulso da rede',         ru:'Пульс сети',         zh:'网络脉动',  ja:'ネットワーク鼓動', ko:'네트워크 맥박', ar:'نبض الشبكة',       he:'דופק הרשת',   ur:'نیٹ ورک پلس',      hi:'नेटवर्क पल्स' },
  'nav.intelligence':{ en:'Intelligence',   es:'Inteligencia',         fr:'Intelligence',        de:'Analyse',           it:'Intelligence',         pt:'Inteligência',          ru:'Аналитика',          zh:'情报',      ja:'インテリジェンス', ko:'인텔리전스',   ar:'استخبارات',        he:'מודיעין',    ur:'انٹیلیجنس',        hi:'इंटेलिजेंस' },
  'nav.studio':      { en:'Studio',         es:'Estudio',              fr:'Studio',              de:'Studio',            it:'Studio',               pt:'Estúdio',               ru:'Студия',             zh:'工作室',    ja:'スタジオ',        ko:'스튜디오',     ar:'استوديو',          he:'אולפן',       ur:'اسٹوڈیو',          hi:'स्टूडियो' },
  'nav.swaps':       { en:'Swaps',          es:'Intercambios',         fr:'Swaps',               de:'Tausch',            it:'Swap',                 pt:'Swaps',                 ru:'Обмены',             zh:'兑换',      ja:'スワップ',      ko:'스왑',         ar:'المبادلات',        he:'החלפות',     ur:'سواپس',           hi:'स्वैप' },
  'nav.extrinsics':  { en:'Extrinsics',     es:'Extrínsecos',          fr:'Extrinsèques',        de:'Extrinsics',        it:'Extrinsic',            pt:'Extrínsecos',           ru:'Экстринсики',        zh:'外部交易',  ja:'エクストリンシック', ko:'익스트린식',    ar:'المعاملات',        he:'אקסטרינסיקים', ur:'ایکسٹرنسکس',       hi:'एक्सट्रिंसिक्स' },
  'nav.transfers':   { en:'Transfers',      es:'Transferencias',       fr:'Transferts',          de:'Überweisungen',     it:'Trasferimenti',        pt:'Transferências',        ru:'Переводы',           zh:'转账',      ja:'送金',          ko:'전송',         ar:'التحويلات',        he:'העברות',     ur:'منتقلیاں',         hi:'स्थानांतरण' },
  'nav.bridges':     { en:'Bridges',        es:'Puentes',              fr:'Ponts',               de:'Brücken',           it:'Ponti',                pt:'Pontes',                ru:'Мосты',              zh:'跨链桥',    ja:'ブリッジ',      ko:'브릿지',       ar:'الجسور',           he:'גשרים',      ur:'پل',               hi:'ब्रिज' },
  'nav.orderBook':   { en:'Order Book',     es:'Libro de Órdenes',     fr:'Carnet d\'ordres',    de:'Orderbuch',         it:'Libro ordini',         pt:'Livro de ordens',       ru:'Стакан заявок',      zh:'订单簿',    ja:'オーダーブック',  ko:'오더북',       ar:'دفتر الأوامر',     he:'ספר הזמנות',  ur:'آرڈر بک',         hi:'ऑर्डर बुक' },
  'nav.pools':       { en:'Pools',          es:'Pools',                fr:'Pools',               de:'Pools',             it:'Pool',                 pt:'Pools',                 ru:'Пулы',               zh:'流动性池',  ja:'プール',        ko:'풀',           ar:'المجمعات',         he:'בריכות',     ur:'پولز',            hi:'पूल' },
  'nav.tokens':      { en:'Tokens',         es:'Tokens',               fr:'Jetons',              de:'Tokens',            it:'Token',                pt:'Tokens',                ru:'Токены',             zh:'代币',      ja:'トークン',      ko:'토큰',         ar:'العملات',          he:'אסימונים',   ur:'ٹوکنز',           hi:'टोकन' },
  'nav.holders':     { en:'Holders',        es:'Titulares',            fr:'Détenteurs',          de:'Halter',            it:'Detentori',            pt:'Detentores',            ru:'Держатели',          zh:'持有者',    ja:'保有者',        ko:'보유자',       ar:'الحائزون',         he:'מחזיקים',    ur:'ہولڈرز',           hi:'धारक' },
  'nav.staking':     { en:'Staking',        es:'Staking',              fr:'Staking',             de:'Staking',           it:'Staking',              pt:'Staking',               ru:'Стейкинг',           zh:'质押',      ja:'ステーキング',  ko:'스테이킹',     ar:'الرهن',            he:'נעילה',      ur:'اسٹیکنگ',          hi:'स्टेकिंग' },
  'nav.governance':  { en:'Governance',     es:'Gobernanza',           fr:'Gouvernance',         de:'Governance',        it:'Governance',           pt:'Governança',            ru:'Управление',         zh:'治理',      ja:'ガバナンス',    ko:'거버넌스',     ar:'الحوكمة',          he:'ממשל',       ur:'گورننس',          hi:'शासन' },
  'nav.predict':     { en:'Predictions',    es:'Predicciones',         fr:'Prédictions',         de:'Vorhersagen',       it:'Predizioni',           pt:'Previsões',             ru:'Прогнозы',           zh:'预测',      ja:'予測',         ko:'예측',         ar:'التنبؤات',         he:'תחזיות',     ur:'پیش گوئیاں',      hi:'पूर्वानुमान' },
  'nav.toolsGroup':  { en:'Tools',          es:'Herramientas',         fr:'Outils',              de:'Werkzeuge',         it:'Strumenti',            pt:'Ferramentas',           ru:'Инструменты',        zh:'工具',      ja:'ツール',       ko:'도구',         ar:'الأدوات',          he:'כלים',       ur:'اوزار',           hi:'उपकरण' },
  'nav.tools':       { en:'Tools',          es:'Herramientas',         fr:'Outils',              de:'Werkzeuge',         it:'Strumenti',            pt:'Ferramentas',           ru:'Инструменты',        zh:'工具',      ja:'ツール',       ko:'도구',         ar:'الأدوات',          he:'כלים',       ur:'اوزار',           hi:'उपकरण' },
  'nav.portfolio':   { en:'Portfolio',      es:'Cartera',              fr:'Portefeuille',        de:'Portfolio',         it:'Portafoglio',          pt:'Carteira',              ru:'Портфель',           zh:'投资组合',  ja:'ポートフォリオ', ko:'포트폴리오',   ar:'المحفظة',          he:'תיק',        ur:'پورٹ فولیو',      hi:'पोर्टफ़ोलियो' },
  'nav.balance':     { en:'Activity',       es:'Actividad',            fr:'Activité',            de:'Aktivität',         it:'Attività',             pt:'Atividade',             ru:'Активность',         zh:'活动',      ja:'アクティビティ', ko:'활동',         ar:'النشاط',           he:'פעילות',     ur:'سرگرمی',          hi:'गतिविधि' },

  /* ===== Common ===== */
  'common.search':     { en:'Search wallet, tx hash, block, extrinsic…',  es:'Buscar cartera, hash, bloque, extrínseco…', fr:'Rechercher wallet, hash, bloc, extrinsèque…', de:'Wallet, Hash, Block, Extrinsic suchen…',  it:'Cerca wallet, hash, blocco, extrinsic…',  pt:'Buscar carteira, hash, bloco, extrínseco…',  ru:'Поиск кошелька, хэша, блока…',  zh:'搜索钱包、哈希、区块、外部交易…',  ja:'ウォレット・ハッシュ・ブロック…',  ko:'지갑, 해시, 블록, 익스트린식 검색…',  ar:'ابحث في المحافظ والكتل والمعاملات…',  he:'חיפוש ארנק, האש, בלוק…',  ur:'والیٹ، ہیش، بلاک تلاش کریں…',  hi:'वॉलेट, हैश, ब्लॉक खोजें…' },
  'common.live':       { en:'LIVE',         es:'EN VIVO',      fr:'EN DIRECT',    de:'LIVE',      it:'IN DIRETTA',  pt:'AO VIVO',    ru:'В ЭФИРЕ',      zh:'实时',     ja:'ライブ',      ko:'실시간',       ar:'مباشر',       he:'חי',          ur:'براہ راست',    hi:'लाइव' },
  'common.connected':  { en:'connected',    es:'conectado',    fr:'connecté',     de:'verbunden', it:'connesso',    pt:'conectado',  ru:'подключено',   zh:'已连接',   ja:'接続済み',    ko:'연결됨',       ar:'متصل',        he:'מחובר',       ur:'منسلک',        hi:'जुड़ा हुआ' },
  'common.pause':      { en:'Pause',        es:'Pausar',       fr:'Pause',        de:'Pause',     it:'Pausa',       pt:'Pausar',     ru:'Пауза',        zh:'暂停',     ja:'一時停止',    ko:'일시정지',     ar:'إيقاف',       he:'השהה',        ur:'روکیں',        hi:'रोकें' },
  'common.resume':     { en:'Resume',       es:'Reanudar',     fr:'Reprendre',    de:'Fortsetzen',it:'Riprendi',    pt:'Retomar',    ru:'Продолжить',   zh:'继续',     ja:'再開',        ko:'재개',         ar:'استئناف',     he:'המשך',        ur:'جاری رکھیں',   hi:'जारी रखें' },
  'common.copy':       { en:'Copy',         es:'Copiar',       fr:'Copier',       de:'Kopieren',  it:'Copia',       pt:'Copiar',     ru:'Копировать',   zh:'复制',     ja:'コピー',      ko:'복사',         ar:'نسخ',         he:'העתק',        ur:'کاپی',         hi:'कॉपी' },
  'common.copied':     { en:'Copied',       es:'Copiado',      fr:'Copié',        de:'Kopiert',   it:'Copiato',     pt:'Copiado',    ru:'Скопировано',  zh:'已复制',   ja:'コピー済み',  ko:'복사됨',       ar:'تم النسخ',    he:'הועתק',       ur:'کاپی ہو گیا',  hi:'कॉपी किया' },
  'common.close':      { en:'Close',        es:'Cerrar',       fr:'Fermer',       de:'Schließen', it:'Chiudi',      pt:'Fechar',     ru:'Закрыть',      zh:'关闭',     ja:'閉じる',      ko:'닫기',         ar:'إغلاق',       he:'סגור',        ur:'بند کریں',     hi:'बंद' },
  'common.language':   { en:'Language',     es:'Idioma',       fr:'Langue',       de:'Sprache',   it:'Lingua',      pt:'Idioma',     ru:'Язык',         zh:'语言',     ja:'言語',        ko:'언어',         ar:'اللغة',       he:'שפה',         ur:'زبان',         hi:'भाषा' },

  /* ===== Top bar ===== */
  'topbar.block':    { en:'Block',        es:'Bloque',       fr:'Bloc',         de:'Block',     it:'Blocco',      pt:'Bloco',      ru:'Блок',         zh:'区块',     ja:'ブロック',    ko:'블록',         ar:'كتلة',        he:'בלוק',        ur:'بلاک',         hi:'ब्लॉक' },
  'topbar.eraEpoch': { en:'Era · Epoch',  es:'Era · Época',  fr:'Ère · Époque', de:'Ära · Epoche', it:'Era · Epoca', pt:'Era · Época', ru:'Эра · Эпоха', zh:'纪元·周期', ja:'エラ・エポック', ko:'시대·에포크', ar:'حقبة · عصر', he:'עידן · אפוקה', ur:'دور · عہد',   hi:'युग · एपॉक' },

  /* ===== Burn Tracker ===== */
  'burn.title':    { en:'Burn Tracker',                                      es:'Rastreador de Quemas',                                fr:'Suivi des burns',                                   de:'Burn-Tracker',                                    it:'Tracker di burn',                                 pt:'Rastreador de queimas',                             ru:'Трекер сжиганий',                                  zh:'销毁追踪',                                ja:'バーントラッカー',                             ko:'소각 추적기',                             ar:'متتبع الحرق',                                       he:'מעקב שריפה',                                  ur:'برن ٹریکر',                                 hi:'बर्न ट्रैकर' },
  'burn.sub':      { en:'Real-time burn economics across all SORA assets.', es:'Economía de quemas en tiempo real para todos los activos SORA.', fr:'Économie des burns en temps réel sur tous les actifs SORA.', de:'Burn-Ökonomie in Echtzeit für alle SORA-Assets.', it:'Economia dei burn in tempo reale per tutti gli asset SORA.', pt:'Economia de queimas em tempo real para todos os ativos SORA.', ru:'Экономика сжиганий всех активов SORA в реальном времени.', zh:'实时追踪所有 SORA 资产的销毁经济。', ja:'すべての SORA 資産のバーン経済をリアルタイム表示。', ko:'모든 SORA 자산의 실시간 소각 경제.',    ar:'اقتصاديات الحرق الفورية لجميع أصول SORA.',          he:'כלכלת שריפה בזמן אמת לכל נכסי SORA.',           ur:'تمام SORA اثاثوں کی حقیقی وقت میں برن اکنامکس۔', hi:'सभी SORA परिसंपत्तियों की रीयल-टाइम बर्न इकोनॉमिक्स।' },

  /* ===== Pulse ===== */
  "pulse.search.blockPlaceholder": { en:"block #",   es:"bloque #",        fr:"bloc #",         de:"Block #",        it:"blocco #",       pt:"bloco #",        ru:"блок #",         zh:"区块 #",       ja:"ブロック#",      ko:"블록 #",          ar:"كتلة #",        he:"בלוק #",       ur:"بلاک #",        hi:"ब्लॉक #" },
  "pulse.search.go":               { en:"Go",        es:"Ir",              fr:"OK",             de:"Los",            it:"Vai",            pt:"Ir",             ru:"OK",             zh:"前往",          ja:"移動",           ko:"이동",            ar:"اذهب",         he:"לך",            ur:"جائیں",         hi:"जाएँ" },
  'pulse.title':   { en:'Network Pulse',                                     es:'Pulso de la Red',                                     fr:'Pouls du réseau',                                   de:'Netzwerk-Puls',                                   it:'Pulso di rete',                                   pt:'Pulso da rede',                                     ru:'Пульс сети',                                       zh:'网络脉动',                                ja:'ネットワーク鼓動',                            ko:'네트워크 맥박',                           ar:'نبض الشبكة',                                        he:'דופק הרשת',                                   ur:'نیٹ ورک پلس',                              hi:'नेटवर्क पल्स' },
  'pulse.sub':     { en:'Live on-chain activity across blocks, swaps, and transfers.', es:'Actividad en cadena en vivo: bloques, swaps y transferencias.', fr:'Activité en chaîne en direct : blocs, swaps, transferts.', de:'On-Chain-Aktivität: Blöcke, Swaps, Transfers.', it:'Attività on-chain in diretta: blocchi, swap, trasferimenti.', pt:'Atividade on-chain em tempo real: blocos, swaps, transferências.', ru:'Ончейн-активность: блоки, свопы, переводы.', zh:'实时链上活动:区块、兑换、转账。', ja:'ライブオンチェーン活動:ブロック・スワップ・送金。', ko:'실시간 온체인 활동: 블록, 스왑, 전송.', ar:'النشاط الحي على السلسلة: الكتل والمبادلات والتحويلات.', he:'פעילות בזמן אמת בשרשרת: בלוקים, החלפות, העברות.', ur:'براہ راست آن چین سرگرمی: بلاکس، سواپس، منتقلیاں۔', hi:'लाइव ऑन-चेन गतिविधि: ब्लॉक, स्वैप, ट्रांसफ़र।' },

  /* ===== Intelligence ===== */
  'intel.title':   { en:'Intelligence',    es:'Inteligencia',   fr:'Intelligence',   de:'Analyse',       it:'Intelligence',  pt:'Inteligência',   ru:'Аналитика',    zh:'情报',     ja:'インテリジェンス', ko:'인텔리전스',  ar:'استخبارات',   he:'מודיעין',    ur:'انٹیلیجنس',   hi:'इंटेलिजेंस' },
  'intel.sub':     { en:'Curated insights from on-chain pattern analysis.', es:'Perspectivas curadas del análisis de patrones on-chain.', fr:'Analyses tirées de l\'étude des schémas on-chain.', de:'Kuratierte Erkenntnisse aus der On-Chain-Musteranalyse.', it:'Approfondimenti dall\'analisi dei pattern on-chain.', pt:'Insights curados da análise de padrões on-chain.', ru:'Аналитика на основе ончейн-паттернов.', zh:'基于链上模式分析的精选洞察。', ja:'オンチェーンパターン分析からの洞察。', ko:'온체인 패턴 분석 기반 인사이트.', ar:'رؤى مختارة من تحليل الأنماط على السلسلة.', he:'תובנות נבחרות מניתוח דפוסים בשרשרת.', ur:'آن چین پیٹرن تجزیے سے منتخب بصیرت۔', hi:'ऑन-चेन पैटर्न विश्लेषण से चुनी गई अंतर्दृष्टियाँ।' },

  /* ===== Swaps ===== */
  'swaps.title':   { en:'Swaps',   es:'Intercambios',  fr:'Swaps',   de:'Tausch',   it:'Swap',   pt:'Swaps',   ru:'Обмены',   zh:'兑换',   ja:'スワップ',   ko:'스왑',   ar:'المبادلات',   he:'החלפות',  ur:'سواپس',   hi:'स्वैप' },
  'swaps.sub':     { en:'DEX trades routed via liquidity proxy.', es:'Operaciones DEX vía liquidity proxy.', fr:'Trades DEX routés via liquidity proxy.', de:'DEX-Trades via Liquidity-Proxy.', it:'Trade DEX via liquidity proxy.', pt:'Trades DEX via liquidity proxy.', ru:'DEX-сделки через liquidity proxy.', zh:'通过流动性代理路由的 DEX 交易。', ja:'リクイディティプロキシ経由の DEX 取引。', ko:'유동성 프록시 DEX 거래.', ar:'صفقات DEX عبر بروكسي السيولة.', he:'עסקאות DEX דרך ליקווידיטי פרוקסי.', ur:'لکویڈٹی پراکسی کے ذریعے DEX ٹریڈز۔', hi:'लिक्विडिटी प्रॉक्सी के माध्यम से DEX ट्रेड।' },

  /* ===== Extrinsics ===== */
  'extrinsics.title': { en:'Extrinsics',  es:'Extrínsecos',  fr:'Extrinsèques',  de:'Extrinsics',  it:'Extrinsic',  pt:'Extrínsecos',  ru:'Экстринсики',  zh:'外部交易',  ja:'エクストリンシック',  ko:'익스트린식',  ar:'المعاملات',  he:'אקסטרינסיקים',  ur:'ایکسٹرنسکس',  hi:'एक्सट्रिंसिक्स' },
  'extrinsics.sub':   { en:'Every pallet call, signed and traced.', es:'Cada llamada a pallet, firmada y rastreada.', fr:'Chaque appel de pallet, signé et tracé.', de:'Jeder Pallet-Call, signiert und verfolgt.', it:'Ogni chiamata a pallet, firmata e tracciata.', pt:'Cada chamada de pallet, assinada e rastreada.', ru:'Каждый вызов pallet, подписан и отслежен.', zh:'每次模块调用,已签名并追踪。', ja:'すべてのパレット呼び出し、署名済み。', ko:'모든 팔레트 호출, 서명 및 추적.', ar:'كل استدعاء pallet، موقّع ومتتبع.', he:'כל קריאת pallet, חתומה ומתועדת.', ur:'ہر پیلٹ کال، دستخط شدہ اور ٹریس۔', hi:'हर पैलेट कॉल, हस्ताक्षरित और ट्रेस।' },

  /* ===== Transfers ===== */
  'transfers.title': { en:'Transfers',  es:'Transferencias',  fr:'Transferts',  de:'Überweisungen',  it:'Trasferimenti',  pt:'Transferências',  ru:'Переводы',  zh:'转账',  ja:'送金',  ko:'전송',  ar:'التحويلات',  he:'העברות',  ur:'منتقلیاں',  hi:'स्थानांतरण' },
  'transfers.sub':   { en:'Direct balance movements, excluding DEX.', es:'Movimientos directos de saldo, excluyendo DEX.', fr:'Mouvements de solde directs, hors DEX.', de:'Direkte Saldo-Bewegungen, ohne DEX.', it:'Movimenti diretti di saldo, escluso DEX.', pt:'Movimentos diretos de saldo, excluindo DEX.', ru:'Прямые переводы, без DEX.', zh:'直接余额变动(不含 DEX)。', ja:'直接的な残高移動、DEX を除く。', ko:'DEX 제외 직접 잔액 이동.', ar:'تحركات رصيد مباشرة، باستثناء DEX.', he:'תנועות יתרה ישירות, ללא DEX.', ur:'براہ راست بیلنس منتقلی، DEX کے بغیر۔', hi:'प्रत्यक्ष बैलेंस मूवमेंट, DEX को छोड़कर।' },

  /* ===== Bridges ===== */
  'bridges.title':   { en:'Bridges',    es:'Puentes',    fr:'Ponts',    de:'Brücken',    it:'Ponti',    pt:'Pontes',    ru:'Мосты',    zh:'跨链桥',  ja:'ブリッジ',   ko:'브릿지',    ar:'الجسور',    he:'גשרים',    ur:'پل',    hi:'ब्रिज' },
  'bridges.sub':     { en:'Cross-chain transfers via HASHI.', es:'Transferencias entre cadenas vía HASHI.', fr:'Transferts cross-chain via HASHI.', de:'Cross-Chain-Transfers via HASHI.', it:'Trasferimenti cross-chain via HASHI.', pt:'Transferências cross-chain via HASHI.', ru:'Кросс-чейн переводы через HASHI.', zh:'通过 HASHI 的跨链转账。', ja:'HASHI 経由のクロスチェーン送金。', ko:'HASHI 통한 크로스체인 전송.', ar:'تحويلات عبر السلاسل بواسطة HASHI.', he:'העברות חוצות-שרשרת דרך HASHI.', ur:'HASHI کے ذریعے کراس چین منتقلی۔', hi:'HASHI के माध्यम से क्रॉस-चेन ट्रांसफ़र।' },

  /* ===== Order Book ===== */
  'orderbook.title': { en:'Order Book',  es:'Libro de Órdenes',  fr:'Carnet d\'ordres',  de:'Orderbuch',  it:'Libro ordini',  pt:'Livro de ordens',  ru:'Стакан заявок',  zh:'订单簿',  ja:'オーダーブック',  ko:'오더북',  ar:'دفتر الأوامر',  he:'ספר הזמנות',  ur:'آرڈر بک',  hi:'ऑर्डर बुक' },
  'orderbook.sub':   { en:'Native limit-order market depth.', es:'Profundidad del mercado de órdenes limitadas.', fr:'Profondeur du carnet d\'ordres limites.', de:'Markt-Tiefe für Limit-Orders.', it:'Profondità del mercato a ordini limite.', pt:'Profundidade do mercado de ordens limitadas.', ru:'Глубина рынка лимитных ордеров.', zh:'原生限价订单市场深度。', ja:'ネイティブ指値注文の市場深度。', ko:'네이티브 지정가 주문 시장 깊이.', ar:'عمق سوق أوامر الحد.', he:'עומק שוק הזמנות מגבילות.', ur:'لمٹ آرڈر مارکیٹ کی گہرائی۔', hi:'लिमिट-ऑर्डर बाज़ार गहराई।' },

  /* ===== Pools ===== */
  'pools.title':     { en:'Pools',   es:'Pools',   fr:'Pools',   de:'Pools',   it:'Pool',   pt:'Pools',   ru:'Пулы',   zh:'流动性池',  ja:'プール',   ko:'풀',   ar:'المجمعات',   he:'בריכות',   ur:'پولز',   hi:'पूल' },
  'pools.sub':       { en:'Liquidity pools ranked by TVL.', es:'Pools de liquidez ordenados por TVL.', fr:'Pools de liquidité classés par TVL.', de:'Liquiditätspools nach TVL.', it:'Pool di liquidità classificati per TVL.', pt:'Pools de liquidez classificados por TVL.', ru:'Пулы ликвидности по TVL.', zh:'按 TVL 排序的流动性池。', ja:'TVL でランク付けされた流動性プール。', ko:'TVL로 정렬된 유동성 풀.', ar:'مجمعات السيولة حسب TVL.', he:'בריכות נזילות לפי TVL.', ur:'TVL کے لحاظ سے لکویڈٹی پولز۔', hi:'TVL के अनुसार लिक्विडिटी पूल।' },

  /* ===== Tokens ===== */
  'tokens.title':    { en:'Tokens',   es:'Tokens',   fr:'Jetons',   de:'Tokens',   it:'Token',   pt:'Tokens',   ru:'Токены',   zh:'代币',   ja:'トークン',   ko:'토큰',   ar:'العملات',   he:'אסימונים',   ur:'ٹوکنز',   hi:'टोकन' },
  'tokens.sub':      { en:'All registered SORA assets.', es:'Todos los activos SORA registrados.', fr:'Tous les actifs SORA enregistrés.', de:'Alle registrierten SORA-Assets.', it:'Tutti gli asset SORA registrati.', pt:'Todos os ativos SORA registrados.', ru:'Все зарегистрированные активы SORA.', zh:'所有已注册的 SORA 资产。', ja:'登録済みの SORA 資産すべて。', ko:'등록된 모든 SORA 자산.', ar:'جميع أصول SORA المسجّلة.', he:'כל נכסי SORA הרשומים.', ur:'تمام رجسٹرڈ SORA اثاثے۔', hi:'सभी पंजीकृत SORA संपत्तियाँ।' },

  /* ===== Holders ===== */
  'holders.title':   { en:'Holders',   es:'Titulares',   fr:'Détenteurs',   de:'Halter',   it:'Detentori',   pt:'Detentores',   ru:'Держатели',   zh:'持有者',   ja:'保有者',   ko:'보유자',   ar:'الحائزون',   he:'מחזיקים',   ur:'ہولڈرز',   hi:'धारक' },
  'holders.sub':     { en:'Top addresses by XOR balance.', es:'Principales direcciones por saldo XOR.', fr:'Principales adresses par solde XOR.', de:'Top-Adressen nach XOR-Saldo.', it:'Principali indirizzi per saldo XOR.', pt:'Principais endereços por saldo XOR.', ru:'Топ-адреса по балансу XOR.', zh:'按 XOR 余额排名的地址。', ja:'XOR 残高順のトップアドレス。', ko:'XOR 잔액 상위 주소.', ar:'أعلى العناوين برصيد XOR.', he:'כתובות מובילות לפי יתרת XOR.', ur:'XOR بیلنس کے لحاظ سے ٹاپ ایڈریسز۔', hi:'XOR बैलेंस के अनुसार शीर्ष पते।' },

  /* ===== Staking ===== */
  'staking.title':   { en:'Staking',  es:'Staking',  fr:'Staking',  de:'Staking',  it:'Staking',  pt:'Staking',  ru:'Стейкинг',  zh:'质押',  ja:'ステーキング',  ko:'스테이킹',  ar:'الرهن',  he:'נעילה',  ur:'اسٹیکنگ',  hi:'स्टेकिंग' },
  'staking.sub':     { en:'Validators and network staking metrics.', es:'Validadores y métricas de staking.', fr:'Validateurs et métriques de staking.', de:'Validatoren und Staking-Metriken.', it:'Validatori e metriche di staking.', pt:'Validadores e métricas de staking.', ru:'Валидаторы и метрики стейкинга.', zh:'验证者与质押指标。', ja:'バリデーターとステーキング指標。', ko:'검증자 및 스테이킹 지표.', ar:'المدققون ومقاييس الرهن.', he:'ולידטורים ומדדי נעילה.', ur:'ویلیڈیٹرز اور اسٹیکنگ میٹرکس۔', hi:'वैलिडेटर और स्टेकिंग मेट्रिक्स।' },
  'staking.tab.validators':  { en:'Validators',   es:'Validadores',   fr:'Validateurs',  de:'Validatoren',  it:'Validatori',   pt:'Validadores',  ru:'Валидаторы',   zh:'验证者',  ja:'バリデーター',  ko:'검증자',    ar:'المدققون',   he:'ולידטורים',  ur:'ویلیڈیٹرز',  hi:'वैलिडेटर' },
  'staking.tab.network':     { en:'Network Info', es:'Info de la Red', fr:'Info réseau',  de:'Netzwerk-Info', it:'Info rete',   pt:'Info da rede', ru:'Сеть',         zh:'网络信息', ja:'ネット情報',    ko:'네트워크 정보', ar:'معلومات الشبكة', he:'מידע רשת', ur:'نیٹ ورک معلومات', hi:'नेटवर्क जानकारी' },

  /* ===== Governance (headers only; sub-tabs stay in Spanish) ===== */
  'gov.title':       { en:'Governance',  es:'Gobernanza',  fr:'Gouvernance',  de:'Governance',  it:'Governance',  pt:'Governança',  ru:'Управление',  zh:'治理',  ja:'ガバナンス',  ko:'거버넌스',  ar:'الحوكمة',  he:'ממשל',  ur:'گورننس',  hi:'शासन' },
  'gov.sub':         { en:'Council, Democracy and Technical Committee of the SORA chain.', es:'Consejo, Democracia y Comité Técnico de la cadena SORA.', fr:'Conseil, Démocratie et Comité Technique de la chaîne SORA.', de:'Council, Democracy und Technical Committee der SORA-Chain.', it:'Consiglio, Democrazia e Comitato Tecnico della chain SORA.', pt:'Conselho, Democracia e Comitê Técnico da chain SORA.', ru:'Совет, Демократия и Технический комитет SORA.', zh:'SORA 链的理事会、民主与技术委员会。', ja:'SORA チェーンの評議会、民主制、技術委員会。', ko:'SORA 체인의 의회, 민주주의, 기술 위원회.', ar:'مجلس وديمقراطية ولجنة فنية لسلسلة SORA.', he:'מועצה, דמוקרטיה וועדה טכנית של שרשרת SORA.', ur:'SORA چین کا کونسل، جمہوریت اور تکنیکی کمیٹی۔', hi:'SORA चेन का काउंसिल, डेमोक्रेसी और तकनीकी समिति।' },

  /* ===== Portfolio / Balance ===== */
  'portfolio.title': { en:'Portfolio',  es:'Cartera',  fr:'Portefeuille',  de:'Portfolio',  it:'Portafoglio',  pt:'Carteira',  ru:'Портфель',  zh:'投资组合',  ja:'ポートフォリオ',  ko:'포트폴리오',  ar:'المحفظة',  he:'תיק',  ur:'پورٹ فولیو',  hi:'पोर्टफ़ोलियो' },
  'portfolio.sub':   { en:'Holdings across all watched wallets.', es:'Tenencias en todas las carteras observadas.', fr:'Avoirs sur tous les wallets suivis.', de:'Bestände aller beobachteten Wallets.', it:'Partecipazioni in tutti i wallet osservati.', pt:'Posições em todas as carteiras monitoradas.', ru:'Активы по всем отслеживаемым кошелькам.', zh:'所有监控钱包的持仓。', ja:'監視中のすべてのウォレットの保有状況。', ko:'모니터링 중인 모든 지갑의 보유 현황.', ar:'الحيازات في جميع المحافظ المراقبة.', he:'החזקות בכל הארנקים המנוטרים.', ur:'نگرانی میں تمام والٹس کے ہولڈنگز۔', hi:'देखे गए सभी वॉलेट्स में होल्डिंग।' },
  'balance.title':   { en:'Activity',  es:'Actividad',  fr:'Activité',  de:'Aktivität',  it:'Attività',  pt:'Atividade',  ru:'Активность',  zh:'活动',  ja:'アクティビティ',  ko:'활동',  ar:'النشاط',  he:'פעילות',  ur:'سرگرمی',  hi:'गतिविधि' },
  'balance.sub':     { en:'Aggregated history across your wallets.', es:'Historial agregado de tus wallets.', fr:'Historique agrégé de vos portefeuilles.', de:'Aggregierte Historie aller Wallets.', it:'Cronologia aggregata dei tuoi wallet.', pt:'Histórico agregado das suas carteiras.', ru:'Сводная история всех кошельков.', zh:'所有钱包的汇总活动。', ja:'全ウォレットの集約履歴。', ko:'전체 지갑 집계 기록.', ar:'السجل المجمّع لمحافظك.', he:'היסטוריה מאוחדת של הארנקים שלך.', ur:'آپ کے تمام والیٹس کی مجموعی سرگرمی۔', hi:'सभी वॉलेट का संयुक्त इतिहास।' },

  /* ===== Drill panel ===== */
  'drill.overview':  { en:'Overview',     es:'Resumen',     fr:'Aperçu',      de:'Überblick',   it:'Panoramica',  pt:'Visão geral',  ru:'Обзор',        zh:'概览',     ja:'概要',        ko:'개요',         ar:'نظرة عامة',   he:'סקירה',       ur:'جائزہ',        hi:'अवलोकन' },
  'drill.details':   { en:'Details',      es:'Detalles',    fr:'Détails',     de:'Details',     it:'Dettagli',    pt:'Detalhes',     ru:'Подробности',  zh:'详情',     ja:'詳細',        ko:'세부사항',     ar:'التفاصيل',    he:'פרטים',       ur:'تفصیلات',      hi:'विवरण' },
  'drill.from':      { en:'From',         es:'De',          fr:'De',          de:'Von',         it:'Da',          pt:'De',           ru:'От',           zh:'来自',     ja:'から',        ko:'발신',         ar:'من',          he:'מאת',         ur:'از',          hi:'से' },
  'drill.to':        { en:'To',           es:'Para',        fr:'Vers',        de:'An',          it:'A',           pt:'Para',         ru:'Кому',         zh:'至',       ja:'宛先',        ko:'수신',         ar:'إلى',         he:'אל',          ur:'بنام',        hi:'को' },
  'drill.amount':    { en:'Amount',       es:'Cantidad',    fr:'Montant',     de:'Betrag',      it:'Importo',     pt:'Valor',        ru:'Сумма',        zh:'金额',     ja:'金額',        ko:'금액',         ar:'المبلغ',      he:'סכום',        ur:'رقم',          hi:'राशि' },
  'drill.fee':       { en:'Fee',          es:'Comisión',    fr:'Frais',       de:'Gebühr',      it:'Commissione', pt:'Taxa',         ru:'Комиссия',     zh:'手续费',   ja:'手数料',      ko:'수수료',       ar:'الرسوم',      he:'עמלה',        ur:'فیس',          hi:'शुल्क' },
  'drill.timestamp': { en:'Timestamp',    es:'Marca temporal', fr:'Horodatage', de:'Zeitstempel', it:'Timestamp',  pt:'Carimbo',      ru:'Время',        zh:'时间戳',   ja:'タイムスタンプ', ko:'타임스탬프',    ar:'الطابع الزمني', he:'חותמת זמן',  ur:'ٹائم اسٹیمپ',  hi:'टाइमस्टैम्प' },
  'drill.block':     { en:'Block',        es:'Bloque',      fr:'Bloc',        de:'Block',       it:'Blocco',      pt:'Bloco',        ru:'Блок',         zh:'区块',     ja:'ブロック',    ko:'블록',         ar:'كتلة',        he:'בלוק',        ur:'بلاک',         hi:'ब्लॉक' },
  'drill.hash':      { en:'Hash',         es:'Hash',        fr:'Hash',        de:'Hash',        it:'Hash',        pt:'Hash',         ru:'Хэш',          zh:'哈希',     ja:'ハッシュ',    ko:'해시',         ar:'هاش',         he:'האש',         ur:'ہیش',          hi:'हैश' },
  'drill.status':    { en:'Status',       es:'Estado',      fr:'Statut',      de:'Status',      it:'Stato',       pt:'Status',       ru:'Статус',       zh:'状态',     ja:'ステータス',   ko:'상태',         ar:'الحالة',      he:'סטטוס',       ur:'حالت',         hi:'स्थिति' },

  /* ===== Tweaks ===== */
  'tweaks.title':    { en:'Tweaks',       es:'Ajustes',     fr:'Réglages',    de:'Einstellungen', it:'Regolazioni', pt:'Ajustes',   ru:'Настройки',    zh:'调整',     ja:'調整',        ko:'조정',         ar:'التعديلات',   he:'התאמות',      ur:'ترتیبات',      hi:'समायोजन' },
  'tweaks.section':  { en:'Section',      es:'Sección',     fr:'Section',     de:'Bereich',     it:'Sezione',     pt:'Seção',        ru:'Раздел',       zh:'分区',     ja:'セクション',   ko:'섹션',         ar:'القسم',       he:'מקטע',        ur:'سیکشن',        hi:'खंड' },
  'tweaks.density':  { en:'Density',      es:'Densidad',    fr:'Densité',     de:'Dichte',      it:'Densità',     pt:'Densidade',    ru:'Плотность',    zh:'密度',     ja:'密度',        ko:'밀도',         ar:'الكثافة',     he:'צפיפות',      ur:'کثافت',        hi:'घनत्व' },
  'tweaks.motion':   { en:'Motion',       es:'Movimiento',  fr:'Mouvement',   de:'Bewegung',    it:'Movimento',   pt:'Movimento',    ru:'Движение',     zh:'动画',     ja:'モーション',   ko:'모션',         ar:'الحركة',      he:'תנועה',       ur:'حرکت',         hi:'गति' },
  'tweaks.accent':   { en:'Accent',       es:'Acento',      fr:'Accent',      de:'Akzent',      it:'Accento',     pt:'Destaque',     ru:'Акцент',       zh:'主色',     ja:'アクセント',   ko:'강조색',       ar:'اللون المميز', he:'צבע הדגשה',  ur:'لہجہ',         hi:'एक्सेंट' },

  /* ===== Staking KPIs / headers ===== */
  'staking.kpi.activeValidators': { en:'Active Validators', es:'Validadores Activos', fr:'Validateurs actifs', de:'Aktive Validatoren', it:'Validatori attivi', pt:'Validadores ativos', ru:'Активные валидаторы', zh:'活跃验证者', ja:'アクティブバリデーター', ko:'활성 검증자', ar:'المدققون النشطون', he:'ולידטורים פעילים', ur:'ایکٹو ویلیڈیٹرز', hi:'सक्रिय वैलिडेटर' },
  'staking.kpi.totalStaked':      { en:'Total Staked', es:'Total en Stake', fr:'Total staké', de:'Gesamt gestaked', it:'Totale in stake', pt:'Total em stake', ru:'Всего в стейкинге', zh:'总质押', ja:'総ステーク', ko:'총 스테이킹', ar:'إجمالي الرهن', he:'סה"כ נעול', ur:'کل اسٹیک', hi:'कुल स्टेक' },
  'staking.kpi.avgCommission':    { en:'Avg Commission', es:'Comisión Media', fr:'Commission moy.', de:'Ø Kommission', it:'Commissione media', pt:'Comissão média', ru:'Ср. комиссия', zh:'平均佣金', ja:'平均手数料', ko:'평균 수수료', ar:'متوسط العمولة', he:'עמלה ממוצעת', ur:'اوسط کمیشن', hi:'औसत कमीशन' },
  'staking.kpi.nextEraIn':        { en:'Next Era In', es:'Próxima Era En', fr:'Prochaine ère', de:'Nächste Ära', it:'Prossima era', pt:'Próxima era', ru:'След. эра через', zh:'下一纪元', ja:'次のエラ', ko:'다음 에라', ar:'العصر التالي خلال', he:'עידן הבא בעוד', ur:'اگلا دور', hi:'अगला एरा' },
  'staking.kpi.targetWaiting':    { en:'target · waiting', es:'objetivo · espera', fr:'cible · attente', de:'Ziel · Warteliste', it:'obiettivo · attesa', pt:'alvo · aguardando', ru:'цель · ожидание', zh:'目标 · 等待中', ja:'目標・待機', ko:'목표 · 대기', ar:'الهدف · الانتظار', he:'יעד · המתנה', ur:'ہدف · انتظار', hi:'लक्ष्य · प्रतीक्षा' },
  'staking.kpi.activeSet':        { en:'active set', es:'conjunto activo', fr:'ensemble actif', de:'aktives Set', it:'set attivo', pt:'conjunto ativo', ru:'активный набор', zh:'活跃集合', ja:'アクティブセット', ko:'활성 세트', ar:'المجموعة النشطة', he:'קבוצה פעילה', ur:'ایکٹو سیٹ', hi:'सक्रिय सेट' },
  'staking.kpi.era':              { en:'era', es:'era', fr:'ère', de:'Ära', it:'era', pt:'era', ru:'эра', zh:'纪元', ja:'エラ', ko:'에라', ar:'حقبة', he:'עידן', ur:'دور', hi:'युग' },

  'staking.col.validator':   { en:'Validator',  es:'Validador',   fr:'Validateur',  de:'Validator',  it:'Validatore',  pt:'Validador',  ru:'Валидатор',  zh:'验证者',  ja:'バリデーター',  ko:'검증자',  ar:'المدقق',  he:'ולידטור',  ur:'ویلیڈیٹر',  hi:'वैलिडेटर' },
  'staking.col.totalStake':  { en:'Total Stake', es:'Stake Total', fr:'Stake total', de:'Gesamt-Stake', it:'Stake totale', pt:'Stake total', ru:'Общий стейк', zh:'总质押', ja:'総ステーク', ko:'총 스테이크', ar:'إجمالي الرهن', he:'נעילה כוללת', ur:'کل اسٹیک', hi:'कुल स्टेक' },
  'staking.col.own':         { en:'Own', es:'Propio', fr:'Propre', de:'Eigen', it:'Proprio', pt:'Próprio', ru:'Своё', zh:'自质押', ja:'自己', ko:'자기', ar:'ذاتي', he:'עצמי', ur:'ذاتی', hi:'अपना' },
  'staking.col.noms':        { en:'Noms', es:'Nom.', fr:'Nom.', de:'Nom.', it:'Nom.', pt:'Nom.', ru:'Ном.', zh:'提名', ja:'指名', ko:'지명', ar:'المرشحون', he:'ממנים', ur:'نامزد', hi:'नामांकन' },
  'staking.col.commission':  { en:'Commission', es:'Comisión', fr:'Commission', de:'Kommission', it:'Commissione', pt:'Comissão', ru:'Комиссия', zh:'佣金', ja:'手数料', ko:'수수료', ar:'العمولة', he:'עמלה', ur:'کمیشن', hi:'कमीशन' },
  'staking.col.eraPts':      { en:'Era Pts', es:'Puntos', fr:'Points', de:'Era-Pts', it:'Pt. Era', pt:'Pts Era', ru:'Очки эры', zh:'纪元积分', ja:'エラPt', ko:'에라 점수', ar:'نقاط الحقبة', he:"נק' עידן", ur:'دور پوائنٹس', hi:'एरा अंक' },
  'staking.col.status':      { en:'Status', es:'Estado', fr:'Statut', de:'Status', it:'Stato', pt:'Status', ru:'Статус', zh:'状态', ja:'ステータス', ko:'상태', ar:'الحالة', he:'סטטוס', ur:'حالت', hi:'स्थिति' },

  'status.active':       { en:'Active',       es:'Activo',      fr:'Actif',      de:'Aktiv',      it:'Attivo',      pt:'Ativo',      ru:'Активен',     zh:'活跃',    ja:'アクティブ',  ko:'활성',     ar:'نشط',       he:'פעיל',    ur:'ایکٹو',    hi:'सक्रिय' },
  'status.waiting':      { en:'Waiting',      es:'En Espera',   fr:'En attente', de:'Wartend',    it:'In attesa',   pt:'Aguardando', ru:'Ожидание',    zh:'等待中',  ja:'待機',       ko:'대기',     ar:'قيد الانتظار', he:'ממתין',  ur:'انتظار',   hi:'प्रतीक्षारत' },
  'status.oversub':      { en:'Oversub.',     es:'Sobresusc.',  fr:'Sur-abonné', de:'Überbucht',  it:'Sovrascritto',pt:'Sobrescrito',ru:'Переподписка',zh:'超额',   ja:'定員超',     ko:'초과',     ar:'مفرط الاشتراك', he:'עודף',  ur:'اوور سب',  hi:'ओवरसब' },

  /* ===== Tweaks ===== */
  'tweaks.visible':       { en:'Section', es:'Sección', fr:'Section', de:'Bereich', it:'Sezione', pt:'Seção', ru:'Раздел', zh:'区域', ja:'セクション', ko:'섹션', ar:'القسم', he:'מקטע', ur:'سیکشن', hi:'खंड' },
  'tweaks.chartType':     { en:'Chart type', es:'Tipo de gráfico', fr:'Type de graphique', de:'Diagrammtyp', it:'Tipo di grafico', pt:'Tipo de gráfico', ru:'Тип графика', zh:'图表类型', ja:'チャートタイプ', ko:'차트 유형', ar:'نوع الرسم', he:'סוג תרשים', ur:'چارٹ کی قسم', hi:'चार्ट प्रकार' },
  'tweaks.liveSpeed':     { en:'Live speed', es:'Velocidad en vivo', fr:'Vitesse live', de:'Live-Geschwindigkeit', it:'Velocità live', pt:'Velocidade ao vivo', ru:'Скорость потока', zh:'实时速度', ja:'ライブ速度', ko:'실시간 속도', ar:'السرعة المباشرة', he:'מהירות חי', ur:'براہ راست رفتار', hi:'लाइव गति' },

  /* ===== Buttons / misc ===== */
  'btn.exportCsv':   { en:'Export CSV',       es:'Exportar CSV',  fr:'Exporter CSV',  de:'CSV exportieren',  it:'Esporta CSV',  pt:'Exportar CSV',  ru:'Экспорт CSV',  zh:'导出 CSV',  ja:'CSV エクスポート',  ko:'CSV 내보내기',  ar:'تصدير CSV',  he:'ייצא CSV',  ur:'CSV برآمد',  hi:'CSV निर्यात' },
  'btn.streaming':   { en:'streaming',        es:'en directo',    fr:'en direct',     de:'live',             it:'in diretta',   pt:'em tempo real', ru:'эфир',         zh:'实时',      ja:'配信中',          ko:'스트리밍',     ar:'بث',         he:'משדר',       ur:'لائیو',      hi:'स्ट्रीमिंग' },
  'btn.fullExplorer':{ en:'Full Explorer',    es:'Explorador Completo', fr:'Explorateur complet', de:'Voller Explorer', it:'Explorer completo', pt:'Explorador completo', ru:'Полный обозреватель', zh:'完整浏览器', ja:'フルエクスプローラー', ko:'전체 탐색기', ar:'المستكشف الكامل', he:'סייר מלא', ur:'مکمل ایکسپلورر', hi:'पूर्ण एक्सप्लोरर' },
  'btn.provideLiquidity': { en:'+ Provide Liquidity', es:'+ Aportar Liquidez', fr:'+ Fournir de la liquidité', de:'+ Liquidität bereitstellen', it:'+ Fornisci liquidità', pt:'+ Fornecer liquidez', ru:'+ Добавить ликвидность', zh:'+ 提供流动性', ja:'+ 流動性を提供', ko:'+ 유동성 공급', ar:'+ توفير السيولة', he:'+ ספק נזילות', ur:'+ لکویڈٹی فراہم', hi:'+ लिक्विडिटी प्रदान करें' },
  'btn.addWallet':   { en:'+ Add wallet',     es:'+ Añadir cartera',  fr:'+ Ajouter un wallet', de:'+ Wallet hinzufügen', it:'+ Aggiungi wallet', pt:'+ Adicionar carteira', ru:'+ Добавить кошелёк', zh:'+ 添加钱包', ja:'+ ウォレット追加', ko:'+ 지갑 추가', ar:'+ إضافة محفظة', he:'+ הוסף ארנק', ur:'+ والیٹ شامل', hi:'+ वॉलेट जोड़ें' },

  /* ===== Filter chips / toggles ===== */
  'chip.all':        { en:'All',     es:'Todos',     fr:'Tous',     de:'Alle',     it:'Tutti',    pt:'Todos',   ru:'Все',     zh:'全部',  ja:'すべて',   ko:'전체',   ar:'الكل',    he:'הכול',   ur:'سب',      hi:'सभी' },
  'chip.swap':       { en:'Swap',    es:'Swap',      fr:'Swap',     de:'Swap',     it:'Swap',     pt:'Swap',    ru:'Своп',    zh:'兑换',  ja:'スワップ', ko:'스왑',   ar:'مبادلة',  he:'החלפה',  ur:'سواپ',    hi:'स्वैप' },
  'chip.transfer':   { en:'Transfer',es:'Transfer.', fr:'Transfert',de:'Transfer', it:'Trasf.',   pt:'Transf.', ru:'Перевод', zh:'转账',  ja:'送金',    ko:'전송',   ar:'تحويل',   he:'העברה',  ur:'منتقلی',  hi:'ट्रांस.' },
  'chip.block':      { en:'Block',   es:'Bloque',    fr:'Bloc',     de:'Block',    it:'Blocco',   pt:'Bloco',   ru:'Блок',    zh:'区块',  ja:'ブロック', ko:'블록',   ar:'كتلة',    he:'בלוק',   ur:'بلاک',    hi:'ब्लॉक' },
  'chip.order':      { en:'Order',   es:'Orden',     fr:'Ordre',    de:'Order',    it:'Ordine',   pt:'Ordem',   ru:'Ордер',   zh:'订单',  ja:'注文',    ko:'주문',   ar:'أمر',     he:'הזמנה',  ur:'آرڈر',    hi:'ऑर्डर' },
  'chip.burn':       { en:'Burn',    es:'Quema',     fr:'Burn',     de:'Burn',     it:'Burn',     pt:'Burn',    ru:'Сжигание',zh:'销毁',  ja:'バーン',   ko:'소각',   ar:'حرق',     he:'שריפה',  ur:'برن',     hi:'बर्न' },
  'chip.favorites':  { en:'Favorites', es:'Favoritos', fr:'Favoris', de:'Favoriten', it:'Preferiti', pt:'Favoritos', ru:'Избранное', zh:'收藏', ja:'お気に入り', ko:'즐겨찾기', ar:'المفضلة', he:'מועדפים', ur:'پسندیدہ', hi:'पसंदीदा' },
  'scope.mine':      { en:'Mine',    es:'Mis',       fr:'Miennes',  de:'Meine',    it:'Mie',      pt:'Minhas',  ru:'Мои',     zh:'我的',  ja:'自分',    ko:'내 것',  ar:'خاصتي',  he:'שלי',    ur:'میری',    hi:'मेरी' },
  'scope.watched':   { en:'Watched', es:'Vigiladas', fr:'Suivies',  de:'Beobachtet', it:'Osservate', pt:'Observadas', ru:'Отслеж.', zh:'观察', ja:'監視中',   ko:'관찰 중', ar:'مراقبة', he:'במעקב',  ur:'زیر نگرانی', hi:'निगरानी' },
  'badge.mine':      { en:'MINE',    es:'MÍA',       fr:'À MOI',    de:'MEINS',    it:'MIA',      pt:'MINHA',   ru:'МОЯ',     zh:'我的',  ja:'自分',    ko:'내 것',  ar:'خاصتي',  he:'שלי',    ur:'میری',    hi:'मेरी' },
  'badge.watched':   { en:'WATCHED', es:'VIG',       fr:'SUIVIE',   de:'BEOB.',    it:'OSS.',     pt:'OBS.',    ru:'СЛЕЖ.',   zh:'观察',  ja:'監視',    ko:'관찰',   ar:'مراقبة', he:'מעקב',   ur:'نگرانی',  hi:'निगरानी' },

  /* ===== Pulse ===== */
  'pulse.kpi.swaps24':    { en:'Swaps · 24h',     es:'Swaps · 24h',      fr:'Swaps · 24h',      de:'Swaps · 24h',      it:'Swap · 24h',      pt:'Swaps · 24h',     ru:'Свопы · 24ч',      zh:'兑换 · 24h',  ja:'スワップ・24h',  ko:'스왑 · 24h',   ar:'مبادلات · 24س',   he:'החלפות · 24h', ur:'سواپس · 24h',  hi:'स्वैप · 24h' },
  'pulse.kpi.volume':     { en:'Volume · KUSD',   es:'Volumen · KUSD',   fr:'Volume · KUSD',    de:'Volumen · KUSD',   it:'Volume · KUSD',   pt:'Volume · KUSD',   ru:'Объём · KUSD',     zh:'交易量 · KUSD', ja:'取引高・KUSD',   ko:'거래량 · KUSD',ar:'الحجم · KUSD',    he:'נפח · KUSD',  ur:'حجم · KUSD',   hi:'वॉल्यूम · KUSD' },
  'pulse.kpi.wallets':    { en:'Active Wallets',  es:'Carteras Activas', fr:'Wallets actifs',   de:'Aktive Wallets',   it:'Wallet attivi',   pt:'Carteiras ativas',ru:'Активные кошельки',zh:'活跃钱包',    ja:'アクティブウォレット', ko:'활성 지갑', ar:'المحافظ النشطة', he:'ארנקים פעילים', ur:'ایکٹو والٹس', hi:'सक्रिय वॉलेट' },
  'pulse.kpi.block':      { en:'Avg Block Time',  es:'Tiempo Medio de Bloque', fr:'Temps moy. de bloc', de:'Ø Blockzeit', it:'Tempo medio blocco', pt:'Tempo méd. de bloco', ru:'Ср. время блока', zh:'平均出块', ja:'平均ブロック時間', ko:'평균 블록 시간', ar:'متوسط وقت الكتلة', he:'זמן בלוק ממוצע', ur:'اوسط بلاک ٹائم', hi:'औसत ब्लॉक समय' },
  'pulse.trending':       { en:'Trending Tokens · 24h', es:'Tokens en Tendencia · 24h', fr:'Tokens tendance · 24h', de:'Trending-Tokens · 24h', it:'Token in trend · 24h', pt:'Tokens em alta · 24h', ru:'Трендовые токены · 24ч', zh:'热门代币 · 24h', ja:'トレンドトークン・24h', ko:'트렌딩 토큰 · 24h', ar:'التوكنز الرائجة · 24س', he:'טוקנים חמים · 24h', ur:'ٹرینڈنگ ٹوکنز · 24h', hi:'ट्रेंडिंग टोकन · 24h' },
  'pulse.health':         { en:'Network Health',  es:'Salud de la Red',  fr:'Santé du réseau',  de:'Netzwerk-Zustand', it:'Stato di rete',   pt:'Saúde da rede',   ru:'Состояние сети',   zh:'网络健康',    ja:'ネットワーク健全性', ko:'네트워크 상태', ar:'صحة الشبكة',      he:'בריאות הרשת',  ur:'نیٹ ورک صحت',  hi:'नेटवर्क स्वास्थ्य' },

  /* ===== Burn KPIs ===== */
  'burn.kpi.totalBurned': { en:'Total Burned', es:'Total Quemado', fr:'Total brûlé', de:'Gesamt verbrannt', it:'Totale bruciato', pt:'Total queimado', ru:'Всего сожжено', zh:'总销毁', ja:'総バーン', ko:'총 소각', ar:'إجمالي الحرق', he:'סה"כ נשרף', ur:'کل برن', hi:'कुल बर्न' },
  'burn.kpi.burnRate':    { en:'Burn Rate',    es:'Tasa de Quema', fr:'Taux de burn', de:'Burn-Rate',   it:'Tasso di burn',   pt:'Taxa de queima', ru:'Скорость сжигания', zh:'销毁速率', ja:'バーンレート', ko:'소각 속도', ar:'معدل الحرق', he:'קצב שריפה', ur:'برن ریٹ', hi:'बर्न दर' },
  'burn.kpi.supply':      { en:'Circulating',  es:'Circulante',   fr:'En circulation', de:'Im Umlauf',  it:'Circolante',     pt:'Em circulação', ru:'В обращении', zh:'流通量', ja:'流通量', ko:'유통량', ar:'المتداول', he:'במחזור', ur:'گردش میں', hi:'परिसंचरण' },
  'burn.kpi.priceImpact': { en:'Price · 24h',  es:'Precio · 24h', fr:'Prix · 24h',   de:'Preis · 24h', it:'Prezzo · 24h',   pt:'Preço · 24h',   ru:'Цена · 24ч', zh:'价格 · 24h', ja:'価格・24h', ko:'가격 · 24h', ar:'السعر · 24س', he:'מחיר · 24h', ur:'قیمت · 24h', hi:'मूल्य · 24h' },
  'burn.topHolders':      { en:'Top Holders',  es:'Principales Titulares', fr:'Principaux détenteurs', de:'Top-Halter', it:'Principali detentori', pt:'Principais detentores', ru:'Топ-держатели', zh:'主要持有者', ja:'トップホルダー', ko:'상위 보유자', ar:'كبار الحائزين', he:'מחזיקים מובילים', ur:'ٹاپ ہولڈرز', hi:'शीर्ष धारक' },
  'burn.burnRateCum':     { en:'Burn Rate — cumulative', es:'Tasa de quema — acumulada', fr:'Taux de burn — cumulé', de:'Burn-Rate — kumuliert', it:'Tasso di burn — cumulativo', pt:'Taxa de queima — acumulada', ru:'Скорость сжигания — нарастающая', zh:'销毁速率 — 累计', ja:'バーンレート — 累積', ko:'소각 속도 — 누적', ar:'معدل الحرق — تراكمي', he:'קצב שריפה — מצטבר', ur:'برن ریٹ — مجموعی', hi:'बर्न दर — संचयी' },

  /* ===== Swaps / Extrinsics / Transfers / Bridges / Holders table ===== */
  'col.time':        { en:'Time',    es:'Tiempo',    fr:'Temps',   de:'Zeit',     it:'Ora',     pt:'Hora',     ru:'Время',    zh:'时间',  ja:'時間',   ko:'시간',    ar:'الوقت',    he:'זמן',     ur:'وقت',      hi:'समय' },
  'col.from':        { en:'From',    es:'De',        fr:'De',      de:'Von',      it:'Da',      pt:'De',       ru:'От',       zh:'来自',  ja:'から',   ko:'발신',    ar:'من',       he:'מאת',     ur:'از',       hi:'से' },
  'col.to':          { en:'To',      es:'Para',      fr:'Vers',    de:'An',       it:'A',       pt:'Para',     ru:'Кому',     zh:'至',    ja:'宛先',   ko:'수신',    ar:'إلى',      he:'אל',      ur:'بنام',     hi:'को' },
  'col.rate':        { en:'Rate',    es:'Tasa',      fr:'Taux',    de:'Kurs',     it:'Tasso',   pt:'Taxa',     ru:'Курс',     zh:'汇率',  ja:'レート',  ko:'환율',    ar:'السعر',    he:'שער',     ur:'ریٹ',      hi:'दर' },
  'col.fee':         { en:'Fee',     es:'Comisión',  fr:'Frais',   de:'Gebühr',   it:'Commiss.',pt:'Taxa',     ru:'Комиссия', zh:'手续费',ja:'手数料',  ko:'수수료',  ar:'رسوم',     he:'עמלה',    ur:'فیس',      hi:'शुल्क' },
  'col.caller':      { en:'Caller',  es:'Llamante',  fr:'Appelant',de:'Aufrufer', it:'Chiamante',pt:'Chamador',ru:'Отправитель',zh:'调用者',ja:'呼び出し元', ko:'호출자', ar:'المتصل',   he:'קורא',    ur:'کالر',     hi:'कॉलर' },
  'col.status':      { en:'Status',  es:'Estado',    fr:'Statut',  de:'Status',   it:'Stato',   pt:'Status',   ru:'Статус',   zh:'状态',  ja:'ステータス',ko:'상태',  ar:'الحالة',   he:'סטטוס',   ur:'حالت',     hi:'स्थिति' },
  'col.asset':       { en:'Asset',   es:'Activo',    fr:'Actif',   de:'Asset',    it:'Asset',   pt:'Ativo',    ru:'Актив',    zh:'资产',  ja:'資産',    ko:'자산',    ar:'الأصل',    he:'נכס',     ur:'اثاثہ',    hi:'परिसंपत्ति' },
  'col.amount':      { en:'Amount',  es:'Cantidad',  fr:'Montant', de:'Betrag',   it:'Importo', pt:'Valor',    ru:'Сумма',    zh:'数量',  ja:'金額',    ko:'금액',    ar:'المبلغ',   he:'סכום',    ur:'رقم',      hi:'राशि' },
  'col.memo':        { en:'Memo',    es:'Nota',      fr:'Note',    de:'Notiz',    it:'Nota',    pt:'Nota',     ru:'Примеч.',  zh:'备注',  ja:'メモ',    ko:'메모',    ar:'ملاحظة',   he:'הערה',    ur:'نوٹ',      hi:'मेमो' },
  'col.direction':   { en:'Direction',es:'Dirección',fr:'Direction',de:'Richtung',it:'Direzione',pt:'Direção', ru:'Направление',zh:'方向',ja:'方向',    ko:'방향',    ar:'الاتجاه',   he:'כיוון',  ur:'سمت',      hi:'दिशा' },
  'col.chain':       { en:'Chain',   es:'Cadena',    fr:'Chaîne',  de:'Chain',    it:'Chain',   pt:'Cadeia',   ru:'Сеть',     zh:'链',    ja:'チェーン', ko:'체인',    ar:'السلسلة',  he:'שרשרת',  ur:'چین',     hi:'चेन' },
  'col.pair':        { en:'Pair',    es:'Par',       fr:'Paire',   de:'Paar',     it:'Coppia',  pt:'Par',      ru:'Пара',     zh:'交易对',ja:'ペア',    ko:'페어',    ar:'زوج',      he:'צמד',     ur:'جوڑا',    hi:'जोड़ी' },
  'col.price':       { en:'Price',   es:'Precio',    fr:'Prix',    de:'Preis',    it:'Prezzo',  pt:'Preço',    ru:'Цена',     zh:'价格',  ja:'価格',    ko:'가격',    ar:'السعر',    he:'מחיר',    ur:'قیمت',    hi:'मूल्य' },
  'col.size':        { en:'Size',    es:'Tamaño',    fr:'Taille',  de:'Größe',    it:'Dim.',    pt:'Tamanho',  ru:'Размер',   zh:'规模',  ja:'サイズ',  ko:'크기',    ar:'الحجم',    he:'גודל',    ur:'سائز',    hi:'आकार' },
  'col.total':       { en:'Total',   es:'Total',     fr:'Total',   de:'Gesamt',   it:'Totale',  pt:'Total',    ru:'Итого',    zh:'总额',  ja:'合計',    ko:'합계',    ar:'الإجمالي', he:'סה"כ',   ur:'کل',      hi:'कुल' },
  'col.rank':        { en:'Rank',    es:'Rango',     fr:'Rang',    de:'Rang',     it:'Rango',   pt:'Posição',  ru:'Ранг',     zh:'排名',  ja:'順位',    ko:'순위',    ar:'الترتيب',   he:'דירוג',  ur:'رینک',    hi:'रैंक' },
  'col.account':     { en:'Account', es:'Cuenta',    fr:'Compte',  de:'Konto',    it:'Account', pt:'Conta',    ru:'Аккаунт',  zh:'账户',  ja:'アカウント',ko:'계정',  ar:'الحساب',   he:'חשבון',   ur:'اکاؤنٹ',  hi:'खाता' },
  'col.value':       { en:'Value',   es:'Valor',     fr:'Valeur',  de:'Wert',     it:'Valore',  pt:'Valor',    ru:'Стоимость',zh:'价值',  ja:'価値',    ko:'가치',    ar:'القيمة',    he:'ערך',    ur:'ویلیو',   hi:'मूल्य' },
  'col.tokens':      { en:'Tokens',  es:'Tokens',    fr:'Tokens',  de:'Tokens',   it:'Token',   pt:'Tokens',   ru:'Токены',   zh:'代币',  ja:'トークン', ko:'토큰',    ar:'العملات',  he:'אסימונים',ur:'ٹوکنز',  hi:'टोकन' },
  'col.lastActivity':{ en:'Last Activity', es:'Última Actividad', fr:'Dern. activité', de:'Letzte Aktivität', it:'Ultima attività', pt:'Última atividade', ru:'Последняя активность', zh:'最后活动', ja:'最終活動', ko:'마지막 활동', ar:'آخر نشاط', he:'פעילות אחרונה', ur:'آخری سرگرمی', hi:'अंतिम गतिविधि' },
  'col.pool':        { en:'Pool',    es:'Pool',      fr:'Pool',    de:'Pool',     it:'Pool',    pt:'Pool',     ru:'Пул',      zh:'池',    ja:'プール',   ko:'풀',      ar:'المجمع',   he:'בריכה',   ur:'پول',     hi:'पूल' },
  'col.tvl':         { en:'TVL',     es:'TVL',       fr:'TVL',     de:'TVL',      it:'TVL',     pt:'TVL',      ru:'TVL',      zh:'TVL',   ja:'TVL',     ko:'TVL',    ar:'TVL',      he:'TVL',    ur:'TVL',     hi:'TVL' },
  'col.volume':      { en:'Volume',  es:'Volumen',   fr:'Volume',  de:'Volumen',  it:'Volume',  pt:'Volume',   ru:'Объём',    zh:'交易量',ja:'取引高',  ko:'거래량',  ar:'الحجم',    he:'נפח',     ur:'حجم',     hi:'वॉल्यूम' },
  'col.apr':         { en:'APR',     es:'APR',       fr:'APR',     de:'APR',      it:'APR',     pt:'APR',      ru:'APR',      zh:'年化',  ja:'APR',     ko:'APR',    ar:'APR',      he:'APR',    ur:'APR',     hi:'APR' },
  'col.change24':    { en:'24h',     es:'24h',       fr:'24h',     de:'24h',      it:'24h',     pt:'24h',      ru:'24ч',      zh:'24h',   ja:'24h',     ko:'24h',    ar:'24س',      he:'24h',    ur:'24h',     hi:'24h' },
  'col.marketCap':   { en:'Market Cap', es:'Cap. de Mercado', fr:'Cap. marché', de:'Marktkap.', it:'Cap. mercato', pt:'Cap. de mercado', ru:'Рын. кап.', zh:'市值',  ja:'時価総額', ko:'시가총액',ar:'القيمة السوقية', he:'שווי שוק', ur:'مارکیٹ کیپ', hi:'मार्केट कैप' },
  'col.supply':      { en:'Supply',  es:'Oferta',    fr:'Offre',   de:'Angebot',  it:'Offerta', pt:'Oferta',   ru:'Предложение',zh:'供应',ja:'供給量',  ko:'공급',   ar:'الإمداد',   he:'היצע',   ur:'سپلائی',  hi:'आपूर्ति' },
  'col.extrinsic':   { en:'Extrinsic', es:'Extrínseco', fr:'Extrinsèque', de:'Extrinsic', it:'Extrinsic', pt:'Extrínseco', ru:'Экстринсик', zh:'外部交易', ja:'エクストリンシック', ko:'익스트린식', ar:'المعاملة', he:'אקסטרינסיק', ur:'ایکسٹرنسک', hi:'एक्सट्रिंसिक' },
  'col.call':        { en:'Call',    es:'Llamada',   fr:'Appel',   de:'Aufruf',   it:'Chiamata',pt:'Chamada',  ru:'Вызов',    zh:'调用',  ja:'呼び出し', ko:'호출',    ar:'الاستدعاء',he:'קריאה',  ur:'کال',     hi:'कॉल' },
  'col.signer':      { en:'Signer',  es:'Firmante',  fr:'Signataire',de:'Signierer',it:'Firmatario',pt:'Signatário',ru:'Подписант',zh:'签名者',ja:'署名者',ko:'서명자',ar:'الموقّع', he:'חותם',   ur:'دستخط کنندہ',hi:'हस्ताक्षरक' },
  'col.result':      { en:'Result',  es:'Resultado', fr:'Résultat',de:'Ergebnis', it:'Risultato',pt:'Resultado',ru:'Результат',zh:'结果',ja:'結果',    ko:'결과',    ar:'النتيجة',  he:'תוצאה',  ur:'نتیجہ',  hi:'परिणाम' },

  /* ===== Status pills ===== */
  'status.success':  { en:'Success',  es:'Éxito',   fr:'Succès',  de:'Erfolg',  it:'Successo',pt:'Sucesso', ru:'Успех',   zh:'成功',  ja:'成功',    ko:'성공',   ar:'نجاح',     he:'הצלחה',  ur:'کامیاب',  hi:'सफल' },
  'status.failed':   { en:'Failed',   es:'Fallido', fr:'Échec',   de:'Fehlgeschl.',it:'Fallito',pt:'Falhou',  ru:'Ошибка',  zh:'失败',  ja:'失敗',    ko:'실패',   ar:'فشل',      he:'נכשל',   ur:'ناکام',   hi:'विफल' },
  'status.pending':  { en:'Pending',  es:'Pendiente',fr:'En cours',de:'Ausstehend',it:'In attesa',pt:'Pendente',ru:'Ожидание',zh:'待处理',ja:'保留中',  ko:'대기중', ar:'قيد الانتظار',he:'ממתין', ur:'زیر التوا',hi:'लंबित' },
  'status.done':     { en:'Done',     es:'Hecho',   fr:'Terminé', de:'Fertig',  it:'Fatto',   pt:'Feito',   ru:'Готово',  zh:'已完成',ja:'完了',    ko:'완료',   ar:'تم',       he:'בוצע',   ur:'مکمل',    hi:'हो गया' },
  'status.finalized':{ en:'Finalized',es:'Finalizado',fr:'Finalisé',de:'Finalisiert',it:'Finalizzato',pt:'Finalizado',ru:'Финализирован',zh:'已最终化',ja:'ファイナライズ',ko:'최종화됨',ar:'مُنهى',he:'סופי',ur:'حتمی',hi:'अंतिम' },
  'sev.low':         { en:'Low',      es:'Baja',    fr:'Faible',  de:'Niedrig', it:'Bassa',   pt:'Baixa',   ru:'Низкая',  zh:'低',    ja:'低',      ko:'낮음',   ar:'منخفض',    he:'נמוכה',  ur:'کم',      hi:'निम्न' },
  'sev.medium':      { en:'Medium',   es:'Media',   fr:'Moyenne', de:'Mittel',  it:'Media',   pt:'Média',   ru:'Средняя', zh:'中',    ja:'中',      ko:'보통',   ar:'متوسط',    he:'בינונית',ur:'درمیانہ',hi:'मध्यम' },
  'sev.high':        { en:'High',     es:'Alta',    fr:'Élevée',  de:'Hoch',    it:'Alta',    pt:'Alta',    ru:'Высокая', zh:'高',    ja:'高',      ko:'높음',   ar:'عالي',     he:'גבוהה',  ur:'بلند',    hi:'उच्च' },
  'sev.critical':    { en:'Critical', es:'Crítica', fr:'Critique',de:'Kritisch',it:'Critica', pt:'Crítica', ru:'Критич.', zh:'严重',  ja:'重大',    ko:'심각',   ar:'حرج',      he:'קריטית', ur:'نازک',    hi:'गंभीर' },

  /* ===== Pagination ===== */
  'pag.first':       { en:'« First',  es:'« Inicio', fr:'« Début', de:'« Erste', it:'« Prima', pt:'« Início',ru:'« В начало',zh:'« 首页',ja:'« 最初',  ko:'« 처음', ar:'« الأول',  he:'« ראשון',ur:'« پہلا',  hi:'« प्रथम' },
  'pag.prev':        { en:'⬅ Prev',   es:'⬅ Ant.',  fr:'⬅ Préc.', de:'⬅ Zurück',it:'⬅ Prec.',pt:'⬅ Ant.',  ru:'⬅ Назад', zh:'⬅ 上一页',ja:'⬅ 前へ',  ko:'⬅ 이전', ar:'⬅ السابق', he:'⬅ הקודם', ur:'⬅ پچھلا', hi:'⬅ पिछला' },
  'pag.next':        { en:'Next ➡',   es:'Sig. ➡',  fr:'Suiv. ➡', de:'Weiter ➡',it:'Succ. ➡',pt:'Próx. ➡', ru:'Далее ➡', zh:'下一页 ➡',ja:'次へ ➡',  ko:'다음 ➡', ar:'التالي ➡', he:'הבא ➡',  ur:'اگلا ➡',  hi:'अगला ➡' },
  'pag.last':        { en:'Last »',   es:'Último »',fr:'Fin »',   de:'Letzte »',it:'Ultima »',pt:'Último »',ru:'В конец »',zh:'末页 »',  ja:'最後 »',  ko:'마지막 »',ar:'الأخير »',he:'אחרון »', ur:'آخری »',  hi:'अंतिम »' },
  'pag.pageOf':      { en:'Page',     es:'Página',  fr:'Page',    de:'Seite',   it:'Pagina',  pt:'Página',  ru:'Стр.',    zh:'第',    ja:'ページ',  ko:'페이지', ar:'صفحة',     he:'עמוד',   ur:'صفحہ',    hi:'पृष्ठ' },
  'pag.of':          { en:'of',       es:'de',      fr:'sur',     de:'von',     it:'di',      pt:'de',      ru:'из',      zh:'/',     ja:'/',       ko:'/',      ar:'من',       he:'מתוך',   ur:'از',      hi:'का' },

  /* ===== Governance inner labels ===== */
  "common.prev":   { en:"Prev",                es:"Anterior",         fr:"Préc.",         de:"Zurück",        it:"Prec.",          pt:"Anterior",       ru:"Naz",          zh:"上一页",      ja:"前へ",            ko:"이전",          ar:"السابق",         he:"הקודם",         ur:"پچھلا",         hi:"पिछला" },
  "common.next":   { en:"Next",                es:"Siguiente",        fr:"Suiv.",         de:"Weiter",        it:"Succ.",          pt:"Próximo",        ru:"Vpered",       zh:"下一页",      ja:"次へ",            ko:"다음",          ar:"التالي",         he:"הבא",           ur:"اگلا",          hi:"अगला" },
  "common.pageOf": { en:"Page {n} of {total}", es:"Página {n} de {total}", fr:"Page {n} sur {total}", de:"Seite {n} von {total}", it:"Pagina {n} di {total}", pt:"Página {n} de {total}", ru:"Stranitsa {n} iz {total}", zh:"第 {n} 页/共 {total} 页", ja:"{total} 中 {n} ページ", ko:"{total} 중 {n} 페이지", ar:"الصفحة {n} من {total}", he:"עמוד {n} מתוך {total}", ur:"صفحہ {n} از {total}", hi:"पृष्ठ {n} / {total}" },
  "gov.tab.council":   { en:"Council",            es:"Consejo",         fr:"Conseil",         de:"Council",        it:"Consiglio",      pt:"Conselho",       ru:"Sovet",          zh:"理事会",        ja:"評議会",          ko:"의회",            ar:"مجلس",            he:"מועצה",          ur:"کونسل",          hi:"परिषद" },
  "gov.scheduler.title":          { en:"Upcoming Executions (Scheduler)", es:"Próximas ejecuciones (Scheduler)", fr:"Exécutions à venir (Scheduler)", de:"Anstehende Ausführungen (Scheduler)", it:"Prossime esecuzioni (Scheduler)", pt:"Próximas execuções (Scheduler)", ru:"Predstoyashchie ispolneniya (Scheduler)", zh:"即将执行（调度器）", ja:"次の実行（スケジューラ）", ko:"예정된 실행 (스케줄러)", ar:"التنفيذات القادمة (المجدول)", he:"הפעלות קרובות (Scheduler)", ur:"آنے والی execuciones (Scheduler)", hi:"आगामी निष्पादन (Scheduler)" },
  "gov.scheduler.scheduled":      { en:"scheduled",                       es:"programadas",                      fr:"programmées",                    de:"geplant",                                it:"programmate",                  pt:"programadas",                    ru:"zaplanirovano",                          zh:"已计划",        ja:"予定済み",         ko:"예약됨",            ar:"مُجدولة",                he:"מתוזמנות",       ur:"شیڈولڈ",          hi:"निर्धारित" },
  "gov.scheduler.alertWillFail":  { en:"there are scheduled executions that will fail because the preimage bytes are not on-chain.", es:"hay ejecuciones programadas que fallarán porque los bytes de la preimagen no están on-chain.", fr:"des exécutions programmées vont échouer car les octets de la préimage ne sont pas on-chain.", de:"es gibt geplante Ausführungen, die scheitern werden, weil die Preimage-Bytes nicht on-chain sind.", it:"ci sono esecuzioni programmate che falliranno perché i byte della preimage non sono on-chain.", pt:"há execuções programadas que falharão porque os bytes da pré-imagem não estão on-chain.", ru:"est zaplanirovannye ispolneniya, kotorye ne udadutsya, tak kak baytov preobraza net on-chain.", zh:"有预定执行将因为预映像字节不在链上而失败。", ja:"プリイメージのバイトがオンチェーンに無いため、予定の実行は失敗します。", ko:"프리이미지 바이트가 온체인에 없어 예정된 실행이 실패합니다.", ar:"هناك تنفيذات مجدولة ستفشل لأن بايتات الصورة الأولية ليست على السلسلة.", he:"יש הפעלות מתוזמנות שייכשלו כי בייטי הפרי-אימג לא בשרשרת.", ur:"شیڈولڈ execuciones ناکام ہوں گی کیونکہ preimage bytes آن چین نہیں۔", hi:"प्रीइमेज बाइट्स ऑन-चेन न होने के कारण शेड्यूल्ड निष्पादन विफल होंगे।" },
  "gov.scheduler.block":          { en:"Block",                           es:"Bloque",                           fr:"Bloc",                            de:"Block",                                  it:"Blocco",                       pt:"Bloco",                          ru:"Blok",                                   zh:"区块",          ja:"ブロック",         ko:"블록",              ar:"كتلة",                   he:"בלוק",            ur:"بلاک",            hi:"ब्लॉक" },
  "gov.scheduler.executesAt":     { en:"Executes at",                     es:"Ejecuta en",                       fr:"Exécute à",                       de:"Ausführung bei",                         it:"Esegue al",                    pt:"Executa em",                     ru:"Vypolnyaetsya v",                        zh:"执行于",        ja:"実行ブロック",     ko:"실행 시점",         ar:"ينفذ عند",               he:"מבוצע ב",         ur:"چلتا ہے",         hi:"निष्पादन" },
  "gov.scheduler.call":           { en:"Call",                            es:"Call",                             fr:"Appel",                           de:"Call",                                   it:"Call",                         pt:"Chamada",                        ru:"Vyzov",                                  zh:"调用",          ja:"コール",           ko:"호출",              ar:"استدعاء",                he:"קריאה",          ur:"کال",             hi:"कॉल" },
  "gov.scheduler.preimage":       { en:"Preimage",                        es:"Preimagen",                        fr:"Préimage",                        de:"Preimage",                               it:"Preimage",                     pt:"Pré-imagem",                     ru:"Preobraz",                               zh:"预映像",        ja:"プリイメージ",     ko:"프리이미지",        ar:"الصورة الأولية",         he:"פרי-אימג",       ur:"پری امیج",        hi:"प्रीइमेज" },
  "gov.scheduler.origin":         { en:"Origin",                          es:"Origen",                           fr:"Origine",                         de:"Ursprung",                               it:"Origine",                      pt:"Origem",                         ru:"Istochnik",                              zh:"来源",          ja:"オリジン",         ko:"출처",              ar:"المصدر",                 he:"מקור",            ur:"اوریجن",          hi:"मूल" },
  "gov.scheduler.loading":        { en:"Loading agenda…",                 es:"Cargando agenda...",               fr:"Chargement de l\\u0027agenda…",   de:"Agenda wird geladen…",                   it:"Caricamento agenda…",          pt:"Carregando agenda…",             ru:"Zagruzka agendy…",                       zh:"加载议程…",     ja:"アジェンダを読み込み中…", ko:"안건 로딩…", ar:"جارٍ تحميل جدول الأعمال…", he:"טוען סדר יום…", ur:"ایجنڈا لوڈ ہو رہا ہے…", hi:"एजेंडा लोड हो रहा है…" },
  "gov.scheduler.empty":          { en:"No executions scheduled.",        es:"No hay ejecuciones programadas.",  fr:"Aucune exécution programmée.",    de:"Keine geplanten Ausführungen.",          it:"Nessuna esecuzione programmata.", pt:"Nenhuma execução agendada.",  ru:"Net zaplanirovannykh ispolneniy.",       zh:"无预定执行。",  ja:"予定はありません。", ko:"예약된 실행 없음.", ar:"لا توجد تنفيذات مجدولة.", he:"אין הפעלות מתוזמנות.", ur:"کوئی شیڈولڈ execuciones نہیں۔", hi:"कोई निष्पादन निर्धारित नहीं।" },
  "gov.scheduler.tipFooter":      { en:"Current tip: {tip} · {n} executions scheduled", es:"Tip actual: {tip} · {n} ejecuciones programadas", fr:"Tip actuel : {tip} · {n} exécutions programmées", de:"Aktueller Tip: {tip} · {n} geplante Ausführungen", it:"Tip attuale: {tip} · {n} esecuzioni programmate", pt:"Tip atual: {tip} · {n} execuções programadas", ru:"Tekushchiy tip: {tip} · {n} ispolneniy zaplanirovano", zh:"当前 tip: {tip} · {n} 项执行计划", ja:"現在の tip: {tip} · {n} 件予定", ko:"현재 tip: {tip} · {n} 건 예약됨", ar:"الـ tip الحالي: {tip} · {n} تنفيذات مجدولة", he:"Tip נוכחי: {tip} · {n} הפעלות מתוזמנות", ur:"موجودہ tip: {tip} · {n} execuciones شیڈولڈ", hi:"वर्तमान tip: {tip} · {n} निष्पादन निर्धारित" },
  "gov.preimages.title":             { en:"Preimages",                es:"Preimágenes",                  fr:"Préimages",                    de:"Preimages",                  it:"Preimage",                       pt:"Pré-imagens",                ru:"Preobrazy",                  zh:"预映像",          ja:"プリイメージ",          ko:"프리이미지",            ar:"الصور الأولية",         he:"פרי-אימג",          ur:"پری امیج",           hi:"प्रीइमेज" },
  "gov.preimages.filterPlaceholder": { en:"Filter by hash or depositor…", es:"Filtrar por hash o depositante...", fr:"Filtrer par hash ou déposant…", de:"Nach Hash oder Einzahler filtern…", it:"Filtra per hash o depositante…", pt:"Filtrar por hash ou depositante…", ru:"Filtr po heshu ili vnositelyu…", zh:"按哈希或存款人筛选…", ja:"ハッシュまたは預金者で絞り込み…", ko:"해시 또는 예치자로 필터…", ar:"تصفية حسب الهاش أو المودع…", he:"סנן לפי האש או מפקיד…", ur:"ہیش یا جمع کنندہ کے ذریعے فلٹر…", hi:"हैश या जमाकर्ता से फ़िल्टर…" },
  "gov.preimages.size":              { en:"Size",                     es:"Tamaño",                       fr:"Taille",                       de:"Größe",                      it:"Dimensione",                     pt:"Tamanho",                    ru:"Razmer",                     zh:"大小",            ja:"サイズ",                ko:"크기",                  ar:"الحجم",                  he:"גודל",              ur:"سائز",                hi:"आकार" },
  "gov.preimages.deposit":           { en:"Deposit",                  es:"Depósito",                     fr:"Dépôt",                        de:"Einzahlung",                 it:"Deposito",                       pt:"Depósito",                   ru:"Depozit",                    zh:"存款",            ja:"デポジット",            ko:"예치금",                ar:"إيداع",                  he:"פיקדון",            ur:"ڈپازٹ",               hi:"जमा" },
  "gov.preimages.published":         { en:"Published",                es:"Publicada",                    fr:"Publié",                       de:"Veröffentlicht",             it:"Pubblicata",                     pt:"Publicada",                  ru:"Opublikovano",               zh:"已发布",          ja:"公開済み",              ko:"게시됨",                ar:"نُشر",                   he:"פורסם",             ur:"شائع شدہ",            hi:"प्रकाशित" },
  "gov.preimages.loading":           { en:"Loading preimages…",       es:"Cargando preimágenes...",      fr:"Chargement des préimages…",    de:"Preimages werden geladen…",  it:"Caricamento preimage…",          pt:"Carregando pré-imagens…",    ru:"Zagruzka preobrazov…",       zh:"加载预映像…",     ja:"プリイメージを読み込み中…", ko:"프리이미지 로드 중…",   ar:"جارٍ تحميل الصور الأولية…", he:"טוען פרי-אימג…",  ur:"پری امیج لوڈ ہو رہے ہیں…", hi:"प्रीइमेज लोड हो रहे हैं…" },
  "gov.preimages.empty":             { en:"No preimages to show.",    es:"Sin preimágenes que mostrar.", fr:"Aucune préimage à afficher.",  de:"Keine Preimages zum Anzeigen.", it:"Nessuna preimage da mostrare.", pt:"Sem pré-imagens para mostrar.", ru:"Net preobrazov dlya pokaza.", zh:"无预映像可显示。", ja:"表示するプリイメージはありません。", ko:"표시할 프리이미지가 없습니다.", ar:"لا توجد صور أولية للعرض.", he:"אין פרי-אימג להציג.", ur:"کوئی پری امیج دکھانے کو نہیں۔", hi:"दिखाने के लिए कोई प्रीइमेज नहीं।" },
  "gov.preimages.history":           { en:"History",                  es:"Historial",                    fr:"Historique",                   de:"Verlauf",                    it:"Cronologia",                     pt:"Histórico",                  ru:"Istoriya",                   zh:"历史",            ja:"履歴",                  ko:"기록",                  ar:"السجل",                  he:"היסטוריה",          ur:"تاریخ",               hi:"इतिहास" },
  "gov.tab.elections": { en:"Elections",          es:"Elecciones",      fr:"Élections",       de:"Wahlen",         it:"Elezioni",       pt:"Eleições",       ru:"Vybory",         zh:"选举",          ja:"選挙",            ko:"선거",            ar:"انتخابات",       he:"בחירות",        ur:"انتخابات",       hi:"चुनाव" },
  "gov.tab.motions":   { en:"Motions",            es:"Mociones",        fr:"Motions",         de:"Anträge",        it:"Mozioni",        pt:"Moções",         ru:"Predlozheniya",  zh:"动议",          ja:"動議",            ko:"동의",            ar:"اقتراحات",       he:"הצעות",         ur:"تحریکیں",         hi:"प्रस्ताव" },
  "gov.tab.democracy": { en:"Democracy",          es:"Democracia",      fr:"Démocratie",      de:"Democracy",      it:"Democrazia",     pt:"Democracia",     ru:"Demokratiya",    zh:"民主",          ja:"民主制",          ko:"민주주의",        ar:"ديمقراطية",      he:"דמוקרטיה",      ur:"جمہوریت",        hi:"लोकतंत्र" },
  "gov.tab.technical": { en:"Technical Committee",es:"Comité Técnico",  fr:"Comité Technique",de:"Technical Committee", it:"Comitato Tecnico", pt:"Comitê Técnico", ru:"Tekhnicheskiy komitet", zh:"技术委员会", ja:"技術委員会",     ko:"기술 위원회",     ar:"اللجنة الفنية", he:"ועדה טכנית",    ur:"تکنیکی کمیٹی",   hi:"तकनीकी समिति" },
  'gov.col.member':     { en:'Member',    es:'Miembro',    fr:'Membre',     de:'Mitglied',   it:'Membro',    pt:'Membro',    ru:'Член',       zh:'成员',  ja:'メンバー',  ko:'구성원',  ar:'عضو',      he:'חבר',    ur:'رکن',     hi:'सदस्य' },
  'gov.col.candidate':  { en:'Candidate', es:'Candidato',  fr:'Candidat',   de:'Kandidat',   it:'Candidato', pt:'Candidato', ru:'Кандидат',   zh:'候选人', ja:'候補者',    ko:'후보',    ar:'مرشح',     he:'מועמד',  ur:'امیدوار',  hi:'उम्मीदवार' },
  'gov.col.motion':     { en:'Motion',    es:'Moción',     fr:'Motion',     de:'Antrag',     it:'Mozione',   pt:'Moção',     ru:'Предложение',zh:'动议',  ja:'動議',      ko:'동의',    ar:'اقتراح',   he:'הצעה',   ur:'تحریک',   hi:'प्रस्ताव' },
  'gov.col.proposal':   { en:'Proposal',  es:'Propuesta',  fr:'Proposition',de:'Vorschlag',  it:'Proposta',  pt:'Proposta',  ru:'Предложение',zh:'提案',  ja:'提案',      ko:'제안',    ar:'مقترح',    he:'הצעה',   ur:'تجویز',   hi:'प्रस्ताव' },
  'gov.col.votes':      { en:'Votes',     es:'Votos',      fr:'Votes',      de:'Stimmen',    it:'Voti',      pt:'Votos',     ru:'Голоса',     zh:'投票',  ja:'投票',      ko:'투표',    ar:'الأصوات',  he:'הצבעות', ur:'ووٹ',     hi:'वोट' },
  'gov.col.aye':        { en:'AYE',       es:'SÍ',         fr:'POUR',       de:'JA',         it:'SÌ',        pt:'SIM',       ru:'ЗА',         zh:'赞成',  ja:'賛成',      ko:'찬성',    ar:'نعم',      he:'בעד',    ur:'ہاں',     hi:'हाँ' },
  'gov.col.nay':        { en:'NAY',       es:'NO',         fr:'CONTRE',     de:'NEIN',       it:'NO',        pt:'NÃO',       ru:'ПРОТИВ',     zh:'反对',  ja:'反対',      ko:'반대',    ar:'لا',       he:'נגד',    ur:'نہیں',    hi:'नहीं' },
  'gov.col.deadline':   { en:'Deadline',  es:'Plazo',      fr:'Échéance',   de:'Frist',      it:'Scadenza',  pt:'Prazo',     ru:'Срок',       zh:'截止',  ja:'期限',      ko:'마감',    ar:'الموعد',   he:'יעד',    ur:'آخری تاریخ',hi:'समय सीमा' },
  'gov.col.proposer':   { en:'Proposer',  es:'Proponente', fr:'Proposant',  de:'Antragst.',  it:'Proponente',pt:'Proponente',ru:'Автор',      zh:'提议者',ja:'提案者',    ko:'제안자',  ar:'المقترح',  he:'מציע',   ur:'تجویز کنندہ',hi:'प्रस्तावक' },
  'gov.col.threshold':  { en:'Threshold', es:'Umbral',     fr:'Seuil',      de:'Schwelle',   it:'Soglia',    pt:'Limiar',    ru:'Порог',      zh:'阈值',  ja:'しきい値',  ko:'임계값',  ar:'العتبة',   he:'סף',     ur:'حد',      hi:'सीमा' },

  /* ===== Balance ===== */
  'balance.netWorth':   { en:'Net Worth',    es:'Patrimonio Neto', fr:'Valeur nette', de:'Nettowert',   it:'Patrimonio netto',pt:'Patrimônio líq.',ru:'Чистая стоимость',zh:'净值',ja:'純資産',  ko:'순자산',  ar:'صافي الثروة',he:'שווי נטו',  ur:'خالص مالیت',hi:'कुल संपत्ति' },
  'balance.allocation': { en:'Allocation',   es:'Asignación',     fr:'Allocation',   de:'Allokation',  it:'Allocazione',    pt:'Alocação',        ru:'Распределение',   zh:'资产分配',ja:'配分',    ko:'자산 배분',ar:'التخصيص',  he:'הקצאה',   ur:'تقسیم',   hi:'आवंटन' },
  'balance.change24':   { en:'24h Change',   es:'Cambio 24h',     fr:'Variation 24h',de:'24h-Änderung',it:'Variazione 24h', pt:'Variação 24h',    ru:'Изменение 24ч',   zh:'24h 变动',ja:'24h 変動', ko:'24h 변동',ar:'تغير 24س', he:'שינוי 24h', ur:'24h تبدیلی',hi:'24h बदलाव' },
  'balance.addToast':   { en:'Wallet address input coming soon', es:'Entrada de dirección de cartera próximamente', fr:'Entrée d\'adresse bientôt', de:'Wallet-Adresse bald verfügbar', it:'Input indirizzo in arrivo', pt:'Entrada de endereço em breve', ru:'Ввод адреса скоро', zh:'钱包地址输入即将推出', ja:'ウォレットアドレス入力は近日公開', ko:'지갑 주소 입력 곧 제공', ar:'إدخال عنوان المحفظة قريباً', he:'קלט כתובת ארנק בקרוב', ur:'والٹ ایڈریس جلد', hi:'वॉलेट पता जल्द' },

  /* ===== Intelligence ===== */
  'intel.kpi.insights': { en:'Insights · 24h', es:'Perspectivas · 24h', fr:'Analyses · 24h', de:'Einblicke · 24h', it:'Insight · 24h', pt:'Insights · 24h', ru:'Аналитика · 24ч', zh:'洞察 · 24h', ja:'洞察・24h', ko:'인사이트 · 24h', ar:'رؤى · 24س', he:'תובנות · 24h', ur:'بصیرتیں · 24h', hi:'अंतर्दृष्टि · 24h' },
  'intel.kpi.alerts':   { en:'Active Alerts',  es:'Alertas Activas',   fr:'Alertes actives',de:'Aktive Warnungen',it:'Avvisi attivi', pt:'Alertas ativos', ru:'Активные алерты', zh:'活跃警报', ja:'アクティブアラート', ko:'활성 알림', ar:'تنبيهات نشطة', he:'התרעות פעילות', ur:'ایکٹو الرٹس', hi:'सक्रिय अलर्ट' },
  'intel.kpi.watchlist':{ en:'Watchlist Hits', es:'Lista de Vigilancia',fr:'Watchlist',     de:'Watchlist-Treffer',it:'Hit watchlist', pt:'Watchlist',      ru:'Срабатывания',    zh:'关注命中', ja:'ウォッチリスト', ko:'워치리스트', ar:'قائمة المراقبة', he:'רשימת מעקב', ur:'واچ لسٹ', hi:'वॉचलिस्ट' },
  'intel.kpi.anomalies':{ en:'Open Anomalies', es:'Anomalías Abiertas',fr:'Anomalies ouv.',de:'Offene Anomalien',it:'Anomalie aperte',pt:'Anomalias abertas',ru:'Открытые аномалии',zh:'未解决异常',ja:'未解決異常',ko:'미해결 이상',ar:'حالات شاذة',he:'חריגות פתוחות',ur:'کھلی بے ضابطگیاں',hi:'खुली विसंगतियाँ' },

  /* ===== Intelligence · Network fees widget (Fees · live) ===== */
  'intel.fees.title':       { en:'Network fees · live',          es:'Tarifas de red · en vivo',       fr:'Frais réseau · en direct',       de:'Netzwerkgebühren · live',      it:'Commissioni rete · live',      pt:'Taxas de rede · ao vivo',       ru:'Комиссии сети · в реальном времени', zh:'网络费用 · 实时',   ja:'ネットワーク手数料 · ライブ', ko:'네트워크 수수료 · 실시간', ar:'رسوم الشبكة · مباشر', he:'עמלות רשת · בזמן אמת', ur:'نیٹ ورک فیس · لائیو', hi:'नेटवर्क शुल्क · लाइव' },
  'intel.fees.block':       { en:'block',                        es:'bloque',                          fr:'bloc',                           de:'Block',                        it:'blocco',                       pt:'bloco',                         ru:'блок',                              zh:'区块',             ja:'ブロック',                    ko:'블록',                    ar:'الكتلة',              he:'בלוק',                  ur:'بلاک',                    hi:'ब्लॉक' },
  'intel.fees.classTransfer':{en:'Transfer',                     es:'Transferencia',                   fr:'Transfert',                      de:'Überweisung',                  it:'Trasferimento',                pt:'Transferência',                 ru:'Перевод',                           zh:'转账',             ja:'転送',                        ko:'전송',                    ar:'تحويل',               he:'העברה',                 ur:'ٹرانسفر',                 hi:'ट्रांसफर' },
  'intel.fees.classSwap':   { en:'Swap',                         es:'Swap',                            fr:'Échange',                        de:'Tausch',                       it:'Swap',                         pt:'Swap',                          ru:'Обмен',                             zh:'兑换',             ja:'スワップ',                    ko:'스왑',                    ar:'مبادلة',              he:'החלפה',                 ur:'سویپ',                    hi:'स्वैप' },
  'intel.fees.classBridge': { en:'Bridge',                       es:'Bridge',                          fr:'Bridge',                         de:'Bridge',                       it:'Bridge',                       pt:'Bridge',                        ru:'Мост',                              zh:'跨链',             ja:'ブリッジ',                    ko:'브리지',                  ar:'جسر',                 he:'גשר',                   ur:'برج',                     hi:'ब्रिज' },
  'intel.fees.multGov':     { en:'Governance multiplier',        es:'Multiplicador gobernanza',       fr:'Multiplicateur gouvernance',     de:'Governance-Multiplikator',     it:'Moltiplicatore governance',    pt:'Multiplicador governança',      ru:'Множитель управления',              zh:'治理乘数',         ja:'ガバナンス乗数',              ko:'거버넌스 승수',           ar:'مضاعف الحوكمة',       he:'מכפיל ממשל',            ur:'گورننس ملٹی پلائر',       hi:'शासन गुणक' },
  'intel.fees.multGovSub':  { en:'xorFee.Multiplier · via referendum', es:'xorFee.Multiplier · vía referéndum', fr:'xorFee.Multiplier · par référendum', de:'xorFee.Multiplier · per Referendum', it:'xorFee.Multiplier · via referendum', pt:'xorFee.Multiplier · via referendo', ru:'xorFee.Multiplier · через референдум', zh:'xorFee.Multiplier · 通过公投', ja:'xorFee.Multiplier · 国民投票経由', ko:'xorFee.Multiplier · 국민투표 경유', ar:'xorFee.Multiplier · عبر الاستفتاء', he:'xorFee.Multiplier · באמצעות משאל', ur:'xorFee.Multiplier · ریفرنڈم کے ذریعے', hi:'xorFee.Multiplier · जनमत संग्रह के माध्यम से' },
  'intel.fees.multCong':    { en:'Congestion multiplier',        es:'Multiplicador congestión',       fr:'Multiplicateur congestion',      de:'Stau-Multiplikator',           it:'Moltiplicatore congestione',   pt:'Multiplicador congestão',       ru:'Множитель загрузки',                zh:'拥堵乘数',         ja:'混雑乗数',                    ko:'혼잡 승수',               ar:'مضاعف الازدحام',      he:'מכפיל גודש',            ur:'کنجیشن ملٹی پلائر',       hi:'भीड़ गुणक' },
  'intel.fees.multCongSub': { en:'auto-adjusts each block',      es:'ajuste dinámico cada bloque',    fr:'s\'ajuste à chaque bloc',        de:'pro Block angepasst',          it:'si adatta ad ogni blocco',     pt:'ajusta-se a cada bloco',        ru:'подстраивается каждый блок',        zh:'每区块自动调整',   ja:'ブロック毎に自動調整',        ko:'블록마다 자동 조정',      ar:'يتكيف مع كل كتلة',    he:'מתעדכן בכל בלוק',       ur:'ہر بلاک میں خود کار',     hi:'हर ब्लॉक में स्वत: समायोजन' },
  'intel.fees.accumVal':    { en:'Queued → VAL buy-burn',        es:'Acum. → buy-burn VAL',           fr:'File → buy-burn VAL',            de:'Warteschl. → VAL buy-burn',    it:'In coda → buy-burn VAL',       pt:'Fila → buy-burn VAL',           ru:'Очередь → buy-burn VAL',            zh:'待处理 → VAL 回购销毁', ja:'キュー → VAL 買い焼却',       ko:'대기 → VAL 매입소각',     ar:'قيد الانتظار → حرق VAL',he:'בתור → רכישה ושריפה VAL',ur:'قطار → VAL buy-burn',     hi:'कतार → VAL buy-burn' },
  'intel.fees.accumPswap':  { en:'Queued → KUSD buy-burn',       es:'Acum. → buy-burn KUSD',          fr:'File → buy-burn KUSD',           de:'Warteschl. → KUSD buy-burn',   it:'In coda → buy-burn KUSD',      pt:'Fila → buy-burn KUSD',          ru:'Очередь → buy-burn KUSD',           zh:'待处理 → KUSD 回购销毁', ja:'キュー → KUSD 買い焼却',      ko:'대기 → KUSD 매입소각',    ar:'قيد الانتظار → حرق KUSD', he:'בתור → רכישה ושריפה KUSD', ur:'قطار → KUSD buy-burn',  hi:'कतार → KUSD buy-burn' },
  'intel.fees.remintEvery': { en:'Remint every',                 es:'Remint cada',                    fr:'Remint tous les',                de:'Remint alle',                  it:'Remint ogni',                  pt:'Remint a cada',                 ru:'Ремят каждые',                      zh:'重铸每',           ja:'リミント毎',                  ko:'리민트 주기',             ar:'إعادة سك كل',         he:'Remint כל',             ur:'Remint ہر',               hi:'Remint प्रत्येक' },
  'intel.fees.blocks':      { en:'blocks',                       es:'bloques',                        fr:'blocs',                          de:'Blöcke',                       it:'blocchi',                      pt:'blocos',                        ru:'блоков',                            zh:'区块',             ja:'ブロック',                    ko:'블록',                    ar:'كتل',                 he:'בלוקים',                ur:'بلاکس',                   hi:'ब्लॉक' },
  'intel.fees.accumEmpty':  { en:'Zero means the last remint just flushed (or no fees accumulated this cycle). On a low-traffic window the buckets sit at 0 most of the time and refill in the next ~10 min.',
                              es:'El cero indica que el último remint se acaba de ejecutar (o que no hubo fees este ciclo). En una red con poca actividad los contadores permanecen en 0 la mayor parte del tiempo y se vuelven a llenar en los próximos ~10 min.',
                              fr:'Zéro signifie que le dernier remint vient de se produire (ou aucune fee ce cycle). Sur un réseau peu actif les compteurs restent à 0 la plupart du temps et se remplissent dans les ~10 prochaines minutes.',
                              de:'Null bedeutet, dass der letzte Remint gerade durchgelaufen ist (oder keine Gebühren in diesem Zyklus). Bei geringem Verkehr bleiben die Zähler meistens bei 0 und füllen sich in den nächsten ~10 Min. wieder.',
                              it:'Zero significa che l\'ultimo remint è appena stato eseguito (o nessuna fee in questo ciclo). In una rete poco attiva i contatori restano a 0 la maggior parte del tempo e si riempiono nei prossimi ~10 min.',
                              pt:'Zero significa que o último remint acabou de ser executado (ou não houve taxas neste ciclo). Em uma rede pouco ativa os contadores ficam em 0 a maior parte do tempo e enchem nos próximos ~10 min.',
                              ru:'Ноль означает, что последний ремят только что прошёл (или в этом цикле не было комиссий). В спокойные периоды счётчики большую часть времени на 0 и заполняются в следующие ~10 минут.',
                              zh:'零表示刚刚完成了上一次重铸（或本周期没有费用）。在低流量窗口中，计数器大部分时间保持为 0，并在接下来的约 10 分钟内重新填充。',
                              ja:'ゼロは直前のリミントが実行されたばかり（またはこのサイクルで手数料がなかった）ことを意味します。低トラフィック時はほとんどの時間 0 で、次の約 10 分で再び蓄積されます。',
                              ko:'0은 마지막 리민트가 방금 실행되었음을 의미합니다(또는 이번 주기에 수수료가 없었음). 트래픽이 적을 때는 대부분 0이고 다음 ~10분 동안 다시 채워집니다.',
                              ar:'يعني الصفر أن آخر إعادة سك قد تمّت للتو (أو لم تتراكم رسوم في هذه الدورة). في أوقات الحركة المنخفضة تبقى العدادات على 0 معظم الوقت وتُعاد تعبئتها في الـ ~10 دقائق التالية.',
                              he:'אפס פירושו שה-remint האחרון זה עתה בוצע (או שלא נצברו עמלות במחזור הזה). ברשת שקטה המונים יישארו על 0 רוב הזמן ויתמלאו מחדש ב-10 הדקות הבאות.',
                              ur:'صفر کا مطلب ہے کہ آخری ریمینٹ ابھی مکمل ہوا ہے (یا اس دور میں کوئی فیس جمع نہیں ہوئی)۔ کم ٹریفک کے دوران کاؤنٹرز زیادہ تر وقت 0 پر رہتے ہیں اور اگلے ~10 منٹ میں دوبارہ بھر جاتے ہیں۔',
                              hi:'शून्य का अर्थ है कि पिछला रीमिंट अभी-अभी चला (या इस चक्र में कोई शुल्क जमा नहीं हुआ)। कम ट्रैफ़िक की स्थिति में काउंटर अधिकतर समय 0 पर रहते हैं और अगले ~10 मिनट में फिर से भर जाते हैं।' },
  'intel.fees.weekly':      { en:'Fee volume · 7d vs prev',      es:'Volumen fees · 7d vs ant.',      fr:'Volume frais · 7j vs préc.',     de:'Gebührenvolumen · 7T vs. vor.', it:'Volume fee · 7g vs prec.',    pt:'Volume taxas · 7d vs ant.',     ru:'Объём комиссий · 7д vs пред.',     zh:'费用量 · 7天 vs 上周', ja:'手数料 · 7日 vs 前週',       ko:'수수료 · 7일 vs 이전',    ar:'حجم الرسوم · 7 أيام مقابل',he:'נפח עמלות · 7י מול קודם',ur:'فیس حجم · 7 دن vs پچھلا', hi:'शुल्क · 7दि vs पिछले' },
  'intel.fees.nextRemint':  { en:'Next buy-burn',               es:'Próximo buy-burn',                fr:'Prochain buy-burn',              de:'Nächster Buy-Burn',             it:'Prossimo buy-burn',            pt:'Próximo buy-burn',              ru:'Следующий buy-burn',               zh:'下次回购销毁',      ja:'次のバイバック焼却',          ko:'다음 매입소각',           ar:'إعادة الشراء والحرق التالية', he:'רכישה ושריפה הבאה', ur:'اگلا buy-burn',           hi:'अगला buy-burn' },
  'intel.fees.burnSplit':   { en:'Burn split · per 100 XOR fee paid', es:'Reparto de burn · por 100 XOR de fee', fr:'Répartition burn · par 100 XOR de frais', de:'Burn-Aufteilung · pro 100 XOR Gebühr', it:'Suddivisione burn · per 100 XOR di fee', pt:'Distribuição burn · por 100 XOR de taxa', ru:'Распределение burn · на 100 XOR комиссии', zh:'销毁分配 · 每100 XOR 手续费', ja:'バーン配分 · 100 XOR 手数料あたり', ko:'소각 분배 · 수수료 100 XOR 당', ar:'توزيع الحرق · لكل 100 XOR رسوم', he:'חלוקת שריפה · לכל 100 XOR עמלה', ur:'برن تقسیم · ہر 100 XOR فیس', hi:'बर्न वितरण · प्रति 100 XOR शुल्क' },
  'intel.fees.burnDirect':  { en:'directly burned',             es:'quemado directamente',            fr:'brûlé directement',              de:'direkt verbrannt',              it:'bruciato direttamente',        pt:'queimado diretamente',          ru:'сжигается напрямую',                zh:'直接销毁',          ja:'直接焼却',                    ko:'직접 소각',               ar:'يحرق مباشرة',         he:'נשרף ישירות',          ur:'براہ راست جلایا',         hi:'सीधे जलाया गया' },
  'intel.fees.notBurned':   { en:'not burned · paid to referrer', es:'no se quema · pago al referente', fr:'non brûlé · payé au parrain',    de:'nicht verbrannt · an Werber',   it:'non bruciato · al referrer',   pt:'não queimado · ao referenciador', ru:'не сжигается · реферер',         zh:'不销毁 · 支付给推荐人', ja:'焼却なし · リファラーへ',     ko:'소각 안됨 · 추천인에게',   ar:'لا يحرق · للمحيل',      he:'לא נשרף · למפנה',       ur:'نہیں جلایا · ریفرل کو',  hi:'नहीं जलाया · रेफरर को' },
  'intel.fees.shareCol':    { en:'Share',                       es:'Cuota',                           fr:'Part',                           de:'Anteil',                        it:'Quota',                        pt:'Quota',                         ru:'Доля',                              zh:'占比',              ja:'割合',                        ko:'비중',                    ar:'الحصة',               he:'חלק',                  ur:'حصہ',                     hi:'हिस्सा' },
  'intel.fees.xorCol':      { en:'XOR cycle',                   es:'XOR ciclo',                       fr:'XOR cycle',                      de:'XOR Zyklus',                    it:'XOR ciclo',                    pt:'XOR ciclo',                     ru:'XOR цикл',                          zh:'XOR周期',           ja:'XORサイクル',                ko:'XOR 주기',                ar:'دورة XOR',           he:'מחזור XOR',            ur:'XOR سائیکل',              hi:'XOR चक्र' },
  'intel.fees.alreadyBurned':{ en:'already burned',              es:'ya quemado',                      fr:'déjà brûlé',                     de:'bereits verbrannt',             it:'già bruciato',                 pt:'já queimado',                   ru:'уже сожжено',                       zh:'已销毁',            ja:'焼却済み',                   ko:'이미 소각됨',             ar:'تم الحرق',           he:'כבר נשרף',             ur:'پہلے جلا دیا',            hi:'पहले से जला' },
  'intel.fees.queued':      { en:'queued',                      es:'en cola',                         fr:'en file',                        de:'in Warteschl.',                 it:'in coda',                      pt:'na fila',                       ru:'в очереди',                         zh:'排队中',            ja:'キュー中',                   ko:'대기 중',                 ar:'في الطابور',         he:'בתור',                  ur:'قطار میں',                hi:'कतार में' },
  'intel.fees.cycleTotal':  { en:'Cycle total (extrapolated from VAL bucket)', es:'Total ciclo (extrapolado del bucket VAL)', fr:'Total cycle (extrapolé du bucket VAL)', de:'Zyklus-Total (extrap. aus VAL-Bucket)', it:'Totale ciclo (estrapolato dal bucket VAL)', pt:'Total ciclo (extrapolado do bucket VAL)', ru:'Итог цикла (экстрап. из VAL-бакета)', zh:'周期总计（从VAL桶推算）', ja:'サイクル合計（VALバケットから推定）', ko:'주기 합계 (VAL 버킷에서 추정)', ar:'إجمالي الدورة (مُستقرأ من دلو VAL)', he:'סה"כ מחזור (משוער מדלי VAL)', ur:'سائیکل کا کل (VAL بکیٹ سے اخذ)', hi:'चक्र कुल (VAL बकेट से अनुमान)' },
  'intel.fees.burnFromFees':{ en:'Burn from network fees',         es:'Quema por fees de red',           fr:'Burn par frais réseau',          de:'Burn aus Netzgebühren',         it:'Burn da fee di rete',          pt:'Burn das taxas de rede',        ru:'Сжигание из сетевых комиссий',     zh:'网络手续费销毁',     ja:'ネットワーク手数料の焼却',    ko:'네트워크 수수료 소각',    ar:'حرق من رسوم الشبكة',  he:'שריפה מעמלות רשת',     ur:'نیٹ ورک فیس سے برن',      hi:'नेटवर्क शुल्क से बर्न' },
  'intel.fees.tfLive':      { en:'Live',                          es:'En vivo',                         fr:'En direct',                      de:'Live',                          it:'In diretta',                   pt:'Ao vivo',                       ru:'В реальном времени',                zh:'实时',              ja:'ライブ',                      ko:'실시간',                  ar:'مباشر',               he:'חי',                    ur:'لائیو',                   hi:'लाइव' },
  'intel.fees.tfAll':       { en:'All',                           es:'Todo',                            fr:'Tout',                           de:'Alle',                          it:'Tutto',                        pt:'Tudo',                          ru:'Все',                              zh:'全部',              ja:'全期間',                     ko:'전체',                    ar:'الكل',                he:'הכל',                  ur:'سب',                      hi:'सभी' },
  'intel.fees.burnedCol':   { en:'Burned',                        es:'Quemado',                         fr:'Brûlé',                          de:'Verbrannt',                     it:'Bruciato',                     pt:'Queimado',                      ru:'Сожжено',                          zh:'已销毁',           ja:'焼却済み',                   ko:'소각됨',                  ar:'محروق',               he:'נשרף',                 ur:'جلایا',                  hi:'जलाया' },
  'intel.fees.sourceLive':  { en:'Cycle in flight · estimated from on-chain accumulators', es:'Ciclo en curso · estimado desde acumuladores on-chain', fr:'Cycle en cours · estimé depuis les accumulateurs on-chain', de:'Zyklus läuft · geschätzt aus On-Chain-Akkumulatoren', it:'Ciclo in corso · stimato dagli accumulatori on-chain', pt:'Ciclo em curso · estimado dos acumuladores on-chain', ru:'Цикл в процессе · оценка по on-chain аккумуляторам', zh:'周期进行中 · 根据链上累加器估算', ja:'サイクル進行中 · オンチェーン累積から推定', ko:'주기 진행 중 · 온체인 누적값에서 추정', ar:'الدورة جارية · مُقدّر من المراكم على السلسلة', he:'מחזור בתהליך · משוער ממצברים בשרשרת', ur:'سائیکل جاری · آن چین جمع کنندہ سے تخمینہ', hi:'चक्र चालू · ऑन-चेन संचयक से अनुमान' },
  'intel.fees.totalPaid':   { en:'total fees paid',               es:'fees totales pagadas',            fr:'total frais payés',              de:'Gesamtgebühren gezahlt',        it:'fee totali pagate',            pt:'total de taxas pagas',          ru:'всего комиссий уплачено',          zh:'总支付手续费',     ja:'合計支払手数料',             ko:'총 수수료',               ar:'إجمالي الرسوم المدفوعة',he:'סה"כ עמלות שולמו',     ur:'کل ادا کردہ فیس',         hi:'कुल भुगतान शुल्क' },
  'intel.fees.noFees':      { en:'no fees recorded',              es:'sin fees registradas',            fr:'aucun frais enregistré',         de:'keine Gebühren erfasst',        it:'nessuna fee registrata',       pt:'sem taxas registradas',         ru:'нет зарегистрированных комиссий',  zh:'未记录手续费',     ja:'手数料記録なし',             ko:'기록된 수수료 없음',      ar:'لا توجد رسوم مسجلة',  he:'לא נרשמו עמלות',       ur:'کوئی فیس درج نہیں',      hi:'कोई शुल्क दर्ज नहीं' },
  'intel.fees.noData':      { en:'No data for this timeframe.',   es:'Sin datos para este periodo.',    fr:'Aucune donnée pour cette période.', de:'Keine Daten für diesen Zeitraum.', it:'Nessun dato per questo periodo.', pt:'Sem dados para este período.', ru:'Нет данных за этот период.',     zh:'此时段无数据。',    ja:'この期間のデータはありません。', ko:'이 기간에 대한 데이터가 없습니다.', ar:'لا توجد بيانات لهذه الفترة.', he:'אין נתונים לתקופה זו.', ur:'اس مدت کا کوئی ڈیٹا نہیں۔', hi:'इस अवधि का कोई डेटा नहीं।' },
  'intel.fees.withRef':     { en:'with referrer',                 es:'con referente',                   fr:'avec parrain',                   de:'mit Werber',                    it:'con referrer',                 pt:'com referenciador',             ru:'с реферером',                      zh:'有推荐人',         ja:'リファラーあり',             ko:'추천인 있음',            ar:'مع محيل',             he:'עם מפנה',              ur:'ریفرر کے ساتھ',          hi:'रेफरर के साथ' },
  'intel.fees.burnedTotal': { en:'burned',                        es:'quemado',                         fr:'brûlé',                          de:'verbrannt',                     it:'bruciato',                     pt:'queimado',                      ru:'сожжено',                          zh:'已销毁',           ja:'焼却',                       ko:'소각',                    ar:'محروق',               he:'נשרף',                 ur:'جلایا',                  hi:'जलाया' },
  "intel.fees.refLiveBucket": { en:"reserved 11.76% (split unknown until remint)", es:"reservado 11.76% (division desconocida hasta el remint)", fr:"reserve 11,76% (repartition inconnue jusqu'au remint)", de:"reserviert 11,76% (Aufteilung bis zum Remint unbekannt)", it:"riservato 11,76% (suddivisione ignota fino al remint)", pt:"reservado 11.76% (divisao desconhecida ate o remint)", ru:"zarezervirovano 11.76% (razdelenie neizvestno do remint)", zh:"保留 11.76%（直到 remint 才知道分配）", ja:"予約 11.76%（remintまで内訳不明）", ko:"예약 11.76% (remint까지 분할 미상)", ar:"محجوز 11.76% (التوزيع غير معروف حتى remint)", he:"שמור 11.76% (חלוקה לא ידועה עד remint)", ur:"محفوظ 11.76% (remint تک تقسیم نامعلوم)", hi:"आरक्षित 11.76% (remint तक विभाजन अज्ञात)" },
  "intel.fees.refSplit":      { en:"paid to referrers · redirected to KUSD when no-referrer", es:"pagado a referentes · redirigido a KUSD si no hay referente", fr:"paye aux parrains · redirige vers KUSD sans parrain", de:"an Werber gezahlt · zu KUSD umgeleitet wenn kein Werber", it:"pagato ai referrer · reindirizzato a KUSD senza referrer", pt:"pago aos referenciadores · redirecionado para KUSD sem referenciador", ru:"vyplacheno referalam · perenapravleno v KUSD bez referala", zh:"支付给推荐人 · 无推荐人时转入KUSD", ja:"リファラーへ支払 · リファラー無しでKUSDへ", ko:"추천인 지급 · 없으면 KUSD로 전환", ar:"دفع للمحيلين · يحول إلى KUSD بدون محيل", he:"שולם למפנים · הופנה ל-KUSD ללא מפנה", ur:"ریفررز کو ادا · ریفرر نہ ہونے پر KUSD", hi:"रेफरर को भुगतान · नहीं तो KUSD में" },
  "intel.fees.refPaid":       { en:"paid to referrer",          es:"pagado al referente",        fr:"paye au parrain",            de:"an Werber gezahlt",        it:"pagato al referrer",       pt:"pago ao referenciador",     ru:"vyplacheno referalu",        zh:"支付给推荐人",   ja:"リファラーへ支払",         ko:"추천인에게 지급",      ar:"دفع للمحيل",          he:"שולם למפנה",           ur:"ریفرر کو ادا",         hi:"रेफरर को भुगतान" },
  "intel.fees.refRedirected": { en:"redirected to KUSD bucket", es:"redirigido al bucket KUSD", fr:"redirige vers KUSD",         de:"zu KUSD umgeleitet",       it:"reindirizzato a KUSD",     pt:"redirecionado para KUSD",   ru:"perenapravleno v KUSD",      zh:"转入KUSD池",     ja:"KUSDバケットへ",           ko:"KUSD 버킷으로",        ar:"حول إلى KUSD",        he:"הופנה ל-KUSD",          ur:"KUSD میں منتقل",        hi:"KUSD में भेजा" },
  "intel.fees.willBurn":      { en:"will be burned",            es:"se quemara",                 fr:"sera brule",                 de:"wird verbrannt",           it:"sara bruciato",            pt:"sera queimado",             ru:"budet sozhzheno",            zh:"将被销毁",       ja:"焼却される",                ko:"소각될 예정",          ar:"سيحرق",                he:"יישרף",                ur:"جلایا جائے گا",          hi:"जलाया जाएगा" },
  'intel.fees.noReferrerNote': { en:'If there is no referrer, the 11.76% is redirected to the KUSD bucket → KUSD burn becomes 40.58%.',
                              es:'Si no hay referrer, el 11,76% se redirige al bucket de KUSD → KUSD pasa a quemarse al 40,58%.',
                              fr:'En l\'absence de parrain, les 11,76% sont redirigés vers le bucket KUSD → le burn de KUSD passe à 40,58%.',
                              de:'Wenn kein Werber vorhanden ist, werden die 11,76% in den KUSD-Bucket umgeleitet → KUSD-Burn steigt auf 40,58%.',
                              it:'Se non c\'è referrer, l\'11,76% viene reindirizzato al bucket KUSD → il burn di KUSD diventa 40,58%.',
                              pt:'Se não houver referenciador, os 11,76% são redirecionados para o bucket KUSD → KUSD passa a queimar 40,58%.',
                              ru:'Если реферера нет, 11,76% перенаправляются в KUSD-бакет → сжигание KUSD становится 40,58%.',
                              zh:'如果没有推荐人，11.76%会重定向到KUSD桶 → KUSD销毁变为40.58%。',
                              ja:'リファラーがいない場合、11.76%は KUSD バケットへリダイレクト → KUSD の焼却が 40.58% に。',
                              ko:'추천인이 없으면 11.76%가 KUSD 버킷으로 리디렉션 → KUSD 소각이 40.58%가 됩니다.',
                              ar:'في حال عدم وجود محيل، يُعاد توجيه 11.76% إلى دلو KUSD → يصبح حرق KUSD 40.58%.',
                              he:'אם אין מפנה, ה-11.76% מועברים לדלי KUSD → שריפת KUSD הופכת ל-40.58%.',
                              ur:'اگر کوئی ریفرر نہیں ہے تو 11.76% KUSD بکیٹ پر بھیجا جاتا ہے → KUSD برن 40.58% ہو جاتا ہے۔',
                              hi:'यदि कोई रेफरर नहीं है, तो 11.76% KUSD बकेट में पुनर्निर्देशित होता है → KUSD बर्न 40.58% हो जाता है।' },

  /* ===== Intelligence · Bridge large-tx widget ===== */
  'intel.bridges.title':    { en:'Bridge moves · ≥$3K',          es:'Movimientos bridge · ≥$3K',      fr:'Mouvements bridge · ≥3K$',       de:'Bridge-Bewegungen · ≥3K$',     it:'Movimenti bridge · ≥3K$',      pt:'Movimentos bridge · ≥$3K',      ru:'Переводы моста · ≥$3K',            zh:'跨链转账 · ≥$3K',   ja:'ブリッジ移動 · ≥$3K',         ko:'브리지 이동 · ≥$3K',      ar:'تحويلات الجسر · ≥$3K',he:'תנועות גשר · ≥$3K',      ur:'برج موومنٹس · ≥$3K',      hi:'ब्रिज मूव्स · ≥$3K' },
  'intel.bridges.tf24h':    { en:'24h',                          es:'24h',                            fr:'24h',                            de:'24h',                          it:'24h',                          pt:'24h',                           ru:'24ч',                               zh:'24小时',           ja:'24時間',                      ko:'24시간',                  ar:'24س',                 he:'24ש',                   ur:'24گ',                     hi:'24घं' },
  'intel.bridges.tf7d':     { en:'7d',                           es:'7d',                             fr:'7j',                             de:'7T',                           it:'7g',                           pt:'7d',                            ru:'7д',                                zh:'7天',              ja:'7日',                         ko:'7일',                     ar:'7أ',                  he:'7י',                    ur:'7د',                      hi:'7दि' },
  'intel.bridges.tf30d':    { en:'30d',                          es:'30d',                            fr:'30j',                            de:'30T',                          it:'30g',                          pt:'30d',                           ru:'30д',                               zh:'30天',             ja:'30日',                        ko:'30일',                    ar:'30أ',                 he:'30י',                   ur:'30د',                     hi:'30दि' },
  'intel.bridges.tf1y':     { en:'1y',                           es:'1a',                             fr:'1a',                             de:'1J',                           it:'1a',                           pt:'1a',                            ru:'1г',                                zh:'1年',              ja:'1年',                         ko:'1년',                     ar:'1س',                  he:'1ש',                    ur:'1سال',                    hi:'1सा' },
  'intel.bridges.none':     { en:'No bridge moves ≥ $3K in the selected window.',
                              es:'Sin movimientos bridge ≥ $3K en la ventana seleccionada.',
                              fr:'Aucun mouvement bridge ≥ 3K$ dans la fenêtre sélectionnée.',
                              de:'Keine Bridge-Bewegungen ≥ 3K$ im ausgewählten Fenster.',
                              it:'Nessun movimento bridge ≥ 3K$ nella finestra selezionata.',
                              pt:'Sem movimentos bridge ≥ $3K na janela selecionada.',
                              ru:'Нет переводов моста ≥ $3K в выбранном окне.',
                              zh:'所选时间范围内无 ≥ $3K 的跨链转账。',
                              ja:'選択した期間に $3K 以上のブリッジ移動はありません。',
                              ko:'선택한 기간 동안 $3K 이상의 브리지 이동이 없습니다.',
                              ar:'لا توجد تحويلات جسر ≥ $3K في النطاق المحدد.',
                              he:'אין תנועות גשר ≥ 3K$ בחלון שנבחר.',
                              ur:'منتخب ونڈو میں $3K سے زیادہ کی کوئی برج موومنٹ نہیں۔',
                              hi:'चयनित अवधि में $3K से अधिक कोई ब्रिज मूव नहीं है।' },
  'intel.bridges.more':     { en:'+',         es:'+',        fr:'+',        de:'+',        it:'+',        pt:'+',        ru:'+',        zh:'+',       ja:'+',       ko:'+',       ar:'+',         he:'+',        ur:'+',       hi:'+' },
  'intel.bridges.moreSfx':  { en:'more',      es:'más',      fr:'de plus',  de:'weitere',  it:'altro',    pt:'mais',     ru:'ещё',      zh:'更多',    ja:'件以上',  ko:'개 더',   ar:'أكثر',      he:'נוספים',   ur:'مزید',    hi:'और' },
  'intel.bridges.openDrill':{ en:'Click to open details', es:'Click para ver detalles', fr:'Cliquer pour voir les détails', de:'Für Details klicken', it:'Clic per i dettagli', pt:'Clique para ver detalhes', ru:'Нажмите для деталей', zh:'点击查看详情', ja:'クリックして詳細', ko:'클릭하여 상세', ar:'انقر لعرض التفاصيل', he:'לחץ לפרטים', ur:'تفصیل دیکھنے کے لیے کلک کریں', hi:'विवरण के लिए क्लिक करें' },

  /* ===== Intelligence · Bridge net-flow bar widget ===== */
  'intel.bflow.title':  { en:'Bridge net flow',  es:'Flujo neto bridge',   fr:'Flux net bridge',     de:'Bridge-Nettofluss',   it:'Flusso netto bridge',   pt:'Fluxo líquido bridge',  ru:'Чистый поток моста',   zh:'跨链净流量',    ja:'ブリッジ純流量',     ko:'브리지 순흐름',      ar:'صافي تدفق الجسر',  he:'זרימה נטו של גשר',   ur:'برج نیٹ فلو',      hi:'ब्रिज शुद्ध प्रवाह' },
  'intel.bflow.tfAll':  { en:'All',              es:'Todo',                fr:'Tout',                de:'Alle',                it:'Tutto',                 pt:'Tudo',                  ru:'Все',                  zh:'全部',          ja:'全期間',             ko:'전체',               ar:'الكل',             he:'הכל',                ur:'سب',               hi:'सभी' },
  'intel.bflow.noFlow': { en:'No bridge flow in this window.',
                          es:'Sin flujo bridge en esta ventana.',
                          fr:'Aucun flux bridge dans cette fenêtre.',
                          de:'Kein Bridge-Fluss in diesem Fenster.',
                          it:'Nessun flusso bridge in questa finestra.',
                          pt:'Sem fluxo bridge nesta janela.',
                          ru:'Нет потока моста в этом окне.',
                          zh:'此时间窗口内无跨链流量。',
                          ja:'この期間にブリッジの流れはありません。',
                          ko:'이 기간에 브리지 흐름이 없습니다.',
                          ar:'لا يوجد تدفق جسر في هذه النافذة.',
                          he:'אין זרימת גשר בחלון זה.',
                          ur:'اس وقفے میں کوئی برج فلو نہیں۔',
                          hi:'इस अवधि में कोई ब्रिज प्रवाह नहीं।' },
  'intel.bflow.out':    { en:'Out',              es:'Salida',              fr:'Sortie',              de:'Raus',                it:'Uscita',                pt:'Saída',                 ru:'Выход',                zh:'流出',          ja:'流出',               ko:'유출',               ar:'خروج',             he:'יציאה',              ur:'اخراج',            hi:'बाहर' },
  'intel.bflow.in':     { en:'In',               es:'Entrada',             fr:'Entrée',              de:'Rein',                it:'Entrata',               pt:'Entrada',               ru:'Вход',                 zh:'流入',          ja:'流入',               ko:'유입',               ar:'دخول',             he:'כניסה',              ur:'داخل',             hi:'अंदर' },
  'intel.bflow.net':    { en:'Net',              es:'Neto',                fr:'Net',                 de:'Netto',               it:'Netto',                 pt:'Líquido',               ru:'Нетто',                zh:'净',            ja:'ネット',             ko:'순',                 ar:'صافي',             he:'נטו',                ur:'خالص',             hi:'शुद्ध' },
  'intel.bflow.topIn':  { en:'Top inflow',       es:'Mayor entrada',       fr:'Plus grande entrée',  de:'Größter Zufluss',     it:'Max entrata',           pt:'Maior entrada',         ru:'Наибольший приток',    zh:'最大流入',      ja:'最大流入',           ko:'최대 유입',          ar:'أكبر تدفق داخل',   he:'כניסה מובילה',       ur:'سب سے بڑا ان فلو', hi:'शीर्ष प्रवाह' },
  'intel.bflow.topOut': { en:'Top outflow',      es:'Mayor salida',        fr:'Plus grande sortie',  de:'Größter Abfluss',     it:'Max uscita',            pt:'Maior saída',           ru:'Наибольший отток',     zh:'最大流出',      ja:'最大流出',           ko:'최대 유출',          ar:'أكبر تدفق خارج',   he:'יציאה מובילה',       ur:'سب سے بڑا آؤٹ فلو',hi:'शीर्ष बहिर्वाह' },
  'intel.bflow.txs':    { en:'bridge tx',        es:'tx bridge',           fr:'tx bridge',           de:'Bridge-Tx',           it:'tx bridge',             pt:'tx bridge',             ru:'транз. моста',         zh:'跨链交易',      ja:'ブリッジtx',         ko:'브리지 tx',          ar:'معاملة جسر',       he:'עסקות גשר',          ur:'برج tx',           hi:'ब्रिज tx' },

  /* ===== Prediction Markets (polkamarkt) ===== */
  'predict.title':          { en:'Prediction Markets',         es:'Mercados de Predicción',      fr:'Marchés de Prédiction',       de:'Vorhersagemärkte',       it:'Mercati di Predizione',     pt:'Mercados de Previsão',       ru:'Рынки прогнозов',               zh:'预测市场',          ja:'予測市場',             ko:'예측 시장',           ar:'أسواق التنبؤ',         he:'שוקי תחזיות',      ur:'پیش گوئی مارکیٹس',    hi:'पूर्वानुमान बाजार' },
  'predict.sub':            { en:'Polkamarkt markets on SORA', es:'Mercados Polkamarkt en SORA', fr:'Marchés Polkamarkt sur SORA', de:'Polkamarkt-Märkte auf SORA', it:'Mercati Polkamarkt su SORA',pt:'Mercados Polkamarkt na SORA',ru:'Рынки Polkamarkt в SORA',       zh:'SORA 上的 Polkamarkt',ja:'SORAのPolkamarkt',     ko:'SORA의 Polkamarkt',   ar:'أسواق Polkamarkt على SORA', he:'שוקי Polkamarkt ב-SORA', ur:'SORA پر Polkamarkt مارکیٹس', hi:'SORA पर Polkamarkt बाज़ार' },
  'predict.kpi.total':      { en:'Markets',           es:'Mercados',              fr:'Marchés',             de:'Märkte',                it:'Mercati',              pt:'Mercados',               ru:'Рынки',               zh:'市场',           ja:'市場',               ko:'시장',                ar:'الأسواق',             he:'שווקים',             ur:'مارکیٹس',           hi:'बाज़ार' },
  'predict.kpi.active':     { en:'Active',            es:'Activos',               fr:'Actifs',              de:'Aktiv',                 it:'Attivi',               pt:'Ativos',                 ru:'Активные',            zh:'活跃',           ja:'アクティブ',         ko:'활성',                ar:'نشط',                 he:'פעילים',             ur:'ایکٹو',             hi:'सक्रिय' },
  'predict.kpi.volume':     { en:'Trading vol.',      es:'Volumen',               fr:'Volume',              de:'Handelsvol.',           it:'Volume',               pt:'Volume',                 ru:'Объём торгов',        zh:'交易量',         ja:'取引量',             ko:'거래량',              ar:'حجم التداول',        he:'נפח מסחר',           ur:'ٹریڈنگ حجم',        hi:'ट्रेडिंग वॉल्यूम' },
  'predict.kpi.opengov':    { en:'OpenGov-linked',    es:'Ligados a OpenGov',     fr:'Liés à OpenGov',      de:'OpenGov-verknüpft',     it:'Legati a OpenGov',     pt:'Ligados ao OpenGov',     ru:'Связан с OpenGov',    zh:'OpenGov 关联',   ja:'OpenGov連携',        ko:'OpenGov 연결',        ar:'مرتبطة بـ OpenGov',   he:'מקושרים ל-OpenGov',  ur:'OpenGov سے منسلک', hi:'OpenGov से जुड़े' },
  'predict.tab.markets':    { en:'All Markets',       es:'Todos los Mercados',    fr:'Tous les Marchés',    de:'Alle Märkte',           it:'Tutti i Mercati',      pt:'Todos os Mercados',      ru:'Все рынки',           zh:'所有市场',       ja:'全市場',             ko:'전체 시장',           ar:'جميع الأسواق',       he:'כל השווקים',         ur:'تمام مارکیٹس',      hi:'सभी बाज़ार' },
  'predict.tab.opengov':    { en:'OpenGov-linked',    es:'Ligados a OpenGov',     fr:'Liés à OpenGov',      de:'OpenGov-verknüpft',     it:'Legati a OpenGov',     pt:'Ligados ao OpenGov',     ru:'Связан с OpenGov',    zh:'OpenGov 关联',   ja:'OpenGov連携',        ko:'OpenGov 연결',        ar:'مرتبطة بـ OpenGov',   he:'מקושרים ל-OpenGov',  ur:'OpenGov سے منسلک', hi:'OpenGov से जुड़े' },
  'predict.col.question':   { en:'Question',          es:'Pregunta',              fr:'Question',            de:'Frage',                 it:'Domanda',              pt:'Pergunta',               ru:'Вопрос',              zh:'问题',           ja:'質問',               ko:'질문',                ar:'سؤال',                he:'שאלה',               ur:'سوال',              hi:'प्रश्न' },
  'predict.col.prob':       { en:'Prob · YES',        es:'Prob · SÍ',             fr:'Prob · OUI',          de:'Wahr · JA',             it:'Prob · SÌ',            pt:'Prob · SIM',             ru:'Вероятность · ДА',    zh:'概率 · 是',     ja:'確率 · はい',         ko:'확률 · 예',           ar:'احتمالية · نعم',      he:'סיכוי · כן',         ur:'احتمال · ہاں',      hi:'संभावना · हाँ' },
  'predict.col.volume':     { en:'Volume',            es:'Volumen',               fr:'Volume',              de:'Volumen',               it:'Volume',               pt:'Volume',                 ru:'Объём',               zh:'成交量',         ja:'出来高',             ko:'거래량',              ar:'الحجم',               he:'נפח',                ur:'حجم',               hi:'वॉल्यूम' },
  'predict.col.status':     { en:'Status',            es:'Estado',                fr:'Statut',              de:'Status',                it:'Stato',                pt:'Estado',                 ru:'Статус',              zh:'状态',           ja:'状態',               ko:'상태',                ar:'الحالة',              he:'סטטוס',              ur:'حالت',              hi:'स्थिति' },
  'predict.col.close':      { en:'Close',             es:'Cierre',                fr:'Clôture',             de:'Ende',                  it:'Chiusura',             pt:'Fechar',                 ru:'Закрытие',            zh:'收盘',           ja:'クローズ',           ko:'종료',                ar:'الإغلاق',             he:'סגירה',              ur:'بند',               hi:'बंद' },
  'predict.col.creator':    { en:'Creator',           es:'Creador',               fr:'Créateur',            de:'Ersteller',             it:'Creatore',             pt:'Criador',                ru:'Создатель',           zh:'创建者',         ja:'作成者',             ko:'생성자',              ar:'المنشئ',              he:'יוצר',               ur:'تخلیق کار',         hi:'निर्माता' },
  'predict.col.market':     { en:'Market',            es:'Mercado',               fr:'Marché',              de:'Markt',                 it:'Mercato',              pt:'Mercado',                ru:'Рынок',               zh:'市场',           ja:'市場',               ko:'시장',                ar:'السوق',               he:'שוק',                ur:'مارکیٹ',            hi:'बाज़ार' },
  'predict.col.yes':        { en:'YES shares',        es:'Participaciones SÍ',    fr:'Parts OUI',           de:'JA-Anteile',            it:'Quote SÌ',             pt:'Cotas SIM',              ru:'Доли ДА',             zh:'是 股份',        ja:'はい株式',           ko:'예 주식',             ar:'أسهم نعم',            he:'מניות כן',           ur:'ہاں شیئرز',         hi:'हाँ शेयर' },
  'predict.col.no':         { en:'NO shares',         es:'Participaciones NO',    fr:'Parts NON',           de:'NEIN-Anteile',          it:'Quote NO',             pt:'Cotas NÃO',              ru:'Доли НЕТ',            zh:'否 股份',        ja:'いいえ株式',         ko:'아니오 주식',         ar:'أسهم لا',             he:'מניות לא',           ur:'نہیں شیئرز',        hi:'नहीं शेयर' },
  'predict.col.netPaid':    { en:'Net paid',          es:'Neto pagado',           fr:'Net payé',            de:'Netto bezahlt',         it:'Netto pagato',         pt:'Líquido pago',           ru:'Нетто оплачено',      zh:'净支付',         ja:'純支払',             ko:'순 지불',             ar:'صافي المدفوع',        he:'שולם נטו',           ur:'خالص ادا شدہ',     hi:'शुद्ध भुगतान' },
  'predict.noMarkets':      { en:'No markets have been created yet.', es:'Aún no se han creado mercados.', fr:'Aucun marché créé pour le moment.', de:'Noch keine Märkte erstellt.', it:'Nessun mercato creato ancora.', pt:'Nenhum mercado criado ainda.', ru:'Рынки ещё не созданы.', zh:'尚未创建任何市场。', ja:'まだ市場が作成されていません。', ko:'아직 생성된 시장이 없습니다.', ar:'لم يتم إنشاء أسواق بعد.', he:'עדיין לא נוצרו שווקים.', ur:'ابھی تک کوئی مارکیٹ نہیں بنائی گئی۔', hi:'अभी तक कोई बाज़ार नहीं बनाया गया है।' },
  'predict.noOpengov':      { en:'No referendum-linked markets yet.', es:'Aún no hay mercados ligados a referéndum.', fr:'Aucun marché lié à un référendum pour le moment.', de:'Noch keine referendumsgebundenen Märkte.', it:'Nessun mercato legato a referendum ancora.', pt:'Ainda não há mercados ligados a referendos.', ru:'Пока нет рынков, связанных с референдумом.', zh:'尚无关联公投的市场。', ja:'国民投票に関連する市場はまだありません。', ko:'국민투표 연계 시장이 아직 없습니다.', ar:'لا توجد أسواق مرتبطة بالاستفتاء حتى الآن.', he:'אין עדיין שווקים המקושרים למשאל.', ur:'ریفرنڈم سے منسلک کوئی مارکیٹ ابھی نہیں۔', hi:'अभी तक जनमत-संग्रह से जुड़े कोई बाज़ार नहीं हैं।' },
  'predict.positions.title':{ en:'Prediction Market Positions', es:'Posiciones en Mercados de Predicción', fr:'Positions de Marchés de Prédiction', de:'Positionen in Vorhersagemärkten', it:'Posizioni in Mercati di Predizione', pt:'Posições em Mercados de Previsão', ru:'Позиции в рынках прогнозов', zh:'预测市场持仓', ja:'予測市場ポジション', ko:'예측 시장 포지션', ar:'المراكز في أسواق التنبؤ', he:'פוזיציות בשוקי תחזיות', ur:'پیش گوئی مارکیٹ پوزیشنز', hi:'पूर्वानुमान बाजार स्थितियां' },

  /* ===== Tools section ===== */
  'tools.title':          { en:'Tools',                       es:'Herramientas',                      fr:'Outils',                            de:'Werkzeuge',                         it:'Strumenti',                         pt:'Ferramentas',                       ru:'Инструменты',                       zh:'工具',              ja:'ツール',                     ko:'도구',                       ar:'الأدوات',                    he:'כלים',                        ur:'اوزار',                     hi:'उपकरण' },
  'tools.predict.title':  { en:'Block ↔ Time Predictor',      es:'Convertidor Bloque ↔ Tiempo',       fr:'Convertisseur Bloc ↔ Temps',        de:'Block ↔ Zeit Konverter',            it:'Convertitore Blocco ↔ Tempo',       pt:'Conversor Bloco ↔ Tempo',           ru:'Конвертер Блок ↔ Время',            zh:'区块 ↔ 时间 转换器', ja:'ブロック ↔ 時間 変換',      ko:'블록 ↔ 시간 변환기',         ar:'محول الكتلة ↔ الوقت',       he:'ממיר בלוק ↔ זמן',             ur:'بلاک ↔ وقت کنورٹر',         hi:'ब्लॉक ↔ समय परिवर्तक' },
  'tools.currentBlock':   { en:'Current block',               es:'Bloque actual',                     fr:'Bloc actuel',                       de:'Aktueller Block',                   it:'Blocco attuale',                    pt:'Bloco atual',                       ru:'Текущий блок',                      zh:'当前区块',          ja:'現在のブロック',              ko:'현재 블록',                 ar:'الكتلة الحالية',             he:'בלוק נוכחי',                  ur:'موجودہ بلاک',              hi:'वर्तमान ब्लॉक' },
  'tools.blockTime':      { en:'Block time',                  es:'Tiempo de bloque',                  fr:'Temps de bloc',                     de:'Blockzeit',                         it:'Tempo di blocco',                   pt:'Tempo de bloco',                    ru:'Время блока',                       zh:'出块时间',          ja:'ブロック時間',                ko:'블록 시간',                 ar:'زمن الكتلة',                he:'זמן בלוק',                    ur:'بلاک ٹائم',                hi:'ब्लॉक समय' },
  'tools.now':            { en:'Now',                         es:'Ahora',                             fr:'Maintenant',                        de:'Jetzt',                             it:'Ora',                               pt:'Agora',                             ru:'Сейчас',                            zh:'现在',              ja:'今',                          ko:'지금',                       ar:'الآن',                       he:'עכשיו',                       ur:'ابھی',                      hi:'अभी' },
  'tools.mode.b2t':       { en:'Block → Date',                es:'Bloque → Fecha',                    fr:'Bloc → Date',                       de:'Block → Datum',                     it:'Blocco → Data',                     pt:'Bloco → Data',                      ru:'Блок → Дата',                       zh:'区块 → 日期',       ja:'ブロック → 日付',            ko:'블록 → 날짜',               ar:'الكتلة → التاريخ',           he:'בלוק → תאריך',                ur:'بلاک → تاریخ',             hi:'ब्लॉक → दिनांक' },
  'tools.mode.t2b':       { en:'Date → Block',                es:'Fecha → Bloque',                    fr:'Date → Bloc',                       de:'Datum → Block',                     it:'Data → Blocco',                     pt:'Data → Bloco',                      ru:'Дата → Блок',                       zh:'日期 → 区块',       ja:'日付 → ブロック',            ko:'날짜 → 블록',               ar:'التاريخ → الكتلة',           he:'תאריך → בלוק',                ur:'تاریخ → بلاک',             hi:'दिनांक → ब्लॉक' },
  'tools.inputBlock':     { en:'Target block number',         es:'Número de bloque objetivo',         fr:'Numéro de bloc cible',              de:'Ziel-Blocknummer',                  it:'Numero di blocco obiettivo',        pt:'Número de bloco alvo',              ru:'Номер целевого блока',              zh:'目标区块号',        ja:'目標ブロック番号',            ko:'목표 블록 번호',             ar:'رقم الكتلة المستهدفة',       he:'מספר בלוק יעד',              ur:'ہدف بلاک نمبر',            hi:'लक्ष्य ब्लॉक संख्या' },
  'tools.inputTime':      { en:'Target date/time',            es:'Fecha/hora objetivo',               fr:'Date/heure cible',                  de:'Ziel-Datum/Uhrzeit',                it:'Data/ora obiettivo',                pt:'Data/hora alvo',                    ru:'Целевая дата/время',                zh:'目标日期/时间',    ja:'目標日時',                    ko:'목표 날짜/시간',             ar:'التاريخ/الوقت المستهدف',    he:'תאריך/שעה יעד',              ur:'ہدف تاریخ/وقت',             hi:'लक्ष्य दिनांक/समय' },
  'tools.result':         { en:'Result',                      es:'Resultado',                         fr:'Résultat',                          de:'Ergebnis',                          it:'Risultato',                         pt:'Resultado',                         ru:'Результат',                         zh:'结果',              ja:'結果',                        ko:'결과',                       ar:'النتيجة',                    he:'תוצאה',                       ur:'نتیجہ',                     hi:'परिणाम' },
  'tools.blocks':         { en:'blocks',                      es:'bloques',                           fr:'blocs',                             de:'Blöcke',                            it:'blocchi',                           pt:'blocos',                            ru:'блоков',                            zh:'区块',              ja:'ブロック',                    ko:'블록',                       ar:'كتل',                        he:'בלוקים',                      ur:'بلاکس',                     hi:'ब्लॉक' },
  'tools.forward':        { en:'ahead',                       es:'hacia adelante',                    fr:'en avant',                          de:'voraus',                            it:'avanti',                            pt:'à frente',                          ru:'вперёд',                            zh:'之后',              ja:'先',                          ko:'후',                         ar:'للأمام',                     he:'קדימה',                       ur:'آگے',                       hi:'आगे' },
  'tools.back':           { en:'ago',                         es:'hacia atrás',                       fr:'en arrière',                        de:'zurück',                            it:'indietro',                          pt:'atrás',                             ru:'назад',                             zh:'之前',              ja:'前',                          ko:'전',                         ar:'مضى',                        he:'אחורה',                       ur:'پیچھے',                     hi:'पीछे' },
  'tools.in':             { en:'in',                          es:'en',                                fr:'dans',                              de:'in',                                it:'tra',                               pt:'em',                                ru:'через',                             zh:'在',                ja:'後',                          ko:'후',                         ar:'بعد',                        he:'בעוד',                        ur:'میں',                       hi:'में' },
  'tools.ago':            { en:'ago',                         es:'hace',                              fr:'il y a',                            de:'vor',                               it:'fa',                                pt:'atrás',                             ru:'назад',                             zh:'前',                ja:'前',                          ko:'전',                         ar:'قبل',                        he:'לפני',                        ur:'پہلے',                      hi:'पहले' },
  'tools.unit.d':         { en:'d', es:'d', fr:'j', de:'T', it:'g', pt:'d', ru:'д', zh:'天', ja:'日', ko:'일', ar:'ي', he:'י', ur:'د', hi:'दि' },
  'tools.unit.h':         { en:'h', es:'h', fr:'h', de:'h', it:'h', pt:'h', ru:'ч', zh:'时', ja:'時', ko:'시', ar:'س', he:'ש', ur:'گ', hi:'घं' },
  'tools.unit.m':         { en:'m', es:'m', fr:'m', de:'m', it:'m', pt:'m', ru:'м', zh:'分', ja:'分', ko:'분', ar:'د', he:'ד', ur:'م', hi:'मि' },
  'tools.unit.s':         { en:'s', es:'s', fr:'s', de:'s', it:'s', pt:'s', ru:'с', zh:'秒', ja:'秒', ko:'초', ar:'ث', he:'ש', ur:'س', hi:'से' },
  'tools.invalidBlock':   { en:'Enter a valid block number.', es:'Introduce un número de bloque válido.', fr:'Entrez un numéro de bloc valide.', de:'Gültige Blocknummer eingeben.', it:'Inserisci un numero di blocco valido.', pt:'Insira um número de bloco válido.', ru:'Введите действительный номер блока.', zh:'请输入有效的区块号。', ja:'有効なブロック番号を入力してください。', ko:'유효한 블록 번호를 입력하세요.', ar:'أدخل رقم كتلة صالح.', he:'הזן מספר בלוק תקין.', ur:'درست بلاک نمبر درج کریں۔', hi:'एक वैध ब्लॉक संख्या दर्ज करें।' },
  'tools.invalidTime':    { en:'Enter a valid date/time.',    es:'Introduce una fecha/hora válida.',  fr:'Entrez une date/heure valide.',     de:'Gültiges Datum/Uhrzeit eingeben.',  it:'Inserisci una data/ora valida.',    pt:'Insira uma data/hora válida.',      ru:'Введите действительную дату/время.', zh:'请输入有效的日期/时间。',  ja:'有効な日時を入力してください。', ko:'유효한 날짜/시간을 입력하세요.', ar:'أدخل تاريخًا/وقتًا صالحًا.', he:'הזן תאריך/שעה תקינים.', ur:'درست تاریخ/وقت درج کریں۔', hi:'मान्य दिनांक/समय दर्ज करें।' },
  'tools.caveat':         { en:'Estimate based on 6-second block time. Actual block production may vary ±5% due to congestion or validator issues.',
                            es:'Estimación basada en block time de 6s. La producción real de bloques puede variar ±5% por congestión o problemas de validadores.',
                            fr:'Estimation basée sur un temps de bloc de 6s. La production réelle peut varier de ±5% en raison de la congestion ou des problèmes de validateurs.',
                            de:'Schätzung basierend auf 6s Blockzeit. Die tatsächliche Produktion kann aufgrund von Überlastung oder Validator-Problemen um ±5% variieren.',
                            it:'Stima basata su 6s di tempo di blocco. La produzione effettiva può variare ±5% a causa di congestione o problemi di validatori.',
                            pt:'Estimativa baseada em block time de 6s. A produção real pode variar ±5% devido a congestionamento ou problemas de validadores.',
                            ru:'Оценка основана на блок-тайме 6с. Реальное производство блоков может отклоняться на ±5% из-за нагрузки или проблем валидаторов.',
                            zh:'基于 6 秒出块时间估算。实际出块可能因拥堵或验证者问题而有 ±5% 偏差。',
                            ja:'6秒のブロック時間に基づく推定。実際の生成は混雑やバリデータの問題により ±5% 変動する可能性があります。',
                            ko:'6초 블록 타임 기준 추정치. 실제 블록 생성은 혼잡이나 검증자 문제로 ±5% 변동할 수 있습니다.',
                            ar:'تقدير بناءً على زمن كتلة 6 ثوانٍ. قد يختلف الإنتاج الفعلي بنسبة ±5% بسبب الازدحام أو مشاكل المحققين.',
                            he:'הערכה המבוססת על זמן בלוק של 6 שניות. הייצור בפועל יכול להשתנות ב-±5% עקב גודש או תקלות של מאמתים.',
                            ur:'6 سیکنڈ بلاک ٹائم کی بنیاد پر تخمینہ۔ اصل پیداوار بھیڑ یا ویلیڈیٹر کے مسائل کی وجہ سے ±5% تک مختلف ہو سکتی ہے۔',
                            hi:'6-सेकंड ब्लॉक टाइम पर आधारित अनुमान। वास्तविक उत्पादन भीड़ या वैलिडेटर मुद्दों के कारण ±5% तक भिन्न हो सकता है।' },

  /* ===== Music player ===== */
  'music.nowPlaying':{ en:'Now playing', es:'Reproduciendo', fr:'En lecture', de:'Läuft jetzt', it:'In riproduzione', pt:'Tocando agora', ru:'Сейчас играет', zh:'正在播放', ja:'再生中', ko:'재생 중', ar:'قيد التشغيل', he:'מתנגן כעת', ur:'چل رہا ہے', hi:'अभी चल रहा' },
  'music.track':     { en:'Track',       es:'Pista',        fr:'Piste',      de:'Titel',      it:'Traccia',        pt:'Faixa',        ru:'Трек',          zh:'曲目',   ja:'トラック', ko:'트랙',   ar:'المسار',     he:'רצועה',    ur:'ٹریک',    hi:'ट्रैक' },
  'music.artist':    { en:'Artist',      es:'Artista',      fr:'Artiste',    de:'Künstler',   it:'Artista',        pt:'Artista',      ru:'Исполнитель',   zh:'艺术家', ja:'アーティスト',ko:'아티스트',ar:'الفنان',     he:'אמן',      ur:'فنکار',   hi:'कलाकार' },
  'music.playlist':  { en:'Playlist',    es:'Lista',        fr:'Playlist',   de:'Playlist',   it:'Playlist',       pt:'Playlist',     ru:'Плейлист',      zh:'播放列表',ja:'プレイリスト',ko:'플레이리스트',ar:'قائمة التشغيل',he:'פלייליסט',ur:'پلے لسٹ', hi:'प्लेलिस्ट' },
  'music.volume':    { en:'Volume',      es:'Volumen',      fr:'Volume',     de:'Lautstärke', it:'Volume',         pt:'Volume',       ru:'Громкость',     zh:'音量',   ja:'音量',    ko:'볼륨',    ar:'الصوت',      he:'עוצמה',    ur:'والیوم',  hi:'वॉल्यूम' },
  'music.play':      { en:'Play',        es:'Reproducir',   fr:'Lire',       de:'Abspielen',  it:'Riproduci',      pt:'Tocar',        ru:'Играть',        zh:'播放',   ja:'再生',    ko:'재생',    ar:'تشغيل',      he:'נגן',      ur:'چلائیں',  hi:'चलाएँ' },
  'music.pause':     { en:'Pause',       es:'Pausar',       fr:'Pause',      de:'Pause',      it:'Pausa',          pt:'Pausar',       ru:'Пауза',         zh:'暂停',   ja:'一時停止',ko:'일시정지',ar:'إيقاف مؤقت', he:'השהה',    ur:'روکیں',   hi:'रोकें' },
  'music.next':      { en:'Next',        es:'Siguiente',    fr:'Suivant',    de:'Weiter',     it:'Successivo',     pt:'Próximo',      ru:'Следующий',     zh:'下一首', ja:'次へ',    ko:'다음',    ar:'التالي',     he:'הבא',      ur:'اگلا',    hi:'अगला' },
  'music.prev':      { en:'Previous',    es:'Anterior',     fr:'Précédent',  de:'Zurück',     it:'Precedente',     pt:'Anterior',     ru:'Предыдущий',    zh:'上一首', ja:'前へ',    ko:'이전',    ar:'السابق',     he:'הקודם',    ur:'پچھلا',   hi:'पिछला' },

  /* ===== Extrinsics/drill expansion ===== */
  'drill.decodedArgs':  { en:'Decoded Args',    es:'Args. Decodificados', fr:'Args décodés',    de:'Dekodierte Args', it:'Arg. decodificati', pt:'Args decod.',   ru:'Декод. аргументы',  zh:'解码参数', ja:'デコード引数', ko:'디코드 인자', ar:'المعاملات المفكوكة',he:'ארגומנטים מפוענחים',ur:'ڈی کوڈ شدہ آرگز',hi:'डिकोडेड आर्ग्स' },
  'drill.events':       { en:'Events',          es:'Eventos',             fr:'Événements',      de:'Ereignisse',      it:'Eventi',             pt:'Eventos',        ru:'События',           zh:'事件',   ja:'イベント',    ko:'이벤트',  ar:'الأحداث',       he:'אירועים',      ur:'ایونٹس',      hi:'घटनाएँ' },
  'drill.feeBreakdown': { en:'Fee Breakdown',   es:'Desglose de Comisión',fr:'Détail des frais',de:'Gebühren-Aufschl.', it:'Dettaglio commiss.',pt:'Detalhe da taxa',ru:'Разбивка комиссии', zh:'手续费明细',ja:'手数料内訳',ko:'수수료 내역',ar:'تفصيل الرسوم', he:'פירוט עמלה',   ur:'فیس کی تفصیل',hi:'शुल्क विवरण' },

  /* ===== Preimage Decode & History modals ===== */
  'preimage.decode.title':            { en:'Decode preimage',                    es:'Decodificar preimagen',                fr:'Décoder la préimage',                 de:'Preimage dekodieren',                 it:'Decodifica preimage',                   pt:'Decodificar preimage',                   ru:'Декодировать прообраз',              zh:'解码预映像',         ja:'プリイメージをデコード',        ko:'프리이미지 디코딩',          ar:'فك ترميز الصورة الأولية',             he:'פענוח preimage',                 ur:'پری امیج ڈی کوڈ کریں',            hi:'प्रीइमेज डिकोड करें' },
  'preimage.decode.decoding':         { en:'Decoding...',                        es:'Decodificando...',                     fr:'Décodage...',                         de:'Dekodieren...',                       it:'Decodifica...',                         pt:'Decodificando...',                       ru:'Декодирование...',                   zh:'解码中...',          ja:'デコード中...',                  ko:'디코딩 중...',               ar:'جارٍ فك الترميز...',                  he:'מפענח...',                       ur:'ڈی کوڈ ہو رہا ہے...',              hi:'डिकोड कर रहा है...' },
  'preimage.decode.decodingLarge':    { en:'Decoding (large runtime, ~6 MB)...', es:'Decodificando (runtime grande, ~6MB)...', fr:'Décodage (gros runtime, ~6 Mo)...',  de:'Dekodieren (großes Runtime, ~6 MB)...', it:'Decodifica (runtime grande, ~6MB)...', pt:'Decodificando (runtime grande, ~6MB)...', ru:'Декодирование (большой runtime, ~6 МБ)...', zh:'解码中（运行时较大，约 6 MB）...', ja:'デコード中（大きなランタイム、~6MB）...', ko:'디코딩 중 (대용량 런타임, ~6 MB)...', ar:'جارٍ فك الترميز (runtime كبير، ~6 ميغا)...', he:'מפענח (runtime גדול, ~6 MB)...', ur:'ڈی کوڈ (بڑا رن ٹائم، ~6 MB)...', hi:'डिकोड (बड़ा रनटाइम, ~6 MB)...' },
  'preimage.decode.rateLimitHint':    { en:'Backend rate limit: 120 req/min per IP. Wait ~60s and retry, or ask the admin to raise the cap.', es:'El backend tiene rate limit 120 req/min por IP. Espera ~60s y reintenta, o el admin puede subir el límite.', fr:'Limite backend : 120 req/min par IP. Attendez ~60 s puis réessayez, ou demandez à l\'admin d\'augmenter.', de:'Backend-Limit: 120 Anfr./Min. pro IP. ~60 s warten und erneut versuchen, oder Admin bittet erhöhen.', it:'Rate limit backend: 120 req/min per IP. Attendi ~60s e riprova, o chiedi all\'admin di alzarlo.', pt:'Limite do backend: 120 req/min por IP. Aguarde ~60 s e tente de novo, ou peça ao admin para subir.', ru:'Лимит: 120 зап./мин на IP. Подождите ~60 с и повторите, или попросите админа поднять лимит.', zh:'后端速率限制：每 IP 120 次/分钟。请等待约 60 秒后重试，或请管理员提高限额。', ja:'バックエンドのレート制限: IPごとに120リクエスト/分。~60秒待って再試行するか、管理者に引き上げを依頼してください。', ko:'백엔드 속도 제한: IP당 120 req/min. 약 60초 후 재시도하거나 관리자에게 한도 상향을 요청하세요.', ar:'حد معدّل الطلبات: 120/دقيقة لكل IP. انتظر ~60 ثانية وأعد المحاولة، أو اطلب من المشرف رفع الحد.', he:'הגבלת קצב: 120/דק\' לכל IP. המתן ~60 שנ\' ונסה שוב, או בקש מהמנהל להעלות.', ur:'بیک اینڈ لیمٹ: 120 فی منٹ فی IP۔ ~60 سیکنڈ انتظار کریں یا ایڈمن سے حد بڑھانے کو کہیں۔', hi:'बैकएंड दर सीमा: 120 req/min प्रति IP। ~60s प्रतीक्षा करें और पुनः प्रयास करें।' },
  'preimage.decode.retry':            { en:'Retry',                              es:'Reintentar',                           fr:'Réessayer',                           de:'Wiederholen',                         it:'Riprova',                                pt:'Tentar novamente',                       ru:'Повторить',                           zh:'重试',               ja:'再試行',                         ko:'재시도',                     ar:'إعادة المحاولة',                      he:'נסה שוב',                        ur:'دوبارہ کوشش',                      hi:'पुनः प्रयास' },
  'preimage.decode.viewJson':         { en:'{ } Raw JSON',                       es:'{ } Ver JSON crudo',                   fr:'{ } JSON brut',                       de:'{ } Roh-JSON',                        it:'{ } JSON grezzo',                       pt:'{ } JSON bruto',                         ru:'{ } Сырой JSON',                     zh:'{ } 原始 JSON',       ja:'{ } 生 JSON',                     ko:'{ } 원본 JSON',               ar:'{ } JSON الخام',                      he:'{ } JSON גולמי',                  ur:'{ } خام JSON',                      hi:'{ } रॉ JSON' },
  'preimage.decode.viewHuman':        { en:'👁 Human view',                      es:'👁 Vista humana',                      fr:'👁 Vue humaine',                      de:'👁 Menschliche Ansicht',              it:'👁 Vista leggibile',                    pt:'👁 Visão humana',                        ru:'👁 Читаемый вид',                    zh:'👁 易读视图',          ja:'👁 可読ビュー',                    ko:'👁 사람이 읽는 보기',          ar:'👁 عرض مقروء',                        he:'👁 תצוגה נוחה',                    ur:'👁 انسانی نظارہ',                    hi:'👁 सरल दृश्य' },
  'preimage.decode.viewJsonTip':      { en:'Show raw JSON (hex truncated)',      es:'Mostrar JSON crudo (con hex truncado)', fr:'Afficher le JSON brut (hex tronqué)', de:'Roh-JSON anzeigen (Hex gekürzt)',     it:'Mostra JSON grezzo (hex troncato)',      pt:'Mostrar JSON bruto (hex truncado)',      ru:'Показать сырой JSON (hex сокращён)', zh:'显示原始 JSON（hex 已截断）',  ja:'生 JSON を表示（hex は省略）',     ko:'원본 JSON 표시(hex 생략)',    ar:'عرض JSON الخام (hex مختصر)',          he:'הצג JSON גולמי (hex קצוץ)',       ur:'خام JSON دکھائیں (hex مختصر)',      hi:'रॉ JSON दिखाएँ (hex संक्षिप्त)' },
  'preimage.decode.viewHumanTip':     { en:'Show human view',                    es:'Mostrar vista humana',                 fr:'Afficher la vue humaine',             de:'Menschliche Ansicht zeigen',          it:'Mostra vista leggibile',                 pt:'Mostrar visão humana',                   ru:'Показать читаемый вид',              zh:'显示易读视图',         ja:'可読ビューを表示',                ko:'사람이 읽는 보기 표시',       ar:'عرض التنسيق المقروء',                 he:'הצג תצוגה נוחה',                 ur:'انسانی نظارہ دکھائیں',              hi:'सरल दृश्य दिखाएँ' },
  'preimage.decode.copyField':        { en:'Copy',                               es:'Copiar',                               fr:'Copier',                              de:'Kopieren',                            it:'Copia',                                  pt:'Copiar',                                 ru:'Скопировать',                         zh:'复制',               ja:'コピー',                         ko:'복사',                       ar:'نسخ',                                 he:'העתק',                            ur:'کاپی',                              hi:'कॉपी' },
  'preimage.decode.copyFieldTip':     { en:'Copy full bytes of "{key}" to clipboard', es:'Copiar bytes completos de "{key}" al portapapeles', fr:'Copier les octets de "{key}" dans le presse-papiers', de:'Volle Bytes von "{key}" in die Zwischenablage kopieren', it:'Copia i byte di "{key}" negli appunti', pt:'Copiar bytes de "{key}" para área de transferência', ru:'Скопировать байты "{key}" в буфер',  zh:'将 "{key}" 的完整字节复制到剪贴板', ja:'"{key}" の完全なバイトをクリップボードへコピー', ko:'"{key}" 의 전체 바이트를 클립보드로 복사', ar:'نسخ بايتات "{key}" إلى الحافظة', he:'העתק בייטים של "{key}" ללוח', ur:'"{key}" کے بائٹس کلپ بورڈ پر کاپی کریں', hi:'"{key}" के बाइट क्लिपबोर्ड पर कॉपी करें' },
  'preimage.decode.download':         { en:'Download',                           es:'Descargar',                            fr:'Télécharger',                         de:'Herunterladen',                       it:'Scarica',                                pt:'Baixar',                                 ru:'Скачать',                             zh:'下载',               ja:'ダウンロード',                    ko:'다운로드',                   ar:'تنزيل',                               he:'הורד',                           ur:'ڈاؤن لوڈ',                         hi:'डाउनलोड' },
  'preimage.decode.downloadHexTip':   { en:'Download "{key}" as .hex.txt file',  es:'Descargar "{key}" como fichero .hex.txt', fr:'Télécharger "{key}" en fichier .hex.txt', de:'"{key}" als .hex.txt-Datei herunterladen', it:'Scarica "{key}" come file .hex.txt', pt:'Baixar "{key}" como arquivo .hex.txt', ru:'Скачать "{key}" как .hex.txt',      zh:'将 "{key}" 下载为 .hex.txt 文件', ja:'"{key}" を .hex.txt ファイルとしてダウンロード', ko:'"{key}" 을 .hex.txt 파일로 다운로드', ar:'تنزيل "{key}" كملف .hex.txt',        he:'הורד את "{key}" כקובץ .hex.txt',  ur:'"{key}" کو .hex.txt فائل میں ڈاؤن لوڈ', hi:'"{key}" को .hex.txt फ़ाइल में डाउनलोड' },
  'preimage.decode.downloadWasm':     { en:'Download .wasm.zst',                 es:'Descargar .wasm.zst',                  fr:'Télécharger .wasm.zst',               de:'.wasm.zst herunterladen',             it:'Scarica .wasm.zst',                      pt:'Baixar .wasm.zst',                       ru:'Скачать .wasm.zst',                   zh:'下载 .wasm.zst',     ja:'.wasm.zst をダウンロード',         ko:'.wasm.zst 다운로드',           ar:'تنزيل .wasm.zst',                      he:'הורד .wasm.zst',                  ur:'.wasm.zst ڈاؤن لوڈ',                hi:'.wasm.zst डाउनलोड' },
  'preimage.decode.downloadWasmTip':  { en:'Download compressed WASM — decompress with `zstd -d`', es:'Descargar WASM comprimido — descomprímelo con `zstd -d`', fr:'Télécharger le WASM compressé — décompresser avec `zstd -d`', de:'Komprimiertes WASM herunterladen — mit `zstd -d` entpacken', it:'Scarica WASM compresso — decomprimi con `zstd -d`', pt:'Baixar WASM comprimido — descomprimir com `zstd -d`', ru:'Скачать сжатый WASM — распакуйте `zstd -d`', zh:'下载压缩 WASM — 用 `zstd -d` 解压', ja:'圧縮 WASM をダウンロード — `zstd -d` で解凍', ko:'압축 WASM 다운로드 — `zstd -d` 로 압축 해제', ar:'تنزيل WASM مضغوط — فكّ الضغط بـ `zstd -d`', he:'הורד WASM דחוס — פתח עם `zstd -d`', ur:'کمپریسڈ WASM ڈاؤن لوڈ کریں — `zstd -d` سے کھولیں', hi:'संपीड़ित WASM डाउनलोड — `zstd -d` से खोलें' },
  'preimage.decode.upgradeTitle':     { en:'⚙️ SORA runtime upgrade',            es:'⚙️ Actualización de runtime SORA',     fr:'⚙️ Mise à jour du runtime SORA',      de:'⚙️ SORA-Runtime-Upgrade',             it:'⚙️ Aggiornamento runtime SORA',          pt:'⚙️ Atualização do runtime SORA',         ru:'⚙️ Обновление рантайма SORA',         zh:'⚙️ SORA 运行时升级',    ja:'⚙️ SORA ランタイム更新',           ko:'⚙️ SORA 런타임 업그레이드',     ar:'⚙️ ترقية runtime SORA',                 he:'⚙️ שדרוג runtime של SORA',         ur:'⚙️ SORA رن ٹائم اپ گریڈ',           hi:'⚙️ SORA रनटाइम अपग्रेड' },
  'preimage.decode.targetPending':    { en:'Target specVersion pending (backend has no /decode-pretty endpoint).', es:'specVersion destino pendiente (backend sin endpoint /decode-pretty).', fr:'specVersion cible en attente (backend sans /decode-pretty).', de:'Ziel-specVersion ausstehend (Backend ohne /decode-pretty).', it:'specVersion destinazione in attesa (backend senza /decode-pretty).', pt:'specVersion alvo pendente (backend sem /decode-pretty).', ru:'Целевая specVersion ожидается (бэкенд без /decode-pretty).', zh:'目标 specVersion 待定（后端无 /decode-pretty）。', ja:'対象 specVersion 保留中（バックエンドに /decode-pretty なし）。', ko:'대상 specVersion 보류 (백엔드에 /decode-pretty 없음).', ar:'specVersion الهدف معلّق (لا يوجد /decode-pretty).', he:'specVersion יעד ממתין (אין /decode-pretty).', ur:'ٹارگٹ specVersion ملتوی (/decode-pretty نہیں)۔', hi:'लक्ष्य specVersion लंबित (/decode-pretty नहीं)।' },
  'preimage.decode.specName':         { en:'specName',                           es:'specName',                             fr:'specName',                            de:'specName',                            it:'specName',                               pt:'specName',                               ru:'specName',                            zh:'specName',           ja:'specName',                       ko:'specName',                    ar:'specName',                             he:'specName',                        ur:'specName',                          hi:'specName' },
  'preimage.decode.compressed':       { en:'Compressed (zstd)',                  es:'Comprimido (zstd)',                    fr:'Compressé (zstd)',                    de:'Komprimiert (zstd)',                  it:'Compresso (zstd)',                       pt:'Comprimido (zstd)',                      ru:'Сжато (zstd)',                        zh:'已压缩 (zstd)',       ja:'圧縮済み (zstd)',                 ko:'압축됨 (zstd)',               ar:'مضغوط (zstd)',                         he:'דחוס (zstd)',                     ur:'کمپریسڈ (zstd)',                    hi:'संपीड़ित (zstd)' },
  'preimage.decode.decompressed':     { en:'Decompressed (WASM)',                es:'Descomprimido (WASM)',                 fr:'Décompressé (WASM)',                  de:'Entpackt (WASM)',                     it:'Decompresso (WASM)',                     pt:'Descomprimido (WASM)',                   ru:'Распаковано (WASM)',                  zh:'已解压 (WASM)',       ja:'解凍済み (WASM)',                 ko:'압축해제 (WASM)',             ar:'مفكوك (WASM)',                         he:'מפוענח (WASM)',                   ur:'ڈی کمپریسڈ (WASM)',                hi:'डिकंप्रेस्ड (WASM)' },
  'preimage.decode.magicZstd':        { en:'Zstd magic',                         es:'Magic zstd',                           fr:'Magic zstd',                          de:'Zstd-Magic',                          it:'Magic zstd',                             pt:'Magic zstd',                             ru:'Сигнатура zstd',                      zh:'Zstd 魔数',          ja:'Zstd マジック',                  ko:'Zstd 매직',                  ar:'توقيع zstd',                           he:'חתימת zstd',                      ur:'Zstd میجک',                         hi:'Zstd मैजिक' },
  'preimage.decode.magicWasm':        { en:'WASM magic',                         es:'Magic WASM',                           fr:'Magic WASM',                          de:'WASM-Magic',                          it:'Magic WASM',                             pt:'Magic WASM',                             ru:'Сигнатура WASM',                      zh:'WASM 魔数',          ja:'WASM マジック',                  ko:'WASM 매직',                  ar:'توقيع WASM',                           he:'חתימת WASM',                      ur:'WASM میجک',                         hi:'WASM मैजिक' },
  'preimage.decode.integrity':        { en:'Integrity',                          es:'Integridad',                           fr:'Intégrité',                           de:'Integrität',                          it:'Integrità',                              pt:'Integridade',                            ru:'Целостность',                         zh:'完整性',             ja:'整合性',                         ko:'무결성',                     ar:'السلامة',                              he:'שלמות',                          ur:'سالمیت',                            hi:'अखंडता' },
  'preimage.decode.integrityMatch':   { en:'✓ blake2_256 matches',               es:'✓ blake2_256 coincide',                fr:'✓ blake2_256 correspond',             de:'✓ blake2_256 stimmt',                 it:'✓ blake2_256 corrisponde',               pt:'✓ blake2_256 confere',                   ru:'✓ blake2_256 совпадает',              zh:'✓ blake2_256 匹配',  ja:'✓ blake2_256 一致',               ko:'✓ blake2_256 일치',           ar:'✓ تطابق blake2_256',                   he:'✓ blake2_256 תואם',              ur:'✓ blake2_256 میل کھاتا ہے',         hi:'✓ blake2_256 मेल खाता है' },
  'preimage.decode.integrityMismatch':{ en:'✗ hash mismatch',                    es:'✗ hash no coincide',                   fr:'✗ hash ne correspond pas',            de:'✗ Hash-Abweichung',                   it:'✗ hash non corrisponde',                 pt:'✗ hash não confere',                     ru:'✗ хеши не совпадают',                 zh:'✗ 哈希不匹配',        ja:'✗ ハッシュ不一致',                ko:'✗ 해시 불일치',               ar:'✗ عدم تطابق الهاش',                   he:'✗ אי-התאמת hash',                ur:'✗ ہیش میل نہیں کھاتا',             hi:'✗ हैश बेमेल' },
  'preimage.decode.magicOk':          { en:'✓ detected',                         es:'✓ detectada',                          fr:'✓ détecté',                           de:'✓ erkannt',                           it:'✓ rilevato',                             pt:'✓ detectado',                            ru:'✓ обнаружено',                        zh:'✓ 已检测',            ja:'✓ 検出済み',                      ko:'✓ 감지됨',                    ar:'✓ مكتشف',                              he:'✓ זוהה',                          ur:'✓ پتہ چلا',                         hi:'✓ पता चला' },
  'preimage.decode.magicFail':        { en:'✗ not detected',                     es:'✗ no detectada',                       fr:'✗ non détecté',                       de:'✗ nicht erkannt',                     it:'✗ non rilevato',                         pt:'✗ não detectado',                        ru:'✗ не найдено',                        zh:'✗ 未检测到',          ja:'✗ 未検出',                        ko:'✗ 감지되지 않음',             ar:'✗ غير مكتشف',                          he:'✗ לא זוהה',                       ur:'✗ نہیں ملا',                        hi:'✗ नहीं मिला' },
  'preimage.decode.rawHelp':          { en:'To inspect the raw WASM, use the 💾 .wasm.zst button, then `zstd -d runtime-*.wasm.zst` and open with wasm-objdump or subxt.', es:'Para inspeccionar el WASM crudo, descárgalo con el botón 💾 .wasm.zst, luego `zstd -d runtime-*.wasm.zst` y ábrelo con wasm-objdump o subxt.', fr:'Pour inspecter le WASM brut, utilisez 💾 .wasm.zst, puis `zstd -d runtime-*.wasm.zst` et ouvrez-le avec wasm-objdump ou subxt.', de:'Für Roh-WASM: 💾 .wasm.zst-Knopf, dann `zstd -d runtime-*.wasm.zst` und mit wasm-objdump oder subxt öffnen.', it:'Per ispezionare il WASM grezzo, usa 💾 .wasm.zst, poi `zstd -d runtime-*.wasm.zst` con wasm-objdump o subxt.', pt:'Para inspecionar o WASM bruto, use 💾 .wasm.zst, depois `zstd -d runtime-*.wasm.zst` com wasm-objdump ou subxt.', ru:'Для проверки сырого WASM нажмите 💾 .wasm.zst, затем `zstd -d runtime-*.wasm.zst` и откройте wasm-objdump/subxt.', zh:'查看原始 WASM：使用 💾 .wasm.zst 按钮，然后 `zstd -d runtime-*.wasm.zst`，用 wasm-objdump 或 subxt 打开。', ja:'生 WASM を確認するには 💾 .wasm.zst ボタン、`zstd -d runtime-*.wasm.zst` 後に wasm-objdump/subxt で開く。', ko:'원본 WASM 확인: 💾 .wasm.zst 버튼 → `zstd -d runtime-*.wasm.zst` → wasm-objdump/subxt 로 열기.', ar:'لفحص WASM الخام استخدم زر 💾 .wasm.zst ثم `zstd -d runtime-*.wasm.zst` وافتح مع wasm-objdump أو subxt.', he:'לבדיקת WASM גולמי: 💾 .wasm.zst, אז `zstd -d runtime-*.wasm.zst` עם wasm-objdump או subxt.', ur:'خام WASM کا معائنہ: 💾 .wasm.zst، پھر `zstd -d runtime-*.wasm.zst` اور wasm-objdump/subxt میں کھولیں۔', hi:'कच्चे WASM की जाँच: 💾 .wasm.zst बटन → `zstd -d runtime-*.wasm.zst` → wasm-objdump/subxt में खोलें।' },
  'preimage.decode.noArgs':           { en:'This call has no arguments.',         es:'Esta llamada no tiene argumentos.',    fr:'Cet appel n\'a pas d\'arguments.',    de:'Dieser Aufruf hat keine Argumente.',  it:'Questa chiamata non ha argomenti.',      pt:'Esta chamada não tem argumentos.',       ru:'У этого вызова нет аргументов.',      zh:'此调用没有参数。',      ja:'この呼び出しには引数がありません。',   ko:'이 호출에 인자가 없습니다.',    ar:'هذا الاستدعاء بلا وسائط.',             he:'אין ארגומנטים לקריאה הזו.',       ur:'اس کال میں کوئی آرگیومنٹ نہیں۔',    hi:'इस कॉल में कोई तर्क नहीं है।' },
  'preimage.decode.noDecoded':        { en:'Could not decode (bytes unavailable).', es:'No se pudo decodificar (bytes no disponibles).', fr:'Décodage impossible (octets indisponibles).', de:'Dekodieren nicht möglich (Bytes fehlen).', it:'Decodifica impossibile (byte non disp.).', pt:'Não foi possível decodificar (bytes indisp.).', ru:'Декодировать не удалось (байтов нет).', zh:'无法解码（字节不可用）。', ja:'デコードできません（バイト未取得）。', ko:'디코딩 실패 (바이트 없음).',  ar:'تعذّر فك الترميز (لا توجد بايتات).',     he:'לא ניתן לפענח (אין בייטים).',     ur:'ڈی کوڈ نہیں ہو سکا (بائٹس دستیاب نہیں)۔', hi:'डिकोड नहीं हो सका (बाइट अनुपलब्ध)।' },
  /* History modal */
  'preimage.history.title':           { en:'Event history',                      es:'Historial de eventos',                 fr:'Historique d\'événements',            de:'Ereignisverlauf',                     it:'Cronologia eventi',                      pt:'Histórico de eventos',                   ru:'История событий',                     zh:'事件历史',           ja:'イベント履歴',                    ko:'이벤트 기록',                 ar:'سجل الأحداث',                           he:'היסטוריית אירועים',               ur:'واقعات کی تاریخ',                  hi:'घटना इतिहास' },
  'preimage.history.summary':         { en:'Summary',                            es:'Resumen',                              fr:'Résumé',                              de:'Zusammenfassung',                     it:'Riepilogo',                              pt:'Resumo',                                 ru:'Сводка',                              zh:'摘要',               ja:'概要',                           ko:'요약',                       ar:'ملخّص',                                he:'סיכום',                          ur:'خلاصہ',                             hi:'सारांश' },
  'preimage.history.noted':           { en:'Uploaded',                           es:'Subida',                               fr:'Déposée',                             de:'Hochgeladen',                         it:'Caricata',                               pt:'Enviada',                                ru:'Загружен',                            zh:'已上传',             ja:'登録済み',                       ko:'업로드됨',                   ar:'مرفوعة',                               he:'הועלתה',                          ur:'اپ لوڈ',                            hi:'अपलोड' },
  'preimage.history.requested':       { en:'Requested',                          es:'Solicitada',                           fr:'Demandée',                            de:'Angefordert',                         it:'Richiesta',                              pt:'Solicitada',                             ru:'Запрошен',                            zh:'已请求',             ja:'要求済み',                       ko:'요청됨',                     ar:'مطلوبة',                               he:'נתבקשה',                         ur:'درخواست کی',                       hi:'अनुरोधित' },
  'preimage.history.cleared':         { en:'Deleted / Unnoted',                  es:'Borrada / Unnoted',                    fr:'Supprimée / Unnoted',                 de:'Gelöscht / Unnoted',                  it:'Eliminata / Unnoted',                    pt:'Apagada / Unnoted',                      ru:'Удалён / Unnoted',                    zh:'已删除 / Unnoted',    ja:'削除 / Unnoted',                  ko:'삭제 / Unnoted',              ar:'محذوفة / Unnoted',                      he:'נמחקה / Unnoted',                 ur:'حذف / Unnoted',                     hi:'हटाई गई / Unnoted' },
  'preimage.history.noNoted':         { en:'No Noted event detected in range.',  es:'No se detectó evento Noted en el rango.', fr:'Aucun événement Noted dans la plage.', de:'Kein Noted-Ereignis im Bereich.',   it:'Nessun evento Noted nel range.',         pt:'Nenhum evento Noted no intervalo.',      ru:'Событие Noted в диапазоне не найдено.', zh:'范围内未检测到 Noted 事件。', ja:'範囲内に Noted イベントは検出されませんでした。', ko:'범위 내 Noted 이벤트가 없습니다.', ar:'لم يُكتشف حدث Noted في النطاق.',        he:'לא אותר אירוע Noted בטווח.',      ur:'رینج میں کوئی Noted ایونٹ نہیں ملا۔', hi:'रेंज में कोई Noted ईवेंट नहीं मिला।' },
  'preimage.history.indexerWorking':  { en:'Indexer processing history (cursor: {cursor}). Older preimages will appear as backfill catches up.', es:'Indexador procesando histórico (cursor: {cursor}). Si la preimagen es anterior, aparecerá cuando el backfill llegue.', fr:'Indexeur en cours (cursor : {cursor}). Les préimages plus anciennes apparaîtront après le backfill.', de:'Indexer arbeitet (Cursor: {cursor}). Ältere Preimages erscheinen, sobald Backfill sie erreicht.', it:'Indexer al lavoro (cursor: {cursor}). Le preimage più vecchie appariranno col backfill.', pt:'Indexador processando (cursor: {cursor}). Preimages mais antigas aparecerão após o backfill.', ru:'Индексатор обрабатывает (cursor: {cursor}). Старые прообразы появятся после дозагрузки.', zh:'索引器处理中 (cursor: {cursor})。更旧的预映像会在补档后出现。', ja:'インデクサ処理中 (cursor: {cursor})。古いプリイメージはバックフィル後に表示。', ko:'인덱서 처리 중 (cursor: {cursor}). 오래된 프리이미지는 백필 후 표시.', ar:'الفهرس يعمل (cursor: {cursor}). ستظهر preimages الأقدم بعد إكمال backfill.', he:'מאנדקס פועל (cursor: {cursor}). preimages ישנים יופיעו אחרי backfill.', ur:'انڈیکسر کام کر رہا ہے (cursor: {cursor}).', hi:'इंडेक्सर प्रगति पर (cursor: {cursor}).' },
  'preimage.history.loading':         { en:'Loading...',                         es:'Cargando...',                          fr:'Chargement...',                       de:'Wird geladen...',                     it:'Caricamento...',                         pt:'Carregando...',                          ru:'Загрузка...',                         zh:'加载中...',           ja:'読み込み中...',                   ko:'불러오는 중...',              ar:'جارٍ التحميل...',                      he:'טוען...',                        ur:'لوڈ ہو رہا ہے...',                  hi:'लोड हो रहा है...' },
  'preimage.history.loadingTimeline': { en:'Loading timeline...',                es:'Cargando timeline...',                 fr:'Chargement de la timeline...',        de:'Zeitleiste wird geladen...',          it:'Caricamento timeline...',                pt:'Carregando linha do tempo...',           ru:'Загрузка ленты...',                   zh:'加载时间线...',       ja:'タイムライン読み込み中...',        ko:'타임라인 불러오는 중...',      ar:'جارٍ تحميل الخط الزمني...',             he:'טוען ציר זמן...',                 ur:'ٹائم لائن لوڈ ہو رہی ہے...',        hi:'टाइमलाइन लोड हो रही है...' },
  'preimage.history.noEvents':        { en:'No events in available range.',      es:'Sin eventos en el rango disponible.',  fr:'Aucun événement dans la plage.',      de:'Keine Ereignisse im verfügbaren Bereich.', it:'Nessun evento nel range.',           pt:'Nenhum evento no intervalo.',            ru:'Событий в диапазоне нет.',            zh:'可用范围内无事件。',    ja:'利用可能な範囲にイベントはありません。', ko:'사용 가능 범위에 이벤트 없음.',  ar:'لا توجد أحداث في النطاق.',               he:'אין אירועים בטווח.',              ur:'رینج میں کوئی ایونٹ نہیں۔',         hi:'रेंज में कोई ईवेंट नहीं।' },
  'preimage.history.dbSource':        { en:'Data from own indexer',              es:'Datos del indexador propio',           fr:'Données de l\'indexeur propre',       de:'Daten aus eigenem Indexer',           it:'Dati dall\'indexer proprio',             pt:'Dados do indexador próprio',             ru:'Данные собственного индексера',       zh:'来自自有索引器的数据',  ja:'自前インデクサのデータ',           ko:'자체 인덱서 데이터',           ar:'بيانات من الفهرس الخاص',               he:'מידע מהאינדקסר הפנימי',            ur:'اپنے انڈیکسر سے ڈیٹا',              hi:'अपने इंडेक्सर का डेटा' },
  'preimage.history.dbComplete':      { en:'✓ Stored in own DB · full history',  es:'✓ Guardado en BD propia · histórico completo', fr:'✓ Enregistré en BDD propre · historique complet', de:'✓ In eigener DB gespeichert · volle Historie', it:'✓ Salvato in DB proprio · storico completo', pt:'✓ Salvo em BD própria · histórico completo', ru:'✓ Сохранено в своей БД · полная история', zh:'✓ 存储于自建 DB · 完整历史', ja:'✓ 自前 DB に保存 · 全履歴',        ko:'✓ 자체 DB 저장 · 전체 이력',  ar:'✓ محفوظ في قاعدة خاصة · سجل كامل',      he:'✓ נשמר ב-DB פנימי · היסטוריה מלאה', ur:'✓ اپنی DB میں محفوظ · مکمل تاریخ',   hi:'✓ अपने DB में सहेजा गया · पूर्ण इतिहास' },
  'preimage.history.dbBackfilling':   { en:'backfill in progress',               es:'backfill en curso',                    fr:'backfill en cours',                   de:'Backfill läuft',                      it:'backfill in corso',                      pt:'backfill em andamento',                  ru:'идёт дозагрузка',                     zh:'补档中',             ja:'バックフィル中',                  ko:'백필 진행 중',                ar:'backfill قيد التنفيذ',                 he:'backfill רץ',                     ur:'backfill جاری',                     hi:'बैकफ़िल जारी' },
  'preimage.history.rpcScanBtn':      { en:'↑ Scan earlier blocks (RPC)',        es:'↑ Scan RPC bloques anteriores',        fr:'↑ Scanner les blocs antérieurs (RPC)',de:'↑ Frühere Blöcke scannen (RPC)',      it:'↑ Scansiona blocchi precedenti (RPC)',   pt:'↑ Escanear blocos anteriores (RPC)',     ru:'↑ Сканировать более ранние блоки (RPC)', zh:'↑ 扫描更早的区块 (RPC)', ja:'↑ 過去ブロックをスキャン (RPC)',    ko:'↑ 이전 블록 스캔 (RPC)',       ar:'↑ فحص كتل سابقة (RPC)',                he:'↑ סרוק בלוקים קודמים (RPC)',       ur:'↑ پچھلے بلاکس اسکین (RPC)',         hi:'↑ पिछले ब्लॉक स्कैन (RPC)' },
  'preimage.history.rpcScanUsed':     { en:'Includes RPC scan (slow)',           es:'Incluye RPC scan (lento)',             fr:'Inclut un scan RPC (lent)',           de:'Enthält RPC-Scan (langsam)',          it:'Include scan RPC (lento)',               pt:'Inclui scan RPC (lento)',                ru:'Включает RPC-скан (медленно)',        zh:'包含 RPC 扫描（慢）',  ja:'RPC スキャン込み（低速）',           ko:'RPC 스캔 포함 (느림)',         ar:'يشمل فحص RPC (بطيء)',                   he:'כולל סריקת RPC (איטי)',            ur:'RPC اسکین شامل (سست)',              hi:'RPC स्कैन शामिल (धीमा)' },
  'preimage.history.reasonUpgrade':   { en:'🔧 Runtime upgrade',                 es:'🔧 Runtime upgrade',                   fr:'🔧 Mise à jour du runtime',           de:'🔧 Runtime-Upgrade',                  it:'🔧 Aggiornamento runtime',               pt:'🔧 Atualização de runtime',              ru:'🔧 Обновление рантайма',              zh:'🔧 运行时升级',        ja:'🔧 ランタイム更新',                 ko:'🔧 런타임 업그레이드',         ar:'🔧 ترقية runtime',                      he:'🔧 שדרוג runtime',                 ur:'🔧 رن ٹائم اپ گریڈ',                 hi:'🔧 रनटाइम अपग्रेड' },
  'preimage.history.reasonScheduler': { en:'⏲ Executed by scheduler',            es:'⏲ Scheduler lo ejecutó',               fr:'⏲ Exécuté par le scheduler',          de:'⏲ Vom Scheduler ausgeführt',          it:'⏲ Eseguito dallo scheduler',             pt:'⏲ Executado pelo scheduler',             ru:'⏲ Выполнено планировщиком',           zh:'⏲ 由调度器执行',       ja:'⏲ スケジューラで実行',              ko:'⏲ 스케줄러가 실행',             ar:'⏲ نفّذه المجدوِل',                      he:'⏲ בוצע ע״י המתזמן',                ur:'⏲ شیڈیولر نے چلایا',                 hi:'⏲ शेड्यूलर ने चलाया' },
  'preimage.history.reasonUnnote':    { en:'👤 Depositor deleted it',            es:'👤 Depositante lo borró',              fr:'👤 Déposant l\'a supprimé',           de:'👤 Einzahler hat es gelöscht',        it:'👤 Depositante l\'ha eliminato',         pt:'👤 Depositante apagou',                  ru:'👤 Удалено депозитором',              zh:'👤 存款人已删除',      ja:'👤 デポジッタが削除',                ko:'👤 예치자가 삭제',             ar:'👤 المودِع حذفها',                      he:'👤 המפקיד מחק',                    ur:'👤 ڈپازٹر نے حذف کیا',               hi:'👤 जमाकर्ता ने हटाया' },

  /* ===== Portfolio: backup / restore / empty state ===== */
  'portfolio.backup':          { en:'Backup',               es:'Backup',              fr:'Sauvegarde',          de:'Backup',               it:'Backup',              pt:'Backup',              ru:'Резервная копия',     zh:'备份',             ja:'バックアップ',        ko:'백업',             ar:'نسخة احتياطية',        he:'גיבוי',              ur:'بیک اپ',             hi:'बैकअप' },
  'portfolio.restore':         { en:'Restore',              es:'Restaurar',           fr:'Restaurer',           de:'Wiederherstellen',     it:'Ripristina',          pt:'Restaurar',           ru:'Восстановить',        zh:'恢复',             ja:'復元',                ko:'복원',             ar:'استعادة',              he:'שחזור',              ur:'بحال کریں',          hi:'पुनर्स्थापित' },
  'portfolio.backupTip':       { en:'Download backup (.json) with wallets + favorites + language',  es:'Descargar backup (.json) con carteras + favoritos + idioma',      fr:'Télécharger la sauvegarde (.json) : portefeuilles + favoris + langue',  de:'Backup (.json) mit Wallets + Favoriten + Sprache herunterladen',  it:'Scarica backup (.json) con portafogli + preferiti + lingua',  pt:'Baixar backup (.json) com carteiras + favoritos + idioma',  ru:'Скачать резервную копию (.json): кошельки + избранное + язык', zh:'下载备份 (.json)：钱包 + 收藏 + 语言',   ja:'バックアップ (.json) をダウンロード：ウォレット・お気に入り・言語',  ko:'백업 (.json) 다운로드: 지갑 + 즐겨찾기 + 언어',   ar:'تنزيل النسخة (.json): المحافظ والمفضلة واللغة',    he:'הורד גיבוי (.json): ארנקים + מועדפים + שפה',   ur:'بیک اپ (.json) ڈاؤن لوڈ: والیٹس + پسندیدہ + زبان',  hi:'बैकअप (.json) डाउनलोड: वॉलेट + पसंदीदा + भाषा' },
  'portfolio.restoreTip':      { en:'Restore backup — accepts v1 and v2 files',     es:'Restaurar backup — acepta formatos v1 y v2',      fr:'Restaurer la sauvegarde — accepte les formats v1 et v2',      de:'Backup wiederherstellen — v1- und v2-Dateien',      it:'Ripristina backup — accetta file v1 e v2',      pt:'Restaurar backup — aceita arquivos v1 e v2',      ru:'Восстановить — принимает файлы v1 и v2',      zh:'恢复备份 — 支持 v1 和 v2 文件',      ja:'バックアップを復元 — v1 / v2 ファイル対応',      ko:'백업 복원 — v1 및 v2 파일 지원',      ar:'استعادة النسخة — يقبل ملفات v1 و v2',      he:'שחזור גיבוי — תומך בקבצי v1 ו־v2',      ur:'بیک اپ بحال — v1 اور v2 فائلیں',      hi:'बैकअप पुनर्स्थापित — v1 और v2 फ़ाइलें' },
  'portfolio.restoreConfirm':  { en:'Restore backup?\nYour current wallets and favorites will be replaced.',  es:'¿Restaurar backup?\nSe reemplazarán tus carteras y favoritos actuales.',  fr:'Restaurer la sauvegarde ?\nVos portefeuilles et favoris actuels seront remplacés.',  de:'Backup wiederherstellen?\nDeine aktuellen Wallets und Favoriten werden ersetzt.',  it:'Ripristinare il backup?\nI portafogli e i preferiti attuali saranno sostituiti.',  pt:'Restaurar backup?\nSuas carteiras e favoritos atuais serão substituídos.',  ru:'Восстановить?\nТекущие кошельки и избранное будут заменены.',  zh:'恢复备份？\n当前钱包和收藏将被替换。',  ja:'バックアップを復元しますか？\n現在のウォレットとお気に入りが置き換えられます。',  ko:'백업을 복원하시겠어요?\n현재 지갑과 즐겨찾기가 대체됩니다.',  ar:'استعادة النسخة؟\nسيتم استبدال المحافظ والمفضلة الحالية.',  he:'לשחזר את הגיבוי?\nהארנקים והמועדפים הנוכחיים יוחלפו.',  ur:'بیک اپ بحال کریں؟\nموجودہ والیٹس اور پسندیدہ بدل جائیں گے۔',  hi:'बैकअप पुनर्स्थापित करें?\nआपके वर्तमान वॉलेट और पसंदीदा बदल जाएँगे।' },
  'portfolio.backupOk':        { en:'Backup downloaded',           es:'Backup descargado',           fr:'Sauvegarde téléchargée',       de:'Backup heruntergeladen',       it:'Backup scaricato',           pt:'Backup baixado',           ru:'Резервная копия скачана',    zh:'备份已下载',       ja:'バックアップをダウンロードしました',     ko:'백업이 다운로드됨',       ar:'تم تنزيل النسخة',          he:'הגיבוי הורד',         ur:'بیک اپ ڈاؤن لوڈ ہو گیا',      hi:'बैकअप डाउनलोड हुआ' },
  'portfolio.restoreOk':       { en:'Backup restored',             es:'Backup restaurado',           fr:'Sauvegarde restaurée',         de:'Backup wiederhergestellt',     it:'Backup ripristinato',         pt:'Backup restaurado',        ru:'Резервная копия восстановлена', zh:'备份已恢复',       ja:'バックアップを復元しました',             ko:'백업 복원됨',            ar:'تمت الاستعادة',             he:'הגיבוי שוחזר',         ur:'بیک اپ بحال ہو گیا',          hi:'बैकअप पुनर्स्थापित' },
  'portfolio.restoreErr':      { en:'Invalid file',                es:'Archivo inválido',            fr:'Fichier invalide',             de:'Ungültige Datei',              it:'File non valido',              pt:'Arquivo inválido',         ru:'Неверный файл',              zh:'文件无效',         ja:'無効なファイル',             ko:'잘못된 파일',           ar:'ملف غير صالح',              he:'קובץ לא תקין',         ur:'غلط فائل',                 hi:'अमान्य फ़ाइल' },
  'portfolio.noWalletsYet':    { en:'No wallets yet',              es:'Sin wallets todavía',         fr:'Aucun portefeuille',           de:'Noch keine Wallets',           it:'Nessun portafoglio',           pt:'Sem carteiras ainda',      ru:'Пока нет кошельков',         zh:'还没有钱包',       ja:'ウォレットがありません',       ko:'아직 지갑 없음',         ar:'لا توجد محافظ بعد',          he:'אין ארנקים עדיין',     ur:'ابھی کوئی والیٹ نہیں',       hi:'अभी कोई वॉलेट नहीं' },
  'portfolio.emptyHint':       { en:'Add a wallet to see your real portfolio, or restore a backup (v1 or v2).',  es:'Añade una wallet para ver tu portafolio real, o restaura un backup (v1 o v2).',  fr:'Ajoutez un portefeuille pour voir votre portfolio réel, ou restaurez une sauvegarde (v1 ou v2).',  de:'Füge eine Wallet hinzu, um dein echtes Portfolio zu sehen, oder stelle ein Backup wieder her (v1 oder v2).',  it:'Aggiungi un portafoglio per vedere il tuo portfolio reale, o ripristina un backup (v1 o v2).',  pt:'Adicione uma carteira para ver o portfólio real, ou restaure um backup (v1 ou v2).',  ru:'Добавьте кошелёк, чтобы увидеть реальный портфель, или восстановите копию (v1 или v2).',  zh:'添加钱包查看真实组合，或恢复备份 (v1 / v2)。',  ja:'ウォレットを追加して実際のポートフォリオを表示、またはバックアップ (v1/v2) を復元。',  ko:'지갑을 추가하여 실제 포트폴리오를 보거나 백업(v1/v2)을 복원하세요.',  ar:'أضف محفظة لرؤية محفظتك الحقيقية، أو استعد نسخة (v1 أو v2).',  he:'הוסף ארנק כדי לראות את התיק האמיתי, או שחזר גיבוי (v1 או v2).',  ur:'اپنی اصلی پورٹ فولیو دیکھنے کے لیے والیٹ شامل کریں یا بیک اپ (v1/v2) بحال کریں۔',  hi:'वास्तविक पोर्टफ़ोलियो देखने के लिए वॉलेट जोड़ें, या बैकअप (v1/v2) पुनर्स्थापित करें।' },
  'portfolio.addWallet':       { en:'+ Add Wallet',                es:'+ Añadir Wallet',             fr:'+ Ajouter portefeuille',       de:'+ Wallet hinzufügen',          it:'+ Aggiungi portafoglio',       pt:'+ Adicionar carteira',     ru:'+ Добавить кошелёк',         zh:'+ 添加钱包',      ja:'+ ウォレット追加',             ko:'+ 지갑 추가',           ar:'+ أضف محفظة',              he:'+ הוסף ארנק',         ur:'+ والیٹ شامل کریں',          hi:'+ वॉलेट जोड़ें' },
  'portfolio.showWallets':     { en:'Show wallets',                es:'Mostrar wallets',             fr:'Afficher les portefeuilles',   de:'Wallets anzeigen',             it:'Mostra portafogli',            pt:'Mostrar carteiras',        ru:'Показать кошельки',          zh:'显示钱包',        ja:'ウォレットを表示',           ko:'지갑 보이기',           ar:'إظهار المحافظ',            he:'הצג ארנקים',         ur:'والیٹس دکھائیں',             hi:'वॉलेट दिखाएँ' },
  'portfolio.hideWallets':     { en:'Hide wallets',                es:'Ocultar wallets',             fr:'Masquer les portefeuilles',    de:'Wallets ausblenden',           it:'Nascondi portafogli',          pt:'Ocultar carteiras',        ru:'Скрыть кошельки',            zh:'隐藏钱包',        ja:'ウォレットを隠す',           ko:'지갑 숨기기',           ar:'إخفاء المحافظ',            he:'הסתר ארנקים',         ur:'والیٹس چھپائیں',             hi:'वॉलेट छिपाएँ' },
  'portfolio.hideLow':         { en:'Hide low balances',           es:'Ocultar saldos bajos',        fr:'Masquer les petits soldes',    de:'Kleine Guthaben ausblenden',   it:'Nascondi saldi bassi',         pt:'Ocultar saldos baixos',    ru:'Скрыть малые балансы',       zh:'隐藏少量余额',    ja:'低額残高を隠す',             ko:'소액 잔고 숨기기',       ar:'إخفاء الأرصدة الصغيرة',     he:'הסתר יתרות קטנות',     ur:'کم بیلنس چھپائیں',          hi:'कम बैलेंस छिपाएँ' },
  'portfolio.hideLowTip':      { en:'Hide tokens with value ≤ $0.05 from the table. Does not affect net worth or the allocation chart.',  es:'Oculta tokens con valor ≤ $0.05 de la tabla. No afecta al total ni al gráfico de asignación.',  fr:'Masque les jetons avec valeur ≤ 0,05 $ du tableau. N\'affecte ni le total ni la répartition.',  de:'Blendet Tokens mit Wert ≤ 0,05 $ aus der Tabelle aus. Kein Einfluss auf Nettovermögen/Allocation.',  it:'Nasconde i token con valore ≤ $0,05 dalla tabella. Non influisce su net worth o allocazione.',  pt:'Oculta tokens com valor ≤ $0,05 da tabela. Não afeta net worth nem a alocação.',  ru:'Скрывает токены со значением ≤ $0,05 из таблицы. Не влияет на суммарную стоимость и распределение.',  zh:'从表格中隐藏价值 ≤ $0.05 的代币。不影响总资产或分配图。',  ja:'テーブルで価値 ≤ $0.05 のトークンを非表示。合計や配分チャートには影響しません。',  ko:'테이블에서 $0.05 이하 가치의 토큰 숨김. 총 자산/배분 차트에는 영향 없음.',  ar:'يخفي الرموز التي قيمتها ≤ $0.05 من الجدول. لا يؤثر على صافي الثروة أو مخطط التوزيع.',  he:'מסתיר אסימונים בשווי ≤ $0.05 מהטבלה. לא משפיע על ערך נטו או תרשים ההקצאה.',  ur:'ٹیبل سے ≤ $0.05 والیو کے ٹوکن چھپائیں۔ کل یا تقسیم چارٹ متاثر نہیں ہوتا۔',  hi:'तालिका से ≤ $0.05 मूल्य वाले टोकन छिपाता है। कुल या आवंटन चार्ट पर प्रभाव नहीं।' },
  'portfolio.allLowHidden':    { en:'All balances are below the threshold. Turn off the filter to see them.',  es:'Todos los saldos están por debajo del umbral. Desactiva el filtro para verlos.',  fr:'Tous les soldes sont sous le seuil. Désactivez le filtre pour les voir.',  de:'Alle Guthaben liegen unter dem Schwellenwert. Filter deaktivieren, um sie zu sehen.',  it:'Tutti i saldi sono sotto la soglia. Disattiva il filtro per vederli.',  pt:'Todos os saldos estão abaixo do limite. Desative o filtro para vê-los.',  ru:'Все балансы ниже порога. Отключите фильтр, чтобы увидеть.',  zh:'所有余额都低于阈值。关闭筛选以查看。',  ja:'すべての残高が閾値以下です。フィルターをオフにして表示。',  ko:'모든 잔고가 임계값 이하입니다. 필터를 꺼서 확인하세요.',  ar:'جميع الأرصدة أقل من الحد. عطّل الفلتر لرؤيتها.',  he:'כל היתרות מתחת לסף. כבה את המסנן כדי לראותן.',  ur:'تمام بیلنسز حد سے کم ہیں۔ دیکھنے کے لیے فلٹر بند کریں۔',  hi:'सभी बैलेंस सीमा से नीचे हैं। देखने के लिए फ़िल्टर बंद करें।' },

  /* ===== Wallet Add/Details modals ===== */
  'wallet.securityBanner':     { en:'🔒 Read-only. SoraMetrics never asks for your seed or private key — only the public address to show balance and activity. Signing happens in your wallet (Fearless, Polkaswap, Talisman…).',  es:'🔒 Solo-lectura. SoraMetrics nunca pide tu seed ni tu clave privada — únicamente la dirección pública para mostrar saldo y actividad. Las firmas las haces desde tu wallet (Fearless, Polkaswap, Talisman…).',  fr:'🔒 Lecture seule. SoraMetrics ne demande jamais votre seed ni votre clé privée — uniquement l\'adresse publique pour afficher solde et activité. Les signatures se font dans votre portefeuille (Fearless, Polkaswap, Talisman…).',  de:'🔒 Nur-lesen. SoraMetrics fragt niemals nach Seed oder Private Key — nur nach der öffentlichen Adresse. Signieren erfolgt in deiner Wallet (Fearless, Polkaswap, Talisman…).',  it:'🔒 Sola lettura. SoraMetrics non chiede mai seed o chiave privata — solo l\'indirizzo pubblico per saldo e attività. Le firme avvengono nel tuo wallet (Fearless, Polkaswap, Talisman…).',  pt:'🔒 Somente leitura. SoraMetrics nunca pede seed nem chave privada — apenas o endereço público para mostrar saldo e atividade. As assinaturas são feitas na sua carteira (Fearless, Polkaswap, Talisman…).',  ru:'🔒 Только чтение. SoraMetrics никогда не просит сид-фразу или приватный ключ — только публичный адрес для отображения баланса и активности. Подписи — в вашем кошельке (Fearless, Polkaswap, Talisman…).',  zh:'🔒 只读。SoraMetrics 绝不索取助记词或私钥——仅需公共地址用于显示余额和活动。签名请在您的钱包中进行（Fearless、Polkaswap、Talisman…）。',  ja:'🔒 読み取り専用。SoraMetrics はシードや秘密鍵を求めません。公開アドレスのみで残高と履歴を表示します。署名はご自身のウォレット（Fearless、Polkaswap、Talisman…）で行ってください。',  ko:'🔒 읽기 전용. SoraMetrics는 시드 구문이나 개인 키를 요구하지 않으며, 잔액·활동 표시에 공개 주소만 사용합니다. 서명은 Fearless, Polkaswap, Talisman 등 사용자 지갑에서 진행하세요.',  ar:'🔒 قراءة فقط. SoraMetrics لا يطلب أبدًا عبارة الاسترداد أو المفتاح الخاص — فقط العنوان العام لعرض الرصيد والنشاط. التوقيع يتم من محفظتك (Fearless, Polkaswap, Talisman…).',  he:'🔒 קריאה בלבד. SoraMetrics לעולם לא מבקש את ה-seed או המפתח הפרטי — רק הכתובת הציבורית להצגת יתרה ופעילות. החתימות נעשות בארנק שלך (Fearless / Polkaswap / Talisman…).',  ur:'🔒 صرف پڑھنے کے لیے۔ SoraMetrics آپ کی seed یا پرائیویٹ کلید کبھی نہیں مانگتا — صرف بیلنس اور سرگرمی دکھانے کے لیے پبلک ایڈریس۔ دستخط آپ کے والیٹ (Fearless/Polkaswap/Talisman) سے ہوتے ہیں۔',  hi:'🔒 केवल-पढ़ें। SoraMetrics कभी आपकी seed या निजी कुंजी नहीं माँगता — केवल सार्वजनिक पता बैलेंस/गतिविधि दिखाने के लिए। हस्ताक्षर आपके वॉलेट (Fearless/Polkaswap/Talisman…) में होते हैं।' },
  'wallet.aliasOptional':      { en:'Alias (optional)',          es:'Alias (opcional)',          fr:'Alias (optionnel)',       de:'Alias (optional)',       it:'Alias (opzionale)',       pt:'Alias (opcional)',       ru:'Псевдоним (необязательно)', zh:'别名（可选）',     ja:'エイリアス（任意）',        ko:'별칭 (선택)',          ar:'اسم مستعار (اختياري)',      he:'כינוי (לא חובה)',      ur:'عرفیت (اختیاری)',         hi:'उपनाम (वैकल्पिक)' },
  'wallet.aliasPlaceholder':   { en:'E.g. Trading, Savings… (leave empty to use address)',  es:'Ej: Trading, Savings… (si lo dejas vacío se usa la dirección)',  fr:'Ex : Trading, Savings… (laissez vide pour utiliser l\'adresse)',  de:'z.B. Trading, Savings… (leer lassen = Adresse)',  it:'Es: Trading, Savings… (vuoto = indirizzo)',  pt:'Ex: Trading, Savings… (vazio = endereço)',  ru:'Напр: Trading, Savings… (пусто = адрес)',  zh:'例如：Trading、Savings… （留空使用地址）',  ja:'例：Trading, Savings…（空欄でアドレス表示）',  ko:'예: Trading, Savings… (비우면 주소 사용)',  ar:'مثال: Trading, Savings… (اتركه فارغًا لاستخدام العنوان)',  he:'למשל: Trading, Savings… (ריק = הכתובת)',  ur:'جیسے: Trading, Savings… (خالی چھوڑیں تو ایڈریس)',  hi:'जैसे: Trading, Savings… (खाली = पता)' },
  'wallet.publicAddress':      { en:'SORA public address',       es:'Dirección pública SORA',     fr:'Adresse publique SORA',    de:'SORA öffentliche Adresse', it:'Indirizzo pubblico SORA', pt:'Endereço público SORA',  ru:'Публичный адрес SORA',     zh:'SORA 公共地址',    ja:'SORA 公開アドレス',         ko:'SORA 공개 주소',        ar:'العنوان العام لـ SORA',    he:'כתובת ציבורית SORA',   ur:'SORA پبلک ایڈریس',        hi:'SORA सार्वजनिक पता' },
  'wallet.addressPlaceholder': { en:'cnV… (47-49 chars)',        es:'cnV… (47-49 caracteres)',    fr:'cnV… (47-49 car.)',        de:'cnV… (47-49 Zeichen)',     it:'cnV… (47-49 caratteri)',  pt:'cnV… (47-49 caracteres)',ru:'cnV… (47-49 симв.)',         zh:'cnV…（47-49 字符）', ja:'cnV…（47〜49文字）',        ko:'cnV… (47-49자)',         ar:'cnV… (47-49 حرف)',         he:'cnV… (47-49 תווים)',   ur:'cnV… (47-49 حروف)',        hi:'cnV… (47-49 वर्ण)' },
  'wallet.addressInvalidHint': { en:'Address doesn\'t match SORA SS58 format. Must start with cn and be 47-49 chars.',  es:'La dirección no tiene el formato SS58 de SORA. Debe empezar por cn y tener 47-49 caracteres.',  fr:'L\'adresse ne correspond pas au format SS58 de SORA. Doit commencer par cn et faire 47-49 caractères.',  de:'Adresse entspricht nicht dem SS58-Format von SORA. Muss mit cn beginnen, 47-49 Zeichen.',  it:'Indirizzo non nel formato SS58 di SORA. Deve iniziare con cn e avere 47-49 caratteri.',  pt:'Endereço fora do formato SS58 de SORA. Começa com cn e tem 47-49 caracteres.',  ru:'Адрес не в формате SS58 SORA. Должен начинаться с cn и иметь 47-49 символов.',  zh:'地址不是 SORA SS58 格式。需以 cn 开头，47-49 字符。',  ja:'SORA の SS58 形式ではありません。cn で始まる 47〜49 文字が必要です。',  ko:'SORA SS58 형식이 아닙니다. cn으로 시작하고 47-49자여야 합니다.',  ar:'العنوان ليس بصيغة SS58 الخاصة بـ SORA. يبدأ بـ cn وطوله 47-49.',  he:'הכתובת לא בפורמט SS58 של SORA. חייבת להתחיל ב-cn, 47-49 תווים.',  ur:'ایڈریس SORA کے SS58 فارمیٹ میں نہیں۔ cn سے شروع اور 47-49 حروف۔',  hi:'पता SORA SS58 प्रारूप में नहीं। cn से शुरू, 47-49 वर्ण।' },
  'wallet.addressInvalid':     { en:'Invalid SORA address',      es:'Dirección SORA inválida',    fr:'Adresse SORA invalide',    de:'Ungültige SORA-Adresse',   it:'Indirizzo SORA non valido',pt:'Endereço SORA inválido', ru:'Неверный адрес SORA',        zh:'SORA 地址无效',    ja:'SORA アドレスが無効',       ko:'유효하지 않은 SORA 주소',ar:'عنوان SORA غير صالح',       he:'כתובת SORA לא תקינה',  ur:'غلط SORA ایڈریس',          hi:'अमान्य SORA पता' },
  'wallet.cancel':             { en:'Cancel',                    es:'Cancelar',                    fr:'Annuler',                  de:'Abbrechen',                it:'Annulla',                 pt:'Cancelar',               ru:'Отмена',                     zh:'取消',            ja:'キャンセル',                ko:'취소',                  ar:'إلغاء',                    he:'ביטול',                ur:'منسوخ',                    hi:'रद्द करें' },
  'wallet.add':                { en:'Add',                       es:'Añadir',                      fr:'Ajouter',                  de:'Hinzufügen',               it:'Aggiungi',                pt:'Adicionar',              ru:'Добавить',                   zh:'添加',            ja:'追加',                     ko:'추가',                  ar:'إضافة',                    he:'הוסף',                 ur:'شامل',                    hi:'जोड़ें' },
  'wallet.modalTitle':         { en:'Add Wallet',                es:'Añadir Cartera',              fr:'Ajouter portefeuille',     de:'Wallet hinzufügen',        it:'Aggiungi portafoglio',    pt:'Adicionar carteira',     ru:'Добавить кошелёк',           zh:'添加钱包',        ja:'ウォレット追加',            ko:'지갑 추가',              ar:'إضافة محفظة',             he:'הוסף ארנק',           ur:'والیٹ شامل کریں',         hi:'वॉलेट जोड़ें' },
  'wallet.myWallets':          { en:'My Wallets',                es:'Mis Wallets',                 fr:'Mes portefeuilles',        de:'Meine Wallets',            it:'I miei portafogli',       pt:'Minhas carteiras',       ru:'Мои кошельки',               zh:'我的钱包',        ja:'マイウォレット',            ko:'내 지갑',                ar:'محافظي',                  he:'הארנקים שלי',          ur:'میرے والیٹس',             hi:'मेरे वॉलेट' },
  'wallet.follow':             { en:'Follow',                    es:'Seguir',                      fr:'Suivre',                   de:'Folgen',                   it:'Segui',                   pt:'Seguir',                 ru:'Следить',                    zh:'关注',            ja:'フォロー',                 ko:'팔로우',                 ar:'متابعة',                  he:'עקוב',                 ur:'فالو',                    hi:'फ़ॉलो' },
  'wallet.myWalletsTip':       { en:'Add to My Wallets (your own wallets)',     es:'Añadir a Mis Wallets (carteras propias)',     fr:'Ajouter à Mes portefeuilles (vos portefeuilles)',     de:'Zu Meine Wallets hinzufügen (eigene Wallets)',     it:'Aggiungi a I miei portafogli (portafogli propri)',     pt:'Adicionar às Minhas carteiras (carteiras próprias)',     ru:'Добавить в Мои кошельки (свои кошельки)',     zh:'添加到我的钱包（自己的钱包）',     ja:'マイウォレット（自分の）に追加',     ko:'내 지갑(나의 지갑)에 추가',     ar:'أضف إلى محافظي (محافظك الخاصة)',     he:'הוסף ל"הארנקים שלי" (שלך)',     ur:'میرے والیٹس میں شامل (اپنے)',     hi:'मेरे वॉलेट में जोड़ें (अपने)' },
  'wallet.followTip':          { en:'Add to Following (wallets to watch)',     es:'Añadir a Seguidas (carteras a vigilar)',     fr:'Ajouter à Suivis (portefeuilles à surveiller)',     de:'Zu Beobachtete hinzufügen (zu überwachen)',     it:'Aggiungi a Seguiti (portafogli da monitorare)',     pt:'Adicionar a Seguidas (a monitorar)',     ru:'Добавить в Отслеживаемые',     zh:'添加到关注列表',     ja:'ウォッチ中に追加',     ko:'팔로잉에 추가',     ar:'أضف إلى المتابَعة',     he:'הוסף ל"עוקבים"',     ur:'فالو لسٹ میں',     hi:'फ़ॉलो सूची में' },
  'wallet.addedToMyWallets':   { en:'Added to My Wallets',       es:'Añadida a Mis Wallets',       fr:'Ajoutée à Mes portefeuilles', de:'Zu Meine Wallets hinzugefügt', it:'Aggiunto a I miei portafogli', pt:'Adicionada às Minhas carteiras', ru:'Добавлено в Мои кошельки', zh:'已加入我的钱包', ja:'マイウォレットに追加', ko:'내 지갑에 추가됨', ar:'أُضيفت إلى محافظي',      he:'נוסף ל"הארנקים שלי"',  ur:'میرے والیٹس میں شامل',    hi:'मेरे वॉलेट में जोड़ा' },
  'wallet.addedToFollowing':   { en:'Added to Following',         es:'Añadida a Seguidas',          fr:'Ajoutée à Suivis',         de:'Zu Beobachtete hinzugefügt', it:'Aggiunto ai Seguiti',   pt:'Adicionada a Seguidas',  ru:'Добавлено в Отслеживаемые',  zh:'已加入关注',     ja:'ウォッチ中に追加',        ko:'팔로잉에 추가됨',         ar:'أُضيفت إلى المتابَعة',     he:'נוסף ל"עוקבים"',       ur:'فالو لسٹ میں شامل',       hi:'फ़ॉलो सूची में जोड़ा' },
  'wallet.aliasUpdated':       { en:'Alias updated',              es:'Alias actualizado',           fr:'Alias mis à jour',         de:'Alias aktualisiert',       it:'Alias aggiornato',        pt:'Alias atualizado',       ru:'Псевдоним обновлён',         zh:'别名已更新',      ja:'エイリアスを更新',           ko:'별칭 업데이트됨',        ar:'تم تحديث الاسم',            he:'הכינוי עודכן',          ur:'عرفیت اپ ڈیٹ',             hi:'उपनाम अपडेट' },
  'wallet.removed':            { en:'Wallet removed',             es:'Cartera eliminada',           fr:'Portefeuille supprimé',    de:'Wallet entfernt',          it:'Portafoglio rimosso',     pt:'Carteira removida',      ru:'Кошелёк удалён',             zh:'钱包已删除',      ja:'ウォレット削除',             ko:'지갑 삭제됨',            ar:'تمت إزالة المحفظة',        he:'הארנק הוסר',           ur:'والیٹ حذف',                hi:'वॉलेट हटाया' },
  'wallet.removedFromFollowing':{ en:'Removed from Following',    es:'Quitada de Seguidas',         fr:'Retirée de Suivis',        de:'Aus Beobachtete entfernt', it:'Rimosso dai Seguiti',     pt:'Removida de Seguidas',   ru:'Удалено из Отслеживаемых',   zh:'已从关注中移除',  ja:'ウォッチ中から削除',         ko:'팔로잉에서 제거',        ar:'أُزيلت من المتابَعة',       he:'הוסר מ"עוקבים"',       ur:'فالو لسٹ سے ہٹایا',       hi:'फ़ॉलो से हटाया' },
  'wallet.inMyWallets':        { en:'In My Wallets',              es:'En Mis Wallets',              fr:'Dans Mes portefeuilles',   de:'In Meine Wallets',         it:'In I miei portafogli',    pt:'Em Minhas carteiras',    ru:'В Моих кошельках',           zh:'在我的钱包中',   ja:'マイウォレット内',            ko:'내 지갑에 있음',         ar:'في محافظي',                he:'ב"הארנקים שלי"',       ur:'میرے والیٹس میں',         hi:'मेरे वॉलेट में' },
  'wallet.inFollowing':        { en:'In Following',               es:'En Seguidas',                 fr:'Dans Suivis',              de:'In Beobachtete',           it:'Nei Seguiti',             pt:'Em Seguidas',            ru:'В Отслеживаемых',            zh:'在关注中',        ja:'ウォッチ中',                ko:'팔로잉에 있음',          ar:'في المتابَعة',             he:'ב"עוקבים"',            ur:'فالو لسٹ میں',            hi:'फ़ॉलो में' },
  'wallet.savePrompt':         { en:'Save this wallet',           es:'Guardar esta wallet',         fr:'Enregistrer ce portefeuille', de:'Diese Wallet speichern', it:'Salva questo portafoglio', pt:'Salvar esta carteira',    ru:'Сохранить этот кошелёк',      zh:'保存此钱包',      ja:'このウォレットを保存',        ko:'이 지갑 저장',           ar:'احفظ هذه المحفظة',         he:'שמור את הארנק הזה',    ur:'یہ والیٹ محفوظ کریں',     hi:'यह वॉलेट सहेजें' },
  'wallet.alias':              { en:'Alias',                      es:'Alias',                       fr:'Alias',                    de:'Alias',                    it:'Alias',                   pt:'Alias',                  ru:'Псевдоним',                  zh:'别名',            ja:'エイリアス',                ko:'별칭',                   ar:'اسم مستعار',               he:'כינוי',                ur:'عرفیت',                   hi:'उपनाम' },
  'wallet.save':               { en:'Save',                       es:'Guardar',                     fr:'Enregistrer',              de:'Speichern',                it:'Salva',                   pt:'Salvar',                 ru:'Сохранить',                  zh:'保存',            ja:'保存',                     ko:'저장',                   ar:'حفظ',                     he:'שמור',                 ur:'محفوظ',                   hi:'सहेजें' },
  'wallet.myWalletsDesc':      { en:'My Wallets = your own wallets · Following = other wallets you want to watch.',  es:'Mis Wallets = tus carteras propias · Seguidas = otras carteras que quieres vigilar.',  fr:'Mes portefeuilles = les vôtres · Suivis = autres portefeuilles à surveiller.',  de:'Meine Wallets = eigene Wallets · Beobachtete = weitere Wallets, die du beobachten willst.',  it:'I miei portafogli = i tuoi · Seguiti = altri portafogli da monitorare.',  pt:'Minhas carteiras = próprias · Seguidas = outras carteiras a monitorar.',  ru:'Мои кошельки = свои · Отслеживаемые = другие для наблюдения.',  zh:'我的钱包 = 自己的 · 关注 = 想监控的其他钱包。',  ja:'マイウォレット = 自分の · ウォッチ中 = 監視したい他のウォレット。',  ko:'내 지갑 = 본인 · 팔로잉 = 관찰할 기타 지갑.',  ar:'محافظي = الخاصة بك · المتابَعة = محافظ أخرى تراقبها.',  he:'הארנקים שלי = שלך · עוקבים = ארנקים נוספים שתרצה לעקוב אחריהם.',  ur:'میرے والیٹس = اپنے · فالو = وہ دیگر والیٹس جنہیں آپ دیکھنا چاہیں۔',  hi:'मेरे वॉलेट = अपने · फ़ॉलो = निगरानी के लिए अन्य वॉलेट।' },
  'wallet.remove':             { en:'Remove',                es:'Eliminar',               fr:'Supprimer',             de:'Entfernen',            it:'Rimuovi',             pt:'Remover',             ru:'Удалить',               zh:'删除',          ja:'削除',            ko:'삭제',            ar:'حذف',               he:'הסר',          ur:'حذف',           hi:'हटाएँ' },
  'wallet.removeConfirm':      { en:'Remove',                es:'¿Eliminar',              fr:'Supprimer',             de:'Entfernen',            it:'Rimuovere',           pt:'Remover',             ru:'Удалить',               zh:'删除',          ja:'削除',            ko:'삭제',            ar:'حذف',               he:'הסר',          ur:'حذف',           hi:'हटाएँ' },
  'wallet.removeWarn':         { en:'This cannot be undone.', es:'No se puede deshacer.',  fr:'Irréversible.',         de:'Nicht rückgängig zu machen.', it:'Non annullabile.',  pt:'Irreversível.',       ru:'Это необратимо.',       zh:'无法撤销。',     ja:'元に戻せません。', ko:'되돌릴 수 없습니다.', ar:'لا يمكن التراجع.',    he:'לא ניתן לבטל.', ur:'واپس نہیں ہوگا۔', hi:'पूर्ववत नहीं होगा।' },
  'wallet.removeYes':          { en:'Yes, remove',           es:'Sí, eliminar',           fr:'Oui, supprimer',        de:'Ja, entfernen',        it:'Sì, rimuovi',         pt:'Sim, remover',        ru:'Да, удалить',           zh:'是，删除',      ja:'はい、削除',       ko:'예, 삭제',         ar:'نعم، احذف',        he:'כן, הסר',      ur:'ہاں، حذف کریں', hi:'हाँ, हटाएँ' },
  'wallet.moveToFollowingTip': { en:'Move this wallet to Following (read-only watch list)',  es:'Mover esta wallet a Seguidas (lista de solo-lectura)',  fr:'Déplacer ce portefeuille vers Suivis (lecture seule)',  de:'Diese Wallet zu Beobachtete verschieben (nur-lesen)',  it:'Sposta questo portafoglio in Seguiti (solo lettura)',  pt:'Mover esta carteira para Seguidas (somente leitura)',  ru:'Переместить в Отслеживаемые (только чтение)',  zh:'将此钱包移至关注（只读）',  ja:'このウォレットをウォッチ中へ移動（読み取り専用）',  ko:'이 지갑을 팔로잉으로 이동 (읽기 전용)',  ar:'نقل هذه المحفظة إلى المتابَعة (قراءة فقط)',  he:'העבר ארנק זה ל"עוקבים" (קריאה בלבד)',  ur:'اس والیٹ کو فالو میں منتقل کریں',  hi:'इस वॉलेट को फ़ॉलो में ले जाएँ' },
  'wallet.moveToMyWalletsTip': { en:'Move this wallet to My Wallets (your own)',  es:'Mover esta wallet a Mis Wallets (carteras propias)',  fr:'Déplacer vers Mes portefeuilles (les vôtres)',  de:'Nach Meine Wallets verschieben (eigene)',  it:'Sposta in I miei portafogli (propri)',  pt:'Mover para Minhas carteiras (próprias)',  ru:'Переместить в Мои кошельки (свои)',  zh:'移至我的钱包（自己的）',  ja:'マイウォレット（自分の）へ移動',  ko:'내 지갑(나의 지갑)으로 이동',  ar:'نقل إلى محافظي (الخاصة بك)',  he:'העבר ל"הארנקים שלי" (שלך)',  ur:'میرے والیٹس میں منتقل',  hi:'मेरे वॉलेट में ले जाएँ' },

  /* ===== Full Explorer modal (Pulse → blocks) ===== */
  'explorer.title':            { en:'Block Explorer',               es:'Explorador de bloques',         fr:'Explorateur de blocs',      de:'Block-Explorer',          it:'Esploratore di blocchi',   pt:'Explorador de blocos',     ru:'Обозреватель блоков',      zh:'区块浏览器',      ja:'ブロックエクスプローラ',     ko:'블록 탐색기',          ar:'مستكشف الكتل',             he:'סייר בלוקים',          ur:'بلاک ایکسپلورر',          hi:'ब्लॉक एक्सप्लोरर' },
  'explorer.sub':              { en:'Paginate backwards or jump to any block', es:'Pagina hacia atrás o salta a cualquier bloque', fr:'Paginez en arrière ou sautez à un bloc', de:'Rückwärts blättern oder zu einem Block springen', it:'Scorri indietro o salta a un blocco', pt:'Pagine para trás ou salte para qualquer bloco', ru:'Листайте назад или перейдите к любому блоку', zh:'向前翻页或跳转到任意区块', ja:'遡ってページング、または任意のブロックへジャンプ', ko:'뒤로 페이징하거나 특정 블록으로 이동', ar:'تصفح إلى الخلف أو اقفز إلى أي كتلة', he:'דפדוף אחורה או קפיצה לבלוק', ur:'پیچھے کریں یا کسی بلاک پر جائیں', hi:'पीछे जाएँ या किसी ब्लॉक पर कूदें' },
  'explorer.gotoPlaceholder':  { en:'Go to block #…',                es:'Ir a bloque #…',                fr:'Aller au bloc #…',          de:'Zu Block #… gehen',       it:'Vai al blocco #…',         pt:'Ir ao bloco #…',           ru:'К блоку #…',                zh:'跳转到 #…',       ja:'ブロック #… へ',             ko:'블록 #… 로 이동',        ar:'اذهب إلى الكتلة #…',        he:'עבור לבלוק #…',        ur:'بلاک #… پر جائیں',         hi:'ब्लॉक #… पर जाएँ' },
  'explorer.go':               { en:'Go',                            es:'Ir',                            fr:'Aller',                     de:'Los',                     it:'Vai',                      pt:'Ir',                       ru:'Перейти',                   zh:'跳转',            ja:'移動',                      ko:'이동',                    ar:'اذهب',                      he:'עבור',                 ur:'جائیں',                    hi:'जाएँ' },
  'explorer.latest':           { en:'Latest',                        es:'Último',                        fr:'Dernier',                   de:'Neueste',                 it:'Ultimo',                   pt:'Último',                   ru:'Последний',                 zh:'最新',            ja:'最新',                      ko:'최신',                    ar:'الأحدث',                   he:'האחרון',               ur:'تازہ',                     hi:'नवीनतम' },
  'explorer.newer':            { en:'Newer',                         es:'Más reciente',                  fr:'Plus récent',               de:'Neuer',                   it:'Più recente',              pt:'Mais recente',             ru:'Новее',                     zh:'较新',            ja:'より新しい',                ko:'최신 쪽',                 ar:'الأحدث',                   he:'חדש יותר',             ur:'نیا',                       hi:'नया' },
  'explorer.older':            { en:'Older',                         es:'Más antiguo',                   fr:'Plus ancien',               de:'Älter',                   it:'Più vecchio',              pt:'Mais antigo',              ru:'Старее',                    zh:'较旧',            ja:'より古い',                  ko:'이전 쪽',                 ar:'الأقدم',                   he:'ישן יותר',             ur:'پرانا',                    hi:'पुराना' },
  'explorer.col.block':        { en:'Block',                         es:'Bloque',                        fr:'Bloc',                      de:'Block',                   it:'Blocco',                   pt:'Bloco',                    ru:'Блок',                      zh:'区块',            ja:'ブロック',                  ko:'블록',                    ar:'كتلة',                      he:'בלוק',                 ur:'بلاک',                     hi:'ब्लॉक' },
  'explorer.col.time':         { en:'Time',                          es:'Hora',                          fr:'Heure',                     de:'Zeit',                    it:'Ora',                      pt:'Hora',                     ru:'Время',                     zh:'时间',            ja:'時刻',                      ko:'시간',                    ar:'الوقت',                    he:'זמן',                  ur:'وقت',                      hi:'समय' },
  'explorer.col.validator':    { en:'Validator',                     es:'Validator',                     fr:'Validateur',                de:'Validator',               it:'Validatore',               pt:'Validador',                ru:'Валидатор',                 zh:'验证者',          ja:'バリデータ',                ko:'검증자',                  ar:'المُصدّق',                  he:'ולידטור',              ur:'تصدیق کنندہ',             hi:'सत्यापनकर्ता' },
  'explorer.col.extrinsics':   { en:'Extrinsics',                    es:'Extrínsecos',                   fr:'Extrinsèques',              de:'Extrinsics',              it:'Extrinsic',                pt:'Extrínsecos',              ru:'Экстринсики',               zh:'外部交易',        ja:'エクストリンシック',           ko:'익스트린식',               ar:'المعاملات',                 he:'אקסטרינסיקים',         ur:'ایکسٹرنسکس',                hi:'एक्सट्रिंसिक्स' },
  'explorer.col.hash':         { en:'Hash',                          es:'Hash',                          fr:'Hash',                      de:'Hash',                    it:'Hash',                     pt:'Hash',                     ru:'Хэш',                       zh:'哈希',            ja:'ハッシュ',                  ko:'해시',                    ar:'الهاش',                    he:'האש',                  ur:'ہیش',                      hi:'हैश' },
  'explorer.loading':          { en:'Loading…',                      es:'Cargando…',                     fr:'Chargement…',               de:'Wird geladen…',           it:'Caricamento…',             pt:'Carregando…',              ru:'Загрузка…',                 zh:'加载中…',         ja:'読み込み中…',                ko:'불러오는 중…',             ar:'جارٍ التحميل…',              he:'טוען…',                ur:'لوڈ ہو رہا ہے…',           hi:'लोड हो रहा है…' },
  'explorer.empty':            { en:'No blocks in this range.',      es:'Sin bloques en este rango.',    fr:'Aucun bloc dans cet intervalle.', de:'Keine Blöcke in diesem Bereich.', it:'Nessun blocco in questo intervallo.', pt:'Sem blocos neste intervalo.', ru:'В этом диапазоне нет блоков.', zh:'此范围内无区块。',  ja:'この範囲にブロックはありません。',   ko:'이 범위에 블록이 없습니다.', ar:'لا توجد كتل في هذا النطاق.',   he:'אין בלוקים בטווח הזה.',  ur:'اس رینج میں کوئی بلاک نہیں۔', hi:'इस रेंज में कोई ब्लॉक नहीं।' },

  /* ===== Governance · body strings (tabs stay in Spanish as proper names) ===== */
  'gov.council.members':       { en:'Council members',           es:'Miembros del Consejo',      fr:'Membres du Conseil',        de:'Council-Mitglieder',       it:'Membri del Consiglio',    pt:'Membros do Conselho',    ru:'Члены Совета',             zh:'理事会成员',     ja:'評議会メンバー',            ko:'의회 구성원',           ar:'أعضاء المجلس',           he:'חברי המועצה',         ur:'کونسل کے ارکان',          hi:'परिषद सदस्य' },
  'gov.council.seatsFilled':   { en:'{n} seats filled',          es:'{n} asientos ocupados',     fr:'{n} sièges occupés',        de:'{n} Sitze besetzt',        it:'{n} seggi occupati',      pt:'{n} assentos ocupados',  ru:'Занято мест: {n}',          zh:'已占 {n} 席位',   ja:'占有議席 {n}',               ko:'{n}석 채움',              ar:'{n} مقاعد مشغولة',        he:'{n} מושבים מאוישים',    ur:'{n} سیٹیں بھری',          hi:'{n} सीटें भरी' },
  'gov.col.joined':            { en:'Joined (era)',              es:'Se unió (era)',             fr:'Rejoint (ère)',             de:'Beigetreten (Ära)',        it:'Entrato (era)',           pt:'Entrou (era)',           ru:'Вступил (эра)',            zh:'加入 (era)',     ja:'参加 (era)',                ko:'가입 (era)',             ar:'انضم (era)',              he:'הצטרף (era)',          ur:'شامل (era)',              hi:'शामिल (era)' },
  'gov.col.votesCast':         { en:'Votes cast',                es:'Votos emitidos',            fr:'Votes exprimés',            de:'Abgegebene Stimmen',       it:'Voti espressi',           pt:'Votos emitidos',         ru:'Поданные голоса',          zh:'已投票',         ja:'投じられた票',               ko:'투표 수',                ar:'الأصوات المُدلى بها',      he:'הצבעות שניתנו',        ur:'ڈالے گئے ووٹ',             hi:'डाले गए वोट' },
  'gov.col.title':             { en:'Title',                     es:'Título',                    fr:'Titre',                     de:'Titel',                    it:'Titolo',                  pt:'Título',                 ru:'Заголовок',               zh:'标题',           ja:'タイトル',                  ko:'제목',                   ar:'العنوان',                 he:'כותרת',                ur:'عنوان',                    hi:'शीर्षक' },
  'gov.col.seconds':           { en:'Endorsements',              es:'Respaldos',                 fr:'Soutiens',                  de:'Unterstützungen',          it:'Sostegni',                pt:'Apoios',                 ru:'Поддержки',                zh:'支持数',         ja:'賛同',                     ko:'지지',                   ar:'التأييدات',               he:'תמיכות',               ur:'حمایتیں',                  hi:'समर्थन' },
  'gov.col.deposit':           { en:'Deposit',                   es:'Depósito',                  fr:'Dépôt',                     de:'Einlage',                  it:'Deposito',                pt:'Depósito',               ru:'Депозит',                  zh:'押金',           ja:'デポジット',                ko:'예치금',                 ar:'إيداع',                   he:'פיקדון',               ur:'ڈپازٹ',                   hi:'जमा' },
  'gov.elections.candidates':  { en:'Current candidates',        es:'Candidatos actuales',       fr:'Candidats actuels',         de:'Aktuelle Kandidaten',      it:'Candidati attuali',       pt:'Candidatos atuais',      ru:'Текущие кандидаты',        zh:'当前候选人',     ja:'現在の候補者',               ko:'현재 후보',              ar:'المرشحون الحاليون',        he:'מועמדים נוכחיים',      ur:'موجودہ امیدوار',           hi:'वर्तमान उम्मीदवार' },
  'gov.elections.runnersUp':   { en:'Runners-up',                es:'Suplentes',                 fr:'Suppléants',                de:'Nachrücker',               it:'Supplenti',               pt:'Suplentes',              ru:'Запасные',                 zh:'候补',           ja:'次点',                     ko:'차점자',                 ar:'البدلاء',                 he:'ממלאי מקום',           ur:'متبادل',                   hi:'उपविजेता' },
  'gov.elections.bond':        { en:'Bond',                      es:'Fianza',                    fr:'Caution',                   de:'Kaution',                  it:'Cauzione',                pt:'Caução',                 ru:'Залог',                    zh:'保证金',         ja:'保証金',                   ko:'보증금',                 ar:'الكفالة',                 he:'ערבות',                ur:'ضمانت',                   hi:'जमानत' },
  'gov.elections.seatsCovered':{ en:'seats filled · next vote in', es:'asientos cubiertos · siguiente votación en', fr:'sièges occupés · prochain vote dans', de:'Sitze belegt · nächste Wahl in', it:'seggi occupati · prossimo voto in', pt:'assentos preenchidos · próxima votação em', ru:'мест занято · следующее голосование через', zh:'席位已占 · 下次投票还有', ja:'議席充足 · 次回投票まで', ko:'좌석 채움 · 다음 투표까지', ar:'المقاعد مشغولة · التصويت القادم خلال', he:'מושבים מאוישים · הצבעה הבאה בעוד', ur:'سیٹیں بھری · اگلا ووٹ', hi:'सीटें भरी · अगला वोट' },
  'gov.elections.eras':        { en:'eras',                      es:'eras',                      fr:'ères',                      de:'Ären',                     it:'ere',                     pt:'eras',                   ru:'эр',                       zh:'eras',           ja:'eras',                    ko:'eras',                   ar:'عصور',                    he:'עידנים',               ur:'ادوار',                   hi:'युग' },
  'gov.motions.title':         { en:'Active and recent motions', es:'Mociones activas y recientes', fr:'Motions actives et récentes', de:'Aktive und jüngste Anträge', it:'Mozioni attive e recenti', pt:'Moções ativas e recentes', ru:'Активные и недавние предложения', zh:'活跃和近期动议', ja:'アクティブ・最近の動議',       ko:'활성 및 최근 동의',       ar:'الاقتراحات النشطة والحديثة', he:'הצעות פעילות וחדשות',  ur:'فعال اور حالیہ تحریکیں',   hi:'सक्रिय व हालिया प्रस्ताव' },
  'gov.motions.proposedBy':    { en:'Proposed by',               es:'Propuesta por',             fr:'Proposé par',               de:'Vorgeschlagen von',        it:'Proposto da',             pt:'Proposto por',           ru:'Предложено',               zh:'提议人',         ja:'提案者',                   ko:'제안자',                 ar:'اقترحه',                  he:'הוצע על ידי',          ur:'تجویز کردہ',              hi:'प्रस्तावक' },
  'gov.status.open':           { en:'Open',                      es:'Abierta',                   fr:'Ouverte',                   de:'Offen',                    it:'Aperta',                  pt:'Aberta',                 ru:'Открыто',                  zh:'开放',           ja:'受付中',                   ko:'오픈',                    ar:'مفتوحة',                  he:'פתוחה',                ur:'کھلا',                    hi:'खुला' },
  'gov.status.passed':         { en:'Approved',                  es:'Aprobada',                  fr:'Approuvée',                 de:'Angenommen',               it:'Approvata',               pt:'Aprovada',               ru:'Одобрено',                 zh:'通过',           ja:'可決',                     ko:'승인',                    ar:'تمت الموافقة',             he:'אושרה',                ur:'منظور',                   hi:'स्वीकृत' },
  'gov.status.rejected':       { en:'Rejected',                  es:'Rechazada',                 fr:'Rejetée',                   de:'Abgelehnt',                it:'Respinta',                pt:'Rejeitada',              ru:'Отклонено',                zh:'驳回',           ja:'否決',                     ko:'거부',                    ar:'مرفوضة',                   he:'נדחתה',                ur:'مسترد',                   hi:'अस्वीकृत' },
  'gov.democracy.referendums': { en:'Active referendums',        es:'Referéndums en curso',      fr:'Référendums en cours',      de:'Aktive Referenden',        it:'Referendum in corso',     pt:'Referendos ativos',      ru:'Активные референдумы',     zh:'进行中的公投',    ja:'実施中の国民投票',           ko:'진행 중 국민투표',         ar:'الاستفتاءات النشطة',       he:'משאלים פעילים',        ur:'فعال ریفرنڈم',            hi:'सक्रिय जनमत' },
  'gov.democracy.noReferendums':{en:'No active referendums.',    es:'No hay referéndums activos.',fr:'Aucun référendum actif.',  de:'Keine aktiven Referenden.',it:'Nessun referendum attivo.',pt:'Sem referendos ativos.', ru:'Нет активных референдумов.', zh:'当前无公投。',    ja:'実施中の国民投票はありません。', ko:'진행 중인 국민투표 없음.', ar:'لا توجد استفتاءات نشطة.', he:'אין משאלים פעילים.',   ur:'کوئی فعال ریفرنڈم نہیں۔', hi:'कोई सक्रिय जनमत नहीं।' },
  'gov.democracy.endsIn':      { en:'Ends in',                   es:'Termina en',                fr:'Se termine dans',           de:'Endet in',                 it:'Finisce in',              pt:'Termina em',             ru:'Заканчивается через',      zh:'结束于',         ja:'終了まで',                  ko:'종료까지',                ar:'ينتهي خلال',               he:'מסתיים בעוד',          ur:'ختم ہوگا',                hi:'समाप्त होगा' },
  'gov.democracy.turnout':     { en:'Turnout',                   es:'Participación',             fr:'Participation',             de:'Beteiligung',              it:'Partecipazione',          pt:'Participação',           ru:'Участие',                  zh:'参与率',         ja:'投票率',                   ko:'참여율',                  ar:'نسبة المشاركة',           he:'שיעור הצבעה',          ur:'شرح شرکت',                hi:'भागीदारी' },
  'gov.democracy.publicProposals':{en:'Public proposals',        es:'Propuestas públicas',       fr:'Propositions publiques',    de:'Öffentliche Vorschläge',   it:'Proposte pubbliche',      pt:'Propostas públicas',     ru:'Публичные предложения',    zh:'公共提案',       ja:'公開提案',                  ko:'공개 제안',               ar:'المقترحات العامة',         he:'הצעות ציבוריות',       ur:'عوامی تجاویز',            hi:'सार्वजनिक प्रस्ताव' },
  'gov.democracy.noProposals': { en:'No active public proposals.', es:'Sin propuestas públicas activas.', fr:'Aucune proposition publique active.', de:'Keine aktiven öffentlichen Vorschläge.', it:'Nessuna proposta pubblica attiva.', pt:'Sem propostas públicas ativas.', ru:'Нет активных публичных предложений.', zh:'当前无公共提案。', ja:'現在、公開提案はありません。', ko:'활성 공개 제안 없음.', ar:'لا توجد مقترحات عامة نشطة.', he:'אין הצעות ציבוריות פעילות.', ur:'کوئی فعال عوامی تجاویز نہیں۔', hi:'कोई सक्रिय सार्वजनिक प्रस्ताव नहीं।' },
  'gov.tech.members':          { en:'Technical Committee members', es:'Miembros del Comité Técnico', fr:'Membres du Comité Technique', de:'Mitglieder des Technical Committee', it:'Membri del Comitato Tecnico', pt:'Membros do Comitê Técnico', ru:'Члены Технического комитета', zh:'技术委员会成员', ja:'技術委員会メンバー',   ko:'기술 위원회 구성원',      ar:'أعضاء اللجنة الفنية',     he:'חברי הוועדה הטכנית',   ur:'تکنیکی کمیٹی کے ارکان',    hi:'तकनीकी समिति सदस्य' },
  'gov.tech.motions':          { en:'Technical motions',         es:'Mociones técnicas',         fr:'Motions techniques',        de:'Technische Anträge',       it:'Mozioni tecniche',        pt:'Moções técnicas',        ru:'Технические предложения',  zh:'技术动议',       ja:'技術的動議',                ko:'기술 동의',               ar:'الاقتراحات الفنية',        he:'הצעות טכניות',         ur:'تکنیکی تحریکیں',          hi:'तकनीकी प्रस्ताव' },

  /* ===== Pool activity (global + per-pool modal) ===== */
  'pool.activity.title':       { en:'Activity',                    es:'Activity',                  fr:'Activité',                 de:'Aktivität',              it:'Attività',              pt:'Atividade',             ru:'Активность',            zh:'活动',           ja:'アクティビティ',           ko:'활동',                ar:'النشاط',                  he:'פעילות',             ur:'سرگرمی',                hi:'गतिविधि' },
  'pool.activity.globalTitle': { en:'Global liquidity activity',   es:'Actividad global de liquidez', fr:'Activité de liquidité globale', de:'Globale Liquiditätsaktivität', it:'Attività globale di liquidità', pt:'Atividade global de liquidez', ru:'Глобальная активность ликвидности', zh:'全局流动性活动', ja:'グローバル流動性アクティビティ', ko:'전체 유동성 활동', ar:'نشاط السيولة العام', he:'פעילות נזילות כוללת', ur:'عالمی لیکویڈٹی سرگرمی', hi:'वैश्विक तरलता गतिविधि' },
  'pool.activity.empty':       { en:'No recent activity in this pool.', es:'Sin actividad reciente en este pool.', fr:'Aucune activité récente dans ce pool.', de:'Keine jüngste Aktivität in diesem Pool.', it:'Nessuna attività recente in questo pool.', pt:'Sem atividade recente neste pool.', ru:'В этом пуле нет недавней активности.', zh:'此池无最近活动。', ja:'このプールに最近のアクティビティはありません。', ko:'이 풀에 최근 활동이 없습니다.', ar:'لا يوجد نشاط حديث في هذا المجمع.', he:'אין פעילות אחרונה בבריכה זו.', ur:'اس پول میں حالیہ سرگرمی نہیں۔', hi:'इस पूल में हाल की गतिविधि नहीं।' },
  'pool.activity.loading':     { en:'Loading activity...',         es:'Cargando actividad...',     fr:'Chargement de l\'activité...', de:'Aktivität wird geladen...', it:'Caricamento attività...', pt:'Carregando atividade...', ru:'Загрузка активности...', zh:'加载活动中...',    ja:'アクティビティを読み込み中...', ko:'활동 불러오는 중...',  ar:'جارٍ تحميل النشاط...',     he:'טוען פעילות...',      ur:'سرگرمی لوڈ ہو رہی...',    hi:'गतिविधि लोड हो रही...' },
  'pool.activity.noneRecent':  { en:'No recent activity',          es:'Sin actividad reciente',    fr:'Aucune activité récente',  de:'Keine jüngste Aktivität',it:'Nessuna attività recente', pt:'Sem atividade recente', ru:'Нет недавней активности',  zh:'无最近活动',      ja:'最近のアクティビティなし',    ko:'최근 활동 없음',       ar:'لا يوجد نشاط حديث',        he:'אין פעילות אחרונה',    ur:'کوئی حالیہ سرگرمی نہیں',    hi:'कोई हाल की गतिविधि नहीं' },
  'pool.activity.dateFilterTip':{en:'Filter events before this date/time', es:'Filtrar eventos anteriores a esta fecha/hora', fr:'Filtrer les événements avant cette date/heure', de:'Ereignisse vor diesem Datum/Uhrzeit filtern', it:'Filtra eventi precedenti a data/ora', pt:'Filtrar eventos anteriores a esta data/hora', ru:'Фильтр: события до этой даты/времени', zh:'筛选此日期/时间之前的事件', ja:'この日時より前のイベントでフィルタ', ko:'이 날짜/시간 이전 이벤트 필터', ar:'تصفية الأحداث قبل هذا التاريخ/الوقت', he:'סינון אירועים לפני תאריך/שעה זו', ur:'اس تاریخ/وقت سے پہلے کے واقعات', hi:'इस तिथि/समय से पहले की घटनाएँ' },
  'pool.activity.events':      { en:'events',                      es:'eventos',                   fr:'événements',               de:'Ereignisse',             it:'eventi',                pt:'eventos',               ru:'событий',                zh:'事件',           ja:'イベント',                ko:'이벤트',                ar:'أحداث',                    he:'אירועים',             ur:'واقعات',                   hi:'घटनाएँ' },
  'pool.activity.add':         { en:'Add',                         es:'Depósito',                  fr:'Ajout',                    de:'Hinzufügen',             it:'Aggiunta',              pt:'Adição',                ru:'Добавление',             zh:'添加',           ja:'追加',                    ko:'추가',                ar:'إضافة',                    he:'הוספה',               ur:'اضافہ',                    hi:'जोड़' },
  'pool.activity.remove':      { en:'Remove',                      es:'Retiro',                    fr:'Retrait',                  de:'Entfernen',              it:'Rimozione',             pt:'Retirada',              ru:'Изъятие',                zh:'移除',           ja:'削除',                    ko:'제거',                ar:'إزالة',                    he:'הסרה',                ur:'ہٹانا',                    hi:'हटाएँ' },
  'pool.activity.pageHead':    { en:'Latest page',                 es:'Página más reciente',       fr:'Page la plus récente',     de:'Neueste Seite',          it:'Pagina più recente',    pt:'Página mais recente',   ru:'Самая свежая страница',  zh:'最新页',         ja:'最新ページ',              ko:'최신 페이지',           ar:'أحدث صفحة',                he:'עמוד האחרון',         ur:'تازہ ترین صفحہ',           hi:'नवीनतम पृष्ठ' },
  'pool.activity.pageN':       { en:'Page {n}',                    es:'Página {n}',                fr:'Page {n}',                 de:'Seite {n}',              it:'Pagina {n}',            pt:'Página {n}',            ru:'Страница {n}',           zh:'第 {n} 页',     ja:'{n} ページ',              ko:'{n} 페이지',            ar:'صفحة {n}',                 he:'עמוד {n}',            ur:'صفحہ {n}',                 hi:'पृष्ठ {n}' },
  'pool.col.time':             { en:'Time',                        es:'Hora',                      fr:'Heure',                    de:'Zeit',                   it:'Ora',                   pt:'Hora',                  ru:'Время',                  zh:'时间',           ja:'時刻',                    ko:'시간',                ar:'الوقت',                   he:'זמן',                 ur:'وقت',                      hi:'समय' },
  'pool.col.block':            { en:'Block',                       es:'Bloque',                    fr:'Bloc',                     de:'Block',                  it:'Blocco',                pt:'Bloco',                 ru:'Блок',                   zh:'区块',           ja:'ブロック',                ko:'블록',                ar:'كتلة',                     he:'בלוק',                ur:'بلاک',                     hi:'ब्लॉक' },
  'pool.col.pair':             { en:'Pair',                        es:'Par',                       fr:'Paire',                    de:'Paar',                   it:'Coppia',                pt:'Par',                   ru:'Пара',                   zh:'交易对',         ja:'ペア',                    ko:'페어',                ar:'الزوج',                   he:'זוג',                 ur:'جوڑا',                     hi:'जोड़ी' },
  'pool.col.type':             { en:'Type',                        es:'Tipo',                      fr:'Type',                     de:'Typ',                    it:'Tipo',                  pt:'Tipo',                  ru:'Тип',                    zh:'类型',           ja:'種類',                    ko:'유형',                ar:'النوع',                   he:'סוג',                 ur:'قسم',                      hi:'प्रकार' },
  'pool.col.amount':           { en:'Amount',                      es:'Cantidad',                  fr:'Montant',                  de:'Betrag',                 it:'Quantità',              pt:'Quantia',               ru:'Количество',             zh:'数量',           ja:'数量',                    ko:'수량',                ar:'المقدار',                  he:'כמות',                ur:'مقدار',                    hi:'राशि' },

  /* ===== Generic small strings used in multiple places ===== */
  'common.loading':            { en:'Loading…',                    es:'Cargando…',                 fr:'Chargement…',              de:'Wird geladen…',          it:'Caricamento…',          pt:'Carregando…',           ru:'Загрузка…',              zh:'加载中…',        ja:'読み込み中…',             ko:'불러오는 중…',          ar:'جارٍ التحميل…',            he:'טוען…',               ur:'لوڈ ہو رہا ہے…',          hi:'लोड हो रहा है…' },
  'common.loadingShort':       { en:'loading',                     es:'cargando',                  fr:'chargement',               de:'lädt',                   it:'caricamento',           pt:'carregando',            ru:'загрузка',               zh:'加载中',         ja:'読込中',                  ko:'로딩',                ar:'جاري التحميل',             he:'טוען',                ur:'لوڈ',                      hi:'लोड' },
  'common.refresh':            { en:'Refresh',                     es:'Actualizar',                fr:'Actualiser',               de:'Aktualisieren',          it:'Aggiorna',              pt:'Atualizar',             ru:'Обновить',               zh:'刷新',           ja:'更新',                    ko:'새로고침',              ar:'تحديث',                    he:'רענן',                ur:'ریفریش',                   hi:'रिफ़्रेश' },
  'common.clear':              { en:'Clear',                       es:'Limpiar',                   fr:'Effacer',                  de:'Löschen',                it:'Pulisci',               pt:'Limpar',                ru:'Очистить',               zh:'清除',           ja:'クリア',                  ko:'지우기',                ar:'مسح',                      he:'נקה',                 ur:'صاف کریں',                 hi:'साफ़ करें' },
  'wallet.openTip':            { en:'Open wallet',                 es:'Abrir wallet',              fr:'Ouvrir le portefeuille',   de:'Wallet öffnen',          it:'Apri portafoglio',      pt:'Abrir carteira',        ru:'Открыть кошелёк',        zh:'打开钱包',       ja:'ウォレットを開く',         ko:'지갑 열기',             ar:'افتح المحفظة',             he:'פתח ארנק',            ur:'والیٹ کھولیں',            hi:'वॉलेट खोलें' },
};

/* ========================== Context / provider ========================== */
const LangContext = createContext({ lang: 'es', setLang: () => {}, t: (k) => k, dir: 'ltr', locale: 'es-ES' });

const BCP47 = {
  es: 'es-ES', en: 'en-US', fr: 'fr-FR', de: 'de-DE', it: 'it-IT', pt: 'pt-PT',
  ru: 'ru-RU', zh: 'zh-CN', ja: 'ja-JP', ko: 'ko-KR', ar: 'ar-SA', he: 'he-IL',
  ur: 'ur-PK', hi: 'hi-IN',
};

function LangProvider({ children }) {
  const [lang, setLangState] = useState(() => {
    try {
      const saved = localStorage.getItem('sorametrics.lang');
      if (saved && LANG_BY_CODE[saved]) return saved;
    } catch (_) {}
    return 'es';
  });

  const meta = LANG_BY_CODE[lang] || LANG_BY_CODE.es;
  const dir = meta.rtl ? 'rtl' : 'ltr';

  useEffect(() => {
    document.documentElement.lang = lang;
    document.documentElement.dir = dir;
    document.body.classList.toggle('rtl', dir === 'rtl');
    try { localStorage.setItem('sorametrics.lang', lang); } catch (_) {}
    window.__CURRENT_LANG__ = lang;
  }, [lang, dir]);

  const t = useCallback((key, fallback) => {
    const row = DICT[key];
    if (!row) return fallback !== undefined ? fallback : key;
    return row[lang] || row.en || fallback || key;
  }, [lang]);

  const setLang = useCallback((code) => {
    if (LANG_BY_CODE[code]) setLangState(code);
  }, []);

  const value = useMemo(() => ({
    lang, setLang, t, dir, locale: BCP47[lang] || 'es-ES',
  }), [lang, setLang, t, dir]);

  return <LangContext.Provider value={value}>{children}</LangContext.Provider>;
}

function useLang() { return useContext(LangContext); }
function useT()    { return useContext(LangContext).t; }

/* ========================= Number / date helpers ========================= */
function fmtNumber(n, locale, opts) {
  try { return new Intl.NumberFormat(locale || 'es-ES', opts).format(n); }
  catch (_) { return String(n); }
}
function fmtDate(d, locale, opts) {
  try { return new Intl.DateTimeFormat(locale || 'es-ES', opts || { dateStyle: 'medium', timeStyle: 'short' }).format(d); }
  catch (_) { return String(d); }
}

/* ============================== Lang picker ============================== */
function LangPicker() {
  const { lang, setLang, t } = useLang();
  const [open, setOpen] = useState(false);
  const ref = useRef(null);
  const meta = LANG_BY_CODE[lang];

  useEffect(() => {
    if (!open) return;
    const onDoc = (e) => { if (ref.current && !ref.current.contains(e.target)) setOpen(false); };
    const onEsc = (e) => { if (e.key === 'Escape') setOpen(false); };
    document.addEventListener('mousedown', onDoc);
    document.addEventListener('keydown', onEsc);
    return () => {
      document.removeEventListener('mousedown', onDoc);
      document.removeEventListener('keydown', onEsc);
    };
  }, [open]);

  return (
    <div className="lang-wrap" ref={ref}>
      <button className="lang-pill" onClick={() => setOpen(v => !v)} title={t('common.language')}>
        <span className="lang-flag">{meta.flag}</span>
        <span className="lang-code">{lang.toUpperCase()}</span>
        <span className="lang-caret">▾</span>
      </button>
      {open && (
        <div className="lang-pop" role="menu">
          {LANGS.map(l => (
            <button key={l.code}
                    className={'lang-pop-row' + (l.code === lang ? ' active' : '')}
                    onClick={() => { setLang(l.code); setOpen(false); }}>
              <span className="lang-flag">{l.flag}</span>
              <span className="lang-native">{l.native}</span>
              <span className="lang-pop-code">{l.code.toUpperCase()}</span>
            </button>
          ))}
        </div>
      )}
    </div>
  );
}

Object.assign(window, { LANGS, LANG_BY_CODE, LangProvider, useLang, useT, LangPicker, fmtNumber, fmtDate, DICT });
