diff --git a/README.md b/README.md index 25900c34..8d4163e2 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,3 @@ -# jdlcdl branch: kdmukai/initial_multilanguage - -My self-directed exploration, from mid November through mid December 2022, to carry-on where kdmukai left-off this past summer, in similar style, regarding internationalization/localization of seedsigner codebase (w/ exploration focus in locale 'fr'). Note: requirements.txt has new dependencies; also, follow instructions in babel/ to build binary message catalogs. - ---------------- - # Build an offline, airgapped Bitcoin signing device for less than $50! ![Image of SeedSigners in Mini Pill Enclosures](docs/img/Mini_Pill_Main_Photo.jpg) diff --git a/settings_definition.json b/settings_definition.json deleted file mode 100644 index 1d48c29c..00000000 --- a/settings_definition.json +++ /dev/null @@ -1,515 +0,0 @@ -{ - "settings_entries": [ - { - "category": "system", - "attr_name": "locale", - "abbreviated_name": "lang", - "display_name": "Language", - "visibility": "general", - "type": "select_1", - "help_text": null, - "selection_options": [ - { - "display_name": "\u010de\u0161tina", - "value": "cs" - }, - { - "display_name": "English", - "value": "en" - }, - { - "display_name": "Fran\u00e7ais", - "value": "fr" - }, - { - "display_name": "Deutsch", - "value": "de" - }, - { - "display_name": "Portugu\u00eas", - "value": "pt" - }, - { - "display_name": "\u0440\u0443\u0441\u0441\u043a\u0438\u0439", - "value": "ru" - }, - { - "display_name": "Espa\u00f1ol", - "value": "es" - } - ], - "default_value": "en" - }, - { - "category": "system", - "attr_name": "wordlist_language", - "abbreviated_name": "wordlist_lang", - "display_name": "Mnemonic language", - "visibility": "hidden", - "type": "select_1", - "help_text": null, - "selection_options": [ - { - "display_name": "English", - "value": "en" - } - ], - "default_value": "en" - }, - { - "category": "system", - "attr_name": "persistent_settings", - "abbreviated_name": "persistent", - "display_name": "Persistent settings", - "visibility": "general", - "type": "enabled_disabled", - "help_text": "Store Settings on SD card", - "selection_options": [ - { - "display_name": "Enabled", - "value": "E" - }, - { - "display_name": "Disabled", - "value": "D" - } - ], - "default_value": "D" - }, - { - "category": "wallet", - "attr_name": "coordinators", - "abbreviated_name": "coords", - "display_name": "Coordinator software", - "visibility": "general", - "type": "multiselect", - "help_text": null, - "selection_options": [ - { - "display_name": "BlueWallet", - "value": "bw" - }, - { - "display_name": "Nunchuk", - "value": "nun" - }, - { - "display_name": "Sparrow", - "value": "spa" - }, - { - "display_name": "Specter Desktop", - "value": "spd" - }, - { - "display_name": "Keeper", - "value": "kpr" - } - ], - "default_value": [ - "bw", - "nun", - "spa", - "spd" - ] - }, - { - "category": "system", - "attr_name": "denomination", - "abbreviated_name": "denom", - "display_name": "Denomination display", - "visibility": "general", - "type": "select_1", - "help_text": null, - "selection_options": [ - { - "display_name": "BTC", - "value": "btc" - }, - { - "display_name": "sats", - "value": "sats" - }, - { - "display_name": "Threshold at 0.01", - "value": "thr" - }, - { - "display_name": "BTC | sats hybrid", - "value": "hyb" - } - ], - "default_value": "thr" - }, - { - "category": "features", - "attr_name": "network", - "abbreviated_name": null, - "display_name": "Bitcoin network", - "visibility": "advanced", - "type": "select_1", - "help_text": null, - "selection_options": [ - { - "display_name": "Mainnet", - "value": "M" - }, - { - "display_name": "Testnet", - "value": "T" - }, - { - "display_name": "Regtest", - "value": "R" - } - ], - "default_value": "M" - }, - { - "category": "features", - "attr_name": "qr_density", - "abbreviated_name": null, - "display_name": "QR code density", - "visibility": "advanced", - "type": "select_1", - "help_text": null, - "selection_options": [ - { - "display_name": "Low", - "value": "L" - }, - { - "display_name": "Medium", - "value": "M" - }, - { - "display_name": "High", - "value": "H" - } - ], - "default_value": "M" - }, - { - "category": "features", - "attr_name": "xpub_export", - "abbreviated_name": null, - "display_name": "Xpub export", - "visibility": "advanced", - "type": "enabled_disabled", - "help_text": null, - "selection_options": [ - { - "display_name": "Enabled", - "value": "E" - }, - { - "display_name": "Disabled", - "value": "D" - } - ], - "default_value": "E" - }, - { - "category": "features", - "attr_name": "sig_types", - "abbreviated_name": "sigs", - "display_name": "Sig types", - "visibility": "advanced", - "type": "multiselect", - "help_text": null, - "selection_options": [ - { - "display_name": "Single Sig", - "value": "ss" - }, - { - "display_name": "Multisig", - "value": "ms" - } - ], - "default_value": [ - "ss", - "ms" - ] - }, - { - "category": "features", - "attr_name": "script_types", - "abbreviated_name": "scripts", - "display_name": "Script types", - "visibility": "advanced", - "type": "multiselect", - "help_text": null, - "selection_options": [ - { - "display_name": "Native Segwit", - "value": "nat" - }, - { - "display_name": "Nested Segwit", - "value": "nes" - }, - { - "display_name": "Legacy", - "value": "leg" - }, - { - "display_name": "Taproot", - "value": "tr" - }, - { - "display_name": "Custom Derivation", - "value": "cus" - } - ], - "default_value": [ - "nat", - "nes", - "tr" - ] - }, - { - "category": "features", - "attr_name": "xpub_details", - "abbreviated_name": null, - "display_name": "Show xpub details", - "visibility": "advanced", - "type": "enabled_disabled", - "help_text": null, - "selection_options": [ - { - "display_name": "Enabled", - "value": "E" - }, - { - "display_name": "Disabled", - "value": "D" - } - ], - "default_value": "E" - }, - { - "category": "features", - "attr_name": "passphrase", - "abbreviated_name": null, - "display_name": "BIP-39 passphrase", - "visibility": "advanced", - "type": "select_1", - "help_text": null, - "selection_options": [ - { - "display_name": "Enabled", - "value": "E" - }, - { - "display_name": "Disabled", - "value": "D" - }, - { - "display_name": "Required", - "value": "R" - } - ], - "default_value": "E" - }, - { - "category": "features", - "attr_name": "camera_rotation", - "abbreviated_name": "camera", - "display_name": "Camera rotation", - "visibility": "advanced", - "type": "select_1", - "help_text": null, - "selection_options": [ - { - "display_name": "0\u00b0", - "value": 0 - }, - { - "display_name": "90\u00b0", - "value": 90 - }, - { - "display_name": "180\u00b0", - "value": 180 - }, - { - "display_name": "270\u00b0", - "value": 270 - } - ], - "default_value": 180 - }, - { - "category": "features", - "attr_name": "compact_seedqr", - "abbreviated_name": null, - "display_name": "Compact SeedQR", - "visibility": "advanced", - "type": "enabled_disabled", - "help_text": null, - "selection_options": [ - { - "display_name": "Enabled", - "value": "E" - }, - { - "display_name": "Disabled", - "value": "D" - } - ], - "default_value": "E" - }, - { - "category": "features", - "attr_name": "bip85_child_seeds", - "abbreviated_name": "bip85", - "display_name": "BIP-85 child seeds", - "visibility": "advanced", - "type": "enabled_disabled", - "help_text": null, - "selection_options": [ - { - "display_name": "Enabled", - "value": "E" - }, - { - "display_name": "Disabled", - "value": "D" - } - ], - "default_value": "D" - }, - { - "category": "features", - "attr_name": "electrum_seeds", - "abbreviated_name": "electrum", - "display_name": "Electrum seeds", - "visibility": "advanced", - "type": "enabled_disabled", - "help_text": "Native Segwit only", - "selection_options": [ - { - "display_name": "Enabled", - "value": "E" - }, - { - "display_name": "Disabled", - "value": "D" - } - ], - "default_value": "D" - }, - { - "category": "features", - "attr_name": "message_signing", - "abbreviated_name": null, - "display_name": "Message signing", - "visibility": "advanced", - "type": "enabled_disabled", - "help_text": null, - "selection_options": [ - { - "display_name": "Enabled", - "value": "E" - }, - { - "display_name": "Disabled", - "value": "D" - } - ], - "default_value": "D" - }, - { - "category": "features", - "attr_name": "privacy_warnings", - "abbreviated_name": "priv_warn", - "display_name": "Show privacy warnings", - "visibility": "advanced", - "type": "enabled_disabled", - "help_text": null, - "selection_options": [ - { - "display_name": "Enabled", - "value": "E" - }, - { - "display_name": "Disabled", - "value": "D" - } - ], - "default_value": "E" - }, - { - "category": "features", - "attr_name": "dire_warnings", - "abbreviated_name": "dire_warn", - "display_name": "Show dire warnings", - "visibility": "advanced", - "type": "enabled_disabled", - "help_text": null, - "selection_options": [ - { - "display_name": "Enabled", - "value": "E" - }, - { - "display_name": "Disabled", - "value": "D" - } - ], - "default_value": "E" - }, - { - "category": "features", - "attr_name": "qr_brightness_tips", - "abbreviated_name": null, - "display_name": "Show QR brightness tips", - "visibility": "advanced", - "type": "enabled_disabled", - "help_text": null, - "selection_options": [ - { - "display_name": "Enabled", - "value": "E" - }, - { - "display_name": "Disabled", - "value": "D" - } - ], - "default_value": "E" - }, - { - "category": "features", - "attr_name": "partner_logos", - "abbreviated_name": "partners", - "display_name": "Show partner logos", - "visibility": "advanced", - "type": "enabled_disabled", - "help_text": null, - "selection_options": [ - { - "display_name": "Enabled", - "value": "E" - }, - { - "display_name": "Disabled", - "value": "D" - } - ], - "default_value": "E" - }, - { - "category": "system", - "attr_name": "qr_background_color", - "abbreviated_name": "qr_brightness", - "display_name": "QR background color", - "visibility": "hidden", - "type": "free_entry", - "help_text": null, - "selection_options": null, - "default_value": 62 - } - ] -} \ No newline at end of file diff --git a/src/seedsigner/gui/keyboard.py b/src/seedsigner/gui/keyboard.py index dab737a0..3a969e8e 100644 --- a/src/seedsigner/gui/keyboard.py +++ b/src/seedsigner/gui/keyboard.py @@ -29,42 +29,42 @@ class Keyboard: COMPACT_KEY_FONT = "compact" # TRANSLATOR_NOTE: The abbreviated label for the special key on a standard keyboard. - babel_extract_food = _("del") + del_label = _("del") KEY_BACKSPACE = { "code": "DEL", - "letter": "del", + "letter": del_label, "font": COMPACT_KEY_FONT, "size": 2, } # TRANSLATOR_NOTE: The abbreviated label for the special key on a standard keyboard. - babel_extract_food = _("space") + space_label = _("space") KEY_SPACE = { "code": "SPACE", - "letter": "space", + "letter": space_label, "font": COMPACT_KEY_FONT, "size": 1, } KEY_SPACE_2 = { "code": "SPACE", - "letter": "space", + "letter": space_label, "font": COMPACT_KEY_FONT, "size": 2, } KEY_SPACE_3 = { "code": "SPACE", - "letter": "space", + "letter": space_label, "font": COMPACT_KEY_FONT, "size": 3, } KEY_SPACE_4 = { "code": "SPACE", - "letter": "space", + "letter": space_label, "font": COMPACT_KEY_FONT, "size": 4, } KEY_SPACE_5 = { "code": "SPACE", - "letter": "space", + "letter": space_label, "font": COMPACT_KEY_FONT, "size": 5, } diff --git a/src/seedsigner/gui/renderer.py b/src/seedsigner/gui/renderer.py index 03b3c103..db0a4eb5 100644 --- a/src/seedsigner/gui/renderer.py +++ b/src/seedsigner/gui/renderer.py @@ -1,9 +1,6 @@ -import os -from gettext import gettext as _ from PIL import Image, ImageDraw from threading import Lock -from seedsigner.gui.components import Fonts, GUIConstants from seedsigner.hardware.ST7789 import ST7789 from seedsigner.models.singleton import ConfigurableSingleton diff --git a/src/seedsigner/gui/screens/screen.py b/src/seedsigner/gui/screens/screen.py index 76dae430..f190bda9 100644 --- a/src/seedsigner/gui/screens/screen.py +++ b/src/seedsigner/gui/screens/screen.py @@ -25,16 +25,10 @@ RET_CODE__POWER_BUTTON = 1001 @dataclass class BaseScreen(BaseComponent): - disable_inputs: bool = False - - def __post_init__(self): super().__post_init__() - if not self.disable_inputs: - # For testing or rendering screen previews off the device when hardware - # support is not available. - self.hw_inputs = HardwareButtons.get_instance() + self.hw_inputs = HardwareButtons.get_instance() # Implementation classes can add their own BaseThread to run in parallel with the # main execution thread. diff --git a/tests/screenshot_generator/generator.py b/tests/screenshot_generator/generator.py index 9a8431a8..90b40da9 100644 --- a/tests/screenshot_generator/generator.py +++ b/tests/screenshot_generator/generator.py @@ -111,7 +111,6 @@ def test_generate_screenshots(target_locale): controller.storage.seeds.append(seed_12b) controller.storage.seeds.append(seed_24) controller.storage.set_pending_seed(seed_24_w_passphrase) - UnhandledExceptionViewFood = ["IndexError", "line 1, in some_buggy_code.py", "list index out of range"] # Pending mnemonic for ToolsCalcFinalWordShowFinalWordView controller.storage.init_pending_mnemonic(num_words=12) @@ -295,7 +294,7 @@ def test_generate_screenshots(target_locale): ], "Misc Error Views": [ NotYetImplementedView, - (UnhandledExceptionView, dict(error=UnhandledExceptionViewFood)), + (UnhandledExceptionView, dict(error=["IndexError", "line 1, in some_buggy_code.py", "list index out of range"])), NetworkMismatchErrorView, (OptionDisabledView, dict(settings_attr=SettingsConstants.SETTING__MESSAGE_SIGNING)), (ErrorView, dict(