Ho risolto così,con l'aiuto di un amico:
codice:
async function i18Loader() {
const langs = ["it","en", "fr", "de"];
const jsons = await Promise.all(
langs.map((l) => fetch("lang/" + l + ".json").then((r) => r.json()))
const res = langs.reduce((acc, l, idx) => {
acc[l] = { translation: jsons[idx] };
return acc;
}, {});
await i18next
.init({
lng: localStorage.getItem("lan") || 'it',
debug: true,
resources: res,
fallbackLng: "it-IT",
backend: {
backendOptions: [{
// can be either window.localStorage or window.sessionStorage. Default: window.localStorage
store: typeof window !== 'undefined' ? window.localStorage : null
}, {
loadPath: 'lang/{{lng}}.json'
}]
}
});
function updateContent() {
const elements = document.getElementsByClassName("i18nelement");
for (let i = 0; i < elements.length; i++) {
const element = elements[i];
const k = element.getAttribute("data-i18n");
element.innerHTML = i18next.t(k);
}
}
updateContent();
i18next.on("languageChanged", () => {
updateContent();
});
const langSelector = document.getElementById("langSelector");
langSelector.removeAttribute("disabled");
langSelector.addEventListener("click", (e) => {
i18next.changeLanguage(e.target.value);
localStorage.setItem("lan", e.target.value);
});
}
i18Loader();
Ora ti chiedo se puoi aiutarmi volendo prendere la const langs (con tutte le lingue) e metterli in una select?
ho messo questo codici a fine di quello precedente e ho fatto tipo:
codice:
var select = document.getElementById("lingua");
var lingua = langs;
for(var i=0; i<lingua.length; i++) {
select.options[select.options.length] = new Option(lingua[i],i);
};
);
Ma naturalmente na va.... dove sbaglio?
Grazie