我正在运行一个React原生应用程序与React -i18next和后端插件。在Android和Web上,该应用程序可以很好地加载翻译,但在iOS上,它根本无法加载翻译。
当i18n初始化时,它给出以下错误。我不确定是否是非法操作错误的原因,但看起来很有可能。
i18next::backendConnector: loading namespace translation for language en failed, [TypeError: Network request failed]
. . .
Error: EISDIR: illegal operation on a directory, read
at Object.readSync (fs.js:614:3)
at tryReadSync (fs.js:383:20)
at Object.readFileSync (fs.js:420:19)
是否有一个配置的地方为react-native让iOS从public
文件夹读取?
我i18n.js:
import * as Localization from 'expo-localization'
import i18n from 'i18next'
import Backend from 'i18next-http-backend'
import { initReactI18next } from 'react-i18next'
i18n
.use(Backend)
.use(initReactI18next)
.init({
compatibilityJSON: 'v3',
debug: true,
fallbackLng: 'en-US',
interpolation: { escapeValue: false },
})
i18n.changeLanguage(Localization.locale)
export default i18n
和我的翻译文件,位于public/locales/en-US/translation.json
{
"outOfStock": "Out of Stock"
}
我怀疑像react-native这样的博览会没有托管翻译,所以它们可以通过i18next-http-backend获取。所以我建议你加载翻译没有i18next-http-backend。作为init: https://www.i18next.com/how-to/add-or-load-translations#add-on-init上的资源或者使用i18next-resources-to-backend: https://www.i18next.com/how-to/add-or-load-translations#lazy-load-in-memory-translations