From 91b8823ba533c0d3ed4dd80a363625e7dbac2feb Mon Sep 17 00:00:00 2001 From: Peter Edberg Date: Thu, 21 Feb 2013 11:33:13 +0000 Subject: [PATCH] ICU-9952 Workaround to fix inheritance for availFmt/intervalFmt items in ICU4J; #9964 for long-term fix X-SVN-Rev: 33292 --- .../com/ibm/icu/text/DateIntervalInfo.java | 12 +++++ .../icu/text/DateTimePatternGenerator.java | 45 ++++++++++++++----- 2 files changed, 47 insertions(+), 10 deletions(-) diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java index c4bb33c1c3a..ee256ebd152 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java @@ -12,6 +12,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import java.util.MissingResourceException; @@ -391,6 +392,17 @@ public class DateIntervalInfo implements Cloneable, Freezable, ICUResourceBundle rb = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,currentLocale); ICUResourceBundle calBundle = rb.getWithFallback("calendar"); ICUResourceBundle calTypeBundle = calBundle.getWithFallback(calendarTypeToUse); + // Start hack to force inheriting sideways from generic before up to parent locale. + // This happens in ICU4C just via the aliases in root, not sure why not here. + // This is added per #9952, #9964 for better long-term fix. + if (calTypeBundle != null && !calendarTypeToUse.equals("gregorian") && !calendarTypeToUse.equals("chinese")) { + Locale desiredLocale = rb.getLocale(); + Locale calDataLocale = calTypeBundle.getLocale(); + if (!calDataLocale.equals(desiredLocale)) { + calTypeBundle = calBundle.getWithFallback("generic"); + } + } + // End hack ICUResourceBundle itvDtPtnResource =calTypeBundle.getWithFallback("intervalFormats"); // look for fallback first, since it establishes the default order String fallback = itvDtPtnResource.getStringWithFallback(FALLBACK_STRING); diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java index 9e1ca990249..34fb17f7316 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java @@ -15,6 +15,7 @@ import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.MissingResourceException; import java.util.Set; @@ -188,6 +189,18 @@ public class DateTimePatternGenerator implements Freezable