lgtm
This commit is contained in:
parent
084117cea8
commit
a8de0a614d
36 changed files with 1329 additions and 522 deletions
|
|
@ -34,17 +34,31 @@ function getStoredLanguage(): LanguageCode | null {
|
|||
}
|
||||
}
|
||||
|
||||
function getUrlLanguage(): LanguageCode | null {
|
||||
try {
|
||||
if (typeof window === 'undefined') return null;
|
||||
const value = new URLSearchParams(window.location.search).get('lang');
|
||||
return value ? toSupportedLanguage(value) : null;
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function getBrowserLanguages(): readonly string[] {
|
||||
if (typeof navigator === 'undefined') return [];
|
||||
return navigator.languages?.length ? navigator.languages : [navigator.language];
|
||||
}
|
||||
|
||||
function detectLanguage(): LanguageCode {
|
||||
// 1. Explicit user choice (persisted from the language dropdown)
|
||||
// 1. Explicit URL language, used by generated screenshot/OG image URLs.
|
||||
const urlLanguage = getUrlLanguage();
|
||||
if (urlLanguage) return urlLanguage;
|
||||
|
||||
// 2. Explicit user choice (persisted from the language dropdown)
|
||||
const stored = getStoredLanguage();
|
||||
if (stored) return stored;
|
||||
|
||||
// 2. Browser preference (navigator.languages falls back to navigator.language)
|
||||
// 3. Browser preference (navigator.languages falls back to navigator.language)
|
||||
for (const tag of getBrowserLanguages()) {
|
||||
const language = toSupportedLanguage(tag);
|
||||
if (language) return language;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue