mirror of
https://github.com/Snigdha-OS/documentation.git
synced 2025-09-12 20:04:57 +02:00
41 lines
1.7 KiB
JavaScript
41 lines
1.7 KiB
JavaScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
import { useLocation } from '@docusaurus/router';
|
|
import { applyTrailingSlash } from '@docusaurus/utils-common';
|
|
/**
|
|
* Permits to obtain the url of the current page in another locale, useful to
|
|
* generate hreflang meta headers etc...
|
|
*
|
|
* @see https://developers.google.com/search/docs/advanced/crawling/localized-versions
|
|
*/
|
|
export function useAlternatePageUtils() {
|
|
const { siteConfig: { baseUrl, url, trailingSlash }, i18n: { defaultLocale, currentLocale }, } = useDocusaurusContext();
|
|
// TODO using useLocation().pathname is not a super idea
|
|
// See https://github.com/facebook/docusaurus/issues/9170
|
|
const { pathname } = useLocation();
|
|
const canonicalPathname = applyTrailingSlash(pathname, {
|
|
trailingSlash,
|
|
baseUrl,
|
|
});
|
|
const baseUrlUnlocalized = currentLocale === defaultLocale
|
|
? baseUrl
|
|
: baseUrl.replace(`/${currentLocale}/`, '/');
|
|
const pathnameSuffix = canonicalPathname.replace(baseUrl, '');
|
|
function getLocalizedBaseUrl(locale) {
|
|
return locale === defaultLocale
|
|
? `${baseUrlUnlocalized}`
|
|
: `${baseUrlUnlocalized}${locale}/`;
|
|
}
|
|
// TODO support correct alternate url when localized site is deployed on
|
|
// another domain
|
|
function createUrl({ locale, fullyQualified, }) {
|
|
return `${fullyQualified ? url : ''}${getLocalizedBaseUrl(locale)}${pathnameSuffix}`;
|
|
}
|
|
return { createUrl };
|
|
}
|
|
//# sourceMappingURL=useAlternatePageUtils.js.map
|