Gadgets y la internacionalización (i18n)

En este documento se describe cómo crear gadgets a los que se puedan aplicar ajustes de configuración regional fácilmente para un público internacional.

Contenido

  1. Introducción
  2. Conceptos básicos
  3. Codificación para la internacionalización
  4. Ejemplo
  5. Creación de un gadget con configuración regional
  6. Grupos de mensajes
    1. Convenciones de nomenclatura
    2. Prácticas recomendadas
  7. Uso de grupos de mensajes en un gadget
    1. Sustitución de mensajes
    2. Acceso a mensajes de grupos de mensajes
    3. Visualización de mensajes en el código HTML del gadget
  8. Especificación del gadget "Hello World"
  9. Creación de gadgets bidireccionales
    1. Modificación de la dirección de parte de un gadget
  10. Pruebas
  11. Almacenamiento en caché
  12. Resolución de problemas

Introducción

El API de gadgets permite ofrecer tus gadgets a un público internacional de una forma muy sencilla. Es muy fácil, lo único que debes hacer es estructurar el gadget de modo que el texto visible por el usuario (cualquier texto que deba traducirse) se encuentre en grupos de mensajes independientes del gadget. A continuación, un traductor externo traducirá las cadenas de texto y crear nuevos grupos de mensajes específicos para la configuración regional, que podrás añadir a la especificación del gadget. De este modo, el gadget estará disponible para un nuevo grupo de usuarios.

Para obtener más información sobre el uso de gadgets en otros idiomas, consulta Gadgets en otros idiomas.

Conceptos básicos

Este documento hace referencia a la internacionalización (i18n) y la localización (l10n):

  • La internacionalización i18n es la estructuración de aplicaciones de modo que se puedan localizar o a las que se pueda aplicar ajustes de configuración regional.
  • La localización L10n consiste en hacer que una aplicación funcione en un mercado concreto como, por ejemplo, el de los usuarios canadienses francófonos.

En este documento, el "perfil de configuración regional" de un usuario se compone de dos componentes: un país (en función del dominio del usuario) y un idioma de interfaz de usuario preferido (consulta Pruebas para obtener más información).

Codificación para la internacionalización

El API de gadgets es compatible con la codificación UTF-8 de los valores de atributo XML y la sección <Content>. Si el tipo de contenido se establece en html, se establecerá automáticamente UTF-8 como la codificación predeterminada. No es recomendable realizar esta acción por tu cuenta.

Ejemplo

En el gadget de muestra utilizado en este documento aparece el mensaje "Hello World" en chino:

Hello World en chino

En este ejemplo, el menú desplegable de preferencias de usuario permite al usuario especificar un color de fuente para el mensaje "Hello World". Los nombres de los colores que aparecen en el menú se definen en archivos externos (grupos de mensajes). El idioma en el que aparecerá el menú depende del perfil de idioma/país del usuario. Si un usuario con el perfil de idioma "inglés" ejecuta este gadget, el texto aparecerá en inglés. A continuación se muestra la versión en inglés del ejemplo con el menú desplegable de preferencias de usuario a la vista:

Hello World en inglés

Consulta la especificación del gadget "Hello World" aquí.

Creación de un gadget con configuración regional

Para crear un gadget con configuración regional, debes seguir estos pasos básicos:

  1. Crea el gadget.
  2. Extrae todo el texto que necesite traducción a grupos de mensajes.
  3. Busca a alguien que te pueda ayudar a traducir el gadget.
  4. El traductor creará un nuevo grupo de mensajes para una configuración regional concreta. Puede ser por idioma (francés) o por idioma/país (francés/Canadá, francés/Francia). Ten en cuenta que los grupos de mensajes que estén en otros idiomas se deben guardar en formato UTF-8.
  5. El traductor te envía una URL al nuevo grupo de mensajes.
  6. Modifica la especificación del gadget para usar este grupo de mensajes.
  7. Si el gadget se encuentra en el directorio de contenido, debes esperar una o dos semanas para que el rastreador y canalizador encuentren el gadget actualizado y lo pongan a disposición del nuevo mercado.

Grupos de mensajes

La estrategia i18n de gadgets se centra en los grupos de mensajes. Los grupos de mensajes son archivos XML que contienen las cadenas traducidas de una configuración regional concreta. Cada cadena se identifica a través de un nombre único idéntico en todos los grupos de mensajes.

