Добавить новый токен локализации в ядро Blockly

Если вы добавляете в ядро Blockly функцию, требующую новых видимых пользователю строк, необходимо добавить эти строки в Blockly.Msg , чтобы их можно было перевести с помощью Translatewiki . (Информацию о добавлении токенов локализации для вашего приложения см. в разделе «Локализация» .)

  1. Добавьте новую строку с соответствующим именем и описанием в файл msg/messages.js .
  2. Запустите npm run messages , чтобы автоматически добавить ваш перевод в файлы msg/json/qqq.json и msg/json/en.js . В некоторых случаях этот шаг может также изменить msg/json/constants.js или msg/json/synonyms.js .
  3. Проверьте корректность автоматически сгенерированных файлов. Обратите внимание, что скрипт может удалить раздел @metadata в начале файла qqq.json . В этом случае следует аккуратно отменить это изменение, чтобы новая строка была добавлена, но @metadata не был удалён.
  4. В коде вашей функции добавьте ссылку на новую строку с помощью Blockly.Msg['MY_NEW_MESSAGE'] .
  5. Зафиксируйте все изменения в файлах msg вместе с кодом вашей функции.

Например, если вы добавите этот код в msg/messages.js :

/** @type {string} */
/// This is a hint to translators about the context for the message.
Blockly.Msg.MY_NEW_MESSAGE = 'This is a string that users will see!';

Затем запустите npm run messages , вы должны увидеть следующие изменения в msg/en.json :

// ...
    "MY_NEW_MESSAGE": "This is a message that users will see!",
// ...

и в msg/qqq.json :

// ...
    "MY_NEW_MESSAGE": "This is a hint to translators about the context for the message.",
// ...

Затем вы можете ссылаться на эту строку в коде с помощью Blockly.Msg['MY_NEW_MESSAGE'] .

Подсказки по переводу

Комментарий с тремя косыми чертами в msg/messages.js отображается пользователям TranslateWiki в качестве дополнительной информации при переводе. Укажите контекст, где сообщение будет показано пользователям. Если сообщение содержит параметры (например, %1 ), объясните их значение.

Вот пример хорошей подсказки по переводу, которая объясняет параметры и предоставляет ссылку на дополнительную информацию.

/** @type {string} */
/// block text - Repeatedly counts a variable (%1)
/// starting with a (usually lower) number in a range (%2),
/// ending with a (usually higher) number in a range (%3), and counting the
/// iterations by a number of steps (%4).  As in
/// [https://github.com/google/blockly/wiki/Loops#count-with
/// https://github.com/google/blockly/wiki/Loops#count-with].
Blockly.Msg.CONTROLS_FOR_TITLE = 'count with %1 from %2 to %3 by %4';

Типы контекста

Многие подсказки используют префикс для пояснения контекста сообщения. Вот распространённые префиксы:

  • блочный текст
  • текст кнопки
  • контекстное меню
  • падать
  • математика
  • уведомление о тосте
  • подсказка

Если ваше сообщение появляется в одном из этих контекстов, используйте соответствующий префикс.

Синонимы

Иногда требуется изменить ключ сообщения, но не перевод. В этом случае можно установить старое сообщение как синоним нового, например:

/** @type {string} */
Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;

Дополнительные сообщения

Перевод некоторых строк сообщений, например, имён собственных или символов, вряд ли потребуется, за исключением определённых случаев. В Blockly URL-адреса справки часто помечены как необязательные.

Переводы на языки передаются в репозиторий Blockly только при условии, что их готовность составляет не менее 25%. Таким образом, отметка сообщений, которые вряд ли потребуют перевода, как необязательных, поможет этим языкам достичь порогового значения без необходимости выполнять необязательные переводы.


/** @type {string} */
/// {{Optional}} math - The symbol for the binary operation addition.
Blockly.Msg.MATH_ADDITION_SYMBOL = '+';

Элементы Notranslate

Цвета, используемые для категорий блоков по умолчанию, обозначены {% verbatim %} {% endverbatim %}. Эти цвета не предназначены для локализации, но присутствуют в системе локализации, чтобы разработчики могли легко изменять цвета блоков в категориях по умолчанию. При добавлении новых категорий блоков используйте {% verbatim %}. Директива {% endverbatim %}. Если вы добавляете другой тип сообщения, который, по вашему мнению, никогда не следует переводить, подумайте, подходит ли система локализации для этой строки.


/** @type {string} */
/// {{Notranslate}} Hue value for all logic blocks.
Blockly.Msg.LOGIC_HUE = '210';