]> git.saurik.com Git - apple/icu.git/commitdiff
ICU-64252.0.1.tar.gz macos-10152 macos-10153 v64252.0.1
authorApple <opensource@apple.com>
Thu, 2 Apr 2020 17:18:03 +0000 (17:18 +0000)
committerApple <opensource@apple.com>
Thu, 2 Apr 2020 17:18:03 +0000 (17:18 +0000)
52 files changed:
icuSources/data/lang/ar.txt
icuSources/data/lang/ca.txt
icuSources/data/lang/da.txt
icuSources/data/lang/de.txt
icuSources/data/lang/en.txt
icuSources/data/lang/en_AU.txt
icuSources/data/lang/es_419.txt
icuSources/data/lang/fi.txt
icuSources/data/lang/fr.txt
icuSources/data/lang/fr_CA.txt
icuSources/data/lang/he.txt
icuSources/data/lang/hi.txt
icuSources/data/lang/hr.txt
icuSources/data/lang/hu.txt
icuSources/data/lang/ja.txt
icuSources/data/lang/ko.txt
icuSources/data/lang/nb.txt
icuSources/data/lang/nl.txt
icuSources/data/lang/pl.txt
icuSources/data/lang/pt.txt
icuSources/data/lang/pt_PT.txt
icuSources/data/lang/ro.txt
icuSources/data/lang/ru.txt
icuSources/data/lang/sv.txt
icuSources/data/lang/th.txt
icuSources/data/lang/tr.txt
icuSources/data/lang/uk.txt
icuSources/data/lang/vi.txt
icuSources/data/lang/zh.txt
icuSources/data/lang/zh_Hant.txt
icuSources/data/locales/en_001.txt
icuSources/data/locales/en_BE.txt
icuSources/data/locales/es_MX.txt
icuSources/data/locales/hu.txt
icuSources/data/unit/it.txt
icuSources/data/unit/nb.txt
icuSources/data/unit/nl.txt
icuSources/data/unit/yue.txt
icuSources/data/unit/yue_Hans.txt
icuSources/i18n/csrsbcs.cpp
icuSources/i18n/decimfmt.cpp
icuSources/i18n/inputext.cpp
icuSources/i18n/inputext.h
icuSources/i18n/number_mapper.cpp
icuSources/test/cintltst/cdattst.c
icuSources/test/cintltst/cloctst.c
icuSources/test/cintltst/cmeasureformattest.c
icuSources/test/cintltst/cnumtst.c
icuSources/test/cintltst/ucsdetst.c
icuSources/test/intltest/measfmttest.cpp
icuSources/test/intltest/numbertest_api.cpp
icuSources/test/intltest/numfmtst.cpp

