Advertisement
MrModest

Untitled

Mar 15th, 2020
274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { useState, useEffect } from 'react';
  2. import './App.css';
  3. import Repository from './Repository'
  4. import LanguageSwitcher from './components/LanguageSwitcher';
  5. import Loading from './components/Loading';
  6.  
  7. function App() {
  8.   const [dataCache, setDataCache] = useState();
  9.   const [loading, setLoading] = useState(true);
  10.   const [locale, setLocale] = useState('en');
  11.   const [localeData, setLocaleData] = useState();
  12.  
  13.   useEffect(() => {
  14.     const setDefaultLocale = () => {
  15.       const lang = navigator.language || navigator.userLanguage;
  16.  
  17.       if (lang.toLowerCase().match('ru') === null) {
  18.         setLocale('en');
  19.       } else {
  20.         setLocale('ru');
  21.       }
  22.     };
  23.  
  24.     setDefaultLocale();
  25.  
  26.     const fetchData = async () => {
  27.       setDataCache(await Repository.getStaticData());
  28.       setLoading(false);
  29.     };
  30.    
  31.     fetchData();
  32.   }, []);
  33.  
  34.   useEffect(() => {
  35.     if (dataCache) setLocaleData(dataCache[locale]);
  36.   }, [dataCache]);
  37.  
  38.   useEffect(() => {
  39.     if (!loading) { setLocaleData(dataCache[locale]); }
  40.   }, [locale])
  41.  
  42.   return loading ? <Loading /> : (
  43.     <div className="App">
  44.       <div className="wrapper">
  45.         <div className="content container">
  46.           <LanguageSwitcher langCaption = {localeData.header.langCaption} setLocale = {setLocale} />
  47.         </div>
  48.       </div>
  49.     </div>
  50.   );
  51. }
  52.  
  53. export default App;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement