Ứng dụng đa ngôn ngữ cho APNs

by Sam
118 views

Để làm đa ngôn ngữ cho APNs rất đơn giản, đầu tiên chúng ta cần những thứ sau đây:
1. File Localizable.strings define các localization
2. Đăng ký Push Notification cho ứng dụng
Ở đây mình mặc định hai công việc trên đã được hoàn thành, và tập trung vào việc xử lý đa ngôn ngữ cho APNs.

Thông thường, một Notification đơn giản sẽ có nội dung như sau:

// Notification payload
{
    "aps":{
       "alert":{
          "title":"Đây là tiêu đề thông báo",
          "body":"Còn đây chắc là nội dung thông báo"
       }
    }
}
Nội dung notification hiển thị trên device

Như ví dụ trên, giá trị tương ứng với key titlebody sẽ được hiển thị trực tiếp vào tiêu đề và nội dung của notification như ảnh. Để áp dụng đa ngôn ngữ, ta sẽ thay thế titlebody bằng hai key khác là title-loc-keyloc-key, tiếp đó ta truyền giá trị của hai trường trên bằng key của localization đã define trong file Localizable.strings:

// Notification payload
{
    "aps":{
       "alert":{
          "title-loc-key":"notification_title",
          "loc-key":"notification_content"
       }
    }
}
// Localizable.strings content
 "notification_title" = "Thông báo ";
 "notification_content" = "Nội dung thông báo"; 
Nội dung notification hiển thị trên device

Như vậy là ta xong với các Notification có nội dung cố định. Đối với các Notification có sử dụng thêm tham số ví dụ như “Bạn có 10 thông báo mới” hay “NhatHM đã ném tiền vào mặt bạn”, chúng ta sử dụng thêm hai key title-loc-argsloc-args, và setting như sau:

// Notification payload
{
    "aps":{
       "alert":{
          "title-loc-key":"notification_title_args",
          "title-loc-args":["10"],
          "loc-key":"notification_content_agrs",
          "loc-args":["tinh thần"]
       }
    }
 }
// Localizable.strings content
"notification_title_args" = "Bạn có thêm %@ thông báo mới"; "notification_content_agrs" = "Nội dung thông báo với giá trị %@";
Nội dung notification hiển thị trên device

Để đề phòng trường hợp ứng dụng chưa định nghĩa các key trong file Localizable.strings, ta chỉ cần cung cấp thêm hai key titlebody và truyền vào giá trị mặc định cho Notification. Hai giá trị này sẽ được hiển thị khi ứng dụng client không tìm thấy strings được trả về trong Notification payload. Nên để đẹp trai thì Notification sẽ như thế này:

// Notification payload
{
    "aps":{
       "alert":{
          "title":"Đây là tiêu đề thông báo",
          "body":"Còn đây chắc là nội dung thông báo",
          "title-loc-key":"notification_title_args",
          "title-loc-args":["10"],
          "loc-key":"notification_content_agrs",
          "loc-args":["tinh thần"]
       }
    }
 }

Như vậy là đủ để quẩy đa ngôn ngữ cho Notification rồi đấy 😀

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.