From 4a6ad3dc93f3891a82f02bb5398a80791b9f7d78 Mon Sep 17 00:00:00 2001 From: Peter Edberg Date: Tue, 15 Jun 2021 00:10:06 -0700 Subject: [PATCH] ICU-21581 integrate CLDR release-40-m1 to ICU trunk --- icu4c/source/data/brkitr/LOCALE_DEPS.json | 2 +- icu4c/source/data/brkitr/root.txt | 2 +- icu4c/source/data/coll/LOCALE_DEPS.json | 2 +- icu4c/source/data/coll/af.txt | 2 +- icu4c/source/data/coll/am.txt | 2 +- icu4c/source/data/coll/ar.txt | 4 +- icu4c/source/data/coll/as.txt | 2 +- icu4c/source/data/coll/az.txt | 4 +- icu4c/source/data/coll/be.txt | 2 +- icu4c/source/data/coll/bg.txt | 2 +- icu4c/source/data/coll/bn.txt | 4 +- icu4c/source/data/coll/br.txt | 2 +- icu4c/source/data/coll/bs.txt | 4 +- icu4c/source/data/coll/bs_Cyrl.txt | 2 +- icu4c/source/data/coll/ca.txt | 2 +- icu4c/source/data/coll/ceb.txt | 2 +- icu4c/source/data/coll/chr.txt | 2 +- icu4c/source/data/coll/cs.txt | 2 +- icu4c/source/data/coll/cy.txt | 2 +- icu4c/source/data/coll/da.txt | 4 +- icu4c/source/data/coll/de.txt | 4 +- icu4c/source/data/coll/de_AT.txt | 2 +- icu4c/source/data/coll/dsb.txt | 2 +- icu4c/source/data/coll/ee.txt | 2 +- icu4c/source/data/coll/el.txt | 2 +- icu4c/source/data/coll/en_US_POSIX.txt | 2 +- icu4c/source/data/coll/eo.txt | 2 +- icu4c/source/data/coll/es.txt | 6 +- icu4c/source/data/coll/et.txt | 2 +- icu4c/source/data/coll/fa.txt | 2 +- icu4c/source/data/coll/fa_AF.txt | 2 +- icu4c/source/data/coll/ff_Adlm.txt | 2 +- icu4c/source/data/coll/fi.txt | 6 +- icu4c/source/data/coll/fil.txt | 2 +- icu4c/source/data/coll/fo.txt | 4 +- icu4c/source/data/coll/fr_CA.txt | 2 +- icu4c/source/data/coll/gl.txt | 4 +- icu4c/source/data/coll/gu.txt | 2 +- icu4c/source/data/coll/ha.txt | 2 +- icu4c/source/data/coll/haw.txt | 2 +- icu4c/source/data/coll/he.txt | 4 +- icu4c/source/data/coll/hi.txt | 2 +- icu4c/source/data/coll/hr.txt | 4 +- icu4c/source/data/coll/hsb.txt | 2 +- icu4c/source/data/coll/hu.txt | 2 +- icu4c/source/data/coll/hy.txt | 2 +- icu4c/source/data/coll/ig.txt | 2 +- icu4c/source/data/coll/is.txt | 4 +- icu4c/source/data/coll/ja.txt | 6 +- icu4c/source/data/coll/ka.txt | 2 +- icu4c/source/data/coll/kk.txt | 2 +- icu4c/source/data/coll/kl.txt | 4 +- icu4c/source/data/coll/km.txt | 2 +- icu4c/source/data/coll/kn.txt | 4 +- icu4c/source/data/coll/ko.txt | 8 +- icu4c/source/data/coll/kok.txt | 2 +- icu4c/source/data/coll/ku.txt | 2 +- icu4c/source/data/coll/ky.txt | 2 +- icu4c/source/data/coll/lkt.txt | 2 +- icu4c/source/data/coll/ln.txt | 4 +- icu4c/source/data/coll/lo.txt | 2 +- icu4c/source/data/coll/lt.txt | 2 +- icu4c/source/data/coll/lv.txt | 2 +- icu4c/source/data/coll/mk.txt | 2 +- icu4c/source/data/coll/ml.txt | 2 +- icu4c/source/data/coll/mn.txt | 2 +- icu4c/source/data/coll/mr.txt | 2 +- icu4c/source/data/coll/mt.txt | 2 +- icu4c/source/data/coll/my.txt | 2 +- icu4c/source/data/coll/ne.txt | 2 +- icu4c/source/data/coll/no.txt | 4 +- icu4c/source/data/coll/om.txt | 2 +- icu4c/source/data/coll/or.txt | 2 +- icu4c/source/data/coll/pa.txt | 2 +- icu4c/source/data/coll/pl.txt | 2 +- icu4c/source/data/coll/ps.txt | 2 +- icu4c/source/data/coll/ro.txt | 2 +- icu4c/source/data/coll/root.txt | 12 +- icu4c/source/data/coll/ru.txt | 2 +- icu4c/source/data/coll/se.txt | 4 +- icu4c/source/data/coll/si.txt | 4 +- icu4c/source/data/coll/sk.txt | 4 +- icu4c/source/data/coll/sl.txt | 2 +- icu4c/source/data/coll/smn.txt | 4 +- icu4c/source/data/coll/sq.txt | 2 +- icu4c/source/data/coll/sr.txt | 2 +- icu4c/source/data/coll/sr_Latn.txt | 4 +- icu4c/source/data/coll/sv.txt | 6 +- icu4c/source/data/coll/ta.txt | 2 +- icu4c/source/data/coll/te.txt | 2 +- icu4c/source/data/coll/th.txt | 2 +- icu4c/source/data/coll/tk.txt | 2 +- icu4c/source/data/coll/to.txt | 2 +- icu4c/source/data/coll/tr.txt | 4 +- icu4c/source/data/coll/ug.txt | 2 +- icu4c/source/data/coll/uk.txt | 2 +- icu4c/source/data/coll/ur.txt | 2 +- icu4c/source/data/coll/uz.txt | 2 +- icu4c/source/data/coll/vi.txt | 4 +- icu4c/source/data/coll/wo.txt | 2 +- icu4c/source/data/coll/yi.txt | 4 +- icu4c/source/data/coll/yo.txt | 2 +- icu4c/source/data/coll/zh.txt | 14 +- icu4c/source/data/curr/LOCALE_DEPS.json | 2 +- icu4c/source/data/curr/ast.txt | 2 - icu4c/source/data/curr/be.txt | 1 - icu4c/source/data/curr/bg.txt | 1 - icu4c/source/data/curr/fi.txt | 1 - icu4c/source/data/curr/root.txt | 4 +- icu4c/source/data/curr/sq.txt | 1 - icu4c/source/data/curr/uk.txt | 1 + icu4c/source/data/lang/LOCALE_DEPS.json | 2 +- icu4c/source/data/lang/en.txt | 11 +- icu4c/source/data/lang/en_NZ.txt | 3 - icu4c/source/data/lang/root.txt | 2 +- icu4c/source/data/locales/LOCALE_DEPS.json | 2 +- icu4c/source/data/locales/af.txt | 20 + icu4c/source/data/locales/af_NA.txt | 10 + icu4c/source/data/locales/agq.txt | 20 + icu4c/source/data/locales/ak.txt | 20 + icu4c/source/data/locales/am.txt | 40 + icu4c/source/data/locales/ar.txt | 41 + icu4c/source/data/locales/ar_IL.txt | 10 + icu4c/source/data/locales/ar_KM.txt | 10 + icu4c/source/data/locales/ar_MA.txt | 10 + icu4c/source/data/locales/as.txt | 20 + icu4c/source/data/locales/asa.txt | 20 + icu4c/source/data/locales/ast.txt | 60 + icu4c/source/data/locales/az.txt | 20 + icu4c/source/data/locales/az_Cyrl.txt | 20 + icu4c/source/data/locales/bas.txt | 20 + icu4c/source/data/locales/be.txt | 30 + icu4c/source/data/locales/bem.txt | 20 + icu4c/source/data/locales/bez.txt | 20 + icu4c/source/data/locales/bg.txt | 20 + icu4c/source/data/locales/bm.txt | 20 + icu4c/source/data/locales/bn.txt | 30 + icu4c/source/data/locales/bo.txt | 36 +- icu4c/source/data/locales/bo_IN.txt | 19 + icu4c/source/data/locales/br.txt | 110 ++ icu4c/source/data/locales/brx.txt | 20 + icu4c/source/data/locales/bs.txt | 30 + icu4c/source/data/locales/bs_Cyrl.txt | 40 + icu4c/source/data/locales/ca.txt | 50 + icu4c/source/data/locales/ccp.txt | 20 + icu4c/source/data/locales/ceb.txt | 20 + icu4c/source/data/locales/cgg.txt | 20 + icu4c/source/data/locales/chr.txt | 20 + icu4c/source/data/locales/ckb.txt | 20 + icu4c/source/data/locales/ckb_IR.txt | 20 + icu4c/source/data/locales/cs.txt | 120 ++ icu4c/source/data/locales/cy.txt | 20 + icu4c/source/data/locales/da.txt | 30 + icu4c/source/data/locales/dav.txt | 20 + icu4c/source/data/locales/de.txt | 45 + icu4c/source/data/locales/dje.txt | 20 + icu4c/source/data/locales/doi.txt | 20 + icu4c/source/data/locales/dsb.txt | 20 + icu4c/source/data/locales/dua.txt | 20 + icu4c/source/data/locales/dyo.txt | 20 + icu4c/source/data/locales/dz.txt | 20 + icu4c/source/data/locales/ebu.txt | 20 + icu4c/source/data/locales/ee.txt | 20 + icu4c/source/data/locales/ee_TG.txt | 10 + icu4c/source/data/locales/el.txt | 40 + icu4c/source/data/locales/en.txt | 67 +- icu4c/source/data/locales/en_001.txt | 40 +- icu4c/source/data/locales/en_150.txt | 10 + icu4c/source/data/locales/en_AE.txt | 30 + icu4c/source/data/locales/en_AI.txt | 10 + icu4c/source/data/locales/en_AU.txt | 20 + icu4c/source/data/locales/en_BE.txt | 20 + icu4c/source/data/locales/en_BI.txt | 10 + icu4c/source/data/locales/en_BW.txt | 20 + icu4c/source/data/locales/en_BZ.txt | 20 + icu4c/source/data/locales/en_CA.txt | 10 + icu4c/source/data/locales/en_CC.txt | 10 + icu4c/source/data/locales/en_CK.txt | 10 + icu4c/source/data/locales/en_CM.txt | 10 + icu4c/source/data/locales/en_CX.txt | 10 + icu4c/source/data/locales/en_DG.txt | 10 + icu4c/source/data/locales/en_FI.txt | 10 + icu4c/source/data/locales/en_FK.txt | 10 + icu4c/source/data/locales/en_GB.txt | 10 + icu4c/source/data/locales/en_GG.txt | 10 + icu4c/source/data/locales/en_GI.txt | 10 + icu4c/source/data/locales/en_HK.txt | 20 + icu4c/source/data/locales/en_IE.txt | 10 + icu4c/source/data/locales/en_IL.txt | 10 + icu4c/source/data/locales/en_IM.txt | 10 + icu4c/source/data/locales/en_IN.txt | 83 ++ icu4c/source/data/locales/en_IO.txt | 10 + icu4c/source/data/locales/en_JE.txt | 10 + icu4c/source/data/locales/en_KE.txt | 10 + icu4c/source/data/locales/en_MG.txt | 10 + icu4c/source/data/locales/en_MS.txt | 10 + icu4c/source/data/locales/en_MT.txt | 20 + icu4c/source/data/locales/en_MU.txt | 10 + icu4c/source/data/locales/en_NF.txt | 10 + icu4c/source/data/locales/en_NG.txt | 10 + icu4c/source/data/locales/en_NR.txt | 10 + icu4c/source/data/locales/en_NU.txt | 10 + icu4c/source/data/locales/en_NZ.txt | 20 + icu4c/source/data/locales/en_PK.txt | 20 + icu4c/source/data/locales/en_PN.txt | 10 + icu4c/source/data/locales/en_RW.txt | 10 + icu4c/source/data/locales/en_SC.txt | 10 + icu4c/source/data/locales/en_SE.txt | 10 + icu4c/source/data/locales/en_SG.txt | 20 + icu4c/source/data/locales/en_SH.txt | 10 + icu4c/source/data/locales/en_SX.txt | 10 + icu4c/source/data/locales/en_TK.txt | 10 + icu4c/source/data/locales/en_TV.txt | 10 + icu4c/source/data/locales/en_TZ.txt | 10 + icu4c/source/data/locales/en_UG.txt | 10 + icu4c/source/data/locales/en_ZA.txt | 20 + icu4c/source/data/locales/en_ZW.txt | 20 + icu4c/source/data/locales/eo.txt | 20 + icu4c/source/data/locales/es.txt | 85 +- icu4c/source/data/locales/es_419.txt | 27 +- icu4c/source/data/locales/es_AR.txt | 5 +- icu4c/source/data/locales/es_CL.txt | 20 + icu4c/source/data/locales/es_CO.txt | 22 + icu4c/source/data/locales/es_DO.txt | 20 + icu4c/source/data/locales/es_GT.txt | 20 + icu4c/source/data/locales/es_HN.txt | 20 + icu4c/source/data/locales/es_MX.txt | 12 +- icu4c/source/data/locales/es_PA.txt | 22 +- icu4c/source/data/locales/es_PE.txt | 20 + icu4c/source/data/locales/es_PH.txt | 10 + icu4c/source/data/locales/es_PR.txt | 20 + icu4c/source/data/locales/es_US.txt | 12 +- icu4c/source/data/locales/es_VE.txt | 11 +- icu4c/source/data/locales/et.txt | 20 + icu4c/source/data/locales/eu.txt | 20 + icu4c/source/data/locales/ewo.txt | 20 + icu4c/source/data/locales/fa.txt | 40 + icu4c/source/data/locales/ff.txt | 20 + icu4c/source/data/locales/ff_Adlm_GH.txt | 10 + icu4c/source/data/locales/ff_Adlm_GM.txt | 10 + icu4c/source/data/locales/ff_Adlm_LR.txt | 10 + icu4c/source/data/locales/ff_Adlm_MR.txt | 10 + icu4c/source/data/locales/ff_Adlm_SL.txt | 10 + icu4c/source/data/locales/ff_Latn_GH.txt | 10 + icu4c/source/data/locales/ff_Latn_GM.txt | 10 + icu4c/source/data/locales/ff_Latn_LR.txt | 10 + icu4c/source/data/locales/ff_Latn_MR.txt | 10 + icu4c/source/data/locales/ff_Latn_SL.txt | 10 + icu4c/source/data/locales/fi.txt | 50 + icu4c/source/data/locales/fil.txt | 100 ++ icu4c/source/data/locales/fo.txt | 20 + icu4c/source/data/locales/fr.txt | 91 +- icu4c/source/data/locales/fr_BE.txt | 20 + icu4c/source/data/locales/fr_CA.txt | 10 + icu4c/source/data/locales/fr_CH.txt | 10 + icu4c/source/data/locales/fr_DJ.txt | 10 + icu4c/source/data/locales/fr_DZ.txt | 10 + icu4c/source/data/locales/fr_MR.txt | 10 + icu4c/source/data/locales/fr_SY.txt | 10 + icu4c/source/data/locales/fr_TD.txt | 10 + icu4c/source/data/locales/fr_TN.txt | 10 + icu4c/source/data/locales/fr_VU.txt | 10 + icu4c/source/data/locales/fur.txt | 20 + icu4c/source/data/locales/fy.txt | 90 ++ icu4c/source/data/locales/ga.txt | 30 + icu4c/source/data/locales/gd.txt | 130 ++ icu4c/source/data/locales/gl.txt | 20 + icu4c/source/data/locales/gsw.txt | 30 + icu4c/source/data/locales/gu.txt | 20 + icu4c/source/data/locales/guz.txt | 20 + icu4c/source/data/locales/ha.txt | 20 + icu4c/source/data/locales/ha_GH.txt | 10 + icu4c/source/data/locales/haw.txt | 26 + icu4c/source/data/locales/he.txt | 52 + icu4c/source/data/locales/hi.txt | 30 + icu4c/source/data/locales/hr.txt | 50 + icu4c/source/data/locales/hr_BA.txt | 10 + icu4c/source/data/locales/hsb.txt | 20 + icu4c/source/data/locales/hu.txt | 30 + icu4c/source/data/locales/hy.txt | 20 + icu4c/source/data/locales/ia.txt | 20 + icu4c/source/data/locales/id.txt | 70 + icu4c/source/data/locales/ig.txt | 20 + icu4c/source/data/locales/ii.txt | 18 +- icu4c/source/data/locales/is.txt | 110 ++ icu4c/source/data/locales/it.txt | 40 + icu4c/source/data/locales/it_CH.txt | 10 + icu4c/source/data/locales/ja.txt | 114 +- icu4c/source/data/locales/jgo.txt | 20 + icu4c/source/data/locales/jmc.txt | 20 + icu4c/source/data/locales/jv.txt | 20 + icu4c/source/data/locales/ka.txt | 20 + icu4c/source/data/locales/kab.txt | 20 + icu4c/source/data/locales/kam.txt | 20 + icu4c/source/data/locales/kde.txt | 20 + icu4c/source/data/locales/kea.txt | 20 + icu4c/source/data/locales/khq.txt | 20 + icu4c/source/data/locales/ki.txt | 20 + icu4c/source/data/locales/kk.txt | 20 + icu4c/source/data/locales/kkj.txt | 20 + icu4c/source/data/locales/kl.txt | 10 + icu4c/source/data/locales/kln.txt | 20 + icu4c/source/data/locales/km.txt | 20 + icu4c/source/data/locales/kn.txt | 20 + icu4c/source/data/locales/ko.txt | 40 + icu4c/source/data/locales/kok.txt | 20 + icu4c/source/data/locales/ks.txt | 20 + icu4c/source/data/locales/ksb.txt | 20 + icu4c/source/data/locales/ksf.txt | 20 + icu4c/source/data/locales/ksh.txt | 30 + icu4c/source/data/locales/ky.txt | 20 + icu4c/source/data/locales/lag.txt | 20 + icu4c/source/data/locales/lb.txt | 40 + icu4c/source/data/locales/lg.txt | 20 + icu4c/source/data/locales/lkt.txt | 10 + icu4c/source/data/locales/ln.txt | 20 + icu4c/source/data/locales/lo.txt | 40 + icu4c/source/data/locales/lrc.txt | 20 + icu4c/source/data/locales/lrc_IQ.txt | 10 + icu4c/source/data/locales/lt.txt | 50 + icu4c/source/data/locales/lu.txt | 20 + icu4c/source/data/locales/luo.txt | 20 + icu4c/source/data/locales/luy.txt | 20 + icu4c/source/data/locales/lv.txt | 20 + icu4c/source/data/locales/mai.txt | 20 + icu4c/source/data/locales/mas.txt | 20 + icu4c/source/data/locales/mer.txt | 20 + icu4c/source/data/locales/mfe.txt | 20 + icu4c/source/data/locales/mg.txt | 20 + icu4c/source/data/locales/mgh.txt | 20 + icu4c/source/data/locales/mgo.txt | 20 + icu4c/source/data/locales/mi.txt | 20 + icu4c/source/data/locales/mk.txt | 60 + icu4c/source/data/locales/ml.txt | 20 + icu4c/source/data/locales/mn.txt | 20 + icu4c/source/data/locales/mni.txt | 20 + icu4c/source/data/locales/mr.txt | 20 + icu4c/source/data/locales/ms.txt | 50 + icu4c/source/data/locales/ms_BN.txt | 20 + icu4c/source/data/locales/ms_ID.txt | 30 + icu4c/source/data/locales/mt.txt | 20 + icu4c/source/data/locales/mua.txt | 20 + icu4c/source/data/locales/my.txt | 20 + icu4c/source/data/locales/naq.txt | 20 + icu4c/source/data/locales/nd.txt | 20 + icu4c/source/data/locales/ne.txt | 20 + icu4c/source/data/locales/ne_IN.txt | 10 + icu4c/source/data/locales/nl.txt | 130 ++ icu4c/source/data/locales/nl_BE.txt | 20 + icu4c/source/data/locales/nmg.txt | 20 + icu4c/source/data/locales/nnh.txt | 20 + icu4c/source/data/locales/no.txt | 130 ++ icu4c/source/data/locales/nus.txt | 20 + icu4c/source/data/locales/nyn.txt | 20 + icu4c/source/data/locales/om.txt | 20 + icu4c/source/data/locales/om_KE.txt | 10 + icu4c/source/data/locales/or.txt | 20 + icu4c/source/data/locales/os.txt | 20 + icu4c/source/data/locales/pa.txt | 20 + icu4c/source/data/locales/pa_Arab.txt | 20 + icu4c/source/data/locales/pcm.txt | 20 + icu4c/source/data/locales/pl.txt | 40 + icu4c/source/data/locales/ps.txt | 30 + icu4c/source/data/locales/ps_PK.txt | 10 + icu4c/source/data/locales/pt.txt | 92 +- icu4c/source/data/locales/pt_MO.txt | 10 + icu4c/source/data/locales/pt_PT.txt | 90 +- icu4c/source/data/locales/qu.txt | 20 + icu4c/source/data/locales/rm.txt | 20 + icu4c/source/data/locales/rn.txt | 20 + icu4c/source/data/locales/ro.txt | 30 + icu4c/source/data/locales/rof.txt | 20 + icu4c/source/data/locales/root.txt | 47 +- icu4c/source/data/locales/ru.txt | 30 + icu4c/source/data/locales/rw.txt | 20 + icu4c/source/data/locales/rwk.txt | 20 + icu4c/source/data/locales/sa.txt | 20 + icu4c/source/data/locales/sah.txt | 20 + icu4c/source/data/locales/saq.txt | 20 + icu4c/source/data/locales/sat.txt | 10 + icu4c/source/data/locales/sbp.txt | 20 + icu4c/source/data/locales/sd.txt | 20 + icu4c/source/data/locales/sd_Deva.txt | 20 + icu4c/source/data/locales/se.txt | 10 + icu4c/source/data/locales/se_FI.txt | 10 + icu4c/source/data/locales/seh.txt | 20 + icu4c/source/data/locales/ses.txt | 20 + icu4c/source/data/locales/sg.txt | 20 + icu4c/source/data/locales/shi.txt | 20 + icu4c/source/data/locales/shi_Latn.txt | 20 + icu4c/source/data/locales/si.txt | 20 + icu4c/source/data/locales/sk.txt | 20 + icu4c/source/data/locales/sl.txt | 20 + icu4c/source/data/locales/smn.txt | 20 + icu4c/source/data/locales/sn.txt | 20 + icu4c/source/data/locales/so.txt | 20 + icu4c/source/data/locales/so_KE.txt | 10 + icu4c/source/data/locales/sq.txt | 20 + icu4c/source/data/locales/sq_MK.txt | 10 + icu4c/source/data/locales/sq_XK.txt | 10 + icu4c/source/data/locales/sr.txt | 30 + icu4c/source/data/locales/sr_Latn.txt | 30 + icu4c/source/data/locales/su.txt | 20 + icu4c/source/data/locales/sv.txt | 40 + icu4c/source/data/locales/sw.txt | 20 + icu4c/source/data/locales/ta.txt | 30 + icu4c/source/data/locales/ta_LK.txt | 10 + icu4c/source/data/locales/te.txt | 20 + icu4c/source/data/locales/teo.txt | 20 + icu4c/source/data/locales/tg.txt | 40 + icu4c/source/data/locales/th.txt | 90 ++ icu4c/source/data/locales/ti.txt | 20 + icu4c/source/data/locales/ti_ER.txt | 10 + icu4c/source/data/locales/tk.txt | 20 + icu4c/source/data/locales/to.txt | 20 + icu4c/source/data/locales/tr.txt | 30 + icu4c/source/data/locales/tr_CY.txt | 10 + icu4c/source/data/locales/tt.txt | 20 + icu4c/source/data/locales/twq.txt | 20 + icu4c/source/data/locales/tzm.txt | 20 + icu4c/source/data/locales/ug.txt | 90 +- icu4c/source/data/locales/uk.txt | 20 + icu4c/source/data/locales/ur.txt | 20 + icu4c/source/data/locales/uz.txt | 20 + icu4c/source/data/locales/uz_Cyrl.txt | 20 + icu4c/source/data/locales/vai.txt | 20 + icu4c/source/data/locales/vai_Latn.txt | 20 + icu4c/source/data/locales/vi.txt | 67 +- icu4c/source/data/locales/vun.txt | 20 + icu4c/source/data/locales/wae.txt | 20 + icu4c/source/data/locales/wo.txt | 20 + icu4c/source/data/locales/xh.txt | 10 + icu4c/source/data/locales/xog.txt | 20 + icu4c/source/data/locales/yav.txt | 20 + icu4c/source/data/locales/yi.txt | 32 + icu4c/source/data/locales/yo.txt | 20 + icu4c/source/data/locales/yue.txt | 99 ++ icu4c/source/data/locales/yue_Hans.txt | 171 ++- icu4c/source/data/locales/zgh.txt | 20 + icu4c/source/data/locales/zh.txt | 219 ++- icu4c/source/data/locales/zh_Hans_HK.txt | 79 ++ icu4c/source/data/locales/zh_Hans_MO.txt | 59 + icu4c/source/data/locales/zh_Hans_SG.txt | 79 ++ icu4c/source/data/locales/zh_Hant.txt | 549 +++++--- icu4c/source/data/locales/zh_Hant_HK.txt | 312 +++++ icu4c/source/data/locales/zu.txt | 20 + .../source/data/misc/grammaticalFeatures.txt | 155 ++- icu4c/source/data/misc/icuver.txt | 2 +- icu4c/source/data/misc/langInfo.txt | 1238 +++++++++-------- icu4c/source/data/misc/likelySubtags.txt | 13 +- icu4c/source/data/misc/metaZones.txt | 41 +- icu4c/source/data/misc/metadata.txt | 8 + icu4c/source/data/misc/plurals.txt | 5 + icu4c/source/data/misc/supplementalData.txt | 40 +- icu4c/source/data/misc/units.txt | 2 +- icu4c/source/data/misc/windowsZones.txt | 5 +- icu4c/source/data/rbnf/LOCALE_DEPS.json | 2 +- icu4c/source/data/rbnf/root.txt | 2 +- icu4c/source/data/region/LOCALE_DEPS.json | 2 +- icu4c/source/data/region/root.txt | 2 +- icu4c/source/data/translit/tk_Cyrl_tk_BGN.txt | 8 +- icu4c/source/data/unit/LOCALE_DEPS.json | 2 +- icu4c/source/data/unit/en.txt | 30 + icu4c/source/data/unit/pl.txt | 287 ---- icu4c/source/data/unit/root.txt | 10 +- icu4c/source/data/unit/ru.txt | 237 ---- icu4c/source/data/zone/LOCALE_DEPS.json | 2 +- icu4c/source/data/zone/en.txt | 3 + icu4c/source/data/zone/root.txt | 2 +- icu4c/source/i18n/measunit.cpp | 100 +- icu4c/source/i18n/unicode/measunit.h | 36 + icu4c/source/test/cintltst/creststn.c | 2 +- icu4c/source/test/cintltst/udatpg_test.c | 4 +- icu4c/source/test/intltest/dtifmtts.cpp | 14 +- icu4c/source/test/intltest/dtptngts.cpp | 28 +- icu4c/source/test/intltest/measfmttest.cpp | 383 +++++ icu4c/source/test/intltest/numbertest_api.cpp | 18 +- icu4c/source/test/testdata/root.txt | 4 +- icu4c/source/test/testdata/structLocale.txt | 186 +++ .../src/com/ibm/icu/util/MeasureUnit.java | 12 + icu4j/main/shared/data/icudata.jar | 4 +- icu4j/main/shared/data/icutzdata.jar | 4 +- icu4j/main/shared/data/testdata.jar | 4 +- .../test/format/CompactDecimalFormatTest.java | 2 +- .../test/format/DateIntervalFormatTest.java | 14 +- .../test/format/DateTimeGeneratorTest.java | 28 +- .../icu/dev/test/format/MeasureUnitTest.java | 206 ++- .../test/number/NumberFormatterApiTest.java | 19 +- tools/cldr/cldr-to-icu/build-icu-data.xml | 1 + .../src/main/resources/ldml2icu_locale.txt | 26 + 490 files changed, 11052 insertions(+), 1893 deletions(-) diff --git a/icu4c/source/data/brkitr/LOCALE_DEPS.json b/icu4c/source/data/brkitr/LOCALE_DEPS.json index 8b33eb08060..d3d8df56213 100644 --- a/icu4c/source/data/brkitr/LOCALE_DEPS.json +++ b/icu4c/source/data/brkitr/LOCALE_DEPS.json @@ -3,5 +3,5 @@ // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml { - "cldrVersion": "39" + "cldrVersion": "40" } diff --git a/icu4c/source/data/brkitr/root.txt b/icu4c/source/data/brkitr/root.txt index 114c5e780a0..59b708bbb50 100644 --- a/icu4c/source/data/brkitr/root.txt +++ b/icu4c/source/data/brkitr/root.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml root{ - Version{"39"} + Version{"40"} boundaries{ grapheme:process(dependency){"char.brk"} line:process(dependency){"line.brk"} diff --git a/icu4c/source/data/coll/LOCALE_DEPS.json b/icu4c/source/data/coll/LOCALE_DEPS.json index ce2e4768f04..80aa96e2f3c 100644 --- a/icu4c/source/data/coll/LOCALE_DEPS.json +++ b/icu4c/source/data/coll/LOCALE_DEPS.json @@ -3,7 +3,7 @@ // Generated using tools/cldr/cldr-to-icu/build-icu-data.xml { - "cldrVersion": "39", + "cldrVersion": "40", "aliases": { "ars": "ar_SA", "in": "id", diff --git a/icu4c/source/data/coll/af.txt b/icu4c/source/data/coll/af.txt index 32b62e44a3f..987116312d1 100644 --- a/icu4c/source/data/coll/af.txt +++ b/icu4c/source/data/coll/af.txt @@ -5,7 +5,7 @@ af{ collations{ standard{ Sequence{"&N<<<ʼn"} - Version{"39"} + Version{"40"} } } } diff --git a/icu4c/source/data/coll/am.txt b/icu4c/source/data/coll/am.txt index bfc5fba3789..33a738fdb9c 100644 --- a/icu4c/source/data/coll/am.txt +++ b/icu4c/source/data/coll/am.txt @@ -5,7 +5,7 @@ am{ collations{ standard{ Sequence{"[reorder Ethi]"} - Version{"39"} + Version{"40"} } } } diff --git a/icu4c/source/data/coll/ar.txt b/icu4c/source/data/coll/ar.txt index efe8a4dbf62..300f70c8689 100644 --- a/icu4c/source/data/coll/ar.txt +++ b/icu4c/source/data/coll/ar.txt @@ -9,7 +9,7 @@ ar{ "&ت<<ة<<<ﺔ<<<ﺓ" "&ي<<ى<<<ﯨ<<<ﯩ<<<ﻰ<<<ﻯ<<<ﲐ<<<ﱝ" } - Version{"39"} + Version{"40"} } standard{ Sequence{ @@ -397,7 +397,7 @@ ar{ "‎&ۓ‎=ﮰ‎=ﮱ" "‎&ۀ‎=ﮤ‎=ﮥ" } - Version{"39"} + Version{"40"} } } } diff --git a/icu4c/source/data/coll/as.txt b/icu4c/source/data/coll/as.txt index bd3970ee622..149131da669 100644 --- a/icu4c/source/data/coll/as.txt +++ b/icu4c/source/data/coll/as.txt @@ -11,7 +11,7 @@ as{ "&[before 1]ত<ৎ=ত্\u200D" "&হ<ক্ষ" } - Version{"39"} + Version{"40"} } } } diff --git a/icu4c/source/data/coll/az.txt b/icu4c/source/data/coll/az.txt index 01723f81334..59e8254b329 100644 --- a/icu4c/source/data/coll/az.txt +++ b/icu4c/source/data/coll/az.txt @@ -9,7 +9,7 @@ az{ "[import az-u-co-standard]" "[reorder others]" } - Version{"39"} + Version{"40"} } standard{ Sequence{ @@ -26,7 +26,7 @@ az{ "&Hexpected != actual) { - log_err("ERROR dtpgen locale %s udatpg_getDefaultHourCycle expecte to get %d but get %d\n", + log_err("ERROR dtpgen locale %s udatpg_getDefaultHourCycle expected to get %d but get %d\n", testDataPtr->locale, testDataPtr->expected, actual); } udatpg_close(dtpgen); diff --git a/icu4c/source/test/intltest/dtifmtts.cpp b/icu4c/source/test/intltest/dtifmtts.cpp index 5b2d8127bd6..f499e503441 100644 --- a/icu4c/source/test/intltest/dtifmtts.cpp +++ b/icu4c/source/test/intltest/dtifmtts.cpp @@ -1154,8 +1154,8 @@ void DateIntervalFormatTest::testHourMetacharacters() { "zh_HK", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jj", "\\u4E0A\\u534812\\u6642\\u81F31\\u6642", "zh_HK", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "hB", "\\u4E0A\\u534810\\u6642 \\u2013 \\u4E0B\\u53481\\u6642", "zh_HK", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "hB", "\\u51CC\\u666812\\u20131\\u6642", - "zh_HK", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "\\u4E0A\\u534810\\u6642 \\u2013 \\u4E0B\\u53481\\u6642", - "zh_HK", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "\\u51CC\\u666812\\u20131\\u6642", + "zh_HK", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "\\u4E0A\\u534810\\u6642\\u81F3\\u4E0B\\u53481\\u6642", + "zh_HK", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "\\u4E0A\\u534812\\u6642\\u81F31\\u6642", "hi_IN", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jj", "10 am \\u2013 1 pm", "hi_IN", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jj", "12\\u20131 am", "hi_IN", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "hB", "\\u0938\\u0941\\u092C\\u0939 10 \\u2013 \\u0926\\u094B\\u092A\\u0939\\u0930 1", @@ -2216,7 +2216,7 @@ void DateIntervalFormatTest::testTicket21222GregorianEraDiff() { formatted = g->formatToValue(BCtoAD, status); assertEquals("Gregorian - BC to AD", - u"4 5, 123 BC, 6 AM \u2013 4 5, 124 AD, 6 AM", + u"4/5/123 B, 6 AM \u2013 4/5/124 A, 6 AM", formatted.toString(status)); } @@ -2264,20 +2264,20 @@ void DateIntervalFormatTest::testTicket21222ROCEraDiff() { formatted = roc->formatToValue(bothAfterMG, status); assertEquals("roc calendar - both dates in MG Era", - u"民國1/1/2 6 上午 – 民國2/1/2 6 上午", + u"民國1/1/2 上午6時 – 民國2/1/2 上午6時", formatted.toString(status)); getCategoryAndField(formatted, expectedCategory, expectedField, status); formatted = roc->formatToValue(beforeAfterMG, status); assertEquals("roc calendar - prior MG Era and in MG Era", - u"民國前1年1月2日 6 上午 – 民國2年1月2日 6 上午", + u"民國前1年1月2日 上午6時 – 民國2年1月2日 上午6時", formatted.toString(status)); verifyCategoryAndField(formatted, expectedCategory, expectedField, status); formatted = roc->formatToValue(bothBeforeMG, status); assertEquals("roc calendar - both dates prior MG Era", - u"民國前2/1/2 6 上午 – 民國前1/1/2 6 上午", + u"民國前2/1/2 上午6時 – 民國前1/1/2 上午6時", formatted.toString(status)); verifyCategoryAndField(formatted, expectedCategory, expectedField, status); } @@ -2340,7 +2340,7 @@ void DateIntervalFormatTest::testTicket21222JapaneseEraDiff() { formatted = japanese->formatToValue(beforeAfterReiwa, status); assertEquals("japanese calendar - date before and in Reiwa", - u"平成31年3月2日 午前6時~令和元年5月4日 午前6時", + u"H31/3/2 午前6時~R1/5/4 午前6時", formatted.toString(status)); verifyCategoryAndField(formatted, expectedCategory, expectedField, status); } diff --git a/icu4c/source/test/intltest/dtptngts.cpp b/icu4c/source/test/intltest/dtptngts.cpp index faa850aa838..9104aa7035b 100644 --- a/icu4c/source/test/intltest/dtptngts.cpp +++ b/icu4c/source/test/intltest/dtptngts.cpp @@ -252,13 +252,13 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) CharsToUnicodeString("1999\\u5E74\\u7B2C1\\u5B63\\u5EA6"), // 07: yQQQ CharsToUnicodeString("\\u4E0B\\u534811:58"), // 08: hhmm UnicodeString("23:58"), // 09: HHmm - CharsToUnicodeString("\\u4E0B\\u534811:58"), // 10: jjmm + CharsToUnicodeString("23:58"), // 10: jjmm UnicodeString("58:59"), // 11: mmss CharsToUnicodeString("1999\\u5E741\\u6708"), // 12: yyyyMMMM -> yyyy\u5E74MMM CharsToUnicodeString("1\\u670813\\u65E5\\u5468\\u4E09"), // 13: MMMEd -> MMMd\u65E5EEE CharsToUnicodeString("13\\u65E5\\u5468\\u4E09"), // 14: Ed -> d\u65E5EEE - CharsToUnicodeString("\\u4E0B\\u534811:58:59.123"), // 15: jmmssSSS -> "ah:mm:ss.SSS" - UnicodeString("11:58"), // 16: JJmm + CharsToUnicodeString("23:58:59.123"), // 15: jmmssSSS -> "ah:mm:ss.SSS" + UnicodeString("23:58"), // 16: JJmm }; UnicodeString patternResults_zh_TW_roc[] = { @@ -315,13 +315,13 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) CharsToUnicodeString("1998\\u620A\\u5BC5\\u5E74\\u7b2c\\u56db\\u5B63\\u5EA6"), // 07: yQQQ CharsToUnicodeString("\\u4E0B\\u534811:58"), // 08: hhmm UnicodeString("23:58"), // 09: HHmm - CharsToUnicodeString("\\u4E0B\\u534811:58"), // 10: jjmm + CharsToUnicodeString("23:58"), // 10: jjmm UnicodeString("58:59"), // 11: mmss CharsToUnicodeString("1998\\u620A\\u5BC5\\u5E74\\u5341\\u4E00\\u6708"), // 12: yyyyMMMM CharsToUnicodeString("\\u5341\\u4E00\\u670826\\u65E5\\u5468\\u4E09"), // 13: MMMEd CharsToUnicodeString("26\\u65E5\\u5468\\u4E09"), // 14: Ed -> d\u65E5EEE - CharsToUnicodeString("\\u4E0B\\u534811:58:59.123"), // 15: jmmssSS - UnicodeString("11:58"), // 16: JJmm + CharsToUnicodeString("23:58:59.123"), // 15: jmmssSS + UnicodeString("23:58"), // 16: JJmm }; UnicodeString patternResults_ja_jp_traditional[] = { @@ -949,8 +949,8 @@ void IntlTestDateTimePatternGeneratorAPI::testOptions(/*char *par*/) { "en@calendar=chinese", "Gy", "r(U)", UDATPG_MATCH_NO_OPTIONS }, { "en@calendar=chinese", "GU", "r(U)", UDATPG_MATCH_NO_OPTIONS }, { "en@calendar=chinese", "ULLL", "MMM U", UDATPG_MATCH_NO_OPTIONS }, - { "en@calendar=chinese", "yMMM", "MMM r(U)", UDATPG_MATCH_NO_OPTIONS }, - { "en@calendar=chinese", "GUMMM", "MMM r(U)", UDATPG_MATCH_NO_OPTIONS }, + { "en@calendar=chinese", "yMMM", "MMM r", UDATPG_MATCH_NO_OPTIONS }, + { "en@calendar=chinese", "GUMMM", "MMM r", UDATPG_MATCH_NO_OPTIONS }, { "zh@calendar=chinese", "yyyy", "rU\\u5E74", UDATPG_MATCH_NO_OPTIONS }, { "zh@calendar=chinese", "YYYY", "YY\\u5E74", UDATPG_MATCH_NO_OPTIONS }, // not a good result, may want r(Y) or r(U) { "zh@calendar=chinese", "U", "rU\\u5E74", UDATPG_MATCH_NO_OPTIONS }, @@ -1159,12 +1159,12 @@ void IntlTestDateTimePatternGeneratorAPI::testStaticGetSkeleton(/*char *par*/) void IntlTestDateTimePatternGeneratorAPI::testC() { const char* tests[][3] = { // These may change with actual data for Bhmm/bhmm skeletons - {"zh", "Cm", "Bh:mm"}, - {"zh", "CCm", "Bhh:mm"}, - {"zh", "CCCm", "BBBBh:mm"}, - {"zh", "CCCCm", "BBBBhh:mm"}, - {"zh", "CCCCCm", "BBBBBh:mm"}, - {"zh", "CCCCCCm", "BBBBBhh:mm"}, + {"zh-TW", "Cm", "Bh:mm"}, + {"zh-TW", "CCm", "Bhh:mm"}, + {"zh-TW", "CCCm", "BBBBh:mm"}, + {"zh-TW", "CCCCm", "BBBBhh:mm"}, + {"zh-TW", "CCCCCm", "BBBBBh:mm"}, + {"zh-TW", "CCCCCCm", "BBBBBhh:mm"}, {"de", "Cm", "HH:mm"}, {"de", "CCm", "HH:mm"}, {"de", "CCCm", "HH:mm"}, diff --git a/icu4c/source/test/intltest/measfmttest.cpp b/icu4c/source/test/intltest/measfmttest.cpp index 900cc136514..b60a341090a 100644 --- a/icu4c/source/test/intltest/measfmttest.cpp +++ b/icu4c/source/test/intltest/measfmttest.cpp @@ -58,6 +58,7 @@ private: void TestCompatible65(); void TestCompatible68(); void TestCompatible69(); + void TestCompatible70(); void TestGetAvailable(); void TestExamplesInDocs(); void TestFormatPeriodEn(); @@ -191,6 +192,7 @@ void MeasureFormatTest::runIndexedTest( TESTCASE_AUTO(TestCompatible65); TESTCASE_AUTO(TestCompatible68); TESTCASE_AUTO(TestCompatible69); + TESTCASE_AUTO(TestCompatible70); TESTCASE_AUTO(TestGetAvailable); TESTCASE_AUTO(TestExamplesInDocs); TESTCASE_AUTO(TestFormatPeriodEn); @@ -2681,6 +2683,387 @@ void MeasureFormatTest::TestCompatible69() { assertSuccess("", status); } +void MeasureFormatTest::TestCompatible70() { + UErrorCode status = U_ZERO_ERROR; + LocalPointer measureUnit; + MeasureUnit measureUnitValue; + measureUnit.adoptInstead(MeasureUnit::createGForce(status)); + measureUnitValue = MeasureUnit::getGForce(); + measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status)); + measureUnitValue = MeasureUnit::getMeterPerSecondSquared(); + measureUnit.adoptInstead(MeasureUnit::createArcMinute(status)); + measureUnitValue = MeasureUnit::getArcMinute(); + measureUnit.adoptInstead(MeasureUnit::createArcSecond(status)); + measureUnitValue = MeasureUnit::getArcSecond(); + measureUnit.adoptInstead(MeasureUnit::createDegree(status)); + measureUnitValue = MeasureUnit::getDegree(); + measureUnit.adoptInstead(MeasureUnit::createRadian(status)); + measureUnitValue = MeasureUnit::getRadian(); + measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status)); + measureUnitValue = MeasureUnit::getRevolutionAngle(); + measureUnit.adoptInstead(MeasureUnit::createAcre(status)); + measureUnitValue = MeasureUnit::getAcre(); + measureUnit.adoptInstead(MeasureUnit::createDunam(status)); + measureUnitValue = MeasureUnit::getDunam(); + measureUnit.adoptInstead(MeasureUnit::createHectare(status)); + measureUnitValue = MeasureUnit::getHectare(); + measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status)); + measureUnitValue = MeasureUnit::getSquareCentimeter(); + measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status)); + measureUnitValue = MeasureUnit::getSquareFoot(); + measureUnit.adoptInstead(MeasureUnit::createSquareInch(status)); + measureUnitValue = MeasureUnit::getSquareInch(); + measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status)); + measureUnitValue = MeasureUnit::getSquareKilometer(); + measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status)); + measureUnitValue = MeasureUnit::getSquareMeter(); + measureUnit.adoptInstead(MeasureUnit::createSquareMile(status)); + measureUnitValue = MeasureUnit::getSquareMile(); + measureUnit.adoptInstead(MeasureUnit::createSquareYard(status)); + measureUnitValue = MeasureUnit::getSquareYard(); + measureUnit.adoptInstead(MeasureUnit::createItem(status)); + measureUnitValue = MeasureUnit::getItem(); + measureUnit.adoptInstead(MeasureUnit::createKarat(status)); + measureUnitValue = MeasureUnit::getKarat(); + measureUnit.adoptInstead(MeasureUnit::createMilligramOfglucosePerDeciliter(status)); + measureUnitValue = MeasureUnit::getMilligramOfglucosePerDeciliter(); + measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status)); + measureUnitValue = MeasureUnit::getMilligramPerDeciliter(); + measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status)); + measureUnitValue = MeasureUnit::getMillimolePerLiter(); + measureUnit.adoptInstead(MeasureUnit::createMole(status)); + measureUnitValue = MeasureUnit::getMole(); + measureUnit.adoptInstead(MeasureUnit::createPercent(status)); + measureUnitValue = MeasureUnit::getPercent(); + measureUnit.adoptInstead(MeasureUnit::createPermille(status)); + measureUnitValue = MeasureUnit::getPermille(); + measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status)); + measureUnitValue = MeasureUnit::getPartPerMillion(); + measureUnit.adoptInstead(MeasureUnit::createPermyriad(status)); + measureUnitValue = MeasureUnit::getPermyriad(); + measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status)); + measureUnitValue = MeasureUnit::getLiterPer100Kilometers(); + measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status)); + measureUnitValue = MeasureUnit::getLiterPerKilometer(); + measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status)); + measureUnitValue = MeasureUnit::getMilePerGallon(); + measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status)); + measureUnitValue = MeasureUnit::getMilePerGallonImperial(); + measureUnit.adoptInstead(MeasureUnit::createBit(status)); + measureUnitValue = MeasureUnit::getBit(); + measureUnit.adoptInstead(MeasureUnit::createByte(status)); + measureUnitValue = MeasureUnit::getByte(); + measureUnit.adoptInstead(MeasureUnit::createGigabit(status)); + measureUnitValue = MeasureUnit::getGigabit(); + measureUnit.adoptInstead(MeasureUnit::createGigabyte(status)); + measureUnitValue = MeasureUnit::getGigabyte(); + measureUnit.adoptInstead(MeasureUnit::createKilobit(status)); + measureUnitValue = MeasureUnit::getKilobit(); + measureUnit.adoptInstead(MeasureUnit::createKilobyte(status)); + measureUnitValue = MeasureUnit::getKilobyte(); + measureUnit.adoptInstead(MeasureUnit::createMegabit(status)); + measureUnitValue = MeasureUnit::getMegabit(); + measureUnit.adoptInstead(MeasureUnit::createMegabyte(status)); + measureUnitValue = MeasureUnit::getMegabyte(); + measureUnit.adoptInstead(MeasureUnit::createPetabyte(status)); + measureUnitValue = MeasureUnit::getPetabyte(); + measureUnit.adoptInstead(MeasureUnit::createTerabit(status)); + measureUnitValue = MeasureUnit::getTerabit(); + measureUnit.adoptInstead(MeasureUnit::createTerabyte(status)); + measureUnitValue = MeasureUnit::getTerabyte(); + measureUnit.adoptInstead(MeasureUnit::createCentury(status)); + measureUnitValue = MeasureUnit::getCentury(); + measureUnit.adoptInstead(MeasureUnit::createDay(status)); + measureUnitValue = MeasureUnit::getDay(); + measureUnit.adoptInstead(MeasureUnit::createDayPerson(status)); + measureUnitValue = MeasureUnit::getDayPerson(); + measureUnit.adoptInstead(MeasureUnit::createDecade(status)); + measureUnitValue = MeasureUnit::getDecade(); + measureUnit.adoptInstead(MeasureUnit::createHour(status)); + measureUnitValue = MeasureUnit::getHour(); + measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status)); + measureUnitValue = MeasureUnit::getMicrosecond(); + measureUnit.adoptInstead(MeasureUnit::createMillisecond(status)); + measureUnitValue = MeasureUnit::getMillisecond(); + measureUnit.adoptInstead(MeasureUnit::createMinute(status)); + measureUnitValue = MeasureUnit::getMinute(); + measureUnit.adoptInstead(MeasureUnit::createMonth(status)); + measureUnitValue = MeasureUnit::getMonth(); + measureUnit.adoptInstead(MeasureUnit::createMonthPerson(status)); + measureUnitValue = MeasureUnit::getMonthPerson(); + measureUnit.adoptInstead(MeasureUnit::createNanosecond(status)); + measureUnitValue = MeasureUnit::getNanosecond(); + measureUnit.adoptInstead(MeasureUnit::createSecond(status)); + measureUnitValue = MeasureUnit::getSecond(); + measureUnit.adoptInstead(MeasureUnit::createWeek(status)); + measureUnitValue = MeasureUnit::getWeek(); + measureUnit.adoptInstead(MeasureUnit::createWeekPerson(status)); + measureUnitValue = MeasureUnit::getWeekPerson(); + measureUnit.adoptInstead(MeasureUnit::createYear(status)); + measureUnitValue = MeasureUnit::getYear(); + measureUnit.adoptInstead(MeasureUnit::createYearPerson(status)); + measureUnitValue = MeasureUnit::getYearPerson(); + measureUnit.adoptInstead(MeasureUnit::createAmpere(status)); + measureUnitValue = MeasureUnit::getAmpere(); + measureUnit.adoptInstead(MeasureUnit::createMilliampere(status)); + measureUnitValue = MeasureUnit::getMilliampere(); + measureUnit.adoptInstead(MeasureUnit::createOhm(status)); + measureUnitValue = MeasureUnit::getOhm(); + measureUnit.adoptInstead(MeasureUnit::createVolt(status)); + measureUnitValue = MeasureUnit::getVolt(); + measureUnit.adoptInstead(MeasureUnit::createBritishThermalUnit(status)); + measureUnitValue = MeasureUnit::getBritishThermalUnit(); + measureUnit.adoptInstead(MeasureUnit::createCalorie(status)); + measureUnitValue = MeasureUnit::getCalorie(); + measureUnit.adoptInstead(MeasureUnit::createElectronvolt(status)); + measureUnitValue = MeasureUnit::getElectronvolt(); + measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status)); + measureUnitValue = MeasureUnit::getFoodcalorie(); + measureUnit.adoptInstead(MeasureUnit::createJoule(status)); + measureUnitValue = MeasureUnit::getJoule(); + measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status)); + measureUnitValue = MeasureUnit::getKilocalorie(); + measureUnit.adoptInstead(MeasureUnit::createKilojoule(status)); + measureUnitValue = MeasureUnit::getKilojoule(); + measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status)); + measureUnitValue = MeasureUnit::getKilowattHour(); + measureUnit.adoptInstead(MeasureUnit::createThermUs(status)); + measureUnitValue = MeasureUnit::getThermUs(); + measureUnit.adoptInstead(MeasureUnit::createKilowattHourPer100Kilometer(status)); + measureUnitValue = MeasureUnit::getKilowattHourPer100Kilometer(); + measureUnit.adoptInstead(MeasureUnit::createNewton(status)); + measureUnitValue = MeasureUnit::getNewton(); + measureUnit.adoptInstead(MeasureUnit::createPoundForce(status)); + measureUnitValue = MeasureUnit::getPoundForce(); + measureUnit.adoptInstead(MeasureUnit::createGigahertz(status)); + measureUnitValue = MeasureUnit::getGigahertz(); + measureUnit.adoptInstead(MeasureUnit::createHertz(status)); + measureUnitValue = MeasureUnit::getHertz(); + measureUnit.adoptInstead(MeasureUnit::createKilohertz(status)); + measureUnitValue = MeasureUnit::getKilohertz(); + measureUnit.adoptInstead(MeasureUnit::createMegahertz(status)); + measureUnitValue = MeasureUnit::getMegahertz(); + measureUnit.adoptInstead(MeasureUnit::createDot(status)); + measureUnitValue = MeasureUnit::getDot(); + measureUnit.adoptInstead(MeasureUnit::createDotPerCentimeter(status)); + measureUnitValue = MeasureUnit::getDotPerCentimeter(); + measureUnit.adoptInstead(MeasureUnit::createDotPerInch(status)); + measureUnitValue = MeasureUnit::getDotPerInch(); + measureUnit.adoptInstead(MeasureUnit::createEm(status)); + measureUnitValue = MeasureUnit::getEm(); + measureUnit.adoptInstead(MeasureUnit::createMegapixel(status)); + measureUnitValue = MeasureUnit::getMegapixel(); + measureUnit.adoptInstead(MeasureUnit::createPixel(status)); + measureUnitValue = MeasureUnit::getPixel(); + measureUnit.adoptInstead(MeasureUnit::createPixelPerCentimeter(status)); + measureUnitValue = MeasureUnit::getPixelPerCentimeter(); + measureUnit.adoptInstead(MeasureUnit::createPixelPerInch(status)); + measureUnitValue = MeasureUnit::getPixelPerInch(); + measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status)); + measureUnitValue = MeasureUnit::getAstronomicalUnit(); + measureUnit.adoptInstead(MeasureUnit::createCentimeter(status)); + measureUnitValue = MeasureUnit::getCentimeter(); + measureUnit.adoptInstead(MeasureUnit::createDecimeter(status)); + measureUnitValue = MeasureUnit::getDecimeter(); + measureUnit.adoptInstead(MeasureUnit::createEarthRadius(status)); + measureUnitValue = MeasureUnit::getEarthRadius(); + measureUnit.adoptInstead(MeasureUnit::createFathom(status)); + measureUnitValue = MeasureUnit::getFathom(); + measureUnit.adoptInstead(MeasureUnit::createFoot(status)); + measureUnitValue = MeasureUnit::getFoot(); + measureUnit.adoptInstead(MeasureUnit::createFurlong(status)); + measureUnitValue = MeasureUnit::getFurlong(); + measureUnit.adoptInstead(MeasureUnit::createInch(status)); + measureUnitValue = MeasureUnit::getInch(); + measureUnit.adoptInstead(MeasureUnit::createKilometer(status)); + measureUnitValue = MeasureUnit::getKilometer(); + measureUnit.adoptInstead(MeasureUnit::createLightYear(status)); + measureUnitValue = MeasureUnit::getLightYear(); + measureUnit.adoptInstead(MeasureUnit::createMeter(status)); + measureUnitValue = MeasureUnit::getMeter(); + measureUnit.adoptInstead(MeasureUnit::createMicrometer(status)); + measureUnitValue = MeasureUnit::getMicrometer(); + measureUnit.adoptInstead(MeasureUnit::createMile(status)); + measureUnitValue = MeasureUnit::getMile(); + measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status)); + measureUnitValue = MeasureUnit::getMileScandinavian(); + measureUnit.adoptInstead(MeasureUnit::createMillimeter(status)); + measureUnitValue = MeasureUnit::getMillimeter(); + measureUnit.adoptInstead(MeasureUnit::createNanometer(status)); + measureUnitValue = MeasureUnit::getNanometer(); + measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status)); + measureUnitValue = MeasureUnit::getNauticalMile(); + measureUnit.adoptInstead(MeasureUnit::createParsec(status)); + measureUnitValue = MeasureUnit::getParsec(); + measureUnit.adoptInstead(MeasureUnit::createPicometer(status)); + measureUnitValue = MeasureUnit::getPicometer(); + measureUnit.adoptInstead(MeasureUnit::createPoint(status)); + measureUnitValue = MeasureUnit::getPoint(); + measureUnit.adoptInstead(MeasureUnit::createSolarRadius(status)); + measureUnitValue = MeasureUnit::getSolarRadius(); + measureUnit.adoptInstead(MeasureUnit::createYard(status)); + measureUnitValue = MeasureUnit::getYard(); + measureUnit.adoptInstead(MeasureUnit::createCandela(status)); + measureUnitValue = MeasureUnit::getCandela(); + measureUnit.adoptInstead(MeasureUnit::createLumen(status)); + measureUnitValue = MeasureUnit::getLumen(); + measureUnit.adoptInstead(MeasureUnit::createLux(status)); + measureUnitValue = MeasureUnit::getLux(); + measureUnit.adoptInstead(MeasureUnit::createSolarLuminosity(status)); + measureUnitValue = MeasureUnit::getSolarLuminosity(); + measureUnit.adoptInstead(MeasureUnit::createCarat(status)); + measureUnitValue = MeasureUnit::getCarat(); + measureUnit.adoptInstead(MeasureUnit::createDalton(status)); + measureUnitValue = MeasureUnit::getDalton(); + measureUnit.adoptInstead(MeasureUnit::createEarthMass(status)); + measureUnitValue = MeasureUnit::getEarthMass(); + measureUnit.adoptInstead(MeasureUnit::createGrain(status)); + measureUnitValue = MeasureUnit::getGrain(); + measureUnit.adoptInstead(MeasureUnit::createGram(status)); + measureUnitValue = MeasureUnit::getGram(); + measureUnit.adoptInstead(MeasureUnit::createKilogram(status)); + measureUnitValue = MeasureUnit::getKilogram(); + measureUnit.adoptInstead(MeasureUnit::createMetricTon(status)); + measureUnitValue = MeasureUnit::getMetricTon(); + measureUnit.adoptInstead(MeasureUnit::createMicrogram(status)); + measureUnitValue = MeasureUnit::getMicrogram(); + measureUnit.adoptInstead(MeasureUnit::createMilligram(status)); + measureUnitValue = MeasureUnit::getMilligram(); + measureUnit.adoptInstead(MeasureUnit::createOunce(status)); + measureUnitValue = MeasureUnit::getOunce(); + measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status)); + measureUnitValue = MeasureUnit::getOunceTroy(); + measureUnit.adoptInstead(MeasureUnit::createPound(status)); + measureUnitValue = MeasureUnit::getPound(); + measureUnit.adoptInstead(MeasureUnit::createSolarMass(status)); + measureUnitValue = MeasureUnit::getSolarMass(); + measureUnit.adoptInstead(MeasureUnit::createStone(status)); + measureUnitValue = MeasureUnit::getStone(); + measureUnit.adoptInstead(MeasureUnit::createTon(status)); + measureUnitValue = MeasureUnit::getTon(); + measureUnit.adoptInstead(MeasureUnit::createGigawatt(status)); + measureUnitValue = MeasureUnit::getGigawatt(); + measureUnit.adoptInstead(MeasureUnit::createHorsepower(status)); + measureUnitValue = MeasureUnit::getHorsepower(); + measureUnit.adoptInstead(MeasureUnit::createKilowatt(status)); + measureUnitValue = MeasureUnit::getKilowatt(); + measureUnit.adoptInstead(MeasureUnit::createMegawatt(status)); + measureUnitValue = MeasureUnit::getMegawatt(); + measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status)); + measureUnitValue = MeasureUnit::getMilliwatt(); + measureUnit.adoptInstead(MeasureUnit::createWatt(status)); + measureUnitValue = MeasureUnit::getWatt(); + measureUnit.adoptInstead(MeasureUnit::createAtmosphere(status)); + measureUnitValue = MeasureUnit::getAtmosphere(); + measureUnit.adoptInstead(MeasureUnit::createBar(status)); + measureUnitValue = MeasureUnit::getBar(); + measureUnit.adoptInstead(MeasureUnit::createHectopascal(status)); + measureUnitValue = MeasureUnit::getHectopascal(); + measureUnit.adoptInstead(MeasureUnit::createInchHg(status)); + measureUnitValue = MeasureUnit::getInchHg(); + measureUnit.adoptInstead(MeasureUnit::createKilopascal(status)); + measureUnitValue = MeasureUnit::getKilopascal(); + measureUnit.adoptInstead(MeasureUnit::createMegapascal(status)); + measureUnitValue = MeasureUnit::getMegapascal(); + measureUnit.adoptInstead(MeasureUnit::createMillibar(status)); + measureUnitValue = MeasureUnit::getMillibar(); + measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status)); + measureUnitValue = MeasureUnit::getMillimeterOfMercury(); + measureUnit.adoptInstead(MeasureUnit::createPascal(status)); + measureUnitValue = MeasureUnit::getPascal(); + measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status)); + measureUnitValue = MeasureUnit::getPoundPerSquareInch(); + measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status)); + measureUnitValue = MeasureUnit::getKilometerPerHour(); + measureUnit.adoptInstead(MeasureUnit::createKnot(status)); + measureUnitValue = MeasureUnit::getKnot(); + measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status)); + measureUnitValue = MeasureUnit::getMeterPerSecond(); + measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status)); + measureUnitValue = MeasureUnit::getMilePerHour(); + measureUnit.adoptInstead(MeasureUnit::createCelsius(status)); + measureUnitValue = MeasureUnit::getCelsius(); + measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status)); + measureUnitValue = MeasureUnit::getFahrenheit(); + measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status)); + measureUnitValue = MeasureUnit::getGenericTemperature(); + measureUnit.adoptInstead(MeasureUnit::createKelvin(status)); + measureUnitValue = MeasureUnit::getKelvin(); + measureUnit.adoptInstead(MeasureUnit::createNewtonMeter(status)); + measureUnitValue = MeasureUnit::getNewtonMeter(); + measureUnit.adoptInstead(MeasureUnit::createPoundFoot(status)); + measureUnitValue = MeasureUnit::getPoundFoot(); + measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status)); + measureUnitValue = MeasureUnit::getAcreFoot(); + measureUnit.adoptInstead(MeasureUnit::createBarrel(status)); + measureUnitValue = MeasureUnit::getBarrel(); + measureUnit.adoptInstead(MeasureUnit::createBushel(status)); + measureUnitValue = MeasureUnit::getBushel(); + measureUnit.adoptInstead(MeasureUnit::createCentiliter(status)); + measureUnitValue = MeasureUnit::getCentiliter(); + measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status)); + measureUnitValue = MeasureUnit::getCubicCentimeter(); + measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status)); + measureUnitValue = MeasureUnit::getCubicFoot(); + measureUnit.adoptInstead(MeasureUnit::createCubicInch(status)); + measureUnitValue = MeasureUnit::getCubicInch(); + measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status)); + measureUnitValue = MeasureUnit::getCubicKilometer(); + measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status)); + measureUnitValue = MeasureUnit::getCubicMeter(); + measureUnit.adoptInstead(MeasureUnit::createCubicMile(status)); + measureUnitValue = MeasureUnit::getCubicMile(); + measureUnit.adoptInstead(MeasureUnit::createCubicYard(status)); + measureUnitValue = MeasureUnit::getCubicYard(); + measureUnit.adoptInstead(MeasureUnit::createCup(status)); + measureUnitValue = MeasureUnit::getCup(); + measureUnit.adoptInstead(MeasureUnit::createCupMetric(status)); + measureUnitValue = MeasureUnit::getCupMetric(); + measureUnit.adoptInstead(MeasureUnit::createDeciliter(status)); + measureUnitValue = MeasureUnit::getDeciliter(); + measureUnit.adoptInstead(MeasureUnit::createDessertSpoon(status)); + measureUnitValue = MeasureUnit::getDessertSpoon(); + measureUnit.adoptInstead(MeasureUnit::createDessertSpoonImperial(status)); + measureUnitValue = MeasureUnit::getDessertSpoonImperial(); + measureUnit.adoptInstead(MeasureUnit::createDram(status)); + measureUnitValue = MeasureUnit::getDram(); + measureUnit.adoptInstead(MeasureUnit::createDrop(status)); + measureUnitValue = MeasureUnit::getDrop(); + measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status)); + measureUnitValue = MeasureUnit::getFluidOunce(); + measureUnit.adoptInstead(MeasureUnit::createFluidOunceImperial(status)); + measureUnitValue = MeasureUnit::getFluidOunceImperial(); + measureUnit.adoptInstead(MeasureUnit::createGallon(status)); + measureUnitValue = MeasureUnit::getGallon(); + measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status)); + measureUnitValue = MeasureUnit::getGallonImperial(); + measureUnit.adoptInstead(MeasureUnit::createHectoliter(status)); + measureUnitValue = MeasureUnit::getHectoliter(); + measureUnit.adoptInstead(MeasureUnit::createJigger(status)); + measureUnitValue = MeasureUnit::getJigger(); + measureUnit.adoptInstead(MeasureUnit::createLiter(status)); + measureUnitValue = MeasureUnit::getLiter(); + measureUnit.adoptInstead(MeasureUnit::createMegaliter(status)); + measureUnitValue = MeasureUnit::getMegaliter(); + measureUnit.adoptInstead(MeasureUnit::createMilliliter(status)); + measureUnitValue = MeasureUnit::getMilliliter(); + measureUnit.adoptInstead(MeasureUnit::createPinch(status)); + measureUnitValue = MeasureUnit::getPinch(); + measureUnit.adoptInstead(MeasureUnit::createPint(status)); + measureUnitValue = MeasureUnit::getPint(); + measureUnit.adoptInstead(MeasureUnit::createPintMetric(status)); + measureUnitValue = MeasureUnit::getPintMetric(); + measureUnit.adoptInstead(MeasureUnit::createQuart(status)); + measureUnitValue = MeasureUnit::getQuart(); + measureUnit.adoptInstead(MeasureUnit::createQuartImperial(status)); + measureUnitValue = MeasureUnit::getQuartImperial(); + measureUnit.adoptInstead(MeasureUnit::createTablespoon(status)); + measureUnitValue = MeasureUnit::getTablespoon(); + measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status)); + measureUnitValue = MeasureUnit::getTeaspoon(); + assertSuccess("", status); +} + void MeasureFormatTest::TestBasic() { UErrorCode status = U_ZERO_ERROR; MeasureUnit *ptr1 = MeasureUnit::createArcMinute(status); diff --git a/icu4c/source/test/intltest/numbertest_api.cpp b/icu4c/source/test/intltest/numbertest_api.cpp index eedf4524dfe..cfd25d00959 100644 --- a/icu4c/source/test/intltest/numbertest_api.cpp +++ b/icu4c/source/test/intltest/numbertest_api.cpp @@ -1239,12 +1239,18 @@ void NumberFormatterApiTest::unitArbitraryMeasureUnits() { // TODO(ICU-21504): We want to be able to format this, but "100-kilometer" // is not yet supported when it's not part of liter-per-100-kilometer: - lnf = NumberFormatter::with() - .unit(MeasureUnit::forIdentifier("kilowatt-hour-per-100-kilometer", status)) - .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME) - .locale("en-ZA"); - lnf.formatInt(1, status); - status.expectErrorAndReset(U_UNSUPPORTED_ERROR); + // Actually now in CLDR 40 this is supported directly in data, so change test. + assertFormatSingle( + u"kilowatt-hour-per-100-kilometer unit-width-full-name", + u"unit/kilowatt-hour-per-100-kilometer unit-width-full-name", + u"unit/kilowatt-hour-per-100-kilometer unit-width-full-name", + NumberFormatter::with() + .unit(MeasureUnit::forIdentifier("kilowatt-hour-per-100-kilometer", + status)) + .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME), + Locale("en-ZA"), + 2.4, + u"2,4 kilowatt-hours per 100 kilometers"); } // TODO: merge these tests into numbertest_skeletons.cpp instead of here: diff --git a/icu4c/source/test/testdata/root.txt b/icu4c/source/test/testdata/root.txt index 93afadcb716..2d6fcb7f8f3 100644 --- a/icu4c/source/test/testdata/root.txt +++ b/icu4c/source/test/testdata/root.txt @@ -13,8 +13,8 @@ root { Version { 44.0 } - ExpectCLDRVersionAtLeast { 39.0 } // 'base' cldr version. Allow up to version =.=.* of this - CurrentCLDRVersion { 39.0 } // Current CLDR version as of the test update. Warn if not an exact match. + ExpectCLDRVersionAtLeast { 40.0 } // 'base' cldr version. Allow up to version =.=.* of this + CurrentCLDRVersion { 40.0 } // Current CLDR version as of the test update. Warn if not an exact match. ShortLanguage { xxx } diff --git a/icu4c/source/test/testdata/structLocale.txt b/icu4c/source/test/testdata/structLocale.txt index 14f8e68759d..5c81e17ec3b 100644 --- a/icu4c/source/test/testdata/structLocale.txt +++ b/icu4c/source/test/testdata/structLocale.txt @@ -21697,6 +21697,16 @@ structLocale:table(nofallback){ "A4", "A4", } + DateTimeSkeletons{ + "", + "", + "", + "", + "", + "", + "", + "", + } eras{ abbreviated{ "", @@ -21812,20 +21822,24 @@ structLocale:table(nofallback){ } fallback{""} h{ + B{""} a{""} h{""} } hm{ + B{""} a{""} h{""} m{""} } hmv{ + B{""} a{""} h{""} m{""} } hv{ + B{""} a{""} h{""} } @@ -21925,6 +21939,16 @@ structLocale:table(nofallback){ "A4", "A4", } + DateTimeSkeletons{ + "", + "", + "", + "", + "A2", + "A2", + "A2", + "A2", + } cyclicNameSets{ dayParts{ format{ @@ -22775,20 +22799,24 @@ structLocale:table(nofallback){ } fallback{""} h{ + B{""} a{""} h{""} } hm{ + B{""} a{""} h{""} m{""} } hmv{ + B{""} a{""} h{""} m{""} } hv{ + B{""} a{""} h{""} } @@ -22995,6 +23023,16 @@ structLocale:table(nofallback){ "A4", "A4", } + DateTimeSkeletons{ + "", + "", + "", + "", + "A2", + "A2", + "A2", + "A2", + } availableFormats{ HHmm{""} HHmmss{""} @@ -23128,20 +23166,24 @@ structLocale:table(nofallback){ } fallback{""} h{ + B{""} a{""} h{""} } hm{ + B{""} a{""} h{""} m{""} } hmv{ + B{""} a{""} h{""} m{""} } hv{ + B{""} a{""} h{""} } @@ -23339,6 +23381,16 @@ structLocale:table(nofallback){ "A4", "A4", } + DateTimeSkeletons{ + "", + "", + "", + "", + "A2", + "A2", + "A2", + "A2", + } cyclicNameSets{ dayParts{ format{ @@ -24189,20 +24241,24 @@ structLocale:table(nofallback){ } fallback{""} h{ + B{""} a{""} h{""} } hm{ + B{""} a{""} h{""} m{""} } hmv{ + B{""} a{""} h{""} m{""} } hv{ + B{""} a{""} h{""} } @@ -24414,6 +24470,16 @@ structLocale:table(nofallback){ "A4", "A4", } + DateTimeSkeletons{ + "", + "", + "", + "", + "A2", + "A2", + "A2", + "A2", + } availableFormats{ HHmm{""} HHmmss{""} @@ -24547,20 +24613,24 @@ structLocale:table(nofallback){ } fallback{""} h{ + B{""} a{""} h{""} } hm{ + B{""} a{""} h{""} m{""} } hmv{ + B{""} a{""} h{""} m{""} } hv{ + B{""} a{""} h{""} } @@ -24862,20 +24932,24 @@ structLocale:table(nofallback){ } fallback{""} h{ + B{""} a{""} h{""} } hm{ + B{""} a{""} h{""} m{""} } hmv{ + B{""} a{""} h{""} m{""} } hv{ + B{""} a{""} h{""} } @@ -25062,6 +25136,16 @@ structLocale:table(nofallback){ "A4", "A4", } + DateTimeSkeletons{ + "", + "", + "", + "", + "A2", + "A2", + "A2", + "A2", + } appendItems{ Day{"{0} ({2}: {1})"} Day-Of-Week{"{0} {1}"} @@ -25228,20 +25312,24 @@ structLocale:table(nofallback){ } fallback{""} h{ + B{""} a{""} h{""} } hm{ + B{""} a{""} h{""} m{""} } hmv{ + B{""} a{""} h{""} m{""} } hv{ + B{""} a{""} h{""} } @@ -25342,6 +25430,16 @@ structLocale:table(nofallback){ "A4", "A4", } + DateTimeSkeletons{ + "", + "", + "", + "", + "A2", + "A2", + "A2", + "A2", + } NoonMarker{""} NoonMarkerAbbr{""} NoonMarkerNarrow{""} @@ -25694,20 +25792,24 @@ structLocale:table(nofallback){ } fallback{""} h{ + B{""} a{""} h{""} } hm{ + B{""} a{""} h{""} m{""} } hmv{ + B{""} a{""} h{""} m{""} } hv{ + B{""} a{""} h{""} } @@ -25933,6 +26035,16 @@ structLocale:table(nofallback){ "A4", "A4", } + DateTimeSkeletons{ + "", + "", + "", + "", + "A2", + "A2", + "A2", + "A2", + } availableFormats{ HHmm{""} HHmmss{""} @@ -26063,20 +26175,24 @@ structLocale:table(nofallback){ } fallback{""} h{ + B{""} a{""} h{""} } hm{ + B{""} a{""} h{""} m{""} } hmv{ + B{""} a{""} h{""} m{""} } hv{ + B{""} a{""} h{""} } @@ -26281,6 +26397,16 @@ structLocale:table(nofallback){ "A4", "A4", } + DateTimeSkeletons{ + "", + "", + "", + "", + "", + "", + "", + "", + } eras{ abbreviated{ "", @@ -26396,20 +26522,24 @@ structLocale:table(nofallback){ } fallback{""} h{ + B{""} a{""} h{""} } hm{ + B{""} a{""} h{""} m{""} } hmv{ + B{""} a{""} h{""} m{""} } hv{ + B{""} a{""} h{""} } @@ -26606,6 +26736,16 @@ structLocale:table(nofallback){ "A4", "A4", } + DateTimeSkeletons{ + "", + "", + "", + "", + "", + "", + "", + "", + } eras{ abbreviated{ "", @@ -26721,20 +26861,24 @@ structLocale:table(nofallback){ } fallback{""} h{ + B{""} a{""} h{""} } hm{ + B{""} a{""} h{""} m{""} } hmv{ + B{""} a{""} h{""} m{""} } hv{ + B{""} a{""} h{""} } @@ -26931,6 +27075,16 @@ structLocale:table(nofallback){ "A4", "A4", } + DateTimeSkeletons{ + "", + "", + "", + "", + "", + "", + "", + "", + } eras{ abbreviated{ "", @@ -27046,20 +27200,24 @@ structLocale:table(nofallback){ } fallback{""} h{ + B{""} a{""} h{""} } hm{ + B{""} a{""} h{""} m{""} } hmv{ + B{""} a{""} h{""} m{""} } hv{ + B{""} a{""} h{""} } @@ -27253,6 +27411,16 @@ structLocale:table(nofallback){ "A4", "A4", } + DateTimeSkeletons{ + "", + "", + "", + "", + "A2", + "A2", + "A2", + "A2", + } eras{ abbreviated{ "", @@ -28076,20 +28244,24 @@ structLocale:table(nofallback){ } fallback{""} h{ + B{""} a{""} h{""} } hm{ + B{""} a{""} h{""} m{""} } hmv{ + B{""} a{""} h{""} m{""} } hv{ + B{""} a{""} h{""} } @@ -28193,6 +28365,16 @@ structLocale:table(nofallback){ "A4", "A4", } + DateTimeSkeletons{ + "", + "", + "", + "", + "", + "", + "", + "", + } eras{ abbreviated{ "", @@ -28311,20 +28493,24 @@ structLocale:table(nofallback){ } fallback{""} h{ + B{""} a{""} h{""} } hm{ + B{""} a{""} h{""} m{""} } hmv{ + B{""} a{""} h{""} m{""} } hv{ + B{""} a{""} h{""} } diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java b/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java index 425619cbb08..0d48d63a0f6 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java @@ -993,6 +993,12 @@ public class MeasureUnit implements Serializable { */ public static final MeasureUnit SQUARE_YARD = MeasureUnit.internalGetInstance("area", "square-yard"); + /** + * Constant for unit of concentr: item + * @draft ICU 70 + */ + public static final MeasureUnit ITEM = MeasureUnit.internalGetInstance("concentr", "item"); + /** * Constant for unit of concentr: karat * @stable ICU 54 @@ -1311,6 +1317,12 @@ public class MeasureUnit implements Serializable { */ public static final MeasureUnit THERM_US = MeasureUnit.internalGetInstance("energy", "therm-us"); + /** + * Constant for unit of force: kilowatt-hour-per-100-kilometer + * @draft ICU 70 + */ + public static final MeasureUnit KILOWATT_HOUR_PER_100_KILOMETER = MeasureUnit.internalGetInstance("force", "kilowatt-hour-per-100-kilometer"); + /** * Constant for unit of force: newton * @stable ICU 64 diff --git a/icu4j/main/shared/data/icudata.jar b/icu4j/main/shared/data/icudata.jar index 59e4c08acda..76d5ae74997 100644 --- a/icu4j/main/shared/data/icudata.jar +++ b/icu4j/main/shared/data/icudata.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c6204593a97c614d968ee1c9411e3b7bc5c4b6712a300d55f2974fe9f6552d2c -size 13383699 +oid sha256:35c8e1e35221f87fee045f769bd846b57e31ebe1d48f6f0964d769a5b697f509 +size 13397003 diff --git a/icu4j/main/shared/data/icutzdata.jar b/icu4j/main/shared/data/icutzdata.jar index 18bde5b124c..2a5e6009568 100644 --- a/icu4j/main/shared/data/icutzdata.jar +++ b/icu4j/main/shared/data/icutzdata.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b0c62aeba1f0608064e1253a6fc6d55e539c8e536bc45ad1e557afa6a56e3341 -size 95105 +oid sha256:7258631a610fb4a12666fbd09a4a9bb4c783800f9604266764c2cee822a7a41b +size 95038 diff --git a/icu4j/main/shared/data/testdata.jar b/icu4j/main/shared/data/testdata.jar index ed97c19d6e6..d466dea41ce 100644 --- a/icu4j/main/shared/data/testdata.jar +++ b/icu4j/main/shared/data/testdata.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:acb188c16c4dca34db02d99059736ca963c084488d26972399292ebb86d657c5 -size 828801 +oid sha256:683ebb9e63f015d512635c6fb7ea1eed95e2fa68b8e099fdd9c603c71ff1bdeb +size 825842 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 1e2d55d2ae0..6a714048811 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 @@ -648,7 +648,7 @@ public class CompactDecimalFormatTest extends TestFmwk { @Test public void TestLocaleGroupingForLargeNumbers() { ULocale[] locs = {new ULocale("en"), new ULocale("it"), new ULocale("en_US_POSIX"), new ULocale("en-IN")}; - String[] expecteds = {"5,800,000T", "5.800.000 Bln", "5800000T", "58,00,000T"}; + String[] expecteds = {"5,800,000T", "5.800.000 Bln", "5800000T", "58,00,000LCr"}; for (int i=0; i expectedFields = getFields(formatted); formatted = roc.formatToValue(beforeAfterMG); assertEquals("roc calendar - prior MG Era and in MG Era", - "民國前1年1月2日 6 上午 – 民國2年1月2日 6 上午", + "民國前1年1月2日 上午6時 – 民國2年1月2日 上午6時", formatted.toString()); verifyFields(formatted, expectedFields); formatted = roc.formatToValue(bothBeforeMG); assertEquals("roc calendar - both dates prior MG Era", - "民國前2/1/2 6 上午 – 民國前1/1/2 6 上午", + "民國前2/1/2 上午6時 – 民國前1/1/2 上午6時", formatted.toString()); verifyFields(formatted, expectedFields); } @@ -2450,7 +2450,7 @@ public class DateIntervalFormatTest extends TestFmwk { formatted = japanese.formatToValue(beforeAfterReiwa); assertEquals("japanese calendar - date before and in Reiwa", - "平成31年3月2日 午前6時~令和元年5月4日 午前6時", + "H31/3/2 午前6時~R1/5/4 午前6時", formatted.toString()); verifyFields(formatted, expectedFields); } diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java index ff462c74cc8..51c465dca3f 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java @@ -59,12 +59,12 @@ public class DateTimeGeneratorTest extends TestFmwk { public void TestC() { String[][] tests = { // These may change with actual data for Bhmm/bhmm skeletons - {"zh", "Cm", "Bh:mm"}, - {"zh", "CCm", "Bhh:mm"}, - {"zh", "CCCm", "BBBBh:mm"}, - {"zh", "CCCCm", "BBBBhh:mm"}, - {"zh", "CCCCCm", "BBBBBh:mm"}, - {"zh", "CCCCCCm", "BBBBBhh:mm"}, + {"zh-TW", "Cm", "Bh:mm"}, + {"zh-TW", "CCm", "Bhh:mm"}, + {"zh-TW", "CCCm", "BBBBh:mm"}, + {"zh-TW", "CCCCm", "BBBBhh:mm"}, + {"zh-TW", "CCCCCm", "BBBBBh:mm"}, + {"zh-TW", "CCCCCCm", "BBBBBhh:mm"}, {"de", "Cm", "HH:mm"}, {"de", "CCm", "HH:mm"}, {"de", "CCCm", "HH:mm"}, @@ -512,13 +512,13 @@ public class DateTimeGeneratorTest extends TestFmwk { new String[] {"yQQQ", "1999\u5E74\u7B2C1\u5B63\u5EA6"}, new String[] {"hhmm", "\u4E0B\u534811:58"}, new String[] {"HHmm", "23:58"}, - new String[] {"jjmm", "\u4E0B\u534811:58"}, + new String[] {"jjmm", "23:58"}, new String[] {"mmss", "58:59"}, new String[] {"yyyyMMMM", "1999\u5E741\u6708"}, // (new item for testing 6872<-5702) new String[] {"MMMEd", "1\u670813\u65E5\u5468\u4E09"}, new String[] {"Ed", "13\u65E5\u5468\u4E09"}, - new String[] {"jmmssSSS", "\u4E0B\u534811:58:59.123"}, - new String[] {"JJmm", "11:58"}, + new String[] {"jmmssSSS", "23:58:59.123"}, + new String[] {"JJmm", "23:58"}, new ULocale("zh_TW@calendar=roc"), // (new locale for testing ticket 6872<-5702) new String[] {"yM", "\u6C11\u570B88/1"}, @@ -569,13 +569,13 @@ public class DateTimeGeneratorTest extends TestFmwk { new String[] {"yQQQ", "1998\u620A\u5BC5\u5E74\u7B2C\u56DB\u5B63\u5EA6"}, new String[] {"hhmm", "\u4E0B\u534811:58"}, new String[] {"HHmm", "23:58"}, - new String[] {"jjmm", "\u4E0B\u534811:58"}, + new String[] {"jjmm", "23:58"}, new String[] {"mmss", "58:59"}, new String[] {"yyyyMMMM", "1998\u620A\u5BC5\u5E74\u5341\u4E00\u6708"}, new String[] {"MMMEd", "\u5341\u4E00\u670826\u65E5\u5468\u4E09"}, new String[] {"Ed", "26\u65E5\u5468\u4E09"}, - new String[] {"jmmssSSS", "\u4E0B\u534811:58:59.123"}, - new String[] {"JJmm", "11:58"}, + new String[] {"jmmssSSS", "23:58:59.123"}, + new String[] {"JJmm", "23:58"}, new ULocale("ja_JP_TRADITIONAL"), // TODO: This is different in C++ and Java. @@ -1407,8 +1407,8 @@ public class DateTimeGeneratorTest extends TestFmwk { new TestOptionsItem( "en@calendar=chinese", "Gy", "r(U)", DateTimePatternGenerator.MATCH_NO_OPTIONS ), new TestOptionsItem( "en@calendar=chinese", "GU", "r(U)", DateTimePatternGenerator.MATCH_NO_OPTIONS ), new TestOptionsItem( "en@calendar=chinese", "ULLL", "MMM U", DateTimePatternGenerator.MATCH_NO_OPTIONS ), - new TestOptionsItem( "en@calendar=chinese", "yMMM", "MMM r(U)", DateTimePatternGenerator.MATCH_NO_OPTIONS ), - new TestOptionsItem( "en@calendar=chinese", "GUMMM", "MMM r(U)", DateTimePatternGenerator.MATCH_NO_OPTIONS ), + new TestOptionsItem( "en@calendar=chinese", "yMMM", "MMM r", DateTimePatternGenerator.MATCH_NO_OPTIONS ), + new TestOptionsItem( "en@calendar=chinese", "GUMMM", "MMM r", DateTimePatternGenerator.MATCH_NO_OPTIONS ), new TestOptionsItem( "zh@calendar=chinese", "yyyy", "rU\u5E74", DateTimePatternGenerator.MATCH_NO_OPTIONS ), new TestOptionsItem( "zh@calendar=chinese", "YYYY", "YY\u5E74", DateTimePatternGenerator.MATCH_NO_OPTIONS ), // not a good result, want r(Y) or r(U) new TestOptionsItem( "zh@calendar=chinese", "U", "rU\u5E74", DateTimePatternGenerator.MATCH_NO_OPTIONS ), diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java index d0d2b509337..95e5414e936 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java @@ -277,6 +277,8 @@ public class MeasureUnitTest extends TestFmwk { {"PINCH", "68"}, {"QUART_IMPERIAL", "68"}, {"MILLIGRAM_OFGLUCOSE_PER_DECILITER", "69"}, + {"ITEM", "70"}, + {"KILOWATT_HOUR_PER_100_KILOMETER", "70"}, }; private static final HashMap JAVA_VERSION_MAP = new HashMap<>(); @@ -320,12 +322,12 @@ public class MeasureUnitTest extends TestFmwk { // various generateXXX calls go here, see // docs/processes/release/tasks/updating-measure-unit.md // use this test to run each of the ollowing in succession - //generateConstants("69"); // for MeasureUnit.java, update generated MeasureUnit constants - //generateBackwardCompatibilityTest("69"); // for MeasureUnitTest.java, create TestCompatible69 - //generateCXXHConstants("69"); // for measunit.h, update generated createXXX methods + //generateConstants("70"); // for MeasureUnit.java, update generated MeasureUnit constants + //generateBackwardCompatibilityTest("70"); // for MeasureUnitTest.java, create TestCompatible70 + //generateCXXHConstants("70"); // for measunit.h, update generated createXXX methods //generateCXXConstants(); // for measunit.cpp, update generated code - //generateCXXBackwardCompatibilityTest("69"); // for measfmttest.cpp, create TestCompatible69 - //updateJAVAVersions("69"); // for MeasureUnitTest.java, JAVA_VERSIONS + //generateCXXBackwardCompatibilityTest("70"); // for measfmttest.cpp, create TestCompatible70 + //updateJAVAVersions("70"); // for MeasureUnitTest.java, JAVA_VERSIONS } @Test @@ -2081,6 +2083,200 @@ public class MeasureUnitTest extends TestFmwk { assertEquals("", 185, units.length); } + @Test + public void TestCompatible70() { + MeasureUnit[] units = { + MeasureUnit.G_FORCE, + MeasureUnit.METER_PER_SECOND_SQUARED, + MeasureUnit.ARC_MINUTE, + MeasureUnit.ARC_SECOND, + MeasureUnit.DEGREE, + MeasureUnit.RADIAN, + MeasureUnit.REVOLUTION_ANGLE, + MeasureUnit.ACRE, + MeasureUnit.DUNAM, + MeasureUnit.HECTARE, + MeasureUnit.SQUARE_CENTIMETER, + MeasureUnit.SQUARE_FOOT, + MeasureUnit.SQUARE_INCH, + MeasureUnit.SQUARE_KILOMETER, + MeasureUnit.SQUARE_METER, + MeasureUnit.SQUARE_MILE, + MeasureUnit.SQUARE_YARD, + MeasureUnit.ITEM, + MeasureUnit.KARAT, + MeasureUnit.MILLIGRAM_OFGLUCOSE_PER_DECILITER, + MeasureUnit.MILLIGRAM_PER_DECILITER, + MeasureUnit.MILLIMOLE_PER_LITER, + MeasureUnit.MOLE, + MeasureUnit.PERCENT, + MeasureUnit.PERMILLE, + MeasureUnit.PART_PER_MILLION, + MeasureUnit.PERMYRIAD, + MeasureUnit.LITER_PER_100KILOMETERS, + MeasureUnit.LITER_PER_KILOMETER, + MeasureUnit.MILE_PER_GALLON, + MeasureUnit.MILE_PER_GALLON_IMPERIAL, + MeasureUnit.BIT, + MeasureUnit.BYTE, + MeasureUnit.GIGABIT, + MeasureUnit.GIGABYTE, + MeasureUnit.KILOBIT, + MeasureUnit.KILOBYTE, + MeasureUnit.MEGABIT, + MeasureUnit.MEGABYTE, + MeasureUnit.PETABYTE, + MeasureUnit.TERABIT, + MeasureUnit.TERABYTE, + MeasureUnit.CENTURY, + MeasureUnit.DAY, + MeasureUnit.DAY_PERSON, + MeasureUnit.DECADE, + MeasureUnit.HOUR, + MeasureUnit.MICROSECOND, + MeasureUnit.MILLISECOND, + MeasureUnit.MINUTE, + MeasureUnit.MONTH, + MeasureUnit.MONTH_PERSON, + MeasureUnit.NANOSECOND, + MeasureUnit.SECOND, + MeasureUnit.WEEK, + MeasureUnit.WEEK_PERSON, + MeasureUnit.YEAR, + MeasureUnit.YEAR_PERSON, + MeasureUnit.AMPERE, + MeasureUnit.MILLIAMPERE, + MeasureUnit.OHM, + MeasureUnit.VOLT, + MeasureUnit.BRITISH_THERMAL_UNIT, + MeasureUnit.CALORIE, + MeasureUnit.ELECTRONVOLT, + MeasureUnit.FOODCALORIE, + MeasureUnit.JOULE, + MeasureUnit.KILOCALORIE, + MeasureUnit.KILOJOULE, + MeasureUnit.KILOWATT_HOUR, + MeasureUnit.THERM_US, + MeasureUnit.KILOWATT_HOUR_PER_100_KILOMETER, + MeasureUnit.NEWTON, + MeasureUnit.POUND_FORCE, + MeasureUnit.GIGAHERTZ, + MeasureUnit.HERTZ, + MeasureUnit.KILOHERTZ, + MeasureUnit.MEGAHERTZ, + MeasureUnit.DOT, + MeasureUnit.DOT_PER_CENTIMETER, + MeasureUnit.DOT_PER_INCH, + MeasureUnit.EM, + MeasureUnit.MEGAPIXEL, + MeasureUnit.PIXEL, + MeasureUnit.PIXEL_PER_CENTIMETER, + MeasureUnit.PIXEL_PER_INCH, + MeasureUnit.ASTRONOMICAL_UNIT, + MeasureUnit.CENTIMETER, + MeasureUnit.DECIMETER, + MeasureUnit.EARTH_RADIUS, + MeasureUnit.FATHOM, + MeasureUnit.FOOT, + MeasureUnit.FURLONG, + MeasureUnit.INCH, + MeasureUnit.KILOMETER, + MeasureUnit.LIGHT_YEAR, + MeasureUnit.METER, + MeasureUnit.MICROMETER, + MeasureUnit.MILE, + MeasureUnit.MILE_SCANDINAVIAN, + MeasureUnit.MILLIMETER, + MeasureUnit.NANOMETER, + MeasureUnit.NAUTICAL_MILE, + MeasureUnit.PARSEC, + MeasureUnit.PICOMETER, + MeasureUnit.POINT, + MeasureUnit.SOLAR_RADIUS, + MeasureUnit.YARD, + MeasureUnit.CANDELA, + MeasureUnit.LUMEN, + MeasureUnit.LUX, + MeasureUnit.SOLAR_LUMINOSITY, + MeasureUnit.CARAT, + MeasureUnit.DALTON, + MeasureUnit.EARTH_MASS, + MeasureUnit.GRAIN, + MeasureUnit.GRAM, + MeasureUnit.KILOGRAM, + MeasureUnit.METRIC_TON, + MeasureUnit.MICROGRAM, + MeasureUnit.MILLIGRAM, + MeasureUnit.OUNCE, + MeasureUnit.OUNCE_TROY, + MeasureUnit.POUND, + MeasureUnit.SOLAR_MASS, + MeasureUnit.STONE, + MeasureUnit.TON, + MeasureUnit.GIGAWATT, + MeasureUnit.HORSEPOWER, + MeasureUnit.KILOWATT, + MeasureUnit.MEGAWATT, + MeasureUnit.MILLIWATT, + MeasureUnit.WATT, + MeasureUnit.ATMOSPHERE, + MeasureUnit.BAR, + MeasureUnit.HECTOPASCAL, + MeasureUnit.INCH_HG, + MeasureUnit.KILOPASCAL, + MeasureUnit.MEGAPASCAL, + MeasureUnit.MILLIBAR, + MeasureUnit.MILLIMETER_OF_MERCURY, + MeasureUnit.PASCAL, + MeasureUnit.POUND_PER_SQUARE_INCH, + MeasureUnit.KILOMETER_PER_HOUR, + MeasureUnit.KNOT, + MeasureUnit.METER_PER_SECOND, + MeasureUnit.MILE_PER_HOUR, + MeasureUnit.CELSIUS, + MeasureUnit.FAHRENHEIT, + MeasureUnit.GENERIC_TEMPERATURE, + MeasureUnit.KELVIN, + MeasureUnit.NEWTON_METER, + MeasureUnit.POUND_FOOT, + MeasureUnit.ACRE_FOOT, + MeasureUnit.BARREL, + MeasureUnit.BUSHEL, + MeasureUnit.CENTILITER, + MeasureUnit.CUBIC_CENTIMETER, + MeasureUnit.CUBIC_FOOT, + MeasureUnit.CUBIC_INCH, + MeasureUnit.CUBIC_KILOMETER, + MeasureUnit.CUBIC_METER, + MeasureUnit.CUBIC_MILE, + MeasureUnit.CUBIC_YARD, + MeasureUnit.CUP, + MeasureUnit.CUP_METRIC, + MeasureUnit.DECILITER, + MeasureUnit.DESSERT_SPOON, + MeasureUnit.DESSERT_SPOON_IMPERIAL, + MeasureUnit.DRAM, + MeasureUnit.DROP, + MeasureUnit.FLUID_OUNCE, + MeasureUnit.FLUID_OUNCE_IMPERIAL, + MeasureUnit.GALLON, + MeasureUnit.GALLON_IMPERIAL, + MeasureUnit.HECTOLITER, + MeasureUnit.JIGGER, + MeasureUnit.LITER, + MeasureUnit.MEGALITER, + MeasureUnit.MILLILITER, + MeasureUnit.PINCH, + MeasureUnit.PINT, + MeasureUnit.PINT_METRIC, + MeasureUnit.QUART, + MeasureUnit.QUART_IMPERIAL, + MeasureUnit.TABLESPOON, + MeasureUnit.TEASPOON, + }; + assertEquals("", 187, units.length); + } + @Test public void TestExamplesInDocs() { MeasureFormat fmtFr = MeasureFormat.getInstance( diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java index cb57092d31a..67e0a9bc4cf 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java @@ -1158,16 +1158,15 @@ public class NumberFormatterApiTest extends TestFmwk { // TODO(ICU-21504): We want to be able to format this, but "100-kilometer" // is not yet supported when it's not part of liter-per-100-kilometer: - lnf = NumberFormatter.with() - .unit(MeasureUnit.forIdentifier("kilowatt-hour-per-100-kilometer")) - .unitWidth(UnitWidth.FULL_NAME) - .locale(new ULocale("en-ZA")); - try { - lnf.format(1); - fail("Expected failure for kilowatt-hour-per-100-kilometer, got: " + lnf.format(1) + "."); - } catch (UnsupportedOperationException e) { - // pass - } + // Actually now in CLDR 40 this is supported directly in data, so change test. + assertFormatSingle( + "kilowatt-hour-per-100-kilometer unit-width-full-name", + "unit/kilowatt-hour-per-100-kilometer unit-width-full-name", + "unit/kilowatt-hour-per-100-kilometer unit-width-full-name", + NumberFormatter.with() + .unit(MeasureUnit.forIdentifier("kilowatt-hour-per-100-kilometer")) + .unitWidth(UnitWidth.FULL_NAME), + new ULocale("en-ZA"), 2.4, "2,4 kilowatt-hours per 100 kilometers"); } // TODO: merge these tests into NumberSkeletonTest.java instead of here: diff --git a/tools/cldr/cldr-to-icu/build-icu-data.xml b/tools/cldr/cldr-to-icu/build-icu-data.xml index 115cb4b5be6..8200a7b22d6 100644 --- a/tools/cldr/cldr-to-icu/build-icu-data.xml +++ b/tools/cldr/cldr-to-icu/build-icu-data.xml @@ -399,6 +399,7 @@ + diff --git a/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_locale.txt b/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_locale.txt index a8afd6d5a5c..3f87f9023ff 100644 --- a/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_locale.txt +++ b/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_locale.txt @@ -165,6 +165,32 @@ # DateTime patterns (4 x values) //ldml/dates/calendars/calendar[@type="(%A)"]/(dateTimeFormat)s/\2Length[@type="(%A)"]/\2[@type="%A"]/pattern[@type="%A"] ; /calendar/$1/DateTimePatterns + +# ---- /calendar/xxx/DateTimeSkeletons +# This is similar to DateTimePatterns above except that for this we do not have the DateTime patterns (4 x values, plus the duplicate value at index 8). + +# Time patterns (4 x values) +//ldml/dates/calendars/calendar[@type="(%A)"]/(timeFormat)s/\2Length[@type="(%A)"]/\2[@type="%A"]/datetimeSkeleton + ; /calendar/$1/DateTimeSkeletons + +# Date patterns (4 x values) +//ldml/dates/calendars/calendar[@type="(%A)"]/(dateFormat)s/\2Length[@type="(full)"]/\2[@type="%A"]/datetimeSkeleton + ; /calendar/$1/DateTimeSkeletons +//ldml/dates/calendars/calendar[@type="(%A)"]/(dateFormat)s/\2Length[@type="(full)"]/\2[@type="%A"]/datetimeSkeleton[@numbers="(%A)"] + ; /calendar/$1/DateTimeSkeletons ; values="{value}" $4 ; group +//ldml/dates/calendars/calendar[@type="(%A)"]/(dateFormat)s/\2Length[@type="(long)"]/\2[@type="%A"]/datetimeSkeleton + ; /calendar/$1/DateTimeSkeletons +//ldml/dates/calendars/calendar[@type="(%A)"]/(dateFormat)s/\2Length[@type="(long)"]/\2[@type="%A"]/datetimeSkeleton[@numbers="(%A)"] + ; /calendar/$1/DateTimeSkeletons ; values="{value}" $4 ; group +//ldml/dates/calendars/calendar[@type="(%A)"]/(dateFormat)s/\2Length[@type="(medium)"]/\2[@type="%A"]/datetimeSkeleton + ; /calendar/$1/DateTimeSkeletons +//ldml/dates/calendars/calendar[@type="(%A)"]/(dateFormat)s/\2Length[@type="(medium)"]/\2[@type="%A"]/datetimeSkeleton[@numbers="(%A)"] + ; /calendar/$1/DateTimeSkeletons ; values="{value}" $4 ; group +//ldml/dates/calendars/calendar[@type="(%A)"]/(dateFormat)s/\2Length[@type="(short)"]/\2[@type="%A"]/datetimeSkeleton + ; /calendar/$1/DateTimeSkeletons +//ldml/dates/calendars/calendar[@type="(%A)"]/(dateFormat)s/\2Length[@type="(short)"]/\2[@type="%A"]/datetimeSkeleton[@numbers="(%A)"] + ; /calendar/$1/DateTimeSkeletons ; values="{value}" $4 ; group + # ---- //ldml/dates/calendars/calendar[@type="(%A)"]/dateTimeFormats/appendItems/appendItem[@request="(%A)"] ; /calendar/$1/appendItems/$2