2017-07-15 19 views
0

Kann ich react-native-i18n Bibliothek mit react-native-web-boilerplate verwenden?Kann ich react-native-i18n-Bibliothek mit react-native-web-boilerplate verwenden

react-native-web-boilerplate ist eine Bibliothek (description here) mit der Sie eine App in reagieren und navigieren in Desktop-, mobilen und Web-Plattformen erstellen können.

Ich versuchte mein Glück mit react-native-i18n Bibliothek, aber react-native-i18n Import schlägt fehl.

RNI18n Objekt als nicht definiert zurückgegeben. Ich kann die aktuelle Sprache nicht finden.

import I18n from 'react-native-i18n' 

Hat jemand versucht react-native-i18n in einem Cross-Plattform-App?

Oder gibt es einen anderen besseren Weg, den Sie vorschlagen möchten.

+0

Sie können versuchen, eine Eigenschaft 'RNI18n' in NativeModules zu injizieren, siehe https://github.com/AlexanderZaytsev/react-native-i18n/blob/master/index.js, es hängt von einer Konstanten namens' RNI18n ab. Sprachen "und eine Methode mit dem Namen' RNI18n.getLanguages'. Sie sollten sicherstellen, dass es injiziert wird, bevor es importiert wird. –

+0

Klingt gut. Könnten Sie bitte die Antwort posten und mir zeigen, wie Sie diese Eigenschaft injizieren können? – user1

+0

Ich habe gerade einen Patch basierend auf react-native-web-boilerplate unter https://gist.github.com/cpunion/d66b71342b9a3c1818ad14f9885a0701 erstellt. Wichtig: Ändern Sie "Import" in "Require", um sicherzustellen, dass der Modul importiert wird. –

Antwort

1

Sie können eine Konstante RNI18n in NativeModules von react-native injizieren, weil react-native-i18n davon abhängt. Und dann sicherzustellen, dass sie vor anderen Modulen auszuführen, mag unter:

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 wird die Reihenfolge der Ausführung halten, wenn Sie andere Module von import statement importieren, ist es vielleicht zuerst ausgeführt, die injection wird ungültig.

Verwandte Themen