Merge change 8077 into donut
* changes:
Implement the Back button handler to save a VPN.
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index a470acc..6ec90ca 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -255,4 +255,17 @@
<item>2</item>
</string-array>
+ <!-- Locales in this list are displayed with the corresponding
+ name from special_locale_names instead of using the name
+ from Locale.getDisplayName(). -->
+ <string-array translatable="false" name="special_locale_codes">
+ <item>zh_CN</item>
+ <item>zh_TW</item>
+ </string-array>
+
+ <string-array translatable="false" name="special_locale_names">
+ <item>中文(简体)</item>
+ <item>中文 (繁體)</item>
+ </string-array>
+
</resources>
diff --git a/src/com/android/settings/LocalePicker.java b/src/com/android/settings/LocalePicker.java
index 39fb6fa..d31e82c 100644
--- a/src/com/android/settings/LocalePicker.java
+++ b/src/com/android/settings/LocalePicker.java
@@ -39,6 +39,8 @@
private static final String TAG = "LocalePicker";
Loc[] mLocales;
+ String[] mSpecialLocaleCodes;
+ String[] mSpecialLocaleNames;
private static class Loc implements Comparable {
static Collator sCollator = Collator.getInstance();
@@ -70,6 +72,9 @@
super.onCreate(icicle);
setContentView(getContentView());
+ mSpecialLocaleCodes = getResources().getStringArray(R.array.special_locale_codes);
+ mSpecialLocaleNames = getResources().getStringArray(R.array.special_locale_names);
+
String[] locales = getAssets().getLocales();
Arrays.sort(locales);
@@ -98,15 +103,13 @@
language)) {
Log.v(TAG, "backing up and fixing "+
preprocess[finalSize-1].label+" to "+
- preprocess[finalSize-1].locale.
- getDisplayName(l));
+ getDisplayName(preprocess[finalSize-1].locale));
preprocess[finalSize-1].label = toTitleCase(
- preprocess[finalSize-1].
- locale.getDisplayName(l));
+ getDisplayName(preprocess[finalSize-1].locale));
Log.v(TAG, " and adding "+
- toTitleCase(l.getDisplayName(l)));
+ toTitleCase(getDisplayName(l)));
preprocess[finalSize++] =
- new Loc(toTitleCase(l.getDisplayName(l)), l);
+ new Loc(toTitleCase(getDisplayName(l)), l);
} else {
String displayName;
if (s.equals("zz_ZZ")) {
@@ -140,6 +143,18 @@
return Character.toUpperCase(s.charAt(0)) + s.substring(1);
}
+ private String getDisplayName(Locale l) {
+ String code = l.toString();
+
+ for (int i = 0; i < mSpecialLocaleCodes.length; i++) {
+ if (mSpecialLocaleCodes[i].equals(code)) {
+ return mSpecialLocaleNames[i];
+ }
+ }
+
+ return l.getDisplayName(l);
+ }
+
@Override
public void onResume() {
super.onResume();