Cómo traducir las cadenas incluidas en los archivos .js |
|
Written by Goofy
|
Thursday, 29 September 2005 |
El problema es: en ocasiones algunas extensiones contienen la carpeta locale, con las traducciones de las cadenas, pero algunas cadenas siguen sin traducirse, al no poder transformarse en entidades normales, ya que se encuentran en un archivo .js. Existe una solución, aunque el proceso es más largo y puede suponer demasiado tiempo para traducir una simple palabra ... En primer lugar tenemos que encontrar o crear un archivo .properties en la carpeta locale. Tenemos que escribir en dicho archivo un nombre de variable y la frase o palabra traducida que queremos mostrar. Por ejemplo: WrongPassMessage=Contraseña incorrecta (donde Contraseña incorrecta es la frase traducida) A tener en cuenta: 1. Es suficiente un simple signo = 2. Es necesario convertir la cadena usando la codificación UTF-8 y los caracteres acentuados en hexadecimal antes de guardar el archivo. | El siguiente paso es "indicarle" a la extensión que busque la traducción en el archivo properties creado anteriormente. Para ello tenemos que añadir las siguiente lÃneas en el archivo xxxoverlay.xul de la carpeta locale: <stringbundleset id="stringbundleset"> <stringbundle id="nome estensione-strings" src="chrome://nome estensione/locale/nome estensione.properties"/> </stringbundleset> El conjunto de lÃneas definidas (indicando el id) es un tipo de paquete que contiene todas las cadenas que se hayan introducido en el archivo .properties. Además, añadimos la fuente del archivo, su ubicación en la extensión. | Ahora podemos ir al archivo .js , y localizamos las cadenas a traducir. El punto principal es simplemente: tenemos que realizar una sustitución de variables de la manera siguiente: var wrongpassalert=document.getElementById('nome estensione-strings').getString("WrongPassMessage"); var corresponde a la variable; wrongpassalert se corresponde al valor de WrongPassMessage definido en el archivo properties, y será el mostrado al usuario; document.getElementById es la indicación al script para encontrar en el conjunto especial definido como "extensionname-strings"; getString indica qué variable queremos obtener del conjunto. | Por último ya podemos usar la variable wrongpassalert en el archivo .js cuando sea necesario: ver el ejemplo a continuación if ( password == userPassword ) { oPrefs.setBoolPref("access.authenticated", true); } else { alert (wrongpassalert); oPrefs.setBoolPref("access.authenticated", false) |
|
Last Updated ( Sunday, 05 March 2006 )
|