mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-12-23 17:00:24 +01:00
* fix: #7038, autoLocale logic not playing nicely with no-refresh auths - on login, req.query.lang is deleted (since it seems to be left over) - on logout, the middleware.autoLocale is executed, which resets req.query.lang - middleware.autoLocale is new, just refactored existing logic in webserver.js into new middleware method. * style: tests, use lodash * fix: timeago strings not switching languages on login or out
This commit is contained in:
@@ -2,8 +2,10 @@
|
||||
|
||||
var os = require('os');
|
||||
var winston = require('winston');
|
||||
var _ = require('lodash');
|
||||
|
||||
var meta = require('../meta');
|
||||
var languages = require('../languages');
|
||||
|
||||
module.exports = function (middleware) {
|
||||
middleware.addHeaders = function (req, res, next) {
|
||||
@@ -60,4 +62,30 @@ module.exports = function (middleware) {
|
||||
|
||||
next();
|
||||
};
|
||||
|
||||
let langs = [];
|
||||
middleware.autoLocale = function (req, res, next) {
|
||||
if (parseInt(req.uid, 10) > 0 || !meta.config.autoDetectLang) {
|
||||
return next();
|
||||
}
|
||||
|
||||
var lang = req.acceptsLanguages(langs);
|
||||
if (!lang) {
|
||||
return next();
|
||||
}
|
||||
req.query.lang = lang;
|
||||
next();
|
||||
};
|
||||
|
||||
languages.listCodes(function (err, codes) {
|
||||
if (err) {
|
||||
winston.error('[middleware/autoLocale] Could not retrieve languages codes list!');
|
||||
codes = [];
|
||||
}
|
||||
|
||||
winston.verbose('[middleware/autoLocale] Retrieves languages list for middleware');
|
||||
var defaultLang = meta.config.defaultLang || 'en-GB';
|
||||
|
||||
langs = _.uniq([defaultLang, ...codes]);
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user