Files
mek-tech-consulting/locales/index.js
T

35 lines
860 B
JavaScript
Raw Normal View History

const fs = require('fs');
const path = require('path');
const cache = {};
function loadLocale(lang) {
if (cache[lang]) return cache[lang];
try {
const filePath = path.join(__dirname, lang + '.json');
if (fs.existsSync(filePath)) {
cache[lang] = JSON.parse(fs.readFileSync(filePath, 'utf8'));
return cache[lang];
}
} catch (e) {}
return loadLocale('nl');
}
function t(lang, key, ...args) {
const dict = loadLocale(lang || 'nl');
let val = dict[key] || key;
if (args.length > 0) {
args.forEach((a, i) => { val = val.replace(`{${i}}`, a); });
}
return val;
}
function localeMiddleware(req, res, next) {
const lang = (req.session && req.session.lang) || 'nl';
res.locals.__ = (key, ...args) => t(lang, key, ...args);
res.locals.lang = lang;
next();
}
module.exports = { t, loadLocale, localeMiddleware };