Android Localization

后端 未结 3 1760
北荒
北荒 2021-01-02 03:18

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

3条回答
  •  傲寒
    傲寒 (楼主)
    2021-01-02 04:10

    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!

提交回复
热议问题