summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmith Yamasani <yamasani@google.com>2012-06-13 15:21:29 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-06-13 15:21:29 -0700
commit5b7a8204d875c901782ff482b68fde8da7a0081f (patch)
tree7e560be53603be1f492a0149c19089bbcf49a8d2
parent612a0c106bc3991a074f6f15361b357494e70e62 (diff)
parent140b6f5234a9b49dd1ec431e7adcf10754daeab1 (diff)
downloadpackages_apps_settings-5b7a8204d875c901782ff482b68fde8da7a0081f.zip
packages_apps_settings-5b7a8204d875c901782ff482b68fde8da7a0081f.tar.gz
packages_apps_settings-5b7a8204d875c901782ff482b68fde8da7a0081f.tar.bz2
Merge "Show only the language if there's only one locale for the language." into jb-dev
-rw-r--r--src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java36
1 files changed, 32 insertions, 4 deletions
diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
index bc8b458..182c1eb 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
@@ -29,6 +29,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
+import android.content.res.Resources;
import android.database.ContentObserver;
import android.hardware.input.InputManager;
import android.hardware.input.KeyboardLayout;
@@ -229,10 +230,23 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
if (!mIsOnlyImeSettings) {
if (mLanguagePref != null) {
Configuration conf = getResources().getConfiguration();
- String locale = conf.locale.getDisplayName(conf.locale);
- if (locale != null && locale.length() > 1) {
- locale = Character.toUpperCase(locale.charAt(0)) + locale.substring(1);
- mLanguagePref.setSummary(locale);
+ String language = conf.locale.getLanguage();
+ String localeString;
+ // TODO: This is not an accurate way to display the locale, as it is
+ // just working around the fact that we support limited dialects
+ // and want to pretend that the language is valid for all locales.
+ // We need a way to support languages that aren't tied to a particular
+ // locale instead of hiding the locale qualifier.
+ if (hasOnlyOneLanguageInstance(language,
+ Resources.getSystem().getAssets().getLocales())) {
+ localeString = conf.locale.getDisplayLanguage(conf.locale);
+ } else {
+ localeString = conf.locale.getDisplayName(conf.locale);
+ }
+ if (localeString.length() > 1) {
+ localeString = Character.toUpperCase(localeString.charAt(0))
+ + localeString.substring(1);
+ mLanguagePref.setSummary(localeString);
}
}
@@ -322,6 +336,20 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
+ private boolean hasOnlyOneLanguageInstance(String languageCode, String[] locales) {
+ int count = 0;
+ for (String localeCode : locales) {
+ if (localeCode.length() > 2
+ && localeCode.startsWith(languageCode)) {
+ count++;
+ if (count > 1) {
+ return false;
+ }
+ }
+ }
+ return count == 1;
+ }
+
private void saveInputMethodSelectorVisibility(String value) {
try {
int intValue = Integer.valueOf(value);