首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据使用的语言更改密钥

根据使用的语言更改密钥
EN

Stack Overflow用户
提问于 2021-10-29 09:09:28
回答 1查看 48关注 0票数 1

我有一个对象,它向我返回英语语言的EN和法语语言的FR格式的数据。

代码语言:javascript
复制
 items: [
   {
   comment: "Lorem ipsum ..."
   lastModifiedDate: "2021-10-29T08:26:00"
   media: "PHONE"
   label: {FR: "Bonjour", EN: "Hello"}
  }
 ]

我正在使用i18next react来翻译我的应用程序。

我使用的语言是这样的:

代码语言:javascript
复制
const getLanguage = () => i18next.language;

但我希望根据使用的语言,恢复对象中的正确密钥。

如果语言为en,则显示:label: { EN: "Hello"};如果语言为fr,则显示:label: { FR: "Bonjour"}

在下图中:

代码语言:javascript
复制
 {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>
   ))}

我目前正在尝试使用以下显示,但没有成功。

代码语言:javascript
复制
{item.label.getLanguage().toUppercase()}

您是否有一个解决方案来根据所使用的语言直接显示对象的值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-29 10:07:32

问题与{item.label.getLanguage().toUppercase()}有关。当你说{item.label.getLanguage().toUppercase()}时,浏览器将在item.label中查找getLanguage函数。然而,getLanguage()在其他地方。

所以,你应该改变:

代码语言:javascript
复制
{item.label.getLanguage().toUppercase()}

代码语言:javascript
复制
{item.label[getLanguage().toUppercase()]}

或者,您可以获取当前语言,如下所示:

代码语言:javascript
复制
import i18next from "i18next"; // first import 

//... later in your component
const { i18n } = useTranslation();

const language = i18n.language;

您可以查看this sandbox的实时工作示例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69766306

复制
相关文章

相似问题

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