Estou aplicando internacionalização à minha API e estou tendo alguns problemas relacionados ao Antl e às mensagens de validação.
Com as mensagens de resposta padrão, estou retornando de acordo com o código de idioma definido pelo usuário. Criei uma rota para alternar localidades e defini-la como um cookie e um middleware global para obter a localidade do cookie e, em seguida, retorno a mensagem armazenada nos recursos de localidade.
Middleware global:
class Locale {
async handle ({ request, antl }, next) {
const lang = request.cookie('lang')
if (lang) {
antl.switchLocale(lang)
}
await next()
}
}
Rota:
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 } })
}
})
Mas eu tenho dois arquivos com mensagens de validação:
PT - https://github.com/LauraBeatris/xpack-adonis-api/blob/develop/resources/locales/pt/validation.json
PT - https://github.com/ LauraBeatris / xpack-adonis-api / blob / develop / resources / locales / pt / validation.json
E quero retornar as mensagens de validação de acordo com o código de idioma atual definido pelo usuário, mas o problema é que o método get da classe validator não tem acesso ao objeto de contexto antl como os outros middlewares.
Método de mensagens do validador:
get messages () {
return Antl.list('validation')
}
Porém, quando alterei o código do idioma com o objeto antl fornecido pelo contexto do middleware, ele não muda no provedor global, portanto, as mensagens de validação sempre retornam com o código do idioma padrão, em vez do definido pelo usuário no middleware . Quero integrar a rota do comutador de localidade com esse provedor global antl, para poder retornar mensagens de validação em português, por exemplo.
Esse é o repo do meu projeto: https://github.com/LauraBeatris/xpack-adonis-api