Front: Language Slice: Call i18n method to change instance's language
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
|
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
|
||||||
import { AvailableLanguages, DefaultLanguage } from "../i18n/i18n";
|
import i18n, { AvailableLanguages, DefaultLanguage } from "../i18n/i18n";
|
||||||
|
|
||||||
|
|
||||||
export const languageSlice = createSlice({
|
export const languageSlice = createSlice({
|
||||||
@@ -10,6 +10,7 @@ export const languageSlice = createSlice({
|
|||||||
reducers: {
|
reducers: {
|
||||||
useLanguage: (state, action: PayloadAction<AvailableLanguages>) => {
|
useLanguage: (state, action: PayloadAction<AvailableLanguages>) => {
|
||||||
state.value = action.payload;
|
state.value = action.payload;
|
||||||
|
i18n.changeLanguage(state.value);
|
||||||
},
|
},
|
||||||
resetLanguage: (state) => {
|
resetLanguage: (state) => {
|
||||||
state.value = DefaultLanguage;
|
state.value = DefaultLanguage;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { Text, View } from 'react-native';
|
import { Text, View } from 'react-native';
|
||||||
import { Button } from "react-native-paper";
|
import { Button } from "react-native-paper";
|
||||||
import { useDispatch, useSelector, useStore } from "react-redux";
|
import { useDispatch, useSelector } from "react-redux";
|
||||||
import i18n, { AvailableLanguages, translate } from "../i18n/i18n";
|
import i18n, { AvailableLanguages, DefaultLanguage, translate } from "../i18n/i18n";
|
||||||
import { useLanguage } from "../state/LanguageSlice";
|
import { useLanguage } from "../state/LanguageSlice";
|
||||||
import { unsetUserToken } from "../state/UserSlice";
|
import { unsetUserToken } from "../state/UserSlice";
|
||||||
|
|
||||||
@@ -14,15 +14,17 @@ const HomeView = () => {
|
|||||||
<Text style={{ textAlign: "center" }}>This is the Home Screen</Text>
|
<Text style={{ textAlign: "center" }}>This is the Home Screen</Text>
|
||||||
<Button onPress={() => dispatch(unsetUserToken())}>{ translate('signoutBtn') }</Button>
|
<Button onPress={() => dispatch(unsetUserToken())}>{ translate('signoutBtn') }</Button>
|
||||||
<Button onPress={() => {
|
<Button onPress={() => {
|
||||||
|
let newLanguage = DefaultLanguage;
|
||||||
switch (language) {
|
switch (language) {
|
||||||
case 'en':
|
case 'en':
|
||||||
dispatch(useLanguage('fr'));
|
newLanguage = 'fr';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
dispatch(useLanguage('en'));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
dispatch(useLanguage(newLanguage));
|
||||||
}}>Change language</Button>
|
}}>Change language</Button>
|
||||||
|
<Text style={{ textAlign: "center" }}>Current language: { language }</Text>
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user