как сделать сайт гэтсби мультиязычным - PullRequest
0 голосов
/ 28 января 2019

я пытаюсь создать многоязычный веб-сайт с помощью gatsby и использую тот же код здесь weziple-gatsby-starter-defualt-intl но когда я использую код из компонента Language, он не работаетили показывая какое-либо раскрывающееся меню, как это предполагает языковой компонент

import React, { Component } from 'react'
import PropTypes from 'prop-types'

class Language extends Component {
  static contextTypes = {
    language: PropTypes.object,
  }

  state = {
    value: '',
  }

  componentDidMount() {
    const { language } = this.context;
    console.log(this.context)
    this.setState({
      value: language.locale || language.detected,
    })
  }

  handleChange = event => {
    const { language } = this.context
    const { originalPath } = language
    const { value } = event.target

    if (value === this.state.value) {
      return
    }

    this.setState({ value }, () => {
      localStorage.setItem('language', value)
      window.location.href = `/${value}${originalPath}`
    })
  }

  render() {
    const { language } = this.context
    const { languages } = language
    const { value } = this.state

    if (!value) {
      return null
    }

    return (

      <select value={value} onChange={this.handleChange}>
        {languages.map(({ value, text }) => (
          <option key={value} value={value}>
            {text}
          </option>
        ))}
      </select>

    )
  }
}

export default Language

, когда я попытался отладить его самостоятельно, я обнаружил, что this.context не определен, а язык не определен

...