我发现这篇优秀而简单的文章https://medium.com/@jamuhl/translate-your-expo-io-react-native-mobile-application-aa220b2362d2可以在RN(世博会)中实现本地化。
我的用例有点不同:我的应用程序有要翻译的术语的汇总列表(每种语言约1MB的js对象,时间为6-7种语言)。
该应用程序完全脱机(无法从服务器加载语言环境文件)所以我正在搜索延迟加载我想要的json / js语言环境对象的最佳方法。
我可以在这里接受RN / i18next专家的建议。
修改 我几乎复制了这个https://github.com/i18next/react-i18next/blob/master/example/react-native-expo/js/i18n.js
的i18n配置真实数据库位于data:DB
字段中。显然,这不是加载繁重文件的最佳方式,我总是加载所有语言的所有数据库。我可以保持一些相同的简单结构,但只是懒惰加载我需要的语言?
否则,在i18next中有一个 local lazy-load(来自设备文件系统)并反应原生的示例?
import i18n from 'i18next';
import {reactI18nextModule} from 'react-i18next';
i18n
.use(languageDetector)
.use(reactI18nextModule)
.init({
fallbackLng: 'en',
resources: {
en: {
home: {
title: 'Welcome',
introduction: 'This text comes from i18next and is provided in english.',
},
data: { DB:require("./locales/it.json") },
},
de: {
home: {
title: 'Willkommen',
introduction: 'Dieser Text ist von i18next und ist in deutsch.',
},
data: { DB:require("./locales/de.json") },
}
},
// have a common namespace used around the full app
ns: ['common'],
defaultNS: 'home',
debug: true,
interpolation: {
escapeValue: false, // not needed for react as it does escape per default to prevent xss!
}
});
答案 0 :(得分:0)
使用i18next创建自己的后端实现相当简单...... https://www.i18next.com/misc/creating-own-plugins#backend
我建议将您的翻译与应用程序捆绑在一起,而不是从任何外部资源加载。您还可以使用https://www.i18next.com/overview/api#resource-handling
直接添加翻译