如何使用getResources().getString()在安卓系统中工作

7
例如,有一个应用程序提供多语言支持,在我的活动/UI中,我调用getResources().getString(R.string.hello),它存在于strings.xml中,如下所示:
values\strings.xml
values-ru\strings.xml

现在,当调用 getResources().getString(R.string.hello) 并且需要根据系统语言环境访问字符串时,会从 values\strings.xmlvalues-ru\strings.xml 中获取字符串吗?
还是需要基于系统语言环境更改我的应用程序语言环境(保持应用程序语言环境与系统语言环境相同),然后从 getString() 中检索值,建议参考以下链接。
1. 使用特定语言环境中的字符串从默认语言环境获取字符串 2. 如何在Android中获取不同语言环境的字符串 我已经搜索了其他各种链接,但无法找到解决方案。

根据系统语言环境,您将从values\strings.xml文件中获取。 - Rachit Mishra
2个回答

8
MyProject/
    res/
       values/
           strings.xml
       values-es/
           strings.xml
       values-fr/
           strings.xml

将每个语言环境的字符串值添加到相应的文件中。
在运行时,Android 系统根据用户设备当前设置的语言环境使用适当的字符串资源集。
有关使用资源进行本地化的信息,请参阅文档。

http://developer.android.com/guide/topics/resources/localization.html

更多信息 @

http://developer.android.com/training/basics/supporting-devices/languages.html

也请检查下面的链接

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/android/content/ContextWrapper.java/

86     @Override
87     public Resources getResources()
88     {
89         return mBase.getResources();
90     }

返回您的应用程序包的资源实例。

332 
333     public final String getString(int resId) {
334         return getResources().getString(resId);
335     }

从应用程序包的默认字符串表返回本地化字符串。 参数: resId 字符串的资源id


谢谢,关于长描述,实际上我确实看过了,但是无法理解。 - Akhil Jain
@AkhilJain 很高兴我能帮到你。我认为文档中包含了你所需的所有信息。http://developer.android.com/guide/topics/resources/localization.html。你不理解哪一部分? - Raghunandan
我打开了Resources类的grep代码,但一开始无法理解,因为代码似乎很零散。花更多时间看似乎越陷越深。 - Akhil Jain
getString是从内存还是从磁盘获取字符串?尝试理解getString的延迟时间。 - the_prole

2
它是自动完成的。默认情况下,当前所在语言位于您的values\strings.xml中,但如果用户设备将其语言设置为ru,则字符串自动为values-ru\strings.xml中的字符串,对于您资源中放置的所有语言都是如此。
您可以在这里了解更多信息。
在运行时,Android系统根据用户设备当前设置的语言环境使用适当的一组字符串资源。

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