diff --git a/core/embed/rust/src/ui/translations/cs.json b/core/embed/rust/src/ui/translations/cs.json index 0876dd78c7..53859ac542 100644 --- a/core/embed/rust/src/ui/translations/cs.json +++ b/core/embed/rust/src/ui/translations/cs.json @@ -113,6 +113,7 @@ "access": "PŘÍSTUP", "again": "ZNOVU", "allow": "DOVOLIT", + "back": "ZADNÍ", "back_up": "ZÁLOHOVAT", "cancel": "ZRUŠIT", "change": "ZMĚNIT", @@ -140,6 +141,7 @@ "select": "VYBRAT", "set": "NASTAVIT", "show_all": "UKÁZAT VŠE", + "show_details": "UKÁZAT DETAILY", "show_words": "UKÁZAT SLOVA", "skip": "PŘESKOČIT", "try_again": "ZKUSIT ZNOVU", @@ -791,8 +793,22 @@ "message_size": "Velikost zprávy:", "verify_address": "Ověřte adresu" }, + "solana": { + "account_index": "Index účtu", + "associated_token_account": "Přidružený účet tokenů", + "confirm_multisig": "Potvrďte multisig", + "expected_fee": "Očekávaný poplatek", + "instruction_accounts_template": "Instrukce obsahuje {} účty a její data jsou {} bajty dlouhé.", + "instruction_data": "Instruktážní data", + "instruction_is_multisig": "Následující instrukce je instrukce multisig.", + "is_provided_via_lookup_table_template": "{} je poskytován prostřednictvím vyhledávací tabulky.", + "lookup_table_address": "Adresa tabulky vyhledávání", + "multiple_signers": "Více signatářů", + "token_address": "Adresa tokenů", + "transaction_contains_unknown_instructions": "Transakce obsahuje neznámé pokyny.", + "transaction_requires_x_signers_template": "Transakce vyžaduje {} signatáři, který zvyšuje poplatek." + }, "stellar": { - "account": "Účet", "account_merge": "Sloučení účtů", "account_thresholds": "Práhové hodnoty účtu", "add_signer": "Přidat podepisovatele", @@ -924,8 +940,10 @@ "title": "POČET SLOV" }, "words": { + "account": "Účet", "are_you_sure": "Jste si jisti?", "array_of": "Pole o", + "blockhash": "Blockhash", "buying": "Koupit", "confirm": "Potvrdit", "contains": "Obsahuje", @@ -940,7 +958,9 @@ "please_check_again": "Zkontrolujte to prosím znovu", "please_try_again": "Zkuste to prosím znovu", "really_wanna": "Opravdu chcete", + "recipient": "Příjemce", "sign": "Podepsat", + "signer": "Signer", "title_check": "KONTROLA", "title_group": "SKUPINA", "title_information": "INFORMACE", @@ -951,7 +971,8 @@ "title_summary": "SHRNUTÍ", "title_threshold": "PRÁH", "unknown": "Neznámý", - "warning": "Varování" + "warning": "Varování", + "writable": "Zapisovatelný" } } } diff --git a/core/embed/rust/src/ui/translations/cs.rs b/core/embed/rust/src/ui/translations/cs.rs index 61ddf4e075..5ca8c75979 100644 --- a/core/embed/rust/src/ui/translations/cs.rs +++ b/core/embed/rust/src/ui/translations/cs.rs @@ -83,6 +83,7 @@ pub const TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { buttons__access: "PŘÍSTUP", buttons__again: "ZNOVU", buttons__allow: "DOVOLIT", + buttons__back: "ZADNÍ", buttons__back_up: "ZÁLOHOVAT", buttons__cancel: "ZRUŠIT", buttons__change: "ZMĚNIT", @@ -110,6 +111,7 @@ pub const TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { buttons__select: "VYBRAT", buttons__set: "NASTAVIT", buttons__show_all: "UKÁZAT VŠE", + buttons__show_details: "UKÁZAT DETAILY", buttons__show_words: "UKÁZAT SLOVA", buttons__skip: "PŘESKOČIT", buttons__try_again: "ZKUSIT ZNOVU", @@ -692,7 +694,19 @@ pub const TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { sign_message__confirm_message: "POTVRDIT ZPRÁVU", sign_message__message_size: "Velikost zprávy:", sign_message__verify_address: "Ověřte adresu", - stellar__account: "Účet", + solana__account_index: "Index účtu", + solana__associated_token_account: "Přidružený účet tokenů", + solana__confirm_multisig: "Potvrďte multisig", + solana__expected_fee: "Očekávaný poplatek", + solana__instruction_accounts_template: "Instrukce obsahuje {} účty a její data jsou {} bajty dlouhé.", + solana__instruction_data: "Instruktážní data", + solana__instruction_is_multisig: "Následující instrukce je instrukce multisig.", + solana__is_provided_via_lookup_table_template: "{} je poskytován prostřednictvím vyhledávací tabulky.", + solana__lookup_table_address: "Adresa tabulky vyhledávání", + solana__multiple_signers: "Více signatářů", + solana__token_address: "Adresa tokenů", + solana__transaction_contains_unknown_instructions: "Transakce obsahuje neznámé pokyny.", + solana__transaction_requires_x_signers_template: "Transakce vyžaduje {} signatáři, který zvyšuje poplatek.", stellar__account_merge: "Sloučení účtů", stellar__account_thresholds: "Práhové hodnoty účtu", stellar__add_signer: "Přidat podepisovatele", @@ -810,8 +824,10 @@ pub const TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { wipe_code__turn_on: "Zapnout ochranu kódem pro vymazání?", wipe_code__wipe_code_mismatch: "NESHODA KÓDU PRO VYMAZÁNÍ", word_count__title: "POČET SLOV", + words__account: "Účet", words__are_you_sure: "Jste si jisti?", words__array_of: "Pole o", + words__blockhash: "Blockhash", words__buying: "Koupit", words__confirm: "Potvrdit", words__contains: "Obsahuje", @@ -826,7 +842,9 @@ pub const TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { words__please_check_again: "Zkontrolujte to prosím znovu", words__please_try_again: "Zkuste to prosím znovu", words__really_wanna: "Opravdu chcete", + words__recipient: "Příjemce", words__sign: "Podepsat", + words__signer: "Signer", words__title_check: "KONTROLA", words__title_group: "SKUPINA", words__title_information: "INFORMACE", @@ -838,4 +856,5 @@ pub const TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { words__title_threshold: "PRÁH", words__unknown: "Neznámý", words__warning: "Varování", + words__writable: "Zapisovatelný", }; diff --git a/core/embed/rust/src/ui/translations/en.json b/core/embed/rust/src/ui/translations/en.json index 01fc0ac381..fb7f8f32b4 100644 --- a/core/embed/rust/src/ui/translations/en.json +++ b/core/embed/rust/src/ui/translations/en.json @@ -95,6 +95,7 @@ "access": "ACCESS", "again": "AGAIN", "allow": "ALLOW", + "back": "BACK", "back_up": "BACK UP", "cancel": "CANCEL", "change": "CHANGE", @@ -122,6 +123,7 @@ "select": "SELECT", "set": "SET", "show_all": "SHOW ALL", + "show_details": "SHOW DETAILS", "show_words": "SHOW WORDS", "skip": "SKIP", "try_again": "TRY AGAIN", @@ -773,8 +775,22 @@ "message_size": "Message size:", "verify_address": "VERIFY ADDRESS" }, + "solana": { + "account_index": "Account index", + "associated_token_account": "Associated token account", + "confirm_multisig": "Confirm multisig", + "expected_fee": "Expected fee", + "instruction_accounts_template": "Instruction contains {} accounts and its data is {} bytes long.", + "instruction_data": "Instruction data", + "instruction_is_multisig": "The following instruction is a multisig instruction.", + "is_provided_via_lookup_table_template": "{} is provided via a lookup table.", + "lookup_table_address": "Lookup table address", + "multiple_signers": "Multiple signers", + "token_address": "Token address", + "transaction_contains_unknown_instructions": "Transaction contains unknown instructions.", + "transaction_requires_x_signers_template": "Transaction requires {} signers which increases the fee." + }, "stellar": { - "account": "Account", "account_merge": "Account Merge", "account_thresholds": "Account Thresholds", "add_signer": "Add Signer", @@ -782,8 +798,10 @@ "all_will_be_sent_to": "All XLM will be sent to:", "allow_trust": "Allow trust", "asset": "Asset", + "balance_id": "Balance ID", "bump_sequence": "Bump Sequence", "buying": "Buying:", + "claim_claimable_balance": "Claim Claimable Balance", "clear_data": "Clear data", "clear_flags": "Clear flags", "confirm_issuer": "Confirm Issuer", @@ -906,14 +924,17 @@ "title": "NUMBER OF WORDS" }, "words": { + "account": "Account", "are_you_sure": "Are you sure?", "array_of": "Array of", + "blockhash": "Blockhash", "buying": "Buying", "confirm": "Confirm", "contains": "Contains", "continue_anyway": "Continue anyway?", "continue_with": "Continue with", "error": "Error", + "fee": "Fee", "from": "from", "keep_it_safe": "Keep it safe!", "know_what_your_doing": "Continue only if you know what you are doing!", @@ -922,7 +943,9 @@ "please_check_again": "Please check again", "please_try_again": "Please try again", "really_wanna": "Do you really want to", + "recipient": "Recipient", "sign": "Sign", + "signer": "Signer", "title_check": "CHECK", "title_group": "GROUP", "title_information": "INFORMATION", @@ -933,7 +956,8 @@ "title_summary": "SUMMARY", "title_threshold": "THRESHOLD", "unknown": "Unknown", - "warning": "Warning" + "warning": "Warning", + "writable": "Writable" } } } diff --git a/core/embed/rust/src/ui/translations/en.rs b/core/embed/rust/src/ui/translations/en.rs index c4b2279691..2a6c46678c 100644 --- a/core/embed/rust/src/ui/translations/en.rs +++ b/core/embed/rust/src/ui/translations/en.rs @@ -80,6 +80,7 @@ pub const EN_TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { buttons__access: "ACCESS", buttons__again: "AGAIN", buttons__allow: "ALLOW", + buttons__back: "BACK", buttons__back_up: "BACK UP", buttons__cancel: "CANCEL", buttons__change: "CHANGE", @@ -107,6 +108,7 @@ pub const EN_TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { buttons__select: "SELECT", buttons__set: "SET", buttons__show_all: "SHOW ALL", + buttons__show_details: "SHOW DETAILS", buttons__show_words: "SHOW WORDS", buttons__skip: "SKIP", buttons__try_again: "TRY AGAIN", @@ -689,7 +691,19 @@ pub const EN_TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { sign_message__confirm_message: "CONFIRM MESSAGE", sign_message__message_size: "Message size:", sign_message__verify_address: "VERIFY ADDRESS", - stellar__account: "Account", + solana__account_index: "Account index", + solana__associated_token_account: "Associated token account", + solana__confirm_multisig: "Confirm multisig", + solana__expected_fee: "Expected fee", + solana__instruction_accounts_template: "Instruction contains {} accounts and its data is {} bytes long.", + solana__instruction_data: "Instruction data", + solana__instruction_is_multisig: "The following instruction is a multisig instruction.", + solana__is_provided_via_lookup_table_template: "{} is provided via a lookup table.", + solana__lookup_table_address: "Lookup table address", + solana__multiple_signers: "Multiple signers", + solana__token_address: "Token address", + solana__transaction_contains_unknown_instructions: "Transaction contains unknown instructions.", + solana__transaction_requires_x_signers_template: "Transaction requires {} signers which increases the fee.", stellar__account_merge: "Account Merge", stellar__account_thresholds: "Account Thresholds", stellar__add_signer: "Add Signer", @@ -697,8 +711,10 @@ pub const EN_TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { stellar__all_will_be_sent_to: "All XLM will be sent to:", stellar__allow_trust: "Allow trust", stellar__asset: "Asset", + stellar__balance_id: "Balance ID", stellar__bump_sequence: "Bump Sequence", stellar__buying: "Buying:", + stellar__claim_claimable_balance: "Claim Claimable Balance", stellar__clear_data: "Clear data", stellar__clear_flags: "Clear flags", stellar__confirm_issuer: "Confirm Issuer", @@ -807,14 +823,17 @@ pub const EN_TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { wipe_code__turn_on: "Turn on wipe code protection?", wipe_code__wipe_code_mismatch: "Wipe code mismatch", word_count__title: "NUMBER OF WORDS", + words__account: "Account", words__are_you_sure: "Are you sure?", words__array_of: "Array of", + words__blockhash: "Blockhash", words__buying: "Buying", words__confirm: "Confirm", words__contains: "Contains", words__continue_anyway: "Continue anyway?", words__continue_with: "Continue with", words__error: "Error", + words__fee: "Fee", words__from: "from", words__keep_it_safe: "Keep it safe!", words__know_what_your_doing: "Continue only if you know what you are doing!", @@ -823,7 +842,9 @@ pub const EN_TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { words__please_check_again: "Please check again", words__please_try_again: "Please try again", words__really_wanna: "Do you really want to", + words__recipient: "Recipient", words__sign: "Sign", + words__signer: "Signer", words__title_check: "CHECK", words__title_group: "GROUP", words__title_information: "INFORMATION", @@ -835,4 +856,5 @@ pub const EN_TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { words__title_threshold: "THRESHOLD", words__unknown: "Unknown", words__warning: "Warning", + words__writable: "Writable", }; diff --git a/core/embed/rust/src/ui/translations/export.rs b/core/embed/rust/src/ui/translations/export.rs index 8ecf59bc61..cbf11d9f7c 100644 --- a/core/embed/rust/src/ui/translations/export.rs +++ b/core/embed/rust/src/ui/translations/export.rs @@ -91,6 +91,7 @@ pub static mp_module_trezortranslate: Module = obj_module! { /// buttons__access: str /// buttons__again: str /// buttons__allow: str + /// buttons__back: str /// buttons__back_up: str /// buttons__cancel: str /// buttons__change: str @@ -118,6 +119,7 @@ pub static mp_module_trezortranslate: Module = obj_module! { /// buttons__select: str /// buttons__set: str /// buttons__show_all: str + /// buttons__show_details: str /// buttons__show_words: str /// buttons__skip: str /// buttons__try_again: str @@ -700,7 +702,19 @@ pub static mp_module_trezortranslate: Module = obj_module! { /// sign_message__confirm_message: str /// sign_message__message_size: str /// sign_message__verify_address: str - /// stellar__account: str + /// solana__account_index: str + /// solana__associated_token_account: str + /// solana__confirm_multisig: str + /// solana__expected_fee: str + /// solana__instruction_accounts_template: str + /// solana__instruction_data: str + /// solana__instruction_is_multisig: str + /// solana__is_provided_via_lookup_table_template: str + /// solana__lookup_table_address: str + /// solana__multiple_signers: str + /// solana__token_address: str + /// solana__transaction_contains_unknown_instructions: str + /// solana__transaction_requires_x_signers_template: str /// stellar__account_merge: str /// stellar__account_thresholds: str /// stellar__add_signer: str @@ -708,8 +722,10 @@ pub static mp_module_trezortranslate: Module = obj_module! { /// stellar__all_will_be_sent_to: str /// stellar__allow_trust: str /// stellar__asset: str + /// stellar__balance_id: str /// stellar__bump_sequence: str /// stellar__buying: str + /// stellar__claim_claimable_balance: str /// stellar__clear_data: str /// stellar__clear_flags: str /// stellar__confirm_issuer: str @@ -818,14 +834,17 @@ pub static mp_module_trezortranslate: Module = obj_module! { /// wipe_code__turn_on: str /// wipe_code__wipe_code_mismatch: str /// word_count__title: str + /// words__account: str /// words__are_you_sure: str /// words__array_of: str + /// words__blockhash: str /// words__buying: str /// words__confirm: str /// words__contains: str /// words__continue_anyway: str /// words__continue_with: str /// words__error: str + /// words__fee: str /// words__from: str /// words__keep_it_safe: str /// words__know_what_your_doing: str @@ -834,7 +853,9 @@ pub static mp_module_trezortranslate: Module = obj_module! { /// words__please_check_again: str /// words__please_try_again: str /// words__really_wanna: str + /// words__recipient: str /// words__sign: str + /// words__signer: str /// words__title_check: str /// words__title_group: str /// words__title_information: str @@ -846,5 +867,6 @@ pub static mp_module_trezortranslate: Module = obj_module! { /// words__title_threshold: str /// words__unknown: str /// words__warning: str + /// words__writable: str Qstr::MP_QSTR_TR => TR_OBJ.as_obj(), }; diff --git a/core/embed/rust/src/ui/translations/fr.json b/core/embed/rust/src/ui/translations/fr.json index 47a42eee0b..0d5c3189ee 100644 --- a/core/embed/rust/src/ui/translations/fr.json +++ b/core/embed/rust/src/ui/translations/fr.json @@ -113,6 +113,7 @@ "access": "ACCÉDER", "again": "ENCORE", "allow": "PERMETTRE", + "back": "DOS", "back_up": "SAUVEGARDE", "cancel": "ANNULER", "change": "CHANGEMENT", @@ -140,6 +141,7 @@ "select": "SÉLECTIONNER", "set": "ENSEMBLE", "show_all": "AFFICHER TOUT", + "show_details": "AFFICHER LES DÉTAILS", "show_words": "MONTRER DES MOTS", "skip": "SAUTER", "try_again": "ESSAYER À NOUVEAU", @@ -791,8 +793,22 @@ "message_size": "Taille du message:", "verify_address": "Vérifier l'adresse" }, + "solana": { + "account_index": "Indice du compte", + "associated_token_account": "Compte de jeton associé", + "confirm_multisig": "Confirmer Multisig", + "expected_fee": "Frais attendus", + "instruction_accounts_template": "L'instruction contient des comptes {} et ses données sont {} octets longs.", + "instruction_data": "Données d'instructions", + "instruction_is_multisig": "L'instruction suivante est une instruction multisig.", + "is_provided_via_lookup_table_template": "{} est fourni via une table de recherche.", + "lookup_table_address": "Adresse de table de recherche", + "multiple_signers": "Signataires multiples", + "token_address": "Adresse de jeton", + "transaction_contains_unknown_instructions": "La transaction contient des instructions inconnues.", + "transaction_requires_x_signers_template": "La transaction nécessite des signataires {} qui augmentent les frais." + }, "stellar": { - "account": "Compte", "account_merge": "Fusion du compte", "account_thresholds": "Seuils de compte", "add_signer": "Ajouter le signataire", @@ -924,8 +940,10 @@ "title": "NOMBRE DE MOTS" }, "words": { + "account": "Compte", "are_you_sure": "Es-tu sûr?", "array_of": "Tableau de", + "blockhash": "Blockhash", "buying": "Achat", "confirm": "Confirmer", "contains": "contient", @@ -940,7 +958,9 @@ "please_check_again": "Veuillez vérifier à nouveau", "please_try_again": "Veuillez réessayer", "really_wanna": "Voulez-vous vraiment", + "recipient": "Destinataire", "sign": "Signe", + "signer": "Signataire", "title_check": "VÉRIFIER", "title_group": "GROUPE", "title_information": "INFORMATION", @@ -951,7 +971,8 @@ "title_summary": "RÉSUMÉ", "title_threshold": "SEUIL", "unknown": "Inconnu", - "warning": "Avertissement" + "warning": "Avertissement", + "writable": "Scrutin" } } } diff --git a/core/embed/rust/src/ui/translations/fr.rs b/core/embed/rust/src/ui/translations/fr.rs index a676e87f25..f27f32f0fd 100644 --- a/core/embed/rust/src/ui/translations/fr.rs +++ b/core/embed/rust/src/ui/translations/fr.rs @@ -83,6 +83,7 @@ pub const TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { buttons__access: "ACCÉDER", buttons__again: "ENCORE", buttons__allow: "PERMETTRE", + buttons__back: "DOS", buttons__back_up: "SAUVEGARDE", buttons__cancel: "ANNULER", buttons__change: "CHANGEMENT", @@ -110,6 +111,7 @@ pub const TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { buttons__select: "SÉLECTIONNER", buttons__set: "ENSEMBLE", buttons__show_all: "AFFICHER TOUT", + buttons__show_details: "AFFICHER LES DÉTAILS", buttons__show_words: "MONTRER DES MOTS", buttons__skip: "SAUTER", buttons__try_again: "ESSAYER À NOUVEAU", @@ -692,7 +694,19 @@ pub const TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { sign_message__confirm_message: "Confirmer le message", sign_message__message_size: "Taille du message:", sign_message__verify_address: "Vérifier l'adresse", - stellar__account: "Compte", + solana__account_index: "Indice du compte", + solana__associated_token_account: "Compte de jeton associé", + solana__confirm_multisig: "Confirmer Multisig", + solana__expected_fee: "Frais attendus", + solana__instruction_accounts_template: "L'instruction contient des comptes {} et ses données sont {} octets longs.", + solana__instruction_data: "Données d'instructions", + solana__instruction_is_multisig: "L'instruction suivante est une instruction multisig.", + solana__is_provided_via_lookup_table_template: "{} est fourni via une table de recherche.", + solana__lookup_table_address: "Adresse de table de recherche", + solana__multiple_signers: "Signataires multiples", + solana__token_address: "Adresse de jeton", + solana__transaction_contains_unknown_instructions: "La transaction contient des instructions inconnues.", + solana__transaction_requires_x_signers_template: "La transaction nécessite des signataires {} qui augmentent les frais.", stellar__account_merge: "Fusion du compte", stellar__account_thresholds: "Seuils de compte", stellar__add_signer: "Ajouter le signataire", @@ -810,8 +824,10 @@ pub const TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { wipe_code__turn_on: "Activer la protection du code d'essuyage?", wipe_code__wipe_code_mismatch: "Effacer le décalage du code", word_count__title: "NOMBRE DE MOTS", + words__account: "Compte", words__are_you_sure: "Es-tu sûr?", words__array_of: "Tableau de", + words__blockhash: "Blockhash", words__buying: "Achat", words__confirm: "Confirmer", words__contains: "contient", @@ -826,7 +842,9 @@ pub const TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { words__please_check_again: "Veuillez vérifier à nouveau", words__please_try_again: "Veuillez réessayer", words__really_wanna: "Voulez-vous vraiment", + words__recipient: "Destinataire", words__sign: "Signe", + words__signer: "Signataire", words__title_check: "VÉRIFIER", words__title_group: "GROUPE", words__title_information: "INFORMATION", @@ -838,4 +856,5 @@ pub const TRANSLATIONS: TranslationsGeneral = TranslationsGeneral { words__title_threshold: "SEUIL", words__unknown: "Inconnu", words__warning: "Avertissement", + words__writable: "Scrutin", }; diff --git a/core/embed/rust/src/ui/translations/general.rs b/core/embed/rust/src/ui/translations/general.rs index f5ff3caff5..fc3ad86e34 100644 --- a/core/embed/rust/src/ui/translations/general.rs +++ b/core/embed/rust/src/ui/translations/general.rs @@ -677,7 +677,6 @@ pub struct TranslationsGeneral { pub sign_message__confirm_message: &'static str, pub sign_message__message_size: &'static str, pub sign_message__verify_address: &'static str, - pub stellar__account: &'static str, pub stellar__account_merge: &'static str, pub stellar__account_thresholds: &'static str, pub stellar__add_signer: &'static str, @@ -834,6 +833,29 @@ pub struct TranslationsGeneral { pub plurals__lock_after_x_minutes: &'static str, pub plurals__lock_after_x_seconds: &'static str, pub words__confirm: &'static str, + pub buttons__back: &'static str, + pub buttons__show_details: &'static str, + pub solana__account_index: &'static str, + pub solana__associated_token_account: &'static str, + pub solana__confirm_multisig: &'static str, + pub solana__expected_fee: &'static str, + pub solana__instruction_accounts_template: &'static str, + pub solana__instruction_data: &'static str, + pub solana__instruction_is_multisig: &'static str, + pub solana__is_provided_via_lookup_table_template: &'static str, + pub solana__lookup_table_address: &'static str, + pub solana__multiple_signers: &'static str, + pub solana__token_address: &'static str, + pub solana__transaction_contains_unknown_instructions: &'static str, + pub solana__transaction_requires_x_signers_template: &'static str, + pub stellar__balance_id: &'static str, + pub stellar__claim_claimable_balance: &'static str, + pub words__account: &'static str, + pub words__blockhash: &'static str, + pub words__fee: &'static str, + pub words__recipient: &'static str, + pub words__signer: &'static str, + pub words__writable: &'static str, } #[rustfmt::skip] @@ -1520,7 +1542,6 @@ impl TranslationsGeneral { "sign_message__confirm_message" => Some((self.sign_message__confirm_message, 672)), "sign_message__message_size" => Some((self.sign_message__message_size, 673)), "sign_message__verify_address" => Some((self.sign_message__verify_address, 674)), - "stellar__account" => Some((self.stellar__account, 675)), "stellar__account_merge" => Some((self.stellar__account_merge, 676)), "stellar__account_thresholds" => Some((self.stellar__account_thresholds, 677)), "stellar__add_signer" => Some((self.stellar__add_signer, 678)), @@ -1677,6 +1698,29 @@ impl TranslationsGeneral { "plurals__lock_after_x_minutes" => Some((self.plurals__lock_after_x_minutes, 829)), "plurals__lock_after_x_seconds" => Some((self.plurals__lock_after_x_seconds, 830)), "words__confirm" => Some((self.words__confirm, 831)), + "buttons__back" => Some((self.buttons__back, 832)), + "buttons__show_details" => Some((self.buttons__show_details, 833)), + "solana__account_index" => Some((self.solana__account_index, 834)), + "solana__associated_token_account" => Some((self.solana__associated_token_account, 835)), + "solana__confirm_multisig" => Some((self.solana__confirm_multisig, 836)), + "solana__expected_fee" => Some((self.solana__expected_fee, 837)), + "solana__instruction_accounts_template" => Some((self.solana__instruction_accounts_template, 838)), + "solana__instruction_data" => Some((self.solana__instruction_data, 839)), + "solana__instruction_is_multisig" => Some((self.solana__instruction_is_multisig, 840)), + "solana__is_provided_via_lookup_table_template" => Some((self.solana__is_provided_via_lookup_table_template, 841)), + "solana__lookup_table_address" => Some((self.solana__lookup_table_address, 842)), + "solana__multiple_signers" => Some((self.solana__multiple_signers, 843)), + "solana__token_address" => Some((self.solana__token_address, 844)), + "solana__transaction_contains_unknown_instructions" => Some((self.solana__transaction_contains_unknown_instructions, 845)), + "solana__transaction_requires_x_signers_template" => Some((self.solana__transaction_requires_x_signers_template, 846)), + "stellar__balance_id" => Some((self.stellar__balance_id, 847)), + "stellar__claim_claimable_balance" => Some((self.stellar__claim_claimable_balance, 848)), + "words__account" => Some((self.words__account, 849)), + "words__blockhash" => Some((self.words__blockhash, 850)), + "words__fee" => Some((self.words__fee, 851)), + "words__recipient" => Some((self.words__recipient, 852)), + "words__signer" => Some((self.words__signer, 853)), + "words__writable" => Some((self.words__writable, 854)), _ => None, } } diff --git a/core/embed/rust/src/ui/translations/order.json b/core/embed/rust/src/ui/translations/order.json index 7a3a6f415d..9046775d4c 100644 --- a/core/embed/rust/src/ui/translations/order.json +++ b/core/embed/rust/src/ui/translations/order.json @@ -830,5 +830,28 @@ "828": "plurals__lock_after_x_milliseconds", "829": "plurals__lock_after_x_minutes", "830": "plurals__lock_after_x_seconds", - "831": "words__confirm" + "831": "words__confirm", + "832": "buttons__back", + "833": "buttons__show_details", + "834": "solana__account_index", + "835": "solana__associated_token_account", + "836": "solana__confirm_multisig", + "837": "solana__expected_fee", + "838": "solana__instruction_accounts_template", + "839": "solana__instruction_data", + "840": "solana__instruction_is_multisig", + "841": "solana__is_provided_via_lookup_table_template", + "842": "solana__lookup_table_address", + "843": "solana__multiple_signers", + "844": "solana__token_address", + "845": "solana__transaction_contains_unknown_instructions", + "846": "solana__transaction_requires_x_signers_template", + "847": "stellar__balance_id", + "848": "stellar__claim_claimable_balance", + "849": "words__account", + "850": "words__blockhash", + "851": "words__fee", + "852": "words__recipient", + "853": "words__signer", + "854": "words__writable" } diff --git a/core/mocks/generated/trezortranslate.pyi b/core/mocks/generated/trezortranslate.pyi index a3185d0d24..8fb47b95ce 100644 --- a/core/mocks/generated/trezortranslate.pyi +++ b/core/mocks/generated/trezortranslate.pyi @@ -83,6 +83,7 @@ class TR: buttons__access: str buttons__again: str buttons__allow: str + buttons__back: str buttons__back_up: str buttons__cancel: str buttons__change: str @@ -110,6 +111,7 @@ class TR: buttons__select: str buttons__set: str buttons__show_all: str + buttons__show_details: str buttons__show_words: str buttons__skip: str buttons__try_again: str @@ -692,7 +694,19 @@ class TR: sign_message__confirm_message: str sign_message__message_size: str sign_message__verify_address: str - stellar__account: str + solana__account_index: str + solana__associated_token_account: str + solana__confirm_multisig: str + solana__expected_fee: str + solana__instruction_accounts_template: str + solana__instruction_data: str + solana__instruction_is_multisig: str + solana__is_provided_via_lookup_table_template: str + solana__lookup_table_address: str + solana__multiple_signers: str + solana__token_address: str + solana__transaction_contains_unknown_instructions: str + solana__transaction_requires_x_signers_template: str stellar__account_merge: str stellar__account_thresholds: str stellar__add_signer: str @@ -700,8 +714,10 @@ class TR: stellar__all_will_be_sent_to: str stellar__allow_trust: str stellar__asset: str + stellar__balance_id: str stellar__bump_sequence: str stellar__buying: str + stellar__claim_claimable_balance: str stellar__clear_data: str stellar__clear_flags: str stellar__confirm_issuer: str @@ -810,14 +826,17 @@ class TR: wipe_code__turn_on: str wipe_code__wipe_code_mismatch: str word_count__title: str + words__account: str words__are_you_sure: str words__array_of: str + words__blockhash: str words__buying: str words__confirm: str words__contains: str words__continue_anyway: str words__continue_with: str words__error: str + words__fee: str words__from: str words__keep_it_safe: str words__know_what_your_doing: str @@ -826,7 +845,9 @@ class TR: words__please_check_again: str words__please_try_again: str words__really_wanna: str + words__recipient: str words__sign: str + words__signer: str words__title_check: str words__title_group: str words__title_information: str @@ -838,3 +859,4 @@ class TR: words__title_threshold: str words__unknown: str words__warning: str + words__writable: str diff --git a/core/src/apps/solana/layout.py b/core/src/apps/solana/layout.py index c083923d13..334362d552 100644 --- a/core/src/apps/solana/layout.py +++ b/core/src/apps/solana/layout.py @@ -9,6 +9,7 @@ from trezor.ui.layouts import ( confirm_solana_tx, confirm_value, ) +from trezortranslate import TR from apps.common.paths import address_n_to_str @@ -34,9 +35,9 @@ def _format_path(path: list[int]) -> str: def _get_address_reference_props(address: AddressReference, display_name: str): return ( - (f"{display_name} is provided via a lookup table.", ""), - ("Lookup table address:", base58.encode(address[0])), - ("Account index:", f"{address[1]}"), + (TR.solana__is_provided_via_lookup_table_template.format(display_name), ""), + (f"{TR.solana__lookup_table_address}:", base58.encode(address[0])), + (f"{TR.solana__account_index}:", f"{address[1]}"), ) @@ -100,7 +101,7 @@ async def confirm_instruction( if len(account_value) == 2: signer_suffix = "" if account_value[0] == signer_public_key: - signer_suffix = " (Signer)" + signer_suffix = f" ({TR.words__signer})" account_data.append( ( @@ -126,8 +127,8 @@ async def confirm_instruction( if instruction.multisig_signers: await confirm_metadata( "confirm_multisig", - "Confirm multisig", - "The following instruction is a multisig instruction.", + TR.solana__confirm_multisig, + TR.solana__instruction_is_multisig, br_code=ButtonRequestType.Other, ) @@ -140,7 +141,7 @@ async def confirm_instruction( path_str = f" ({address_n_to_str(signer_path)})" signers.append( - (f"Signer {i}{path_str}:", base58.encode(multisig_signer[0])) + (f"{TR.words__signer} {i}{path_str}:", base58.encode(multisig_signer[0])) ) await confirm_properties( @@ -152,13 +153,13 @@ async def confirm_instruction( def get_address_type(address_type: AddressType) -> str: if address_type == AddressType.AddressSig: - return "(Writable, Signer)" + return f"({TR.words__writable}, {TR.words__signer})" if address_type == AddressType.AddressSigReadOnly: - return "(Signer)" + return f"({TR.words__signer})" if address_type == AddressType.AddressReadOnly: return "" if address_type == AddressType.AddressRw: - return "(Writable)" + return f"({TR.words__writable})" raise ValueError # Invalid address type @@ -176,18 +177,18 @@ async def confirm_unsupported_instruction_details( ( ( NORMAL, - f"Instruction contains {len(instruction.accounts)} accounts and its data is {len(instruction.instruction_data)} bytes long.", + TR.solana__instruction_accounts_template.format(len(instruction.accounts), len(instruction.instruction_data)), ), ), - "Show details", - confirm="Continue", + TR.buttons__show_details, + confirm=TR.buttons__continue, ) if should_show_instruction_details: await confirm_properties( "instruction_data", title, - (("Instruction data:", bytes(instruction.instruction_data)),), + ((f"{TR.solana__instruction_data}:", bytes(instruction.instruction_data)),), ) accounts = [] @@ -202,14 +203,14 @@ async def confirm_unsupported_instruction_details( accounts.append( ( - f"Account {i}{path_str} {address_type}:", + f"{TR.words__account} {i}{path_str} {address_type}:", base58.encode(account_public_key), ) ) elif len(account) == 3: address_type = get_address_type(account[2]) accounts += _get_address_reference_props( - account, f"Account {i} {address_type}" + account, f"{TR.words__account} {i} {address_type}" ) else: raise ValueError # Invalid account value @@ -259,12 +260,12 @@ async def confirm_system_transfer( blockhash: bytes, ) -> None: await confirm_value( - title="Recipient", + title=TR.words__recipient, value=base58.encode(transfer_instruction.recipient_account[0]), description="", br_type="confirm_recipient", br_code=ButtonRequestType.ConfirmOutput, - verb="CONTINUE", + verb=TR.buttons__continue, ) await confirm_custom_transaction( @@ -288,24 +289,24 @@ async def confirm_token_transfer( blockhash: bytes, ): await confirm_value( - title="Recipient", + title=TR.words__recipient, value=base58.encode(destination_account), description="", br_type="confirm_recipient", br_code=ButtonRequestType.ConfirmOutput, - verb="CONTINUE", - info_items=(("Associated token account:", base58.encode(token_account)),) + verb=TR.buttons__continue, + info_items=((f"{TR.solana__associated_token_account}:", base58.encode(token_account)),) if token_account != destination_account else None, ) await confirm_value( - title="Token address", + title=TR.solana__token_address, value=base58.encode(token_mint), description="", br_type="confirm_token_address", br_code=ButtonRequestType.ConfirmOutput, - verb="CONTINUE", + verb=TR.buttons__continue, ) await confirm_custom_transaction( @@ -329,10 +330,10 @@ async def confirm_custom_transaction( await confirm_solana_tx( amount=f"{format_amount(amount, decimals)} {unit}", fee=f"{format_amount(fee, 9)} SOL", - fee_title="Expected fee:", + fee_title=f"{TR.solana__expected_fee}:", items=( - ("Account:", _format_path(signer_path)), - ("Blockhash:", base58.encode(blockhash)), + (f"{TR.words__account}:", _format_path(signer_path)), + (f"{TR.words__blockhash}:", base58.encode(blockhash)), ), ) @@ -344,9 +345,9 @@ async def confirm_transaction( amount="", amount_title="", fee=f"{format_amount(fee, 9)} SOL", - fee_title="Expected fee:", + fee_title=f"{TR.solana__expected_fee}:", items=( - ("Account:", _format_path(signer_path)), - ("Blockhash:", base58.encode(blockhash)), + (f"{TR.words__account}:", _format_path(signer_path)), + (f"{TR.words__blockhash}:", base58.encode(blockhash)), ), ) diff --git a/core/src/apps/solana/sign_tx.py b/core/src/apps/solana/sign_tx.py index 156baa8704..a5faa8f653 100644 --- a/core/src/apps/solana/sign_tx.py +++ b/core/src/apps/solana/sign_tx.py @@ -22,6 +22,7 @@ async def sign_tx( from trezor.enums import ButtonRequestType from trezor.messages import SolanaTxSignature from trezor.ui.layouts import confirm_metadata, show_warning + from trezortranslate import TR from apps.common import seed @@ -41,14 +42,14 @@ async def sign_tx( if transaction.blind_signing: await show_warning( - "warning_blind_signing", "Transaction contains unknown instructions." + "warning_blind_signing", TR.solana__transaction_contains_unknown_instructions ) if transaction.required_signers_count > 1: await confirm_metadata( "multiple_signers", - "Multiple signers", - f"Transaction requires {transaction.required_signers_count} signers which increases the fee.", + TR.solana__multiple_signers, + TR.solana__transaction_requires_x_signers_template.format(transaction.required_signers_count), br_code=ButtonRequestType.Other, ) diff --git a/core/src/apps/stellar/operations/layout.py b/core/src/apps/stellar/operations/layout.py index c0e5516b0a..87bc4d8e36 100644 --- a/core/src/apps/stellar/operations/layout.py +++ b/core/src/apps/stellar/operations/layout.py @@ -86,7 +86,7 @@ async def confirm_create_account_op(op: StellarCreateAccountOp) -> None: "op_create_account", TR.stellar__create_account, ( - (TR.stellar__account, op.new_account), + (TR.words__account, op.new_account), (TR.stellar__initial_balance, format_amount(op.starting_balance)), ), ) @@ -281,7 +281,7 @@ async def confirm_set_options_op(op: StellarSetOptionsOp) -> None: title = TR.stellar__remove_signer data: str | bytes = "" if signer_type == StellarSignerType.ACCOUNT: - description = f"{TR.stellar__account}:" + description = f"{TR.words__account}:" data = helpers.address_from_public_key(signer_key) elif signer_type == StellarSignerType.PRE_AUTH: description = TR.stellar__preauth_transaction @@ -306,8 +306,8 @@ async def confirm_claim_claimable_balance_op( balance_id = hexlify(op.balance_id).decode() await confirm_metadata( "op_claim_claimable_balance", - "Claim Claimable Balance", - "Balance ID: {}", + TR.stellar__claim_claimable_balance, + TR.stellar__balance_id + ": {}", balance_id, ) diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index 3799755340..e3481aa5a4 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -988,8 +988,8 @@ async def confirm_value( trezorui2.confirm_with_info( title=title.upper(), items=((ui.NORMAL, value),), - button="CONFIRM", - info_button="INFO", + button=TR.buttons__confirm, + info_button=TR.buttons__info, ) ) @@ -1013,7 +1013,7 @@ async def confirm_value( title=info_title.upper(), action=info_value, description=description, - verb="BACK", + verb=TR.buttons__back, verb_cancel="<", hold=False, reverse=False, @@ -1061,11 +1061,13 @@ async def confirm_solana_tx( amount: str, fee: str, items: Iterable[tuple[str, str]], - amount_title="Amount:", - fee_title="Fee", + amount_title: str | None = None, + fee_title: str | None = None, br_type: str = "confirm_solana_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, ): + amount_title = amount_title or f"{TR.words__amount}:" # def_arg + fee_title = fee_title or TR.words__fee # def_arg await raise_if_not_confirmed( interact( RustLayout( @@ -1095,9 +1097,9 @@ async def confirm_ethereum_tx( ) -> None: summary_layout = RustLayout( trezorui2.altcoin_tx_summary( - amount_title="Amount:", + amount_title=f"{TR.words__amount}:", amount_value=total_amount, - fee_title="Maximum fee:", + fee_title=TR.send__maximum_fee, fee_value=maximum_fee, items=items, ) @@ -1107,9 +1109,9 @@ async def confirm_ethereum_tx( # Allowing going back and forth between recipient and summary/details await confirm_blob( br_type, - "RECIPIENT", + TR.words__recipient, recipient, - verb="CONTINUE", + verb=TR.buttons__continue, chunkify=chunkify, ) @@ -1178,11 +1180,11 @@ async def confirm_modify_output( ) -> None: address_layout = RustLayout( trezorui2.confirm_blob( - title="MODIFY AMOUNT", + title=TR.modify_amount__title, data=address, - verb="CONTINUE", + verb=TR.buttons__continue, verb_cancel=None, - description="Address:", + description=TR.address__address, extra=None, ) )