From 7ee1259aaa08d80c12c9a32ed983f99ec9e06de7 Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Tue, 14 Jan 2025 18:30:38 +0200 Subject: [PATCH] refactor(core): use layout name for translation font keys It would simplify `TranslationsDir.load_lang` method. [no changelog] --- core/translations/cli.py | 12 +++--------- core/translations/cs.json | 8 ++++---- core/translations/de.json | 8 ++++---- core/translations/es.json | 8 ++++---- core/translations/fr.json | 8 ++++---- core/translations/it.json | 8 ++++---- core/translations/pt.json | 8 ++++---- core/translations/tr.json | 8 ++++---- python/src/trezorlib/_internal/translations.py | 6 +++--- python/src/trezorlib/debuglink.py | 3 +++ 10 files changed, 37 insertions(+), 40 deletions(-) diff --git a/core/translations/cli.py b/core/translations/cli.py index 734a68cec5..77bece76b1 100755 --- a/core/translations/cli.py +++ b/core/translations/cli.py @@ -124,14 +124,8 @@ class TranslationsDir: def _lang_path(self, lang: str) -> Path: return self.path / f"{lang}.json" - def load_lang(self, lang: str, model_groups: bool = True) -> translations.JsonDef: - json_def = json.loads(self._lang_path(lang).read_text()) - # special-case for T2B1 and T3B1, so that we keep the info in one place instead - # of duplicating it in two entries, risking a desync - if model_groups and (fonts_safe3 := json_def.get("fonts", {}).get("##Safe3")) is not None: - json_def["fonts"]["T2B1"] = fonts_safe3 - json_def["fonts"]["T3B1"] = fonts_safe3 - return json_def + def load_lang(self, lang: str) -> translations.JsonDef: + return json.loads(self._lang_path(lang).read_text()) def save_lang(self, lang: str, data: translations.JsonDef) -> None: self._lang_path(lang).write_text( @@ -150,7 +144,7 @@ class TranslationsDir: def update_version_from_h(self, check: bool = False) -> VersionTuple: version = _version_from_version_h() for lang in self.all_languages(): - blob_json = self.load_lang(lang, model_groups=False) + blob_json = self.load_lang(lang) blob_version = translations.version_from_json( blob_json["header"]["version"] ) diff --git a/core/translations/cs.json b/core/translations/cs.json index 28df4065ce..54a0293afe 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -1,6 +1,6 @@ { "fonts": { - "##Safe3": { + "Caesar": { "1_FONT_NORMAL": "font_pixeloperator_regular_8_cs.json", "2_FONT_BOLD": "font_pixeloperator_bold_8_cs.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_cs.json", @@ -10,7 +10,7 @@ "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_cs.json", "8_FONT_SUB": null }, - "T2T1": { + "Bolt": { "1_FONT_NORMAL": "font_tthoves_regular_21_cs.json", "2_FONT_BOLD": null, "3_FONT_MONO": "font_robotomono_medium_20_cs.json", @@ -20,7 +20,7 @@ "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_cs.json", "8_FONT_SUB": null }, - "T3T1": { + "Delizia": { "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_cs.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_cs.json", "3_FONT_MONO": "font_robotomono_medium_21_cs.json", @@ -30,7 +30,7 @@ "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_cs.json" }, - "T3W1": { + "Eckhart": { "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_cs.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_cs.json", "3_FONT_MONO": "font_robotomono_medium_21_cs.json", diff --git a/core/translations/de.json b/core/translations/de.json index d412cd9885..bc2c6fdcd8 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -1,6 +1,6 @@ { "fonts": { - "##Safe3": { + "Caesar": { "1_FONT_NORMAL": "font_pixeloperator_regular_8_de.json", "2_FONT_BOLD": "font_pixeloperator_bold_8_de.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_de.json", @@ -10,7 +10,7 @@ "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_de.json", "8_FONT_SUB": null }, - "T2T1": { + "Bolt": { "1_FONT_NORMAL": "font_tthoves_regular_21_de.json", "2_FONT_BOLD": null, "3_FONT_MONO": "font_robotomono_medium_20_de.json", @@ -20,7 +20,7 @@ "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_de.json", "8_FONT_SUB": null }, - "T3T1": { + "Delizia": { "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_de.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_de.json", "3_FONT_MONO": "font_robotomono_medium_21_de.json", @@ -30,7 +30,7 @@ "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_de.json" }, - "T3W1": { + "Eckhart": { "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_de.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_de.json", "3_FONT_MONO": "font_robotomono_medium_21_de.json", diff --git a/core/translations/es.json b/core/translations/es.json index d258dc9a21..0367e5f2f7 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -1,6 +1,6 @@ { "fonts": { - "##Safe3": { + "Caesar": { "1_FONT_NORMAL": "font_pixeloperator_regular_8_es.json", "2_FONT_BOLD": "font_pixeloperator_bold_8_es.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_es.json", @@ -10,7 +10,7 @@ "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_es.json", "8_FONT_SUB": null }, - "T2T1": { + "Bolt": { "1_FONT_NORMAL": "font_tthoves_regular_21_es.json", "2_FONT_BOLD": null, "3_FONT_MONO": "font_robotomono_medium_20_es.json", @@ -20,7 +20,7 @@ "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_es.json", "8_FONT_SUB": null }, - "T3T1": { + "Delizia": { "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_es.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_es.json", "3_FONT_MONO": "font_robotomono_medium_21_es.json", @@ -30,7 +30,7 @@ "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_es.json" }, - "T3W1": { + "Eckhart": { "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_es.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_es.json", "3_FONT_MONO": "font_robotomono_medium_21_es.json", diff --git a/core/translations/fr.json b/core/translations/fr.json index 4830585069..dcf7816277 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -1,6 +1,6 @@ { "fonts": { - "##Safe3": { + "Caesar": { "1_FONT_NORMAL": "font_pixeloperator_regular_8_fr.json", "2_FONT_BOLD": "font_pixeloperator_bold_8_fr.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_fr.json", @@ -10,7 +10,7 @@ "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_fr.json", "8_FONT_SUB": null }, - "T2T1": { + "Bolt": { "1_FONT_NORMAL": "font_tthoves_regular_21_fr.json", "2_FONT_BOLD": null, "3_FONT_MONO": "font_robotomono_medium_20_fr.json", @@ -20,7 +20,7 @@ "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_fr.json", "8_FONT_SUB": null }, - "T3T1": { + "Delizia": { "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_fr.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_fr.json", "3_FONT_MONO": "font_robotomono_medium_21_fr.json", @@ -30,7 +30,7 @@ "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_fr.json" }, - "T3W1": { + "Eckhart": { "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_fr.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_fr.json", "3_FONT_MONO": "font_robotomono_medium_21_fr.json", diff --git a/core/translations/it.json b/core/translations/it.json index f06f00bde5..07b7bcd927 100644 --- a/core/translations/it.json +++ b/core/translations/it.json @@ -1,6 +1,6 @@ { "fonts": { - "##Safe3": { + "Caesar": { "1_FONT_NORMAL": "font_pixeloperator_regular_8_it.json", "2_FONT_BOLD": "font_pixeloperator_bold_8_it.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_it.json", @@ -10,7 +10,7 @@ "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_it.json", "8_FONT_SUB": null }, - "T2T1": { + "Bolt": { "1_FONT_NORMAL": "font_tthoves_regular_21_it.json", "2_FONT_BOLD": null, "3_FONT_MONO": "font_robotomono_medium_20_it.json", @@ -20,7 +20,7 @@ "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_it.json", "8_FONT_SUB": null }, - "T3T1": { + "Delizia": { "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_it.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_it.json", "3_FONT_MONO": "font_robotomono_medium_21_it.json", @@ -30,7 +30,7 @@ "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_it.json" }, - "T3W1": { + "Eckhart": { "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_it.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_it.json", "3_FONT_MONO": "font_robotomono_medium_21_it.json", diff --git a/core/translations/pt.json b/core/translations/pt.json index cfc7d82382..8fa4abffca 100644 --- a/core/translations/pt.json +++ b/core/translations/pt.json @@ -1,6 +1,6 @@ { "fonts": { - "##Safe3": { + "Caesar": { "1_FONT_NORMAL": "font_pixeloperator_regular_8_pt.json", "2_FONT_BOLD": "font_pixeloperator_bold_8_pt.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_pt.json", @@ -10,7 +10,7 @@ "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_pt.json", "8_FONT_SUB": null }, - "T2T1": { + "Bolt": { "1_FONT_NORMAL": "font_tthoves_regular_21_pt.json", "2_FONT_BOLD": null, "3_FONT_MONO": "font_robotomono_medium_20_pt.json", @@ -20,7 +20,7 @@ "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_pt.json", "8_FONT_SUB": null }, - "T3T1": { + "Delizia": { "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_pt.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_pt.json", "3_FONT_MONO": "font_robotomono_medium_21_pt.json", @@ -30,7 +30,7 @@ "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_pt.json" }, - "T3W1": { + "Eckhart": { "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_pt.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_pt.json", "3_FONT_MONO": "font_robotomono_medium_21_pt.json", diff --git a/core/translations/tr.json b/core/translations/tr.json index 7f61dbf270..69345af6db 100644 --- a/core/translations/tr.json +++ b/core/translations/tr.json @@ -1,6 +1,6 @@ { "fonts": { - "##Safe3": { + "Caesar": { "1_FONT_NORMAL": "font_pixeloperator_regular_8_tr.json", "2_FONT_BOLD": "font_pixeloperator_bold_8_tr.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_tr.json", @@ -10,7 +10,7 @@ "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_tr.json", "8_FONT_SUB": null }, - "T2T1": { + "Bolt": { "1_FONT_NORMAL": "font_tthoves_regular_21_tr.json", "2_FONT_BOLD": null, "3_FONT_MONO": "font_robotomono_medium_20_tr.json", @@ -20,7 +20,7 @@ "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_tr.json", "8_FONT_SUB": null }, - "T3T1": { + "Delizia": { "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_tr.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_tr.json", "3_FONT_MONO": "font_robotomono_medium_21_tr.json", @@ -30,7 +30,7 @@ "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_tr.json" }, - "T3W1": { + "Eckhart": { "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_tr.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_tr.json", "3_FONT_MONO": "font_robotomono_medium_21_tr.json", diff --git a/python/src/trezorlib/_internal/translations.py b/python/src/trezorlib/_internal/translations.py index 809725119d..25b0507e47 100644 --- a/python/src/trezorlib/_internal/translations.py +++ b/python/src/trezorlib/_internal/translations.py @@ -313,12 +313,12 @@ def blob_from_defs( translations = TranslatedStrings.from_items(translations_ordered) - if model.internal_name not in lang_data["fonts"]: + if layout_type.name not in lang_data["fonts"]: raise ValueError( - f"Model {model.internal_name} not found in header for {json_header['language']} v{json_header['version']}" + f"Layout {layout_type.name} not found in header for {json_header['language']} v{json_header['version']}" ) - model_fonts = lang_data["fonts"][model.internal_name] + model_fonts = lang_data["fonts"][layout_type.name] fonts = FontsTable.from_dir(model_fonts, fonts_dir) translations_bytes = translations.build() diff --git a/python/src/trezorlib/debuglink.py b/python/src/trezorlib/debuglink.py index 241c0ca44c..71fab102ba 100644 --- a/python/src/trezorlib/debuglink.py +++ b/python/src/trezorlib/debuglink.py @@ -80,6 +80,7 @@ class LayoutType(Enum): Bolt = auto() Caesar = auto() Delizia = auto() + Eckhart = auto() @classmethod def from_model(cls, model: models.TrezorModel) -> "LayoutType": @@ -89,6 +90,8 @@ class LayoutType(Enum): return cls.Caesar if model in (models.T3T1,): return cls.Delizia + if model in (models.T3W1,): + return cls.Eckhart if model in (models.T1B1,): return cls.T1 raise ValueError(f"Unknown model: {model}")