Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,625

    Mantenere la lingua selezionata in caso di cambio pagina o refresh

    salve
    ho questo codice, sarebbe possibile , e come, far mantenere la lingua selezionata dal menù dropdown in bootstrap anche se cambio pagina o si fa il refresh?
    Grazie
    codice:
    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);
      }
    }
    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: "it",
        debug: true,
        resources: res
      });
      updateContent();
      i18next.on("languageChanged", () => {
        updateContent();
      });
      const langSelector = document.getElementById("langSelector");
      langSelector.removeAttribute("disabled");
      langSelector.addEventListener("click", (e) => {
        i18next.changeLanguage(e.target.value);
      });
    }
    i18Loader();

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,625
    nessun può darmi una mano? grazie

  3. #3
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,509
    secondo me devi modificare questo:

    devi fare in modo che il valore sia preso da locale storage altrimenti ad ogni pagina avrai sempre italiano

    await i18next.init({
    lng
    :"it",
    debug
    :true,
    resources
    : res
    });
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,625
    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,625
    Volendo prendere la const langs (con tutte le lingue) e metterli in una select?
    ho usato questo codice alla fine di quello precedente e ho fatto tipo:
    codice:
    
    
    codice:
    varselect= document.getElementById("lingua");
                    var lingua = langs;         
                    for(var i=0; i<lingua.length; i++){                              
                        
                        select.options[select.options.length]=newOption(lingua[i],i);      
                    };
      );
    

    Ma non va, grazie

  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,509
    non va è troppo generico. hai errori? non funziona?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.