Come localizzare le stringhe contenute nei file .js  german flag english flag spanish flag french flag

Autore : Goofy / Traduzione : Pedro

Questo problema si pone con estensioni che hanno la cartella locale con le stringhe traducibili ad eccezione di alcune parole o frasi che non possono essere trasformate in ENTITY come si è soliti fare, poiché appartengono ad un file .js.
 
Supponiamo di aver trovato queste stringhe direttamente all'interno di un file .js:

if ( password == userPassword ) {
      oPrefs.setBoolPref("access.authenticated", true);  
   }
   else {
      alert ("Password non valida");
......
function clear()
{
 sure = confirm("Confermare?");
Per prima cosa, si deve cercare o creare un file nome_estensione.properties nella propria cartella locale, quindi scrivere semplicemente i nomi delle variabili e la frase o parola che dovrà apparire all'utente finale.

Per esempio:

WrongPassMessage=Password non valida
AreYouSureMessage=Confermare?

(dove Password non valida e Confermare?  sono le stringhe che verranno visualizzate all'utente finale)
Nota: per indicare la corrispondenza è sufficiente un semplice segno =.

Ora è necessario lavorare sul file .js contenente le stringhe da localizzare.
La prima operazione consiste nella creazione di una string bundle con gli 'indirizzi' dei file properties nei quali si trovano le stringhe tradotte.


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

Quindi elencare, immediatamente sotto, tutte le variabili da utilizzare per il file .js che si sta localizzando:

var wrongpassalert = mie_stringhe.GetStringFromName("WrongPassMessage");
var confirmmessage=mie_stringhe.GetStringFromName("AreYouSureMessage");
Ora, se necessario, si possono utilizzare le variabili all'interno del file .js, come nell'esempio sottostante:


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

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