本地化内容块

Blockly 支持可本地化为用户语言的块定义。 通过使用字符串表,JSON 块定义中的消息字符串 可以调整输入、字段和标签,以反映语言的词汇, 词序和方向。

英文的“list_repeat”代码块 西班牙语的“列表”重复区块 韩语中的“list_repeat”代码块 从右到左的阿拉伯语 list_repeat 代码块

以下所有情况具有相同的 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}"
}

字符串表

lists_repeat 示例包含多个 "%{BKY_...}" 字符串。每个 这是对 Blockly.Msg 字符串表中某个字符串的引用。当 实例化块之后,Blockly 会尝试将字符串替换为该值。

例如,%{BKY_LISTS_REPEAT_TITLE} 会替换为 Blockly.Msg['LISTS_REPEAT_TITLE'](如果存在)。如果该值不存在, %{BKY_...} 表示法会保留在原位,Blockly 会发出警告 。

如示例中所示,该表示法在多个位置都适用。消息 和提示允许用户替换用户可见字符串。同样, 字段也可使用商品文本的表示法。帮助网址可本地化为 确保系统将用户定向到类似的本地化网页。最后, colour 值可以使用表示法来帮助集中显示区块面板。

如果您使用的是 JavaScript 实现,并且不希望更改 那么您可能会发现使用直接引用更为方便。对于 例如 Blockly.Msg['LISTS_REPEAT_TITLE']Blockly.Msg.LISTS_REPEAT_TITLE'

字符串表通过任意一个特定于语言的 .js 文件(位于 msg/js。加载 相应的文件添加到您的网页中,以加载正确的禁播翻译。

JSON 消息插值

message0 属性(以及 message1message2 等)决定了输入, 字段和周围的标签文本。对于LISTS_REPEAT_TITLE,在 lists_repeat 代码块,英语值为:

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

两个插值标记 %1%2 用于标记两个输入的位置。 更多详情请参阅 args0 数组。args1 对应的是 message1 字符串。请参阅 创建自定义组成要素

插值标记之间的文本会转换为未命名的标记, 标签字段。这样会生成 代码块的顺序及其读取方式:

// 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 مرات";

重建字符串表

构建字符串表 .js 文件是 build:langfiles 脚本的一部分。通过 脚本会获取标识符键和 msg/messages.js 以创建新的 en.json。 然后与 找到的翻译“ ”结合 其他 JSON 文件 它会重新创建 JavaScript 字符串表 包括新增的 en.js

非英语 JSON 文件由以下合作伙伴提供: TranslateWiki。请参阅 已开启注释 翻译 详细了解您可以如何提供帮助。