feat(settings): redesign the Import Key dialog
Rework the full-node Import Key dialog into a safer, Material-consistent, more capable flow: - Security: the key is masked by default (Password) with a reveal (eye) toggle, a DialogWarningHeader "only import a key you own" note, and the buffer is wiped with sodium_memzero on close and on successful import. - Progress: import triggers a blocking full-chain rescan; the dialog now shows "Importing & rescanning — this can take several minutes" with LoadingDots and disables Import while it runs (no double-submit). Offline shows a "connect a running node" note and disables Import up front. - Viewing keys: the classifier gains isViewingKey / isRecognizedImportKey; importPrivateKey auto-detects a shielded viewing key (zxviews…) and routes to z_importviewingkey (watch-only) vs z_importkey / importprivkey. The live type indicator shows Transparent / Shielded spending / Shielded viewing (watch-only). - Result: on success the imported address is captured from the RPC result and shown via AddressCopyField. - Material restyle (OverlayDialogSpec/BlurFloat + TactileButton + Esc) and full i18n (12 new keys x 8 languages; CJK subset rebuilt). Verified: rendered on dark + light skins; a seeded zxviews… key shows the masked field + "Shielded viewing key (watch-only)" indicator. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Binary file not shown.
@@ -416,18 +416,30 @@
|
||||
"history": "Verlauf",
|
||||
"immature_type": "Unreif",
|
||||
"import": "Importieren",
|
||||
"import_key_address": "Adresse:",
|
||||
"import_key_btn": "Schlüssel importieren",
|
||||
"import_key_done": "Importiert. Wallet wird neu gescannt.",
|
||||
"import_key_field": "Schlüssel",
|
||||
"import_key_formats": "Unterstützte Schlüsselformate:",
|
||||
"import_key_full_rescan": "(0 = vollständiger Rescan)",
|
||||
"import_key_import": "Importieren",
|
||||
"import_key_label": "Privater Schlüssel:",
|
||||
"import_key_need_node": "Verbinden Sie einen laufenden Node, um einen Schlüssel zu importieren.",
|
||||
"import_key_no_valid": "Keine gültigen Schlüssel in der Eingabe gefunden",
|
||||
"import_key_progress": "Importiere %d/%d...",
|
||||
"import_key_rescan": "Blockchain nach Import neu scannen",
|
||||
"import_key_rescanning": "Import & erneuter Scan — das kann einige Minuten dauern",
|
||||
"import_key_reveal_tip": "Schlüssel ein-/ausblenden",
|
||||
"import_key_start_height": "Starthöhe:",
|
||||
"import_key_success": "Schlüssel erfolgreich importiert",
|
||||
"import_key_t_format": "T-Adresse WIF private Schlüssel",
|
||||
"import_key_title": "Privaten Schlüssel importieren",
|
||||
"import_key_tooltip": "Geben Sie einen oder mehrere private Schlüssel ein, einen pro Zeile.\nUnterstützt sowohl z-Adresse als auch t-Adresse Schlüssel.\nZeilen die mit # beginnen werden als Kommentare behandelt.",
|
||||
"import_key_type_tkey": "Transparenter privater Schlüssel",
|
||||
"import_key_type_unknown": "Unbekanntes Schlüsselformat",
|
||||
"import_key_type_zspend": "Abgeschirmter Ausgabeschlüssel",
|
||||
"import_key_type_zview": "Abgeschirmter Anzeigeschlüssel (nur Lesen)",
|
||||
"import_key_warn": "Importieren Sie nur einen Schlüssel, der Ihnen gehört — er gewährt Zugriff auf dessen Guthaben.",
|
||||
"import_key_warning": "Warnung: Teilen Sie niemals Ihre privaten Schlüssel! Das Importieren von Schlüsseln aus nicht vertrauenswürdigen Quellen kann Ihr Wallet gefährden.",
|
||||
"import_key_z_format": "Z-Adresse Ausgabeschlüssel (secret-extended-key-...)",
|
||||
"import_private_key": "Privaten Schlüssel importieren...",
|
||||
|
||||
@@ -416,18 +416,30 @@
|
||||
"history": "Historial",
|
||||
"immature_type": "Inmaduro",
|
||||
"import": "Importar",
|
||||
"import_key_address": "Dirección:",
|
||||
"import_key_btn": "Importar Clave(s)",
|
||||
"import_key_done": "Importada. El monedero está reescaneando.",
|
||||
"import_key_field": "Clave",
|
||||
"import_key_formats": "Formatos de clave soportados:",
|
||||
"import_key_full_rescan": "(0 = re-escaneo completo)",
|
||||
"import_key_import": "Importar",
|
||||
"import_key_label": "Clave(s) Privada(s):",
|
||||
"import_key_need_node": "Conecta un nodo en ejecución para importar una clave.",
|
||||
"import_key_no_valid": "No se encontraron claves válidas en la entrada",
|
||||
"import_key_progress": "Importando %d/%d...",
|
||||
"import_key_rescan": "Re-escanear blockchain después de importar",
|
||||
"import_key_rescanning": "Importando y reescaneando: puede tardar varios minutos",
|
||||
"import_key_reveal_tip": "Mostrar/ocultar la clave",
|
||||
"import_key_start_height": "Altura inicial:",
|
||||
"import_key_success": "Claves importadas exitosamente",
|
||||
"import_key_t_format": "Claves privadas WIF de direcciones T",
|
||||
"import_key_title": "Importar Clave Privada",
|
||||
"import_key_tooltip": "Ingresa una o más claves privadas, una por línea.\nSoporta claves de direcciones z y t.\nLas líneas que empiezan con # se tratan como comentarios.",
|
||||
"import_key_type_tkey": "Clave privada transparente",
|
||||
"import_key_type_unknown": "Formato de clave no reconocido",
|
||||
"import_key_type_zspend": "Clave de gasto blindada",
|
||||
"import_key_type_zview": "Clave de visualización blindada (solo lectura)",
|
||||
"import_key_warn": "Importa solo una clave que te pertenezca: da acceso a sus fondos.",
|
||||
"import_key_warning": "Advertencia: ¡Nunca compartas tus claves privadas! Importar claves de fuentes no confiables puede comprometer tu cartera.",
|
||||
"import_key_z_format": "Claves de gasto de direcciones Z (secret-extended-key-...)",
|
||||
"import_private_key": "Importar Clave Privada...",
|
||||
|
||||
@@ -416,18 +416,30 @@
|
||||
"history": "Historique",
|
||||
"immature_type": "Immature",
|
||||
"import": "Importer",
|
||||
"import_key_address": "Adresse :",
|
||||
"import_key_btn": "Importer clé(s)",
|
||||
"import_key_done": "Importée. Le portefeuille réanalyse.",
|
||||
"import_key_field": "Clé",
|
||||
"import_key_formats": "Formats de clés pris en charge :",
|
||||
"import_key_full_rescan": "(0 = rescan complet)",
|
||||
"import_key_import": "Importer",
|
||||
"import_key_label": "Clé(s) privée(s) :",
|
||||
"import_key_need_node": "Connectez un nœud en cours d'exécution pour importer une clé.",
|
||||
"import_key_no_valid": "Aucune clé valide trouvée dans l'entrée",
|
||||
"import_key_progress": "Importation %d/%d...",
|
||||
"import_key_rescan": "Re-scanner la blockchain après l'importation",
|
||||
"import_key_rescanning": "Import et réanalyse — cela peut prendre plusieurs minutes",
|
||||
"import_key_reveal_tip": "Afficher/masquer la clé",
|
||||
"import_key_start_height": "Hauteur de départ :",
|
||||
"import_key_success": "Clés importées avec succès",
|
||||
"import_key_t_format": "Clés privées WIF d'adresses T",
|
||||
"import_key_title": "Importer une clé privée",
|
||||
"import_key_tooltip": "Entrez une ou plusieurs clés privées, une par ligne.\nPrend en charge les clés z-adresse et t-adresse.\nLes lignes commençant par # sont traitées comme des commentaires.",
|
||||
"import_key_type_tkey": "Clé privée transparente",
|
||||
"import_key_type_unknown": "Format de clé non reconnu",
|
||||
"import_key_type_zspend": "Clé de dépense blindée",
|
||||
"import_key_type_zview": "Clé de visualisation blindée (lecture seule)",
|
||||
"import_key_warn": "N'importez qu'une clé qui vous appartient — elle donne accès à ses fonds.",
|
||||
"import_key_warning": "Attention : Ne partagez jamais vos clés privées ! L'importation de clés provenant de sources non fiables peut compromettre votre portefeuille.",
|
||||
"import_key_z_format": "Clés de dépenses z-adresse (secret-extended-key-...)",
|
||||
"import_private_key": "Importer une clé privée...",
|
||||
|
||||
@@ -416,18 +416,30 @@
|
||||
"history": "履歴",
|
||||
"immature_type": "未成熟",
|
||||
"import": "インポート",
|
||||
"import_key_address": "アドレス:",
|
||||
"import_key_btn": "鍵をインポート",
|
||||
"import_key_done": "インポートしました。ウォレットを再スキャンしています。",
|
||||
"import_key_field": "鍵",
|
||||
"import_key_formats": "サポートされる鍵形式:",
|
||||
"import_key_full_rescan": "(0 = 完全再スキャン)",
|
||||
"import_key_import": "インポート",
|
||||
"import_key_label": "秘密鍵:",
|
||||
"import_key_need_node": "鍵をインポートするには稼働中のノードに接続してください。",
|
||||
"import_key_no_valid": "入力に有効な鍵が見つかりません",
|
||||
"import_key_progress": "インポート中 %d/%d...",
|
||||
"import_key_rescan": "インポート後にブロックチェーンを再スキャン",
|
||||
"import_key_rescanning": "インポートと再スキャン中 — 数分かかることがあります",
|
||||
"import_key_reveal_tip": "鍵の表示/非表示",
|
||||
"import_key_start_height": "開始高:",
|
||||
"import_key_success": "鍵のインポートに成功しました",
|
||||
"import_key_t_format": "TアドレスWIF秘密鍵",
|
||||
"import_key_title": "秘密鍵をインポート",
|
||||
"import_key_tooltip": "1行に1つずつ秘密鍵を入力してください。\nzアドレスとtアドレスの鍵の両方に対応しています。\n#で始まる行はコメントとして扱われます。",
|
||||
"import_key_type_tkey": "透明な秘密鍵",
|
||||
"import_key_type_unknown": "認識できない鍵の形式",
|
||||
"import_key_type_zspend": "シールド支払鍵",
|
||||
"import_key_type_zview": "シールド閲覧鍵(監視のみ)",
|
||||
"import_key_warn": "自分が所有する鍵のみをインポートしてください — その資金へのアクセスを許可します。",
|
||||
"import_key_warning": "警告:秘密鍵を決して共有しないでください!信頼できないソースからの鍵のインポートはウォレットを危険にさらす可能性があります。",
|
||||
"import_key_z_format": "Zアドレス支出鍵 (secret-extended-key-...)",
|
||||
"import_private_key": "秘密鍵をインポート...",
|
||||
|
||||
@@ -416,18 +416,30 @@
|
||||
"history": "내역",
|
||||
"immature_type": "미성숙",
|
||||
"import": "가져오기",
|
||||
"import_key_address": "주소:",
|
||||
"import_key_btn": "키 가져오기",
|
||||
"import_key_done": "가져왔습니다. 지갑을 재검색 중입니다.",
|
||||
"import_key_field": "키",
|
||||
"import_key_formats": "지원되는 키 형식:",
|
||||
"import_key_full_rescan": "(0 = 전체 재스캔)",
|
||||
"import_key_import": "가져오기",
|
||||
"import_key_label": "개인 키:",
|
||||
"import_key_need_node": "키를 가져오려면 실행 중인 노드에 연결하세요.",
|
||||
"import_key_no_valid": "입력에서 유효한 키를 찾을 수 없습니다",
|
||||
"import_key_progress": "가져오는 중 %d/%d...",
|
||||
"import_key_rescan": "가져오기 후 블록체인 재스캔",
|
||||
"import_key_rescanning": "가져오기 및 재검색 중 — 몇 분 걸릴 수 있습니다",
|
||||
"import_key_reveal_tip": "키 표시/숨기기",
|
||||
"import_key_start_height": "시작 높이:",
|
||||
"import_key_success": "키 가져오기 성공",
|
||||
"import_key_t_format": "T 주소 WIF 개인 키",
|
||||
"import_key_title": "개인 키 가져오기",
|
||||
"import_key_tooltip": "한 줄에 하나의 개인 키를 입력하세요.\nz 주소와 t 주소 키 모두 지원됩니다.\n#으로 시작하는 줄은 주석으로 처리됩니다.",
|
||||
"import_key_type_tkey": "투명 개인 키",
|
||||
"import_key_type_unknown": "알 수 없는 키 형식",
|
||||
"import_key_type_zspend": "차폐 지출 키",
|
||||
"import_key_type_zview": "차폐 조회 키 (읽기 전용)",
|
||||
"import_key_warn": "본인이 소유한 키만 가져오세요 — 해당 자금에 접근할 수 있습니다.",
|
||||
"import_key_warning": "경고: 개인 키를 절대 공유하지 마세요! 신뢰할 수 없는 소스의 키를 가져오면 지갑이 위험해질 수 있습니다.",
|
||||
"import_key_z_format": "Z 주소 지출 키 (secret-extended-key-...)",
|
||||
"import_private_key": "개인 키 가져오기...",
|
||||
|
||||
@@ -416,18 +416,30 @@
|
||||
"history": "Histórico",
|
||||
"immature_type": "Imaturo",
|
||||
"import": "Importar",
|
||||
"import_key_address": "Endereço:",
|
||||
"import_key_btn": "Importar Chave(s)",
|
||||
"import_key_done": "Importada. A carteira está reescaneando.",
|
||||
"import_key_field": "Chave",
|
||||
"import_key_formats": "Formatos de chave suportados:",
|
||||
"import_key_full_rescan": "(0 = rescan completo)",
|
||||
"import_key_import": "Importar",
|
||||
"import_key_label": "Chave(s) Privada(s):",
|
||||
"import_key_need_node": "Conecte um nó em execução para importar uma chave.",
|
||||
"import_key_no_valid": "Nenhuma chave válida encontrada na entrada",
|
||||
"import_key_progress": "Importando %d/%d...",
|
||||
"import_key_rescan": "Reescanear blockchain após importação",
|
||||
"import_key_rescanning": "Importando e reescaneando — pode levar vários minutos",
|
||||
"import_key_reveal_tip": "Mostrar/ocultar a chave",
|
||||
"import_key_start_height": "Altura inicial:",
|
||||
"import_key_success": "Chaves importadas com sucesso",
|
||||
"import_key_t_format": "Chaves privadas WIF de endereços T",
|
||||
"import_key_title": "Importar Chave Privada",
|
||||
"import_key_tooltip": "Digite uma ou mais chaves privadas, uma por linha.\nSuporta chaves de z-endereço e t-endereço.\nLinhas começando com # são tratadas como comentários.",
|
||||
"import_key_type_tkey": "Chave privada transparente",
|
||||
"import_key_type_unknown": "Formato de chave não reconhecido",
|
||||
"import_key_type_zspend": "Chave de gasto blindada",
|
||||
"import_key_type_zview": "Chave de visualização blindada (somente leitura)",
|
||||
"import_key_warn": "Importe apenas uma chave que você possui — ela concede acesso aos seus fundos.",
|
||||
"import_key_warning": "Aviso: Nunca compartilhe suas chaves privadas! Importar chaves de fontes não confiáveis pode comprometer sua carteira.",
|
||||
"import_key_z_format": "Chaves de gasto de z-endereço (secret-extended-key-...)",
|
||||
"import_private_key": "Importar Chave Privada...",
|
||||
|
||||
@@ -416,18 +416,30 @@
|
||||
"history": "История",
|
||||
"immature_type": "Незрелая",
|
||||
"import": "Импорт",
|
||||
"import_key_address": "Адрес:",
|
||||
"import_key_btn": "Импорт ключей",
|
||||
"import_key_done": "Импортировано. Кошелёк выполняет повторное сканирование.",
|
||||
"import_key_field": "Ключ",
|
||||
"import_key_formats": "Поддерживаемые форматы ключей:",
|
||||
"import_key_full_rescan": "(0 = полное сканирование)",
|
||||
"import_key_import": "Импорт",
|
||||
"import_key_label": "Приватный ключ(и):",
|
||||
"import_key_need_node": "Подключите запущенный узел, чтобы импортировать ключ.",
|
||||
"import_key_no_valid": "В введённых данных не найдено действительных ключей",
|
||||
"import_key_progress": "Импорт %d/%d...",
|
||||
"import_key_rescan": "Пересканировать блокчейн после импорта",
|
||||
"import_key_rescanning": "Импорт и повторное сканирование — это может занять несколько минут",
|
||||
"import_key_reveal_tip": "Показать/скрыть ключ",
|
||||
"import_key_start_height": "Начальная высота:",
|
||||
"import_key_success": "Ключи успешно импортированы",
|
||||
"import_key_t_format": "Приватные ключи WIF для T-адресов",
|
||||
"import_key_title": "Импорт приватного ключа",
|
||||
"import_key_tooltip": "Введите один или несколько приватных ключей, по одному на строку.\nПоддерживаются ключи z-адресов и t-адресов.\nСтроки, начинающиеся с #, считаются комментариями.",
|
||||
"import_key_type_tkey": "Прозрачный приватный ключ",
|
||||
"import_key_type_unknown": "Нераспознанный формат ключа",
|
||||
"import_key_type_zspend": "Экранированный ключ траты",
|
||||
"import_key_type_zview": "Экранированный ключ просмотра (только чтение)",
|
||||
"import_key_warn": "Импортируйте только свой ключ — он даёт доступ к его средствам.",
|
||||
"import_key_warning": "Предупреждение: Никогда не делитесь своими приватными ключами! Импорт ключей из ненадёжных источников может скомпрометировать ваш кошелёк.",
|
||||
"import_key_z_format": "Ключи расходования z-адресов (secret-extended-key-...)",
|
||||
"import_private_key": "Импорт приватного ключа...",
|
||||
|
||||
@@ -416,18 +416,30 @@
|
||||
"history": "历史",
|
||||
"immature_type": "未成熟",
|
||||
"import": "导入",
|
||||
"import_key_address": "地址:",
|
||||
"import_key_btn": "导入密钥",
|
||||
"import_key_done": "已导入。钱包正在重新扫描。",
|
||||
"import_key_field": "密钥",
|
||||
"import_key_formats": "支持的密钥格式:",
|
||||
"import_key_full_rescan": "(0 = 完整重扫)",
|
||||
"import_key_import": "导入",
|
||||
"import_key_label": "私钥:",
|
||||
"import_key_need_node": "请连接一个运行中的节点以导入密钥。",
|
||||
"import_key_no_valid": "输入中未找到有效密钥",
|
||||
"import_key_progress": "正在导入 %d/%d...",
|
||||
"import_key_rescan": "导入后重新扫描区块链",
|
||||
"import_key_rescanning": "正在导入并重新扫描——可能需要几分钟",
|
||||
"import_key_reveal_tip": "显示/隐藏密钥",
|
||||
"import_key_start_height": "起始高度:",
|
||||
"import_key_success": "密钥导入成功",
|
||||
"import_key_t_format": "T 地址 WIF 私钥",
|
||||
"import_key_title": "导入私钥",
|
||||
"import_key_tooltip": "输入一个或多个私钥,每行一个。\n支持 z 地址和 t 地址密钥。\n以 # 开头的行视为注释。",
|
||||
"import_key_type_tkey": "透明私钥",
|
||||
"import_key_type_unknown": "无法识别的密钥格式",
|
||||
"import_key_type_zspend": "屏蔽花费密钥",
|
||||
"import_key_type_zview": "屏蔽查看密钥(仅查看)",
|
||||
"import_key_warn": "只导入你自己拥有的密钥——它可访问该地址的资金。",
|
||||
"import_key_warning": "警告:切勿分享您的私钥!从不可信来源导入密钥可能会危及您的钱包安全。",
|
||||
"import_key_z_format": "Z 地址花费密钥 (secret-extended-key-...)",
|
||||
"import_private_key": "导入私钥...",
|
||||
|
||||
Reference in New Issue
Block a user