Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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 have a the solution?

Configuration config = getResources().getConfiguration();

// change this to a different Locale than your device
Locale locale = new Locale("es", "es_ES"); 
config.locale = locale;
Locale.setDefault(locale);
getBaseContext().getResources().updateConfiguration(config, getResources().getDisplayMetrics());
Log.i("onSelected..", Locale.getDefault().getCountry());
startActivity(new Intent(getApplicationContext(), HomePage.class));
finish();   
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
111 views
Welcome To Ask or Share your Answers For Others

1 Answer

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!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...