2016-04-15 18 views
7

'da React-intl çevrilmiştir iletileri kullanın Uygulamamdaki birkaç dili destekliyorum ve bunun için React-intl komutunu kullanıyorum. Sunucuya çağrı yaptığım ve hata durumunda, kullanıcı arabiriminde bir hata göstermek istediğim Redux ara yazılımım var.Redux middleware

<FormattedMessage id={this.props.message_error_key}/> 
: elemanları kullanılmaktadır tepki

{type: SHOW_ERROR, message: 'message_error_key'} 

2) skinTenimde: Bir mesaj anahtarla katman gelen bir eylem sevk)

1:

ben böyle bir şey yapabilirim, biliyorum

Ancak orta yazılımdan zaten çevrilmiş mesajla bir eylem göndermenin bir yolu var mı?

{type: SHOW_ERROR, message: [translated_message_should_be_here]} 

cevap

2

Ben sadece injectIntl yoluyla bileşenlerine maruz görünüyor çünkü katman doğrudan formatMessage erişebilir sanmıyorum. Büyük olasılıkla, kullanım durumunuzu açıklamak için bir sorunla karşılaşabilirsiniz ve bileşenlerin dışında formatMessage()'a erişmek için sade bir JavaScript API'sı dikkate alınacaktır, ancak şimdi görünmüyor.

0

Bir reducunun varsayılan durumunu yerelleştirilmiş iletilere başlatmaya çalışırken biraz benzer bir sorunla karşılaştım. Bileşenlerin dışındaki herhangi bir tepki-intl parçasının kullanılması, API'da dikkate alınan hiçbir şey değildir. İki fikirleri:

  1. Uygulama çaplı singleton yoluyla componentWillReceiveProps içinde kullanıma sunan <IntlProvider> altında özel bir bileşen haline enjekte intl. Bir sonraki yerden bu tekil giriş ve intl.formatMessage ve diğerleri kullanın.

  2. Gerekli işlevselliği uygulamak için React-intl'nin parçası olan bileşenlerini kullanmak mümkündür. Bu durumda yahoo/intl-messageformat ve yahoo/intl-format-cache kabul edilebilir. Bu elbette kutudan tepkime ile iyi entegre olmaz.