Neues Lokalisierungstoken zu Blockly-Kern hinzufügen

Wenn Sie Blockly Core eine Funktion hinzufügen, für die neue für Nutzer sichtbare Strings erforderlich sind, müssen Sie diese Strings zu Blockly.Msg hinzufügen, damit sie von Translatewiki übersetzt werden können. Informationen zum Hinzufügen von Lokalisierungstokens für Ihre eigene Anwendung finden Sie unter Lokalisierung.

  1. Fügen Sie der Datei msg/messages.js den neuen String mit einem geeigneten Namen und einer geeigneten Beschreibung hinzu.
  2. Führen Sie npm run messages aus, um Ihre Übersetzung automatisch den Dateien msg/json/qqq.json und msg/json/en.js hinzuzufügen. In einigen Fällen kann sich durch diesen Schritt auch msg/json/constants.js oder msg/json/synonyms.js ändern.
  3. Prüfen Sie die automatisch generierten Dateien auf Richtigkeit. Das Script kann den @metadata-Abschnitt am Anfang von qqq.json entfernen. In diesem Fall sollten Sie die Änderung sorgfältig rückgängig machen, damit der neue String hinzugefügt wird, aber @metadata nicht entfernt wird.
  4. Verweisen Sie im Code Ihrer Funktion mit Blockly.Msg['MY_NEW_MESSAGE'] auf den neuen String.
  5. Übernehmen Sie alle Änderungen an den msg-Dateien zusammen mit Ihrem Funktionscode.

Wenn Sie beispielsweise diesen Code zu msg/messages.js hinzufügen:

/** @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!';

Führen Sie dann npm run messages aus. In msg/en.json sollten die folgenden Änderungen angezeigt werden:

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

und in msg/qqq.json:

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

Anschließend können Sie mit Blockly.Msg['MY_NEW_MESSAGE'] im Code auf diesen String verweisen.

Übersetzungshinweise

Der Kommentar mit drei Schrägstrichen in msg/messages.js wird TranslateWiki-Nutzern als zusätzliche Information bei der Übersetzung angezeigt. Geben Sie an, wo die Nachricht Nutzern angezeigt wird. Wenn die Nachricht Parameter enthält (z.B. %1) und erläutern Sie die Bedeutung der Parameter.

Hier ist ein Beispiel für einen guten Übersetzungshinweis, in dem die Parameter erläutert werden und ein Link zu weiteren Informationen enthalten ist.

/** @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';

Kontexttypen

Viele der Hinweise verwenden ein Präfix, um den Kontext einer Nachricht zu erläutern. Häufige Präfixe:

  • Text-Overlay-Anzeigen blockiert
  • Schaltflächentext
  • Kontextmenü
  • Drop-down-Menü
  • Mathe
  • Toast-Benachrichtigung
  • Kurzinfo

Wenn Ihre Nachricht in einem dieser Kontexte angezeigt wird, verwenden Sie das entsprechende Präfix.

Synonyme

Manchmal muss ein Nachrichtenschlüssel geändert werden, die Übersetzungen jedoch nicht. In diesem Fall können Sie die alte Nachricht als Synonym der neuen Nachricht festlegen:

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

Optionale Nachrichten

Einige Nachrichtenstrings müssen wahrscheinlich nur unter bestimmten Umständen übersetzt werden, z. B. Eigennamen oder Symbole. In Blockly sind Hilfe-URLs oft als optional gekennzeichnet.

Sprachen werden nur dann im Blockly-Repository gespeichert, wenn sie zu mindestens 25 % vollständig sind. Wenn Sie Nachrichten, die wahrscheinlich nicht übersetzt werden müssen, als optional kennzeichnen, können Sie die Mindestanzahl für diese Sprachen erreichen, ohne die optionalen Übersetzungen abschließen zu müssen.


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

Elemente, die nicht übersetzt werden sollen

Die Farben, die für Standardblockkategorien verwendet werden, sind mit {{notranslate}} gekennzeichnet. Diese Farben sind nicht für die Lokalisierung vorgesehen, befinden sich aber im Lokalisierungssystem, damit Entwickler die Farben von Blöcken in den Standardkategorien einfach ändern können. Wenn Sie neue Blockierungskategorien hinzufügen, verwenden Sie die Direktive {{notranslate}}. Wenn Sie eine andere Art von Nachricht hinzufügen, die Ihrer Meinung nach niemals übersetzt werden sollte, sollten Sie überlegen, ob das Lokalisierungssystem der richtige Ort für den String ist.


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