import { useEffect } from "react"; import { useIntl } from "react-intl"; export default function usePageTitle(messageIdOrText) { const intl = useIntl(); useEffect(() => { let pageTitle; let systemName; let gldName; // If string looks like an intl id, try translate try { pageTitle = intl.formatMessage({ id: messageIdOrText }); systemName = intl.formatMessage({ id: "PNSPS_fullname" }); gldName = intl.formatMessage({ id: "HKGLD" }); } catch { pageTitle = messageIdOrText; } const fullTitle = `${pageTitle} - ${systemName} | ${gldName}`; // Update document title (tab title) document.title = fullTitle; // Update and so they're language-dependent too const metaTitle = document.querySelector('meta[name="title"]'); if (metaTitle) { metaTitle.setAttribute("content", fullTitle); } const metaDescription = document.querySelector('meta[name="description"]'); if (metaDescription) { metaDescription.setAttribute("content", fullTitle); } // Keep in sync with current locale if (document.documentElement) { document.documentElement.lang = intl.locale || "en"; } }, [messageIdOrText, intl]); }