2011-07-07 77 views
6

在Android WebView中處理國際化/本地化的最佳方式是什麼?理想情況下,我想訪問所有的字符串資源:Android WebView國際化

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

曾有人以高效的方式做到了這一點?

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

最佳, - 托馬斯·阿姆斯萊

+0

這樣做的一種方法是爲每個頁面創建一個JS to Activity原生調用,並獲取所需的stings.xml資源,然後通過jQuery在webview中呈現它們。 似乎應該有一種更有效的方式來在啓動時將所有需要的strings.xml資源發送到webview。 – tamsler

回答

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

然後傳遞到web視圖中你的活動:

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

您可以本地化的字符串資源數據發送到您的WebView。看看WebView.postUrl()