diff --git a/src/index.ts b/src/index.ts index b385b7e..221354f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,6 +4,7 @@ import { canUseDOM, setCookie, getCookieFromRequest, + isEqualCaseInsensitive, } from './utilities' class Internationalization { @@ -46,8 +47,9 @@ class Internationalization { (navigator.languages && navigator.languages[0]) || navigator.language return ( - this.supportedLanguages.find((lang) => lang === browserLanguage) || - this.fallbackLanguage + this.supportedLanguages.find((lang) => + isEqualCaseInsensitive(lang, browserLanguage) + ) || this.fallbackLanguage ) } @@ -65,8 +67,9 @@ class Internationalization { setLanguage(language: string): void { if (canUseDOM()) { const cookieLanguage = - this.supportedLanguages.find((lang) => lang === language) || - this.fallbackLanguage + this.supportedLanguages.find((lang) => + isEqualCaseInsensitive(lang, language) + ) || this.fallbackLanguage setCookie(this.cookieName, cookieLanguage) } @@ -109,7 +112,9 @@ class Internationalization { .find( ({ locale }) => locale !== '*' && - this.supportedLanguages.some((lang) => locale === lang) + this.supportedLanguages.some((lang) => + isEqualCaseInsensitive(locale, lang) + ) ) // Check if the potential locale is not undefined else return the fallback language @@ -131,8 +136,9 @@ class Internationalization { // Return found language or fallback language return ( - this.supportedLanguages.find((lang) => lang === language) || - this.fallbackLanguage + this.supportedLanguages.find((lang) => + isEqualCaseInsensitive(lang, language) + ) || this.fallbackLanguage ) } diff --git a/src/utilities.ts b/src/utilities.ts index e2ab5ca..f644cf2 100644 --- a/src/utilities.ts +++ b/src/utilities.ts @@ -65,4 +65,14 @@ function canUseDOM(): boolean { ) } -export { getCookieFromDocument, getCookieFromRequest, setCookie, canUseDOM } +function isEqualCaseInsensitive(a: string, b: string): boolean { + return a.toLowerCase() === b.toLowerCase() +} + +export { + getCookieFromDocument, + getCookieFromRequest, + setCookie, + canUseDOM, + isEqualCaseInsensitive, +}