首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用react-i18next?

如何使用react-i18next?
EN

Stack Overflow用户
提问于 2020-10-14 23:01:37
回答 1查看 79关注 0票数 0

我想翻译对象内部的单词。正在调用myInformation,并将其与myCompany一起放在合并变量中。

代码语言:javascript
复制
import { useTranslation } from 'react-i18next'
const myInformation = {
  title: 'My information',
  icon: InfoOutlinedIcon,
  links: [
    {
      name: 'Personal information',
      slug: `/profile/personal-information`,
      icon: InfoOutlinedIcon,
    },
    {
      name: 'My loyalty programs',
      slug: `/profile/my-loyalty-programs`,
      icon: FavoriteBorderOutlinedIcon,
    },
    {
      name: 'Id documents',
      slug: `/profile/id-documents`,
      icon: ContactMailIcon,
    },
    {
      name: 'My password',
      slug: `/profile/my-password`,
      icon: VpnKeyIcon,
    },
  ],
}

 const ViewInformation = () => {

 const merge = [myInformation, myCompany]
 const renderList = merge.map((item, i) => (
    <OneMenuItem key={i} handleClose={handleClose} item={item} />
  ))

 return({renderList})
 }

当我在myInformation下添加const {t}= useTranslation()时,它不允许我这样做。当单词在地图中时,我如何翻译它们?

代码语言:javascript
复制
const oneMenuItem = () => {
    //some other codes here
    const renderNestedLinks = item.links
    item.links.map((link, key) => {
        return (
          <Box key={key} mt={0.5}>
            <ListItem
              onClick={handleClose}
              to={link.slug}
              component={Link}
              className={classes.nested}
            >
              <ListItemIcon style={{ minWidth: '40px' }}>
                {<link.icon color="primary" />}
              </ListItemIcon>
              <ListItemText
                className={classes.listItemText}
                primary={link.name}
              />
            </ListItem>
          </Box>
        )
      })

      return ({renderNestedLinks})
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-14 23:09:36

您可以在OneMenuItem内部调用useTranslation,将myInformation中的名称设置为转换键。假设您的组件的名称是ViewInformation

代码语言:javascript
复制
const ViewInformation = () => {
  ...component logic

  const myInformation = {
  title: 'my_information',
  icon: InfoOutlinedIcon,
  links: [
    {
      name: 'personal_information',
      slug: `/profile/personal-information`,
      icon: InfoOutlinedIcon,
    },
    ...
  ],
  }
  ...component logic

  const merge = [myInformation, myCompany]
  const renderList = merge.map((item, i) => (
    <OneMenuItem key={i} handleClose={handleClose} item={item} />
  ))
}

然后,在OneMenuItem

代码语言:javascript
复制
import { useTranslation } from 'react-i18next';

const OneMenuItem = () => {
  const { t } = useTranslation();
 ...component logic

  item.links.map((link, key) => {
        return (
          <Box key={key} mt={0.5}>
            <ListItem
              onClick={handleClose}
              to={link.slug}
              component={Link}
              className={classes.nested}
            >
              <ListItemIcon style={{ minWidth: '40px' }}>
                {<link.icon color="primary" />}
              </ListItemIcon>
              <ListItemText
                className={classes.listItemText}
                primary={t(link.name)} // We use t() here, since item.name is a translation key
              />
            </ListItem>
          </Box>
        )
      })
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64356157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档