Tôi đang áp dụng quốc tế hóa cho API của mình và tôi đang gặp một số vấn đề liên quan đến Antl và thông báo xác thực.
Với các thông báo phản hồi tiêu chuẩn, tôi sẽ trở lại theo ngôn ngữ được đặt bởi người dùng. Tôi đã tạo một tuyến đường để chuyển địa điểm và đặt thành cookie và phần mềm trung gian toàn cầu để lấy miền địa phương từ cookie và sau đó tôi chỉ cần trả lại tin nhắn được lưu trữ trong tài nguyên miền địa phương.
Middleware toàn cầu:
class Locale {
async handle ({ request, antl }, next) {
const lang = request.cookie('lang')
if (lang) {
antl.switchLocale(lang)
}
await next()
}
}
Tuyến đường:
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 } })
}
})
Nhưng tôi có hai tệp có thông báo xác thực:
PT - https://github.com/LauraBeatris/xpack-adonis-api/blob/develop/resource/locales/pt/validation.json
EN - https://github.com/ LauraBeatris / xpack-adonis-api / blob / Develop / resource / loc / en / verify.json
Và tôi muốn trả về các thông báo xác thực theo ngôn ngữ hiện tại do người dùng đặt, nhưng vấn đề là phương thức get của lớp trình xác nhận không có quyền truy cập vào đối tượng bối cảnh antl như các phần mềm trung gian khác.
Phương thức tin nhắn của trình xác nhận:
get messages () {
return Antl.list('validation')
}
Nhưng, khi tôi thay đổi ngôn ngữ với đối tượng antl được cung cấp bởi bối cảnh phần mềm trung gian, nó không thay đổi trong nhà cung cấp toàn cầu, vì vậy các thông báo xác thực sẽ luôn trả về với ngôn ngữ mặc định, thay vì một địa điểm do người dùng đặt trong phần mềm trung gian . Tôi muốn tích hợp tuyến chuyển đổi ngôn ngữ địa phương với nhà cung cấp toàn cầu antl đó, vì vậy tôi sẽ có thể trả lại tin nhắn xác thực tiếng Bồ Đào Nha chẳng hạn.
Đó là repo của dự án của tôi: https://github.com/LauraBeatris/xpack-adonis-api