Lokalizowanie bloków

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.

list_repeat blok po angielsku list_repeat blok po hiszpańsku list_repeat blok po koreańsku list_repeat blok w języku arabskim od prawej do lewej

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 .