ÿÿ Quản lý Localizations & Locale Codes | Tài liệu Adapty

Sử dụng localizations và locale codes trong iOS SDK

Tại sao Ä‘iá»u này quan trá»ng

Có một vài tình huống mà locale codes phát huy tác dụng — ví dụ, khi bạn muốn lấy đúng paywall cho localization hiện tại của ứng dụng.

Vì locale codes khá phức tạp và có thể khác nhau tùy ná»n tảng, chúng tôi sá»­ dụng má»™t tiêu chuẩn ná»™i bá»™ cho tất cả các ná»n tảng được há»— trợ. Tuy nhiên, chính vì sá»± phức tạp đó, bạn cần hiểu rõ mình Ä‘ang gá»­i gì lên server để nhận đúng localization — từ đó luôn nhận được kết quả như mong muốn.

Tiêu chuẩn locale code tại Adapty

Adapty sá»­ dụng phiên bản được Ä‘iá»u chỉnh nhẹ cá»§a chuẩn BCP 47: má»—i code gồm các subtag viết thưá»ng, phân cách bằng dấu gạch ngang. Ví dụ: en (tiếng Anh), pt-br (tiếng Bồ Äào Nha (Brazil)), zh (tiếng Trung giản thể), zh-hant (tiếng Trung phồn thể).

Äối khá»›p locale code

Khi Adapty nhận được lệnh gá»i từ SDK phía client kèm theo locale code và bắt đầu tìm localization tương ứng cá»§a paywall, quá trình diá»…n ra như sau:

  1. Chuá»—i locale đầu vào được chuyển thành chữ thưá»ng và tất cả dấu gạch dưới (_) được thay bằng dấu gạch ngang (-)
  2. Hệ thống tìm kiếm localization có locale code khớp hoàn toàn
  3. Nếu không tìm thấy, hệ thống lấy chuỗi con trước dấu gạch ngang đầu tiên (pt từ pt-br) và tìm localization phù hợp
  4. Nếu vẫn không tìm thấy, hệ thống trả vỠlocalization mặc định en

Nhá» vậy, má»™t thiết bị iOS gá»­i 'pt_BR', má»™t thiết bị Android gá»­i pt-BR, và má»™t thiết bị khác gá»­i pt-br Ä‘á»u nhận được cùng má»™t kết quả.

Nếu bạn Ä‘ang quan tâm đến localizations, nhiá»u khả năng bạn đã làm việc vá»›i các file localized string trong dá»± án. Nếu vậy, chúng tôi khuyến nghị đặt má»™t cặp key-value chứa Adapty locale code tương ứng vào từng file localization. Sau đó, trích xuất giá trị cá»§a key đó khi gá»i SDK, như sau:

// 1. Modify your Localizable.strings files

/*
Localizable.strings - Spanish
*/
adapty_paywalls_locale = "es";
/*
Localizable.strings - Portuguese (Brazil)
*/
adapty_paywalls_locale = "pt-br";
// 2. Extract and use the locale code
let locale = NSLocalizedString("adapty_paywalls_locale", comment: "")
// pass locale code to AdaptyUI.getViewConfiguration or Adapty.getPaywall method

Cách này giúp bạn kiểm soát hoàn toàn localization nào sẽ được lấy cho từng ngưá»i dùng cá»§a ứng dụng.

Triển khai localizations: cách khác

Bạn có thể đạt được kết quả tương tá»± (nhưng không hoàn toàn giống) mà không cần định nghÄ©a rõ locale code cho từng localization. Äiá»u đó có nghÄ©a là trích xuất locale code từ các đối tượng khác mà ná»n tảng cung cấp, như thế này:

let locale = Locale.current.identifier
// pass locale code to AdaptyUI.getViewConfiguration or Adapty.getPaywall method

Lưu ý rằng chúng tôi không khuyến nghị cách này vì một số lý do:

  1. Trên iOS, ngôn ngữ ưa thích và locale hiện tại không giống nhau. Nếu muốn localization được chá»n đúng, bạn phải hoặc dá»±a vào logic cá»§a Apple — vốn hoạt động tốt nếu bạn dùng cách được khuyến nghị vá»›i các file localized string — hoặc tá»± tái tạo lại logic đó.
  2. Khó dá»± Ä‘oán chính xác server cá»§a Adapty sẽ nhận được gì. Ví dụ, trên iOS, có thể thu được locale như ar_OM@numbers='latn' trên thiết bị và gá»­i lên server. Vá»›i lệnh gá»i này, bạn sẽ không nhận được localization ar-om như mong muốn, mà thay vào đó là ar — Ä‘iá»u này có thể nằm ngoài dá»± tính.

Nếu bạn vẫn quyết định dùng cách này — hãy đảm bảo đã xá»­ lý hết tất cả các trưá»ng hợp liên quan.

ÿÿÿÿ