翻譯

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 訊息目錄中加入適當的指令碼 src,就能自動加入翻譯。

<script src="../../blockly_compressed.js"></script>
<script src="../../blocks_compressed.js"></script>
<script src="../../msg/js/ar.js"></script>

自訂翻譯

封鎖所有預設字串的翻譯,但如果您有包含文字的自訂區塊,您可能會想加入這些字串的翻譯。例如,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'],這個字串應包含已設定語言代碼的字串。