我有一个对象,它向我返回英语语言的EN和法语语言的FR格式的数据。
items: [
{
comment: "Lorem ipsum ..."
lastModifiedDate: "2021-10-29T08:26:00"
media: "PHONE"
label: {FR: "Bonjour", EN: "Hello"}
}
]我正在使用i18next react来翻译我的应用程序。
我使用的语言是这样的:
const getLanguage = () => i18next.language;但我希望根据使用的语言,恢复对象中的正确密钥。
如果语言为en,则显示:label: { EN: "Hello"};如果语言为fr,则显示:label: { FR: "Bonjour"}
在下图中:
{array.length > 0 &&
array.map((item, index) => (
<Col xs={12} lg={12} className="no-gutters" key={index}>
<Row>
<Col
xs={10}
lg={10}
className="no-gutters d-flex flex-column text-secondary-light"
>
<strong className="d-block text-truncate text-capitalize">
{item.label.getLanguage().toUppercase()}
</strong>
</Col>
</Row>
</Col>
))}我目前正在尝试使用以下显示,但没有成功。
{item.label.getLanguage().toUppercase()}您是否有一个解决方案来根据所使用的语言直接显示对象的值?
发布于 2021-10-29 10:07:32
问题与{item.label.getLanguage().toUppercase()}有关。当你说{item.label.getLanguage().toUppercase()}时,浏览器将在item.label中查找getLanguage函数。然而,getLanguage()在其他地方。
所以,你应该改变:
{item.label.getLanguage().toUppercase()}至
{item.label[getLanguage().toUppercase()]}或者,您可以获取当前语言,如下所示:
import i18next from "i18next"; // first import
//... later in your component
const { i18n } = useTranslation();
const language = i18n.language;您可以查看this sandbox的实时工作示例。
https://stackoverflow.com/questions/69766306
复制相似问题