1

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

我有两个主要问题

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

结构如下所示:

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

背景图片网址如url(/images/image.jpg)

该 url 在 dev 上运行良好,但在生产/构建之后,它与/路径相关,无论homepagepackage.json

语言环境文件也是如此。

PShomepage不会/,假设会/myapp/

我的 i18n 文件是这样的:

i18n
  use(Backend)

我试图将后端设置设置为任何东西 ( __dirname | env.PUBLIC_URL,...etc),但没有任何效果。

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

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

4

1 回答 1

5

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

结构:

├── 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)
于 2019-04-17T13:19:29.313 回答