1
0
mirror of https://github.com/chinchang/web-maker.git synced 2025-07-24 15:31:14 +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="hi">Hindi</option>
<option value="ja">Japanese</option>
<option value="sa">Sanskrit</option>
<option value="es">Spanish</option>
</select>
</label>
</div>

View File

@@ -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 (
<I18nProvider
language={this.state.prefs.lang}
catalogs={this.getLanguageDefinition()}
>
<I18nProvider language={this.state.prefs.lang} catalogs={catalogs}>
<div class={this.getRootClasses()}>
<div class="main-container">
<MainHeader