gatsby-ssr.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import React from 'react';
  2. import dotenv from 'dotenv';
  3. import { App } from './src/components/App';
  4. import supportedLanguages from './src/utils/i18n/supportedLanguages';
  5. dotenv.config({
  6. path: `.env.${process.env.NODE_ENV}`,
  7. });
  8. // Duplicated in gatsby-browser.js for client side rendering
  9. export const wrapRootElement = props => <App {...props} />;
  10. export const onRenderBody = ({ pathname, setHeadComponents }) => {
  11. // Create a string to allow a regex replacement for SEO hreflang links: https://support.google.com/webmasters/answer/189077?hl=en
  12. const supportedLocaleRegexGroups = supportedLanguages
  13. .map(language => language.languageTag)
  14. .join('|');
  15. const hrefLangLinks = [
  16. ...supportedLanguages.map(language => {
  17. // Must be a fully qualified site URL
  18. const href = `${process.env.GATSBY_SITE_URL}/${language.languageTag +
  19. pathname.replace(new RegExp(`^/(${supportedLocaleRegexGroups})`), '')}`;
  20. return (
  21. <link
  22. hrefLang={language.languageTag}
  23. href={href}
  24. key={`href-lang-${language.languageTag}`}
  25. />
  26. );
  27. }),
  28. ];
  29. setHeadComponents(hrefLangLinks);
  30. };