首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gatsby语言本地化(一键更改语言)

Gatsby语言本地化(一键更改语言)
EN

Stack Overflow用户
提问于 2019-12-01 07:43:09
回答 1查看 573关注 0票数 1

我有这个代码,它可以使用两个单独的按钮(锚标签)在英语和德语之间进行语言切换。问题是,我只能使用一个按钮来启用这个开关,但我就是不能理解它。

下面是"language.js“组件:

代码语言:javascript
复制
import { IntlContextConsumer, changeLocale } from "gatsby-plugin-intl"

const languageName = {
  en: "English",
  de: "Deutsch",
}

const Language = () => {
  return (
    <div>
      <IntlContextConsumer>
        {({ languages, language: currentLocale }) =>
          languages.map(language => (
            <a
              key={language}
              onClick={() => changeLocale(language)}
              style={{
                color: currentLocale === language ? `yellow` : `white`,
                margin: 10,
                textDecoration: `underline`,
                cursor: `pointer`,
              }}
            >
              {languageName[language]}
            </a>
          ))
        }
      </IntlContextConsumer>
    </div>
  )
}

export default Language

如果您需要任何其他组件,请让我知道。

提前感谢您的回复。:)

ps。本地化在没有i18实现的情况下完成。

EN

回答 1

Stack Overflow用户

发布于 2020-12-05 22:50:25

当只使用两种语言时,下面的简单示例应该会产生预期的结果。如果您将语言添加到您的配置中,那么它将始终显示除当前语言环境之外的所有语言

代码语言:javascript
复制
import React from "react"
import { IntlContextConsumer, changeLocale } from "gatsby-plugin-intl"

const languageName = {
  en: "EN",
  de: "DE",
}

const LanguageToggle = () => {
  return (
    <div>
      <IntlContextConsumer>
        {({ languages, language: currentLocale }) =>
          languages.map(language => {
            if (language != currentLocale) {
              return (
                <a key={language} onClick={() => changeLocale(language)}>
                  {languageName[language]}
                </a>
              )
            }
          })
        }
      </IntlContextConsumer>
    </div>
  )
}

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

https://stackoverflow.com/questions/59121291

复制
相关文章

相似问题

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