diff --git a/mobile/src/App.tsx b/mobile/src/App.tsx index 45e7d19..89c19a0 100644 --- a/mobile/src/App.tsx +++ b/mobile/src/App.tsx @@ -11,6 +11,7 @@ import { RTMTWS } from './rtmt/rtmt_websocket'; import { ConnectionState } from './rtmt/rtmt'; import { useTranslation } from 'react-i18next'; import Snackbar from 'react-native-snackbar'; +import { NativeModules, I18nManager, Platform } from 'react-native' // https://github.com/uuidjs/uuid/issues/514#issuecomment-691475020 import 'react-native-get-random-values'; @@ -20,8 +21,21 @@ const Stack = createNativeStackNavigator(); const context = initContext(); function App() { - - const { t } = useTranslation(); + + // Get device language + const deviceLanguage = + Platform.OS === 'ios' + ? NativeModules.SettingsManager.settings.AppleLocale // iOS + : NativeModules.I18nManager.localeIdentifier; // Android + + + const { t, i18n } = useTranslation(); + + React.useEffect(() => { + console.log(deviceLanguage); + + i18n.changeLanguage(deviceLanguage === "tr_TR" ? "tr" : "en") + }, []); const [userKey, setUserKey] = React.useState(undefined); @@ -37,33 +51,33 @@ function App() { const onThemeChange = (theme: Theme) => setTheme(theme); const connectRTMT = (userKey: string) => { - const rtmt = context.rtmt as RTMTWS; - rtmt.on("error", onConnectionError); - rtmt.on("connectionchange", onConnectionChange) - rtmt.connectWebSocket(userKey) - return rtmt; + const rtmt = context.rtmt as RTMTWS; + rtmt.on("error", onConnectionError); + rtmt.on("connectionchange", onConnectionChange) + rtmt.connectWebSocket(userKey) + return rtmt; } const loadUserKeyAndConnectServer = () => { - context.userKeyStore.getUserKey().then((userKey: string) => { - setUserKey(userKey); - connectRTMT(userKey); - }).catch((error) => { - //TODO: check if it is network error! - Snackbar.show({text: t("ErrorWhenRetrievingInformation")}) - console.error(error); - }); + context.userKeyStore.getUserKey().then((userKey: string) => { + setUserKey(userKey); + connectRTMT(userKey); + }).catch((error) => { + //TODO: check if it is network error! + Snackbar.show({ text: t("ErrorWhenRetrievingInformation") }) + console.error(error); + }); } const disposeApp = () => { - context.rtmt?.dispose(); - context.themeManager.off("themechange", onThemeChange); + context.rtmt?.dispose(); + context.themeManager.off("themechange", onThemeChange); } React.useEffect(() => { - loadUserKeyAndConnectServer(); - context.themeManager.on("themechange", onThemeChange); - return () => disposeApp(); + loadUserKeyAndConnectServer(); + context.themeManager.on("themechange", onThemeChange); + return () => disposeApp(); }, []); //const textColorOnBoard = getColorByBrightness( @@ -71,16 +85,15 @@ function App() { // context.themeManager.theme.textColor, // context.themeManager.theme.textLightColor //); - return ( - - - + + + );