2016-01-19 1 views
1

Скажем, у меня есть такие компоненты, как это:Могу ли я использовать встроенные имена React-Intl для временных периодов в моем приложении?

<FormattedMessage 
    id='ui.widget.cycleOffsetSelector.timeCycle.label' 
    defaultMessage="This {cycle}" 
    values={{cycle: props.cycle}} 
/> 

Поскольку props.cycle в моем примере это фактически период времени, как day, week, month и т.д., мне нужно перевести этот текст тоже перед передачей его в FormattedMessage. Каков правильный способ сделать такой вид перевод в переводе?

Лучшее, что я могу придумать с этим:

const intlPeriod = { 
    day: intl.formatMessage({id: 'timePeriod.week', defaultMessage: 'day'}), 
    week: intl.formatMessage({id: 'timePeriod.week', defaultMessage: 'week'}), 
    month: intl.formatMessage({id: 'timePeriod.month', defaultMessage: 'month'}), 
}; 

<FormattedMessage 
    id='ui.widget.cycleOffsetSelector.timeCycle.label' 
    defaultMessage="This {cycle}" 
    values={{cycle: intlPeriod[cycle]}} 
/> 

Является ли это единственный способ?

Я вижу, что в пакете узла Js для react-intl, в файле lib\locale-data\[lang].js, там уже значение, определенный для day, week, month и т.д. Есть ли способ получить доступ/использовать эти строки в моем приложении напрямую?

Я использую ветвь v2react-intl.

ответ

1

ui.widget.cycleOffsetSelector.timeCycle.label сообщение должно быть что-то вроде этого:

en-US 

This {cycle, select, 
    day {day} 
    week {week} 
    month {month} 
} 

es-US 

{cycle, select, 
    day {Este día} 
    week {Esta semana} 
    month {Este mes} 
} 

Это позволяет для испанской версии правильно переключаться между мужским и женским Эсте/ETSA в зависимости от значения cycle.

Смежные вопросы