Made English the default site so that people dont see a redirect page first
Some checks failed
GitHub Actions / build (18) (push) Has been cancelled
GitHub Actions / build (20) (push) Has been cancelled
GitHub Actions / build (22) (push) Has been cancelled
GitHub Actions / check (push) Has been cancelled

This commit is contained in:
becarta
2025-05-01 21:38:11 +02:00
parent 93a8763e04
commit ba2fb9f248
2 changed files with 18 additions and 19 deletions

View File

@@ -6,8 +6,16 @@ import { detectPreferredLanguage } from '~/utils/language';
const url = new URL(Astro.request.url); const url = new URL(Astro.request.url);
const hash = url.hash; const hash = url.hash;
// Detect preferred language // Check for language preference in cookies (set by client-side JS)
const preferredLanguage = detectPreferredLanguage(Astro.request); const cookies = Astro.request.headers.get('cookie') || '';
const cookieLanguage = cookies
.split(';')
.map((cookie) => cookie.trim())
.find((cookie) => cookie.startsWith('preferredLanguage='))
?.split('=')[1];
// Only use detected language if there's an explicit cookie preference
const preferredLanguage = cookieLanguage || 'en';
// Redirect to the language-specific homepage // Redirect to the language-specific homepage
return Astro.redirect(`/${preferredLanguage}/${hash}`); return Astro.redirect(`/${preferredLanguage}/${hash}`);

View File

@@ -6,23 +6,14 @@ type SupportedLanguage = (typeof supportedLanguages)[number];
export function detectPreferredLanguage(request: Request): SupportedLanguage { export function detectPreferredLanguage(request: Request): SupportedLanguage {
// Check for language preference in cookies (set by client-side JS) // Check for language preference in cookies (set by client-side JS)
const cookies = request.headers.get('cookie') || ''; const cookies = request.headers.get('cookie') || '';
const cookieLanguage = cookies const cookieMatch = cookies.match(/preferredLanguage=([^;]+)/);
.split(';') const cookieLanguage = cookieMatch ? cookieMatch[1] : null;
.map((cookie) => cookie.trim())
.find((cookie) => cookie.startsWith('preferredLanguage='))
?.split('=')[1];
// Get the user's preferred language from the browser if no cookie // Only use browser language if there's an explicit cookie preference
const acceptLanguage = request.headers.get('accept-language') || ''; if (cookieLanguage && supportedLanguages.some((lang) => lang === cookieLanguage)) {
return cookieLanguage as SupportedLanguage;
}
// Use cookie language if available, otherwise detect from browser // Default to English
const preferredLanguage = return 'en';
cookieLanguage && supportedLanguages.includes(cookieLanguage as SupportedLanguage)
? (cookieLanguage as SupportedLanguage)
: acceptLanguage
.split(',')
.map((lang) => lang.split(';')[0].trim().substring(0, 2))
.find((lang) => supportedLanguages.includes(lang as SupportedLanguage)) || 'en';
return preferredLanguage as SupportedLanguage;
} }