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 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}`);
|
||||||
|
@@ -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;
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user