Translations Editor cung cấp một khung hiển thị tổng hợp và chỉnh sửa được cho tất cả tài nguyên chuỗi mặc định và đã dịch.
Để được hướng dẫn cách dịch ứng dụng sang nhiều ngôn ngữ, hãy đọc bài viết Hỗ trợ nhiều ngôn ngữ và văn hoá.
Hình 1. Translations Editor hiển thị văn bản ứng dụng trước khi dịch
Tài nguyên chuỗi
Tài nguyên chuỗi của dự án có trong tệp strings.xml. Dự án của bạn có một tệp strings.xml mặc định, trong đó chứa tài nguyên chuỗi bằng ngôn ngữ mặc định cho ứng dụng của bạn. Đây là ngôn ngữ mà bạn cho rằng hầu hết người dùng ứng dụng sử dụng. Bạn cũng có thể dịch các tệp strings.xml có chứa tài nguyên chuỗi cho các ngôn ngữ khác nếu bạn muốn ứng dụng của mình cũng hỗ trợ những ngôn ngữ đó.
Sau khi hoàn tất tệp strings.xml mặc định, bạn có thể tự thêm bản dịch hoặc thanh toán cho một dịch vụ chuyên nghiệp để thực hiện việc dịch.
Dù bằng cách nào, bạn cũng nên tận dụng các tính năng của Android Studio để giúp quản lý và kiểm tra hoạt động bản địa hoá văn bản. Để biết thông tin về dịch vụ dịch thuật chuyên nghiệp, hãy xem bài viết Dịch vụ dịch thuật.
Mở Translations Editor
Bạn có thể truy cập vào Translations Editor tại những nơi sau trong Android Studio.
Mở qua chế độ xem Android
- Trong bảng Project (Dự án) > Android ở bên trái, hãy chọn ModuleName > res > values.
- Nhấp chuột phải vào tệp strings.xml rồi chọn Open Translation Editor (Mở Translations Editor).
Translations Editor sẽ hiện các cặp khoá và giá trị của tệp
strings.xml.Lưu ý: Khi bạn đã dịch các tệp
strings.xml, dự án của bạn sẽ có nhiều thư mục values tương ứng mang hậu tố chỉ ngôn ngữ, chẳng hạn như values-es để chỉ tiếng Tây Ban Nha. Tệpstrings.xmlmặc định của bạn luôn nằm trong thư mục values (không có hậu tố).
Hình 1 cho thấy văn bản ứng dụng mặc định (trong trường hợp này là tiếng Anh) của một ứng dụng đơn giản trong Translations Editor trước khi dịch. Nội dung của các tệp strings.xml đã dịch sẽ xuất hiện ở bên phải cột Untranslatable (Không dịch) với một cột cho mỗi ngôn ngữ, như minh hoạ trong hình 2.
Mở qua strings.xml
Bạn có thể truy cập vào Translation Editor qua tệp strings.xml bất kỳ.
- Trong bảng Project (Dự án) > Android ở bên trái, hãy chọn ModuleName > res > values.
- Nhấp đúp vào strings.xml để mở và chỉnh sửa.
- Trong strings.xml, hãy nhấp vào đường liên kết Open Editor (Mở trình chỉnh sửa) ở góc trên bên phải.
Định cấu hình các hàng không dịch
Trong Translations Editor, bạn có thể chọn Untranslatable (Không dịch) để thể hiện rằng bạn không muốn dịch văn bản trong hàng này. Văn bản mà bạn không muốn dịch có thể là văn bản dành riêng cho sản phẩm như tên thương mại và nhãn hiệu thương mại hoặc các thuật ngữ kỹ thuật không có bản dịch.
Khi bạn chọn Untranslatable (Không dịch), dòng tương ứng trong tệp strings.xml mặc định sẽ thêm translatable="false". Trong ví dụ sau, EasyApp ở dòng trên cùng không được dịch vì đó là tên sản phẩm.
<resources>
<string name="app_name" translatable="false">EasyApp</string>
<string name="action_settings">Settings</string>
<string name="easy_app">I am a Simple App!</string>
<string name="next_page">Next Page</string>
<string name="second_page_message">I am the Second Page!</string>
<string name="title_activity_second">SecondActivity</string>
</resources>
Thêm và xoá ngôn ngữ
Trình chỉnh sửa bản dịch hỗ trợ BCP 47 và kết hợp mã ngôn ngữ bản địa hoá (locale) với mã khu vực/quốc gia (region) thành một mục chọn duy nhất để bản địa hoá theo mục tiêu. Ngôn ngữ bản địa hoá (locale) không chỉ là về ngôn ngữ (language). Ngôn ngữ bản địa hoá còn bao gồm các yếu tố theo quốc gia, chẳng hạn như định dạng ngày giờ, đơn vị tiền tệ hay số thập phân.
Để thêm ngôn ngữ, hãy làm như sau:
- Trong Translations Editor, hãy nhấp vào biểu tượng quả địa cầu
. - Trong danh sách thả xuống, hãy chọn ngôn ngữ mà bạn muốn thêm. Ngôn ngữ mới sẽ xuất hiện trong Translations Editor và một thư mục values-* có tệp "strings.xml" sẽ được thêm vào dự án. Ví dụ: values-es cho tiếng Tây Ban Nha.
Để xoá một ngôn ngữ, hãy làm như sau:
Bạn có thể xoá một ngôn ngữ trong Translations Editor bằng cách xoá mọi giá trị trong cột (xem phần Chỉnh sửa, thêm và xoá văn bản) hoặc bạn có thể xoá thư mục dự án cho ngôn ngữ đó, cụ thể như sau:
- Trong ngăn Project (Dự án) > Android ở bên trái, hãy chọn ModuleName > res.
- Nhấp chuột phải vào thư mục values-* cho ngôn ngữ bạn muốn xoá. Ví dụ: value-hi cho tiếng Hindi.
- Trong danh sách, hãy chọn Delete (Xoá) để xoá thư mục và tệp strings.xml trong thư mục đó.
Chỉnh sửa, thêm và xoá văn bản
Bạn có thể trực tiếp thao tác trên các chế độ cài đặt văn bản trong tệp strings.xml hoặc thông qua Trình chỉnh sửa bản dịch. Phần này mô tả cách thức thực hiện qua Trình chỉnh sửa bản dịch. Trong Translations Editor, bạn có thể chỉnh sửa, thêm hoặc xoá văn bản thông qua chế độ xem danh sách hoặc thông qua trường Translation (Bản dịch) ở cuối Translations Editor.
Hình 2. Chế độ xem danh sách ở trên cùng và trường Translation (Bản dịch) ở dưới cùng
Chế độ xem danh sách
Để chỉnh sửa hoặc thêm văn bản, hãy làm như sau:
- Nhấp đúp vào ô bạn muốn chỉnh sửa hoặc thêm văn bản.
- Dùng bàn phím để sao chép và dán, hoặc nếu bạn có bàn phím hỗ trợ các dấu phụ, hãy nhập trực tiếp vào chế độ xem danh sách.
- Nhấn Tab hoặc di chuyển con trỏ ra khỏi trường đó.
Để xoá văn bản, hãy làm như sau:
- Nhấp đúp vào ô bạn muốn xoá.
- Trong chế độ xem danh sách, hãy chọn văn bản rồi nhấn vào Delete (Xoá).
- Nhấn Tab hoặc di chuyển con trỏ ra khỏi trường đó.
Trường bản dịch
Để chỉnh sửa hoặc thêm văn bản, hãy làm như sau:
- Trong chế độ xem danh sách, hãy nhấp một lần vào ô mà bạn muốn chỉnh sửa hoặc thêm văn bản.
- Trong trường Translation (Bản dịch), hãy dùng bàn phím để sao chép và dán hoặc nhập trực tiếp vào trường Translation (Bản dịch) nếu bạn có bàn phím hỗ trợ các dấu phụ.
- Nhấn Tab hoặc di chuyển con trỏ ra khỏi trường đó.
Để xoá văn bản, hãy làm như sau:
- Nhấp một lần vào ô bạn muốn xoá.
- Trong trường Translation (Bản dịch), hãy chọn văn bản rồi nhấn vào Delete (Xoá).
Thêm và xoá khoá
Trong Translations Editor, cột Key (Khoá) liệt kê các giá trị nhận dạng riêng biệt cho từng mục dữ liệu trong tệp strings.xml của bạn. Bạn có thể thêm và xoá khoá thông qua Translations Editor. Khi bạn xoá một khoá, Translations Editor sẽ xoá khoá đó cũng như mọi bản dịch liên kết với khoá đó. Translations Editor sử dụng tính năng tái cấu trúc Safe Delete (Xoá an toàn) để xoá khoá. Nhờ vậy, bạn sẽ biết được liệu văn bản khoá có được dùng ở nơi nào khác hay không, đồng thời có cơ hội để điều chỉnh nếu cần thiết trước khi xoá khoá. Tính năng tái cấu trúc Safe Delete (Xoá an toàn) giúp đảm bảo rằng mã của bạn vẫn biên dịch được sau khi bạn xoá khoá.
Để thêm khoá, hãy làm như sau:
- Trong Translations Editor, hãy nhấp vào Add Key (Thêm khoá)
. - Trong hộp thoại, hãy nhập tên khoá, giá trị mặc định và vị trí của tệp strings.xml mặc định.