Los grupos de mensajes se pueden alojar en cualquier URL y se pueden compartir entre aplicaciones. Los grupos de mensajes sólo contienen una configuración regional.

Los grupos de mensajes tienen el formato siguiente:

<messagebundle>
  <msg name="hello_world"> 
    Hello World. 
  </msg> 
  <msg name="color">Color</msg> 
  <msg name="red">Red</msg> 
  <msg name="green">Green</msg> 
  <msg name="blue">Blue</msg> 
  <msg name="gray">Gray</msg> 
  <msg name="purple">Purple</msg> 
  <msg name="black">Black</msg> 
</messagebundle> 

Los campos posibles que se pueden incluir en un archivo de grupo de mensajes son los siguientes:

  • messagebundle: el grupo de mensajes que necesita traducción.
  • msg: una única parte de contenido traducible, como una etiqueta o frase o incluso un párrafo.
  • msg name: una ID interpretable por humanos para cada mensaje.

Convenciones de nomenclatura

Según la convención, los nombres de los grupos de mensaje se definen del siguiente modo:

<language>_<country>.xml 

Si no existe ningún valor específico para el idioma o país, la convención es usar "ALL". Por ejemplo, el archivo de_ALL.xml se aplica a todos los hablantes de alemán, independientemente de su país. El grupo de mensajes ALL_ALL.xml es el archivo que se usa de forma predeterminada.

Prácticas recomendadas

No existe ningún requisito estricto que exija seguir las convenciones de denominación de los grupos de mensajes. El gadget usa los atributos lang y country de <Locale> para identificar el grupo de mensajes correspondiente al perfil del usuario. No utiliza el nombre del propio grupo de mensajes.

Sin embargo, aunque el API de gadgets ofrece mucha flexibilidad, es recomendable seguir estas directrices:

  • Proporciona siempre un grupo de mensajes ALL_ALL.xml para la administración predeterminada de los mensajes.
  • Especifica una configuración regional por idioma. Es decir, usa fr_ALL, de_ALL, etc.
  • Si necesitas omitir configuraciones regionales específicas, utiliza grupos de mensajes que combinen los valores de idioma y país. Por ejemplo, si quieres que un grupo de mensajes de inglés de Canadá omita en_ALL, usa en_CA, no ALL_CA.

Uso de grupos de mensajes en un gadget

Usa la etiqueta <Locale> (anidada dentro de la sección <ModulePrefs>) para mostrar los grupos de mensajes usados en tu gadget. Por ejemplo:

<ModulePrefs title="i18n Example"> 
  <Locale messages="http://doc.examples.googlepages.com/ALL_ALL.xml"/> 
  <Locale lang="de" messages="http://doc.examples.googlepages.com/de_ALL.xml"/> 
  <Locale lang="zh-cn" messages="http://doc.examples.googlepages.com/zh_cn_ALL.xml"/> 
  <Locale lang="fr" messages="http://doc.examples.googlepages.com/fr_ALL.xml"/> 
  <Locale lang="ja" messages="http://doc.examples.googlepages.com/ja_ALL.xml"/> 
  <Locale lang="es" messages="http://doc.examples.googlepages.com/es_ALL.xml"/> 
  <Locale lang="it" messages="http://doc.examples.googlepages.com/it_ALL.xml"/> 
  <Locale lang="ru" messages="http://doc.examples.googlepages.com/ru_ALL.xml"/> 
</ModulePrefs>

<Locale> puede tener los siguientes atributos:

  • messages: un grupo de mensajes accesible a través de una URL.
  • lang: el idioma al que se han traducido las cadenas del grupo de mensajes.
  • country: la especificación del gadget "Hello World" no incluye ningún ejemplo de este tipo, pero también puedes especificar un atributo de país. Por ejemplo, este grupo de mensajes está personalizado para los usuarios francófonos de Canadá:
<Locale lang="fr" country="CA" messages="http://example.com/fr_CA.xml"/> 

En el tiempo de ejecución, el gadget usa el grupo de mensajes que más se aproxima al perfil del usuario.

Los valores válidos para el idioma son los códigos de idioma de dos dígitos ISO639-1, y para el país los códigos ISO 3166-1 alpha-2.

Sustitución de mensajes

