]> granicus.if.org Git - icu/commitdiff
ICU-9577 For CompactDecimalFormat data, look for local number system long; latin...
authorTravis Keep <keep94@gmail.com>
Thu, 27 Sep 2012 16:05:44 +0000 (16:05 +0000)
committerTravis Keep <keep94@gmail.com>
Thu, 27 Sep 2012 16:05:44 +0000 (16:05 +0000)
X-SVN-Rev: 32432

icu4j/main/classes/core/src/com/ibm/icu/text/CompactDecimalDataCache.java
icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/CompactDecimalFormatTest.java

index cccd3a8e3d3a0b304ab32cd9184e5c5e94de611c..e8747c67361d67213cec6ecdff20710b40b46ffb 100644 (file)
@@ -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<ULocale, DataBundle> cache =
             new SimpleCache<ULocale, DataBundle>();
@@ -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;
         }
index 50852efed04c0a41c1cb10fa1a9aa46bed9bee30..19cbdbcf3b4f700200a0f04c0247a20f6d72a424 100644 (file)
@@ -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() {