i18n 上的延迟加载反应问题

时间:2021-05-06 12:47:23

标签: reactjs internationalization i18next react-i18next

我在一个项目中工作,我们使用延迟加载的模块来分离它,现在我们想将翻译也分离到不同的模块中,这样只有属于该模块的翻译才会被加载。

目前我们有如下翻译:

translations
--en
--de
--it
--sp

我们现在想要这样的东西:

translations
--en
 |--moduleA
 |--moduleB
 |--moduleC
--it
 |--moduleA
 |--moduleB
 |--moduleC

etc,

我一直在浏览文档并尝试了“useTranslation (hook)”和“withTranslation”,两者似乎都不起作用,因为它们无论如何都加载了指定 ns 中的所有翻译,并且在调用 i18n 时获取了接收到的内容后,我还看了i18next-http-backend,但文档没有很清楚地说明如何使用它。

基本上我遗漏了一些关于如何使用它的信息,但根据我的发现似乎是唯一可能的解决方案,我错了吗?。

安装依赖项后,我的 i18n 如下:

import i18n from 'i18next'
import LanguageDetector from 'i18next-browser-languagedetector'
import moment from 'moment'
import HttpApi from 'i18next-http-backend'
import request from 'superagent'
import {EN} from './translations/eng'
import {test} from './translations/test'

i18n
  .use(LanguageDetector)
  .use(HttpApi)
  .init({
    backend: options,
 
    resources: {
      en: {
        translations: EN,
        translations2: test,
      },
    },
    fallbackLng: 'en',
    
    ns: ['translations', 'translations2'],
    defaultNS: 'translations',
    keySeparator: false,
    interpolation: {
      escapeValue: false,
      formatSeparator: ',',
      format: function(value, formatting) {
        if (value instanceof Date) return moment(value).format(formatting)
        return value.toString()
      },
    },
    react: {
      wait: true,
    },
  })

后端密钥需要一些选项信息:

const options = {

  loadPath: 'path to file',

  addPath: 'path to file',


  allowMultiLoading: false, 
  parse: function(data) {
    return data.replace(/a/g, '')
  },

  parsePayload: function(namespace, key, fallbackValue) {
    return {key}
  },

  request: function(options, url, payload, callback) {},
}

但我不太确定如何使用它,我想知道是否有人有这方面的经验,以及是否有人可以推荐任何可能对我有帮助的指南或文档。 谢谢

0 个答案:

没有答案