Android中的可本地化资产

时间:2012-03-22 21:48:00

标签: android localization internationalization

我刚刚找到一个nice tutorial,它可以帮助我在我的应用程序中实现一个简单的用户指南系统,因为我可以用任何普通的旧HTML编辑器绘制它。

我的问题很简单:因为所有res个源都是可本地化的,所以我可以轻松地将我的应用程序翻译成新的语言。那么assets呢?有自动定位机制吗?我不这么认为。

如何在加载帮助页面的HTML文件时检索系统区域设置以构建本地化的URL?是否有一些调用来检索与资源世界中编码相同的显示大小/密度(即。public String getDensity()返回“xhdpi”,“ldpi”...)?

Danke; - )

4 个答案:

答案 0 :(得分:18)

如果确实需要检查当前系统区域设置,一种简单的方法是在strings.xml文件中添加标识符字符串。

例如,在values / strings.xml中,添加:

<string name="lang">en</string>

在values-es / strings.xml中,添加:

<string name="lang">es</string>

在values-fr / strings.xml中,添加:

<string name="lang">fr</string>

等等。然后,您将能够以类似的方式以编程方式检查当前语言(当然,仅作为示例进行改进):

if( "es".equals( getString(R.string.lang) ) ) {

我希望这会对你有所帮助。

答案 1 :(得分:1)

参见android.view.Display类(reference)和java.util.Locale类(reference

的引用

答案 2 :(得分:1)

查看答案here,特别注意评论。

答案 3 :(得分:1)

这是一个老问题,但万一有人这样做。我不认为你需要一个额外的语言字符串,如上所述:

<string name="lang">fr</string>

只需添加资产网址字符串并进行翻译即可:

<string name="content_location">file:///android_asset/en/index.html</string>

在values-fr / strings.xml中,添加:

<string name="content_location">file:///android_asset/fr/index.html</string>

然后在代码中将其访问为:

String URL = getResources().getString(R.string.content_location);

,这应该显示基于本地的URL,因为您已将其定义为特定的本地化字符串文件。