【发布时间】:2021-11-04 02:57:44
【问题描述】:
这是我要映射的对象数组。如您所见,它还包含material-ui 图标组件。这就是为什么我无法通过 locales 中的 translation.json 进行映射
const sidebarData = [
{
text: "Picken",
icon: <GetAppIcon style={{ fontSize: 35 }} />,
path: "/picken",
title: "Artikel picken",
},
{
text: "Hole Artikel",
icon: <AddShoppingCartIcon style={{ fontSize: 35 }} />,
path: "/holeartikel",
title: "Hole Artikel zu dieser Workstation",
},
{
text: "Hole Regal",
icon: <ImportExportIcon style={{ fontSize: 35 }} />,
path: "/holeregal",
title: "Hole Regal zu dieser Workstation",
}];
英文翻译的语言环境 (locales/en/translation.json) 如下所示:
{
"sidebarmenu": {
"jobliste": "Joblist",
"picken": "Picken",
"artikel": "Get Item",
"regal": "Get Pod",
"leer": "Get Storage",
"karte": "Show Map"
},
"header": {
"jobliste": "Joblist",
"picken": "Pick Item",
"artikel": "Get Item to this workstation",
"regal": "Get Pod to this workstation",
"leer": "Get empty storage to this workstation",
"karte": "Show Warehouse Map"
}
组件看起来像这样:
import React, { useState, useEffect} from "react";
import { useHistory } from "react-router-dom";
import layouttheme from "./layouttheme";
import ListAltIcon from "@material-ui/icons/ListAlt";
import {Drawer,Typography,Divider,ListItemText,ListItem,List,Box,} from "@material-ui/core";
import useStyles from "./LayoutStyles";
import {useTranslation } from "react-i18next";
function DrawerComp({ open, setOpen, sidebarData }) {
const classes = useStyles();
const history = useHistory();
const [getPath, setGetPath] = useState("Jobliste");
const { t } = useTranslation();
function handleClick(item) {
history.push(item.path);
setGetPath(item.title);
}
return (
<Drawer variant="persistent" anchor="left" open={open}>
<List className={classes.sbList} sidebarData={sidebarData}>
{sidebarData.map(item => (
<ListItem
key={item.text}
onClick={() => handleClick(item)}
>
<ListItemIcon>{item.icon}</ListItemIcon>
<ListItemText>{item.text}</ListItemText>
</ListItem>
))}
</List>
</Drawer>
);
}
export default DrawerComp;
所以我的问题是如何将 sidebarData 与 translation.json 连接以获得翻译?
【问题讨论】:
标签: javascript reactjs internationalization i18next array.prototype.map