安卓WebView国际化

6

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

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

有人以高效的方式完成了这个任务吗?

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

最好, -- Thomas Amsler


一种方法是为每个页面创建JS到Activity的本地调用,获取所需的strings.xml资源,然后通过jQuery在webview中呈现它们。 看起来应该有更有效的方式在启动时将所有需要的strings.xml资源发送到webview。 - tamsler
2个回答

10
为了在webview中加载一些本地化数据,我创建了一个包含本地化URL的字符串,并用它来加载一个HTML文件。 因此,例如一个字符串:
<string name="url_to_load">file:///android_asset/localized_ru.html</string>

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

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:

webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new Localizer(getResources()), "localizer");

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接