Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

42 строки
1.3 KiB

  1. import { useEffect } from "react";
  2. import { useIntl } from "react-intl";
  3. export default function usePageTitle(messageIdOrText) {
  4. const intl = useIntl();
  5. useEffect(() => {
  6. let pageTitle;
  7. let systemName;
  8. let gldName;
  9. // If string looks like an intl id, try translate
  10. try {
  11. pageTitle = intl.formatMessage({ id: messageIdOrText });
  12. systemName = intl.formatMessage({ id: "PNSPS_fullname" });
  13. gldName = intl.formatMessage({ id: "HKGLD" });
  14. } catch {
  15. pageTitle = messageIdOrText;
  16. }
  17. const fullTitle = `${pageTitle} - ${systemName} | ${gldName}`;
  18. // Update document title (tab title)
  19. document.title = fullTitle;
  20. // Update <meta name="title"> and <meta name="description"> so they're language-dependent too
  21. const metaTitle = document.querySelector('meta[name="title"]');
  22. if (metaTitle) {
  23. metaTitle.setAttribute("content", fullTitle);
  24. }
  25. const metaDescription = document.querySelector('meta[name="description"]');
  26. if (metaDescription) {
  27. metaDescription.setAttribute("content", fullTitle);
  28. }
  29. // Keep <html lang="..."> in sync with current locale
  30. if (document.documentElement) {
  31. document.documentElement.lang = intl.locale || "en";
  32. }
  33. }, [messageIdOrText, intl]);
  34. }