2012-02-20 35 views
6

Tôi có ứng dụng có truy cập Internet và không muốn lưu trữ nhiều tệp string.xml cho các ngôn ngữ khác nhau.Tài nguyên bản địa hóa có thể được tải xuống trong thời gian chạy không?

Những gì tôi muốn:

  1. ứng dụng chỉ có một string.xml với chuỗi tiếng anh chứa.
  2. Khi người dùng khởi chạy - Tôi thấy ngôn ngữ điện thoại của người dùng và yêu cầu máy chủ của riêng tôi cho tệp ngôn ngữ cần thiết. (các khóa tài nguyên sẽ giống nhau)
  3. Khi tệp tài nguyên mới xuất hiện, tất cả giao diện sẽ hoạt động với tệp mới.

Câu hỏi đặt ra là cách thay đổi hiện tại hoặc thêm tệp string.xml mới trong thời gian chạy?

Trả lời

2

Bạn rõ ràng là không thể thay đổi, tải về hoặc loại bỏ strings.xml khi chạy

Nếu bạn muốn lưu trữ các địa điểm, bạn sẽ phải sử dụng lưu trữ SQLite để lưu trữ các bản dịch.

tương tự:
How to modify strings.xml file at runtime
run time modification of strings.xml

+0

Vấn đề của giải pháp này - bạn không thể tham khảo cơ sở dữ liệu từ tệp xml và bạn không thể sử dụng phương thức Context.getString() của standart. – Jin35

+0

Yup, đó là mặt tối của giải pháp, nhưng miễn là bạn muốn sử dụng giải pháp đã cung cấp, không có sự khác biệt, chỉ điều này rõ ràng là tách biệt với hệ thống và dễ thực hiện hơn. –

+0

Và tôi có thể tạo, ví dụ thư mục 'giá trị-de' trong tài nguyên của tôi và đặt tệp xml mới ở đó không? – Jin35

2

Bây giờ tôi có thể chỉ xem giải pháp:

  1. Tạo một số "proxy nội địa hóa" sẽ trả lại cho tôi nguồn cần thiết (từ string.xml hoặc tài nguyên đã tải về)
  2. Thay thế tất cả getString()getText() theo phương pháp của riêng bạn getStringFromLocalization
  3. Override TextView, Button và một số quan điểm khác với tùy chỉnh một và thay đổi có init và setText phương pháp.
+0

Tất cả đều ổn, ngoại trừ phương thức 'setText (String)' là ** final ** vì vậy nó không thể bị ghi đè –

0

Ghi đè tài nguyên/ngôn ngữ được định sẵn bằng cách sử dụng các tệp tài nguyên được tuân thủ theo thời gian, sau đó là hiệu suất đáng sợ của bạn qua tùy chỉnh. Làm điều đó chỉ khi bạn cần điều này.

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