From d4e571e3fd62b696b7ee7647e1acd51cbc562cd4 Mon Sep 17 00:00:00 2001 From: balzack Date: Thu, 24 Aug 2023 18:03:37 -0700 Subject: [PATCH] pulling language from OS --- app/mobile/src/constants/Strings.js | 38 +++++++------- app/mobile/src/session/settings/Settings.jsx | 50 ++++++++----------- .../src/session/settings/useSettings.hook.js | 3 +- 3 files changed, 43 insertions(+), 48 deletions(-) diff --git a/app/mobile/src/constants/Strings.js b/app/mobile/src/constants/Strings.js index bbdbb6ab..76f74452 100644 --- a/app/mobile/src/constants/Strings.js +++ b/app/mobile/src/constants/Strings.js @@ -1,20 +1,6 @@ -export function getLanguageId(language) { - if (language === 'english') { - return 0; - } - if (language === 'french') { - return 1; - } - if (language === 'spanish') { - return 2; - } - if (language === 'german') { - return 3; - } - return 0; // default -}; +import { NativeModules, Platform } from 'react-native' -export const Strings = [ +const Strings = [ { visibleRegistry: 'Visible in Registry', edit: 'Edit', @@ -97,4 +83,22 @@ export const Strings = [ } ]; -export default Strings; +export function getLanguageStrings() { + const locale = Platform.OS === 'ios' ? NativeModules.SettingsManager.settings.AppleLocale || NativeModules.SettingsManager.settings.AppleLanguages[0] : NativeModules.I18nManager.localeIdentifier; + + const lang = locale.slice(0, 2) || ''; + + if (lang === 'en') { + return Strings[0]; + } + if (lang === 'fr') { + return Strings[1]; + } + if (lang === 'es') { + return Strings[2]; + } + if (lang === 'de') { + return Strings[3]; + } + return Strings[0]; +}; diff --git a/app/mobile/src/session/settings/Settings.jsx b/app/mobile/src/session/settings/Settings.jsx index 71469b3a..1573fafb 100644 --- a/app/mobile/src/session/settings/Settings.jsx +++ b/app/mobile/src/session/settings/Settings.jsx @@ -1,27 +1,27 @@ +import { useState } from 'react'; import { ScrollView, View, Text, Switch, TouchableOpacity } from 'react-native'; import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context'; import { styles } from './Settings.styled'; import { useSettings } from './useSettings.hook'; import MatIcons from 'react-native-vector-icons/MaterialCommunityIcons'; import Colors from 'constants/Colors'; -import Strings from 'constants/Strings'; export function Settings() { - + const { state, actions } = useSettings(); return ( - - + + - { Strings[state.lang].messaging } + { state.strings.messaging } - { Strings[state.lang].enableNotifications } + { state.strings.enableNotifications } @@ -33,43 +33,33 @@ export function Settings() { - { Strings[state.lang].sealedTopics } + { state.strings.sealedTopics } - { Strings[state.lang].display } + { state.strings.display } - { Strings[state.lang].hourMode } - - - - - - - - - - { Strings[state.lang].language } + { state.strings.hourMode } - { Strings[state.lang].account } + { state.strings.account } - { Strings[state.lang].logout } + { state.strings.logout } @@ -79,7 +69,7 @@ export function Settings() { - { Strings[state.lang].changeLogin } + { state.strings.changeLogin } @@ -89,20 +79,20 @@ export function Settings() { - { Strings[state.lang].deleteAccount } + { state.strings.deleteAccount } - { Strings[state.lang].blocked } + { state.strings.blocked } - { Strings[state.lang].contacts } + { state.strings.contacts } @@ -112,7 +102,7 @@ export function Settings() { - { Strings[state.lang].topics } + { state.strings.topics } @@ -122,13 +112,13 @@ export function Settings() { - { Strings[state.lang].messages } + { state.strings.messages } - { Strings[state.lang].support } + { state.strings.support } @@ -141,7 +131,7 @@ export function Settings() { - - + + ); } diff --git a/app/mobile/src/session/settings/useSettings.hook.js b/app/mobile/src/session/settings/useSettings.hook.js index 0c4ca665..18672647 100644 --- a/app/mobile/src/session/settings/useSettings.hook.js +++ b/app/mobile/src/session/settings/useSettings.hook.js @@ -1,9 +1,10 @@ import { useState, useEffect, useRef, useContext } from 'react'; +import { getLanguageStrings } from 'constants/Strings'; export function useSettings() { const [state, setState] = useState({ - lang: 0, + strings: getLanguageStrings(), }); const updateState = (value) => {