import AsyncStorage from '@react-native-async-storage/async-storage' import { useNavigation } from '@react-navigation/native' import * as Localization from 'expo-localization' import * as Updates from 'expo-updates' import React, { useEffect, useLayoutEffect, useState } from 'react' import { Platform, TouchableOpacity, View } from 'react-native' import i18n from '../../../i18n' import { MainWrapper } from '../../components' import RadioButton from '../../components/FdRadioBtn/RadioBtn' import TextDefault from '../../components/Text/TextDefault/TextDefault' import { alignment } from '../../utilities/alignment' import colors from '../../utilities/colors' import { scale } from '../../utilities/scaling' import styles from './styles' const languageTypes = [ { value: 'English', code: 'en', index: 0 }, { value: 'français', code: 'fr', index: 1 }, { value: 'ភាសាខ្មែរ', code: 'km', index: 2 }, { value: '中文', code: 'zh', index: 3 }, { value: 'Deutsche', code: 'de', index: 4 } ] function Language() { const navigation = useNavigation() const [activeRadio, setActiveRadio] = useState(languageTypes[0].index) // eslint-disable-next-line no-unused-vars const [languageName, languageNameSetter] = useState('English') useLayoutEffect(() => { navigation.setOptions({ title: i18n.t('titleLanguage') }) }, [navigation]) useEffect(() => { selectedLanguageFunc() }, []) async function selectedLanguageFunc() { const lang = await AsyncStorage.getItem('enatega-language') if (lang) { const defLang = languageTypes.findIndex(el => el.code === lang) const langName = languageTypes[defLang].value setActiveRadio(defLang) languageNameSetter(langName) } } async function onSelectedLanguage() { const languageInd = activeRadio if (Platform.OS === 'android') { const localization = await Localization.getLocalizationAsync() localization.locale = languageTypes[languageInd].code await AsyncStorage.setItem( 'enatega-language', languageTypes[languageInd].code ) try { Updates.reloadAsync() } catch (error) { console.log('err', error) } } } return ( {languageTypes.map((item, index) => ( setActiveRadio(item.index)} style={[styles.radioContainer]}> {item.value} setActiveRadio(item.index)} /> ))} onSelectedLanguage()} style={{ backgroundColor: colors.tagColor, width: '72%', borderRadius: scale(10), alignSelf: 'center', alignItems: 'center', height: scale(40), justifyContent: 'center' }}> {i18n.t('Done')} navigation.goBack()} style={{ width: '72%', alignSelf: 'center', alignItems: 'center', height: scale(40), justifyContent: 'center' }}> {i18n.t('Cancel')} ) } export default Language