diff options
| author | 2016-04-08 07:50:44 -0700 | |
|---|---|---|
| committer | 2016-04-11 16:13:54 -0700 | |
| commit | 1b2e7adc8821a6de2cfc2ce23b0c555c1bb7f1fa (patch) | |
| tree | 5dd56ffab09450fa4ad27fc3239f5042dd532714 | |
| parent | ffdaae004b403714dbf01b47a31065e67eec0177 (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.java | 19 |
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); } /** |