diff --git a/_de/players/formspecs.md b/_de/players/formspecs.md
index 0cdf74e..3f5f56b 100644
--- a/_de/players/formspecs.md
+++ b/_de/players/formspecs.md
@@ -8,10 +8,10 @@ redirect_from: /de/chapters/formspecs.html
submit_vuln:
level: warning
title: Malicious clients can submit anything at anytime
- message: You should never trust a formspec submission. A malicious client
- can submit anything they like at any time - even if you never showed
- them the formspec. This means that you should check privileges
- and make sure that they should be allowed to perform the action.
+ message: Sie sollten niemals einer formspec-Übermittlung vertrauen. Ein böswilliger Client
+ kann jederzeit alles übermitteln, was er will - auch wenn Sie ihm nie die
+ den formspec gezeigt haben. Das bedeutet, dass Sie die Berechtigungen prüfen sollten
+ und sicherstellen, dass sie die Aktion durchführen dürfen.
---
## Einleitung
@@ -37,14 +37,14 @@ unerwartete Fenster das Spielgeschehen stören können.
- [Anatomie eines formspecs](#anatomie-eines-a-formspecs)
- [Elemente](#elemente)
- [Header](#header)
-- [Guessing Game](#guessing-game)
- - [Padding and Spacing](#padding-and-spacing)
- - [Receiving Formspec Submissions](#receiving-formspec-submissions)
+- [Ratespiel](#ratespiel)
+ - [Padding und Abstände](#padding-und-abstände)
+ - [Empfang von Formspec-Übermittlungen](#empfang-von-formspec-übermittlungen)
- [Contexts](#contexts)
-- [Formspec Sources](#formspec-sources)
+- [Formspec-Quellen](#formspec-quellen)
- [Node Meta Formspecs](#node-meta-formspecs)
- - [Player Inventory Formspecs](#player-inventory-formspecs)
- - [Your Turn](#your-turn)
+ - [Spieler Inventar Formspecs](#spieler-inventar-formspecs)
+ - [Sie sind dran](#sie-sind-dran)
## Reale oder Legacy-Koordinaten
@@ -117,22 +117,22 @@ Dadurch wird der Anker an den linken mittleren Rand des formspec-Feldes gesetzt,
Position dieses Ankers auf der linken Seite des Bildschirms.
-## Guessing Game
+## Ratespiel
-
+
- The guessing game formspec.
+ Das Ratespiel formspec.
-The best way to learn is to make something, so let's make a guessing game.
-The principle is simple: the mod decides on a number, then the player makes
-guesses on the number. The mod then says if the guess is higher or lower then
-the actual number.
+Der beste Weg, etwas zu lernen, ist, etwas zu machen, also lasst uns ein Ratespiel machen.
+Das Prinzip ist einfach: Der Mod entscheidet sich für eine Zahl, und die Spieler
+errät die Zahl. Der Mod sagt dann, ob die erratene Zahl höher oder niedriger ist als
+die tatsächliche Zahl.
-First, let's make a function to create the formspec code. It's good practice to
-do this, as it makes it easier to reuse elsewhere.
+Zunächst erstellen wir eine Funktion, die den formspec-Code erzeugt. Es ist gute Praxis, dies
+zu tun, da es die Wiederverwendung an anderer Stelle erleichtert.
@@ -140,29 +140,29 @@ do this, as it makes it easier to reuse elsewhere.
guessing = {}
function guessing.get_formspec(name)
- -- TODO: display whether the last guess was higher or lower
- local text = "I'm thinking of a number... Make a guess!"
+ -- TODO: Anzeige, ob die letzte Schätzung höher oder niedriger war
+ local text = "Ich denke an eine Zahl... Raten Sie mal!"
local formspec = {
"formspec_version[4]",
"size[6,3.476]",
"label[0.375,0.5;", minetest.formspec_escape(text), "]",
- "field[0.375,1.25;5.25,0.8;number;Number;]",
- "button[1.5,2.3;3,0.8;guess;Guess]"
+ "field[0.375,1.25;5.25,0.8;nummer;Nummer;]",
+ "button[1.5,2.3;3,0.8;raten;Raten]"
}
- -- table.concat is faster than string concatenation - `..`
+ -- table.concat ist schneller als String-Verkettung - `..`
return table.concat(formspec, "")
end
```
-In the above code, we place a field, a label, and a button. A field allows text
-entry, and a button is used to submit the form. You'll notice that the elements
-are positioned carefully in order to add padding and spacing, this will be explained
-later.
+Im obigen Code platzieren wir ein Feld, eine Beschriftung und eine Schaltfläche.
+Ein Feld erlaubt die Eingabe von Text Texteingabe, und eine Schaltfläche dient zum
+Absenden des Forms. Sie werden feststellen, dass die Elemente
+sorgfältig positioniert sind, um Padding und Abstände hinzuzufügen, was später erklärt wird.
-Next, we want to allow the player to show the formspec. The main way to do this
-is using `show_formspec`:
+Als Nächstes wollen wir dem Spieler erlauben, den formspec anzuzeigen. Der beste Weg, dies zu tun
+ist die Verwendung von `show_formspec`:
```lua
function guessing.show_to(name)
@@ -176,34 +176,35 @@ minetest.register_chatcommand("game", {
})
```
-The `show_formspec` function accepts a player name, the formspec name, and the
-formspec itself. The formspec name should be a valid itemname, ie: in the format
-`modname:itemname`.
+Die Funktion `show_formspec` akzeptiert einen Spielernamen, den Namen der formspec und die
+formspec selbst. Der formspec-Name sollte ein gültiger Itemname sein, d.h. im Format
+`Modname:Gegenstandsname`.
-### Padding and Spacing
+### Padding und Abstände
-
+
The guessing game formspec.
-Padding is the gap between the edge of the formspec and its contents, or between unrelated
-elements, shown in red. Spacing is the gap between related elements, shown in blue.
+Padding ist der Abstand zwischen dem Rand des formspec und seinem Inhalt oder zwischen nicht verwandten Elementen,
+dargestellt in Rot. Abstand ist der Abstand zwischen zusammenhängenden Elementen, der blau dargestellt wird.
-It is fairly standard to have a padding of `0.375` and a spacing of `0.25`.
+
+Ein Padding von `0,375` und ein Abstand von `0,25` sind üblich.
-### Receiving Formspec Submissions
+### Empfang von Formspec-Übermittlungen
-When `show_formspec` is called, the formspec is sent to the client to be displayed.
-For formspecs to be useful, information needs to be returned from the client to server.
-The method for this is called formspec field submission, and for `show_formspec`, that
-submission is received using a global callback:
+Wenn `show_formspec` aufgerufen wird, wird der formspec an den Client gesendet, um angezeigt zu werden.
+Damit formspecs nützlich sind, müssen Informationen vom Client zum Server zurückgeschickt werden.
+Die Methode dafür heißt formspec field submission, und für `show_formspec` wird diese
+Übermittlung über einen globalen Callback empfangen:
```lua
minetest.register_on_player_receive_fields(function(player, formname, fields)
@@ -213,39 +214,39 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
if fields.guess then
local pname = player:get_player_name()
- minetest.chat_send_all(pname .. " guessed " .. fields.number)
+ minetest.chat_send_all(pname .. " riet " .. fields.number)
end
end)
```
-The function given in `minetest.register_on_player_receive_fields` is called
-every time a user submits a form. Most callbacks will need to check the formname given
-to the function, and exit if it is not the right form; however, some callbacks
-may need to work on multiple forms, or on all forms.
+Die in `minetest.register_on_player_receive_fields` angegebene Funktion wird
+jedes Mal aufgerufen, wenn ein Benutzer ein Formular absendet. Die meisten Callbacks müssen den der Funktion übergebenen Formularnamen prüfen
+an die Funktion übergebenen Formularnamen überprüfen und beenden, wenn es sich nicht um das richtige Form handelt; einige
+müssen jedoch möglicherweise für mehrere Formulare oder für alle Formulare funktionieren.
-The `fields` parameter to the function is a table of the values submitted by the
-user, indexed by strings. Named elements will appear in the field under their own
-name, but only if they are relevent for the event that caused the submission.
-For example, a button element will only appear in fields if that particular button
-was pressed.
+Der Parameter `fields` der Funktion ist eine Tabelle mit den vom Benutzer übermittelten Werten
+Benutzer übermittelten Werte, die durch Zeichenketten indiziert sind. Benannte Elemente erscheinen in dem Feld unter ihrem eigenen
+Namen, aber nur, wenn sie für das Ereignis, das die Übermittlung verursacht hat, relevant sind.
+Ein Schaltflächenelement erscheint beispielsweise nur dann in Feldern, wenn die betreffende Schaltfläche
+gedrückt wurde.
{% include notice.html notice=page.submit_vuln %}
-So, now the formspec is sent to the client and the client sends information back.
-The next step is to somehow generate and remember the target value, and to update
-the formspec based on guesses. The way to do this is using a concept called
+Der formspec wird also an den Client gesendet, und der Client sendet Informationen zurück.
+Der nächste Schritt besteht darin, den Zielwert irgendwie zu generieren und zu speichern, und die
+die formspec auf der Grundlage von Schätzungen zu aktualisieren. Dies geschieht mit Hilfe eines Konzepts namens
"contexts".
### Contexts
-In many cases you want minetest.show_formspec to give information
-to the callback which you don't want to send to the client. This might include
-what a chat command was called with, or what the dialog is about. In this case,
-the target value that needs to be remembered.
+In vielen Fällen möchten Sie, dass minetest.show_formspec Informationen
+an den Callback weitergeben, die nicht an den Client gesendet werden sollen.
+Dies könnte beinhalten dass ein Chat-Befehl aufgerufen wurde, oder worum es
+in dem Dialog geht. In diesem Fall, der Zielwert, der gespeichert werden muss.
-A context is a per-player table to store information, and the contexts for all
-online players are stored in a file-local variable:
+Ein Context ist eine pro-Spieler-Tabelle zum Speichern von Informationen, und die Contexts für alle
+Online-Spieler werden in einer dateilokalen Variablen gespeichert:
```lua
local _contexts = {}
@@ -255,13 +256,13 @@ local function get_context(name)
return context
end
-minetest.register_on_leaveplayer(function(player)
- _contexts[player:get_player_name()] = nil
+minetest.register_on_leaveplayer(function(spieler)
+ _contexts[spieler:get_player_name()] = nil
end)
```
-Next, we need to modify the show code to update the context
-before showing the formspec:
+Als nächstes müssen wir den Show-Code ändern, um den Context zu aktualisieren
+zu aktualisieren, bevor der Formspec angezeigt wird:
```lua
function guessing.show_to(name)
@@ -273,7 +274,7 @@ function guessing.show_to(name)
end
```
-We also need to modify the formspec generation code to use the context:
+Wir müssen auch den Code für die Generierung von Formularen ändern, um den Context zu verwenden:
```lua
function guessing.get_formspec(name, context)
@@ -289,14 +290,14 @@ function guessing.get_formspec(name, context)
end
```
-Note that it's good practice for `get_formspec` to only read the context, and not
-update it at all. This can make the function simpler, and also easier to test.
+Beachten Sie, dass es gute Praxis ist, wenn `get_formspec` den Context nur liest und nicht
+überhaupt nicht zu aktualisieren. Dies kann die Funktion einfacher machen, und auch leichter zu testen.
-And finally, we need to update the handler to update the context with the guess:
+Und schließlich müssen wir den Handler aktualisieren, um den Context mit der Vermutung zu aktualisieren:
```lua
if fields.guess then
- local name = player:get_player_name()
+ local name = spieler:get_player_name()
local context = get_context(name)
context.guess = tonumber(fields.number)
guessing.show_to(name)
@@ -304,43 +305,44 @@ end
```
-## Formspec Sources
+## Formspec-Quellen
-There are three different ways that a formspec can be delivered to the client:
+Es gibt drei verschiedene Möglichkeiten, wie ein Formspec an den client übermittelt werden kann:
-* [show_formspec](#guessing-game): the method used above, fields are received by `register_on_player_receive_fields`.
-* [Node Meta Formspecs](#node-meta-formspecs): the node contains a formspec in its meta data, and the client
- shows it *immediately* when the player rightclicks. Fields are received by a
- method in the node definition called `on_receive_fields`.
-* [Player Inventory Formspecs](#player-inventory-formspecs): the formspec is sent to the client at some point, and then
- shown immediately when the player presses `i`. Fields are received by
- `register_on_player_receive_fields`.
+* [show_formspec](#ratespiel): Bei der oben beschriebenen Methode werden die Felder durch
+ `register_on_player_receive_fields` empfangen.
+* [Node Meta Formspecs](#node-meta-formspecs): der Node enthält in seinen Metadaten eine Formularvorgabe,
+ und der Client zeigt es *sofort* an, wenn der Spieler mit der rechten Maustaste klickt. Felder werden
+ durch eine Methode in der Node-Definition namens `on_receive_fields` empfangen.
+* [Player Inventory Formspecs](#spieler-inventar-formspecs): der formspec wird irgendwann an den Client gesendet und dann
+ sofort angezeigt, wenn der Spieler auf "i" drückt. Felder werden empfangen durch
+ `register_on_player_receive_fields` empfangen.
### Node Meta Formspecs
-`minetest.show_formspec` is not the only way to show a formspec; you can also
-add formspecs to a [node's metadata](node_metadata.html). For example,
-this is used with chests to allow for faster opening times -
-you don't need to wait for the server to send the player the chest formspec.
+`minetest.show_formspec` ist nicht die einzige Möglichkeit, einen formspec anzuzeigen; Sie können auch
+formspecs zu den Metadaten eines [Nodes](node_metadata.html) hinzufügen. Zum Beispiel,
+wird dieses bei Truhen verwendet, um ein schnelleres Öffnen zu ermöglichen -
+man muss nicht darauf warten, dass der Server dem Spieler den formspec für die Truhe schickt.
```lua
-minetest.register_node("mymod:rightclick", {
- description = "Rightclick me!",
- tiles = {"mymod_rightclick.png"},
+minetest.register_node("meinemod:rechtsclick", {
+ description = "Rechtsclicke me!",
+ tiles = {"mymod_rechtsclick.png"},
groups = {cracky = 1},
after_place_node = function(pos, placer)
- -- This function is run when the chest node is placed.
- -- The following code sets the formspec for chest.
- -- Meta is a way of storing data onto a node.
+ -- Diese Funktion wird ausgeführt, wenn das Kisten-Node platziert wird.
+ -- Der folgende Code setzt den formspec für Kiste.
+ -- Meta ist eine Möglichkeit, Daten in einem Node zu speichern.
local meta = minetest.get_meta(pos)
meta:set_string("formspec",
"formspec_version[4]" ..
"size[5,5]" ..
- "label[1,1;This is shown on right click]" ..
+ "label[1,1;Dies wird beim Rechtsklick angezeigt]" ..
"field[1,2;2,1;x;x;]")
end,
- on_receive_fields = function(pos, formname, fields, player)
+ on_receive_fields = function(pos, formname, fields, spieler)
if fields.quit then
return
end
@@ -350,30 +352,32 @@ minetest.register_node("mymod:rightclick", {
})
```
-Formspecs set this way do not trigger the same callback. In order to
-receive form input for meta formspecs, you must include an
-`on_receive_fields` entry when registering the node.
+Auf diese Weise eingestellte formspecs lösen nicht denselben Callback aus. Um
+Formulareingaben für meta formspecs zu erhalten, müssen Sie einen
+`on_receive_fields`-Eintrag bei der Registrierung des Nodes enthalten.
-This style of callback triggers when you press enter
-in a field, which is impossible with `minetest.show_formspec`;
-however, this kind of form can only be shown by right-clicking on a
-node. It cannot be triggered programmatically.
+Diese Art von Callback wird ausgelöst, wenn Sie die Eingabetaste
+in einem Feld drücken, was mit `minetest.show_formspec` unmöglich ist;
+allerdings kann diese Art von Formular nur durch Rechtsklick auf einen
+Node. Sie kann nicht programmatisch ausgelöst werden.
-### Player Inventory Formspecs
+### Spieler Inventar Formspecs
-The player inventory formspec is the one shown when the player presses i.
-The global callback is used to receive events from this formspec, and the
-formname is `""`.
+Der formspec für das Spielerinventar wird angezeigt, wenn der Spieler auf i drückt.
+Der globale Callback wird verwendet, um Ereignisse von diesem formspec zu empfangen, und der
+formname ist `""`.
-There are a number of different mods which allow multiple mods to customise
-the player inventory. The officially recommended mod is
-[Simple Fast Inventory (sfinv)](sfinv.html), and is included in Minetest Game.
+Es gibt eine Reihe von verschiedenen Mods, die es ermöglichen, das
+das Spielerinventar anzupassen. Die offiziell empfohlene Mod ist
+[Simple Fast Inventory (sfinv)](https://github.com/rubenwardy/sfinv/blob/master/Tutorial.md),
+und ist in Minetest Game enthalten. Ich als Übersetzer emphele jedoch
+eher [i3](https://github.com/minetest-mods/i3) oder [unified inventory](https://github.com/minetest-mods/unified_inventory)
-### Your Turn
+### Sie sind dran
-* Extend the Guessing Game to keep track of each player's top score, where the
- top score is how many guesses it took.
-* Make a node called "Inbox" where users can open up a formspec and leave messages.
- This node should store the placers' name as `owner` in the meta, and should use
- `show_formspec` to show different formspecs to different players.
+* Erweitern Sie das Ratespiel, um die höchste Punktzahl jedes Spielers zu ermitteln, wobei
+ die höchste Punktzahl angibt, wie viele Ratschläge nötig waren.
+* Erstellen Sie einen Node namens "Inbox", in dem Benutzer ein formspec öffnen und Nachrichten hinterlassen können.
+ Dieser Node sollte den Namen des Placers als `owner` in der Meta speichern, und sollte
+ `show_formspec` verwenden, um verschiedene formspecs für verschiedene Spieler anzuzeigen.
diff --git a/_de/wörterbuch.txt b/_de/wörterbuch.txt
index e707e9f..56d76bb 100644
--- a/_de/wörterbuch.txt
+++ b/_de/wörterbuch.txt
@@ -12,6 +12,7 @@ chat message = Chat-Nachricht
child = Kind
client = Client
Command = Befehl
+Context = Context
Cubic Nodes = Würfelförmiger Block
craft slots = Handwerksplätze
Damage = Schaden
@@ -80,6 +81,7 @@ Object properties = Objekt-Eigenschaften
Overrides = Overrides
path = Verzeichnis
parent = Elternteil
+per-player = pro-Spieler
pixel art = Pixel-Art
physics overrides = Physik-Overrides
placer = plazierer