Blockly 支持可本地化为用户语言的块定义。 通过使用字符串表,JSON 块定义中的消息字符串 可以调整输入、字段和标签,以反映语言的词汇, 词序和方向。
以下所有情况具有相同的 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
属性(以及 message1
、message2
等)决定了输入,
字段和周围的标签文本。对于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。请参阅 已开启注释 翻译 详细了解您可以如何提供帮助。