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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值