web/user: add language selection

closes #2041

Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
Jens Langhammer
2022-01-01 15:03:27 +01:00
parent a6373ebb33
commit 0ef8edc9f1
9 changed files with 487 additions and 307 deletions

View File

@ -1,21 +1,51 @@
import { en, fr, tr } from "make-plural/plurals";
import { i18n } from "@lingui/core";
import { Messages, i18n } from "@lingui/core";
import { detect, fromNavigator, fromStorage, fromUrl } from "@lingui/detect-locale";
import { t } from "@lingui/macro";
import { messages as localeEN } from "../locales/en";
import { messages as localeFR_FR } from "../locales/fr_FR";
import { messages as localeDEBUG } from "../locales/pseudo-LOCALE";
import { messages as localeTR } from "../locales/tr";
i18n.loadLocaleData("en", { plurals: en });
i18n.loadLocaleData("debug", { plurals: en });
i18n.loadLocaleData("tr", { plurals: tr });
i18n.loadLocaleData("fr_FR", { plurals: fr });
i18n.load("en", localeEN);
i18n.load("tr", localeTR);
i18n.load("fr_FR", localeFR_FR);
i18n.load("debug", localeDEBUG);
export const LOCALES: {
code: string;
label: string;
// eslint-disable-next-line @typescript-eslint/ban-types
plurals: Function;
locale: Messages;
}[] = [
{
code: "en",
plurals: en,
label: t`English`,
locale: localeEN,
},
{
code: "debug",
plurals: en,
label: t`Debug`,
locale: localeDEBUG,
},
{
code: "fr_FR",
plurals: fr,
label: t`French`,
locale: localeFR_FR,
},
{
code: "tr",
plurals: tr,
label: t`Turkish`,
locale: localeTR,
},
];
LOCALES.forEach((locale) => {
i18n.loadLocaleData(locale.code, { plurals: locale.plurals });
i18n.load(locale.code, locale.locale);
});
const DEFAULT_FALLBACK = () => "en";