2013-09-05 32 views
5

对于例如有应用程序,它提供了多语言支持,在我的活动/ UI,我叫getResources().getString(R.string.hello)存在于strings.xml中,这样getResources如何()的getString()的作品的Android

values\strings.xml 
values-ru\strings.xml 

现在,当调用getResources().getString(R.string.hello)并需要访问基于系统区域设置的字符串时,那么将从values\strings.xmlvalues-ru\strings.xml获得字符串?

OR

确实一个需要从getString()基于系统语言环境更改我的应用程序的语言环境(Keep应用的语言环境相同的系统区域设置),然后检索值,东西在下面推荐链接

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

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

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

+0

基于系统区域设置,您将从values \ strings.xml文件中获得 –

回答

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

+0

感谢,对于长时间描述,实际上我确实看过但无法理解。 –

+0

@AkhilJain很高兴能帮上忙。我认为doc有你需要的所有信息。 http://developer.android.com/guide/topics/resources/localization.html。你不明白什么部分? – Raghunandan

+0

我打开了资源类的grep代码,但无法理解,因为代码看起来乍看起来散乱,花费更多的时间似乎更深入挖掘空洞 –

1

它自动完成。按照标准,您所使用的语言位于values\strings.xml中,但如果用户设备的语言设置为ru,那么对于您放入资源的所有语言,字符串自动为values-ru\strings.xml等等。

您可以在here中阅读关于此主题的更多信息。

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

相关问题