1
0
mirror of https://github.com/chinchang/web-maker.git synced 2025-07-27 00:30:09 +02:00

app: fix the loading of locales

This commit is contained in:
Kushagra Gour
2019-03-04 11:42:42 +05:30
parent 7340c2afc9
commit 0e872731f4
2 changed files with 25 additions and 19 deletions

View File

@@ -370,8 +370,8 @@ export default class Settings extends Component {
> >
<option value="en">English</option> <option value="en">English</option>
<option value="hi">Hindi</option> <option value="hi">Hindi</option>
<option value="ja">Japanese</option>
<option value="sa">Sanskrit</option> <option value="sa">Sanskrit</option>
<option value="es">Spanish</option>
</select> </select>
</label> </label>
</div> </div>

View File

@@ -106,7 +106,8 @@ export default class App extends Component {
currentItem: { currentItem: {
title: '', title: '',
externalLibs: { js: '', css: '' } externalLibs: { js: '', css: '' }
} },
catalogs: {}
}; };
this.defaultSettings = { this.defaultSettings = {
preserveLastCode: true, preserveLastCode: true,
@@ -257,20 +258,17 @@ export default class App extends Component {
}); });
} }
getLanguageDefinition() { async loadLanguage(lang) {
// console.log('🇯🇲 fetching defninition'); console.log('🇯🇲 fetching defninition');
const { lang } = this.state.prefs;
if (!lang || lang === 'en') {
return {};
} else if (lang === 'hi') {
const def = require('../locales/hi/messages');
return { hi: def.default }; const catalog = await import(/* webpackMode: "lazy", webpackChunkName: "i18n-[index]" */ `../locales/${lang}/messages.js`);
} else if (lang === 'ja') {
const def = require('../locales/ja/messages');
return { ja: def.default }; this.setState(state => ({
catalogs: {
...state.catalogs,
[lang]: catalog.default
} }
}));
} }
incrementUnsavedChanges() { 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() { closeAllOverlays() {
if (this.state.isSavedItemPaneOpen) { if (this.state.isSavedItemPaneOpen) {
this.closeSavedItemsPane(); this.closeSavedItemsPane();
@@ -1484,12 +1493,9 @@ export default class App extends Component {
}); });
} }
render() { render(props, { catalogs = {}, prefs = {} }) {
return ( return (
<I18nProvider <I18nProvider language={this.state.prefs.lang} catalogs={catalogs}>
language={this.state.prefs.lang}
catalogs={this.getLanguageDefinition()}
>
<div class={this.getRootClasses()}> <div class={this.getRootClasses()}>
<div class="main-container"> <div class="main-container">
<MainHeader <MainHeader