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
get-string-from-default-locale-using-string-in-specific-locale
how-to-get-string-from-different-locales-in-android
I have searched various other links, but not able to find the solution
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.
android:text="@string/hello" /> String string = getString (R. string. hello); You can use either getString(int) or getText(int) to retrieve a string.
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.
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With