How getResources().getString() works android

我的梦境 提交于 2019-11-27 06:23:09

问题


For e.g there is app which provides multi-language support, in my activity/UI, I call getResources().getString(R.string.hello) which exist in strings.xml,such that

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

Now when calling getResources().getString(R.string.hello) and need to access string based on system locale, so will one get strings from values\strings.xml OR values-ru\strings.xml?

OR

does one need to change my app locale based on system locale (keep app locale same as system locale) and then retrieve the value from getString(), something suggested in below links

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

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

I have searched various other links, but not able to find the solution


回答1:


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

Add the string values for each locale into the appropriate file.

At runtime, the Android system uses the appropriate set of string resources based on the locale currently set for the user's device.

For info on Localizing with Resources

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

More info @

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

Also check the below link

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     }

Return a Resources instance for your application's package.

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

Return a localized string from the application's package's default string table. Parameters: resId Resource id for the string




回答2:


It is done automatically. By standard the language that is on is in your values\strings.xml but if the user device has his language set to ru the string automatically is the one on the values-ru\strings.xml and so on for all the languages that you put on your resources.

You can read more about this subject in here.

At runtime, the Android system uses the appropriate set of string resources based on the locale currently set for the user's device.



来源:https://stackoverflow.com/questions/18641994/how-getresources-getstring-works-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!