Files
ObsidianDragon/scripts/add_missing_translations.py
dan_s 96c27bb949 feat: Full UI internationalization, pool hashrate stats, and layout caching
- Replace all hardcoded English strings with TR() translation keys across
  every tab, dialog, and component (~20 UI files)
- Expand all 8 language files (de, es, fr, ja, ko, pt, ru, zh) with
  complete translations (~37k lines added)
- Improve i18n loader with exe-relative path fallback and English base
  fallback for missing keys
- Add pool-side hashrate polling via pool stats API in xmrig_manager
- Introduce Layout::beginFrame() per-frame caching and refresh balance
  layout config only on schema generation change
- Offload daemon output parsing to worker thread
- Add CJK subset fallback font for Chinese/Japanese/Korean glyphs
2026-03-11 00:40:50 -05:00

1311 lines
81 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""Add missing translation keys to all 8 language JSON files.
Reads all keys from i18n.cpp, compares with each JSON, and adds missing translations.
"""
import json
import re
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
I18N_CPP = ROOT / "src" / "util" / "i18n.cpp"
LANG_DIR = ROOT / "res" / "lang"
# Extract English keys from i18n.cpp
def load_english_keys():
keys = {}
with open(I18N_CPP, "r") as f:
for line in f:
m = re.match(r'\s*strings_\["([^"]+)"\]\s*=\s*"(.*)";', line)
if m:
keys[m.group(1)] = m.group(2)
return keys
# All translations for the 158 missing keys
TRANSLATIONS = {
# --- Balance tab ---
"hide_zero_balances": {
"es": "Ocultar saldos 0", "de": "Nullsalden ausblenden", "fr": "Masquer les soldes à 0",
"pt": "Ocultar saldos zero", "ru": "Скрыть нулевые балансы", "zh": "隐藏零余额",
"ja": "残高0を非表示", "ko": "잔액 0 숨기기"
},
"restore_address": {
"es": "Restaurar dirección", "de": "Adresse wiederherstellen", "fr": "Restaurer l'adresse",
"pt": "Restaurar endereço", "ru": "Восстановить адрес", "zh": "恢复地址",
"ja": "アドレスを復元", "ko": "주소 복원"
},
"hide_address": {
"es": "Ocultar dirección", "de": "Adresse ausblenden", "fr": "Masquer l'adresse",
"pt": "Ocultar endereço", "ru": "Скрыть адрес", "zh": "隐藏地址",
"ja": "アドレスを非表示", "ko": "주소 숨기기"
},
"remove_favorite": {
"es": "Quitar favorito", "de": "Favorit entfernen", "fr": "Retirer des favoris",
"pt": "Remover favorito", "ru": "Удалить из избранного", "zh": "移除收藏",
"ja": "お気に入りを削除", "ko": "즐겨찾기 제거"
},
"favorite_address": {
"es": "Marcar como favorito", "de": "Als Favorit markieren", "fr": "Ajouter aux favoris",
"pt": "Adicionar aos favoritos", "ru": "Добавить в избранное", "zh": "收藏地址",
"ja": "お気に入りに追加", "ko": "즐겨찾기에 추가"
},
"show_hidden": {
"es": "Mostrar ocultos (%d)", "de": "Ausgeblendete anzeigen (%d)", "fr": "Afficher masqués (%d)",
"pt": "Mostrar ocultos (%d)", "ru": "Показать скрытые (%d)", "zh": "显示已隐藏 (%d)",
"ja": "非表示を表示 (%d)", "ko": "숨겨진 항목 표시 (%d)"
},
# --- Settings: general / descriptions ---
"settings_about_text": {
"es": "Una billetera de criptomonedas blindada para DragonX (DRGX), creada con Dear ImGui para una experiencia ligera y portátil.",
"de": "Eine geschirmte Kryptowährungs-Wallet für DragonX (DRGX), erstellt mit Dear ImGui für ein leichtes, portables Erlebnis.",
"fr": "Un portefeuille de cryptomonnaie blindé pour DragonX (DRGX), construit avec Dear ImGui pour une expérience légère et portable.",
"pt": "Uma carteira de criptomoeda blindada para DragonX (DRGX), criada com Dear ImGui para uma experiência leve e portátil.",
"ru": "Защищённый криптовалютный кошелёк для DragonX (DRGX), созданный на Dear ImGui для лёгкого и портативного использования.",
"zh": "DragonX (DRGX) 屏蔽加密货币钱包,使用 Dear ImGui 构建,提供轻量、便携的体验。",
"ja": "DragonX (DRGX) 用のシールド暗号通貨ウォレット。Dear ImGui で構築された軽量でポータブルな体験。",
"ko": "DragonX (DRGX)용 차폐 암호화폐 지갑으로, Dear ImGui로 제작되어 가볍고 휴대 가능합니다."
},
"settings_copyright": {
"es": "Copyright 2024-2026 Desarrolladores de DragonX | Licencia GPLv3",
"de": "Copyright 2024-2026 DragonX-Entwickler | GPLv3-Lizenz",
"fr": "Copyright 2024-2026 Développeurs DragonX | Licence GPLv3",
"pt": "Copyright 2024-2026 Desenvolvedores DragonX | Licença GPLv3",
"ru": "Copyright 2024-2026 Разработчики DragonX | Лицензия GPLv3",
"zh": "版权所有 2024-2026 DragonX 开发者 | GPLv3 许可证",
"ja": "Copyright 2024-2026 DragonX 開発者 | GPLv3 ライセンス",
"ko": "Copyright 2024-2026 DragonX 개발자 | GPLv3 라이선스"
},
# --- Settings: labels ---
"settings_acrylic_level": {
"es": "Nivel de acrílico:", "de": "Acrylstufe:", "fr": "Niveau acrylique :",
"pt": "Nível acrílico:", "ru": "Уровень акрила:", "zh": "亚克力级别:",
"ja": "アクリルレベル:", "ko": "아크릴 레벨:"
},
"settings_noise_opacity": {
"es": "Opacidad de ruido:", "de": "Rauschdichte:", "fr": "Opacité du bruit :",
"pt": "Opacidade do ruído:", "ru": "Непрозрачность шума:", "zh": "噪点不透明度:",
"ja": "ノイズ不透明度:", "ko": "노이즈 불투명도:"
},
"settings_visual_effects": {
"es": "Efectos visuales", "de": "Visuelle Effekte", "fr": "Effets visuels",
"pt": "Efeitos visuais", "ru": "Визуальные эффекты", "zh": "视觉效果",
"ja": "視覚効果", "ko": "시각 효과"
},
"settings_privacy": {
"es": "Privacidad", "de": "Datenschutz", "fr": "Confidentialité",
"pt": "Privacidade", "ru": "Конфиденциальность", "zh": "隐私",
"ja": "プライバシー", "ko": "개인 정보"
},
"settings_other": {
"es": "Otros", "de": "Sonstiges", "fr": "Autres",
"pt": "Outros", "ru": "Прочее", "zh": "其他",
"ja": "その他", "ko": "기타"
},
"settings_connection": {
"es": "Conexión", "de": "Verbindung", "fr": "Connexion",
"pt": "Conexão", "ru": "Подключение", "zh": "连接",
"ja": "接続", "ko": "연결"
},
"settings_rpc_connection": {
"es": "Conexión RPC", "de": "RPC-Verbindung", "fr": "Connexion RPC",
"pt": "Conexão RPC", "ru": "RPC-соединение", "zh": "RPC 连接",
"ja": "RPC 接続", "ko": "RPC 연결"
},
"settings_configure_rpc": {
"es": "Configurar conexión al daemon dragonxd", "de": "Verbindung zum dragonxd-Daemon konfigurieren",
"fr": "Configurer la connexion au daemon dragonxd", "pt": "Configurar conexão ao daemon dragonxd",
"ru": "Настроить подключение к демону dragonxd", "zh": "配置 dragonxd 守护进程连接",
"ja": "dragonxd デーモンへの接続を設定", "ko": "dragonxd 데몬 연결 구성"
},
"settings_rpc_note": {
"es": "Nota: Los ajustes de conexión se detectan automáticamente desde DRAGONX.conf",
"de": "Hinweis: Verbindungseinstellungen werden automatisch aus DRAGONX.conf erkannt",
"fr": "Remarque : Les paramètres de connexion sont généralement détectés automatiquement depuis DRAGONX.conf",
"pt": "Nota: As configurações de conexão são normalmente detectadas automaticamente do DRAGONX.conf",
"ru": "Примечание: Настройки подключения обычно определяются автоматически из DRAGONX.conf",
"zh": "注意:连接设置通常从 DRAGONX.conf 自动检测",
"ja": "注意:接続設定は通常 DRAGONX.conf から自動検出されます",
"ko": "참고: 연결 설정은 보통 DRAGONX.conf에서 자동 감지됩니다"
},
"settings_wallet_maintenance": {
"es": "Mantenimiento de billetera", "de": "Wallet-Wartung", "fr": "Maintenance du portefeuille",
"pt": "Manutenção da carteira", "ru": "Обслуживание кошелька", "zh": "钱包维护",
"ja": "ウォレットメンテナンス", "ko": "지갑 유지보수"
},
"settings_wallet_info": {
"es": "Información de billetera", "de": "Wallet-Informationen", "fr": "Informations du portefeuille",
"pt": "Informações da carteira", "ru": "Информация о кошельке", "zh": "钱包信息",
"ja": "ウォレット情報", "ko": "지갑 정보"
},
"settings_wallet_file_size": {
"es": "Tamaño del archivo de billetera: %s", "de": "Wallet-Dateigröße: %s",
"fr": "Taille du fichier portefeuille : %s", "pt": "Tamanho do arquivo da carteira: %s",
"ru": "Размер файла кошелька: %s", "zh": "钱包文件大小:%s",
"ja": "ウォレットファイルサイズ:%s", "ko": "지갑 파일 크기: %s"
},
"settings_wallet_location": {
"es": "Ubicación de billetera: %s", "de": "Wallet-Speicherort: %s",
"fr": "Emplacement du portefeuille : %s", "pt": "Localização da carteira: %s",
"ru": "Расположение кошелька: %s", "zh": "钱包位置:%s",
"ja": "ウォレットの場所:%s", "ko": "지갑 위치: %s"
},
"settings_block_explorer_urls": {
"es": "URLs del explorador de bloques", "de": "Block-Explorer-URLs",
"fr": "URLs de l'explorateur de blocs", "pt": "URLs do explorador de blocos",
"ru": "URL-адреса обозревателя блоков", "zh": "区块浏览器网址",
"ja": "ブロックエクスプローラーURL", "ko": "블록 탐색기 URL"
},
"settings_configure_explorer": {
"es": "Configurar enlaces de explorador de bloques externo", "de": "Externe Block-Explorer-Links konfigurieren",
"fr": "Configurer les liens vers l'explorateur de blocs externe", "pt": "Configurar links do explorador de blocos externo",
"ru": "Настроить ссылки внешнего обозревателя блоков", "zh": "配置外部区块浏览器链接",
"ja": "外部ブロックエクスプローラーリンクを設定", "ko": "외부 블록 탐색기 링크 구성"
},
"settings_explorer_hint": {
"es": "Las URLs deben incluir una barra final. Se añadirá el txid/dirección.",
"de": "URLs sollten einen abschließenden Schrägstrich enthalten. Die txid/Adresse wird angehängt.",
"fr": "Les URLs doivent inclure une barre oblique finale. Le txid/adresse sera ajouté.",
"pt": "As URLs devem incluir uma barra final. O txid/endereço será adicionado.",
"ru": "URL-адреса должны заканчиваться косой чертой. Txid/адрес будет добавлен.",
"zh": "URL 应包含尾部斜杠。将自动附加 txid/地址。",
"ja": "URLには末尾のスラッシュを含めてください。txid/アドレスが追加されます。",
"ko": "URL에 후행 슬래시를 포함해야 합니다. txid/주소가 추가됩니다."
},
"settings_reduce_transparency": {
"es": "Reducir transparencia", "de": "Transparenz reduzieren", "fr": "Réduire la transparence",
"pt": "Reduzir transparência", "ru": "Уменьшить прозрачность", "zh": "降低透明度",
"ja": "透明度を下げる", "ko": "투명도 줄이기"
},
# --- Settings: buttons ---
"settings_address_book": {
"es": "Libreta de direcciones...", "de": "Adressbuch...", "fr": "Carnet d'adresses...",
"pt": "Livro de endereços...", "ru": "Адресная книга...", "zh": "地址簿...",
"ja": "アドレス帳...", "ko": "주소록..."
},
"settings_validate_address": {
"es": "Validar dirección...", "de": "Adresse überprüfen...", "fr": "Valider l'adresse...",
"pt": "Validar endereço...", "ru": "Проверить адрес...", "zh": "验证地址...",
"ja": "アドレス検証...", "ko": "주소 확인..."
},
"settings_request_payment": {
"es": "Solicitar pago...", "de": "Zahlung anfordern...", "fr": "Demander un paiement...",
"pt": "Solicitar pagamento...", "ru": "Запросить платёж...", "zh": "请求付款...",
"ja": "支払い請求...", "ko": "결제 요청..."
},
"settings_shield_mining": {
"es": "Blindar minería...", "de": "Mining abschirmen...", "fr": "Blindage minage...",
"pt": "Blindar mineração...", "ru": "Экранировать майнинг...", "zh": "屏蔽挖矿...",
"ja": "マイニングシールド...", "ko": "채굴 차폐..."
},
"settings_merge_to_address": {
"es": "Fusionar a dirección...", "de": "An Adresse zusammenführen...", "fr": "Fusionner vers l'adresse...",
"pt": "Fundir para endereço...", "ru": "Объединить на адрес...", "zh": "合并到地址...",
"ja": "アドレスにマージ...", "ko": "주소로 병합..."
},
"settings_clear_ztx": {
"es": "Limpiar historial Z-Tx", "de": "Z-Tx-Verlauf löschen", "fr": "Effacer l'historique Z-Tx",
"pt": "Limpar histórico Z-Tx", "ru": "Очистить историю Z-Tx", "zh": "清除 Z-Tx 历史",
"ja": "Z-Tx 履歴をクリア", "ko": "Z-Tx 기록 삭제"
},
"settings_clear_ztx_long": {
"es": "Limpiar historial guardado de Z-transacciones",
"de": "Gespeicherten Z-Transaktionsverlauf löschen",
"fr": "Effacer l'historique sauvegardé des Z-transactions",
"pt": "Limpar histórico salvo de Z-transações",
"ru": "Очистить сохранённую историю Z-транзакций",
"zh": "清除已保存的 Z-交易历史",
"ja": "保存済みZ-トランザクション履歴をクリア",
"ko": "저장된 Z-트랜잭션 기록 삭제"
},
"settings_clear_ztx_desc": {
"es": "Eliminar datos de transacciones blindadas almacenados localmente",
"de": "Lokal gespeicherte geschirmte Transaktionsdaten löschen",
"fr": "Supprimer les données de transactions blindées stockées localement",
"pt": "Excluir dados de transações blindadas armazenados localmente",
"ru": "Удалить локально сохранённые данные защищённых транзакций",
"zh": "删除本地存储的屏蔽交易数据",
"ja": "ローカルに保存されたシールドトランザクションデータを削除",
"ko": "로컬에 저장된 차폐 거래 데이터 삭제"
},
"settings_import_key": {
"es": "Importar clave...", "de": "Schlüssel importieren...", "fr": "Importer la clé...",
"pt": "Importar chave...", "ru": "Импортировать ключ...", "zh": "导入密钥...",
"ja": "鍵をインポート...", "ko": "키 가져오기..."
},
"settings_export_key": {
"es": "Exportar clave...", "de": "Schlüssel exportieren...", "fr": "Exporter la clé...",
"pt": "Exportar chave...", "ru": "Экспортировать ключ...", "zh": "导出密钥...",
"ja": "鍵をエクスポート...", "ko": "키 내보내기..."
},
"settings_export_all": {
"es": "Exportar todo...", "de": "Alle exportieren...", "fr": "Tout exporter...",
"pt": "Exportar tudo...", "ru": "Экспортировать все...", "zh": "全部导出...",
"ja": "すべてエクスポート...", "ko": "모두 내보내기..."
},
"settings_backup": {
"es": "Respaldo...", "de": "Sicherung...", "fr": "Sauvegarde...",
"pt": "Backup...", "ru": "Резервная копия...", "zh": "备份...",
"ja": "バックアップ...", "ko": "백업..."
},
"settings_export_csv": {
"es": "Exportar CSV...", "de": "CSV exportieren...", "fr": "Exporter CSV...",
"pt": "Exportar CSV...", "ru": "Экспорт CSV...", "zh": "导出 CSV...",
"ja": "CSV エクスポート...", "ko": "CSV 내보내기..."
},
"settings_encrypt_wallet": {
"es": "Cifrar billetera", "de": "Wallet verschlüsseln", "fr": "Chiffrer le portefeuille",
"pt": "Encriptar carteira", "ru": "Зашифровать кошелёк", "zh": "加密钱包",
"ja": "ウォレットを暗号化", "ko": "지갑 암호화"
},
"settings_change_passphrase": {
"es": "Cambiar contraseña", "de": "Passphrase ändern", "fr": "Changer la phrase secrète",
"pt": "Alterar frase secreta", "ru": "Сменить пароль", "zh": "更改密码",
"ja": "パスフレーズを変更", "ko": "비밀번호 변경"
},
"settings_lock_now": {
"es": "Bloquear ahora", "de": "Jetzt sperren", "fr": "Verrouiller maintenant",
"pt": "Bloquear agora", "ru": "Заблокировать сейчас", "zh": "立即锁定",
"ja": "今すぐロック", "ko": "지금 잠금"
},
"settings_remove_encryption": {
"es": "Quitar cifrado", "de": "Verschlüsselung entfernen", "fr": "Supprimer le chiffrement",
"pt": "Remover encriptação", "ru": "Удалить шифрование", "zh": "移除加密",
"ja": "暗号化を解除", "ko": "암호화 제거"
},
"settings_set_pin": {
"es": "Establecer PIN", "de": "PIN festlegen", "fr": "Définir le PIN",
"pt": "Definir PIN", "ru": "Установить PIN", "zh": "设置 PIN",
"ja": "PIN を設定", "ko": "PIN 설정"
},
"settings_change_pin": {
"es": "Cambiar PIN", "de": "PIN ändern", "fr": "Changer le PIN",
"pt": "Alterar PIN", "ru": "Изменить PIN", "zh": "更改 PIN",
"ja": "PIN を変更", "ko": "PIN 변경"
},
"settings_remove_pin": {
"es": "Quitar PIN", "de": "PIN entfernen", "fr": "Supprimer le PIN",
"pt": "Remover PIN", "ru": "Удалить PIN", "zh": "移除 PIN",
"ja": "PIN を削除", "ko": "PIN 제거"
},
"settings_restart_daemon": {
"es": "Reiniciar daemon", "de": "Daemon neu starten", "fr": "Redémarrer le daemon",
"pt": "Reiniciar daemon", "ru": "Перезапустить демон", "zh": "重启守护进程",
"ja": "デーモンを再起動", "ko": "데몬 재시작"
},
# --- Settings: status/labels ---
"settings_not_encrypted": {
"es": "Sin cifrar", "de": "Nicht verschlüsselt", "fr": "Non chiffré",
"pt": "Não encriptado", "ru": "Не зашифрован", "zh": "未加密",
"ja": "暗号化されていません", "ko": "암호화되지 않음"
},
"settings_locked": {
"es": "Bloqueado", "de": "Gesperrt", "fr": "Verrouillé",
"pt": "Bloqueado", "ru": "Заблокирован", "zh": "已锁定",
"ja": "ロック済み", "ko": "잠김"
},
"settings_unlocked": {
"es": "Desbloqueado", "de": "Entsperrt", "fr": "Déverrouillé",
"pt": "Desbloqueado", "ru": "Разблокирован", "zh": "已解锁",
"ja": "ロック解除", "ko": "잠금 해제"
},
"settings_auto_lock": {
"es": "BLOQUEO AUTOMÁTICO", "de": "AUTO-SPERRE", "fr": "VERROUILLAGE AUTO",
"pt": "BLOQUEIO AUTOMÁTICO", "ru": "АВТОБЛОКИРОВКА", "zh": "自动锁定",
"ja": "オートロック", "ko": "자동 잠금"
},
"settings_quick_unlock_pin": {
"es": "PIN de desbloqueo rápido", "de": "Schnell-Entsperr-PIN", "fr": "PIN de déverrouillage rapide",
"pt": "PIN de desbloqueio rápido", "ru": "Быстрый PIN-код разблокировки", "zh": "快速解锁 PIN",
"ja": "クイックアンロック PIN", "ko": "빠른 잠금 해제 PIN"
},
"settings_pin_active": {
"es": "PIN", "de": "PIN", "fr": "PIN",
"pt": "PIN", "ru": "PIN", "zh": "PIN",
"ja": "PIN", "ko": "PIN"
},
"settings_encrypt_first_pin": {
"es": "Primero cifre la billetera para habilitar el PIN",
"de": "Verschlüsseln Sie zuerst die Wallet, um PIN zu aktivieren",
"fr": "Chiffrez d'abord le portefeuille pour activer le PIN",
"pt": "Encripte a carteira primeiro para ativar o PIN",
"ru": "Сначала зашифруйте кошелёк, чтобы включить PIN",
"zh": "请先加密钱包以启用 PIN",
"ja": "PIN を有効にするには、まずウォレットを暗号化してください",
"ko": "PIN을 활성화하려면 먼저 지갑을 암호화하세요"
},
"settings_data_dir": {
"es": "Dir. de datos:", "de": "Datenverzeichnis:", "fr": "Rép. de données :",
"pt": "Dir. de dados:", "ru": "Каталог данных:", "zh": "数据目录:",
"ja": "データディレクトリ:", "ko": "데이터 디렉터리:"
},
"settings_wallet_size_label": {
"es": "Tamaño de billetera:", "de": "Wallet-Größe:", "fr": "Taille du portefeuille :",
"pt": "Tamanho da carteira:", "ru": "Размер кошелька:", "zh": "钱包大小:",
"ja": "ウォレットサイズ:", "ko": "지갑 크기:"
},
"settings_not_found": {
"es": "No encontrado", "de": "Nicht gefunden", "fr": "Non trouvé",
"pt": "Não encontrado", "ru": "Не найден", "zh": "未找到",
"ja": "見つかりません", "ko": "찾을 수 없음"
},
"settings_auto_detected": {
"es": "Autodetectado de DRAGONX.conf", "de": "Automatisch erkannt aus DRAGONX.conf",
"fr": "Détecté automatiquement depuis DRAGONX.conf", "pt": "Detectado automaticamente de DRAGONX.conf",
"ru": "Автоопределено из DRAGONX.conf", "zh": "从 DRAGONX.conf 自动检测",
"ja": "DRAGONX.conf から自動検出", "ko": "DRAGONX.conf에서 자동 감지"
},
"settings_builtin": {
"es": "Integrado", "de": "Integriert", "fr": "Intégré",
"pt": "Integrado", "ru": "Встроенные", "zh": "内置",
"ja": "内蔵", "ko": "내장"
},
"settings_custom": {
"es": "Personalizado", "de": "Benutzerdefiniert", "fr": "Personnalisé",
"pt": "Personalizado", "ru": "Пользовательские", "zh": "自定义",
"ja": "カスタム", "ko": "사용자 지정"
},
"settings_gradient_bg": {
"es": "Fondo degradado", "de": "Hintergrund-Verlauf", "fr": "Fond dégradé",
"pt": "Fundo gradiente", "ru": "Градиент фона", "zh": "渐变背景",
"ja": "グラデーション背景", "ko": "그라데이션 배경"
},
"settings_idle_after": {
"es": "después de", "de": "nach", "fr": "après",
"pt": "após", "ru": "через", "zh": "之后",
"ja": "経過後", "ko": ""
},
"settings_wallet_not_found": {
"es": "Archivo de billetera no encontrado", "de": "Wallet-Datei nicht gefunden",
"fr": "Fichier portefeuille introuvable", "pt": "Arquivo da carteira não encontrado",
"ru": "Файл кошелька не найден", "zh": "未找到钱包文件",
"ja": "ウォレットファイルが見つかりません", "ko": "지갑 파일을 찾을 수 없음"
},
# --- Settings: checkbox labels ---
"settings_save_shielded_local": {
"es": "Guardar historial de transacciones blindadas localmente",
"de": "Geschirmten Transaktionsverlauf lokal speichern",
"fr": "Enregistrer l'historique des transactions blindées localement",
"pt": "Salvar histórico de transações blindadas localmente",
"ru": "Сохранять историю защищённых транзакций локально",
"zh": "将屏蔽交易历史保存到本地",
"ja": "シールドトランザクション履歴をローカルに保存",
"ko": "차폐 거래 기록을 로컬에 저장"
},
"settings_auto_shield_funds": {
"es": "Blindar fondos transparentes automáticamente",
"de": "Transparente Guthaben automatisch abschirmen",
"fr": "Blindage automatique des fonds transparents",
"pt": "Blindar fundos transparentes automaticamente",
"ru": "Автоматически экранировать прозрачные средства",
"zh": "自动屏蔽透明资金",
"ja": "透明資金を自動シールド",
"ko": "투명 자금 자동 차폐"
},
"settings_use_tor_network": {
"es": "Usar Tor para conexiones de red",
"de": "Tor für Netzwerkverbindungen verwenden",
"fr": "Utiliser Tor pour les connexions réseau",
"pt": "Usar Tor para conexões de rede",
"ru": "Использовать Tor для сетевых подключений",
"zh": "使用 Tor 进行网络连接",
"ja": "ネットワーク接続に Tor を使用",
"ko": "네트워크 연결에 Tor 사용"
},
# --- Settings: descriptions ---
"settings_save_shielded_desc": {
"es": "Almacena transacciones z-addr en un archivo local para visualización",
"de": "Speichert z-addr Transaktionen in einer lokalen Datei zur Ansicht",
"fr": "Stocke les transactions z-addr dans un fichier local pour consultation",
"pt": "Armazena transações z-addr em um arquivo local para visualização",
"ru": "Сохраняет z-addr транзакции в локальном файле для просмотра",
"zh": "将 z-addr 交易存储在本地文件中以供查看",
"ja": "z-addr トランザクションをローカルファイルに保存して表示",
"ko": "z-addr 거래를 로컬 파일에 저장하여 조회"
},
"settings_auto_shield_desc": {
"es": "Mover automáticamente fondos transparentes a direcciones blindadas",
"de": "Transparente Guthaben automatisch an geschirmte Adressen verschieben",
"fr": "Déplacer automatiquement les fonds transparents vers des adresses blindées",
"pt": "Mover automaticamente fundos transparentes para endereços blindados",
"ru": "Автоматически перемещать прозрачные средства на экранированные адреса",
"zh": "自动将透明资金转移到屏蔽地址",
"ja": "透明資金を自動的にシールドアドレスに移動",
"ko": "투명 자금을 자동으로 차폐 주소로 이동"
},
"settings_tor_desc": {
"es": "Enrutar todas las conexiones a través de Tor para mayor privacidad",
"de": "Alle Verbindungen für erhöhte Privatsphäre über Tor leiten",
"fr": "Acheminer toutes les connexions via Tor pour une confidentialité renforcée",
"pt": "Rotear todas as conexões através do Tor para maior privacidade",
"ru": "Маршрутизировать все соединения через Tor для повышения конфиденциальности",
"zh": "通过 Tor 路由所有连接以增强隐私",
"ja": "プライバシー向上のため全接続を Tor 経由にする",
"ko": "향상된 개인 정보 보호를 위해 모든 연결을 Tor를 통해 라우팅"
},
"settings_rescan_desc": {
"es": "Reescanear la cadena de bloques en busca de transacciones faltantes",
"de": "Blockchain nach fehlenden Transaktionen neu scannen",
"fr": "Rescanner la blockchain pour les transactions manquantes",
"pt": "Reescanear a blockchain em busca de transações ausentes",
"ru": "Пересканировать блокчейн для поиска пропущенных транзакций",
"zh": "重新扫描区块链以查找丢失的交易",
"ja": "欠落したトランザクションのためにブロックチェーンを再スキャン",
"ko": "누락된 거래를 찾기 위해 블록체인 재스캔"
},
"settings_solid_colors_desc": {
"es": "Usar colores sólidos en lugar de efectos de desenfoque (accesibilidad)",
"de": "Feste Farben anstelle von Unschärfe-Effekten verwenden (Barrierefreiheit)",
"fr": "Utiliser des couleurs unies au lieu des effets de flou (accessibilité)",
"pt": "Usar cores sólidas em vez de efeitos de desfoque (acessibilidade)",
"ru": "Использовать сплошные цвета вместо эффектов размытия (доступность)",
"zh": "使用纯色代替模糊效果(无障碍功能)",
"ja": "ぼかし効果の代わりに単色を使用(アクセシビリティ)",
"ko": "블러 효과 대신 단색 사용 (접근성)"
},
"settings_gradient_desc": {
"es": "Reemplazar fondos con texturas por degradados suaves",
"de": "Strukturierte Hintergründe durch sanfte Verläufe ersetzen",
"fr": "Remplacer les arrière-plans texturés par des dégradés lisses",
"pt": "Substituir fundos texturizados por gradientes suaves",
"ru": "Заменить текстурные фоны плавными градиентами",
"zh": "用平滑渐变替换纹理背景",
"ja": "テクスチャ背景を滑らかなグラデーションに置換",
"ko": "텍스처 배경을 부드러운 그라데이션으로 교체"
},
"settings_language_note": {
"es": "Nota: Parte del texto requiere reinicio para actualizarse",
"de": "Hinweis: Manche Texte erfordern einen Neustart zur Aktualisierung",
"fr": "Remarque : Certains textes nécessitent un redémarrage pour se mettre à jour",
"pt": "Nota: Alguns textos requerem reinício para atualizar",
"ru": "Примечание: Некоторый текст требует перезапуска для обновления",
"zh": "注意:部分文本需要重启才能更新",
"ja": "注意:一部のテキストは更新に再起動が必要です",
"ko": "참고: 일부 텍스트는 업데이트하려면 다시 시작해야 합니다"
},
# --- Settings: debug ---
"debug_logging": {
"es": "REGISTRO DE DEPURACIÓN", "de": "FEHLERPROTOKOLLIERUNG",
"fr": "JOURNALISATION DE DÉBOGAGE", "pt": "REGISTRO DE DEPURAÇÃO",
"ru": "ЖУРНАЛ ОТЛАДКИ", "zh": "调试日志",
"ja": "デバッグログ", "ko": "디버그 로깅"
},
"settings_debug_select": {
"es": "Seleccione categorías para habilitar el registro de depuración del daemon (flags -debug=).",
"de": "Kategorien auswählen, um Daemon-Fehlerprotokollierung zu aktivieren (-debug= Flags).",
"fr": "Sélectionnez les catégories pour activer la journalisation de débogage du daemon (flags -debug=).",
"pt": "Selecione categorias para ativar o registro de depuração do daemon (flags -debug=).",
"ru": "Выберите категории для включения журнала отладки демона (флаги -debug=).",
"zh": "选择要启用的守护进程调试日志类别(-debug= 标志)。",
"ja": "デーモンのデバッグログを有効にするカテゴリを選択(-debug= フラグ)。",
"ko": "데몬 디버그 로깅을 활성화할 카테고리를 선택하세요 (-debug= 플래그)."
},
"settings_debug_restart_note": {
"es": "Los cambios surten efecto después de reiniciar el daemon.",
"de": "Änderungen werden nach einem Neustart des Daemons wirksam.",
"fr": "Les modifications prennent effet après le redémarrage du daemon.",
"pt": "As alterações entram em vigor após reiniciar o daemon.",
"ru": "Изменения вступают в силу после перезапуска демона.",
"zh": "更改将在重启守护进程后生效。",
"ja": "変更はデーモンの再起動後に有効になります。",
"ko": "변경 사항은 데몬을 다시 시작한 후에 적용됩니다."
},
"settings_debug_changed": {
"es": "Categorías de depuración cambiadas — reinicie el daemon para aplicar",
"de": "Debug-Kategorien geändert — Daemon neu starten zum Anwenden",
"fr": "Catégories de débogage modifiées — redémarrez le daemon pour appliquer",
"pt": "Categorias de depuração alteradas — reinicie o daemon para aplicar",
"ru": "Категории отладки изменены — перезапустите демон для применения",
"zh": "调试类别已更改——重启守护进程以应用",
"ja": "デバッグカテゴリが変更されました — デーモンを再起動して適用",
"ko": "디버그 카테고리가 변경되었습니다 — 데몬을 재시작하여 적용"
},
# --- Settings: confirmation dialog ---
"confirm_clear_ztx_title": {
"es": "Confirmar limpieza del historial Z-Tx", "de": "Z-Tx-Verlauf löschen bestätigen",
"fr": "Confirmer l'effacement de l'historique Z-Tx", "pt": "Confirmar limpeza do histórico Z-Tx",
"ru": "Подтвердить очистку истории Z-Tx", "zh": "确认清除 Z-Tx 历史",
"ja": "Z-Tx 履歴クリアの確認", "ko": "Z-Tx 기록 삭제 확인"
},
"confirm_clear_ztx_warning1": {
"es": "Limpiar el historial de z-transacciones puede hacer que su saldo blindado se muestre como 0 hasta que se realice un reescaneo de la billetera.",
"de": "Das Löschen des Z-Transaktionsverlaufs kann dazu führen, dass Ihr geschirmtes Guthaben als 0 angezeigt wird, bis ein Wallet-Rescan durchgeführt wird.",
"fr": "L'effacement de l'historique des z-transactions peut faire apparaître votre solde blindé à 0 jusqu'à ce qu'un rescan du portefeuille soit effectué.",
"pt": "Limpar o histórico de z-transações pode fazer com que seu saldo blindado apareça como 0 até que um reescaneamento da carteira seja realizado.",
"ru": "Очистка истории z-транзакций может привести к отображению защищённого баланса как 0, пока не будет выполнено пересканирование кошелька.",
"zh": "清除 z-交易历史可能导致您的屏蔽余额显示为 0直到执行钱包重新扫描。",
"ja": "z-トランザクション履歴をクリアすると、ウォレットの再スキャンが実行されるまでシールド残高が0と表示される場合があります。",
"ko": "z-트랜잭션 기록을 삭제하면 지갑 재스캔이 수행될 때까지 차폐 잔액이 0으로 표시될 수 있습니다."
},
"confirm_clear_ztx_warning2": {
"es": "Si esto sucede, deberá reimportar las claves privadas de su dirección z con el reescaneo habilitado para recuperar su saldo.",
"de": "Wenn dies geschieht, müssen Sie Ihre Z-Adresse-Privatschlüssel mit aktiviertem Rescan neu importieren, um Ihr Guthaben wiederherzustellen.",
"fr": "Si cela se produit, vous devrez réimporter les clés privées de votre adresse z avec le rescan activé pour récupérer votre solde.",
"pt": "Se isso acontecer, você precisará reimportar as chaves privadas do seu endereço z com reescaneamento habilitado para recuperar seu saldo.",
"ru": "Если это произойдёт, вам потребуется повторно импортировать приватные ключи вашего z-адреса с включённым пересканированием для восстановления баланса.",
"zh": "如果发生这种情况,您需要在启用重新扫描的情况下重新导入 z-地址私钥以恢复余额。",
"ja": "これが発生した場合、残高を回復するにはz-アドレスの秘密鍵を再スキャンを有効にして再インポートする必要があります。",
"ko": "이런 경우, 잔액을 복구하려면 재스캔을 활성화하여 z-주소 개인키를 다시 가져와야 합니다."
},
"clear_anyway": {
"es": "Limpiar de todos modos", "de": "Trotzdem löschen", "fr": "Effacer quand même",
"pt": "Limpar mesmo assim", "ru": "Всё равно очистить", "zh": "仍然清除",
"ja": "それでもクリア", "ko": "그래도 삭제"
},
# --- Tooltips ---
"tt_import_key": {
"es": "Importar una clave privada (zkey o tkey) en esta billetera",
"de": "Einen privaten Schlüssel (zkey oder tkey) in diese Wallet importieren",
"fr": "Importer une clé privée (zkey ou tkey) dans ce portefeuille",
"pt": "Importar uma chave privada (zkey ou tkey) nesta carteira",
"ru": "Импортировать приватный ключ (zkey или tkey) в этот кошелёк",
"zh": "将私钥zkey 或 tkey导入此钱包",
"ja": "このウォレットに秘密鍵zkey または tkeyをインポート",
"ko": "이 지갑에 개인키 (zkey 또는 tkey) 가져오기"
},
"tt_export_key": {
"es": "Exportar la clave privada de la dirección seleccionada",
"de": "Den privaten Schlüssel der ausgewählten Adresse exportieren",
"fr": "Exporter la clé privée de l'adresse sélectionnée",
"pt": "Exportar a chave privada do endereço selecionado",
"ru": "Экспортировать приватный ключ выбранного адреса",
"zh": "导出所选地址的私钥",
"ja": "選択したアドレスの秘密鍵をエクスポート",
"ko": "선택한 주소의 개인키 내보내기"
},
"tt_export_all": {
"es": "Exportar todas las claves privadas a un archivo",
"de": "Alle privaten Schlüssel in eine Datei exportieren",
"fr": "Exporter toutes les clés privées dans un fichier",
"pt": "Exportar todas as chaves privadas para um arquivo",
"ru": "Экспортировать все приватные ключи в файл",
"zh": "将所有私钥导出到文件",
"ja": "すべての秘密鍵をファイルにエクスポート",
"ko": "모든 개인키를 파일로 내보내기"
},
"tt_backup": {
"es": "Crear una copia de seguridad de su wallet.dat",
"de": "Eine Sicherungskopie Ihrer wallet.dat erstellen",
"fr": "Créer une sauvegarde de votre wallet.dat",
"pt": "Criar um backup do seu wallet.dat",
"ru": "Создать резервную копию вашего wallet.dat",
"zh": "创建 wallet.dat 的备份",
"ja": "wallet.dat のバックアップを作成",
"ko": "wallet.dat 백업 만들기"
},
"tt_export_csv": {
"es": "Exportar historial de transacciones como hoja de cálculo CSV",
"de": "Transaktionsverlauf als CSV-Tabelle exportieren",
"fr": "Exporter l'historique des transactions en feuille de calcul CSV",
"pt": "Exportar histórico de transações como planilha CSV",
"ru": "Экспортировать историю транзакций в виде таблицы CSV",
"zh": "将交易历史导出为 CSV 电子表格",
"ja": "トランザクション履歴を CSV スプレッドシートとしてエクスポート",
"ko": "거래 내역을 CSV 스프레드시트로 내보내기"
},
"tt_addr_url": {
"es": "URL base para ver direcciones en un explorador de bloques",
"de": "Basis-URL zum Anzeigen von Adressen in einem Block-Explorer",
"fr": "URL de base pour consulter les adresses dans un explorateur de blocs",
"pt": "URL base para visualizar endereços em um explorador de blocos",
"ru": "Базовый URL для просмотра адресов в обозревателе блоков",
"zh": "在区块浏览器中查看地址的基础 URL",
"ja": "ブロックエクスプローラーでアドレスを表示するためのベース URL",
"ko": "블록 탐색기에서 주소를 보기 위한 기본 URL"
},
"tt_address_book": {
"es": "Administrar direcciones guardadas para envío rápido",
"de": "Gespeicherte Adressen für schnelles Senden verwalten",
"fr": "Gérer les adresses enregistrées pour un envoi rapide",
"pt": "Gerenciar endereços salvos para envio rápido",
"ru": "Управление сохранёнными адресами для быстрой отправки",
"zh": "管理已保存的地址以快速发送",
"ja": "クイック送信用の保存済みアドレスを管理",
"ko": "빠른 전송을 위해 저장된 주소 관리"
},
"tt_auto_lock": {
"es": "Bloquear billetera después de este tiempo de inactividad",
"de": "Wallet nach dieser Inaktivitätszeit sperren",
"fr": "Verrouiller le portefeuille après cette durée d'inactivité",
"pt": "Bloquear carteira após este tempo de inatividade",
"ru": "Заблокировать кошелёк после этого времени бездействия",
"zh": "在此不活动时间后锁定钱包",
"ja": "この無操作時間後にウォレットをロック",
"ko": "이 비활성 시간 후 지갑 잠금"
},
"tt_auto_shield": {
"es": "Mover automáticamente el saldo transparente a direcciones blindadas para privacidad",
"de": "Transparentes Guthaben automatisch an geschirmte Adressen für Datenschutz verschieben",
"fr": "Déplacer automatiquement le solde transparent vers des adresses blindées pour la confidentialité",
"pt": "Mover automaticamente o saldo transparente para endereços blindados para privacidade",
"ru": "Автоматически перемещать прозрачный баланс на экранированные адреса для конфиденциальности",
"zh": "自动将透明余额转移到屏蔽地址以增强隐私",
"ja": "プライバシーのため透明残高を自動的にシールドアドレスに移動",
"ko": "개인 정보 보호를 위해 투명 잔액을 자동으로 차폐 주소로 이동"
},
"tt_block_explorer": {
"es": "Abrir el explorador de bloques DragonX en su navegador",
"de": "Den DragonX Block-Explorer im Browser öffnen",
"fr": "Ouvrir l'explorateur de blocs DragonX dans votre navigateur",
"pt": "Abrir o explorador de blocos DragonX no seu navegador",
"ru": "Открыть обозреватель блоков DragonX в браузере",
"zh": "在浏览器中打开 DragonX 区块浏览器",
"ja": "ブラウザで DragonX ブロックエクスプローラーを開く",
"ko": "브라우저에서 DragonX 블록 탐색기 열기"
},
"tt_blur": {
"es": "Cantidad de desenfoque (0%% = apagado, 100%% = máximo)",
"de": "Unschärfe-Stärke (0%% = aus, 100%% = maximum)",
"fr": "Quantité de flou (0%% = désactivé, 100%% = maximum)",
"pt": "Quantidade de desfoque (0%% = desligado, 100%% = máximo)",
"ru": "Степень размытия (0%% = выкл., 100%% = максимум)",
"zh": "模糊程度0%% = 关闭100%% = 最大)",
"ja": "ぼかし量0%% = オフ、100%% = 最大)",
"ko": "블러 양 (0%% = 끔, 100%% = 최대)"
},
"tt_change_pass": {
"es": "Cambiar la contraseña de cifrado de la billetera",
"de": "Die Wallet-Verschlüsselungspassphrase ändern",
"fr": "Changer la phrase secrète de chiffrement du portefeuille",
"pt": "Alterar a frase secreta de encriptação da carteira",
"ru": "Сменить пароль шифрования кошелька",
"zh": "更改钱包加密密码",
"ja": "ウォレットの暗号化パスフレーズを変更",
"ko": "지갑 암호화 비밀번호 변경"
},
"tt_change_pin": {
"es": "Cambiar su PIN de desbloqueo",
"de": "Ihre Entsperr-PIN ändern",
"fr": "Changer votre PIN de déverrouillage",
"pt": "Alterar seu PIN de desbloqueio",
"ru": "Изменить PIN-код разблокировки",
"zh": "更改您的解锁 PIN",
"ja": "アンロック PIN を変更",
"ko": "잠금 해제 PIN 변경"
},
"tt_clear_ztx": {
"es": "Eliminar historial de z-transacciones en caché local",
"de": "Lokal zwischengespeicherten Z-Transaktionsverlauf löschen",
"fr": "Supprimer l'historique des z-transactions mis en cache localement",
"pt": "Excluir histórico de z-transações em cache local",
"ru": "Удалить локально кешированную историю z-транзакций",
"zh": "删除本地缓存的 z-交易历史",
"ja": "ローカルにキャッシュされた z-トランザクション履歴を削除",
"ko": "로컬에 캐시된 z-트랜잭션 기록 삭제"
},
"tt_custom_fees": {
"es": "Habilitar entrada manual de comisiones al enviar transacciones",
"de": "Manuelle Gebühreneingabe beim Senden von Transaktionen aktivieren",
"fr": "Activer la saisie manuelle des frais lors de l'envoi de transactions",
"pt": "Ativar entrada manual de taxas ao enviar transações",
"ru": "Включить ручной ввод комиссий при отправке транзакций",
"zh": "发送交易时启用手动费用输入",
"ja": "トランザクション送信時に手動手数料入力を有効化",
"ko": "거래 전송 시 수동 수수료 입력 활성화"
},
"tt_custom_theme": {
"es": "Tema personalizado activo",
"de": "Benutzerdefiniertes Theme aktiv",
"fr": "Thème personnalisé actif",
"pt": "Tema personalizado ativo",
"ru": "Пользовательская тема активна",
"zh": "自定义主题已激活",
"ja": "カスタムテーマがアクティブ",
"ko": "사용자 지정 테마 활성화됨"
},
"tt_debug_collapse": {
"es": "Colapsar opciones de registro de depuración",
"de": "Debug-Protokollierungsoptionen einklappen",
"fr": "Réduire les options de journalisation de débogage",
"pt": "Recolher opções de registro de depuração",
"ru": "Свернуть параметры журнала отладки",
"zh": "折叠调试日志选项",
"ja": "デバッグログオプションを折りたたむ",
"ko": "디버그 로깅 옵션 접기"
},
"tt_debug_expand": {
"es": "Expandir opciones de registro de depuración",
"de": "Debug-Protokollierungsoptionen ausklappen",
"fr": "Développer les options de journalisation de débogage",
"pt": "Expandir opções de registro de depuração",
"ru": "Развернуть параметры журнала отладки",
"zh": "展开调试日志选项",
"ja": "デバッグログオプションを展開",
"ko": "디버그 로깅 옵션 펼치기"
},
"tt_encrypt": {
"es": "Cifrar wallet.dat con una contraseña",
"de": "wallet.dat mit einer Passphrase verschlüsseln",
"fr": "Chiffrer wallet.dat avec une phrase secrète",
"pt": "Encriptar wallet.dat com uma frase secreta",
"ru": "Зашифровать wallet.dat паролем",
"zh": "使用密码加密 wallet.dat",
"ja": "パスフレーズで wallet.dat を暗号化",
"ko": "비밀번호로 wallet.dat 암호화"
},
"tt_fetch_prices": {
"es": "Obtener precios de mercado de DRGX desde la API de CoinGecko",
"de": "DRGX-Marktpreise von der CoinGecko-API abrufen",
"fr": "Récupérer les prix du marché DRGX depuis l'API CoinGecko",
"pt": "Obter preços de mercado DRGX da API CoinGecko",
"ru": "Получить рыночные цены DRGX из API CoinGecko",
"zh": "从 CoinGecko API 获取 DRGX 市场价格",
"ja": "CoinGecko API から DRGX の市場価格を取得",
"ko": "CoinGecko API에서 DRGX 시장 가격 가져오기"
},
"tt_font_scale": {
"es": "Escalar todo el texto y la interfaz (1.0x = predeterminado, hasta 1.5x).",
"de": "Alle Texte und UI skalieren (1.0x = Standard, bis 1.5x).",
"fr": "Mettre à l'échelle tout le texte et l'interface (1.0x = par défaut, jusqu'à 1.5x).",
"pt": "Escalar todo o texto e interface (1.0x = padrão, até 1.5x).",
"ru": "Масштабировать весь текст и интерфейс (1.0x = по умолчанию, до 1.5x).",
"zh": "缩放所有文本和界面1.0x = 默认,最大 1.5x)。",
"ja": "すべてのテキストと UI をスケーリング1.0x = デフォルト、最大 1.5x)。",
"ko": "모든 텍스트 및 UI 크기 조정 (1.0x = 기본, 최대 1.5x)."
},
"tt_idle_delay": {
"es": "Cuánto tiempo esperar antes de empezar a minar",
"de": "Wie lange vor dem Start des Minings gewartet werden soll",
"fr": "Combien de temps attendre avant de commencer le minage",
"pt": "Quanto tempo esperar antes de iniciar a mineração",
"ru": "Сколько ждать перед началом майнинга",
"zh": "开始挖矿前等待多长时间",
"ja": "マイニング開始前の待機時間",
"ko": "채굴 시작 전 대기 시간"
},
"tt_keep_daemon": {
"es": "El daemon se detendrá cuando ejecute el asistente de configuración",
"de": "Der Daemon wird beim Ausführen des Einrichtungsassistenten gestoppt",
"fr": "Le daemon s'arrêtera lors de l'exécution de l'assistant de configuration",
"pt": "O daemon será parado ao executar o assistente de configuração",
"ru": "Демон будет остановлен при запуске мастера настройки",
"zh": "运行设置向导时守护进程仍会停止",
"ja": "セットアップウィザード実行時にデーモンは停止します",
"ko": "설정 마법사를 실행하면 데몬이 여전히 중지됩니다"
},
"tt_language": {
"es": "Idioma de la interfaz de la billetera",
"de": "Schnittstellensprache der Wallet-UI",
"fr": "Langue de l'interface du portefeuille",
"pt": "Idioma da interface da carteira",
"ru": "Язык интерфейса кошелька",
"zh": "钱包界面语言",
"ja": "ウォレット UI のインターフェース言語",
"ko": "지갑 UI 인터페이스 언어"
},
"tt_layout_hotkey": {
"es": "Atajo: teclas de flecha izquierda/derecha para cambiar diseños de Balance",
"de": "Hotkey: Links-/Rechts-Pfeiltasten zum Wechseln der Balance-Layouts",
"fr": "Raccourci : touches fléchées gauche/droite pour changer les dispositions de Balance",
"pt": "Atalho: teclas de seta esquerda/direita para alternar layouts de Saldo",
"ru": "Горячая клавиша: стрелки влево/вправо для переключения раскладок Баланса",
"zh": "快捷键:左/右箭头键切换余额布局",
"ja": "ホットキー:左右矢印キーでバランスレイアウトを切り替え",
"ko": "단축키: 좌/우 화살표 키로 잔액 레이아웃 전환"
},
"tt_lock": {
"es": "Bloquear la billetera inmediatamente",
"de": "Die Wallet sofort sperren",
"fr": "Verrouiller le portefeuille immédiatement",
"pt": "Bloquear a carteira imediatamente",
"ru": "Немедленно заблокировать кошелёк",
"zh": "立即锁定钱包",
"ja": "ウォレットを即座にロック",
"ko": "지갑 즉시 잠금"
},
"tt_low_spec": {
"es": "Desactivar todos los efectos visuales pesados\\nAtajo: Ctrl+Shift+Down",
"de": "Alle aufwendigen visuellen Effekte deaktivieren\\nHotkey: Ctrl+Shift+Down",
"fr": "Désactiver tous les effets visuels lourds\\nRaccourci : Ctrl+Shift+Down",
"pt": "Desativar todos os efeitos visuais pesados\\nAtalho: Ctrl+Shift+Down",
"ru": "Отключить все тяжёлые визуальные эффекты\\орячая клавиша: Ctrl+Shift+Down",
"zh": "禁用所有重度视觉效果\\n快捷键Ctrl+Shift+Down",
"ja": "すべての重い視覚効果を無効化\\nホットキーCtrl+Shift+Down",
"ko": "모든 고부하 시각 효과 비활성화\\n단축키: Ctrl+Shift+Down"
},
"tt_merge": {
"es": "Consolidar múltiples UTXOs en una dirección",
"de": "Mehrere UTXOs einer Adresse zusammenführen",
"fr": "Consolider plusieurs UTXOs vers une adresse",
"pt": "Consolidar múltiplos UTXOs em um endereço",
"ru": "Объединить несколько UTXO в один адрес",
"zh": "将多个 UTXO 合并到一个地址",
"ja": "複数の UTXO を一つのアドレスに統合",
"ko": "여러 UTXO를 하나의 주소로 통합"
},
"tt_mine_idle": {
"es": "Iniciar minería automáticamente cuando el\\nsistema esté inactivo (sin entrada de teclado/ratón)",
"de": "Mining automatisch starten, wenn das\\nSystem inaktiv ist (keine Tastatur-/Mauseingabe)",
"fr": "Démarrer le minage automatiquement quand le\\nsystème est inactif (aucune entrée clavier/souris)",
"pt": "Iniciar mineração automaticamente quando o\\nsistema estiver ocioso (sem entrada de teclado/mouse)",
"ru": "Автоматически начать майнинг при\\nпростое системы (нет ввода с клавиатуры/мыши)",
"zh": "系统空闲时自动开始挖矿\\n无键盘/鼠标输入)",
"ja": "システムがアイドル状態(キーボード/マウス入力なし)\\nのとき自動的にマイニングを開始",
"ko": "시스템이 유휴 상태(키보드/마우스 입력 없음)일 때\\n자동으로 채굴 시작"
},
"tt_noise": {
"es": "Intensidad de textura granulada (0%% = apagado, 100%% = máximo)",
"de": "Körnungstextur-Intensität (0%% = aus, 100%% = maximum)",
"fr": "Intensité de texture grainée (0%% = désactivé, 100%% = maximum)",
"pt": "Intensidade de textura granulada (0%% = desligado, 100%% = máximo)",
"ru": "Интенсивность зернистой текстуры (0%% = выкл., 100%% = максимум)",
"zh": "颗粒纹理强度0%% = 关闭100%% = 最大)",
"ja": "グレインテクスチャ強度0%% = オフ、100%% = 最大)",
"ko": "그레인 텍스처 강도 (0%% = 끔, 100%% = 최대)"
},
"tt_open_dir": {
"es": "Clic para abrir en explorador de archivos",
"de": "Klicken, um im Dateimanager zu öffnen",
"fr": "Cliquer pour ouvrir dans l'explorateur de fichiers",
"pt": "Clique para abrir no explorador de arquivos",
"ru": "Нажмите, чтобы открыть в проводнике",
"zh": "点击在文件管理器中打开",
"ja": "クリックしてファイルエクスプローラーで開く",
"ko": "파일 탐색기에서 열려면 클릭"
},
"tt_remove_encrypt": {
"es": "Quitar cifrado y almacenar la billetera sin protección",
"de": "Verschlüsselung entfernen und Wallet ungeschützt speichern",
"fr": "Supprimer le chiffrement et stocker le portefeuille sans protection",
"pt": "Remover encriptação e armazenar a carteira desprotegida",
"ru": "Удалить шифрование и хранить кошелёк без защиты",
"zh": "移除加密并以未受保护状态存储钱包",
"ja": "暗号化を解除してウォレットを保護なしで保存",
"ko": "암호화를 제거하고 지갑을 보호 없이 저장"
},
"tt_remove_pin": {
"es": "Quitar PIN y requerir contraseña para desbloquear",
"de": "PIN entfernen und Passphrase zum Entsperren erfordern",
"fr": "Supprimer le PIN et exiger la phrase secrète pour déverrouiller",
"pt": "Remover PIN e exigir frase secreta para desbloquear",
"ru": "Удалить PIN и требовать пароль для разблокировки",
"zh": "移除 PIN 并要求密码解锁",
"ja": "PIN を削除しアンロックにパスフレーズを要求",
"ko": "PIN을 제거하고 잠금 해제 시 비밀번호 요구"
},
"tt_report_bug": {
"es": "Reportar un problema en el rastreador del proyecto",
"de": "Ein Problem im Projekt-Tracker melden",
"fr": "Signaler un problème dans le suivi de projet",
"pt": "Reportar um problema no rastreador do projeto",
"ru": "Сообщить о проблеме в трекере проекта",
"zh": "在项目跟踪器中报告问题",
"ja": "プロジェクトトラッカーで問題を報告",
"ko": "프로젝트 트래커에서 문제 보고"
},
"tt_request_payment": {
"es": "Generar una solicitud de pago con código QR",
"de": "Eine Zahlungsanforderung mit QR-Code generieren",
"fr": "Générer une demande de paiement avec code QR",
"pt": "Gerar uma solicitação de pagamento com código QR",
"ru": "Сгенерировать запрос на оплату с QR-кодом",
"zh": "生成带二维码的付款请求",
"ja": "QR コード付きの支払い請求を生成",
"ko": "QR 코드가 포함된 결제 요청 생성"
},
"tt_rescan": {
"es": "Reescanear la cadena de bloques en busca de transacciones faltantes",
"de": "Blockchain nach fehlenden Transaktionen neu scannen",
"fr": "Rescanner la blockchain pour les transactions manquantes",
"pt": "Reescanear a blockchain em busca de transações ausentes",
"ru": "Пересканировать блокчейн для поиска пропущенных транзакций",
"zh": "重新扫描区块链以查找丢失的交易",
"ja": "欠落したトランザクションのためにブロックチェーンを再スキャン",
"ko": "누락된 거래를 찾기 위해 블록체인 재스캔"
},
"tt_reset_settings": {
"es": "Recargar configuraciones desde disco (deshacer cambios no guardados)",
"de": "Einstellungen von der Festplatte neu laden (nicht gespeicherte Änderungen rückgängig machen)",
"fr": "Recharger les paramètres depuis le disque (annuler les modifications non enregistrées)",
"pt": "Recarregar configurações do disco (desfazer alterações não salvas)",
"ru": "Перезагрузить настройки с диска (отменить несохранённые изменения)",
"zh": "从磁盘重新加载设置(撤消未保存的更改)",
"ja": "ディスクから設定を再読み込み(未保存の変更を元に戻す)",
"ko": "디스크에서 설정 다시 로드 (저장되지 않은 변경 사항 취소)"
},
"tt_restart_daemon": {
"es": "Reiniciar el daemon para aplicar cambios de registro de depuración",
"de": "Daemon neu starten, um Änderungen der Debug-Protokollierung anzuwenden",
"fr": "Redémarrer le daemon pour appliquer les modifications de journalisation de débogage",
"pt": "Reiniciar o daemon para aplicar alterações de registro de depuração",
"ru": "Перезапустить демон для применения изменений журнала отладки",
"zh": "重启守护进程以应用调试日志更改",
"ja": "デバッグログ変更を適用するためにデーモンを再起動",
"ko": "디버그 로깅 변경 사항을 적용하기 위해 데몬 재시작"
},
"tt_rpc_host": {
"es": "Nombre de host del daemon DragonX",
"de": "Hostname des DragonX-Daemons",
"fr": "Nom d'hôte du daemon DragonX",
"pt": "Nome do host do daemon DragonX",
"ru": "Имя хоста демона DragonX",
"zh": "DragonX 守护进程主机名",
"ja": "DragonX デーモンのホスト名",
"ko": "DragonX 데몬 호스트 이름"
},
"tt_rpc_pass": {
"es": "Contraseña de autenticación RPC",
"de": "RPC-Authentifizierungspasswort",
"fr": "Mot de passe d'authentification RPC",
"pt": "Senha de autenticação RPC",
"ru": "Пароль аутентификации RPC",
"zh": "RPC 认证密码",
"ja": "RPC 認証パスワード",
"ko": "RPC 인증 비밀번호"
},
"tt_rpc_port": {
"es": "Puerto para conexiones RPC del daemon",
"de": "Port für RPC-Verbindungen des Daemons",
"fr": "Port pour les connexions RPC du daemon",
"pt": "Porta para conexões RPC do daemon",
"ru": "Порт для RPC-подключений демона",
"zh": "守护进程 RPC 连接端口",
"ja": "デーモン RPC 接続用ポート",
"ko": "데몬 RPC 연결 포트"
},
"tt_rpc_user": {
"es": "Nombre de usuario de autenticación RPC",
"de": "RPC-Authentifizierungsbenutzername",
"fr": "Nom d'utilisateur d'authentification RPC",
"pt": "Nome de usuário de autenticação RPC",
"ru": "Имя пользователя аутентификации RPC",
"zh": "RPC 认证用户名",
"ja": "RPC 認証ユーザー名",
"ko": "RPC 인증 사용자 이름"
},
"tt_save_settings": {
"es": "Guardar todas las configuraciones en disco",
"de": "Alle Einstellungen auf der Festplatte speichern",
"fr": "Enregistrer tous les paramètres sur le disque",
"pt": "Salvar todas as configurações no disco",
"ru": "Сохранить все настройки на диск",
"zh": "将所有设置保存到磁盘",
"ja": "すべての設定をディスクに保存",
"ko": "모든 설정을 디스크에 저장"
},
"tt_save_ztx": {
"es": "Almacenar historial de transacciones de z-address localmente para carga más rápida",
"de": "Z-Adresse-Transaktionsverlauf lokal für schnelleres Laden speichern",
"fr": "Stocker l'historique des transactions z-address localement pour un chargement plus rapide",
"pt": "Armazenar histórico de transações z-address localmente para carregamento mais rápido",
"ru": "Хранить историю транзакций z-адреса локально для более быстрой загрузки",
"zh": "将 z-address 交易历史存储在本地以加快加载速度",
"ja": "z-address トランザクション履歴をローカルに保存して高速読み込み",
"ko": "z-address 거래 기록을 로컬에 저장하여 빠른 로딩"
},
"tt_scan_themes": {
"es": "Buscar nuevos temas.\\nColoque carpetas de temas en:\\n%s",
"de": "Nach neuen Themes suchen.\\nTheme-Ordner ablegen in:\\n%s",
"fr": "Rechercher de nouveaux thèmes.\\nPlacez les dossiers de thèmes dans :\\n%s",
"pt": "Procurar novos temas.\\nColoque pastas de temas em:\\n%s",
"ru": "Поиск новых тем.\\nРазместите папки тем в:\\n%s",
"zh": "扫描新主题。\\n将主题文件夹放在\\n%s",
"ja": "新しいテーマをスキャン。\\nテーマフォルダーをここに配置\\n%s",
"ko": "새 테마 검색.\\n테마 폴더를 여기에 배치:\\n%s"
},
"tt_scanline": {
"es": "Efecto de líneas de escaneo CRT en la consola",
"de": "CRT-Scanlinieneffekt in der Konsole",
"fr": "Effet de lignes de balayage CRT dans la console",
"pt": "Efeito de linhas de varredura CRT no console",
"ru": "Эффект развёртки ЭЛТ в консоли",
"zh": "控制台中的 CRT 扫描线效果",
"ja": "コンソールでの CRT スキャンライン効果",
"ko": "콘솔에서 CRT 스캔라인 효과"
},
"tt_set_pin": {
"es": "Establecer un PIN de 4-8 dígitos para desbloqueo rápido",
"de": "Eine 4-8-stellige PIN für schnelles Entsperren festlegen",
"fr": "Définir un PIN de 4-8 chiffres pour un déverrouillage rapide",
"pt": "Definir um PIN de 4-8 dígitos para desbloqueio rápido",
"ru": "Установить 4-8-значный PIN для быстрой разблокировки",
"zh": "设置 4-8 位 PIN 以快速解锁",
"ja": "クイックアンロック用の 4-8 桁 PIN を設定",
"ko": "빠른 잠금 해제를 위한 4-8자리 PIN 설정"
},
"tt_shield_mining": {
"es": "Mover recompensas de minería transparentes a una dirección blindada",
"de": "Transparente Mining-Belohnungen an eine geschirmte Adresse verschieben",
"fr": "Déplacer les récompenses de minage transparentes vers une adresse blindée",
"pt": "Mover recompensas de mineração transparentes para um endereço blindado",
"ru": "Перевести прозрачные вознаграждения за майнинг на экранированный адрес",
"zh": "将透明挖矿奖励转移到屏蔽地址",
"ja": "透明マイニング報酬をシールドアドレスに移動",
"ko": "투명 채굴 보상을 차폐 주소로 이동"
},
"tt_simple_bg": {
"es": "Usar un gradiente simple para el fondo\\nAtajo: Ctrl+Up",
"de": "Einen einfachen Verlauf für den Hintergrund verwenden\\nHotkey: Ctrl+Up",
"fr": "Utiliser un dégradé simple pour l'arrière-plan\\nRaccourci : Ctrl+Up",
"pt": "Usar um gradiente simples para o fundo\\nAtalho: Ctrl+Up",
"ru": "Использовать простой градиент для фона\\орячая клавиша: Ctrl+Up",
"zh": "使用简单渐变作为背景\\n快捷键Ctrl+Up",
"ja": "背景にシンプルなグラデーションを使用\\nホットキーCtrl+Up",
"ko": "배경에 단순 그라데이션 사용\\n단축키: Ctrl+Up"
},
"tt_simple_bg_alt": {
"es": "Usar una versión degradada de la imagen de fondo del tema\\nAtajo: Ctrl+Up",
"de": "Eine Verlaufsversion des Theme-Hintergrundbilds verwenden\\nHotkey: Ctrl+Up",
"fr": "Utiliser une version dégradée de l'image d'arrière-plan du thème\\nRaccourci : Ctrl+Up",
"pt": "Usar uma versão gradiente da imagem de fundo do tema\\nAtalho: Ctrl+Up",
"ru": "Использовать градиентную версию фонового изображения темы\\орячая клавиша: Ctrl+Up",
"zh": "使用主题背景图像的渐变版本\\n快捷键Ctrl+Up",
"ja": "テーマ背景画像のグラデーション版を使用\\nホットキーCtrl+Up",
"ko": "테마 배경 이미지의 그라데이션 버전 사용\\n단축키: Ctrl+Up"
},
"tt_stop_external": {
"es": "Se aplica al conectarse a un daemon\\niniciado fuera de esta billetera",
"de": "Gilt bei Verbindung zu einem Daemon,\\nder außerhalb dieser Wallet gestartet wurde",
"fr": "S'applique lors de la connexion à un daemon\\ndémarré en dehors de ce portefeuille",
"pt": "Aplica-se ao conectar a um daemon\\niniciado fora desta carteira",
"ru": "Применяется при подключении к демону,\\апущенному вне этого кошелька",
"zh": "适用于连接到在此钱包\\n外部启动的守护进程",
"ja": "このウォレット外で起動された\\nデーモンに接続する場合に適用",
"ko": "이 지갑 외부에서 시작된\\n데몬에 연결할 때 적용"
},
"tt_test_conn": {
"es": "Verificar la conexión RPC al daemon",
"de": "Die RPC-Verbindung zum Daemon überprüfen",
"fr": "Vérifier la connexion RPC au daemon",
"pt": "Verificar a conexão RPC ao daemon",
"ru": "Проверить RPC-подключение к демону",
"zh": "验证与守护进程的 RPC 连接",
"ja": "デーモンへの RPC 接続を確認",
"ko": "데몬에 대한 RPC 연결 확인"
},
"tt_theme_effects": {
"es": "Brillo, resplandor, ciclo de tono por tema",
"de": "Schimmer, Glühen, Farbton-Zyklen pro Theme",
"fr": "Scintillement, lueur, cycle de teinte par thème",
"pt": "Brilho, luminescência, ciclo de matiz por tema",
"ru": "Мерцание, свечение, циклическая смена оттенка по теме",
"zh": "每个主题的闪烁、发光、色调循环",
"ja": "テーマごとのシマー、グロー、色相サイクル",
"ko": "테마별 반짝임, 글로우, 색조 순환"
},
"tt_theme_hotkey": {
"es": "Atajo: Ctrl+Izquierda/Derecha para cambiar temas",
"de": "Hotkey: Ctrl+Links/Rechts zum Wechseln der Themes",
"fr": "Raccourci : Ctrl+Gauche/Droite pour changer de thème",
"pt": "Atalho: Ctrl+Esquerda/Direita para alternar temas",
"ru": "Горячая клавиша: Ctrl+Влево/Вправо для переключения тем",
"zh": "快捷键Ctrl+左/右箭头切换主题",
"ja": "ホットキーCtrl+左/右でテーマを切り替え",
"ko": "단축키: Ctrl+왼쪽/오른쪽으로 테마 전환"
},
"tt_tor": {
"es": "Enrutar conexiones del daemon a través de la red Tor para anonimato",
"de": "Daemon-Verbindungen für Anonymität über das Tor-Netzwerk leiten",
"fr": "Acheminer les connexions du daemon via le réseau Tor pour l'anonymat",
"pt": "Rotear conexões do daemon através da rede Tor para anonimato",
"ru": "Маршрутизировать подключения демона через сеть Tor для анонимности",
"zh": "通过 Tor 网络路由守护进程连接以实现匿名",
"ja": "匿名性のためにデーモン接続を Tor ネットワーク経由でルーティング",
"ko": "익명성을 위해 데몬 연결을 Tor 네트워크를 통해 라우팅"
},
"tt_tx_url": {
"es": "URL base para ver transacciones en un explorador de bloques",
"de": "Basis-URL zum Anzeigen von Transaktionen in einem Block-Explorer",
"fr": "URL de base pour consulter les transactions dans un explorateur de blocs",
"pt": "URL base para visualizar transações em um explorador de blocos",
"ru": "Базовый URL для просмотра транзакций в обозревателе блоков",
"zh": "在区块浏览器中查看交易的基础 URL",
"ja": "ブロックエクスプローラーでトランザクションを表示するためのベース URL",
"ko": "블록 탐색기에서 거래를 보기 위한 기본 URL"
},
"tt_ui_opacity": {
"es": "Opacidad de tarjetas y barra lateral (100%% = totalmente opaco, menor = más transparente)",
"de": "Karten- und Seitenleisten-Deckkraft (100%% = vollständig undurchsichtig, niedriger = durchsichtiger)",
"fr": "Opacité des cartes et de la barre latérale (100%% = entièrement opaque, plus bas = plus transparent)",
"pt": "Opacidade de cartões e barra lateral (100%% = totalmente opaco, menor = mais transparente)",
"ru": "Непрозрачность карточек и боковой панели (100%% = полностью непрозрачно, ниже = прозрачнее)",
"zh": "卡片和侧边栏不透明度100%% = 完全不透明,越低越透明)",
"ja": "カードとサイドバーの不透明度100%% = 完全不透明、低い = より透過)",
"ko": "카드 및 사이드바 불투명도 (100%% = 완전 불투명, 낮을수록 더 투명)"
},
"tt_validate": {
"es": "Comprobar si una dirección DragonX es válida",
"de": "Prüfen, ob eine DragonX-Adresse gültig ist",
"fr": "Vérifier si une adresse DragonX est valide",
"pt": "Verificar se um endereço DragonX é válido",
"ru": "Проверить, действителен ли адрес DragonX",
"zh": "检查 DragonX 地址是否有效",
"ja": "DragonX アドレスが有効かどうかを確認",
"ko": "DragonX 주소가 유효한지 확인"
},
"tt_verbose": {
"es": "Registrar diagnósticos detallados de conexión,\\nestado del daemon e info de propietario de puerto\\nen la pestaña de Consola",
"de": "Detaillierte Verbindungsdiagnosen,\\nDaemon-Status und Port-Besitzer-Info\\nin der Konsolen-Registerkarte protokollieren",
"fr": "Journaliser les diagnostics de connexion détaillés,\\nl'état du daemon et les informations de propriétaire de port\\ndans l'onglet Console",
"pt": "Registrar diagnósticos detalhados de conexão,\\nestado do daemon e info de proprietário de porta\\nna aba Console",
"ru": "Записывать подробную диагностику подключений,\\nсостояние демона и информацию о владельце порта\\а вкладке Консоль",
"zh": "将详细连接诊断、守护进程状态\\n和端口所有者信息记录到控制台选项卡",
"ja": "詳細な接続診断、デーモン状態、\\nポート所有者情報をコンソールタブに記録",
"ko": "콘솔 탭에 상세 연결 진단,\\n데몬 상태 및 포트 소유자 정보 기록"
},
"tt_website": {
"es": "Abrir el sitio web de DragonX",
"de": "Die DragonX-Website öffnen",
"fr": "Ouvrir le site web DragonX",
"pt": "Abrir o site do DragonX",
"ru": "Открыть сайт DragonX",
"zh": "打开 DragonX 网站",
"ja": "DragonX ウェブサイトを開く",
"ko": "DragonX 웹사이트 열기"
},
"tt_window_opacity": {
"es": "Opacidad del fondo (menor = escritorio visible a través de la ventana)",
"de": "Hintergrund-Deckkraft (niedriger = Desktop durch Fenster sichtbar)",
"fr": "Opacité de l'arrière-plan (plus bas = bureau visible à travers la fenêtre)",
"pt": "Opacidade do fundo (menor = área de trabalho visível através da janela)",
"ru": "Непрозрачность фона (ниже = рабочий стол виден сквозь окно)",
"zh": "背景不透明度(越低 = 桌面透过窗口可见)",
"ja": "背景の不透明度(低い = デスクトップがウィンドウ越しに見える)",
"ko": "배경 불투명도 (낮을수록 = 창을 통해 바탕 화면이 보임)"
},
"tt_wizard": {
"es": "Volver a ejecutar el asistente de configuración inicial\\nEl daemon será reiniciado",
"de": "Den Ersteinrichtungsassistenten erneut ausführen\\nDer Daemon wird neu gestartet",
"fr": "Relancer l'assistant de configuration initiale\\nLe daemon sera redémarré",
"pt": "Executar novamente o assistente de configuração inicial\\nO daemon será reiniciado",
"ru": "Повторно запустить мастер начальной настройки\\емон будет перезапущен",
"zh": "重新运行初始设置向导\\n守护进程将被重启",
"ja": "初期セットアップウィザードを再実行\\nデーモンは再起動されます",
"ko": "초기 설정 마법사 다시 실행\\n데몬이 재시작됩니다"
},
# --- Misc dialog/tab strings ---
"ram_wallet_gb": {
"es": "Billetera: %.1f GB", "de": "Wallet: %.1f GB", "fr": "Portefeuille : %.1f Go",
"pt": "Carteira: %.1f GB", "ru": "Кошелёк: %.1f ГБ", "zh": "钱包:%.1f GB",
"ja": "ウォレット:%.1f GB", "ko": "지갑: %.1f GB"
},
"ram_wallet_mb": {
"es": "Billetera: %.0f MB", "de": "Wallet: %.0f MB", "fr": "Portefeuille : %.0f Mo",
"pt": "Carteira: %.0f MB", "ru": "Кошелёк: %.0f МБ", "zh": "钱包:%.0f MB",
"ja": "ウォレット:%.0f MB", "ko": "지갑: %.0f MB"
},
"ram_daemon_gb": {
"es": "Daemon: %.1f GB (%s)", "de": "Daemon: %.1f GB (%s)", "fr": "Daemon : %.1f Go (%s)",
"pt": "Daemon: %.1f GB (%s)", "ru": "Демон: %.1f ГБ (%s)", "zh": "守护进程:%.1f GB (%s)",
"ja": "デーモン:%.1f GB (%s)", "ko": "데몬: %.1f GB (%s)"
},
"ram_daemon_mb": {
"es": "Daemon: %.0f MB (%s)", "de": "Daemon: %.0f MB (%s)", "fr": "Daemon : %.0f Mo (%s)",
"pt": "Daemon: %.0f MB (%s)", "ru": "Демон: %.0f МБ (%s)", "zh": "守护进程:%.0f MB (%s)",
"ja": "デーモン:%.0f MB (%s)", "ko": "데몬: %.0f MB (%s)"
},
"ram_system_gb": {
"es": "Sistema: %.1f / %.0f GB", "de": "System: %.1f / %.0f GB", "fr": "Système : %.1f / %.0f Go",
"pt": "Sistema: %.1f / %.0f GB", "ru": "Система: %.1f / %.0f ГБ", "zh": "系统:%.1f / %.0f GB",
"ja": "システム:%.1f / %.0f GB", "ko": "시스템: %.1f / %.0f GB"
},
"shield_operation_id": {
"es": "ID de operación: %s", "de": "Vorgangs-ID: %s", "fr": "ID d'opération : %s",
"pt": "ID da operação: %s", "ru": "ID операции: %s", "zh": "操作 ID%s",
"ja": "オペレーション ID%s", "ko": "작업 ID: %s"
},
"peers_peer_label": {
"es": "Peer: %s", "de": "Peer: %s", "fr": "Pair : %s",
"pt": "Peer: %s", "ru": "Пир: %s", "zh": "节点:%s",
"ja": "ピア:%s", "ko": "피어: %s"
},
"error_format": {
"es": "Error: %s", "de": "Fehler: %s", "fr": "Erreur : %s",
"pt": "Erro: %s", "ru": "Ошибка: %s", "zh": "错误:%s",
"ja": "エラー:%s", "ko": "오류: %s"
},
"key_export_click_retrieve": {
"es": "Haga clic para recuperar la clave de su billetera",
"de": "Klicken Sie, um den Schlüssel aus Ihrer Wallet abzurufen",
"fr": "Cliquez pour récupérer la clé de votre portefeuille",
"pt": "Clique para recuperar a chave da sua carteira",
"ru": "Нажмите, чтобы получить ключ из вашего кошелька",
"zh": "点击从钱包中获取密钥",
"ja": "クリックしてウォレットからキーを取得",
"ko": "지갑에서 키를 가져오려면 클릭"
},
"key_export_viewing_keys_zonly": {
"es": "Las claves de visualización solo están disponibles para direcciones blindadas (z)",
"de": "Anzeigeschlüssel sind nur für geschirmte (z) Adressen verfügbar",
"fr": "Les clés de visualisation ne sont disponibles que pour les adresses blindées (z)",
"pt": "As chaves de visualização estão disponíveis apenas para endereços blindados (z)",
"ru": "Ключи просмотра доступны только для экранированных (z) адресов",
"zh": "查看密钥仅适用于屏蔽 (z) 地址",
"ja": "ビューイングキーはシールド (z) アドレスでのみ利用可能です",
"ko": "보기 키는 차폐 (z) 주소에만 사용할 수 있습니다"
},
"backup_source": {
"es": "Origen: %s", "de": "Quelle: %s", "fr": "Source : %s",
"pt": "Origem: %s", "ru": "Источник: %s", "zh": "来源:%s",
"ja": "ソース:%s", "ko": "소스: %s"
},
"export_keys_progress": {
"es": "Exportando %d/%d...", "de": "Exportiere %d/%d...", "fr": "Exportation %d/%d...",
"pt": "Exportando %d/%d...", "ru": "Экспорт %d/%d...", "zh": "正在导出 %d/%d...",
"ja": "エクスポート中 %d/%d...", "ko": "내보내는 중 %d/%d..."
},
"import_key_progress": {
"es": "Importando %d/%d...", "de": "Importiere %d/%d...", "fr": "Importation %d/%d...",
"pt": "Importando %d/%d...", "ru": "Импорт %d/%d...", "zh": "正在导入 %d/%d...",
"ja": "インポート中 %d/%d...", "ko": "가져오는 중 %d/%d..."
},
"click_to_copy": {
"es": "Clic para copiar", "de": "Klicken zum Kopieren", "fr": "Cliquez pour copier",
"pt": "Clique para copiar", "ru": "Нажмите для копирования", "zh": "点击复制",
"ja": "クリックしてコピー", "ko": "복사하려면 클릭"
},
"block_hash_copied": {
"es": "Hash de bloque copiado", "de": "Block-Hash kopiert", "fr": "Hash de bloc copié",
"pt": "Hash do bloco copiado", "ru": "Хеш блока скопирован", "zh": "区块哈希已复制",
"ja": "ブロックハッシュがコピーされました", "ko": "블록 해시 복사됨"
},
"block_click_copy": {
"es": "Clic para copiar", "de": "Klicken zum Kopieren", "fr": "Cliquez pour copier",
"pt": "Clique para copiar", "ru": "Нажмите для копирования", "zh": "点击复制",
"ja": "クリックしてコピー", "ko": "복사하려면 클릭"
},
}
def main():
eng = load_english_keys()
langs = ["es", "de", "fr", "pt", "ru", "zh", "ja", "ko"]
for lang in langs:
path = LANG_DIR / f"{lang}.json"
with open(path, "r", encoding="utf-8") as f:
data = json.load(f)
missing = set(eng.keys()) - set(data.keys())
added = 0
skipped = []
for key in sorted(missing):
if key in TRANSLATIONS and lang in TRANSLATIONS[key]:
data[key] = TRANSLATIONS[key][lang]
added += 1
else:
skipped.append(key)
# Sort keys and write back
sorted_data = dict(sorted(data.items()))
with open(path, "w", encoding="utf-8") as f:
json.dump(sorted_data, f, ensure_ascii=False, indent=4)
f.write("\n")
print(f"{lang}.json: added {added} keys (total: {len(sorted_data)})")
if skipped:
print(f" SKIPPED (no translation): {skipped}")
if __name__ == "__main__":
main()