i18n refactoring, locale loaders, custom strings, fix #231
This commit is contained in:
36
server/api/controller/locale.js
Normal file
36
server/api/controller/locale.js
Normal 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
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user