I have a multi language app. I want to give the user the ability to control which language to use. that mean that even if he has the English Locale he could use a different language if he wants. How can I change the Locale language? (per app)
2 Answers
Android provides no way to change the locale of your application; it is done at a system-wide level.
Which I would imagine makes more sense than having to set the language in multiple individual apps.
Edit, 2010-03-09:
Apparently I'm wrong about it not being possible per-app.
Here's a question showing that you can alter the locale — apparently per-Activity. In this case you need to take care of screen rotation and other configuration changes manually as otherwise the Activity
will be restarted and revert to its original Configuration
when something changes.
Changing Locale within the app itself
Android - Forced locale resetted on orientation changes

- 1
- 1

- 110,418
- 27
- 198
- 193
-
o.k - rephrasing: if I set a few languages in my app. but the user locale is french but from some reason the user don't want to use the french language - he wants to use the English version (only for that app - not changing the user locale) I want to make a menu that the user can change the language. I know how to do that in code but I want to use the i18n of android... OR { in one sentense :) } can I choose which language to use independantly of the user locale? – gmadar Jan 17 '10 at 22:25
-
It's a system-wide setting. If you wanted to change language independently within your app, you'd have to write your own solution for handling strings outside of the Android i18n system. However, you could maybe use the `ResourceBundle` class (I haven't tried it myself) to see if you can get access to Android string resources you have declared. – Christopher Orr Jan 18 '10 at 06:41
Some apps like BetterKeyboard need to change some system settings for it to work. Instead of changing it themselves, they have a button that sends the user to the exact window where info should be changed. I guess that's done with an Intent. If I were you, I would try to achieve that. If user want's to change his/her locale, send him/her to the locale settings of their phone.

- 91,829
- 44
- 175
- 230