Hình 3. Thêm khoá
Để xoá khoá, hãy làm như sau:
- Trong Translations Editor, hãy chọn khoá bạn muốn xoá.
- Nhấp vào biểu tượng Remove Key (Xoá khoá)
. - Trong hộp thoại Delete (Xoá), hãy chọn xem bạn có muốn xoá ở chế độ an toàn (Safe Delete) hay không và liệu bạn có muốn tìm kiếm trong phần nhận xét và chuỗi hay không, sau đó nhấp vào OK.

Hình 4. Xoá hộp thoại
Nếu không có lượt tham chiếu (lượt sử dụng) nào đối với khoá đã xoá hoặc nếu mọi lượt tham chiếu đều có thể thu gọn một cách an toàn, thì khoá sẽ bị xoá. Nếu không, Translations Editor sẽ hiện hộp thoại Usages Detected (Đã phát hiện trường hợp sử dụng) kèm theo thông tin về những vấn đề phát hiện được.
Hình 5. Xoá hộp thoại
- Chọn View Usages (Xem trường hợp sử dụng) để xem xét nội dung sẽ bị xoá. Hộp thoại Find Safe Delete Conflicts (Tìm xung đột xoá an toàn) cho thấy mọi trường hợp sử dụng không an toàn nếu bị xoá để bạn có thể chỉnh sửa mã tương ứng.

