Blockly obsługuje definicje blokad, które można zlokalizować na język użytkownika. Dzięki tabelom z ciągami znaków ciąg znaków komunikatów w definicji bloku JSON może dostosować dane wejściowe, pola i etykiety do słownictwa języka, kolejności słów i kierunku.
Wszystkie te przypadki mają tę samą definicję bloku JSON:
// 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}"
}
Tabela z ciągami znaków
Przykład lists_repeat
zawiera kilka ciągów znaków "%{BKY_...}"
. Każda z tych wartości:
jest to odwołanie do ciągu w tabeli ciągów znaków Blockly.Msg
. Gdy
blok, zostanie utworzony, Blockly próbuje zastąpić ciąg znaków wartością.
Na przykład pole %{BKY_LISTS_REPEAT_TITLE}
zostało zastąpione wartością
Blockly.Msg['LISTS_REPEAT_TITLE']
, o ile istnieje. Jeśli wartość nie istnieje,
zostanie zachowany zapis %{BKY_...}
, a Blockly wyświetli ostrzeżenie;
za brakujące tłumaczenie.
Jak widać na przykładzie, ten zapis działa w kilku miejscach. Komunikaty
i etykietki umożliwiają zastępowanie ciągów widocznych dla użytkownika. Podobnie:
mogą też używać notacji dla tekstu elementu. Adres URL pomocy może być zlokalizowany na język
Upewnij się, że użytkownik jest kierowany na podobnie zlokalizowaną stronę. I wreszcie,
Wartość colour
może korzystać z notacji, aby ułatwić scentralizowanie palety bloków.
Jeśli korzystasz z kodu JavaScript i nie spodziewasz się, że zmieni się
języka użytkownika w czasie działania, może Ci być łatwiej korzystać z bezpośredniego odwołania. Dla:
np. Blockly.Msg['LISTS_REPEAT_TITLE']
lub
Blockly.Msg.LISTS_REPEAT_TITLE'
Tabele z ciągami znaków są wczytywane za pomocą jednego z plików .js
przeznaczonych dla określonego języka
msg/js
Wczytaj
za pomocą odpowiedniego pliku na stronie internetowej, aby wczytać właściwe tłumaczenie blokowe.
Interpolacja wiadomości JSON
Atrybut message0
(oraz message1
, message2
itp.) decyduje o danych wejściowych,
i otaczającego tekstu etykiety. W okresie: LISTS_REPEAT_TITLE
w
lists_repeat
, wartość w języku angielskim to:
Blockly.Msg.LISTS_REPEAT_TITLE = 'create list with item %1 repeated %2 times';
Dwa znaczniki interpolacji, %1
i %2
, wskazują lokalizację dwóch wejść.
Więcej szczegółów zawiera tablica args0
. args1
będzie odpowiadać wartości
ciąg message1
. Zobacz
Tworzenie blokad niestandardowych
.
Tekst między znacznikami interpolacji jest konwertowany na bez nazwy pola etykiet. W ten sposób powstanie słowo porządek bloku i jego interpretację:
// 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번 넣어, 리스트 생성";
Podczas tłumaczenia na języki pisane od prawej do lewej kolejność wizualną i nie powinna zawierać poleceń kierunkowych Unicode:
// In Arabic. Note how %2 is left of %1, since it read right to left.
Blockly.Msg.LISTS_REPEAT_TITLE = "إنشئ قائمة مع العنصر %1 %2 مرات";
Przebudowywanie tabel z ciągami znaków
Tworzenie plików .js
tabeli z ciągami znaków jest częścią skryptu build:langfiles
.
pobiera klucze identyfikacyjne, a tłumaczenie na język angielski
msg/messages.js
aby utworzyć nowy element en.json
.
Następnie w połączeniu z wszelkimi tłumaczeniami znalezionymi w
pozostałych plików JSON,
zostanie ponownie utworzony zaktualizowany
Tabele z ciągami znaków JavaScript
dla wszystkich języków, w tym nowy
en.js
Pliki JSON w języku innym niż angielski pochodzą od partnerów pod adresem TranslateWiki. Zobacz uwagi na temat: tłumaczenie .