14

2025

-

07

语言切换:智能跳转一次 + 记住已跳转标记

用于在支持子域区分语言版本的站点中,实现首次访问时自动跳转到匹配语言版本,并在后续访问中允许用户自由切换语言,不再强制跳转


作者:

来源:

(function smartLangRedirectOnce() {
 const REDIRECT_FLAG_KEY = 'lang_redirected';
 const DEFAULT_LANG = 'zh';
 const DOMAIN_ROOT = 'ceglobal.cn';
 const LANGUAGE_DOMAINS = {
   zh: 'https://www.ceglobal.cn',
   en: 'https://en.ceglobal.cn',
   ru: 'https://ru.ceglobal.cn',
   es: 'https://es.ceglobal.cn',
 };
 function getCookie(name) {
   const value = ("; " + document.cookie).split("; " + name + "=");
   return value.length === 2 ? value.pop().split(";").shift() : null;
 }
 function setCookie(name, value, days = 365) {
   const expires = new Date(Date.now() + days * 864e5).toUTCString();
   document.cookie = `${name}=${value}; expires=${expires}; path=/; domain=${DOMAIN_ROOT}; SameSite=Lax`;
 }
 const currentLang = document.documentElement.lang?.toLowerCase() || DEFAULT_LANG;
 const hasRedirected = getCookie(REDIRECT_FLAG_KEY);
 if (!hasRedirected) {
   const browserLang = navigator.language.toLowerCase();
   let matchedLang = DEFAULT_LANG;
   Object.keys(LANGUAGE_DOMAINS).forEach(lang => {
     if (browserLang.startsWith(lang)) matchedLang = lang;
   });
   if (matchedLang !== currentLang) {
     setCookie(REDIRECT_FLAG_KEY, 'true');
     location.href = LANGUAGE_DOMAINS[matchedLang];
   } else {
     setCookie(REDIRECT_FLAG_KEY, 'true');
   }
 }
})();