2017-07-15 91 views
0

我可以使用react-native-i18n库和react-native-web-boilerplate吗?我可以使用react-native-i18n库和react-native-web-boilerplate

react-native-web-boilerplate是一个库(description here),使用它可以在桌面,移动设备和Web平台上创建应用程序并导航。

我试图用react-native-i18n库运气,但react-native-i18n导入失败。

RNI18n对象返回为未定义。我无法获得当前的语言环境。

import I18n from 'react-native-i18n' 

有没有人尝试在跨平台的应用程序中使用react-native-i18n

或者还有什么其他更好的方法,你想建议。

+0

您可以尝试将属性'RNI18n'注入到NativeModules中,请参阅https://github.com/AlexanderZaytsev/react-native-i18n/blob/master/index.js,它取决于名为'RNI18n的常量。语言“和一种名为'RNI18n.getLanguages'的方法。您应确保在导入之前注入它。 –

+0

听起来不错。你能请回答并告诉我如何注入这个属性? – user1

+0

我刚刚在https://gist.github.com/cpunion/d66b71342b9a3c1818ad14f9885a0701上基于react-native-web-boilerplate创建了一个修补程序。重要:将'import'更改为'require'以确保模块导入顺序。 –

回答

1

因为react-native-i18n取决于,所以可以将的常数RNI18n注入react-native。然后确保其他模块之前执行它,下面喜欢:

import { NativeModules } from 'react-native' 

const languages = [navigator.language] 

NativeModules.RNI18n = { 
    languages, 
    getLanguages:() => Promise.resolve(languages) 
} 

const App = require('./src').default // If it's ES6 module 

require将保持这个顺序执行的,如果通过import statement导入其他模块的,也许是跑第一,injection将无效。