2016-04-15 5 views
7

Я поддерживаю несколько языков в своем приложении и использую React-intl для этого. У меня есть промежуточное ПО Redux, где я делаю вызов на сервер, а в случае ошибки я хочу показать ошибку в пользовательском интерфейсе.Использование React-intl переведенных сообщений в промежуточном программном обеспечении Redux

Я знаю, что я могу сделать что-то вроде:

1) направить действие от промежуточного программного обеспечения с ключом сообщения:

{type: SHOW_ERROR, message: 'message_error_key'} 

2) в моем Реагировать компонент использования:

<FormattedMessage id={this.props.message_error_key}/> 

Но есть ли способ отправить действие с уже переведенным сообщением из промежуточного программного обеспечения?

{type: SHOW_ERROR, message: [translated_message_should_be_here]} 

ответ

2

Я не думаю, что вы можете получить доступ к formatMessage непосредственно из промежуточного программного обеспечения, потому что это только кажется, подвергается воздействию компонентов через injectIntl. Вероятно, вы можете указать проблему, чтобы описать ваш прецедент, и, возможно, будет рассмотрен простой JavaScript API для доступа к formatMessage() за пределами компонентов, но он пока недоступен.

0

Я столкнулся с некоторой аналогичной проблемой при попытке инициализировать состояние по умолчанию редуктора локализованным сообщениям. Похоже, что использование какой-либо части реактивного интервала вне компонентов не является ничем, что рассматривалось в API. Две идеи:

  1. Вводят intl в пользовательский компонент ниже <IntlProvider>, что делает его доступным в componentWillReceiveProps через приложения шириной одноточечного. Следующий доступ к этому синглтону из другого места и используйте intl.formatMessage и другие.

  2. Возможно использование компонентов , которые React-intl являются частью реализации требуемой функциональности. В этом случае можно рассмотреть yahoo/intl-messageformat и yahoo/intl-format-cache. Разумеется, это не будет хорошо интегрироваться с реактивной системой из коробки.

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

  • Нет связанных вопросов^_^