1

I have a little problem I need to resolve.
In my application I will have a settings where I will change the language of my app from english to swedish and back. So I wonder how I should do this?

Can I change to a different strings.xml file or do I have to change all the text in my strings.xml manually when the user wants to change lanuage?

Please come with tips and examples how I should solve this!

JussT
  • 181
  • 1
  • 4
  • 15
  • possible duplicate of [Change language programatically in Android](http://stackoverflow.com/questions/2900023/change-language-programatically-in-android) – Sam Oct 30 '12 at 16:07

2 Answers2

5

You can do that with this:

String languageToLoad  = "your language code";
Locale locale = new Locale(languageToLoad); 
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, 
getBaseContext().getResources().getDisplayMetrics());

With this you are basically just changing your locale, therefor also your language

Ahmad
  • 69,608
  • 17
  • 111
  • 137
  • So I make my own folder values-swe and then I put my strings.xml in swedish? But do I need all the other .xml files too? Like array, color, styles etc. ? – JussT Oct 30 '12 at 16:07
  • 1
    you have to create a values-swe folder and then you can put your strings.xml file in there. Just everything you want to be available in different languages – Ahmad Oct 30 '12 at 16:08
  • How do I then change to back to the default values folder? – JussT Oct 30 '12 at 16:17
  • 1
    The default folder is usually the folder with the english strings, so just redo this and set the locale to "en" – Ahmad Oct 30 '12 at 16:21
1

You will need to change the locale, locally:

Resources res = context.getResources();
// Change locale settings in the app.
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = new Locale('fr');
res.updateConfiguration(conf, dm);

Change language programmatically in Android

Community
  • 1
  • 1
shkschneider
  • 17,833
  • 13
  • 59
  • 112