использование response-intl для перевода ключа сообщения за пределы компонента - PullRequest
0 голосов
/ 01 октября 2018

Я использую библиотеку реагировать-intl для интернационализации.Внутри компонента я использую injectIntl HOC для перевода ключей сообщения:

import {injectIntl} from 'react-intl';

const Component = props => (
    const message = props.intl.formatMessage({id: 'message.key'});
    // remainder of component omitted
);

export default injectIntl(Component);

Можно ли получить перевод сообщения, если я не нахожусь внутри компонента?

1 Ответ

0 голосов
/ 04 октября 2018

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

import { IntlProvider, addLocaleData, defineMessages } from 'react-intl';
import localeDataDE from 'react-intl/locale-data/de';
import localeDataEN from 'react-intl/locale-data/en';
import Locale from '../../../../utils/locale';

addLocaleData([...localeDataEN, ...localeDataDE]);
const locale = Locale.getLocale(); // returns 'en' or 'de' in my case

const intlProvider = new IntlProvider({ locale, messages });
const { intl } = intlProvider.getChildContext();

const messages = defineMessages({
  foo: {
    id: 'bar',
    defaultMessage: 'some label'
  }
});
const Component = () => (
  const componentMessage = intl.formatMessage(messages.foo);
);

Я сделал другую настройку для меня, но я думаю, это должно работать для вас.

...