mirror of https://github.com/mastodon/mastodon
Only load Intl data for current language (#3130)
* Only load Intl data for current language * Extract common chunk only from application.js and public.js * Generate locale packs, avoid caching on window objectpull/3230/head
parent
73e4468ff3
commit
9d04de1c8d
@ -1,61 +1,9 @@
|
|||||||
import ar from './ar.json';
|
let theLocale;
|
||||||
import en from './en.json';
|
|
||||||
import ca from './ca.json';
|
|
||||||
import de from './de.json';
|
|
||||||
import es from './es.json';
|
|
||||||
import fa from './fa.json';
|
|
||||||
import he from './he.json';
|
|
||||||
import hr from './hr.json';
|
|
||||||
import hu from './hu.json';
|
|
||||||
import io from './io.json';
|
|
||||||
import it from './it.json';
|
|
||||||
import fr from './fr.json';
|
|
||||||
import nl from './nl.json';
|
|
||||||
import no from './no.json';
|
|
||||||
import oc from './oc.json';
|
|
||||||
import pt from './pt.json';
|
|
||||||
import pt_br from './pt-BR.json';
|
|
||||||
import uk from './uk.json';
|
|
||||||
import fi from './fi.json';
|
|
||||||
import eo from './eo.json';
|
|
||||||
import ru from './ru.json';
|
|
||||||
import ja from './ja.json';
|
|
||||||
import zh_hk from './zh-HK.json';
|
|
||||||
import zh_cn from './zh-CN.json';
|
|
||||||
import bg from './bg.json';
|
|
||||||
import id from './id.json';
|
|
||||||
import tr from './tr.json';
|
|
||||||
|
|
||||||
const locales = {
|
export function setLocale(locale) {
|
||||||
ar,
|
theLocale = locale;
|
||||||
en,
|
}
|
||||||
ca,
|
|
||||||
de,
|
|
||||||
es,
|
|
||||||
fa,
|
|
||||||
he,
|
|
||||||
hr,
|
|
||||||
hu,
|
|
||||||
io,
|
|
||||||
it,
|
|
||||||
fr,
|
|
||||||
nl,
|
|
||||||
no,
|
|
||||||
oc,
|
|
||||||
pt,
|
|
||||||
'pt-BR': pt_br,
|
|
||||||
uk,
|
|
||||||
fi,
|
|
||||||
eo,
|
|
||||||
ru,
|
|
||||||
ja,
|
|
||||||
'zh-HK': zh_hk,
|
|
||||||
'zh-CN': zh_cn,
|
|
||||||
bg,
|
|
||||||
id,
|
|
||||||
tr,
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function getMessagesForLocale(locale) {
|
export function getLocale() {
|
||||||
return locales[locale];
|
return theLocale;
|
||||||
};
|
}
|
||||||
|
@ -0,0 +1,52 @@
|
|||||||
|
// To avoid adding a lot of boilerplate, locale packs are
|
||||||
|
// automatically generated here. These are written into the tmp/
|
||||||
|
// directory and then used to generate locale_en.js, locale_fr.js, etc.
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
const rimraf = require('rimraf');
|
||||||
|
const mkdirp = require('mkdirp');
|
||||||
|
|
||||||
|
const localesJsonPath = path.join(__dirname, '../../app/javascript/mastodon/locales');
|
||||||
|
const locales = fs.readdirSync(localesJsonPath).filter(filename => {
|
||||||
|
return /\.json$/.test(filename) &&
|
||||||
|
!/defaultMessages/.test(filename) &&
|
||||||
|
!/whitelist/.test(filename);
|
||||||
|
}).map(filename => filename.replace(/\.json$/, ''));
|
||||||
|
|
||||||
|
const outPath = path.join(__dirname, '../../tmp/packs');
|
||||||
|
|
||||||
|
rimraf.sync(outPath);
|
||||||
|
mkdirp.sync(outPath);
|
||||||
|
|
||||||
|
const outPaths = [];
|
||||||
|
|
||||||
|
locales.forEach(locale => {
|
||||||
|
const localePath = path.join(outPath, `locale_${locale}.js`);
|
||||||
|
const baseLocale = locale.split('-')[0]; // e.g. 'zh-TW' -> 'zh'
|
||||||
|
const localeDataPath = [
|
||||||
|
// first try react-intl
|
||||||
|
`../../node_modules/react-intl/locale-data/${baseLocale}.js`,
|
||||||
|
// then check locales/locale-data
|
||||||
|
`../../app/javascript/mastodon/locales/locale-data/${baseLocale}.js`,
|
||||||
|
// fall back to English (this is what react-intl does anyway)
|
||||||
|
`../../node_modules/react-intl/locale-data/en.js`,
|
||||||
|
].filter(filename => fs.existsSync(path.join(outPath, filename)))
|
||||||
|
.map(filename => filename.replace(/..\/..\/node_modules\//, ''))[0];
|
||||||
|
|
||||||
|
const localeContent = `//
|
||||||
|
// locale_${locale}.js
|
||||||
|
// automatically generated by generateLocalePacks.js
|
||||||
|
//
|
||||||
|
import messages from '../../app/javascript/mastodon/locales/${locale}.json';
|
||||||
|
import localeData from ${JSON.stringify(localeDataPath)};
|
||||||
|
import { setLocale } from '../../app/javascript/mastodon/locales';
|
||||||
|
setLocale({messages, localeData});
|
||||||
|
`;
|
||||||
|
fs.writeFileSync(localePath, localeContent, 'utf8');
|
||||||
|
outPaths.push(localePath);
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = outPaths;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue