Sto sviluppando un'applicazione multilingua utilizzando React, i18next
e i18next-browser-languagedetector
.React i18next e modo corretto di cambiare lingua
inizializzo i18next seguente modo:
i18n
.use(LanguageDetector)
.init({
lng: localStorage.getItem(I18N_LANGUAGE) || "pt",
fallbackLng: "pt",
resources: {
en: stringsEn,
pt: stringsPt
},
detection: {
order: ["localStorage", "navigator"],
lookupQuerystring: "lng",
lookupLocalStorage: I18N_LANGUAGE,
caches: ["localStorage"]
}
});
export default i18n;
E mi hanno messo in atto una selezione della lingua che cambia solo il valore nel localStorage
a ciò che l'utente ha scelto.
È questo il modo corretto di farlo?
Chiedo perché anche se funziona, mi sento di "barare" impostando localStorage.getItem(I18N_LANGUAGE) || "pt"
e che non sto usando il rilevamento della lingua come dovrei.
Sto provando a risolvere lo stesso problema e ho trovato due soluzioni. Primo: puoi memorizzare le impostazioni locali come parametro url (: locale \ you_url) come [this] (https://alicoding.com/language-code-url-in-react-intl/). Il secondo è la tua variante - store locale in localStorage o cookies. Mi piacerebbe fare lo stesso come te, ma i18next non trova le chiavi. Puoi scrivere un esempio o condividere il tuo codice, per favore? –
Abbiamo scelto di impostare la locale in localStorage. Cosa intendi con 'i18next' non trova le chiavi? A proposito, sto usando 'react-i18next'. Controllare questo: https://gist.github.com/pteixeira/4a75160ca15e3edf6975 ho anche una componente di selezione della lingua che imposta la voce localStorage con il valore della lingua quando si inizializza, il controllo per un valore di default o quello che l'utente sceglie. – pteixeira
Grazie, è davvero utile per me. Un'altra domanda: c'è modo di cambiare lingua in runtime? –