
/**
 * classe Ci18n - internazionalizzazione
 * language     : codice lingua in base allo standard lingua_PAESE (es. 'it_IT' o 'en_US')
 * initFunction : funzione da chiamare una volta caricati i dati XML
*/
function Ci18n(language, initFunction) {
	this.language = language;      // Restituisce la lingua impostata
	this.msg = _msg;               // Messaggio nella lingua impostata
	this.data = _data;             // Data nel formato del Paese
//	this.Store=i18nStore;          // Oggetto XML file della lingua

	// Lettura file di internazionalizzazione .xml
	var i18nStore = new Ext.data.Store({
		id: 'i18nStore',
	    url: '/project/malospa/script/i18n_' + language + '.xml',
	    autoLoad: false,
	    reader: new Ext.data.XmlReader(
	    	// tag usato per identificare ciascun record
	    	{record: 'msg'},
	    	Ext.data.Record.create([
	    		// tag xml di ciascun record (campi)
				{name: 'name', type: 'string'},
				{name: 'value', type: 'string'}
			])),
		listeners: { 
			loadexception: function() { 
				messageBox(i18n.msg('Error'), i18n.msg('ErrorConfigLoad'),
					Ext.MessageBox.OK, 'footer-panel', Ext.MessageBox.ERROR);
			}
		}
	});
	i18nStore.load();
    if(initFunction != null)
        i18nStore.on('load', initFunction);

	// restituisce il messaggio nella lingua caricata
	// con l'interpolazione dei parametri opzionali segna-variabili {n}
	function _msg() {
		var argv=arguments;
		var nome=argv[0];
		var out;
		var q = i18nStore.query('name', new RegExp ('^'+nome+'$') );
		if (q.length == 0) {
			out='i18n.'+nome;
		} else {
			var valore=q.first().get('value');

			if (argv.length > 0) { // sostituisco i segna-variabili nel formato {n} con i parametri opzionali ricevuti
				for (var i = 1; i < argv.length; i++) {
					var r = new RegExp ('\\{'+i+'\\}', "g");
					valore=valore.replace(r, argv[i]);
				}
			}

			// pulisco eventuali altri segna-variabili non valorizzati
			var r = new RegExp ('\\{[0-9]+\\}', "g");
			valore=valore.replace(r, "");

			out=valore;
		}

		return out;
	}

	// restituisce la data formattata secondo la lingua selezionata
	function _data(stringa) {
		return stringa;
	}

}      
