import React from 'react'; import { useTranslation } from 'react-i18next'; const usePageMetadata = (pageKey, pageTitleNs = 'common', pageDescriptionNs = 'common') => { const { t, i18n } = useTranslation([pageTitleNs, pageDescriptionNs, 'common']); const currentLang = i18n.language.split('-')[0]; React.useEffect(() => { const title = t(`${pageKey}Title`, { ns: pageTitleNs, defaultValue: t('common:defaultPageTitle') }); const description = t(`${pageKey}Description`, { ns: pageDescriptionNs, defaultValue: t('common:defaultPageDescription') }); const keywords = t(`${pageKey}Keywords`, { ns: pageDescriptionNs, defaultValue: t('common:defaultKeywords') }); document.title = title; const descriptionMeta = document.querySelector('meta[name="description"]'); if (descriptionMeta) { descriptionMeta.setAttribute('content', description); } else { const meta = document.createElement('meta'); meta.name = 'description'; meta.content = description; document.head.appendChild(meta); } const keywordsMeta = document.querySelector('meta[name="keywords"]'); if (keywordsMeta) { keywordsMeta.setAttribute('content', keywords); } else { const meta = document.createElement('meta'); meta.name = 'keywords'; meta.content = keywords; document.head.appendChild(meta); } const htmlTag = document.documentElement; if (htmlTag) { htmlTag.setAttribute('lang', currentLang); } let canonicalLink = document.querySelector('link[rel="canonical"]'); if (!canonicalLink) { canonicalLink = document.createElement('link'); canonicalLink.setAttribute('rel', 'canonical'); document.head.appendChild(canonicalLink); } const baseHref = 'https://ds-consulting.biz'; const path = window.location.pathname === '/' ? '' : window.location.pathname; canonicalLink.setAttribute('href', `${baseHref}${path}`); const ogTitleMeta = document.querySelector('meta[property="og:title"]'); if (ogTitleMeta) ogTitleMeta.setAttribute('content', title); const ogDescriptionMeta = document.querySelector('meta[property="og:description"]'); if (ogDescriptionMeta) ogDescriptionMeta.setAttribute('content', description); const ogUrlMeta = document.querySelector('meta[property="og:url"]'); if (ogUrlMeta) ogUrlMeta.setAttribute('content', `${baseHref}${path}`); const twitterTitleMeta = document.querySelector('meta[name="twitter:title"]'); if (twitterTitleMeta) twitterTitleMeta.setAttribute('content', title); const twitterDescriptionMeta = document.querySelector('meta[name="twitter:description"]'); if (twitterDescriptionMeta) twitterDescriptionMeta.setAttribute('content', description); }, [t, i18n.language, pageKey, pageTitleNs, pageDescriptionNs]); }; export default usePageMetadata;