如何使用 React 组件的外部库组织 i18n 翻译?

时间:2021-02-26 12:43:43

标签: reactjs i18next react-i18next

我正在处理一个包含多个 React 应用的项目,所有应用都共享一些通用 UI 组件的通用库。

我使用 i18next 处理翻译。

处理主要的 Web 应用程序没有问题,因为我使用标准方法进行后端加载区域设置文件。我的 IDE 和一些用于管理密钥等的插件甚至支持翻译过程。

但是,我一直在努力寻找一种方便且简单的过程来将翻译合并到可重用的公共库中。

组件已从它们自己的包中导出,并在需要时作为依赖项添加到主应用程序中。

这些存储库中的每一个都有使用唯一命名空间的自己的语言环境文件,这意味着翻译过程是按存储库管理的。

在组件内部,我正在使用翻译功能,例如{ t("namespace:key")},但没有初始化 react-i18next。这将在主网络应用中完成。

一切正常,除了我还有很多手动处理要做,其中一些打破了自然流程:

  1. 必须将来自外部组件的翻译文件复制到主应用程序的 locales 公共文件夹(并签出更改)
  2. 必须将来自组件的命名空间添加到初始化中

对于第一点,我尝试通过导入和内联资源而不是后端加载来处理文件,但我不确定我对这种方法是否满意。

是否有更好的机制来处理可能来自依赖项和公共库的多个翻译文件?

有关信息,我的主应用程序和组件库均使用 create-react-app(和 create-react-library)构建,限制了 webpack 配置。

0 个答案:

没有答案