Để tải một số dữ liệu được bản địa hóa trong chế độ xem web, tôi đã tạo một chuỗi chứa URL được bản địa hóa và sử dụng để tải tệp HTML. Vì vậy, ví dụ như một chuỗi:
<string name="url_to_load">file:///android_asset/localized_ru.html</string>
tham chiếu một tệp localized_ru.html
trong thư mục /assets
, và sau đó trong hoạt động:
webView.loadUrl(getString(R.string.url_to_load));
tôi đã sử dụng gián tiếp này thông qua một chuỗi từ assets/
thư mục không cục bộ và tải tài nguyên bằng URL không hoạt động đối với tôi.
Nếu bạn thực sự muốn để có thể tải tất cả các nguồn lực chuỗi từ webview của bạn, bạn có thể tạo một JavaScript giao diện và một lớp helper đơn giản:
class Localizer {
private Resources res;
public Localizer(Resources res) {
this.res = res;
}
public String get(String key) {
int id = res.getIdentifier(key, "string", "org.example.app");
return res.getString(id);
}
}
sau đó vượt qua đó đến webview trong hoạt động của bạn:
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new Localizer(getResources()), "localizer");
Một cách để làm điều này là thực hiện lời gọi JS đến hoạt động cho mỗi trang và nhận các tài nguyên stings.xml cần thiết rồi hiển thị chúng trong webview qua jQuery. Có vẻ như có một cách hiệu quả hơn để gửi tất cả các tài nguyên strings.xml cần thiết đến webview khi khởi động. – tamsler