Перенаправление на основе языка браузера в Гэтсби - PullRequest
1 голос
/ 25 января 2020

Я строю сайт на основе Гэтсби. Содержимое engli sh доступно через «/», а содержимое немецкого языка - через «/ de». Это обрабатывается следующим плагином: https://github.com/angeloocana/gatsby-plugin-i18n.

Теперь я хотел бы определить язык браузера и перенаправить пользователя на «/» или «/ de». До сих пор я понимал, что это нелегко получить с Gatsby, так как Gatsby отрисовывает и строит маршрутизацию на стороне сервера.

Каков наилучший способ определения языка пользователя и перенаправления на либо "/", либо "/ de"

1 Ответ

0 голосов
/ 19 февраля 2020

Вам нужно сделать что-то вроде этого

import React, { useEffect } from "react";
import { navigate } from "gatsby";

const getRedirectLanguage = () => {
  if (typeof navigator === `undefined`) {
    return "en";
  }

  const lang = navigator && navigator.language && navigator.language.split("-")[0];
  if (!lang) return "en";

  switch (lang) {
    case "ja":
      return "ja";
    default:
      return "en";
  }
};

const IndexPage = () => {
  useEffect(() => {
    const urlLang = getRedirectLanguage();

    navigate(`/${urlLang}`);
  }, []);

  return null;
};

export default IndexPage;

Кредиты на https://github.com/gatsbyjs/gatsby/issues/21548

...