Fallback to english in case no preferred languages are found
This commit is contained in:
@@ -66,8 +66,23 @@ export function langCodeToName(code: string): string {
|
|||||||
return getLanguage(code).nativeName;
|
return getLanguage(code).nativeName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const toUniqueLanguageCodes = (codes: string[]): string[] => {
|
||||||
|
const languages = codes.map((code) => getLanguage(code));
|
||||||
|
const languagesByIsoCode = Object.groupBy(languages, (language) => language.isoCode);
|
||||||
|
|
||||||
|
return Object.entries(languagesByIsoCode)
|
||||||
|
.filter(([, languagesOfIsoCode]) => !!languagesOfIsoCode?.length)
|
||||||
|
.map(([, languagesOfIsoCode]) => languagesOfIsoCode![0].orgCode);
|
||||||
|
};
|
||||||
|
|
||||||
function defaultNativeLang(): readonly string[] {
|
function defaultNativeLang(): readonly string[] {
|
||||||
return navigator.languages;
|
const preferredLanguages = toUniqueLanguageCodes([...navigator.languages]);
|
||||||
|
|
||||||
|
if (!preferredLanguages.length) {
|
||||||
|
return ['en'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return preferredLanguages;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function extensionDefaultLangs(): string[] {
|
export function extensionDefaultLangs(): string[] {
|
||||||
@@ -88,12 +103,3 @@ export const langSortCmp = (a: string, b: string) => {
|
|||||||
|
|
||||||
return aLang.localeCompare(bLang);
|
return aLang.localeCompare(bLang);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const toUniqueLanguageCodes = (codes: string[]): string[] => {
|
|
||||||
const languages = codes.map((code) => getLanguage(code));
|
|
||||||
const languagesByIsoCode = Object.groupBy(languages, (language) => language.isoCode);
|
|
||||||
|
|
||||||
return Object.entries(languagesByIsoCode)
|
|
||||||
.filter(([, languagesOfIsoCode]) => !!languagesOfIsoCode?.length)
|
|
||||||
.map(([, languagesOfIsoCode]) => languagesOfIsoCode![0].orgCode);
|
|
||||||
};
|
|
||||||
|
|||||||
Reference in New Issue
Block a user