在Android中动态替换html中的字符串

时间:2010-11-25 09:15:02

标签: html android

我正在使用“loadDataWithBaseUrl(...)”将存储在资源中的html文件加载到Webview。包含字符串“Loading ...”和旋转GIF。字符串“正在加载...”是硬编码的,它不会被本地化。如何动态替换该字符串,以便可以进行本地化?

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:3)

我能想到各种解决方案:

  • 根据当前语言加载不同的资产文件(使用Locale.getDefault()获取当前语言),这样您就可以独立翻译HTML文件。

  • 在HTML文件中使用占位符(例如#loading_message#),然后在String中加载资产文件,用适当的本地化消息替换占位符的所有出现(String.replaceAll(“#loading_message” #“,getText(R.string.loading_message).toString())),最后使用loadData(String data,String mimeType,String encoding)函数将处理过的HTML加载到WebView中。

要加载资产文件,您可以执行that

之类的操作
File f = new File("file:///android_asset/my_file.html");        
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);

StringBuffer sb = new StringBuffer();
String eachLine = br.readLine();

while(eachLine != null) {
  sb.append(eachLine);
  sb.append("\n");
  eachLine = br.readLine();
} 

// sb.toString is your HTML file as a String

答案 1 :(得分:3)

使用WebView显示应翻译的帮助文本时,我遇到了类似的问题。

我的解决方案是在assets中添加多个已翻译的HTML文件,然后将其加载:

webView.loadUrl("file:///android_asset/" + getResources().getString(R.string.help_file));

有关详情,请访问:Language specific HTML Help in Android

答案 2 :(得分:0)

String str = "Loading ..."
String newStr = str.substring("Loading ".length());
newStr = context.getResourceById(R.string.loading) + newStr;

我希望代码足够清晰,无法理解这个想法:在没有“加载”的情况下提取字符串,并将其与“加载”字符串的本地化版本连接起来