diff --git a/web/src/components/Config.jsx b/web/src/components/Config.jsx index 828e19d..9f4eb94 100644 --- a/web/src/components/Config.jsx +++ b/web/src/components/Config.jsx @@ -471,6 +471,10 @@ function PanelUpdates({ updates, checking, updating, needsUpdateCount, installed } function PanelLocale({ language, keyboard, layouts, api, t }) { + const { setLanguage, setKeyboard } = useI18n() + const [editLocale, setEditLocale] = useState(false) + const [draftLang, setDraftLang] = useState(language) + const [draftKbd, setDraftKbd] = useState(keyboard) const [saving, setSaving] = useState(false) const [toast, setToast] = useState(null) @@ -482,7 +486,10 @@ function PanelLocale({ language, keyboard, layouts, api, t }) { const handleSave = async () => { setSaving(true) try { - await api.savePreferences({ language, keyboard_layout: keyboard }) + await api.savePreferences({ language: draftLang, keyboard_layout: draftKbd }) + setLanguage(draftLang) + setKeyboard(draftKbd) + setEditLocale(false) showToast(t('config.saved')) } catch (err) { showToast(`${t('config.error')}: ${err.message}`) @@ -490,41 +497,67 @@ function PanelLocale({ language, keyboard, layouts, api, t }) { setSaving(false) } + const currentLang = LANGUAGES.find(l => l.id === language) + const currentKbd = layouts.find(l => l.id === keyboard) + return ( -