Можно ли использовать React-intl в качестве переменной в?
Я использую react-intl
а также react-helmet
! и я пытаюсь передать мета-описание Шлему как тексту перевода, но кажется, что это невозможно!
Вот что я сделал:
<Helmet
meta={[{ name: 'description', content: { id: 'homepage.description'} }]}
link={[{ rel: 'icon', href: 'favicon/favicon-32x32.png' }]}
/>
homepage.description
это текст на lang/en/en.json
,
Я предполагаю, что если переводы могут быть захвачены и использованы как переменные, это может быть легко использовать, я сделаю это так:
render() {
const description = formatMessage({ id: 'homepage.description', values: {country: 'Morocco'} });
return (
<Helmet
title={pageTitle}
meta={[{ name: 'description', content: {{description}} }]}
link={[{ rel: 'icon', href: 'favicon/favicon-32x32.png' }]}
/>
);
}
Если это вообще возможно? или существует какая-либо альтернатива этому или лучшая практика, пожалуйста?
заранее спасибо
1 ответ
Да, это возможно, если вы используете injectIntl, таким образом вы можете получить переведенную строку и использовать всякий раз, когда это необходимо:
import {injectIntl} from 'react-intl';
...
render() {
const intl = this.props.intl;
const description = intl.formatMessage({ id: 'homepage.description', values: {country: 'Morocco'} });
return (
<Helmet
title={pageTitle}
meta={[{ name: 'description', content: {{description}} }]}
link={[{ rel: 'icon', href: 'favicon/favicon-32x32.png' }]}
/>
);
}
...
export default injectIntl(YourComponent);
Вы можете просто сделать:
const Example = injectIntl( ({ intl }) => {
return (
<MyComponentt propExampple={ intl.formatMessage({ id: 'translation-ID' }) } />
)
} );