Android WebView国际化

时间:2011-07-07 20:57:17

标签: android localization webview

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

RES /值/ strings.xml中 RES /值-DE / strings.xml中 ...

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

Android本地化信息: http://developer.android.com/guide/topics/resources/localization.html

最佳, - 托马斯阿姆斯勒

2 个答案:

答案 0 :(得分:10)

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

<string name="url_to_load">file:///android_asset/localized_ru.html</string>

引用localized_ru.html目录中的文件/assets,然后在活动中引用:

webView.loadUrl(getString(R.string.url_to_load));

我通过字符串使用了这个间接,因为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.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new Localizer(getResources()), "localizer");

答案 1 :(得分:0)

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