import { Language, defaultLanguage, isValidLanguage } from './config'; export const getLanguageFromPath = (pathname: string, search?: string): Language => { // 首页、产品页面和新闻页面支持 ?lang=xx if ( (pathname === '/' || pathname === '' || pathname === '/products' || pathname === '/news') && search ) { const params = new URLSearchParams(search); const lang = params.get('lang'); if (lang && isValidLanguage(lang)) { return lang as Language; } } const segments = pathname.split('/').filter(Boolean); const firstSegment = segments[0]; if (firstSegment && isValidLanguage(firstSegment)) { return firstSegment; } return defaultLanguage; }; export const removeLanguageFromPath = (pathname: string): string => { const segments = pathname.split('/').filter(Boolean); const firstSegment = segments[0]; if (firstSegment && isValidLanguage(firstSegment)) { return '/' + segments.slice(1).join('/'); } return pathname; }; export const addLanguageToPath = (pathname: string, language: Language): string => { if (language === defaultLanguage) { return pathname; } const cleanPath = removeLanguageFromPath(pathname); return `/${language}${cleanPath === '/' ? '' : cleanPath}`; }; export const getStoredLanguage = (): Language => { if (typeof window === 'undefined') return defaultLanguage; const stored = localStorage.getItem('preferred-language'); if (stored && isValidLanguage(stored)) { return stored; } return defaultLanguage; }; export const setStoredLanguage = (language: Language): void => { if (typeof window === 'undefined') return; localStorage.setItem('preferred-language', language); }; export const getBrowserLanguage = (): Language => { if (typeof window === 'undefined') return defaultLanguage; const browserLang = navigator.language.toLowerCase(); if (browserLang.startsWith('zh-cn') || browserLang.startsWith('zh-hans')) { return 'zh-CN'; } if (browserLang.startsWith('zh-tw') || browserLang.startsWith('zh-hant')) { return 'zh-TW'; } if (browserLang.startsWith('en')) { return 'en'; } return defaultLanguage; };