В моей компании мы создаем веб-сайт 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? "Для этого у меня есть выбор:
- Создайте 2 папки в моем разделе страницы , одну FR и одну EN, она будет добавлена в мою URL-адрес (mySite.org/FR)
- используйте 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? :)
Всем спасибо и хорошего дня!