From 12a8e1c4723ce3aa2754fa7c58a90cf71e952e0c Mon Sep 17 00:00:00 2001 From: okaybro <66475772+Chaitanya-Keyal@users.noreply.github.com> Date: Sat, 17 Jan 2026 12:29:51 +0000 Subject: [PATCH 1/4] fix(l10n): mark missing strings for translation --- src/seedsigner/models/settings_definition.py | 8 ++++---- src/seedsigner/views/view.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/seedsigner/models/settings_definition.py b/src/seedsigner/models/settings_definition.py index e9310d1d..974d2d5a 100644 --- a/src/seedsigner/models/settings_definition.py +++ b/src/seedsigner/models/settings_definition.py @@ -298,9 +298,9 @@ class SettingsConstants: MICROSD_TOAST_TIMER_FIVE_SECONDS = "E" MICROSD_TOAST_TIMER_FOREVER = "inf" ALL_MICROSD_TOAST_TIMERS = [ - (MICROSD_TOAST_TIMER_DISABLED, "Disabled"), - (MICROSD_TOAST_TIMER_FIVE_SECONDS, "5 seconds"), - (MICROSD_TOAST_TIMER_FOREVER, "Until SD removed") + (MICROSD_TOAST_TIMER_DISABLED, _mft("Disabled")), + (MICROSD_TOAST_TIMER_FIVE_SECONDS, _mft("5 seconds")), + (MICROSD_TOAST_TIMER_FOREVER, _mft("Until SD removed")) ] WORDLIST_LANGUAGE__ENGLISH = "en" @@ -670,7 +670,7 @@ class SettingsDefinition: SettingsEntry(category=SettingsConstants.CATEGORY__FEATURES, attr_name=SettingsConstants.SETTING__MICROSD_TOAST_TIMER, - display_name="MicroSD toast timer", + display_name=_mft("MicroSD toast timer"), type=SettingsConstants.TYPE__SELECT_1, visibility=SettingsConstants.VISIBILITY__ADVANCED, selection_options=SettingsConstants.ALL_MICROSD_TOAST_TIMERS, diff --git a/src/seedsigner/views/view.py b/src/seedsigner/views/view.py index e2ac1ad0..a55252ee 100644 --- a/src/seedsigner/views/view.py +++ b/src/seedsigner/views/view.py @@ -352,7 +352,7 @@ class NetworkMismatchErrorView(ErrorView): # TRANSLATOR_NOTE: Inserts mainnet/testnet/regtest and derivation path self.text = _("Current network setting ({}) doesn't match {}.").format( - self.settings.get_value_display_name(SettingsConstants.SETTING__NETWORK), + _(self.settings.get_value_display_name(SettingsConstants.SETTING__NETWORK)), self.derivation_path, ) From b7f394e9469a2ae0da0b0c765f798bb4627085e4 Mon Sep 17 00:00:00 2001 From: okaybro <66475772+Chaitanya-Keyal@users.noreply.github.com> Date: Sat, 17 Jan 2026 14:35:24 +0000 Subject: [PATCH 2/4] fix(l10n): use named variables in `NetworkMismatchView` message Co-authored-by: kdmukai <934746+kdmukai@users.noreply.github.com> --- src/seedsigner/views/view.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/seedsigner/views/view.py b/src/seedsigner/views/view.py index a55252ee..8c605da8 100644 --- a/src/seedsigner/views/view.py +++ b/src/seedsigner/views/view.py @@ -350,10 +350,12 @@ class NetworkMismatchErrorView(ErrorView): self.next_destination = Destination(SettingsEntryUpdateSelectionView, view_args=dict(attr_name=SettingsConstants.SETTING__NETWORK), clear_history=True) super().__post_init__() - # TRANSLATOR_NOTE: Inserts mainnet/testnet/regtest and derivation path - self.text = _("Current network setting ({}) doesn't match {}.").format( - _(self.settings.get_value_display_name(SettingsConstants.SETTING__NETWORK)), - self.derivation_path, + network = _(self.settings.get_value_display_name(SettingsConstants.SETTING__NETWORK)) + + # TRANSLATOR_NOTE: "network" will be mainnet/testnet/regtest. + self.text = _("Current network setting ({network}) doesn't match {derivation_path}.").format( + network=network, + derivation_path=self.derivation_path, ) From aa4b8e06078ff07b4391761fbd7ed3e2e9a25ea4 Mon Sep 17 00:00:00 2001 From: okaybro <66475772+Chaitanya-Keyal@users.noreply.github.com> Date: Sat, 17 Jan 2026 14:36:52 +0000 Subject: [PATCH 3/4] fix(l10n): update MicroSD toast timer terminology and add translator notes --- src/seedsigner/models/settings_definition.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/seedsigner/models/settings_definition.py b/src/seedsigner/models/settings_definition.py index 974d2d5a..25b07b84 100644 --- a/src/seedsigner/models/settings_definition.py +++ b/src/seedsigner/models/settings_definition.py @@ -299,7 +299,9 @@ class SettingsConstants: MICROSD_TOAST_TIMER_FOREVER = "inf" ALL_MICROSD_TOAST_TIMERS = [ (MICROSD_TOAST_TIMER_DISABLED, _mft("Disabled")), + # TRANSLATOR_NOTE: MicroSD notification duration setting - Display notification for 5 seconds (MICROSD_TOAST_TIMER_FIVE_SECONDS, _mft("5 seconds")), + # TRANSLATOR_NOTE: MicroSD notification duration setting - Display notification until the SD card is removed (MICROSD_TOAST_TIMER_FOREVER, _mft("Until SD removed")) ] @@ -670,7 +672,7 @@ class SettingsDefinition: SettingsEntry(category=SettingsConstants.CATEGORY__FEATURES, attr_name=SettingsConstants.SETTING__MICROSD_TOAST_TIMER, - display_name=_mft("MicroSD toast timer"), + display_name=_mft("MicroSD notification duration"), type=SettingsConstants.TYPE__SELECT_1, visibility=SettingsConstants.VISIBILITY__ADVANCED, selection_options=SettingsConstants.ALL_MICROSD_TOAST_TIMERS, From f8c4dce5370af2655e92f54e340d31da0cd15048 Mon Sep 17 00:00:00 2001 From: okaybro <66475772+Chaitanya-Keyal@users.noreply.github.com> Date: Tue, 20 Jan 2026 09:49:42 +0000 Subject: [PATCH 4/4] chore(l10n): regenerate `messages.pot` --- l10n/messages.pot | 125 ++++++++++++++++++++++++---------------------- 1 file changed, 64 insertions(+), 61 deletions(-) diff --git a/l10n/messages.pot b/l10n/messages.pot index b87cb99b..9a91fe28 100644 --- a/l10n/messages.pot +++ b/l10n/messages.pot @@ -1,14 +1,14 @@ # Translations template for seedsigner. -# Copyright (C) 2025 ORGANIZATION +# Copyright (C) 2026 ORGANIZATION # This file is distributed under the same license as the seedsigner project. -# FIRST AUTHOR , 2025. +# FIRST AUTHOR , 2026. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: seedsigner 0.8.6\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2025-12-14 05:46-0600\n" +"POT-Creation-Date: 2026-02-16 21:42+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -141,19 +141,21 @@ msgstr[1] "" msgid "{} change" msgstr "" +#. Describes the address type (change or receive) #: src/seedsigner/gui/screens/psbt_screens.py -#: src/seedsigner/models/settings_definition.py -#: src/seedsigner/views/seed_views.py -msgid "Multisig" +#: src/seedsigner/gui/screens/seed_screens.py +msgid "change address" msgstr "" +#. Describes the address type (change or receive) #: src/seedsigner/gui/screens/psbt_screens.py -msgid "Change" +#: src/seedsigner/gui/screens/seed_screens.py +msgid "receive address" msgstr "" -#. Abbreviation for receive address +#. Symbol for index number, e.g. "address #3" #: src/seedsigner/gui/screens/psbt_screens.py -msgid "Addr" +msgid "#" msgstr "" #: src/seedsigner/gui/screens/psbt_screens.py @@ -237,14 +239,6 @@ msgid "" "All in-memory data will be wiped." msgstr "" -#: src/seedsigner/gui/screens/screen.py -msgid "Powering Off" -msgstr "" - -#: src/seedsigner/gui/screens/screen.py -msgid "Please wait about 30 seconds before disconnecting power." -msgstr "" - #: src/seedsigner/gui/screens/screen.py msgid "Just Unplug It" msgstr "" @@ -264,17 +258,6 @@ msgstr "" msgid "fingerprint" msgstr "" -#: src/seedsigner/gui/screens/seed_screens.py -#: src/seedsigner/views/seed_views.py -msgid "Backup Seed" -msgstr "" - -#. Additional explainer for the two seed backup options (mnemonic phrase and -#. SeedQR). -#: src/seedsigner/gui/screens/seed_screens.py -msgid "Backups do not include your passphrase." -msgstr "" - #. Displays the page number and total: (e.g. page 1 of 6) #: src/seedsigner/gui/screens/seed_screens.py msgid "Seed Words: {}/{}" @@ -392,16 +375,6 @@ msgstr "" msgid "Address Verified" msgstr "" -#. Describes the address type (change or receive) -#: src/seedsigner/gui/screens/seed_screens.py -msgid "change address" -msgstr "" - -#. Describes the address type (change or receive) -#: src/seedsigner/gui/screens/seed_screens.py -msgid "receive address" -msgstr "" - #. Describes the address index (e.g. "index 7") #: src/seedsigner/gui/screens/seed_screens.py msgid "index {}" @@ -597,10 +570,6 @@ msgstr "" msgid "Next {}" msgstr "" -#: src/seedsigner/hardware/camera.py -msgid "Camera error. Check camera connections." -msgstr "" - #: src/seedsigner/models/settings_definition.py msgid "Enabled" msgstr "" @@ -700,6 +669,11 @@ msgstr "" msgid "Single Sig" msgstr "" +#: src/seedsigner/models/settings_definition.py +#: src/seedsigner/views/seed_views.py +msgid "Multisig" +msgstr "" + #: src/seedsigner/models/settings_definition.py msgid "Native Segwit" msgstr "" @@ -720,6 +694,17 @@ msgstr "" msgid "Custom Derivation" msgstr "" +#. MicroSD notification duration setting - Display notification for 5 seconds +#: src/seedsigner/models/settings_definition.py +msgid "5 seconds" +msgstr "" + +#. MicroSD notification duration setting - Display notification until the SD +#. card is removed +#: src/seedsigner/models/settings_definition.py +msgid "Until SD removed" +msgstr "" + #. Terminology used by Electrum seeds; equivalent to BIP-39 passphrase #: src/seedsigner/models/settings_definition.py msgid "Custom Extension" @@ -749,10 +734,6 @@ msgstr "" msgid "QR code density" msgstr "" -#: src/seedsigner/models/settings_definition.py -msgid "Xpub export" -msgstr "" - #: src/seedsigner/models/settings_definition.py msgid "Sig types" msgstr "" @@ -793,6 +774,10 @@ msgstr "" msgid "Native Segwit only" msgstr "" +#: src/seedsigner/models/settings_definition.py +msgid "MicroSD notification duration" +msgstr "" + #: src/seedsigner/models/settings_definition.py msgid "Message signing" msgstr "" @@ -917,7 +902,7 @@ msgid "Self-Transfer" msgstr "" #: src/seedsigner/views/psbt_views.py -msgid "Verify Multisig Addr" +msgid "Verify multisig addr" msgstr "" #: src/seedsigner/views/psbt_views.py @@ -955,7 +940,7 @@ msgid "Approve transaction" msgstr "" #: src/seedsigner/views/psbt_views.py -msgid "Select diff seed" +msgid "Select different seed" msgstr "" #: src/seedsigner/views/psbt_views.py @@ -1068,7 +1053,7 @@ msgid "Create a seed" msgstr "" #: src/seedsigner/views/seed_views.py -msgid "Load A Seed" +msgid "Load a Seed" msgstr "" #. Inserts the word number (e.g. "Seed Word #6") @@ -1138,7 +1123,7 @@ msgid "Discard Seed?" msgstr "" #: src/seedsigner/views/seed_views.py -msgid "Electrum warning" +msgid "Electrum Warning" msgstr "" #: src/seedsigner/views/seed_views.py @@ -1149,10 +1134,6 @@ msgstr "" msgid "Scan transaction" msgstr "" -#: src/seedsigner/views/seed_views.py -msgid "Verify addr" -msgstr "" - #: src/seedsigner/views/seed_views.py src/seedsigner/views/tools_views.py msgid "Address explorer" msgstr "" @@ -1177,6 +1158,10 @@ msgstr "" msgid "Export as SeedQR" msgstr "" +#: src/seedsigner/views/seed_views.py +msgid "Backup Seed" +msgstr "" + #: src/seedsigner/views/seed_views.py msgid "Export Xpub" msgstr "" @@ -1351,6 +1336,10 @@ msgstr "" msgid "Return to transaction" msgstr "" +#: src/seedsigner/views/seed_views.py +msgid "Verify addr" +msgstr "" + #: src/seedsigner/views/seed_views.py msgid "Signing messages for custom derivation paths not supported" msgstr "" @@ -1371,6 +1360,24 @@ msgstr "" msgid "Dev Options" msgstr "" +#. Title of a warning dialog when configuring a setting that requires at least +#. one option to be selected. +#: src/seedsigner/views/settings_views.py +msgid "Selection Required" +msgstr "" + +#. The name of the setting being configured (e.g. "Script types") will be +#. inserted. +#: src/seedsigner/views/settings_views.py +msgid "At least one option must be selected for \"{}\"." +msgstr "" + +#. Text for the button that returns the user to the setting configuration +#. screen. +#: src/seedsigner/views/settings_views.py +msgid "Return to setting" +msgstr "" + #: src/seedsigner/views/settings_views.py msgid "Persistent Settings enabled. Settings saved to SD card." msgstr "" @@ -1404,7 +1411,7 @@ msgid "24 words" msgstr "" #: src/seedsigner/views/tools_views.py -msgid "Mnemonic Length?" +msgid "Mnemonic Length" msgstr "" #: src/seedsigner/views/tools_views.py @@ -1421,10 +1428,6 @@ msgstr "" msgid "24 words ({} rolls)" msgstr "" -#: src/seedsigner/views/tools_views.py -msgid "Mnemonic Length" -msgstr "" - #. Label to gather entropy through coin tosses #: src/seedsigner/views/tools_views.py msgid "Coin flip entropy" @@ -1531,9 +1534,9 @@ msgstr "" msgid "Change Setting" msgstr "" -#. Inserts mainnet/testnet/regtest and derivation path +#. "network" will be mainnet/testnet/regtest. #: src/seedsigner/views/view.py -msgid "Current network setting ({}) doesn't match {}." +msgid "Current network setting ({network}) doesn't match {derivation_path}." msgstr "" #: src/seedsigner/views/view.py