如何在不同语言的Android环境中加载不同的html文件?

问题描述:

我对不同的语言环境有一些不同的语言html文件,并且所有这些html文件都包含图像。现在我想用WebView适应当前的Android语言来显示合适的html文件。我怎样才能做到这一点?谢谢。如何在不同语言的Android环境中加载不同的html文件?

你可以给特殊名称的非英语文件,比如file-de.html德国,然后使用下面的代码:

private static String getFileName() { 
    Configuration config = getResources().getConfiguration(); 
    InputStream stream = null; 
    try { 
     String name = "file-" + config.locale.getLanguage() + ".html"; 
     stream = getAssets().open(name); 
     return name; 
    } catch (IOException exception) { 
     return "file.html"; 
    } finally { 
     if (stream != null) { 
      stream.close(); 
     } 
    } 
} 
+0

谢谢Pixie.This是一个很好的方法来解决我的问题:)我们有没有其他更好的解决方法解决它,而无需编写Java代码,如remame资产文件夹为“assets-de”,系统可以auto知道如何适应不同的lanugange?(我知道foler“assets-de”不能工作,只是一个例子:) – Dalen 2012-01-12 01:35:59

+0

我不知道任何更好的方式,所以我在我的项目中使用这个。但是你可以尝试找到更好的解决方案。如果您在搜索中取得成功,请告诉我。 – Michael 2012-01-12 04:45:33

增加了一个新的答案,这应该是通过提供一个例子更精确。

+0

这不提供问题的答案。一旦你有足够的[声誉](https://*.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://*.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/18634071) – thewaywewere 2018-01-26 16:08:16

您可以使用“字符串值”来获取Android语言相关的HTML文件名,而无需使用任何额外的Java代码并仅使用getString()。下面是2种语言的例子:

在文件值/ strings.xml中

<string name="html_help_basepage">en_help.html</string> 

在文件德/ strings.xml中

<string name="html_help_basepage">some_german_help.html</string> 

等等..

对于您的Java代码(从问题的资产文件夹中的本地文件加载)

helpView = (WebView) findViewById(R.id.wv_help); 
String adaptedToLanguage = getString(R.string.html_help_basepage)   
helpView.loadUrl("file:///android_asset/" + adaptedToLanguage); 

无需额外的Java代码。我希望这有助于解决问题。