0

I want to change the language of the application from settings.

    public boolean onPreferenceChange(Preference preference, Object value) {
                String stringValue = value.toString();

                if (preference instanceof ListPreference) {
                    // For list preferences, look up the correct display value in
                    // the preference's 'entries' list.
                    ListPreference listPreference = (ListPreference) preference;
                    int index = listPreference.findIndexOfValue(stringValue);

                    // Set the summary to reflect the new value.
                    preference.setSummary(index >= 0 ? listPreference.getEntries()[index]: null);

                    .............

Here, inside the settings activity how can we access configurations and locale of the application to change it's language.

FYI, I have translated strings in values.

ozgur
  • 2,549
  • 4
  • 25
  • 40
  • Is this a duplicate of http://stackoverflow.com/questions/13181847/change-the-locale-at-runtime? – k3b Nov 14 '16 at 15:54

1 Answers1

0

Check this code

  public static final String ARABIC = "ar";
    public static final String ENGLISH = "en";
 public static void changeLoc(Activity context, int flagLang)
    {
        Resources res = context.getResources();
        // Change locale settings in the app.
        DisplayMetrics dm = res.getDisplayMetrics();
        android.content.res.Configuration conf = res.getConfiguration();

        if(flagLang == 0)
        {
            //english
            conf.locale = new Locale(ENGLISH);

        }
        else
        {
            //arabic
            conf.locale = new Locale(ARABIC);
        }
        res.updateConfiguration(conf, dm);
    }
abozaid
  • 967
  • 8
  • 11
  • Will this code be persistent when application restarts? – ozgur Sep 26 '15 at 09:47
  • Yes this code will force your app to listen to your settings and ignore language phone setting. And you should save the current language in sharedprefrences and at first when you start the activity get save language from shared and call this method. – abozaid Sep 26 '15 at 14:24