From 795fc1a47befa7e9cfe87b8ff1fe31152c182654 Mon Sep 17 00:00:00 2001 From: satok Date: Thu, 12 May 2011 19:19:20 +0900 Subject: [PATCH] Do not merge. Fix the list of supported languages Bug: 4390528 Change-Id: I5a9444d9addd6185d2633ab021702f7d0241c6b2 --- .../latin/InputLanguageSelection.java | 73 +++++++++++-------- 1 file changed, 41 insertions(+), 32 deletions(-) diff --git a/java/src/com/android/inputmethod/latin/InputLanguageSelection.java b/java/src/com/android/inputmethod/latin/InputLanguageSelection.java index e811a2cdd..c32713983 100644 --- a/java/src/com/android/inputmethod/latin/InputLanguageSelection.java +++ b/java/src/com/android/inputmethod/latin/InputLanguageSelection.java @@ -36,10 +36,20 @@ public class InputLanguageSelection extends PreferenceActivity { private String mSelectedLanguages; private ArrayList mAvailableLanguages = new ArrayList(); - private static final String[] BLACKLIST_LANGUAGES = { - "ko", "ja", "zh", "el" + + private static final String[] WHITELIST_LANGUAGES = { + "cs", "da", "de", "en_GB", "en_US", "es", "es_US", "fr", "it", "nb", "nl", "pl", "pt", "ru" }; + private static boolean isWhitelisted(String lang) { + for (String s : WHITELIST_LANGUAGES) { + if (s.equalsIgnoreCase(lang)) { + return true; + } + } + return false; + } + private static class Loc implements Comparable { static Collator sCollator = Collator.getInstance(); @@ -157,35 +167,41 @@ public class InputLanguageSelection extends PreferenceActivity { for (int i = 0 ; i < origSize; i++ ) { String s = locales[i]; int len = s.length(); + final Locale l; + final String language; if (len == 5) { - String language = s.substring(0, 2); + language = s.substring(0, 2); String country = s.substring(3, 5); - Locale l = new Locale(language, country); + l = new Locale(language, country); + } else if (len == 2) { + language = s; + l = new Locale(language); + } else { + continue; + } + // Exclude languages that are not relevant to LatinIME + if (!isWhitelisted(s)) continue; - // Exclude languages that are not relevant to LatinIME - if (arrayContains(BLACKLIST_LANGUAGES, language)) continue; - - if (finalSize == 0) { + if (finalSize == 0) { + preprocess[finalSize++] = + new Loc(LanguageSwitcher.toTitleCase(l.getDisplayName(l)), l); + } else { + // check previous entry: + // same lang and a country -> upgrade to full name and + // insert ours with full name + // diff lang -> insert ours with lang-only name + if (preprocess[finalSize-1].locale.getLanguage().equals( + language)) { + preprocess[finalSize-1].label = LanguageSwitcher.toTitleCase( + preprocess[finalSize-1].locale.getDisplayName()); preprocess[finalSize++] = - new Loc(LanguageSwitcher.toTitleCase(l.getDisplayName(l)), l); + new Loc(LanguageSwitcher.toTitleCase(l.getDisplayName()), l); } else { - // check previous entry: - // same lang and a country -> upgrade to full name and - // insert ours with full name - // diff lang -> insert ours with lang-only name - if (preprocess[finalSize-1].locale.getLanguage().equals( - language)) { - preprocess[finalSize-1].label = LanguageSwitcher.toTitleCase( - preprocess[finalSize-1].locale.getDisplayName()); - preprocess[finalSize++] = - new Loc(LanguageSwitcher.toTitleCase(l.getDisplayName()), l); + String displayName; + if (s.equals("zz_ZZ")) { } else { - String displayName; - if (s.equals("zz_ZZ")) { - } else { - displayName = LanguageSwitcher.toTitleCase(l.getDisplayName(l)); - preprocess[finalSize++] = new Loc(displayName, l); - } + displayName = LanguageSwitcher.toTitleCase(l.getDisplayName(l)); + preprocess[finalSize++] = new Loc(displayName, l); } } } @@ -195,11 +211,4 @@ public class InputLanguageSelection extends PreferenceActivity { } return uniqueLocales; } - - private boolean arrayContains(String[] array, String value) { - for (int i = 0; i < array.length; i++) { - if (array[i].equalsIgnoreCase(value)) return true; - } - return false; - } }