From 5c7c53d0197af5d55334184012fe0c399e1ea16b Mon Sep 17 00:00:00 2001 From: tom hsu Date: Thu, 2 Feb 2023 18:56:48 +0800 Subject: [PATCH] [Regional Preference] Fix subtitle overlap - Avoid to generate a new locale with extra U extension. - Get correct LocaleInfo from LocaleStore. Bug: b/267268410 Test: Maunal test passed. Change-Id: If6ef23f508c4eb7a72900a5d4e70b2f09b858663 --- core/java/com/android/internal/app/LocaleStore.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/core/java/com/android/internal/app/LocaleStore.java b/core/java/com/android/internal/app/LocaleStore.java index bcff9078ddda7..298230a850601 100644 --- a/core/java/com/android/internal/app/LocaleStore.java +++ b/core/java/com/android/internal/app/LocaleStore.java @@ -563,6 +563,18 @@ public class LocaleStore { String id = locale.toLanguageTag(); LocaleInfo result; if (!sLocaleCache.containsKey(id)) { + // Locale preferences can modify the language tag to current system languages, so we + // need to check the input locale without extra u extension except numbering system. + Locale filteredLocale = new Locale.Builder() + .setLocale(locale.stripExtensions()) + .setUnicodeLocaleKeyword("nu", locale.getUnicodeLocaleType("nu")) + .build(); + if (sLocaleCache.containsKey(filteredLocale.toLanguageTag())) { + result = new LocaleInfo(locale); + // This locale is included in supported locales, so set translated be true here. + result.mIsTranslated = true; + return result; + } result = new LocaleInfo(locale); sLocaleCache.put(id, result); } else {