diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot index 8ab26e4977..2d66101955 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 \n" "Language-Team: LANGUAGE \n" diff --git a/locale/cs.po b/locale/cs.po index 3663933703..36f800ebfa 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 , 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 \n" +"POT-Creation-Date: 2020-05-29 10:15-0700\n" +"PO-Revision-Date: 2020-05-24 03:22+0000\n" +"Last-Translator: dronecz \n" "Language-Team: LANGUAGE \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 9e4bd36c08..8139d8992e 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 \n" +"POT-Creation-Date: 2020-05-29 10:15-0700\n" +"PO-Revision-Date: 2020-05-23 16:13+0000\n" +"Last-Translator: Timon \n" "Language-Team: German \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 f14f449d4d..795345fa0a 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 \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 bb5a7e5cec..c3787122d3 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 8a5c3309f4..d0ab65e6b7 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 1104c5289f..5ad5c2f1d3 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 index 0daf6e0e41..7aae7f034b 160000 --- a/ports/esp32s2/esp-idf +++ b/ports/esp32s2/esp-idf @@ -1 +1 @@ -Subproject commit 0daf6e0e41f95d22d193d08941a00df9525bc405 +Subproject commit 7aae7f034bab68d2dd6aaa763924c91eb697d87e diff --git a/ports/esp32s2/mpconfigport.h b/ports/esp32s2/mpconfigport.h index c307d47916..d340bb4805 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 772b61c9e0..da5258b0e2 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 f7deb53fb0..958e1852ea 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 aab7e587ae..ef216c4b1b 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 9e83e5778c..4c42f11af9 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 7c508485e4..8bba84015a 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 0000000000..3f078895af --- /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 + + 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 596eaf2bb3..d75a4da288 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 922978ac2e..78cab0188e 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 e5931af5ee..5b81fa9a74 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 b667990bda..bd69d6fd7a 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 9a3407a16f..01c0bc84e0 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 d77559912f..67fbde6e4f 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 0b5547058b..3fbb469000 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 0d667959d9..df2c687e5c 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 7915603e4e..3be5adba1e 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 f1e00de1a4..4fa2032dc7 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 b7a536c5e3..796be122fe 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 d965aac89e..fd71a6e852 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 c0f9325e67..2eadf1fab4 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 5748682020..9ba72bd41d 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 d6b102317f..812b7330d4 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 187d5ff8a5..606f8fa91a 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 5e8acbb6af..731b26d123 100644 --- a/supervisor/shared/translate.h +++ b/supervisor/shared/translate.h @@ -29,13 +29,41 @@ #include +// 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