From 99eaec85478f384ddb0ea45a9d9c95c4dce646f5 Mon Sep 17 00:00:00 2001 From: lain Date: Mon, 8 Jun 2020 17:22:07 +0200 Subject: Messages: Load languages asynchronously. Reduces the size of the initial app bundle by about half. --- src/i18n/messages.js | 95 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 68 insertions(+), 27 deletions(-) (limited to 'src/i18n/messages.js') diff --git a/src/i18n/messages.js b/src/i18n/messages.js index c56ae205..a257486f 100644 --- a/src/i18n/messages.js +++ b/src/i18n/messages.js @@ -7,34 +7,75 @@ // sed -i -e "s/'//gm" -e 's/"/\\"/gm' -re 's/^( +)(.+?): ((.+?))?(,?)(\{?)$/\1"\2": "\4"/gm' -e 's/\"\{\"/{/g' -e 's/,"$/",/g' file.json // There's only problem that apostrophe character ' gets replaced by \\ so you have to fix it manually, sorry. +const loaders = { + ar: () => import('./ar.json'), + ca: () => import('./ca.json'), + cs: () => import('./cs.json'), + de: () => import('./de.json'), + eo: () => import('./eo.json'), + es: () => import('./es.json'), + et: () => import('./et.json'), + eu: () => import('./eu.json'), + fi: () => import('./fi.json'), + fr: () => import('./fr.json'), + ga: () => import('./ga.json'), + he: () => import('./he.json'), + hu: () => import('./hu.json'), + it: () => import('./it.json'), + ja: () => import('./ja_pedantic.json'), + ja_easy: () => import('./ja_easy.json'), + ko: () => import('./ko.json'), + nb: () => import('./nb.json'), + nl: () => import('./nl.json'), + oc: () => import('./oc.json'), + pl: () => import('./pl.json'), + pt: () => import('./pt.json'), + ro: () => import('./ro.json'), + ru: () => import('./ru.json'), + te: () => import('./te.json'), + zh: () => import('./zh.json') +} + const messages = { - ar: require('./ar.json'), - ca: require('./ca.json'), - cs: require('./cs.json'), - de: require('./de.json'), - en: require('./en.json'), - eo: require('./eo.json'), - es: require('./es.json'), - et: require('./et.json'), - eu: require('./eu.json'), - fi: require('./fi.json'), - fr: require('./fr.json'), - ga: require('./ga.json'), - he: require('./he.json'), - hu: require('./hu.json'), - it: require('./it.json'), - ja: require('./ja_pedantic.json'), - ja_easy: require('./ja_easy.json'), - ko: require('./ko.json'), - nb: require('./nb.json'), - nl: require('./nl.json'), - oc: require('./oc.json'), - pl: require('./pl.json'), - pt: require('./pt.json'), - ro: require('./ro.json'), - ru: require('./ru.json'), - te: require('./te.json'), - zh: require('./zh.json') + languages: [ + 'ar', + 'ca', + 'cs', + 'de', + 'en', + 'eo', + 'es', + 'et', + 'eu', + 'fi', + 'fr', + 'ga', + 'he', + 'hu', + 'it', + 'ja', + 'ja_easy', + 'ko', + 'nb', + 'nl', + 'oc', + 'pl', + 'pt', + 'ro', + 'ru', + 'te', + 'zh' + ], + default: { + en: require('./en.json') + }, + setLanguage: async (i18n, language) => { + if (loaders[language]) { + let messages = await loaders[language]() + i18n.setLocaleMessage(language, messages) + } + i18n.locale = language + } } export default messages -- cgit v1.2.3-70-g09d2 From 44db3af0db55454c537a26bf9ea3fc8e121c7e43 Mon Sep 17 00:00:00 2001 From: lain Date: Tue, 9 Jun 2020 09:26:46 +0200 Subject: Messages: DRY things up a bit. --- src/i18n/messages.js | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) (limited to 'src/i18n/messages.js') diff --git a/src/i18n/messages.js b/src/i18n/messages.js index a257486f..c3195f10 100644 --- a/src/i18n/messages.js +++ b/src/i18n/messages.js @@ -37,35 +37,7 @@ const loaders = { } const messages = { - languages: [ - 'ar', - 'ca', - 'cs', - 'de', - 'en', - 'eo', - 'es', - 'et', - 'eu', - 'fi', - 'fr', - 'ga', - 'he', - 'hu', - 'it', - 'ja', - 'ja_easy', - 'ko', - 'nb', - 'nl', - 'oc', - 'pl', - 'pt', - 'ro', - 'ru', - 'te', - 'zh' - ], + languages: ['en', ...Object.keys(loaders)], default: { en: require('./en.json') }, -- cgit v1.2.3-70-g09d2