From bbe4fecd25337bf810189cb56e4ab54f723cfb41 Mon Sep 17 00:00:00 2001 From: Ash Monty Date: Wed, 22 Mar 2023 20:52:24 +0100 Subject: [PATCH] feat: support custom locales, minor changes --- src/middleware/render-data.js | 8 ++++---- src/util.js | 8 +++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/middleware/render-data.js b/src/middleware/render-data.js index 6c46b83..95a916e 100644 --- a/src/middleware/render-data.js +++ b/src/middleware/render-data.js @@ -12,9 +12,9 @@ async function renderDataMiddleware(request, response, next) { return next(); } - // Get user local - const reqLocale = request.locale; - const locale = util.getLocale(reqLocale.language, reqLocale.region); + // Get user locale + const reqLocale = request.cookies.preferredLocale || request.locale.toString(); + const locale = util.getLocale(reqLocale); let localeList = localeFileNames.map(locale => { const code = locale.replace('.json', '').replace('_', '-'); @@ -73,7 +73,7 @@ async function renderDataMiddleware(request, response, next) { response.locals.localeList = localeList; response.locals.locale = locale; - response.locals.localeString = reqLocale.toString(); + response.locals.localeString = reqLocale; // Get message cookies response.locals.success_message = request.cookies.success_message; diff --git a/src/util.js b/src/util.js index 718b084..043091a 100644 --- a/src/util.js +++ b/src/util.js @@ -16,8 +16,10 @@ function fullUrl(request) { return `${request.protocol}://${request.hostname}${request.originalUrl}`; } -function getLocale(language, region) { - const path = `${__dirname}/../locales/${language}_${region}.json`; +function getLocale(locale) { + const localeFileName = locale.replace('-', '_'); + + const path = `${__dirname}/../locales/${localeFileName}.json`; if (fs.pathExistsSync(path)) { const selectedLocale = require(path); @@ -26,7 +28,7 @@ function getLocale(language, region) { return finalLocale; } - logger.warn(`Could not find locale ${language}_${region}! Loading en_US`); + logger.warn(`Could not find locale ${localeFileName}! Loading en_US`); return baseLocale; }