Hình 6. Trường hợp sử dụng không an toàn
- Nhấp chuột phải vào một trường hợp sử dụng để xem trình đơn ngữ cảnh rồi chọn Jump to Source (Chuyển tới nguồn) để bạn có thể thực hiện các thay đổi cần thiết.
- Trong bảng Find Safe Delete Conflicts (Tìm xung đột xoá an toàn), hãy chọn Rerun Safe Delete (Chạy lại tính năng xoá an toàn) để đảm bảo không cần lưu ý trường hợp sử dụng nào khác.
- Khi các trường hợp sử dụng đã được dọn dẹp, hãy nhấp vào Do Refactor (Tiến hành tái cấu trúc) để xoá khoá.
Sửa lỗi
Hình 7 cho thấy Translations Editor hiện nội dung của các tệp strings.xml tiếng Anh, tiếng Pháp và tiếng Tây Ban Nha. Văn bản màu đỏ thể hiện các dòng có lỗi.
Hình 7. Văn bản màu đỏ cho biết điều kiện lỗi mà bạn phải khắc phục
Để sửa lỗi, hãy di chuột qua văn bản màu đỏ để xem nội dung giải thích vấn đề và cách giải quyết.
Khi bạn thay đổi trong Translations Editor, các tệp strings.xml cơ sở sẽ cập nhật những thay đổi của bạn. Khi bạn thay đổi tệp strings.xml, cột tương ứng trong Translations Editor sẽ cập nhật các thay đổi của bạn.
Ví dụ về bản chỉnh sửa của Translations Editor:
- Hình 7 cho thấy hàng app_name được đánh dấu ở hộp Untranslatable (Không dịch), nhưng lại có bản dịch tiếng Tây Ban Nha. Xoá bản dịch tiếng Tây Ban Nha này đi để sửa lỗi.
- Hình 7 cho thấy hàng next_page thiếu bản dịch tiếng Pháp. Sử dụng bàn phím để sao chép Page Suivante vào ô để sửa lỗi. Khi bạn dùng bàn phím để sao chép và dán, văn bản bao gồm cả dấu phụ sẽ được sao chép vào ô.
Quản lý và kiểm tra văn bản cần bản địa hoá
Nền tảng Android và Android Studio cung cấp một số tính năng giúp bạn quản lý và kiểm thử văn bản cần bản địa hoá trong ứng dụng. Những tính năng này có một số lựa chọn để giúp bạn xử lý những vấn đề liên quan đến chữ viết từ phải sang trái (RTL), chẳng hạn như tiếng Ả Rập hoặc tiếng Do Thái. Bằng việc kiểm tra văn bản cần bản địa hoá, bạn có thể điều chỉnh văn bản giao diện người dùng và bố cục tương ứng trước khi triển khai thông điệp của bạn đến kho lưu trữ nguồn để gửi cho bản dịch sau này.
Hỗ trợ các ngôn ngữ RTL
Jetpack Compose xử lý bố cục từ phải sang trái (RTL) một cách tự nhiên. Các API và đối tượng sửa đổi bố cục được xây dựng dựa trên các khái niệm về hướng như start và end thay vì các hướng tuyệt đối như left và right. Khi ngôn ngữ hệ thống thay đổi thành ngôn ngữ RTL, Compose sẽ tự động phản chiếu các bố cục này cho bạn.
Để ứng dụng của bạn nhận dạng ngôn ngữ RTL và kích hoạt chế độ phản chiếu này, bạn phải chọn sử dụng bằng tệp kê khai của ứng dụng.
Để bật tính năng hỗ trợ RTL, hãy làm như sau:
- Mở tệp
AndroidManifest.xml. - Thêm thuộc tính
android:supportsRtl="true"vào phần tử<application>:
<manifest ... >
<application
...
android:supportsRtl="true">
</application>
</manifest>
Để tìm hiểu thêm về cách Compose xử lý bố cục văn bản, phản chiếu và cấu hình RTL tuỳ chỉnh, hãy xem bài viết Làm việc với ngôn ngữ RTL.
Đặt hướng văn bản theo cách thủ công
Trong Jetpack Compose, bạn không dùng cửa sổ Properties (Thuộc tính) trực quan để buộc bố cục hoặc hướng văn bản. Compose tự động xử lý tính năng phản chiếu RTL dựa trên ngôn ngữ hệ thống.
Tuy nhiên, nếu cần ghi đè hướng theo cách thủ công cho một phần tử văn bản cụ thể (ví dụ: hiển thị chuỗi LTR trong bố cục RTL), bạn có thể truyền đối tượng TextDirection vào TextStyle.
Các giá trị được hỗ trợ bao gồm:
TextDirection.Content: (Default): Suy luận hướng từ ký tự rõ hướng đầu tiên.TextDirection.Ltr: Buộc hướng từ trái sang phải.TextDirection.Rtl: Buộc hướng từ phải sang trái.
Để tìm hiểu thêm về cách tạo kiểu cho văn bản và định cấu hình hướng văn bản theo cách thủ công trong Compose, hãy xem bài viết Tạo kiểu cho văn bản.
Sử dụng các chuỗi được bản địa hoá trong ứng dụng
Sau khi bạn thêm và dịch các chuỗi bằng Translations Editor, các tệp res/values/strings.xml cơ sở sẽ tự động được cập nhật và bạn có thể sử dụng trực tiếp các tài nguyên đã bản địa hoá trong giao diện người dùng.
Để tìm hiểu cách hiển thị văn bản đã bản địa hoá, xử lý RTL một cách tự nhiên và sử dụng @Preview để kiểm thử nhiều ngôn ngữ và ngôn ngữ giả, hãy xem phần Chuỗi của Tài nguyên trong Compose.
Pseudolocales
Ngôn ngữ giả lập là một ngôn ngữ bản địa hoá mô phỏng được thiết kế để giả định các đặc điểm của ngôn ngữ tạo nên giao diện người dùng, bố cục, RTL và các vấn đề dịch thuật khác trong quá trình dịch ứng dụng. Pseudolocales cung cấp các bản dịch nhanh và tự động (có thể đọc được bằng tiếng Anh) cho mọi thông điệp có thể bản địa hoá. Pseudolocales giúp bạn phát hiện được các thông báo không dịch được trong mã nguồn.
Để biết thông tin về cách sử dụng giả ngôn ngữ, hãy xem bài viết Kiểm thử ứng dụng bằng giả ngôn ngữ.