From 0e872731f49af5b772d2204a7dced56b1f1b7a1a Mon Sep 17 00:00:00 2001 From: Kushagra Gour Date: Mon, 4 Mar 2019 11:42:42 +0530 Subject: [PATCH] app: fix the loading of locales --- src/components/Settings.jsx | 2 +- src/components/app.jsx | 42 +++++++++++++++++++++---------------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/components/Settings.jsx b/src/components/Settings.jsx index 068f8ce..f4cb970 100644 --- a/src/components/Settings.jsx +++ b/src/components/Settings.jsx @@ -370,8 +370,8 @@ export default class Settings extends Component { > - + diff --git a/src/components/app.jsx b/src/components/app.jsx index 71538ff..b9d6476 100644 --- a/src/components/app.jsx +++ b/src/components/app.jsx @@ -106,7 +106,8 @@ export default class App extends Component { currentItem: { title: '', externalLibs: { js: '', css: '' } - } + }, + catalogs: {} }; this.defaultSettings = { preserveLastCode: true, @@ -257,20 +258,17 @@ export default class App extends Component { }); } - getLanguageDefinition() { - // console.log('🇯🇲 fetching defninition'); - const { lang } = this.state.prefs; - if (!lang || lang === 'en') { - return {}; - } else if (lang === 'hi') { - const def = require('../locales/hi/messages'); + async loadLanguage(lang) { + console.log('🇯🇲 fetching defninition'); - return { hi: def.default }; - } else if (lang === 'ja') { - const def = require('../locales/ja/messages'); + const catalog = await import(/* webpackMode: "lazy", webpackChunkName: "i18n-[index]" */ `../locales/${lang}/messages.js`); - return { ja: def.default }; - } + this.setState(state => ({ + catalogs: { + ...state.catalogs, + [lang]: catalog.default + } + })); } incrementUnsavedChanges() { @@ -637,6 +635,17 @@ export default class App extends Component { } } + shouldComponentUpdate(nextProps, nextState) { + const { catalogs } = nextState; + const { lang } = nextState.prefs; + + if (lang && lang !== 'en' && !catalogs[lang]) { + this.loadLanguage(lang); + } + + return true; + } + closeAllOverlays() { if (this.state.isSavedItemPaneOpen) { this.closeSavedItemsPane(); @@ -1484,12 +1493,9 @@ export default class App extends Component { }); } - render() { + render(props, { catalogs = {}, prefs = {} }) { return ( - +