Đa ngôn ngữ trong Android
Bài đăng này đã không được cập nhật trong 8 năm
Android là một trong số những hệ điều hành có số lượng người dùng rất lớn ở nhiều quốc gia và sử dụng nhiều ngôn ngữ khác nhau. Vì thế, để làm một ứng dụng muốn hướng đến nhiều người dùng ở nhiều quốc gia khác nhau thì việc hỗ trợ đa ngôn ngữ là một điều cần làm.
Việc hỗ trợ đa ngôn ngữ ngoài văn bản ra thì còn có thể bao gồm cả âm thanh, hình ảnh.
Trong bài hướng dẫn này, mình sẽ tập trung nói đến phần hỗ trợ về văn bản.
Tạo thư mục riêng cho file string.xml
Để thêm các ngôn ngữ, tạo thêm một thư mục values bên trong thư mục res/
và thêm ở cuối dấu gạch (-) và theo sau là mã ngôn ngữ theo chuẩn ISO. Ví dụ, values-vi/
là thư mục bao gồm các tài nguyên cho vùng có mã ngôn ngữ là "vi", ở đây là Việt Nam.
Khi bạn đã chuẩn bị các ngôn ngữ mà ứng dụng sẽ hỗ trợ, ta sẽ tạo ra các thư mục con và các file string.xml
.
Ví dụ
MyProject/
res/
values/
strings.xml
values-es/
strings.xml
values-fr/
strings.xml
Mỗi file string trong các folder sẽ ứng với mỗi ngôn ngữ khác nhau. Khi ứng dụng chạy, hệ thống sẽ chọn ra những file string này tuỳ thuộc vào cài đặt ngôn ngữ trong thiết bị của người dùng.
Trong 3 folder sẽ có 3 file string.xml
lần lượt chứa 3 loại ngôn ngữ tương ứng:
Tiếng anh (mặc định), /values/strings.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">My Application</string>
<string name="hello_world">Hello World!</string>
</resources>
Tiếng Tây Ban nha, /values-es/strings.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">Mi Aplicación</string>
<string name="hello_world">Hola Mundo!</string>
</resources>
Tiếng Pháp, /values-fr/strings.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">Mon Application</string>
<string name="hello_world">Bonjour le monde !</string>
</resources>
Để lấy ra và sử dụng string này
Nếu file là xml, ta sẽ gọi ra bằng cách sử dụng @string/<string_name>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
Để gọi string này trong code, ta sử dụng R.string.<string_name>
String hello = getResources().getString(R.string.hello_world);
_ Tham khảo:_ https://developer.android.com/training/basics/supporting-devices/languages.html
All rights reserved