mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-16 04:40:32 +00:00
fix: middleware i18n localization.
This commit is contained in:
30
server/src/api/middleware/I18nAuthenticatedMiddlware.ts
Normal file
30
server/src/api/middleware/I18nAuthenticatedMiddlware.ts
Normal 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();
|
||||
};
|
||||
@@ -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();
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user