Add German Translations (#662)

* Add german translation for some pages

* Update search index script

* Update the index.de.md to the latest changes

Co-authored-by: Mattes Mohr <mail@mattesmohr.de>
This commit is contained in:
Tim Condon 2022-05-11 18:21:35 +01:00 committed by GitHub
parent d93aaf5562
commit b5dde9dcae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 768 additions and 1 deletions

65
docs/controllers.de.md Normal file
View File

@ -0,0 +1,65 @@
# Controllers
Mit Controllers kannst du deinen Code strukturieren und in deinem Projekt für Ordnung sorgen. Ein Controller kann ein oder mehrere Methoden besitzen, die dazu da sind die Anfrage entgegenzunehmen und ein enstprechendes Ergebnis zurückzuliefern.
## Beispiel
Das folgende Beispiel zeigt einen möglichen Aufbau eines Controllers:
```swift
/// [TodoController.swift]
import Vapor
struct TodosController: RouteCollection {
/// [1]
func index(req: Request) async throws -> String {
// ...
}
/// [2]
func create(req: Request) throws -> EventLoopFuture<String> {
// ...
}
func show(req: Request) throws -> String {
guard let id = req.parameters.get("id") else {
throw Abort(.internalServerError)
}
// ...
}
func update(req: Request) throws -> String {
// ...
}
func delete(req: Request) throws -> String {
// ...
}
func boot(routes: RoutesBuilder) throws {
let todos = routes.grouped("todos")
todos.get(use: index)
todos.post(use: create)
todos.group(":id") { todo in
todo.get(use: show)
todo.put(use: update)
todo.delete(use: delete)
}
}
}
```
Die Methoden sollten immer ein Object vom Typ _Request_ annehmen und ein Wert von Typ _ResponseEncodable_ zurückgegeben. Dabei kann die Methode sowohl asynchron (siehe im Beispiel Punkt [1]), als auch synchron (siehe im Beispiel, Punkt [2]) ausgeführt werden.
### Register
Zum Schluss muss der Anwendung noch der Controller in der Datei _routes.swift_ bekannt gemacht werden.
```swift
/// [routes.swift]
try app.register(collection: TodosController())
```

131
docs/environment.de.md Normal file
View File

@ -0,0 +1,131 @@
# Umgebung
In Vapor gibt es mehrere Umgebungen mit denen du Einstellungen individuell vordefinieren kannst. Mit dem Wechsel der Umgebung ändert sich dann das Verhalten deiner Anwendung. Du kannst aber auch Werte direkt aus dem aktuellen Prozess abrufen oder aus einer .env-Datei laden.
| Umgebung | Kurzform | Beschreibung |
|-----------------------|------------|---------------------------------------------|
| production | prod | Umgebung bei Veröffentlichung. |
| development (default) | dev | Umgebung für Entwicklung. |
| testing | test | Umgebung zum Testen. |
| Vapor nutzt standardmäßig die Umgebung _Development_. |
## Eigenschaft
Du kannst über die Eigenschaft _Environment_ auf die laufenden Umgebung zugreifen oder zwischen den Umgebungen wechseln.
```swift
/// [configure.swift]
switch app.environment {
case .production:
app.databases.use(....)
default:
app.databases.use(...)
}
```
## Wechsel
```swift
vapor run serve --env production
```
## Umgebungsvariable
### Prozess
#### - Abrufen
Die Klasse _Environment_ bietet die Methode *get(_: String)* an um einen Wert abzurufen.
```swift
let foo = Environment.get("FOO")
print(foo) // String?
```
Zusätzlich kannst du den Wert aber auch dynamisch über die Eigenschaft _process_ abrufen.
```swift
let foo = Environment.process.FOO
print(foo) // String?
```
#### - Definieren
In Xcode kannst du die eine Prozessvariable über das Schema _Run_ festlegen. Im Terminal benutze den Befehl _export_.
```sh
export FOO=BAR
vapor run serve
```
### .env (dotenv)
Eine .env-Datei beinhaltet Schlüssel-Wert-Paare, welche entsprechend der Umgebung geladen werden. Auf dieser Art müssen die Umgebungsvariablen nicht manuell angelegt werden. Vapor lädt die Datei aus dem Arbeitsverzeichnis.
```sh
# Key=Value
FOO=BAR
```
When your application boots, you will be able to access the contents of this file like other process environment variables.
```swift
let foo = Environment.get("FOO")
print(foo) // String?
```
!!! info
Variables specified in `.env` files will not overwrite variables that already exist in the process environment.
Alongside `.env`, Vapor will also attempt to load a dotenv file for the current environment. For example, when in the `development` environment, Vapor will load `.env.development`. Any values in the specific environment file will take precedence over the general `.env` file.
A typical pattern is for projects to include a `.env` file as a template with default values. Specific environment files are ignored with the following pattern in `.gitignore`:
```gitignore
.env.*
```
When the project is cloned to a new computer, the template `.env` file can be copied and have the correct values inserted.
```sh
cp .env .env.development
vim .env.development
```
!!! warning
Dotenv files with sensitive information such as passwords should not be committed to version control.
If you're having difficulty getting dotenv files to load, try enabling debug logging with `--log debug` for more information.
## Custom Environments
To define a custom environment name, extend `Environment`.
```swift
extension Environment {
static var staging: Environment {
.custom(name: "staging")
}
}
```
The application's environment is usually set in `main.swift` using `Environment.detect()`.
```swift
import Vapor
var env = try Environment.detect()
try LoggingSystem.bootstrap(from: &env)
let app = Application(env)
defer { app.shutdown() }
```
The `detect` method uses the process's command line arguments and parses the `--env` flag automatically. You can override this behavior by initializing a custom `Environment` struct.
```swift
let env = Environment(name: "testing", arguments: ["vapor"])
```
The arguments array must contain at least one argument which represents the executable name. Further arguments can be supplied to simulate passing arguments via the command line. This is especially useful for testing.

View File

@ -0,0 +1,80 @@
# Ordnerstruktur
Lass uns einen Blick auf die Ordnerstruktur von Vapor werfen. Die Ordnerstruktur von Vapor orientiert sich an den Vorgaben des [Swift Package Managers](spm.md). Falls du schon mal mit dem SPM gearbeitet hast, sollte sie dir bekannt vorkommen.
```
.
├── Public
├── Sources
│ ├── App
│ │ ├── Controllers
│ │ ├── Migrations
│ │ ├── Models
│ │ ├── configure.swift
│ │ └── routes.swift
│ └── Run
│ └── main.swift
├── Tests
│ └── AppTests
└── Package.swift
```
## Public
Der Ordner _Public_ beinhaltet Dateien, die sozusagen mitveröffentlicht werden. Das können Dateien für die Seitendarstellung sein, wie z. B. Bilder, CSS/JS-Dateien sein. Damit Vapor während der Ausführung auf den Ordner zugreifen kann muss eine _FileMiddleware_ in der Datei `configure.swift` mitangegeben werden.
```swift
// Serves files from `Public/` directory
let fileMiddleware = FileMiddleware(
publicDirectory: app.directory.publicDirectory
)
app.middleware.use(fileMiddleware)
```
## Sources
Im Ordner _Sources_ befinden sich die eigentlichen Anwendungsdateien, unterteilt in die Unterordner _App_ und _Run_. Die beiden Unterordnern stellen Paketmodule dar. Mehr dazu findest du im Abschnitt [Swift Package Manager](spm.md).
### App
Der Ordner _App_ beinhaltet die Anwendungslogik.
#### Controllers
Der Ordner _Controllers_ beinhaltet die Definitionen der Endpunkte der Anwendung. Mehr dazu findest du im Abschnitt [Controllers](controllers.md).
#### Migrations
Der Ordner _Migrations_ beinhaltet die Definitionen zu Tabellen der Datebank.
#### Models
Der Ordner _Models_ beinhaltet die Klassendefinitionen für die Entitäten.
#### configure.swift
Die Datei _configure.swift_ umfasst die Methode `configure(_:)`. Sie wird in der Datei `main.swift` aufgerufen um die Anwendung mit entsprechenden Angaben zu Endpunkten, zur Datenbank oder zu Providern zu konfigurieren.
#### routes.swift
Die Datei _routes.swift_ beinhaltet die Methode `routes(_:)`. Sie wird am Ende von der `configure(_:)`-Methode aufgerufen um die Endpunkte zu registrieren.
### Run
Der Ordner _Run_ stellt die Ausführungsdatei dar.
#### main.swift
Die Datei _main.swift_ erstellt eine Instanz der Anwendung und führt diese aus.
## Tests
Für jedes Paketmodul kann ein entsprechender Ordner unter _Tests_ angelegt werden.
### AppTests
Der Ornder _AppTests_ beinhaltet alle möglichen Tests für Komponenten der Anwendung.
## Package.swift
Die Datei _Package.swift_ ist die Paketbeschreibung.

58
docs/hello-world.de.md Normal file
View File

@ -0,0 +1,58 @@
# Hallo Welt!
In diesem Abschnitt erklären wir dir Schritt für Schritt, wie du ein Vapor-Projekt erstellst und ausführst. Sollte dir _Swift_ oder die _Vapor Toolbox_ noch fehlen, werfe zuerst einen Blick in die beiden Abschnitte [Installation &rarr; macOS](install/macos.md) und [Installation &rarr; Linux](install/linux.md).
## Projekt erstellen
Starte die Terminal-App auf deinem Mac und führe den Toolbox-Befehl aus. Der Befehl erstellt einen Projektordner mitsamt den Dateien.
```sh
vapor new hello -n
```
Sobald der Befehl durchgelaufen ist, wechsele in den neuen Ordner mit dem Befehl
```sh
cd hello
```
## Projekt ausführen
Je nach System oder Entwicklungsumgebung muss das Projekt unterschiedlich ausgeführt werden:
### - mit Xcode
Öffne das Projekt mit dem Befehl
```sh
open Package.swift
```
Xcode öffnet sich und lädt zu Beginn alle notwendigen Paketverweise. Nach dem Laden sollte dir Xcode zur Verfügung stehen. Wähle anschließend in der Mitte eine Schema (oft einfach nur "My Mac") aus. Starte nun das Projekt über die Menüpunkte _Product_ > _Run_. Du solltest nun in der Konsole einen Eintrag wie diesen sehen:
```sh
[ INFO ] Server starting on http://127.0.0.1:8080
```
### - mit Linux
Für Linux-Distributionen (oder falls du einfach kein Xcode verwendest) kannst du den Editor deiner Wahl nutzen, wie z.B. Vim oder VSCode. Mehr Informationen dazu, findest du im Abschnitt [Swift Server Guides](https://github.com/swift-server/guides/blob/main/docs/setup-and-ide-alternatives.md).
Starte das Projekt mit dem Befehl
```sh
swift run
```
Bei der Erstausführung werden die Paketverweise nachgeladen. Dementsprechend kann die Erstellung ein wenig brauchen. Nach dem Laden solltest einen Eintrag im Terminal sehen
```sh
[ INFO ] Server starting on http://127.0.0.1:8080
```
## Aufruf im Browser
Rufe die Seite über den Link <a href="http://localhost:8080/hello" target="_blank">localhost:8080/hello</a> oder <a href="http://127.0.0.1:8080" target="_blank">http://127.0.0.1:8080</a> im Browser auf. Als Ergebnis sollte "Hello World" im Browser erscheinen.
Das wars! Geschafft! Gratulation zur ersten Vapor-Anwendung. 🎉

28
docs/index.de.md Normal file
View File

@ -0,0 +1,28 @@
# Willkommen
Willkommen zur Dokumentation von Vapor! Vapor ist ein Web-Framework für Swift, mit das du Webseiten, ganze Webserver oder APIs schreiben kannst. Vapor selbst ist in Swift geschrieben, welche eine moderne, leistungsstarke und sichere Sprache ist und die gegenüber anderen Serversprachen eine Vielzahl von Vorteilen bietet.
## Einstieg
Für die Installation, folge den Anweisungen im Abschnitt [Installation → macOS](install/macos.de.md). Nach der Installation, folge den Anweisungen [Erste Schritte → Hello, world](hello-world.de.md) um deine erste Vapor-Anwendungen zu erstellen.
## Hilfen
Mehr Informationen zum Web-Framework findest du unter anderem hier:
| name | description | link |
|----------------|--------------------------------------------------------------|------------------------------------------------------------------|
| Vapor Discord | Tausche dich mit anderen Mitgliedern der Vapor-Community aus.| [visit &rarr;](https://vapor.team) |
| API docs | Auto-generierte Dokumentation zu Vapor. | [visit &rarr;](https://api.vapor.codes) |
| Stack Overflow | Stelle Fragen oder lese Antworten zu Vapor auf Stackoverflow.| [visit &rarr;](https://stackoverflow.com/questions/tagged/vapor) |
| Swift Forums | Beiträge zu Vapor im offiziellen Swift-Forum. | [visit &rarr;](https://forums.swift.org/c/related-projects/vapor)|
| Source Code | Der ganze Quellcode von Vapor auf Github. | [visit &rarr;](https://github.com/vapor/vapor) |
| GitHub Issues | Melde Fehler oder reiche deine Ideen auf Github ein. | [visit &rarr;](https://github.com/vapor/vapor/issues) |
## Altversionen
Die Dokumentationen zu älteren Versionen von Vapor findest du unter [https://legacy.docs.vapor.codes/](https://legacy.docs.vapor.codes/).
## Authoren
Das Vapor-Kernteam und viele weitere Mitglieder der Vapor-Community.

57
docs/install/linux.de.md Normal file
View File

@ -0,0 +1,57 @@
# Installation unter Linux
Die Mindestvorraussetzung für Vapor ist Swift 5.2 oder höher. Daher läuft das Framework auch auf allen Linux-Distributionen, die ebenfalls Swift 5.2 oder höher unterstützen. Unter [Swift.org](https://swift.org/download/) kannst du Swift für Linux-Distributionen herunterladen und installieren.
Hier findest du eine Übersicht der untersützten Linux-Distribution:
|Distribution |Version |Swift Version|
|-----------------------------------------------------------------------------------|---------------|-------------|
|Ubuntu. |20.04 |>= 5.2.4. |
|Ubuntu |16.04, 18.04. |>= 5.2. |
|Fedora. |>= 30 |>= 5.2 |
|CentOS. |8. |>= 5.2.4. |
|Amazon Linux |2. |>= 5.2.4. |
|_Die Angaben können abweichen. Für offizielle Daten siehe [Swift Releases](https://swift.org/download/#releases)_|
Es kann gut möglich sein, dass Swift auch auf Distributionen läuft, die nicht offiziell gelistet werden, allerdings können wir das nicht garantieren. Mehr Informationen dazu, findest du unter [Swift - Github](https://github.com/apple/swift#getting-started).
## Swift-Installation
Auf der Seite [Swift.org Using Downloads](https://swift.org/download/#using-downloads) findest du eine Anleitung, wie du Swift unter Linux installierst.
### - Fedora
Fedora-Nutzer können folgenden Befehl ausführen
```sh
sudo dnf install swift-lang
```
Solltest du jedoch Fedora 30 verwenden, benötigst du EPEL 8 um Swift 5.2 zum Laufen zu bringen.
### - Docker
Du kannst ebenso das offizielle Docker-Image benutzen. Mehr Informationen dazu findest du unter [Swift's Docker Hub](https://hub.docker.com/_/swift).
## Toolbox-Installation
Neben Swift kannst du auch die Vapor-Toolbox installieren. Die Toolbox ist zwar für Vapor nicht zwingend notwendig, aber beinhaltet Befehle, die dich bei der Arbeit mit Vapor unterstützen.
Unter Linux muss die Toolbox erst von [Github Toolbox](https://github.com/vapor/toolbox/releases) geladen und anschließend installiert werden.
```sh
git clone https://github.com/vapor/toolbox.git
cd toolbox
git checkout <desired version>
make install
```
Im Anschluss kannst du die Installation überprüfen, indem du den Befehl
```sh
vapor --help
```
ausführst. Dir sollten nun mehrere Befehl der Toolbox angezeigt werden.
Nach der Swift-Installation kannst du mit der Erstellung deiner ersten Vapor-Anwendung beginnen. Folge dazu den Anweisungen im Abschnitt [Erste Schritte &rarr; Hello, world](/hallo-world.de.md).

32
docs/install/macos.de.md Normal file
View File

@ -0,0 +1,32 @@
# Installation unter macOS
Die Mindestvoraussetzung für Vapor ist Swift 5.2 oder höher.
## Xcode-Installation
Xcode ist eine Entwicklungsumgebung von Apple. Du findest die App im [AppStore](https://itunes.apple.com/us/app/xcode/id497799835?mt=12). Mit der Installation von Xcode wird auch Swift installiert.
![Xcode in Mac App Store](../images/xcode-mac-app-store.png)
Sobald die App heruntergeladen ist, führe die Installation aus. Öffne nach der Installation Xcode um die Installation komplett abzuschließen. Mit dem Termin-Befehl `swift --version` kannst du nun überprüfen, ob die Installation von Swift erfolgreich verlief und welche Version installiert wurde.
```sh
swift --version
Apple Swift version 5.2 (swiftlang-1100.0.270.13 clang-1100.0.33.7)
Target: x86_64-apple-darwin19.0.0
```
## Toolbox-Installation
Neben Swift kannst du auch die Vapor-Toolbox installieren. Die Toolbox ist zwar für Vapor nicht zwingend notwendig, aber beinhaltet Befehle, die dich bei der Arbeit mit Vapor unterstützen.
Du kannst die Toolbox mittels [Homebrew](https://brew.sh) installieren:
```sh
brew install vapor
```
##
Nach den Installationen kannst du mit der Erstellung deiner ersten Vapor-Anwendung beginnen. Folge dazu den Anweisungen im Abschnitt [Erste Schritte → Hello, world](../hello-world.de.md).

226
docs/server.de.md Normal file
View File

@ -0,0 +1,226 @@
# Server
Vapor enthält einen HTTP-Server auf Basis von [SwiftNIO](https://github.com/apple/swift-nio). Der Server unterstützt die Protokolle HTTP/1, HTTP/2 und Protokollerweiterungen wie [WebSockets](websockets.md).
## Einstellungen
Die Einstellungen des Servers können über _app.http.server_ eingerichtet oder verändert werden.
### Servername
Der _Hostname_ ist die Bezeichnung des Servers. Standardmäßig lautet der Name "_127.0.0.1_".
```swift
/// [configure.swift]
// Configure custom hostname.
app.http.server.configuration.hostname = "dev.local"
```
### Serverport
Der _Port_ ist die Portnummer des Servers. Der Standard-Port lautet "_8080_".
```swift
/// [configure.swift]
// Configure custom port.
app.http.server.configuration.port = 1337
```
### Backlog
Der Parameter _Backlog_ definiert die maximale Anzahl an ausstehenden Verbindungen zum Server. Der Standardwert lautet "_256_".
```swift
/// [configure.swift]
// custom backlog.
app.http.server.configuration.backlog = 128
```
### Reuse Address
Der Parameter _Reuse Adress_ allows for reuse of local addresses. Standardmäßig ist der Parameter aktiviert.
```swift
/// [configure.swift]
// Disable address reuse.
app.http.server.configuration.reuseAddress = false
```
### TCP No Delay
Mit Aktivieren des Parameters _TCP No Delay_ wird versucht die Paketverzögerung so gering wie möglich zu halten. Standardmäßig ist der Parameter aktiviert.
```swift
/// [configure.swift]
// Minimize packet delay.
app.http.server.configuration.tcpNoDelay = true
```
### Antwortkomprimierung
Der Parameter _responseCompression_ legt die Komprimierung einer Serverantwort fest. Der Parameter ist standardmäßig deaktiviert. Für die Komprimierung wird Gzip verwendet.
```swift
/// [configure.swift]
// Enable HTTP response compression.
app.http.server.configuration.responseCompression = .enabled
// Enable HTTP response compression with an initial buffer capacity
app.http.server.configuration.responseCompression = .enabled(initialByteBufferCapacity: 1024)
```
### Anfragedekomprimierung
Der Parameter _requestDecompression_ legt die Dekomprimierung einer Serveranfrage fest. Der Parameter ist standardmäßig deaktiviert. Für die Komprimierung wird Gzip verwendet.
```swift
/// [configure.swift]
// Enable HTTP request decompression.
app.http.server.configuration.requestDecompression = .enabled
// Enable HTTP request decompression with size limit
app.http.server.configuration.requestDecompression = .enabled(limit: .ratio(10))
// Enable HTTP request decompression with no size limit
app.http.server.configuration.requestDecompression = .enabled(limit: .none)
```
Available options are:
- `size`: Maximum decompressed size in bytes.
- `ratio`: Maximum decompressed size as ratio of compressed bytes.
- `none`: No size limits.
Setting decompression size limits can help prevent maliciously compressed HTTP requests from using large amounts of memory.
### Pipelining
Der Parameter _supportPipelining_ aktiviert die Unterstützung für HTTP-Pipeling. Der Parameter ist ständardmäßig deaktiviert.
```swift
/// [configure.swift]
// Support HTTP pipelining.
app.http.server.configuration.supportPipelining = true
```
### Versions
Der Parameter _supportVersions_ legt fest, welche HTTP-Versionen vom Server verwendet werden soll. Wenn TLS aktiviert ist, unterstützt Vapor standardmäßig die beiden Protokolle HTTP/1 und HTTP/2. Sobald TLS deaktiviert wird, wird nur HTTP/1 unterstützt.
```swift
/// [configure.swift]
// Disable HTTP/1 support.
app.http.server.configuration.supportVersions = [.two]
```
### TLS
Der Parameter _tlsConfiguration_ legt fest, ob TLS (SSL) verwendet werden soll. Standardmäßig ist kein TLS angegeben.
```swift
/// [configure.swift]
// Enable TLS.
try app.http.server.configuration.tlsConfiguration = .forServer(
certificateChain: NIOSSLCertificate.fromPEMFile("/path/to/cert.pem").map { .certificate($0) },
privateKey: .file("/path/to/key.pem")
)
```
For this configuration to compile you need to add `import NIOSSL` at the top of your configuration file. You also might need to add NIOSSL as a dependency in your Package.swift file.
### Name
Der Parameter _serverName_ legt das Feld _Server_ in der Kopfzeile einer Serverantwort fest. Standardmäßig ist kein Name angegeben.
```swift
/// [configure.swift]
// Add 'Server: vapor' header to responses.
app.http.server.configuration.serverName = "vapor"
```
## Funktionen
### Start
Der Server kann manuell gestartet werden.
```swift
// Start Vapor's server.
try app.server.start()
```
### Shutdown
```swift
// Request server shutdown.
app.server.shutdown()
// Wait for the server to shutdown.
try app.server.onShutdown.wait()
```
## Befehle
### Serve
Um den Server zu starten, kannst du Terminal-Befehl _serve_ verwenden. Der Befehl wird automatisch ausgeführt, wenn keine anderen Befehle mitangegeben werden.
```swift
vapor run serve
```
Es können folgende Parameter mitangegeben werden:
| Name | Befehl | Beschreibung | Beispiel |
|-----------------------|----------------|------------------------------------------------------|-------------------------------|
| hostname | -H | Überschreibt den vordefinierten Hostname | vapor run serve -H dev.local |
| port | -p | Überschreibt den vordefinierten Port | vapor run serve -p 1337 |
| bind | -b | Überschreibt den vordefinierten Hostnamen und Port | vapor run serve -b 0.0.0.0:80 |
| help | --help | Hilfe | vapor run serve --help |
## Hinweis
Der Server von Vapor kann grundsätzlich ersetzt werden. Dazu muss der neue Server von Typ `Server` sein.
```swift
app.servers.use(.http)
```
```swift
import Vapor
final class MyServer: Server {
...
}
app.servers.use { app in
MyServer()
}
```
Custom servers can extend `Application.Servers.Provider` for leading-dot syntax.
```swift
extension Application.Servers.Provider {
static var myServer: Self {
.init {
$0.servers.use { app in
MyServer()
}
}
}
}
app.servers.use(.myServer)
```

83
docs/spm.de.md Normal file
View File

@ -0,0 +1,83 @@
# Swift Package Manager
Über den [Swift Package Manager](https://www.swift.org/package-manager/) können verschiedene Pakete in einem Projekt zusammengefasst und eingebunden werden. Damit ist der Manager ähnlich zu anderen Lösungen, wie CocoaPods, Ruby gems oder NPM. Ein offizielles, zentrales Paketeregister gibt es allerdings nicht, daher greift der Manager stattdessen über Git auf die jeweiligen Pakete zu.
### Paketbeschreibung
Das Herzstück des Paketmanagers ist die Paketbeschreibung. Sie befindet sich im Hauptverzeichnis eines Paketes. Die Beschreibung beinhaltet unter anderem Angaben zu Swift-Tools, den Paketnamen, dem Paketinhalt und die Abhängigkeiten.
```swift
/// [Package.swift]
// swift-tools-version:5.2
import PackageDescription
let package = Package(
name: "app",
platforms: [
.macOS(.v10_15)
],
products: [
.executable(name: "Run", targets: ["Run"]),
.library(name: "App", targets: ["App"]),
],
dependencies: [
.package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"),
],
targets: [
.target(name: "App", dependencies: [.product(name: "Vapor", package: "vapor")]),
.target(name: "Run", dependencies: ["App"]),
.testTarget(name: "AppTests", dependencies: ["App"])
]
)
```
#### - Swift-Tools
Die erste Zeile in der Beschreibung deklariert die für das Paket notwendige Mindestversion von Swift. Je nach Versionsstand können sich zudem die Paketbeschreibungen unterscheiden!
#### - Name
Der Parameter _Name_ legt den Paketnamen fest.
#### - Platforms
Der Parameter _Platforms_ beschreibt für welche Systeme letzten Endes das Paket sein soll. Wenn z.B. als Plattform `.macOS(.v10.14)` angegeben wird, wird macOS Mojave oder neuer erwartet.
#### - Products
Der Parameter _Products_ fasst die Targets zusammen.
#### - Dependencies
Dependencies sind Paketverweise, auf die das Paket aufbaut und daher für die Ausführung zwingend benötigt werden. Deshalb auch Abhängigkeiten genannt. Im Falle von Vapor, verweisen alle Vapor-Pakete auf die aktuelle Vapor-Version. Neben dem Vapor-Paketverweis, können weitere Verweise hinzugefügt werden.
#### - Targets
Targets sind Module, Dateien oder Tests. Vapor-Anwendungen beinhalten bis zu drei Targets.
### Ordnerstruktur
Die Ordnerstruktur eines Paketes sieht wie folgt aus:
```
.
├── Sources
│ ├── App
│ │ └── (Source code)
│ └── Run
│ └── main.swift
├── Tests
│ └── AppTests
└── Package.swift
```
### Resolved-Datei
Bei der ersten Ausführung des Paketes wird automatisch im Hauptverzeichnis eine Datei _Package.resolved_ erstellt. Die Datei listet die angegeben Abhängigkeiten inklusive Versionsstand auf. Hier ist zu beachten, dass das Paket sich erstmal an den Vorgaben in der Resolved-Datei hält, selbst wenn es bereits einen neuen Versionsstand einer Abhängigkeit gibt.
Die Resolved-Datei kann über die Menüpunkte *File**Swift Packages**Update To Latest Swift Package Versions* aktualisiert werden.
### Xcode
Veränderungen an der Paketbeschreibung werden in Xcode mit Speichern sofort umgesetzt.

View File

@ -39,6 +39,7 @@ var searchIndexDocs = [SearchIndexDocs]()
for doc in newSearchIndex.docs {
if !doc.location.starts(with: "en/")
&& !doc.location.starts(with: "de/")
&& !doc.location.starts(with: "fr/")
&& !doc.location.starts(with: "nl/") {
searchIndexDocs.append(doc)
@ -47,4 +48,4 @@ for doc in newSearchIndex.docs {
newSearchIndex.docs = searchIndexDocs
try JSONEncoder().encode(newSearchIndex).write(to: fileURL)
try JSONEncoder().encode(newSearchIndex).write(to: fileURL)

View File

@ -85,12 +85,18 @@ plugins:
name: Français
site_name: Documentation Vapor
build: true
de:
name: German
site_name: Vapor Dokumentation
build: true
# Add navigation translations here
nav_translations:
nl:
Welcome: Welkom
fr:
Welcome: Bienvenue
de:
Welcome: Willkommen
nav: