This commit started as an attempt to handle translation of abbr elements, which I was not able to get to work in a clean way. Shortly before I resigned I had the idea to try `openai:gpt-5` as agent in the translate.py, instead of `openai:gpt-4o` and BAM it worked. A lot of other things also worked much better. Modifications had to be made though because GPT-5 interpreted some rules stricter, so some reformulation and some more examples were needed. Will translate with that agent in the remaining translations to test if these prompts work well.
In manchen Situationen müssen Sie möglicherweise einen **Proxy**-Server wie Traefik oder Nginx verwenden, mit einer Konfiguration, die ein zusätzliches Pfadpräfix hinzufügt, das von Ihrer Anwendung nicht gesehen wird.
In manchen Situationen müssen Sie möglicherweise einen **Proxy**-Server wie Traefik oder Nginx verwenden, mit einer Konfiguration, die ein zusätzliches Pfadpräfix hinzufügt, das von Ihrer Anwendung nicht gesehen wird.
In diesen Fällen können Sie `root_path` verwenden, um Ihre Anwendung zu konfigurieren.
In diesen Fällen können Sie <abbrtitle="Wurzelpfad">`root_path`</abbr> verwenden, um Ihre Anwendung zu konfigurieren.
Der `root_path`(deutsch: Wurzelpfad) ist ein Mechanismus, der von der ASGI-Spezifikation bereitgestellt wird (auf der FastAPI via Starlette aufbaut).
Der `root_path` ist ein Mechanismus, der von der ASGI-Spezifikation bereitgestellt wird (auf der FastAPI via Starlette aufbaut).
Der `root_path` wird verwendet, um diese speziellen Fälle zu handhaben.
Der `root_path` wird verwendet, um diese speziellen Fälle zu handhaben.
@ -64,7 +64,7 @@ Die Benutzeroberfläche der Dokumentation würde benötigen, dass das OpenAPI-Sc
}
}
```
```
In diesem Beispiel könnte der „Proxy“ etwa **Traefik** sein. Und der Server wäre etwas wie **Uvicorn**, auf dem Ihre FastAPI-Anwendung ausgeführt wird.
In diesem Beispiel könnte der „Proxy“ etwa **Traefik** sein. Und der Server wäre etwas wie FastAPI CLI mit **Uvicorn**, auf dem Ihre FastAPI-Anwendung ausgeführt wird.
### Bereitstellung des `root_path` { #providing-the-root-path }
### Bereitstellung des `root_path` { #providing-the-root-path }
@ -4,7 +4,7 @@ Sie können Logik (Code) definieren, die ausgeführt werden soll, bevor die Anwe
Auf die gleiche Weise können Sie Logik (Code) definieren, die ausgeführt werden soll, wenn die Anwendung **heruntergefahren** wird. In diesem Fall wird dieser Code **einmal** ausgeführt, **nachdem** möglicherweise **viele Requests** bearbeitet wurden.
Auf die gleiche Weise können Sie Logik (Code) definieren, die ausgeführt werden soll, wenn die Anwendung **heruntergefahren** wird. In diesem Fall wird dieser Code **einmal** ausgeführt, **nachdem** möglicherweise **viele Requests** bearbeitet wurden.
Da dieser Code ausgeführt wird, bevor die Anwendung **beginnt**, Requests entgegenzunehmen, und unmittelbar, nachdem sie die Bearbeitung von Requests **abgeschlossen hat**, deckt er den gesamten Anwendungs-**Lifespan** (deutsch: Lebensdauer) ab (das Wort „Lifespan“ wird gleich wichtig sein 😉).
Da dieser Code ausgeführt wird, bevor die Anwendung **beginnt**, Requests entgegenzunehmen, und unmittelbar, nachdem sie die Bearbeitung von Requests **abgeschlossen hat**, deckt er den gesamten Anwendungs-<abbrtitle="Lebensdauer">**Lifespan**</abbr> ab (das Wort „Lifespan“ wird gleich wichtig sein 😉).
Dies kann sehr nützlich sein, um **Ressourcen** einzurichten, die Sie in der gesamten App verwenden wollen und die von Requests **gemeinsam genutzt** werden und/oder die Sie anschließend **aufräumen** müssen. Zum Beispiel ein Pool von Datenbankverbindungen oder das Laden eines gemeinsam genutzten Modells für maschinelles Lernen.
Dies kann sehr nützlich sein, um **Ressourcen** einzurichten, die Sie in der gesamten App verwenden wollen und die von Requests **gemeinsam genutzt** werden und/oder die Sie anschließend **aufräumen** müssen. Zum Beispiel ein Pool von Datenbankverbindungen oder das Laden eines gemeinsam genutzten Modells für maschinelles Lernen.
@ -38,7 +38,7 @@ Und dann, direkt nach dem `yield`, entladen wir das Modell. Dieser Code wird aus
/// tip | Tipp
/// tip | Tipp
Das *Herunterfahren* würde erfolgen, wenn Sie die Anwendung **stoppen**.
Das `shutdown` würde erfolgen, wenn Sie die Anwendung **stoppen**.
Möglicherweise müssen Sie eine neue Version starten, oder Sie haben es einfach satt, sie auszuführen. 🤷
Möglicherweise müssen Sie eine neue Version starten, oder Sie haben es einfach satt, sie auszuführen. 🤷
Sie können OAuth2-Scopes (deutsch: Geltungsbereiche) direkt in **FastAPI** verwenden, sie sind nahtlos integriert.
Sie können OAuth2-<abbrtitle="Geltungsbereiche">Scopes</abbr> direkt in **FastAPI** verwenden, sie sind nahtlos integriert.
Das ermöglicht es Ihnen, ein feingranuliertes Berechtigungssystem nach dem OAuth2-Standard in Ihre OpenAPI-Anwendung (und deren API-Dokumentation) zu integrieren.
Das ermöglicht es Ihnen, ein feingranuliertes Berechtigungssystem nach dem OAuth2-Standard in Ihre OpenAPI-Anwendung (und deren API-Dokumentation) zu integrieren.
@ -20,7 +20,7 @@ Es ist das beliebteste Python-Framework und genießt großes Vertrauen. Es wird
Es ist relativ eng mit relationalen Datenbanken (wie MySQL oder PostgreSQL) gekoppelt, daher ist es nicht sehr einfach, eine NoSQL-Datenbank (wie Couchbase, MongoDB, Cassandra, usw.) als Hauptspeicherengine zu verwenden.
Es ist relativ eng mit relationalen Datenbanken (wie MySQL oder PostgreSQL) gekoppelt, daher ist es nicht sehr einfach, eine NoSQL-Datenbank (wie Couchbase, MongoDB, Cassandra, usw.) als Hauptspeicherengine zu verwenden.
Es wurde erstellt, um den HTML-Code im Backend zu generieren, nicht um APIs zu erstellen, die von einem modernen Frontend (wie React, Vue.js und Angular) oder von anderen Systemen (wie <abbrtitle="Internet of Things">IoT</abbr>-Geräten) verwendet werden, um mit ihm zu kommunizieren.
Es wurde erstellt, um den HTML-Code im Backend zu generieren, nicht um APIs zu erstellen, die von einem modernen Frontend (wie React, Vue.js und Angular) oder von anderen Systemen (wie <abbrtitle="Internet of Things – Internet der Dinge">IoT</abbr>-Geräten) verwendet werden, um mit ihm zu kommunizieren.
@ -145,7 +145,7 @@ Ohne ein Datenvalidierungssystem müssten Sie alle Prüfungen manuell im Code du
Für diese Funktionen wurde Marshmallow entwickelt. Es ist eine großartige Bibliothek und ich habe sie schon oft genutzt.
Für diese Funktionen wurde Marshmallow entwickelt. Es ist eine großartige Bibliothek und ich habe sie schon oft genutzt.
Aber sie wurde erstellt, bevor Typhinweise in Python existierten. Um also ein <abbrtitle="die Definition, wie Daten geformt sein werden sollen">Schema</abbr> zu definieren, müssen Sie bestimmte Werkzeuge und Klassen verwenden, die von Marshmallow bereitgestellt werden.
Aber sie wurde erstellt, bevor Typhinweise in Python existierten. Um also ein <abbrtitle="die Definition, wie Daten geformt sein sollen">Schema</abbr> zu definieren, müssen Sie bestimmte Werkzeuge und Klassen verwenden, die von Marshmallow bereitgestellt werden.
/// check | Inspirierte **FastAPI**
/// check | Inspirierte **FastAPI**
@ -474,7 +474,7 @@ Es ist der empfohlene Server für Starlette und **FastAPI**.
Hauptwebserver zum Ausführen von **FastAPI**-Anwendungen.
Hauptwebserver zum Ausführen von **FastAPI**-Anwendungen.
Sie können ihn mit Gunicorn kombinieren, um einen asynchronen Multiprozess-Server zu erhalten.
Sie können auch die Kommandozeilenoption `--workers` verwenden, um einen asynchronen Multiprozess-Server zu erhalten.
Weitere Details finden Sie im Abschnitt [Deployment](deployment/index.md){.internal-link target=_blank}.
Weitere Details finden Sie im Abschnitt [Deployment](deployment/index.md){.internal-link target=_blank}.
@ -186,7 +186,7 @@ In vielen Fällen möchten Sie jedoch mehrere Workerprozesse gleichzeitig ausfü
Wenn Sie mehr Clients haben, als ein einzelner Prozess verarbeiten kann (z. B. wenn die virtuelle Maschine nicht sehr groß ist) und die CPU des Servers **mehrere Kerne** hat, dann könnten **mehrere Prozesse** gleichzeitig mit derselben Anwendung laufen und alle Requests unter sich verteilen.
Wenn Sie mehr Clients haben, als ein einzelner Prozess verarbeiten kann (z. B. wenn die virtuelle Maschine nicht sehr groß ist) und die CPU des Servers **mehrere Kerne** hat, dann könnten **mehrere Prozesse** gleichzeitig mit derselben Anwendung laufen und alle Requests unter sich verteilen.
Wenn Sie mit **mehreren Prozessen** dasselbe API-Programm ausführen, werden diese üblicherweise als **Worker** (deutsch: Arbeiter) bezeichnet.
Wenn Sie mit **mehreren Prozessen** dasselbe API-Programm ausführen, werden diese üblicherweise als <abbrtitle="Arbeiter">**Worker**</abbr> bezeichnet.
### Workerprozesse und Ports { #worker-processes-and-ports }
### Workerprozesse und Ports { #worker-processes-and-ports }
@ -60,7 +60,7 @@ Und der **Container** selbst (im Gegensatz zum **Containerimage**) ist die tats
Docker ist eines der wichtigsten Tools zum Erstellen und Verwalten von **Containerimages** und **Containern**.
Docker ist eines der wichtigsten Tools zum Erstellen und Verwalten von **Containerimages** und **Containern**.
Und es gibt einen öffentlichen <ahref="https://hub.docker.com/"class="external-link"target="_blank">Docker Hub</a> (deutsch: Umschlagplatz) mit vorgefertigten **offiziellen Containerimages** für viele Tools, Umgebungen, Datenbanken und Anwendungen.
Und es gibt einen öffentlichen <ahref="https://hub.docker.com/"class="external-link"target="_blank">Docker <abbrtitle="Umschlagplatz">Hub</abbr></a> mit vorgefertigten **offiziellen Containerimages** für viele Tools, Umgebungen, Datenbanken und Anwendungen.
Beispielsweise gibt es ein offizielles <ahref="https://hub.docker.com/_/python"class="external-link"target="_blank">Python-Image</a>.
Beispielsweise gibt es ein offizielles <ahref="https://hub.docker.com/_/python"class="external-link"target="_blank">Python-Image</a>.
@ -4,7 +4,7 @@ Das Deployment einer **FastAPI**-Anwendung ist relativ einfach.
## Was bedeutet Deployment? { #what-does-deployment-mean }
## Was bedeutet Deployment? { #what-does-deployment-mean }
**Deployment** (deutsch: Bereitstellen der Anwendung) bedeutet, die notwendigen Schritte durchzuführen, um die Anwendung **für die Endbenutzer verfügbar** zu machen.
<abbrtitle="Bereitstellen der Anwendung">**Deployment**</abbr> bedeutet, die notwendigen Schritte durchzuführen, um die Anwendung **für die Endbenutzer verfügbar** zu machen.
Bei einer **Web-API** bedeutet das normalerweise, diese auf einem **entfernten Rechner** zu platzieren, mit einem **Serverprogramm**, welches gute Leistung, Stabilität, usw. bietet, damit Ihre **Benutzer** auf die Anwendung effizient und ohne Unterbrechungen oder Probleme **zugreifen** können.
Bei einer **Web-API** bedeutet das normalerweise, diese auf einem **entfernten Rechner** zu platzieren, mit einem **Serverprogramm**, welches gute Leistung, Stabilität, usw. bietet, damit Ihre **Benutzer** auf die Anwendung effizient und ohne Unterbrechungen oder Probleme **zugreifen** können.
@ -10,7 +10,7 @@ Eine Umgebungsvariable (auch bekannt als „**env var**“) ist eine Variable, d
Umgebungsvariablen können nützlich sein, um **Einstellungen** der Anwendung zu handhaben, als Teil der **Installation** von Python usw.
Umgebungsvariablen können nützlich sein, um **Einstellungen** der Anwendung zu handhaben, als Teil der **Installation** von Python usw.
## Erstellen und Verwenden von Umgebungsvariablen { #create-and-use-env-vars }
## Umgebungsvariablen erstellen und verwenden { #create-and-use-env-vars }
Sie können Umgebungsvariablen in der **Shell (Terminal)** erstellen und verwenden, ohne Python zu benötigen:
Sie können Umgebungsvariablen in der **Shell (Terminal)** erstellen und verwenden, ohne Python zu benötigen:
@ -129,14 +129,14 @@ Hello Wade Wilson from Python
Da Umgebungsvariablen außerhalb des Codes gesetzt werden können, aber vom Code gelesen werden können und nicht mit den restlichen Dateien gespeichert (in `git` committet) werden müssen, werden sie häufig für Konfigurationen oder **Einstellungen** verwendet.
Da Umgebungsvariablen außerhalb des Codes gesetzt werden können, aber vom Code gelesen werden können und nicht mit den restlichen Dateien gespeichert (in `git` committet) werden müssen, werden sie häufig für Konfigurationen oder **Einstellungen** verwendet.
Sie können auch eine Umgebungsvariable nur für einen **spezifischen Programmauruf** erstellen, die nur für dieses Programm und nur für dessen Dauer verfügbar ist.
Sie können auch eine Umgebungsvariable nur für einen **spezifischen Programmaufruf** erstellen, die nur für dieses Programm und nur für dessen Dauer verfügbar ist.
Um dies zu tun, erstellen Sie sie direkt vor dem Programmaufruf, in derselben Zeile:
Um dies zu tun, erstellen Sie sie direkt vor dem Programmaufruf, in derselben Zeile:
<divclass="termy">
<divclass="termy">
```console
```console
// Erstellen Sie eine Umgebungsvariable MY_NAME in der Zeile für diesen Programmauruf
// Erstellen Sie eine Umgebungsvariable MY_NAME in der Zeile für diesen Programmaufruf
$ MY_NAME="Wade Wilson" python main.py
$ MY_NAME="Wade Wilson" python main.py
// Jetzt kann es die Umgebungsvariable lesen
// Jetzt kann es die Umgebungsvariable lesen
@ -165,7 +165,7 @@ Das bedeutet, dass **jeder Wert**, der in Python von einer Umgebungsvariable gel
Sie werden mehr darüber lernen, wie man Umgebungsvariablen zur Handhabung von **Anwendungseinstellungen** verwendet, im [Handbuch für fortgeschrittene Benutzer – Einstellungen und Umgebungsvariablen](./advanced/settings.md){.internal-link target=_blank}.
Sie werden mehr darüber lernen, wie man Umgebungsvariablen zur Handhabung von **Anwendungseinstellungen** verwendet, im [Handbuch für fortgeschrittene Benutzer – Einstellungen und Umgebungsvariablen](./advanced/settings.md){.internal-link target=_blank}.
Es gibt eine **spezielle** Umgebungsvariable namens **`PATH`**, die von den Betriebssystemen (Linux, macOS, Windows) verwendet wird, um Programme zu finden, die ausgeführt werden sollen.
Es gibt eine **spezielle** Umgebungsvariable namens **`PATH`**, die von den Betriebssystemen (Linux, macOS, Windows) verwendet wird, um Programme zu finden, die ausgeführt werden sollen.
@ -209,7 +209,7 @@ Zum Beispiel, wenn Sie `python` im Terminal eingeben, sucht das Betriebssystem n
Wenn es es findet, wird es **benutzt**. Andernfalls sucht es weiter in den **anderen Verzeichnissen**.
Wenn es es findet, wird es **benutzt**. Andernfalls sucht es weiter in den **anderen Verzeichnissen**.
### Installation von Python und Aktualisierung des `PATH` { #installing-python-and-updating-the-path }
### Python installieren und den `PATH` aktualisieren { #installing-python-and-updating-the-path }
Wenn Sie Python installieren, könnten Sie gefragt werden, ob Sie die `PATH`-Umgebungsvariable aktualisieren möchten.
Wenn Sie Python installieren, könnten Sie gefragt werden, ob Sie die `PATH`-Umgebungsvariable aktualisieren möchten.
@ -217,7 +217,7 @@ Wenn Sie Python installieren, könnten Sie gefragt werden, ob Sie die `PATH`-Umg
Angenommen, Sie installieren Python und es landet in einem Verzeichnis `/opt/custompython/bin`.
Angenommen, Sie installieren Python und es landet in einem Verzeichnis `/opt/custompython/bin`.
Wenn Sie erlauben, die `PATH`Umgebungsvariable zu aktualisieren, fügt der Installer `/opt/custompython/bin` zur `PATH`Umgebungsvariable hinzu.
Wenn Sie erlauben, die `PATH`-Umgebungsvariable zu aktualisieren, fügt der Installer `/opt/custompython/bin` zur `PATH`-Umgebungsvariable hinzu.
Das könnte so aussehen:
Das könnte so aussehen:
@ -233,7 +233,7 @@ Auf diese Weise, wenn Sie `python` im Terminal eingeben, findet das System das P
Angenommen, Sie installieren Python und es landet in einem Verzeichnis `C:\opt\custompython\bin`.
Angenommen, Sie installieren Python und es landet in einem Verzeichnis `C:\opt\custompython\bin`.
Wenn Sie erlauben, die `PATH`Umgebungsvariable zu aktualisieren, fügt der Installer `C:\opt\custompython\bin` zur `PATH`Umgebungsvariable hinzu.
Wenn Sie erlauben, die `PATH`-Umgebungsvariable zu aktualisieren, fügt der Installer `C:\opt\custompython\bin` zur `PATH`-Umgebungsvariable hinzu.
@ -128,7 +128,7 @@ FastAPI steht auf den Schultern von Giganten:
## Installation { #installation }
## Installation { #installation }
Erstellen und aktivieren Sie eine <ahref="https://fastapi.tiangolo.com/virtual-environments/"class="external-link"target="_blank">virtuelle Umgebung</a> und installieren Sie dann FastAPI:
Erstellen und aktivieren Sie eine <ahref="https://fastapi.tiangolo.com/de/virtual-environments/"class="external-link"target="_blank">virtuelle Umgebung</a> und installieren Sie dann FastAPI:
Wenn Sie das nicht kennen, schauen Sie sich den Abschnitt _„In Eile?“_ über <ahref="https://fastapi.tiangolo.com/async/#in-eile"target="_blank">`async` und `await` in der Dokumentation</a> an.
Wenn Sie das nicht kennen, schauen Sie sich den Abschnitt _„In Eile?“_ über <ahref="https://fastapi.tiangolo.com/de/async/#in-a-hurry"target="_blank">`async` und `await` in der Dokumentation</a> an.
</details>
</details>
@ -233,7 +233,7 @@ Der Befehl `fastapi dev` liest Ihre `main.py`-Datei, erkennt die **FastAPI**-App
Standardmäßig wird `fastapi dev` mit aktiviertem Auto-Reload für die lokale Entwicklung gestartet.
Standardmäßig wird `fastapi dev` mit aktiviertem Auto-Reload für die lokale Entwicklung gestartet.
Sie können mehr darüber in der <ahref="https://fastapi.tiangolo.com/fastapi-cli/"target="_blank">FastAPI CLI-Dokumentation</a> lesen.
Sie können mehr darüber in der <ahref="https://fastapi.tiangolo.com/de/fastapi-cli/"target="_blank">FastAPI CLI-Dokumentation</a> lesen.
</details>
</details>
@ -251,8 +251,8 @@ Sie haben bereits eine API erstellt, welche:
* HTTP-Anfragen auf den _Pfaden_`/` und `/items/{item_id}` entgegennimmt.
* HTTP-Anfragen auf den _Pfaden_`/` und `/items/{item_id}` entgegennimmt.
* Beide _Pfade_ erhalten `GET`<em>Operationen</em> (auch bekannt als HTTP _Methoden_).
* Beide _Pfade_ erhalten `GET`<em>Operationen</em> (auch bekannt als HTTP _Methoden_).
* Der _Pfad_`/items/{item_id}` hat einen _Pfadparameter_`item_id`, der ein `int` sein sollte.
* Der _Pfad_`/items/{item_id}` hat einen _Pfad-Parameter_`item_id`, der ein `int` sein sollte.
* Der _Pfad_`/items/{item_id}` hat einen optionalen `str`_QueryParameter_`q`.
* Der _Pfad_`/items/{item_id}` hat einen optionalen `str`_Query-Parameter_`q`.
* <abbrtitle="auch bekannt als: Serialisierung, Parsen, Marshalling">Konvertierung</abbr> von Eingabedaten: Aus dem Netzwerk kommend, zu Python-Daten und -Typen. Lesen von:
* <abbrtitle="auch bekannt als: Serialisierung, Parsen, Marshalling">Konvertierung</abbr> von Eingabedaten: Aus dem Netzwerk kommend, zu Python-Daten und -Typen. Lesen von:
* JSON.
* JSON.
* Pfad-Parametern.
* Pfad-Parametern.
* Abfrage-Parametern.
* Query-Parametern.
* Cookies.
* Cookies.
* Header-Feldern.
* Header-Feldern.
* Formularen.
* Formularen.
@ -427,7 +427,7 @@ Versuchen Sie, diese Zeile zu ändern:
Für ein vollständigeres Beispiel, mit weiteren Funktionen, siehe das <ahref="https://fastapi.tiangolo.com/tutorial/">Tutorial – Benutzerhandbuch</a>.
Für ein vollständigeres Beispiel, mit weiteren Funktionen, siehe das <ahref="https://fastapi.tiangolo.com/de/tutorial/">Tutorial – Benutzerhandbuch</a>.
**Spoiler-Alarm**: Das Tutorial – Benutzerhandbuch enthält:
**Spoiler-Alarm**: Das Tutorial – Benutzerhandbuch enthält:
@ -448,7 +448,7 @@ Für ein vollständigeres Beispiel, mit weiteren Funktionen, siehe das <a href="
Unabhängige TechEmpower-Benchmarks zeigen **FastAPI**-Anwendungen, die unter Uvicorn laufen, als <ahref="https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7"class="external-link"target="_blank">eines der schnellsten verfügbaren Python-Frameworks</a>, nur hinter Starlette und Uvicorn selbst (intern von FastAPI verwendet). (*)
Unabhängige TechEmpower-Benchmarks zeigen **FastAPI**-Anwendungen, die unter Uvicorn laufen, als <ahref="https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7"class="external-link"target="_blank">eines der schnellsten verfügbaren Python-Frameworks</a>, nur hinter Starlette und Uvicorn selbst (intern von FastAPI verwendet). (*)
Um mehr darüber zu erfahren, siehe den Abschnitt <ahref="https://fastapi.tiangolo.com/benchmarks/"class="internal-link"target="_blank">Benchmarks</a>.
Um mehr darüber zu erfahren, siehe den Abschnitt <ahref="https://fastapi.tiangolo.com/de/benchmarks/"class="internal-link"target="_blank">Benchmarks</a>.
Sie können Hintergrundtasks (deutsch: Hintergrund-Aufgaben) definieren, die *nach* der Rückgabe einer Response ausgeführt werden sollen.
Sie können <abbrtitle="Hintergrund-Aufgaben">Hintergrundtasks</abbr> definieren, die *nach* der Rückgabe einer Response ausgeführt werden sollen.
Das ist nützlich für Vorgänge, die nach einem Request ausgeführt werden müssen, bei denen der Client jedoch nicht unbedingt auf den Abschluss des Vorgangs warten muss, bevor er die Response erhält.
Das ist nützlich für Vorgänge, die nach einem Request ausgeführt werden müssen, bei denen der Client jedoch nicht unbedingt auf den Abschluss des Vorgangs warten muss, bevor er die Response erhält.
@ -71,7 +71,7 @@ Indem Sie nur `BackgroundTasks` (und nicht `BackgroundTask`) verwenden, ist es d
Es ist immer noch möglich, `BackgroundTask` allein in FastAPI zu verwenden, aber Sie müssen das Objekt in Ihrem Code erstellen und eine Starlette-`Response` zurückgeben, die es enthält.
Es ist immer noch möglich, `BackgroundTask` allein in FastAPI zu verwenden, aber Sie müssen das Objekt in Ihrem Code erstellen und eine Starlette-`Response` zurückgeben, die es enthält.
Weitere Details finden Sie in der <ahref="https://www.starlette.io/background/"class="external-link"target="_blank">offiziellen Starlette-Dokumentation für Hintergrundtasks</a>.
Weitere Details finden Sie in <ahref="https://www.starlette.io/background/"class="external-link"target="_blank">Starlettes offizieller Dokumentation für Hintergrundtasks</a>.
## Vorbehalt { #caveat }
## Vorbehalt { #caveat }
@ -79,7 +79,7 @@ Wenn Sie umfangreiche Hintergrundberechnungen durchführen müssen und diese nic
Sie erfordern in der Regel komplexere Konfigurationen und einen Nachrichten-/Job-Queue-Manager wie RabbitMQ oder Redis, ermöglichen Ihnen jedoch die Ausführung von Hintergrundtasks in mehreren Prozessen und insbesondere auf mehreren Servern.
Sie erfordern in der Regel komplexere Konfigurationen und einen Nachrichten-/Job-Queue-Manager wie RabbitMQ oder Redis, ermöglichen Ihnen jedoch die Ausführung von Hintergrundtasks in mehreren Prozessen und insbesondere auf mehreren Servern.
Wenn Sie jedoch über dieselbe **FastAPI**-Anwendung auf Variablen und Objekte zugreifen oder kleine Hintergrundtasks ausführen müssen (z. B. das Senden einer E-Mail-Benachrichtigung), können Sie einfach `BackgroundTasks` verwenden.
Wenn Sie jedoch über dieselbe **FastAPI**-App auf Variablen und Objekte zugreifen oder kleine Hintergrundtasks ausführen müssen (z. B. das Senden einer E-Mail-Benachrichtigung), können Sie einfach `BackgroundTasks` verwenden.
Wenn Sie Daten von einem <abbrtitle="Client: Eine Software, die sich mit einem Server verbindet.">Client</abbr> (sagen wir, einem Browser) zu Ihrer API senden müssen, senden Sie sie als **Requestbody** (deutsch: Anfragekörper).
Wenn Sie Daten von einem <abbrtitle="Client: Eine Software, die sich mit einem Server verbindet.">Client</abbr> (sagen wir, einem Browser) zu Ihrer API senden müssen, senden Sie sie als <abbrtitle="Anfragekörper">**Requestbody**</abbr>.
Ein **Request**body sind Daten, die vom Client zu Ihrer API gesendet werden. Ein **Response**body (deutsch: Antwortkörper) sind Daten, die Ihre API zum Client sendet.
Ein **Request**body sind Daten, die vom Client zu Ihrer API gesendet werden. Ein <abbrtitle="Antwortkörper">**Response**body</abbr> sind Daten, die Ihre API zum Client sendet.
Ihre API muss fast immer einen **Response**body senden. Aber Clients müssen nicht unbedingt immer **Requestbodys** senden, manchmal fordern sie nur einen Pfad an, vielleicht mit einigen Query-Parametern, aber senden keinen Body.
Ihre API muss fast immer einen **Response**body senden. Aber Clients müssen nicht unbedingt immer **Requestbodys** senden, manchmal fordern sie nur einen Pfad an, vielleicht mit einigen Query-Parametern, aber senden keinen Body.
# CORS (Cross-Origin Resource Sharing) { #cors-cross-origin-resource-sharing }
# CORS (Cross-Origin Resource Sharing) { #cors-cross-origin-resource-sharing }
<ahref="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS"class="external-link"target="_blank">CORS oder „Cross-Origin Resource Sharing“</a> (deutsch: Ursprungsübergreifende Ressourcenfreigabe) bezieht sich auf Situationen, in denen ein Frontend, das in einem Browser läuft, JavaScript-Code enthält, der mit einem Backend kommuniziert, und das Backend sich in einem anderen „Origin“ als das Frontend befindet.
<ahref="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS"class="external-link"target="_blank">CORS oder „<abbrtitle="Ursprungsübergreifende Ressourcenfreigabe">Cross-Origin Resource Sharing</abbr>“</a> bezieht sich auf Situationen, in denen ein Frontend, das in einem Browser läuft, JavaScript-Code enthält, der mit einem Backend kommuniziert, und das Backend sich in einem anderen „Origin“ als das Frontend befindet.
## Origin { #origin }
## Origin { #origin }
Ein Origin (deutsch: Ursprung) ist die Kombination aus Protokoll (`http`, `https`), Domain (`myapp.com`, `localhost`, `localhost.tiangolo.com`) und Port (`80`, `443`, `8080`).
Ein <abbrtitle="Ursprung">Origin</abbr> ist die Kombination aus Protokoll (`http`, `https`), Domain (`myapp.com`, `localhost`, `localhost.tiangolo.com`) und Port (`80`, `443`, `8080`).
Alle folgenden sind also unterschiedliche Origins:
Alle folgenden sind also unterschiedliche Origins:
## Validierung von Zahlen: Floats, größer und kleiner { #number-validations-floats-greater-than-and-less-than }
## Validierung von Zahlen: Floats, größer und kleiner { #number-validations-floats-greater-than-and-less-than }
Zahlenvalidierung funktioniert auch für `float`-Werte (deutsch: Fließkommazahlen).
Zahlenvalidierung funktioniert auch für <abbrtitle="Fließkommazahlen">`float`</abbr>-Werte.
Hier wird es wichtig, in der Lage zu sein, <abbrtitle="greater than"><code>gt</code></abbr> und nicht nur <abbrtitle="greater than or equal"><code>ge</code></abbr> zu deklarieren. Da Sie mit dieser Option erzwingen können, dass ein Wert größer als `0` sein muss, selbst wenn er kleiner als `1` ist.
Hier wird es wichtig, in der Lage zu sein, <abbrtitle="greater than"><code>gt</code></abbr> und nicht nur <abbrtitle="greater than or equal"><code>ge</code></abbr> zu deklarieren. Da Sie mit dieser Option erzwingen können, dass ein Wert größer als `0` sein muss, selbst wenn er kleiner als `1` ist.
@ -136,10 +136,10 @@ Mit `Query`, `Path` (und anderen, die Sie noch nicht gesehen haben) können Sie
Und Sie können auch Zahlenvalidierungen deklarieren:
Und Sie können auch Zahlenvalidierungen deklarieren:
* `gt`: `g`reater `t`han (deutsch: größer als)
* `gt`: `g`reater `t`han (größer als)
* `ge`: `g`reater than or `e`qual (deutsch: größer oder gleich)
* `ge`: `g`reater than or `e`qual (größer oder gleich)
* `lt`: `l`ess `t`han (deutsch: kleiner als)
* `lt`: `l`ess `t`han (kleiner als)
* `le`: `l`ess than or `e`qual (deutsch: kleiner oder gleich)
* `le`: `l`ess than or `e`qual (kleiner oder gleich)
Die Query (deutsch: Abfrage) ist die Menge von Schlüssel-Wert-Paaren, die nach dem `?` in einer URL folgen und durch `&`-Zeichen getrennt sind.
Die <abbrtitle="Abfrage">Query</abbr> ist die Menge von Schlüssel-Wert-Paaren, die nach dem `?` in einer URL folgen und durch `&`-Zeichen getrennt sind.
@ -59,7 +59,7 @@ Definieren Sie einen Datei-Parameter mit dem Typ `UploadFile`:
`UploadFile` zu verwenden, hat mehrere Vorzüge gegenüber `bytes`:
`UploadFile` zu verwenden, hat mehrere Vorzüge gegenüber `bytes`:
* Sie müssen `File()` nicht als Parameter-Defaultwert verwenden.
* Sie müssen `File()` nicht als Parameter-Defaultwert verwenden.
* Es wird eine „gespoolte“ Datei (deutsch: warteschlangenartig) verwendet:
* Es wird eine „<abbrtitle="warteschlangenartig">gespoolte</abbr>“ Datei verwendet:
* Eine Datei, die bis zu einem bestimmten Größen-Limit im Arbeitsspeicher behalten wird, und wenn das Limit überschritten wird, auf der Festplatte gespeichert wird.
* Eine Datei, die bis zu einem bestimmten Größen-Limit im Arbeitsspeicher behalten wird, und wenn das Limit überschritten wird, auf der Festplatte gespeichert wird.
* Das bedeutet, es wird für große Dateien wie Bilder, Videos, große Binärdateien, usw. gut funktionieren, ohne den ganzen Arbeitsspeicher aufzubrauchen.
* Das bedeutet, es wird für große Dateien wie Bilder, Videos, große Binärdateien, usw. gut funktionieren, ohne den ganzen Arbeitsspeicher aufzubrauchen.
* Sie können Metadaten aus der hochgeladenen Datei auslesen.
* Sie können Metadaten aus der hochgeladenen Datei auslesen.
@ -52,7 +52,7 @@ HTML-Formulare (`<form></form>`) senden die Daten in einer „speziellen“ Kodi
/// note | Technische Details
/// note | Technische Details
Daten aus Formularen werden normalerweise mit dem „media type“ (deutsch: Medientyp)`application/x-www-form-urlencoded` kodiert.
Daten aus Formularen werden normalerweise mit dem „<abbrtitle="Medientyp">media type</abbr>“`application/x-www-form-urlencoded` kodiert.
Wenn das Formular stattdessen Dateien enthält, werden diese mit `multipart/form-data` kodiert. Im nächsten Kapitel erfahren Sie mehr über die Handhabung von Dateien.
Wenn das Formular stattdessen Dateien enthält, werden diese mit `multipart/form-data` kodiert. Im nächsten Kapitel erfahren Sie mehr über die Handhabung von Dateien.
@ -91,7 +91,7 @@ Dann fügen wir eine Funktion hinzu, die `SQLModel.metadata.create_all(engine)`
### Eine Session-Abhängigkeit erstellen
### Eine Session-Abhängigkeit erstellen
Eine **`Session`** (deutsch: Sitzung) speichert die **Objekte im Speicher** und verfolgt alle Änderungen, die an den Daten vorgenommen werden müssen, dann **verwendet sie die `engine`**, um mit der Datenbank zu kommunizieren.
Eine <abbrtitle="Sitzung">**`Session`**</abbr> speichert die **Objekte im Speicher** und verfolgt alle Änderungen, die an den Daten vorgenommen werden müssen, dann **verwendet sie die `engine`**, um mit der Datenbank zu kommunizieren.
Wir werden eine FastAPI **Abhängigkeit** mit `yield` erstellen, die eine neue `Session` für jede Anfrage bereitstellt. Das ist es, was sicherstellt, dass wir eine einzige Session pro Anfrage verwenden. 🤓
Wir werden eine FastAPI **Abhängigkeit** mit `yield` erstellen, die eine neue `Session` für jede Anfrage bereitstellt. Das ist es, was sicherstellt, dass wir eine einzige Session pro Anfrage verwenden. 🤓
Wenn Sie an Python-Projekten arbeiten, sollten Sie wahrscheinlich eine **virtuelle Umgebung** (oder einen ähnlichen Mechanismus) verwenden, um die Packages (deutsch: Pakete), die Sie für jedes Projekt installieren, zu isolieren.
Wenn Sie an Python-Projekten arbeiten, sollten Sie wahrscheinlich eine **virtuelle Umgebung** (oder einen ähnlichen Mechanismus) verwenden, um die <abbrtitle="Python Installationspakete">Packages</abbr>, die Sie für jedes Projekt installieren, zu isolieren.
/// info | Info
/// info | Info
@ -37,15 +37,15 @@ Und darin erstelle ich ein Verzeichnis pro Projekt.
<divclass="termy">
<divclass="termy">
```console
```console
// Zum Home-Verzeichnis wechseln
// Gehe zum Home-Verzeichnis
$ cd
$ cd
// Ein Verzeichnis für alle Ihre Codeprojekte erstellen
// Erstelle ein Verzeichnis für alle Ihre Code-Projekte
$ mkdir code
$ mkdir code
// In dieses Codeverzeichnis gehen
// Gehe in dieses Code-Verzeichnis
$ cd code
$ cd code
// Ein Verzeichnis für dieses Projekt erstellen
// Erstelle ein Verzeichnis für dieses Projekt
$ mkdir awesome-project
$ mkdir awesome-project
// In dieses Projektverzeichnis gehen
// Gehe in dieses Projektverzeichnis
$ cd awesome-project
$ cd awesome-project
```
```
@ -53,7 +53,7 @@ $ cd awesome-project
## Eine virtuelle Umgebung erstellen { #create-a-virtual-environment }
## Eine virtuelle Umgebung erstellen { #create-a-virtual-environment }
Wenn Sie zum **ersten Mal** an einem Python-Projekt arbeiten, erstellen Sie eine virtuelle Umgebung **<abbrtitle="Es gibt andere Optionen, dies ist eine einfache Richtlinie">innerhalb Ihres Projekts</abbr>**.
Wenn Sie zum **ersten Mal** an einem Python-Projekt arbeiten, erstellen Sie eine virtuelle Umgebung **<abbrtitle="es gibt andere Optionen, dies ist eine einfache Richtlinie">innerhalb Ihres Projekts</abbr>**.
Jedes Mal, wenn Sie ein **neues Paket** in dieser Umgebung installieren, aktivieren Sie die Umgebung erneut.
Jedes Mal, wenn Sie ein **neues Paket** in dieser Umgebung installieren, aktivieren Sie die Umgebung erneut.
So stellen Sie sicher, dass, wenn Sie ein **Terminalprogramm (<abbr title="Command Line Interface">CLI</abbr>)** verwenden, das durch dieses Paket installiert wurde, Sie das aus Ihrer virtuellen Umgebung verwenden und nicht eines, das global installiert ist, wahrscheinlich mit einer anderen Version als der, die Sie benötigen.
So stellen Sie sicher, dass, wenn Sie ein **Terminalprogramm (<abbr title="command line interface – Kommandozeileninterface">CLI</abbr>)** verwenden, das durch dieses Paket installiert wurde, Sie das aus Ihrer virtuellen Umgebung verwenden und nicht eines, das global installiert ist, wahrscheinlich mit einer anderen Version als der, die Sie benötigen.
@ -750,7 +750,7 @@ Sie verwenden `which` auf Linux und macOS und `Get-Command` in Windows PowerShel
So funktioniert dieser Befehl: Er wird in der `PATH`-Umgebungsvariable nachsehen und **jeden Pfad in der Reihenfolge durchgehen**, um das Programm namens `python` zu finden. Sobald er es findet, wird er Ihnen **den Pfad** zu diesem Programm anzeigen.
So funktioniert dieser Befehl: Er wird in der `PATH`-Umgebungsvariable nachsehen und **jeden Pfad in der Reihenfolge durchgehen**, um das Programm namens `python` zu finden. Sobald er es findet, wird er Ihnen **den Pfad** zu diesem Programm anzeigen.
Der wichtigste Punkt ist, dass, wenn Sie `python` aufrufen, genau dieses "`python`" ausgeführt wird.
Der wichtigste Punkt ist, dass, wenn Sie `python` aufrufen, genau dieses „`python`“ ausgeführt wird.
So können Sie überprüfen, ob Sie sich in der richtigen virtuellen Umgebung befinden.
So können Sie überprüfen, ob Sie sich in der richtigen virtuellen Umgebung befinden.
Wenn Sie jedoch die virtuelle Umgebung deaktivieren und die neue für `prisoner-of-azkaban` aktivieren, wird beim Ausführen von `python` das Python aus der virtuellen Umgebung in `prisoner-of-azkaban` verwendet.
Wenn Sie jedoch die virtuelle Umgebung deaktivieren und die neue für `prisoner-of-askaban` aktivieren, wird beim Ausführen von `python` das Python aus der virtuellen Umgebung in `prisoner-of-azkaban` verwendet.
Use the formal grammar (use "Sie" instead of "Du").
2) Use the formal grammar (use "Sie" instead of "Du").
Translate quotation marks ("") in the English text with typographic quotation marks („“) in the German translation.
3) Translate quotation marks ("") in the English source with typographic quotation marks („“) in the German translation.
Example:
Example:
@ -17,38 +18,145 @@ Result (German):
„Wort“
„Wort“
But don't do that when the quotation marks are themselves surrounded by backticks (`).
But do not do that when the quotation marks are surrounded by backticks (`), speak, when they are inside a code snippet, see earlier defined rule.
Example:
Three Examples:
Source (English):
Source (English) – These are three code snippets:
`"word"`
`"word"`
`"me"`
`"items"`
Result (German) – You don't translate the word, and you don't change the quotation marks:
Result (German) – You change nothing:
`"word"`
`"word"`
`"me"`
`"items"`
Do not randomly add normal or typographic quotation marks into the German translation.
Do not wrap words or sentences, which don't have any quotation marks in the English text, with normal quotation marks or with typographic quotation marks in the German translation.
4) Translate HTML abbr elements as follows:
In sentences, keep translations in brackets. DO NOT REMOVE THEM. Translations in brackets start with the exact text `(deutsch: `, speak, an opening bracket (`(`), followed by the text `deutsch`, followed by a colon (`:`), followed by a space (` `). And they end with a closing bracket (`)`) For example, keep `(deutsch: Anfragekörper)`, keep `(deutsch: Arbeiter)`, keep `(deutsch: Bereitstellen der Anwendung)`. Keep them even if they are not in the English text. Keep them, even if you think they are bad translations. The only exception to this rule is when you remove the whole sentence from the translation, because the whole sentence was removed in the English text. In that case also remove that translation in brackets. The reasoning for this rule is that these are one-time translations for English words which the human editor has added to the translation, in order to explain that word to the human readers of the translation. So these additions should be kept, even though they are not part of the English text.
4.1) If the title attribute gives the full phrase for an abbrevation, then keep the phrase, append a long dash (`–`), followed by the translation of the phrase.
Examples:
Source (English):
In `abbr` HTML-elements, translate the content of the `title` attribute.
<abbrtitle="Internet of Things – Internet der Dinge">IoT</abbr>
<abbrtitle="Central Processing Unit – Zentrale Verarbeitungseinheit">CPU</abbr>
<abbrtitle="too long; didn't read – zu lang; hab's nicht gelesen"><strong>TL;DR:</strong></abbr>
Conversion scheme title attribute:
Source (English):
{full phrase}
Result (German):
{full phrase} – {translation of full phrase}
If the phrase can not be translated or it is the same in the translation, then keep the title attribute as is.
Examples:
Source (English):
<abbrtitle="JSON Web Tokens">JWT</abbr>
<abbrtitle="Enumeration">`Enum`</abbr>
Result (German):
<abbrtitle="JSON Web Tokens">JWT</abbr>
<abbrtitle="Enumeration">`Enum`</abbr>
Conversion scheme title attribute:
Source (English):
{full phrase}
Result (German):
{full phrase}
4.2) If the title attribute explains something in its own words, then translate it, if possible.
Examples:
Source (English):
<abbrtitle="also known as: endpoints, routes">path</abbr>
<abbrtitle="A program that checks for code errors">linter</abbr>
<abbrtitle="converting the string that comes from an HTTP request into Python data">"parsing"</abbr>
<abbrtitle="before 2023-03">0.95.0</abbr>
<abbrtitle="2023-08-26">at the time of writing this</abbr>
Result (German):
<abbrtitle="auch bekannt als: Endpunkte, Routen">Pfad</abbr>
<abbrtitle="Programm das auf Fehler im Code prüft">Linter</abbr>
<abbrtitle="Konvertieren des Strings eines HTTP-Requests in Python-Daten">„Parsing“</abbr>
<abbrtitle="vor 2023-03">0.95.0</abbr>
<abbrtitle="2023-08-26">zum Zeitpunkt als das hier geschrieben wurde</abbr>
Conversion scheme title attribute:
Source (English):
{explanation}
Result (German):
{translation of explanation}
4.3) If the title attribute gives the full phrase for an abbrevation, followed by a colon (`:`) or a comma (`,`), followed by an explanation, then keep the phrase, append a long dash (`–`), followed by the translation of the phrase, followed by a colon (`:`), followed by the translation of the explanation.
Examples:
Source (English):
<abbrtitle="Input/Output: disk reading or writing, network communication.">I/O</abbr>
<abbrtitle="Content Delivery Network: Service, that provides static files.">CDN</abbr>
<abbrtitle="Integrated Development Environment, similar to a code editor">IDE</abbr>
<abbrtitle="Object Relational Mapper, a fancy term for a library where some classes represent SQL tables and instances represent rows in those tables">"ORMs"</abbr>
Result (German):
<abbrtitle="Input/Output – Eingabe/Ausgabe: Lesen oder Schreiben auf der Festplatte, Netzwerkkommunikation.">I/O</abbr>
<abbrtitle="Integrated Development Environment – Integrierte Entwicklungsumgebung: Ähnlich einem Code-Editor">IDE</abbr>
<abbrtitle="Object Relational Mapper – Objektrelationaler Mapper: Ein Fachbegriff für eine Bibliothek, in der einige Klassen SQL-Tabellen und Instanzen Zeilen in diesen Tabellen darstellen">„ORMs“</abbr>
Conversion scheme title attribute:
Source (English):
{full phrase}: {explanation}
OR
Source (English):
Source (English):
<abbrtitle="obsolete, recommended not to use it">deprecated</abbr>
{full phrase}, {explanation}
Result (German):
Result (German):
<abbrtitle="veraltet, von der Verwendung wird abgeraten">deprecated</abbr>
{full phrase} – {translation of full phrase}: {translation of explanation}
4.4) If there is an HTML abbr element in a sentence in an existing translation, but that element does not exist in the related sentence in the English text, then keep that HTML abbr element in the translation, do not change or remove it. Except when you remove the whole sentence from the translation, because the whole sentence was removed from the English text. The reasoning for this rule is, that such abbr elements are manually added by the human editor of the translation, in order to translate or explain an English word to the human readers of the translation. They would not make sense in the English text but they do make sense in the translation. So keep them in the translation, even though they are not part of the English text. This rule only applies to HTML abbr elements.
Translate headings using the infinite form.
5) Translate headings using the infinite form.
Examples:
Examples:
@ -89,14 +197,14 @@ Do NOT translate with (German):
### Führen Sie Ihr Programm aus { #run-your-program }
### Führen Sie Ihr Programm aus { #run-your-program }
Follow these German instructions:
6) Follow these German instructions:
In der Regel versuche ich so weit wie möglich Worte zusammenzuschreiben, also ohne Bindestrich, es sei denn, es ist Konkretesding-Klassevondingen, etwa `Pydantic-Modell` (aber: `Datenbankmodell`), `Python-Modul` (aber: `Standardmodul`). Ich setze auch einen Bindestrich, wenn er die gleichen Buchstaben verbindet, etwa `Enum-Member`, `Cloud-Dienst`, `Template-Engine`. Oder wenn das Wort sonst einfach zu lang wird, etwa, `Performance-Optimierung`. Oder um etwas visuell besser zu dokumentieren, etwa `Pfadoperation-Dekorator`, `Pfadoperation-Funktion`.
In der Regel versuche ich so weit wie möglich Worte zusammenzuschreiben, also ohne Bindestrich, es sei denn, es ist Konkretesding-Klassevondingen, etwa `Pydantic-Modell` (aber: `Datenbankmodell`), `Python-Modul` (aber: `Standardmodul`). Ich setze auch einen Bindestrich, wenn er die gleichen Buchstaben verbindet, etwa `Enum-Member`, `Cloud-Dienst`, `Template-Engine`. Oder wenn das Wort sonst einfach zu lang wird, etwa, `Performance-Optimierung`. Oder um etwas visuell besser zu dokumentieren, etwa `Pfadoperation-Dekorator`, `Pfadoperation-Funktion`.
Ich versuche nicht, alles einzudeutschen. Das bezieht sich besonders auf Begriffe aus dem Bereich der Programmierung. Ich wandele zwar korrekt in Großschreibung um und setze Bindestriche, wo notwendig, aber ansonsten lasse ich solch ein Wort unverändert. Beispielsweise wird aus dem englischen Wort `string` in der deutschen Übersetzung `String`, aber nicht `Zeichenkette`. Oder aus dem englischen Wort `request body` wird in der deutschen Übersetzung `Requestbody`, aber nicht `Anfragekörper`. Oder aus dem englischen `response` wird im Deutschen `Response`, aber nicht `Antwort`.
Ich versuche nicht, alles einzudeutschen. Das bezieht sich besonders auf Begriffe aus dem Bereich der Programmierung. Ich wandele zwar korrekt in Großschreibung um und setze Bindestriche, wo notwendig, aber ansonsten lasse ich solch ein Wort unverändert. Beispielsweise wird aus dem englischen Wort `string` in der deutschen Übersetzung `String`, aber nicht `Zeichenkette`. Oder aus dem englischen Wort `request body` wird in der deutschen Übersetzung `Requestbody`, aber nicht `Anfragekörper`. Oder aus dem englischen `response` wird im Deutschen `Response`, aber nicht `Antwort`.
Below is a list of English terms and their German translations, separated by a colon (`:`). Use these translations, do not use your own. Words inside brackets are explanations for you, they are not part of the term or the translation. If a list item starts with `NOT`, then that means: do NOT use this translation. Nouns, starting with the word `the`, have their German genus – `der`, `die`, `das` – included, to help you to grammatically decline them in the translation, and they are given in singular case unless they have `(plural case)` attached, which means they are given in plural case. Verbs are given in the full infinitive – starting with the word `to`.
7) Below is a list of English terms and their German translations, separated by a colon (`:`). Use these translations, do not use your own. Words inside brackets are explanations for you, they are not part of the term or the translation. If a list item starts with `NOT`, then that means: do NOT use this translation. Nouns, starting with the word `the`, have their German genus – `der`, `die`, `das` – included, to help you to grammatically decline them in the translation, and they are given in singular case unless they have `(plural case)` attached, which means they are given in plural case. Verbs are given in the full infinitive – starting with the word `to`.
* /// check: /// check | Testen
* /// check: /// check | Testen
* /// danger: /// danger | Gefahr
* /// danger: /// danger | Gefahr
@ -184,4 +292,4 @@ Below is a list of English terms and their German translations, separated by a c
* X is case-insensitive: Groß-/Kleinschreibung ist nicht relevant in X
* X is case-insensitive: Groß-/Kleinschreibung ist nicht relevant in X
Preserve indentation. Keep emoticons. Encode in utf-8. Use Linux line breaks (LF)
8) Preserve indentation. Keep emoticons. Encode in utf-8. Use Linux line breaks (LF)
Forcodesnippetsorfragments,surroundedbybackticks(`),don't translate the content, keep the original in English. For example, `list`, `dict`, keep them as is.
Forcodesnippetsorfragments,surroundedbybackticks(`),don't translate the content, keep the original in English. For example, `list`, `dict`, keep them as is.
Thecontentiswritteninmarkdown,writethetranslationinmarkdownaswell.Don't add triple backticks (`) around the generated translation content. Speak, do not add "```markdown" at the very start of the translation and do not add "```" at the very end of the translation.
Whenthere's an example of code, the console or a terminal, normally surrounded by triple backticks and a keyword like "console" or "bash" (e.g. ```console), do not translate the content, keep the original in English.
Donotconvertoccurrencesoffourslashesinarowatthestartofaline(`////`)toalevelfourMarkdownheading(`####`). The four slashes are a special syntax, which, for example, declares some text to be part of a tab in the final rendered document.