fix: middleware i18n localization.

This commit is contained in:
a.bouhuolia
2021-08-07 08:08:29 +02:00
parent 34377c8e53
commit 0ab4596836
9 changed files with 143 additions and 67 deletions

View File

@@ -0,0 +1,30 @@
import { Container } from 'typedi';
import { Request, Response, NextFunction } from 'express';
import i18n from 'i18n';
/**
* I18n from organization settings.
*/
export default (req: Request, res: Response, next: NextFunction) => {
const Logger = Container.get('logger');
const { settings } = req;
if (!req.user) {
throw new Error('Should load this middleware after `JWTAuth`.');
}
if (!req.settings) {
throw new Error('Should load this middleware after `SettingsMiddleware`.');
}
// Get the organization language from settings.
const language = settings.get({
group: 'organization', key: 'language',
});
if (language) {
i18n.setLocale(req, language);
}
Logger.info('[i18n_authenticated_middleware] set locale language to i18n.', {
language,
user: req.user,
});
next();
};

View File

@@ -1,16 +1,23 @@
import { Container } from 'typedi';
import { Request, Response, NextFunction } from 'express';
import { lowerCase } from 'lodash';
import i18n from 'i18n';
/**
* Set the language from request `accept-language` header
* or default application language.
*/
export default (req: Request, res: Response, next: NextFunction) => {
const Logger = Container.get('logger');
let language = req.headers['accept-language'] || 'en';
if (req.user && req.user.language) {
language = req.user.language;
}
Logger.info('[i18n_middleware] set locale language to i18n.', { language, user: req.user });
// Parses the accepted language from request object.
const language = lowerCase(req.headers['accept-language']) || 'en';
Logger.info('[i18n_middleware] set locale language to i18n.', {
language,
user: req.user,
});
i18n.setLocale(req, language);
next();
};
};