Blockly admite definiciones de bloques que se pueden localizar al idioma del usuario. A través del uso de tablas de cadenas, las cadenas de mensajes en la definición del bloque JSON puede adaptar las entradas, los campos y las etiquetas para reflejar el vocabulario del lenguaje. el orden y la dirección de las palabras.
Todos estos casos comparten la misma definición de bloque 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}"
}
Tabla de cadenas
El ejemplo de lists_repeat
incluye varias cadenas "%{BKY_...}"
. Cada uno de
Esta es una referencia a una cadena de la tabla de cadenas Blockly.Msg
. Cuando
bloque, Blockly intenta reemplazar la cadena con el valor.
Por ejemplo, %{BKY_LISTS_REPEAT_TITLE}
se reemplaza por el valor de
Blockly.Msg['LISTS_REPEAT_TITLE']
, si existe. Si el valor no existe,
la notación %{BKY_...}
se mantiene en su lugar y Blockly emite una advertencia
de la traducción que falta.
Como se muestra en el ejemplo, la notación funciona en varios lugares. Los mensajes
y los cuadros de información permiten reemplazar las cadenas visibles para el usuario. Del mismo modo, el menú desplegable
los campos también pueden usar la notación para el texto del elemento. La URL de ayuda se puede localizar para
asegurarse de que se dirija al usuario a una página localizada similar Por último,
El valor colour
puede usar la notación para ayudar a centralizar la paleta de bloques.
Si usas la implementación de JavaScript y no esperas cambiar la
lenguaje del usuario durante el tiempo de ejecución, puede que te resulte más fácil usar una referencia directa. Para
Por ejemplo, Blockly.Msg['LISTS_REPEAT_TITLE']
o
Blockly.Msg.LISTS_REPEAT_TITLE'
Las tablas de cadenas se cargan a través de cualquiera de los archivos .js
específicos del lenguaje en
msg/js
Carga el archivo
en tu página web para cargar la traducción correcta del bloque.
Interpolación de mensajes JSON
El atributo message0
(y message1
, message2
, etc.) dictan las entradas.
campos y el texto de la etiqueta circundante. Para LISTS_REPEAT_TITLE
en el
lists_repeat
, el valor en inglés es el siguiente:
Blockly.Msg.LISTS_REPEAT_TITLE = 'create list with item %1 repeated %2 times';
Dos marcadores de interpolación, %1
y %2
, marcan las ubicaciones de las dos entradas.
Se proporcionan más detalles en el array args0
. args1
correspondería a
la cadena message1
. Consulta la
Crea componentes personalizados
para obtener más detalles sobre cómo especificar entradas y campos en bloque.
El texto entre los marcadores de interpolación se convierte en texto sin nombre. campos de etiquetas. Esto crea la palabra el orden del bloque y cómo se lee:
// 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번 넣어, 리스트 생성";
Cuando se traduce a idiomas que se leen de derecha a izquierda, la cadena del mensaje se escribe en el orden visual y no deben incluir comandos de dirección Unicode:
// In Arabic. Note how %2 is left of %1, since it read right to left.
Blockly.Msg.LISTS_REPEAT_TITLE = "إنشئ قائمة مع العنصر %1 %2 مرات";
Vuelve a compilar tablas de cadenas
La compilación de los archivos .js
de la tabla de cadenas forma parte de la secuencia de comandos build:langfiles
. El
toma las claves de identificación y las traducciones en inglés de
msg/messages.js
para crear un nuevo en.json
.
Luego, junto con cualquier traducción que se encuentre en
los otros archivos JSON,
se recreará, actualizada
Tablas de cadenas de JavaScript
para todos los idiomas, incluida una nueva
en.js
Los archivos JSON en idiomas distintos del inglés provienen de socios de TranslateWiki. Consulta la notas sobre traduciendo para obtener detalles sobre cómo puedes ayudar.