Лучший способ интернационализации с Gatsby и Strapi - PullRequest
2 голосов
/ 07 августа 2020

В моей компании мы создаем веб-сайт stati c с использованием фреймворка Gatsby и безголовой CMS Strapi.

И вопрос дня ... Как бороться с i18n? \ o /

Во-первых, я знаю, что это сложный вопрос, и на него может быть не один ответ, а разные ответы в зависимости от контекста. Итак, я возобновлю вам свое исследование, и я надеюсь, что вы поможете мне закрыть эту топи c:)

Первая идея, самая простая, давайте поищем плагин!

Есть один: gatsby-source-strapi-localized

К сожалению, он не поддерживается, поэтому я не буду его использовать: '(

Хорошо, секунд вещей, давайте посмотрим, что предлагает Strapi!

Strapi пока не имеет функции i18n, это запланировано на конец 2020 года по плану

Но есть обходной путь, используя суффикс в конце полей: средняя статья (С той же идеей вы также можете напрямую суффиксировать свои типы)

Итак, теперь у нас есть суффикс для полей или типов, давайте go к третьей части, Гэтсби!

И .... Это кошмар XD

На самом деле, есть разные решения, чтобы решить эту проблему, но я не нашел своего: '(

Я нашел эту статью о новой теме i18n gatsby. Я d Загрузите стартер, чтобы понять, как он работает. Я понимаю, что страницы для блога создаются автоматически на 2 разных языках, благодаря функции createPage . Для хранения данных создаются 2 файла mdx, а для перенаправлений используется компонент LocalizedLink .

Это интересно, но не очень подходит для моей задачи. Итак, давайте расскажем, что я подумал:

Спойлер! : Я не знаком с пакетами React для i18n, я обнаружил их только сегодня утром, поэтому, может быть, я не вижу ответа ^^ '

Первое: «Как создать хороший URL? "Для этого у меня есть выбор:

  1. Создайте 2 папки в моем разделе страницы , одну FR и одну EN, она будет добавлена ​​в мою URL-адрес (mySite.org/FR)
  2. используйте gatsby-plugin-i18n , который позволяет вам создать index.fr. js и index.en. js для генерации mySite.org/fr или mySite.org/en

После этого в каждом файле я могу настроить свой запрос, чтобы запрашивать данные на хорошем языке:

allStrapiHomePage {
  edges {
    node {
      mainBanner {
        title_lang
      }
    }
  }
}

Или:

allStrapiHomePage_lang {
  edges {
    node {
      mainBanner {
        title
      }
    }
  }
}

Для перенаправления я могу проверить контекст, чтобы узнать, на какой странице я нахожусь.

То, что мне не нравится, это то, что у меня будет 2 файла на страниц, только для запроса, остальная часть страницы такая же: /

Итак, вопрос: Как я могу сгенерировать 2 страницы на страницу с хорошим URL-адресом и хорошим запросом? (у вас есть 2 часа è__é .... XD)

Функция createPage позволяет передавать переменные в контексте, что может помочь мне в запросе. Я также могу изменить путь, который может помочь мне для URL-адреса. Но папка страницы уже обработаны Гэтсби ... Я не могу изменить процесс.

Есть ли у кого-нибудь идея уточнить этот топи c? :)

Всем спасибо и хорошего дня!

...