From: Travis Keep Date: Thu, 27 Sep 2012 16:05:44 +0000 (+0000) Subject: ICU-9577 For CompactDecimalFormat data, look for local number system long; latin... X-Git-Tag: milestone-59-0-1~3531 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3cae7b9459a6665e2cfd9841ec106a0ec5dc4167;p=icu ICU-9577 For CompactDecimalFormat data, look for local number system long; latin long; local number system short; latin short. X-SVN-Rev: 32432 --- diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CompactDecimalDataCache.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CompactDecimalDataCache.java index cccd3a8e3d3..e8747c67361 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/CompactDecimalDataCache.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CompactDecimalDataCache.java @@ -29,6 +29,8 @@ class CompactDecimalDataCache { * less than 10^15. */ static final int MAX_DIGITS = 15; + + private static final String LATIN_NUMBERING_SYSTEM = "latn"; private final ICUCache cache = new SimpleCache(); @@ -109,8 +111,18 @@ class CompactDecimalDataCache { ICUResourceBundle r = (ICUResourceBundle)UResourceBundle. getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, ulocale); String numberingSystemName = ns.getName(); - Data shortData = loadWithStyle(r, numberingSystemName, ulocale, "patternsShort", false); - Data longData = loadWithStyle(r, numberingSystemName, ulocale, "patternsLong", true); + Data shortData = null; + Data longData = null; + if (!LATIN_NUMBERING_SYSTEM.equals(numberingSystemName)) { + shortData = loadWithStyle(r, numberingSystemName, ulocale, "patternsShort", true); + longData = loadWithStyle(r, numberingSystemName, ulocale, "patternsLong", true); + } + if (shortData == null) { + shortData = loadWithStyle(r, LATIN_NUMBERING_SYSTEM, ulocale, "patternsShort", false); + } + if (longData == null) { + longData = loadWithStyle(r, LATIN_NUMBERING_SYSTEM, ulocale, "patternsLong", true); + } if (longData == null) { longData = shortData; } diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/CompactDecimalFormatTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/CompactDecimalFormatTest.java index 50852efed04..19cbdbcf3b4 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/CompactDecimalFormatTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/CompactDecimalFormatTest.java @@ -123,11 +123,11 @@ public class CompactDecimalFormatTest extends TestFmwk { checkLocale(ULocale.ENGLISH, CompactStyle.SHORT, EnglishTestData); } - public void TestNoLongStyleInCLDR() { + public void TestArabicLongStyle() { NumberFormat cdf = NumberFormat.getCompactDecimalInstance( - ULocale.forLanguageTag("ar_EG"), CompactStyle.LONG); - assertEquals("Missing PatternsLong", "5K", cdf.format(5000)); + ULocale.forLanguageTag("ar"), CompactStyle.LONG); + assertEquals("Arabic Long", "٥٫٣ ألف", cdf.format(5300)); } public void TestSerbianShort() {