Ich entwickle eine mehrsprachige Anwendung mit React, i18next
und i18next-browser-languagedetector
.Reagieren i18next und korrekte Art der Sprachänderung
ich initialisieren i18next folgendermaßen:
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;
Und ich habe eine Sprachwahl implementiert, die nur den Wert in der localStorage
ändert sich zu dem, was der Benutzer wählen.
Ist dies der richtige Weg?
Ich frage, weil, obwohl das funktioniert, ich fühle, dass ich "betrüge" durch Einstellung localStorage.getItem(I18N_LANGUAGE) || "pt"
und dass ich nicht die Spracherkennung verwende, wie ich sollte.
Ich versuche, das gleiche Problem zu lösen und zwei Lösungen gefunden. Erstens: Sie können das Gebietsschema als URL-Parameter (: locale \ you_url) wie [this] speichern (https://alicoding.com/language-code-url-in-react-intl/). Die zweite ist Ihre Variante - Store-Locale in localStorage oder Cookies. Ich möchte das gleiche wie Sie tun, aber i18next findet keine Schlüssel. Können Sie bitte ein Beispiel schreiben oder Ihren Code teilen? –
Wir haben das Gebietsschema in localStorage festgelegt. Was meinst du "i18next" findet die Schlüssel nicht? Ich benutze übrigens "react-i18next". prüft dies: https://gist.github.com/pteixeira/4a75160ca15e3edf6975 Ich habe auch eine Auswahlkomponente Sprache, die den localstorage-Eintrag mit dem Wert der Sprache setzt, wenn es initialisiert wird, für einen Standardwert überprüft oder was der Benutzer wählt. – pteixeira
Danke, es ist wirklich hilfreich für mich. Noch eine Frage: Gibt es eine Möglichkeit, die Sprache in der Laufzeit zu ändern? –