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. 自動生成されたファイルが正しいことを確認します。スクリプトは qqq.json の先頭にある @metadata セクションを削除する場合があります。この場合は、新しい文字列が追加され、@metadata が削除されないように、変更を慎重に元に戻す必要があります。
  4. 機能コードで、Blockly.Msg['MY_NEW_MESSAGE'] を使用して新しい文字列を参照します。
  5. msg ファイルに対するすべての変更を、機能コードとともに commit します。

たとえば、次のコードを 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 は省略可能としてマークされることがよくあります。

言語は、25% 以上完成している場合にのみ Blockly リポジトリにコミットされます。そのため、翻訳の必要性が低いメッセージを省略可能としてマークすることで、省略可能な翻訳を完了しなくても、これらの言語がしきい値を満たすことができます。


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

Notranslate アイテム

デフォルトのブロック カテゴリに使用される色は {{notranslate}} でマークされています。これらの色はローカライズを目的としたものではありませんが、ローカライズ システムに組み込まれているため、デベロッパーはデフォルトのカテゴリのブロックの色を簡単に変更できます。新しいブロック カテゴリを追加する場合は、{{notranslate}} ディレクティブを使用します。翻訳すべきでないと思われる別の種類のメッセージを追加する場合は、ローカライズ システムがその文字列に適しているかどうかを検討してください。


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