The following code is for changing app locale into Spanish is working fine in some devices, but in some devices it is enlarging (zooming) the views in the app. Does anyone h
and you have to add 'locale' to configuration changes for your activity in manifest. Without this my activity ignored locale changes sometimes.
I use this method when i have to use different languages:
1) Set a int for all the languages supported. 2) Use a basic function to set Default Locale. 3) Use a function to launch in different languages.
This is the example:
2)
public static void setDefaultLocale(Context context,String locale)
{
Locale appLoc = new Locale(locale);
Locale.setDefault(appLoc);
Configuration appConfig = new Configuration();
appConfig.locale = appLoc;
context.getResources().updateConfiguration(appConfig, context.getResources()
.getDisplayMetrics());
}
where locale follow the ISO 639-1
1)
private Language myLanguage;
public enum Language
{
Null,Spanish,English,Catalan
}
3)
private void launchApplication(int language)
{
// Set Language
switch (language)
{
case 1:
// Español
setDefaultLocale(getApplicationContext(),"es");
myLanguage = Language.Spanish;
break;
case 2:
// English
setDefaultLocale(getApplicationContext(),"en");
myLanguage = Language.English;
break;
default:
// Catalan
setDefaultLocale(getApplicationContext(),"ca");
myLanguage = Language.Catalan;
break;
}
Intent intent = new Intent(this, MyActivity.class);
startActivityForResult(intent, 2);
// Finish the Activity when return from the other Activity
finish();
}
Then, call launchApplication(int selected); and must be work!
//you are updating the configuration using the displaymetris
so it will made changes to your configuration
getBaseContext().getResources().updateConfiguration(config, getResources().getDisplayMetrics());