mirror of
https://github.com/alibaba/open-code-review.git
synced 2026-07-09 17:28:58 +00:00
feat(i18n): auto-detect browser language for default locale selection
Use navigator.languages to detect the user's preferred language and automatically select the matching locale (zh/ja/en) on first visit, falling back to English when no match is found.
This commit is contained in:
parent
dc30b81ad6
commit
86d474c5d7
1 changed files with 14 additions and 2 deletions
|
|
@ -16,12 +16,24 @@ const LanguageContext = createContext<LanguageContextValue | null>(null);
|
|||
|
||||
const STORAGE_KEY = 'ocr-lang';
|
||||
|
||||
const SUPPORTED_LANGUAGES: Language[] = ['en', 'zh', 'ja'];
|
||||
|
||||
function detectBrowserLanguage(): Language | null {
|
||||
try {
|
||||
for (const lang of navigator.languages ?? [navigator.language]) {
|
||||
const code = lang.toLowerCase().split('-')[0];
|
||||
if (SUPPORTED_LANGUAGES.includes(code as Language)) return code as Language;
|
||||
}
|
||||
} catch {}
|
||||
return null;
|
||||
}
|
||||
|
||||
function getInitialLanguage(): Language {
|
||||
try {
|
||||
const stored = localStorage.getItem(STORAGE_KEY);
|
||||
if (stored === 'en' || stored === 'zh' || stored === 'ja') return stored;
|
||||
if (stored && SUPPORTED_LANGUAGES.includes(stored as Language)) return stored as Language;
|
||||
} catch {}
|
||||
return 'en';
|
||||
return detectBrowserLanguage() ?? 'en';
|
||||
}
|
||||
|
||||
export const LanguageProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue