Fix issues with language detection

This commit is contained in:
janderedev 2021-08-06 22:12:10 +02:00
parent 735e9b7f5e
commit fbdbf5d0bc
No known key found for this signature in database
GPG key ID: 5D5E18ACB990F57A

View file

@ -53,16 +53,22 @@ export function Component(props: Props) {
Langs[x as keyof typeof Langs],
]) as Key[];
// Get the user's system language
// Get the user's system language. Check for exact
// matches first, otherwise check for partial matches
const preferredLanguage =
navigator.languages.filter((lang) =>
languages.find((l) => l[0].replace(/_/g, "-") == lang),
)?.[0] ||
navigator.languages
?.filter((lang) =>
languages.find((l) => l[0] == lang.split("-")[0]),
)?.[0]
?.split("-")[0] ?? "en";
?.map((x) => x.split("-")[0])
?.filter((lang) => languages.find((l) => l[0] == lang))?.[0]
?.split("-")[0];
if (preferredLanguage) {
// This moves the user's system language to the top of the language list
const prefLangKey = languages.find((lang) => lang[0] == preferredLanguage);
const prefLangKey = languages.find(
(lang) => lang[0].replace(/_/g, "-") == preferredLanguage,
);
if (prefLangKey) {
languages.splice(
0,
@ -70,6 +76,7 @@ export function Component(props: Props) {
languages.splice(languages.indexOf(prefLangKey), 1)[0],
);
}
}
return (
<div className={styles.languages}>