如何使用react-i18next <Trans>组件显示数组元素?
How to use react-i18next <Trans> Component to display array elements?
我正在使用以下 Trans 组件来以粗体或斜体打印我的部分文本:
<Trans i18nKey="namespace:text" >
<strong></strong><i></i>
</Trans>
我的 json 看起来像这样:
"text": "This part should be <0>bold</0> and this one <1>italic</1>.",
"list": [
"Listelement <1>number</1> one.",
"This is the <0>second</0> listelement",
"<0>one</0> more <1>element</1>"
]
对于文本元素,这完全没问题。
但我也想从我的 json.I 中打印出一个列表,通常使用以下代码片段:
{this.props.t('namespace:list', {returnObjects:true}).map((item,index) => (
<li key={index}> {item} </li>
))}
现在我想使用 Trans 组件在我的列表中也能包含粗体和斜体字词。
我试过了:
{this.props.t('namespace:list', {returnObjects:true}).map((item,index) => (
<li>
<Trans i18nKey={"namespace:list."+index} >
<strong></strong><i></i>
</Trans>
</li>
))}
但是我的列表是空的。
如何将组件用于数组元素?
您可以将项目本身作为 i18nKey
传递。
{
this.props.t('namespace:list', { returnObjects: true }).map((item) => (
<li>
<Trans i18nKey={item} components={[<strong />, <em />]} />
</li>
));
}
顺便说一句,最好使用 components
prop 来传递组件数组。
一个工作示例:
https://codesandbox.io/s/react-i18next-trans-with-list-items-drcei?file=/src/app.js
我正在使用以下 Trans 组件来以粗体或斜体打印我的部分文本:
<Trans i18nKey="namespace:text" >
<strong></strong><i></i>
</Trans>
我的 json 看起来像这样:
"text": "This part should be <0>bold</0> and this one <1>italic</1>.",
"list": [
"Listelement <1>number</1> one.",
"This is the <0>second</0> listelement",
"<0>one</0> more <1>element</1>"
]
对于文本元素,这完全没问题。 但我也想从我的 json.I 中打印出一个列表,通常使用以下代码片段:
{this.props.t('namespace:list', {returnObjects:true}).map((item,index) => (
<li key={index}> {item} </li>
))}
现在我想使用 Trans 组件在我的列表中也能包含粗体和斜体字词。 我试过了:
{this.props.t('namespace:list', {returnObjects:true}).map((item,index) => (
<li>
<Trans i18nKey={"namespace:list."+index} >
<strong></strong><i></i>
</Trans>
</li>
))}
但是我的列表是空的。
如何将组件用于数组元素?
您可以将项目本身作为 i18nKey
传递。
{
this.props.t('namespace:list', { returnObjects: true }).map((item) => (
<li>
<Trans i18nKey={item} components={[<strong />, <em />]} />
</li>
));
}
顺便说一句,最好使用 components
prop 来传递组件数组。
一个工作示例:
https://codesandbox.io/s/react-i18next-trans-with-list-items-drcei?file=/src/app.js