Jak zmienić język aplikacji, gdy użytkownik wybiera język?

Chcę, aby moja aplikacja obsługiwała trzy języki: hiszpański, portugalski i angielski. I dać możliwość wyboru języka w app.I zrobiłem

1) 3 losowalne foldery do wyciągnięcia, rysowanie-pt, rysowanie.

2) 3 wartości wartości folderów-es, wartości-pt, values.Change String.xml wartości według języków.

Mam imageView, aby wybrać język. Gdy klikniesz, otwórz menu, które zawiera opcję Angielski, Hiszpański, Portugalski.

Ustawiam Locale wewnątrz aplikacji na wybór opcji przez ten kod

public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.en:
             Locale locale = new Locale("en"); 
             Locale.setDefault(locale);
             Configuration config = new Configuration();
             config.locale = locale;
             getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
             Toast.makeText(this, "Locale in English !", Toast.LENGTH_LONG).show();
             break;

        case R.id.pt:
             Locale locale2 = new Locale("pt"); 
             Locale.setDefault(locale2);
             Configuration config2 = new Configuration();
             config2.locale = locale2;
             getBaseContext().getResources().updateConfiguration(config2, getBaseContext().getResources().getDisplayMetrics());

             Toast.makeText(this, "Locale in Portugal !", Toast.LENGTH_LONG).show();
             break;

        case R.id.es:
             Locale locale3 = new Locale("es"); 
             Locale.setDefault(locale3);
             Configuration config3 = new Configuration();
             config3.locale = locale3;
             getBaseContext().getResources().updateConfiguration(config3, getBaseContext().getResources().getDisplayMetrics());

             Toast.makeText(this, "Locale in Spain !", Toast.LENGTH_LONG).show();
             break;


    }
         return super.onOptionsItemSelected(item);
}

Oświadczyłem w Manifest-android: configChanges = "locale"

To działa, ale ma jakiś problem.

Problem:-

1) Po wybraniu języka ekran, który zawiera obraz wyboru języka, nie zmienia się, ale zmieniają się inne ekrany.

2) Po zmianie orientacji aplikacja przywraca język w zależności od lokalizacji telefonu.

questionAnswers(6)

yourAnswerToTheQuestion