diff --git a/src/middleware/locale.js b/src/middleware/locale.js new file mode 100644 index 0000000..8843caf --- /dev/null +++ b/src/middleware/locale.js @@ -0,0 +1,13 @@ +const util = require('../util'); + +async function localeMiddleware(request, response, next) { + const reqLocale = request.locale; + const locale = util.getLocale(reqLocale.region, reqLocale.language); + + response.locals.locale = locale; + response.locals.localeString = reqLocale.toString(); + + return next(); +} + +module.exports = localeMiddleware; \ No newline at end of file diff --git a/src/routers/account.js b/src/routers/account.js index 52502b2..adacc2c 100644 --- a/src/routers/account.js +++ b/src/routers/account.js @@ -33,8 +33,6 @@ router.get('/', async (request, response) => { // Setup the data to be sent to the handlebars renderer const renderData = { layout: 'main', - locale: util.getLocale(request.locale.region, request.locale.language), - localeString: request.locale.toString(), success: request.cookies.success, error: request.cookies.error }; @@ -206,8 +204,6 @@ router.get('/', async (request, response) => { router.get('/login', async (request, response) => { const renderData = { layout: 'main', - locale: util.getLocale(request.locale.region, request.locale.language), - localeString: request.locale.toString(), error: request.cookies.error }; @@ -260,8 +256,6 @@ router.post('/login', async (request, response) => { router.get('/register', async (request, response) => { const renderData = { layout: 'main', - locale: util.getLocale(request.locale.region, request.locale.language), - localeString: request.locale.toString(), error: request.cookies.error, email: request.cookies.email, username: request.cookies.username, @@ -480,10 +474,6 @@ router.get('/online-files', async (request, response) => { }); router.get('/miieditor', async (request, response) => { - - const reqLocale = request.locale; - const locale = util.getLocale(reqLocale.region, reqLocale.language); - // Should obviously be the user's const encodedUserMiiData = 'AwAAQOlVognnx0GC2X0LLQOzuI0n2QAAAUBiAGUAbABsAGEAAABFAAAAAAAAAEBAEgCBAQRoQxggNEYUgRIXaA0AACkDUkhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP6G'; @@ -530,8 +520,6 @@ router.get('/miieditor', async (request, response) => { response.render('account/miieditor', { layout: 'main', - locale, - localeString: reqLocale.toString(), encodedUserMiiData, editorToHex }); @@ -583,8 +571,6 @@ router.get('/upgrade', async (request, response) => { const renderData = { layout: 'main', - locale: util.getLocale(request.locale.region, request.locale.language), - localeString: request.locale.toString(), error: request.cookies.error, currentTier: pnid.get('connections.stripe.price_id'), donationCache: await cache.getStripeDonationCache() diff --git a/src/routers/aprilfools.js b/src/routers/aprilfools.js index 818070f..394bc96 100644 --- a/src/routers/aprilfools.js +++ b/src/routers/aprilfools.js @@ -5,9 +5,7 @@ const router = new Router(); router.get('/', async (request, response) => { const renderData = { - layout: 'main', - locale: util.getLocale(request.locale.region, request.locale.language), - localeString: request.locale.toString(), + layout: 'main' }; renderData.isLoggedIn = request.cookies.access_token && request.cookies.refresh_token && request.cookies.ph; diff --git a/src/routers/blog.js b/src/routers/blog.js index cf1528a..9a3fee6 100644 --- a/src/routers/blog.js +++ b/src/routers/blog.js @@ -38,8 +38,6 @@ const postList = () => { router.get('/', async (request, response) => { const renderData = { layout: 'main', - locale: util.getLocale(request.locale.region, request.locale.language), - localeString: request.locale.toString(), postList, }; @@ -74,8 +72,6 @@ router.get('/:slug', async (request, response, next) => { const renderData = { layout: 'blog-opengraph', - locale: util.getLocale(request.locale.region, request.locale.language), - localeString: request.locale.toString(), postList, }; diff --git a/src/routers/docs.js b/src/routers/docs.js index 56ae3ca..ca2bb15 100644 --- a/src/routers/docs.js +++ b/src/routers/docs.js @@ -13,8 +13,6 @@ router.get('/', async (request, response) => { router.get('/search', async (request, response) => { const renderData = { layout: 'main', - locale: util.getLocale(request.locale.region, request.locale.language), - localeString: request.locale.toString(), currentPage: request.params.slug, }; @@ -31,8 +29,6 @@ router.get('/search', async (request, response) => { router.get('/:slug', async (request, response, next) => { const renderData = { layout: 'main', - locale: util.getLocale(request.locale.region, request.locale.language), - localeString: request.locale.toString(), currentPage: request.params.slug, }; @@ -46,10 +42,10 @@ router.get('/:slug', async (request, response, next) => { // Get the name of the page from the URL const pageName = request.params.slug; - let markdownLocale = renderData.localeString; + let markdownLocale = response.locals.localeString; let missingInLocale = false; // Check if the MD file exists in the user's locale, if not try en-US and show notice, or finally log error and show 404. - if (fs.existsSync(path.join('docs', renderData.localeString, `${pageName}.md`))) { + if (fs.existsSync(path.join('docs', markdownLocale, `${pageName}.md`))) { null; } else if (fs.existsSync(path.join('docs', 'en-US', `${pageName}.md`))) { markdownLocale = 'en-US'; diff --git a/src/routers/home.js b/src/routers/home.js index f2f61e0..05a17e7 100644 --- a/src/routers/home.js +++ b/src/routers/home.js @@ -9,9 +9,7 @@ router.get('/', async (request, response) => { const renderData = { layout: 'main', - boards, - locale: util.getLocale(request.locale.region, request.locale.language), - localeString: request.locale.toString(), + boards }; renderData.isLoggedIn = request.cookies.access_token && request.cookies.refresh_token && request.cookies.ph; @@ -26,7 +24,7 @@ router.get('/', async (request, response) => { // Builds the arrays of people for the special thanks section // Shuffles the special thanks people - const specialThanksPeople = renderData.locale.specialThanks.people.slice(); + const specialThanksPeople = response.locals.locale.specialThanks.people.slice(); function shuffleArray(array) { for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); diff --git a/src/routers/localization.js b/src/routers/localization.js index c4fee3c..f6178f2 100644 --- a/src/routers/localization.js +++ b/src/routers/localization.js @@ -4,9 +4,7 @@ const router = new Router(); router.get('/', async (request, response) => { const renderData = { - layout: 'main', - locale: util.getLocale(request.locale.region, request.locale.language), - localeString: request.locale.toString(), + layout: 'main' }; renderData.isLoggedIn = request.cookies.access_token && request.cookies.refresh_token && request.cookies.ph; diff --git a/src/routers/progress.js b/src/routers/progress.js index 4849321..c1edb92 100644 --- a/src/routers/progress.js +++ b/src/routers/progress.js @@ -8,9 +8,7 @@ const { getTrelloCache, getStripeDonationCache } = require('../cache'); router.get('/', async (request, response) => { const renderData = { layout: 'main', - boards, - locale: util.getLocale(request.locale.region, request.locale.language), - localeString: request.locale.toString(), + boards }; renderData.isLoggedIn = request.cookies.access_token && request.cookies.refresh_token && request.cookies.ph; diff --git a/src/server.js b/src/server.js index d4b344b..b7a2d00 100644 --- a/src/server.js +++ b/src/server.js @@ -7,6 +7,7 @@ const expressLocale = require('express-locale'); const cookieParser = require('cookie-parser'); const Stripe = require('stripe'); const redirectMiddleware = require('./middleware/redirect'); +const localeMiddleware = require('./middleware/locale'); const database = require('./database'); const util = require('./util'); const logger = require('./logger'); @@ -66,6 +67,7 @@ app.use(expressLocale({ 'default': 'en-US' })); app.use(redirectMiddleware); +app.use(localeMiddleware); logger.info('Setting up static public folder'); app.use(express.static('public'));