38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
|
import React from 'react';
|
||
|
import dotenv from 'dotenv';
|
||
|
import { App } from './src/components/App';
|
||
|
|
||
|
import supportedLanguages from './src/utils/i18n/supportedLanguages';
|
||
|
|
||
|
dotenv.config({
|
||
|
path: `.env.${process.env.NODE_ENV}`,
|
||
|
});
|
||
|
|
||
|
// Duplicated in gatsby-browser.js for client side rendering
|
||
|
export const wrapRootElement = props => <App {...props} />;
|
||
|
|
||
|
export const onRenderBody = ({ pathname, setHeadComponents }) => {
|
||
|
// Create a string to allow a regex replacement for SEO hreflang links: https://support.google.com/webmasters/answer/189077?hl=en
|
||
|
const supportedLocaleRegexGroups = supportedLanguages
|
||
|
.map(language => language.languageTag)
|
||
|
.join('|');
|
||
|
|
||
|
const hrefLangLinks = [
|
||
|
...supportedLanguages.map(language => {
|
||
|
// Must be a fully qualified site URL
|
||
|
const href = `${process.env.GATSBY_SITE_URL}/${language.languageTag +
|
||
|
pathname.replace(new RegExp(`^/(${supportedLocaleRegexGroups})`), '')}`;
|
||
|
|
||
|
return (
|
||
|
<link
|
||
|
hrefLang={language.languageTag}
|
||
|
href={href}
|
||
|
key={`href-lang-${language.languageTag}`}
|
||
|
/>
|
||
|
);
|
||
|
}),
|
||
|
];
|
||
|
|
||
|
setHeadComponents(hrefLangLinks);
|
||
|
};
|