diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 641f28f4476..9e271ab5a2d 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -528,7 +528,7 @@ pub enum TranslatedString { #[cfg(feature = "universal_fw")] fido__title_u2f_auth = 314, // "U2F authenticate" #[cfg(feature = "universal_fw")] - fido__title_u2f_register = 315, // {"Bolt": "U2F register", "Samson": "U2F register", "Quicksilver": "U2F register"} + fido__title_u2f_register = 315, // {"Bolt": "U2F register", "Quicksilver": "U2F register", "Samson": "U2F register"} #[cfg(feature = "universal_fw")] fido__title_verify_user = 316, // "FIDO2 verify user" #[cfg(feature = "universal_fw")] @@ -546,7 +546,7 @@ pub enum TranslatedString { homescreen__title_no_usb_connection = 327, // "No USB connection" homescreen__title_pin_not_set = 328, // "PIN not set" homescreen__title_seedless = 329, // "Seedless" - homescreen__title_set = 330, // {"Bolt": "Change wallpaper?", "Samson": "Change wallpaper?", "Quicksilver": "Change wallpaper?"} + homescreen__title_set = 330, // {"Bolt": "Change wallpaper?", "Quicksilver": "Change wallpaper?", "Samson": "Change wallpaper?"} inputs__back = 331, // "BACK" inputs__cancel = 332, // "CANCEL" inputs__delete = 333, // "DELETE" @@ -1909,10 +1909,10 @@ impl TranslatedString { #[cfg(feature = "layout_bolt")] Self::fido__title_u2f_register => "U2F register", #[cfg(feature = "universal_fw")] - #[cfg(feature = "layout_samson")] + #[cfg(feature = "layout_quicksilver")] Self::fido__title_u2f_register => "U2F register", #[cfg(feature = "universal_fw")] - #[cfg(feature = "layout_quicksilver")] + #[cfg(feature = "layout_samson")] Self::fido__title_u2f_register => "U2F register", #[cfg(feature = "universal_fw")] Self::fido__title_verify_user => "FIDO2 verify user", @@ -1933,10 +1933,10 @@ impl TranslatedString { Self::homescreen__title_seedless => "Seedless", #[cfg(feature = "layout_bolt")] Self::homescreen__title_set => "Change wallpaper?", - #[cfg(feature = "layout_samson")] - Self::homescreen__title_set => "Change wallpaper?", #[cfg(feature = "layout_quicksilver")] Self::homescreen__title_set => "Change wallpaper?", + #[cfg(feature = "layout_samson")] + Self::homescreen__title_set => "Change wallpaper?", Self::inputs__back => "BACK", Self::inputs__cancel => "CANCEL", Self::inputs__delete => "DELETE", diff --git a/core/translations/crowdin.py b/core/translations/crowdin.py index 1ac121fd158..f296cec670b 100644 --- a/core/translations/crowdin.py +++ b/core/translations/crowdin.py @@ -1,55 +1,83 @@ -import subprocess -import tempfile +from __future__ import annotations + from pathlib import Path +import collections import json -import sys -import os + +import click + +from cli import TranslationsDir +from trezorlib._internal import translations +from trezorlib.debuglink import LayoutType + HERE = Path(__file__).parent +# staging directory for layout-specific translation JSON files +CROWDIN_DIR = HERE / "crowdin" + +# layouts with translation support +ALL_LAYOUTS = frozenset(LayoutType) - {LayoutType.T1} + + +@click.group() +def cli() -> None: + pass + + +@cli.command() +def prepare() -> None: + """Prepare translation files for Crowdin upload. + + Create a separate JSON file for each language and layout. + """ + tdir = TranslationsDir() + + for lang in tdir.all_languages(): + blob_json = tdir.load_lang(lang) + for layout_type in ALL_LAYOUTS: + # extract translations specific to this layout + layout_specific_translations = { + key: translations.get_translation(blob_json, key, layout_type) + for key in blob_json["translations"].keys() + } + # create a JSON file with only the "translations" item + result = {"translations": layout_specific_translations} + with open(CROWDIN_DIR / f"{lang}_{layout_type.name}.json", "w") as f: + json.dump(result, f, indent=2, ensure_ascii=False) + + click.echo(f"Successfully generated layout-specific translation files in '{CROWDIN_DIR}'") + -def download() -> None: - with tempfile.TemporaryDirectory() as temp_dir: - command = f"crowdin download --all --verbose --token $CROWDIN_TOKEN --base-path={temp_dir}" - print("command", command) +@cli.command() +def merge() -> None: + """Merge back translation files downloaded from Crowdin.""" + tdir = TranslationsDir() - subprocess.run(command, shell=True, check=True) + for lang in sorted(tdir.all_languages()): + merged_translations: dict[str, str | dict[str, str]] = collections.defaultdict(dict) + for layout_type in ALL_LAYOUTS: + with open(CROWDIN_DIR / f"{lang}_{layout_type.name}.json", "r") as f: + blob_json = json.load(f) - for directory in Path(temp_dir).iterdir(): - print("directory", directory) - lang_name = directory.name - en_file = directory / "en.json" - if not en_file.exists(): - print("Skipping - no en.json inside", lang_name) - continue - print("Processing", lang_name) - data = json.loads(en_file.read_text()) - lang_file = HERE / f"{lang_name}.json" - if not lang_file.exists(): - print("Skipping - no lang_file on our side", lang_name) - continue - lang_file_data = json.loads(lang_file.read_text()) - lang_file_data["translations"] = data["translations"] - lang_file.write_text(json.dumps(lang_file_data, indent=2, sort_keys=True, ensure_ascii=False) + "\n") - print("Translations updated", lang_name) + # mapping string name to its translation (for the current layout) + layout_specific_translations: dict[str, str] = blob_json["translations"] + for key, value in layout_specific_translations.items(): + merged_translations[key][layout_type.name] = value + for key in merged_translations.keys(): + # deduplicate entries if all translations are the same + unique_translations = set(merged_translations[key].values()) + if len(unique_translations) == 1: + merged_translations[key] = unique_translations.pop() -def upload() -> None: - command = "crowdin upload sources --token $CROWDIN_TOKEN" - print("command", command) + blob_json = tdir.load_lang(lang) + blob_json["translations"] = merged_translations + tdir.save_lang(lang, blob_json) + click.echo(f"Updated {lang}") - subprocess.run(command, shell=True, check=True) + click.echo(f"Successfully merged back layout-specific translation files from '{CROWDIN_DIR}'") if __name__ == "__main__": - if not os.environ.get("CROWDIN_TOKEN"): - print("CROWDIN_TOKEN env variable not set") - sys.exit(1) - - if "download" in sys.argv: - download() - elif "upload" in sys.argv: - upload() - else: - print("Usage: python crowdin.py [download|upload]") - sys.exit(1) + cli() diff --git a/core/translations/crowdin/.gitignore b/core/translations/crowdin/.gitignore new file mode 100644 index 00000000000..a6c57f5fb2f --- /dev/null +++ b/core/translations/crowdin/.gitignore @@ -0,0 +1 @@ +*.json diff --git a/core/translations/cs.json b/core/translations/cs.json index 678d405369e..a0432a1bd13 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -1,15 +1,5 @@ { "fonts": { - "Samson": { - "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", - "4_FONT_BIG": "font_unifont_regular_16_cs.json", - "5_FONT_DEMIBOLD": "font_unifont_bold_16_cs.json", - "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_cs.json", - "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_cs.json", - "8_FONT_SUB": null - }, "Bolt": { "1_FONT_NORMAL": "font_tthoves_regular_21_cs.json", "2_FONT_BOLD": null, @@ -20,7 +10,7 @@ "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_cs.json", "8_FONT_SUB": null }, - "Quicksilver": { + "LayoutTBD": { "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 +20,7 @@ "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_cs.json" }, - "LayoutTBD": { + "Quicksilver": { "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", @@ -39,6 +29,16 @@ "6_FONT_NORMAL_UPPER": null, "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_cs.json" + }, + "Samson": { + "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", + "4_FONT_BIG": "font_unifont_regular_16_cs.json", + "5_FONT_DEMIBOLD": "font_unifont_bold_16_cs.json", + "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_cs.json", + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_cs.json", + "8_FONT_SUB": null } }, "header": { @@ -421,7 +421,12 @@ "homescreen__title_no_usb_connection": "Žádné připojení usb", "homescreen__title_pin_not_set": "Není nastaven PIN", "homescreen__title_seedless": "Bez seedu", - "homescreen__title_set": {"Bolt": "Změnit domov. obr.?", "Samson": "Změnit domov. obr.?", "Quicksilver": "Změnit domovskou obrazovku?", "LayoutTBD": "Změnit domovskou obrazovku?"}, + "homescreen__title_set": { + "Bolt": "Změnit domov. obr.?", + "LayoutTBD": "Změnit domovskou obrazovku?", + "Quicksilver": "Změnit domovskou obrazovku?", + "Samson": "Změnit domov. obr.?" + }, "inputs__back": "ZPĚT", "inputs__cancel": "ZRUŠIT", "inputs__delete": "ODSTRANIT", diff --git a/core/translations/de.json b/core/translations/de.json index 508cf7fa35e..da5caef8a4e 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -1,15 +1,5 @@ { "fonts": { - "Samson": { - "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", - "4_FONT_BIG": "font_unifont_regular_16_de.json", - "5_FONT_DEMIBOLD": "font_unifont_bold_16_de.json", - "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_de.json", - "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_de.json", - "8_FONT_SUB": null - }, "Bolt": { "1_FONT_NORMAL": "font_tthoves_regular_21_de.json", "2_FONT_BOLD": null, @@ -20,7 +10,7 @@ "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_de.json", "8_FONT_SUB": null }, - "Quicksilver": { + "LayoutTBD": { "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 +20,7 @@ "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_de.json" }, - "LayoutTBD": { + "Quicksilver": { "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", @@ -39,6 +29,16 @@ "6_FONT_NORMAL_UPPER": null, "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_de.json" + }, + "Samson": { + "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", + "4_FONT_BIG": "font_unifont_regular_16_de.json", + "5_FONT_DEMIBOLD": "font_unifont_bold_16_de.json", + "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_de.json", + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_de.json", + "8_FONT_SUB": null } }, "header": { diff --git a/core/translations/en.json b/core/translations/en.json index 1bcba6ef950..29afe32ccdd 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -357,7 +357,11 @@ "fido__title_reset": "FIDO2 reset", "fido__title_select_credential": "Select credential", "fido__title_u2f_auth": "U2F authenticate", - "fido__title_u2f_register": {"Bolt": "U2F register", "Samson": "U2F register", "Quicksilver": "U2F register"}, + "fido__title_u2f_register": { + "Bolt": "U2F register", + "Quicksilver": "U2F register", + "Samson": "U2F register" + }, "fido__title_verify_user": "FIDO2 verify user", "fido__unable_to_verify_user": "Unable to verify user.", "fido__wanna_erase_credentials": "Do you really want to erase all credentials?", @@ -379,7 +383,11 @@ "homescreen__title_no_usb_connection": "No USB connection", "homescreen__title_pin_not_set": "PIN not set", "homescreen__title_seedless": "Seedless", - "homescreen__title_set": {"Bolt": "Change wallpaper?", "Samson": "Change wallpaper?", "Quicksilver": "Change wallpaper?"}, + "homescreen__title_set": { + "Bolt": "Change wallpaper?", + "Quicksilver": "Change wallpaper?", + "Samson": "Change wallpaper?" + }, "inputs__back": "BACK", "inputs__cancel": "CANCEL", "inputs__delete": "DELETE", diff --git a/core/translations/es.json b/core/translations/es.json index ef606d1eda6..b1ff1fbca99 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -1,15 +1,5 @@ { "fonts": { - "Samson": { - "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", - "4_FONT_BIG": "font_unifont_regular_16_es.json", - "5_FONT_DEMIBOLD": "font_unifont_bold_16_es.json", - "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_es.json", - "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_es.json", - "8_FONT_SUB": null - }, "Bolt": { "1_FONT_NORMAL": "font_tthoves_regular_21_es.json", "2_FONT_BOLD": null, @@ -20,7 +10,7 @@ "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_es.json", "8_FONT_SUB": null }, - "Quicksilver": { + "LayoutTBD": { "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 +20,7 @@ "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_es.json" }, - "LayoutTBD": { + "Quicksilver": { "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", @@ -39,6 +29,16 @@ "6_FONT_NORMAL_UPPER": null, "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_es.json" + }, + "Samson": { + "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", + "4_FONT_BIG": "font_unifont_regular_16_es.json", + "5_FONT_DEMIBOLD": "font_unifont_bold_16_es.json", + "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_es.json", + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_es.json", + "8_FONT_SUB": null } }, "header": { diff --git a/core/translations/fr.json b/core/translations/fr.json index 0edd5cf39c9..03a0b85d028 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -1,15 +1,5 @@ { "fonts": { - "Samson": { - "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", - "4_FONT_BIG": "font_unifont_regular_16_fr.json", - "5_FONT_DEMIBOLD": "font_unifont_bold_16_fr.json", - "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_fr.json", - "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_fr.json", - "8_FONT_SUB": null - }, "Bolt": { "1_FONT_NORMAL": "font_tthoves_regular_21_fr.json", "2_FONT_BOLD": null, @@ -20,7 +10,7 @@ "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_fr.json", "8_FONT_SUB": null }, - "Quicksilver": { + "LayoutTBD": { "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 +20,7 @@ "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_fr.json" }, - "LayoutTBD": { + "Quicksilver": { "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", @@ -39,6 +29,16 @@ "6_FONT_NORMAL_UPPER": null, "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_fr.json" + }, + "Samson": { + "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", + "4_FONT_BIG": "font_unifont_regular_16_fr.json", + "5_FONT_DEMIBOLD": "font_unifont_bold_16_fr.json", + "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_fr.json", + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_fr.json", + "8_FONT_SUB": null } }, "header": { diff --git a/core/translations/it.json b/core/translations/it.json index 861e25271b3..44c79a8ca49 100644 --- a/core/translations/it.json +++ b/core/translations/it.json @@ -1,15 +1,5 @@ { "fonts": { - "Samson": { - "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", - "4_FONT_BIG": "font_unifont_regular_16_it.json", - "5_FONT_DEMIBOLD": "font_unifont_bold_16_it.json", - "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_it.json", - "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_it.json", - "8_FONT_SUB": null - }, "Bolt": { "1_FONT_NORMAL": "font_tthoves_regular_21_it.json", "2_FONT_BOLD": null, @@ -20,7 +10,7 @@ "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_it.json", "8_FONT_SUB": null }, - "Quicksilver": { + "LayoutTBD": { "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 +20,7 @@ "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_it.json" }, - "LayoutTBD": { + "Quicksilver": { "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", @@ -39,6 +29,16 @@ "6_FONT_NORMAL_UPPER": null, "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_it.json" + }, + "Samson": { + "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", + "4_FONT_BIG": "font_unifont_regular_16_it.json", + "5_FONT_DEMIBOLD": "font_unifont_bold_16_it.json", + "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_it.json", + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_it.json", + "8_FONT_SUB": null } }, "header": { diff --git a/core/translations/pt.json b/core/translations/pt.json index 8f5ae368e25..bb70e874980 100644 --- a/core/translations/pt.json +++ b/core/translations/pt.json @@ -1,15 +1,5 @@ { "fonts": { - "Samson": { - "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", - "4_FONT_BIG": "font_unifont_regular_16_pt.json", - "5_FONT_DEMIBOLD": "font_unifont_bold_16_pt.json", - "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_pt.json", - "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_pt.json", - "8_FONT_SUB": null - }, "Bolt": { "1_FONT_NORMAL": "font_tthoves_regular_21_pt.json", "2_FONT_BOLD": null, @@ -20,7 +10,7 @@ "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_pt.json", "8_FONT_SUB": null }, - "Quicksilver": { + "LayoutTBD": { "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 +20,7 @@ "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_pt.json" }, - "LayoutTBD": { + "Quicksilver": { "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", @@ -39,6 +29,16 @@ "6_FONT_NORMAL_UPPER": null, "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_pt.json" + }, + "Samson": { + "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", + "4_FONT_BIG": "font_unifont_regular_16_pt.json", + "5_FONT_DEMIBOLD": "font_unifont_bold_16_pt.json", + "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_pt.json", + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_pt.json", + "8_FONT_SUB": null } }, "header": { diff --git a/core/translations/tr.json b/core/translations/tr.json index 4d51b6a0a06..ce544152eb6 100644 --- a/core/translations/tr.json +++ b/core/translations/tr.json @@ -1,15 +1,5 @@ { "fonts": { - "Samson": { - "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", - "4_FONT_BIG": "font_unifont_regular_16_tr.json", - "5_FONT_DEMIBOLD": "font_unifont_bold_16_tr.json", - "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_tr.json", - "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_tr.json", - "8_FONT_SUB": null - }, "Bolt": { "1_FONT_NORMAL": "font_tthoves_regular_21_tr.json", "2_FONT_BOLD": null, @@ -20,7 +10,7 @@ "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_tr.json", "8_FONT_SUB": null }, - "Quicksilver": { + "LayoutTBD": { "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 +20,7 @@ "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_tr.json" }, - "LayoutTBD": { + "Quicksilver": { "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", @@ -39,6 +29,16 @@ "6_FONT_NORMAL_UPPER": null, "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_tr.json" + }, + "Samson": { + "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", + "4_FONT_BIG": "font_unifont_regular_16_tr.json", + "5_FONT_DEMIBOLD": "font_unifont_bold_16_tr.json", + "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_tr.json", + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_tr.json", + "8_FONT_SUB": null } }, "header": {