--- a/alps/packages/providers/ContactsProvider/src/com/android/providers/contacts/LocaleSet.java
+++ b/alps/packages/providers/ContactsProvider/src/com/android/providers/contacts/LocaleSet.java
@@ -29,6 +29,8 @@ public class LocaleSet {
private static final String SCRIPT_SIMPLIFIED_CHINESE = "Hans";
private static final String SCRIPT_TRADITIONAL_CHINESE = "Hant";
+ private static final String CHINESE_LANGUAGE = Locale.CHINESE.getLanguage().toLowerCase();
private final Locale mDefaultLocaleOverrideForTest;
private final LocaleList mLocaleList;
@@ -78,6 +80,48 @@ public class LocaleSet {
}
}
+ public boolean isSecondaryLocaleTraditionalChinese() {
+ Locale secondaryLocale = mLocaleList.get(1);
+ if (secondaryLocale != null) {
+ android.util.Log.d("hengxu","secondaryLocaleTW:" + secondaryLocale.toString());
+ }
+
+ // language must match
+ if (secondaryLocale == null || !TextUtils.equals(secondaryLocale.getLanguage(), CHINESE_LANGUAGE)) {
+ return false;
+ }
+ // script is optional but if present must match
+ if (!TextUtils.isEmpty(secondaryLocale.getScript())) {
+ return secondaryLocale.getScript().equals(SCRIPT_TRADITIONAL_CHINESE);
+ }
+ // if no script, must match known country
+ return secondaryLocale.equals(Locale.TRADITIONAL_CHINESE);
+ }
+
+ public boolean isSecondaryLocaleTraditionalChineseInHK() {
+ Locale secondaryLocale = mLocaleList.get(1);
+ if (secondaryLocale != null) {
+ android.util.Log.d("hengxu","secondaryLocaleHK:" + secondaryLocale.toString());
+ }
+
+ // language must match
+ if (secondaryLocale == null || !TextUtils.equals(secondaryLocale.getLanguage(), CHINESE_LANGUAGE)) {
+ return false;
+ }
+ // script is optional but if present must match
+ if (!TextUtils.isEmpty(secondaryLocale.getScript())) {
+ return secondaryLocale.getScript().equals(SCRIPT_TRADITIONAL_CHINESE);
+ }
+ // if no script, must match known country
+ return secondaryLocale.toString().equals("zh_HK");
+ }
+
+ public boolean isPrimaryLocaleChinese() {
+ return isLanguageChinese(getPrimaryLocale());
+ }
+
/**
* @return the script if the language is Chinese, and otherwise null.
*/
@@ -137,9 +181,13 @@ public class LocaleSet {
* @return true if simplified Chinese is found before Japanese or traditional Chinese.
*/
public boolean shouldPreferSimplifiedChinese() {
- if (/*isLocaleSimplifiedChinese(getPrimaryLocale())*/isPrimaryLocaleChinese() || isSecondaryLocaleTraditionalChinese()
+ if (/*isLocaleSimplifiedChinese(getPrimaryLocale())*/isLanguageJapanese(getPrimaryLocale()) || isPrimaryLocaleChinese() || isSecondaryLocaleTraditionalChinese()
|| isSecondaryLocaleTraditionalChineseInHK()) {
return true;
}
for (int i = 0; i < mLocaleList.size(); i++) {
final Locale l = mLocaleList.get(i);
@@ -194,7 +194,7 @@ public class LocaleSet {
return true;
}
if (isLanguageJapanese(l)) {
- return false;
+ return true;
}
if (isLocaleTraditionalChinese(l)) { // Traditional chinese wins here.
return false;