feat(ui): implement UI/UX audit — i18n, HiDPI, theme, destructive-action & overflow fixes

Implements all 26 confirmed UI/UX audit findings plus the 4 dashboard/timeline
tile labels. Verified across full-node + Lite + Windows builds (ctest green) and
an adversarial diff review (one market-tab delete regression caught + fixed).

i18n coverage:
- Balance hero/quick-actions/toasts + dashboard & timeline tiles (Total Balance,
  Shielded, Transparent, Quick Send, Quick Receive, Click to open, Market)
- Send: Review Send / Cancel / Paste / view-only tooltip / memo byte counter
- Settings: Lite lifecycle errors, plaintext-RPC security warning, 8 toasts
- Mining pool-payout tooltip
- Resolve daemon_update_title double-assignment collision (new daemon_update_prompt_title)
- 23 new keys translated into all 8 locales; CJK subset font rebuilt

HiDPI: DPI-scale the Send amount bar, mining thread-tile clamp bounds, receive
loading skeleton, and sidebar notification-badge insets.

Light theme: theme-aware material::SurfaceOverlay() for balance bar tracks and
row-hover highlights; contacts active-pill foreground uses OnPrimary().

Destructive actions: arm/confirm for portfolio-group delete, saved pool/worker
remove, and avatar-image delete.

Interaction/overflow: route balance star/eye buttons and the console fold-toggle
through popup-safe guards; clip peer addr/subver; truncate the balance custom
label; measure Settings tool-button widths; mining stepper disabled-state
feedback; +/- stepper buttons restyled to match the thread tiles.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-18 17:54:15 -05:00
parent 0de44569b7
commit e24ca015d1
24 changed files with 599 additions and 148 deletions

View File

