From 06b5765234e4c057de70dc0f204cd1641adaa337 Mon Sep 17 00:00:00 2001 From: debiankaios Date: Sun, 18 Sep 2022 17:43:26 +0200 Subject: [PATCH] Finished translating formspec.md. --- _de/players/formspecs.md | 228 ++++++++++++++++++++------------------- _de/wörterbuch.txt | 2 + 2 files changed, 118 insertions(+), 112 deletions(-) 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
- Guessing Formspec + Rate-Formspec
- 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
- 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