0

我在我的 reactjs 应用程序中使用 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);
    };
4

2 回答 2

3

你如何改变语言?使用查询字符串?

如果你打电话i18next.changeLanguage(lng);不会有变化,只是用新的语言重新渲染......

作为示例,请参阅:https ://github.com/i18next/react-i18next/blob/master/example/webpack2/app/components/View.js#L50

于 2017-07-28T17:42:42.983 回答
0

有同样的问题。我正在使用 i18n-js 并对清单堆栈和选项卡做出反应。这个帖子是我在互联网上唯一能找到的。但是,它并没有引导我找到解决方案。无论如何,我仍然设法解决它并分享我的解决方案。

检查您是否还翻译了堆栈和选项卡的名称,很可能应该是选项卡之一。翻译后的名称将使反应导航丢失,因为它不再识别路线中记录的页面,因为选项卡名称在另一种语言中是全新的。这就是为什么它会跳转到任何它发现它是所有导航器顶部的页面。解决方法是为要翻译和显示的文本使用标签,同时为页面保留静态名称。

于 2020-10-26T13:16:07.083 回答