我在reactjs app中使用react-i18next。
问题是当我更改应用程序重新加载的语言时,总是从主路径开始。
有没有办法在不重新加载页面的情况下重定向同一页面或更改语言?
感谢
更新
I18n.js
import i18n from 'i18next';
import LanguageDetector from 'i18next-browser-languagedetector';
import {de} from "../../locales/de";
import {en} from "../../locales/en";
i18n
.use(LanguageDetector)
.init({
resources: {
en: en,
de: de
},
fallbackLng: 'de',
// have a common namespace used around the full app
ns: ['translations'],
defaultNS: 'translations',
keySeparator: '.',
interpolation: {
escapeValue: false, // not needed for react!!
formatSeparator: ','
},
react: {
wait: true
}
});
export default i18n;
更改语言:
const { t, i18n } = this.props;
const changeLanguage = (lng) => {
i18n.changeLanguage(lng);
};
答案 0 :(得分:2)
你如何改变语言?使用查询字符串?
如果你致电i18next.changeLanguage(lng);
,那么就不会有变化,只需用新语言重新投降......
作为示例,请参阅:https://github.com/i18next/react-i18next/blob/master/example/webpack2/app/components/View.js#L50
答案 1 :(得分:0)
有同样的问题。我正在使用i18n-js并响应导航以显示堆栈和选项卡。该线程是我在互联网上可以找到的唯一线程。但是,它并没有带我解决问题。无论如何,我仍然设法将其解决,并分享我的解决方案。
检查是否还翻译了堆栈和选项卡的名称,很可能它应该是选项卡之一。由于选项卡名称是另一种语言的全新名称,因此翻译后的名称将使反应导航丢失,因为它不再识别路线中正在记录的页面。这就是为什么它跳到发现所有导航器顶部的页面的原因。解决方法是对要翻译和显示的文本使用标签,同时为页面保留静态名称。