如何使用 react-i18next 通过不同的 javascript 文件更改语言?

How to use react-i18next to change language by different javascript file?

我最近编写了一个开源项目Poker Coder

每张卡片的介绍都英译成中文后,我找不到使用react-i18next切换语言的好方法。

React i18next的官方文档中,每个例子都是public/locales/xx/translation.json写的一个简单的json文件,但是我想加载不同的语言配置JavaScript src 中的文件像这样的文件结构:

# src/poker
.
├── index.ts
└── poker-coder
    ├── cn
    │   ├── club.ts
    │   ├── diamond.ts
    │   ├── heart.ts
    │   ├── joker.ts
    │   └── spade.ts
    └── en
        ├── club.ts
        ├── diamond.ts
        ├── heart.ts
        ├── joker.ts
        └── spade.ts

我能做什么?如果有人能帮助我,我将不胜感激:)

你需要调用i18n.changeLanguage(value); //value 可以是 'es' 或 'en' 取决于您希望在网站上显示的语言。然后此 changeLanguage() 方法将调用 i18n 配置文件,该文件将进一步调用您已输入翻译文本的翻译文件。

In the official document of React i18next, every example is just a simple json file written in public/locales/xx/translation.json, but I want to load language config by different JavaScript files

让我们澄清一下 - 你想使用一些包但不是以它的工作方式?很简单 - 只需分叉它并根据您的需要进行更改!

你不觉得你的流程有问题吗?
您应该先检查 i18next 要求,然后再准备翻译。

...不过你很幸运...i18next 非常灵活

  1. 对于小型项目,您可以导入(硬编码、编译)所有翻译 - docs 第 1b 点的方法 - 只需从任何地方导入所有文件(源路径) - 根据翻译更改重新编译整个应用程序
  2. 要在 运行 时单独 加载,您必须在公开路径
  3. 中提供 .json 文件翻译

对于第二种方法中需要的文件转换,您可以使用 babel (babel-plugin-i18next-extract),但配置它可能更难。