summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Shawcroft <scott@tannewt.org>2020-05-29 10:16:24 -0700
committerScott Shawcroft <scott@tannewt.org>2020-05-29 10:16:24 -0700
commit2fd7a43f2f5b2bafad6bfed68b6c0a00688ece9b (patch)
tree8b2be430407cfed9b860875a30f4bab4da7c853c
parent198f9579f3b3120caf8d292b303ff2a070c74053 (diff)
parent7ea95457eeb67fcaccfa911a4d979fa642262da5 (diff)
Merge remote-tracking branch 'adafruit/master' into wdt-nrf
-rw-r--r--locale/circuitpython.pot2
-rw-r--r--locale/cs.po42
-rw-r--r--locale/de_DE.po547
-rw-r--r--locale/nl.po715
-rwxr-xr-xmain.c2
-rw-r--r--ports/atmel-samd/Makefile4
-rw-r--r--ports/esp32s2/Makefile2
m---------ports/esp32s2/esp-idf0
-rw-r--r--ports/esp32s2/mpconfigport.h1
-rw-r--r--ports/esp32s2/mphalport.c20
-rw-r--r--ports/esp32s2/sdkconfig.defaults2
-rw-r--r--ports/esp32s2/supervisor/internal_flash.c6
-rw-r--r--ports/esp32s2/supervisor/port.c3
-rw-r--r--ports/esp32s2/supervisor/usb.c13
-rw-r--r--ports/esp32s2/tools/decode_backtrace.py23
-rw-r--r--ports/litex/Makefile4
-rw-r--r--ports/mimxrt10xx/Makefile4
-rwxr-xr-xports/nrf/Makefile4
-rwxr-xr-xports/stm/Makefile4
-rw-r--r--py/builtinhelp.c4
-rw-r--r--py/circuitpy_defns.mk1
-rw-r--r--py/circuitpy_mpconfig.h2
-rw-r--r--py/makeqstrdata.py55
-rw-r--r--py/moduerrno.c2
-rw-r--r--py/obj.c6
-rw-r--r--py/objexcept.c4
-rw-r--r--shared-bindings/audiobusio/I2SOut.c2
-rw-r--r--shared-bindings/audiocore/RawSample.c2
-rw-r--r--shared-bindings/audioio/AudioOut.c2
-rw-r--r--shared-bindings/audiopwmio/PWMAudioOut.c2
-rw-r--r--supervisor/shared/translate.c26
-rw-r--r--supervisor/shared/translate.h32
32 files changed, 871 insertions, 667 deletions
diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot
index 8ab26e497..2d6610195 100644
--- a/locale/circuitpython.pot
+++ b/locale/circuitpython.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-27 10:46-0700\n"
+"POT-Creation-Date: 2020-05-29 10:15-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/locale/cs.po b/locale/cs.po
index 366393370..36f800ebf 100644
--- a/locale/cs.po
+++ b/locale/cs.po
@@ -3,25 +3,28 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-27 10:46-0700\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2020-05-29 10:15-0700\n"
+"PO-Revision-Date: 2020-05-24 03:22+0000\n"
+"Last-Translator: dronecz <mzuzelka@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Weblate 4.1-dev\n"
#: main.c
msgid ""
"\n"
"Code done running. Waiting for reload.\n"
msgstr ""
+"\n"
+"Kód byl dokončen. Čekám na opětovné načtení.\n"
#: supervisor/shared/safe_mode.c
msgid ""
@@ -29,65 +32,70 @@ msgid ""
"Please file an issue with the contents of your CIRCUITPY drive at \n"
"https://github.com/adafruit/circuitpython/issues\n"
msgstr ""
+"\n"
+"Založte prosím problém s obsahem vaší jednotky CIRCUITPY na adrese\n"
+"https://github.com/adafruit/circuitpython/issues\n"
#: supervisor/shared/safe_mode.c
msgid ""
"\n"
"To exit, please reset the board without "
msgstr ""
+"\n"
+"Pro ukončení, prosím resetujte desku bez "
#: py/obj.c
msgid " File \"%q\""
-msgstr ""
+msgstr "  Soubor \"% q\""
#: py/obj.c
msgid " File \"%q\", line %d"
-msgstr ""
+msgstr "  Soubor \"% q\", řádek% d"
#: main.c
msgid " output:\n"
-msgstr ""
+msgstr " výstup:\n"
#: py/objstr.c
#, c-format
msgid "%%c requires int or char"
-msgstr ""
+msgstr "%% c vyžaduje int nebo char"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "%d address pins and %d rgb pins indicate a height of %d, not %d"
-msgstr ""
+msgstr "%d adresní piny a %d rgb piny označují výšku %d, nikoli %d"
#: shared-bindings/microcontroller/Pin.c
msgid "%q in use"
-msgstr ""
+msgstr "%q se nyní používá"
#: py/obj.c
msgid "%q index out of range"
-msgstr ""
+msgstr "%q index je mimo rozsah"
#: py/obj.c
msgid "%q indices must be integers, not %s"
-msgstr ""
+msgstr "Indexy% q musí být celá čísla, nikoli% s"
#: shared-bindings/vectorio/Polygon.c
msgid "%q list must be a list"
-msgstr ""
+msgstr "Seznam% q musí být seznam"
#: shared-bindings/_bleio/CharacteristicBuffer.c
#: shared-bindings/_bleio/PacketBuffer.c shared-bindings/displayio/Group.c
#: shared-bindings/displayio/Shape.c shared-bindings/vectorio/Circle.c
#: shared-bindings/vectorio/Rectangle.c
msgid "%q must be >= 1"
-msgstr ""
+msgstr "% q musí být > = 1"
#: shared-module/vectorio/Polygon.c
msgid "%q must be a tuple of length 2"
-msgstr ""
+msgstr "% q musí být n-tice délky 2"
#: shared-bindings/fontio/BuiltinFont.c
msgid "%q should be an int"
-msgstr ""
+msgstr "% q by měl být int"
#: py/bc.c py/objnamedtuple.c
msgid "%q() takes %d positional arguments but %d were given"
diff --git a/locale/de_DE.po b/locale/de_DE.po
index 9e4bd36c0..8139d8992 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-27 10:46-0700\n"
-"PO-Revision-Date: 2020-05-18 02:48+0000\n"
-"Last-Translator: Jeff Epler <jepler@gmail.com>\n"
+"POT-Creation-Date: 2020-05-29 10:15-0700\n"
+"PO-Revision-Date: 2020-05-23 16:13+0000\n"
+"Last-Translator: Timon <timon@skerutsch.de>\n"
"Language-Team: German <https://later.unpythonic.net/projects/circuitpython/"
"circuitpython-master/de/>\n"
"Language: de_DE\n"
@@ -43,7 +43,7 @@ msgid ""
"To exit, please reset the board without "
msgstr ""
"\n"
-"Zum Beenden setzen Sie bitte die Karte ohne "
+"Zum Beenden, resete bitte das Board ohne "
#: py/obj.c
msgid " File \"%q\""
@@ -65,7 +65,7 @@ msgstr "%%c erwartet int oder char"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "%d address pins and %d rgb pins indicate a height of %d, not %d"
-msgstr ""
+msgstr "%d Adress-Pins und %d rgb-Pins zeigen eine Höhe von %d, nicht von %d"
#: shared-bindings/microcontroller/Pin.c
msgid "%q in use"
@@ -77,7 +77,7 @@ msgstr "Der Index %q befindet sich außerhalb des Bereiches"
#: py/obj.c
msgid "%q indices must be integers, not %s"
-msgstr "%q Indizes müssen ganze Zahlen sein, nicht %s"
+msgstr "%q Indizes müssen Integer sein, nicht %s"
#: shared-bindings/vectorio/Polygon.c
msgid "%q list must be a list"
@@ -96,7 +96,7 @@ msgstr "%q muss ein Tupel der Länge 2 sein"
#: shared-bindings/fontio/BuiltinFont.c
msgid "%q should be an int"
-msgstr "%q sollte ein int sein"
+msgstr "%q sollte ein integer sein"
#: py/bc.c py/objnamedtuple.c
msgid "%q() takes %d positional arguments but %d were given"
@@ -167,7 +167,7 @@ msgstr "Das Objekt '%s' unterstützt '%q' nicht"
#: py/obj.c
#, c-format
msgid "'%s' object does not support item assignment"
-msgstr "'%s' Objekt unterstützt keine Zuordnung von Elementen"
+msgstr "'%s' Objekt unterstützt keine Zuweisung von Elementen"
#: py/obj.c
#, c-format
@@ -186,7 +186,7 @@ msgstr "'%s' Objekt ist kein Iterator"
#: py/objtype.c py/runtime.c
#, c-format
msgid "'%s' object is not callable"
-msgstr "'%s' object ist nicht callable"
+msgstr "'%s' object ist nicht aufrufbar"
#: py/runtime.c
#, c-format
@@ -252,7 +252,7 @@ msgstr "*x muss Zuordnungsziel sein"
#: py/obj.c
msgid ", in %q\n"
-msgstr ""
+msgstr ", in %q\n"
#: py/objcomplex.c
msgid "0.0 to a complex power"
@@ -313,11 +313,11 @@ msgstr "Alle timer werden benutzt"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Already advertising."
-msgstr ""
+msgstr "Bereits am anbieten (advertising)."
#: ports/cxd56/common-hal/analogio/AnalogIn.c
msgid "AnalogIn not supported on given pin"
-msgstr ""
+msgstr "AnalogIn ist an diesem Pin nicht unterstützt"
#: ports/cxd56/common-hal/analogio/AnalogOut.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogOut.c
@@ -348,11 +348,13 @@ msgstr "Array-Werte sollten aus Einzelbytes bestehen."
#: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "At most %d %q may be specified (not %d)"
-msgstr ""
+msgstr "Es darf höchstens %d %q spezifiziert werden (nicht %d)"
#: supervisor/shared/safe_mode.c
msgid "Attempted heap allocation when MicroPython VM not running."
msgstr ""
+"Versuch einer Heap Reservierung, wenn die MicroPython-VM nicht ausgeführt "
+"wird."
#: main.c
msgid "Auto-reload is off.\n"
@@ -405,7 +407,7 @@ msgstr "Die Helligkeit ist nicht einstellbar"
#: shared-bindings/_bleio/UUID.c
#, c-format
msgid "Buffer + offset too small %d %d %d"
-msgstr ""
+msgstr "Buffer + Offset zu klein %d %d %d"
#: shared-module/usb_hid/Device.c
#, c-format
@@ -415,7 +417,7 @@ msgstr "Der Puffergröße ist inkorrekt. Sie sollte %d bytes haben."
#: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c
msgid "Buffer is not a bytearray."
-msgstr "Der Puffer ist kein Byte-Array"
+msgstr "Der Buffer ist kein Byte-Array."
#: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c
@@ -425,7 +427,7 @@ msgstr "Der Puffer ist zu klein"
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
#, c-format
msgid "Buffer length %d too big. It must be less than %d"
-msgstr "Die Pufferlänge %d ist zu groß. Sie muss kleiner als %d sein."
+msgstr "Die Pufferlänge %d ist zu groß. Sie muss kleiner als %d sein"
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
@@ -433,12 +435,12 @@ msgstr "Der Puffer muss eine Mindestenslänge von 1 haben"
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Buffer too large and unable to allocate"
-msgstr ""
+msgstr "Puffer zu groß und kann nicht reserviert werden"
#: shared-bindings/_bleio/PacketBuffer.c
#, c-format
msgid "Buffer too short by %d bytes"
-msgstr ""
+msgstr "Buffer um %d Bytes zu kurz"
#: ports/atmel-samd/common-hal/displayio/ParallelBus.c
#: ports/nrf/common-hal/displayio/ParallelBus.c
@@ -448,7 +450,7 @@ msgstr "Bus pin %d wird schon benutzt"
#: shared-bindings/_bleio/UUID.c
msgid "Byte buffer must be 16 bytes."
-msgstr "Der Puffer muss 16 Bytes lang sein"
+msgstr "Der Puffer muss 16 Bytes lang sein."
#: shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
@@ -456,7 +458,7 @@ msgstr "Ein Bytes kann nur Werte zwischen 0 und 255 annehmen."
#: shared-bindings/aesio/aes.c
msgid "CBC blocks must be multiples of 16 bytes"
-msgstr ""
+msgstr "CBC-Blöcke müssen ein Vielfaches von 16 Bytes sein"
#: py/objtype.c
msgid "Call super().__init__() before accessing native object."
@@ -464,7 +466,7 @@ msgstr "Rufe super().__init__() vor dem Zugriff auf ein natives Objekt auf."
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic"
-msgstr ""
+msgstr "CCCD kann nicht auf lokales Merkmal eingestellt werden"
#: shared-bindings/displayio/Bitmap.c shared-bindings/pulseio/PulseIn.c
msgid "Cannot delete values"
@@ -483,6 +485,7 @@ msgstr "Kann Temperatur nicht holen"
#: shared-bindings/_bleio/Adapter.c
msgid "Cannot have scan responses for extended, connectable advertisements."
msgstr ""
+"Es können keine Scanantworten für erweiterte, verbindbare Anzeigen vorliegen."
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
msgid "Cannot output both channels on the same pin"
@@ -498,13 +501,13 @@ msgstr "Aufnahme in eine Datei nicht möglich"
#: shared-module/storage/__init__.c
msgid "Cannot remount '/' when USB is active."
-msgstr "Kann '/' nicht remounten when USB aktiv ist"
+msgstr "Kann '/' nicht remounten when USB aktiv ist."
#: ports/atmel-samd/common-hal/microcontroller/__init__.c
#: ports/cxd56/common-hal/microcontroller/__init__.c
#: ports/mimxrt10xx/common-hal/microcontroller/__init__.c
msgid "Cannot reset into bootloader because no bootloader is present."
-msgstr "Reset zum bootloader nicht möglich da bootloader nicht vorhanden"
+msgstr "Reset zum bootloader nicht möglich da bootloader nicht vorhanden."
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Cannot set value when direction is input."
@@ -512,11 +515,11 @@ msgstr "Der Wert kann nicht gesetzt werden, wenn die Richtung input ist."
#: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "Cannot specify RTS or CTS in RS485 mode"
-msgstr ""
+msgstr "RTS oder CTS können im RS485-Modus nicht angegeben werden"
#: py/objslice.c
msgid "Cannot subclass slice"
-msgstr ""
+msgstr "Slice kann keine sub-klasse sein"
#: shared-module/bitbangio/SPI.c
msgid "Cannot transfer without MOSI and MISO pins."
@@ -529,6 +532,7 @@ msgstr "sizeof scalar kann nicht eindeutig bestimmt werden"
#: ports/stm/common-hal/pulseio/PWMOut.c
msgid "Cannot vary frequency on a timer that is already in use"
msgstr ""
+"Die Frequenz eines bereits verwendeten Timers kann nicht variiert werden"
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
@@ -540,13 +544,16 @@ msgstr "Schreiben von CharacteristicBuffer ist nicht vorgesehen"
#: supervisor/shared/safe_mode.c
msgid "CircuitPython core code crashed hard. Whoops!\n"
-msgstr ""
+msgstr "Der CircuitPython-Kerncode ist hart abgestürzt. Hoppla!\n"
#: supervisor/shared/safe_mode.c
msgid ""
"CircuitPython is in safe mode because you pressed the reset button during "
"boot. Press again to exit safe mode.\n"
msgstr ""
+"CircuitPython befindet sich im abgesicherten Modus, da Sie beim Booten die "
+"Reset-Taste gedrückt haben. Drücken Sie erneut, um den abgesicherten Modus "
+"zu verlassen.\n"
#: shared-module/bitbangio/SPI.c
msgid "Clock pin init failed."
@@ -574,6 +581,8 @@ msgid ""
"Connection has been disconnected and can no longer be used. Create a new "
"connection."
msgstr ""
+"Die Verbindung wurde getrennt und kann nicht mehr verwendet werden. "
+"Erstellen Sie eine neue Verbindung."
#: py/persistentcode.c
msgid "Corrupt .mpy file"
@@ -589,35 +598,35 @@ msgstr "Konnte UART nicht initialisieren"
#: ports/stm/common-hal/pulseio/PWMOut.c
msgid "Could not initialize channel"
-msgstr ""
+msgstr "Kanal konnte nicht initialisiert werden"
#: ports/stm/common-hal/pulseio/PWMOut.c
msgid "Could not initialize timer"
-msgstr ""
+msgstr "Timer konnte nicht initialisiert werden"
#: ports/stm/common-hal/pulseio/PWMOut.c
msgid "Could not re-init channel"
-msgstr ""
+msgstr "Kanal konnte nicht neu initiiert werden"
#: ports/stm/common-hal/pulseio/PWMOut.c
msgid "Could not re-init timer"
-msgstr ""
+msgstr "Timer konnte nicht neu gestartet werden"
#: ports/stm/common-hal/pulseio/PWMOut.c
msgid "Could not restart PWM"
-msgstr ""
+msgstr "PWM konnte nicht neu gestartet werden"
#: ports/stm/common-hal/pulseio/PWMOut.c
msgid "Could not start PWM"
-msgstr ""
+msgstr "PWM konnte nicht gestartet werden"
#: ports/stm/common-hal/busio/UART.c
msgid "Could not start interrupt, RX busy"
-msgstr ""
+msgstr "Interrupt konnte nicht gestartet werden, RX beschäftigt"
#: shared-module/audiomp3/MP3Decoder.c
msgid "Couldn't allocate decoder"
-msgstr ""
+msgstr "Decoder konnte nicht zugeordnet werden"
#: shared-module/audiocore/WaveFile.c shared-module/audiomixer/Mixer.c
#: shared-module/audiomp3/MP3Decoder.c
@@ -626,7 +635,7 @@ msgstr "Konnte first buffer nicht zuteilen"
#: shared-module/audiomp3/MP3Decoder.c
msgid "Couldn't allocate input buffer"
-msgstr ""
+msgstr "Eingabepuffer konnte nicht reserviert werden"
#: shared-module/audiocore/WaveFile.c shared-module/audiomixer/Mixer.c
#: shared-module/audiomp3/MP3Decoder.c
@@ -635,15 +644,15 @@ msgstr "Konnte second buffer nicht zuteilen"
#: supervisor/shared/safe_mode.c
msgid "Crash into the HardFault_Handler."
-msgstr ""
+msgstr "Absturz in den HardFault_Handler."
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "DAC Channel Init Error"
-msgstr ""
+msgstr "DAC Kanal Intialisierungs Fehler"
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "DAC Device Init Error"
-msgstr ""
+msgstr "DAC Device Init Error"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
msgid "DAC already in use"
@@ -672,7 +681,7 @@ msgstr "Gerät in Benutzung"
#: ports/cxd56/common-hal/digitalio/DigitalInOut.c
msgid "DigitalInOut not supported on given pin"
-msgstr ""
+msgstr "DigitalInOut wird auf dem angegebenen Pin nicht unterstützt"
#: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c
@@ -691,7 +700,7 @@ msgstr "Drive mode wird nicht verwendet, wenn die Richtung input ist."
#: shared-bindings/aesio/aes.c
msgid "ECB only operates on 16 bytes at a time"
-msgstr ""
+msgstr "Die EZB arbeitet jeweils nur mit 16 Bytes"
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
@@ -736,10 +745,11 @@ msgstr "Habe ein Tupel der Länge %d erwartet aber %d erhalten"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Extended advertisements with scan response not supported."
msgstr ""
+"Erweiterte Werbung (advertising) mit Scanantwort wird nicht unterstützt."
#: extmod/ulab/code/fft.c
msgid "FFT is defined for ndarrays only"
-msgstr ""
+msgstr "FFT ist nur für ndarrays definiert"
#: shared-bindings/ps2io/Ps2.c
msgid "Failed sending command."
@@ -765,7 +775,7 @@ msgstr "Konnte keine RX Buffer mit %d allozieren"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: internal error"
-msgstr ""
+msgstr "Verbindung fehlgeschlagen: interner Fehler"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: timeout"
@@ -773,7 +783,7 @@ msgstr "Verbindung nicht erfolgreich: timeout"
#: shared-module/audiomp3/MP3Decoder.c
msgid "Failed to parse MP3 file"
-msgstr ""
+msgstr "Parsen der MP3 Datei fehlgeschlagen"
#: ports/nrf/sd_mutex.c
#, c-format
@@ -782,7 +792,7 @@ msgstr "Mutex konnte nicht freigegeben werden. Status: 0x%04x"
#: supervisor/shared/safe_mode.c
msgid "Failed to write internal flash."
-msgstr ""
+msgstr "Interner Flash konnte nicht geschrieben werden."
#: py/moduerrno.c
msgid "File exists"
@@ -797,6 +807,8 @@ msgstr ""
#: ports/stm/common-hal/pulseio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr ""
+"Die Frequenz muss mit dem vorhandenen PWMOut unter Verwendung dieses Timers "
+"übereinstimmen"
#: shared-bindings/bitbangio/I2C.c shared-bindings/bitbangio/SPI.c
#: shared-bindings/busio/I2C.c shared-bindings/busio/SPI.c
@@ -816,11 +828,11 @@ msgstr "Gruppe voll"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c
msgid "Hardware busy, try alternative pins"
-msgstr ""
+msgstr "Hardware beschäftigt, versuchen Sie alternative Pins"
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
msgid "Hardware in use, try alternative pins"
-msgstr ""
+msgstr "Hardware in benutzung, probiere alternative Pins"
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
@@ -828,7 +840,7 @@ msgstr "Lese/Schreibe-operation an geschlossener Datei"
#: ports/stm/common-hal/busio/I2C.c
msgid "I2C Init Error"
-msgstr ""
+msgstr "I2C-Init-Fehler"
#: extmod/machine_i2c.c
msgid "I2C operation not supported"
@@ -837,7 +849,7 @@ msgstr "I2C-operation nicht unterstützt"
#: shared-bindings/aesio/aes.c
#, c-format
msgid "IV must be %d bytes long"
-msgstr ""
+msgstr "IV muss %d Bytes lang sein"
#: py/persistentcode.c
msgid ""
@@ -857,20 +869,20 @@ msgstr "Eingabe-/Ausgabefehler"
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient authentication"
-msgstr ""
+msgstr "Unzureichende Authentifizierung"
#: ports/nrf/common-hal/_bleio/__init__.c
msgid "Insufficient encryption"
-msgstr ""
+msgstr "Unzureichende Verschlüsselung"
#: ports/stm/common-hal/busio/UART.c
msgid "Internal define error"
-msgstr ""
+msgstr "Interner Definitionsfehler"
#: shared-module/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Internal error #%d"
-msgstr ""
+msgstr "Interner Fehler #%d"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
@@ -879,7 +891,7 @@ msgstr "Ungültiger %q pin"
#: ports/stm/common-hal/analogio/AnalogIn.c
msgid "Invalid ADC Unit value"
-msgstr ""
+msgstr "Ungültiger ADC-Einheitenwert"
#: shared-module/displayio/OnDiskBitmap.c
msgid "Invalid BMP file"
@@ -887,11 +899,11 @@ msgstr "Ungültige BMP-Datei"
#: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
-msgstr ""
+msgstr "Ungültiger DAC-Pin angegeben"
#: ports/mimxrt10xx/common-hal/busio/I2C.c ports/stm/common-hal/busio/I2C.c
msgid "Invalid I2C pin selection"
-msgstr ""
+msgstr "Ungültige I2C-Pinauswahl"
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c
#: ports/cxd56/common-hal/pulseio/PWMOut.c
@@ -901,11 +913,11 @@ msgstr "Ungültige PWM Frequenz"
#: ports/stm/common-hal/busio/SPI.c
msgid "Invalid SPI pin selection"
-msgstr ""
+msgstr "Ungültige SPI-Pin-Auswahl"
#: ports/stm/common-hal/busio/UART.c
msgid "Invalid UART pin selection"
-msgstr ""
+msgstr "Ungültige UART-Pinauswahl"
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
@@ -921,7 +933,7 @@ msgstr "Ungültige Puffergröße"
#: shared-bindings/_pixelbuf/PixelBuf.c
msgid "Invalid byteorder string"
-msgstr ""
+msgstr "Ungültige Byteorder String"
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
msgid "Invalid capture period. Valid range: 1 - 500"
@@ -933,7 +945,7 @@ msgstr "Ungültige Anzahl von Kanälen"
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Invalid direction."
-msgstr "Ungültige Richtung"
+msgstr "Ungültige Richtung."
#: shared-module/audiocore/WaveFile.c
msgid "Invalid file"
@@ -945,11 +957,11 @@ msgstr "Ungültige format chunk size"
#: ports/stm/common-hal/pulseio/PWMOut.c
msgid "Invalid frequency supplied"
-msgstr ""
+msgstr "Ungültige Frequenz geliefert"
#: supervisor/shared/safe_mode.c
msgid "Invalid memory access."
-msgstr ""
+msgstr "Ungültiger Speicherzugriff."
#: shared-bindings/bitbangio/SPI.c shared-bindings/busio/SPI.c
msgid "Invalid number of bits"
@@ -986,7 +998,7 @@ msgstr "Ungültige Pins"
#: ports/stm/common-hal/pulseio/PWMOut.c
msgid "Invalid pins for PWMOut"
-msgstr ""
+msgstr "Ungültige Pins für PWMOut"
#: shared-bindings/bitbangio/SPI.c shared-bindings/busio/SPI.c
#: shared-bindings/displayio/FourWire.c
@@ -999,7 +1011,7 @@ msgstr "Ungültige Eigenschaften"
#: shared-bindings/microcontroller/__init__.c
msgid "Invalid run mode."
-msgstr "Ungültiger Ausführungsmodus"
+msgstr "Ungültiger Ausführungsmodus."
#: shared-module/_bleio/Attribute.c
msgid "Invalid security_mode"
@@ -1019,11 +1031,11 @@ msgstr "Ungültige wave Datei"
#: ports/stm/common-hal/busio/UART.c
msgid "Invalid word/bit length"
-msgstr ""
+msgstr "Ungültige Wort- / Bitlänge"
#: shared-bindings/aesio/aes.c
msgid "Key must be 16, 24, or 32 bytes long"
-msgstr ""
+msgstr "Der Schlüssel muss 16, 24 oder 32 Byte lang sein"
#: py/compile.c
msgid "LHS of keyword arg must be an id"
@@ -1047,11 +1059,11 @@ msgstr "Länge darf nicht negativ sein"
#: shared-module/bitbangio/SPI.c
msgid "MISO pin init failed."
-msgstr "MISO pin Initialisierung fehlgeschlagen"
+msgstr "MISO pin Initialisierung fehlgeschlagen."
#: shared-module/bitbangio/SPI.c
msgid "MOSI pin init failed."
-msgstr "MOSI pin Initialisierung fehlgeschlagen"
+msgstr "MOSI pin Initialisierung fehlgeschlagen."
#: shared-module/displayio/Shape.c
#, c-format
@@ -1061,10 +1073,11 @@ msgstr "Maximaler x-Wert beim Spiegeln ist %d"
#: supervisor/shared/safe_mode.c
msgid "MicroPython NLR jump failed. Likely memory corruption."
msgstr ""
+"MicroPython NLR-Sprung fehlgeschlagen. Wahrscheinlich Speicherbeschädigung."
#: supervisor/shared/safe_mode.c
msgid "MicroPython fatal error."
-msgstr ""
+msgstr "Schwerwiegender MicroPython-Fehler."
#: shared-bindings/audiobusio/PDMIn.c
msgid "Microphone startup delay must be in range 0.0 to 1.0"
@@ -1073,7 +1086,7 @@ msgstr ""
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
msgid "Missing MISO or MOSI Pin"
-msgstr ""
+msgstr "Fehlender MISO- oder MOSI-Pin"
#: shared-bindings/displayio/Group.c
msgid "Must be a %q subclass."
@@ -1081,16 +1094,16 @@ msgstr "Muss eine %q Unterklasse sein."
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
msgid "Must provide MISO or MOSI pin"
-msgstr ""
+msgstr "Muss MISO- oder MOSI-Pin bereitstellen"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Must use a multiple of 6 rgb pins, not %d"
-msgstr ""
+msgstr "Muss ein Vielfaches von 6 RGB-Pins verwenden, nicht %d"
#: py/parse.c
msgid "Name too long"
-msgstr ""
+msgstr "Name zu lang"
#: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "No CCCD for this Characteristic"
@@ -1108,11 +1121,11 @@ msgstr "Kein DMA Kanal gefunden"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
msgid "No MISO Pin"
-msgstr ""
+msgstr "Kein MISO Pin"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
msgid "No MOSI Pin"
-msgstr ""
+msgstr "Kein MOSI Pin"
#: ports/atmel-samd/common-hal/busio/UART.c
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
@@ -1132,7 +1145,7 @@ msgstr "Keine Taktgeber verfügbar"
#: shared-bindings/_bleio/PacketBuffer.c
msgid "No connection: length cannot be determined"
-msgstr ""
+msgstr "Keine Verbindung: Länge kann nicht bestimmt werden"
#: shared-bindings/board/__init__.c
msgid "No default %q bus"
@@ -1157,15 +1170,15 @@ msgstr "Keine Hardwareunterstützung an diesem Pin"
#: shared-bindings/aesio/aes.c
msgid "No key was specified"
-msgstr ""
+msgstr "Es wurde kein Schlüssel angegeben"
#: shared-bindings/time/__init__.c
msgid "No long integer support"
-msgstr ""
+msgstr "Keine langen Integer (long) unterstützt"
#: ports/stm/common-hal/pulseio/PWMOut.c
msgid "No more timers available on this pin."
-msgstr ""
+msgstr "An diesem Pin sind keine Timer mehr verfügbar."
#: shared-module/touchio/TouchIn.c
msgid "No pulldown on pin; 1Mohm recommended"
@@ -1181,11 +1194,11 @@ msgstr "Keine solche Datei/Verzeichnis"
#: shared-module/rgbmatrix/RGBMatrix.c
msgid "No timer available"
-msgstr ""
+msgstr "Kein Timer verfügbar"
#: supervisor/shared/safe_mode.c
msgid "Nordic Soft Device failure assertion."
-msgstr ""
+msgstr "Fehlerbehauptung für Nordic Soft Device."
#: ports/nrf/common-hal/_bleio/__init__.c
#: shared-bindings/_bleio/CharacteristicBuffer.c
@@ -1246,7 +1259,7 @@ msgstr "Die PWM-Frequenz ist nicht schreibbar wenn variable_Frequenz = False."
#: ports/mimxrt10xx/common-hal/displayio/ParallelBus.c
#: ports/stm/common-hal/displayio/ParallelBus.c
msgid "ParallelBus not yet supported"
-msgstr ""
+msgstr "ParallelBus wird noch nicht unterstützt"
#: py/moduerrno.c
msgid "Permission denied"
@@ -1266,11 +1279,11 @@ msgstr ""
#: ports/atmel-samd/common-hal/countio/Counter.c
msgid "Pin must support hardware interrupts"
-msgstr ""
+msgstr "Pin muss Hardware-Interrupts unterstützen"
#: ports/stm/common-hal/pulseio/PulseIn.c
msgid "Pin number already reserved by EXTI"
-msgstr ""
+msgstr "PIN-Nummer bereits von EXTI reserviert"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
@@ -1279,6 +1292,9 @@ msgid ""
"bytes. If this cannot be avoided, pass allow_inefficient=True to the "
"constructor"
msgstr ""
+"Pinbelegung verwendet %d Bytes pro Element, was mehr als die idealen %d "
+"Bytes verbraucht. Wenn dies nicht vermieden werden kann, übergeben Sie "
+"allow_inefficient = True an den Konstruktor"
#: py/builtinhelp.c
msgid "Plus any modules on the filesystem\n"
@@ -1286,21 +1302,21 @@ msgstr "und alle Module im Dateisystem \n"
#: shared-module/vectorio/Polygon.c
msgid "Polygon needs at least 3 points"
-msgstr ""
+msgstr "Polygone brauchen mindestens 3 Punkte"
#: shared-bindings/ps2io/Ps2.c
msgid "Pop from an empty Ps2 buffer"
-msgstr ""
+msgstr "Pop aus einem leeren Ps2-Puffer"
#: shared-bindings/_bleio/Adapter.c
msgid "Prefix buffer must be on the heap"
-msgstr ""
+msgstr "Der Präfixbuffer muss sich auf dem Heap befinden"
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgstr ""
"Drücke eine Taste um dich mit der REPL zu verbinden. Drücke Strg-D zum neu "
-"laden"
+"laden."
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pull not used when direction is output."
@@ -1308,23 +1324,23 @@ msgstr "Pull wird nicht verwendet, wenn die Richtung output ist."
#: ports/stm/common-hal/pulseio/PulseIn.c
msgid "PulseIn not supported on this chip"
-msgstr ""
+msgstr "PulseIn wird auf diesem Chip nicht unterstützt"
#: ports/stm/common-hal/pulseio/PulseOut.c
msgid "PulseOut not supported on this chip"
-msgstr ""
+msgstr "PulseOut wird auf diesem Chip nicht unterstützt"
#: ports/stm/common-hal/os/__init__.c
msgid "RNG DeInit Error"
-msgstr ""
+msgstr "RNG DeInit-Fehler"
#: ports/stm/common-hal/os/__init__.c
msgid "RNG Init Error"
-msgstr ""
+msgstr "RNG Init Fehler"
#: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "RS485 inversion specified when not in RS485 mode"
-msgstr ""
+msgstr "RS485-Inversion angegeben, wenn nicht im RS485-Modus"
#: ports/cxd56/common-hal/rtc/RTC.c ports/mimxrt10xx/common-hal/rtc/RTC.c
#: ports/nrf/common-hal/rtc/RTC.c
@@ -1338,11 +1354,11 @@ msgstr "Eine RTC wird auf diesem Board nicht unterstützt"
#: ports/atmel-samd/common-hal/busio/UART.c ports/cxd56/common-hal/busio/UART.c
#: ports/nrf/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
msgid "RTS/CTS/RS485 Not yet supported on this device"
-msgstr ""
+msgstr "RTS / CTS / RS485 Wird von diesem Gerät noch nicht unterstützt"
#: ports/stm/common-hal/os/__init__.c
msgid "Random number generation error"
-msgstr ""
+msgstr "Fehler bei der Erzeugung von Zufallszahlen"
#: shared-bindings/pulseio/PulseIn.c
msgid "Read-only"
@@ -1362,7 +1378,7 @@ msgstr "Zu früh neu geladen"
#: shared-bindings/aesio/aes.c
msgid "Requested AES mode is unsupported"
-msgstr ""
+msgstr "Der angeforderte AES-Modus wird nicht unterstützt"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
msgid "Right channel unsupported"
@@ -1386,11 +1402,11 @@ msgstr "SDA oder SCL brauchen pull up"
#: ports/stm/common-hal/busio/SPI.c
msgid "SPI Init Error"
-msgstr ""
+msgstr "SPI-Init-Fehler"
#: ports/stm/common-hal/busio/SPI.c
msgid "SPI Re-initialization error"
-msgstr ""
+msgstr "SPI-Neuinitialisierungsfehler"
#: shared-bindings/audiomixer/Mixer.c
msgid "Sample rate must be positive"
@@ -1403,15 +1419,15 @@ msgstr "Abtastrate zu hoch. Wert muss unter %d liegen"
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Scan already in progess. Stop with stop_scan."
-msgstr ""
+msgstr "Scannen Sie bereits in Bearbeitung. Stoppen Sie mit stop_scan."
#: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "Selected CTS pin not valid"
-msgstr ""
+msgstr "Ausgewählter CTS-Pin ungültig"
#: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "Selected RTS pin not valid"
-msgstr ""
+msgstr "Ausgewählter RTS-Pin ungültig"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
@@ -1429,7 +1445,7 @@ msgstr "Slices werden nicht unterstützt"
#: shared-bindings/aesio/aes.c
msgid "Source and destination buffers must be the same length"
-msgstr ""
+msgstr "Quell- und Zielbuffer müssen gleich lang sein"
#: extmod/modure.c
msgid "Splitting with sub-captures"
@@ -1445,17 +1461,19 @@ msgstr "Stream fehlt readinto() oder write() Methode."
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
msgid "Supply at least one UART pin"
-msgstr ""
+msgstr "Geben Sie mindestens einen UART-Pin an"
#: ports/stm/common-hal/microcontroller/Processor.c
msgid "Temperature read timed out"
-msgstr ""
+msgstr "Zeitüberschreitung beim Auslesen der Temperatur"
#: supervisor/shared/safe_mode.c
msgid ""
"The CircuitPython heap was corrupted because the stack was too small.\n"
"Please increase the stack size if you know how, or if not:"
msgstr ""
+"Der CircuitPython-Heap wurde beschädigt, weil der Stapel zu klein war.\n"
+"Bitte erhöhen Sie die Stapelgröße, wenn Sie wissen wie oder wenn nicht:"
#: supervisor/shared/safe_mode.c
msgid ""
@@ -1471,51 +1489,59 @@ msgid ""
"enough power for the whole circuit and press reset (after ejecting "
"CIRCUITPY).\n"
msgstr ""
+"Die Spannungsversorgung des Mikrocontrollers hat den minimal Wert "
+"unterschritten.\n"
+"Stellen Sie sicher, dass Ihr Netzteil genug Strom bereitstellt für den "
+"gesamten Stromkreis und drücken Sie Reset (nach dem Auswerfen von "
+"CIRCUITPY).\n"
#: shared-module/audiomixer/MixerVoice.c
msgid "The sample's bits_per_sample does not match the mixer's"
msgstr ""
+"Das bits_per_sample des Samples stimmt nicht mit dem des Mixers überein"
#: shared-module/audiomixer/MixerVoice.c
msgid "The sample's channel count does not match the mixer's"
-msgstr ""
+msgstr "Die Kanalanzahl des Samples stimmt nicht mit der des Mixers überein"
#: shared-module/audiomixer/MixerVoice.c
msgid "The sample's sample rate does not match the mixer's"
-msgstr ""
+msgstr "Die Abtastrate der Probe stimmt nicht mit der des Mischers überein"
#: shared-module/audiomixer/MixerVoice.c
msgid "The sample's signedness does not match the mixer's"
msgstr ""
+"Die Art des Vorzeichens des Samples stimmt nicht mit dem des Mixers überein"
#: shared-bindings/displayio/TileGrid.c
msgid "Tile height must exactly divide bitmap height"
-msgstr ""
+msgstr "Die Kachelhöhe muss die Bitmaphöhe genau teilen"
#: shared-bindings/displayio/TileGrid.c shared-module/displayio/TileGrid.c
msgid "Tile index out of bounds"
-msgstr ""
+msgstr "Kachel index außerhalb der Grenzen"
#: shared-bindings/displayio/TileGrid.c
msgid "Tile value out of bounds"
-msgstr ""
+msgstr "Kachelwert außerhalb der Grenzen"
#: shared-bindings/displayio/TileGrid.c
msgid "Tile width must exactly divide bitmap width"
-msgstr ""
+msgstr "Die Kachelbreite muss die Bitmap-Breite genau teilen"
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Timeout is too long: Maximum timeout length is %d seconds"
msgstr ""
+"Zeitbeschränkung ist zu groß: Maximale Zeitbeschränkung ist %d Sekunden"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
msgid "Too many channels in sample."
-msgstr "Zu viele Kanäle im sample"
+msgstr "Zu viele Kanäle im sample."
#: shared-module/displayio/__init__.c
msgid "Too many display busses"
-msgstr ""
+msgstr "Zu viele Display Busse"
#: shared-module/displayio/__init__.c
msgid "Too many displays"
@@ -1524,6 +1550,8 @@ msgstr "Zu viele displays"
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Total data to write is larger than outgoing_packet_length"
msgstr ""
+"Die Gesamtzahl der zu schreibenden Daten ist größer als "
+"outgoing_packet_length"
#: py/obj.c
msgid "Traceback (most recent call last):\n"
@@ -1535,23 +1563,23 @@ msgstr "Tuple- oder struct_time-Argument erforderlich"
#: ports/stm/common-hal/busio/UART.c
msgid "UART Buffer allocation error"
-msgstr ""
+msgstr "UART Buffer reservierungs Fehler"
#: ports/stm/common-hal/busio/UART.c
msgid "UART De-init error"
-msgstr ""
+msgstr "UART De-Init-Fehler"
#: ports/stm/common-hal/busio/UART.c
msgid "UART Init Error"
-msgstr ""
+msgstr "UART Init Fehler"
#: ports/stm/common-hal/busio/UART.c
msgid "UART Re-init error"
-msgstr ""
+msgstr "UART Re-Init-Fehler"
#: ports/stm/common-hal/busio/UART.c
msgid "UART write error"
-msgstr ""
+msgstr "UART-Schreibfehler"
#: shared-module/usb_hid/Device.c
msgid "USB Busy"
@@ -1567,7 +1595,7 @@ msgstr "UUID Integer-Wert muss ein Wert von 0 bis 0xffff sein"
#: shared-bindings/_bleio/UUID.c
msgid "UUID string not 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'"
-msgstr "UUID Zeichenfolge ist nicht 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'"
+msgstr "UUID string ist nicht 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'"
#: shared-bindings/_bleio/UUID.c
msgid "UUID value is not str, int or byte buffer"
@@ -1607,21 +1635,21 @@ msgstr "Unerwarteter nrfx uuid-Typ"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown gatt error: 0x%04x"
-msgstr ""
+msgstr "Unbekannter Gatt-Fehler: 0x%04x"
#: supervisor/shared/safe_mode.c
msgid "Unknown reason."
-msgstr ""
+msgstr "Unbekannter Grund."
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown security error: 0x%04x"
-msgstr ""
+msgstr "Unbekannter Sicherheitsfehler: 0x%04x"
#: ports/nrf/common-hal/_bleio/__init__.c
#, c-format
msgid "Unknown soft device error: %04x"
-msgstr ""
+msgstr "Unbekannter Soft Device-Fehler: %04x"
#: shared-bindings/_pixelbuf/PixelBuf.c
#, c-format
@@ -1635,6 +1663,8 @@ msgid ""
"Unspecified issue. Can be that the pairing prompt on the other device was "
"declined or ignored."
msgstr ""
+"Nicht näher bezeichnetes Problem. Möglicherweise wurde die Pairing-"
+"Eingabeaufforderung auf dem anderen Gerät abgelehnt oder ignoriert."
#: ports/atmel-samd/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/I2C.c
msgid "Unsupported baudrate"
@@ -1654,12 +1684,12 @@ msgstr "Nicht unterstützte Operation"
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Unsupported pull value."
-msgstr "Nicht unterstützter Pull-Wert"
+msgstr "Nicht unterstützter Pull-Wert."
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
-msgstr ""
+msgstr "Wert Länge != Erforderliche feste Länge"
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
@@ -1672,7 +1702,7 @@ msgstr "Viper-Funktionen unterstützen derzeit nicht mehr als 4 Argumente"
#: ports/stm/common-hal/microcontroller/Processor.c
msgid "Voltage read timed out"
-msgstr ""
+msgstr "Zeitüberschreitung beim Lesen der Spannung"
#: main.c
msgid "WARNING: Your code filename has two extensions\n"
@@ -1717,11 +1747,13 @@ msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
-msgstr ""
+msgstr "Schreiben nicht unterstüzt für die Characteristic"
#: supervisor/shared/safe_mode.c
msgid "You are in safe mode: something unanticipated happened.\n"
msgstr ""
+"Sie befinden sich im abgesicherten Modus: Es ist etwas Unerwartetes "
+"passiert.\n"
#: supervisor/shared/safe_mode.c
msgid "You requested starting safe mode by "
@@ -1763,7 +1795,7 @@ msgstr "adresses ist leer"
#: extmod/ulab/code/vectorise.c
msgid "arctan2 is implemented for scalars and ndarrays only"
-msgstr ""
+msgstr "arctan2 ist nur für Skalare und ndarrays implementiert"
#: py/modbuiltins.c
msgid "arg is an empty sequence"
@@ -1771,7 +1803,7 @@ msgstr "arg ist eine leere Sequenz"
#: extmod/ulab/code/numerical.c
msgid "argsort argument must be an ndarray"
-msgstr ""
+msgstr "Das Argument argsort muss ein ndarray sein"
#: py/runtime.c
msgid "argument has wrong type"
@@ -1788,7 +1820,7 @@ msgstr "Argument sollte '%q' sein, nicht '%q'"
#: extmod/ulab/code/linalg.c
msgid "arguments must be ndarrays"
-msgstr ""
+msgstr "Argumente müssen ndarrays sein"
#: py/objarray.c shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
@@ -1796,7 +1828,7 @@ msgstr "Array/Bytes auf der rechten Seite erforderlich"
#: extmod/ulab/code/numerical.c
msgid "attempt to get argmin/argmax of an empty sequence"
-msgstr ""
+msgstr "Sie haben versucht argmin/argmax von einer leeren Sequenz zu bekommen"
#: py/objstr.c
msgid "attributes not supported yet"
@@ -1804,23 +1836,23 @@ msgstr "Attribute werden noch nicht unterstützt"
#: extmod/ulab/code/numerical.c
msgid "axis must be -1, 0, None, or 1"
-msgstr ""
+msgstr "Die Achse muss -1, 0, Keine oder 1 sein"
#: extmod/ulab/code/numerical.c
msgid "axis must be -1, 0, or 1"
-msgstr ""
+msgstr "Die Achse muss -1, 0 oder 1 sein"
#: extmod/ulab/code/numerical.c
msgid "axis must be None, 0, or 1"
-msgstr ""
+msgstr "Die Achse muss None, 0 oder 1 sein"
#: py/builtinevex.c
msgid "bad compile mode"
-msgstr ""
+msgstr "schlechter Kompilierungsmodus"
#: py/objstr.c
msgid "bad conversion specifier"
-msgstr ""
+msgstr "schlechter Konvertierungsspezifizierer"
#: py/objstr.c
msgid "bad format string"
@@ -1873,15 +1905,15 @@ msgstr "Buffer müssen gleich lang sein"
#: shared-bindings/_pew/PewPew.c
msgid "buttons must be digitalio.DigitalInOut"
-msgstr ""
+msgstr "Tasten müssen digitalio.DigitalInOut sein"
#: py/vm.c
msgid "byte code not implemented"
-msgstr ""
+msgstr "Bytecode nicht implementiert"
#: shared-bindings/_pixelbuf/PixelBuf.c
msgid "byteorder is not a string"
-msgstr ""
+msgstr "Byteorder ist kein String"
#: ports/atmel-samd/common-hal/busio/UART.c
msgid "bytes > 8 bits not supported"
@@ -1889,7 +1921,7 @@ msgstr "bytes mit mehr als 8 bits werden nicht unterstützt"
#: py/objstr.c
msgid "bytes value out of range"
-msgstr ""
+msgstr "Byte-Wert außerhalb des Bereichs"
#: ports/atmel-samd/bindings/samd/Clock.c
msgid "calibration is out of range"
@@ -1918,6 +1950,8 @@ msgstr "kann nur Bytecode speichern"
#: py/objtype.c
msgid "can't add special method to already-subclassed class"
msgstr ""
+"Der bereits untergeordneten Klasse kann keine spezielle Methode hinzugefügt "
+"werden"
#: py/compile.c
msgid "can't assign to expression"
@@ -2008,11 +2042,13 @@ msgstr "Laden mit '%q' index nicht möglich"
#: py/objgenerator.c
msgid "can't pend throw to just-started generator"
-msgstr ""
+msgstr "Ich kann den Wurf nicht an den gerade gestarteten Generator hängen"
#: py/objgenerator.c
msgid "can't send non-None value to a just-started generator"
msgstr ""
+"Nicht \"None\" Werte können nicht an einen gerade gestarteten Generator "
+"gesendet werden"
#: py/objnamedtuple.c
msgid "can't set attribute"
@@ -2034,11 +2070,15 @@ msgstr "Speichern mit '%q' Index nicht möglich"
msgid ""
"can't switch from automatic field numbering to manual field specification"
msgstr ""
+"kann nicht von der automatischen Feldnummerierung zur manuellen "
+"Feldspezifikation wechseln"
#: py/objstr.c
msgid ""
"can't switch from manual field specification to automatic field numbering"
msgstr ""
+"kann nicht von der manuellen Feldspezifikation zur automatischen "
+"Feldnummerierung wechseln"
#: py/objtype.c
msgid "cannot create '%q' instances"
@@ -2059,14 +2099,15 @@ msgstr "kann keinen relativen Import durchführen"
#: extmod/ulab/code/ndarray.c
msgid "cannot reshape array (incompatible input/output shape)"
msgstr ""
+"Array kann nicht umgeformt werden (inkompatible Eingabe- / Ausgabeform)"
#: py/emitnative.c
msgid "casting"
-msgstr ""
+msgstr "Umwandlung (cast)"
#: shared-bindings/_stage/Text.c
msgid "chars buffer too small"
-msgstr ""
+msgstr "(char) Zeichenpuffer zu klein"
#: py/modbuiltins.c
msgid "chr() arg not in range(0x110000)"
@@ -2078,7 +2119,7 @@ msgstr "chr() arg ist nicht in range(256)"
#: shared-module/vectorio/Circle.c
msgid "circle can only be registered in one parent"
-msgstr ""
+msgstr "Kreis kann nur in einem Elternteil registriert werden"
#: shared-bindings/displayio/Palette.c
msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)"
@@ -2087,6 +2128,7 @@ msgstr "Farbpuffer muss 3 Bytes (RGB) oder 4 Bytes (RGB + pad byte) sein"
#: shared-bindings/displayio/Palette.c
msgid "color buffer must be a buffer, tuple, list, or int"
msgstr ""
+"Der Farbpuffer muss ein Puffer, ein Tupel, eine Liste oder ein Int sein"
#: shared-bindings/displayio/Palette.c
msgid "color buffer must be a bytearray or array of type 'b' or 'B'"
@@ -2123,27 +2165,27 @@ msgstr "Umwandlung zu Objekt"
#: extmod/ulab/code/filter.c
msgid "convolve arguments must be linear arrays"
-msgstr ""
+msgstr "Convolve-Argumente müssen lineare Arrays sein"
#: extmod/ulab/code/filter.c
msgid "convolve arguments must be ndarrays"
-msgstr ""
+msgstr "Convolve-Argumente müssen ndarrays sein"
#: extmod/ulab/code/filter.c
msgid "convolve arguments must not be empty"
-msgstr ""
+msgstr "Convolve Argumente dürfen nicht leer sein"
#: extmod/ulab/code/ndarray.c
msgid "could not broadast input array from shape"
-msgstr ""
+msgstr "Eingabearray konnte nicht aus der Form übertragen werden"
#: extmod/ulab/code/poly.c
msgid "could not invert Vandermonde matrix"
-msgstr ""
+msgstr "Vandermonde-Matrix konnte nicht invertiert werden"
#: extmod/ulab/code/numerical.c
msgid "ddof must be smaller than length of data set"
-msgstr ""
+msgstr "ddof muss kleiner als die Länge des Datensatzes sein"
#: py/parsenum.c
msgid "decimal numbers not supported"
@@ -2157,10 +2199,12 @@ msgstr "Die Standart-Ausnahmebehandlung muss als letztes sein"
msgid ""
"destination buffer must be a bytearray or array of type 'B' for bit_depth = 8"
msgstr ""
+"Der Zielbuffer muss ein Bytearray oder ein Array vom Typ 'B' für bit_depth = "
+"8 sein"
#: shared-bindings/audiobusio/PDMIn.c
msgid "destination buffer must be an array of type 'H' for bit_depth = 16"
-msgstr ""
+msgstr "Der Zielpuffer muss ein Array vom Typ 'H' für bit_depth = 16 sein"
#: shared-bindings/audiobusio/PDMIn.c
msgid "destination_length must be an int >= 0"
@@ -2168,11 +2212,11 @@ msgstr "destination_length muss ein int >= 0 sein"
#: py/objdict.c
msgid "dict update sequence has wrong length"
-msgstr ""
+msgstr "Die Wörterbuch-Aktualisierungssequenz hat eine falsche Länge"
#: extmod/ulab/code/numerical.c
msgid "diff argument must be an ndarray"
-msgstr ""
+msgstr "diff Argument muss ein ndarray sein"
#: py/modmath.c py/objfloat.c py/objint_longlong.c py/objint_mpz.c py/runtime.c
#: shared-bindings/math/__init__.c
@@ -2197,7 +2241,7 @@ msgstr "leere Sequenz"
#: py/objstr.c
msgid "end of format while looking for conversion specifier"
-msgstr ""
+msgstr "Ende des Formats wärend der Suche nach einem conversion specifier"
#: shared-bindings/displayio/Shape.c
msgid "end_x should be an int"
@@ -2206,7 +2250,7 @@ msgstr "end_x sollte ein int sein"
#: ports/nrf/common-hal/busio/UART.c
#, c-format
msgid "error = 0x%08lX"
-msgstr ""
+msgstr "Fehler = 0x%08lX"
#: py/runtime.c
msgid "exceptions must derive from BaseException"
@@ -2246,23 +2290,23 @@ msgstr "Es wurden zusätzliche Argumente ohne Keyword angegeben"
#: py/parse.c
msgid "f-string expression part cannot include a '#'"
-msgstr ""
+msgstr "f-string expression Teil kann kein '#' beinhalten"
#: py/parse.c
msgid "f-string expression part cannot include a backslash"
-msgstr ""
+msgstr "Die f-String expression darf keinen Backslash enthalten"
#: py/parse.c
msgid "f-string: empty expression not allowed"
-msgstr ""
+msgstr "f-string: leere expression nicht erlaubt"
#: py/parse.c
msgid "f-string: expecting '}'"
-msgstr ""
+msgstr "f-string: erwartet '}'"
#: py/parse.c
msgid "f-string: single '}' is not allowed"
-msgstr ""
+msgstr "f-string: einzelne '}' nicht erlaubt"
#: shared-bindings/audiocore/WaveFile.c shared-bindings/audiomp3/MP3Decoder.c
#: shared-bindings/displayio/OnDiskBitmap.c
@@ -2275,11 +2319,11 @@ msgstr "Das Dateisystem muss eine Mount-Methode bereitstellen"
#: extmod/ulab/code/ndarray.c
msgid "first argument must be an iterable"
-msgstr ""
+msgstr "Das erste Argument muss iterierbar sein"
#: extmod/ulab/code/vectorise.c
msgid "first argument must be an ndarray"
-msgstr ""
+msgstr "Das erste Argument muss ein Ndarray sein"
#: py/objtype.c
msgid "first argument to super() must be type"
@@ -2291,11 +2335,11 @@ msgstr "Erstes Bit muss das höchstwertigste Bit (MSB) sein"
#: extmod/ulab/code/ndarray.c
msgid "flattening order must be either 'C', or 'F'"
-msgstr ""
+msgstr "Die Abflachungsreihenfolge muss entweder \"C\" oder \"F\" sein"
#: extmod/ulab/code/numerical.c
msgid "flip argument must be an ndarray"
-msgstr ""
+msgstr "Das Flip-Argument muss ein Ndarray sein"
#: py/objint.c
msgid "float too big"
@@ -2307,7 +2351,7 @@ msgstr "Die Schriftart (font) muss 2048 Byte lang sein"
#: py/objstr.c
msgid "format requires a dict"
-msgstr ""
+msgstr "Format erfordert ein Wörterbuch (dict)"
#: py/objdeque.c
msgid "full"
@@ -2328,7 +2372,7 @@ msgstr "Funktion hat mehrere Werte für Argument '%q'"
#: extmod/ulab/code/compare.c
msgid "function is implemented for scalars and ndarrays only"
-msgstr ""
+msgstr "Die Funktion ist nur für Skalare und Ndarrays implementiert"
#: py/argcheck.c
#, c-format
@@ -2396,7 +2440,7 @@ msgstr "padding ist inkorrekt"
#: extmod/ulab/code/ndarray.c
msgid "index is out of bounds"
-msgstr ""
+msgstr "Index ist außerhalb der Grenzen"
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
#: ports/cxd56/common-hal/pulseio/PulseIn.c
@@ -2407,11 +2451,11 @@ msgstr "index außerhalb der Reichweite"
#: py/obj.c
msgid "indices must be integers"
-msgstr "Indizes müssen ganze Zahlen sein"
+msgstr "Indizes müssen Integer sein"
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
-msgstr ""
+msgstr "Indizes müssen Integer, Slices oder Boolesche Listen sein"
#: py/compile.c
msgid "inline assembler must be a function"
@@ -2419,35 +2463,35 @@ msgstr "inline assembler muss eine function sein"
#: extmod/ulab/code/create.c
msgid "input argument must be an integer or a 2-tuple"
-msgstr ""
+msgstr "Das Eingabeargument muss eine Ganzzahl oder ein 2-Tupel sein"
#: extmod/ulab/code/fft.c
msgid "input array length must be power of 2"
-msgstr ""
+msgstr "Die Länge des Eingabearrays muss eine Potenz von 2 sein"
#: extmod/ulab/code/poly.c
msgid "input data must be an iterable"
-msgstr ""
+msgstr "Eingabedaten müssen iterierbar sein"
#: extmod/ulab/code/linalg.c
msgid "input matrix is asymmetric"
-msgstr ""
+msgstr "Eingabematrix ist asymmetrisch"
#: extmod/ulab/code/linalg.c
msgid "input matrix is singular"
-msgstr ""
+msgstr "Eingabematrix ist singulär"
#: extmod/ulab/code/linalg.c
msgid "input must be square matrix"
-msgstr ""
+msgstr "Die Eingabe muss eine quadratische Matrix sein"
#: extmod/ulab/code/numerical.c
msgid "input must be tuple, list, range, or ndarray"
-msgstr ""
+msgstr "Die Eingabe muss Tupel, Liste, Bereich oder Ndarray sein"
#: extmod/ulab/code/poly.c
msgid "input vectors must be of equal length"
-msgstr ""
+msgstr "Eingabevektoren müssen gleich lang sein"
#: py/parsenum.c
msgid "int() arg 2 must be >= 2 and <= 36"
@@ -2529,11 +2573,11 @@ msgstr "issubclass() arg 2 muss eine Klasse oder ein Tupel von Klassen sein"
#: extmod/ulab/code/ndarray.c
msgid "iterables are not of the same length"
-msgstr ""
+msgstr "iterables sind nicht gleich lang"
#: extmod/ulab/code/linalg.c
msgid "iterations did not converge"
-msgstr ""
+msgstr "Iterationen sind nicht konvergiert (converged)"
#: py/objstr.c
msgid "join expects a list of str/bytes objects consistent with self object"
@@ -2565,7 +2609,7 @@ msgstr "Für diesen Typ ist length nicht zulässig"
#: shared-bindings/audiomixer/MixerVoice.c
msgid "level must be between 0 and 1"
-msgstr ""
+msgstr "Der Pegel muss zwischen 0 und 1 liegen"
#: py/objarray.c
msgid "lhs and rhs should be compatible"
@@ -2583,7 +2627,7 @@ msgstr "Lokales '%q' verwendet bevor Typ bekannt"
msgid "local variable referenced before assignment"
msgstr ""
"Es wurde versucht auf eine Variable zuzugreifen, die es (noch) nicht gibt. "
-"Variablen immer zuerst Zuweisen!"
+"Variablen immer zuerst Zuweisen"
#: py/objint.c
msgid "long int not supported in this build"
@@ -2591,7 +2635,7 @@ msgstr "long int wird in diesem Build nicht unterstützt"
#: py/parse.c
msgid "malformed f-string"
-msgstr ""
+msgstr "fehlformatierter f-string"
#: shared-bindings/_stage/Layer.c
msgid "map buffer too small"
@@ -2599,15 +2643,15 @@ msgstr "map buffer zu klein"
#: py/modmath.c shared-bindings/math/__init__.c
msgid "math domain error"
-msgstr ""
+msgstr "Mathe-Domain-Fehler"
#: extmod/ulab/code/linalg.c
msgid "matrix dimensions do not match"
-msgstr ""
+msgstr "Matrix Dimensionen stimmen nicht überein"
#: extmod/ulab/code/linalg.c
msgid "matrix is not positive definite"
-msgstr ""
+msgstr "Matrix ist nicht positiv definitiv"
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
@@ -2634,7 +2678,7 @@ msgstr "Modul nicht gefunden"
#: extmod/ulab/code/poly.c
msgid "more degrees of freedom than data points"
-msgstr ""
+msgstr "mehr Freiheitsgrade als Datenpunkte"
#: py/compile.c
msgid "multiple *x in assignment"
@@ -2642,7 +2686,7 @@ msgstr "mehrere *x in Zuordnung"
#: py/objtype.c
msgid "multiple bases have instance lay-out conflict"
-msgstr ""
+msgstr "Mehrere Basen haben einen Instanzlayoutkonflikt"
#: py/objtype.c
msgid "multiple inheritance not supported"
@@ -2650,7 +2694,7 @@ msgstr "Mehrfache Vererbung nicht unterstützt"
#: py/emitnative.c
msgid "must raise an object"
-msgstr ""
+msgstr "muss ein Objekt verursachen (raise)"
#: extmod/machine_spi.c
msgid "must specify all of sck/mosi/miso"
@@ -2662,7 +2706,7 @@ msgstr "muss Schlüsselwortargument für key function verwenden"
#: extmod/ulab/code/numerical.c
msgid "n must be between 0, and 9"
-msgstr ""
+msgstr "n muss zwischen 0 und 9 liegen"
#: py/runtime.c
msgid "name '%q' is not defined"
@@ -2678,24 +2722,24 @@ msgstr "Name für Argumente wiederverwendet"
#: py/emitnative.c
msgid "native yield"
-msgstr ""
+msgstr "native Ausbeute (yield)"
#: py/runtime.c
#, c-format
msgid "need more than %d values to unpack"
-msgstr ""
+msgstr "Zum Entpacken sind mehr als %d Werte erforderlich"
#: py/objint_longlong.c py/objint_mpz.c py/runtime.c
msgid "negative power with no float support"
-msgstr ""
+msgstr "negative Potenz ohne Gleitkomma (float) Unterstützung"
#: py/objint_mpz.c py/runtime.c
msgid "negative shift count"
-msgstr ""
+msgstr "Negative shift Anzahl"
#: py/vm.c
msgid "no active exception to reraise"
-msgstr ""
+msgstr "Keine aktive Ausnahme zu verusachen (raise)"
#: shared-bindings/socket/__init__.c shared-module/network/__init__.c
msgid "no available NIC"
@@ -2703,7 +2747,7 @@ msgstr "kein verfügbares Netzwerkadapter (NIC)"
#: py/compile.c
msgid "no binding for nonlocal found"
-msgstr ""
+msgstr "Kein Binding für nonlocal gefunden"
#: py/builtinimport.c
msgid "no module named '%q'"
@@ -2720,7 +2764,7 @@ msgstr "kein solches Attribut"
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
-msgstr ""
+msgstr "non-UUID gefunden in service_uuids_whitelist"
#: py/compile.c
msgid "non-default argument follows default argument"
@@ -2732,11 +2776,11 @@ msgstr "eine nicht-hex zahl wurde gefunden"
#: py/compile.c
msgid "non-keyword arg after */**"
-msgstr ""
+msgstr "Nicht-Schlüsselwort arg nach * / **"
#: py/compile.c
msgid "non-keyword arg after keyword arg"
-msgstr ""
+msgstr "Nicht-Schlüsselwort Argument nach Schlüsselwort Argument"
#: shared-bindings/_bleio/UUID.c
msgid "not a 128-bit UUID"
@@ -2745,18 +2789,19 @@ msgstr "keine 128-bit UUID"
#: py/objstr.c
msgid "not all arguments converted during string formatting"
msgstr ""
+"Nicht alle Argumente wurden während der Formatierung des Strings konvertiert"
#: py/objstr.c
msgid "not enough arguments for format string"
-msgstr ""
+msgstr "Nicht genügend Argumente für den Formatierungs-String"
#: extmod/ulab/code/poly.c
msgid "number of arguments must be 2, or 3"
-msgstr ""
+msgstr "Die Anzahl der Argumente muss 2 oder 3 sein"
#: extmod/ulab/code/create.c
msgid "number of points must be at least 2"
-msgstr ""
+msgstr "Die Anzahl der Punkte muss mindestens 2 betragen"
#: py/obj.c
#, c-format
@@ -2785,7 +2830,7 @@ msgstr "Objekt ist kein Iterator"
#: py/objtype.c py/runtime.c
msgid "object not callable"
-msgstr ""
+msgstr "Objekt nicht aufrufbar"
#: py/sequence.c shared-bindings/displayio/Group.c
msgid "object not in sequence"
@@ -2824,19 +2869,20 @@ msgstr "nur eine sample_rate=16000 wird unterstützt"
#: shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr ""
+"Es werden nur Slices mit Schritt = 1 (auch bekannt als None) unterstützt"
#: extmod/ulab/code/compare.c extmod/ulab/code/ndarray.c
#: extmod/ulab/code/vectorise.c
msgid "operands could not be broadcast together"
-msgstr ""
+msgstr "Operanden konnten nicht zusammen gesendet werden"
#: extmod/ulab/code/numerical.c
msgid "operation is not implemented on ndarrays"
-msgstr ""
+msgstr "Die Operation ist für ndarrays nicht implementiert"
#: extmod/ulab/code/ndarray.c
msgid "operation is not supported for given type"
-msgstr ""
+msgstr "Die Operation wird für den angegebenen Typ nicht unterstützt"
#: py/modbuiltins.c
msgid "ord expects a character"
@@ -2846,7 +2892,7 @@ msgstr "ord erwartet ein Zeichen"
#, c-format
msgid "ord() expected a character, but string of length %d found"
msgstr ""
-"ord() erwartet ein Zeichen aber es wurde eine Zeichenfolge mit Länge %d "
+"ord() erwartet einen Buchstaben(char) aber es wurde ein String mit Länge %d "
"gefunden"
#: py/objint_mpz.c
@@ -2855,7 +2901,7 @@ msgstr "Überlauf beim konvertieren von long int zu machine word"
#: shared-bindings/_stage/Layer.c shared-bindings/_stage/Text.c
msgid "palette must be 32 bytes long"
-msgstr ""
+msgstr "Die Palette muss 32 Byte lang sein"
#: shared-bindings/displayio/Palette.c
msgid "palette_index should be an int"
@@ -2871,7 +2917,7 @@ msgstr "Die Parameter müssen Register der Reihenfolge a2 bis a5 sein"
#: py/emitinlinethumb.c
msgid "parameters must be registers in sequence r0 to r3"
-msgstr ""
+msgstr "Die Parameter müssen Register der Reihenfolge r0 bis r3 sein"
#: shared-bindings/displayio/Bitmap.c
msgid "pixel coordinates out of bounds"
@@ -2879,7 +2925,7 @@ msgstr "Pixelkoordinaten außerhalb der Grenzen"
#: shared-bindings/displayio/Bitmap.c
msgid "pixel value requires too many bits"
-msgstr ""
+msgstr "Der Pixelwert erfordert zu viele Bits"
#: shared-bindings/displayio/TileGrid.c shared-bindings/vectorio/VectorShape.c
msgid "pixel_shader must be displayio.Palette or displayio.ColorConverter"
@@ -2887,7 +2933,7 @@ msgstr "pixel_shader muss displayio.Palette oder displayio.ColorConverter sein"
#: shared-module/vectorio/Polygon.c
msgid "polygon can only be registered in one parent"
-msgstr ""
+msgstr "Polygon kann nur in einem übergeordneten Element registriert werden"
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
#: ports/cxd56/common-hal/pulseio/PulseIn.c
@@ -2914,7 +2960,7 @@ msgstr "pow() drittes Argument darf nicht 0 sein"
#: py/objint_mpz.c
msgid "pow() with 3 arguments requires integers"
-msgstr ""
+msgstr "pow () mit 3 Argumenten erfordert Integer"
#: extmod/modutimeq.c
msgid "queue overflow"
@@ -2922,11 +2968,11 @@ msgstr "Warteschlangenüberlauf"
#: py/parse.c
msgid "raw f-strings are not implemented"
-msgstr ""
+msgstr "rohe F-Strings sind nicht implementiert"
#: extmod/ulab/code/fft.c
msgid "real and imaginary parts must be of equal length"
-msgstr ""
+msgstr "Real- und Imaginärteile müssen gleich lang sein"
#: py/builtinimport.c
msgid "relative import"
@@ -2943,25 +2989,25 @@ msgstr "return annotation muss ein identifier sein"
#: py/emitnative.c
msgid "return expected '%q' but got '%q'"
-msgstr ""
+msgstr "Rückgabe erwartet '%q', aber '%q' erhalten"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "rgb_pins[%d] duplicates another pin assignment"
-msgstr ""
+msgstr "rgb_pins[%d] dupliziert eine andere Pinbelegung"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "rgb_pins[%d] is not on the same port as clock"
-msgstr ""
+msgstr "rgb_pins [%d] befindet sich nicht am selben Port wie clock"
#: extmod/ulab/code/ndarray.c
msgid "right hand side must be an ndarray, or a scalar"
-msgstr ""
+msgstr "Die rechte Seite muss ein Ndarray oder ein Skalar sein"
#: py/objstr.c
msgid "rsplit(None,n)"
-msgstr ""
+msgstr "rsplit(None,n)"
#: shared-bindings/audiocore/RawSample.c
msgid ""
@@ -2985,31 +3031,31 @@ msgstr "kompilieren von Skripten nicht unterstützt"
#: extmod/ulab/code/ndarray.c
msgid "shape must be a 2-tuple"
-msgstr ""
+msgstr "Form muss ein 2-Tupel sein"
#: py/objstr.c
msgid "sign not allowed in string format specifier"
-msgstr ""
+msgstr "Vorzeichen nicht erlaubt in einem String formatierungs specifier"
#: py/objstr.c
msgid "sign not allowed with integer format specifier 'c'"
-msgstr ""
+msgstr "Vorzeichen mit ganzzahligem Formatbezeichner 'c' nicht erlaubt"
#: py/objstr.c
msgid "single '}' encountered in format string"
-msgstr ""
+msgstr "einzelne '}' in Formatierungs-String gefunden"
#: extmod/ulab/code/linalg.c
msgid "size is defined for ndarrays only"
-msgstr ""
+msgstr "Größe ist nur für ndarrays definiert"
#: shared-bindings/time/__init__.c
msgid "sleep length must be non-negative"
-msgstr ""
+msgstr "Die Schlafdauer darf nicht negativ sein"
#: py/objslice.c py/sequence.c
msgid "slice step cannot be zero"
-msgstr ""
+msgstr "Der Slice-Schritt kann nicht Null sein"
#: py/objint.c py/sequence.c
msgid "small int overflow"
@@ -3021,7 +3067,7 @@ msgstr "weicher reboot\n"
#: extmod/ulab/code/numerical.c
msgid "sort argument must be an ndarray"
-msgstr ""
+msgstr "sortierungs Argument muss ein ndarray sein"
#: py/objstr.c
msgid "start/end indices"
@@ -3054,7 +3100,7 @@ msgstr "String index außerhalb des Bereiches"
#: py/objstrunicode.c
#, c-format
msgid "string indices must be integers, not %s"
-msgstr ""
+msgstr "String indizes müssen Integer sein, nicht %s"
#: py/stream.c
msgid "string not supported; use bytes or bytearray"
@@ -3095,7 +3141,7 @@ msgstr "threshold muss im Intervall 0-65536 liegen"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
-msgstr ""
+msgstr "time.struct_time() nimmt eine 9-Sequenz an"
#: ports/nrf/common-hal/watchdog/WatchDogTimer.c
msgid "timeout duration exceeded the maximum supported value"
@@ -3103,7 +3149,7 @@ msgstr ""
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
-msgstr ""
+msgstr "Das Zeitlimit muss 0,0-100,0 Sekunden betragen"
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
@@ -3111,24 +3157,24 @@ msgstr "timeout muss >= 0.0 sein"
#: shared-bindings/time/__init__.c
msgid "timestamp out of range for platform time_t"
-msgstr ""
+msgstr "Zeitstempel außerhalb des Bereichs für Plattform time_t"
#: shared-module/struct/__init__.c
msgid "too many arguments provided with the given format"
-msgstr ""
+msgstr "zu viele Argumente mit dem angegebenen Format"
#: extmod/ulab/code/ndarray.c
msgid "too many indices"
-msgstr ""
+msgstr "zu viele Indizes"
#: py/runtime.c
#, c-format
msgid "too many values to unpack (expected %d)"
-msgstr ""
+msgstr "zu viele Werte zum Auspacken (erwartet %d)"
#: extmod/ulab/code/linalg.c py/objstr.c
msgid "tuple index out of range"
-msgstr ""
+msgstr "Tupelindex außerhalb des Bereichs"
#: py/obj.c
msgid "tuple/list has wrong length"
@@ -3136,7 +3182,7 @@ msgstr "tupel/list hat falsche Länge"
#: shared-bindings/_pixelbuf/PixelBuf.c
msgid "tuple/list required on RHS"
-msgstr ""
+msgstr "Tupel / Liste auf RHS erforderlich"
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
#: shared-bindings/busio/UART.c
@@ -3153,15 +3199,15 @@ msgstr "Typ ist kein akzeptierter Basis-Typ"
#: py/runtime.c
msgid "type object '%q' has no attribute '%q'"
-msgstr ""
+msgstr "Typ vom Objekt '%q' hat kein Attribut '%q'"
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
-msgstr ""
+msgstr "Typ akzeptiert 1 oder 3 Argumente"
#: py/objint_longlong.c
msgid "ulonglong too large"
-msgstr ""
+msgstr "ulonglong zu groß"
#: py/emitnative.c
msgid "unary op %q not implemented"
@@ -3171,7 +3217,7 @@ msgstr "Der unäre Operator %q ist nicht implementiert"
msgid "unexpected indent"
msgstr ""
"unerwarteter Einzug (Einrückung) Bitte Leerzeichen am Zeilenanfang "
-"kontrollieren!"
+"kontrollieren"
#: py/bc.c
msgid "unexpected keyword argument"
@@ -3183,23 +3229,23 @@ msgstr "unerwartetes Keyword-Argument '%q'"
#: py/lexer.c
msgid "unicode name escapes"
-msgstr ""
+msgstr "Unicode Name ausgebrochen (escaped)"
#: py/parse.c
msgid "unindent does not match any outer indentation level"
msgstr ""
"Einrückung entspricht keiner äußeren Einrückungsebene. Bitte Leerzeichen am "
-"Zeilenanfang kontrollieren!"
+"Zeilenanfang kontrollieren"
#: py/objstr.c
#, c-format
msgid "unknown conversion specifier %c"
-msgstr ""
+msgstr "unbekannter Konvertierungs specifier %c"
#: py/objstr.c
#, c-format
msgid "unknown format code '%c' for object of type '%s'"
-msgstr ""
+msgstr "unbekannter Formatcode '%c' für Objekt vom Typ '%s'"
#: py/compile.c
msgid "unknown type"
@@ -3211,7 +3257,7 @@ msgstr "unbekannter Typ '%q'"
#: py/objstr.c
msgid "unmatched '{' in format"
-msgstr ""
+msgstr "'{' ohne passende Zuordnung im Format"
#: py/objtype.c py/runtime.c
msgid "unreadable attribute"
@@ -3230,12 +3276,12 @@ msgstr "nicht unterstützter Thumb-Befehl '%s' mit %d Argumenten"
#: py/emitinlinextensa.c
#, c-format
msgid "unsupported Xtensa instruction '%s' with %d arguments"
-msgstr ""
+msgstr "nicht unterstützte Xtensa-Anweisung '%s' mit %d Argumenten"
#: py/objstr.c
#, c-format
msgid "unsupported format character '%c' (0x%x) at index %d"
-msgstr ""
+msgstr "nicht unterstütztes Formatzeichen '%c' (0x%x) bei Index %d"
#: py/runtime.c
msgid "unsupported type for %q: '%s'"
@@ -3264,15 +3310,15 @@ msgstr ""
#: shared-bindings/_bleio/Adapter.c
msgid "window must be <= interval"
-msgstr ""
+msgstr "Fenster muss <= Intervall sein"
#: extmod/ulab/code/linalg.c
msgid "wrong argument type"
-msgstr ""
+msgstr "falscher Argumenttyp"
#: extmod/ulab/code/ndarray.c
msgid "wrong index type"
-msgstr ""
+msgstr "falscher Indextyp"
#: py/objstr.c
msgid "wrong number of arguments"
@@ -3284,7 +3330,7 @@ msgstr "falsche Anzahl zu entpackender Werte"
#: extmod/ulab/code/ndarray.c
msgid "wrong operand type"
-msgstr ""
+msgstr "falscher Operandentyp"
#: shared-module/displayio/Shape.c
msgid "x value out of bounds"
@@ -3300,7 +3346,7 @@ msgstr "y Wert außerhalb der Grenzen"
#: py/objrange.c
msgid "zero step"
-msgstr ""
+msgstr "Nullschritt"
#~ msgid "AP required"
#~ msgstr "AP erforderlich"
@@ -3516,6 +3562,9 @@ msgstr ""
#~ "Mehrere PWM Frequenzen werden nicht unterstützt. PWM wurde bereits auf "
#~ "%dHz gesetzt."
+#~ msgid "Negative step not supported"
+#~ msgstr "Negativer Schritt wird nicht unterstützt"
+
#~ msgid "No PulseIn support for %q"
#~ msgstr "Keine PulseIn Unterstützung für %q"
diff --git a/locale/nl.po b/locale/nl.po
index f14f449d4..795345fa0 100644
--- a/locale/nl.po
+++ b/locale/nl.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-27 10:46-0700\n"
-"PO-Revision-Date: 2020-05-19 17:08+0000\n"
+"POT-Creation-Date: 2020-05-29 10:15-0700\n"
+"PO-Revision-Date: 2020-05-25 13:52+0000\n"
"Last-Translator: Dustin Watts <dustin_watts@yahoo.com>\n"
"Language-Team: none\n"
"Language: nl\n"
@@ -42,7 +42,7 @@ msgid ""
"To exit, please reset the board without "
msgstr ""
"\n"
-"Om te verlatten, herstart de module zonder "
+"Om te verlaten, herstart de module zonder "
#: py/obj.c
msgid " File \"%q\""
@@ -54,7 +54,7 @@ msgstr " Bestand \"%q\", regel %d"
#: main.c
msgid " output:\n"
-msgstr " output\n"
+msgstr " uitvoer:\n"
#: py/objstr.c
#, c-format
@@ -143,7 +143,7 @@ msgstr "'%s' verwacht op zijn meest r%d"
#: py/emitinlinethumb.c
#, c-format
msgid "'%s' expects {r0, r1, ...}"
-msgstr "'%s' verwacht {r0, r1, ...}"
+msgstr "'%s' verwacht {r0, r1, …}"
#: py/emitinlinextensa.c
#, c-format
@@ -1296,7 +1296,7 @@ msgstr "En iedere module in het bestandssysteem\n"
#: shared-module/vectorio/Polygon.c
msgid "Polygon needs at least 3 points"
-msgstr ""
+msgstr "Polygon heeft op zijn minst 3 punten nodig"
#: shared-bindings/ps2io/Ps2.c
msgid "Pop from an empty Ps2 buffer"
@@ -1523,7 +1523,7 @@ msgstr "Tile breedte moet exact de bitmap breedte verdelen"
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
msgid "Timeout is too long: Maximum timeout length is %d seconds"
-msgstr ""
+msgstr "Time-out is te lang. Maximale time-out lengte is %d seconden"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
msgid "Too many channels in sample."
@@ -1834,1269 +1834,1280 @@ msgstr "verkeerde compileer modus"
#: py/objstr.c
msgid "bad conversion specifier"
-msgstr ""
+msgstr "slechte conversie specificatie"
#: py/objstr.c
msgid "bad format string"
-msgstr ""
+msgstr "string met verkeerde indeling"
#: py/binary.c
msgid "bad typecode"
-msgstr ""
+msgstr "verkeerde typecode"
#: py/emitnative.c
msgid "binary op %q not implemented"
-msgstr ""
+msgstr "binaire op %q niet geïmplementeerd"
#: shared-bindings/busio/UART.c
msgid "bits must be 7, 8 or 9"
-msgstr ""
+msgstr "bits moet 7, 8, of 9 zijn"
#: extmod/machine_spi.c
msgid "bits must be 8"
-msgstr ""
+msgstr "bits moet 8 zijn"
#: shared-bindings/audiomixer/Mixer.c
msgid "bits_per_sample must be 8 or 16"
-msgstr ""
+msgstr "bits_per_sample moet 8 of 16 zijn"
#: py/emitinlinethumb.c
msgid "branch not in range"
-msgstr ""
+msgstr "pad (branch) niet binnen bereik"
#: shared-bindings/audiocore/RawSample.c
msgid "buffer must be a bytes-like object"
-msgstr ""
+msgstr "buffer moet een byte-achtig object zijn"
#: shared-module/struct/__init__.c
msgid "buffer size must match format"
-msgstr ""
+msgstr "grootte van de buffer moet overeenkomen met het formaat"
#: shared-bindings/bitbangio/SPI.c shared-bindings/busio/SPI.c
msgid "buffer slices must be of equal length"
-msgstr ""
+msgstr "buffer slices moeten van gelijke grootte zijn"
#: py/modstruct.c shared-bindings/struct/__init__.c
#: shared-module/struct/__init__.c
msgid "buffer too small"
-msgstr ""
+msgstr "buffer te klein"
#: extmod/machine_spi.c
msgid "buffers must be the same length"
-msgstr ""
+msgstr "buffers moeten dezelfde lengte hebben"
#: shared-bindings/_pew/PewPew.c
msgid "buttons must be digitalio.DigitalInOut"
-msgstr ""
+msgstr "buttons moeten digitalio.DigitalInOut zijn"
#: py/vm.c
msgid "byte code not implemented"
-msgstr ""
+msgstr "byte code niet geïmplementeerd"
#: shared-bindings/_pixelbuf/PixelBuf.c
msgid "byteorder is not a string"
-msgstr ""
+msgstr "byteorder is geen string"
#: ports/atmel-samd/common-hal/busio/UART.c
msgid "bytes > 8 bits not supported"
-msgstr ""
+msgstr "butes > 8 niet ondersteund"
#: py/objstr.c
msgid "bytes value out of range"
-msgstr ""
+msgstr "bytes waarde buiten bereik"
#: ports/atmel-samd/bindings/samd/Clock.c
msgid "calibration is out of range"
-msgstr ""
+msgstr "calibration is buiten bereik"
#: ports/atmel-samd/bindings/samd/Clock.c
msgid "calibration is read only"
-msgstr ""
+msgstr "calibration is alleen-lezen"
#: ports/atmel-samd/common-hal/rtc/RTC.c
msgid "calibration value out of range +/-127"
-msgstr ""
+msgstr "calibration waarde buiten bereik +/-127"
#: py/emitinlinethumb.c
msgid "can only have up to 4 parameters to Thumb assembly"
-msgstr ""
+msgstr "kan slechts 4 parameters aan Thumb assembly geven"
#: py/emitinlinextensa.c
msgid "can only have up to 4 parameters to Xtensa assembly"
-msgstr ""
+msgstr "kan slechts 4 parameters aan Xtensa assembly geven"
#: py/persistentcode.c
msgid "can only save bytecode"
-msgstr ""
+msgstr "kan alleen byte-code opslaan"
#: py/objtype.c
msgid "can't add special method to already-subclassed class"
msgstr ""
+"kan geen speciale methode aan een al ge-subkwalificeerde klasse toevoegen"
#: py/compile.c
msgid "can't assign to expression"
-msgstr ""
+msgstr "kan niet toewijzen aan expressie"
#: py/obj.c
#, c-format
msgid "can't convert %s to complex"
-msgstr ""
+msgstr "kan %s niet converteren naar een complex"
#: py/obj.c
#, c-format
msgid "can't convert %s to float"
-msgstr ""
+msgstr "kan %s niet omzetten naar een float"
#: py/obj.c
#, c-format
msgid "can't convert %s to int"
-msgstr ""
+msgstr "kan %s niet omzetten naar een int"
#: py/objstr.c
msgid "can't convert '%q' object to %q implicitly"
-msgstr ""
+msgstr "kan '%q' object niet omzetten naar %q impliciet"
#: py/objint.c
msgid "can't convert NaN to int"
-msgstr ""
+msgstr "kan NaN niet omzetten naar int"
#: shared-bindings/i2cslave/I2CSlave.c
msgid "can't convert address to int"
-msgstr ""
+msgstr "kan adres niet omzetten naar int"
#: py/objint.c
msgid "can't convert inf to int"
-msgstr ""
+msgstr "kan inf niet omzetten naar int"
#: py/obj.c
msgid "can't convert to complex"
-msgstr ""
+msgstr "kan niet omzetten naar complex"
#: py/obj.c
msgid "can't convert to float"
-msgstr ""
+msgstr "kan niet omzetten naar float"
#: py/obj.c
msgid "can't convert to int"
-msgstr ""
+msgstr "kan niet omzetten naar int"
#: py/objstr.c
msgid "can't convert to str implicitly"
-msgstr ""
+msgstr "kan niet omzetten naar str impliciet"
#: py/compile.c
msgid "can't declare nonlocal in outer code"
-msgstr ""
+msgstr "kan geen nonlocal in buitenste code declareren"
#: py/compile.c
msgid "can't delete expression"
-msgstr ""
+msgstr "kan expressie niet verwijderen"
#: py/emitnative.c
msgid "can't do binary op between '%q' and '%q'"
-msgstr ""
+msgstr "kan geen een binaire operatie doen tussen '%q' en '%q'"
#: py/objcomplex.c
msgid "can't do truncated division of a complex number"
-msgstr ""
+msgstr "kan geen afgekapte deling doen van een comlex nummer"
#: py/compile.c
msgid "can't have multiple **x"
-msgstr ""
+msgstr "kan niet meerdere **x hebben"
#: py/compile.c
msgid "can't have multiple *x"
-msgstr ""
+msgstr "kan geen meerdere *x hebben"
#: py/emitnative.c
msgid "can't implicitly convert '%q' to 'bool'"
-msgstr ""
+msgstr "kan '%q niet impliciet converteren naar 'bool'"
#: py/emitnative.c
msgid "can't load from '%q'"
-msgstr ""
+msgstr "kan niet laden van '%q'"
#: py/emitnative.c
msgid "can't load with '%q' index"
-msgstr ""
+msgstr "kan niet met '%q' index laden"
#: py/objgenerator.c
msgid "can't pend throw to just-started generator"
-msgstr ""
+msgstr "kan throw niet aan net gestartte generator toevoegen"
#: py/objgenerator.c
msgid "can't send non-None value to a just-started generator"
-msgstr ""
+msgstr "kan geen niet-'None' waarde naar een net gestartte generator sturen"
#: py/objnamedtuple.c
msgid "can't set attribute"
-msgstr ""
+msgstr "kan attribute niet instellen"
#: py/emitnative.c
msgid "can't store '%q'"
-msgstr ""
+msgstr "kan '%q' niet opslaan"
#: py/emitnative.c
msgid "can't store to '%q'"
-msgstr ""
+msgstr "kan niet naar '%q' opslaan"
#: py/emitnative.c
msgid "can't store with '%q' index"
-msgstr ""
+msgstr "kan niet opslaan met '%q' als index"
#: py/objstr.c
msgid ""
"can't switch from automatic field numbering to manual field specification"
-msgstr ""
+msgstr "kan niet schakelen tussen automatische en handmatige veld specificatie"
#: py/objstr.c
msgid ""
"can't switch from manual field specification to automatic field numbering"
-msgstr ""
+msgstr "kan niet schakelen tussen handmatige en automatische veld specificatie"
#: py/objtype.c
msgid "cannot create '%q' instances"
-msgstr ""
+msgstr "kan geen instanties van '%q' creëren"
#: py/objtype.c
msgid "cannot create instance"
-msgstr ""
+msgstr "kan geen instantie creëren"
#: py/runtime.c
msgid "cannot import name %q"
-msgstr ""
+msgstr "kan naam %q niet importeren"
#: py/builtinimport.c
msgid "cannot perform relative import"
-msgstr ""
+msgstr "kan geen relatieve import uitvoeren"
#: extmod/ulab/code/ndarray.c
msgid "cannot reshape array (incompatible input/output shape)"
-msgstr ""
+msgstr "kan de array niet hervormen (niet verenigbare input/output vorm)"
#: py/emitnative.c
msgid "casting"
-msgstr ""
+msgstr "casting"
#: shared-bindings/_stage/Text.c
msgid "chars buffer too small"
-msgstr ""
+msgstr "chars buffer te klein"
#: py/modbuiltins.c
msgid "chr() arg not in range(0x110000)"
-msgstr ""
+msgstr "chr() arg niet binnen bereik (0x110000)"
#: py/modbuiltins.c
msgid "chr() arg not in range(256)"
-msgstr ""
+msgstr "chr() arg niet binnen bereik (256)"
#: shared-module/vectorio/Circle.c
msgid "circle can only be registered in one parent"
msgstr ""
+"cirkel kan slechts bij één object van een hoger niveau worden geregistreerd"
#: shared-bindings/displayio/Palette.c
msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)"
-msgstr ""
+msgstr "kleurbuffer moet 3 bytes (RGB) of 4 bytes (RGB + pad byte) zijn"
#: shared-bindings/displayio/Palette.c
msgid "color buffer must be a buffer, tuple, list, or int"
-msgstr ""
+msgstr "kleurbuffer moet een buffer, tuple, list, of int zijn"
#: shared-bindings/displayio/Palette.c
msgid "color buffer must be a bytearray or array of type 'b' or 'B'"
-msgstr ""
+msgstr "kleurbuffer moet een bytearray of array van type 'b' of 'B' zijn"
#: shared-bindings/displayio/Palette.c
msgid "color must be between 0x000000 and 0xffffff"
-msgstr ""
+msgstr "kleur moet tussen 0x000000 en 0xffffff liggen"
#: shared-bindings/displayio/ColorConverter.c
msgid "color should be an int"
-msgstr ""
+msgstr "kleur moet een int zijn"
#: py/objcomplex.c
msgid "complex division by zero"
-msgstr ""
+msgstr "complexe deling door 0"
#: py/objfloat.c py/parsenum.c
msgid "complex values not supported"
-msgstr ""
+msgstr "complexe waardes niet ondersteund"
#: extmod/moduzlib.c
msgid "compression header"
-msgstr ""
+msgstr "compressie header"
#: py/parse.c
msgid "constant must be an integer"
-msgstr ""
+msgstr "constant moet een integer zijn"
#: py/emitnative.c
msgid "conversion to object"
-msgstr ""
+msgstr "conversie naar object"
#: extmod/ulab/code/filter.c
msgid "convolve arguments must be linear arrays"
-msgstr ""
+msgstr "convolutie argumenten moeten lineaire arrays zijn"
#: extmod/ulab/code/filter.c
msgid "convolve arguments must be ndarrays"
-msgstr ""
+msgstr "convolutie argumenten moeten ndarrays zijn"
#: extmod/ulab/code/filter.c
msgid "convolve arguments must not be empty"
-msgstr ""
+msgstr "convolutie argumenten mogen niet leeg zijn"
#: extmod/ulab/code/ndarray.c
msgid "could not broadast input array from shape"
-msgstr ""
+msgstr "kon de invoerarray niet vanuit vorm uitzenden"
#: extmod/ulab/code/poly.c
msgid "could not invert Vandermonde matrix"
-msgstr ""
+msgstr "kon de Vandermonde matrix niet omkeren"
#: extmod/ulab/code/numerical.c
msgid "ddof must be smaller than length of data set"
-msgstr ""
+msgstr "ddof kleiner dan de lengte van de data set"
#: py/parsenum.c
msgid "decimal numbers not supported"
-msgstr ""
+msgstr "decimale getallen zijn niet ondersteund"
#: py/compile.c
msgid "default 'except' must be last"
-msgstr ""
+msgstr "standaard 'expect' moet laatste zijn"
#: shared-bindings/audiobusio/PDMIn.c
msgid ""
"destination buffer must be a bytearray or array of type 'B' for bit_depth = 8"
msgstr ""
+"bestemming buffer moet een bytearray of array van het type 'B' voor "
+"bit_depth = 8"
#: shared-bindings/audiobusio/PDMIn.c
msgid "destination buffer must be an array of type 'H' for bit_depth = 16"
-msgstr ""
+msgstr "bestemming buffer moet een array van het type 'H' voor bit_depth = 16"
#: shared-bindings/audiobusio/PDMIn.c
msgid "destination_length must be an int >= 0"
-msgstr ""
+msgstr "destination_lengte moest een int groter dan of gelijk zijn aan 0 zijn"
#: py/objdict.c
msgid "dict update sequence has wrong length"
-msgstr ""
+msgstr "dict update sequence heeft de verkeerde lengte"
#: extmod/ulab/code/numerical.c
msgid "diff argument must be an ndarray"
-msgstr ""
+msgstr "diff argument moet een ndarray zijn"
#: py/modmath.c py/objfloat.c py/objint_longlong.c py/objint_mpz.c py/runtime.c
#: shared-bindings/math/__init__.c
msgid "division by zero"
-msgstr ""
+msgstr "deling door nul"
#: py/objdeque.c
msgid "empty"
-msgstr ""
+msgstr "leeg"
#: extmod/moduheapq.c extmod/modutimeq.c
msgid "empty heap"
-msgstr ""
+msgstr "lege heap"
#: py/objstr.c
msgid "empty separator"
-msgstr ""
+msgstr "lege seperator"
#: shared-bindings/random/__init__.c
msgid "empty sequence"
-msgstr ""
+msgstr "lege sequentie"
#: py/objstr.c
msgid "end of format while looking for conversion specifier"
-msgstr ""
+msgstr "einde van format terwijl zoekend naar conversie-specifier"
#: shared-bindings/displayio/Shape.c
msgid "end_x should be an int"
-msgstr ""
+msgstr "end_x moet een int zijn"
#: ports/nrf/common-hal/busio/UART.c
#, c-format
msgid "error = 0x%08lX"
-msgstr ""
+msgstr "fout = 0x%08lX"
#: py/runtime.c
msgid "exceptions must derive from BaseException"
-msgstr ""
+msgstr "uitzonderingen moeten afleiden van BaseException"
#: py/objstr.c
msgid "expected ':' after format specifier"
-msgstr ""
+msgstr "verwachtte ':' na format specifier"
#: py/obj.c
msgid "expected tuple/list"
-msgstr ""
+msgstr "verwachtte een tuple/lijst"
#: py/modthread.c
msgid "expecting a dict for keyword args"
-msgstr ""
+msgstr "verwacht een dict voor keyword argumenten"
#: py/compile.c
msgid "expecting an assembler instruction"
-msgstr ""
+msgstr "verwacht een assembler instructie"
#: py/compile.c
msgid "expecting just a value for set"
-msgstr ""
+msgstr "verwacht alleen een waarde voor set"
#: py/compile.c
msgid "expecting key:value for dict"
-msgstr ""
+msgstr "verwacht key:waarde for dict"
#: py/argcheck.c
msgid "extra keyword arguments given"
-msgstr ""
+msgstr "extra keyword argumenten gegeven"
#: py/argcheck.c
msgid "extra positional arguments given"
-msgstr ""
+msgstr "extra positionele argumenten gegeven"
#: py/parse.c
msgid "f-string expression part cannot include a '#'"
-msgstr ""
+msgstr "f-string expressie deel kan geen '#' bevatten"
#: py/parse.c
msgid "f-string expression part cannot include a backslash"
-msgstr ""
+msgstr "f-string expressie deel kan geen backslash bevatten"
#: py/parse.c
msgid "f-string: empty expression not allowed"
-msgstr ""
+msgstr "f-string: lege expressie niet toegestaan"
#: py/parse.c
msgid "f-string: expecting '}'"
-msgstr ""
+msgstr "f-string: verwacht '}'"
#: py/parse.c
msgid "f-string: single '}' is not allowed"
-msgstr ""
+msgstr "f-string: enkele '}' is niet toegestaan"
#: shared-bindings/audiocore/WaveFile.c shared-bindings/audiomp3/MP3Decoder.c
#: shared-bindings/displayio/OnDiskBitmap.c
msgid "file must be a file opened in byte mode"
-msgstr ""
+msgstr "bestand moet een bestand zijn geopend in byte modus"
#: shared-bindings/storage/__init__.c
msgid "filesystem must provide mount method"
-msgstr ""
+msgstr "bestandssysteem moet een mount methode bieden"
#: extmod/ulab/code/ndarray.c
msgid "first argument must be an iterable"
-msgstr ""
+msgstr "eerst argument moet een iterabel zijn"
#: extmod/ulab/code/vectorise.c
msgid "first argument must be an ndarray"
-msgstr ""
+msgstr "eerst argument moet een ndarray zijn"
#: py/objtype.c
msgid "first argument to super() must be type"
-msgstr ""
+msgstr "eerste argument voor super() moet een type zijn"
#: extmod/machine_spi.c
msgid "firstbit must be MSB"
-msgstr ""
+msgstr "het eerste bit moet het MSB zijn"
#: extmod/ulab/code/ndarray.c
msgid "flattening order must be either 'C', or 'F'"
-msgstr ""
+msgstr "De afvlakkingsvolgorde moet ofwel \"C\", ofwel \"F\" zijn"
#: extmod/ulab/code/numerical.c
msgid "flip argument must be an ndarray"
-msgstr ""
+msgstr "flip argumenten moeten een ndarray zijn"
#: py/objint.c
msgid "float too big"
-msgstr ""
+msgstr "float is te groot"
#: shared-bindings/_stage/Text.c
msgid "font must be 2048 bytes long"
-msgstr ""
+msgstr "lettertype moet 2048 bytes lang zijn"
#: py/objstr.c
msgid "format requires a dict"
-msgstr ""
+msgstr "format vereist een dict"
#: py/objdeque.c
msgid "full"
-msgstr ""
+msgstr "vol"
#: py/argcheck.c
msgid "function does not take keyword arguments"
-msgstr ""
+msgstr "functie accepteert geen keyword argumenten"
#: py/argcheck.c
#, c-format
msgid "function expected at most %d arguments, got %d"
-msgstr ""
+msgstr "functie verwachtte op zijn meest %d argumenten, maar kreeg %d"
#: py/bc.c py/objnamedtuple.c
msgid "function got multiple values for argument '%q'"
-msgstr ""
+msgstr "functie kreeg meedere waarden voor argument '%q'"
#: extmod/ulab/code/compare.c
msgid "function is implemented for scalars and ndarrays only"
-msgstr ""
+msgstr "funtie is alleen geïmplementeerd voor scalars en ndarrays"
#: py/argcheck.c
#, c-format
msgid "function missing %d required positional arguments"
-msgstr ""
+msgstr "functie mist %d vereist positionele argumenten"
#: py/bc.c
msgid "function missing keyword-only argument"
-msgstr ""
+msgstr "functie mist keyword-only argument"
#: py/bc.c
msgid "function missing required keyword argument '%q'"
-msgstr ""
+msgstr "functie mist vereist sleutelwoord argument \"%q"
#: py/bc.c
#, c-format
msgid "function missing required positional argument #%d"
-msgstr ""
+msgstr "functie mist vereist positie-argument #%d"
#: py/argcheck.c py/bc.c py/objnamedtuple.c
#, c-format
msgid "function takes %d positional arguments but %d were given"
msgstr ""
+"functie vraagt %d argumenten zonder keyword maar %d argumenten werden gegeven"
#: shared-bindings/time/__init__.c
msgid "function takes exactly 9 arguments"
-msgstr ""
+msgstr "functie vraagt precies 9 argumenten"
#: py/objgenerator.c
msgid "generator already executing"
-msgstr ""
+msgstr "generator wordt al uitgevoerd"
#: py/objgenerator.c
msgid "generator ignored GeneratorExit"
-msgstr ""
+msgstr "generator negeerde GeneratorExit"
#: shared-bindings/_stage/Layer.c
msgid "graphic must be 2048 bytes long"
-msgstr ""
+msgstr "graphic moet 2048 bytes lang zijn"
#: extmod/moduheapq.c
msgid "heap must be a list"
-msgstr ""
+msgstr "heap moet een lijst zijn"
#: py/compile.c
msgid "identifier redefined as global"
-msgstr ""
+msgstr "identifier is opnieuw gedefinieerd als global"
#: py/compile.c
msgid "identifier redefined as nonlocal"
-msgstr ""
+msgstr "identifier is opnieuw gedefinieerd als nonlocal"
#: py/objstr.c
msgid "incomplete format"
-msgstr ""
+msgstr "incompleet formaat"
#: py/objstr.c
msgid "incomplete format key"
-msgstr ""
+msgstr "incomplete formaatsleutel"
#: extmod/modubinascii.c
msgid "incorrect padding"
-msgstr ""
+msgstr "vulling (padding) is onjuist"
#: extmod/ulab/code/ndarray.c
msgid "index is out of bounds"
-msgstr ""
+msgstr "index is buiten bereik"
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
#: ports/cxd56/common-hal/pulseio/PulseIn.c
#: ports/nrf/common-hal/pulseio/PulseIn.c
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c
msgid "index out of range"
-msgstr ""
+msgstr "index is buiten bereik"
#: py/obj.c
msgid "indices must be integers"
-msgstr ""
+msgstr "indices moeten integers zijn"
#: extmod/ulab/code/ndarray.c
msgid "indices must be integers, slices, or Boolean lists"
-msgstr ""
+msgstr "indices moeten integers, segmenten (slices) of Boolean lijsten zijn"
#: py/compile.c
msgid "inline assembler must be a function"
-msgstr ""
+msgstr "inline assembler moet een functie zijn"
#: extmod/ulab/code/create.c
msgid "input argument must be an integer or a 2-tuple"
-msgstr ""
+msgstr "invoerargument moet een integer of 2-tuple zijn"
#: extmod/ulab/code/fft.c
msgid "input array length must be power of 2"
-msgstr ""
+msgstr "invoer array lengte moet een macht van 2 zijn"
#: extmod/ulab/code/poly.c
msgid "input data must be an iterable"
-msgstr ""
+msgstr "invoerdata moet itereerbaar zijn"
#: extmod/ulab/code/linalg.c
msgid "input matrix is asymmetric"
-msgstr ""
+msgstr "invoermatrix is asymmetrisch"
#: extmod/ulab/code/linalg.c
msgid "input matrix is singular"
-msgstr ""
+msgstr "invoermatrix is singulier"
#: extmod/ulab/code/linalg.c
msgid "input must be square matrix"
-msgstr ""
+msgstr "invoer moet een vierkante matrix zijn"
#: extmod/ulab/code/numerical.c
msgid "input must be tuple, list, range, or ndarray"
-msgstr ""
+msgstr "invoer moet een tuple, lijst, bereik of ndarray zijn"
#: extmod/ulab/code/poly.c
msgid "input vectors must be of equal length"
-msgstr ""
+msgstr "invoervectors moeten van gelijke lengte zijn"
#: py/parsenum.c
msgid "int() arg 2 must be >= 2 and <= 36"
-msgstr ""
+msgstr "int() argument 2 moet >=2 en <= 36 zijn"
#: py/objstr.c
msgid "integer required"
-msgstr ""
+msgstr "integer vereist"
#: shared-bindings/_bleio/Adapter.c
#, c-format
msgid "interval must be in range %s-%s"
-msgstr ""
+msgstr "interval moet binnen bereik %s-%s vallen"
#: extmod/machine_i2c.c
msgid "invalid I2C peripheral"
-msgstr ""
+msgstr "onjuist I2C randapparaat"
#: extmod/machine_spi.c
msgid "invalid SPI peripheral"
-msgstr ""
+msgstr "onjuist SPI randapparaat"
#: lib/netutils/netutils.c
msgid "invalid arguments"
-msgstr ""
+msgstr "ongeldige argumenten"
#: extmod/modussl_axtls.c
msgid "invalid cert"
-msgstr ""
+msgstr "ongeldig certificaat"
#: extmod/uos_dupterm.c
msgid "invalid dupterm index"
-msgstr ""
+msgstr "ongeldige dupterm index"
#: extmod/modframebuf.c
msgid "invalid format"
-msgstr ""
+msgstr "ongeldig formaat"
#: py/objstr.c
msgid "invalid format specifier"
-msgstr ""
+msgstr "ongeldige formaatspecificatie"
#: extmod/modussl_axtls.c
msgid "invalid key"
-msgstr ""
+msgstr "ongeldige sleutel"
#: py/compile.c
msgid "invalid micropython decorator"
-msgstr ""
+msgstr "ongeldige micropython decorator"
#: shared-bindings/random/__init__.c
msgid "invalid step"
-msgstr ""
+msgstr "ongeldige stap"
#: py/compile.c py/parse.c
msgid "invalid syntax"
-msgstr ""
+msgstr "ongeldige syntax"
#: py/parsenum.c
msgid "invalid syntax for integer"
-msgstr ""
+msgstr "ongeldige syntax voor integer"
#: py/parsenum.c
#, c-format
msgid "invalid syntax for integer with base %d"
-msgstr ""
+msgstr "ongeldige syntax voor integer met grondtal %d"
#: py/parsenum.c
msgid "invalid syntax for number"
-msgstr ""
+msgstr "ongeldige syntax voor nummer"
#: py/objtype.c
msgid "issubclass() arg 1 must be a class"
-msgstr ""
+msgstr "issubclass() argument 1 moet een klasse zijn"
#: py/objtype.c
msgid "issubclass() arg 2 must be a class or a tuple of classes"
-msgstr ""
+msgstr "issubclass() argument 2 moet een klasse of tuple van klassen zijn"
#: extmod/ulab/code/ndarray.c
msgid "iterables are not of the same length"
-msgstr ""
+msgstr "itereerbare objecten hebben niet dezelfde lengte"
#: extmod/ulab/code/linalg.c
msgid "iterations did not converge"
-msgstr ""
+msgstr "itereerbare objecten convergeren niet"
#: py/objstr.c
msgid "join expects a list of str/bytes objects consistent with self object"
msgstr ""
+"join verwacht een lijst van str/byte objecten die consistent zijn met het "
+"self-object"
#: py/argcheck.c
msgid "keyword argument(s) not yet implemented - use normal args instead"
msgstr ""
+"trefwoord argument(en) zijn niet geïmplementeerd, gebruik normale argumenten"
#: py/bc.c
msgid "keywords must be strings"
-msgstr ""
+msgstr "trefwoorden moeten van type string zijn"
#: py/emitinlinethumb.c py/emitinlinextensa.c
msgid "label '%q' not defined"
-msgstr ""
+msgstr "label '%q' is niet gedefinieerd"
#: py/compile.c
msgid "label redefined"
-msgstr ""
+msgstr "label opnieuw gedefinieerd"
#: py/stream.c
msgid "length argument not allowed for this type"
-msgstr ""
+msgstr "voor dit type is length niet toegestaan"
#: shared-bindings/audiomixer/MixerVoice.c
msgid "level must be between 0 and 1"
-msgstr ""
+msgstr "level moet tussen 0 en 1 liggen"
#: py/objarray.c
msgid "lhs and rhs should be compatible"
-msgstr ""
+msgstr "lhs en rhs moeten compatibel zijn"
#: py/emitnative.c
msgid "local '%q' has type '%q' but source is '%q'"
-msgstr ""
+msgstr "lokale '%q' is van type '%q' maar bron is '%q'"
#: py/emitnative.c
msgid "local '%q' used before type known"
-msgstr ""
+msgstr "lokale '%q' gebruikt voordat type bekend is"
#: py/vm.c
msgid "local variable referenced before assignment"
-msgstr ""
+msgstr "verwijzing naar een (nog) niet toegewezen lokale variabele"
#: py/objint.c
msgid "long int not supported in this build"
-msgstr ""
+msgstr "long int wordt niet ondersteund in deze build"
#: py/parse.c
msgid "malformed f-string"
-msgstr ""
+msgstr "onjuist gevormde f-string"
#: shared-bindings/_stage/Layer.c
msgid "map buffer too small"
-msgstr ""
+msgstr "map buffer te klein"
#: py/modmath.c shared-bindings/math/__init__.c
msgid "math domain error"
-msgstr ""
+msgstr "fout in het wiskundig domein (math domain error)"
#: extmod/ulab/code/linalg.c
msgid "matrix dimensions do not match"
-msgstr ""
+msgstr "matrix afmetingen komen niet overeen"
#: extmod/ulab/code/linalg.c
msgid "matrix is not positive definite"
-msgstr ""
+msgstr "matrix is niet positief-definiet"
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
#, c-format
msgid "max_length must be 0-%d when fixed_length is %s"
-msgstr ""
+msgstr "max_length moet 0-%d zijn als fixed_length %s is"
#: py/runtime.c
msgid "maximum recursion depth exceeded"
-msgstr ""
+msgstr "maximale recursiediepte overschreden"
#: py/runtime.c
#, c-format
msgid "memory allocation failed, allocating %u bytes"
-msgstr ""
+msgstr "geheugentoewijzing mislukt, %u bytes worden toegewezen"
#: py/runtime.c
msgid "memory allocation failed, heap is locked"
-msgstr ""
+msgstr "geheugentoewijzing mislukt, heap is vergrendeld"
#: py/builtinimport.c
msgid "module not found"
-msgstr ""
+msgstr "module niet gevonden"
#: extmod/ulab/code/poly.c
msgid "more degrees of freedom than data points"
-msgstr ""
+msgstr "meer vrijheidsgraden dan datapunten"
#: py/compile.c
msgid "multiple *x in assignment"
-msgstr ""
+msgstr "meerdere *x in toewijzing"
#: py/objtype.c
msgid "multiple bases have instance lay-out conflict"
-msgstr ""
+msgstr "meerdere grondtallen (bases) hebben instance lay-out conflicten"
#: py/objtype.c
msgid "multiple inheritance not supported"
-msgstr ""
+msgstr "meervoudige overerving niet ondersteund"
#: py/emitnative.c
msgid "must raise an object"
-msgstr ""
+msgstr "moet een object oproepen (raise)"
#: extmod/machine_spi.c
msgid "must specify all of sck/mosi/miso"
-msgstr ""
+msgstr "sck/mosi/miso moeten alle gespecificeerd worden"
#: py/modbuiltins.c
msgid "must use keyword argument for key function"
-msgstr ""
+msgstr "voor sleutelfunctie moet een trefwoordargument gebruikt worden"
#: extmod/ulab/code/numerical.c
msgid "n must be between 0, and 9"
-msgstr ""
+msgstr "n moet tussen 0 en 9 liggen"
#: py/runtime.c
msgid "name '%q' is not defined"
-msgstr ""
+msgstr "naam '%q' is niet gedefinieerd"
#: py/runtime.c
msgid "name not defined"
-msgstr ""
+msgstr "naam is niet gedefinieerd"
#: py/compile.c
msgid "name reused for argument"
-msgstr ""
+msgstr "naam hergebruikt voor argument"
#: py/emitnative.c
msgid "native yield"
-msgstr ""
+msgstr "natuurlijke opbrengst (native yield)"
#: py/runtime.c
#, c-format
msgid "need more than %d values to unpack"
-msgstr ""
+msgstr "Om uit te pakken zijn meer dan %d waarden vereist"
#: py/objint_longlong.c py/objint_mpz.c py/runtime.c
msgid "negative power with no float support"
-msgstr ""
+msgstr "negatieve macht terwijl er geen ondersteuning is voor float"
#: py/objint_mpz.c py/runtime.c
msgid "negative shift count"
-msgstr ""
+msgstr "negatieve verschuivingstelling (shift count)"
#: py/vm.c
msgid "no active exception to reraise"
-msgstr ""
+msgstr "geen actieve uitzondering om opnieuw op te werpen (raise)"
#: shared-bindings/socket/__init__.c shared-module/network/__init__.c
msgid "no available NIC"
-msgstr ""
+msgstr "geen netwerkadapter (NIC) beschikbaar"
#: py/compile.c
msgid "no binding for nonlocal found"
-msgstr ""
+msgstr "geen binding voor nonlocal gevonden"
#: py/builtinimport.c
msgid "no module named '%q'"
-msgstr ""
+msgstr "geen module met naam '%q'"
#: shared-bindings/displayio/FourWire.c shared-bindings/displayio/I2CDisplay.c
#: shared-bindings/displayio/ParallelBus.c
msgid "no reset pin available"
-msgstr ""
+msgstr "geen reset pin beschikbaar"
#: py/runtime.c
msgid "no such attribute"
-msgstr ""
+msgstr "niet zo'n attribuut"
#: ports/nrf/common-hal/_bleio/Connection.c
msgid "non-UUID found in service_uuids_whitelist"
-msgstr ""
+msgstr "niet-UUID gevonden in service_uuids_whitelist"
#: py/compile.c
msgid "non-default argument follows default argument"
-msgstr ""
+msgstr "niet-standaard argument volgt op een standaard argument"
#: extmod/modubinascii.c
msgid "non-hex digit found"
-msgstr ""
+msgstr "er werd een niet-hexadecimaal cijfer gevonden"
#: py/compile.c
msgid "non-keyword arg after */**"
-msgstr ""
+msgstr "niet-trefwoord argument na */**"
#: py/compile.c
msgid "non-keyword arg after keyword arg"
-msgstr ""
+msgstr "niet-trefwoord argument na trefwoord argument"
#: shared-bindings/_bleio/UUID.c
msgid "not a 128-bit UUID"
-msgstr ""
+msgstr "geen 128-bit UUID"
#: py/objstr.c
msgid "not all arguments converted during string formatting"
-msgstr ""
+msgstr "niet alle argumenten omgezet bij formattering van string"
#: py/objstr.c
msgid "not enough arguments for format string"
-msgstr ""
+msgstr "niet genoeg argumenten om string te formatteren"
#: extmod/ulab/code/poly.c
msgid "number of arguments must be 2, or 3"
-msgstr ""
+msgstr "aantal argumenten moet 2 of 3 zijn"
#: extmod/ulab/code/create.c
msgid "number of points must be at least 2"
-msgstr ""
+msgstr "aantal punten moet minimaal 2 zijn"
#: py/obj.c
#, c-format
msgid "object '%s' is not a tuple or list"
-msgstr ""
+msgstr "object '%s' is geen tuple of lijst"
#: py/obj.c
msgid "object does not support item assignment"
-msgstr ""
+msgstr "object ondersteund toewijzen van elementen niet"
#: py/obj.c
msgid "object does not support item deletion"
-msgstr ""
+msgstr "object ondersteund verwijderen van elementen niet"
#: py/obj.c
msgid "object has no len"
-msgstr ""
+msgstr "object heeft geen len"
#: py/obj.c
msgid "object is not subscriptable"
-msgstr ""
+msgstr "object heeft geen '__getitem__'-methode (not subscriptable)"
#: py/runtime.c
msgid "object not an iterator"
-msgstr ""
+msgstr "object is geen iterator"
#: py/objtype.c py/runtime.c
msgid "object not callable"
-msgstr ""
+msgstr "object niet aanroepbaar"
#: py/sequence.c shared-bindings/displayio/Group.c
msgid "object not in sequence"
-msgstr ""
+msgstr "object niet in volgorde (sequence)"
#: py/runtime.c
msgid "object not iterable"
-msgstr ""
+msgstr "object niet itereerbaar"
#: py/obj.c
#, c-format
msgid "object of type '%s' has no len()"
-msgstr ""
+msgstr "object van type '%s' heeft geen len()"
#: py/obj.c
msgid "object with buffer protocol required"
-msgstr ""
+msgstr "object met buffer protocol vereist"
#: extmod/modubinascii.c
msgid "odd-length string"
-msgstr ""
+msgstr "string met oneven lengte"
#: py/objstr.c py/objstrunicode.c
msgid "offset out of bounds"
-msgstr ""
+msgstr "offset buiten bereik"
#: ports/nrf/common-hal/audiobusio/PDMIn.c
msgid "only bit_depth=16 is supported"
-msgstr ""
+msgstr "alleen bit_depth=16 wordt ondersteund"
#: ports/nrf/common-hal/audiobusio/PDMIn.c
msgid "only sample_rate=16000 is supported"
-msgstr ""
+msgstr "alleen sample_rate=16000 wordt ondersteund"
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
-msgstr ""
+msgstr "alleen segmenten met step=1 (ook wel None) worden ondersteund"
#: extmod/ulab/code/compare.c extmod/ulab/code/ndarray.c
#: extmod/ulab/code/vectorise.c
msgid "operands could not be broadcast together"
-msgstr ""
+msgstr "operands konden niet samen verzonden worden"
#: extmod/ulab/code/numerical.c
msgid "operation is not implemented on ndarrays"
-msgstr ""
+msgstr "bewerking is voor ndarrays niet geïmplementeerd"
#: extmod/ulab/code/ndarray.c
msgid "operation is not supported for given type"
-msgstr ""
+msgstr "bewerking wordt niet ondersteund voor dit type"
#: py/modbuiltins.c
msgid "ord expects a character"
-msgstr ""
+msgstr "ord verwacht een teken (char)"
#: py/modbuiltins.c
#, c-format
msgid "ord() expected a character, but string of length %d found"
-msgstr ""
+msgstr "ord() verwacht een teken (char) maar vond een string van lengte %d"
#: py/objint_mpz.c
msgid "overflow converting long int to machine word"
-msgstr ""
+msgstr "overloop bij converteren van long int naar machine word"
#: shared-bindings/_stage/Layer.c shared-bindings/_stage/Text.c
msgid "palette must be 32 bytes long"
-msgstr ""
+msgstr "palette moet 32 bytes lang zijn"
#: shared-bindings/displayio/Palette.c
msgid "palette_index should be an int"
-msgstr ""
+msgstr "palette_index moet een int zijn"
#: py/compile.c
msgid "parameter annotation must be an identifier"
-msgstr ""
+msgstr "parameter annotatie moet een identifier zijn"
#: py/emitinlinextensa.c
msgid "parameters must be registers in sequence a2 to a5"
-msgstr ""
+msgstr "parameters moeten registers zijn in de volgorde a2 tot a5"
#: py/emitinlinethumb.c
msgid "parameters must be registers in sequence r0 to r3"
-msgstr ""
+msgstr "parameters moeten registers zijn in de volgorde r0 tot r3"
#: shared-bindings/displayio/Bitmap.c
msgid "pixel coordinates out of bounds"
-msgstr ""
+msgstr "pixel coördinaten buiten bereik"
#: shared-bindings/displayio/Bitmap.c
msgid "pixel value requires too many bits"
-msgstr ""
+msgstr "pixel waarde vereist te veel bits"
#: shared-bindings/displayio/TileGrid.c shared-bindings/vectorio/VectorShape.c
msgid "pixel_shader must be displayio.Palette or displayio.ColorConverter"
-msgstr ""
+msgstr "pixel_shader moet displayio.Palette of displayio.ColorConverter zijn"
#: shared-module/vectorio/Polygon.c
msgid "polygon can only be registered in one parent"
msgstr ""
+"polygoon kan slechts bij één object van een hoger niveau worden geregistreerd"
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
#: ports/cxd56/common-hal/pulseio/PulseIn.c
#: ports/nrf/common-hal/pulseio/PulseIn.c
#: ports/stm/common-hal/pulseio/PulseIn.c
msgid "pop from an empty PulseIn"
-msgstr ""
+msgstr "pop van een lege PulseIn"
#: py/objset.c
msgid "pop from an empty set"
-msgstr ""
+msgstr "pop van een lege set"
#: py/objlist.c
msgid "pop from empty list"
-msgstr ""
+msgstr "pop van een lege lijst"
#: py/objdict.c
msgid "popitem(): dictionary is empty"
-msgstr ""
+msgstr "popitem(): dictionary is leeg"
#: py/objint_mpz.c
msgid "pow() 3rd argument cannot be 0"
-msgstr ""
+msgstr "derde argument van pow() mag geen 0 zijn"
#: py/objint_mpz.c
msgid "pow() with 3 arguments requires integers"
-msgstr ""
+msgstr "pow() met 3 argumenten vereist integers"
#: extmod/modutimeq.c
msgid "queue overflow"
-msgstr ""
+msgstr "wachtrij overloop"
#: py/parse.c
msgid "raw f-strings are not implemented"
-msgstr ""
+msgstr "ruwe f-strings zijn niet geïmplementeerd"
#: extmod/ulab/code/fft.c
msgid "real and imaginary parts must be of equal length"
-msgstr ""
+msgstr "reëel en imaginair deel moeten gelijke lengte hebben"
#: py/builtinimport.c
msgid "relative import"
-msgstr ""
+msgstr "relatieve import"
#: py/obj.c
#, c-format
msgid "requested length %d but object has length %d"
-msgstr ""
+msgstr "gevraagde lengte is %d maar object heeft lengte %d"
#: py/compile.c
msgid "return annotation must be an identifier"
-msgstr ""
+msgstr "return annotatie moet een identifier zijn"
#: py/emitnative.c
msgid "return expected '%q' but got '%q'"
-msgstr ""
+msgstr "return verwacht '%q' maar ontving '%q'"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "rgb_pins[%d] duplicates another pin assignment"
-msgstr ""
+msgstr "rgb_pins[%d] is hetzelfde als een andere pintoewijzing"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "rgb_pins[%d] is not on the same port as clock"
-msgstr ""
+msgstr "rgb_pins[%d] bevindt zich niet op dezelfde poort als klok"
#: extmod/ulab/code/ndarray.c
msgid "right hand side must be an ndarray, or a scalar"
-msgstr ""
+msgstr "de rechterkant moet een ndarray of scalar zijn"
#: py/objstr.c
msgid "rsplit(None,n)"
-msgstr ""
+msgstr "rsplit(None,n)"
#: shared-bindings/audiocore/RawSample.c
msgid ""
"sample_source buffer must be a bytearray or array of type 'h', 'H', 'b' or "
"'B'"
msgstr ""
+"sample_source buffer moet een bytearray of array van type 'h', 'H', 'b' of "
+"'B' zijn"
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "sampling rate out of range"
-msgstr ""
+msgstr "bemonsteringssnelheid buiten bereik"
#: py/modmicropython.c
msgid "schedule stack full"
-msgstr ""
+msgstr "schedule stack is vol"
#: lib/utils/pyexec.c py/builtinimport.c
msgid "script compilation not supported"
-msgstr ""
+msgstr "scriptcompilatie wordt niet ondersteund"
#: extmod/ulab/code/ndarray.c
msgid "shape must be a 2-tuple"
-msgstr ""
+msgstr "vorm moet een 2-tuple zijn"
#: py/objstr.c
msgid "sign not allowed in string format specifier"
-msgstr ""
+msgstr "teken niet toegestaan in string formaatspecificatie"
#: py/objstr.c
msgid "sign not allowed with integer format specifier 'c'"
-msgstr ""
+msgstr "teken niet toegestaan bij integer formaatspecificatie 'c'"
#: py/objstr.c
msgid "single '}' encountered in format string"
-msgstr ""
+msgstr "enkele '}' aangetroffen in formaat tekenreeks (string)"
#: extmod/ulab/code/linalg.c
msgid "size is defined for ndarrays only"
-msgstr ""
+msgstr "omvang is alleen voor ndarrays gedefinieerd"
#: shared-bindings/time/__init__.c
msgid "sleep length must be non-negative"
-msgstr ""
+msgstr "de slaapduur mag niet negatief zijn"
#: py/objslice.c py/sequence.c
msgid "slice step cannot be zero"
-msgstr ""
+msgstr "segmentstap mag niet nul zijn"
#: py/objint.c py/sequence.c
msgid "small int overflow"
-msgstr ""
+msgstr "small int overloop"
#: main.c
msgid "soft reboot\n"
-msgstr ""
+msgstr "zachte herstart\n"
#: extmod/ulab/code/numerical.c
msgid "sort argument must be an ndarray"
-msgstr ""
+msgstr "sorteerargument moet een ndarray zijn"
#: py/objstr.c
msgid "start/end indices"
-msgstr ""
+msgstr "start/stop indices"
#: shared-bindings/displayio/Shape.c
msgid "start_x should be an int"
-msgstr ""
+msgstr "start_x moet een int zijn"
#: shared-bindings/random/__init__.c
msgid "step must be non-zero"
-msgstr ""
+msgstr "step mag geen nul zijn"
#: shared-bindings/busio/UART.c
msgid "stop must be 1 or 2"
-msgstr ""
+msgstr "stop moet 1 of 2 zijn"
#: shared-bindings/random/__init__.c
msgid "stop not reachable from start"
-msgstr ""
+msgstr "stop is niet bereikbaar vanaf start"
#: py/stream.c
msgid "stream operation not supported"
-msgstr ""
+msgstr "stream operatie niet ondersteund"
#: py/objstrunicode.c
msgid "string index out of range"
-msgstr ""
+msgstr "string index buiten bereik"
#: py/objstrunicode.c
#, c-format
msgid "string indices must be integers, not %s"
-msgstr ""
+msgstr "string indices moeten integer zijn, niet %s"
#: py/stream.c
msgid "string not supported; use bytes or bytearray"
-msgstr ""
+msgstr "string niet ondersteund; gebruik bytes of bytearray"
#: extmod/moductypes.c
msgid "struct: cannot index"
-msgstr ""
+msgstr "struct: kan niet indexeren"
#: extmod/moductypes.c
msgid "struct: index out of range"
-msgstr ""
+msgstr "struct: index buiten bereik"
#: extmod/moductypes.c
msgid "struct: no fields"
-msgstr ""
+msgstr "struct: geen velden"
#: py/objstr.c
msgid "substring not found"
-msgstr ""
+msgstr "deelreeks niet gevonden"
#: py/compile.c
msgid "super() can't find self"
-msgstr ""
+msgstr "super() kan self niet vinden"
#: extmod/modujson.c
msgid "syntax error in JSON"
-msgstr ""
+msgstr "syntaxisfout in JSON"
#: extmod/moductypes.c
msgid "syntax error in uctypes descriptor"
-msgstr ""
+msgstr "syntaxisfout in uctypes aanduiding"
#: shared-bindings/touchio/TouchIn.c
msgid "threshold must be in the range 0-65536"
-msgstr ""
+msgstr "drempelwaarde moet in het bereik 0-65536 liggen"
#: shared-bindings/time/__init__.c
msgid "time.struct_time() takes a 9-sequence"
-msgstr ""
+msgstr "time.struct_time() accepteert een 9-rij"
#: ports/nrf/common-hal/watchdog/WatchDogTimer.c
msgid "timeout duration exceeded the maximum supported value"
@@ -3104,156 +3115,156 @@ msgstr ""
#: shared-bindings/busio/UART.c
msgid "timeout must be 0.0-100.0 seconds"
-msgstr ""
+msgstr "timeout moet tussen 0.0 en 100.0 seconden zijn"
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
-msgstr ""
+msgstr "timeout moet groter dan 0.0 zijn"
#: shared-bindings/time/__init__.c
msgid "timestamp out of range for platform time_t"
-msgstr ""
+msgstr "timestamp buiten bereik voor platform time_t"
#: shared-module/struct/__init__.c
msgid "too many arguments provided with the given format"
-msgstr ""
+msgstr "te veel argumenten opgegeven bij dit formaat"
#: extmod/ulab/code/ndarray.c
msgid "too many indices"
-msgstr ""
+msgstr "te veel indices"
#: py/runtime.c
#, c-format
msgid "too many values to unpack (expected %d)"
-msgstr ""
+msgstr "te veel waarden om uit te pakken (%d verwacht)"
#: extmod/ulab/code/linalg.c py/objstr.c
msgid "tuple index out of range"
-msgstr ""
+msgstr "tuple index buiten bereik"
#: py/obj.c
msgid "tuple/list has wrong length"
-msgstr ""
+msgstr "tuple of lijst heeft onjuiste lengte"
#: shared-bindings/_pixelbuf/PixelBuf.c
msgid "tuple/list required on RHS"
-msgstr ""
+msgstr "tuple of lijst vereist op RHS"
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
#: shared-bindings/busio/UART.c
msgid "tx and rx cannot both be None"
-msgstr ""
+msgstr "tx en rx kunnen niet beiden None zijn"
#: py/objtype.c
msgid "type '%q' is not an acceptable base type"
-msgstr ""
+msgstr "type '%q' is geen aanvaardbaar basistype"
#: py/objtype.c
msgid "type is not an acceptable base type"
-msgstr ""
+msgstr "type is geen aanvaardbaar basistype"
#: py/runtime.c
msgid "type object '%q' has no attribute '%q'"
-msgstr ""
+msgstr "objecttype '%q' heeft geen attribuut '%q'"
#: py/objtype.c
msgid "type takes 1 or 3 arguments"
-msgstr ""
+msgstr "type accepteert 1 of 3 argumenten"
#: py/objint_longlong.c
msgid "ulonglong too large"
-msgstr ""
+msgstr "ulonglong te groot"
#: py/emitnative.c
msgid "unary op %q not implemented"
-msgstr ""
+msgstr "unair op %q niet geïmplementeerd"
#: py/parse.c
msgid "unexpected indent"
-msgstr ""
+msgstr "onverwachte inspringing"
#: py/bc.c
msgid "unexpected keyword argument"
-msgstr ""
+msgstr "onverwacht trefwoordargument"
#: py/bc.c py/objnamedtuple.c
msgid "unexpected keyword argument '%q'"
-msgstr ""
+msgstr "onverwacht trefwoordargument '%q'"
#: py/lexer.c
msgid "unicode name escapes"
-msgstr ""
+msgstr "op naam gebaseerde unicode escapes zijn niet geïmplementeerd"
#: py/parse.c
msgid "unindent does not match any outer indentation level"
-msgstr ""
+msgstr "inspringing komt niet overeen met hoger gelegen inspringingsniveaus"
#: py/objstr.c
#, c-format
msgid "unknown conversion specifier %c"
-msgstr ""
+msgstr "onbekende conversiespecificatie %c"
#: py/objstr.c
#, c-format
msgid "unknown format code '%c' for object of type '%s'"
-msgstr ""
+msgstr "onbekende formaatcode '%c' voor object van type '%s'"
#: py/compile.c
msgid "unknown type"
-msgstr ""
+msgstr "onbekend type"
#: py/emitnative.c
msgid "unknown type '%q'"
-msgstr ""
+msgstr "onbekend type '%q'"
#: py/objstr.c
msgid "unmatched '{' in format"
-msgstr ""
+msgstr "'{' zonder overeenkomst in formaat"
#: py/objtype.c py/runtime.c
msgid "unreadable attribute"
-msgstr ""
+msgstr "onleesbaar attribuut"
#: shared-bindings/displayio/TileGrid.c shared-bindings/vectorio/VectorShape.c
#: shared-module/vectorio/Polygon.c
msgid "unsupported %q type"
-msgstr ""
+msgstr "niet ondersteund %q type"
#: py/emitinlinethumb.c
#, c-format
msgid "unsupported Thumb instruction '%s' with %d arguments"
-msgstr ""
+msgstr "niet ondersteunde Thumb instructie '%s' met %d argumenten"
#: py/emitinlinextensa.c
#, c-format
msgid "unsupported Xtensa instruction '%s' with %d arguments"
-msgstr ""
+msgstr "niet ondersteunde Xtensa instructie '%s' met %d argumenten"
#: py/objstr.c
#, c-format
msgid "unsupported format character '%c' (0x%x) at index %d"
-msgstr ""
+msgstr "niet ondersteund formaatkarakter '%c' (0x%x) op index %d"
#: py/runtime.c
msgid "unsupported type for %q: '%s'"
-msgstr ""
+msgstr "niet ondersteund type voor %q: '%s'"
#: py/runtime.c
msgid "unsupported type for operator"
-msgstr ""
+msgstr "niet ondersteund type voor operator"
#: py/runtime.c
msgid "unsupported types for %q: '%s', '%s'"
-msgstr ""
+msgstr "niet ondersteunde types voor %q: '%s', '%s'"
#: py/objint.c
#, c-format
msgid "value must fit in %d byte(s)"
-msgstr ""
+msgstr "waarde moet in %d byte(s) passen"
#: shared-bindings/displayio/Bitmap.c
msgid "value_count must be > 0"
-msgstr ""
+msgstr "value_count moet groter dan 0 zijn"
#: shared-bindings/watchdog/WatchDogTimer.c
msgid "watchdog timeout must be greater than 0"
@@ -3261,43 +3272,43 @@ msgstr ""
#: shared-bindings/_bleio/Adapter.c
msgid "window must be <= interval"
-msgstr ""
+msgstr "window moet <= interval zijn"
#: extmod/ulab/code/linalg.c
msgid "wrong argument type"
-msgstr ""
+msgstr "onjuist argumenttype"
#: extmod/ulab/code/ndarray.c
msgid "wrong index type"
-msgstr ""
+msgstr "onjuist indextype"
#: py/objstr.c
msgid "wrong number of arguments"
-msgstr ""
+msgstr "onjuist aantal argumenten"
#: py/runtime.c
msgid "wrong number of values to unpack"
-msgstr ""
+msgstr "verkeerd aantal waarden om uit te pakken"
#: extmod/ulab/code/ndarray.c
msgid "wrong operand type"
-msgstr ""
+msgstr "verkeerd operandtype"
#: shared-module/displayio/Shape.c
msgid "x value out of bounds"
-msgstr ""
+msgstr "x-waarde buiten bereik"
#: shared-bindings/displayio/Shape.c
msgid "y should be an int"
-msgstr ""
+msgstr "y moet een int zijn"
#: shared-module/displayio/Shape.c
msgid "y value out of bounds"
-msgstr ""
+msgstr "y-waarde buiten bereik"
#: py/objrange.c
msgid "zero step"
-msgstr ""
+msgstr "nul-stap"
#~ msgid "Negative step not supported"
#~ msgstr "Negatieve stappen niet ondersteund"
diff --git a/main.c b/main.c
index bb5a7e5ce..c3787122d 100755
--- a/main.c
+++ b/main.c
@@ -185,7 +185,7 @@ bool maybe_run_list(const char ** filenames, pyexec_result_t* exec_result) {
}
mp_hal_stdout_tx_str(filename);
const compressed_string_t* compressed = translate(" output:\n");
- char decompressed[compressed->length];
+ char decompressed[decompress_length(compressed)];
decompress(compressed, decompressed);
mp_hal_stdout_tx_str(decompressed);
pyexec_file(filename, exec_result);
diff --git a/ports/atmel-samd/Makefile b/ports/atmel-samd/Makefile
index 8a5c3309f..d0ab65e6b 100644
--- a/ports/atmel-samd/Makefile
+++ b/ports/atmel-samd/Makefile
@@ -134,7 +134,7 @@ else
endif
endif
-CFLAGS += $(INC) -Wall -Werror -std=gnu11 -nostdlib $(BASE_CFLAGS) $(CFLAGS_MOD) $(COPT)
+CFLAGS += $(INC) -Wall -Werror -std=gnu11 -nostdlib -fshort-enums $(BASE_CFLAGS) $(CFLAGS_MOD) $(COPT)
ifeq ($(CHIP_FAMILY), samd21)
CFLAGS += \
@@ -157,7 +157,7 @@ endif
-LDFLAGS = $(CFLAGS) -nostartfiles -fshort-enums -Wl,-nostdlib -Wl,-T,$(GENERATED_LD_FILE) -Wl,-Map=$@.map -Wl,-cref -Wl,-gc-sections -specs=nano.specs
+LDFLAGS = $(CFLAGS) -nostartfiles -Wl,-nostdlib -Wl,-T,$(GENERATED_LD_FILE) -Wl,-Map=$@.map -Wl,-cref -Wl,-gc-sections -specs=nano.specs
LIBS := -lgcc -lc
# Use toolchain libm if we're not using our own.
diff --git a/ports/esp32s2/Makefile b/ports/esp32s2/Makefile
index 1104c5289..5ad5c2f1d 100644
--- a/ports/esp32s2/Makefile
+++ b/ports/esp32s2/Makefile
@@ -110,7 +110,7 @@ endif
CFLAGS += $(INC) -Werror -Wall -mlongcalls -std=gnu11 -Wl,--gc-sections $(BASE_CFLAGS) $(C_DEFS) $(CFLAGS_MOD) $(COPT)
-LDFLAGS = $(CFLAGS) -fshort-enums -Wl,-nostdlib -Wl,-Map=$@.map -Wl,-cref
+LDFLAGS = $(CFLAGS) -Wl,-nostdlib -Wl,-Map=$@.map -Wl,-cref
LDFLAGS += -L$(BUILD)/esp-idf/esp-idf/esp32s2 \
-Tesp32s2_out.ld \
-L$(BUILD)/esp-idf/esp-idf/esp32s2/ld \
diff --git a/ports/esp32s2/esp-idf b/ports/esp32s2/esp-idf
-Subproject 0daf6e0e41f95d22d193d08941a00df9525bc40
+Subproject 7aae7f034bab68d2dd6aaa763924c91eb697d87
diff --git a/ports/esp32s2/mpconfigport.h b/ports/esp32s2/mpconfigport.h
index c307d4791..d340bb480 100644
--- a/ports/esp32s2/mpconfigport.h
+++ b/ports/esp32s2/mpconfigport.h
@@ -32,6 +32,7 @@
#define MICROPY_NLR_THUMB (0)
#define MICROPY_PY_UJSON (0)
+#define MICROPY_USE_INTERNAL_PRINTF (0)
#include "py/circuitpy_mpconfig.h"
diff --git a/ports/esp32s2/mphalport.c b/ports/esp32s2/mphalport.c
index 772b61c9e..da5258b0e 100644
--- a/ports/esp32s2/mphalport.c
+++ b/ports/esp32s2/mphalport.c
@@ -37,6 +37,24 @@ void mp_hal_delay_us(mp_uint_t delay) {
mp_hal_delay_ms(delay / 1000);
}
-mp_uint_t cpu_get_regs_and_sp(mp_uint_t *regs) {
+// This is provided by the esp-idf/components/xtensa/esp32s2/libhal.a binary
+// blob.
+extern void xthal_window_spill(void);
+
+mp_uint_t cpu_get_regs_and_sp(mp_uint_t *regs, uint8_t reg_count) {
+ // xtensa has more registers than an instruction can address. The 16 that
+ // can be addressed are called the "window". When a function is called or
+ // returns the window rotates. This allows for more efficient function calls
+ // because ram doesn't need to be used. It's only used if the window wraps
+ // around onto itself. At that point values are "spilled" to empty spots in
+ // the stack that were set aside. When the window rotates back around (on
+ // function return), the values are restored into the register from ram.
+
+ // So, in order to read the values in the stack scan we must make sure all
+ // of the register values we care about have been spilled to RAM. Luckily,
+ // there is a HAL call to do it. There is a bit of a race condition here
+ // because the register value could change after it's been restored but that
+ // is unlikely to happen with a heap pointer while we do a GC.
+ xthal_window_spill();
return (mp_uint_t) __builtin_frame_address(0);
}
diff --git a/ports/esp32s2/sdkconfig.defaults b/ports/esp32s2/sdkconfig.defaults
index f7deb53fb..958e1852e 100644
--- a/ports/esp32s2/sdkconfig.defaults
+++ b/ports/esp32s2/sdkconfig.defaults
@@ -259,7 +259,7 @@ CONFIG_ESP32S2_RTC_CLK_CAL_CYCLES=576
CONFIG_ESP_ERR_TO_NAME_LOOKUP=y
CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32
CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584
+CONFIG_ESP_MAIN_TASK_STACK_SIZE=8192
CONFIG_ESP_IPC_TASK_STACK_SIZE=1024
CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048
CONFIG_ESP_CONSOLE_UART_DEFAULT=y
diff --git a/ports/esp32s2/supervisor/internal_flash.c b/ports/esp32s2/supervisor/internal_flash.c
index aab7e587a..ef216c4b1 100644
--- a/ports/esp32s2/supervisor/internal_flash.c
+++ b/ports/esp32s2/supervisor/internal_flash.c
@@ -100,18 +100,20 @@ mp_uint_t supervisor_flash_write_blocks(const uint8_t *src, uint32_t lba, uint32
_cache_lba = sector_offset;
}
for (uint8_t b = block_offset; b < blocks_per_sector; b++) {
+ // Stop copying after the last block.
+ if (block >= num_blocks) {
+ break;
+ }
memcpy(_cache + b * FILESYSTEM_BLOCK_SIZE,
src + block * FILESYSTEM_BLOCK_SIZE,
FILESYSTEM_BLOCK_SIZE);
block++;
}
result = esp_partition_erase_range(_partition, sector_offset, SECTOR_SIZE);
- ESP_EARLY_LOGW(TAG, "erase %d", result);
result = esp_partition_write(_partition,
sector_offset,
_cache,
SECTOR_SIZE);
- ESP_EARLY_LOGW(TAG, "write %d", result);
}
return 0; // success
diff --git a/ports/esp32s2/supervisor/port.c b/ports/esp32s2/supervisor/port.c
index 9e83e5778..4c42f11af 100644
--- a/ports/esp32s2/supervisor/port.c
+++ b/ports/esp32s2/supervisor/port.c
@@ -152,6 +152,9 @@ void port_sleep_until_interrupt(void) {
// FreeRTOS delay here maybe.
// Light sleep shuts down BLE and wifi.
// esp_light_sleep_start()
+ if (sleep_time_duration == 0) {
+ return;
+ }
vTaskDelayUntil(&sleep_time_set, sleep_time_duration);
}
diff --git a/ports/esp32s2/supervisor/usb.c b/ports/esp32s2/supervisor/usb.c
index 7c508485e..8bba84015 100644
--- a/ports/esp32s2/supervisor/usb.c
+++ b/ports/esp32s2/supervisor/usb.c
@@ -29,6 +29,11 @@
#include "lib/utils/interrupt_char.h"
#include "lib/mp-readline/readline.h"
+#include "esp-idf/components/soc/soc/esp32s2/include/soc/usb_periph.h"
+#include "esp-idf/components/driver/include/driver/periph_ctrl.h"
+#include "esp-idf/components/driver/include/driver/gpio.h"
+#include "esp-idf/components/esp_rom/include/esp32s2/rom/gpio.h"
+
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
@@ -64,16 +69,22 @@ void usb_device_task(void* param)
}
void init_usb_hardware(void) {
+ periph_module_reset(PERIPH_USB_MODULE);
+ periph_module_enable(PERIPH_USB_MODULE);
usb_hal_context_t hal = {
.use_external_phy = false // use built-in PHY
};
usb_hal_init(&hal);
+ // Initialize the pin drive strength.
+ gpio_set_drive_capability(USBPHY_DM_NUM, GPIO_DRIVE_CAP_3);
+ gpio_set_drive_capability(USBPHY_DP_NUM, GPIO_DRIVE_CAP_3);
+
(void) xTaskCreateStatic(usb_device_task,
"usbd",
USBD_STACK_SIZE,
NULL,
- configMAX_PRIORITIES-1,
+ 5,
usb_device_stack,
&usb_device_taskdef);
}
diff --git a/ports/esp32s2/tools/decode_backtrace.py b/ports/esp32s2/tools/decode_backtrace.py
new file mode 100644
index 000000000..3f078895a
--- /dev/null
+++ b/ports/esp32s2/tools/decode_backtrace.py
@@ -0,0 +1,23 @@
+"""Simple script that translates "Backtrace:" lines from the ESP output to files
+ and line numbers.
+
+ Run with: python3 tools/decode_backtrace.py <board>
+
+ Enter the backtrace line at the "? " prompt. CTRL-C to exit the script.
+ """
+
+import subprocess
+import sys
+
+board = sys.argv[1]
+print(board)
+
+while True:
+ addresses = input("? ")
+ if addresses.startswith("Backtrace:"):
+ addresses = addresses[len("Backtrace:"):]
+ addresses = addresses.strip().split()
+ addresses = [address.split(":")[0] for address in addresses]
+ print('got', addresses)
+ subprocess.run(["xtensa-esp32s2-elf-addr2line",
+ "-e", "build-{}/firmware.elf".format(board)] + addresses)
diff --git a/ports/litex/Makefile b/ports/litex/Makefile
index 596eaf2bb..d75a4da28 100644
--- a/ports/litex/Makefile
+++ b/ports/litex/Makefile
@@ -83,14 +83,14 @@ else
### CFLAGS += -flto
endif
-CFLAGS += $(INC) -Werror -Wall -std=gnu11 -nostdlib $(BASE_CFLAGS) $(C_DEFS) $(CFLAGS_MOD) $(COPT)
+CFLAGS += $(INC) -Werror -Wall -std=gnu11 -nostdlib -fshort-enums $(BASE_CFLAGS) $(C_DEFS) $(CFLAGS_MOD) $(COPT)
# TODO: check this
CFLAGS += -D__START=main -DFOMU
LD_FILE := boards/$(BOARD)/$(BOARD)-spi.ld
-LDFLAGS = $(CFLAGS) -fshort-enums -Wl,-nostdlib -Wl,-T,$(LD_FILE) -Wl,-Map=$@.map -Wl,-cref -Wl,-gc-sections -specs=nano.specs -Wl,-melf32lriscv
+LDFLAGS = $(CFLAGS) -Wl,-nostdlib -Wl,-T,$(LD_FILE) -Wl,-Map=$@.map -Wl,-cref -Wl,-gc-sections -specs=nano.specs -Wl,-melf32lriscv
LIBS := -lgcc -lc
diff --git a/ports/mimxrt10xx/Makefile b/ports/mimxrt10xx/Makefile
index 922978ac2..78cab0188 100644
--- a/ports/mimxrt10xx/Makefile
+++ b/ports/mimxrt10xx/Makefile
@@ -90,7 +90,7 @@ else
#CFLAGS += -flto -flto-partition=none
endif
-CFLAGS += $(INC) -ggdb -Wall -Wno-cast-align -std=gnu11 -nostdlib $(BASE_CFLAGS) $(CFLAGS_MOD) $(COPT)
+CFLAGS += $(INC) -ggdb -Wall -Wno-cast-align -std=gnu11 -nostdlib -fshort-enums $(BASE_CFLAGS) $(CFLAGS_MOD) $(COPT)
# TODO: add these when -Werror is applied
# Disable some warnings, as do most ports. NXP SDK causes undef, tinyusb causes cast-align
@@ -112,7 +112,7 @@ LD_FILES = $(wildcard boards/$(BOARD)/*.ld) $(addprefix linking/, flash/$(FLASH)
LD_SCRIPT_FLAG := -Wl,-T,
-LDFLAGS = $(CFLAGS) -nostartfiles -fshort-enums -Wl,-nostdlib $(addprefix $(LD_SCRIPT_FLAG), $(LD_FILES)) -Wl,-Map=$@.map -Wl,-cref -Wl,-gc-sections -specs=nano.specs
+LDFLAGS = $(CFLAGS) -nostartfiles -Wl,-nostdlib $(addprefix $(LD_SCRIPT_FLAG), $(LD_FILES)) -Wl,-Map=$@.map -Wl,-cref -Wl,-gc-sections -specs=nano.specs
LIBS := -lgcc -lc -lnosys -lm
# Use toolchain libm if we're not using our own.
diff --git a/ports/nrf/Makefile b/ports/nrf/Makefile
index e5931af5e..5b81fa9a7 100755
--- a/ports/nrf/Makefile
+++ b/ports/nrf/Makefile
@@ -93,7 +93,7 @@ else
endif
-CFLAGS += $(INC) -Wall -Werror -std=gnu11 -nostdlib $(BASE_CFLAGS) $(CFLAGS_MOD) $(COPT)
+CFLAGS += $(INC) -Wall -Werror -std=gnu11 -nostdlib -fshort-enums $(BASE_CFLAGS) $(CFLAGS_MOD) $(COPT)
# Undo some warnings.
# nrfx uses undefined preprocessor variables quite casually, so we can't do warning checks for these.
@@ -114,7 +114,7 @@ CFLAGS += \
# TODO: check this
CFLAGS += -D__START=main
-LDFLAGS = $(CFLAGS) -nostartfiles -fshort-enums -Wl,-nostdlib -Wl,-T,$(GENERATED_LD_FILE) -Wl,-Map=$@.map -Wl,-cref -Wl,-gc-sections -specs=nano.specs
+LDFLAGS = $(CFLAGS) -nostartfiles -Wl,-nostdlib -Wl,-T,$(GENERATED_LD_FILE) -Wl,-Map=$@.map -Wl,-cref -Wl,-gc-sections -specs=nano.specs
LIBS := -lgcc -lc
LDFLAGS += -mthumb -mcpu=cortex-m4
diff --git a/ports/stm/Makefile b/ports/stm/Makefile
index b667990bd..bd69d6fd7 100755
--- a/ports/stm/Makefile
+++ b/ports/stm/Makefile
@@ -94,7 +94,7 @@ endif
# MCU Series is defined by the HAL package and doesn't need to be specified here
C_DEFS = -D$(MCU_PACKAGE) -DUSE_HAL_DRIVER -DUSE_FULL_LL_DRIVER -D$(MCU_VARIANT)
-CFLAGS += $(INC) -Werror -Wall -std=gnu11 $(BASE_CFLAGS) $(C_DEFS) $(CFLAGS_MOD) $(COPT) -nostdlib -nostartfiles
+CFLAGS += $(INC) -Werror -Wall -std=gnu11 -fshort-enums $(BASE_CFLAGS) $(C_DEFS) $(CFLAGS_MOD) $(COPT) -nostdlib -nostartfiles
# Undo some warnings.
# STM32 HAL uses undefined preprocessor variables, shadowed variables, casts that change alignment reqs
@@ -136,7 +136,7 @@ ifndef BOOTLOADER_OFFSET
BOOTLOADER_OFFSET := 0x8000000
endif
-LDFLAGS = $(CFLAGS) -fshort-enums -Wl,-nostdlib -Wl,-T,$(LD_FILE) -Wl,-T,$(LD_COMMON) -Wl,-Map=$@.map -Wl,-cref -Wl,-gc-sections -specs=nano.specs
+LDFLAGS = $(CFLAGS) -Wl,-nostdlib -Wl,-T,$(LD_FILE) -Wl,-T,$(LD_COMMON) -Wl,-Map=$@.map -Wl,-cref -Wl,-gc-sections -specs=nano.specs
LIBS := -lgcc -lc
# Use toolchain libm if we're not using our own.
diff --git a/py/builtinhelp.c b/py/builtinhelp.c
index 9a3407a16..01c0bc84e 100644
--- a/py/builtinhelp.c
+++ b/py/builtinhelp.c
@@ -135,7 +135,7 @@ STATIC void mp_help_print_modules(void) {
// let the user know there may be other modules available from the filesystem
const compressed_string_t* compressed = translate("Plus any modules on the filesystem\n");
- char decompressed[compressed->length];
+ char decompressed[decompress_length(compressed)];
decompress(compressed, decompressed);
mp_print_str(MP_PYTHON_PRINTER, decompressed);
}
@@ -181,7 +181,7 @@ STATIC mp_obj_t mp_builtin_help(size_t n_args, const mp_obj_t *args) {
// print a general help message. Translate only works on single strings on one line.
const compressed_string_t* compressed =
translate("Welcome to Adafruit CircuitPython %s!\n\nPlease visit learn.adafruit.com/category/circuitpython for project guides.\n\nTo list built-in modules please do `help(\"modules\")`.\n");
- char decompressed[compressed->length];
+ char decompressed[decompress_length(compressed)];
decompress(compressed, decompressed);
mp_printf(MP_PYTHON_PRINTER, decompressed, MICROPY_GIT_TAG);
} else {
diff --git a/py/circuitpy_defns.mk b/py/circuitpy_defns.mk
index d77559912..67fbde6e4 100644
--- a/py/circuitpy_defns.mk
+++ b/py/circuitpy_defns.mk
@@ -48,7 +48,6 @@ BASE_CFLAGS = \
-D__$(CHIP_VARIANT)__ \
-ffunction-sections \
-fdata-sections \
- -fshort-enums \
-DCIRCUITPY_SOFTWARE_SAFE_MODE=0x0ADABEEF \
-DCIRCUITPY_CANARY_WORD=0xADAF00 \
-DCIRCUITPY_SAFE_RESTART_WORD=0xDEADBEEF \
diff --git a/py/circuitpy_mpconfig.h b/py/circuitpy_mpconfig.h
index 0b5547058..3fbb46900 100644
--- a/py/circuitpy_mpconfig.h
+++ b/py/circuitpy_mpconfig.h
@@ -121,7 +121,9 @@
#define MICROPY_REPL_EVENT_DRIVEN (0)
#define MICROPY_STACK_CHECK (1)
#define MICROPY_STREAMS_NON_BLOCK (1)
+#ifndef MICROPY_USE_INTERNAL_PRINTF
#define MICROPY_USE_INTERNAL_PRINTF (1)
+#endif
// fatfs configuration used in ffconf.h
//
diff --git a/py/makeqstrdata.py b/py/makeqstrdata.py
index 0d667959d..df2c687e5 100644
--- a/py/makeqstrdata.py
+++ b/py/makeqstrdata.py
@@ -1,7 +1,10 @@
"""
Process raw qstr file and output qstr data with length, hash and data bytes.
-This script works with Python 2.6, 2.7, 3.3 and 3.4.
+This script works with Python 2.7, 3.3 and 3.4.
+
+For documentation about the format of compressed translated strings, see
+supervisor/shared/translate.h
"""
from __future__ import print_function
@@ -132,19 +135,37 @@ def compute_huffman_coding(translations, qstrs, compression_filename):
print("// estimated total memory size", len(lengths) + 2*len(values) + sum(len(cb[u]) for u in all_strings_concat))
print("//", values, lengths)
values_type = "uint16_t" if max(ord(u) for u in values) > 255 else "uint8_t"
+ max_translation_encoded_length = max(len(translation.encode("utf-8")) for original,translation in translations)
with open(compression_filename, "w") as f:
f.write("const uint8_t lengths[] = {{ {} }};\n".format(", ".join(map(str, lengths))))
f.write("const {} values[] = {{ {} }};\n".format(values_type, ", ".join(str(ord(u)) for u in values)))
+ f.write("#define compress_max_length_bits ({})\n".format(max_translation_encoded_length.bit_length()))
return values, lengths
-def decompress(encoding_table, length, encoded):
+def decompress(encoding_table, encoded, encoded_length_bits):
values, lengths = encoding_table
- #print(l, encoded)
dec = []
this_byte = 0
this_bit = 7
b = encoded[this_byte]
- for i in range(length):
+ bits = 0
+ for i in range(encoded_length_bits):
+ bits <<= 1
+ if 0x80 & b:
+ bits |= 1
+
+ b <<= 1
+ if this_bit == 0:
+ this_bit = 7
+ this_byte += 1
+ if this_byte < len(encoded):
+ b = encoded[this_byte]
+ else:
+ this_bit -= 1
+ length = bits
+
+ i = 0
+ while i < length:
bits = 0
bit_length = 0
max_code = lengths[0]
@@ -170,10 +191,11 @@ def decompress(encoding_table, length, encoded):
searched_length += lengths[bit_length]
v = values[searched_length + bits - max_code]
+ i += len(v.encode('utf-8'))
dec.append(v)
return ''.join(dec)
-def compress(encoding_table, decompressed):
+def compress(encoding_table, decompressed, encoded_length_bits, len_translation_encoded):
if not isinstance(decompressed, str):
raise TypeError()
values, lengths = encoding_table
@@ -182,6 +204,19 @@ def compress(encoding_table, decompressed):
#print(lengths)
current_bit = 7
current_byte = 0
+
+ code = len_translation_encoded
+ bits = encoded_length_bits+1
+ for i in range(bits - 1, 0, -1):
+ if len_translation_encoded & (1 << (i - 1)):
+ enc[current_byte] |= 1 << current_bit
+ if current_bit == 0:
+ current_bit = 7
+ #print("packed {0:0{width}b}".format(enc[current_byte], width=8))
+ current_byte += 1
+ else:
+ current_bit -= 1
+
for c in decompressed:
#print()
#print("char", c, values.index(c))
@@ -342,14 +377,17 @@ def print_qstr_data(encoding_table, qcfgs, qstrs, i18ns):
total_text_size = 0
total_text_compressed_size = 0
+ max_translation_encoded_length = max(len(translation.encode("utf-8")) for original, translation in i18ns)
+ encoded_length_bits = max_translation_encoded_length.bit_length()
for original, translation in i18ns:
translation_encoded = translation.encode("utf-8")
- compressed = compress(encoding_table, translation)
+ compressed = compress(encoding_table, translation, encoded_length_bits, len(translation_encoded))
total_text_compressed_size += len(compressed)
- decompressed = decompress(encoding_table, len(translation_encoded), compressed)
+ decompressed = decompress(encoding_table, compressed, encoded_length_bits)
+ assert decompressed == translation
for c in C_ESCAPES:
decompressed = decompressed.replace(c, C_ESCAPES[c])
- print("TRANSLATION(\"{}\", {}, {{ {} }}) // {}".format(original, len(translation_encoded)+1, ", ".join(["0x{:02x}".format(x) for x in compressed]), decompressed))
+ print("TRANSLATION(\"{}\", {}) // {}".format(original, ", ".join(["{:d}".format(x) for x in compressed]), decompressed))
total_text_size += len(translation.encode("utf-8"))
print()
@@ -385,6 +423,7 @@ if __name__ == "__main__":
qcfgs, qstrs, i18ns = parse_input_headers(args.infiles)
if args.translation:
+ i18ns = sorted(i18ns)
translations = translate(args.translation, i18ns)
encoding_table = compute_huffman_coding(translations, qstrs, args.compression_filename)
print_qstr_data(encoding_table, qcfgs, qstrs, translations)
diff --git a/py/moduerrno.c b/py/moduerrno.c
index 7915603e4..3be5adba1 100644
--- a/py/moduerrno.c
+++ b/py/moduerrno.c
@@ -158,7 +158,7 @@ const char *mp_common_errno_to_str(mp_obj_t errno_val, char *buf, size_t len) {
case ENOSPC: desc = translate("No space left on device"); break;
case EROFS: desc = translate("Read-only filesystem"); break;
}
- if (desc != NULL && desc->length <= len) {
+ if (desc != NULL && decompress_length(desc) <= len) {
decompress(desc, buf);
return buf;
}
diff --git a/py/obj.c b/py/obj.c
index f1e00de1a..4fa2032dc 100644
--- a/py/obj.c
+++ b/py/obj.c
@@ -94,17 +94,17 @@ void mp_obj_print_exception(const mp_print_t *print, mp_obj_t exc) {
assert(n % 3 == 0);
// Decompress the format strings
const compressed_string_t* traceback = translate("Traceback (most recent call last):\n");
- char decompressed[traceback->length];
+ char decompressed[decompress_length(traceback)];
decompress(traceback, decompressed);
#if MICROPY_ENABLE_SOURCE_LINE
const compressed_string_t* frame = translate(" File \"%q\", line %d");
#else
const compressed_string_t* frame = translate(" File \"%q\"");
#endif
- char decompressed_frame[frame->length];
+ char decompressed_frame[decompress_length(frame)];
decompress(frame, decompressed_frame);
const compressed_string_t* block_fmt = translate(", in %q\n");
- char decompressed_block[block_fmt->length];
+ char decompressed_block[decompress_length(block_fmt)];
decompress(block_fmt, decompressed_block);
// Print the traceback
diff --git a/py/objexcept.c b/py/objexcept.c
index b7a536c5e..796be122f 100644
--- a/py/objexcept.c
+++ b/py/objexcept.c
@@ -400,7 +400,7 @@ mp_obj_t mp_obj_new_exception_msg_vlist(const mp_obj_type_t *exc_type, const com
// Try to allocate memory for the message
mp_obj_str_t *o_str = m_new_obj_maybe(mp_obj_str_t);
- size_t o_str_alloc = fmt->length + 1;
+ size_t o_str_alloc = decompress_length(fmt);
byte *o_str_buf = m_new_maybe(byte, o_str_alloc);
bool used_emg_buf = false;
@@ -433,7 +433,7 @@ mp_obj_t mp_obj_new_exception_msg_vlist(const mp_obj_type_t *exc_type, const com
// We have some memory to format the string
struct _exc_printer_t exc_pr = {!used_emg_buf, o_str_alloc, 0, o_str_buf};
mp_print_t print = {&exc_pr, exc_add_strn};
- char fmt_decompressed[fmt->length];
+ char fmt_decompressed[decompress_length(fmt)];
decompress(fmt, fmt_decompressed);
mp_vprintf(&print, fmt_decompressed, ap);
exc_pr.buf[exc_pr.len] = '\0';
diff --git a/shared-bindings/audiobusio/I2SOut.c b/shared-bindings/audiobusio/I2SOut.c
index d965aac89..fd71a6e85 100644
--- a/shared-bindings/audiobusio/I2SOut.c
+++ b/shared-bindings/audiobusio/I2SOut.c
@@ -61,7 +61,7 @@
//| length = 8000 // 440
//| sine_wave = array.array("H", [0] * length)
//| for i in range(length):
-//| sine_wave[i] = int(math.sin(math.pi * 2 * i / 18) * (2 ** 15) + 2 ** 15)
+//| sine_wave[i] = int(math.sin(math.pi * 2 * i / length) * (2 ** 15) + 2 ** 15)
//|
//| sine_wave = audiocore.RawSample(sine_wave, sample_rate=8000)
//| i2s = audiobusio.I2SOut(board.D1, board.D0, board.D9)
diff --git a/shared-bindings/audiocore/RawSample.c b/shared-bindings/audiocore/RawSample.c
index c0f9325e6..2eadf1fab 100644
--- a/shared-bindings/audiocore/RawSample.c
+++ b/shared-bindings/audiocore/RawSample.c
@@ -61,7 +61,7 @@
//| length = 8000 // 440
//| sine_wave = array.array("h", [0] * length)
//| for i in range(length):
-//| sine_wave[i] = int(math.sin(math.pi * 2 * i / 18) * (2 ** 15))
+//| sine_wave[i] = int(math.sin(math.pi * 2 * i / length) * (2 ** 15))
//|
//| dac = audioio.AudioOut(board.SPEAKER)
//| sine_wave = audiocore.RawSample(sine_wave)
diff --git a/shared-bindings/audioio/AudioOut.c b/shared-bindings/audioio/AudioOut.c
index 574868202..9ba72bd41 100644
--- a/shared-bindings/audioio/AudioOut.c
+++ b/shared-bindings/audioio/AudioOut.c
@@ -61,7 +61,7 @@
//| length = 8000 // 440
//| sine_wave = array.array("H", [0] * length)
//| for i in range(length):
-//| sine_wave[i] = int(math.sin(math.pi * 2 * i / 18) * (2 ** 15) + 2 ** 15)
+//| sine_wave[i] = int(math.sin(math.pi * 2 * i / length) * (2 ** 15) + 2 ** 15)
//|
//| dac = audioio.AudioOut(board.SPEAKER)
//| sine_wave = audiocore.RawSample(sine_wave, sample_rate=8000)
diff --git a/shared-bindings/audiopwmio/PWMAudioOut.c b/shared-bindings/audiopwmio/PWMAudioOut.c
index d6b102317..812b7330d 100644
--- a/shared-bindings/audiopwmio/PWMAudioOut.c
+++ b/shared-bindings/audiopwmio/PWMAudioOut.c
@@ -63,7 +63,7 @@
//| length = 8000 // 440
//| sine_wave = array.array("H", [0] * length)
//| for i in range(length):
-//| sine_wave[i] = int(math.sin(math.pi * 2 * i / 18) * (2 ** 15) + 2 ** 15)
+//| sine_wave[i] = int(math.sin(math.pi * 2 * i / length) * (2 ** 15) + 2 ** 15)
//|
//| dac = audiopwmio.PWMAudioOut(board.SPEAKER)
//| sine_wave = audiocore.RawSample(sine_wave, sample_rate=8000)
diff --git a/supervisor/shared/translate.c b/supervisor/shared/translate.c
index 187d5ff8a..606f8fa91 100644
--- a/supervisor/shared/translate.c
+++ b/supervisor/shared/translate.c
@@ -37,7 +37,7 @@
#include "supervisor/serial.h"
void serial_write_compressed(const compressed_string_t* compressed) {
- char decompressed[compressed->length];
+ char decompressed[decompress_length(compressed)];
decompress(compressed, decompressed);
serial_write(decompressed);
}
@@ -58,12 +58,22 @@ STATIC int put_utf8(char *buf, int u) {
}
}
+uint16_t decompress_length(const compressed_string_t* compressed) {
+ if (compress_max_length_bits <= 8) {
+ return 1 + (compressed->data >> (8 - compress_max_length_bits));
+ } else {
+ return 1 + ((compressed->data * 256 + compressed->tail[0]) >> (16 - compress_max_length_bits));
+ }
+}
+
char* decompress(const compressed_string_t* compressed, char* decompressed) {
- uint8_t this_byte = 0;
- uint8_t this_bit = 7;
- uint8_t b = compressed->data[this_byte];
+ uint8_t this_byte = compress_max_length_bits / 8;
+ uint8_t this_bit = 7 - compress_max_length_bits % 8;
+ uint8_t b = (&compressed->data)[this_byte];
+ uint16_t length = decompress_length(compressed);
+
// Stop one early because the last byte is always NULL.
- for (uint16_t i = 0; i < compressed->length - 1;) {
+ for (uint16_t i = 0; i < length - 1;) {
uint32_t bits = 0;
uint8_t bit_length = 0;
uint32_t max_code = lengths[0];
@@ -78,7 +88,7 @@ char* decompress(const compressed_string_t* compressed, char* decompressed) {
if (this_bit == 0) {
this_bit = 7;
this_byte += 1;
- b = compressed->data[this_byte]; // This may read past the end but its never used.
+ b = (&compressed->data)[this_byte]; // This may read past the end but its never used.
} else {
this_bit -= 1;
}
@@ -91,14 +101,14 @@ char* decompress(const compressed_string_t* compressed, char* decompressed) {
i += put_utf8(decompressed + i, values[searched_length + bits - max_code]);
}
- decompressed[compressed->length-1] = '\0';
+ decompressed[length-1] = '\0';
return decompressed;
}
inline __attribute__((always_inline)) const compressed_string_t* translate(const char* original) {
#ifndef NO_QSTR
#define QDEF(id, str)
- #define TRANSLATION(id, len, compressed...) if (strcmp(original, id) == 0) { static const compressed_string_t v = {.length = len, .data = compressed}; return &v; } else
+ #define TRANSLATION(id, firstbyte, ...) if (strcmp(original, id) == 0) { static const compressed_string_t v = { .data = firstbyte, .tail = { __VA_ARGS__ } }; return &v; } else
#include "genhdr/qstrdefs.generated.h"
#undef TRANSLATION
#undef QDEF
diff --git a/supervisor/shared/translate.h b/supervisor/shared/translate.h
index 5e8acbb6a..731b26d12 100644
--- a/supervisor/shared/translate.h
+++ b/supervisor/shared/translate.h
@@ -29,13 +29,41 @@
#include <stdint.h>
+// The format of the compressed data is:
+// - the size of the uncompressed string in UTF-8 bytes, encoded as a
+// (compress_max_length_bits)-bit number. compress_max_length_bits is
+// computed during dictionary generation time, and happens to be 8
+// for all current platforms. However, it'll probably end up being
+// 9 in some translations sometime in the future. This length excludes
+// the trailing NUL, though notably decompress_length includes it.
+//
+// - followed by the huffman encoding of the individual UTF-16 code
+// points that make up the string. The trailing "\0" is not
+// represented by a huffman code, but is implied by the length.
+// (building the huffman encoding on UTF-16 code points gave better
+// compression than building it on UTF-8 bytes)
+//
+// The "data" / "tail" construct is so that the struct's last member is a
+// "flexible array". However, the _only_ member is not permitted to be
+// a flexible member, so we have to declare the first byte as a separte
+// member of the structure.
+//
+// For translations where length needs 8 bits, this saves about 1.5
+// bytes per string on average compared to a structure of {uint16_t,
+// flexible array}, but is also future-proofed against strings with
+// UTF-8 length above 256, with a savings of about 1.375 bytes per
+// string.
typedef struct {
- uint16_t length;
- const uint8_t data[];
+ uint8_t data;
+ const uint8_t tail[];
} compressed_string_t;
+// Return the compressed, translated version of a source string
+// Usually, due to LTO, this is optimized into a load of a constant
+// pointer.
const compressed_string_t* translate(const char* c);
void serial_write_compressed(const compressed_string_t* compressed);
char* decompress(const compressed_string_t* compressed, char* decompressed);
+uint16_t decompress_length(const compressed_string_t* compressed);
#endif // MICROPY_INCLUDED_SUPERVISOR_TRANSLATE_H