i18n settings improvements (#2184)

* Handle language selector

* Improve type safety

* Add a little more safety

* Update comment
This commit is contained in:
Eric Bailey 2023-12-12 12:42:11 -06:00 committed by GitHub
parent d82b1a1047
commit c6ab6e8b8e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 79 additions and 39 deletions

View file

@ -21,6 +21,7 @@ import {useModalControls} from '#/state/modals'
import {useLanguagePrefs, useLanguagePrefsApi} from '#/state/preferences'
import {Trans, msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {sanitizeAppLanguageSetting} from '#/locale/helpers'
type Props = NativeStackScreenProps<CommonNavigatorParams, 'LanguageSettings'>
@ -60,7 +61,7 @@ export function LanguageSettingsScreen(_props: Props) {
(value: Parameters<PickerSelectProps['onValueChange']>[0]) => {
if (!value) return
if (langPrefs.appLanguage !== value) {
setLangPrefs.setAppLanguage(value)
setLangPrefs.setAppLanguage(sanitizeAppLanguageSetting(value))
}
},
[langPrefs, setLangPrefs],
@ -103,7 +104,7 @@ export function LanguageSettingsScreen(_props: Props) {
<View style={{position: 'relative'}}>
<RNPickerSelect
placeholder={{}}
value={langPrefs.appLanguage}
value={sanitizeAppLanguageSetting(langPrefs.appLanguage)}
onValueChange={onChangeAppLanguage}
items={APP_LANGUAGES.filter(l => Boolean(l.code2)).map(l => ({
label: l.name,