mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 12:53:55 +01:00
Resolve switching languages problem in settings fragment (#5560)
* SettingsFragment: add a method for creating locale * SettingsFragmentUnitTests: fix failing tests for createLocale
This commit is contained in:
parent
751bc6ce6b
commit
7e5789d539
2 changed files with 55 additions and 6 deletions
|
|
@ -146,7 +146,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
|||
appUiLanguageListPreference.setSummary(Locale.getDefault().getDisplayLanguage());
|
||||
} else {
|
||||
// If any language is selected by user previously, use it
|
||||
Locale defLocale = new Locale(languageCode);
|
||||
Locale defLocale = createLocale(languageCode);
|
||||
appUiLanguageListPreference.setSummary((defLocale).getDisplayLanguage(defLocale));
|
||||
}
|
||||
appUiLanguageListPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
||||
|
|
@ -167,7 +167,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
|||
descriptionLanguageListPreference.setSummary(Locale.getDefault().getDisplayLanguage());
|
||||
} else {
|
||||
// If any language is selected by user previously, use it
|
||||
Locale defLocale = new Locale(languageCode);
|
||||
Locale defLocale = createLocale(languageCode);
|
||||
descriptionLanguageListPreference.setSummary(defLocale.getDisplayLanguage(defLocale));
|
||||
}
|
||||
descriptionLanguageListPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
||||
|
|
@ -361,7 +361,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
|||
}
|
||||
recentLanguagesDao.addRecentLanguage(new Language(languageName, languageCode));
|
||||
saveLanguageValue(languageCode, keyListPreference);
|
||||
Locale defLocale = new Locale(languageCode);
|
||||
Locale defLocale = createLocale(languageCode);
|
||||
if(keyListPreference.equals("appUiDefaultLanguagePref")) {
|
||||
appUiLanguageListPreference.setSummary(defLocale.getDisplayLanguage(defLocale));
|
||||
setLocale(requireActivity(), languageCode);
|
||||
|
|
@ -426,7 +426,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
|||
recentLanguagesDao.addRecentLanguage(
|
||||
new Language(recentLanguageName, recentLanguageCode));
|
||||
saveLanguageValue(recentLanguageCode, keyListPreference);
|
||||
final Locale defLocale = new Locale(recentLanguageCode);
|
||||
final Locale defLocale = createLocale(recentLanguageCode);
|
||||
if (keyListPreference.equals("appUiDefaultLanguagePref")) {
|
||||
appUiLanguageListPreference.setSummary(defLocale.getDisplayLanguage(defLocale));
|
||||
setLocale(requireActivity(), recentLanguageCode);
|
||||
|
|
@ -455,7 +455,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
|||
if (userSelectedValue.equals("")) {
|
||||
userSelectedValue = Locale.getDefault().getLanguage();
|
||||
}
|
||||
final Locale locale = new Locale(userSelectedValue);
|
||||
final Locale locale = createLocale(userSelectedValue);
|
||||
Locale.setDefault(locale);
|
||||
final Configuration configuration = new Configuration();
|
||||
configuration.locale = locale;
|
||||
|
|
@ -467,6 +467,25 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
|||
editor.apply();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create Locale based on different types of language codes
|
||||
* @param languageCode
|
||||
* @return Locale and throws error for invalid language codes
|
||||
*/
|
||||
public static Locale createLocale(String languageCode) {
|
||||
String[] parts = languageCode.split("-");
|
||||
switch (parts.length) {
|
||||
case 1:
|
||||
return new Locale(parts[0]);
|
||||
case 2:
|
||||
return new Locale(parts[0], parts[1]);
|
||||
case 3:
|
||||
return new Locale(parts[0], parts[1], parts[2]);
|
||||
default:
|
||||
throw new IllegalArgumentException("Invalid language code: " + languageCode);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Save userselected language in List Preference
|
||||
* @param userSelectedValue
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue