O Blockly oferece suporte a definições de bloco que podem ser localizadas para o idioma do usuário. Ao usar tabelas de strings, as strings de mensagens na definição do bloco JSON pode adaptar as entradas, os campos e os rótulos para refletir o vocabulário do idioma; ordenação de palavras e direção.
Todos esses casos compartilham a mesma definição de bloco 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}"
}
Tabela de strings
O exemplo lists_repeat
inclui várias strings "%{BKY_...}"
. Cada um de
Essa é uma referência a uma string na tabela de strings Blockly.Msg
. Quando o
bloco é instanciado, o Blockly tenta substituir a string pelo valor.
Por exemplo, %{BKY_LISTS_REPEAT_TITLE}
é substituído pelo valor de
Blockly.Msg['LISTS_REPEAT_TITLE']
, se houver. Se o valor não existir,
a notação %{BKY_...}
é mantida e emite um aviso no Blockly.
para a tradução que está faltando.
Como mostrado no exemplo, a notação funciona em diversos locais. As mensagens
e as dicas de ferramentas permitem que strings visíveis ao usuário sejam substituídas. Da mesma forma, o menu suspenso
também podem usar a notação para o texto do item. O URL de ajuda pode ser localizado para
garantir que o usuário seja direcionado para uma página localizada de forma semelhante. E, por fim, o
O valor colour
pode usar a notação para ajudar a centralizar a paleta de blocos.
Se você estiver usando a implementação JavaScript e não esperar alterar o
do usuário no ambiente de execução, pode ser mais fácil usar uma referência direta. Para
por exemplo, Blockly.Msg['LISTS_REPEAT_TITLE']
ou
Blockly.Msg.LISTS_REPEAT_TITLE'
.
As tabelas de strings são carregadas por qualquer um dos arquivos .js
específicos do idioma no
msg/js
. Carregue
arquivo apropriado na sua página da Web para carregar a tradução em bloco correta.
Interpolação de mensagens JSON
Os atributos message0
(e message1
, message2
etc.) determinam as entradas,
campos e o texto do rótulo ao redor. Para LISTS_REPEAT_TITLE
em
lists_repeat
, o valor em inglês será:
Blockly.Msg.LISTS_REPEAT_TITLE = 'create list with item %1 repeated %2 times';
Dois marcadores de interpolação, %1
e %2
, marcam os locais das duas entradas.
Mais detalhes são fornecidos na matriz args0
. args1
corresponderia a
a string message1
. Consulte a
Criar blocos personalizados
para mais detalhes sobre como especificar entradas e campos de bloco.
O texto entre os marcadores de interpolação é convertido em caracteres campos de rótulo. Isso cria a palavra do bloco e como ele se lê:
// 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번 넣어, 리스트 생성";
Ao traduzir para idiomas da direita para a esquerda, a string da mensagem é escrita em a ordem visual e não deve incluir comandos de direção Unicode:
// In Arabic. Note how %2 is left of %1, since it read right to left.
Blockly.Msg.LISTS_REPEAT_TITLE = "إنشئ قائمة مع العنصر %1 %2 مرات";
Como recriar tabelas de strings
A criação dos arquivos .js
da tabela de strings faz parte do script build:langfiles
. A
usa as chaves do identificador e as traduções em inglês
msg/messages.js
para criar um novo en.json
.
Então, combinado com as traduções encontradas em
os outros arquivos JSON,
ele vai recriar
Tabelas de strings JavaScript
para todos os idiomas, incluindo um novo
en.js
Os arquivos JSON em idiomas diferentes do inglês vêm de parceiros da TranslateWiki. Consulte a observações sobre tradução para mais detalhes sobre como você pode ajudar.