Skip to content

Commit 3c0416f

Browse files
author
devgioele
authored
Merge pull request #8 from aboutbits/language-comparison
Compare languages ignoring case
2 parents 392a7f7 + c980a24 commit 3c0416f

2 files changed

Lines changed: 24 additions & 8 deletions

File tree

src/index.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
canUseDOM,
55
setCookie,
66
getCookieFromRequest,
7+
isEqualCaseInsensitive,
78
} from './utilities'
89

910
class Internationalization<T extends string> {
@@ -46,8 +47,9 @@ class Internationalization<T extends string> {
4647
(navigator.languages && navigator.languages[0]) || navigator.language
4748

4849
return (
49-
this.supportedLanguages.find((lang) => lang === browserLanguage) ||
50-
this.fallbackLanguage
50+
this.supportedLanguages.find((lang) =>
51+
isEqualCaseInsensitive(lang, browserLanguage)
52+
) || this.fallbackLanguage
5153
)
5254
}
5355

@@ -65,8 +67,9 @@ class Internationalization<T extends string> {
6567
setLanguage(language: string): void {
6668
if (canUseDOM()) {
6769
const cookieLanguage =
68-
this.supportedLanguages.find((lang) => lang === language) ||
69-
this.fallbackLanguage
70+
this.supportedLanguages.find((lang) =>
71+
isEqualCaseInsensitive(lang, language)
72+
) || this.fallbackLanguage
7073

7174
setCookie(this.cookieName, cookieLanguage)
7275
}
@@ -109,7 +112,9 @@ class Internationalization<T extends string> {
109112
.find(
110113
({ locale }) =>
111114
locale !== '*' &&
112-
this.supportedLanguages.some((lang) => locale === lang)
115+
this.supportedLanguages.some((lang) =>
116+
isEqualCaseInsensitive(locale, lang)
117+
)
113118
)
114119

115120
// Check if the potential locale is not undefined else return the fallback language
@@ -131,8 +136,9 @@ class Internationalization<T extends string> {
131136

132137
// Return found language or fallback language
133138
return (
134-
this.supportedLanguages.find((lang) => lang === language) ||
135-
this.fallbackLanguage
139+
this.supportedLanguages.find((lang) =>
140+
isEqualCaseInsensitive(lang, language)
141+
) || this.fallbackLanguage
136142
)
137143
}
138144

src/utilities.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,14 @@ function canUseDOM(): boolean {
6565
)
6666
}
6767

68-
export { getCookieFromDocument, getCookieFromRequest, setCookie, canUseDOM }
68+
function isEqualCaseInsensitive(a: string, b: string): boolean {
69+
return a.toLowerCase() === b.toLowerCase()
70+
}
71+
72+
export {
73+
getCookieFromDocument,
74+
getCookieFromRequest,
75+
setCookie,
76+
canUseDOM,
77+
isEqualCaseInsensitive,
78+
}

0 commit comments

Comments
 (0)