Ich wende Internationalisierung auf meine API an und habe einige Probleme im Zusammenhang mit Antl- und Validierungsnachrichten.
Bei Standardantwortnachrichten kehre ich gemäß dem vom Benutzer festgelegten Gebietsschema zurück. Ich habe eine Route zum Wechseln des Gebietsschemas erstellt und ein Cookie und eine globale Middleware festgelegt, um das Gebietsschema aus dem Cookie abzurufen. Anschließend gebe ich einfach die in den Gebietsschemaressourcen gespeicherte Nachricht zurück.
Globale Middleware:
class Locale {
async handle ({ request, antl }, next) {
const lang = request.cookie('lang')
if (lang) {
antl.switchLocale(lang)
}
await next()
}
}
Route:
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 } })
}
})
Aber ich habe zwei Dateien mit Validierungsnachrichten:
PT - https://github.com/LauraBeatris/xpack-adonis-api/blob/develop/resources/locales/pt/validation.json
DE - https://github.com/ LauraBeatris / xpack-adonis-api / blob / Entwickeln / Ressourcen / Gebietsschemas / de / Validierung.json
Ich möchte die Validierungsnachrichten gemäß dem vom Benutzer festgelegten aktuellen Gebietsschema zurückgeben, aber das Problem ist, dass die get-Methode der Validator-Klasse nicht wie die anderen Middlewares auf das antl-Kontextobjekt zugreifen kann.
Nachrichtenmethode des Validators:
get messages () {
return Antl.list('validation')
}
Wenn ich jedoch das Gebietsschema mit dem vom Middleware-Kontext bereitgestellten Antl-Objekt geändert habe, ändert sich dies nicht im globalen Anbieter, sodass die Validierungsnachrichten immer mit dem Standardgebietsschema zurückgegeben werden, anstatt dem vom Benutzer in der Middleware festgelegten . Ich möchte die Gebietsschema-Switch-Route in diesen globalen Antl-Anbieter integrieren, damit ich beispielsweise portugiesische Validierungsnachrichten zurückgeben kann.
Das ist das Repo meines Projekts: https://github.com/LauraBeatris/xpack-adonis-api