i18n(wizard): translate the first-run wizard (was all hardcoded English)
The first-run wizard predated the i18n system — every label, button, and help line was hardcoded English. Route them all through TR(): - 62 literals in app_wizard.cpp replaced with TR(). Where a wizard string is a parallel of existing content, it reuses the existing key (the whole bootstrap_* family, plus theme / language / balance_layout / low_spec_mode / ui_opacity / console_scanline / download / retry / cancel) so it inherits their translations and stays consistent with Settings. Button labels drop their ##id suffix and use TR(key) directly (the app's established TactileButton(TR(...)) pattern; the wizard's phase buttons never share a frame, so no id collision). - 55 new wiz_* English keys in i18n.cpp for the wizard-specific strings, and their translations back-filled across all 8 languages (es/de/fr/pt/ru/zh/ja/ko); format specifiers (%s, %zu) and newlines preserved. CJK subset rebuilt. Verified on the sweep: English renders with correct labels in place (all keys resolve), and a German run shows the reused + new keys translated end-to-end (Darstellung / Acryl-Glaseffekte / Verschlüsseln & Weiter …). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -464,6 +464,63 @@ void I18n::loadBuiltinEnglish()
|
||||
strings_["tt_reduce_motion"] = "Disable animated transitions and balance lerp for accessibility";
|
||||
strings_["ago"] = "ago";
|
||||
strings_["wizard_daemon_start_failed"] = "Failed to start daemon \xe2\x80\x94 it will be retried automatically";
|
||||
// First-run wizard (app_wizard.cpp). Bootstrap/appearance labels reuse existing keys; these are
|
||||
// the wizard-specific strings.
|
||||
strings_["wiz_welcome_title"] = "Welcome to ObsidianDragon!";
|
||||
strings_["wiz_welcome_sub"] = "A few quick choices and your full node is ready.";
|
||||
strings_["wiz_step1"] = "Step 1";
|
||||
strings_["wiz_step2"] = "Step 2";
|
||||
strings_["wiz_step3"] = "Step 3";
|
||||
strings_["wiz_appearance"] = "Appearance";
|
||||
strings_["wiz_theme_builtin"] = "Built-in";
|
||||
strings_["wiz_theme_custom"] = "Custom";
|
||||
strings_["wiz_theme_invalid"] = " (invalid)";
|
||||
strings_["wiz_lowspec_desc"] = "Disable all heavy visual effects";
|
||||
strings_["wiz_acrylic"] = "Acrylic glass effects";
|
||||
strings_["wiz_acrylic_desc"] = "Translucent blur on panels (Off disables)";
|
||||
strings_["wiz_level"] = "Level:";
|
||||
strings_["wiz_off"] = "Off";
|
||||
strings_["wiz_theme_effects"] = "Theme visual effects";
|
||||
strings_["wiz_theme_effects_desc"] = "Animated borders, color wash";
|
||||
strings_["wiz_ui_opacity_desc"] = "Card & sidebar transparency (1.0 = solid)";
|
||||
strings_["wiz_scanline_desc"] = "CRT scanline effect in console";
|
||||
strings_["wiz_bootstrap"] = "Bootstrap";
|
||||
strings_["wiz_bootstrap_desc"] = "Download a blockchain bootstrap to dramatically speed up initial sync.\n\nYour existing wallet.dat will NOT be modified or replaced.";
|
||||
strings_["wiz_skip"] = "Skip";
|
||||
strings_["wiz_bootstrap_failed"] = "Bootstrap failed";
|
||||
strings_["wiz_download_failed"] = "Download Failed";
|
||||
strings_["wiz_ext_daemon_running"] = "External daemon running";
|
||||
strings_["wiz_ext_daemon_warning"] = "It must be stopped before downloading a bootstrap, otherwise chain data could be corrupted.";
|
||||
strings_["wiz_stop_daemon"] = "Stop Daemon";
|
||||
strings_["wiz_daemon_sending_stop"] = "Sending stop command...";
|
||||
strings_["wiz_daemon_waiting_stop"] = "Waiting for daemon to shut down...";
|
||||
strings_["wiz_daemon_stopped_ok"] = "Daemon stopped.";
|
||||
strings_["wiz_daemon_stop_failed"] = "Daemon did not stop \xe2\x80\x94 try manually.";
|
||||
strings_["wiz_encryption"] = "Encryption";
|
||||
strings_["wiz_pin_title"] = "Quick-Unlock PIN";
|
||||
strings_["wiz_already_encrypted"] = "Wallet is already encrypted";
|
||||
strings_["wiz_already_encrypted_desc"] = "Your wallet is protected with a passphrase. No further action is needed.";
|
||||
strings_["wiz_continue"] = "Continue";
|
||||
strings_["wiz_encrypt_desc"] = "Encrypt your wallet to protect private keys with a passphrase.";
|
||||
strings_["wiz_encrypt_warning"] = "If you lose your passphrase, you lose access to your funds.";
|
||||
strings_["wiz_passphrase"] = "Passphrase:";
|
||||
strings_["wiz_confirm"] = "Confirm:";
|
||||
strings_["wiz_strength_weak"] = "Weak";
|
||||
strings_["wiz_strength_fair"] = "Fair";
|
||||
strings_["wiz_strength_good"] = "Good";
|
||||
strings_["wiz_strength_strong"] = "Strong";
|
||||
strings_["wiz_strength"] = "Strength: %s";
|
||||
strings_["wiz_pass_too_short"] = "Passphrase must be at least 8 characters (%zu/8)";
|
||||
strings_["wiz_pass_mismatch"] = "Passphrases do not match";
|
||||
strings_["wiz_pass_spaces"] = "Passphrase has leading/trailing spaces \xe2\x80\x94 remove them";
|
||||
strings_["wiz_encrypt_continue"] = "Encrypt & Continue";
|
||||
strings_["wiz_encrypt_bg"] = "Encryption will complete in the background";
|
||||
strings_["wiz_skip_confirm"] = "Continue WITHOUT encryption? Keys will be stored unencrypted \xe2\x80\x94 click Skip again to confirm.";
|
||||
strings_["wiz_pin_optional"] = "Quick-Unlock PIN (optional)";
|
||||
strings_["wiz_pin_label"] = "PIN (4-8 digits):";
|
||||
strings_["wiz_pin_confirm"] = "Confirm PIN:";
|
||||
strings_["wiz_pin_invalid"] = "PIN must be 4-8 digits";
|
||||
strings_["wiz_pin_mismatch"] = "PINs do not match";
|
||||
strings_["settings_data_dir"] = "Data Dir:";
|
||||
strings_["settings_wallet_size_label"] = "Wallet Size:";
|
||||
strings_["settings_debug_changed"] = "Debug categories changed \xe2\x80\x94 restart daemon to apply";
|
||||
|
||||
Reference in New Issue
Block a user