Don't fetch language names from the system
The system's are sometimes wrong, e.g. unexpected names. This also helps our support across different Android versions without having to worry as much about the system's language support. Fixes #503.
This commit is contained in:
parent
985424ac62
commit
00e832fbe3
@ -71,4 +71,51 @@
|
|||||||
<item>zh-rHK</item>
|
<item>zh-rHK</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="languageNames">
|
||||||
|
<item>@string/pref_language_default</item>
|
||||||
|
<item>English</item>
|
||||||
|
<item>ﺎﻠﻋﺮﺒﻳﺓ</item>
|
||||||
|
<item>Asturian</item>
|
||||||
|
<item>Български</item>
|
||||||
|
<item>Català</item>
|
||||||
|
<item>Čeština</item>
|
||||||
|
<item>Dansk</item>
|
||||||
|
<item>Deutsch</item>
|
||||||
|
<item>Ελληνικά</item>
|
||||||
|
<item>Esperanto</item>
|
||||||
|
<item>Español</item>
|
||||||
|
<item>Euskara</item>
|
||||||
|
<item>ﻑﺍﺮﺳی</item>
|
||||||
|
<item>Suomi</item>
|
||||||
|
<item>Français</item>
|
||||||
|
<item>Galego</item>
|
||||||
|
<item>עברית</item>
|
||||||
|
<item>Magyar</item>
|
||||||
|
<item>Bahasa Indonesia</item>
|
||||||
|
<item>Italiano</item>
|
||||||
|
<item>日本語</item>
|
||||||
|
<item>한국어</item>
|
||||||
|
<item>Lietuvių</item>
|
||||||
|
<item>Latviešu</item>
|
||||||
|
<item>Norsk bokmål</item>
|
||||||
|
<item>Nederlands</item>
|
||||||
|
<item>Polski</item>
|
||||||
|
<item>Português (Brasil)</item>
|
||||||
|
<item>Português (Portugal)</item>
|
||||||
|
<item>Română</item>
|
||||||
|
<item>Русский</item>
|
||||||
|
<item>Sardinian</item>
|
||||||
|
<item>Slovenčina</item>
|
||||||
|
<item>Slovenščina</item>
|
||||||
|
<item>Shqip</item>
|
||||||
|
<item>Српски</item>
|
||||||
|
<item>Svenska</item>
|
||||||
|
<item>Türkçe</item>
|
||||||
|
<item>ﺉۇﻲﻏۇﺭچە</item>
|
||||||
|
<item>Українська</item>
|
||||||
|
<item>Tiếng Việt</item>
|
||||||
|
<item>中文 (中国)</item>
|
||||||
|
<item>中文 (香港)</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
<ListPreference android:title="@string/pref_language"
|
<ListPreference android:title="@string/pref_language"
|
||||||
android:key="language"
|
android:key="language"
|
||||||
android:defaultValue=""
|
android:defaultValue=""
|
||||||
|
android:entries="@array/languageNames"
|
||||||
android:entryValues="@array/languageValues" />
|
android:entryValues="@array/languageValues" />
|
||||||
<ListPreference android:title="@string/theme"
|
<ListPreference android:title="@string/theme"
|
||||||
android:key="theme"
|
android:key="theme"
|
||||||
|
@ -19,11 +19,8 @@ import org.fdroid.fdroid.FDroidApp;
|
|||||||
import org.fdroid.fdroid.Preferences;
|
import org.fdroid.fdroid.Preferences;
|
||||||
import org.fdroid.fdroid.PreferencesActivity;
|
import org.fdroid.fdroid.PreferencesActivity;
|
||||||
import org.fdroid.fdroid.R;
|
import org.fdroid.fdroid.R;
|
||||||
import org.fdroid.fdroid.Utils;
|
|
||||||
import org.fdroid.fdroid.installer.PrivilegedInstaller;
|
import org.fdroid.fdroid.installer.PrivilegedInstaller;
|
||||||
|
|
||||||
import java.util.Locale;
|
|
||||||
|
|
||||||
public class PreferencesFragment extends PreferenceFragment
|
public class PreferencesFragment extends PreferenceFragment
|
||||||
implements SharedPreferences.OnSharedPreferenceChangeListener {
|
implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
|
|
||||||
@ -127,7 +124,6 @@ public class PreferencesFragment extends PreferenceFragment
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case Preferences.PREF_LANGUAGE:
|
case Preferences.PREF_LANGUAGE:
|
||||||
langSpinner(key);
|
|
||||||
entrySummary(key);
|
entrySummary(key);
|
||||||
if (changing) {
|
if (changing) {
|
||||||
result |= PreferencesActivity.RESULT_RESTART;
|
result |= PreferencesActivity.RESULT_RESTART;
|
||||||
@ -269,31 +265,6 @@ public class PreferencesFragment extends PreferenceFragment
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private String localeDisplayName(Locale locale, String defName) {
|
|
||||||
if (locale == null) {
|
|
||||||
return defName;
|
|
||||||
}
|
|
||||||
String name = locale.getDisplayName(locale);
|
|
||||||
if (name.length() < 2) {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
// In some cases (e.g. "català" or "français") the display name isn't
|
|
||||||
// capitalized, so make sure it is.
|
|
||||||
return Character.toUpperCase(name.charAt(0)) + name.substring(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void langSpinner(String key) {
|
|
||||||
final ListPreference pref = (ListPreference) findPreference(key);
|
|
||||||
final String[] langValues = getResources().getStringArray(R.array.languageValues);
|
|
||||||
String[] langNames = new String[langValues.length];
|
|
||||||
langNames[0] = getString(R.string.pref_language_default);
|
|
||||||
for (int i = 1; i < langValues.length; i++) {
|
|
||||||
Locale locale = Utils.getLocaleFromAndroidLangTag(langValues[i]);
|
|
||||||
langNames[i] = localeDisplayName(locale, langValues[i]);
|
|
||||||
}
|
|
||||||
pref.setEntries(langNames);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user