Thêm ngôn ngữ cho android

Mở đầu

Mạng Internet đã rút ngắn khoảng cách giữa mọi bạn trên nhân loại nên bài toán một ứng dụng của khách hàng được cần sử dụng bởi nhiều người dân ở các quốc giá khác biệt không phải là điều quá xa lạ. Để vận dụng của chúng ta cũng có thể cung cung cấp trải nghiệm xuất sắc nhất cho những người dùng thì một trong những đó là hỗ trợ đa ngôn từ (Supporting Different Languages).

Bạn đang xem: Thêm ngôn ngữ cho android

Android hiện này đã cung ứng khá giỏi cho việc này và bây giờ mình sẽ giới thiệu với chúng ta một vài điều cơ bạn dạng nhất để hỗ trợ đa ngữ điệu cho áp dụng Android.

Phân loại

Theo mình thì đa ngôn ngữ cho ứng dụng apk sẽ được tạo thành hai loại như sau:

Loại 1: Ứng dụng hỗ trợ đa ngôn ngữ, nhưng phiên bản thân vận dụng KHÔNG có chức năng chuyển ngôn ngữ. Ngôn ngữ của ứng dụng sẽ thay đổi theo ngôn ngữ của hệ thống.Loại 2: Ứng dụng cung cấp đa ngữ điệu và chức năng chuyển đổi ngôn ngữ.`Ngôn ngữ của ứng dụng sẽ độc lập cùng với ngôn ngữ của hệ thống.

Về cơ bản, để xử lý một số loại 1 thì chúng ta chỉ bắt buộc thêm những resources cho ngôn từ mà bạn cung cấp là xong. Lúc ngôn ngữ khối hệ thống bị chuyển đổi thì áp dụng cũng sẽ auto cập nhật sang ngôn ngữ mới (nếu có).

Đối với các loại 2, ngoài bài toán phải thêm những resources cho ngữ điệu mà bạn hỗ trợ như các loại 1, thì các bạn còn cần xử lý ngôn từ trong ứng dụng để ngôn ngữ ứng dụng tự do với ngôn ngữ hệ thống. Nên review khách quan lại thì một số loại 1 sẽ đơn giản và dễ dàng hơn nhiều loại 2.

Một biện pháp vui vẻ thì bạn cũng có thể gọi loại một là đa ngôn từ bị động vì bạn sẽ không trực tiếp quản lý việc biến hóa ngôn ngữ, mà hệ thống sẽ thao tác làm việc này nỗ lực bạn. Và dĩ nhiên loại 2 là đa ngôn ngữ chủ động vì bạn phải tự giải pháp xử lý việc biến đổi ngôn ngữ .

Video

Demo change language PASSIVE


Demo change language ACTIVE


Android thống trị ngôn ngữ như thế nào?

Android thực hiện object Locale để làm chủ ngôn ngữ. Các chúng ta cũng có thể chạy debug đoạn code sau để hoàn toàn có thể get được những thông tin của locale hiện tại.

Localce locale = context.getResources().getConfiguration().locale;

*

Default Resources là gì?

Khi chúng ta tạo một project app android thì game android Studio sẽ tự động hóa tạo cho chính mình một thư mục res gồm chứa file res/values/string.xml default, đó là một trong những Default Resources của ứng dụng để khai báo string. Có nhiều bạn lầm tưởng rằng file res/values/string.xml là dành cho English, vấn đề này KHÔNG CHÍNH XÁC.

Để mình phân tích và lý giải thêm, giả dụ ứng dụng của chúng ta chỉ tất cả một ngôn từ duy nhất thì bạn cũng có thể cho tất cả các string vào trong file res/values/string.xml default này. Mà lại không vấn đề gì. Nếu ngôn ngữ là Englsih thì các string là English, nếu ngôn ngữ là giờ đồng hồ Việt thì những stirng trong số ấy có value là tiếng Việt (còn key thì vẫn được khuyên là nên được sắp xếp theo English thì mình không bàn nữa).

Tuy nhiên, nếu như ứng dụng của doanh nghiệp có từ bỏ hai ngữ điệu trở lên thì bạn phải xác định ngôn từ nào trong các ngôn ngữ ấy đang là ngữ điệu mặc định của ứng dụng. Ví dụ nếu như ứng dụng của khách hàng chỉ bao gồm hai ngôn từ là English với Tiếng Việt, vậy khi một người Nhật hay như là 1 người Nga dùng vận dụng này thì bạn sẽ muốn nó hiển thị tiếng gì? Tôi đoán rằng bạn sẽ muốn mang lại hiển thị English nên không nào, vì tối thiểu English cũng phổ biến hơn và khả năng có không ít người biết đến sẽ cao hơn. Vì thế English tại đây sẽ là ngữ điệu mặc định và chúng ta nên thêm những string English vào trong file res/values/string.xml default.

Tại sao mặc định Resources lại quan tiền trọng?

Khi chạy ứng dụng game android với một locale mà chúng ta không hỗ trợ, app android sẽ load default string từ tệp tin res/values/strings.xml. Nếu tệp tin default này sẽ không tồn tại hoặc bị thiếu thốn một string mà vận dụng cần, thì ứng dụng của bạn sẽ bị lỗi. Ví dụ dưới đây mô tả điều gì sẽ xảy ra nếu file mặc định string ko đầy đủ.

Ví dụ: Một ứng dụng app android sử dụng nhị string là text_a cùng text_b. Ứng dụng có một file resource đã có được localized (res/values-en/strings.xml) định nghĩa text_a với text_b vào English. Ứng dụng cũng có một file default resource (res/values/strings.xml) bao gồm định nghĩa text_a cơ mà KHÔNG có text_b.

Xem thêm: Sử Dụng Công Cụ Lập Kế Hoạch Từ Khóa Phù Hợp, Công Cụ Lập Kế Hoạch Từ Khóa (Keyword Planner)

Khi mà ứng dụng này được nhảy lên ngơi nghỉ device có Locale là English, ứng dụng sẽ chạy mà không tồn tại lỗi, cũng chính vì res/values-en/strings.xml có chứa cả hai string mà vận dụng cần (text_a và text_b).

Tuy nhiên, người dùng sẽ không khám phá text_b lúc mà áp dụng được bật lên làm việc device có Localce không giống English (ví dụ device có ngôn từ là tiếng Việt).

*

Để tránh vấn đề này, các bạn cần bảo vệ file default resource res/values/strings.xml trường tồn và bao gồm chứa tát cả những string mà áp dụng cần.

Tóm lại, defailt resources rất cần phải đầy đầy đủ nhất so với các localized resources.

Cách làm cho ứng dụng cung ứng đa ngôn ngữ

Ở trên bản thân đã ra mắt một vài khái niệm cơ bản, còn giờ đồng hồ thì tất cả lẽ bọn họ sẽ đi vào vọc cho các bạn dễ hình dung nhé. Mà trước khi nhảy vào vọc thì chúng ta cần xác định chúng ta sẽ làm cho gì đã?

Với chủ thể như này thì yêu mong sẽ là làm một ứng dụng cung cấp đa ngôn ngữ. Bên cạnh đó có yêu ước thêm là vận dụng có ngôn ngữ khoác định là English, hình như ứng dụng hỗ trợ thêm các ngôn ngữ sau là Tiếng Việt cùng 日本の.

Mình sẽ chỉ dẫn tới các bạn cách làm đối với cả hai nhiều loại là đa ngôn từ bị động (loại 1) với đa ngôn từ chủ rượu cồn (loại 2). Họ sẽ tạo nên hai module passive cùng active trong cùng một project.

Như mình đã reviews ở bên trên thì với cả hai loại vận dụng đa ngôn từ chủ rượu cồn và bị động thì các bạn đều phải thêm những resources cho ngôn ngữ mà các bạn sẽ hỗ trợ, câu hỏi này gọi là localized resources. Cho nên vì thế nên bọn họ sẽ cùng khám phá cách "localized resources" trước

Localized resources

Trước hết bạn cần tạo một project mới, vị yêu cầu vấn đề là cần sử dụng English làm mặc định nên chúng ta sẽ thêm những resources vào trong file res/values/strings.xml và được tác dụng như vào hình bên dưới đây.

res/values/strings.xml

resources> string name="app_name">Multi Language Passivestring> string name="content">This is a multi-language applicationstring> string name="news">Google is adding Kotlin as an official programming language for app android developmentstring>resources>

*

Android Studio hiện có những công cụ cung cấp việc này khôn cùng tốt. Vào hình trên chúng ta ấn vào chữ mở cửa editor để mở screen Translations Editor bao gồm giao diện như sau:

*

Mình vẫn giải thích công dụng của các button trong tab này:

Dấu "+" để thêm một key cùng value string mớiDấu "-" để xóa một key-value đã tất cả sẵnQuả địa cầu: để thêm một ngôn ngữ mớiDấu tích Show only keys needing translations chỉ hiện phần đông key phải dịch hoặc hiện toàn bộ các keyDấu "?" để mở document

Yêu cầu bài toán ban sơ là ngoài support English thì bọn họ cần tư vấn Tiếng Việt cùng 日本の* chính vì vậy nên chúng ta chọn trái địa ước và thêm hai ngôn từ là Japanese (ja) cùng Vietnamese (vi) như sau. Lưu giữ ý, danh sách có hỗ trợ tìm kiếm cần bạn chỉ việc gõ ja với vie.

*

Sau khi thực hiện thêm hai ngữ điệu mới Japanese (ja) cùng Vietnamese (vi), cùng dịch những string sang từng ngôn ngữ tương ứng bọn họ sẽ có như hình dưới đây.

*

Việc localized resources đến đó là xong.

Loại 1: Đa ngôn từ bị động

Ở loại 1 này thì bạn chỉ cần làm xong bước localized resources, hiển thị các text view cùng với string. Lưu ý rằng, layout editor của game android Studio có cung ứng xem preview layout với các ngôn ngữ khác, bạn chỉ cần chọn ngôn ngữ bạn có nhu cầu như nhỏ trỏ con chuột trong hình.

*

Sau đó bạn chạy ứng dụng

Nếu ngôn từ của hệ thống là tiếng Việt thì ứng dụng sẽ hiển thị như sau:

*

Nếu ngữ điệu của hệ thống là 日本の thì ứng dụng sẽ hiển thị như sau:

*

Nếu ngôn từ của khối hệ thống không nên là nhị tiếng trên, thì khối hệ thống sẽ hiển thị các string trong file mặc định là English:

*

Như vậy tôi đã chỉ dẫn cho chúng ta xong một số loại 1 đa ngữ điệu bị động, sống chút làm bóc tách coffe sẽ .

Loại 2: Đa ngữ điệu chủ động

Để sang nhiều loại 2 thì các bạn cần tạo thành thêm một module nữa cho project với tên là active. Tiếp sau đây là kết cấu tổng quan của module để các bạn tiện theo dõi:

*

Có vẻ tương đối nhiều nhỉ, dẫu vậy yên trung ương mình đang hướng dẫn các bạn lần lượt những bước, rồi cũng sẽ kết thúc cả thôi

Bước 1: update build.gradle:

build.gradle (Module active)

android ... DataBinding enabled = true dependencies ... Compile "com.android.support:design:26.+" compile "com.android.support:recyclerview-v7:26.+" compile group: "com.google.code.gson", name: "gson", version: "2.7"

Bước 2: các bạn thực hiện nay localized resources giống như ở loại 1

res/values/strings.xml

resources> string name="app_name">Multi Language Activestring> string name="main_content">This is a multi-language applicationstring> string name="main_news">Google is adding Kotlin as an official programming language for android developmentstring> string name="main_button_change_language">Change Languagestring> string name="change_language_title">Languagestring> string name="language_english" translatable="false">Englishstring> string name="language_japanese" translatable="false">日本のstring> string name="language_vietnamese" translatable="false">Tiếng Việtstring> string-array name="language_names"> item>