fix: tracks both language and whether an exact match has been found

This commit is contained in:
PatrikKozak
2024-04-08 16:30:17 -04:00
parent aa04f23a59
commit e8407aa7a4

View File

@@ -181,21 +181,25 @@ const acceptedLanguages = [
export function matchLanguage(header: string): string | undefined {
const parsedHeader = parseAcceptLanguage(header)
let matchedLanguage = ''
let matchedLanguage = { isExactMatch: false, language: '' }
for (const { language } of parsedHeader) {
for (const acceptedLanguage of acceptedLanguages) {
if (
if (language === acceptedLanguage) {
if (!matchedLanguage.isExactMatch || matchedLanguage.language === '') {
matchedLanguage = { isExactMatch: true, language: acceptedLanguage }
}
} else if (
language.startsWith(acceptedLanguage) &&
acceptedLanguage.length > matchedLanguage.length
!matchedLanguage.isExactMatch &&
acceptedLanguage.length > matchedLanguage.language.length
) {
matchedLanguage = acceptedLanguage
matchedLanguage.language = acceptedLanguage
}
}
}
return matchedLanguage || undefined
return matchedLanguage.language || undefined
}
const initTFunction: InitTFunction = (args) => {