Android WebView国际化

Android WebView国际化,android,localization,webview,Android,Localization,Webview,在Android WebView中处理国际化/本地化的最佳方式是什么。理想情况下,我希望访问中的所有字符串资源: res/values/strings.xml res/values de/strings.xml 有没有人以有效的方式做到这一点 Android本地化信息: 最好的, --Thomas Amsler您可以将本地化的字符串资源数据发送到您的WebView。查看WebView.postrl()要在WebView中加载一些本地化数据,我创建了一个包含本地化URL的字符串,并使用该字符串

在Android WebView中处理国际化/本地化的最佳方式是什么。理想情况下,我希望访问中的所有字符串资源:

res/values/strings.xml res/values de/strings.xml

有没有人以有效的方式做到这一点

Android本地化信息:

最好的,
--Thomas Amsler

您可以将本地化的字符串资源数据发送到您的
WebView
。查看
WebView.postrl()

要在WebView中加载一些本地化数据,我创建了一个包含本地化URL的字符串,并使用该字符串加载HTML文件。 例如,字符串:

<string name="url_to_load">file:///android_asset/localized_ru.html</string>
我通过一个字符串间接使用了它,因为
assets/
目录没有本地化,并且使用URL加载资源对我来说不起作用


如果您确实希望能够从webview加载所有字符串资源,可以创建一个JavaScript接口和一个简单的帮助器类:

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);
    }
}
然后将其传递到活动中的webview:

webView.loadUrl(getString(R.string.url_to_load));
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new Localizer(getResources()), "localizer");

一种方法是对每个页面进行JS-to-Activity本机调用,获取所需的stings.xml资源,然后通过jQuery在webview中呈现它们。似乎应该有一种更有效的方法在启动时将所有需要的strings.xml资源发送到webview。