Localize Blocks
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}"
}
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的合作伙伴。有关如何提供帮助的详细信息,请参阅翻译说明。
9347

被折叠的 条评论
为什么被折叠?



