我在一个项目中工作,我们使用延迟加载的模块来分离它,现在我们想将翻译也分离到不同的模块中,这样只有属于该模块的翻译才会被加载。
目前我们有如下翻译:
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) {},
}
但我不太确定如何使用它,我想知道是否有人有这方面的经验,以及是否有人可以推荐任何可能对我有帮助的指南或文档。 谢谢