2017-05-16 10 views
1

Ich habe meine Übersetzung, das so geht:Wie kann ich ein Array mit react-native-i18n übersetzen?

en.json

{ 
    "Welcome": "Welcome to react native", 
    "days": ["Sun","Mon","Tue","Wed","Thur","Fri","Sat"] 
} 

und meine Seite, dass es so ist:

import React, { PropTypes } from 'react'; 
import { View, Image } from 'react-native'; 
import i18n from 'react-native-i18n'; 
import ReactNativeCalendar from 'react-native-calendar'; 
import translations from '../../translations'; 
import styles from './styles'; 

const dayHeadings = i18n.t('days'); 

[...]

const Calendar = (props) => { 
    console.log(dayHeadings); 
    return (
    <View> 
     <ReactNativeCalendar 
     customStyle={styles} 
     nextButtonText={nextButton} 
     prevButtonText={prevButton} 
     dayHeadings={dayHeadings} 
     monthNames={monthNames} 
     onDateSelect={props.onDateSelect} 
     eventDates={props.eventDates} 
     showEventIndicators 
     showControls 
     events={props.events} 
     calendarFormat={props.calendarFormat} 
     /> 
     <Legend items={legendItems} /> 
    </View> 
); 
}; 

dayHeadings soll ein Array von übersetzten Strings sein, aber stattdessen bekomme ich

fehlt "en.days" Übersetzung

von der Konsole. Das Seltsame ist, dass, wenn ich die Übersetzung speichere und das heiße Nachladen auslöst, die Übersetzung gut funktioniert like here. Auch ist die Übersetzung in der Datei vorhanden screenshot

Antwort

4

Der beste Weg, es zu tun zu erklären ist:

{ 
    "Welcome": "Welcome to React Native", 
    "days": { 
    "sun": "Sun", 
    "mon": "Mon", 
    "tue": "Tue", 
    "wed": "Wed", 
    "thu": "Thur", 
    "fri": "Fri", 
    "sat": "Sat" 
    } 
} 

Und dann finden Sie es:

I18n.t(['days', 'mon']); 

Angenommen, Sie anzeigen möchten alle Tage (zum Beispiel im Kalender), gehen Sie:

const dayKeys = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; 
... 
render() { 
    return (
    <View> 
    {dayKeys.map((key) => <Text>{I18n.t(['days', key])}</Text>)} 
    </View> 
) 
} 
+0

Es hat nicht funktioniert in meinem Fall, ich kenne nicht den genauen Grund aber für die neueste Reaktion native 0.50+ können Sie es so verwenden. {dayKeys.map ((Schlüssel) => {I18n.t ('Tage'. $ {Schlüssel})})} –

Verwandte Themen