Android Localization

后端 未结 3 1761
北荒
北荒 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 03:55

    and you have to add 'locale' to configuration changes for your activity in manifest. Without this my activity ignored locale changes sometimes.

    0 讨论(0)
  • 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!

    0 讨论(0)
  • 2021-01-02 04:17

    //you are updating the configuration using the displaymetris

    so it will made changes to your configuration

    getBaseContext().getResources().updateConfiguration(config, getResources().getDisplayMetrics());
    
    0 讨论(0)
提交回复
热议问题