8

TL; DRDataBinding có thể can thiệp vào việc bản địa hóa một Activity không?

Tôi có một ứng dụng hỗ trợ một số ngôn ngữ. Một hoạt động không được dịch mặc dù sử dụng tất cả các phương pháp địa phương hóa thông thường. Đây là hoạt động duy nhất trong ứng dụng sử dụng đầy đủ DataBinding.

Full giải thích

Tôi có một Activity sử dụng DataBinding. Về cơ bản, toàn bộ bố cục XML cho Hoạt động đó được bao bên trong thẻ <layout>. Đây là cách tôi thổi phồng quan điểm và nhận được sự ràng buộc:

SomeActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.some_activity);

Có một số TextViews trong XML đã văn bản thiết lập theo cách này:

... android:text="@string/<name of a string>" ...

Chúng tôi cung cấp người dùng với các tùy chọn ngôn ngữ được xác định trước và đặt ngôn ngữ ứng dụng bằng cách sử dụng

Locale.setDefault(new Locale("<language name>"));

Trong ngôn ngữ tiếng Anh, mọi thứ hoạt động hoàn hảo.

Khi ứng dụng ở trong một tư tưởng địa phương khác, các chuỗi trong hoạt động được đề cập vẫn hiển thị bằng tiếng Anh - mặc dù các chuỗi đó đã được dịch sang ngôn ngữ thích hợp và nằm trong cùng một tệp chuỗi. ứng dụng lấy các chuỗi từ. Cho đến khi hoạt động đó được bắt đầu, ứng dụng là tốt - sau khi hoạt động được bắt đầu và tôi quay trở lại, ứng dụng sẽ chuyển sang ngôn ngữ tiếng Anh cho đến khi nó bị chết và khởi động lại. Nếu Hoạt động đó không bao giờ được mở, ứng dụng sẽ hoạt động như mong đợi.

Có ai có bất kỳ ý tưởng nào có thể gây ra điều này không? Cảm ơn.

+1

Hiểu biết của tôi là ứng dụng sẽ truy xuất Ngôn ngữ từ thiết bị, không cần can thiệp theo chương trình. Vì vậy, dự đoán của tôi sẽ được bạn messing này với Locale.setDefault (...), nhưng tôi có thể rất tốt là sai. – FWeigl

+0

@Ascorbin cũng không phụ thuộc vào ngôn ngữ thiết bị, chúng tôi vẫn muốn cung cấp cho người dùng tùy chọn để có ứng dụng ở bất kỳ ngôn ngữ nào họ thích, miễn là chúng tôi hỗ trợ ngôn ngữ đó. Xin lưu ý rằng phần còn lại của ứng dụng hoạt động tốt. – C0D3LIC1OU5

+0

Khi bạn không sử dụng cú pháp ràng buộc dữ liệu, các quy tắc thông thường để áp dụng tài nguyên được sử dụng. Bạn đang tái sử dụng SomeActivityBinding hoặc bạn reinflate nó khi bạn thay đổi ngôn ngữ như bình thường? –

Trả lời

-2

Đã tìm ra điều đang xảy ra. Nó không liên quan gì đến ViewBinding. Hoạt động đó bắt đầu ở chế độ ngang - cài đặt lại ngôn ngữ ứng dụng vì một số lý do. This answer đã giúp tôi khắc phục sự cố.

Các vấn đề liên quan