Add bootstrap download dialog and fix 100 missing translation keys

- New BootstrapDownloadDialog accessible from Settings page
  - Stops daemon before download, prevents auto-restart during bootstrap
  - Confirm/Downloading/Done/Failed states with progress display
  - Mirror support (bootstrap2.dragonx.is)
- Add bootstrap_downloading_ flag to prevent tryConnect() auto-reconnect
- Right-align Download Bootstrap + Setup Wizard buttons in settings
- Add 100 missing i18n keys to all 8 language files (de/es/fr/ja/ko/pt/ru/zh)
  - Includes bootstrap, explorer, mining benchmark, transfer, delete blockchain,
    force quit, address label, and settings section translations
- Update add_missing_translations.py with new translation batch
This commit is contained in:
dan_s
2026-04-12 18:19:01 -05:00
parent 9f23b2781c
commit 077f9a7403
22 changed files with 32135 additions and 25512 deletions

View File

@@ -1275,6 +1275,641 @@ TRANSLATIONS = {
"pt": "Clique para copiar", "ru": "Нажмите для копирования", "zh": "点击复制",
"ja": "クリックしてコピー", "ko": "복사하려면 클릭"
},
# ── NEW BATCH: 100 missing keys ──────────────────────────────────────
"advanced_effects": {
"es": "Efectos Avanzados...", "de": "Erweiterte Effekte...", "fr": "Effets avancés...",
"pt": "Efeitos Avançados...", "ru": "Расширенные эффекты...", "zh": "高级特效...",
"ja": "高度なエフェクト...", "ko": "고급 효과..."
},
"ago": {
"es": "atrás", "de": "her", "fr": "passé",
"pt": "atrás", "ru": "назад", "zh": "",
"ja": "", "ko": ""
},
"bootstrap_daemon_running": {
"es": "Daemon ejecutándose", "de": "Daemon läuft", "fr": "Daemon en cours",
"pt": "Daemon em execução", "ru": "Демон запущен", "zh": "守护进程运行中",
"ja": "デーモン実行中", "ko": "데몬 실행 중"
},
"bootstrap_daemon_stopped": {
"es": "Daemon detenido", "de": "Daemon gestoppt", "fr": "Daemon arrêté",
"pt": "Daemon parado", "ru": "Демон остановлен", "zh": "守护进程已停止",
"ja": "デーモン停止", "ko": "데몬 중지됨"
},
"bootstrap_daemon_stopping": {
"es": "Deteniendo daemon...", "de": "Daemon wird gestoppt...", "fr": "Arrêt du daemon...",
"pt": "Parando daemon...", "ru": "Остановка демона...", "zh": "正在停止守护进程...",
"ja": "デーモン停止中...", "ko": "데몬 중지 중..."
},
"bootstrap_desc": {
"es": "Descarga un bootstrap de la blockchain para acelerar drásticamente la sincronización inicial. Esto descarga una instantánea de la blockchain y la extrae en tu directorio de datos.",
"de": "Laden Sie einen Blockchain-Bootstrap herunter, um die anfängliche Synchronisierung drastisch zu beschleunigen. Dies lädt einen Snapshot der Blockchain herunter und extrahiert ihn in Ihr Datenverzeichnis.",
"fr": "Téléchargez un bootstrap de la blockchain pour accélérer considérablement la synchronisation initiale. Cela télécharge un instantané de la blockchain et l'extrait dans votre répertoire de données.",
"pt": "Baixe um bootstrap da blockchain para acelerar drasticamente a sincronização inicial. Isso baixa um instantâneo da blockchain e o extrai no seu diretório de dados.",
"ru": "Загрузите бутстрап блокчейна для значительного ускорения начальной синхронизации. Это загружает снимок блокчейна и извлекает его в ваш каталог данных.",
"zh": "下载区块链引导程序以大幅加速初始同步。这将下载区块链快照并将其提取到您的数据目录中。",
"ja": "ブロックチェーンブートストラップをダウンロードして初期同期を劇的に高速化します。ブロックチェーンのスナップショットをダウンロードしてデータディレクトリに展開します。",
"ko": "블록체인 부트스트랩을 다운로드하여 초기 동기화를 대폭 가속합니다. 블록체인 스냅샷을 다운로드하고 데이터 디렉토리에 추출합니다."
},
"bootstrap_downloading": {
"es": "Descargando bootstrap...", "de": "Bootstrap wird heruntergeladen...", "fr": "Téléchargement du bootstrap...",
"pt": "Baixando bootstrap...", "ru": "Загрузка бутстрапа...", "zh": "正在下载引导程序...",
"ja": "ブートストラップをダウンロード中...", "ko": "부트스트랩 다운로드 중..."
},
"bootstrap_extracting": {
"es": "Extrayendo datos de blockchain...", "de": "Blockchain-Daten werden extrahiert...", "fr": "Extraction des données blockchain...",
"pt": "Extraindo dados da blockchain...", "ru": "Извлечение данных блокчейна...", "zh": "正在提取区块链数据...",
"ja": "ブロックチェーンデータを展開中...", "ko": "블록체인 데이터 추출 중..."
},
"bootstrap_failed": {
"es": "Error en Bootstrap", "de": "Bootstrap fehlgeschlagen", "fr": "Échec du Bootstrap",
"pt": "Falha no Bootstrap", "ru": "Ошибка бутстрапа", "zh": "引导程序失败",
"ja": "ブートストラップ失敗", "ko": "부트스트랩 실패"
},
"bootstrap_mirror": {
"es": "Espejo", "de": "Spiegel", "fr": "Miroir",
"pt": "Espelho", "ru": "Зеркало", "zh": "镜像",
"ja": "ミラー", "ko": "미러"
},
"bootstrap_mirror_tooltip": {
"es": "Descargar desde espejo (bootstrap2.dragonx.is).\nUsa esto si la descarga principal es lenta o falla.",
"de": "Vom Spiegel herunterladen (bootstrap2.dragonx.is).\nVerwenden Sie dies, wenn der Hauptdownload langsam ist oder fehlschlägt.",
"fr": "Télécharger depuis le miroir (bootstrap2.dragonx.is).\nUtilisez ceci si le téléchargement principal est lent ou échoue.",
"pt": "Baixar do espelho (bootstrap2.dragonx.is).\nUse isto se o download principal estiver lento ou falhando.",
"ru": "Скачать с зеркала (bootstrap2.dragonx.is).\nИспользуйте, если основная загрузка медленная или не работает.",
"zh": "从镜像下载 (bootstrap2.dragonx.is)。\n如果主下载速度慢或失败,请使用此选项。",
"ja": "ミラーからダウンロード (bootstrap2.dragonx.is)。\nメインのダウンロードが遅い場合や失敗する場合に使用してください。",
"ko": "미러에서 다운로드 (bootstrap2.dragonx.is).\n메인 다운로드가 느리거나 실패할 경우 사용하세요."
},
"bootstrap_restart_daemon": {
"es": "Reiniciar Daemon", "de": "Daemon neu starten", "fr": "Redémarrer le Daemon",
"pt": "Reiniciar Daemon", "ru": "Перезапустить демон", "zh": "重启守护进程",
"ja": "デーモンを再起動", "ko": "데몬 재시작"
},
"bootstrap_success": {
"es": "Bootstrap Completado", "de": "Bootstrap abgeschlossen", "fr": "Bootstrap terminé",
"pt": "Bootstrap Completo", "ru": "Бутстрап завершён", "zh": "引导程序完成",
"ja": "ブートストラップ完了", "ko": "부트스트랩 완료"
},
"bootstrap_success_desc": {
"es": "Los datos de la blockchain se han extraído correctamente. Inicie el daemon para comenzar a sincronizar desde el punto del bootstrap.",
"de": "Blockchain-Daten wurden erfolgreich extrahiert. Starten Sie den Daemon, um ab dem Bootstrap-Punkt zu synchronisieren.",
"fr": "Les données de la blockchain ont été extraites avec succès. Démarrez le daemon pour commencer la synchronisation à partir du point de bootstrap.",
"pt": "Os dados da blockchain foram extraídos com sucesso. Inicie o daemon para começar a sincronizar a partir do ponto do bootstrap.",
"ru": "Данные блокчейна успешно извлечены. Запустите демон для начала синхронизации с точки бутстрапа.",
"zh": "区块链数据已成功提取。启动守护进程以从引导点开始同步。",
"ja": "ブロックチェーンデータが正常に展開されました。デーモンを起動してブートストラップポイントから同期を開始してください。",
"ko": "블록체인 데이터가 성공적으로 추출되었습니다. 데몬을 시작하여 부트스트랩 지점부터 동기화를 시작하세요."
},
"bootstrap_trust_warning": {
"es": "Solo use bootstrap.dragonx.is o bootstrap2.dragonx.is. Usar archivos de fuentes no confiables podría comprometer su nodo.",
"de": "Verwenden Sie nur bootstrap.dragonx.is oder bootstrap2.dragonx.is. Die Verwendung von Dateien aus nicht vertrauenswürdigen Quellen könnte Ihren Knoten gefährden.",
"fr": "N'utilisez que bootstrap.dragonx.is ou bootstrap2.dragonx.is. L'utilisation de fichiers provenant de sources non fiables pourrait compromettre votre nœud.",
"pt": "Use apenas bootstrap.dragonx.is ou bootstrap2.dragonx.is. Usar arquivos de fontes não confiáveis pode comprometer seu nó.",
"ru": "Используйте только bootstrap.dragonx.is или bootstrap2.dragonx.is. Использование файлов из ненадёжных источников может скомпрометировать ваш узел.",
"zh": "仅使用 bootstrap.dragonx.is 或 bootstrap2.dragonx.is。使用不受信任来源的文件可能会危及您的节点。",
"ja": "bootstrap.dragonx.is または bootstrap2.dragonx.is のみを使用してください。信頼できないソースのファイルを使用するとノードが危険にさらされる可能性があります。",
"ko": "bootstrap.dragonx.is 또는 bootstrap2.dragonx.is만 사용하세요. 신뢰할 수 없는 출처의 파일을 사용하면 노드가 손상될 수 있습니다."
},
"bootstrap_verifying": {
"es": "Verificando sumas de comprobación...", "de": "Prüfsummen werden überprüft...", "fr": "Vérification des sommes de contrôle...",
"pt": "Verificando somas de verificação...", "ru": "Проверка контрольных сумм...", "zh": "正在验证校验和...",
"ja": "チェックサムを検証中...", "ko": "체크섬 확인 중..."
},
"bootstrap_wallet_protected": {
"es": "(wallet.dat está protegido)", "de": "(wallet.dat ist geschützt)", "fr": "(wallet.dat est protégé)",
"pt": "(wallet.dat está protegido)", "ru": "(wallet.dat защищён)", "zh": "(wallet.dat 已受保护)",
"ja": "(wallet.dat は保護されています)", "ko": "(wallet.dat 보호됨)"
},
"bootstrap_warning": {
"es": "Los datos de bloques existentes (blocks, chainstate, notarizations) se eliminarán y reemplazarán. Su wallet.dat NO será modificado ni eliminado.",
"de": "Vorhandene Blockdaten (blocks, chainstate, notarizations) werden gelöscht und ersetzt. Ihre wallet.dat wird NICHT verändert oder gelöscht.",
"fr": "Les données de blocs existantes (blocks, chainstate, notarizations) seront supprimées et remplacées. Votre wallet.dat ne sera PAS modifié ni supprimé.",
"pt": "Os dados de blocos existentes (blocks, chainstate, notarizations) serão excluídos e substituídos. Seu wallet.dat NÃO será modificado ou excluído.",
"ru": "Существующие данные блоков (blocks, chainstate, notarizations) будут удалены и заменены. Ваш wallet.dat НЕ будет изменён или удалён.",
"zh": "现有区块数据blocks、chainstate、notarizations将被删除并替换。您的 wallet.dat 不会被修改或删除。",
"ja": "既存のブロックデータblocks、chainstate、notarizationsは削除され置き換えられます。wallet.dat は変更・削除されません。",
"ko": "기존 블록 데이터(blocks, chainstate, notarizations)가 삭제되고 교체됩니다. wallet.dat는 수정되거나 삭제되지 않습니다."
},
"choose_icon": {
"es": "Elegir Icono", "de": "Symbol wählen", "fr": "Choisir une icône",
"pt": "Escolher Ícone", "ru": "Выбрать иконку", "zh": "选择图标",
"ja": "アイコンを選択", "ko": "아이콘 선택"
},
"clear_icon": {
"es": "Borrar Icono", "de": "Symbol entfernen", "fr": "Effacer l'icône",
"pt": "Limpar Ícone", "ru": "Удалить иконку", "zh": "清除图标",
"ja": "アイコンをクリア", "ko": "아이콘 지우기"
},
"confirm_delete_blockchain_msg": {
"es": "Esto detendrá el daemon, eliminará todos los datos de la blockchain (blocks, chainstate, peers) y comenzará una nueva sincronización desde cero. Esto puede tardar varias horas.",
"de": "Dies stoppt den Daemon, löscht alle Blockchain-Daten (blocks, chainstate, peers) und startet eine neue Synchronisierung. Dies kann mehrere Stunden dauern.",
"fr": "Cela arrêtera le daemon, supprimera toutes les données de la blockchain (blocks, chainstate, peers) et démarrera une nouvelle synchronisation. Cela peut prendre plusieurs heures.",
"pt": "Isso irá parar o daemon, excluir todos os dados da blockchain (blocks, chainstate, peers) e iniciar uma nova sincronização do zero. Isso pode levar várias horas.",
"ru": "Это остановит демон, удалит все данные блокчейна (blocks, chainstate, peers) и начнёт синхронизацию с нуля. Это может занять несколько часов.",
"zh": "这将停止守护进程删除所有区块链数据blocks、chainstate、peers并从头开始重新同步。这可能需要几个小时。",
"ja": "デーモンを停止し、すべてのブロックチェーンデータblocks、chainstate、peersを削除して、最初から再同期を開始します。数時間かかる場合があります。",
"ko": "데몬을 중지하고 모든 블록체인 데이터(blocks, chainstate, peers)를 삭제한 후 처음부터 다시 동기화합니다. 몇 시간이 걸릴 수 있습니다."
},
"confirm_delete_blockchain_safe": {
"es": "Su wallet.dat, configuración e historial de transacciones están seguros y no se eliminarán.",
"de": "Ihre wallet.dat, Konfiguration und Transaktionshistorie sind sicher und werden nicht gelöscht.",
"fr": "Votre wallet.dat, votre configuration et votre historique de transactions sont en sécurité et ne seront pas supprimés.",
"pt": "Seu wallet.dat, configuração e histórico de transações estão seguros e não serão excluídos.",
"ru": "Ваш wallet.dat, конфигурация и история транзакций в безопасности и не будут удалены.",
"zh": "您的 wallet.dat、配置和交易历史是安全的不会被删除。",
"ja": "wallet.dat、設定、トランザクション履歴は安全で削除されません。",
"ko": "wallet.dat, 설정 및 거래 내역은 안전하며 삭제되지 않습니다."
},
"confirm_delete_blockchain_title": {
"es": "Eliminar Datos de Blockchain", "de": "Blockchain-Daten löschen", "fr": "Supprimer les données Blockchain",
"pt": "Excluir Dados da Blockchain", "ru": "Удалить данные блокчейна", "zh": "删除区块链数据",
"ja": "ブロックチェーンデータを削除", "ko": "블록체인 데이터 삭제"
},
"confirm_transfer": {
"es": "Confirmar Transferencia", "de": "Überweisung bestätigen", "fr": "Confirmer le transfert",
"pt": "Confirmar Transferência", "ru": "Подтвердить перевод", "zh": "确认转账",
"ja": "送金を確認", "ko": "이체 확인"
},
"copied": {
"es": "¡Copiado!", "de": "Kopiert!", "fr": "Copié !",
"pt": "Copiado!", "ru": "Скопировано!", "zh": "已复制!",
"ja": "コピーしました!", "ko": "복사됨!"
},
"daemon_version": {
"es": "Daemon", "de": "Daemon", "fr": "Daemon",
"pt": "Daemon", "ru": "Демон", "zh": "守护进程",
"ja": "デーモン", "ko": "데몬"
},
"delete_blockchain": {
"es": "Eliminar Blockchain", "de": "Blockchain löschen", "fr": "Supprimer Blockchain",
"pt": "Excluir Blockchain", "ru": "Удалить блокчейн", "zh": "删除区块链",
"ja": "ブロックチェーンを削除", "ko": "블록체인 삭제"
},
"delete_blockchain_confirm": {
"es": "Eliminar y Resincronizar", "de": "Löschen & Neu synchronisieren", "fr": "Supprimer & Resynchroniser",
"pt": "Excluir e Ressincronizar", "ru": "Удалить и пересинхронизировать", "zh": "删除并重新同步",
"ja": "削除して再同期", "ko": "삭제 후 재동기화"
},
"deshielding_warning": {
"es": "Advertencia: Esto des-protegerá fondos de una dirección privada (Z) a una dirección transparente (T).",
"de": "Warnung: Dies wird Gelder von einer privaten (Z) Adresse auf eine transparente (T) Adresse ent-schirmen.",
"fr": "Attention : Cela va déblinder des fonds d'une adresse privée (Z) vers une adresse transparente (T).",
"pt": "Aviso: Isso irá des-blindar fundos de um endereço privado (Z) para um endereço transparente (T).",
"ru": "Внимание: это переведёт средства из приватного (Z) адреса на прозрачный (T) адрес.",
"zh": "警告:这将把资金从隐私 (Z) 地址转移到透明 (T) 地址。",
"ja": "警告:プライベート (Z) アドレスからトランスペアレント (T) アドレスへ資金をデシールドします。",
"ko": "경고: 프라이빗 (Z) 주소에서 투명 (T) 주소로 자금을 디실딩합니다."
},
"download": {
"es": "Descargar", "de": "Herunterladen", "fr": "Télécharger",
"pt": "Baixar", "ru": "Скачать", "zh": "下载",
"ja": "ダウンロード", "ko": "다운로드"
},
"download_bootstrap": {
"es": "Descargar Bootstrap", "de": "Bootstrap herunterladen", "fr": "Télécharger Bootstrap",
"pt": "Baixar Bootstrap", "ru": "Скачать бутстрап", "zh": "下载引导程序",
"ja": "ブートストラップをダウンロード", "ko": "부트스트랩 다운로드"
},
"explorer_block_detail": {
"es": "Bloque", "de": "Block", "fr": "Bloc",
"pt": "Bloco", "ru": "Блок", "zh": "区块",
"ja": "ブロック", "ko": "블록"
},
"explorer_block_hash": {
"es": "Hash", "de": "Hash", "fr": "Hash",
"pt": "Hash", "ru": "Хеш", "zh": "哈希",
"ja": "ハッシュ", "ko": "해시"
},
"explorer_block_height": {
"es": "Altura", "de": "Höhe", "fr": "Hauteur",
"pt": "Altura", "ru": "Высота", "zh": "高度",
"ja": "高さ", "ko": "높이"
},
"explorer_block_merkle": {
"es": "Raíz Merkle", "de": "Merkle-Wurzel", "fr": "Racine Merkle",
"pt": "Raiz Merkle", "ru": "Корень Меркла", "zh": "Merkle 根",
"ja": "マークルルート", "ko": "머클 루트"
},
"explorer_block_size": {
"es": "Tamaño", "de": "Größe", "fr": "Taille",
"pt": "Tamanho", "ru": "Размер", "zh": "大小",
"ja": "サイズ", "ko": "크기"
},
"explorer_block_time": {
"es": "Hora", "de": "Zeit", "fr": "Heure",
"pt": "Hora", "ru": "Время", "zh": "时间",
"ja": "時刻", "ko": "시간"
},
"explorer_block_txs": {
"es": "Transacciones", "de": "Transaktionen", "fr": "Transactions",
"pt": "Transações", "ru": "Транзакции", "zh": "交易",
"ja": "トランザクション", "ko": "트랜잭션"
},
"explorer_chain_stats": {
"es": "Cadena", "de": "Kette", "fr": "Chaîne",
"pt": "Cadeia", "ru": "Цепочка", "zh": "",
"ja": "チェーン", "ko": "체인"
},
"explorer_invalid_query": {
"es": "Ingrese una altura de bloque o un hash de 64 caracteres",
"de": "Geben Sie eine Blockhöhe oder einen 64-stelligen Hash ein",
"fr": "Entrez une hauteur de bloc ou un hash de 64 caractères",
"pt": "Insira uma altura de bloco ou um hash de 64 caracteres",
"ru": "Введите высоту блока или 64-символьный хеш",
"zh": "输入区块高度或64位哈希",
"ja": "ブロック高さまたは64文字のハッシュを入力してください",
"ko": "블록 높이 또는 64자 해시를 입력하세요"
},
"explorer_mempool": {
"es": "Mempool", "de": "Mempool", "fr": "Mempool",
"pt": "Mempool", "ru": "Мемпул", "zh": "内存池",
"ja": "メモリプール", "ko": "멤풀"
},
"explorer_mempool_size": {
"es": "Tamaño", "de": "Größe", "fr": "Taille",
"pt": "Tamanho", "ru": "Размер", "zh": "大小",
"ja": "サイズ", "ko": "크기"
},
"explorer_mempool_txs": {
"es": "Transacciones", "de": "Transaktionen", "fr": "Transactions",
"pt": "Transações", "ru": "Транзакции", "zh": "交易",
"ja": "トランザクション", "ko": "트랜잭션"
},
"explorer_recent_blocks": {
"es": "Bloques Recientes", "de": "Letzte Blöcke", "fr": "Blocs récents",
"pt": "Blocos Recentes", "ru": "Последние блоки", "zh": "最近区块",
"ja": "最近のブロック", "ko": "최근 블록"
},
"explorer_search": {
"es": "Buscar", "de": "Suchen", "fr": "Rechercher",
"pt": "Pesquisar", "ru": "Поиск", "zh": "搜索",
"ja": "検索", "ko": "검색"
},
"explorer_tx_outputs": {
"es": "Salidas", "de": "Ausgaben", "fr": "Sorties",
"pt": "Saídas", "ru": "Выходы", "zh": "输出",
"ja": "出力", "ko": "출력"
},
"explorer_tx_size": {
"es": "Tamaño", "de": "Größe", "fr": "Taille",
"pt": "Tamanho", "ru": "Размер", "zh": "大小",
"ja": "サイズ", "ko": "크기"
},
"filter": {
"es": "Filtrar...", "de": "Filtern...", "fr": "Filtrer...",
"pt": "Filtrar...", "ru": "Фильтр...", "zh": "筛选...",
"ja": "フィルター...", "ko": "필터..."
},
"force_quit": {
"es": "Forzar Salida", "de": "Sofort beenden", "fr": "Forcer la fermeture",
"pt": "Forçar Saída", "ru": "Принудительный выход", "zh": "强制退出",
"ja": "強制終了", "ko": "강제 종료"
},
"force_quit_confirm_msg": {
"es": "Esto matará inmediatamente el daemon sin un apagado limpio.\nEsto puede corromper el índice de la blockchain y requerir una resincronización.",
"de": "Dies wird den Daemon sofort beenden ohne sauberes Herunterfahren.\nDies kann den Blockchain-Index beschädigen und eine Neusynchronisierung erfordern.",
"fr": "Cela tuera immédiatement le daemon sans arrêt propre.\nCela peut corrompre l'index de la blockchain et nécessiter une resynchronisation.",
"pt": "Isso matará imediatamente o daemon sem um desligamento limpo.\nIsso pode corromper o índice da blockchain e exigir uma ressincronização.",
"ru": "Это немедленно завершит демон без корректного завершения.\nЭто может повредить индекс блокчейна и потребовать повторной синхронизации.",
"zh": "这将立即终止守护进程而不进行正常关闭。\n这可能会损坏区块链索引并需要重新同步。",
"ja": "クリーンシャットダウンなしでデーモンを即座に終了します。\nブロックチェーンインデックスが破損し、再同期が必要になる可能性があります。",
"ko": "정상 종료 없이 데몬을 즉시 종료합니다.\n블록체인 인덱스가 손상되어 재동기화가 필요할 수 있습니다."
},
"force_quit_confirm_title": {
"es": "¿Forzar Salida?", "de": "Sofort beenden?", "fr": "Forcer la fermeture ?",
"pt": "Forçar Saída?", "ru": "Принудительный выход?", "zh": "强制退出?",
"ja": "強制終了しますか?", "ko": "강제 종료하시겠습니까?"
},
"force_quit_warning": {
"es": "Esto matará inmediatamente el daemon sin un apagado limpio. Puede requerir una resincronización de la blockchain.",
"de": "Dies wird den Daemon sofort beenden ohne sauberes Herunterfahren. Kann eine Neusynchronisierung der Blockchain erfordern.",
"fr": "Cela tuera immédiatement le daemon sans arrêt propre. Peut nécessiter une resynchronisation de la blockchain.",
"pt": "Isso matará imediatamente o daemon sem um desligamento limpo. Pode exigir uma ressincronização da blockchain.",
"ru": "Это немедленно завершит демон без корректного завершения. Может потребоваться повторная синхронизация блокчейна.",
"zh": "这将立即终止守护进程而不进行正常关闭。可能需要重新同步区块链。",
"ja": "クリーンシャットダウンなしでデーモンを即座に終了します。ブロックチェーンの再同期が必要になる場合があります。",
"ko": "정상 종료 없이 데몬을 즉시 종료합니다. 블록체인 재동기화가 필요할 수 있습니다."
},
"force_quit_yes": {
"es": "Forzar Salida", "de": "Sofort beenden", "fr": "Forcer la fermeture",
"pt": "Forçar Saída", "ru": "Принудительный выход", "zh": "强制退出",
"ja": "強制終了", "ko": "강제 종료"
},
"generating": {
"es": "Generando", "de": "Wird generiert", "fr": "Génération",
"pt": "Gerando", "ru": "Генерация", "zh": "正在生成",
"ja": "生成中", "ko": "생성 중"
},
"hidden_tag": {
"es": " (oculto)", "de": " (versteckt)", "fr": " (masqué)",
"pt": " (oculto)", "ru": " (скрыт)", "zh": " (已隐藏)",
"ja": " (非表示)", "ko": " (숨김)"
},
"incorrect_passphrase": {
"es": "Contraseña incorrecta", "de": "Falsches Passwort", "fr": "Mot de passe incorrect",
"pt": "Senha incorreta", "ru": "Неверный пароль", "zh": "密码错误",
"ja": "パスフレーズが正しくありません", "ko": "잘못된 암호"
},
"incorrect_pin": {
"es": "PIN incorrecto", "de": "Falsche PIN", "fr": "PIN incorrect",
"pt": "PIN incorreto", "ru": "Неверный PIN", "zh": "PIN 错误",
"ja": "PINが正しくありません", "ko": "잘못된 PIN"
},
"insufficient_funds": {
"es": "Fondos insuficientes para este monto más la comisión.", "de": "Unzureichendes Guthaben für diesen Betrag plus Gebühr.",
"fr": "Fonds insuffisants pour ce montant plus les frais.", "pt": "Fundos insuficientes para este valor mais taxa.",
"ru": "Недостаточно средств для этой суммы плюс комиссия.", "zh": "余额不足以支付此金额加手续费。",
"ja": "この金額と手数料に対して残高が不足しています。", "ko": "이 금액과 수수료를 위한 잔액이 부족합니다."
},
"label_placeholder": {
"es": "ej. Ahorros, Minería...", "de": "z.B. Ersparnisse, Mining...", "fr": "ex. Épargne, Minage...",
"pt": "ex. Poupança, Mineração...", "ru": "напр. Накопления, Майнинг...", "zh": "例如 储蓄、挖矿...",
"ja": "例: 貯金、マイニング...", "ko": "예: 저축, 채굴..."
},
"mining_benchmark_cancel": {
"es": "Cancelar benchmark", "de": "Benchmark abbrechen", "fr": "Annuler le benchmark",
"pt": "Cancelar benchmark", "ru": "Отменить тест", "zh": "取消基准测试",
"ja": "ベンチマークをキャンセル", "ko": "벤치마크 취소"
},
"mining_benchmark_cooling": {
"es": "Enfriando", "de": "Abkühlen", "fr": "Refroidissement",
"pt": "Resfriando", "ru": "Охлаждение", "zh": "冷却中",
"ja": "クーリング", "ko": "쿨링"
},
"mining_benchmark_dismiss": {
"es": "Cerrar", "de": "Schließen", "fr": "Fermer",
"pt": "Fechar", "ru": "Закрыть", "zh": "关闭",
"ja": "閉じる", "ko": "닫기"
},
"mining_benchmark_result": {
"es": "Óptimo", "de": "Optimal", "fr": "Optimal",
"pt": "Ótimo", "ru": "Оптимально", "zh": "最佳",
"ja": "最適", "ko": "최적"
},
"mining_benchmark_stabilizing": {
"es": "Estabilizando", "de": "Stabilisierung", "fr": "Stabilisation",
"pt": "Estabilizando", "ru": "Стабилизация", "zh": "稳定中",
"ja": "安定化中", "ko": "안정화 중"
},
"mining_benchmark_testing": {
"es": "Probando", "de": "Testen", "fr": "Test",
"pt": "Testando", "ru": "Тестирование", "zh": "测试中",
"ja": "テスト中", "ko": "테스트 중"
},
"mining_benchmark_tooltip": {
"es": "Encontrar el número óptimo de hilos para esta CPU",
"de": "Optimale Thread-Anzahl für diese CPU finden",
"fr": "Trouver le nombre optimal de threads pour ce CPU",
"pt": "Encontrar o número ideal de threads para esta CPU",
"ru": "Найти оптимальное количество потоков для этого процессора",
"zh": "为此 CPU 找到最佳线程数",
"ja": "このCPUに最適なスレッド数を検出",
"ko": "이 CPU에 최적의 스레드 수 찾기"
},
"mining_generate_z_address_hint": {
"es": "Genere una dirección Z en la pestaña Recibir para usarla como dirección de pago",
"de": "Generieren Sie eine Z-Adresse im Empfangen-Tab als Auszahlungsadresse",
"fr": "Générez une adresse Z dans l'onglet Recevoir pour l'utiliser comme adresse de paiement",
"pt": "Gere um endereço Z na aba Receber para usar como endereço de pagamento",
"ru": "Создайте Z-адрес на вкладке «Получить» для использования в качестве адреса выплат",
"zh": "在接收标签页生成一个 Z 地址作为支付地址",
"ja": "受信タブでZアドレスを生成して支払いアドレスとして使用してください",
"ko": "수신 탭에서 Z 주소를 생성하여 지급 주소로 사용하세요"
},
"mining_idle_gpu_off_tooltip": {
"es": "Sin restricción: ACTIVADO\nSolo la entrada de teclado/ratón determina el estado inactivo\nClic para activar detección de GPU",
"de": "Uneingeschränkt: EIN\nNur Tastatur-/Mauseingabe bestimmt den Leerlauf\nKlicken für GPU-bewusste Erkennung",
"fr": "Sans restriction : ACTIVÉ\nSeule l'entrée clavier/souris détermine l'inactivité\nCliquez pour activer la détection GPU",
"pt": "Sem restrição: ATIVADO\nApenas entrada de teclado/mouse determina o estado ocioso\nClique para ativar detecção de GPU",
"ru": "Без ограничений: ВКЛ\nТолько ввод с клавиатуры/мыши определяет состояние простоя\nНажмите для GPU-контроля",
"zh": "无限制:开启\n仅键盘/鼠标输入决定空闲状态\n点击启用GPU感知检测",
"ja": "制限なし: オン\nキーボード/マウス入力のみがアイドル状態を決定\nGPU検出を有効にするにはクリック",
"ko": "무제한: 켜짐\n키보드/마우스 입력만 유휴 상태를 결정\nGPU 감지를 활성화하려면 클릭"
},
"mining_idle_gpu_on_tooltip": {
"es": "GPU-consciente: ACTIVADO\nLa actividad de GPU (video, juegos) previene la minería inactiva\nClic para modo sin restricción",
"de": "GPU-bewusst: EIN\nGPU-Aktivität (Video, Spiele) verhindert Leerlauf-Mining\nKlicken für uneingeschränkten Modus",
"fr": "GPU-conscient : ACTIVÉ\nL'activité GPU (vidéo, jeux) empêche le minage inactif\nCliquez pour le mode sans restriction",
"pt": "GPU-consciente: ATIVADO\nAtividade de GPU (vídeo, jogos) impede mineração ociosa\nClique para modo sem restrição",
"ru": "GPU-контроль: ВКЛ\nАктивность GPU (видео, игры) предотвращает майнинг в простое\nНажмите для режима без ограничений",
"zh": "GPU感知开启\nGPU活动视频、游戏阻止空闲挖矿\n点击切换到无限制模式",
"ja": "GPU対応: オン\nGPUアクティビティ動画、ゲームがアイドルマイニングを防止\n制限なしモードに切り替えるにはクリック",
"ko": "GPU 감지: 켜짐\nGPU 활동(비디오, 게임)이 유휴 채굴을 방지\n무제한 모드로 전환하려면 클릭"
},
"mining_idle_scale_off_tooltip": {
"es": "Modo inicio/parada: ACTIVADO\nClic para cambiar al modo de escala de hilos",
"de": "Start/Stopp-Modus: EIN\nKlicken zum Wechsel auf Thread-Skalierung",
"fr": "Mode démarrage/arrêt : ACTIVÉ\nCliquez pour passer au mode mise à l'échelle des threads",
"pt": "Modo iniciar/parar: ATIVADO\nClique para mudar para modo de escala de threads",
"ru": "Режим старт/стоп: ВКЛ\nНажмите для переключения на масштабирование потоков",
"zh": "启动/停止模式:开启\n点击切换到线程缩放模式",
"ja": "開始/停止モード: オン\nスレッドスケーリングモードに切り替えるにはクリック",
"ko": "시작/중지 모드: 켜짐\n스레드 스케일링 모드로 전환하려면 클릭"
},
"mining_idle_scale_on_tooltip": {
"es": "Escala de hilos: ACTIVADO\nClic para cambiar al modo de inicio/parada",
"de": "Thread-Skalierung: EIN\nKlicken zum Wechsel auf Start/Stopp-Modus",
"fr": "Mise à l'échelle des threads : ACTIVÉ\nCliquez pour passer au mode démarrage/arrêt",
"pt": "Escala de threads: ATIVADO\nClique para mudar para modo iniciar/parar",
"ru": "Масштабирование потоков: ВКЛ\nНажмите для переключения на режим старт/стоп",
"zh": "线程缩放:开启\n点击切换到启动/停止模式",
"ja": "スレッドスケーリング: オン\n開始/停止モードに切り替えるにはクリック",
"ko": "스레드 스케일링: 켜짐\n시작/중지 모드로 전환하려면 클릭"
},
"mining_idle_threads_active_tooltip": {
"es": "Hilos cuando el usuario está activo", "de": "Threads bei Benutzeraktivität",
"fr": "Threads quand l'utilisateur est actif", "pt": "Threads quando o usuário está ativo",
"ru": "Потоки при активности пользователя", "zh": "用户活跃时的线程数",
"ja": "ユーザーアクティブ時のスレッド数", "ko": "사용자 활성 시 스레드"
},
"mining_idle_threads_idle_tooltip": {
"es": "Hilos cuando el sistema está inactivo", "de": "Threads im Leerlauf",
"fr": "Threads quand le système est inactif", "pt": "Threads quando o sistema está ocioso",
"ru": "Потоки при простое системы", "zh": "系统空闲时的线程数",
"ja": "システムアイドル時のスレッド数", "ko": "시스템 유휴 시 스레드"
},
"no_addresses_yet": {
"es": "Aún no hay direcciones", "de": "Noch keine Adressen", "fr": "Pas encore d'adresses",
"pt": "Nenhum endereço ainda", "ru": "Пока нет адресов", "zh": "暂无地址",
"ja": "アドレスがまだありません", "ko": "아직 주소가 없습니다"
},
"pin_not_set": {
"es": "PIN no configurado. Use la contraseña para desbloquear.",
"de": "PIN nicht gesetzt. Verwenden Sie das Passwort zum Entsperren.",
"fr": "PIN non défini. Utilisez le mot de passe pour déverrouiller.",
"pt": "PIN não definido. Use a senha para desbloquear.",
"ru": "PIN не установлен. Используйте пароль для разблокировки.",
"zh": "未设置 PIN。使用密码解锁。",
"ja": "PINが設定されていません。パスフレーズで解除してください。",
"ko": "PIN이 설정되지 않았습니다. 암호를 사용하여 잠금 해제하세요."
},
"recipient_balance": {
"es": "Destinatario: %.8f%.8f DRGX", "de": "Empfänger: %.8f%.8f DRGX",
"fr": "Destinataire : %.8f%.8f DRGX", "pt": "Destinatário: %.8f%.8f DRGX",
"ru": "Получатель: %.8f%.8f DRGX", "zh": "接收方: %.8f%.8f DRGX",
"ja": "受取人: %.8f%.8f DRGX", "ko": "수신자: %.8f%.8f DRGX"
},
"reduce_motion": {
"es": "Reducir Movimiento", "de": "Bewegung reduzieren", "fr": "Réduire les animations",
"pt": "Reduzir Movimento", "ru": "Уменьшить анимацию", "zh": "减少动画",
"ja": "モーションを減らす", "ko": "모션 줄이기"
},
"restarting_after_encryption": {
"es": "Reiniciando daemon después del cifrado...", "de": "Daemon wird nach Verschlüsselung neu gestartet...",
"fr": "Redémarrage du daemon après chiffrement...", "pt": "Reiniciando daemon após criptografia...",
"ru": "Перезапуск демона после шифрования...", "zh": "加密后重启守护进程...",
"ja": "暗号化後にデーモンを再起動中...", "ko": "암호화 후 데몬 재시작 중..."
},
"result_preview": {
"es": "Vista previa del resultado", "de": "Ergebnisvorschau", "fr": "Aperçu du résultat",
"pt": "Pré-visualização do resultado", "ru": "Предпросмотр результата", "zh": "结果预览",
"ja": "結果プレビュー", "ko": "결과 미리보기"
},
"retry": {
"es": "Reintentar", "de": "Wiederholen", "fr": "Réessayer",
"pt": "Tentar novamente", "ru": "Повторить", "zh": "重试",
"ja": "再試行", "ko": "재시도"
},
"sender_balance": {
"es": "Remitente: %.8f%.8f DRGX", "de": "Absender: %.8f%.8f DRGX",
"fr": "Expéditeur : %.8f%.8f DRGX", "pt": "Remetente: %.8f%.8f DRGX",
"ru": "Отправитель: %.8f%.8f DRGX", "zh": "发送方: %.8f%.8f DRGX",
"ja": "送信者: %.8f%.8f DRGX", "ko": "발신자: %.8f%.8f DRGX"
},
"sends_full_balance_warning": {
"es": "Esto envía el saldo completo. La dirección de envío tendrá saldo cero.",
"de": "Dies sendet das gesamte Guthaben. Die Sendeadresse wird ein Nullguthaben haben.",
"fr": "Cela envoie le solde complet. L'adresse d'envoi aura un solde nul.",
"pt": "Isso envia o saldo total. O endereço de envio terá saldo zero.",
"ru": "Это отправит весь баланс. Адрес отправителя останется с нулевым балансом.",
"zh": "这将发送全部余额。发送地址将变为零余额。",
"ja": "全残高を送信します。送信アドレスの残高はゼロになります。",
"ko": "전체 잔액을 전송합니다. 보내는 주소의 잔액이 0이 됩니다."
},
"set_label": {
"es": "Establecer Etiqueta...", "de": "Label setzen...", "fr": "Définir le libellé...",
"pt": "Definir Rótulo...", "ru": "Установить метку...", "zh": "设置标签...",
"ja": "ラベルを設定...", "ko": "라벨 설정..."
},
"shielded_address": {
"es": "Dirección Protegida", "de": "Geschirmte Adresse", "fr": "Adresse protégée",
"pt": "Endereço Blindado", "ru": "Экранированный адрес", "zh": "隐蔽地址",
"ja": "シールドアドレス", "ko": "보호 주소"
},
"shielding_notice": {
"es": "Nota: Esto blindará fondos de una dirección transparente (T) a una dirección privada (Z).",
"de": "Hinweis: Dies wird Gelder von einer transparenten (T) Adresse auf eine private (Z) Adresse schirmen.",
"fr": "Note : Cela blindera des fonds d'une adresse transparente (T) vers une adresse privée (Z).",
"pt": "Nota: Isso blindará fundos de um endereço transparente (T) para um endereço privado (Z).",
"ru": "Примечание: это переведёт средства с прозрачного (T) адреса на приватный (Z) адрес.",
"zh": "注意:这将把资金从透明 (T) 地址转移到隐私 (Z) 地址。",
"ja": "注意:トランスペアレント (T) アドレスからプライベート (Z) アドレスへ資金をシールドします。",
"ko": "참고: 투명 (T) 주소에서 프라이빗 (Z) 주소로 자금을 실딩합니다."
},
"showing_x_of_y": {
"es": "Mostrando %d de %d direcciones", "de": "%d von %d Adressen angezeigt",
"fr": "Affichage de %d sur %d adresses", "pt": "Mostrando %d de %d endereços",
"ru": "Показано %d из %d адресов", "zh": "显示 %d / %d 个地址",
"ja": "%d / %d アドレスを表示", "ko": "%d / %d 주소 표시"
},
"t_address": {
"es": "Dirección T", "de": "T-Adresse", "fr": "Adresse T",
"pt": "Endereço T", "ru": "T-адрес", "zh": "T 地址",
"ja": "Tアドレス", "ko": "T 주소"
},
"theme_language": {
"es": "TEMA E IDIOMA", "de": "THEMA & SPRACHE", "fr": "THÈME & LANGUE",
"pt": "TEMA E IDIOMA", "ru": "ТЕМА И ЯЗЫК", "zh": "主题与语言",
"ja": "テーマと言語", "ko": "테마 및 언어"
},
"tools_actions": {
"es": "Herramientas y Acciones...", "de": "Werkzeuge & Aktionen...", "fr": "Outils & Actions...",
"pt": "Ferramentas e Ações...", "ru": "Инструменты и действия...", "zh": "工具与操作...",
"ja": "ツールとアクション...", "ko": "도구 및 작업..."
},
"transfer_failed": {
"es": "Transferencia Fallida", "de": "Überweisung fehlgeschlagen", "fr": "Échec du transfert",
"pt": "Transferência Falhou", "ru": "Ошибка перевода", "zh": "转账失败",
"ja": "送金失敗", "ko": "이체 실패"
},
"transfer_funds": {
"es": "Transferir Fondos", "de": "Geld überweisen", "fr": "Transférer des fonds",
"pt": "Transferir Fundos", "ru": "Перевести средства", "zh": "转账",
"ja": "資金を送金", "ko": "자금 이체"
},
"transfer_sent": {
"es": "Transferencia Enviada", "de": "Überweisung gesendet", "fr": "Transfert envoyé",
"pt": "Transferência Enviada", "ru": "Перевод отправлен", "zh": "转账已发送",
"ja": "送金完了", "ko": "이체 전송됨"
},
"transfer_sent_desc": {
"es": "Su transferencia ha sido enviada a la red.",
"de": "Ihre Überweisung wurde an das Netzwerk gesendet.",
"fr": "Votre transfert a été soumis au réseau.",
"pt": "Sua transferência foi enviada à rede.",
"ru": "Ваш перевод отправлен в сеть.",
"zh": "您的转账已提交到网络。",
"ja": "送金がネットワークに送信されました。",
"ko": "이체가 네트워크에 제출되었습니다."
},
"transfer_to": {
"es": "Transferir a:", "de": "Überweisen an:", "fr": "Transférer à :",
"pt": "Transferir para:", "ru": "Перевести на:", "zh": "转账至:",
"ja": "送金先:", "ko": "이체 대상:"
},
"transparent_address": {
"es": "Dirección Transparente", "de": "Transparente Adresse", "fr": "Adresse transparente",
"pt": "Endereço Transparente", "ru": "Прозрачный адрес", "zh": "透明地址",
"ja": "トランスペアレントアドレス", "ko": "투명 주소"
},
"tt_delete_blockchain": {
"es": "Eliminar todos los datos de la blockchain e iniciar una nueva sincronización. Se preservan wallet.dat y la configuración.",
"de": "Alle Blockchain-Daten löschen und neu synchronisieren. wallet.dat und Konfiguration bleiben erhalten.",
"fr": "Supprimer toutes les données de la blockchain et démarrer une nouvelle synchronisation. wallet.dat et la configuration sont préservés.",
"pt": "Excluir todos os dados da blockchain e iniciar uma nova sincronização. wallet.dat e configuração são preservados.",
"ru": "Удалить все данные блокчейна и начать синхронизацию заново. wallet.dat и конфигурация сохраняются.",
"zh": "删除所有区块链数据并重新同步。wallet.dat 和配置将被保留。",
"ja": "すべてのブロックチェーンデータを削除して新規同期を開始します。wallet.dat と設定は保持されます。",
"ko": "모든 블록체인 데이터를 삭제하고 새로 동기화합니다. wallet.dat 및 설정은 보존됩니다."
},
"tt_download_bootstrap": {
"es": "Descargar bootstrap de blockchain para acelerar la sincronización\nLos datos de bloques existentes serán reemplazados",
"de": "Blockchain-Bootstrap herunterladen, um die Synchronisierung zu beschleunigen\nVorhandene Blockdaten werden ersetzt",
"fr": "Télécharger le bootstrap blockchain pour accélérer la synchronisation\nLes données de blocs existantes seront remplacées",
"pt": "Baixar bootstrap da blockchain para acelerar a sincronização\nDados de blocos existentes serão substituídos",
"ru": "Скачать бутстрап блокчейна для ускорения синхронизации\nСуществующие данные блоков будут заменены",
"zh": "下载区块链引导程序以加速同步\n现有区块数据将被替换",
"ja": "ブロックチェーンブートストラップをダウンロードして同期を高速化\n既存のブロックデータは置き換えられます",
"ko": "블록체인 부트스트랩을 다운로드하여 동기화 가속\n기존 블록 데이터가 교체됩니다"
},
"tt_reduce_motion": {
"es": "Desactivar transiciones animadas y lerp de saldo para accesibilidad",
"de": "Animierte Übergänge und Saldo-Lerp für Barrierefreiheit deaktivieren",
"fr": "Désactiver les transitions animées et le lerp de solde pour l'accessibilité",
"pt": "Desativar transições animadas e lerp de saldo para acessibilidade",
"ru": "Отключить анимированные переходы и плавное изменение баланса для доступности",
"zh": "禁用动画过渡和余额渐变以提高无障碍性",
"ja": "アクセシビリティのためにアニメーション遷移と残高補間を無効にする",
"ko": "접근성을 위해 애니메이션 전환 및 잔액 보간 비활성화"
},
"wizard_daemon_start_failed": {
"es": "Error al iniciar el daemon — se reintentará automáticamente",
"de": "Daemon-Start fehlgeschlagen — wird automatisch wiederholt",
"fr": "Échec du démarrage du daemon — sera réessayé automatiquement",
"pt": "Falha ao iniciar o daemon — será tentado novamente automaticamente",
"ru": "Не удалось запустить демон — будет повторено автоматически",
"zh": "启动守护进程失败 — 将自动重试",
"ja": "デーモンの起動に失敗しました — 自動的に再試行されます",
"ko": "데몬 시작 실패 — 자동으로 재시도됩니다"
},
"z_address": {
"es": "Dirección Z", "de": "Z-Adresse", "fr": "Adresse Z",
"pt": "Endereço Z", "ru": "Z-адрес", "zh": "Z 地址",
"ja": "Zアドレス", "ko": "Z 주소"
},
}
def main():