fix: sidebar nav text overflow for long translations
- Add text scaling for section labels (TOOLS, ADVANCED) in sidebar - Separate explorer_section key from explorer nav label to fix ALL CAPS - Shorten long sidebar translations: es/pt settings, pt overview, ru tools/advanced - Fix explorer translations from ALL CAPS to proper case in all languages
This commit is contained in:
Binary file not shown.
+35
-1
@@ -226,7 +226,7 @@
|
||||
"error_format": "Fehler: %s",
|
||||
"est_time_to_block": "Gesch. Zeit bis Block",
|
||||
"exit": "Beenden",
|
||||
"explorer": "EXPLORER",
|
||||
"explorer": "Explorer",
|
||||
"explorer_block_detail": "Block",
|
||||
"explorer_block_hash": "Hash",
|
||||
"explorer_block_height": "Höhe",
|
||||
@@ -241,6 +241,7 @@
|
||||
"explorer_mempool_txs": "Transaktionen",
|
||||
"explorer_recent_blocks": "Letzte Blöcke",
|
||||
"explorer_search": "Suchen",
|
||||
"explorer_section": "EXPLORER",
|
||||
"explorer_tx_outputs": "Ausgaben",
|
||||
"explorer_tx_size": "Größe",
|
||||
"export": "Exportieren",
|
||||
@@ -582,6 +583,39 @@
|
||||
"save": "Speichern",
|
||||
"save_settings": "Einstellungen speichern",
|
||||
"save_z_transactions": "Z-Tx in Tx-Liste speichern",
|
||||
"sb_auth_failed": "Authentifizierung fehlgeschlagen — rpcuser/rpcpassword prüfen",
|
||||
"sb_block": "Block: %d",
|
||||
"sb_connecting_daemon": "Verbindung zu dragonxd...",
|
||||
"sb_connecting_err": "Verbindung zum Daemon — %s",
|
||||
"sb_connecting_external": "Verbindung zu externem Daemon...",
|
||||
"sb_connecting_generic": "Verbindung zum Daemon...",
|
||||
"sb_daemon_crashed": "Daemon ist %d mal abgestürzt",
|
||||
"sb_daemon_not_found": "Daemon nicht gefunden",
|
||||
"sb_dragonxd_running": "dragonxd läuft",
|
||||
"sb_dragonxd_stopped": "dragonxd gestoppt",
|
||||
"sb_dragonxd_stopping": "dragonxd wird gestoppt...",
|
||||
"sb_extracting_sapling": "Sapling-Parameter werden extrahiert...",
|
||||
"sb_importing_keys": "Schlüssel importieren",
|
||||
"sb_loading_config": "Konfiguration laden...",
|
||||
"sb_mining_hs": "%.1f H/s",
|
||||
"sb_net_ghs": "Netz: %.2f GH/s",
|
||||
"sb_net_hs": "Netz: %.1f H/s",
|
||||
"sb_net_khs": "Netz: %.2f KH/s",
|
||||
"sb_net_mhs": "Netz: %.2f MH/s",
|
||||
"sb_no_conf": "DRAGONX.conf nicht gefunden",
|
||||
"sb_peers": "Peers: %zu",
|
||||
"sb_rescanning": "Neuscan",
|
||||
"sb_rescanning_pct": "Neuscan %.0f%%",
|
||||
"sb_restarting_daemon": "Daemon wird neu gestartet...",
|
||||
"sb_sapling_failed": "Sapling-Parameter-Extraktion fehlgeschlagen.",
|
||||
"sb_sapling_not_found": "Sapling-Parameter nicht gefunden.",
|
||||
"sb_starting_daemon": "dragonxd wird gestartet...",
|
||||
"sb_syncing_basic": "Synchronisierung %.1f%% (%d übrig)",
|
||||
"sb_syncing_eta": "Synchronisierung %.1f%% (%d übrig, %.0f Blk/s, ~%s)",
|
||||
"sb_waiting_config": "Warten auf Daemon-Konfiguration...",
|
||||
"sb_waiting_daemon": "Warten auf dragonxd...",
|
||||
"sb_waiting_daemon_err": "Warten auf dragonxd — %s",
|
||||
"sb_warming_up": "Aufwärmen...",
|
||||
"search_placeholder": "Suchen...",
|
||||
"security": "SICHERHEIT",
|
||||
"select_address": "Adresse auswählen...",
|
||||
|
||||
+36
-2
@@ -226,7 +226,7 @@
|
||||
"error_format": "Error: %s",
|
||||
"est_time_to_block": "Tiempo Est. al Bloque",
|
||||
"exit": "Salir",
|
||||
"explorer": "EXPLORADOR",
|
||||
"explorer": "Explorador",
|
||||
"explorer_block_detail": "Bloque",
|
||||
"explorer_block_hash": "Hash",
|
||||
"explorer_block_height": "Altura",
|
||||
@@ -241,6 +241,7 @@
|
||||
"explorer_mempool_txs": "Transacciones",
|
||||
"explorer_recent_blocks": "Bloques Recientes",
|
||||
"explorer_search": "Buscar",
|
||||
"explorer_section": "EXPLORADOR",
|
||||
"explorer_tx_outputs": "Salidas",
|
||||
"explorer_tx_size": "Tamaño",
|
||||
"export": "Exportar",
|
||||
@@ -582,6 +583,39 @@
|
||||
"save": "Guardar",
|
||||
"save_settings": "Guardar Configuración",
|
||||
"save_z_transactions": "Guardar Z-tx en lista",
|
||||
"sb_auth_failed": "Autenticación fallida — verifique rpcuser/rpcpassword",
|
||||
"sb_block": "Bloque: %d",
|
||||
"sb_connecting_daemon": "Conectando a dragonxd...",
|
||||
"sb_connecting_err": "Conectando al daemon — %s",
|
||||
"sb_connecting_external": "Conectando a daemon externo...",
|
||||
"sb_connecting_generic": "Conectando al daemon...",
|
||||
"sb_daemon_crashed": "El daemon se bloqueó %d veces",
|
||||
"sb_daemon_not_found": "Daemon no encontrado",
|
||||
"sb_dragonxd_running": "dragonxd ejecutándose",
|
||||
"sb_dragonxd_stopped": "dragonxd detenido",
|
||||
"sb_dragonxd_stopping": "Deteniendo dragonxd...",
|
||||
"sb_extracting_sapling": "Extrayendo parámetros Sapling...",
|
||||
"sb_importing_keys": "Importando claves",
|
||||
"sb_loading_config": "Cargando configuración...",
|
||||
"sb_mining_hs": "%.1f H/s",
|
||||
"sb_net_ghs": "Red: %.2f GH/s",
|
||||
"sb_net_hs": "Red: %.1f H/s",
|
||||
"sb_net_khs": "Red: %.2f KH/s",
|
||||
"sb_net_mhs": "Red: %.2f MH/s",
|
||||
"sb_no_conf": "DRAGONX.conf no encontrado",
|
||||
"sb_peers": "Pares: %zu",
|
||||
"sb_rescanning": "Reescaneando",
|
||||
"sb_rescanning_pct": "Reescaneando %.0f%%",
|
||||
"sb_restarting_daemon": "Reiniciando daemon...",
|
||||
"sb_sapling_failed": "Error al extraer parámetros Sapling.",
|
||||
"sb_sapling_not_found": "Parámetros Sapling no encontrados.",
|
||||
"sb_starting_daemon": "Iniciando dragonxd...",
|
||||
"sb_syncing_basic": "Sincronizando %.1f%% (%d restantes)",
|
||||
"sb_syncing_eta": "Sincronizando %.1f%% (%d restantes, %.0f blk/s, ~%s)",
|
||||
"sb_waiting_config": "Esperando configuración del daemon...",
|
||||
"sb_waiting_daemon": "Esperando a dragonxd...",
|
||||
"sb_waiting_daemon_err": "Esperando a dragonxd — %s",
|
||||
"sb_warming_up": "Calentando...",
|
||||
"search_placeholder": "Buscar...",
|
||||
"security": "SEGURIDAD",
|
||||
"select_address": "Seleccionar dirección...",
|
||||
@@ -642,7 +676,7 @@
|
||||
"sent_type": "Enviado",
|
||||
"sent_upper": "ENVIADO",
|
||||
"set_label": "Establecer Etiqueta...",
|
||||
"settings": "Configuración",
|
||||
"settings": "Ajustes",
|
||||
"settings_about_text": "Una billetera de criptomonedas blindada para DragonX (DRGX), creada con Dear ImGui para una experiencia ligera y portátil.",
|
||||
"settings_acrylic_level": "Nivel de acrílico:",
|
||||
"settings_address_book": "Libreta de direcciones...",
|
||||
|
||||
+35
-1
@@ -226,7 +226,7 @@
|
||||
"error_format": "Erreur : %s",
|
||||
"est_time_to_block": "Temps est. par bloc",
|
||||
"exit": "Quitter",
|
||||
"explorer": "EXPLORATEUR",
|
||||
"explorer": "Explorateur",
|
||||
"explorer_block_detail": "Bloc",
|
||||
"explorer_block_hash": "Hash",
|
||||
"explorer_block_height": "Hauteur",
|
||||
@@ -241,6 +241,7 @@
|
||||
"explorer_mempool_txs": "Transactions",
|
||||
"explorer_recent_blocks": "Blocs récents",
|
||||
"explorer_search": "Rechercher",
|
||||
"explorer_section": "EXPLORATEUR",
|
||||
"explorer_tx_outputs": "Sorties",
|
||||
"explorer_tx_size": "Taille",
|
||||
"export": "Exporter",
|
||||
@@ -582,6 +583,39 @@
|
||||
"save": "Enregistrer",
|
||||
"save_settings": "Enregistrer les paramètres",
|
||||
"save_z_transactions": "Enregistrer les Z-tx dans la liste",
|
||||
"sb_auth_failed": "Authentification échouée — vérifiez rpcuser/rpcpassword",
|
||||
"sb_block": "Bloc : %d",
|
||||
"sb_connecting_daemon": "Connexion à dragonxd...",
|
||||
"sb_connecting_err": "Connexion au daemon — %s",
|
||||
"sb_connecting_external": "Connexion au daemon externe...",
|
||||
"sb_connecting_generic": "Connexion au daemon...",
|
||||
"sb_daemon_crashed": "Le daemon a planté %d fois",
|
||||
"sb_daemon_not_found": "Daemon introuvable",
|
||||
"sb_dragonxd_running": "dragonxd en cours",
|
||||
"sb_dragonxd_stopped": "dragonxd arrêté",
|
||||
"sb_dragonxd_stopping": "Arrêt de dragonxd...",
|
||||
"sb_extracting_sapling": "Extraction des paramètres Sapling...",
|
||||
"sb_importing_keys": "Importation des clés",
|
||||
"sb_loading_config": "Chargement de la configuration...",
|
||||
"sb_mining_hs": "%.1f H/s",
|
||||
"sb_net_ghs": "Rés: %.2f GH/s",
|
||||
"sb_net_hs": "Rés: %.1f H/s",
|
||||
"sb_net_khs": "Rés: %.2f KH/s",
|
||||
"sb_net_mhs": "Rés: %.2f MH/s",
|
||||
"sb_no_conf": "DRAGONX.conf introuvable",
|
||||
"sb_peers": "Pairs : %zu",
|
||||
"sb_rescanning": "Rescan",
|
||||
"sb_rescanning_pct": "Rescan %.0f%%",
|
||||
"sb_restarting_daemon": "Redémarrage du daemon...",
|
||||
"sb_sapling_failed": "Échec de l'extraction des paramètres Sapling.",
|
||||
"sb_sapling_not_found": "Paramètres Sapling introuvables.",
|
||||
"sb_starting_daemon": "Démarrage de dragonxd...",
|
||||
"sb_syncing_basic": "Synchronisation %.1f%% (%d restants)",
|
||||
"sb_syncing_eta": "Synchronisation %.1f%% (%d restants, %.0f blk/s, ~%s)",
|
||||
"sb_waiting_config": "En attente de la configuration du daemon...",
|
||||
"sb_waiting_daemon": "En attente de dragonxd...",
|
||||
"sb_waiting_daemon_err": "En attente de dragonxd — %s",
|
||||
"sb_warming_up": "Démarrage...",
|
||||
"search_placeholder": "Rechercher...",
|
||||
"security": "SÉCURITÉ",
|
||||
"select_address": "Sélectionner une adresse...",
|
||||
|
||||
@@ -241,6 +241,7 @@
|
||||
"explorer_mempool_txs": "トランザクション",
|
||||
"explorer_recent_blocks": "最近のブロック",
|
||||
"explorer_search": "検索",
|
||||
"explorer_section": "エクスプローラー",
|
||||
"explorer_tx_outputs": "出力",
|
||||
"explorer_tx_size": "サイズ",
|
||||
"export": "エクスポート",
|
||||
@@ -582,6 +583,39 @@
|
||||
"save": "保存",
|
||||
"save_settings": "設定を保存",
|
||||
"save_z_transactions": "Z取引を取引リストに保存",
|
||||
"sb_auth_failed": "認証失敗 — rpcuser/rpcpassword を確認してください",
|
||||
"sb_block": "ブロック: %d",
|
||||
"sb_connecting_daemon": "dragonxd に接続中...",
|
||||
"sb_connecting_err": "デーモンに接続中 — %s",
|
||||
"sb_connecting_external": "外部デーモンに接続中...",
|
||||
"sb_connecting_generic": "デーモンに接続中...",
|
||||
"sb_daemon_crashed": "デーモンが %d 回クラッシュしました",
|
||||
"sb_daemon_not_found": "デーモンが見つかりません",
|
||||
"sb_dragonxd_running": "dragonxd 実行中",
|
||||
"sb_dragonxd_stopped": "dragonxd 停止",
|
||||
"sb_dragonxd_stopping": "dragonxd を停止中...",
|
||||
"sb_extracting_sapling": "Sapling パラメータを展開中...",
|
||||
"sb_importing_keys": "鍵をインポート中",
|
||||
"sb_loading_config": "設定を読み込み中...",
|
||||
"sb_mining_hs": "%.1f H/s",
|
||||
"sb_net_ghs": "ネット: %.2f GH/s",
|
||||
"sb_net_hs": "ネット: %.1f H/s",
|
||||
"sb_net_khs": "ネット: %.2f KH/s",
|
||||
"sb_net_mhs": "ネット: %.2f MH/s",
|
||||
"sb_no_conf": "DRAGONX.conf が見つかりません",
|
||||
"sb_peers": "ピア: %zu",
|
||||
"sb_rescanning": "再スキャン",
|
||||
"sb_rescanning_pct": "再スキャン %.0f%%",
|
||||
"sb_restarting_daemon": "デーモンを再起動中...",
|
||||
"sb_sapling_failed": "Sapling パラメータの展開に失敗しました。",
|
||||
"sb_sapling_not_found": "Sapling パラメータが見つかりません。",
|
||||
"sb_starting_daemon": "dragonxd を起動中...",
|
||||
"sb_syncing_basic": "同期中 %.1f%% (残り %d)",
|
||||
"sb_syncing_eta": "同期中 %.1f%% (残り %d, %.0f ブロック/秒, ~%s)",
|
||||
"sb_waiting_config": "デーモン設定を待機中...",
|
||||
"sb_waiting_daemon": "dragonxd を待機中...",
|
||||
"sb_waiting_daemon_err": "dragonxd を待機中 — %s",
|
||||
"sb_warming_up": "ウォームアップ中...",
|
||||
"search_placeholder": "検索...",
|
||||
"security": "セキュリティ",
|
||||
"select_address": "アドレスを選択...",
|
||||
|
||||
@@ -241,6 +241,7 @@
|
||||
"explorer_mempool_txs": "트랜잭션",
|
||||
"explorer_recent_blocks": "최근 블록",
|
||||
"explorer_search": "검색",
|
||||
"explorer_section": "탐색기",
|
||||
"explorer_tx_outputs": "출력",
|
||||
"explorer_tx_size": "크기",
|
||||
"export": "내보내기",
|
||||
@@ -582,6 +583,39 @@
|
||||
"save": "저장",
|
||||
"save_settings": "설정 저장",
|
||||
"save_z_transactions": "Z 거래를 거래 목록에 저장",
|
||||
"sb_auth_failed": "인증 실패 — rpcuser/rpcpassword를 확인하세요",
|
||||
"sb_block": "블록: %d",
|
||||
"sb_connecting_daemon": "dragonxd에 연결 중...",
|
||||
"sb_connecting_err": "데몬 연결 중 — %s",
|
||||
"sb_connecting_external": "외부 데몬에 연결 중...",
|
||||
"sb_connecting_generic": "데몬에 연결 중...",
|
||||
"sb_daemon_crashed": "데몬이 %d회 충돌함",
|
||||
"sb_daemon_not_found": "데몬을 찾을 수 없음",
|
||||
"sb_dragonxd_running": "dragonxd 실행 중",
|
||||
"sb_dragonxd_stopped": "dragonxd 중지됨",
|
||||
"sb_dragonxd_stopping": "dragonxd 중지 중...",
|
||||
"sb_extracting_sapling": "Sapling 매개변수 추출 중...",
|
||||
"sb_importing_keys": "키 가져오기 중",
|
||||
"sb_loading_config": "설정 불러오는 중...",
|
||||
"sb_mining_hs": "%.1f H/s",
|
||||
"sb_net_ghs": "네트: %.2f GH/s",
|
||||
"sb_net_hs": "네트: %.1f H/s",
|
||||
"sb_net_khs": "네트: %.2f KH/s",
|
||||
"sb_net_mhs": "네트: %.2f MH/s",
|
||||
"sb_no_conf": "DRAGONX.conf를 찾을 수 없음",
|
||||
"sb_peers": "피어: %zu",
|
||||
"sb_rescanning": "재스캔",
|
||||
"sb_rescanning_pct": "재스캔 %.0f%%",
|
||||
"sb_restarting_daemon": "데몬 재시작 중...",
|
||||
"sb_sapling_failed": "Sapling 매개변수 추출 실패.",
|
||||
"sb_sapling_not_found": "Sapling 매개변수를 찾을 수 없음.",
|
||||
"sb_starting_daemon": "dragonxd 시작 중...",
|
||||
"sb_syncing_basic": "동기화 %.1f%% (%d 남음)",
|
||||
"sb_syncing_eta": "동기화 %.1f%% (%d 남음, %.0f 블록/초, ~%s)",
|
||||
"sb_waiting_config": "데몬 설정 대기 중...",
|
||||
"sb_waiting_daemon": "dragonxd 대기 중...",
|
||||
"sb_waiting_daemon_err": "dragonxd 대기 중 — %s",
|
||||
"sb_warming_up": "워밍업 중...",
|
||||
"search_placeholder": "검색...",
|
||||
"security": "보안",
|
||||
"select_address": "주소 선택...",
|
||||
|
||||
+37
-3
@@ -226,7 +226,7 @@
|
||||
"error_format": "Erro: %s",
|
||||
"est_time_to_block": "Tempo Est. por Bloco",
|
||||
"exit": "Sair",
|
||||
"explorer": "EXPLORADOR",
|
||||
"explorer": "Explorador",
|
||||
"explorer_block_detail": "Bloco",
|
||||
"explorer_block_hash": "Hash",
|
||||
"explorer_block_height": "Altura",
|
||||
@@ -241,6 +241,7 @@
|
||||
"explorer_mempool_txs": "Transações",
|
||||
"explorer_recent_blocks": "Blocos Recentes",
|
||||
"explorer_search": "Pesquisar",
|
||||
"explorer_section": "EXPLORADOR",
|
||||
"explorer_tx_outputs": "Saídas",
|
||||
"explorer_tx_size": "Tamanho",
|
||||
"export": "Exportar",
|
||||
@@ -474,7 +475,7 @@
|
||||
"notes": "Notas",
|
||||
"notes_optional": "Notas (opcional):",
|
||||
"output_filename": "Nome do arquivo de saída:",
|
||||
"overview": "Visão Geral",
|
||||
"overview": "Resumo",
|
||||
"paste": "Colar",
|
||||
"paste_from_clipboard": "Colar da Área de Transferência",
|
||||
"pay_from": "Pagar de",
|
||||
@@ -582,6 +583,39 @@
|
||||
"save": "Salvar",
|
||||
"save_settings": "Salvar Configurações",
|
||||
"save_z_transactions": "Salvar Z-tx na lista de tx",
|
||||
"sb_auth_failed": "Autenticação falhou — verifique rpcuser/rpcpassword",
|
||||
"sb_block": "Bloco: %d",
|
||||
"sb_connecting_daemon": "Conectando ao dragonxd...",
|
||||
"sb_connecting_err": "Conectando ao daemon — %s",
|
||||
"sb_connecting_external": "Conectando ao daemon externo...",
|
||||
"sb_connecting_generic": "Conectando ao daemon...",
|
||||
"sb_daemon_crashed": "O daemon travou %d vezes",
|
||||
"sb_daemon_not_found": "Daemon não encontrado",
|
||||
"sb_dragonxd_running": "dragonxd em execução",
|
||||
"sb_dragonxd_stopped": "dragonxd parado",
|
||||
"sb_dragonxd_stopping": "Parando dragonxd...",
|
||||
"sb_extracting_sapling": "Extraindo parâmetros Sapling...",
|
||||
"sb_importing_keys": "Importando chaves",
|
||||
"sb_loading_config": "Carregando configuração...",
|
||||
"sb_mining_hs": "%.1f H/s",
|
||||
"sb_net_ghs": "Rede: %.2f GH/s",
|
||||
"sb_net_hs": "Rede: %.1f H/s",
|
||||
"sb_net_khs": "Rede: %.2f KH/s",
|
||||
"sb_net_mhs": "Rede: %.2f MH/s",
|
||||
"sb_no_conf": "DRAGONX.conf não encontrado",
|
||||
"sb_peers": "Pares: %zu",
|
||||
"sb_rescanning": "Reescaneando",
|
||||
"sb_rescanning_pct": "Reescaneando %.0f%%",
|
||||
"sb_restarting_daemon": "Reiniciando daemon...",
|
||||
"sb_sapling_failed": "Falha ao extrair parâmetros Sapling.",
|
||||
"sb_sapling_not_found": "Parâmetros Sapling não encontrados.",
|
||||
"sb_starting_daemon": "Iniciando dragonxd...",
|
||||
"sb_syncing_basic": "Sincronizando %.1f%% (%d restantes)",
|
||||
"sb_syncing_eta": "Sincronizando %.1f%% (%d restantes, %.0f blk/s, ~%s)",
|
||||
"sb_waiting_config": "Aguardando configuração do daemon...",
|
||||
"sb_waiting_daemon": "Aguardando dragonxd...",
|
||||
"sb_waiting_daemon_err": "Aguardando dragonxd — %s",
|
||||
"sb_warming_up": "Aquecendo...",
|
||||
"search_placeholder": "Pesquisar...",
|
||||
"security": "SEGURANÇA",
|
||||
"select_address": "Selecionar endereço...",
|
||||
@@ -642,7 +676,7 @@
|
||||
"sent_type": "Enviado",
|
||||
"sent_upper": "ENVIADO",
|
||||
"set_label": "Definir Rótulo...",
|
||||
"settings": "Configurações",
|
||||
"settings": "Ajustes",
|
||||
"settings_about_text": "Uma carteira de criptomoeda blindada para DragonX (DRGX), criada com Dear ImGui para uma experiência leve e portátil.",
|
||||
"settings_acrylic_level": "Nível acrílico:",
|
||||
"settings_address_book": "Livro de endereços...",
|
||||
|
||||
+37
-3
@@ -42,7 +42,7 @@
|
||||
"address_upper": "АДРЕС",
|
||||
"address_url": "URL адреса",
|
||||
"addresses_appear_here": "Ваши адреса для получения появятся здесь после подключения.",
|
||||
"advanced": "РАСШИРЕННЫЕ",
|
||||
"advanced": "ПРОЧЕЕ",
|
||||
"advanced_effects": "Расширенные эффекты...",
|
||||
"ago": "назад",
|
||||
"all_filter": "Все",
|
||||
@@ -226,7 +226,7 @@
|
||||
"error_format": "Ошибка: %s",
|
||||
"est_time_to_block": "Расч. время до блока",
|
||||
"exit": "Выход",
|
||||
"explorer": "ОБОЗРЕВАТЕЛЬ",
|
||||
"explorer": "Проводник",
|
||||
"explorer_block_detail": "Блок",
|
||||
"explorer_block_hash": "Хеш",
|
||||
"explorer_block_height": "Высота",
|
||||
@@ -241,6 +241,7 @@
|
||||
"explorer_mempool_txs": "Транзакции",
|
||||
"explorer_recent_blocks": "Последние блоки",
|
||||
"explorer_search": "Поиск",
|
||||
"explorer_section": "ОБОЗРЕВАТЕЛЬ",
|
||||
"explorer_tx_outputs": "Выходы",
|
||||
"explorer_tx_size": "Размер",
|
||||
"export": "Экспорт",
|
||||
@@ -582,6 +583,39 @@
|
||||
"save": "Сохранить",
|
||||
"save_settings": "Сохранить настройки",
|
||||
"save_z_transactions": "Сохранять Z-tx в списке транзакций",
|
||||
"sb_auth_failed": "Ошибка авторизации — проверьте rpcuser/rpcpassword",
|
||||
"sb_block": "Блок: %d",
|
||||
"sb_connecting_daemon": "Подключение к dragonxd...",
|
||||
"sb_connecting_err": "Подключение к демону — %s",
|
||||
"sb_connecting_external": "Подключение к внешнему демону...",
|
||||
"sb_connecting_generic": "Подключение к демону...",
|
||||
"sb_daemon_crashed": "Демон упал %d раз",
|
||||
"sb_daemon_not_found": "Демон не найден",
|
||||
"sb_dragonxd_running": "dragonxd запущен",
|
||||
"sb_dragonxd_stopped": "dragonxd остановлен",
|
||||
"sb_dragonxd_stopping": "Остановка dragonxd...",
|
||||
"sb_extracting_sapling": "Извлечение параметров Sapling...",
|
||||
"sb_importing_keys": "Импорт ключей",
|
||||
"sb_loading_config": "Загрузка конфигурации...",
|
||||
"sb_mining_hs": "%.1f H/s",
|
||||
"sb_net_ghs": "Сеть: %.2f GH/s",
|
||||
"sb_net_hs": "Сеть: %.1f H/s",
|
||||
"sb_net_khs": "Сеть: %.2f KH/s",
|
||||
"sb_net_mhs": "Сеть: %.2f MH/s",
|
||||
"sb_no_conf": "DRAGONX.conf не найден",
|
||||
"sb_peers": "Пиры: %zu",
|
||||
"sb_rescanning": "Пересканирование",
|
||||
"sb_rescanning_pct": "Пересканирование %.0f%%",
|
||||
"sb_restarting_daemon": "Перезапуск демона...",
|
||||
"sb_sapling_failed": "Ошибка извлечения параметров Sapling.",
|
||||
"sb_sapling_not_found": "Параметры Sapling не найдены.",
|
||||
"sb_starting_daemon": "Запуск dragonxd...",
|
||||
"sb_syncing_basic": "Синхронизация %.1f%% (%d осталось)",
|
||||
"sb_syncing_eta": "Синхронизация %.1f%% (%d осталось, %.0f блк/с, ~%s)",
|
||||
"sb_waiting_config": "Ожидание конфигурации демона...",
|
||||
"sb_waiting_daemon": "Ожидание dragonxd...",
|
||||
"sb_waiting_daemon_err": "Ожидание dragonxd — %s",
|
||||
"sb_warming_up": "Прогрев...",
|
||||
"search_placeholder": "Поиск...",
|
||||
"security": "БЕЗОПАСНОСТЬ",
|
||||
"select_address": "Выбрать адрес...",
|
||||
@@ -767,7 +801,7 @@
|
||||
"timeout_off": "Выкл",
|
||||
"to": "Кому",
|
||||
"to_upper": "КОМУ",
|
||||
"tools": "ИНСТРУМЕНТЫ",
|
||||
"tools": "УТИЛИТЫ",
|
||||
"tools_actions": "Инструменты и действия...",
|
||||
"total": "Итого",
|
||||
"transaction_id": "ID ТРАНЗАКЦИИ",
|
||||
|
||||
@@ -241,6 +241,7 @@
|
||||
"explorer_mempool_txs": "交易",
|
||||
"explorer_recent_blocks": "最近区块",
|
||||
"explorer_search": "搜索",
|
||||
"explorer_section": "浏览器",
|
||||
"explorer_tx_outputs": "输出",
|
||||
"explorer_tx_size": "大小",
|
||||
"export": "导出",
|
||||
@@ -582,6 +583,39 @@
|
||||
"save": "保存",
|
||||
"save_settings": "保存设置",
|
||||
"save_z_transactions": "将 Z 交易保存到列表",
|
||||
"sb_auth_failed": "认证失败 — 请检查 rpcuser/rpcpassword",
|
||||
"sb_block": "区块: %d",
|
||||
"sb_connecting_daemon": "正在连接 dragonxd...",
|
||||
"sb_connecting_err": "连接守护进程 — %s",
|
||||
"sb_connecting_external": "正在连接外部守护进程...",
|
||||
"sb_connecting_generic": "正在连接守护进程...",
|
||||
"sb_daemon_crashed": "守护进程崩溃 %d 次",
|
||||
"sb_daemon_not_found": "未找到守护进程",
|
||||
"sb_dragonxd_running": "dragonxd 运行中",
|
||||
"sb_dragonxd_stopped": "dragonxd 已停止",
|
||||
"sb_dragonxd_stopping": "正在停止 dragonxd...",
|
||||
"sb_extracting_sapling": "正在提取 Sapling 参数...",
|
||||
"sb_importing_keys": "正在导入密钥",
|
||||
"sb_loading_config": "正在加载配置...",
|
||||
"sb_mining_hs": "%.1f H/s",
|
||||
"sb_net_ghs": "网络: %.2f GH/s",
|
||||
"sb_net_hs": "网络: %.1f H/s",
|
||||
"sb_net_khs": "网络: %.2f KH/s",
|
||||
"sb_net_mhs": "网络: %.2f MH/s",
|
||||
"sb_no_conf": "未找到 DRAGONX.conf",
|
||||
"sb_peers": "节点: %zu",
|
||||
"sb_rescanning": "重新扫描",
|
||||
"sb_rescanning_pct": "重新扫描 %.0f%%",
|
||||
"sb_restarting_daemon": "正在重启守护进程...",
|
||||
"sb_sapling_failed": "提取 Sapling 参数失败。",
|
||||
"sb_sapling_not_found": "未找到 Sapling 参数。",
|
||||
"sb_starting_daemon": "正在启动 dragonxd...",
|
||||
"sb_syncing_basic": "同步中 %.1f%% (剩余 %d)",
|
||||
"sb_syncing_eta": "同步中 %.1f%% (剩余 %d, %.0f 块/秒, ~%s)",
|
||||
"sb_waiting_config": "等待守护进程配置...",
|
||||
"sb_waiting_daemon": "等待 dragonxd 启动...",
|
||||
"sb_waiting_daemon_err": "等待 dragonxd — %s",
|
||||
"sb_warming_up": "正在预热...",
|
||||
"search_placeholder": "搜索...",
|
||||
"security": "安全",
|
||||
"select_address": "选择地址...",
|
||||
|
||||
@@ -1910,6 +1910,196 @@ TRANSLATIONS = {
|
||||
"pt": "Endereço Z", "ru": "Z-адрес", "zh": "Z 地址",
|
||||
"ja": "Zアドレス", "ko": "Z 주소"
|
||||
},
|
||||
|
||||
# ── Status bar strings ───────────────────────────────────────────────
|
||||
|
||||
"sb_warming_up": {
|
||||
"es": "Calentando...", "de": "Aufwärmen...", "fr": "Démarrage...",
|
||||
"pt": "Aquecendo...", "ru": "Прогрев...", "zh": "正在预热...",
|
||||
"ja": "ウォームアップ中...", "ko": "워밍업 중..."
|
||||
},
|
||||
"sb_block": {
|
||||
"es": "Bloque: %d", "de": "Block: %d", "fr": "Bloc : %d",
|
||||
"pt": "Bloco: %d", "ru": "Блок: %d", "zh": "区块: %d",
|
||||
"ja": "ブロック: %d", "ko": "블록: %d"
|
||||
},
|
||||
"sb_peers": {
|
||||
"es": "Pares: %zu", "de": "Peers: %zu", "fr": "Pairs : %zu",
|
||||
"pt": "Pares: %zu", "ru": "Пиры: %zu", "zh": "节点: %zu",
|
||||
"ja": "ピア: %zu", "ko": "피어: %zu"
|
||||
},
|
||||
"sb_net_ghs": {
|
||||
"es": "Red: %.2f GH/s", "de": "Netz: %.2f GH/s", "fr": "Rés: %.2f GH/s",
|
||||
"pt": "Rede: %.2f GH/s", "ru": "Сеть: %.2f GH/s", "zh": "网络: %.2f GH/s",
|
||||
"ja": "ネット: %.2f GH/s", "ko": "네트: %.2f GH/s"
|
||||
},
|
||||
"sb_net_mhs": {
|
||||
"es": "Red: %.2f MH/s", "de": "Netz: %.2f MH/s", "fr": "Rés: %.2f MH/s",
|
||||
"pt": "Rede: %.2f MH/s", "ru": "Сеть: %.2f MH/s", "zh": "网络: %.2f MH/s",
|
||||
"ja": "ネット: %.2f MH/s", "ko": "네트: %.2f MH/s"
|
||||
},
|
||||
"sb_net_khs": {
|
||||
"es": "Red: %.2f KH/s", "de": "Netz: %.2f KH/s", "fr": "Rés: %.2f KH/s",
|
||||
"pt": "Rede: %.2f KH/s", "ru": "Сеть: %.2f KH/s", "zh": "网络: %.2f KH/s",
|
||||
"ja": "ネット: %.2f KH/s", "ko": "네트: %.2f KH/s"
|
||||
},
|
||||
"sb_net_hs": {
|
||||
"es": "Red: %.1f H/s", "de": "Netz: %.1f H/s", "fr": "Rés: %.1f H/s",
|
||||
"pt": "Rede: %.1f H/s", "ru": "Сеть: %.1f H/s", "zh": "网络: %.1f H/s",
|
||||
"ja": "ネット: %.1f H/s", "ko": "네트: %.1f H/s"
|
||||
},
|
||||
"sb_mining_hs": {
|
||||
"es": "%.1f H/s", "de": "%.1f H/s", "fr": "%.1f H/s",
|
||||
"pt": "%.1f H/s", "ru": "%.1f H/s", "zh": "%.1f H/s",
|
||||
"ja": "%.1f H/s", "ko": "%.1f H/s"
|
||||
},
|
||||
"sb_syncing_eta": {
|
||||
"es": "Sincronizando %.1f%% (%d restantes, %.0f blk/s, ~%s)",
|
||||
"de": "Synchronisierung %.1f%% (%d übrig, %.0f Blk/s, ~%s)",
|
||||
"fr": "Synchronisation %.1f%% (%d restants, %.0f blk/s, ~%s)",
|
||||
"pt": "Sincronizando %.1f%% (%d restantes, %.0f blk/s, ~%s)",
|
||||
"ru": "Синхронизация %.1f%% (%d осталось, %.0f блк/с, ~%s)",
|
||||
"zh": "同步中 %.1f%% (剩余 %d, %.0f 块/秒, ~%s)",
|
||||
"ja": "同期中 %.1f%% (残り %d, %.0f ブロック/秒, ~%s)",
|
||||
"ko": "동기화 %.1f%% (%d 남음, %.0f 블록/초, ~%s)"
|
||||
},
|
||||
"sb_syncing_basic": {
|
||||
"es": "Sincronizando %.1f%% (%d restantes)",
|
||||
"de": "Synchronisierung %.1f%% (%d übrig)",
|
||||
"fr": "Synchronisation %.1f%% (%d restants)",
|
||||
"pt": "Sincronizando %.1f%% (%d restantes)",
|
||||
"ru": "Синхронизация %.1f%% (%d осталось)",
|
||||
"zh": "同步中 %.1f%% (剩余 %d)",
|
||||
"ja": "同期中 %.1f%% (残り %d)",
|
||||
"ko": "동기화 %.1f%% (%d 남음)"
|
||||
},
|
||||
"sb_rescanning_pct": {
|
||||
"es": "Reescaneando %.0f%%", "de": "Neuscan %.0f%%", "fr": "Rescan %.0f%%",
|
||||
"pt": "Reescaneando %.0f%%", "ru": "Пересканирование %.0f%%", "zh": "重新扫描 %.0f%%",
|
||||
"ja": "再スキャン %.0f%%", "ko": "재스캔 %.0f%%"
|
||||
},
|
||||
"sb_rescanning": {
|
||||
"es": "Reescaneando", "de": "Neuscan", "fr": "Rescan",
|
||||
"pt": "Reescaneando", "ru": "Пересканирование", "zh": "重新扫描",
|
||||
"ja": "再スキャン", "ko": "재스캔"
|
||||
},
|
||||
"sb_importing_keys": {
|
||||
"es": "Importando claves", "de": "Schlüssel importieren", "fr": "Importation des clés",
|
||||
"pt": "Importando chaves", "ru": "Импорт ключей", "zh": "正在导入密钥",
|
||||
"ja": "鍵をインポート中", "ko": "키 가져오기 중"
|
||||
},
|
||||
"sb_daemon_not_found": {
|
||||
"es": "Daemon no encontrado", "de": "Daemon nicht gefunden", "fr": "Daemon introuvable",
|
||||
"pt": "Daemon não encontrado", "ru": "Демон не найден", "zh": "未找到守护进程",
|
||||
"ja": "デーモンが見つかりません", "ko": "데몬을 찾을 수 없음"
|
||||
},
|
||||
"sb_loading_config": {
|
||||
"es": "Cargando configuración...", "de": "Konfiguration laden...", "fr": "Chargement de la configuration...",
|
||||
"pt": "Carregando configuração...", "ru": "Загрузка конфигурации...", "zh": "正在加载配置...",
|
||||
"ja": "設定を読み込み中...", "ko": "설정 불러오는 중..."
|
||||
},
|
||||
"sb_waiting_config": {
|
||||
"es": "Esperando configuración del daemon...", "de": "Warten auf Daemon-Konfiguration...", "fr": "En attente de la configuration du daemon...",
|
||||
"pt": "Aguardando configuração do daemon...", "ru": "Ожидание конфигурации демона...", "zh": "等待守护进程配置...",
|
||||
"ja": "デーモン設定を待機中...", "ko": "데몬 설정 대기 중..."
|
||||
},
|
||||
"sb_no_conf": {
|
||||
"es": "DRAGONX.conf no encontrado", "de": "DRAGONX.conf nicht gefunden", "fr": "DRAGONX.conf introuvable",
|
||||
"pt": "DRAGONX.conf não encontrado", "ru": "DRAGONX.conf не найден", "zh": "未找到 DRAGONX.conf",
|
||||
"ja": "DRAGONX.conf が見つかりません", "ko": "DRAGONX.conf를 찾을 수 없음"
|
||||
},
|
||||
"sb_starting_daemon": {
|
||||
"es": "Iniciando dragonxd...", "de": "dragonxd wird gestartet...", "fr": "Démarrage de dragonxd...",
|
||||
"pt": "Iniciando dragonxd...", "ru": "Запуск dragonxd...", "zh": "正在启动 dragonxd...",
|
||||
"ja": "dragonxd を起動中...", "ko": "dragonxd 시작 중..."
|
||||
},
|
||||
"sb_connecting_daemon": {
|
||||
"es": "Conectando a dragonxd...", "de": "Verbindung zu dragonxd...", "fr": "Connexion à dragonxd...",
|
||||
"pt": "Conectando ao dragonxd...", "ru": "Подключение к dragonxd...", "zh": "正在连接 dragonxd...",
|
||||
"ja": "dragonxd に接続中...", "ko": "dragonxd에 연결 중..."
|
||||
},
|
||||
"sb_auth_failed": {
|
||||
"es": "Autenticación fallida — verifique rpcuser/rpcpassword",
|
||||
"de": "Authentifizierung fehlgeschlagen — rpcuser/rpcpassword prüfen",
|
||||
"fr": "Authentification échouée — vérifiez rpcuser/rpcpassword",
|
||||
"pt": "Autenticação falhou — verifique rpcuser/rpcpassword",
|
||||
"ru": "Ошибка авторизации — проверьте rpcuser/rpcpassword",
|
||||
"zh": "认证失败 — 请检查 rpcuser/rpcpassword",
|
||||
"ja": "認証失敗 — rpcuser/rpcpassword を確認してください",
|
||||
"ko": "인증 실패 — rpcuser/rpcpassword를 확인하세요"
|
||||
},
|
||||
"sb_waiting_daemon": {
|
||||
"es": "Esperando a dragonxd...", "de": "Warten auf dragonxd...", "fr": "En attente de dragonxd...",
|
||||
"pt": "Aguardando dragonxd...", "ru": "Ожидание dragonxd...", "zh": "等待 dragonxd 启动...",
|
||||
"ja": "dragonxd を待機中...", "ko": "dragonxd 대기 중..."
|
||||
},
|
||||
"sb_waiting_daemon_err": {
|
||||
"es": "Esperando a dragonxd — %s", "de": "Warten auf dragonxd — %s", "fr": "En attente de dragonxd — %s",
|
||||
"pt": "Aguardando dragonxd — %s", "ru": "Ожидание dragonxd — %s", "zh": "等待 dragonxd — %s",
|
||||
"ja": "dragonxd を待機中 — %s", "ko": "dragonxd 대기 중 — %s"
|
||||
},
|
||||
"sb_connecting_external": {
|
||||
"es": "Conectando a daemon externo...", "de": "Verbindung zu externem Daemon...", "fr": "Connexion au daemon externe...",
|
||||
"pt": "Conectando ao daemon externo...", "ru": "Подключение к внешнему демону...", "zh": "正在连接外部守护进程...",
|
||||
"ja": "外部デーモンに接続中...", "ko": "외부 데몬에 연결 중..."
|
||||
},
|
||||
"sb_connecting_generic": {
|
||||
"es": "Conectando al daemon...", "de": "Verbindung zum Daemon...", "fr": "Connexion au daemon...",
|
||||
"pt": "Conectando ao daemon...", "ru": "Подключение к демону...", "zh": "正在连接守护进程...",
|
||||
"ja": "デーモンに接続中...", "ko": "데몬에 연결 중..."
|
||||
},
|
||||
"sb_connecting_err": {
|
||||
"es": "Conectando al daemon — %s", "de": "Verbindung zum Daemon — %s", "fr": "Connexion au daemon — %s",
|
||||
"pt": "Conectando ao daemon — %s", "ru": "Подключение к демону — %s", "zh": "连接守护进程 — %s",
|
||||
"ja": "デーモンに接続中 — %s", "ko": "데몬 연결 중 — %s"
|
||||
},
|
||||
"sb_daemon_crashed": {
|
||||
"es": "El daemon se bloqueó %d veces", "de": "Daemon ist %d mal abgestürzt", "fr": "Le daemon a planté %d fois",
|
||||
"pt": "O daemon travou %d vezes", "ru": "Демон упал %d раз", "zh": "守护进程崩溃 %d 次",
|
||||
"ja": "デーモンが %d 回クラッシュしました", "ko": "데몬이 %d회 충돌함"
|
||||
},
|
||||
"sb_extracting_sapling": {
|
||||
"es": "Extrayendo parámetros Sapling...", "de": "Sapling-Parameter werden extrahiert...", "fr": "Extraction des paramètres Sapling...",
|
||||
"pt": "Extraindo parâmetros Sapling...", "ru": "Извлечение параметров Sapling...", "zh": "正在提取 Sapling 参数...",
|
||||
"ja": "Sapling パラメータを展開中...", "ko": "Sapling 매개변수 추출 중..."
|
||||
},
|
||||
"sb_sapling_failed": {
|
||||
"es": "Error al extraer parámetros Sapling.", "de": "Sapling-Parameter-Extraktion fehlgeschlagen.", "fr": "Échec de l'extraction des paramètres Sapling.",
|
||||
"pt": "Falha ao extrair parâmetros Sapling.", "ru": "Ошибка извлечения параметров Sapling.", "zh": "提取 Sapling 参数失败。",
|
||||
"ja": "Sapling パラメータの展開に失敗しました。", "ko": "Sapling 매개변수 추출 실패."
|
||||
},
|
||||
"sb_sapling_not_found": {
|
||||
"es": "Parámetros Sapling no encontrados.", "de": "Sapling-Parameter nicht gefunden.", "fr": "Paramètres Sapling introuvables.",
|
||||
"pt": "Parâmetros Sapling não encontrados.", "ru": "Параметры Sapling не найдены.", "zh": "未找到 Sapling 参数。",
|
||||
"ja": "Sapling パラメータが見つかりません。", "ko": "Sapling 매개변수를 찾을 수 없음."
|
||||
},
|
||||
"sb_dragonxd_running": {
|
||||
"es": "dragonxd ejecutándose", "de": "dragonxd läuft", "fr": "dragonxd en cours",
|
||||
"pt": "dragonxd em execução", "ru": "dragonxd запущен", "zh": "dragonxd 运行中",
|
||||
"ja": "dragonxd 実行中", "ko": "dragonxd 실행 중"
|
||||
},
|
||||
"sb_dragonxd_stopping": {
|
||||
"es": "Deteniendo dragonxd...", "de": "dragonxd wird gestoppt...", "fr": "Arrêt de dragonxd...",
|
||||
"pt": "Parando dragonxd...", "ru": "Остановка dragonxd...", "zh": "正在停止 dragonxd...",
|
||||
"ja": "dragonxd を停止中...", "ko": "dragonxd 중지 중..."
|
||||
},
|
||||
"sb_dragonxd_stopped": {
|
||||
"es": "dragonxd detenido", "de": "dragonxd gestoppt", "fr": "dragonxd arrêté",
|
||||
"pt": "dragonxd parado", "ru": "dragonxd остановлен", "zh": "dragonxd 已停止",
|
||||
"ja": "dragonxd 停止", "ko": "dragonxd 중지됨"
|
||||
},
|
||||
"sb_restarting_daemon": {
|
||||
"es": "Reiniciando daemon...", "de": "Daemon wird neu gestartet...", "fr": "Redémarrage du daemon...",
|
||||
"pt": "Reiniciando daemon...", "ru": "Перезапуск демона...", "zh": "正在重启守护进程...",
|
||||
"ja": "デーモンを再起動中...", "ko": "데몬 재시작 중..."
|
||||
},
|
||||
|
||||
# --- Sidebar / section label fixes ---
|
||||
"explorer_section": {
|
||||
"es": "EXPLORADOR", "de": "EXPLORER", "fr": "EXPLORATEUR",
|
||||
"pt": "EXPLORADOR", "ru": "ОБОЗРЕВАТЕЛЬ", "zh": "浏览器",
|
||||
"ja": "エクスプローラー", "ko": "탐색기"
|
||||
},
|
||||
}
|
||||
|
||||
def main():
|
||||
|
||||
+24
-24
@@ -1450,27 +1450,27 @@ void App::renderStatusBar()
|
||||
ImGui::SameLine(0, sbIconTextGap);
|
||||
// Show truncated warmup status (e.g. "Activating best chain... (Block 12345)")
|
||||
const char* warmupText = state_.warmup_status.empty()
|
||||
? "Warming up..." : state_.warmup_status.c_str();
|
||||
? TR("sb_warming_up") : state_.warmup_status.c_str();
|
||||
ImGui::TextColored(ImVec4(1.0f, 0.8f, 0.0f, 1.0f), "%s", warmupText);
|
||||
} else if (state_.connected) {
|
||||
ImGui::PushFont(ui::material::Type().iconSmall());
|
||||
ImGui::TextColored(ImVec4(0.2f, 0.8f, 0.2f, dotOpacity), ICON_MD_CIRCLE);
|
||||
ImGui::PopFont();
|
||||
ImGui::SameLine(0, sbIconTextGap);
|
||||
ImGui::Text("Connected");
|
||||
ImGui::Text("%s", TR("connected"));
|
||||
} else {
|
||||
ImGui::PushFont(ui::material::Type().iconSmall());
|
||||
ImGui::TextColored(ImVec4(0.8f, 0.2f, 0.2f, dotOpacity), ICON_MD_CIRCLE);
|
||||
ImGui::PopFont();
|
||||
ImGui::SameLine(0, sbIconTextGap);
|
||||
ImGui::Text("Disconnected");
|
||||
ImGui::Text("%s", TR("disconnected"));
|
||||
}
|
||||
|
||||
// Block height
|
||||
ImGui::SameLine(0, sbSectionGap);
|
||||
ImGui::TextDisabled("|");
|
||||
ImGui::SameLine(0, sbSeparatorGap);
|
||||
ImGui::Text("Block: %d", state_.sync.blocks);
|
||||
ImGui::Text(TR("sb_block"), state_.sync.blocks);
|
||||
|
||||
// Sync status or peer count
|
||||
ImGui::SameLine(0, sbSectionGap);
|
||||
@@ -1480,13 +1480,13 @@ void App::renderStatusBar()
|
||||
// Show rescan progress (takes priority over sync)
|
||||
// Use animated dots if progress is unknown (0%)
|
||||
if (state_.sync.rescan_progress > 0.01f) {
|
||||
ImGui::TextColored(ImVec4(0.6f, 0.8f, 1.0f, 1.0f), "Rescanning %.0f%%",
|
||||
ImGui::TextColored(ImVec4(0.6f, 0.8f, 1.0f, 1.0f), TR("sb_rescanning_pct"),
|
||||
state_.sync.rescan_progress * 100.0f);
|
||||
} else {
|
||||
// Animated "Rescanning..." with pulsing dots
|
||||
int dots = (int)(ImGui::GetTime() * 2.0f) % 4;
|
||||
const char* dotStr = (dots == 0) ? "." : (dots == 1) ? ".." : (dots == 2) ? "..." : "";
|
||||
ImGui::TextColored(ImVec4(0.6f, 0.8f, 1.0f, 1.0f), "Rescanning%s", dotStr);
|
||||
ImGui::TextColored(ImVec4(0.6f, 0.8f, 1.0f, 1.0f), "%s%s", TR("sb_rescanning"), dotStr);
|
||||
}
|
||||
} else if (state_.sync.syncing) {
|
||||
int chainTip = state_.longestchain > 0 ? state_.longestchain : state_.sync.headers;
|
||||
@@ -1528,14 +1528,14 @@ void App::renderStatusBar()
|
||||
snprintf(eta, sizeof(eta), "%dm %ds", eta_sec / 60, eta_sec % 60);
|
||||
else
|
||||
snprintf(eta, sizeof(eta), "%ds", eta_sec);
|
||||
ImGui::TextColored(ImVec4(1.0f, 0.8f, 0.0f, 1.0f), "Syncing %.1f%% (%d left, %.0f blk/s, ~%s)",
|
||||
ImGui::TextColored(ImVec4(1.0f, 0.8f, 0.0f, 1.0f), TR("sb_syncing_eta"),
|
||||
state_.sync.verification_progress * 100.0, blocksLeft, s_blocks_per_sec, eta);
|
||||
} else {
|
||||
ImGui::TextColored(ImVec4(1.0f, 0.8f, 0.0f, 1.0f), "Syncing %.1f%% (%d left)",
|
||||
ImGui::TextColored(ImVec4(1.0f, 0.8f, 0.0f, 1.0f), TR("sb_syncing_basic"),
|
||||
state_.sync.verification_progress * 100.0, blocksLeft);
|
||||
}
|
||||
} else if (state_.connected) {
|
||||
ImGui::Text("Peers: %zu", state_.peers.size());
|
||||
ImGui::Text(TR("sb_peers"), state_.peers.size());
|
||||
}
|
||||
|
||||
// Network hashrate (if connected and have data)
|
||||
@@ -1544,13 +1544,13 @@ void App::renderStatusBar()
|
||||
ImGui::TextDisabled("|");
|
||||
ImGui::SameLine(0, sbSeparatorGap);
|
||||
if (state_.mining.networkHashrate >= 1e9) {
|
||||
ImGui::Text("Net: %.2f GH/s", state_.mining.networkHashrate / 1e9);
|
||||
ImGui::Text(TR("sb_net_ghs"), state_.mining.networkHashrate / 1e9);
|
||||
} else if (state_.mining.networkHashrate >= 1e6) {
|
||||
ImGui::Text("Net: %.2f MH/s", state_.mining.networkHashrate / 1e6);
|
||||
ImGui::Text(TR("sb_net_mhs"), state_.mining.networkHashrate / 1e6);
|
||||
} else if (state_.mining.networkHashrate >= 1e3) {
|
||||
ImGui::Text("Net: %.2f KH/s", state_.mining.networkHashrate / 1e3);
|
||||
ImGui::Text(TR("sb_net_khs"), state_.mining.networkHashrate / 1e3);
|
||||
} else {
|
||||
ImGui::Text("Net: %.1f H/s", state_.mining.networkHashrate);
|
||||
ImGui::Text(TR("sb_net_hs"), state_.mining.networkHashrate);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1567,7 +1567,7 @@ void App::renderStatusBar()
|
||||
double displayHashrate = state_.pool_mining.xmrig_running
|
||||
? state_.pool_mining.hashrate_10s
|
||||
: state_.mining.localHashrate;
|
||||
ImGui::TextColored(ImVec4(0.3f, 0.8f, 0.3f, 1.0f), "%.1f H/s",
|
||||
ImGui::TextColored(ImVec4(0.3f, 0.8f, 0.3f, 1.0f), TR("sb_mining_hs"),
|
||||
displayHashrate);
|
||||
}
|
||||
|
||||
@@ -1583,7 +1583,7 @@ void App::renderStatusBar()
|
||||
ImGui::SameLine(0, sbIconTextGap);
|
||||
int dots = (int)(ImGui::GetTime() * 2.0f) % 4;
|
||||
const char* dotStr = (dots == 0) ? "." : (dots == 1) ? ".." : (dots == 2) ? "..." : "";
|
||||
ImGui::TextColored(ImVec4(0.6f, 0.8f, 1.0f, 1.0f), "Importing keys%s", dotStr);
|
||||
ImGui::TextColored(ImVec4(0.6f, 0.8f, 1.0f, 1.0f), "%s%s", TR("sb_importing_keys"), dotStr);
|
||||
}
|
||||
|
||||
// Right side: version always at far right, connection status to its left.
|
||||
@@ -1605,7 +1605,7 @@ void App::renderStatusBar()
|
||||
ImGui::SameLine(statusX);
|
||||
ImGui::TextDisabled("%s", connection_status_.c_str());
|
||||
} else if (!daemon_status_.empty() && daemon_status_.find("Error") != std::string::npos) {
|
||||
const char* errText = "Daemon not found";
|
||||
const char* errText = TR("sb_daemon_not_found");
|
||||
float statusW = ImGui::CalcTextSize(errText).x;
|
||||
float statusX = versionX - statusW - gap;
|
||||
ImGui::SameLine(statusX);
|
||||
@@ -2062,12 +2062,12 @@ bool App::startEmbeddedDaemon()
|
||||
// Try to extract embedded resources if available
|
||||
if (resources::hasEmbeddedResources()) {
|
||||
DEBUG_LOGF("Extracting embedded Sapling params...\n");
|
||||
daemon_status_ = "Extracting Sapling parameters...";
|
||||
daemon_status_ = TR("sb_extracting_sapling");
|
||||
resources::extractEmbeddedResources();
|
||||
|
||||
// Check again after extraction
|
||||
if (!rpc::Connection::verifySaplingParams()) {
|
||||
daemon_status_ = "Failed to extract Sapling parameters.";
|
||||
daemon_status_ = TR("sb_sapling_failed");
|
||||
DEBUG_LOGF("Sapling params still not found after extraction!\n");
|
||||
DEBUG_LOGF("Expected location: %s\n", rpc::Connection::getSaplingParamsDir().c_str());
|
||||
return false;
|
||||
@@ -2113,7 +2113,7 @@ bool App::startEmbeddedDaemon()
|
||||
if (copied && rpc::Connection::verifySaplingParams()) {
|
||||
DEBUG_LOGF("Sapling params copied from exe directory successfully\n");
|
||||
} else {
|
||||
daemon_status_ = "Sapling parameters not found. They should be in: " + rpc::Connection::getSaplingParamsDir();
|
||||
daemon_status_ = TR("sb_sapling_not_found");
|
||||
DEBUG_LOGF("Sapling params not found and no embedded resources available!\n");
|
||||
DEBUG_LOGF("Expected location: %s\n", rpc::Connection::getSaplingParamsDir().c_str());
|
||||
return false;
|
||||
@@ -2163,16 +2163,16 @@ bool App::startEmbeddedDaemon()
|
||||
embedded_daemon_->setStateCallback([this](daemon::EmbeddedDaemon::State state, const std::string& msg) {
|
||||
switch (state) {
|
||||
case daemon::EmbeddedDaemon::State::Starting:
|
||||
daemon_status_ = "Starting dragonxd...";
|
||||
daemon_status_ = TR("sb_starting_daemon");
|
||||
break;
|
||||
case daemon::EmbeddedDaemon::State::Running:
|
||||
daemon_status_ = "dragonxd running";
|
||||
daemon_status_ = TR("sb_dragonxd_running");
|
||||
break;
|
||||
case daemon::EmbeddedDaemon::State::Stopping:
|
||||
daemon_status_ = "Stopping dragonxd...";
|
||||
daemon_status_ = TR("sb_dragonxd_stopping");
|
||||
break;
|
||||
case daemon::EmbeddedDaemon::State::Stopped:
|
||||
daemon_status_ = "dragonxd stopped";
|
||||
daemon_status_ = TR("sb_dragonxd_stopped");
|
||||
break;
|
||||
case daemon::EmbeddedDaemon::State::Error:
|
||||
daemon_status_ = "Error: " + msg;
|
||||
@@ -3105,7 +3105,7 @@ void App::restartDaemon()
|
||||
}
|
||||
|
||||
DEBUG_LOGF("[App] Restarting embedded daemon...\n");
|
||||
connection_status_ = "Restarting daemon...";
|
||||
connection_status_ = TR("sb_restarting_daemon");
|
||||
|
||||
// Disconnect RPC so the loading overlay appears
|
||||
if (rpc_ && rpc_->isConnected()) {
|
||||
|
||||
+21
-17
@@ -40,6 +40,7 @@
|
||||
#include "default_banlist_embedded.h"
|
||||
#include "util/platform.h"
|
||||
#include "util/perf_log.h"
|
||||
#include "util/i18n.h"
|
||||
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <curl/curl.h>
|
||||
@@ -95,7 +96,7 @@ void App::tryConnect()
|
||||
++connect_attempt;
|
||||
|
||||
connection_in_progress_ = true;
|
||||
connection_status_ = "Loading configuration...";
|
||||
connection_status_ = TR("sb_loading_config");
|
||||
|
||||
// Auto-detect configuration (file I/O — fast, safe on main thread)
|
||||
auto config = rpc::Connection::autoDetectConfig();
|
||||
@@ -109,23 +110,23 @@ void App::tryConnect()
|
||||
// If we already know an external daemon is on the port, just wait
|
||||
// for the config file to appear (the daemon creates it on first run).
|
||||
if (embedded_daemon_ && embedded_daemon_->externalDaemonDetected()) {
|
||||
connection_status_ = "Waiting for daemon config...";
|
||||
connection_status_ = TR("sb_waiting_config");
|
||||
VERBOSE_LOGF("[connect #%d] External daemon detected on port, waiting for config file to appear\n", connect_attempt);
|
||||
core_timer_ = CORE_INTERVAL_DEFAULT - 1.0f;
|
||||
return;
|
||||
}
|
||||
|
||||
connection_status_ = "No DRAGONX.conf found";
|
||||
connection_status_ = TR("sb_no_conf");
|
||||
|
||||
// Try to start embedded daemon if enabled
|
||||
if (use_embedded_daemon_ && !isEmbeddedDaemonRunning()) {
|
||||
connection_status_ = "Starting dragonxd...";
|
||||
connection_status_ = TR("sb_starting_daemon");
|
||||
if (startEmbeddedDaemon()) {
|
||||
// Will retry connection after daemon starts
|
||||
VERBOSE_LOGF("[connect #%d] Embedded daemon starting, will retry connection...\n", connect_attempt);
|
||||
core_timer_ = CORE_INTERVAL_DEFAULT - 1.0f;
|
||||
} else if (embedded_daemon_ && embedded_daemon_->externalDaemonDetected()) {
|
||||
connection_status_ = "Waiting for daemon config...";
|
||||
connection_status_ = TR("sb_waiting_config");
|
||||
VERBOSE_LOGF("[connect #%d] External daemon detected but no config yet, will retry...\n", connect_attempt);
|
||||
core_timer_ = CORE_INTERVAL_DEFAULT - 1.0f;
|
||||
} else {
|
||||
@@ -141,7 +142,7 @@ void App::tryConnect()
|
||||
return;
|
||||
}
|
||||
|
||||
connection_status_ = "Connecting to dragonxd...";
|
||||
connection_status_ = TR("sb_connecting_daemon");
|
||||
VERBOSE_LOGF("[connect #%d] Connecting to %s:%s (user=%s)\n",
|
||||
connect_attempt, config.host.c_str(), config.port.c_str(), config.rpcuser.c_str());
|
||||
|
||||
@@ -235,7 +236,7 @@ void App::tryConnect()
|
||||
onConnected();
|
||||
} else {
|
||||
state_.connected = false;
|
||||
connection_status_ = "Auth failed — check rpcuser/rpcpassword";
|
||||
connection_status_ = TR("sb_auth_failed");
|
||||
VERBOSE_LOGF("[connect #%d] .cookie auth also failed\n", attempt);
|
||||
ui::Notifications::instance().error(
|
||||
"RPC authentication failed (HTTP 401). "
|
||||
@@ -248,7 +249,7 @@ void App::tryConnect()
|
||||
}
|
||||
state_.connected = false;
|
||||
std::string confPath = rpc::Connection::getDefaultConfPath();
|
||||
connection_status_ = "Auth failed — check rpcuser/rpcpassword";
|
||||
connection_status_ = TR("sb_auth_failed");
|
||||
VERBOSE_LOGF("[connect #%d] HTTP 401 — rpcuser/rpcpassword in %s don't match the daemon. "
|
||||
"Edit the file or restart the daemon to regenerate credentials.\n",
|
||||
attempt, confPath.c_str());
|
||||
@@ -261,9 +262,10 @@ void App::tryConnect()
|
||||
// Show the actual RPC error alongside the waiting message so
|
||||
// auth mismatches and timeouts aren't silently hidden.
|
||||
if (!connectErr.empty()) {
|
||||
connection_status_ = "Waiting for dragonxd — " + connectErr;
|
||||
char buf[256]; snprintf(buf, sizeof(buf), TR("sb_waiting_daemon_err"), connectErr.c_str());
|
||||
connection_status_ = buf;
|
||||
} else {
|
||||
connection_status_ = "Waiting for dragonxd to start...";
|
||||
connection_status_ = TR("sb_waiting_daemon");
|
||||
}
|
||||
VERBOSE_LOGF("[connect #%d] RPC connection failed (%s) — daemon still starting, will retry...\n",
|
||||
attempt, connectErr.c_str());
|
||||
@@ -271,9 +273,10 @@ void App::tryConnect()
|
||||
} else if (externalDetected) {
|
||||
state_.connected = false;
|
||||
if (!connectErr.empty()) {
|
||||
connection_status_ = "Connecting to daemon — " + connectErr;
|
||||
char buf[256]; snprintf(buf, sizeof(buf), TR("sb_connecting_err"), connectErr.c_str());
|
||||
connection_status_ = buf;
|
||||
} else {
|
||||
connection_status_ = "Connecting to external daemon...";
|
||||
connection_status_ = TR("sb_connecting_external");
|
||||
}
|
||||
VERBOSE_LOGF("[connect #%d] External daemon detected but RPC failed (%s), will retry...\n",
|
||||
attempt, connectErr.c_str());
|
||||
@@ -285,15 +288,16 @@ void App::tryConnect()
|
||||
if (use_embedded_daemon_ && !isEmbeddedDaemonRunning()) {
|
||||
// Prevent infinite crash-restart loop
|
||||
if (embedded_daemon_ && embedded_daemon_->getCrashCount() >= 3) {
|
||||
connection_status_ = "Daemon crashed " + std::to_string(embedded_daemon_->getCrashCount()) + " times";
|
||||
{ char buf[128]; snprintf(buf, sizeof(buf), TR("sb_daemon_crashed"), embedded_daemon_->getCrashCount());
|
||||
connection_status_ = buf; }
|
||||
VERBOSE_LOGF("[connect #%d] Daemon crashed %d times — not restarting (use Settings > Restart Daemon to retry)\n",
|
||||
attempt, embedded_daemon_->getCrashCount());
|
||||
} else {
|
||||
connection_status_ = "Starting dragonxd...";
|
||||
connection_status_ = TR("sb_starting_daemon");
|
||||
if (startEmbeddedDaemon()) {
|
||||
VERBOSE_LOGF("[connect #%d] Embedded daemon starting, will retry connection...\n", attempt);
|
||||
} else if (embedded_daemon_ && embedded_daemon_->externalDaemonDetected()) {
|
||||
connection_status_ = "Connecting to daemon...";
|
||||
connection_status_ = TR("sb_connecting_generic");
|
||||
VERBOSE_LOGF("[connect #%d] External daemon detected, will connect via RPC...\n", attempt);
|
||||
} else {
|
||||
VERBOSE_LOGF("[connect #%d] Failed to start embedded daemon — lastError: %s\n",
|
||||
@@ -317,7 +321,7 @@ void App::tryConnect()
|
||||
void App::onConnected()
|
||||
{
|
||||
state_.connected = true;
|
||||
connection_status_ = "Connected";
|
||||
connection_status_ = TR("connected");
|
||||
|
||||
// Reset crash counter on successful connection
|
||||
if (embedded_daemon_) {
|
||||
@@ -597,7 +601,7 @@ void App::refreshCoreData()
|
||||
state_.warming_up = false;
|
||||
state_.warmup_status.clear();
|
||||
state_.warmup_description.clear();
|
||||
connection_status_ = "Connected";
|
||||
connection_status_ = TR("connected");
|
||||
VERBOSE_LOGF("[warmup] Daemon ready, warmup complete\n");
|
||||
// Parse initial info
|
||||
try {
|
||||
|
||||
+149
-2
@@ -1005,7 +1005,7 @@ unsigned char res_lang_de_json[] = {
|
||||
0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x69, 0x74, 0x22, 0x3a, 0x20, 0x22,
|
||||
0x42, 0x65, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x22, 0x2c, 0x0a, 0x20, 0x20,
|
||||
0x20, 0x20, 0x22, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x22,
|
||||
0x3a, 0x20, 0x22, 0x45, 0x58, 0x50, 0x4c, 0x4f, 0x52, 0x45, 0x52, 0x22,
|
||||
0x3a, 0x20, 0x22, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x22,
|
||||
0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x70, 0x6c, 0x6f,
|
||||
0x72, 0x65, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x65,
|
||||
0x74, 0x61, 0x69, 0x6c, 0x22, 0x3a, 0x20, 0x22, 0x42, 0x6c, 0x6f, 0x63,
|
||||
@@ -1057,6 +1057,9 @@ unsigned char res_lang_de_json[] = {
|
||||
0x22, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x73, 0x65,
|
||||
0x61, 0x72, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x22, 0x53, 0x75, 0x63, 0x68,
|
||||
0x65, 0x6e, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78,
|
||||
0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x45, 0x58, 0x50, 0x4c, 0x4f, 0x52,
|
||||
0x45, 0x52, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78,
|
||||
0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x74, 0x78, 0x5f, 0x6f, 0x75,
|
||||
0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0x3a, 0x20, 0x22, 0x41, 0x75, 0x73,
|
||||
0x67, 0x61, 0x62, 0x65, 0x6e, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
|
||||
@@ -2473,6 +2476,150 @@ unsigned char res_lang_de_json[] = {
|
||||
0x22, 0x5a, 0x2d, 0x54, 0x78, 0x20, 0x69, 0x6e, 0x20, 0x54, 0x78, 0x2d,
|
||||
0x4c, 0x69, 0x73, 0x74, 0x65, 0x20, 0x73, 0x70, 0x65, 0x69, 0x63, 0x68,
|
||||
0x65, 0x72, 0x6e, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73,
|
||||
0x62, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65,
|
||||
0x64, 0x22, 0x3a, 0x20, 0x22, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74,
|
||||
0x69, 0x66, 0x69, 0x7a, 0x69, 0x65, 0x72, 0x75, 0x6e, 0x67, 0x20, 0x66,
|
||||
0x65, 0x68, 0x6c, 0x67, 0x65, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x67, 0x65,
|
||||
0x6e, 0x20, 0xe2, 0x80, 0x94, 0x20, 0x72, 0x70, 0x63, 0x75, 0x73, 0x65,
|
||||
0x72, 0x2f, 0x72, 0x70, 0x63, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
|
||||
0x64, 0x20, 0x70, 0x72, 0xc3, 0xbc, 0x66, 0x65, 0x6e, 0x22, 0x2c, 0x0a,
|
||||
0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x62, 0x6c, 0x6f, 0x63,
|
||||
0x6b, 0x22, 0x3a, 0x20, 0x22, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x3a, 0x20,
|
||||
0x25, 0x64, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62,
|
||||
0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x5f,
|
||||
0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x56, 0x65,
|
||||
0x72, 0x62, 0x69, 0x6e, 0x64, 0x75, 0x6e, 0x67, 0x20, 0x7a, 0x75, 0x20,
|
||||
0x64, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x78, 0x64, 0x2e, 0x2e, 0x2e, 0x22,
|
||||
0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x63, 0x6f,
|
||||
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x72, 0x72,
|
||||
0x22, 0x3a, 0x20, 0x22, 0x56, 0x65, 0x72, 0x62, 0x69, 0x6e, 0x64, 0x75,
|
||||
0x6e, 0x67, 0x20, 0x7a, 0x75, 0x6d, 0x20, 0x44, 0x61, 0x65, 0x6d, 0x6f,
|
||||
0x6e, 0x20, 0xe2, 0x80, 0x94, 0x20, 0x25, 0x73, 0x22, 0x2c, 0x0a, 0x20,
|
||||
0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
|
||||
0x63, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e,
|
||||
0x61, 0x6c, 0x22, 0x3a, 0x20, 0x22, 0x56, 0x65, 0x72, 0x62, 0x69, 0x6e,
|
||||
0x64, 0x75, 0x6e, 0x67, 0x20, 0x7a, 0x75, 0x20, 0x65, 0x78, 0x74, 0x65,
|
||||
0x72, 0x6e, 0x65, 0x6d, 0x20, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e,
|
||||
0x2e, 0x2e, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62,
|
||||
0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x5f,
|
||||
0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x22, 0x3a, 0x20, 0x22, 0x56,
|
||||
0x65, 0x72, 0x62, 0x69, 0x6e, 0x64, 0x75, 0x6e, 0x67, 0x20, 0x7a, 0x75,
|
||||
0x6d, 0x20, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x2e, 0x2e, 0x22,
|
||||
0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x64, 0x61,
|
||||
0x65, 0x6d, 0x6f, 0x6e, 0x5f, 0x63, 0x72, 0x61, 0x73, 0x68, 0x65, 0x64,
|
||||
0x22, 0x3a, 0x20, 0x22, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x20, 0x69,
|
||||
0x73, 0x74, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x61, 0x6c, 0x20, 0x61, 0x62,
|
||||
0x67, 0x65, 0x73, 0x74, 0xc3, 0xbc, 0x72, 0x7a, 0x74, 0x22, 0x2c, 0x0a,
|
||||
0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x64, 0x61, 0x65, 0x6d,
|
||||
0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64,
|
||||
0x22, 0x3a, 0x20, 0x22, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x20, 0x6e,
|
||||
0x69, 0x63, 0x68, 0x74, 0x20, 0x67, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x65,
|
||||
0x6e, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f,
|
||||
0x64, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x78, 0x64, 0x5f, 0x72, 0x75, 0x6e,
|
||||
0x6e, 0x69, 0x6e, 0x67, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x72, 0x61, 0x67,
|
||||
0x6f, 0x6e, 0x78, 0x64, 0x20, 0x6c, 0xc3, 0xa4, 0x75, 0x66, 0x74, 0x22,
|
||||
0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x64, 0x72,
|
||||
0x61, 0x67, 0x6f, 0x6e, 0x78, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70,
|
||||
0x65, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x72, 0x61, 0x67, 0x6f, 0x6e,
|
||||
0x78, 0x64, 0x20, 0x67, 0x65, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x74, 0x22,
|
||||
0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x64, 0x72,
|
||||
0x61, 0x67, 0x6f, 0x6e, 0x78, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70,
|
||||
0x69, 0x6e, 0x67, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x72, 0x61, 0x67, 0x6f,
|
||||
0x6e, 0x78, 0x64, 0x20, 0x77, 0x69, 0x72, 0x64, 0x20, 0x67, 0x65, 0x73,
|
||||
0x74, 0x6f, 0x70, 0x70, 0x74, 0x2e, 0x2e, 0x2e, 0x22, 0x2c, 0x0a, 0x20,
|
||||
0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61,
|
||||
0x63, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x61, 0x70, 0x6c, 0x69, 0x6e,
|
||||
0x67, 0x22, 0x3a, 0x20, 0x22, 0x53, 0x61, 0x70, 0x6c, 0x69, 0x6e, 0x67,
|
||||
0x2d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x20, 0x77,
|
||||
0x65, 0x72, 0x64, 0x65, 0x6e, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x68,
|
||||
0x69, 0x65, 0x72, 0x74, 0x2e, 0x2e, 0x2e, 0x22, 0x2c, 0x0a, 0x20, 0x20,
|
||||
0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74,
|
||||
0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x3a, 0x20, 0x22,
|
||||
0x53, 0x63, 0x68, 0x6c, 0xc3, 0xbc, 0x73, 0x73, 0x65, 0x6c, 0x20, 0x69,
|
||||
0x6d, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x65, 0x72, 0x65, 0x6e, 0x22, 0x2c,
|
||||
0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x6c, 0x6f, 0x61,
|
||||
0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22,
|
||||
0x3a, 0x20, 0x22, 0x4b, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x61, 0x64, 0x65, 0x6e, 0x2e, 0x2e,
|
||||
0x2e, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f,
|
||||
0x6d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x73, 0x22, 0x3a, 0x20,
|
||||
0x22, 0x25, 0x2e, 0x31, 0x66, 0x20, 0x48, 0x2f, 0x73, 0x22, 0x2c, 0x0a,
|
||||
0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x6e, 0x65, 0x74, 0x5f,
|
||||
0x67, 0x68, 0x73, 0x22, 0x3a, 0x20, 0x22, 0x4e, 0x65, 0x74, 0x7a, 0x3a,
|
||||
0x20, 0x25, 0x2e, 0x32, 0x66, 0x20, 0x47, 0x48, 0x2f, 0x73, 0x22, 0x2c,
|
||||
0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x6e, 0x65, 0x74,
|
||||
0x5f, 0x68, 0x73, 0x22, 0x3a, 0x20, 0x22, 0x4e, 0x65, 0x74, 0x7a, 0x3a,
|
||||
0x20, 0x25, 0x2e, 0x31, 0x66, 0x20, 0x48, 0x2f, 0x73, 0x22, 0x2c, 0x0a,
|
||||
0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x6e, 0x65, 0x74, 0x5f,
|
||||
0x6b, 0x68, 0x73, 0x22, 0x3a, 0x20, 0x22, 0x4e, 0x65, 0x74, 0x7a, 0x3a,
|
||||
0x20, 0x25, 0x2e, 0x32, 0x66, 0x20, 0x4b, 0x48, 0x2f, 0x73, 0x22, 0x2c,
|
||||
0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x6e, 0x65, 0x74,
|
||||
0x5f, 0x6d, 0x68, 0x73, 0x22, 0x3a, 0x20, 0x22, 0x4e, 0x65, 0x74, 0x7a,
|
||||
0x3a, 0x20, 0x25, 0x2e, 0x32, 0x66, 0x20, 0x4d, 0x48, 0x2f, 0x73, 0x22,
|
||||
0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x6e, 0x6f,
|
||||
0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x22, 0x3a, 0x20, 0x22, 0x44, 0x52, 0x41,
|
||||
0x47, 0x4f, 0x4e, 0x58, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x20, 0x6e, 0x69,
|
||||
0x63, 0x68, 0x74, 0x20, 0x67, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x65, 0x6e,
|
||||
0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x70,
|
||||
0x65, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x20, 0x22, 0x50, 0x65, 0x65, 0x72,
|
||||
0x73, 0x3a, 0x20, 0x25, 0x7a, 0x75, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20,
|
||||
0x20, 0x22, 0x73, 0x62, 0x5f, 0x72, 0x65, 0x73, 0x63, 0x61, 0x6e, 0x6e,
|
||||
0x69, 0x6e, 0x67, 0x22, 0x3a, 0x20, 0x22, 0x4e, 0x65, 0x75, 0x73, 0x63,
|
||||
0x61, 0x6e, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62,
|
||||
0x5f, 0x72, 0x65, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f,
|
||||
0x70, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x4e, 0x65, 0x75, 0x73, 0x63,
|
||||
0x61, 0x6e, 0x20, 0x25, 0x2e, 0x30, 0x66, 0x25, 0x25, 0x22, 0x2c, 0x0a,
|
||||
0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x72, 0x65, 0x73, 0x74,
|
||||
0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x65, 0x6d, 0x6f,
|
||||
0x6e, 0x22, 0x3a, 0x20, 0x22, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x20,
|
||||
0x77, 0x69, 0x72, 0x64, 0x20, 0x6e, 0x65, 0x75, 0x20, 0x67, 0x65, 0x73,
|
||||
0x74, 0x61, 0x72, 0x74, 0x65, 0x74, 0x2e, 0x2e, 0x2e, 0x22, 0x2c, 0x0a,
|
||||
0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x73, 0x61, 0x70, 0x6c,
|
||||
0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x22, 0x3a,
|
||||
0x20, 0x22, 0x53, 0x61, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x2d, 0x50, 0x61,
|
||||
0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x2d, 0x45, 0x78, 0x74, 0x72,
|
||||
0x61, 0x6b, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x65, 0x68, 0x6c, 0x67,
|
||||
0x65, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x67, 0x65, 0x6e, 0x2e, 0x22, 0x2c,
|
||||
0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x73, 0x61, 0x70,
|
||||
0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75,
|
||||
0x6e, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x53, 0x61, 0x70, 0x6c, 0x69, 0x6e,
|
||||
0x67, 0x2d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x20,
|
||||
0x6e, 0x69, 0x63, 0x68, 0x74, 0x20, 0x67, 0x65, 0x66, 0x75, 0x6e, 0x64,
|
||||
0x65, 0x6e, 0x2e, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73,
|
||||
0x62, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64,
|
||||
0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x72, 0x61,
|
||||
0x67, 0x6f, 0x6e, 0x78, 0x64, 0x20, 0x77, 0x69, 0x72, 0x64, 0x20, 0x67,
|
||||
0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x74, 0x2e, 0x2e, 0x2e, 0x22,
|
||||
0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x73, 0x79,
|
||||
0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x73, 0x69, 0x63, 0x22,
|
||||
0x3a, 0x20, 0x22, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69,
|
||||
0x73, 0x69, 0x65, 0x72, 0x75, 0x6e, 0x67, 0x20, 0x25, 0x2e, 0x31, 0x66,
|
||||
0x25, 0x25, 0x20, 0x28, 0x25, 0x64, 0x20, 0xc3, 0xbc, 0x62, 0x72, 0x69,
|
||||
0x67, 0x29, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62,
|
||||
0x5f, 0x73, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x74, 0x61,
|
||||
0x22, 0x3a, 0x20, 0x22, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e,
|
||||
0x69, 0x73, 0x69, 0x65, 0x72, 0x75, 0x6e, 0x67, 0x20, 0x25, 0x2e, 0x31,
|
||||
0x66, 0x25, 0x25, 0x20, 0x28, 0x25, 0x64, 0x20, 0xc3, 0xbc, 0x62, 0x72,
|
||||
0x69, 0x67, 0x2c, 0x20, 0x25, 0x2e, 0x30, 0x66, 0x20, 0x42, 0x6c, 0x6b,
|
||||
0x2f, 0x73, 0x2c, 0x20, 0x7e, 0x25, 0x73, 0x29, 0x22, 0x2c, 0x0a, 0x20,
|
||||
0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x69,
|
||||
0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x3a, 0x20,
|
||||
0x22, 0x57, 0x61, 0x72, 0x74, 0x65, 0x6e, 0x20, 0x61, 0x75, 0x66, 0x20,
|
||||
0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2d, 0x4b, 0x6f, 0x6e, 0x66, 0x69,
|
||||
0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x2e, 0x2e, 0x22,
|
||||
0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f, 0x77, 0x61,
|
||||
0x69, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e,
|
||||
0x22, 0x3a, 0x20, 0x22, 0x57, 0x61, 0x72, 0x74, 0x65, 0x6e, 0x20, 0x61,
|
||||
0x75, 0x66, 0x20, 0x64, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x78, 0x64, 0x2e,
|
||||
0x2e, 0x2e, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62,
|
||||
0x5f, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x65,
|
||||
0x6d, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x57,
|
||||
0x61, 0x72, 0x74, 0x65, 0x6e, 0x20, 0x61, 0x75, 0x66, 0x20, 0x64, 0x72,
|
||||
0x61, 0x67, 0x6f, 0x6e, 0x78, 0x64, 0x20, 0xe2, 0x80, 0x94, 0x20, 0x25,
|
||||
0x73, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x62, 0x5f,
|
||||
0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x70, 0x22, 0x3a,
|
||||
0x20, 0x22, 0x41, 0x75, 0x66, 0x77, 0xc3, 0xa4, 0x72, 0x6d, 0x65, 0x6e,
|
||||
0x2e, 0x2e, 0x2e, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73,
|
||||
0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68,
|
||||
0x6f, 0x6c, 0x64, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x53, 0x75, 0x63,
|
||||
0x68, 0x65, 0x6e, 0x2e, 0x2e, 0x2e, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20,
|
||||
@@ -3992,4 +4139,4 @@ unsigned char res_lang_de_json[] = {
|
||||
0x2d, 0x41, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x6e, 0x22, 0x0a, 0x7d,
|
||||
0x0a
|
||||
};
|
||||
unsigned int res_lang_de_json_len = 47893;
|
||||
unsigned int res_lang_de_json_len = 49657;
|
||||
|
||||
+3028
-2883
File diff suppressed because it is too large
Load Diff
+3120
-2972
File diff suppressed because it is too large
Load Diff
+3392
-3232
File diff suppressed because it is too large
Load Diff
+2970
-2824
File diff suppressed because it is too large
Load Diff
+3010
-2866
File diff suppressed because it is too large
Load Diff
+3368
-3193
File diff suppressed because it is too large
Load Diff
+2697
-2555
File diff suppressed because it is too large
Load Diff
@@ -1675,7 +1675,7 @@ void RenderSettingsPage(App* app) {
|
||||
// EXPLORER & OPTIONS — full-width card
|
||||
// ====================================================================
|
||||
{
|
||||
Type().textColored(TypeStyle::Overline, OnSurfaceMedium(), TR("explorer"));
|
||||
Type().textColored(TypeStyle::Overline, OnSurfaceMedium(), TR("explorer_section"));
|
||||
ImGui::Dummy(ImVec2(0, Layout::spacingXs()));
|
||||
|
||||
ImVec2 cardMin = ImGui::GetCursorScreenPos();
|
||||
|
||||
+8
-2
@@ -557,15 +557,21 @@ inline bool RenderSidebar(NavPage& current, float sidebarWidth, float contentHei
|
||||
if (showLabels) {
|
||||
ImFont* olFont = Type().overline();
|
||||
float olFontSz = ScaledFontSize(olFont);
|
||||
float maxSectionW = panelRight - wp.x - sbSectionLabelPadLeft;
|
||||
int si = 0;
|
||||
for (int i = 0; i < (int)NavPage::Count_; ++i) {
|
||||
if (kNavItems[i].section_label && si < nSectionLabels) {
|
||||
float ly = panelTopY + sectionLabelY[si++];
|
||||
const char* sLabel = NavSectionLabel(kNavItems[i]);
|
||||
float drawFsz = olFontSz;
|
||||
ImVec2 sLabelSz = olFont->CalcTextSizeA(drawFsz, 1000.0f, 0.0f, sLabel);
|
||||
if (sLabelSz.x > maxSectionW && maxSectionW > 0)
|
||||
drawFsz *= maxSectionW / sLabelSz.x;
|
||||
ImVec4 olCol = ImGui::ColorConvertU32ToFloat4(OnSurfaceMedium());
|
||||
olCol.w *= expandFrac;
|
||||
dl->AddText(olFont, olFontSz,
|
||||
dl->AddText(olFont, drawFsz,
|
||||
ImVec2(wp.x + sbSectionLabelPadLeft, ly),
|
||||
ImGui::ColorConvertFloat4ToU32(olCol), NavSectionLabel(kNavItems[i]));
|
||||
ImGui::ColorConvertFloat4ToU32(olCol), sLabel);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -195,7 +195,7 @@ static void RenderSyncBanner(const WalletState& state) {
|
||||
? (float)state.sync.blocks / state.sync.headers * 100.0f : 0.0f;
|
||||
char syncBuf[128];
|
||||
snprintf(syncBuf, sizeof(syncBuf),
|
||||
"Blockchain syncing (%.1f%%)... Balances may be inaccurate.", syncPct);
|
||||
TR("blockchain_syncing"), syncPct);
|
||||
ImGui::PushStyleColor(ImGuiCol_ChildBg, ImGui::ColorConvertU32ToFloat4(schema::UI().resolveColor(schema::UI().drawElement("tabs.send", "sync-banner-bg-color").color)));
|
||||
float syncH = std::max(schema::UI().drawElement("tabs.send", "sync-banner-min-height").size, schema::UI().drawElement("tabs.send", "sync-banner-height").size * Layout::vScale());
|
||||
ImGui::BeginChild("##SyncBanner", ImVec2(ImGui::GetContentRegionAvail().x, syncH),
|
||||
|
||||
+36
-1
@@ -181,7 +181,7 @@ void I18n::loadBuiltinEnglish()
|
||||
strings_["node_security"] = "NODE & SECURITY";
|
||||
strings_["node"] = "NODE";
|
||||
strings_["security"] = "SECURITY";
|
||||
strings_["explorer"] = "EXPLORER";
|
||||
strings_["explorer_section"] = "EXPLORER";
|
||||
strings_["about"] = "About";
|
||||
strings_["backup_data"] = "BACKUP & DATA";
|
||||
strings_["balance_layout"] = "Balance Layout";
|
||||
@@ -671,6 +671,41 @@ void I18n::loadBuiltinEnglish()
|
||||
strings_["syncing"] = "Syncing...";
|
||||
strings_["block"] = "Block";
|
||||
strings_["no_addresses_available"] = "No addresses available";
|
||||
|
||||
// Status bar
|
||||
strings_["sb_warming_up"] = "Warming up...";
|
||||
strings_["sb_block"] = "Block: %d";
|
||||
strings_["sb_peers"] = "Peers: %zu";
|
||||
strings_["sb_net_ghs"] = "Net: %.2f GH/s";
|
||||
strings_["sb_net_mhs"] = "Net: %.2f MH/s";
|
||||
strings_["sb_net_khs"] = "Net: %.2f KH/s";
|
||||
strings_["sb_net_hs"] = "Net: %.1f H/s";
|
||||
strings_["sb_mining_hs"] = "%.1f H/s";
|
||||
strings_["sb_syncing_eta"] = "Syncing %.1f%% (%d left, %.0f blk/s, ~%s)";
|
||||
strings_["sb_syncing_basic"] = "Syncing %.1f%% (%d left)";
|
||||
strings_["sb_rescanning_pct"] = "Rescanning %.0f%%";
|
||||
strings_["sb_rescanning"] = "Rescanning";
|
||||
strings_["sb_importing_keys"] = "Importing keys";
|
||||
strings_["sb_daemon_not_found"] = "Daemon not found";
|
||||
strings_["sb_loading_config"] = "Loading configuration...";
|
||||
strings_["sb_waiting_config"] = "Waiting for daemon config...";
|
||||
strings_["sb_no_conf"] = "No DRAGONX.conf found";
|
||||
strings_["sb_starting_daemon"] = "Starting dragonxd...";
|
||||
strings_["sb_connecting_daemon"] = "Connecting to dragonxd...";
|
||||
strings_["sb_auth_failed"] = "Auth failed — check rpcuser/rpcpassword";
|
||||
strings_["sb_waiting_daemon"] = "Waiting for dragonxd to start...";
|
||||
strings_["sb_waiting_daemon_err"] = "Waiting for dragonxd — %s";
|
||||
strings_["sb_connecting_external"] = "Connecting to external daemon...";
|
||||
strings_["sb_connecting_generic"] = "Connecting to daemon...";
|
||||
strings_["sb_connecting_err"] = "Connecting to daemon — %s";
|
||||
strings_["sb_daemon_crashed"] = "Daemon crashed %d times";
|
||||
strings_["sb_extracting_sapling"] = "Extracting Sapling parameters...";
|
||||
strings_["sb_sapling_failed"] = "Failed to extract Sapling parameters.";
|
||||
strings_["sb_sapling_not_found"] = "Sapling parameters not found.";
|
||||
strings_["sb_dragonxd_running"] = "dragonxd running";
|
||||
strings_["sb_dragonxd_stopping"] = "Stopping dragonxd...";
|
||||
strings_["sb_dragonxd_stopped"] = "dragonxd stopped";
|
||||
strings_["sb_restarting_daemon"] = "Restarting daemon...";
|
||||
|
||||
// Errors & Messages
|
||||
strings_["error"] = "Error";
|
||||
|
||||
Reference in New Issue
Block a user