@@ -92,7 +92,10 @@
"balance": "잔액",
"balance_history_collecting": "잔액 내역 — 데이터 수집 중...",
"balance_layout": "잔액 레이아웃",
"balance_layout_switched": "레이아웃: %s",
"balance_mining_rate": "채굴 중 %s",
"balance_shielded_fmt": "차폐: %.8f",
"balance_syncing_pct": "동기화 중 %.1f%%",
"balance_transparent_fmt": "투명: %.8f",
"ban": "차단",
"banned_peers": "차단된 피어",
@@ -132,6 +135,7 @@
"bootstrap_verifying": "체크섬 확인 중...",
"bootstrap_wallet_protected": "(wallet.dat 보호됨)",
"bootstrap_warning": "기존 블록 데이터(blocks, chainstate, notarizations)가 삭제되고 교체됩니다. wallet.dat는 수정되거나 삭제되지 않습니다.",
"byte_count_fmt": "%zu / %zu 바이트",
"cancel": "취소",
"change_pass_confirm": "새 암호 확인:",
"change_pass_current": "현재 암호:",
@@ -441,6 +445,7 @@
"daemon_update_latest": "최신:",
"daemon_update_loading": "릴리스 불러오는 중…",
"daemon_update_now": "지금 업데이트",
"daemon_update_prompt_title": "노드 데몬을 업데이트하시겠습니까?",
"daemon_update_reinstall": "다시 설치",
"daemon_update_restart_note": "새 버전을 실행하려면 데몬을 재시작하세요.",
"daemon_update_restart_now": "지금 데몬 재시작",
@@ -657,6 +662,7 @@
"light": "라이트",
"lite_account_label": "계정",
"lite_action": "작업",
"lite_backend_unavailable": "라이트 지갑 백엔드를 사용할 수 없습니다",
"lite_backup_keys": "백업 및 키",
"lite_birthday_backup": "생성 블록: %llu (이 값도 백업하세요)",
"lite_birthday_hint": "스캔을 시작할 블록 높이입니다. 모르면 0으로 두세요(전체 스캔이 느려짐).",
@@ -664,9 +670,12 @@
"lite_console_backend_commands": "백엔드 명령:",
"lite_console_help_passthrough": "그 외 입력은 라이트 지갑 콘솔 명령으로 실행됩니다.",
"lite_copy": "복사",
"lite_could_not_start": "작업을 시작할 수 없습니다",
"lite_could_not_write": "쓸 수 없습니다: ",
"lite_encrypt_wallet": "지갑 암호화",
"lite_encryption_removed": "암호화가 제거되었습니다",
"lite_enter_all_seed_words": "복구하려면 24개의 시드 단어를 모두 입력하세요 (현재 %d개)",
"lite_enter_wallet_path": "지갑 경로를 입력하세요",
"lite_hide_wipe": "숨기고 삭제",
"lite_import": "가져오기",
"lite_import_key_label": "키 가져오기",
@@ -919,6 +928,7 @@
"mining_pool": "풀",
"mining_pool_fee": "수수료",
"mining_pool_hashrate": "풀 해시레이트",
"mining_pool_needs_payout_tooltip": "먼저 지급 주소를 입력하세요 (Z 주소를 생성하세요)",
"mining_pool_url": "풀 URL",
"mining_pools_header": "풀",
"mining_recent_blocks": "최근 블록",
@@ -1120,6 +1130,8 @@
"qr_failed": "QR 코드 생성 실패",
"qr_title": "QR 코드",
"qr_unavailable": "QR 사용 불가",
"quick_receive": "빠른 받기",
"quick_send": "빠른 보내기",
"ram_daemon_gb": "데몬: %.1f GB (%s)",
"ram_daemon_mb": "데몬: %.0f MB (%s)",
"ram_system_gb": "시스템: %.1f / %.0f GB",
@@ -1169,6 +1181,7 @@
"rpc_connection": "RPC 연결...",
"rpc_host": "RPC 호스트",
"rpc_pass": "비밀번호",
"rpc_plaintext_remote_warning": "원격 RPC가 암호화되지 않은 HTTP를 사용하고 있습니다. 데몬이 TLS를 지원하면 DRAGONX.conf에 rpctls=1을 추가하세요.",
"rpc_port": "포트",
"rpc_user": "사용자명",
"save": "저장",
@@ -1278,6 +1291,7 @@
"send_tooltip_not_connected": "데몬에 연결되지 않음",
"send_tooltip_select_source": "먼저 보낼 주소를 선택하세요",
"send_tooltip_syncing": "블록체인 동기화를 기다려 주세요",
"send_tooltip_view_only": "조회 전용 주소 — 지출 키가 없어 보낼 수 없습니다",
"send_total": "합계",
"send_transaction": "거래 전송",
"send_tx_failed": "거래 실패",
@@ -1341,6 +1355,7 @@
"settings_locked": "잠김",
"settings_merge_to_address": "주소로 병합...",
"settings_noise_opacity": "노이즈 불투명도:",
"settings_not_connected": "데몬에 연결되지 않음",
"settings_not_encrypted": "암호화되지 않음",
"settings_not_found": "찾을 수 없음",
"settings_open_app_dir": "앱 폴더 열기",
@@ -1351,18 +1366,23 @@
"settings_privacy": "개인 정보",
"settings_quick_unlock_pin": "빠른 잠금 해제 PIN",
"settings_reduce_transparency": "투명도 줄이기",
"settings_reloaded": "디스크에서 설정을 다시 불러왔습니다",
"settings_remove_encryption": "암호화 제거",
"settings_remove_pin": "PIN 제거",
"settings_request_payment": "결제 요청...",
"settings_rescan_desc": "누락된 거래를 찾기 위해 블록체인 재스캔",
"settings_restart_daemon": "데몬 재시작",
"settings_rpc_connection": "RPC 연결",
"settings_rpc_error_prefix": "RPC 오류: ",
"settings_rpc_note": "참고: 연결 설정은 보통 DRAGONX.conf에서 자동 감지됩니다",
"settings_rpc_ok": "RPC 연결 정상",
"settings_save_shielded_desc": "z-addr 거래를 로컬 파일에 저장하여 조회",
"settings_save_shielded_local": "차폐 거래 기록을 로컬에 저장",
"settings_saved": "설정이 저장되었습니다",
"settings_set_pin": "PIN 설정",
"settings_shield_mining": "채굴 차폐...",
"settings_solid_colors_desc": "블러 효과 대신 단색 사용 (접근성)",
"settings_theme_refreshed": "테마 목록을 새로고침했습니다",
"settings_tor_desc": "향상된 개인 정보 보호를 위해 모든 연결을 Tor를 통해 라우팅",
"settings_unlocked": "잠금 해제",
"settings_use_tor_network": "네트워크 연결에 Tor 사용",
@@ -1374,6 +1394,8 @@
"settings_wallet_maintenance": "지갑 유지보수",
"settings_wallet_not_found": "지갑 파일을 찾을 수 없음",
"settings_wallet_size_label": "지갑 크기:",
"settings_ztx_cleared": "Z-거래 내역이 삭제되었습니다",
"settings_ztx_not_found": "내역 파일을 찾을 수 없습니다",
"setup_wizard": "설정 마법사",
"share": "공유",
"shield_check_status": "상태 확인",
@@ -1456,6 +1478,7 @@
"theme": "테마",
"theme_effects": "테마 효과",
"theme_language": "테마 및 언어",
"tile_click_to_open": "클릭하여 열기",
"time_days_ago": "%d일 전",
"time_hours_ago": "%d시간 전",
"time_minutes_ago": "%d분 전",
@@ -1471,6 +1494,7 @@
"tools": "도구",
"tools_actions": "도구 및 작업...",
"total": "합계",
"total_balance_label": "총 잔액",
"transaction_id": "거래 ID",
"transaction_sent": "거래 전송 성공",
"transaction_sent_msg": "거래가 전송되었습니다!",