0

Đa ngôn ngữ trong Android

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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí