1

我正在使用react-intlreact-helmet!我正在尝试将元描述作为翻译文本传递给 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' }]}
            />
    );
}

如果这甚至可能?或者是否存在任何替代方法或最佳实践?

提前致谢

4

2 回答 2

5

是的,如果您使用 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);
于 2017-08-04T07:37:11.117 回答
0

你可以简单地做:

const Example = injectIntl( ({ intl }) => {
   return (
      <MyComponentt propExampple={ intl.formatMessage({ id: 'translation-ID' }) } />
   )
} );

于 2019-06-22T20:13:51.283 回答