Localiser des blocs

Blockly accepte les définitions de bloc qui peuvent être localisées dans la langue de l'utilisateur. Grâce à l'utilisation de tables de chaînes, les chaînes de message dans la définition du bloc JSON adapter les entrées, les champs et les étiquettes pour refléter le vocabulaire de la langue l’ordre des mots et la direction.

"Lists_repeat block" en anglais Bloc "list_repeat" en espagnol Bloc "list_repeat" en coréen list_repeat bloc en arabe de droite à gauche

Tous ces cas partagent la même définition de bloc JSON:

// Block for creating a list with one element repeated.
{
  "type": "lists_repeat",
  "message0": "%{BKY_LISTS_REPEAT_TITLE}",
  "args0": [
    {
      "type": "input_value",
      "name": "ITEM"
    },
    {
      "type": "input_value",
      "name": "NUM",
      "check": "Number"
    }
  ],
  "output": "Array",
  "colour": "%{BKY_LISTS_HUE}",
  "tooltip": "%{BKY_LISTS_REPEAT_TOOLTIP}",
  "helpUrl": "%{BKY_LISTS_REPEAT_HELPURL}"
}

Table à chaînes

L'exemple lists_repeat inclut plusieurs chaînes "%{BKY_...}". Chacun de ces éléments il s'agit d'une référence à une chaîne de la table de chaînes Blockly.Msg. Lorsque est instancié, Blockly tente de remplacer la chaîne par la valeur.

Par exemple, %{BKY_LISTS_REPEAT_TITLE} est remplacé par la valeur de Blockly.Msg['LISTS_REPEAT_TITLE'], le cas échéant. Si la valeur n'existe pas, la notation %{BKY_...} est conservée et Blockly émet un avertissement pour la traduction manquante.

Comme le montre l'exemple, la notation fonctionne à plusieurs endroits. Les messages et les info-bulles permettent de remplacer les chaînes visibles par l'utilisateur. De même, la liste déroulante peuvent également utiliser la notation pour le texte de l'élément. L'URL d'aide peut être localisée en s'assurer que l'utilisateur est redirigé vers une page localisée similaire Pour finir, La valeur colour peut utiliser la notation permettant de centraliser la palette de blocs.

Si vous utilisez l'implémentation JavaScript et que vous ne prévoyez pas de modifier la langage utilisateur lors de l'exécution, vous trouverez peut-être plus facile d'utiliser une référence directe. Pour (par exemple, Blockly.Msg['LISTS_REPEAT_TITLE'] ou Blockly.Msg.LISTS_REPEAT_TITLE'

Les tables de chaînes sont chargées via l'un des fichiers .js spécifiques au langage dans msg/js Chargez le approprié sur votre page Web pour charger la bonne traduction de bloc.

Interpolation de message JSON

L'attribut message0 (ainsi que message1, message2, etc.) déterminent les entrées, et le texte environnant. Pour LISTS_REPEAT_TITLE dans le lists_repeat, la valeur en anglais est:

Blockly.Msg.LISTS_REPEAT_TITLE = 'create list with item %1 repeated %2 times';

Deux repères d'interpolation, %1 et %2, indiquent l'emplacement des deux entrées. Vous trouverez plus de détails dans le tableau args0. args1 correspondrait à la chaîne message1. Consultez le Créer des éléments de base personnalisés pour en savoir plus sur la spécification des entrées et des champs du bloc.

Le texte situé entre les repères d'interpolation est converti en texte sans nom. champs de libellé. Cela crée le mot l'ordre du bloc et la façon dont il se lit:

// In Spanish
Blockly.Msg.LISTS_REPEAT_TITLE = "crear lista con el elemento %1 repetido %2 veces";
// In Korean
Blockly.Msg.LISTS_REPEAT_TITLE = "%1 %2 넣어, 리스트 생성";

Lors de la traduction dans une langue qui s'écrit de droite à gauche, la chaîne du message est écrite en l'ordre visuel et ne doivent pas inclure de commandes d'orientation Unicode:

// In Arabic. Note how %2 is left of %1, since it read right to left.
Blockly.Msg.LISTS_REPEAT_TITLE = "إنشئ قائمة مع العنصر  %1 %2 مرات";

Reconstruction des tables de chaînes

La création des fichiers .js de la table de chaînes fait partie du script build:langfiles. La utilise les clés d'identification et les traductions en anglais msg/messages.js pour créer un en.json. Elle est ensuite combinée avec toute traduction trouvée dans Les autres fichiers JSON, elle recrée les mises à jour Tables de chaînes JavaScript pour toutes les langues, en.js

Les fichiers JSON dans une autre langue que l'anglais proviennent de partenaires situés à l'adresse TranslateWiki. Consultez le notes sur traduire pour savoir comment vous pouvez nous aider.