45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
const { Controller } = require('libflitter')
|
|
|
|
class LocaleController extends Controller {
|
|
static get services() {
|
|
return [...super.services, 'locale']
|
|
}
|
|
|
|
async resolve(req, res, next) {
|
|
try {
|
|
return res.api(req.T(req.params.resolver))
|
|
} catch (e) {
|
|
return res.status(400)
|
|
.message(req.T('common.invalid_resolver'))
|
|
.api()
|
|
}
|
|
}
|
|
|
|
async load_module(req, res, next) {
|
|
const resolver = `${req.i18n.region()}:${req.params.resolver}`
|
|
try {
|
|
return res.api(this.locale.get(resolver))
|
|
} catch (e) {
|
|
return res.status(400)
|
|
.message(req.T('common.invalid_resolver'))
|
|
.api()
|
|
}
|
|
}
|
|
|
|
async batch_resolve(req, res, next) {
|
|
if ( !req.body.resolvers || !Array.isArray(req.body.resolvers) )
|
|
return res.status(400)
|
|
.message(`${req.T('api.improper_field')} resolvers ${req.T('api.array')}`)
|
|
.api()
|
|
|
|
const translation_map = {}
|
|
for ( const resolve of req.body.resolvers ) {
|
|
translation_map[resolve] = req.T(resolve)
|
|
}
|
|
|
|
return res.api(translation_map)
|
|
}
|
|
}
|
|
|
|
module.exports = exports = LocaleController
|