fix: prevent excessive locale bundling (#41979)

Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
This commit is contained in:
Oliver Eyton-Williams
2021-05-08 09:48:37 +02:00
committed by GitHub
parent 1805631e4a
commit e1f673e685
5 changed files with 68 additions and 12 deletions

View File

@@ -1,3 +1,5 @@
/* global preval */
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
@@ -12,20 +14,53 @@ i18n.use(initReactI18next).init({
fallbackLng: 'en',
lng: i18nextCode,
// we only load one language since each language will have it's own server
// They need to be evaluated ahead of time, to prevent Webpack from bundling
// the entire locales directory. To avoid double imports when the locale is
// english, we simply export nothing from the preval
resources: {
[i18nextCode]: {
translations: require(`./locales/${clientLocale}/translations.json`),
trending: require(`./locales/${clientLocale}/trending.json`),
intro: require(`./locales/${clientLocale}/intro.json`),
metaTags: require(`./locales/${clientLocale}/meta-tags.json`),
links: require(`./locales/${clientLocale}/links.json`)
translations: preval`
const envData = require('../../config/env.json');
const { clientLocale } = envData;
if (clientLocale !== 'english') {
module.exports = require('./locales/' + clientLocale + '/translations.json');
}
`,
trending: preval`
const envData = require('../../config/env.json');
const { clientLocale } = envData;
if (clientLocale !== 'english') {
module.exports = require('./locales/' + clientLocale + '/trending.json');
}
`,
intro: preval`
const envData = require('../../config/env.json');
const { clientLocale } = envData;
if (clientLocale !== 'english') {
module.exports = require('./locales/' + clientLocale + '/intro.json');
}
`,
metaTags: preval`
const envData = require('../../config/env.json');
const { clientLocale } = envData;
if (clientLocale !== 'english') {
module.exports = require('./locales/' + clientLocale + '/meta-tags.json');
}
`,
links: preval`
const envData = require('../../config/env.json');
const { clientLocale } = envData;
if (clientLocale !== 'english') {
module.exports = require('./locales/' + clientLocale + '/links.json');
}
`
},
en: {
translations: require('./locales/english/translations.json'),
trending: require('./locales/english/trending.json'),
intro: require('./locales/english/intro.json'),
metaTags: require('./locales/english/meta-tags.json'),
links: require('./locales/english/links.json')
translations: preval`module.exports = require('./locales/english/translations.json')`,
trending: preval`module.exports = require('./locales/english/trending.json')`,
intro: preval`module.exports = require('./locales/english/intro.json')`,
metaTags: preval`module.exports = require('./locales/english/meta-tags.json')`,
links: preval`module.exports = require('./locales/english/links.json')`
}
},
ns: ['translations', 'trending', 'intro', 'metaTags', 'links'],