diff options
author | Tianjie Xu <xunchang@google.com> | 2018-12-01 05:19:45 +0100 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-12-01 05:19:45 +0100 |
commit | f502a8c9799232ddf0f201c4ebdc760e6c80c69e (patch) | |
tree | a0a6b66b3e3f3fe45a1d1998a51f648452826b28 /tools | |
parent | Merge "SYSTEM_ROOT -> get_system_root" am: cbfeb7f6af (diff) | |
parent | Merge "ImageGenerator: ignore the duplicate locales" (diff) | |
download | android_bootable_recovery-f502a8c9799232ddf0f201c4ebdc760e6c80c69e.tar android_bootable_recovery-f502a8c9799232ddf0f201c4ebdc760e6c80c69e.tar.gz android_bootable_recovery-f502a8c9799232ddf0f201c4ebdc760e6c80c69e.tar.bz2 android_bootable_recovery-f502a8c9799232ddf0f201c4ebdc760e6c80c69e.tar.lz android_bootable_recovery-f502a8c9799232ddf0f201c4ebdc760e6c80c69e.tar.xz android_bootable_recovery-f502a8c9799232ddf0f201c4ebdc760e6c80c69e.tar.zst android_bootable_recovery-f502a8c9799232ddf0f201c4ebdc760e6c80c69e.zip |
Diffstat (limited to 'tools')
-rw-r--r-- | tools/image_generator/ImageGenerator.java | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/tools/image_generator/ImageGenerator.java b/tools/image_generator/ImageGenerator.java index 50a498456..fd8e54295 100644 --- a/tools/image_generator/ImageGenerator.java +++ b/tools/image_generator/ImageGenerator.java @@ -41,6 +41,7 @@ import java.io.IOException; import java.text.AttributedString; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Locale; @@ -605,11 +606,15 @@ public class ImageGenerator { mDefaultFont = defaultFontMetrics.getFont(); mAndroidStringWidth = defaultFontMetrics.stringWidth(ANDROID_STRING); - Map<String, Integer> languageCount = new TreeMap<>(); + // The last country variant should be the fallback locale for a given language. + Map<String, Locale> fallbackLocaleMap = new HashMap<>(); int textWidth = 0; for (Locale locale : localizedTextMap.keySet()) { - String language = locale.getLanguage(); - languageCount.put(language, languageCount.getOrDefault(language, 0) + 1); + // Updates the fallback locale if we have a new language variant. Don't do it for en-XC + // as it's a pseudo-locale. + if (!locale.toLanguageTag().equals("en-XC")) { + fallbackLocaleMap.put(locale.getLanguage(), locale); + } textWidth = Math.max(textWidth, measureTextWidth(localizedTextMap.get(locale), locale)); } @@ -617,15 +622,16 @@ public class ImageGenerator { resize(textWidth, mImageHeight); for (Locale locale : localizedTextMap.keySet()) { - Integer count = languageCount.get(locale.getLanguage()); // Recovery expects en-US instead of en_US. String languageTag = locale.toLanguageTag(); - if (count == 1) { - // Make the last country variant for a given language be the catch-all for that + Locale fallbackLocale = fallbackLocaleMap.get(locale.getLanguage()); + if (locale.equals(fallbackLocale)) { + // Makes the last country variant for a given language be the catch-all for that // language. languageTag = locale.getLanguage(); - } else { - languageCount.put(locale.getLanguage(), count - 1); + } else if (localizedTextMap.get(locale).equals(localizedTextMap.get(fallbackLocale))) { + LOGGER.info("Skip parsing text for duplicate locale " + locale); + continue; } drawText(localizedTextMap.get(locale), locale, languageTag); |