翻译

Blockly 中的默认消息(例如上下文菜单中的文本)已翻译成多种不同的语言。默认情况下,系统会加载 en 语言区域,但也可以添加其他可用语言区域。

使用 npm 配置语言区域

使用 import * as Blockly from 'blockly'; 导入 Blockly 时,您将获得默认模块:Blockly 核心、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 消息目录中添加相应的脚本 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'],其中应包含您配置的语言区域的字符串。