2016-04-15 14 views
7

Obsługuję kilka języków w mojej aplikacji i używam do tego React-intl. Mam oprogramowanie pośrednie Redux, w którym nawiązuję połączenie z serwerem, aw przypadku błędu chcę pokazać błąd w interfejsie użytkownika.Używanie komunikatów przetłumaczonych przez React-intl w oprogramowaniu pośredniczącym Redux

wiem, że mogę zrobić coś takiego:

1) Wysłanie operację z middleware z kluczem wiadomości:

{type: SHOW_ERROR, message: 'message_error_key'} 

2) w moim React wykorzystania składnika:

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

Ale czy istnieje sposób wysłania akcji z już przetłumaczoną wiadomością z oprogramowania pośredniego?

{type: SHOW_ERROR, message: [translated_message_should_be_here]} 

Odpowiedz

2

Nie sądzę, można uzyskać dostęp do formatMessage bezpośrednio od pośredniczącego, ponieważ wydaje się tylko do elementów narażonych poprzez injectIntl. Prawdopodobnie możesz zgłosić problem, aby opisać swój przypadek użycia, i może prosty API JavaScript, aby uzyskać dostęp do formatMessage() poza składnikami będą brane pod uwagę, ale teraz nie wydaje się dostępny.

0

Wystąpił nieco podobny problem podczas próby zainicjowania domyślnego stanu reduktora dla zlokalizowanych wiadomości. Wygląda na to, że użycie jakiejkolwiek części parametru react-intl poza komponentami nie jest niczym, co zostało uwzględnione w interfejsie API. Dwie idee:

  1. Inject intl do niestandardowego komponentu poniżej <IntlProvider> co sprawia, że ​​dostępne w componentWillReceiveProps przez Singleton całej aplikacji. Następny dostęp, który jest singleton z innego miejsca i użyj intl.formatMessage i innych.

  2. Możliwe jest użycie komponentów , które React-intl stanowi część implementacji wymaganych funkcji. W takim przypadku można wziąć pod uwagę yahoo/intl-messageformat i yahoo/intl-format-cache. To oczywiście nie byłoby dobrze zintegrowane z reakcją-intl po wyjęciu z pudełka.

Powiązane problemy