Asmaa Mohamed
Asmaa Mohamed

Reputation: 31

changing the language of the Android application

I am trying to add the button to change the language in application but after changing the language to Arabic, when i exit the application it's returns to english.

public class Language extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_language);
    findViewById(R.id.BTN_ar).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            setLocale("ar");
        }
    });
    findViewById(R.id.BTN_en).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            setLocale("en");
        }
    });
}

@SuppressWarnings("deprecation")
public void setLocale(String lang) {
    Locale myLocale = new Locale(lang);

    DisplayMetrics dm = getResources().getDisplayMetrics();
    Configuration conf = getResources().getConfiguration();
    conf.locale = myLocale;
    getResources().updateConfiguration(conf, dm);
    Intent refresh = new Intent(this, MainActivity.class);
    startActivity(refresh);
    finish();


    }
}

Upvotes: 1

Views: 106

Answers (2)

Ahmed Adel
Ahmed Adel

Reputation: 34

You have to save the changed language in SharedPreference, like the below example :

Resources res = getApplicationContext().getResources();
// Change locale settings in the app.
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.locale = new Locale(language_code);
res.updateConfiguration(conf, dm);
//save to shared preference
UtilFunctions.changeLanguage(HomeActivity.this, language_code);


public static void changeLanguage(Context context, String languageCode) {
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString("lang", languageCode);
        editor.apply();
}

public static String getCurrentLanguage(Context context) {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    return prefs.getString("lang", "");
}

Upvotes: 1

AlexTa
AlexTa

Reputation: 5251

You should store selected language on SharedPreferences and check it out on activity created.

Upvotes: 1

Related Questions