@inlang/paraglide-js
Version:
[](https://www.npmjs.com/package/@inlang/paraglide-js) [;
*
* @param {Request} request - The request object to extract the locale from.
* @returns {Locale | undefined} The negotiated preferred language.
*/
export function extractLocaleFromHeader(request) {
const acceptLanguageHeader = request.headers.get("accept-language");
if (acceptLanguageHeader) {
// Parse language preferences with their q-values and base language codes
const languages = acceptLanguageHeader
.split(",")
.map((lang) => {
const [tag, q = "1"] = lang.trim().split(";q=");
// Get both the full tag and base language code
const baseTag = tag?.split("-")[0];
return {
fullTag: tag,
baseTag,
q: Number(q),
};
})
.sort((a, b) => b.q - a.q);
for (const lang of languages) {
const fullLocale = toLocale(lang.fullTag);
if (fullLocale) {
return fullLocale;
}
const baseLocale = toLocale(lang.baseTag);
if (baseLocale) {
return baseLocale;
}
}
return undefined;
}
return undefined;
}
//# sourceMappingURL=extract-locale-from-header.js.map