From 9eb46f74ac22ba38f108f14bbddcc77107f8fdb6 Mon Sep 17 00:00:00 2001 From: Odudex Date: Fri, 2 Aug 2024 15:16:00 -0300 Subject: [PATCH] binary grids - format, lint, tests and translations --- i18n/translations/de-DE.json | 1 + i18n/translations/es-MX.json | 1 + i18n/translations/fr-FR.json | 1 + i18n/translations/nl-NL.json | 3 +- i18n/translations/pl-PL.json | 1 + i18n/translations/pt-BR.json | 1 + i18n/translations/ru-RU.json | 1 + i18n/translations/tr-TR.json | 1 + i18n/translations/vi-VN.json | 1 + src/krux/pages/login.py | 15 ++-- src/krux/pages/tiny_seed.py | 128 +++++++++++++++++++++-------------- src/krux/translations.py | 79 +++++++++++---------- 12 files changed, 143 insertions(+), 90 deletions(-) diff --git a/i18n/translations/de-DE.json b/i18n/translations/de-DE.json index 8d26bad48..6356567e5 100644 --- a/i18n/translations/de-DE.json +++ b/i18n/translations/de-DE.json @@ -31,6 +31,7 @@ "Backup Mnemonic": "Mnemonik-Backup", "Bad signature": "Ungültige Signatur", "Baudrate": "Baudrate", + "Binary Grid": "Binäres Gitter", "Border Padding": "Randpolsterung", "Brightness": "Helligkeit", "Buttons": "Tasten", diff --git a/i18n/translations/es-MX.json b/i18n/translations/es-MX.json index 7082dc878..80a8eefd7 100644 --- a/i18n/translations/es-MX.json +++ b/i18n/translations/es-MX.json @@ -31,6 +31,7 @@ "Backup Mnemonic": "Backup del Mnemónico", "Bad signature": "Firma incorrecta", "Baudrate": "Baudrate", + "Binary Grid": "Cuadrícula binaria", "Border Padding": "Grosor del Borde", "Brightness": "Brillo", "Buttons": "Botones", diff --git a/i18n/translations/fr-FR.json b/i18n/translations/fr-FR.json index d7736d4a5..c581d4a89 100644 --- a/i18n/translations/fr-FR.json +++ b/i18n/translations/fr-FR.json @@ -31,6 +31,7 @@ "Backup Mnemonic": "Sauvegarde mnémonique", "Bad signature": "Mauvaise signature", "Baudrate": "Débit en bauds", + "Binary Grid": "Grille binaire", "Border Padding": "Rembourrage de bordure", "Brightness": "Luminosité", "Buttons": "Boutons", diff --git a/i18n/translations/nl-NL.json b/i18n/translations/nl-NL.json index 26dde7e5a..d99680da3 100644 --- a/i18n/translations/nl-NL.json +++ b/i18n/translations/nl-NL.json @@ -31,6 +31,7 @@ "Backup Mnemonic": "Backup geheugensteun", "Bad signature": "Ongeldige handtekening", "Baudrate": "Baudratio", + "Binary Grid": "Binair raster", "Border Padding": "Rand opvulling", "Brightness": "Helderheid", "Buttons": "Knoppen", @@ -308,4 +309,4 @@ "is a valid receive address!": "is een valide ontvangst adres!", "was NOT FOUND in the first %d change addresses": "werd NIET GEVONDEN in de eerste %d wisselgeld adressen", "was NOT FOUND in the first %d receive addresses": "werd NIET GEVONDEN in de eerste %d ontvangst adressen" -} +} \ No newline at end of file diff --git a/i18n/translations/pl-PL.json b/i18n/translations/pl-PL.json index 202845a67..19ac85f2b 100644 --- a/i18n/translations/pl-PL.json +++ b/i18n/translations/pl-PL.json @@ -31,6 +31,7 @@ "Backup Mnemonic": "Kopia zapasowa mnemonika", "Bad signature": "zły podpis", "Baudrate": "Baudrate", + "Binary Grid": "Siatka binarna", "Border Padding": "Wyściółka graniczna", "Brightness": "Jasność", "Buttons": "Przyciski", diff --git a/i18n/translations/pt-BR.json b/i18n/translations/pt-BR.json index 31dfecaca..ea5fdec47 100644 --- a/i18n/translations/pt-BR.json +++ b/i18n/translations/pt-BR.json @@ -31,6 +31,7 @@ "Backup Mnemonic": "Backup de Mnemônico", "Bad signature": "Assinatura Inválida", "Baudrate": "Baudrate", + "Binary Grid": "Grade binária", "Border Padding": "Borda", "Brightness": "Brilho", "Buttons": "Botões", diff --git a/i18n/translations/ru-RU.json b/i18n/translations/ru-RU.json index 53c241386..8397b6c38 100644 --- a/i18n/translations/ru-RU.json +++ b/i18n/translations/ru-RU.json @@ -31,6 +31,7 @@ "Backup Mnemonic": "Резервная мнемоника", "Bad signature": "Плохая подпись", "Baudrate": "Скорость Передачи Данных", + "Binary Grid": "Двоичная сетка", "Border Padding": "Заполнение Границ", "Brightness": "Яркость", "Buttons": "Кнопки", diff --git a/i18n/translations/tr-TR.json b/i18n/translations/tr-TR.json index da9ae39e5..3d3568d39 100644 --- a/i18n/translations/tr-TR.json +++ b/i18n/translations/tr-TR.json @@ -31,6 +31,7 @@ "Backup Mnemonic": "Yedek Mnemonic", "Bad signature": "Geçersiz imza", "Baudrate": "Baud Hızı", + "Binary Grid": "İkili Izgara", "Border Padding": "Kenarlık Dolgusu", "Brightness": "Parlaklık", "Buttons": "Butonlar", diff --git a/i18n/translations/vi-VN.json b/i18n/translations/vi-VN.json index 8251cd54d..876a035e8 100644 --- a/i18n/translations/vi-VN.json +++ b/i18n/translations/vi-VN.json @@ -31,6 +31,7 @@ "Backup Mnemonic": "Sao lưu Mnemonic", "Bad signature": "Chữ ký xấu", "Baudrate": "Tốc độ baud", + "Binary Grid": "Lưới nhị phân", "Border Padding": "Đệm viền", "Brightness": "Độ sáng", "Buttons": "Nút", diff --git a/src/krux/pages/login.py b/src/krux/pages/login.py index fb19b826c..d789f852a 100644 --- a/src/krux/pages/login.py +++ b/src/krux/pages/login.py @@ -89,8 +89,14 @@ def load_key_from_camera(self): [ (t("QR Code"), self.load_key_from_qr_code), ("Tiny Seed", lambda: self.load_key_from_tiny_seed_image("TinySeed")), - ("OneKey KeyTag", lambda: self.load_key_from_tiny_seed_image("OneKey KeyTag")), - (t("Binary Grid"), lambda: self.load_key_from_tiny_seed_image("Binary Grid")), + ( + "OneKey KeyTag", + lambda: self.load_key_from_tiny_seed_image("OneKey KeyTag"), + ), + ( + t("Binary Grid"), + lambda: self.load_key_from_tiny_seed_image("Binary Grid"), + ), ], ) index, status = submenu.run_loop() @@ -675,7 +681,7 @@ def load_key_from_tiny_seed(self): return self._load_key_from_words(words) return MENU_CONTINUE - def load_key_from_tiny_seed_image(self, grid_type = "TinySeed"): + def load_key_from_tiny_seed_image(self, grid_type="TinySeed"): """Menu handler to scan key from Tiny Seed sheet metal storage method""" from .tiny_seed import TinyScanner @@ -690,9 +696,8 @@ def load_key_from_tiny_seed_image(self, grid_type = "TinySeed"): if not self.prompt(t("Proceed?"), BOTTOM_PROMPT_LINE): return MENU_CONTINUE - w24 = index == 1 tiny_scanner = TinyScanner(self.ctx, grid_type) - words = tiny_scanner.scanner(w24) + words = tiny_scanner.scanner(len_mnemonic == 24) del tiny_scanner if words is None: self.flash_error(t("Failed to load mnemonic")) diff --git a/src/krux/pages/tiny_seed.py b/src/krux/pages/tiny_seed.py index c0360883e..584b2b69f 100644 --- a/src/krux/pages/tiny_seed.py +++ b/src/krux/pages/tiny_seed.py @@ -580,44 +580,50 @@ def _editable_bit(): class TinyScanner(Page): """Uses camera sensor to detect punch pattern on a Tiny Seed, in metal or paper""" - """Settings for different binary grid types""" + # Settings for different binary grid types binary_grid_settings = { - 'TinySeed' : {'xpad_factor' : (240 / (12 * 345)), - 'ypad_factor' : (210 / (12 * 272)), - 'x_offset_factor_amigo_p0': 39 / 345, - 'y_offset_factor_amigo_p0': 44 / 272, - 'x_offset_factor_amigo_p1' : 42 / 345, - 'y_offset_factor_amigo_p1' : 41 / 272, - 'x_offset_factor_p0' : 65 / 345, - 'y_offset_factor_p0' : 17 / 272, - 'x_offset_factor_p1' : 62 / 345, - 'y_offset_factor_p1' : 22 / 272, - 'aspect_high' : 1.3, - 'aspect_low' : 1.1}, - 'OneKey KeyTag': {'xpad_factor': 240 / (12 * 360), - 'ypad_factor': 240 / (12 * 335), - 'x_offset_factor_amigo_p0': 50/360, - 'y_offset_factor_amigo_p0': 67/335, - 'x_offset_factor_amigo_p1': 50/360, - 'y_offset_factor_amigo_p1': 67/335, - 'x_offset_factor_p0' : 68/360, - 'y_offset_factor_p0' : 30/335, - 'x_offset_factor_p1' : 68/360, - 'y_offset_factor_p1' : 30/335, - 'aspect_high' : 1.1, - 'aspect_low' : 0.9}, - 'Binary Grid': {'xpad_factor': 1/14, - 'ypad_factor': 1/14, - 'x_offset_factor_amigo_p0': 1/14, - 'y_offset_factor_amigo_p0': 1/14, - 'x_offset_factor_amigo_p1': 1/14, - 'y_offset_factor_amigo_p1': 1/14, - 'x_offset_factor_p0': 1/14, - 'y_offset_factor_p0': 1/14, - 'x_offset_factor_p1': 1/14, - 'y_offset_factor_p1': 1/14, - 'aspect_high': 1.1, - 'aspect_low': 0.9}, + "TinySeed": { + "xpad_factor": (240 / (12 * 345)), + "ypad_factor": (210 / (12 * 272)), + "x_offset_factor_amigo_p0": 39 / 345, + "y_offset_factor_amigo_p0": 44 / 272, + "x_offset_factor_amigo_p1": 42 / 345, + "y_offset_factor_amigo_p1": 41 / 272, + "x_offset_factor_p0": 65 / 345, + "y_offset_factor_p0": 17 / 272, + "x_offset_factor_p1": 62 / 345, + "y_offset_factor_p1": 22 / 272, + "aspect_high": 1.3, + "aspect_low": 1.1, + }, + "OneKey KeyTag": { + "xpad_factor": 240 / (12 * 360), + "ypad_factor": 240 / (12 * 335), + "x_offset_factor_amigo_p0": 50 / 360, + "y_offset_factor_amigo_p0": 67 / 335, + "x_offset_factor_amigo_p1": 50 / 360, + "y_offset_factor_amigo_p1": 67 / 335, + "x_offset_factor_p0": 68 / 360, + "y_offset_factor_p0": 30 / 335, + "x_offset_factor_p1": 68 / 360, + "y_offset_factor_p1": 30 / 335, + "aspect_high": 1.1, + "aspect_low": 0.9, + }, + "Binary Grid": { + "xpad_factor": 1 / 14, + "ypad_factor": 1 / 14, + "x_offset_factor_amigo_p0": 1 / 14, + "y_offset_factor_amigo_p0": 1 / 14, + "x_offset_factor_amigo_p1": 1 / 14, + "y_offset_factor_amigo_p1": 1 / 14, + "x_offset_factor_p0": 1 / 14, + "y_offset_factor_p0": 1 / 14, + "x_offset_factor_p1": 1 / 14, + "y_offset_factor_p1": 1 / 14, + "aspect_high": 1.1, + "aspect_low": 0.9, + }, } grid_settings = None @@ -642,22 +648,46 @@ def _map_punches_region(self, rect_size, page=0): if not page: if board.config["type"] == "amigo": # Amigo has mirrored coordinates - x_offset = rect_size[0] + rect_size[2] * self.grid_settings['x_offset_factor_amigo_p0'] - y_offset = rect_size[1] + rect_size[3] * self.grid_settings['y_offset_factor_amigo_p0'] + x_offset = ( + rect_size[0] + + rect_size[2] * self.grid_settings["x_offset_factor_amigo_p0"] + ) + y_offset = ( + rect_size[1] + + rect_size[3] * self.grid_settings["y_offset_factor_amigo_p0"] + ) else: - x_offset = rect_size[0] + rect_size[2] * self.grid_settings['x_offset_factor_p0'] - y_offset = rect_size[1] + rect_size[3] * self.grid_settings['y_offset_factor_p0'] + x_offset = ( + rect_size[0] + + rect_size[2] * self.grid_settings["x_offset_factor_p0"] + ) + y_offset = ( + rect_size[1] + + rect_size[3] * self.grid_settings["y_offset_factor_p0"] + ) else: if board.config["type"] == "amigo": - x_offset = rect_size[0] + rect_size[2] * self.grid_settings['x_offset_factor_amigo_p1'] - y_offset = rect_size[1] + rect_size[3] * self.grid_settings['y_offset_factor_amigo_p1'] + x_offset = ( + rect_size[0] + + rect_size[2] * self.grid_settings["x_offset_factor_amigo_p1"] + ) + y_offset = ( + rect_size[1] + + rect_size[3] * self.grid_settings["y_offset_factor_amigo_p1"] + ) else: - x_offset = rect_size[0] + rect_size[2] * self.grid_settings['x_offset_factor_p1'] - y_offset = rect_size[1] + rect_size[3] * self.grid_settings['y_offset_factor_p1'] + x_offset = ( + rect_size[0] + + rect_size[2] * self.grid_settings["x_offset_factor_p1"] + ) + y_offset = ( + rect_size[1] + + rect_size[3] * self.grid_settings["y_offset_factor_p1"] + ) self.x_regions.append(int(x_offset)) self.y_regions.append(int(y_offset)) - x_pad = rect_size[2] * self.grid_settings['xpad_factor'] - y_pad = rect_size[3] * self.grid_settings['ypad_factor'] + x_pad = rect_size[2] * self.grid_settings["xpad_factor"] + y_pad = rect_size[3] * self.grid_settings["ypad_factor"] for _ in range(12): x_offset += x_pad y_offset += y_pad @@ -788,8 +818,8 @@ def _detect_tiny_seed(self, img): """Detects Tiny Seed as a bright blob against a dark surface""" # Load Settings for the grid type we are using - aspect_low = self.grid_settings['aspect_low'] - aspect_high = self.grid_settings['aspect_high'] + aspect_low = self.grid_settings["aspect_low"] + aspect_high = self.grid_settings["aspect_high"] def _choose_rect(rects): for rect in rects: diff --git a/src/krux/translations.py b/src/krux/translations.py index 6999c2d0c..5aa57a278 100644 --- a/src/krux/translations.py +++ b/src/krux/translations.py @@ -54,6 +54,7 @@ 2756316330: "Mnemonik-Backup", 2256777600: "Ungültige Signatur", 3937333362: "Baudrate", + 2046615409: "Binäres Gitter", 928727036: "Randpolsterung", 2519455027: "Helligkeit", 2363604010: "Tasten", @@ -365,6 +366,7 @@ 2756316330: "Backup del Mnemónico", 2256777600: "Firma incorrecta", 3937333362: "Baudrate", + 2046615409: "Cuadrícula binaria", 928727036: "Grosor del Borde", 2519455027: "Brillo", 2363604010: "Botones", @@ -676,6 +678,7 @@ 2756316330: "Sauvegarde mnémonique", 2256777600: "Mauvaise signature", 3937333362: "Débit en bauds", + 2046615409: "Grille binaire", 928727036: "Rembourrage de bordure", 2519455027: "Luminosité", 2363604010: "Boutons", @@ -960,11 +963,11 @@ 2331290367: "%d. Wisselgeld:", 1866298120: "%d. Zelf overschrijving:", 2463380782: "%d. Uitgaven:", - 175571694: "%s verwijderd van SD-kaart", + 175571694: "%s verwijderd van SD kaart", 2149311289: "%s verwijderd van flashgeheugen", 1092222515: "(%d totaal)", 3348584292: "(Experimenteel)", - 1099786887: "(alleen-watch)", + 1099786887: "(alleen inzien)", 2739590230: "12 woorden", 1310058127: "24 woorden", 1949634023: "Over", @@ -972,7 +975,7 @@ 2995482424: "Account", 2415648848: "Account #0 zou worden aangenomen", 1043817877: "Accountindex", - 3439746594: "Wachtwoordzin voor wallet toevoegen of wijzigen?", + 3439746594: "Wachtwoordzin voor portemonnee toevoegen of wijzigen?", 2143824150: "Extra entropie van de camera vereist voor AES-CBC-modus", 3270727197: "Adres", 283202181: "Richt de camera en Tiny Seed op de juiste manier.", @@ -984,14 +987,15 @@ 3455872521: "Terug", 4151330982: "Terug naar menu", 4210412874: "Backup van de bootloader...", - 2756316330: "Backup mnemonic", + 2756316330: "Backup geheugensteun", 2256777600: "Ongeldige handtekening", 3937333362: "Baudratio", + 2046615409: "Binair raster", 928727036: "Rand opvulling", 2519455027: "Helderheid", 2363604010: "Knoppen", 2038226551: "Debounce van knoppen", - 3979733261: "Shannons entropie berekenen", + 3979733261: "Shannon's entropie berekenen", 3138204438: "Opname geannuleerd", 1207696150: "Change", 3126552510: "Wisselgeldadres", @@ -1013,12 +1017,12 @@ 678449760: "Aangemaakt:", 3513215254: "Aangepaste QR code", 3585411775: "Aanpassen", - 534274978: "Als u uw portemonnee aanpast, wordt er een nieuwe sleutel gegenereerd.", + 534274978: "Bij aanpassen van de portemonnee zal er een nieuwe sleutel gegenereerd worden.", 124617190: "Snijdiepte", 597912140: "Snijmethode", 2504034831: "Decimaal", 2751113454: "Ontsleutelen?", - 1272005728: "Standaard wallet", + 1272005728: "Standaard portemonnee", 4102535566: "Diepte per pas", 1712856005: "Descriptoradressen", 1230133196: "Opslag op apparaat is niet gedetecteerd.", @@ -1040,7 +1044,7 @@ 889040671: "Fout:", 1505332462: "Esc", 3838465623: "Bestanden verkennen?", - 4170881190: "Exporteren naar SD-kaart..", + 4170881190: "Exporteren naar SD kaart..", 1711312434: "Uitgebreide publieke sleutel", 3981762528: "Fabrieksinstellingen", 383371114: "Ontsleutelen is niet gelukt", @@ -1062,16 +1066,16 @@ 1406590538: "Fluit diameter", 1077771640: "Vrij:", 1893243331: "Uit data-opslag", - 1871146425: "Wis uw SD-kaart volledig in een ander apparaat om te zorgen dat de gegevens onherstelbaar zijn", - 3549015533: "Mnemoniek genereren", - 3524220994: "Een BIP85 afgeleide mnemonic genereren?", + 1871146425: "Wis uw SD kaart volledig in een ander apparaat om te zorgen dat de gegevens onherstelbaar zijn", + 3549015533: "Geheugensteun genereren", + 3524220994: "Een BIP85 afgeleide geheugensteun genereren?", 299338213: "Eigen ID gebruiken voor geheugensteun? Anders vingerafdruk gebruiken", 602716148: "Ga", 1198393582: "Goede entropie", 133139382: "Hardware", 3580020863: "Hex publieke sleutel", 2691246967: "Hexadecimaal", - 3903754133: "Verberg mnemonics", + 3903754133: "Verberg geheugensteunen", 3876651191: "Hoge kosten!", 2880010062: "ID bestaat al", 3242179508: "Invoer (%d):", @@ -1095,11 +1099,11 @@ 972436696: "Lijn vertraging", 2176866982: "Lijn:", 2820726296: "Geheugensteun laden", - 2369474953: "Wallet laden", - 2256441194: "Een vertrouwde wallet-descriptor laden om adressen te bekijken?", - 3490393896: "Afgeleide mnemonic laden?", - 237136240: "Laden vanaf SD-kaart", - 879727077: "Laden vanaf SD-kaart?", + 2369474953: "Portemonnee laden", + 2256441194: "Een vertrouwde portemonnee descriptor laden om adressen te bekijken?", + 3490393896: "Afgeleide geheugensteun laden?", + 237136240: "Laden vanaf SD kaart", + 879727077: "Laden vanaf SD kaart?", 1936877965: "Laden van camera", 669106195: "Laden?", 3330705289: "Laden?", @@ -1116,17 +1120,17 @@ 3928301843: "Handtekening bestand mist", 1948316555: "Geheugensteun", 2123991188: "Geheugensteun ID", - 1443208255: "Mnemonic en passphrase worden bewaard.", + 1443208255: "Geheugensteun en wachtwoord worden bewaard.", 1746030071: "Geheugensteun is niet versleuteld", 1237332019: "Aangepast:", 1845376098: "Multisig", - 4265479636: "Native Segwit - 84 zou worden aangenomen", + 4265479636: "Native Segwit - 84 zal worden gebruikt", 2939797024: "Netwerk", 73574491: "Geheugensteun aanmaken", - 241763017: "Nieuwe firmware gedetecteerd op SD-kaart.", + 241763017: "Nieuwe firmware gedetecteerd op SD kaart.", 3634967631: "Nieuwe firmware gevonden.", 4063104189: "Nee", - 2325721074: "Geen Wachtwoordzin", + 2325721074: "Geen wachtwoordzin", 4092516657: "Niet genoeg gedobbeld!", 3089363813: "Nummers", 1577637745: "Octaal", @@ -1137,8 +1141,8 @@ 3913146360: "Deel", 3559456868: "Deel grootte", 4249903283: "Wachtwoord", - 3745269737: "pad komt niet overeen", - 500286397: "Wykryto wzór!", + 3745269737: "Pad komt niet overeen", + 500286397: "Patroon gevonden!", 3040011773: "Alle opgeslagen versleutelde mnemonics en instellingen permanent uit het flashgeheugen verwijderen?", 140802882: "Opslag", 2578106186: "Pixelafwijkingsindex:", @@ -1165,7 +1169,7 @@ 1658501467: "Regio:", 3739634002: "Verwijderen %s?", 1476462492: "Geheugensteun verwijderen", - 1557093280: "Firmwarebestanden van SD-kaart verwijderen?", + 1557093280: "Firmwarebestanden van SD kaart verwijderen?", 2817311427: "Res. - Formaat", 2365886561: "Fabrieksinstellingen herstellen en opnieuw opstarten?", 3091105710: "Terug naar QR-lezer", @@ -1179,10 +1183,10 @@ 2736513298: "SD kaart niet gedetecteerd.", 1166743226: "Gedobbelde SHA256:", 817419367: "Momentopname van SHA256:", - 699906428: "QR-afbeelding opslaan op SD-kaart", - 2163347007: "Opslaan op SD-kaart", - 3531742595: "Opslaan op SD-kaart?", - 2940025484: "Opgeslagen op SD-kaart", + 699906428: "QR-afbeelding opslaan op SD kaart", + 2163347007: "Opslaan op SD kaart", + 3531742595: "Opslaan op SD kaart?", + 2940025484: "Opgeslagen op SD kaart", 3531363515: "Opslaan bezig...", 763824768: "Schaal", 4117455079: "Adres scannen", @@ -1192,16 +1196,16 @@ 2736506158: "Woorden 13 t/m 24 scannen", 2029624154: "Schermbeveiligingstijd", 289960586: "Scripttype", - 1022211991: "Security", - 4255182430: "Zelf overschrijving of wisselgeld (%d):", + 1022211991: "Beveiliging", + 4255182430: "Overschrijving naar jezelf, of wisselgeld (%d):", 473154195: "Instellingen", - 2377955518: "Shannons Entropie:", + 2377955518: "Shannon's entropie:", 1825881236: "Afsluiten", 3656120779: "Uitschakelingstijd:", 2120776272: "Bezig met afsluiten...", 1061961408: "Ondertekenen", 2293863356: "Teken op QR-code", - 2879966040: "Teken op SD-kaart", + 2879966040: "Teken op SD kaart", 4282338366: "Ondertekenen?", 746161122: "Handtekening", 1988416729: "Bericht ondertekend", @@ -1226,9 +1230,9 @@ 3684696112: "Aanraak gevoeligheid", 2978718564: "Aanraakscherm", 2732611775: "Meer proberen?", - 401829098: "Voer BIP-39 Wachtwoord in", + 401829098: "Voer een BIP-39 wachtwoord in", 2061556020: "Voer sleutel in", - 760733724: "Onverwachte fout bij opslaan in Flash.", + 760733724: "Onverwachte fout bij het opslaan naar flashgeheugen.", 2089395053: "Eenheid", 1663209632: "Bootloader updaten...", 2786714360: "Upgrade afgerond.", @@ -1246,7 +1250,7 @@ 590330112: "Via handmatige invoer", 1947603760: "Via woorden", 2504354847: "Wacht op opname", - 2076481321: "Wallet", + 2076481321: "Portemonnee", 2297028319: "Descriptor", 4232654916: "Portemonnee descriptor", 2587172867: "Portemonnee descriptor geladen!", @@ -1298,6 +1302,7 @@ 2756316330: "Kopia zapasowa mnemonika", 2256777600: "zły podpis", 3937333362: "Baudrate", + 2046615409: "Siatka binarna", 928727036: "Wyściółka graniczna", 2519455027: "Jasność", 2363604010: "Przyciski", @@ -1609,6 +1614,7 @@ 2756316330: "Backup de Mnemônico", 2256777600: "Assinatura Inválida", 3937333362: "Baudrate", + 2046615409: "Grade binária", 928727036: "Borda", 2519455027: "Brilho", 2363604010: "Botões", @@ -1920,6 +1926,7 @@ 2756316330: "Резервная мнемоника", 2256777600: "Плохая подпись", 3937333362: "Скорость Передачи Данных", + 2046615409: "Двоичная сетка", 928727036: "Заполнение Границ", 2519455027: "Яркость", 2363604010: "Кнопки", @@ -2231,6 +2238,7 @@ 2756316330: "Yedek Mnemonic", 2256777600: "Geçersiz imza", 3937333362: "Baud Hızı", + 2046615409: "İkili Izgara", 928727036: "Kenarlık Dolgusu", 2519455027: "Parlaklık", 2363604010: "Butonlar", @@ -2542,6 +2550,7 @@ 2756316330: "Sao lưu Mnemonic", 2256777600: "Chữ ký xấu", 3937333362: "Tốc độ baud", + 2046615409: "Lưới nhị phân", 928727036: "Đệm viền", 2519455027: "Độ sáng", 2363604010: "Nút",