Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8d4faa9e authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 7977 into donut

* changes:
  Add a way to override the display names for locales in the locale picker.
parents 241610e9 7ca226b1
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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>
+21 −6
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@ public class LocalePicker extends ListActivity {
    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 @@ public class LocalePicker extends ListActivity {
        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 @@ public class LocalePicker extends ListActivity {
                            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 @@ public class LocalePicker extends ListActivity {
        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();