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

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

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

Có má»™t vài trưá»ng hợp mà locale codes phát huy tác dụng — ví dụ, khi bạn cầ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 chuẩn ná»™i bá»™ thống nhất 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 — như vậy bạn sẽ luôn nhận được kết quả như mong đợi.

Chuẩn locale code tại Adapty

Äối vá»›i locale codes, Adapty sá»­ dụng phiên bản Ä‘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. Má»™t số 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ể).

Khá»›p locale code

Khi Adapty nhận được lá»i gá»i từ SDK phía client kèm theo locale code và bắt đầu tìm kiếm localization tương ứng cá»§a má»™t 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. Chúng tôi tìm kiếm localization có locale code khớp hoàn toàn
  3. Nếu không tìm thấy, chúng tôi lấy phần chuỗi trước dấu gạch ngang đầu tiên (pt với pt-br) và tìm kiếm localization khớp
  4. Nếu vẫn không tìm thấy, chúng tôi trả vỠlocalization mặc định en

NhỠđó, 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 kết quả giống nhau.

Nếu bạn Ä‘ang quan tâm đến localizations, rất có thể bạn đã làm việc vá»›i các file chuá»—i đã được dịch trong dá»± án. Trong trưá»ng hợp đó, chúng tôi khuyến nghị bạn thêm 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 strings.xml files

/*
strings.xml - Spanish
*/
<string name="adapty_paywalls_locale">es</string>

/*
strings.xml - Portuguese (Brazil)
*/
<string name="adapty_paywalls_locale">pt-br</string>

// 2. Extract and use the locale code

val localeCode = context.getString(R.string.adapty_paywalls_locale)
// 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 tải vá» cho từng ngưá»i dùng trong ứng dụng cá»§a bạn.

Cách triển khai localizations khác

Bạn cÅ©ng 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 tưá»ng minh locale codes cho từng localization. Cách này có nghÄ©a là trích xuất locale code từ các đối tượng mà ná»n tảng cá»§a bạn cung cấp, như sau:

val locale = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
    context.resources.configuration.locales[0]
else
    context.resources.configuration.locale

val localeCode = locale.toLanguageTag()
// 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 tiếp cận này vì khó dự đoán chính xác server của Adapty sẽ nhận được gì.

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

ÿÿÿÿ