如何在 ReactJS 构建中包含 i18next 语言环境文件

How to include i18next locale files in ReactJS build

我搜索了很多帖子都没有解决我的构建问题。

我有两个主要问题

  1. /public/locale/xx/xxx.json 构建后不包含文件路径
  2. css 中使用的背景图片路径无法正常工作

结构如下所示:

my-app
  public
    images
      image.jpg
    locale
      xx
        xxx.json
  src

背景图片 url 喜欢 url(/images/image.jpg),

url 在开发中运行良好,但在 production/after 构建中,它是相对于 / 路径的,与 [=15= 中设置的 homepage 无关]

语言环境文件也是如此。

PShomepage不会是/,假设会是/myapp/

我的 i18n 文件是这样的:

i18n
  use(Backend)

我已尝试将后端设置设置为任意值 (__dirname | env.PUBLIC_URL,...etc),但没有任何效果。

这似乎是一个很常见的问题,因为我发现到处都有很多帖子,但是,关于如何正确设置相对路径,却没有明确的答案 运行 npm run build

如果你有这方面的知识,请给出一个傻瓜式的分步指南答案。

我已经设法使用以下设置使其工作:

结构:

├── public
|  ├── locales
|  ├── ar
|  |  ├── errors.json
|  |  ├── general.json
|  |  └── warnings.json
|  ├── en
|  |  ├── errors.json
|  |  ├── general.json
|  |  └── warnings.json
├── src
|  ├── App.js
|  ├── i18n.js

i18n.js

import i18n from 'i18next';
import Backend from 'i18next-xhr-backend';
import LanguageDetector from 'i18next-browser-languagedetector';

i18n
  // load translation using xhr -> see /public/locales
  .use(Backend)
  // detect user language
  .use(LanguageDetector)
  .init({
    fallbackLng: 'en',
    debug: false,
    defaultNS: 'general',
    ns: ['general', 'errors', 'warnings'],
    backend: {
      loadPath: `${window.location.pathname}locales/{{lng}}/{{ns}}.json`
    },
    load: 'unspecific',
    // special options for react-i18next
    // learn more: https://react.i18next.com/components/i18next-instance
    react: {
      wait: true
    }
  });

export default i18n;

组件

根据需要为每个组件包含名称空间(“defaultNS”配置以外的任何内容)

class MyComponent extends React.Component{...}
export default withNamespaces('general', 'errors')(MyComponent)