使用 NX Monorepo 设置react-i18next

问题描述 投票:0回答:3

我尝试使用 NX 和 Module Federation 在 monorepo 中设置 i18next,但收到 404,我正在使用 i18next-http-backend 异步加载翻译。

我尝试将 public/locales/en/translation.json 放在主机应用程序中、项目的根目录中,等等。他们都不适合我。

import i18n from 'i18next';
import LanguageDetector from 'i18next-browser-languagedetector';
import { initReactI18next } from 'react-i18next';
import HttpApi, { HttpBackendOptions } from 'i18next-http-backend';

i18n
  // loads translations from your server
  // https://github.com/i18next/i18next-http-backend
  .use(HttpApi)
  // detect user language
  // learn more: https://github.com/i18next/i18next-browser-languageDetector
  .use(LanguageDetector)
  // pass the i18n instance to react-i18next.
  .use(initReactI18next)
  // init i18next
  // for all options read: https://www.i18next.com/overview/configuration-options
  .init<HttpBackendOptions>({
    // resources,
    fallbackLng: 'pt-BR',
    debug: true,
    load: 'currentOnly',
    supportedLngs: ['en', 'pt-BR'],
    detection: {
      lookupCookie: 'i18nextLng',
      lookupLocalStorage: 'i18nextLng',
      order: ['localStorage', 'cookie'],
      caches: ['localStorage', 'cookie'],
    },
    interpolation: {
      escapeValue: false,
    },
    backend: {
      loadPath: '../../../../public/locales/{{lng}}/{{ns}}.json',
    },
  });

export default i18n;

enter image description here

enter image description here

reactjs monorepo nrwl-nx react-i18next nrwl
3个回答
1
投票
import resourcesToBackend from 'i18next-resources-to-backend';
i18n 
.use(resourcesToBackend((language: string, namespace: string) => import(`../locales/${language}/${namespace}.json`)));

替换为你的路径


0
投票

根据我的经验,i18next 使用所提供的主文件所在的路径。因此,在这种情况下,i18next 向 localhost:4200/public/... 发出请求,其中 localhost:4200 是您使用 nx 提供的特定项目的根目录。因此,您必须将公用文件夹移动到与所服务的应用程序的主文件相同的级别。


-1
投票

此即时消息也面临同样的问题吗?

© www.soinside.com 2019 - 2024. All rights reserved.