0

我在使用 i18n.changeLanguage 函数更改语言时遇到了 cors。我有两个具有 onClick 方法的按钮并调用名为 changeLang 的自定义函数。在该函数中,我正在调用 i18n.changeLanguage 函数并将其传递给 lng 参数。


    const changeLang = lng => {
      i18n.i18n.changeLanguage(lng);
    };


    <button onClick={() => changeLang('en')} className="en">
       EN
    </button>
    <button onClick={() => changeLang('tr')} className="tr">
       TR
    </button>

在此处输入图像描述

我的 i18n 配置就是这样。

import NextI18Next from 'next-i18next';
import { initReactI18next } from 'react-i18next';

export default new NextI18Next({
  use: [initReactI18next],
  defaultLanguage: 'tr',
  fallbackLng: 'en',
  otherLanguages: ['en'],
  localeSubpaths: {
    en: 'en',
  },
  localePath: '/app/static/locales',
  detection: {
    order: ['cookie', 'localStorage'],
    lookupCookie: 'next-i18next',
    lookupLocalStorage: 'i18nextLng',
    caches: ['cookie', 'localStorage'],
  },
});
4

2 回答 2

0

我得到了错误。这是正确的版本。我在其中添加了后端对象和 loadPath,它解决了这个问题。

import NextI18Next from 'next-i18next';
import { initReactI18next } from 'react-i18next';

export default new NextI18Next({
  use: [initReactI18next],
  defaultLanguage: 'tr',
  fallbackLng: 'en',
  otherLanguages: ['en'],
  localeSubpaths: {
    en: 'en',
  },
  localePath: '/app/static/locales',
  detection: {
    order: ['cookie', 'localStorage'],
    lookupCookie: 'next-i18next',
    lookupLocalStorage: 'i18nextLng',
    caches: ['cookie', 'localStorage'],
  },
  backend: {
   loadPath: 'app/static/locales/{{lng}}/{{ns}}.json',
  }
});
于 2020-04-20T09:52:03.570 回答
0

从 lib 的源代码中,看起来默认值localePath具有 apublic/static/locales作为值。

注意它没有第一个斜线,尝试删除它。

于 2020-04-19T16:08:21.120 回答