Android strings.xml – Những điều cần nhớ

Bài viết này tập trung vào một kiến thức đơn giản – strings.xml

1.Tưởng tượng rằng bạn có một hộp thoại loading trên 2 màn hình Sign in và Sign up. Vì cả 2 đều có chung 1 hộp thoại nên bạn quyết định sử dụng chung string – R.string.loading.

res/values/strings.xml

Sau đó nếu bạn quyết định sử dụng một cái khác, bạn sẽ phải tạo ra hai string mới và chỉnh sửa code java. Nếu từ đầu bạn sử dụng hai string, bạn sẽ sửa chỉ duy nhât file strings.xml.

res/values/strings.xml

2.Bạn không bao giờ biết ứng dụng của bạn hỗ trợ ngôn ngữ nào. Trong một ngôn ngữ – bạn sẽ có thể sử dụng cùng một từ cho các nội dung khác nhau, nhưng ở một ngôn ngữ khác – bạn sẽ phải sử dụng các từ khác nhau cho nội dung khác nhau.

res/values/strings.xml
res/values-UA/strings.xml
Lưu ý rằng phiên bản tiếng Anh của strings.xml sử dụng cùng một từ – “yes” cho cả hai string R.string.download_file_yes và R.string.terms_of_use_yes.

Nhưng phiên bản tiếng Ukraina của strings.xml sử dụng hai từ khác nhau – “Гаразд” cho R.string.download_file_yes và “Так” cho R.string.terms_of_use_yes.

Riêng biệt

Các strings riêng biệt thuộc chung một màn hình nên được phân biệt bởi tiền tố và comment.

res/values/strings.xml
  1. Thêm tên màn hình như là tiền tố vào mỗi string giúp ngay lập tức nhận ra màn hình mà string hiện tại thuộc về.
  2. Tệp strings.xml rõ ràng giúp dễ dàng duy trì và chuyển đổi nhiều strings sang các ngôn ngữ khác nhau – màn hình sau màn hình.

Tạo tệp strings.xml riêng cho mỗi màn hình

Nếu bạn muốn tạo file strings.xml cho mỗi màn hình – settings-strings.xml, profile-strings.xml. Nhưng thường các ứng dụng có 10-20 màn hình. Vì vậy, có 10-20 file strings.xml trong mỗi thư mục language, theo tôi, sẽ mang lại lộn xộn lớn.

Định dạng

Sử dụng Resources#getString(int id, Object… formatArgs) để định dạng strings

Không bao giờ nối chuỗi bằng toán tử +, bởi vì trong các ngôn ngữ khác thứ tự từ có thể thay đổi.

res/values/strings.xml
java code

Cách đúng nên sử dụng Resources#getString(int id, Object… formatArgs).

res/values/strings.xml
res/values-UA/strings.xml
java code

Số nhiều

Sử dụng Resources#getQuantityString (int id, int quantity) cho strings số lượng.

Không bao giờ giải quyết số nhiều trong code java , bởi vì các ngôn ngữ khác nhau có quy tắc khác nhau cho qui định về ngữ pháp với số lượng.

res/values/strings.xml
java code

Cách đúng nên sử dụng Resources#getQuantityString (int id, int quantity).

res/values/strings.xml
java code

Làm nổi bật một số từ

Sử dụng văn bản html để làm nổi bật những chữ cố định.

Nếu bạn muốn thay đổi màu sắc của một số từ trong TextView – ForegroundColorSpan không phải lúc nào cũng là lựa chọn tốt nhất, bởi vì nếu làm nổi bật thông qua các indexes, nó không an toàn trong ứng dụng đa ngôn ngữ. Tốt hơn nên sử dụng html font color tags bên trong file strings.xml của bạn.

Bạn có văn bản “Discover and play games.” Bạn muốn làm nổi bật từ “Discover” và “play” với màu xanh lam.

res/values/strings.xml
java code

Techtalk via Dmytro Danylyk

Nguyễn Linh

Chia sẻ để cùng tiến bộ...