i18n refactoring, locale loaders, custom strings, fix #231

This commit is contained in:
lesion
2023-02-07 17:44:23 +01:00
parent a36c8c29cb
commit 98f6b9618c
7 changed files with 61 additions and 34 deletions

View File

@@ -0,0 +1,36 @@
const merge = require('lodash/merge')
const config = require('../../config')
const path = require('path')
const fs = require('fs')
const log = require('../../log')
const localeController = {
async get (req, res) {
const locale = req.params.locale
const locales = require('../../../locales/index')
// check if this locale exists
if (!locales[locale]) {
return res.sendStatus(404)
}
const defaultLocaleMessages = require(`../../../locales/${locale}.json`)
// check if we have a user custom messages
let customLocaleMessages = {}
const customLocalePath = path.resolve(config.user_locale, `${locale}.json`)
if (config.user_locale && fs.existsSync(customLocalePath)) {
try {
customLocaleMessages = require(customLocalePath)
} catch (e) {
log.error(`Error reading custom locale messages: ${e}`)
}
}
const ret = merge(defaultLocaleMessages, customLocaleMessages)
return res.json(ret)
}
}
module.exports = localeController

View File

@@ -20,6 +20,7 @@ const oauthController = require('./controller/oauth')
const announceController = require('./controller/announce')
const pluginController = require('./controller/plugins')
const geocodingController = require('./controller/geocoding')
const localeController = require('./controller/locale')
const { DDOSProtectionApiRateLimiter, SPAMProtectionApiRateLimiter } = require('./limiter')
const helpers = require('../helpers')
const storage = require('./storage')
@@ -221,6 +222,9 @@ module.exports = () => {
api.get('/clients', isAuth, oauthController.getClients)
api.get('/client/:client_id', isAuth, oauthController.getClient)
api.post('/client', SPAMProtectionApiRateLimiter, oauthController.createClient)
// CUSTOM LOCALE
api.get('/locale/:locale', localeController.get)
}
api.use((_req, res) => res.sendStatus(404))