From c6df2179d6aaeaa7195de5c3f4c8f9ed1a6e7244 Mon Sep 17 00:00:00 2001 From: obrusvit Date: Thu, 18 Jul 2024 11:30:45 +0200 Subject: [PATCH] fix(core): show correct word count in more info Make translated strings describing recovery shares templated so that we can show correct number of words (i.e. 20 or 33) in more info. --- core/embed/rust/librust_qstr.h | 4 ++-- .../generated/translated_string.rs | 16 ++++++++-------- core/mocks/trezortranslate_keys.pyi | 6 +++--- core/src/apps/common/backup_types.py | 19 +++++++++++++++++++ .../apps/management/reset_device/__init__.py | 16 +++++++++------- core/src/trezor/ui/layouts/mercury/reset.py | 10 +++++++--- core/src/trezor/ui/layouts/tr/reset.py | 4 +++- core/src/trezor/ui/layouts/tt/reset.py | 10 +++++++--- core/translations/cs.json | 6 +++--- core/translations/de.json | 6 +++--- core/translations/en.json | 6 +++--- core/translations/es.json | 6 +++--- core/translations/fr.json | 6 +++--- core/translations/order.json | 4 ++-- core/translations/signatures.json | 6 +++--- 15 files changed, 78 insertions(+), 47 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 3a9ebdc115..c7e919866a 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -506,9 +506,9 @@ static void _librust_qstrs(void) { MP_QSTR_reset__never_make_digital_copy; MP_QSTR_reset__num_of_share_holders_template; MP_QSTR_reset__num_of_shares_advanced_info_template; - MP_QSTR_reset__num_of_shares_basic_info; + MP_QSTR_reset__num_of_shares_basic_info_template; MP_QSTR_reset__num_of_shares_how_many; - MP_QSTR_reset__num_of_shares_long_info; + MP_QSTR_reset__num_of_shares_long_info_template; MP_QSTR_reset__num_shares_for_group_template; MP_QSTR_reset__number_of_shares_info; MP_QSTR_reset__one_share; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 7aeb7f6eb1..6ca003b263 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -845,8 +845,8 @@ pub enum TranslatedString { reset__needed_to_recover_your_wallet = 557, // "needed to recover your wallet. " reset__never_make_digital_copy = 558, // "Never put your backup anywhere digital." reset__num_of_share_holders_template = 559, // "{0} people or locations will each hold one share." - reset__num_of_shares_advanced_info_template = 560, // "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {0}." - reset__num_of_shares_basic_info = 561, // "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet." + reset__num_of_shares_advanced_info_template = 560, // "Each recovery share is a sequence of {0} words. Next you will choose the threshold number of shares needed to form Group {1}." + reset__num_of_shares_basic_info_template = 561, // "Each recovery share is a sequence of {0} words. Next you will choose how many shares you need to recover your wallet." reset__num_shares_for_group_template = 562, // "The required number of shares to form Group {0}." reset__number_of_shares_info = 563, // "= total number of unique word lists used for wallet backup." reset__one_share = 564, // "1 share" @@ -1308,7 +1308,7 @@ pub enum TranslatedString { reset__incorrect_word_selected = 907, // "Incorrect word selected" reset__more_at = 908, // "More at" reset__num_of_shares_how_many = 909, // "How many wallet backup shares do you want to create?" - reset__num_of_shares_long_info = 910, // "Each backup share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." + reset__num_of_shares_long_info_template = 910, // "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." reset__select_threshold = 911, // "Select the minimum shares required to recover your wallet." reset__share_completed_template = 912, // "Share #{0} completed" reset__slip39_checklist_num_shares_x_template = 913, // "Number of shares: {0}" @@ -2196,8 +2196,8 @@ impl TranslatedString { Self::reset__needed_to_recover_your_wallet => "needed to recover your wallet. ", Self::reset__never_make_digital_copy => "Never put your backup anywhere digital.", Self::reset__num_of_share_holders_template => "{0} people or locations will each hold one share.", - Self::reset__num_of_shares_advanced_info_template => "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {0}.", - Self::reset__num_of_shares_basic_info => "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet.", + Self::reset__num_of_shares_advanced_info_template => "Each recovery share is a sequence of {0} words. Next you will choose the threshold number of shares needed to form Group {1}.", + Self::reset__num_of_shares_basic_info_template => "Each recovery share is a sequence of {0} words. Next you will choose how many shares you need to recover your wallet.", Self::reset__num_shares_for_group_template => "The required number of shares to form Group {0}.", Self::reset__number_of_shares_info => "= total number of unique word lists used for wallet backup.", Self::reset__one_share => "1 share", @@ -2659,7 +2659,7 @@ impl TranslatedString { Self::reset__incorrect_word_selected => "Incorrect word selected", Self::reset__more_at => "More at", Self::reset__num_of_shares_how_many => "How many wallet backup shares do you want to create?", - Self::reset__num_of_shares_long_info => "Each backup share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", + Self::reset__num_of_shares_long_info_template => "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", Self::reset__select_threshold => "Select the minimum shares required to recover your wallet.", Self::reset__share_completed_template => "Share #{0} completed", Self::reset__slip39_checklist_num_shares_x_template => "Number of shares: {0}", @@ -3549,7 +3549,7 @@ impl TranslatedString { Qstr::MP_QSTR_reset__never_make_digital_copy => Some(Self::reset__never_make_digital_copy), Qstr::MP_QSTR_reset__num_of_share_holders_template => Some(Self::reset__num_of_share_holders_template), Qstr::MP_QSTR_reset__num_of_shares_advanced_info_template => Some(Self::reset__num_of_shares_advanced_info_template), - Qstr::MP_QSTR_reset__num_of_shares_basic_info => Some(Self::reset__num_of_shares_basic_info), + Qstr::MP_QSTR_reset__num_of_shares_basic_info_template => Some(Self::reset__num_of_shares_basic_info_template), Qstr::MP_QSTR_reset__num_shares_for_group_template => Some(Self::reset__num_shares_for_group_template), Qstr::MP_QSTR_reset__number_of_shares_info => Some(Self::reset__number_of_shares_info), Qstr::MP_QSTR_reset__one_share => Some(Self::reset__one_share), @@ -4011,7 +4011,7 @@ impl TranslatedString { Qstr::MP_QSTR_reset__incorrect_word_selected => Some(Self::reset__incorrect_word_selected), Qstr::MP_QSTR_reset__more_at => Some(Self::reset__more_at), Qstr::MP_QSTR_reset__num_of_shares_how_many => Some(Self::reset__num_of_shares_how_many), - Qstr::MP_QSTR_reset__num_of_shares_long_info => Some(Self::reset__num_of_shares_long_info), + Qstr::MP_QSTR_reset__num_of_shares_long_info_template => Some(Self::reset__num_of_shares_long_info_template), Qstr::MP_QSTR_reset__select_threshold => Some(Self::reset__select_threshold), Qstr::MP_QSTR_reset__share_completed_template => Some(Self::reset__share_completed_template), Qstr::MP_QSTR_reset__slip39_checklist_num_shares_x_template => Some(Self::reset__slip39_checklist_num_shares_x_template), diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 16e3d948c9..e651f064ca 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -632,10 +632,10 @@ class TR: reset__needed_to_recover_your_wallet: str = "needed to recover your wallet. " reset__never_make_digital_copy: str = "Never put your backup anywhere digital." reset__num_of_share_holders_template: str = "{0} people or locations will each hold one share." - reset__num_of_shares_advanced_info_template: str = "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {0}." - reset__num_of_shares_basic_info: str = "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet." + reset__num_of_shares_advanced_info_template: str = "Each recovery share is a sequence of {0} words. Next you will choose the threshold number of shares needed to form Group {1}." + reset__num_of_shares_basic_info_template: str = "Each recovery share is a sequence of {0} words. Next you will choose how many shares you need to recover your wallet." reset__num_of_shares_how_many: str = "How many wallet backup shares do you want to create?" - reset__num_of_shares_long_info: str = "Each backup share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." + reset__num_of_shares_long_info_template: str = "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." reset__num_shares_for_group_template: str = "The required number of shares to form Group {0}." reset__number_of_shares_info: str = "= total number of unique word lists used for wallet backup." reset__one_share: str = "1 share" diff --git a/core/src/apps/common/backup_types.py b/core/src/apps/common/backup_types.py index 32dd223bd5..806deddd6b 100644 --- a/core/src/apps/common/backup_types.py +++ b/core/src/apps/common/backup_types.py @@ -65,3 +65,22 @@ def infer_backup_type(is_slip39: bool, share: Share | None = None) -> BackupType return BackupType.Slip39_Advanced_Extendable else: return BackupType.Slip39_Advanced + + +def get_num_of_words_per_share( + backup_type: BackupType, secret_length_bytes: int +) -> int: + if is_slip39_backup_type(backup_type): + if secret_length_bytes == 16: + return 20 + elif secret_length_bytes == 32: + return 33 + else: + if secret_length_bytes == 16: + return 12 + elif secret_length_bytes == 24: + return 18 + elif secret_length_bytes == 32: + return 24 + # Invalid backup type and secret length combination + raise RuntimeError diff --git a/core/src/apps/management/reset_device/__init__.py b/core/src/apps/management/reset_device/__init__.py index f2ae0efc0b..a2a036b186 100644 --- a/core/src/apps/management/reset_device/__init__.py +++ b/core/src/apps/management/reset_device/__init__.py @@ -144,7 +144,7 @@ async def _backup_slip39_single( async def _backup_slip39_basic( - encrypted_master_secret: bytes, extendable: bool + encrypted_master_secret: bytes, num_of_words: int, extendable: bool ) -> None: group_threshold = 1 @@ -152,7 +152,7 @@ async def _backup_slip39_basic( # get number of shares await layout.slip39_show_checklist(0, advanced=False) - share_count = await layout.slip39_prompt_number_of_shares() + share_count = await layout.slip39_prompt_number_of_shares(num_of_words) # get threshold await layout.slip39_show_checklist(1, advanced=False, count=share_count) @@ -173,9 +173,8 @@ async def _backup_slip39_basic( async def _backup_slip39_advanced( - encrypted_master_secret: bytes, extendable: bool + encrypted_master_secret: bytes, num_of_words: int, extendable: bool ) -> None: - await layout.show_backup_intro(single_share=False) # get number of groups @@ -192,7 +191,7 @@ async def _backup_slip39_advanced( ) groups = [] for i in range(groups_count): - share_count = await layout.slip39_prompt_number_of_shares(i) + share_count = await layout.slip39_prompt_number_of_shares(num_of_words, i) share_threshold = await layout.slip39_prompt_threshold(share_count, i) groups.append((share_threshold, share_count)) @@ -294,12 +293,15 @@ def _compute_secret_from_entropy( async def backup_seed(backup_type: BackupType, mnemonic_secret: bytes) -> None: if backup_types.is_slip39_backup_type(backup_type): + num_of_words = backup_types.get_num_of_words_per_share( + backup_type, len(mnemonic_secret) + ) extendable = backup_types.is_extendable_backup_type(backup_type) if backup_types.is_slip39_advanced_backup_type(backup_type): - await _backup_slip39_advanced(mnemonic_secret, extendable) + await _backup_slip39_advanced(mnemonic_secret, num_of_words, extendable) elif backup_type == BAK_T_SLIP39_SINGLE_EXT: await _backup_slip39_single(mnemonic_secret, extendable) else: - await _backup_slip39_basic(mnemonic_secret, extendable) + await _backup_slip39_basic(mnemonic_secret, num_of_words, extendable) else: await _backup_bip39(mnemonic_secret.decode()) diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index 8b94907324..d65abcc8df 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -226,7 +226,9 @@ async def slip39_prompt_threshold( ) -async def slip39_prompt_number_of_shares(group_id: int | None = None) -> int: +async def slip39_prompt_number_of_shares( + num_words: int, group_id: int | None = None +) -> int: count = 5 min_count = 1 max_count = 16 @@ -238,9 +240,11 @@ async def slip39_prompt_number_of_shares(group_id: int | None = None) -> int: ) if group_id is None: - info = TR.reset__num_of_shares_long_info + info = TR.reset__num_of_shares_long_info_template.format(num_words) else: - info = TR.reset__num_of_shares_advanced_info_template.format(group_id + 1) + info = TR.reset__num_of_shares_advanced_info_template.format( + num_words, group_id + 1 + ) return await _prompt_number( TR.reset__title_set_number_of_shares, diff --git a/core/src/trezor/ui/layouts/tr/reset.py b/core/src/trezor/ui/layouts/tr/reset.py index f231de3cba..e1754d1426 100644 --- a/core/src/trezor/ui/layouts/tr/reset.py +++ b/core/src/trezor/ui/layouts/tr/reset.py @@ -196,7 +196,9 @@ async def slip39_prompt_threshold( ) -async def slip39_prompt_number_of_shares(group_id: int | None = None) -> int: +async def slip39_prompt_number_of_shares( + _num_words: int, group_id: int | None = None +) -> int: await confirm_action( "slip39_shares", TR.reset__title_number_of_shares, diff --git a/core/src/trezor/ui/layouts/tt/reset.py b/core/src/trezor/ui/layouts/tt/reset.py index 3cb0c24778..f887d5894a 100644 --- a/core/src/trezor/ui/layouts/tt/reset.py +++ b/core/src/trezor/ui/layouts/tt/reset.py @@ -241,7 +241,9 @@ async def slip39_prompt_threshold( ) -async def slip39_prompt_number_of_shares(group_id: int | None = None) -> int: +async def slip39_prompt_number_of_shares( + num_words: int, group_id: int | None = None +) -> int: count = 5 min_count = 1 max_count = 16 @@ -258,9 +260,11 @@ async def slip39_prompt_number_of_shares(group_id: int | None = None) -> int: ) if group_id is None: - info = TR.reset__num_of_shares_basic_info + info = TR.reset__num_of_shares_basic_info_template.format(num_words) else: - info = TR.reset__num_of_shares_advanced_info_template.format(group_id + 1) + info = TR.reset__num_of_shares_advanced_info_template.format( + num_words, group_id + 1 + ) return await _prompt_number( TR.reset__title_set_number_of_shares, diff --git a/core/translations/cs.json b/core/translations/cs.json index 3c43c5efaa..88e7cb552f 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -663,10 +663,10 @@ "reset__needed_to_recover_your_wallet": "potřeba k obnovení peněženky. ", "reset__never_make_digital_copy": "Nevytvářejte digitální kopii zálohy ani ji nenahrávejte na internet!", "reset__num_of_share_holders_template": "Každý z {0} lidí nebo míst bude mít jednu část.", - "reset__num_of_shares_advanced_info_template": "Každá část zálohy je sekvence 20 slov. Dále zvolíte počet částí pro obnovu potřebných k vytvoření skupiny {0}.", - "reset__num_of_shares_basic_info": "Každá část zálohy je sekvence 20 slov. Dále zvolíte, kolik částí potřebujete k obnovení peněženky.", + "reset__num_of_shares_advanced_info_template": "Každá část zálohy je sekvence {0} slov. Dále zvolíte počet částí pro obnovu potřebných k vytvoření skupiny {1}.", + "reset__num_of_shares_basic_info_template": "Každá část zálohy je sekvence {0} slov. Dále zvolíte, kolik částí potřebujete k obnovení peněženky.", "reset__num_of_shares_how_many": "Kolik částí zálohy peněženky chcete vytvořit?", - "reset__num_of_shares_long_info": "Každá část zálohy je sekvence 20 slov. Každý seznam slov si uložte na jiné, bezpečné místo nebo ho sdělte někomu, komu důvěřujete. Poté je použijte v případě potřeby obnovení peněženky.", + "reset__num_of_shares_long_info_template": "Každá část zálohy je sekvence {0} slov. Každý seznam slov si uložte na jiné, bezpečné místo nebo ho sdělte někomu, komu důvěřujete. Poté je použijte v případě potřeby obnovení peněženky.", "reset__num_shares_for_group_template": "Potřebný počet částí k vytvoření skupiny {0}.", "reset__number_of_shares_info": "= počet seznamů jedinečných slov u zálohy peněženky.", "reset__one_share": "1 část", diff --git a/core/translations/de.json b/core/translations/de.json index f4ebfe1428..41aa3588b7 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -663,10 +663,10 @@ "reset__needed_to_recover_your_wallet": "zur Wallet Wiederh. nötig. ", "reset__never_make_digital_copy": "Erstelle niemals eine digitale Kopie deines Backups oder lade es online hoch!", "reset__num_of_share_holders_template": "{0} Personen oder Standorte halten jeweils einen Share.", - "reset__num_of_shares_advanced_info_template": "Jeder Recovery Share besteht aus 20 Wörtern. Wähle jetzt die Schwelle für die Anzahl der Shares zur Bildung von Gruppe {0}.", - "reset__num_of_shares_basic_info": "Jeder Recovery Share besteht aus 20 Wörtern. Wähle, wie viele Shares du zur Wallet-Wiederherstell. benötigst.", + "reset__num_of_shares_advanced_info_template": "Jeder Recovery Share besteht aus {0} Wörtern. Wähle jetzt die Schwelle für die Anzahl der Shares zur Bildung von Gruppe {1}.", + "reset__num_of_shares_basic_info_template": "Jeder Recovery Share besteht aus {0} Wörtern. Wähle, wie viele Shares du zur Wallet-Wiederherstell. benötigst.", "reset__num_of_shares_how_many": "Wie viele Wallet-Backup-Shares möchtest du erstellen?", - "reset__num_of_shares_long_info": "Jeder Recovery Share besteht aus 20 Wörtern. Speichere jede Wortliste an einem anderen, sicheren Ort oder teile sie mit vertrauenswürdigen Personen. Nutze sie je nach Bedarf, um dein Wallet wiederherzustellen.", + "reset__num_of_shares_long_info_template": "Jeder Recovery Share besteht aus {0} Wörtern. Speichere jede Wortliste an einem anderen, sicheren Ort oder teile sie mit vertrauenswürdigen Personen. Nutze sie je nach Bedarf, um dein Wallet wiederherzustellen.", "reset__num_shares_for_group_template": "Die erforderliche Anzahl an Shares zur Bildung der Gruppe {0}.", "reset__number_of_shares_info": "= Gesamtzahl eindeutiger Wortlisten für Wallet-Backup.", "reset__one_share": "1 Share", diff --git a/core/translations/en.json b/core/translations/en.json index a42c5d1747..3384d8ad7e 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -634,10 +634,10 @@ "reset__needed_to_recover_your_wallet": "needed to recover your wallet. ", "reset__never_make_digital_copy": "Never put your backup anywhere digital.", "reset__num_of_share_holders_template": "{0} people or locations will each hold one share.", - "reset__num_of_shares_advanced_info_template": "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {0}.", - "reset__num_of_shares_basic_info": "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet.", + "reset__num_of_shares_advanced_info_template": "Each recovery share is a sequence of {0} words. Next you will choose the threshold number of shares needed to form Group {1}.", + "reset__num_of_shares_basic_info_template": "Each recovery share is a sequence of {0} words. Next you will choose how many shares you need to recover your wallet.", "reset__num_of_shares_how_many": "How many wallet backup shares do you want to create?", - "reset__num_of_shares_long_info": "Each backup share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", + "reset__num_of_shares_long_info_template": "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", "reset__num_shares_for_group_template": "The required number of shares to form Group {0}.", "reset__number_of_shares_info": "= total number of unique word lists used for wallet backup.", "reset__one_share": "1 share", diff --git a/core/translations/es.json b/core/translations/es.json index 1a6fd307d7..ceb5aec035 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -663,10 +663,10 @@ "reset__needed_to_recover_your_wallet": "para recuperar el monedero. ", "reset__never_make_digital_copy": "No hagas nunca una copia digital de la copia de seguridad ni la cargues en línea.", "reset__num_of_share_holders_template": "{0} persona/s o ubicación/es tendrá/n un recurso compartido.", - "reset__num_of_shares_advanced_info_template": "Cada rec. comp. de recuperación es una cadena de 20 palabras. Elige el umbral necesario para formar el grupo {0}.", - "reset__num_of_shares_basic_info": "Cada rec. comp. de recuperación es una cadena de 20 palabras. Elige cuántos necesitas para recuperar el monedero.", + "reset__num_of_shares_advanced_info_template": "Cada rec. comp. de recuperación es una cadena de {0} palabras. Elige el umbral necesario para formar el grupo {1}.", + "reset__num_of_shares_basic_info_template": "Cada rec. comp. de recuperación es una cadena de {0} palabras. Elige cuántos necesitas para recuperar el monedero.", "reset__num_of_shares_how_many": "¿Cuántos recursos de copia de seguridad quieres crear?", - "reset__num_of_shares_long_info": "Cada recurso compartido de recuperación es una secuencia de 20 palabras. Guarda cada lista de palabras en un lugar separado y seguro o compártela con personas de confianza. Recopila lo necesario para recuperar el monedero.", + "reset__num_of_shares_long_info_template": "Cada recurso compartido de recuperación es una secuencia de {0} palabras. Guarda cada lista de palabras en un lugar separado y seguro o compártela con personas de confianza. Recopila lo necesario para recuperar el monedero.", "reset__num_shares_for_group_template": "Nro.necesario de rec. comp. para formar el grupo {0}.", "reset__number_of_shares_info": "= total de listas de palabras únicas para la copia de seguridad.", "reset__one_share": "1 recurso compartido", diff --git a/core/translations/fr.json b/core/translations/fr.json index 141eeb4ec4..fc40f84c06 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -663,10 +663,10 @@ "reset__needed_to_recover_your_wallet": "requis pour récup. votre portef. ", "reset__never_make_digital_copy": "Ne pas créer de copie numérique ni en ligne de votre sauv. !", "reset__num_of_share_holders_template": "{0} personnes ou emp. détiendront chacun un fragm.", - "reset__num_of_shares_advanced_info_template": "Chaque fragm. de récup. se compose de 20 mots. Vous choisirez le nbr seuil de fragm. néc. pour former le Groupe {0}.", - "reset__num_of_shares_basic_info": "Chaque fragm. de récup. se compose de 20 mots. Vous choisirez le nbr de fragm. néc. pour récup. votre portef.", + "reset__num_of_shares_advanced_info_template": "Chaque fragm. de récup. se compose de {0} mots. Vous choisirez le nbr seuil de fragm. néc. pour former le Groupe {1}.", + "reset__num_of_shares_basic_info_template": "Chaque fragm. de récup. se compose de {0} mots. Vous choisirez le nbr de fragm. néc. pour récup. votre portef.", "reset__num_of_shares_how_many": "Combien de fragments de sauvegarde de portefeuille voulez-vous créer ?", - "reset__num_of_shares_long_info": "Chaque fragment de récupération se compose de 20 mots. Stockez chaque liste de mots dans un emplacement séparé et sûr ou partagez-la à des personnes de confiance. Recueillir si nécessaire pour récupérer votre portefeuille.", + "reset__num_of_shares_long_info_template": "Chaque fragment de récupération se compose de {0} mots. Stockez chaque liste de mots dans un emplacement séparé et sûr ou partagez-la à des personnes de confiance. Recueillir si nécessaire pour récupérer votre portefeuille.", "reset__num_shares_for_group_template": "Le nbre de fragm. requis pour former le Groupe {0}.", "reset__number_of_shares_info": "= nbre total de listes de mots uniques pour la sauv. du portef.", "reset__one_share": "1 fragm.", diff --git a/core/translations/order.json b/core/translations/order.json index 422d2b589e..02e9aa0f37 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -560,7 +560,7 @@ "558": "reset__never_make_digital_copy", "559": "reset__num_of_share_holders_template", "560": "reset__num_of_shares_advanced_info_template", - "561": "reset__num_of_shares_basic_info", + "561": "reset__num_of_shares_basic_info_template", "562": "reset__num_shares_for_group_template", "563": "reset__number_of_shares_info", "564": "reset__one_share", @@ -909,7 +909,7 @@ "907": "reset__incorrect_word_selected", "908": "reset__more_at", "909": "reset__num_of_shares_how_many", - "910": "reset__num_of_shares_long_info", + "910": "reset__num_of_shares_long_info_template", "911": "reset__select_threshold", "912": "reset__share_completed_template", "913": "reset__slip39_checklist_num_shares_x_template", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index b5efc792de..09732b2e30 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "8208aebbeec2ab19c0ee5e4298752597ff1b151d56482c877891097b9b72464b", - "datetime": "2024-07-18T13:04:23.054546", - "commit": "6280ef2e4266dca1080d549a9c2a7f1a74616527" + "merkle_root": "5fc3e1a642df97568b380cb551bbf809faceed0c9e5c196d4f92b87f51b840c6", + "datetime": "2024-07-18T09:35:46.769791", + "commit": "3ee259636d33b7fea7b1a841685f610c7b52bf73" }, "history": [ {