Переводы

Сообщения по умолчанию в Blockly (например, текст в контекстном меню) переведены на множество разных языков. Язык en загружается по умолчанию, но можно включить и другие доступные языки.

Настройка локали с помощью npm

Когда вы импортируете Blockly с помощью import * as Blockly from 'blockly'; вы получите модули по умолчанию: ядро ​​Blockly, встроенные блоки Blockly, генератор JavaScript и файлы английского языка.

Чтобы использовать другие локали, вам нужно более тщательно определить импорт:

Импорт модулей Blockly по умолчанию

import * as Blockly from 'blockly/core';
import 'blockly/blocks';
import 'blockly/javascript'; // Or the generator of your choice

Импортировать блочные языки

Например, чтобы импортировать набор сообщений на французском языке:

import * as Fr from 'blockly/msg/fr';

Полный список поддерживаемых локалей Blockly см. на странице https://github.com/google/blockly/tree/master/msg/js .

Настроить локаль

После импорта желаемого набора сообщений вам нужно будет установить локаль в Blockly. Эта функция в настоящее время включена только в npm-версию Blockly.

Blockly.setLocale(Fr);

Это необходимо вызвать до загрузки рабочей области.

Настройка локали без npm

Включите соответствующий скрипт src из каталога Blockly msg, и переводы будут включены автоматически.

<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";

Вы можете добавить дополнительные пользовательские сообщения в качестве новых свойств объекта Blockly.Msg , вызвав setLocale с объектом с вашими пользовательскими переводами. Возможно, вы захотите добавить к своим переводам собственный префикс, чтобы избежать конфликтов с переводами по умолчанию, которые могут быть добавлены в будущем.

// 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'] который должен содержать строку для настроенного вами языкового стандарта.