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.
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
@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
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? –