From 35de7b1470d50886f70882038e0277613399f3b1 Mon Sep 17 00:00:00 2001 From: Kay Wolter Date: Fri, 24 Jan 2020 10:52:05 +0100 Subject: [PATCH] Added support for WHATWG URL API urls --- i18n.js | 3 ++- test/i18n.configureQueryParameter.js | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/i18n.js b/i18n.js index 73c82247..3d6aee04 100644 --- a/i18n.js +++ b/i18n.js @@ -661,7 +661,8 @@ module.exports = (function() { // a query parameter overwrites all if (queryParameter && request.url) { - var urlObj = url.parse(request.url, true); + var urlAsString = typeof request.url === 'string' ? request.url : request.url.toString(); + var urlObj = url.parse(urlAsString, true); if (urlObj.query[queryParameter]) { logDebug('Overriding locale from query: ' + urlObj.query[queryParameter]); request.language = urlObj.query[queryParameter]; diff --git a/test/i18n.configureQueryParameter.js b/test/i18n.configureQueryParameter.js index baf1b710..586980f9 100644 --- a/test/i18n.configureQueryParameter.js +++ b/test/i18n.configureQueryParameter.js @@ -47,4 +47,11 @@ describe('Locale switching should work queryParameter', function() { res.__('Hello').should.equal('Bonjour'); res.locals.__('Hello').should.equal('Bonjour'); }); + + it('should support WHATWG URL API', function() { + req.url = new URL('/test?lang=fr', 'http://localhost'); + i18n.init(req, res); + i18n.getLocale(req).should.equal('fr'); + i18n.getLocale(res).should.equal('fr'); + }); }); \ No newline at end of file