Skip to content

Commit

Permalink
umputun#10 auto generate loadLocale
Browse files Browse the repository at this point in the history
  • Loading branch information
Mavrin committed Feb 23, 2020
1 parent c2991ed commit 55c19c0
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 2 deletions.
9 changes: 8 additions & 1 deletion frontend/app/utils/loadLocale.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
/** this is generated file by "npm run generate-langs" **/
import enMessages from '../locales/en.json';

export async function loadLocale(locale: string): Promise<Record<string, string>> {
if (locale === 'ru') {
return import(/* webpackChunkName: "ru" */ `../locales/ru.json`)
return import(/* webpackChunkName: "ru" */ '../locales/ru.json')
.then(res => res.default)
.catch(() => enMessages);
}
if (locale === 'de') {
return import(/* webpackChunkName: "de" */ '../locales/de.json')
.then(res => res.default)
.catch(() => enMessages);
}

return enMessages;
}
8 changes: 7 additions & 1 deletion frontend/tasks/generateDictionary.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
const fs = require('fs');
const path = require('path');
const defaultMessages = require('../extracted-messages/messages');
const { renderLoadLocale } = require('./localeLoadTemplate');
const { getSupportedLocales } = require('./getSupportedLocales');

const locales = ['en', 'ru', 'de'];
const locales = getSupportedLocales();

const keyMessagePairs = [];
const keysSet = new Set();
Expand Down Expand Up @@ -37,4 +39,8 @@ locales.forEach(locale => {
currentDict = removeAbandonedKeys(keysSet, currentDict);
currentDict = sortDict(currentDict);
fs.writeFileSync(pathToDict, JSON.stringify(currentDict, null, 2) + '\n');
fs.writeFileSync(
path.resolve(__dirname, `../app/utils/loadLocale.ts`),
renderLoadLocale(locales.filter(locale => locale !== 'en'))
);
});
6 changes: 6 additions & 0 deletions frontend/tasks/getSupportedLocales.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const getSupportedLocales = require('./supportedLocales');
module.exports = {
getSupportedLocales() {
return getSupportedLocales;
},
};
20 changes: 20 additions & 0 deletions frontend/tasks/localeLoadTemplate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
function renderLoadLocale(locales) {
return `/** this is generated file by "npm run generate-langs" **/
import enMessages from '../locales/en.json';
export async function loadLocale(locale: string): Promise<Record<string, string>> {
${locales
.map(
locale => ` if (locale === '${locale}') {
return import(/* webpackChunkName: "${locale}" */ '../locales/${locale}.json')
.then(res => res.default)
.catch(() => enMessages);
}
`
)
.join('')}
return enMessages;
}\n`;
}

module.exports = { renderLoadLocale };
1 change: 1 addition & 0 deletions frontend/tasks/supportedLocales.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
["en", "ru", "de"]

0 comments on commit 55c19c0

Please sign in to comment.