我正在使用“loadDataWithBaseUrl(...)”将存储在资源中的html文件加载到Webview。包含字符串“Loading ...”和旋转GIF。字符串“正在加载...”是硬编码的,它不会被本地化。如何动态替换该字符串,以便可以进行本地化?
请帮我解决这个问题。
答案 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));
答案 2 :(得分:0)
String str = "Loading ..."
String newStr = str.substring("Loading ".length());
newStr = context.getResourceById(R.string.loading) + newStr;
我希望代码足够清晰,无法理解这个想法:在没有“加载”的情况下提取字符串,并将其与“加载”字符串的本地化版本连接起来