diff --git a/apps/web/lib/i18n/i18n.server.ts b/apps/web/lib/i18n/i18n.server.ts index c8b86c567..87b124066 100644 --- a/apps/web/lib/i18n/i18n.server.ts +++ b/apps/web/lib/i18n/i18n.server.ts @@ -58,6 +58,10 @@ export const createI18nServerInstance = cache(createInstance); function getPreferredLanguageFromBrowser() { const acceptLanguage = headers().get('accept-language'); + if (!acceptLanguage) { + return; + } + return parseAcceptLanguageHeader(acceptLanguage, languages)[0]; } diff --git a/packages/i18n/src/i18n.server.ts b/packages/i18n/src/i18n.server.ts index 64385e13b..7bf1f201e 100644 --- a/packages/i18n/src/i18n.server.ts +++ b/packages/i18n/src/i18n.server.ts @@ -73,9 +73,15 @@ export function parseAcceptLanguageHeader( // Ignore wildcard '*' if 'ignoreWildcard' is true if (locale === '*' && ignoreWildcard) return []; + const languageSegment = locale.split('-')[0]; + + if (!languageSegment) return []; + // Return the locale if it's included in the accepted languages try { - return acceptedLanguages.includes(locale) ? [locale] : []; + return acceptedLanguages.includes(languageSegment) + ? [languageSegment] + : []; } catch { return []; }