天天看點

blockly --本地化塊( Localize Blocks)

Localize Blocks

Blockly支援可以本地化為使用者語言的塊定義。通過使用字元串表,JSON塊定義中的消息字元串可以調整輸入、字段和标簽,以反映語言的詞彙表、單詞順序和方向。

blockly --本地化塊( Localize Blocks)
blockly --本地化塊( Localize Blocks)
blockly --本地化塊( Localize Blocks)
blockly --本地化塊( Localize Blocks)

所有這些情況都共享相同的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}"
}
           

String Table

清單重複示例包括幾個“%{BKY}”字元串。每個都是對Blockly.Msg string表中字元串的引用。當塊被執行個體化時,Blockly嘗試用值替換字元串。

例如,%{bkyiLists[RealthEngult}]用Buly.MSg [“ListsIn RealPythTepe”]的值替換,如果存在的話。如果該值不存在,則将%{BKYY} }符号放在适當位置,并為丢失的翻譯發出警告。

如示例所示,符号在多個位置工作。消息和工具提示允許替換使用者可見的字元串。類似地,下拉字段也可以使用項目文本的符号。幫助URL可以本地化,以確定使用者被定向到類似的本地化頁面。最後,顔色值可以使用符号幫助集中塊的調色闆。

如果您正在使用JavaScript實作,并且不希望在運作時更改使用者語言,那麼您可能會發現使用直接引用更容易。例如,Blockly.Msg['LISTS_REPEAT_TITLE']或Blockly.Msg.LISTS_REPEAT_TITLE'。因為這不是有效的JSON,是以這種文法(引用在别處聲明的變量)對Android或iOS不起作用

字元串表通過msg/js中任何一個特定于語言的.js檔案加載。将适當的檔案加載到網頁中以加載正确的塊轉換。Blockly for iOS的操作稍有不同,自動從本地化消息中選擇正确的JSON檔案。

JSON Message Interpolation

message0屬性(和message1、message2等)訓示輸入、字段和周圍的标簽文本。對于“清單重複”塊中的“清單重複”标題,英文值為:

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

兩個插值标記%1和%2标記兩個輸入的位置。args0數組中提供了更多詳細資訊。args1将對應于message1字元串。有關指定塊輸入和字段的詳細資訊,請參見《建立自定義塊》指南。

插值标記之間的文本将轉換為unnamed/blockly/reference/js/blockly.FieldLabel。這将建立塊的單詞順序及其讀取方式:

// 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번 넣어, 리스트 생성";
           

當轉換為從右到左的語言時,消息字元串以可視順序寫入,不應包含Unicode方向指令:

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

Rebuilding string tables

建構string table.js檔案是build.py腳本的一部分。該腳本從msg/messages.js擷取辨別符鍵和英語翻譯,以建立一個新的en.json。然後,結合其他JSON檔案中的翻譯,它将為所有語言重新建立更新的JavaScript字元串表,包括一個新的en.js。

非英語JSON檔案來自TranslateWiki的合作夥伴。有關如何提供幫助的詳細資訊,請參閱翻譯說明。