getResources()。getString()如何工作android

时间:2013-09-05 16:59:28

标签: android string locale multilingual android-resources

例如,有一个app提供多语言支持,在我的activity / 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获取字符串?

OR

是否需要根据系统区域设置更改我的应用区域设置(保持应用区域设置与系统区域设置相同),然后从getString()检索值,以下链接中建议的内容

  1. get-string-from-default-locale-using-string-in-specific-locale

  2. how-to-get-string-from-different-locales-in-android

  3. 我搜索了其他各种链接,但无法找到解决方案

2 个答案:

答案 0 :(得分: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     }

返回应用程序包的Res​​ources实例。

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

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

答案 1 :(得分:1)

自动完成。按照标准,所使用的语言在values\strings.xml中,但如果用户设备的语言设置为ru,则字符串自动为values-ru\strings.xml上的字符串,依此类推您放置的所有语言你的资源。

您可以在here中了解有关此主题的更多信息。

  

在运行时,Android系统根据当前为用户设备设置的区域设置使用适当的字符串资源集。