Formatos de mensajes de localización

Cada extensión o app internacionalizada tiene al menos un archivo llamado messages.json que proporciona específicas de la configuración regional. En esta página, se describe el formato de los archivos messages.json. Para obtener información sobre para obtener información sobre internacionalización y localización, consulta la página Internacionalización.

Resumen de campos

En el siguiente código, se muestran los campos admitidos para messages.json. Solo el campo "name" y "mensaje" Los campos son obligatorios.

{
  "name": {
    "message": "Message text, with optional placeholders.",
    "description": "Translator-aimed description of the message.",
    "placeholders": {
      "placeholder_name": {
        "content": "A string to be placed within the message.",
        "example": "Translator-aimed example of the placeholder string."
      },
      ...
    }
  },
  ...
}

Ejemplo

Este es un archivo messages.json que define tres mensajes llamados "prompt_for_name", "hello" y “bye”:

{
  "prompt_for_name": {
    "message": "What's your name?",
    "description": "Ask for the user's name"
  },
  "hello": {
    "message": "Hello, $USER$",
    "description": "Greet the user",
    "placeholders": {
      "user": {
        "content": "$1",
        "example": "Cira"
      }
    }
  },
  "bye": {
    "message": "Goodbye, $USER$. Come back to $OUR_SITE$ soon!",
    "description": "Say goodbye to the user",
    "placeholders": {
      "our_site": {
        "content": "Example.com",
      },
      "user": {
        "content": "$1",
        "example": "Cira"
      }
    }
  }
}

Detalles del campo

En esta sección, se describe cada campo que puede aparecer en un archivo messages.json. Para obtener detalles sobre cómo de mensajes de Google (por ejemplo, qué sucede cuando una configuración regional no define todos los mensajes), consulta Internacionalización.

nombre

De hecho, no hay ningún campo llamado "name". El nombre de este campo es el nombre del mensaje; el mismo name que ves en __MSG__name___ o getMessage("_name_").

El nombre no distingue mayúsculas de minúsculas, y te permite recuperar el texto localizado del mensaje. El nombre solo incluya los siguientes caracteres:

  • A-Z
  • a-z
  • 0-9
  • _ (guion bajo)
  • @
Nota: No definas nombres que comiencen con “@@”. Esos nombres están reservados para mensajes predefinidos.

Aquí hay tres ejemplos de nombres tomados de la sección Ejemplo:

"prompt_for_name": {
  ...
},
"hello": {
  ...
},
"bye": {
  ...
}

Para obtener más ejemplos de uso de nombres, consulta la página Internacionalización.

mensaje

Es el mensaje traducido, en el formato de una cadena que puede contener marcadores de posición. Usa $_placeholder_name_$ (no distingue mayúsculas de minúsculas) para hacer referencia a un marcador de posición en particular. Por ejemplo, puedes hacer referencia a un marcador de posición llamado "our_site" como $our_site$, $OUR_SITE$ o $oUR_sITe$.

Aquí hay tres ejemplos de mensajes extraídos de la sección Ejemplo:

"message": "What's your name?"
...
"message": "Hello, $USER$"
...
"message": "Goodbye, $USER$. Come back to $OUR_SITE$ soon!"

Para colocar un signo de dólar ($) en la cadena, usa $$. For example, use the following code to specify the message Amount (in $):

"message": "Amount (in $$)"
.

Aunque los marcadores de posición como $USER$ son la forma preferida de referirse a las cadenas de sustitución (cadenas especificadas con el parámetro pulsaciones de i18n.getMessage) también puedes consultar para sustituir cadenas directamente en el mensaje. Por ejemplo, el siguiente mensaje se refiere a las tres primeras strings de sustitución que se pasaron a getMessage():

"message": "Params: $1, $2, $3"

A pesar de ese ejemplo, te recomendamos que uses marcadores de posición en lugar de cadenas $_n_. en tus mensajes. Piensa en los marcadores de posición como buenos nombres de variables. Una semana después de escribir tu código, probablemente olvidarás a qué se refiere $1, pero sabrás a qué se refieren tus marcadores de posición. Para obtener más información sobre marcadores de posición y strings de sustitución, consulta la sección de marcadores de posición.

descripción

Opcional. Una descripción del mensaje, con la intención de proporcionar contexto o detalles para ayudar al traductor la mejor traducción posible.

Aquí hay tres ejemplos de descripciones tomados de la sección Ejemplo:

"description": "Ask for the user's name"
...
"description": "Greet the user"
...
"description": "Say goodbye to the user"

marcadores de posición

Opcional. Define una o más subcadenas que se usarán en el mensaje. Estas son dos razones por las que puedes usar un marcador de posición:

  • Para definir el texto de una parte de tu mensaje que no debe traducirse. Ejemplos: código HTML, nombres de marcas comerciales y especificadores de formato.
  • Para hacer referencia a una string de sustitución pasada a getMessage(). Ejemplo: $1.

Cada marcador de posición tiene un nombre, un “contenido”. elemento y un “ejemplo” opcional elemento. El nombre de un marcador de posición no distingue mayúsculas de minúsculas y puede contener los mismos caracteres que el nombre de un mensaje.

El «contenido» valor del elemento es una cadena que puede referirse a cadenas de sustitución, que se especifican con el parámetro initials del método i18n.getMessage. El valor de un "contenido" el elemento es normalmente, algo como "Example.com", o "USD 1". Si te refieres a una cadena de sustitución que no obtienes una cadena vacía. En la siguiente tabla, se muestra cómo se corresponden las strings $_n_ con las strings especificada por el parámetro initials.

Parámetro optionalsValor de USD 1Valor de USD 2Valor de USD 3
userNamevalor de userName""""
["Cira", "Kathy"]"Cira""Kathy"""

El “ejemplo” elemento (opcional, pero altamente recomendado) ayuda a los traductores, ya que muestra cómo el contenido se muestra al usuario final. Por ejemplo, un marcador de posición para un importe en dólares debe tener un ejemplo como "$23.45"

El siguiente fragmento, tomado de la sección Example, muestra un “marcador de posición” elemento que contiene dos marcadores de posición llamados “our_site” y "usuario". El sitio "our_site" el marcador de posición no tiene “ejemplo” porque su valor es obvio a partir del "contenido" .

"placeholders": {
  "our_site": {
    "content": "Example.com",
  },
  "user": {
    "content": "$1",
    "example": "Cira"
  }
}