【问题标题】:Android WebView InternationalizationAndroid WebView 国际化
【发布时间】:2011-07-07 20:57:16
【问题描述】:

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

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

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

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

最好, ——托马斯·阿姆斯勒

【问题讨论】:

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

标签: android localization webview


【解决方案1】:

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

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

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

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");

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 2015-08-31
      • 2011-12-27
      • 2021-12-10
      • 2019-10-08
      • 2019-02-09
      相关资源
      最近更新 更多