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.
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.