blockly --本地化塊( Localize Blocks)

Localize Blocks

Blockly支持可以本地化爲用戶語言的塊定義。通過使用字符串表,JSON塊定義中的消息字符串可以調整輸入、字段和標籤,以反映語言的詞彙表、單詞順序和方向。

lists_repeat block in English lists_repeat block in Spanish lists_repeat block in Korean lists_repeat block in right-to-left Arabic

所有這些情況都共享相同的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的合作伙伴。有關如何提供幫助的詳細信息,請參閱翻譯說明。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章