made sure that the i18n does use navigator.languages instead of navigator.language for automatic language detection (#4244)

This commit is contained in:
Frank Elsinga 2024-01-07 16:55:10 +01:00 committed by GitHub
parent 458cdf9f9b
commit 7635ab54a0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 8 deletions

View file

@ -57,10 +57,16 @@ for (let lang in languageList) {
const rtlLangs = [ "fa", "ar-SY", "ur" ]; const rtlLangs = [ "fa", "ar-SY", "ur" ];
export const currentLocale = () => localStorage.locale /**
|| languageList[navigator.language] && navigator.language * Find the best matching locale to display
|| languageList[navigator.language.substring(0, 2)] && navigator.language.substring(0, 2) * If no locale can be matched, the default is "en"
|| "en"; * @returns {string} the locale that should be displayed
*/
export function currentLocale() {
const potentialLocales = [ localStorage.locale, navigator.language, navigator.language.substring(0, 2), ...navigator.languages ];
const availableLocales = potentialLocales.filter(l => languageList[l]);
return availableLocales[0] || "en";
}
export const localeDirection = () => { export const localeDirection = () => {
return rtlLangs.includes(currentLocale()) ? "rtl" : "ltr"; return rtlLangs.includes(currentLocale()) ? "rtl" : "ltr";

View file

@ -8,6 +8,10 @@ describe("Test i18n.js", () => {
value: language, value: language,
writable: true writable: true
}); });
Object.defineProperty(window.navigator, 'languages', {
value: [language],
writable: true
});
} }
setLanguage('en-EN'); setLanguage('en-EN');