From 4716be0d44ce8a12aeabf69398f43c4f44a399b8 Mon Sep 17 00:00:00 2001 From: Florina Pacurar Date: Mon, 17 Jul 2023 17:00:51 +0300 Subject: [PATCH 1/3] feat(core): generate meta og locale and alternates --- .../docusaurus/src/client/SiteMetadataDefaults.tsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/docusaurus/src/client/SiteMetadataDefaults.tsx b/packages/docusaurus/src/client/SiteMetadataDefaults.tsx index 1f49959d3536..56a412ed181a 100644 --- a/packages/docusaurus/src/client/SiteMetadataDefaults.tsx +++ b/packages/docusaurus/src/client/SiteMetadataDefaults.tsx @@ -28,6 +28,18 @@ export default function SiteMetadataDefaults(): JSX.Element { */} {title} + + {Object.values(localeConfigs).map((config) => + htmlLang !== config.htmlLang ? ( + + ) : ( + '' + ), + )} {noIndex && } From f4de5a6e49a47c9420d29917cecd1cb1205de5e1 Mon Sep 17 00:00:00 2001 From: Florina Pacurar Date: Fri, 28 Jul 2023 12:08:46 +0300 Subject: [PATCH 2/3] fix: move og:locale code to classic theme instead of defaults --- .../src/theme/SiteMetadata/index.tsx | 23 ++++++++++++++++++- .../src/client/SiteMetadataDefaults.tsx | 12 ---------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx b/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx index 9a30c775fff2..713067a17120 100644 --- a/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx @@ -24,10 +24,18 @@ import SearchMetadata from '@theme/SearchMetadata'; // See https://github.com/facebook/docusaurus/issues/3317 function AlternateLangHeaders(): JSX.Element { const { - i18n: {defaultLocale, localeConfigs}, + i18n: {currentLocale, defaultLocale, localeConfigs}, } = useDocusaurusContext(); const alternatePageUtils = useAlternatePageUtils(); + const currentHtmlLang = localeConfigs[currentLocale]?.htmlLang; + + // HTML lang is a BCP 47 tag, but the Open Graph protocol requires + // using underscores instead of dashes. + // See https://ogp.me/#optional + // See https://en.wikipedia.org/wiki/IETF_language_tag) + const bcp47ToLocale = (code: string): string => code.replace('-', '_'); + // Note: it is fine to use both "x-default" and "en" to target the same url // See https://www.searchviu.com/en/multiple-hreflang-tags-one-url/ return ( @@ -51,6 +59,19 @@ function AlternateLangHeaders(): JSX.Element { })} hrefLang="x-default" /> + + {currentHtmlLang && ( + + )} + {Object.values(localeConfigs) + .filter((config) => currentHtmlLang !== config.htmlLang) + .map((config) => ( + + ))} ); } diff --git a/packages/docusaurus/src/client/SiteMetadataDefaults.tsx b/packages/docusaurus/src/client/SiteMetadataDefaults.tsx index 56a412ed181a..1f49959d3536 100644 --- a/packages/docusaurus/src/client/SiteMetadataDefaults.tsx +++ b/packages/docusaurus/src/client/SiteMetadataDefaults.tsx @@ -28,18 +28,6 @@ export default function SiteMetadataDefaults(): JSX.Element { */} {title} - - {Object.values(localeConfigs).map((config) => - htmlLang !== config.htmlLang ? ( - - ) : ( - '' - ), - )} {noIndex && } From 1fac61fcbf481887ea7412a97fb5d0fcdfe3312e Mon Sep 17 00:00:00 2001 From: Florina Pacurar Date: Fri, 28 Jul 2023 13:07:04 +0300 Subject: [PATCH 3/3] fix: chore: address minor PR feedback --- .../src/theme/SiteMetadata/index.tsx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx b/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx index 713067a17120..409905c49048 100644 --- a/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx @@ -28,13 +28,14 @@ function AlternateLangHeaders(): JSX.Element { } = useDocusaurusContext(); const alternatePageUtils = useAlternatePageUtils(); - const currentHtmlLang = localeConfigs[currentLocale]?.htmlLang; + const currentHtmlLang = localeConfigs[currentLocale]!.htmlLang; // HTML lang is a BCP 47 tag, but the Open Graph protocol requires // using underscores instead of dashes. // See https://ogp.me/#optional // See https://en.wikipedia.org/wiki/IETF_language_tag) - const bcp47ToLocale = (code: string): string => code.replace('-', '_'); + const bcp47ToOpenGraphLocale = (code: string): string => + code.replace('-', '_'); // Note: it is fine to use both "x-default" and "en" to target the same url // See https://www.searchviu.com/en/multiple-hreflang-tags-one-url/ @@ -60,16 +61,17 @@ function AlternateLangHeaders(): JSX.Element { hrefLang="x-default" /> - {currentHtmlLang && ( - - )} + {Object.values(localeConfigs) .filter((config) => currentHtmlLang !== config.htmlLang) .map((config) => ( ))}