【问题标题】:How getResources().getString() works androidgetResources().getString() 如何工作
【发布时间】:2013-09-05 16:59:28
【问题描述】:

例如,有一个提供多语言支持的应用程序,在我的活动/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. get-string-from-default-locale-using-string-in-specific-locale

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

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

【问题讨论】:

  • 基于系统语言环境,您将从 values\strings.xml 文件中获取

标签: android string locale multilingual android-resources


【解决方案1】:
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

【讨论】:

  • 谢谢,详细的描述,实际上我确实看过但无法理解。
  • @AkhilJain 很高兴我能提供帮助。我认为 doc 拥有您需要的所有信息。 developer.android.com/guide/topics/resources/localization.html。你不明白哪一部分?
  • 我打开了 Resources 类的 grep 代码,但是看不懂,因为代码看起来很分散,花更多的时间似乎挖得更深
  • getString 是从内存还是从磁盘获取字符串?试图了解 getString 中的延迟是什么。
【解决方案2】:

它是自动完成的。按照标准,打开的语言在您的 values\strings.xml 中,但如果用户设备将其语言设置为 ru,则该字符串自动是 values-ru\strings.xml 上的那个,依此类推,适用于您放置在资源中的所有语言。

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

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

【讨论】:

    猜你喜欢
    • 2018-12-11
    • 2012-10-29
    • 1970-01-01
    • 2013-04-25
    • 2018-04-10
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    相关资源
    最近更新 更多