Sort languages

pull/190/head
M66B 5 years ago
parent 1a85e3df1f
commit d6600dcf64

@ -76,6 +76,7 @@ import io.requery.android.database.sqlite.SQLiteDatabase;
public class FragmentOptionsMisc extends FragmentBase implements SharedPreferences.OnSharedPreferenceChangeListener { public class FragmentOptionsMisc extends FragmentBase implements SharedPreferences.OnSharedPreferenceChangeListener {
private boolean resumed = false; private boolean resumed = false;
private List<String> languages;
private SwitchCompat swExternalSearch; private SwitchCompat swExternalSearch;
private SwitchCompat swShortcuts; private SwitchCompat swShortcuts;
@ -131,6 +132,21 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
"setup_reminder", "setup_advanced" "setup_reminder", "setup_advanced"
}; };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
languages = new ArrayList<>(Arrays.asList(getResources().getAssets().getLocales()));
Collections.sort(languages, new Comparator<String>() {
@Override
public int compare(String lang1, String lang2) {
String display1 = Locale.forLanguageTag(lang1).getDisplayLanguage();
String display2 = Locale.forLanguageTag(lang2).getDisplayLanguage();
return display1.compareTo(display2);
}
});
}
@Override @Override
@Nullable @Nullable
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@ -242,7 +258,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
if (position == 0) if (position == 0)
onNothingSelected(adapterView); onNothingSelected(adapterView);
else { else {
String tag = getResources().getAssets().getLocales()[position - 1]; String tag = languages.get(position - 1);
prefs.edit().putString("language", tag).commit(); // apply won't work here prefs.edit().putString("language", tag).commit(); // apply won't work here
} }
} }
@ -700,16 +716,14 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
swShortcuts.setChecked(prefs.getBoolean("shortcuts", true)); swShortcuts.setChecked(prefs.getBoolean("shortcuts", true));
swFts.setChecked(prefs.getBoolean("fts", false)); swFts.setChecked(prefs.getBoolean("fts", false));
String language = prefs.getString("language", null);
String[] languages = getResources().getAssets().getLocales();
int selected = -1; int selected = -1;
String language = prefs.getString("language", null);
List<String> display = new ArrayList<>(); List<String> display = new ArrayList<>();
display.add(getString(R.string.title_advanced_language_system)); display.add(getString(R.string.title_advanced_language_system));
for (int pos = 0; pos < languages.length; pos++) { for (int pos = 0; pos < languages.size(); pos++) {
String lang = languages[pos]; String lang = languages.get(pos);
Locale loc = Locale.forLanguageTag(lang); Locale loc = Locale.forLanguageTag(lang);
display.add(loc.getDisplayName() + " [" + lang + "]"); display.add(loc.getDisplayName());
if (lang.equals(language)) if (lang.equals(language))
selected = pos + 1; selected = pos + 1;
} }

Loading…
Cancel
Save