76 lines
1.6 KiB
JavaScript
76 lines
1.6 KiB
JavaScript
/**
|
|
* Sample React Native App
|
|
* https://github.com/facebook/react-native
|
|
*
|
|
* @format
|
|
* @flow
|
|
*/
|
|
|
|
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/>
|
|
</>
|
|
);
|
|
}
|
|
};
|