当前位置: 首页 > 面试题库 >

React i18next和正确的语言更改方式

吕灿
2023-03-14
问题内容

我正在使用React i18next和开发一个多语言应用程序i18next-browser-languagedetector

我通过以下方式初始化i18next:

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;

而且我实现了一个语言选择器,该选择器仅将中的值更改localStorage为用户选择的值。

这是正确的做法吗?

我问,因为即使这可行,但我仍然感觉自己在通过设置进行“欺骗”,localStorage.getItem(I18N_LANGUAGE) || "pt"并且我没有按原样使用语言检测。


问题答案:

根据文档,您不需要自己指定语言:

import i18next from 'i18next';
import LngDetector from 'i18next-browser-languagedetector';

i18next
  .use(LngDetector)
  .init({
    detection: options
  });

而根据这片源中i18next,它的确使用了插件的检测能力:

if (!lng && this.services.languageDetector) lng = this.services.languageDetector.detect();

这是正确的做法吗?

所以,不,不是。让插件完成它的工作。:)



 类似资料:
  • 问题内容: 现在我知道苹果不推荐这样做。 通常,您不应在应用程序内更改iOS系统语言(通过使用AppleLanguages首选项键)。这违反了在设置应用程序中切换语言的基本iOS用户模型,并且还使用了未记录的首选项键,这意味着将来某个时候,键名可能会更改,这会破坏您的应用程序。 但是,这是一个可以随时更改语言的应用程序,请相信我。我也知道有人问过这个问题:在运行iOS时以编程方式实时更改语言。但是

  • 问题内容: 我发现了只在Android N设备上才能复制的真正奇怪的错误。 在浏览我的应用程序时,可以更改语言。这是更改它的代码。 该代码在我的巡回活动(带电话)中效果很好,但是在接下来的所有活动中,所有String资源都是错误的。屏幕旋转将其修复。我该怎么办?我应该以其他方式更改Android N的语言环境还是仅仅是系统错误? PS这是我发现的。第一次启动MainActivity时(在​​我的旅

  • 问题内容: 我在Edittext的addTextChangedListener方法中已自定义,一切正常,但是当我更改语言(语言环境)时,我的addTextChangedListener无法正常工作。 我搜索了我的问题并找到了解决方案: 但我不知道如何使用此代码。 问题答案: 您可以尝试先转换为,然后将其投射到

  • 我在三星S8(Android9.0)中面临着一个更改语言的问题。我已经上传了一个版本。aab(“Android应用程序捆绑包格式”)文件扩展名到我的应用程序的谷歌播放商店。现在我在播放商店得到这个应用程序,我可以很容易地下载。我已经在多个设备上安装了这个应用程序,运行完美。 但当我改变了三星S8设备上的语言是不工作的在我们的应用程序中,我们使用两种语言英语和日语,但为什么不在三星S8设备工作我不知

  • 根据C11,内的最后一行无效。为什么会这样?

  • 我熟悉Java,但只是学习Android编程。我非常喜欢他们的Hello,LinearLayout示例中的颜色栏,所以我一直在尝试将其扩展为一个可以用于我13个月大的孩子的小程序。我让它显示七种颜色的标签和四行。我想做的一件事(因为我会双语),就是能够动态更改区域设置显示语言,而无需退出应用程序,加载新区域设置,然后再次启动应用程序(这很有效,但很乏味)。因此,七个颜色条的标签适合所选语言,但我希