FPSMS-frontend
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 

24 righe
884 B

  1. export const FALLBACK_LANG = "zh";
  2. export const SUPPORTED_LANGUAGES = ["zh", "en"] as const;
  3. export type AppLanguage = (typeof SUPPORTED_LANGUAGES)[number];
  4. /** Cookie name read by `@unly/universal-language-detector`. */
  5. export const I18N_COOKIE_NAME = "i18next";
  6. export function isAppLanguage(value: unknown): value is AppLanguage {
  7. return value === "zh" || value === "en";
  8. }
  9. export function normalizeAppLanguage(value: unknown): AppLanguage | null {
  10. if (typeof value !== "string") return null;
  11. const lower = value.trim().toLowerCase();
  12. if (lower === "zh" || lower.startsWith("zh-")) return "zh";
  13. if (lower === "en" || lower.startsWith("en-")) return "en";
  14. return null;
  15. }
  16. export function setLanguageCookie(lang: AppLanguage) {
  17. if (typeof document === "undefined") return;
  18. document.cookie = `${I18N_COOKIE_NAME}=${lang}; Path=/; SameSite=Lax; Max-Age=31536000`;
  19. }