Skip to content

Commit 4e7a081

Browse files
committed
feat: Aggiunta gestione delle traduzioni
Aggiungo il codice per la gestione delle traduzioni che prendendo un file di traduzioni sulla base di quanto scelto nella pagina traduce i testi nella lingua scelta
1 parent c77134c commit 4e7a081

File tree

1 file changed

+56
-9
lines changed

1 file changed

+56
-9
lines changed

js/app.js

+56-9
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@ $(function (e) {
1313
var arrayDataRegioni = [];
1414
var arrayRefGrafici = []; //Array che mi tiene i riferimenti ai grafici in modo che possa cambiare le loro impostazioni
1515

16+
var prefLang = 'it';
17+
1618
//Nomi dei valori che vengono messi a disposizionne dal file JSON della protezione civile
1719
var tutteStats = [
18-
{ key: "totale_casi", titolo:"Totale Casi", color: "#FFDD57", backgroundColor: "#fff3c3"},
19-
{ key: "dimessi_guariti", titolo:"Dimessi Guariti", color: "#48C774", backgroundColor: "#cbffde"},
20-
{ key: "deceduti", titolo:"Deceduti", color: "#F14668", backgroundColor: "#ffb9c6"},
21-
{ key: "terapia_intensiva", titolo:"Terapia Intensiva", color: "#0066CC", backgroundColor: "#cce1ff"},
20+
{ key: "totale_casi", titolo: "c19ti_totale_casi", color: "#FFDD57", backgroundColor: "#fff3c3"},
21+
{ key: "dimessi_guariti", titolo: "c19ti_dimessi_guariti", color: "#48C774", backgroundColor: "#cbffde"},
22+
{ key: "deceduti", titolo:"c19ti_deceduti", color: "#F14668", backgroundColor: "#ffb9c6"},
23+
{ key: "terapia_intensiva", titolo:"c19ti_terapia_intensiva", color: "#0066CC", backgroundColor: "#cce1ff"},
2224
//{ key: "totale_attualmente_positivi", titolo:"Totale Attualmente Positivi"},
2325
//{ key: "nuovi_attualmente_positivi", titolo:"Nuovi Attualmente Positivi"},
2426
//{ key: "ricoverati_con_sintomi", titolo:"Ricoverati con sintomi"},
@@ -27,6 +29,32 @@ $(function (e) {
2729
//{ key: "tamponi", titolo:"Tamponi"}
2830
];
2931

32+
//Funzione che mi traduce tutti i testi all'interno della pagina
33+
function updateTraduzioniPage(){
34+
35+
$.getJSON(`i18n/${prefLang}.json`, function(json) {
36+
37+
let objTraduzioni = json;
38+
39+
//Prendo tutti gli elementi che devo tradurre
40+
let elems = document.querySelectorAll('[data-i18n]');
41+
elems.forEach((single)=>{
42+
let keyToSearch = single.getAttribute('data-i18n');
43+
//Faccio il loop di tutto il mio oggetto per le traduzioni andando a cercare la chiave che mi serve tradurre
44+
for (const key of Object.keys(objTraduzioni)) {
45+
//Ho trovato la chiave che devo tradurre
46+
if(keyToSearch == key){
47+
//Prendo la sua traduzione e la metto come testo
48+
$(`[data-i18n="${key}"]`).text(objTraduzioni[key])
49+
return;
50+
} else {
51+
console.log(key)
52+
}
53+
}
54+
});
55+
});
56+
}
57+
3058
//Funzione che prendendo il JSON ritornato dalla chiamata al repo della protezione civile
3159
// mi formatta i valori negli array che mi servono per creare i grafici
3260
function getValoriFormattati(allStats) {
@@ -77,23 +105,23 @@ $(function (e) {
77105
document.getElementById("sezione_grafici").innerHTML +=
78106
`<div class="columns is-multiline singola_sezione">
79107
<div class="column is-full">
80-
<p class="title is-4">${singolaStat.titolo}</p>
108+
<p class="title is-4" data-i18n="${singolaStat.titolo}"></p>
81109
</div>
82110
<div class="column is-half">
83111
<div class="titolo">
84-
<p class="title is-5">Andamento Cumulativo</p>
112+
<p class="title is-5" data-i18n="c19ti_andamento_cumulativo"></p>
85113
<div class="sezione_bottoni">
86114
<button class="button is-small bottone btn_change_scala_grafico is-info is-light"
87-
data-progressivo="${index*2}" data-tipo="logarithmic">LOGARTIMICO</button>
115+
data-progressivo="${index*2}" data-tipo="logarithmic">LOG</button>
88116
<button class="button is-small bottone btn_change_scala_grafico is-info"
89-
data-progressivo="${index*2}" data-tipo="linear">LINEARE</button>
117+
data-progressivo="${index*2}" data-tipo="linear">LIN</button>
90118
</div>
91119
</div>
92120
<canvas id="chart-${singolaStat.key}_cumulativo"></canvas>
93121
</div>
94122
<div class="column is-half">
95123
<div class="titolo">
96-
<p class="title is-5">Valori Singoli Giornalieri</p>
124+
<p class="title is-5" data-i18n="c19ti_valori_singoli_giornalieri"></p>
97125
</div>
98126
<canvas id="chart-${singolaStat.key}_giornaliero"></canvas>
99127
</div>
@@ -165,6 +193,8 @@ $(function (e) {
165193

166194
let objValori = getValoriFormattati(arrayDati);
167195
creaGrafici(objValori);
196+
//Aggiorno le traduzioni
197+
updateTraduzioniPage();
168198
}
169199

170200
//Funzione che mi crea un array con solo le regioni per la select con cui filtro i dati
@@ -251,5 +281,22 @@ $(function (e) {
251281
$("button.btn_change_scala_grafico[data-progressivo='" + progressivo +"']").toggleClass('is-light');
252282
});
253283

284+
//Funzione che sente il click per il cambio di lingua
285+
$('.btn-lingua').click(function(){
286+
if($(this).hasClass('active')){ //Il bottone è già attivo e io lo sto premendo di nuovo
287+
return;
288+
}
289+
290+
let newPrefLang = $(this).data('lang');
291+
console.log(newPrefLang);
292+
prefLang = newPrefLang; //Setto la nuova lingua
293+
//Aggiorno le traduzioni
294+
updateTraduzioniPage();
295+
296+
//Cambio lo stato dei bottoni
297+
$(this).closest('.col-switch-lingua').find('.active').removeClass('active');
298+
$(this).addClass('active');
299+
300+
});
254301

255302
})

0 commit comments

Comments
 (0)