index 1694a938dd56b8f4acc763b85a4004e4f8b8c201..ce9cce06be36c0162750623221dcbd79aa585ba2 100644 (file)
@@ -46,7 +46,7 @@ ar{
         arc{"الآرامية"}
         arn{"المابودونغونية"}
         arp{"الأراباهو"}
-        ars{"اللهجة النجدية"}
+        ars{"العربية، النجدية"}
         arw{"الأراواكية"}
         as{"الأسامية"}
         asa{"الآسو"}
@@ -105,7 +105,7 @@ ar{
         chp{"الشيباوايان"}
         chr{"الشيروكي"}
         chy{"الشايان"}
-        ckb{"السورانية الكردية"}
+        ckb{"الكردية، السورانية"}
         co{"الكورسيكية"}
         cop{"القبطية"}
         cr{"الكرى"}
index 1964301aa8359835b309fc24eb4407f0263cf252..104eeb9fa59532306f390337e7f127164d9b13bd 100644 (file)
@@ -114,7 +114,7 @@ ca{
         chp{"chipewyan"}
         chr{"cherokee"}
         chy{"xeiene"}
-        ckb{"kurd central"}
+        ckb{"kurd sorani"}
         co{"cors"}
         cop{"copte"}
         cr{"cree"}
index 7fccea9f0bf2f093b5ba7cf97376df50a0c89b52..9a8b885643071b7de8e376e2ac072bbddd4ce11a 100644 (file)
@@ -46,7 +46,7 @@ da{
         arc{"aramæisk"}
         arn{"mapudungun"}
         arp{"arapaho"}
-        ars{"Najd-arabisk"}
+        ars{"arabisk, najdi"}
         arw{"arawak"}
         as{"assamesisk"}
         asa{"asu"}
@@ -105,7 +105,7 @@ da{
         chp{"chipewyan"}
         chr{"cherokee"}
         chy{"cheyenne"}
-        ckb{"sorani"}
+        ckb{"kurdisk, sorani"}
         co{"korsikansk"}
         cop{"koptisk"}
         cr{"cree"}
index 45c8754a67a55f14e7eae213baf20070a11ed0b2..e8707b99d8c173da844d272f575ac6534bffa135 100644 (file)
@@ -122,7 +122,7 @@ de{
         chp{"Chipewyan"}
         chr{"Cherokee"}
         chy{"Cheyenne"}
-        ckb{"Zentralkurdisch"}
+        ckb{"Kurdisch (Sorani)"}
         co{"Korsisch"}
         cop{"Koptisch"}
         cps{"Capiznon"}
index 038caf082b0d8cacacf8d61e69af1554ac7c069d..2d2089d4fa9722f8bf4326dad0da57add23bcdb6 100644 (file)
@@ -68,7 +68,7 @@ en{
         aro{"Araona"}
         arp{"Arapaho"}
         arq{"Algerian Arabic"}
-        ars{"Najdi Arabic"}
+        ars{"Arabic, Najdi"}
         arw{"Arawak"}
         ary{"Moroccan Arabic"}
         arz{"Egyptian Arabic"}
@@ -140,7 +140,7 @@ en{
         chp{"Chipewyan"}
         chr{"Cherokee"}
         chy{"Cheyenne"}
-        ckb{"Central Kurdish"}
+        ckb{"Kurdish, Sorani"}
         co{"Corsican"}
         cop{"Coptic"}
         cps{"Capiznon"}
index 6cd710e27ea4cdd51432ce320bdb79245fe822c4..7b78cec91128580df102823bca6b7e51ef8b9732 100644 (file)
@@ -3,7 +3,9 @@
 en_AU{
     %%Parent{"en_001"}
     Languages{
+        ars{"Arabic (Najdi)"}
         bn{"Bengali"}
+        ckb{"Kurdish (Sorani)"}
         en_US{"United States English"}
         frc{"frc"}
         lou{"lou"}
index 5fd3fa85c04092bd922c57cd2001037f1871ad53..fbf80072e66e74e028c399b2ff5dd8de9a31da0f 100644 (file)
@@ -14,7 +14,6 @@ es_419{
         ady{"adigeo"}
         alt{"altái del sur"}
         arp{"arapajó"}
-        ars{"árabe de Néyed"}
         bla{"siksiká"}
         ccp{"chakma"}
         eu{"vasco"}
index 0dfbc2db175f00afb1858eb86030ed3406977db3..a5f63a6acb6a4054f18fa47fbd2e1dcd67db2d99 100644 (file)
@@ -123,7 +123,7 @@ fi{
         chp{"chipewyan"}
         chr{"cherokee"}
         chy{"cheyenne"}
-        ckb{"sorani"}
+        ckb{"kurdi – soranî"}
         co{"korsika"}
         cop{"kopti"}
         cps{"capiznon"}
index 249d3556e80254856a42d5e96de253a8604f69eb..75a5fc3bd4e83a060659cd17ae71119970bbb6b9 100644 (file)
@@ -123,7 +123,7 @@ fr{
         chp{"chipewyan"}
         chr{"cherokee"}
         chy{"cheyenne"}
-        ckb{"sorani"}
+        ckb{"kurde sorani"}
         co{"corse"}
         cop{"copte"}
         cps{"capiznon"}
index 6a6d282923754f8af8d184097aa9bacf54dbd96c..2f7043b89f6a3fdcfdccceb70a1d207ce99a5bfb 100644 (file)
@@ -13,7 +13,6 @@ fr_CA{
         byv{"medumba"}
         chg{"tchagatay"}
         chn{"chinook"}
-        ckb{"kurde central"}
         cr{"cri"}
         den{"slave"}
         dgr{"tlicho"}
index 10677e9809c2fec7fce672a4e263fc87baf40687..be1de0c282bc51edec963075191357c9303e96a4 100644 (file)
@@ -46,7 +46,7 @@ he{
         arc{"ארמית"}
         arn{"אראוקנית"}
         arp{"אראפהו"}
-        ars{"ער×\91×\99ת - × ×\92׳ד"}
+        ars{"ער×\91×\99ת - × ×³×\92ד"}
         arw{"ארוואק"}
         as{"אסאמית"}
         asa{"אסו"}
@@ -107,7 +107,7 @@ he{
         chp{"צ׳יפוויאן"}
         chr{"צ׳רוקי"}
         chy{"שאיין"}
-        ckb{"כורדית סוראנית"}
+        ckb{"כורדית - סוראני"}
         co{"קורסיקנית"}
         cop{"קופטית"}
         cr{"קרי"}
index 872c49143639f2334642ab410d6460a473b60918..96caf0e9c5a2d95508a71978be2e87c9e19ae3ed 100644 (file)
@@ -46,7 +46,7 @@ hi{
         arc{"ऐरेमेक"}
         arn{"मापूचे"}
         arp{"अरापाहो"}
-        ars{"नà¤\9cà¥\8dदà¥\80 à¤\85रबी"}
+        ars{"à¤\85रबà¥\80, à¤¨à¤\9cà¥\8dदी"}
         arw{"अरावक"}
         as{"असमिया"}
         asa{"असु"}
@@ -97,7 +97,7 @@ hi{
         chp{"शिपेव्यान"}
         chr{"चेरोकी"}
         chy{"शेयेन्न"}
-        ckb{"सà¥\8bरानà¥\80 à¤\95à¥\81रà¥\8dदिश"}
+        ckb{"à¤\95à¥\81रà¥\8dदà¥\80, à¤¸à¥\8bरानà¥\80"}
         co{"कोर्सीकन"}
         cop{"कॉप्टिक"}
         cr{"क्री"}
index a321e2170176f4fe2542f37d24306e2f8d3b4e28..bb6a9650f10e9f2261f6b970608596331134ebff 100644 (file)
@@ -46,7 +46,7 @@ hr{
         arc{"aramejski"}
         arn{"mapuche"}
         arp{"arapaho"}
-        ars{"najdi arapski"}
+        ars{"arapski, najdi"}
         arw{"aravački"}
         as{"asamski"}
         asa{"asu"}
@@ -107,7 +107,7 @@ hr{
         chp{"chipewyan"}
         chr{"čerokijski"}
         chy{"čejenski"}
-        ckb{"soranski kurdski"}
+        ckb{"kurdski, sorani"}
         co{"korzički"}
         cop{"koptski"}
         cr{"cree"}
index 4faf2169124bc1391419f097485533d98d97f62f..5bdc9920e0f3d8dbacded29369af1cb7b5f56e55 100644 (file)
@@ -46,7 +46,7 @@ hu{
         arc{"arámi"}
         arn{"mapucse"}
         arp{"arapaho"}
-        ars{"nedzsdi arab"}
+        ars{"arab, nedzsdi"}
         arw{"aravak"}
         as{"asszámi"}
         asa{"asu"}
@@ -106,7 +106,7 @@ hu{
         chp{"csipevé"}
         chr{"cseroki"}
         chy{"csejen"}
-        ckb{"közép-ázsiai kurd"}
+        ckb{"kurd, szoráni"}
         co{"korzikai"}
         cop{"kopt"}
         cr{"krí"}
index ca6ad95b7a50c2ac2ebf4a5036b9e776e1daed72..e4b5b5ab0771285e19b9e1a759b06cd698426922 100644 (file)
@@ -50,8 +50,8 @@ ja{
         arn{"マプチェ語"}
         aro{"アラオナ語"}
         arp{"アラパホー語"}
-        arq{"ã\82¢ã\83«ã\82¸ã\82§ã\83ªã\82¢ã\83»ã\82¢ã\83©ã\83\93ã\82¢èª\9e"}
-        ars{"ã\83\8aã\82¸ã\83¥ã\83\89å\9c°æ\96¹ã\83»ã\82¢ã\83©ã\83\93ã\82¢èª\9e"}
+        arq{"ã\82¢ã\83©ã\83\93ã\82¢èª\9eï¼\88ã\82¢ã\83«ã\82¸ã\82§ã\83ªã\82¢ï¼\89"}
+        ars{"ã\82¢ã\83©ã\83\93ã\82¢èª\9eï¼\88ã\83\8aã\82¸ã\83¥ã\83\89å\9c°æ\96¹ï¼\89"}
         arw{"アラワク語"}
         ary{"モロッコ・アラビア語"}
         arz{"エジプト・アラビア語"}
@@ -750,7 +750,7 @@ ja{
         Nkoo{"ンコ文字"}
         Nshu{"女書"}
         Ogam{"オガム文字"}
-        Olck{"オルチキ文字"}
+        Olck{"ã\82ªã\83«ã\83»ã\83\81ã\82­æ\96\87å­\97"}
         Orkh{"オルホン文字"}
         Orya{"オリヤー文字"}
         Osma{"オスマニア文字"}
@@ -968,7 +968,7 @@ ja{
             mymrshan{"ミャンマー・シャン数字"}
             native{"独自の記数法"}
             nkoo{"ンコ数字"}
-            olck{"オルチキ数字"}
+            olck{"ã\82ªã\83«ã\83»ã\83\81ã\82­æ\95°å­\97"}
             orya{"オリヤー数字"}
             osma{"オスマニア数字"}
             roman{"ローマ数字"}
index 38e406f5db0030cd33196475faa8ec25bf86b101..4aae078bdc03f41b692277689133873ad931d687 100644 (file)
@@ -47,7 +47,7 @@ ko{
         arc{"아람어"}
         arn{"마푸둥군어"}
         arp{"아라파호어"}
-        arq{"ì\95\8cì \9c리 ì\95\84ë\9e\8dì\96´"}
+        arq{"ì\95\84ë\9e\8dì\96´(ì\95\8cì \9c리)"}
         ars{"아랍어(나즈디)"}
         arw{"아라와크어"}
         ary{"모로코 아랍어"}
@@ -111,7 +111,7 @@ ko{
         chp{"치페우얀"}
         chr{"체로키어"}
         chy{"샤이엔어"}
-        ckb{"ì\86\8cë\9d¼ë\8b\88 ì¿ ë¥´ë\93\9cì\96´"}
+        ckb{"쿠르ë\93\9cì\96´(ì\86\8cë\9d¼ë\8b\88)"}
         co{"코르시카어"}
         cop{"콥트어"}
         cr{"크리어"}
index 44fab8c9336275ed4f1ea6897946ab4fece196b9..17eb367cff06bc0eb45b1b8ab69479cd92427c85 100644 (file)
@@ -51,7 +51,7 @@ nb{
         aro{"araona"}
         arp{"arapaho"}
         arq{"algerisk arabisk"}
-        ars{"najdi-arabisk"}
+        ars{"arabisk (najd)"}
         arw{"arawak"}
         ary{"marokkansk-arabisk"}
         arz{"egyptisk arabisk"}
index 7f923e3c6525650c72146ae405eced876faf2156..31d5e5d5401b2e7d951db1aba7c8cedbb40462fb 100644 (file)
@@ -50,7 +50,7 @@ nl{
         aro{"Araona"}
         arp{"Arapaho"}
         arq{"Algerijns Arabisch"}
-        ars{"Nadjdi-Arabisch"}
+        ars{"Arabisch, Nadjdi"}
         arw{"Arawak"}
         ary{"Marokkaans Arabisch"}
         arz{"Egyptisch Arabisch"}
@@ -122,7 +122,7 @@ nl{
         chp{"Chipewyan"}
         chr{"Cherokee"}
         chy{"Cheyenne"}
-        ckb{"Soranî"}
+        ckb{"Koerdisch, Soranî"}
         co{"Corsicaans"}
         cop{"Koptisch"}
         cps{"Capiznon"}
index 29343d383ce7cf9403644a388bda7634c1c30490..dc28ea259acbc87de6831edef3da2eccd2e91c8f 100644 (file)
@@ -123,7 +123,7 @@ pl{
         chp{"czipewiański"}
         chr{"czirokeski"}
         chy{"czejeński"}
-        ckb{"sorani"}
+        ckb{"kurdyjski sorani"}
         co{"korsykański"}
         cop{"koptyjski"}
         cps{"capiznon"}
index 0c0efd5ca92db678dc3cdad4958f010d43b283bb..64019361fdb3f67354c0ce65868003b291d069f2 100644 (file)
@@ -107,7 +107,7 @@ pt{
         chp{"chipewyan"}
         chr{"cheroqui"}
         chy{"cheiene"}
-        ckb{"curdo central"}
+        ckb{"curdo sorâni"}
         co{"corso"}
         cop{"copta"}
         cr{"cree"}
index 93ea6dc56cb3492c4d422e4c8858ca2499e68451..1897fa28ff0a7ec32bbc53b8ede1dbede063ace1 100644 (file)
@@ -18,7 +18,6 @@ pt_PT{
         ang{"inglês antigo"}
         ar_001{"árabe moderno padrão"}
         arn{"mapuche"}
-        ars{"árabe do Négede"}
         av{"avaric"}
         bax{"bamun"}
         bbj{"ghomala"}
@@ -28,7 +27,7 @@ pt_PT{
         chn{"jargão chinook"}
         chr{"cherokee"}
         chy{"cheyenne"}
-        ckb{"sorani curdo"}
+        ckb{"curdo sorani"}
         co{"córsico"}
         crs{"francês crioulo seselwa"}
         cs{"checo"}
index 526b322c9c0634e81b11f7b6fbff5284422c756e..e240e9ee95aa7e564c418c2bc44e201224f2b416 100644 (file)
@@ -105,7 +105,7 @@ ro{
         chp{"chipewyan"}
         chr{"cherokee"}
         chy{"cheyenne"}
-        ckb{"kurdă centrală"}
+        ckb{"kurdă sorani"}
         co{"corsicană"}
         cop{"coptă"}
         cr{"cree"}
index d332bdab1d2208e198300fe1375008332e4a7d14..3db1a91a315846cb150e7d58b6545829fe9bbe17 100644 (file)
@@ -46,7 +46,7 @@ ru{
         arc{"арамейский"}
         arn{"мапуче"}
         arp{"арапахо"}
-        ars{"недждийÑ\81кий Ð°Ñ\80абÑ\81кий"}
+        ars{"аÑ\80абÑ\81каÑ\8f (недждийÑ\81кий)"}
         arw{"аравакский"}
         as{"ассамский"}
         asa{"асу"}
@@ -106,7 +106,7 @@ ru{
         chp{"чипевьян"}
         chr{"чероки"}
         chy{"шайенский"}
-        ckb{"сорани"}
+        ckb{"курдская (сорани)"}
         co{"корсиканский"}
         cop{"коптский"}
         cr{"кри"}
index a4996dd2f920585c127cac94cacc9105ec33301f..95e2f8b48e605a68c3a1ee1c94e55075dd8fcd42 100644 (file)
@@ -51,7 +51,7 @@ sv{
         aro{"araoniska"}
         arp{"arapaho"}
         arq{"algerisk arabiska"}
-        ars{"najdiarabiska"}
+        ars{"arabiska (najd)"}
         arw{"arawakiska"}
         ary{"marockansk arabiska"}
         arz{"egyptisk arabiska"}
@@ -123,7 +123,7 @@ sv{
         chp{"chipewyan"}
         chr{"cherokesiska"}
         chy{"cheyenne"}
-        ckb{"soranisk kurdiska"}
+        ckb{"kurdiska (sorani)"}
         co{"korsikanska"}
         cop{"koptiska"}
         cps{"kapisnon"}
index a30760afad5f258051897f40a0e6a3c5540149d3..d660a8a6e8be4dc14901c00546e124b7824a1d0f 100644 (file)
@@ -122,7 +122,7 @@ th{
         chp{"ชิพิวยัน"}
         chr{"เชอโรกี"}
         chy{"เชเยนเน"}
-        ckb{"à¹\80à¸\84ิรà¹\8cà¸\94à¸\95อà¸\99à¸\81ลาà¸\87"}
+        ckb{"à¹\80à¸\84ิรà¹\8cà¸\94à¹\82à¸\8bราà¸\99ี"}
         co{"คอร์ซิกา"}
         cop{"คอปติก"}
         cps{"กาปิซนอน"}
index f28debeec1165e7a54498328688ca5db5e1cc863..10cc5634d6a46092029bf63a14bb8b69482c2f88 100644 (file)
@@ -51,7 +51,7 @@ tr{
         aro{"Araona"}
         arp{"Arapaho Dili"}
         arq{"Cezayir Arapçası"}
-        ars{"Necd Arapçası"}
+        ars{"Arapça, Necd"}
         arw{"Arawak Dili"}
         ary{"Fas Arapçası"}
         arz{"Mısır Arapçası"}
@@ -124,7 +124,7 @@ tr{
         chp{"Çipevya dili"}
         chr{"Çerokice"}
         chy{"Şayence"}
-        ckb{"Orta Kürtçe"}
+        ckb{"Kürtçe, Sorani"}
         co{"Korsikaca"}
         cop{"Kıptice"}
         cps{"Capiznon"}
index 08f5363b55f80bc6be3be54756770ea97ba62807..10f84805c4ecd56efdac449172700272df267463 100644 (file)
@@ -49,7 +49,7 @@ uk{
         aro{"араона"}
         arp{"арапахо"}
         arq{"алжирська арабська"}
-        ars{"надждÑ\96йÑ\81Ñ\8cка Ð°Ñ\80абська"}
+        ars{"аÑ\80абÑ\81Ñ\8cка, Ð½Ð°Ð´Ð¶Ð´Ñ\96йська"}
         arw{"аравакська"}
         as{"асамська"}
         asa{"асу"}
@@ -117,7 +117,7 @@ uk{
         chp{"чіпевʼян"}
         chr{"черокі"}
         chy{"чейєнн"}
-        ckb{"центральнокурдська"}
+        ckb{"курдська, сорані"}
         co{"корсиканська"}
         cop{"коптська"}
         cr{"крі"}
index 4e8a5e6bff0f1697fe3c6ae7572a1332b1f2c6a8..00879b1c8c8802ce60e6bde4b498cce69671c957 100644 (file)
@@ -120,7 +120,7 @@ vi{
         chp{"Tiếng Chipewyan"}
         chr{"Tiếng Cherokee"}
         chy{"Tiếng Cheyenne"}
-        ckb{"Tiếng Kurd Miền Trung"}
+        ckb{"Tiếng Kurd Sorani"}
         co{"Tiếng Corsica"}
         cop{"Tiếng Coptic"}
         cps{"Tiếng Capiznon"}
index ddd4868e8bdc933b1db97b600a19d8c230f95395..062c191f4447ea8bec9b3ba665c9b8f631cb2bcb 100644 (file)
@@ -46,7 +46,7 @@ zh{
         arc{"阿拉米语"}
         arn{"马普切语"}
         arp{"阿拉帕霍语"}
-        ars{"纳吉迪阿拉伯语"}
+        ars{"阿拉伯语(纳吉迪)"}
         arw{"阿拉瓦克语"}
         as{"阿萨姆语"}
         asa{"阿苏语"}
@@ -107,7 +107,7 @@ zh{
         chp{"奇佩维安语"}
         chr{"切罗基语"}
         chy{"夏延语"}
-        ckb{"中库尔德语"}
+        ckb{"库尔德语(索拉尼)"}
         co{"科西嘉语"}
         cop{"科普特语"}
         cr{"克里族语"}
index 2f3a7f0749c92a147a1766951cf59879491398f4..c9d1ce66d9af2409436ac3cb6d54b48d060737b8 100644 (file)
@@ -52,7 +52,7 @@ zh_Hant{
         aro{"阿拉奧納文"}
         arp{"阿拉帕霍文"}
         arq{"阿爾及利亞阿拉伯文"}
-        ars{"納吉迪阿拉伯文"}
+        ars{"阿拉伯文(納吉迪)"}
         arw{"阿拉瓦克文"}
         ary{"摩洛哥阿拉伯文"}
         arz{"埃及阿拉伯文"}
@@ -124,7 +124,7 @@ zh_Hant{
         chp{"奇佩瓦揚文"}
         chr{"柴羅基文"}
         chy{"沙伊安文"}
-        ckb{"中庫德文"}
+        ckb{"庫德文(索拉尼)"}
         co{"科西嘉文"}
         cop{"科普特文"}
         cps{"卡皮茲文"}
index a36117da9bf33a0eae34baa3fc768b1709988e94..162be6e72c22c711e3cf69e88edc9ba400833ccf 100644 (file)
@@ -279,6 +279,23 @@ en_001{
                 }
             }
         }
+        japanese{
+            DateTimePatterns{
+                "h:mm:ss a zzzz",
+                "h:mm:ss a z",
+                "h:mm:ss a",
+                "h:mm a",
+                "EEEE, d MMMM y G",
+                "d MMMM y G",
+                "d MMM y G",
+                "dd/MM/y GGGGG",
+                "{1}, {0}",
+                "{1} 'at' {0}",
+                "{1} 'at' {0}",
+                "{1} 'at' {0}",
+                "{1}, {0}",
+            }
+       }
     }
     fields{
         dayOfYear-narrow{
index 421de33791772835c4ffb3e0d6beb090d5281c15..2bfffb2013573d860c162cf4074a838893b5260b 100644 (file)
@@ -29,14 +29,26 @@ en_BE{
                 "{1}, {0}",
             }
             availableFormats{
+                H{"HH"}
+                Hm{"HH:mm"}
+                Hms{"HH:mm:ss"}
+                Hmsv{"HH:mm:ss v"}
+                Hmv{"HH:mm v"}
                 MEd{"E d/M"}
+                MMMEd{"E, d MMM"}
+                MMMMd{"d MMMM"}
+                MMMd{"d MMM"}
                 Md{"d/M"}
                 h{"h a"}
                 hm{"h:mm a"}
                 hms{"h:mm:ss a"}
                 hmsv{"h:mm:ss a v"}
                 hmv{"h:mm a v"}
+                ms{"mm:ss"}
+                yyyyM{"MM/y GGGGG"}
                 yyyyMEd{"E d/M/y G"}
+                yyyyMMMEd{"E, d MMM y G"}
+                yyyyMMMd{"d MMM y G"}
                 yyyyMd{"d/M/y G"}
             }
         }
@@ -56,12 +68,6 @@ en_BE{
                 "{1} 'at' {0}",
                 "{1}, {0}",
             }
-            availableFormats{
-                MEd{"E d/M"}
-                Md{"d/M"}
-                yMEd{"E d/M/y"}
-                yMd{"d/M/y"}
-            }
         }
     }
 }
index a2ccc3b9431136d3e6228e6a00bfc7bdedaf04ea..9c25b1615ef7d5b60cb4a1e333d96a9ded9a4a57 100644 (file)
@@ -94,6 +94,7 @@ es_MX{
                 }
             }
         }
+        minimumGroupingDigits{"1"}
     }
     Version{"2.1.47.96"}
     calendar{
@@ -156,14 +157,6 @@ es_MX{
             }
         }
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
             DateTimePatterns{
                 "H:mm:ss zzzz",
                 "H:mm:ss z",
index c49d285bdfbec4ff74dcf040515faef2c7c442eb..44a36acbb7c5d5dc1b1920bca2060c7e1cd11816 100644 (file)
@@ -216,7 +216,7 @@ hu{
                 other{"A kosár tartalma: {0} X. Megveszi őket?"}
             }
         }
-        minimumGroupingDigits{"4"}
+        minimumGroupingDigits{"1"}
         native{"latn"}
     }
     Version{"2.1.48.42"}
index 545b501b964831814c07ae5e0f55afa8c60eb14c..cdc6a56c4b944c820bece71f2a77d169d436b297 100644 (file)
@@ -925,23 +925,23 @@ it{
         duration{
             day{
                 dnam{"giorno"}
-                one{"{0}g"}
-                other{"{0}g"}
+                one{"{0} g"}
+                other{"{0} g"}
             }
             hour{
                 dnam{"ora"}
-                one{"{0}h"}
-                other{"{0}h"}
+                one{"{0} h"}
+                other{"{0} h"}
             }
             millisecond{
                 dnam{"ms"}
-                one{"{0}ms"}
-                other{"{0}ms"}
+                one{"{0} ms"}
+                other{"{0} ms"}
             }
             minute{
                 dnam{"min"}
-                one{"{0}min"}
-                other{"{0}min"}
+                one{"{0} min"}
+                other{"{0} min"}
             }
             month{
                 dnam{"mese"}
@@ -950,8 +950,8 @@ it{
             }
             second{
                 dnam{"s"}
-                one{"{0}s"}
-                other{"{0}s"}
+                one{"{0} s"}
+                other{"{0} s"}
             }
             week{
                 dnam{"sett."}
index 592331fd28e51511a7ee13b2814aca99903ed8a5..b0a9e8fdcf7dd88cac228161d60083b4fbbe59da 100644 (file)
@@ -934,30 +934,30 @@ nb{
             }
             day{
                 dnam{"døgn"}
-                one{"{0}d"}
-                other{"{0}d"}
+                one{"{0} d"}
+                other{"{0} d"}
                 per{"{0}/d"}
             }
             hour{
                 dnam{"time"}
-                one{"{0}t"}
-                other{"{0}t"}
+                one{"{0} t"}
+                other{"{0} t"}
                 per{"{0}/t"}
             }
             microsecond{
                 dnam{"μs"}
-                one{"{0}μs"}
-                other{"{0}μs"}
+                one{"{0} μs"}
+                other{"{0} μs"}
             }
             millisecond{
                 dnam{"ms"}
-                one{"{0}ms"}
-                other{"{0}ms"}
+                one{"{0} ms"}
+                other{"{0} ms"}
             }
             minute{
                 dnam{"min"}
-                one{"{0}m"}
-                other{"{0}m"}
+                one{"{0} m"}
+                other{"{0} m"}
                 per{"{0}/m"}
             }
             month{
@@ -968,13 +968,13 @@ nb{
             }
             nanosecond{
                 dnam{"ns"}
-                one{"{0}ns"}
-                other{"{0}ns"}
+                one{"{0} ns"}
+                other{"{0} ns"}
             }
             second{
                 dnam{"sek"}
-                one{"{0}s"}
-                other{"{0}s"}
+                one{"{0} s"}
+                other{"{0} s"}
                 per{"{0}/s"}
             }
             week{
index 149f98e3865d481c7c1f53cf0270a9b5c77980aa..e3fe3aaa9fcde6d61086773a476af99df011d033 100644 (file)
@@ -1186,6 +1186,10 @@ nl{
                 one{"{0}°"}
                 other{"{0}°"}
             }
+            fahrenheit{
+                dnam{"°F"}
+                other{"{0}°F"}
+            }
         }
         torque{
             newton-meter{
@@ -1660,6 +1664,16 @@ nl{
                 other{"{0} kt"}
             }
         }
+        temperature{
+            celsius{
+                dnam{"°C"}
+                other{"{0} °C"}
+            }
+            fahrenheit{
+                dnam{"°F"}
+                other{"{0} °F"}
+            }
+        }
         torque{
             newton-meter{
                 dnam{"N⋅m"}
index fbe4196bc43b82baa647465417d60bfdc6cf5263..827a97afea1f5ab11633e02ab68b4dadad958d4b 100644 (file)
@@ -554,7 +554,7 @@ yue{
         speed{
             kilometer-per-hour{
                 dnam{"公里/小時"}
-                other{"每小時 {0} 公里"}
+                other{"{0}公里/小時"}
             }
             knot{
                 dnam{"節"}
@@ -562,7 +562,7 @@ yue{
             }
             meter-per-second{
                 dnam{"米/秒"}
-                other{"每秒 {0} 米"}
+                other{"{0}米/秒"}
             }
             mile-per-hour{
                 dnam{"英里/小時"}
@@ -1064,10 +1064,10 @@ yue{
         speed{
             kilometer-per-hour{
                 dnam{"公里/小時"}
-                other{"{0}公里/時"}
+                other{"{0}公里/時"}
             }
             meter-per-second{
-                other{"{0}m/s"}
+                other{"{0}米/秒"}
             }
             mile-per-hour{
                 other{"{0}英里/小時"}
@@ -1704,7 +1704,7 @@ yue{
         speed{
             kilometer-per-hour{
                 dnam{"公里/小時"}
-                other{"每小時{0}公里"}
+                other{"{0}公里/時"}
             }
             knot{
                 dnam{"節"}
@@ -1712,7 +1712,7 @@ yue{
             }
             meter-per-second{
                 dnam{"米/秒"}
-                other{"每秒{0}米"}
+                other{"{0}米/秒"}
             }
             mile-per-hour{
                 dnam{"英里/小時"}
index 25f8fa72bcfd6574d7324249fa2fa8a82e35f2ad..860935c40ab0e621dc59a5e84dbaeac05c3fbf22 100644 (file)
@@ -555,7 +555,7 @@ yue_Hans{
         speed{
             kilometer-per-hour{
                 dnam{"每小时公里"}
-                other{"每小时 {0} 公里"}
+                other{"{0}公里/小时"}
             }
             knot{
                 dnam{"节"}
@@ -563,7 +563,7 @@ yue_Hans{
             }
             meter-per-second{
                 dnam{"每秒公尺"}
-                other{"每秒 {0} 米"}
+                other{"{0}米/秒"}
             }
             mile-per-hour{
                 dnam{"每小时英里"}
@@ -1062,10 +1062,10 @@ yue_Hans{
         speed{
             kilometer-per-hour{
                 dnam{"公里/小时"}
-                other{"{0}公里/时"}
+                other{"{0}公里/时"}
             }
             meter-per-second{
-                other{"{0}m/s"}
+                other{"{0}米/秒"}
             }
             mile-per-hour{
                 other{"{0}英里/小时"}
@@ -1702,7 +1702,7 @@ yue_Hans{
         speed{
             kilometer-per-hour{
                 dnam{"公里/小时"}
-                other{"每小时{0}公里"}
+                other{"{0}公里/时"}
             }
             knot{
                 dnam{"节"}
@@ -1710,7 +1710,7 @@ yue_Hans{
             }
             meter-per-second{
                 dnam{"公尺/秒"}
-                other{"每秒{0}米"}
+                other{"{0}米/秒"}
             }
             mile-per-hour{
                 dnam{"英里/小时"}
index 0b0d8967e7d69055c7588d7a80609e0600b6e17f..c381958540837ecd40a7ef08bc1cefafafee523f 100644 (file)
@@ -902,6 +902,10 @@ UBool CharsetRecog_8859_1::match(InputText *textIn, CharsetMatch *results) const
             bestConfidenceSoFar = confidence;
         }
     }
+    if (bestConfidenceSoFar < 10 && textIn->fOnlyTypicalASCII) { // rdar://56373519
+        bestConfidenceSoFar = 15;
+        results->set(textIn, this, bestConfidenceSoFar, name);
+    }
     return (bestConfidenceSoFar > 0);
 }
 
index bb3e0bb658d6e32d61fb316903b6fb841013776d..d428cddc5d77fae868e60c3daaff099de8f24087 100644 (file)
@@ -1934,7 +1934,8 @@ void DecimalFormat::doFastFormatInt32(int32_t input, bool isNegative, UnicodeStr
     char16_t localBuffer[localCapacity];
     char16_t* ptr = localBuffer + localCapacity;
     int8_t group = 0;
-    for (int8_t i = 0; i < fields->fastData.maxInt && (input != 0 || i < fields->fastData.minInt); i++) {
+    int8_t minInt = (fields->fastData.minInt < 1)? 1: fields->fastData.minInt; // rdar://54569257
+    for (int8_t i = 0; i < fields->fastData.maxInt && (input != 0 || i < minInt); i++) {
         if (group++ == 3 && fields->fastData.cpGroupingSeparator != 0) {
             *(--ptr) = fields->fastData.cpGroupingSeparator;
             group = 1;
index e74d636c76c3c61c9c2631d512d2d979073dc0ca..ab0b697ea0328605716e155cd37ccd620b24b9b1 100644 (file)
@@ -50,6 +50,7 @@ void InputText::setText(const char *in, int32_t len)
 {
     fInputLen  = 0;
     fC1Bytes   = FALSE;
+    fOnlyTypicalASCII = FALSE; // rdar://56373519
     fRawInput  = (const uint8_t *) in;
     fRawLength = len == -1? (int32_t)uprv_strlen(in) : len;
 }
@@ -163,12 +164,20 @@ void InputText::MungeInput(UBool fStripTags) {
         fByteStats[fInputBytes[srci]] += 1;
     }
 
-    for (int32_t i = 0x80; i <= 0x9F; i += 1) {
+    fOnlyTypicalASCII = TRUE; // rdar://56373519
+    for (int32_t i = 0x01; i <= 0xFF; i += 1) {
         if (fByteStats[i] != 0) {
-            fC1Bytes = TRUE;
-            break;
+            if ((i < 0x20 && i != 0x09 && i != 0x0A && i != 0x0D) || i > 0x7E) {
+                fOnlyTypicalASCII = FALSE; // rdar://56373519
+                if (i >= 0x80 && i <= 0x9F) {
+                    fC1Bytes = TRUE;
+                }
+            }
         }
     }
+    if (fByteStats[0] > 1) {
+        fOnlyTypicalASCII = FALSE;
+    }
 }
 
 U_NAMESPACE_END
index 8edc561fc64bcc4dadf7c410b520a54773059461..020bb4c68fc8d19fcf0d893e7b6af3fdd83ddebf 100644 (file)
@@ -47,6 +47,7 @@ public:
     //   Value is rounded up, so zero really means zero occurences. 
     int16_t  *fByteStats;
     UBool     fC1Bytes;          // True if any bytes in the range 0x80 - 0x9F are in the input;false by default
+    UBool     fOnlyTypicalASCII; // True if has only byte values that are typical for ASCII // rdar://56373519
     char     *fDeclaredEncoding;
 
     const uint8_t           *fRawInput;     // Original, untouched input bytes.
index a13bcb00947ba16c2f2f2a4b1e256a4d5a2deaeb..478674904a0b9ff1e39db0f607a76e04f6a6e6bd 100644 (file)
@@ -127,9 +127,10 @@ MacroProps NumberPropertyMapper::oldToNew(const DecimalFormatProperties& propert
     // Validate min/max int/frac.
     // For backwards compatibility, minimum overrides maximum if the two conflict.
     // The following logic ensures that there is always a minimum of at least one digit.
+    // Except that we allow minInt=0, minFrac=0 if maxInt!=0 - rdar://54569257
     if (minInt == 0 && maxFrac != 0) {
         // Force a digit after the decimal point.
-        minFrac = minFrac <= 0 ? 1 : minFrac;
+        minFrac = (minFrac < 0 || (minFrac==0 && maxInt==0)) ? 1 : minFrac; // rdar://54569257
         maxFrac = maxFrac < 0 ? -1 : maxFrac < minFrac ? minFrac : maxFrac;
         minInt = 0;
         maxInt = maxInt < 0 ? -1 : maxInt > kMaxIntFracSig ? -1 : maxInt;
index eaaf02e2438639e36a89c5386e6ec829c78c8ad2..12df296517f92259f021e80548a7f375b0a40f04 100644 (file)
@@ -606,7 +606,7 @@ static void TestRelativeDateFormat()
 /*Testing udat_getSymbols() and udat_setSymbols() and udat_countSymbols()*/
 static void TestSymbols()
 {
-    UDateFormat *def, *fr, *zhChiCal;
+    UDateFormat *def, *fr, *zhChiCal, *esMX;
     UErrorCode status = U_ZERO_ERROR;
     UChar *value=NULL;
     UChar *result = NULL;
@@ -645,6 +645,15 @@ static void TestSymbols()
             myErrorName(status) );
         return;
     }
+    /*creating a dateformat with es_MX locale */
+    log_verbose("\ncreating a date format with es_MX locale\n");
+    esMX = udat_open(UDAT_SHORT, UDAT_NONE, "es_MX", NULL, 0, NULL, 0, &status);
+    if(U_FAILURE(status))
+    {
+        log_data_err("error in creating the dateformat using no date, short time, locale es_MX -> %s (Are you missing data?)\n",
+            myErrorName(status) );
+        return;
+    }
 
 
     /*Testing countSymbols, getSymbols and setSymbols*/
@@ -714,6 +723,8 @@ static void TestSymbols()
     VerifygetSymbols(zhChiCal, UDAT_CYCLIC_YEARS_NARROW, 59, "\\u7678\\u4EA5");
     VerifygetSymbols(zhChiCal, UDAT_ZODIAC_NAMES_ABBREVIATED, 0, "\\u9F20");
     VerifygetSymbols(zhChiCal, UDAT_ZODIAC_NAMES_WIDE, 11, "\\u732A");
+    VerifygetSymbols(esMX, UDAT_AM_PMS, 0, "a.m."); // see <rdar://problem/52923924>
+    VerifygetSymbols(esMX, UDAT_AM_PMS, 1, "p.m."); // see <rdar://problem/52923924>
 #if UDAT_HAS_PATTERN_CHAR_FOR_TIME_SEPARATOR
     VerifygetSymbols(def,UDAT_LOCALIZED_CHARS, 0, "GyMdkHmsSEDFwWahKzYeugAZvcLQqVUOXxrbB:");
 #else
@@ -854,6 +865,7 @@ free(pattern);
     udat_close(fr);
     udat_close(def);
     udat_close(zhChiCal);
+    udat_close(esMX);
     if(result != NULL) {
         free(result);
         result = NULL;
@@ -3029,6 +3041,258 @@ static const char * remapResults_es_PR_japanese[] = { // rdar://52461062
     NULL
 };
 
+static const char * remapResults_en_IN[] = { // rdar://56309604
+    "h:mm:ss a zzzz", // full
+    "HH:mm:ss zzzz",  //   force24
+    "h:mm:ss a zzzz", //   force12
+    "h:mm:ss a z",    // long
+    "HH:mm:ss z",     //   force24
+    "h:mm:ss a z",    //   force12
+    "h:mm:ss a",      // medium
+    "HH:mm:ss",       //   force24
+    "h:mm:ss a",      //   force12
+    "h:mm a",         // short
+    "HH:mm",          //   force24
+    "h:mm a",         //   force12
+    "EEEE, d MMMM y 'at' h:mm:ss a z", // long_df
+    "EEEE, d MMMM y 'at' HH:mm:ss z",  //   force24
+    "EEEE, d MMMM y 'at' h:mm:ss a z", //   force12
+    "dd/MM/yy, h:mm a", // short_ds
+    "dd/MM/yy, HH:mm",  //   force24
+    "dd/MM/yy, h:mm a", //   force12
+
+    "h:mm:ss a",      // jmmss
+    "HH:mm:ss",       //   force24
+    "h:mm:ss a",      //   force12
+    "h:mm:ss a",      // jjmmss
+    "HH:mm:ss",       //   force24
+    "HH:mm:ss",       //   force24 | match hour field length
+    "h:mm:ss a",      //   force12
+    "hh:mm:ss a",     //   force12 | match hour field length
+    "hh:mm",          // Jmm
+    "HH:mm",          //   force24
+    "hh:mm",          //   force12
+    "h:mm:ss a v",    // jmsv
+    "HH:mm:ss v",     //   force24
+    "h:mm:ss a v",    //   force12
+    "h:mm:ss a z",    // jmsz
+    "HH:mm:ss z",     //   force24
+    "h:mm:ss a z",    //   force12
+
+    "h:mm:ss a",                          // "h:mm:ss"
+    "HH:mm:ss",                           //
+    "a'xx'h:mm:ss d MMM y",               // "a'xx'h:mm:ss d MMM y"
+    "HH:mm:ss d MMM y",                   //
+    "EEE, d MMM y 'aha' h:mm:ss a 'hrs'", // "EEE, d MMM y 'aha' h:mm:ss a 'hrs'"
+    "EEE, d MMM y 'aha' HH:mm:ss 'hrs'",  //
+    "EEE, d MMM y 'aha' a'xx'h:mm:ss",    // "EEE, d MMM y 'aha' a'xx'h:mm:ss"
+    "EEE, d MMM y 'aha' HH:mm:ss",        //
+    "yyMMddhhmmss",                       // "yyMMddhhmmss"
+    "yyMMddHHmmss",                       //
+
+    "h:mm:ss a",                          // "H:mm:ss"
+    "H:mm:ss",                            //
+    "h:mm:ss a d MMM y",                  // "H:mm:ss d MMM y"
+    "H:mm:ss d MMM y",                    //
+    "EEE, d MMM y 'aha' h:mm:ss a 'hrs'", // "EEE, d MMM y 'aha' H:mm:ss 'hrs'"
+    "EEE, d MMM y 'aha' H:mm:ss 'hrs'",   //
+    "EEE, d MMM y 'aha' h'h'mm'm'ss a",   // "EEE, d MMM y 'aha' H'h'mm'm'ss"
+    "EEE, d MMM y 'aha' H'h'mm'm'ss",     //
+
+    "uuuu-MM-dd h:mm:ss a '+0000'",       //
+
+    NULL
+};
+
+static const char * remapResults_en_IN_japanese[] = { // rdar://56309604
+    "h:mm:ss a zzzz", // full
+    "HH:mm:ss zzzz",  //   force24
+    "h:mm:ss a zzzz", //   force12
+    "h:mm:ss a z",    // long
+    "HH:mm:ss z",     //   force24
+    "h:mm:ss a z",    //   force12
+    "h:mm:ss a",      // medium
+    "HH:mm:ss",       //   force24
+    "h:mm:ss a",      //   force12
+    "h:mm a",         // short
+    "HH:mm",          //   force24
+    "h:mm a",         //   force12
+    "EEEE, d MMMM y G 'at' h:mm:ss a z", // long_df
+    "EEEE, d MMMM y G 'at' HH:mm:ss z",  //   force24
+    "EEEE, d MMMM y G 'at' h:mm:ss a z", //   force12
+    "dd/MM/y GGGGG, h:mm a", // short_ds
+    "dd/MM/y GGGGG, HH:mm",  //   force24
+    "dd/MM/y GGGGG, h:mm a", //   force12
+
+    "h:mm:ss a",      // jmmss
+    "HH:mm:ss",       //   force24
+    "h:mm:ss a",      //   force12
+    "h:mm:ss a",      // jjmmss
+    "HH:mm:ss",       //   force24
+    "HH:mm:ss",       //   force24 | match hour field length
+    "h:mm:ss a",      //   force12
+    "hh:mm:ss a",     //   force12 | match hour field length
+    "hh:mm",          // Jmm
+    "HH:mm",          //   force24
+    "hh:mm",          //   force12
+    "h:mm:ss a v",    // jmsv
+    "HH:mm:ss v",     //   force24
+    "h:mm:ss a v",    //   force12
+    "h:mm:ss a z",    // jmsz
+    "HH:mm:ss z",     //   force24
+    "h:mm:ss a z",    //   force12
+
+    "h:mm:ss a",                          // "h:mm:ss"
+    "HH:mm:ss",                           //
+    "a'xx'h:mm:ss d MMM y",               // "a'xx'h:mm:ss d MMM y"
+    "HH:mm:ss d MMM y",                   //
+    "EEE, d MMM y 'aha' h:mm:ss a 'hrs'", // "EEE, d MMM y 'aha' h:mm:ss a 'hrs'"
+    "EEE, d MMM y 'aha' HH:mm:ss 'hrs'",  //
+    "EEE, d MMM y 'aha' a'xx'h:mm:ss",    // "EEE, d MMM y 'aha' a'xx'h:mm:ss"
+    "EEE, d MMM y 'aha' HH:mm:ss",        //
+    "yyMMddhhmmss",                       // "yyMMddhhmmss"
+    "yyMMddHHmmss",                       //
+
+    "h:mm:ss a",                          // "H:mm:ss"
+    "H:mm:ss",                            //
+    "h:mm:ss a d MMM y",                  // "H:mm:ss d MMM y"
+    "H:mm:ss d MMM y",                    //
+    "EEE, d MMM y 'aha' h:mm:ss a 'hrs'", // "EEE, d MMM y 'aha' H:mm:ss 'hrs'"
+    "EEE, d MMM y 'aha' H:mm:ss 'hrs'",   //
+    "EEE, d MMM y 'aha' h'h'mm'm'ss a",   // "EEE, d MMM y 'aha' H'h'mm'm'ss"
+    "EEE, d MMM y 'aha' H'h'mm'm'ss",     //
+
+    "uuuu-MM-dd h:mm:ss a '+0000'",       //
+
+    NULL
+};
+
+static const char * remapResults_en_BE[] = { // rdar://56309604
+    "HH:mm:ss zzzz",  // full
+    "HH:mm:ss zzzz",  //   force24
+    "h:mm:ss a zzzz", //   force12
+    "HH:mm:ss z",     // long
+    "HH:mm:ss z",     //   force24
+    "h:mm:ss a z",    //   force12
+    "HH:mm:ss",       // medium
+    "HH:mm:ss",       //   force24
+    "h:mm:ss a",      //   force12
+    "HH:mm",          // short
+    "HH:mm",          //   force24
+    "h:mm a",         //   force12
+    "EEEE, d MMMM y 'at' HH:mm:ss z",  // long_df
+    "EEEE, d MMMM y 'at' HH:mm:ss z",  //   force24
+    "EEEE, d MMMM y 'at' h:mm:ss a z", //   force12
+    "dd/MM/y, HH:mm",  // short_ds
+    "dd/MM/y, HH:mm",  //   force24
+    "dd/MM/y, h:mm a", //   force12
+
+    "HH:mm:ss",       // jmmss
+    "HH:mm:ss",       //   force24
+    "h:mm:ss a",      //   force12
+    "HH:mm:ss",       // jjmmss
+    "HH:mm:ss",       //   force24
+    "HH:mm:ss",       //   force24 | match hour field length
+    "h:mm:ss a",      //   force12
+    "hh:mm:ss a",     //   force12 | match hour field length
+    "HH:mm",          // Jmm
+    "HH:mm",          //   force24
+    "hh:mm",          //   force12
+    "HH:mm:ss v",     // jmsv
+    "HH:mm:ss v",     //   force24
+    "h:mm:ss a v",    //   force12
+    "HH:mm:ss z",     // jmsz
+    "HH:mm:ss z",     //   force24
+    "h:mm:ss a z",    //   force12
+
+    "h:mm:ss a",                          // "h:mm:ss" force12
+    "HH:mm:ss",                           //           force24
+    "a'xx'h:mm:ss d MMM y",               // "a'xx'h:mm:ss d MMM y" force12
+    "HH:mm:ss d MMM y",                   //                        force24
+    "EEE, d MMM y 'aha' h:mm:ss a 'hrs'", // "EEE, d MMM y 'aha' h:mm:ss a 'hrs'" force12
+    "EEE, d MMM y 'aha' HH:mm:ss 'hrs'",  //
+    "EEE, d MMM y 'aha' a'xx'h:mm:ss",    // "EEE, d MMM y 'aha' a'xx'h:mm:ss"
+    "EEE, d MMM y 'aha' HH:mm:ss",        //
+    "yyMMddhhmmss",                       // "yyMMddhhmmss" force12
+    "yyMMddHHmmss",                       //
+
+    "h:mm:ss a",                          // "H:mm:ss"
+    "H:mm:ss",                            //
+    "h:mm:ss a d MMM y",                  // "H:mm:ss d MMM y"
+    "H:mm:ss d MMM y",                    //
+    "EEE, d MMM y 'aha' h:mm:ss a 'hrs'", // "EEE, d MMM y 'aha' H:mm:ss 'hrs'"
+    "EEE, d MMM y 'aha' H:mm:ss 'hrs'",   //
+    "EEE, d MMM y 'aha' h'h'mm'm'ss a",   // "EEE, d MMM y 'aha' H'h'mm'm'ss"
+    "EEE, d MMM y 'aha' H'h'mm'm'ss",     //
+
+    "uuuu-MM-dd h:mm:ss a '+0000'",       //
+
+    NULL
+};
+
+static const char * remapResults_en_BE_japanese[] = { // rdar://56309604
+    "HH:mm:ss zzzz",  // full
+    "HH:mm:ss zzzz",  //   force24
+    "h:mm:ss a zzzz", //   force12
+    "HH:mm:ss z",     // long
+    "HH:mm:ss z",     //   force24
+    "h:mm:ss a z",    //   force12
+    "HH:mm:ss",       // medium
+    "HH:mm:ss",       //   force24
+    "h:mm:ss a",      //   force12
+    "HH:mm",          // short
+    "HH:mm",          //   force24
+    "h:mm a",         //   force12
+    "EEEE, d MMMM y G 'at' HH:mm:ss z",  // long_df
+    "EEEE, d MMMM y G 'at' HH:mm:ss z",  //   force24
+    "EEEE, d MMMM y G 'at' h:mm:ss a z", //   force12
+    "dd/MM/y GGGGG, HH:mm",  // short_ds
+    "dd/MM/y GGGGG, HH:mm",  //   force24
+    "dd/MM/y GGGGG, h:mm a", //   force12
+
+    "HH:mm:ss",       // jmmss
+    "HH:mm:ss",       //   force24
+    "h:mm:ss a",      //   force12
+    "HH:mm:ss",       // jjmmss
+    "HH:mm:ss",       //   force24
+    "HH:mm:ss",       //   force24 | match hour field length
+    "h:mm:ss a",      //   force12
+    "hh:mm:ss a",     //   force12 | match hour field length
+    "HH:mm",          // Jmm
+    "HH:mm",          //   force24
+    "hh:mm",          //   force12
+    "HH:mm:ss v",     // jmsv
+    "HH:mm:ss v",     //   force24
+    "h:mm:ss a v",    //   force12
+    "HH:mm:ss z",     // jmsz
+    "HH:mm:ss z",     //   force24
+    "h:mm:ss a z",    //   force12
+
+    "h:mm:ss a",                          // "h:mm:ss" force12
+    "HH:mm:ss",                           //           force24
+    "a'xx'h:mm:ss d MMM y",               // "a'xx'h:mm:ss d MMM y" force12
+    "HH:mm:ss d MMM y",                   //                        force24
+    "EEE, d MMM y 'aha' h:mm:ss a 'hrs'", // "EEE, d MMM y 'aha' h:mm:ss a 'hrs'" force12
+    "EEE, d MMM y 'aha' HH:mm:ss 'hrs'",  //
+    "EEE, d MMM y 'aha' a'xx'h:mm:ss",    // "EEE, d MMM y 'aha' a'xx'h:mm:ss"
+    "EEE, d MMM y 'aha' HH:mm:ss",        //
+    "yyMMddhhmmss",                       // "yyMMddhhmmss" force12
+    "yyMMddHHmmss",                       //
+
+    "h:mm:ss a",                          // "H:mm:ss"
+    "H:mm:ss",                            //
+    "h:mm:ss a d MMM y",                  // "H:mm:ss d MMM y"
+    "H:mm:ss d MMM y",                    //
+    "EEE, d MMM y 'aha' h:mm:ss a 'hrs'", // "EEE, d MMM y 'aha' H:mm:ss 'hrs'"
+    "EEE, d MMM y 'aha' H:mm:ss 'hrs'",   //
+    "EEE, d MMM y 'aha' h'h'mm'm'ss a",   // "EEE, d MMM y 'aha' H'h'mm'm'ss"
+    "EEE, d MMM y 'aha' H'h'mm'm'ss",     //
+
+    "uuuu-MM-dd h:mm:ss a '+0000'",       //
+
+    NULL
+};
+
 typedef struct {
     const char * locale;
     const char ** resultsPtr;
@@ -3044,6 +3308,10 @@ static const RemapPatternLocaleResults remapLocResults[] = {
     { "ar",     remapResults_ar   },
     { "en_IL",  remapResults_en_IL },
     { "es_PR@calendar=japanese",  remapResults_es_PR_japanese },
+    { "en_IN",  remapResults_en_IN },
+    { "en_IN@calendar=japanese",  remapResults_en_IN_japanese },
+    { "en_BE",  remapResults_en_BE },
+    { "en_BE@calendar=japanese",  remapResults_en_BE_japanese },
     { NULL,     NULL }
 };
 
index d9d78b6459f4fc81d6c8debd53a7e82a477abec6..73b73d82f18d071319c2d2b1613d4c550dd41ae3 100644 (file)
@@ -8144,6 +8144,18 @@ static const char * prefLangsMSx[]   = { "en_NZ" };
 static const char * prefLangsMSy[]   = { "en_NZ", "en_AU" };
 static const char * locsToUseMSa[]   = { "en_GB", "en" };
 static const char * locsToUseMSb[]   = { "en_AU", "en_GB", "en" };
+// For <rdar://problem/55885283>
+static const char * appleLocsMT[]   = { "ca-ES", "fi", "nl", "en-US", "hu", "pt-BR", "pl-PL", "it",
+                                        "ru", "el", "el-GR", "ca", "de-DE", "sv-SE", "tr", "pl",
+                                        "sv", "tr-TR", "da", "en", "nb", "pt-PT", "nb-NO",
+                                        "es-ES@collation=traditional", "sl-SI", "cs", "hu-HU",
+                                        "cs-CZ", "sk", "sl", "de", "da-DK", "es-MX", "vi", "nl-NL",
+                                        "es", "fi-FI", "fr", "it-IT", "es-ES", "fr-CA", "vi-VN",
+                                        "pt", "sk-SK", "eu-ES", "ru-RU", "eu", "fr-FR", "unk" };
+static const char * prefLangsMTa[]   = { "en" };
+static const char * prefLangsMTb[]   = { "he" };
+static const char * locsToUseMTa[]   = { "en" };
+static const char * locsToUseMTb[]   = { };
 
 typedef struct {
     const char *  name;
@@ -8233,6 +8245,8 @@ static const MultiPrefTest multiTestSets[] = {
     { "MSay",  appleLocsMSa,  UPRV_LENGTHOF(appleLocsMSa), prefLangsMSy, UPRV_LENGTHOF(prefLangsMSy), locsToUseMSa,    UPRV_LENGTHOF(locsToUseMSa) },
     { "MSbx",  appleLocsMSb,  UPRV_LENGTHOF(appleLocsMSb), prefLangsMSx, UPRV_LENGTHOF(prefLangsMSx), locsToUseMSb,    UPRV_LENGTHOF(locsToUseMSb) },
     { "MSby",  appleLocsMSb,  UPRV_LENGTHOF(appleLocsMSb), prefLangsMSy, UPRV_LENGTHOF(prefLangsMSy), locsToUseMSb,    UPRV_LENGTHOF(locsToUseMSb) },
+    { "MTa",   appleLocsMT,   UPRV_LENGTHOF(appleLocsMT),  prefLangsMTa, UPRV_LENGTHOF(prefLangsMTa), locsToUseMTa,    UPRV_LENGTHOF(locsToUseMTa) },
+    { "MTb",   appleLocsMT,   UPRV_LENGTHOF(appleLocsMT),  prefLangsMTb, UPRV_LENGTHOF(prefLangsMTb), locsToUseMTb,    UPRV_LENGTHOF(locsToUseMTb) },
 
     { NULL, NULL, 0, NULL, 0, NULL, 0 }
 };
index dabab0380e81cd6eb304a4d4687fa0e5e6ac84ea..dbf4123f7c26bfa7373b115f5912cb5dad4d827e 100644 (file)
@@ -169,6 +169,27 @@ static const SingleUnitFormat cs_singFmt[] = {
     { (UAMeasureUnit)0, 0, NULL, NULL, NULL, NULL, NULL, NULL }
 };
 
+static const SingleUnitFormat nl_singFmt[] = {
+//    unit                                 value   wide_2                       wide_0                  shrt_X                   shrt_1                 narr_0        numr_0       wide_0  narr_0
+    { UAMEASUNIT_TEMPERATURE_CELSIUS,      37.203, "37,20 graden Celsius",      "37 graden Celsius",    "37,203\\u00A0\\u00B0C", "37,2\\u00A0\\u00B0C", "37\\u00B0",  "37\\u00B0", 0,2,    0,2 },
+    { UAMEASUNIT_TEMPERATURE_FAHRENHEIT,   37.203, "37,20 graden Fahrenheit",   "37 graden Fahrenheit", "37,203\\u00A0\\u00B0F", "37,2\\u00A0\\u00B0F", "37\\u00B0F", "37\\u00B0", 0,2,    0,2 },
+    { (UAMeasureUnit)0, 0, NULL, NULL, NULL, NULL, NULL, NULL }
+};
+
+static const SingleUnitFormat it_singFmt[] = {
+//    unit                                 value   wide_2                       wide_0                  shrt_X                   shrt_1                 narr_0        numr_0       wide_0  narr_0
+    { UAMEASUNIT_DURATION_HOUR,            37.203, "37,20 ore",                 "37 ore",               "37,203 h",              "37,2 h",                             "37 h",       "37 h",      0,2,    0,2 },
+    { UAMEASUNIT_DURATION_MINUTE,          37.203, "37,20 minuti",              "37 minuti",            "37,203 min",            "37,2 min",            "37 min",     "37 min",    0,2,    0,2 },
+    { (UAMeasureUnit)0, 0, NULL, NULL, NULL, NULL, NULL, NULL }
+};
+
+static const SingleUnitFormat nb_singFmt[] = {
+//    unit                                 value   wide_2                       wide_0                  shrt_X                   shrt_1                 narr_0        numr_0       wide_0  narr_0
+    { UAMEASUNIT_DURATION_HOUR,            37.203, "37,20 timer",               "37 timer",             "37,203 t",              "37,2 t",                             "37 t",       "37 t",      0,2,    0,2 },
+    { UAMEASUNIT_DURATION_MINUTE,          37.203, "37,20 minutter",            "37 minutter",          "37,203 min",            "37,2 min",            "37 m",       "37 m",      0,2,    0,2 },
+    { (UAMeasureUnit)0, 0, NULL, NULL, NULL, NULL, NULL, NULL }
+};
+
 static const SingleUnitName en_singNam[] = {
 //    unit                                 wide                   shrt         narr
     { UAMEASUNIT_DURATION_MINUTE,          "minutes",             "min",       "min"       },
@@ -328,11 +349,11 @@ static const LocaleWidthNumFmtItem lwnItems[] = {
     { "hr",         NULL,            NULL,            NULL,            NULL            }, // hr: try plural cases for 1, 2, 5
     { "hu",         NULL,            NULL,            NULL,            NULL            }, // hu: try plural cases for 1, other
     { "id",         NULL,            NULL,            NULL,            NULL            }, // id: try plural cases for other only
-    { "it",         NULL,            NULL,            NULL,            NULL            }, // it: try plural cases for 1, other
+    { "it",         it_singFmt,      NULL,            NULL,            NULL            }, // it: try plural cases for 1, other
     { "ko",         NULL,            NULL,            NULL,            NULL            }, // ko: try plural cases for other only
     { "ms",         NULL,            NULL,            NULL,            NULL            }, // ms: try plural cases for other only
-    { "nb",         NULL,            NULL,            NULL,            NULL            }, // nb: try plural cases for 1, other
-    { "nl",         NULL,            NULL,            NULL,            NULL            }, // nl: try plural cases for 1, other
+    { "nb",         nb_singFmt,      NULL,            NULL,            NULL            }, // nb: try plural cases for 1, other
+    { "nl",         nl_singFmt,      NULL,            NULL,            NULL            }, // nl: try plural cases for 1, other
     { "pl",         NULL,            NULL,            NULL,            NULL            }, // pl: try plural cases for 1, 2, 5, 8.5
     { "pt",         NULL,            NULL,            NULL,            NULL            }, // pt: try plural cases for 1, other
     { "pt_PT",      NULL,            NULL,            NULL,            NULL            },
index e2979046671cd3b8381c3c9b16ba88b434c601f7..cbf090ede4a852461032a4da3ede0167a1fbd97a 100644 (file)
@@ -88,6 +88,7 @@ static void TestMinimumGrouping(void); // Apple <rdar://problem/49808819>
 static void TestNumberSystemsMultiplier(void); // Apple <rdar://problem/49120648>
 static void TestParseScientific(void); // Apple <rdar://problem/39156484>
 static void TestCurrForUnkRegion(void); // Apple <rdar://problem/51985640>
+static void TestMinIntMinFracZero(void); // Apple <rdar://problem/54569257>
 #if APPLE_ADDITIONS
 static void TestFormatDecPerf(void); // Apple <rdar://problem/51672521>
 #endif
@@ -142,6 +143,7 @@ void addNumForTest(TestNode** root)
     TESTCASE(TestNumberSystemsMultiplier); // Apple <rdar://problem/49120648>
     TESTCASE(TestParseScientific); // Apple <rdar://problem/39156484>
     TESTCASE(TestCurrForUnkRegion); // Apple <rdar://problem/51985640>
+    TESTCASE(TestMinIntMinFracZero); // Apple <rdar://problem/54569257>
 #if APPLE_ADDITIONS
     TESTCASE(TestFormatDecPerf); // Apple <rdar://problem/51672521>
 #endif
@@ -4251,6 +4253,60 @@ static void TestCurrForUnkRegion(void) {
     }
 }
 
+static void TestMinIntMinFracZero(void) {
+    UErrorCode status = U_ZERO_ERROR;
+    UNumberFormat* unum = unum_open(UNUM_DECIMAL, NULL, 0, "en_US", NULL, &status);
+    if ( U_FAILURE(status) ) {
+        log_data_err("unum_open UNUM_DECIMAL for en_US fails with %s\n", u_errorName(status));
+    } else {
+        UChar ubuf[kUBufMax];
+        char  bbuf[kBBufMax];
+        int minInt, minFrac, ulen;
+
+        unum_setAttribute(unum, UNUM_MIN_INTEGER_DIGITS, 0);
+        unum_setAttribute(unum, UNUM_MIN_FRACTION_DIGITS, 0);
+        minInt = unum_getAttribute(unum, UNUM_MIN_INTEGER_DIGITS);
+        minFrac = unum_getAttribute(unum, UNUM_MIN_FRACTION_DIGITS);
+        if (minInt != 0 || minFrac != 0) {
+            log_err("after setting minInt=minFrac=0, get minInt %d, minFrac %d\n", minInt, minFrac);
+        }
+        ulen = unum_toPattern(unum, FALSE, ubuf, kUBufMax, &status);
+        if ( U_SUCCESS(status) ) {
+            u_strToUTF8(bbuf, kBBufMax, NULL, ubuf, ulen, &status);
+            log_info("after setting minInt=minFrac=0, pattern (%d): %s\n", ulen, bbuf);
+        }
+
+        status = U_ZERO_ERROR;
+        ulen = unum_formatDouble(unum, 10.0, ubuf, kUBufMax, NULL, &status);
+        if ( U_FAILURE(status) ) {
+            log_err("unum_formatDouble 10.0 ulen %d fails with %s\n", ulen, u_errorName(status));
+        } else if (u_strcmp(ubuf, u"10") != 0) {
+            u_strToUTF8(bbuf, kBBufMax, NULL, ubuf, ulen, &status);
+            log_err("unum_formatDouble 10.0 expected \"10\", got \"%s\"\n", bbuf);
+        }
+
+        status = U_ZERO_ERROR;
+        ulen = unum_formatDouble(unum, 0.9, ubuf, kUBufMax, NULL, &status);
+        if ( U_FAILURE(status) ) {
+            log_err("unum_formatDouble 0.9 ulen %d fails with %s\n", ulen, u_errorName(status));
+        } else if (u_strcmp(ubuf, u".9") != 0) {
+            u_strToUTF8(bbuf, kBBufMax, NULL, ubuf, ulen, &status);
+            log_err("unum_formatDouble 0.9 expected \".9\", got \"%s\"\n", bbuf);
+        }
+
+        status = U_ZERO_ERROR;
+        ulen = unum_formatDouble(unum, 0.0, ubuf, kUBufMax, NULL, &status);
+        if ( U_FAILURE(status) ) {
+            log_err("unum_formatDouble 0.0 ulen %d fails with %s\n", ulen, u_errorName(status));
+        } else if (u_strcmp(ubuf, u"0") != 0) {
+            u_strToUTF8(bbuf, kBBufMax, NULL, ubuf, ulen, &status);
+            log_err("unum_formatDouble 0.0 expected \"0\", got \"%s\"\n", bbuf);
+        }
+
+        unum_close(unum);
+    }
+}
+
 #if APPLE_ADDITIONS
 #include <stdio.h>
 #if U_PLATFORM_IS_DARWIN_BASED
index ac155ce53132b0d37c43f0c606372d8274fd4ba0..24bde2d37ee9d83bf2ea120fa5aaa3aac4c2c78e 100644 (file)
@@ -657,6 +657,8 @@ static const SampleTextAndEncoding mailSampleTests[] = {
     { "../testdata/encodingSamples/mailExample_Latin1Esc_7.txt", "iso-8859-1" },
     { "../testdata/encodingSamples/mailExample_Latin1Esc_8.txt", "iso-8859-1" },
     { "../testdata/encodingSamples/mailExample_Latin1Esc_9.txt", "iso-8859-1" },
+    // additions for <rdar://problem/56373519>
+    { "../testdata/encodingSamples/mailExample_Latin1_11.txt",  "iso-8859-1" },
     { NULL, NULL }
 };
 
@@ -684,11 +686,12 @@ static void TestMailFilterCSS(void) {
                     } else {
                         const char *icuName = ucsdet_getName(highestMatch, &status);
                         int32_t confidence = ucsdet_getConfidence(highestMatch, &status);
+                        const char *langCode = ucsdet_getLanguage(highestMatch, &status);
                         if (U_FAILURE(status) || icuName==NULL) {
                             log_err("ucsdet_getName and/or ucsdet_getConfidence fails for text file %s: %s\n", testPtr->sampleTextPath, u_errorName(status));
                         } else {
-                            log_info("For text file %s: expect %s; get %s with confidence %d, text length %ld\n",
-                                    testPtr->sampleTextPath, testPtr->encodingName, icuName, confidence, sampleTextLen);
+                            log_info("For text file %s: expect %s; get %s with confidence %d, langCode %s; text length %ld\n",
+                                    testPtr->sampleTextPath, testPtr->encodingName, icuName, confidence, langCode, sampleTextLen);
                         }
                     }
                 }
index e8da7f2d0d86efc4d595d043c6744443553c3a50..069e550017b4a98774184318fff13ec5b95c3f16 100644 (file)
@@ -2285,7 +2285,7 @@ void MeasureFormatTest::TestManyLocaleDurations() {
     helperTestManyLocaleDurations("is", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
     helperTestManyLocaleDurations("ja", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5\\u6642\\u959337\\u5206");
     helperTestManyLocaleDurations("ja", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
-    helperTestManyLocaleDurations("nb", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5t, 37m");
+    helperTestManyLocaleDurations("nb", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5 t, 37 m");
     helperTestManyLocaleDurations("nb", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
     helperTestManyLocaleDurations("nl", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5 u, 37 m");
     helperTestManyLocaleDurations("nl", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
index 8d6fe87fd07e7c1314180c0df30a91c49f0d06d4..f0d941d3c255e3e9d953cbd7face8e8d10b5489d 100644 (file)
@@ -1345,8 +1345,10 @@ void NumberFormatterApiTest::grouping() {
             u"8.765",
             u"0");
 
-    // NOTE: Hungarian is interesting because it has minimumGroupingDigits=4 in locale data
-    // If this test breaks due to data changes, find another locale that has minimumGroupingDigits.
+    // NOTE: Hungarian was interesting because it had minimumGroupingDigits=4 in locale data.
+    // Open source has fixed Hungarian to have minimumGroupingDigits=1 and changed this test to
+    // use Polish with minimumGroupingDigits=2. However for now we keep the test using Hungarian
+    // to verify the change.
     assertFormatDescendingBig(
             u"Hungarian Grouping",
             u"group-auto",
@@ -1354,9 +1356,9 @@ void NumberFormatterApiTest::grouping() {
             Locale("hu"),
             u"87 650 000",
             u"8 765 000",
-            u"876500",
-            u"87650",
-            u"8765",
+            u"876 500",
+            u"87 650",
+            u"8 765",
             u"876,5",
             u"87,65",
             u"8,765",
@@ -1369,8 +1371,8 @@ void NumberFormatterApiTest::grouping() {
             Locale("hu"),
             u"87 650 000",
             u"8 765 000",
-            u"876500",
-            u"87650",
+            u"876 500",
+            u"87 650",
             u"8765",
             u"876,5",
             u"87,65",
index 4ddcfd045b5071a3c9b1680803ef22a6976d071a..579d27bfb7cc27e76a4507d71c9d40fbab526dcb 100644 (file)
@@ -6968,7 +6968,7 @@ void NumberFormatTest::TestExplicitParents() {
     {"es_CO", "1250,75" },
     {"es_ES", "1250,75" },
     {"es_GQ", "1250,75" },
-    {"es_MX", "1250.75" },
+    {"es_MX", "1,250.75" },
     {"es_US", "1250.75" },
     {"es_VE", "1250,75" },
     };