From 6505f6462ab816b64d52c82490d8894ac76994b7 Mon Sep 17 00:00:00 2001 From: Matthias Mair Date: Wed, 18 Oct 2023 22:45:36 +0200 Subject: [PATCH] Modified language selection to use language names --- .../src/components/items/LanguageSelect.tsx | 16 ++++- .../src/components/widgets/DisplayWidget.tsx | 2 +- src/frontend/src/contexts/LanguageContext.tsx | 64 ++++++++++--------- .../src/pages/Index/Profile/UserPanel.tsx | 2 +- 4 files changed, 49 insertions(+), 35 deletions(-) diff --git a/src/frontend/src/components/items/LanguageSelect.tsx b/src/frontend/src/components/items/LanguageSelect.tsx index f56c277096..3627644552 100644 --- a/src/frontend/src/components/items/LanguageSelect.tsx +++ b/src/frontend/src/components/items/LanguageSelect.tsx @@ -4,7 +4,7 @@ import { useEffect, useState } from 'react'; import { Locales, languages } from '../../contexts/LanguageContext'; import { useLocalState } from '../../states/LocalState'; -export function LanguageSelect() { +export function LanguageSelect({ width = 80 }: { width?: number }) { const [value, setValue] = useState(null); const [locale, setLanguage] = useLocalState((state) => [ state.language, @@ -21,6 +21,18 @@ export function LanguageSelect() { useEffect(() => { setValue(locale); }, [locale]); + const langOptions = Object.keys(languages).map((key) => ({ + value: key, + label: languages[key as Locales] + })); - return + ); } diff --git a/src/frontend/src/components/widgets/DisplayWidget.tsx b/src/frontend/src/components/widgets/DisplayWidget.tsx index a5f6165de8..c247d16653 100644 --- a/src/frontend/src/components/widgets/DisplayWidget.tsx +++ b/src/frontend/src/components/widgets/DisplayWidget.tsx @@ -21,7 +21,7 @@ export default function DisplayWidget() { Language
- +
diff --git a/src/frontend/src/contexts/LanguageContext.tsx b/src/frontend/src/contexts/LanguageContext.tsx index e0cf18a780..ed06ba32e9 100644 --- a/src/frontend/src/contexts/LanguageContext.tsx +++ b/src/frontend/src/contexts/LanguageContext.tsx @@ -1,4 +1,5 @@ import { i18n } from '@lingui/core'; +import { t } from '@lingui/macro'; import { I18nProvider } from '@lingui/react'; import { useEffect } from 'react'; @@ -38,37 +39,38 @@ export type Locales = | 'zh-hant' | 'pseudo-LOCALE'; -export const languages: Locales[] = [ - 'cs', - 'da', - 'de', - 'el', - 'en', - 'es', - 'es-mx', - 'fa', - 'fi', - 'fr', - 'he', - 'hi', - 'hu', - 'it', - 'ja', - 'ko', - 'nl', - 'no', - 'pl', - 'pt', - 'pt-br', - 'ru', - 'sl', - 'sv', - 'th', - 'tr', - 'vi', - 'zh-hans', - 'zh-hant' -]; +export const languages: Record = { + cs: t`Czech`, + da: t`Danish`, + de: t`German`, + el: t`Greek`, + en: t`English`, + es: t`Spanish`, + 'es-mx': t`Spanish (Mexican)`, + fa: t`Farsi / Persian`, + fi: t`Finnish`, + fr: t`French`, + he: t`Hebrew`, + hi: t`Hindi`, + hu: t`Hungarian`, + it: t`Italian`, + ja: t`Japanese`, + ko: t`Korean`, + nl: t`Dutch`, + no: t`Norwegian`, + pl: t`Polish`, + pt: t`Portuguese`, + 'pt-br': t`Portuguese (Brazilian)`, + ru: t`Russian`, + sl: t`Slovenian`, + sv: t`Swedish`, + th: t`Thai`, + tr: t`Turkish`, + vi: t`Vietnamese`, + 'zh-hans': t`Chinese (Simplified)`, + 'zh-hant': t`Chinese (Traditional)`, + 'pseudo-LOCALE': t`Pseudo Locale` +}; export function LanguageContext({ children }: { children: JSX.Element }) { const [language] = useLocalState((state) => [state.language]); diff --git a/src/frontend/src/pages/Index/Profile/UserPanel.tsx b/src/frontend/src/pages/Index/Profile/UserPanel.tsx index 9e677c0ccf..87ae284cf1 100644 --- a/src/frontend/src/pages/Index/Profile/UserPanel.tsx +++ b/src/frontend/src/pages/Index/Profile/UserPanel.tsx @@ -149,7 +149,7 @@ function DisplaySettings({ height }: { height: number }) { Language - +