send/server/locale.js
Danny Coates 1e62aa976d reimplemented l10n using dynamic import() ()
this should greatly reduce the complexity of the l10n code
and build pipeline and eliminate the most common error
seen in sentry logs (no translate function)
2018-11-20 09:50:59 -05:00

26 lines
839 B
JavaScript

const fs = require('fs');
const path = require('path');
const { FluentBundle } = require('fluent');
const localesPath = path.resolve(__dirname, '../public/locales');
const locales = fs.readdirSync(localesPath);
function makeBundle(locale) {
const bundle = new FluentBundle(locale, { useIsolating: false });
bundle.addMessages(
fs.readFileSync(path.resolve(localesPath, locale, 'send.ftl'))
);
return [locale, bundle];
}
const bundles = new Map(locales.map(makeBundle));
module.exports = function getTranslator(locale) {
const defaultBundle = bundles.get('en-US');
const bundle = bundles.get(locale) || defaultBundle;
return function(id, data) {
if (bundle.hasMessage(id)) {
return bundle.format(bundle.getMessage(id), data);
}
return defaultBundle.format(defaultBundle.getMessage(id), data);
};
};