Android中的本地化资源文件

3
我刚发现了一个很好的教程,它将帮助我在我的应用程序中实现一个简单的用户指南系统,因为我可以使用任何普通的HTML编辑器来绘制它。
我的问题很简单:由于所有的resources都是可本地化的,我可以轻松地将我的应用程序翻译成新的语言。那么assets呢?是否有自动本地化机制?我认为没有。
当加载帮助页面的HTML文件时,如何检索系统区域设置以构建本地化URL?是否有一些调用可以检索与资源世界中编码相同的显示大小/密度(即public String getDensity()返回“xhdpi”、“ldpi”等)?
谢谢;-)
4个回答

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) ) ) {

我希望这对你有所帮助。


如果您希望获取设备的选择语言,可以尝试这个方法:Locale.getDefault().getDisplayLanguage(); - Alan

3

这是一个古老的问题,但是以防有人正在做这件事。我认为你不需要像上面建议的那样额外添加语言字符串:

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

只需添加资产URL字符串并进行翻译:
<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,因为您已将其定义到特定的本地化字符串文件中。


嗨,我们需要创建一个名为en和fr的文件夹吗? - Shadow

1

看这个答案这里, 特别注意评论。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接