Swapped mail function parameters. Replaced throw errors for log warnings. Implemented fallback language in translation.js. Added express-locale for future web i18n use

This commit is contained in:
Glenn de Haan
2024-10-09 13:48:26 +02:00
parent 467ce7edb1
commit 1bc459de66
5 changed files with 27 additions and 5 deletions

View File

@@ -49,7 +49,7 @@ module.exports = {
send: (to, voucher) => {
return new Promise(async (resolve, reject) => {
// Create new translator
const t = translation('en', 'email');
const t = translation('email');
// Attempt to send mail via SMTP transport
const result = await transport.sendMail({

View File

@@ -6,19 +6,23 @@ const fs = require('fs');
/**
* Import own modules
*/
const log = require('./log');
const variables = require('./variables');
/**
* Translation returns translator function
*
* @param language
* @param module
* @param language
* @param fallback
* @return {(function(key: string): (string))}
*/
module.exports = (language = 'en', module) => {
module.exports = (module, language = 'en', fallback = 'en') => {
// Check if translation file exists
if(!fs.existsSync(`${__dirname}/../locales/${language}/${module}.json`)) {
throw new Error(`[Translation] Missing translation file: ${__dirname}/../locales/${language}/${module}.json`);
log.warn(`[Translation] Missing translation file: ${__dirname}/../locales/${language}/${module}.json`);
language = fallback;
log.warn(`[Translation] Using fallback: ${__dirname}/../locales/${language}/${module}.json`);
}
// Get locales mapping
@@ -34,7 +38,8 @@ module.exports = (language = 'en', module) => {
// Check if key exists within translation file
if(typeof translations[key] === 'undefined') {
throw new Error(`[Translation][${language}] Missing for key: ${key}`);
log.warn(`[Translation][${language}] Missing for key: ${key}`);
return `%${key}%`;
}
// Check if debugging is enabled. If enabled only return key

7
package-lock.json generated
View File

@@ -12,6 +12,7 @@
"cookie-parser": "^1.4.7",
"ejs": "^3.1.10",
"express": "^4.21.1",
"express-locale": "^2.0.2",
"express-openid-connect": "^2.17.1",
"js-logger": "^1.6.1",
"jsonwebtoken": "^9.0.2",
@@ -1343,6 +1344,12 @@
"node": ">= 0.10.0"
}
},
"node_modules/express-locale": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/express-locale/-/express-locale-2.0.2.tgz",
"integrity": "sha512-z1hRa5iOwlgcM2iGpho3Mwq6DKv0534h1Ts2g2/Gct72g/YSrYSsSCHejLGjAT+hGoZOFcDUovmCkM+6YcQ4iQ==",
"license": "MIT"
},
"node_modules/express-openid-connect": {
"version": "2.17.1",
"resolved": "https://registry.npmjs.org/express-openid-connect/-/express-openid-connect-2.17.1.tgz",

View File

@@ -26,6 +26,7 @@
"cookie-parser": "^1.4.7",
"ejs": "^3.1.10",
"express": "^4.21.1",
"express-locale": "^2.0.2",
"express-openid-connect": "^2.17.1",
"js-logger": "^1.6.1",
"jsonwebtoken": "^9.0.2",

View File

@@ -6,6 +6,7 @@ const crypto = require('crypto');
const express = require('express');
const multer = require('multer');
const cookieParser = require('cookie-parser');
const locale = require('express-locale');
/**
* Import own modules
@@ -96,6 +97,14 @@ if(!variables.authDisabled && variables.authOidcEnabled) {
oidc.init(app);
}
/**
* Enable locale
*/
app.use(locale({
"priority": ["accept-language", "default"],
"default": "en-GB"
}));
/**
* Enable multer
*/