Android WebView 国际化

标签 android localization webview

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

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

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

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

最好的, -- 托马斯·阿姆斯勒

最佳答案

为了在 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 接口(interface)和一个简单的帮助类:

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

然后将其传递给您 Activity 中的 WebView :

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

关于Android WebView 国际化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6617085/

相关文章:

xml - XML 文档的 I18N

ios - Sencha/PhoneGap App-视频关闭的iOS7,空白

android - 在手机上查看时创建可折叠导航

android - 可跨文本在对话框 fragment 中不起作用

Android 多个 dex 文件定义 Lcom/google/android/gms/common/api/zza

c++ - Qt 助手多语言

java - 解析Java中的未知对象

iOS – 本地化的 JSON 资源

android - 拦截来自 Android Java/JNI 的网络调用

Java从Android JavascriptInterface中的另一个类获取变量