Localiza bloques

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.

Bloquelist_repetir en inglés Bloque list_repeat en inglés Bloque lists_repeat en coreano Bloque lists_repeat en árabe con orientación de derecha a izquierda

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.