【发布时间】:2021-09-22 10:38:35
【问题描述】:
我有一个像这样的对象:
{
comment: "autogenerated"
createdDate: "2021-09-21T14:32:47"
id: 7831
lastModifiedDate: "2021-09-21T14:32:47"
media: "LETTER"
}
知道media 可以返回不同的值,例如:“LETTER”、“PHONE”、“EMAIL”。
我希望根据media 返回的值更改我的翻译
const renderMedia = (media: string) => {
return (
<>
{t(`press.text`, {
media: presentMedia(media),
})}
</>
);
};
presentMedia() 函数根据media 返回的值返回翻译
const presentMedia = (media: string) => {
switch (media) {
case 'PHONE':
return <span>t('press.media.phone')</span>;
case 'LETTER':
return <span>{t('press.media.letter')}</span>;
case 'EMAIL':
return <span>t('press.media.email')</span>;
}
};
i18n 文件:
"press": {
"text": "files {{media}}",
"media": {
"phone": " by phone",
"letter": "bu letter",
"email": "bu email"
},
另一方面,presentMedia 函数返回 [object, Object],而我想恢复 switch 中存在的翻译
如果我用一个简单的字符串 <span>test</span> 替换 <span>{t('press.media.letter')}</span> 它会显示
在函数中使用 i18n React 有问题吗?
可能有另一种解决方案可以给我同样的结果?
【问题讨论】:
-
如果您尝试答案,请告诉我
标签: reactjs internationalization react-i18next