Kết hợp i18n và API response message

Mọi người cho em hỏi.
Em muốn kết hợp i18n và response message của api vào project để hiển thị toast trên app theo ngôn ngữ người dùng chọn. Ý tưởng của em là response trả về sẽ có cấu trúc như sau:

{ data: {...}, status: 200, message: "update_success" }

{ data: {...}, status: 200, message: "delete_success" }

Ở front-end, em sẽ cho message vào hàm translate của i18n để hiển thị theo ngôn ngữ như vậy: t('product.message.'${response.message})

Theo mọi người làm như vậy có hợp lý không ạ. Có thể áp dụng vào dự án thực tế không ạ?
Làm như vậy có ưu điểm , nhược điểm j không ạ?

  • First: As a developer, you should research on the internet (preferably in English) before you start asking around. Such research forces you to read ALL available answers to your question and this enriches your knowledge enormously.
  • Then: If you don’t find a satisfactory answer, you can post your question in a forum like this DNH.

This is the ONLY way an IT developer grows into an experienced developer. The answer to your question can be found HERE.

1 Like

I have searched the internet, but there are few posts related to my question. They are discussed about translating message on backend or frontend. My question delves into more detailed aspects. Should I send the message as a code and pass it to the i18n function, or simply provide a brief error description and handle the error message using only the status?

Is my approach actually better? Do companies generally adopt such practices in their projects?

I created this post because I want everyone to share their thoughts on this issue.

1 Like

Of course, this is the best way to create software that can handle multiple languages. I may have misunderstood you. If so, I apologize.

send the message as a code and pass it to the i18n function, or simply provide a brief error description and handle the error message using only the status?

It depends. In my opinion, it is best to send the code to an i18n function. The reason is simple and obvious: an error message takes more time to get to the endpoint than a few bytes (as code) and an i18n function at the other end is always faster to process it. And that makes an application more lively for users.

không, đây là cách tệ.
vì khi này nếu backend thay đổi cái key -> bạn phải thay đổi cả frontend. và việc fix và deploy 2 products thì tất nhiên là mệt hơn rồi.
chưa kể việc đẩy 1 cục text nhiều ngôn ngữ vào frontend sẽ làm nó nặng hơn một cách không cần thiết, nếu app bạn rất nhiều text.

tốt nhất là chỉ để front-end hiển thị text từ backend trả về. cần đổi lang thì thêm params, set headers là xong.
nên bạn nên tiến hành i18n ở backend sẽ hợp lý hơn.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?