Sto utilizzando il seguente script per i miei progetti. Ti permette di cambiare la lingua "in fase di esecuzione", senza ricaricare la pagina. Lo script è "autorun", basta aggiungerlo alla fine della pagina html. Si potrebbe avere dei bug;)
// AutoStar!
// Grab the parameters from my url, and initialize myself! FUGOOOOO
(function __lang_init_wrapper()
{
var scriptSrc = $('script[src*=Lang]').attr('src');
var myParams = parseParams(scriptSrc);
new Lang(myParams.language.toUpperCase(), true);
})();
/**
* Thanks to: http://wowmotty.blogspot.com/2010/04/get-parameters-from-your-script-tag.html
* @param n
* @param s
*/
function gup(n,s){
n = n.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");
var p = (new RegExp("[\\?&]"+n+"=([^&#]*)")).exec(s);
return (p===null) ? "" : p[1];
}
/**
*
* @param language The language to use
* @param replaceText If true, replace all the occurency marked with placemark {lang=<key>}
*/
function Lang(language, replaceText)
{
var Languages =
{
ENG:
{
ok: 'ok'
,yes: 'yes'
,no: 'no'
,unknown_user: 'Unknown user'
,too_soon: "It's not time, yet..!"
}
,ITA:
{
yes: 'si'
,unknown_user: 'Utente sconosciuto'
,too_soon: "Pazienta ancora un po'..!"
}
}
// GENERAL SETTINGS
var LANG_CURRENT = language;
var LANG_DEFAULT = 'ENG';
/**
* All the html elements with this attributes are translated on the fly
*/
var LANG_ATTRIBUTE_NAME = "uilang"
/**
* key è la chiave da usare nell'oggetto LANG
* @param key
*/
this.get = function(key)
{
return Languages[LANG_CURRENT][key] || Languages[LANG_DEFAULT][key];
}
/**
* Cerco tutti gli elementi che hanno una certa classe
*/
this.searchAndReplace = function()
{
var me = this;
var divs = $('*[' + LANG_ATTRIBUTE_NAME + ']');
$.each(divs,function(indx,item)
{
item = $(item);
item.text(me.get(item.attr(LANG_ATTRIBUTE_NAME)));
});
}
this.setLanguage = function(language, replaceText)
{
LANG_CURRENT = language;
if(replaceText){
this.searchAndReplace();
}
}
if(replaceText){
this.searchAndReplace();
}
// Returns a localized instance of language
Lang = {
get: this.get
,searchAndReplace: this.searchAndReplace
,setLanguage: this.setLanguage
};
}
Per usarla, solo "segno" di un elemento HTML
<h1 uilang="unknown_user"></h1>
o chiamare
Lang.get('unknown_user')
per ottenere la stringa localizzata
Per inizializzare, chiamare il "costruttore"
new Lang("ITA", true);
Per usarlo nato specificando una lingua,
<script type="text/javascript" src="js/Lang.js?language=ita"></script>
Sembra buona soluzione, ma non riesco ad accedere a localizedResources, solo nella traduzione di default (inglese) funziona. Ho usato interruttore traduzione nel documento pronto: $ (document) .ready (function() {$ \t .extend (MyApp.resources, localizedResources); \t}); e traduzione in testa dopo tutti gli script JS: – redrom
Si prega di dare un'occhiata a questo: http://jsfiddle.net/agarcian/rrDv3/1/ Funziona. – agarcian
in caso contrario non funziona off-line – Astronaut