2017-07-15 93 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將無效。