diff --git a/src/components/index.js b/src/components/index.js index ab999a1..9665807 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -1,6 +1,5 @@ import React from 'react'; -import T from 'i18n-react'; -import { getCurrentUserLanguage } from '../utils/methods'; +import { initI18n } from '../i18n/i18n.js'; export {default as AjaxLoader} from './ajaxloader'; export {default as RawHTML} from './raw-html'; @@ -60,19 +59,5 @@ export {default as ScheduleBuilderView} from './schedule-builder-view' // export {default as ExtraQuestionsForm } from './extra-questions/index.js'; // export {default as GMap} from './google-map'; -let language = getCurrentUserLanguage(); - -// language would be something like es-ES or es_ES -// However we store our files with format es.json or en.json -// therefore retrieve only the first 2 digits - -if (language.length > 2) { - language = language.split("-")[0]; - language = language.split("_")[0]; -} - -try { - T.setTexts(require(`../i18n/${language}.json`)); -} catch (e) { - T.setTexts(require(`../i18n/en.json`)); -} +// initialize i18n +initI18n(); diff --git a/src/i18n/i18n.js b/src/i18n/i18n.js index b240a41..7d854ff 100644 --- a/src/i18n/i18n.js +++ b/src/i18n/i18n.js @@ -1,28 +1,31 @@ -import {getCurrentUserLanguage} from "../utils/methods"; +import { getCurrentUserLanguage } from "../utils/methods"; import T from "i18n-react"; import en from './en.json'; import zh from './zh.json'; import es from './es.json'; const resources = { - 'en' : en, - 'zh' : zh, - 'es' : es, + 'en': en, + 'zh': zh, + 'es': es, } -let language = getCurrentUserLanguage(); +export const initI18n = (dictionary) => { + let language = getCurrentUserLanguage(); -// language would be something like es-ES or es_ES -// However we store our files with format es.json or en.json -// therefore retrieve only the first 2 digits + // language would be something like es-ES or es_ES + // However we store our files with format es.json or en.json + // therefore retrieve only the first 2 digits -if (language.length > 2) { - language = language.split("-")[0]; - language = language.split("_")[0]; -} + if (language.length > 2) { + language = language.split("-")[0]; + language = language.split("_")[0]; + } -try { - T.setTexts(resources[language]); -} catch (e) { - T.setTexts(resources['en']); -} \ No newline at end of file + const isDictionaryValid = dictionary && typeof dictionary === 'object' && !Array.isArray(dictionary); + try { + T.setTexts(isDictionaryValid ? { ...resources[language], ...dictionary } : resources[language]); + } catch (e) { + T.setTexts(isDictionaryValid ? { ...resources['en'], ...dictionary } : resources['en']); + } +}; \ No newline at end of file diff --git a/src/utils/actions.js b/src/utils/actions.js index 4dd719f..cb84c3e 100644 --- a/src/utils/actions.js +++ b/src/utils/actions.js @@ -101,6 +101,7 @@ export const authErrorHandler = ( let payload, callback; dispatch(stopLoading()); + switch (code) { case 401: