// 统一的语言检测逻辑，确保服务器端和客户端一致
export const useLanguageDetection = () => {
  // 检测初始语言的统一逻辑
  const detectInitialLanguage = () => {
    // 服务端环境
    if (typeof window === 'undefined') {
      return 'en'; // 服务端默认英文，实际语言由中间件设置
    }
    
    // 客户端环境
    try {
      // 1. 优先使用cookie（与服务器中间件保持一致）
      const cookies = document.cookie.split(';');
      const localeCookie = cookies.find(cookie => 
        cookie.trim().startsWith('i18n_redirected=')
      );
      if (localeCookie) {
        const langValue = localeCookie.split('=')[1];
        if (['cn', 'en'].includes(langValue)) {
          return langValue;
        }
      }
      
      // 2. 检查内联脚本设置的语言
      const scriptLang = window.__INITIAL_LANG__ || 
                       document.documentElement.getAttribute('data-initial-lang');
      if (scriptLang && ['cn', 'en'].includes(scriptLang)) {
        return scriptLang;
      }
      
      // 3. 检查localStorage
      const storedLang = localStorage.getItem('locale_lang');
      if (storedLang && ['cn', 'en'].includes(storedLang)) {
        return storedLang;
      }
      
      // 4. 检查浏览器语言（与服务器中间件保持一致）
      if (navigator.language.startsWith("en")) {
        return "en";
      } else if (navigator.language.includes("zh")) {
        return "cn";
      }
    } catch (e) {
      console.warn('Language detection failed:', e);
    }
    
    return 'en'; // 默认英文
  };
  
  // 保存语言设置
  const saveLanguage = (lang) => {
    if (typeof window === 'undefined') return;
    
    try {
      // 保存到Cookie（使用Nuxt i18n的标准键名）
      document.cookie = 'i18n_redirected=' + lang + '; path=/; max-age=31536000';
      
      // 保存到localStorage
      localStorage.setItem('locale_lang', lang);
      
      // 更新全局变量
      window.__INITIAL_LANG__ = lang;
      window.__I18N_INITIAL_LOCALE__ = lang;
      
      // 更新文档属性
      document.documentElement.setAttribute('data-initial-lang', lang);
      document.documentElement.setAttribute('data-locale', lang);
      document.documentElement.setAttribute('lang', lang === 'cn' ? 'zh-CN' : 'en');
    } catch (error) {
      console.warn('Language save failed:', error);
    }
  };
  
  return {
    detectInitialLanguage,
    saveLanguage
  };
};
