36
36
import java .util .Locale ;
37
37
import javax .inject .Inject ;
38
38
import javax .inject .Named ;
39
+ import org .wikipedia .language .AppLanguageLookUpTable ;
39
40
40
41
public class SettingsFragment extends PreferenceFragmentCompat {
41
42
@@ -144,28 +145,26 @@ private void prepareTheme() {
144
145
* to remember later
145
146
*/
146
147
private void prepareLanguages () {
147
- List <String > languageNamesList = new ArrayList <>();
148
- List <String > languageCodesList = new ArrayList <>();
149
- List <Language > languages = getLanguagesSupportedByDevice ();
150
-
151
- for (Language language : languages ) {
152
- // Go through all languages and add them to lists
153
- if (!languageCodesList .contains (language .getLocale ().getLanguage ())) {
154
- // This if prevents us from adding same language twice
155
- languageNamesList .add (language .getLocale ().getDisplayName ());
156
- languageCodesList .add (language .getLocale ().getLanguage ());
157
- }
148
+ List <String > languageNamesList ;
149
+ List <String > languageCodesList ;
150
+ AppLanguageLookUpTable appLanguageLookUpTable = new AppLanguageLookUpTable (getContext ());
151
+ languageNamesList = appLanguageLookUpTable .getLocalizedNames ();
152
+ languageCodesList = appLanguageLookUpTable .getCodes ();
153
+ List <String > languageNameWithCodeList = new ArrayList <>();
154
+
155
+ for (int i = 0 ; i < languageNamesList .size (); i ++) {
156
+ languageNameWithCodeList .add (languageNamesList .get (i ) + "[" + languageCodesList .get (i ) + "]" );
158
157
}
159
158
160
- CharSequence [] languageNames = languageNamesList .toArray (new CharSequence [0 ]);
159
+ CharSequence [] languageNames = languageNameWithCodeList .toArray (new CharSequence [0 ]);
161
160
CharSequence [] languageCodes = languageCodesList .toArray (new CharSequence [0 ]);
162
161
// Add all languages and languages codes to lists preference as pair
163
162
langListPreference .setEntries (languageNames );
164
163
langListPreference .setEntryValues (languageCodes );
165
164
166
165
// Gets current language code from shared preferences
167
166
String languageCode = getCurrentLanguageCode ();
168
- if (languageCode .equals ("" )){
167
+ if (languageCode .equals ("" )) {
169
168
// If current language code is empty, means none selected by user yet so use phone local
170
169
langListPreference .setValue (Locale .getDefault ().getLanguage ());
171
170
} else {
@@ -188,18 +187,6 @@ private String getCurrentLanguageCode() {
188
187
return defaultKvStore .getString (Prefs .KEY_LANGUAGE_VALUE , "" );
189
188
}
190
189
191
- private List <Language > getLanguagesSupportedByDevice () {
192
- List <Language > languages = new ArrayList <>();
193
- Locale [] localesArray = Locale .getAvailableLocales ();
194
- for (Locale locale : localesArray ) {
195
- languages .add (new Language (locale ));
196
- }
197
-
198
- Collections .sort (languages , (language , t1 ) -> language .getLocale ().getDisplayName ()
199
- .compareTo (t1 .getLocale ().getDisplayName ()));
200
- return languages ;
201
- }
202
-
203
190
/**
204
191
* First checks for external storage permissions and then sends logs via email
205
192
*/
0 commit comments