Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How getResources().getString() works android

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

like image 554
Akhil Jain Avatar asked Sep 05 '13 16:09

Akhil Jain


People also ask

What is the use of Getresources () in android?

The getResource() method of java Class class is used to return the resources of the module in which this class exists. The value returned from this function exists in the form of the object of the URL class.

How do I use getString on Android?

android:text="@string/hello" /> String string = getString (R. string. hello); You can use either getString(int) or getText(int) to retrieve a string.

In which folder can you find the string resource file strings XML?

The XML resource files containing localized strings are placed in subfolders of the project's res folder. Android uses a special folder-naming scheme to automatically choose the correct localized resources—for example, the folder values-fr would contain a strings.


2 Answers

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

like image 73
Raghunandan Avatar answered Oct 03 '22 07:10

Raghunandan


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.

like image 45
Dyna Avatar answered Oct 03 '22 08:10

Dyna