Cómo traducir cadenas en archivos .js  german flag english flag german flag italian flag

Autor: Goofy / Traducción española : chuzo

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..
 
Suponemos que ha encontrado estas cadenas incluidas en un archivo .js:

if ( password == userPassword ) {
      oPrefs.setBoolPref("access.authenticated", true);  
   }
   else {
      alert ("Invalid password");
......
function clear()
{
 sure = confirm("Are you sure?");
En primer lugar, tiene que crear un archivo de nombre myextension.properties dentro de la carpeta locale. Después  simplemente escriba  nombres de variables y las cadenas que deben aparecer al usuario final.

Algo como :

WrongPassMessage=Invalid  password
AreYouSureMessage=Are you sure?

(donde Invalid password y Are you sure?  son las cadenas a mostrar al usuario final)
Tenga en cuenta : un signo simple = es suficiente

A continuación, vuelva al archivo .js donde están incluidas las frases a ser traducidas.
Justo al inicio del archivodebe crear un conjunto de cadenas con la dirección del archivo properties donde se pueden encontrar las cadenas.


var gBundle = Components.classes["@mozilla.org/intl/stringbundle;1"].getService(Components.interfaces.nsIStringBundleService);
var mystrings = gBundle.createBundle("chrome://myextension/locale/myextension.properties");

Seguidamente tiene que indicar inmediatamente debajo cada variable que se vaya a necesitar para el archivo .js que se está tratando:

var wrongpassalert = mystrings.GetStringFromName("WrongPassMessage");
var confirmmessage=mystrings.GetStringFromName("AreYouSureMessage");
De este modo puede usar las variables en los archivos .js en cualquier sitio donde sea necesario: puede ver varios ejemplos debajo


if ( password == userPassword ) {
      oPrefs.setBoolPref("access.authenticated", true);   
   }
   else {
      alert (wrongpassalert);

function clear()
{
 sure = confirm(confirmmessage);