Made English the default site so that people dont see a redirect page first
This commit is contained in:
@@ -6,8 +6,16 @@ import { detectPreferredLanguage } from '~/utils/language';
|
||||
const url = new URL(Astro.request.url);
|
||||
const hash = url.hash;
|
||||
|
||||
// Detect preferred language
|
||||
const preferredLanguage = detectPreferredLanguage(Astro.request);
|
||||
// Check for language preference in cookies (set by client-side JS)
|
||||
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
|
||||
return Astro.redirect(`/${preferredLanguage}/${hash}`);
|
||||
|
@@ -6,23 +6,14 @@ type SupportedLanguage = (typeof supportedLanguages)[number];
|
||||
export function detectPreferredLanguage(request: Request): SupportedLanguage {
|
||||
// Check for language preference in cookies (set by client-side JS)
|
||||
const cookies = request.headers.get('cookie') || '';
|
||||
const cookieLanguage = cookies
|
||||
.split(';')
|
||||
.map((cookie) => cookie.trim())
|
||||
.find((cookie) => cookie.startsWith('preferredLanguage='))
|
||||
?.split('=')[1];
|
||||
const cookieMatch = cookies.match(/preferredLanguage=([^;]+)/);
|
||||
const cookieLanguage = cookieMatch ? cookieMatch[1] : null;
|
||||
|
||||
// Get the user's preferred language from the browser if no cookie
|
||||
const acceptLanguage = request.headers.get('accept-language') || '';
|
||||
// Only use browser language if there's an explicit cookie preference
|
||||
if (cookieLanguage && supportedLanguages.some((lang) => lang === cookieLanguage)) {
|
||||
return cookieLanguage as SupportedLanguage;
|
||||
}
|
||||
|
||||
// Use cookie language if available, otherwise detect from browser
|
||||
const preferredLanguage =
|
||||
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;
|
||||
// Default to English
|
||||
return 'en';
|
||||
}
|
||||
|
Reference in New Issue
Block a user