Il framework di localizzazione è incluso nel runtime dell’applicazione e utilizza i dati delle risorse linguistiche per tradurre nella lingua giusta l’interfaccia utente di ogni sessione. Vediamone ora il funzionamento.
Compilazione delle risorse linguistiche #
Le risorse di tipo lingua vengono considerate nella fase di compilazione dell’applicazione per preparare un oggetto JSON definito a livello di applicazione (App), in modo da essere caricato in memoria una sola volta per tutte le sessioni di un processo worker. Questo oggetto JSON viene espresso nel codice dell’applicazione come esemplificato di seguito:
App.i18m = {
"it": {
"5B9RRmi7su9zRw7PEh1WUg==&backButtonText": "Chiudi",
"46CDblbeDDGEnjoCIgY+vQ==&innerText": "Categorie",
"hS6xEjWvuLTr0BcVuguCew==": "Aggiungi categoria",
"5X3SL657a3vC4CjsKOOnBA==": "Nome della categoria",
…
}
}
Per ogni lingua vengono quindi riportate le sole informazioni relative alle stringhe traducibili, identificate da un identificativo dell’oggetto del progetto a cui esse si riferiscono e dal nome della proprietà che rappresentano.
Localizzazione delle stringhe nel codice #
Queste informazioni vengono utilizzate dalla funzione t, definita nella classe del framework App.Utils, che ha due parametri: text e params.
Normalmente text è una stringa e params contiene i valori da sostituire. Quando è attivo il sistema di localizzazione, il compilatore converte il primo parametro da stringa ad oggetto, passando alla funzione l’ID della stringa che corrisponde all’ID del token corrispondente calcolato dal parser di codice di Instant Developer, il codice del locale da utilizzare ed infine il testo passato come parametro nello script del progetto. Vediamo un esempio di come il codice viene trasformato.
// Codice scritto nel progetto
let msg = t("Getting @num shopping lists", {num:12});
// Codice trasformato (se è attivo il framework di localizzazione)
let msg = t({id:"UfceiHW+9AfQQ02DH4tp6Q==", lc: app.langCode, t: "Getting @num shopping lists"}, {num:12});
A questo punto la funzione t ha tutte le informazioni necessarie per puntare nella mappa delle risorse alla versione localizzata della stringa passata come parametro.
Localizzazione degli elementi visuali e delle liste valoriLa localizzazione degli elementi visuali e delle liste valori avviene sempre sfruttando la funzione t. Quando l’applicazione è localizzata, il compilatore che si occupa di generare il codice per l’inizializzazione delle videate e delle liste valori non scrive direttamente il valore delle proprietà traducibili, ma genera una chiamata alla funzione t in modo da ottenere a runtime il valore localizzato di tali costanti.