summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mihai Nita <mnita@google.com> 2016-04-08 07:50:44 -0700
committer Mihai Nita <mnita@google.com> 2016-04-11 16:13:54 -0700
commit1b2e7adc8821a6de2cfc2ce23b0c555c1bb7f1fa (patch)
tree5dd56ffab09450fa4ad27fc3239f5042dd532714
parentffdaae004b403714dbf01b47a31065e67eec0177 (diff)
Use DisplayNameWithDialect only for some locales
Although DisplayNameWithDialect seems to return friendlier, more "casual" names (e.g. "American English"), the result was inconsistent, and (at times) debatable. And since this setting affects not only the language of the translation, but a locale, names like "Flemish" kind of lost the whole "locale / location" idea. So we revert to use DisplayName for all but a few selected locales (that we verified are better with the "dialect" form). Bug: 27704583 Change-Id: I587081da1293cccac3cdabcd188a9b8160c233ea
-rw-r--r--core/java/com/android/internal/app/LocaleHelper.java19
1 files changed, 14 insertions, 5 deletions
diff --git a/core/java/com/android/internal/app/LocaleHelper.java b/core/java/com/android/internal/app/LocaleHelper.java
index a9d51132cdcc..7e9587adaf26 100644
--- a/core/java/com/android/internal/app/LocaleHelper.java
+++ b/core/java/com/android/internal/app/LocaleHelper.java
@@ -90,6 +90,15 @@ public class LocaleHelper {
return str.toUpperCase();
}
+ // For some locales we want to use a "dialect" form, for instance
+ // "Dari" instead of "Persian (Afghanistan)", or "Moldavian" instead of "Romanian (Moldova)"
+ private static boolean shouldUseDialectName(Locale locale) {
+ final String lang = locale.getLanguage();
+ return "fa".equals(lang) // Persian
+ || "ro".equals(lang) // Romanian
+ || "zh".equals(lang); // Chinese
+ }
+
/**
* Returns the locale localized for display in the provided locale.
*
@@ -99,8 +108,10 @@ public class LocaleHelper {
* @return the localized name of the locale.
*/
public static String getDisplayName(Locale locale, Locale displayLocale, boolean sentenceCase) {
- String result = ULocale.getDisplayNameWithDialect(locale.toLanguageTag(),
- ULocale.forLocale(displayLocale));
+ final ULocale displayULocale = ULocale.forLocale(displayLocale);
+ String result = shouldUseDialectName(locale)
+ ? ULocale.getDisplayNameWithDialect(locale.toLanguageTag(), displayULocale)
+ : ULocale.getDisplayName(locale.toLanguageTag(), displayULocale);
return sentenceCase ? toSentenceCase(result, displayLocale) : result;
}
@@ -112,9 +123,7 @@ public class LocaleHelper {
* @return the localized name of the locale.
*/
public static String getDisplayName(Locale locale, boolean sentenceCase) {
- String result = ULocale.getDisplayNameWithDialect(locale.toLanguageTag(),
- ULocale.getDefault());
- return sentenceCase ? toSentenceCase(result, Locale.getDefault()) : result;
+ return getDisplayName(locale, Locale.getDefault(), sentenceCase);
}
/**