Blöcke lokalisieren

Blockly unterstützt Blockdefinitionen, die in die Sprache des Nutzers lokalisiert werden können. Durch die Verwendung von Stringtabellen, Nachrichtenstrings in der JSON-Blockdefinition Eingaben, Felder und Beschriftungen an das Vokabular der Sprache anpassen, Wortsortierung und Richtung.

"Lists_Repeat"-Block auf Englisch Listen_Repeat-Block auf Spanisch "lists_Repeat"-Block auf Koreanisch Listen_Repeat-Block in linksläufigem Arabisch

Alle diese Fälle haben dieselbe JSON-Blockdefinition:

// Block for creating a list with one element repeated.
{
  "type": "lists_repeat",
  "message0": "%{BKY_LISTS_REPEAT_TITLE}",
  "args0": [
    {
      "type": "input_value",
      "name": "ITEM"
    },
    {
      "type": "input_value",
      "name": "NUM",
      "check": "Number"
    }
  ],
  "output": "Array",
  "colour": "%{BKY_LISTS_HUE}",
  "tooltip": "%{BKY_LISTS_REPEAT_TOOLTIP}",
  "helpUrl": "%{BKY_LISTS_REPEAT_HELPURL}"
}

Stringtabelle

Das Beispiel lists_repeat enthält mehrere "%{BKY_...}"-Strings. Jede von Dies ist ein Verweis auf einen String in der Stringtabelle Blockly.Msg. Wenn der Parameter block instanziiert wird, versucht Blockly, den String durch den Wert zu ersetzen.

Beispielsweise wird %{BKY_LISTS_REPEAT_TITLE} durch den Wert von ersetzt. Blockly.Msg['LISTS_REPEAT_TITLE'], falls vorhanden. Wenn der Wert nicht vorhanden ist, die %{BKY_...}-Notation beibehalten wird und Blockly eine Warnung ausgibt für die fehlende Übersetzung.

Wie das Beispiel zeigt, funktioniert die Schreibweise an mehreren Stellen. Die Meldungen und Kurzinfos ermöglichen das Ersetzen sichtbarer Zeichenfolgen, die für den Nutzer sichtbar sind. Das Drop-down-Menü -Feldern kann auch die Notation für Artikeltext verwendet werden. Hilfe-URL kann lokalisiert werden auf Der Nutzer wird auf eine ähnlich lokalisierte Seite weitergeleitet. Die letzte Option Für den colour-Wert kann die Notation verwendet werden, um die Palette von Blöcken zu zentralisieren.

Wenn Sie die JavaScript-Implementierung verwenden und davon ausgehen, Nutzersprache zur Laufzeit verwenden, ist es möglicherweise einfacher, einen direkten Verweis zu verwenden. Für entweder Blockly.Msg['LISTS_REPEAT_TITLE'] oder Blockly.Msg.LISTS_REPEAT_TITLE'.

Die Stringtabellen werden über eine der sprachspezifischen .js-Dateien in msg/js Laden Sie die in Ihre Webseite einfügen, um die richtige Blockübersetzung zu laden.

JSON-Nachrichteninterpolation

Das Attribut message0 (und message1, message2 usw.) gibt die Eingaben vor. und umgebenden Beschriftungstext. Für LISTS_REPEAT_TITLE in der lists_repeat-Block, lautet der englische Wert:

Blockly.Msg.LISTS_REPEAT_TITLE = 'create list with item %1 repeated %2 times';

Die beiden Interpolationsmarkierungen %1 und %2 markieren die Positionen der beiden Eingaben. Weitere Details finden Sie im Array args0. args1 entspricht den String message1. Weitere Informationen finden Sie in der Benutzerdefinierte Bausteine erstellen finden Sie weitere Informationen zum Angeben von Blockeingaben und -feldern.

Der Text zwischen den Interpolationsmarkierungen wird in unbenannte Label-Feldern. Dadurch wird das Wort und wie er gelesen wird:

// In Spanish
Blockly.Msg.LISTS_REPEAT_TITLE = "crear lista con el elemento %1 repetido %2 veces";
// In Korean
Blockly.Msg.LISTS_REPEAT_TITLE = "%1 %2 넣어, 리스트 생성";

Bei der Übersetzung in linksläufige Sprachen wird der Nachrichtenstring in die visuelle Reihenfolge und sollte keine Unicode-Richtungsbefehle enthalten:

// In Arabic. Note how %2 is left of %1, since it read right to left.
Blockly.Msg.LISTS_REPEAT_TITLE = "إنشئ قائمة مع العنصر  %1 %2 مرات";

Stringtabellen neu erstellen

Das Erstellen der Stringtabelle .js ist Teil des Skripts build:langfiles. Die die ID-Schlüssel und die englischen Übersetzungen msg/messages.js um eine neue en.json zu erstellen. Dann, kombiniert mit und allen Übersetzungen, die in den anderen JSON-Dateien, werden die aktualisierten Daten JavaScript-Stringtabellen für alle Sprachen, einschließlich eines neuen en.js

Die nicht englischsprachigen JSON-Dateien stammen von Partnern bei TranslateWiki erstellen. Weitere Informationen finden Sie in der Notizen zu übersetzen finden Sie weitere Informationen dazu, wie Sie helfen können.