1
0
mirror of synced 2024-11-27 17:00:55 +01:00
eAMEMu_RN/App.js
2023-02-05 01:41:53 +09:00

77 lines
1.6 KiB
JavaScript

/**
* Sample React Native App
* https://github.com/facebook/react-native
*
* @format
*/
import React from 'react';
import {createAppContainer} from 'react-navigation';
import {createStackNavigator} from 'react-navigation-stack';
import MainScreen from './src/screen/MainScreen';
import CardEditScreen from './src/screen/CardEditScreen';
import * as RNLocalize from 'react-native-localize';
import i18n from 'i18n-js';
import en from './src/locales/en';
import ko from './src/locales/ko';
const MainNavigator = createStackNavigator(
{
Home: {
screen: MainScreen,
navigationOptions: {headerShown: false},
},
CardEditScreen: {
screen: CardEditScreen,
navigationOptions: {headerShown: false},
},
},
{
initialRouteName: 'Home',
},
);
const AppContainer = createAppContainer(MainNavigator);
const setI18nConfig = () => {
const fallback = {languageTag: 'en'};
const {languageTag} =
RNLocalize.findBestAvailableLanguage(['en', 'ko']) || fallback;
i18n.translations = {
en,
ko,
};
i18n.locale = languageTag;
};
export default class App extends React.Component {
constructor(props) {
super(props);
setI18nConfig();
}
componentDidMount() {
RNLocalize.addEventListener('change', this.handleLocalizationChange);
}
componentWillUnmount() {
RNLocalize.removeEventListener('change', this.handleLocalizationChange);
}
handleLocalizationChange = () => {
setI18nConfig();
this.forceUpdate();
};
render() {
return (
<>
<AppContainer />
</>
);
}
}