Los grupos de mensajes cuentan con una función de sustitución. Con este recurso, el gadget intenta usar el grupo de mensajes que más se aproxima a la preferencia de la interfaz de país e idioma del usuario. Si el gadget no encuentra una coincidencia exacta, recurre a los grupos de mensajes disponibles para encontrar el más aproximado.

El recurso de sustitución de mensajes permite tener mensajes "predeterminados" (que normalmente se especifican en ALL_ALL.xml), en caso de que no haya ninguno disponible para una configuración regional determinada. 

Por ejemplo, imagina que has especificado lo siguiente en tu gadget:

<Locale messages="http://x.com/ALL_ALL.xml"/> 
<Locale lang="de" messages="http://x.com/de_ALL.xml"/>
<Locale lang="de" country="DE" messages="http://x.com/de_DE.xml"/> 
<Locale lang="de" country="US" messages="http://x.com/de_US.xml"/>

¿Cómo se utilizarían estos archivos? Imagina una usuaria cuyo dominio es EE.UU. (http://www.google.com), pero cuya preferencia de idioma es el alemán. Vería los mensajes del archivo de_US.xml. Si algún mensaje no estuviera disponible en dicho archivo, vería el mensaje de de_ALL.xml y, finalmente, ALL_ALL.xml.

Un usuario de Alemania que utilizase una interfaz en alemán empezaría por de_DE.xml, un usuario de Suiza que utilizase una interfaz en alemán empezaría por de_ALL.xml y un usuario de Suiza que utilizase una interfaz en francés empezaría por ALL_ALL.xml.

Acceso a mensajes de grupos de mensajes

¿Cómo accede un gadget al mensaje adecuado de un grupo de mensajes? Tomemos como ejemplo el archivo de_ALL.xml (idioma alemán, todos los países) del ejemplo "Hello World":

<messagebundle>
  <msg name="hello_world">
    Hallo Welt.
  </msg>
  <msg name="color">Farbe</msg> 
  <msg name="red">Rot</msg> 
  <msg name="green">Grün</msg> 
  <msg name="blue">Blau</msg> 
  <msg name="gray">Grau</msg> 
  <msg name="purple">Purpurrot</msg> 
  <msg name="black">Schwarz</msg>
</messagebundle>

Cada mensaje tiene una cadena de nombre única que lo identifica. Por ejemplo, en este mensaje:

<msg name="red">Rot</msg> 

el nombre único del mensaje es "red" y la cadena traducida que aparece en el gadget (en su menú desplegable de las preferencias de usuario) es "Rot", la palabra alemana para "red". A continuación se incluye el mensaje equivalente del grupo de mensajes ALL_ALL.xml:

<msg name="red">Red</msg> 

La especificación del gadget "Hello World" utiliza la variable de sustitución __MSG_ para indicar si un valor del grupo de mensajes debe reemplazarse. Por ejemplo, esta instrucción XML de la especificación del gadget "Hello World" se utiliza para añadir un elemento de menú al menú desplegable "Color":

<EnumValue value="Red" display_value="__MSG_red__" /> 

A efectos prácticos, el significado de esta línea es "Ir al grupo de mensajes que más se aproxime al perfil de país e idioma, tomar el valor del mensaje llamado 'red' y sustituirlo por __MSG_red__". De este modo, el menú desplegable de preferencias de usuario del ejemplo "Hello World" se rellena con nombres de color (que aquí aparecen en alemán):

Hello World en alemán

Visualización de mensajes en el código HTML del gadget

Para mostrar mensajes en la sección XML del gadget, se utilizan variables de sustitución, como se ha descrito anteriormente. En la sección CDATA del gadget, existen diferentes opciones.

La técnica más simple consiste en introducir la variable de sustitución en el código HTML:

<b>__MSG_hello_world__</b>. 

También se puede usar la función getMsg() de las preferencias del usuario. Ten en cuenta que esta función se puede usar para acceder a todos los mensajes de los grupos de mensajes, no sólo a los relacionados con las preferencias de usuario. Sin embargo, es necesario ejecutar esta función en un objeto Prefs. Por ejemplo:

var prefs = new gadgets.Prefs();
prefs.getMsg(“red”);

Especificación del gadget "Hello World"

A continuación te ofrecemos la especificación del gadget del ejemplo de "Hello World":

<?xml version="1.0" encoding="UTF-8" ?> 
<Module>
  <ModulePrefs title="i18n Example"> 
    <Locale messages="http://doc.examples.googlepages.com/ALL_ALL.xml"/>
    <Locale lang="de" messages="http://doc.examples.googlepages.com/de_ALL.xml"/>
    <Locale lang="zh-cn" messages="http://doc.examples.googlepages.com/zh_cn_ALL.xml"/>
    <Locale lang="fr" messages="http://doc.examples.googlepages.com/fr_ALL.xml"/>
    <Locale lang="ja" messages="http://doc.examples.googlepages.com/ja_ALL.xml"/>
    <Locale lang="es" messages="http://doc.examples.googlepages.com/es_ALL.xml"/>
    <Locale lang="it" messages="http://doc.examples.googlepages.com/it_ALL.xml"/>
    <Locale lang="ru" messages="http://doc.examples.googlepages.com/ru_ALL.xml"/> 
  </ModulePrefs>
  <UserPref name="fontcolor" display_name="__MSG_color__" default_value="Red" datatype="enum">
    <EnumValue value="Red" display_value="__MSG_red__" /> 
    <EnumValue value="Green" display_value="__MSG_green__" /> 
    <EnumValue value="Blue" display_value="__MSG_blue__" /> 
    <EnumValue value="Gray" display_value="__MSG_gray__" /> 
    <EnumValue value="Purple" display_value="__MSG_purple__" /> 
    <EnumValue value="Black" display_value="__MSG_black__" /> 
  </UserPref>
  <Content type="html">
  <![CDATA[
    <div id="content_div"></div>
    <script type="text/javascript"> 
      // Display message in the user's preferred language
      function displayMsg(){
        var div = document.getElementById('content_div');
        // Get userprefs
        var prefs = new gadgets.Prefs();
        // Set font color to user's color choice
        div.style.color = prefs.getString("fontcolor");
        // Display message
        var html = "<br><h1>";
        // Use prefs.getMsg to go to the appropriate message bundle
        // and get the string associated with the "hello_world" message.
        html += prefs.getMsg("hello_world");
        html +=  "</h1>"; 
        div.innerHTML = html;
      }
      gadgets.util.registerOnLoadHandler(displayMsg);
    </script>
  ]]>
  </Content>
</Module>

Creación de gadgets bidireccionales

Puedes usar el API BIDI (bidireccional) para modificar de forma dinámica la dirección de un gadget. La "dirección" hace referencia a la dirección en la que aparece el contenido: de izquierda a derecha, o de derecha a izquierda. Ten en cuenta que la dirección no es lo mismo que la alineación. Por ejemplo, puedes crear un gadget con el texto en inglés alineado a la derecha, pero en el que la dirección del texto siga siendo de izquierda a derecha.

El API BIDI permite crear gadgets compatibles tanto con los idiomas que se escriben de derecha a izquierda (por ejemplo, hebreo y árabe), como con los idiomas que se escriben de izquierda a derecha (por ejemplo, inglés). El API BIDI incluye:

  • Una atributo language_direction en la etiqueta <Locale...>. Su valor puede ser "rtl" (derecha a izquierda) o "ltr" (izquierda a derecha). Usa este atributo para establecer la dirección del gadget. De forma predeterminada, la dirección de los gadgets es de izquierda a derecha.
  • Un conjunto de variables de sustitución __BIDI_... cuyo valor cambia en función de la dirección del gadget. Por ejemplo, la variable __BIDI_DIR__ tendrá el valor "ltr" si el gadget se encuentra en modo de izquierda a derecha, y "rtl" si el gadget está en modo de derecha a izquierda.

Lo más sencillo es utilizar <Locale... language_direction="rtl"> para establecer de forma estática la dirección de un gadget. Por ejemplo, este gadget sólo va a mostrar texto en hebreo, por lo que su dirección siempre se va a establecer de derecha a izquierda:

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs title="כותרת two-כיוונית"        
    height="100">
    <Locale lang="ALL" language_direction="rtl" />
  </ModulePrefs>
  <Content type="html"><![CDATA[
    אני כותב מימין לשמאל ולא הייתי צריך להגדיר 
    dir=rtl בשביל זה!<br>
  ]]>
  </Content>
</Module>

No obstante, supongamos que tiene un gadget que incluye grupos de mensajes en idiomas que se escriben tanto de izquierda a derecha como de derecha a izquierda. ¿Cómo diseñarías tu gadget para que ambos idiomas sean compatibles? A continuación, te ofrecemos un ejemplo de un gadget que cambia de dirección de forma dinámica en función del grupo de mensajes cargados desde la configuración regional de un usuario. Este gadget tiene grupos de mensajes de dos idiomas que se escriben de derecha a izquierda, hebreo (iw) y árabe (ar):

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs title="BIDI Hello World">
    <Locale messages="http://doc.examples.googlepages.com/ALL_ALL.xml"/>
    <Locale lang="ru" messages="http://doc.examples.googlepages.com/ru_ALL.xml"/>
    <Locale lang="fr" messages="http://doc.examples.googlepages.com/fr_ALL.xml"/>
    <Locale lang="ja" messages="http://doc.examples.googlepages.com/ja_ALL.xml"/>
    <Locale lang="es" messages="http://doc.examples.googlepages.com/es_ALL.xml"/>
    <Locale lang="it" messages="http://doc.examples.googlepages.com/it_ALL.xml"/>
    <Locale lang="iw" messages="http://doc.examples.googlepages.com/iw_ALL.xml" language_direction="rtl"/>
    <Locale lang="ar" messages="http://doc.examples.googlepages.com/ar_ALL.xml" language_direction="rtl"/>
  </ModulePrefs>
  <Content type="html">
  <![CDATA[
    <div style="margin-__BIDI_START_EDGE__:30px;"><h2>__MSG_hello_world__</h2></div>
  ]]>
  </Content>
</Module>

Para este gadget, supongamos que la preferencia de idioma del usuario es árabe. La línea <Locale lang="ar" messages="http://.../ar_ALL.xml" language_direction="rtl"/> dice "para árabe, mostrar el texto del grupo de mensajes ar_ALL.xml y establecer la dirección del gadget en rtl".La dirección también sería de derecha a izquierda para el hebreo. Para el resto de idiomas, la dirección del gadget está establecida de forma implícita en el valor predeterminado ltr (izquierda a derecha).

La línea <div style="margin-__BIDI_START_EDGE__:30px;"><h2>__MSG_hello_world__</h2></div> dice "cuando el gadget esté en modo de izquierda a derecha, alejar el texto del margen izquierdo 30 píxeles. Cuando el esté en modo de derecha a izquierda, alejar el texto del margen derecho 30 píxeles".Por ejemplo, si el navegador del usuario está configurado en árabe (derecha a izquierda), la sustitución se llevará a cabo en el tiempo de ejecución del siguiente modo:

<div style="margin-right:30px;"><h2>أهلاً بالعالم</h2></div>

En esta tabla aparecen las variables de sustitución BIDI y sus posibles valores. Ten en cuenta que sus valores están siempre relacionados con la dirección del propio gadget. En otras palabras, estas variables están diseñadas para usarlas con el parámetro de configuración <Locale... language_direction="...">. Puedes usar estas variables en cualquier lugar del cuerpo del gadget.

Variable Descripción
__BIDI_START_EDGE__ Esta variable representa el lado del gadget que es el punto de inicio de visualización del contenido. El valor es "left" si el gadget está en modo LTR y "right" si el gadget está en modo RTL. En el gadget anterior se ofrece un ejemplo de cómo usar esta variable para definir los márgenes CSS.
__BIDI_END_EDGE__ Esta variable representa el borde del gadget situado en el lado contrario al comienzo de visualización del contenido. El valor es "right" si el gadget está en modo LTR y "left" si el gadget está en modo RTL.
__BIDI_DIR__ El valor de esta variable es "ltr" si el gadget está en modo LTR y "rtl" si el gadget está en modo RTL.
__BIDI_REVERSE_DIR__ El valor de esta variable es "rtl" si el gadget está en modo LTR y "ltr" si el gadget está en modo RTL.

Modificación de la dirección de parte de un gadget

El API BIDI está diseñada para cambiar la dirección de un gadget entero, y proporcionar formato correspondiente al contenido del gadget. No obstante, es posible que haya casos en los que desees ajustar la dirección de líneas de texto individuales dentro de un gadget. Es posible que no desees que la dirección del gadget esté vinculada a la configuración de idioma del usuario, o a un idioma concreto. Por ejemplo, imagina que quieres crear un gadget que muestre a la vez texto en hebreo e inglés. O bien, imagina que quieres crear un gadget en el que aparezcan frases comunes en distintos idiomas. Puedes usar la llamada a la función regular DOM y CSS para establecer la dirección del texto dentro del cuerpo del gadget. Por ejemplo:

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs title="DOM Hello World" height="200" />

  <Content type="html"><![CDATA[
  <script type="text/javascript">
  // In this gadget, users choose a language from a drop-down menu, and the gadget displays
  // a "Hello World" message for the selected language. The gadget uses DOM functions to set 
  // the direction and formatting for the message, depending on whether its language is RTL 
  // or LTR.
  // Associative array containing "Hello World" messages for different languages
  var msgs = new Object();
  msgs = {
    "English" : "Hello World",
    "Hebrew"  : "שלום עולם",
    "French"  : "Bonjour Monde",
    "Arabic"  : "أهلاً بالعالم",
    "Russian" : "Здравствулте! Мир"
    };
  
  function showMsg() {
    var html="<h1>";
    var div = _gel('mydiv');
    div.style.color = "green";
    var index = document.myform.Language.selectedIndex;
    var lang = document.myform.Language.options[index].text;
    var str = msgs[lang];    
    if (!str)
       str="";
    // If language is Hebrew or Arabic, set the div direction to be right-to-left.
    // Offset text 30px from right margin.
    if(lang=="Hebrew" || lang=="Arabic") {
      div.style.direction = "rtl";
      div.style.marginRight = "30px";
      html += str;
    }
    // For other languages, set div direction to left-to-right.
    // Offset text 30px from left margin.
    else {
      div.style.direction = "ltr";
      div.style.marginLeft = "30px";
      html += str;
    }
    html+= "</h1>";
    div.innerHTML = html;
  }
  </script>
  <div style="background-color: #BFCFFF; height: 200px; color:green;">
    <br />
    <div>
      <form name="myform" style="text-align: center;">
        <select name="Language" onchange="showMsg()">
          <option>Pick a Language
          <option>English
          <option>Hebrew
          <option>French
          <option>Arabic
          <option>Russian
        </select>
      </form>
    </div>
    <br />
    <div id="mydiv"><h2 style='text-align: center;'>****Pick a language****</h2></div>
  </div>
  ]]>
  </Content>
</Module>

Pruebas

Para probar tu gadget, puedes cambiar la configuración de país e idioma a fin de que se corresponda con los grupos de mensajes que incluye el gadget.

La forma más sencilla para cambiar tu configuración de país e idioma en iGoogle es editar la URL:

http://www.google.com/ig?&gl=<country>&hl=<lang>

Por ejemplo, en la URL siguiente, el país es Alemania (DE) y el idioma es inglés (en). Normalmente, el país precede al idioma, por lo que con esta URL, iGoogle mostrará el texto en alemán:

http://www.google.com/ig?&gl=DE&hl=en

En este ejemplo, el país es, implícitamente, EE.UU. y el idioma es español:

http://www.google.com/ig?hl=es

Puedes usar este enlace para crear la URL correcta para un idioma concreto: http://www.google.com/help/customize.html#searchlang. Los valores válidos para el idioma son los códigos de idioma de dos dígitos ISO639-1, y para el país los códigos ISO 3166-1 alpha-2.

Almacenamiento en caché

Los grupos de mensajes tienen el mismo comportamiento de almacenamiento en caché que las propias especificaciones de gadgets: normalmente, la memoria caché se actualiza cada una o dos horas, los servidores de alojamiento reciben entre 100 y 200 solicitudes al día de grupos de mensajes y, si no están disponibles, se sigue usando la copia "obsoleta" el mayor tiempo posible.  En el gadget developer.xml, si se inhabilita el almacenamiento en caché de un gadget, también se inhabilitará el almacenamiento en caché de los grupos de mensajes del gadget.

Resolución de problemas

Durante su creación, es posible que el gadget aparezca en blanco o que aparezca ??? donde debería aparecer el mensaje. El problema puede deberse a una de las causas siguientes:

  • No has guardado el grupo de mensajes como UTF-8. Este paso es necesario para cualquier archivo en un idioma distinto del inglés que incluya caracteres especiales.
  • Hay algún problema en la sintaxis del grupo de mensajes.
  • Tu gadget no tiene un archivo de mensaje predeterminado ALL_ALL.xml.
  • La URL del grupo de mensajes de tu gadget no es correcta.
  • La variable de sustitución de mensajes y el grupo de mensajes especificados en el gadget no coinciden.

Volver al principio