Tác giả NIIT - ICT HANOI
Ngày đăng 02/ 07/ 2018
Bình luận 0 Bình luận
Tiếp nối bài tạo ứng dụng Android đa ngôn ngữ lần trước, vấn đề đặt ra tiếp theo đó chính là “nội địa hóa” ứng dụng.
Điều này có nghĩa là khi bạn nói “Tôi có 1 quyển sách” hay “Tôi có 2 quyển sách” – đơn thuần chỉ là thay thế con số 1 hoặc 2. Nhưng với tiếng Anh, lúc này nếu chỉ có 1 quyển sách thì sẽ là “book” còn từ 2 trở lên phải là “books”. Vâng, khác nhau ở chỗ sẽ có thêm “s”.
Thêm nữa, cú pháp của mỗi ngôn ngữ có thể khác nhau về định dạng. Nếu Tiếng Việt nói “Tại ổ đĩa D:\\ tìm thấy 23 virus” thì Tiếng Anh có thể sẽ là: “System found 23 virus at D:\\ drive”. Vâng, vị trí các dữ liệu “23” và “D:\\” bị đảo chỗ….
Vấn đề nội địa hóa vô cùng cần thiết nữa bởi vì người Mỹ họ sẽ không hiểu định dạng ngày tháng mà Việt Nam sử dụng cũng như ký hiệu phân cách thập phân của họ là dấu “.” chứ không phải là dấu “,” như của chúng ta.
Định dạng về tiền tệ cũng cần phải phù hợp với từng quốc gia, lãnh thổ. Ví dụ như nước Pháp, ai cũng nghĩ họ dùng đồng franc nhưng điều đó xưa rồi, Pháp thuộc liên minh Châu Âu, họ xài đồng tiền chung Euro. Còn Anh Quốc tuy thuộc liên minh Châu Âu nhưng họ lại vẫn dùng đồng bảng.
Hướng dẫn sau đây sẽ giúp các bạn khắc phục các vấn đề nêu trên để nội địa hóa ứng dụng Android, đáp ứng nhu cầu sử dụng của mọi khách hàng trên toàn thế giới.
Mở file resource thêm mã khai báo chuỗi dạng plurals như sau:
<plurals name="notification">
<item quantity="one">I have %d book</item>
<item quantity="other">I have %d books</item>
</plurals>
Xem hình 1
Hình 1
Thêm tương tự với các chuỗi resource của các ngôn ngữ khác, giá trị tại thuộc tính quantity có thể là: "zero" | "one" | "two" | "few" | "many" | "other".
Thêm một TextView trên layout (Hình 2)
Hình 2
Mở Activity code trong hàm onCreate():
// Cài đặt hiển thị thông báo theo quy ước số ít/số nhiều
String textNotifi = getResources().getQuantityString(R.plurals.notification, 2, 2);
// Lấy textview trên layout
TextView notifi = (TextView) findViewById(R.id.lblNotification);
notifi.setText(textNotifi);
Xem hình 3:
Hình 3
Kết quả:
Hình 4 – số ít
Hình 5 – số nhiều
|| Khóa học lập trình Android với ứng dụng thực tế
Dữ liệu chuỗi đặt trong resource hoàn toàn có thể chủ động làm Đậm/Nghiêng/Gạch dưới trong Android. Hãy làm như sau:
Thêm vào chuỗi resource các thẻ <b>, <i>, <u> tại các vị trí muốn làm đậm/nghiêng/gạch dưới. Hãy xem hình:
Hình 6 – làm đậm
Hình 7 – làm nghiêng và gạch dưới
Kết quả:
Hình 8 – thông báo tiếng Anh
Hình 9 – thông báo tiếng Việt
Mở Activity viết mã code trong onCreate():
// Cài đặt hiển thị theo mẫu cú pháp
// %1: số lượng virus - dạng số
// %2: tên ổ đĩa - dạng chuỗi
String message = String.format(getResources().getString(R.string.msgFoundVirus), 23, "D://");
((TextView) findViewById(R.id.lblMessage)).setText(message);
Xem hình 10:
Hình 10
Thêm resource trên layout (Hình 11):
Hình 11
Mở Activity code trong hàm onCreate():
// Cài đặt hiển thị định dạng nội địa hóa ngày tháng, số và tiền tệ
mMyLocale = getResources().getConfiguration().locale;
// Ngày tháng
Calendar calendar = Calendar.getInstance();
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL, mMyLocale);
((TextView) findViewById(R.id.lblDate)).setText(dateFormat.format(calendar.getTime()));
// Số
NumberFormat numberFormat = NumberFormat.getNumberInstance(mMyLocale);
((TextView) findViewById(R.id.lblNumber)).setText(numberFormat.format(1900000));
// Tiền tệ
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(mMyLocale);
((TextView) findViewById(R.id.lblCurrency)).setText(currencyFormat.format(1900000));
Xem hình 12:
Hình 12
Trong đó:
DateFormat: để định dạng ngày tháng.
NumberFormat: để định dạng số và tiền tệ.
Như vậy, qua hướng dẫn này bạn đã biết cách nội địa hóa ứng dụng Android tương ứng với từng quốc gia/vùng lãnh thổ, lượng khách hàng không chỉ giới hạn tại Việt Nam nữa.
Chúc mừng bạn!
MinhVT