Blockly 中的默认消息(例如上下文菜单中的文本)已翻译成多种不同语言。系统会默认加载 en
语言区域,但也可以包含其他可用的语言区域。
使用 npm 配置语言区域
使用 import * as Blockly from 'blockly';
导入 Blockly 时,您将获得默认模块:Blockly core、Blockly 内置代码块、JavaScript 生成器和英语 lang 文件。
要使用其他语言区域,您需要更仔细地定义导入:
导入 Blockly 默认模块
import * as Blockly from 'blockly/core';
import 'blockly/blocks';
import 'blockly/javascript'; // Or the generator of your choice
导入 Blockly 语言
例如,如需导入法语邮件集:
import * as Fr from 'blockly/msg/fr';
如需查看受支持的 Blockly 语言区域的完整列表,请参阅:https://github.com/google/blockly/tree/master/msg/js
配置语言区域
导入所需的消息集后,您需要在 Blockly 中设置语言区域。此函数目前仅包含在 Blockly 的 npm 版本中。
Blockly.setLocale(Fr);
需要在加载工作区之前调用此方法。
在不使用 npm 的情况下配置语言区域
添加 Blockly msg 目录中的相应脚本 src,即可自动包含翻译。
<script src="../../blockly_compressed.js"></script>
<script src="../../blocks_compressed.js"></script>
<script src="../../msg/js/ar.js"></script>
自定义翻译
Blockly 包含其所有默认字符串的翻译,但如果您有包含文本的自定义块,不妨包含这些字符串的自定义翻译。例如,blockly/msg/es
的结构类似于以下内容:
Blockly.Msg["COLOUR_RGB_RED"] = "rojo";
您可以使用包含自定义翻译的对象调用 setLocale
,从而在 Blockly.Msg
对象上添加其他自定义消息作为新属性。您不妨为翻译加上自定义前缀的前缀,以免与将来可能添加的任何默认翻译发生冲突。
// In custom_es.js
export const CustomEs = {
HELLO: "Hola",
}
// In your setup code
import * as Es from blockly/msg/Es;
import { CustomEs } from ../custom_es;
Blockly.setLocale(Es);
Blockly.setLocale(CustomEs);
setLocale
将输入对象中的每个键放入 Blockly.Msg
中。您可以使用不同的键多次调用它,但使用重复的键再次调用它会覆盖第一次的键。
如需在您的块中引用已翻译的字符串,请使用 Blockly.Msg['HELLO']
,它应包含已配置的语言区域的字符串。