Estoy aplicando la internacionalización a mi API y tengo algunos problemas relacionados con Antl y mensajes de validación.
Con los mensajes de respuesta estándar, regreso de acuerdo con la configuración regional establecida por el usuario. Creé una ruta para cambiar las configuraciones regionales y establecer una cookie y un middleware global para obtener la configuración regional de la cookie y luego simplemente devuelvo el mensaje almacenado en los recursos de la configuración regional.
Middleware global:
class Locale {
async handle ({ request, antl }, next) {
const lang = request.cookie('lang')
if (lang) {
antl.switchLocale(lang)
}
await next()
}
}
Ruta:
Route.get('/switch/:lang', ({ params, antl, request, response }) => {
// Getting the current available locales
const locales = antl.availableLocales()
try {
// Saving into cookies
if (locales.indexOf(params.lang) > -1) {
response.cookie('lang', params.lang, { path: '/' })
}
return response.status(200).send({ message: 'Locale changed succesfully' })
} catch (err) {
return response.status(err.status).send({ error: 'Something went wrong while trying to switch locales', data: { message: err.message || 'Error message not found', name: err.name } })
}
})
Pero tengo dos archivos con mensajes de validación:
PT - https://github.com/LauraBeatris/xpack-adonis-api/blob/develop/resources/locales/pt/validation.json
ES - https://github.com/ LauraBeatris / xpack-adonis-api / blob / desarrollo / recursos / locales / es / validation.json
Y quiero devolver los mensajes de validación de acuerdo con la configuración regional actual establecida por el usuario, pero el problema es que el método get de la clase de validador no tiene acceso al objeto de contexto antl como los otros middlewares.
Método de mensajes del validador:
get messages () {
return Antl.list('validation')
}
Pero, cuando cambié la configuración regional con el objeto antl proporcionado por el contexto de middleware, no cambia en el proveedor global, por lo que los mensajes de validación siempre volverán con la configuración regional predeterminada, en lugar del establecido por el usuario en el middleware . Quiero integrar la ruta del conmutador de configuración regional con ese proveedor global antl, por lo que podré devolver mensajes de validación portugueses, por ejemplo.
Ese es el repositorio de mi proyecto: https://github.com/LauraBeatris/xpack-adonis-api