From 2d183b5a924d8f159c1c931ba562fc24f81e4541 Mon Sep 17 00:00:00 2001
From: Peter Edberg Note: This is a draft readme. This is a release candidate version of ICU4C.
It is not recommended for production use. Last updated: 2017-Jan-15 Last updated: 2017-Mar-04 Important: Please make sure you understand the Copyright and License Information.
Release Candidate
(Milestone Release)
- ICU 59.0.1 ReadMe
+ ICU 59.1 ReadMe
@@ -44,7 +44,7 @@
+
Copyright © 2016 and later: Unicode, Inc. and others. License & terms of use:
http://www.unicode.org/copyright.html
Copyright © 1997-2016 International Business Machines Corporation and others.
@@ -230,7 +230,7 @@
~/icu$ svn export http://source.icu-project.org/repos/icu/icu/trunk +~/icu$ svn export http://source.icu-project.org/repos/icu/trunk/icu4c ~/icu$ mkdir trunk-dev ~/icu$ cd trunk-dev ~/icu/trunk-dev$ ../trunk/source/runConfigureICU Linux From 410e3f6db548604ac78dfd8a628cfe163fc76729 Mon Sep 17 00:00:00 2001 From: Peter EdbergDate: Sun, 5 Mar 2017 05:38:02 +0000 Subject: [PATCH 4/5] ICU-13005 Integrate data from CLDR release-31-d02 (part 2, add new locales) X-SVN-Rev: 39738 --- icu4c/source/data/curr/es_BZ.txt | 12 ++ icu4c/source/data/curr/resfiles.mk | 104 +++++++------- icu4c/source/data/icu-config.xml | 2 + icu4c/source/data/lang/es_BZ.txt | 6 + icu4c/source/data/lang/resfiles.mk | 86 ++++++------ icu4c/source/data/locales/es_BZ.txt | 6 + icu4c/source/data/locales/it_VA.txt | 5 + icu4c/source/data/locales/resfiles.mk | 191 +++++++++++++------------- icu4c/source/data/region/es_BZ.txt | 6 + icu4c/source/data/region/resfiles.mk | 86 ++++++------ icu4c/source/data/unit/es_BZ.txt | 6 + icu4c/source/data/unit/resfiles.mk | 82 +++++------ icu4c/source/data/zone/es_BZ.txt | 6 + icu4c/source/data/zone/resfiles.mk | 84 +++++------ icu4j/main/shared/data/icudata.jar | 4 +- 15 files changed, 368 insertions(+), 318 deletions(-) create mode 100644 icu4c/source/data/curr/es_BZ.txt create mode 100644 icu4c/source/data/lang/es_BZ.txt create mode 100644 icu4c/source/data/locales/es_BZ.txt create mode 100644 icu4c/source/data/locales/it_VA.txt create mode 100644 icu4c/source/data/region/es_BZ.txt create mode 100644 icu4c/source/data/unit/es_BZ.txt create mode 100644 icu4c/source/data/zone/es_BZ.txt diff --git a/icu4c/source/data/curr/es_BZ.txt b/icu4c/source/data/curr/es_BZ.txt new file mode 100644 index 00000000000..f3475ce92b8 --- /dev/null +++ b/icu4c/source/data/curr/es_BZ.txt @@ -0,0 +1,12 @@ +// © 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License +es_BZ{ + %%Parent{"es_419"} + Currencies{ + BZD{ + "$", + "dólar beliceño", + } + } + Version{"2.1.32.37"} +} diff --git a/icu4c/source/data/curr/resfiles.mk b/icu4c/source/data/curr/resfiles.mk index ebab478825f..a05ca8dede1 100644 --- a/icu4c/source/data/curr/resfiles.mk +++ b/icu4c/source/data/curr/resfiles.mk @@ -78,56 +78,56 @@ CURR_SOURCE = af.txt af_NA.txt agq.txt ak.txt\ en_TO.txt en_TT.txt en_TV.txt en_TZ.txt en_UG.txt\ en_VC.txt en_VG.txt en_VU.txt en_WS.txt en_ZA.txt\ en_ZM.txt en_ZW.txt eo.txt es.txt es_419.txt\ - es_AR.txt es_BO.txt es_BR.txt es_CL.txt es_CO.txt\ - es_CR.txt es_CU.txt es_DO.txt es_EC.txt es_GQ.txt\ - es_GT.txt es_HN.txt es_MX.txt es_NI.txt es_PA.txt\ - es_PE.txt es_PH.txt es_PR.txt es_PY.txt es_SV.txt\ - es_US.txt es_UY.txt es_VE.txt et.txt eu.txt\ - ewo.txt fa.txt fa_AF.txt ff.txt ff_GN.txt\ - ff_MR.txt fi.txt fil.txt fo.txt fo_DK.txt\ - fr.txt fr_BI.txt fr_CA.txt fr_CD.txt fr_DJ.txt\ - fr_DZ.txt fr_GN.txt fr_HT.txt fr_KM.txt fr_LU.txt\ - fr_MG.txt fr_MR.txt fr_MU.txt fr_RW.txt fr_SC.txt\ - fr_SY.txt fr_TN.txt fr_VU.txt fur.txt fy.txt\ - ga.txt gd.txt gl.txt gsw.txt gu.txt\ - guz.txt gv.txt ha.txt ha_GH.txt haw.txt\ - he.txt hi.txt hr.txt hr_BA.txt hsb.txt\ - hu.txt hy.txt id.txt ig.txt ii.txt\ - is.txt it.txt ja.txt jgo.txt jmc.txt\ - ka.txt kab.txt kam.txt kde.txt kea.txt\ - khq.txt ki.txt kk.txt kkj.txt kl.txt\ - kln.txt km.txt kn.txt ko.txt kok.txt\ - ks.txt ksb.txt ksf.txt ksh.txt kw.txt\ - ky.txt lag.txt lb.txt lg.txt lkt.txt\ - ln.txt ln_AO.txt lo.txt lrc.txt lt.txt\ - lu.txt luo.txt luy.txt lv.txt mas.txt\ - mas_TZ.txt mer.txt mfe.txt mg.txt mgh.txt\ - mgo.txt mk.txt ml.txt mn.txt mr.txt\ - ms.txt ms_BN.txt ms_SG.txt mt.txt mua.txt\ - my.txt mzn.txt naq.txt nb.txt nd.txt\ - nds.txt ne.txt nl.txt nl_AW.txt nl_BQ.txt\ - nl_CW.txt nl_SR.txt nl_SX.txt nmg.txt nn.txt\ - nnh.txt nus.txt nyn.txt om.txt om_KE.txt\ - or.txt os.txt os_RU.txt pa.txt pa_Arab.txt\ - pa_Guru.txt pl.txt ps.txt pt.txt pt_AO.txt\ - pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt pt_LU.txt\ - pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt\ - qu.txt qu_BO.txt qu_EC.txt rm.txt rn.txt\ - ro.txt ro_MD.txt rof.txt ru.txt ru_BY.txt\ - ru_KG.txt ru_KZ.txt ru_MD.txt rw.txt rwk.txt\ - sah.txt saq.txt sbp.txt se.txt se_SE.txt\ - seh.txt ses.txt sg.txt shi.txt shi_Latn.txt\ - shi_Tfng.txt si.txt sk.txt sl.txt smn.txt\ - sn.txt so.txt so_DJ.txt so_ET.txt so_KE.txt\ - sq.txt sq_MK.txt sr.txt sr_Cyrl.txt sr_Latn.txt\ - sv.txt sw.txt sw_CD.txt sw_UG.txt ta.txt\ - ta_LK.txt ta_MY.txt ta_SG.txt te.txt teo.txt\ - teo_KE.txt th.txt ti.txt ti_ER.txt to.txt\ - tr.txt twq.txt tzm.txt ug.txt uk.txt\ - ur.txt ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt\ - uz_Latn.txt vai.txt vai_Latn.txt vai_Vaii.txt vi.txt\ - vun.txt wae.txt xog.txt yav.txt yi.txt\ - yo.txt yo_BJ.txt yue.txt zgh.txt zh.txt\ - zh_Hans.txt zh_Hans_HK.txt zh_Hans_MO.txt zh_Hans_SG.txt zh_Hant.txt\ - zh_Hant_HK.txt zh_Hant_MO.txt zu.txt + es_AR.txt es_BO.txt es_BR.txt es_BZ.txt es_CL.txt\ + es_CO.txt es_CR.txt es_CU.txt es_DO.txt es_EC.txt\ + es_GQ.txt es_GT.txt es_HN.txt es_MX.txt es_NI.txt\ + es_PA.txt es_PE.txt es_PH.txt es_PR.txt es_PY.txt\ + es_SV.txt es_US.txt es_UY.txt es_VE.txt et.txt\ + eu.txt ewo.txt fa.txt fa_AF.txt ff.txt\ + ff_GN.txt ff_MR.txt fi.txt fil.txt fo.txt\ + fo_DK.txt fr.txt fr_BI.txt fr_CA.txt fr_CD.txt\ + fr_DJ.txt fr_DZ.txt fr_GN.txt fr_HT.txt fr_KM.txt\ + fr_LU.txt fr_MG.txt fr_MR.txt fr_MU.txt fr_RW.txt\ + fr_SC.txt fr_SY.txt fr_TN.txt fr_VU.txt fur.txt\ + fy.txt ga.txt gd.txt gl.txt gsw.txt\ + gu.txt guz.txt gv.txt ha.txt ha_GH.txt\ + haw.txt he.txt hi.txt hr.txt hr_BA.txt\ + hsb.txt hu.txt hy.txt id.txt ig.txt\ + ii.txt is.txt it.txt ja.txt jgo.txt\ + jmc.txt ka.txt kab.txt kam.txt kde.txt\ + kea.txt khq.txt ki.txt kk.txt kkj.txt\ + kl.txt kln.txt km.txt kn.txt ko.txt\ + kok.txt ks.txt ksb.txt ksf.txt ksh.txt\ + kw.txt ky.txt lag.txt lb.txt lg.txt\ + lkt.txt ln.txt ln_AO.txt lo.txt lrc.txt\ + lt.txt lu.txt luo.txt luy.txt lv.txt\ + mas.txt mas_TZ.txt mer.txt mfe.txt mg.txt\ + mgh.txt mgo.txt mk.txt ml.txt mn.txt\ + mr.txt ms.txt ms_BN.txt ms_SG.txt mt.txt\ + mua.txt my.txt mzn.txt naq.txt nb.txt\ + nd.txt nds.txt ne.txt nl.txt nl_AW.txt\ + nl_BQ.txt nl_CW.txt nl_SR.txt nl_SX.txt nmg.txt\ + nn.txt nnh.txt nus.txt nyn.txt om.txt\ + om_KE.txt or.txt os.txt os_RU.txt pa.txt\ + pa_Arab.txt pa_Guru.txt pl.txt ps.txt pt.txt\ + pt_AO.txt pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt\ + pt_LU.txt pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt\ + pt_TL.txt qu.txt qu_BO.txt qu_EC.txt rm.txt\ + rn.txt ro.txt ro_MD.txt rof.txt ru.txt\ + ru_BY.txt ru_KG.txt ru_KZ.txt ru_MD.txt rw.txt\ + rwk.txt sah.txt saq.txt sbp.txt se.txt\ + se_SE.txt seh.txt ses.txt sg.txt shi.txt\ + shi_Latn.txt shi_Tfng.txt si.txt sk.txt sl.txt\ + smn.txt sn.txt so.txt so_DJ.txt so_ET.txt\ + so_KE.txt sq.txt sq_MK.txt sr.txt sr_Cyrl.txt\ + sr_Latn.txt sv.txt sw.txt sw_CD.txt sw_UG.txt\ + ta.txt ta_LK.txt ta_MY.txt ta_SG.txt te.txt\ + teo.txt teo_KE.txt th.txt ti.txt ti_ER.txt\ + to.txt tr.txt twq.txt tzm.txt ug.txt\ + uk.txt ur.txt ur_IN.txt uz.txt uz_Arab.txt\ + uz_Cyrl.txt uz_Latn.txt vai.txt vai_Latn.txt vai_Vaii.txt\ + vi.txt vun.txt wae.txt xog.txt yav.txt\ + yi.txt yo.txt yo_BJ.txt yue.txt zgh.txt\ + zh.txt zh_Hans.txt zh_Hans_HK.txt zh_Hans_MO.txt zh_Hans_SG.txt\ + zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt diff --git a/icu4c/source/data/icu-config.xml b/icu4c/source/data/icu-config.xml index e2c3ad77b18..48a2420eea4 100644 --- a/icu4c/source/data/icu-config.xml +++ b/icu4c/source/data/icu-config.xml @@ -253,6 +253,7 @@ + @@ -397,6 +398,7 @@ + diff --git a/icu4c/source/data/lang/es_BZ.txt b/icu4c/source/data/lang/es_BZ.txt new file mode 100644 index 00000000000..7734598e064 --- /dev/null +++ b/icu4c/source/data/lang/es_BZ.txt @@ -0,0 +1,6 @@ +// © 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License +es_BZ{ + %%Parent{"es_419"} + Version{"2.1.32.37"} +} diff --git a/icu4c/source/data/lang/resfiles.mk b/icu4c/source/data/lang/resfiles.mk index d7f2a7c5f95..4a088f3450f 100644 --- a/icu4c/source/data/lang/resfiles.mk +++ b/icu4c/source/data/lang/resfiles.mk @@ -76,47 +76,47 @@ LANG_SOURCE = af.txt agq.txt ak.txt am.txt\ en_TT.txt en_TV.txt en_TZ.txt en_UG.txt en_VC.txt\ en_VG.txt en_VU.txt en_WS.txt en_ZA.txt en_ZM.txt\ en_ZW.txt eo.txt es.txt es_419.txt es_AR.txt\ - es_BO.txt es_BR.txt es_CL.txt es_CO.txt es_CR.txt\ - es_CU.txt es_DO.txt es_EC.txt es_GT.txt es_HN.txt\ - es_MX.txt es_NI.txt es_PA.txt es_PE.txt es_PR.txt\ - es_PY.txt es_SV.txt es_US.txt es_UY.txt es_VE.txt\ - et.txt eu.txt ewo.txt fa.txt fa_AF.txt\ - ff.txt fi.txt fil.txt fo.txt fr.txt\ - fr_BE.txt fr_CA.txt fr_CH.txt fur.txt fy.txt\ - ga.txt gd.txt gl.txt gsw.txt gu.txt\ - guz.txt gv.txt ha.txt haw.txt he.txt\ - hi.txt hr.txt hsb.txt hu.txt hy.txt\ - id.txt ig.txt ii.txt is.txt it.txt\ - ja.txt jgo.txt jmc.txt ka.txt kab.txt\ - kam.txt kde.txt kea.txt khq.txt ki.txt\ - kk.txt kkj.txt kl.txt kln.txt km.txt\ - kn.txt ko.txt kok.txt ks.txt ksb.txt\ - ksf.txt ksh.txt kw.txt ky.txt lag.txt\ - lb.txt lg.txt lkt.txt ln.txt lo.txt\ - lrc.txt lt.txt lu.txt luo.txt luy.txt\ - lv.txt mas.txt mer.txt mfe.txt mg.txt\ - mgh.txt mgo.txt mk.txt ml.txt mn.txt\ - mr.txt ms.txt mt.txt mua.txt my.txt\ - mzn.txt naq.txt nb.txt nd.txt nds.txt\ - ne.txt nl.txt nmg.txt nn.txt nnh.txt\ - nus.txt nyn.txt om.txt or.txt os.txt\ - pa.txt pa_Arab.txt pa_Guru.txt pl.txt ps.txt\ - pt.txt pt_AO.txt pt_CH.txt pt_CV.txt pt_GQ.txt\ - pt_GW.txt pt_LU.txt pt_MO.txt pt_MZ.txt pt_PT.txt\ - pt_ST.txt pt_TL.txt qu.txt rm.txt rn.txt\ - ro.txt ro_MD.txt rof.txt ru.txt rw.txt\ - rwk.txt sah.txt saq.txt sbp.txt se.txt\ - se_FI.txt seh.txt ses.txt sg.txt shi.txt\ - shi_Latn.txt shi_Tfng.txt si.txt sk.txt sl.txt\ - smn.txt sn.txt so.txt sq.txt sr.txt\ - sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_XK.txt sr_Latn.txt\ - sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_XK.txt sv.txt sv_FI.txt\ - sw.txt sw_CD.txt sw_KE.txt ta.txt te.txt\ - teo.txt th.txt ti.txt to.txt tr.txt\ - twq.txt tzm.txt ug.txt uk.txt ur.txt\ - ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt\ - vai.txt vai_Latn.txt vai_Vaii.txt vi.txt vun.txt\ - wae.txt xog.txt yav.txt yi.txt yo.txt\ - yo_BJ.txt yue.txt zgh.txt zh.txt zh_Hans.txt\ - zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt + es_BO.txt es_BR.txt es_BZ.txt es_CL.txt es_CO.txt\ + es_CR.txt es_CU.txt es_DO.txt es_EC.txt es_GT.txt\ + es_HN.txt es_MX.txt es_NI.txt es_PA.txt es_PE.txt\ + es_PR.txt es_PY.txt es_SV.txt es_US.txt es_UY.txt\ + es_VE.txt et.txt eu.txt ewo.txt fa.txt\ + fa_AF.txt ff.txt fi.txt fil.txt fo.txt\ + fr.txt fr_BE.txt fr_CA.txt fr_CH.txt fur.txt\ + fy.txt ga.txt gd.txt gl.txt gsw.txt\ + gu.txt guz.txt gv.txt ha.txt haw.txt\ + he.txt hi.txt hr.txt hsb.txt hu.txt\ + hy.txt id.txt ig.txt ii.txt is.txt\ + it.txt ja.txt jgo.txt jmc.txt ka.txt\ + kab.txt kam.txt kde.txt kea.txt khq.txt\ + ki.txt kk.txt kkj.txt kl.txt kln.txt\ + km.txt kn.txt ko.txt kok.txt ks.txt\ + ksb.txt ksf.txt ksh.txt kw.txt ky.txt\ + lag.txt lb.txt lg.txt lkt.txt ln.txt\ + lo.txt lrc.txt lt.txt lu.txt luo.txt\ + luy.txt lv.txt mas.txt mer.txt mfe.txt\ + mg.txt mgh.txt mgo.txt mk.txt ml.txt\ + mn.txt mr.txt ms.txt mt.txt mua.txt\ + my.txt mzn.txt naq.txt nb.txt nd.txt\ + nds.txt ne.txt nl.txt nmg.txt nn.txt\ + nnh.txt nus.txt nyn.txt om.txt or.txt\ + os.txt pa.txt pa_Arab.txt pa_Guru.txt pl.txt\ + ps.txt pt.txt pt_AO.txt pt_CH.txt pt_CV.txt\ + pt_GQ.txt pt_GW.txt pt_LU.txt pt_MO.txt pt_MZ.txt\ + pt_PT.txt pt_ST.txt pt_TL.txt qu.txt rm.txt\ + rn.txt ro.txt ro_MD.txt rof.txt ru.txt\ + rw.txt rwk.txt sah.txt saq.txt sbp.txt\ + se.txt se_FI.txt seh.txt ses.txt sg.txt\ + shi.txt shi_Latn.txt shi_Tfng.txt si.txt sk.txt\ + sl.txt smn.txt sn.txt so.txt sq.txt\ + sr.txt sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_XK.txt\ + sr_Latn.txt sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_XK.txt sv.txt\ + sv_FI.txt sw.txt sw_CD.txt sw_KE.txt ta.txt\ + te.txt teo.txt th.txt ti.txt to.txt\ + tr.txt twq.txt tzm.txt ug.txt uk.txt\ + ur.txt ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt\ + uz_Latn.txt vai.txt vai_Latn.txt vai_Vaii.txt vi.txt\ + vun.txt wae.txt xog.txt yav.txt yi.txt\ + yo.txt yo_BJ.txt yue.txt zgh.txt zh.txt\ + zh_Hans.txt zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt diff --git a/icu4c/source/data/locales/es_BZ.txt b/icu4c/source/data/locales/es_BZ.txt new file mode 100644 index 00000000000..7734598e064 --- /dev/null +++ b/icu4c/source/data/locales/es_BZ.txt @@ -0,0 +1,6 @@ +// © 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License +es_BZ{ + %%Parent{"es_419"} + Version{"2.1.32.37"} +} diff --git a/icu4c/source/data/locales/it_VA.txt b/icu4c/source/data/locales/it_VA.txt new file mode 100644 index 00000000000..b075886a761 --- /dev/null +++ b/icu4c/source/data/locales/it_VA.txt @@ -0,0 +1,5 @@ +// © 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License +it_VA{ + Version{"2.1.32.51"} +} diff --git a/icu4c/source/data/locales/resfiles.mk b/icu4c/source/data/locales/resfiles.mk index 964065ec021..b0ea2ce0249 100644 --- a/icu4c/source/data/locales/resfiles.mk +++ b/icu4c/source/data/locales/resfiles.mk @@ -89,99 +89,100 @@ GENRB_SOURCE = af.txt af_NA.txt af_ZA.txt agq.txt\ en_UG.txt en_UM.txt en_US.txt en_US_POSIX.txt en_VC.txt\ en_VG.txt en_VI.txt en_VU.txt en_WS.txt en_ZA.txt\ en_ZM.txt en_ZW.txt eo.txt es.txt es_419.txt\ - es_AR.txt es_BO.txt es_BR.txt es_CL.txt es_CO.txt\ - es_CR.txt es_CU.txt es_DO.txt es_EA.txt es_EC.txt\ - es_ES.txt es_GQ.txt es_GT.txt es_HN.txt es_IC.txt\ - es_MX.txt es_NI.txt es_PA.txt es_PE.txt es_PH.txt\ - es_PR.txt es_PY.txt es_SV.txt es_US.txt es_UY.txt\ - es_VE.txt et.txt et_EE.txt eu.txt eu_ES.txt\ - ewo.txt ewo_CM.txt fa.txt fa_AF.txt fa_IR.txt\ - ff.txt ff_CM.txt ff_GN.txt ff_MR.txt ff_SN.txt\ - fi.txt fi_FI.txt fil.txt fil_PH.txt fo.txt\ - fo_DK.txt fo_FO.txt fr.txt fr_BE.txt fr_BF.txt\ - fr_BI.txt fr_BJ.txt fr_BL.txt fr_CA.txt fr_CD.txt\ - fr_CF.txt fr_CG.txt fr_CH.txt fr_CI.txt fr_CM.txt\ - fr_DJ.txt fr_DZ.txt fr_FR.txt fr_GA.txt fr_GF.txt\ - fr_GN.txt fr_GP.txt fr_GQ.txt fr_HT.txt fr_KM.txt\ - fr_LU.txt fr_MA.txt fr_MC.txt fr_MF.txt fr_MG.txt\ - fr_ML.txt fr_MQ.txt fr_MR.txt fr_MU.txt fr_NC.txt\ - fr_NE.txt fr_PF.txt fr_PM.txt fr_RE.txt fr_RW.txt\ - fr_SC.txt fr_SN.txt fr_SY.txt fr_TD.txt fr_TG.txt\ - fr_TN.txt fr_VU.txt fr_WF.txt fr_YT.txt fur.txt\ - fur_IT.txt fy.txt fy_NL.txt ga.txt ga_IE.txt\ - gd.txt gd_GB.txt gl.txt gl_ES.txt gsw.txt\ - gsw_CH.txt gsw_FR.txt gsw_LI.txt gu.txt gu_IN.txt\ - guz.txt guz_KE.txt gv.txt gv_IM.txt ha.txt\ - ha_GH.txt ha_NE.txt ha_NG.txt haw.txt haw_US.txt\ - he.txt he_IL.txt hi.txt hi_IN.txt hr.txt\ - hr_BA.txt hr_HR.txt hsb.txt hsb_DE.txt hu.txt\ - hu_HU.txt hy.txt hy_AM.txt id.txt id_ID.txt\ - ig.txt ig_NG.txt ii.txt ii_CN.txt is.txt\ - is_IS.txt it.txt it_CH.txt it_IT.txt it_SM.txt\ - ja.txt ja_JP.txt jgo.txt jgo_CM.txt jmc.txt\ - jmc_TZ.txt ka.txt ka_GE.txt kab.txt kab_DZ.txt\ - kam.txt kam_KE.txt kde.txt kde_TZ.txt kea.txt\ - kea_CV.txt khq.txt khq_ML.txt ki.txt ki_KE.txt\ - kk.txt kk_KZ.txt kkj.txt kkj_CM.txt kl.txt\ - kl_GL.txt kln.txt kln_KE.txt km.txt km_KH.txt\ - kn.txt kn_IN.txt ko.txt ko_KP.txt ko_KR.txt\ - kok.txt kok_IN.txt ks.txt ks_IN.txt ksb.txt\ - ksb_TZ.txt ksf.txt ksf_CM.txt ksh.txt ksh_DE.txt\ - kw.txt kw_GB.txt ky.txt ky_KG.txt lag.txt\ - lag_TZ.txt lb.txt lb_LU.txt lg.txt lg_UG.txt\ - lkt.txt lkt_US.txt ln.txt ln_AO.txt ln_CD.txt\ - ln_CF.txt ln_CG.txt lo.txt lo_LA.txt lrc.txt\ - lrc_IQ.txt lrc_IR.txt lt.txt lt_LT.txt lu.txt\ - lu_CD.txt luo.txt luo_KE.txt luy.txt luy_KE.txt\ - lv.txt lv_LV.txt mas.txt mas_KE.txt mas_TZ.txt\ - mer.txt mer_KE.txt mfe.txt mfe_MU.txt mg.txt\ - mg_MG.txt mgh.txt mgh_MZ.txt mgo.txt mgo_CM.txt\ - mk.txt mk_MK.txt ml.txt ml_IN.txt mn.txt\ - mn_MN.txt mr.txt mr_IN.txt ms.txt ms_BN.txt\ - ms_MY.txt ms_SG.txt mt.txt mt_MT.txt mua.txt\ - mua_CM.txt my.txt my_MM.txt mzn.txt mzn_IR.txt\ - naq.txt naq_NA.txt nb.txt nb_NO.txt nb_SJ.txt\ - nd.txt nd_ZW.txt nds.txt nds_DE.txt nds_NL.txt\ - ne.txt ne_IN.txt ne_NP.txt nl.txt nl_AW.txt\ - nl_BE.txt nl_BQ.txt nl_CW.txt nl_NL.txt nl_SR.txt\ - nl_SX.txt nmg.txt nmg_CM.txt nn.txt nn_NO.txt\ - nnh.txt nnh_CM.txt nus.txt nus_SS.txt nyn.txt\ - nyn_UG.txt om.txt om_ET.txt om_KE.txt or.txt\ - or_IN.txt os.txt os_GE.txt os_RU.txt pa.txt\ - pa_Arab.txt pa_Arab_PK.txt pa_Guru.txt pa_Guru_IN.txt pl.txt\ - pl_PL.txt ps.txt ps_AF.txt pt.txt pt_AO.txt\ - pt_BR.txt pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt\ - pt_LU.txt pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt\ - pt_TL.txt qu.txt qu_BO.txt qu_EC.txt qu_PE.txt\ - rm.txt rm_CH.txt rn.txt rn_BI.txt ro.txt\ - ro_MD.txt ro_RO.txt rof.txt rof_TZ.txt ru.txt\ - ru_BY.txt ru_KG.txt ru_KZ.txt ru_MD.txt ru_RU.txt\ - ru_UA.txt rw.txt rw_RW.txt rwk.txt rwk_TZ.txt\ - sah.txt sah_RU.txt saq.txt saq_KE.txt sbp.txt\ - sbp_TZ.txt se.txt se_FI.txt se_NO.txt se_SE.txt\ - seh.txt seh_MZ.txt ses.txt ses_ML.txt sg.txt\ - sg_CF.txt shi.txt shi_Latn.txt shi_Latn_MA.txt shi_Tfng.txt\ - shi_Tfng_MA.txt si.txt si_LK.txt sk.txt sk_SK.txt\ - sl.txt sl_SI.txt smn.txt smn_FI.txt sn.txt\ - sn_ZW.txt so.txt so_DJ.txt so_ET.txt so_KE.txt\ - so_SO.txt sq.txt sq_AL.txt sq_MK.txt sq_XK.txt\ - sr.txt sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_RS.txt\ - sr_Cyrl_XK.txt sr_Latn.txt sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_RS.txt\ - sr_Latn_XK.txt sv.txt sv_AX.txt sv_FI.txt sv_SE.txt\ - sw.txt sw_CD.txt sw_KE.txt sw_TZ.txt sw_UG.txt\ - ta.txt ta_IN.txt ta_LK.txt ta_MY.txt ta_SG.txt\ - te.txt te_IN.txt teo.txt teo_KE.txt teo_UG.txt\ - th.txt th_TH.txt ti.txt ti_ER.txt ti_ET.txt\ - to.txt to_TO.txt tr.txt tr_CY.txt tr_TR.txt\ - twq.txt twq_NE.txt tzm.txt tzm_MA.txt ug.txt\ - ug_CN.txt uk.txt uk_UA.txt ur.txt ur_IN.txt\ - ur_PK.txt uz.txt uz_Arab.txt uz_Arab_AF.txt uz_Cyrl.txt\ - uz_Cyrl_UZ.txt uz_Latn.txt uz_Latn_UZ.txt vai.txt vai_Latn.txt\ - vai_Latn_LR.txt vai_Vaii.txt vai_Vaii_LR.txt vi.txt vi_VN.txt\ - vun.txt vun_TZ.txt wae.txt wae_CH.txt xog.txt\ - xog_UG.txt yav.txt yav_CM.txt yi.txt yi_001.txt\ - yo.txt yo_BJ.txt yo_NG.txt yue.txt yue_HK.txt\ - zgh.txt zgh_MA.txt zh.txt zh_Hans.txt zh_Hans_CN.txt\ - zh_Hans_HK.txt zh_Hans_MO.txt zh_Hans_SG.txt zh_Hant.txt zh_Hant_HK.txt\ - zh_Hant_MO.txt zh_Hant_TW.txt zu.txt zu_ZA.txt + es_AR.txt es_BO.txt es_BR.txt es_BZ.txt es_CL.txt\ + es_CO.txt es_CR.txt es_CU.txt es_DO.txt es_EA.txt\ + es_EC.txt es_ES.txt es_GQ.txt es_GT.txt es_HN.txt\ + es_IC.txt es_MX.txt es_NI.txt es_PA.txt es_PE.txt\ + es_PH.txt es_PR.txt es_PY.txt es_SV.txt es_US.txt\ + es_UY.txt es_VE.txt et.txt et_EE.txt eu.txt\ + eu_ES.txt ewo.txt ewo_CM.txt fa.txt fa_AF.txt\ + fa_IR.txt ff.txt ff_CM.txt ff_GN.txt ff_MR.txt\ + ff_SN.txt fi.txt fi_FI.txt fil.txt fil_PH.txt\ + fo.txt fo_DK.txt fo_FO.txt fr.txt fr_BE.txt\ + fr_BF.txt fr_BI.txt fr_BJ.txt fr_BL.txt fr_CA.txt\ + fr_CD.txt fr_CF.txt fr_CG.txt fr_CH.txt fr_CI.txt\ + fr_CM.txt fr_DJ.txt fr_DZ.txt fr_FR.txt fr_GA.txt\ + fr_GF.txt fr_GN.txt fr_GP.txt fr_GQ.txt fr_HT.txt\ + fr_KM.txt fr_LU.txt fr_MA.txt fr_MC.txt fr_MF.txt\ + fr_MG.txt fr_ML.txt fr_MQ.txt fr_MR.txt fr_MU.txt\ + fr_NC.txt fr_NE.txt fr_PF.txt fr_PM.txt fr_RE.txt\ + fr_RW.txt fr_SC.txt fr_SN.txt fr_SY.txt fr_TD.txt\ + fr_TG.txt fr_TN.txt fr_VU.txt fr_WF.txt fr_YT.txt\ + fur.txt fur_IT.txt fy.txt fy_NL.txt ga.txt\ + ga_IE.txt gd.txt gd_GB.txt gl.txt gl_ES.txt\ + gsw.txt gsw_CH.txt gsw_FR.txt gsw_LI.txt gu.txt\ + gu_IN.txt guz.txt guz_KE.txt gv.txt gv_IM.txt\ + ha.txt ha_GH.txt ha_NE.txt ha_NG.txt haw.txt\ + haw_US.txt he.txt he_IL.txt hi.txt hi_IN.txt\ + hr.txt hr_BA.txt hr_HR.txt hsb.txt hsb_DE.txt\ + hu.txt hu_HU.txt hy.txt hy_AM.txt id.txt\ + id_ID.txt ig.txt ig_NG.txt ii.txt ii_CN.txt\ + is.txt is_IS.txt it.txt it_CH.txt it_IT.txt\ + it_SM.txt it_VA.txt ja.txt ja_JP.txt jgo.txt\ + jgo_CM.txt jmc.txt jmc_TZ.txt ka.txt ka_GE.txt\ + kab.txt kab_DZ.txt kam.txt kam_KE.txt kde.txt\ + kde_TZ.txt kea.txt kea_CV.txt khq.txt khq_ML.txt\ + ki.txt ki_KE.txt kk.txt kk_KZ.txt kkj.txt\ + kkj_CM.txt kl.txt kl_GL.txt kln.txt kln_KE.txt\ + km.txt km_KH.txt kn.txt kn_IN.txt ko.txt\ + ko_KP.txt ko_KR.txt kok.txt kok_IN.txt ks.txt\ + ks_IN.txt ksb.txt ksb_TZ.txt ksf.txt ksf_CM.txt\ + ksh.txt ksh_DE.txt kw.txt kw_GB.txt ky.txt\ + ky_KG.txt lag.txt lag_TZ.txt lb.txt lb_LU.txt\ + lg.txt lg_UG.txt lkt.txt lkt_US.txt ln.txt\ + ln_AO.txt ln_CD.txt ln_CF.txt ln_CG.txt lo.txt\ + lo_LA.txt lrc.txt lrc_IQ.txt lrc_IR.txt lt.txt\ + lt_LT.txt lu.txt lu_CD.txt luo.txt luo_KE.txt\ + luy.txt luy_KE.txt lv.txt lv_LV.txt mas.txt\ + mas_KE.txt mas_TZ.txt mer.txt mer_KE.txt mfe.txt\ + mfe_MU.txt mg.txt mg_MG.txt mgh.txt mgh_MZ.txt\ + mgo.txt mgo_CM.txt mk.txt mk_MK.txt ml.txt\ + ml_IN.txt mn.txt mn_MN.txt mr.txt mr_IN.txt\ + ms.txt ms_BN.txt ms_MY.txt ms_SG.txt mt.txt\ + mt_MT.txt mua.txt mua_CM.txt my.txt my_MM.txt\ + mzn.txt mzn_IR.txt naq.txt naq_NA.txt nb.txt\ + nb_NO.txt nb_SJ.txt nd.txt nd_ZW.txt nds.txt\ + nds_DE.txt nds_NL.txt ne.txt ne_IN.txt ne_NP.txt\ + nl.txt nl_AW.txt nl_BE.txt nl_BQ.txt nl_CW.txt\ + nl_NL.txt nl_SR.txt nl_SX.txt nmg.txt nmg_CM.txt\ + nn.txt nn_NO.txt nnh.txt nnh_CM.txt nus.txt\ + nus_SS.txt nyn.txt nyn_UG.txt om.txt om_ET.txt\ + om_KE.txt or.txt or_IN.txt os.txt os_GE.txt\ + os_RU.txt pa.txt pa_Arab.txt pa_Arab_PK.txt pa_Guru.txt\ + pa_Guru_IN.txt pl.txt pl_PL.txt ps.txt ps_AF.txt\ + pt.txt pt_AO.txt pt_BR.txt pt_CH.txt pt_CV.txt\ + pt_GQ.txt pt_GW.txt pt_LU.txt pt_MO.txt pt_MZ.txt\ + pt_PT.txt pt_ST.txt pt_TL.txt qu.txt qu_BO.txt\ + qu_EC.txt qu_PE.txt rm.txt rm_CH.txt rn.txt\ + rn_BI.txt ro.txt ro_MD.txt ro_RO.txt rof.txt\ + rof_TZ.txt ru.txt ru_BY.txt ru_KG.txt ru_KZ.txt\ + ru_MD.txt ru_RU.txt ru_UA.txt rw.txt rw_RW.txt\ + rwk.txt rwk_TZ.txt sah.txt sah_RU.txt saq.txt\ + saq_KE.txt sbp.txt sbp_TZ.txt se.txt se_FI.txt\ + se_NO.txt se_SE.txt seh.txt seh_MZ.txt ses.txt\ + ses_ML.txt sg.txt sg_CF.txt shi.txt shi_Latn.txt\ + shi_Latn_MA.txt shi_Tfng.txt shi_Tfng_MA.txt si.txt si_LK.txt\ + sk.txt sk_SK.txt sl.txt sl_SI.txt smn.txt\ + smn_FI.txt sn.txt sn_ZW.txt so.txt so_DJ.txt\ + so_ET.txt so_KE.txt so_SO.txt sq.txt sq_AL.txt\ + sq_MK.txt sq_XK.txt sr.txt sr_Cyrl.txt sr_Cyrl_BA.txt\ + sr_Cyrl_ME.txt sr_Cyrl_RS.txt sr_Cyrl_XK.txt sr_Latn.txt sr_Latn_BA.txt\ + sr_Latn_ME.txt sr_Latn_RS.txt sr_Latn_XK.txt sv.txt sv_AX.txt\ + sv_FI.txt sv_SE.txt sw.txt sw_CD.txt sw_KE.txt\ + sw_TZ.txt sw_UG.txt ta.txt ta_IN.txt ta_LK.txt\ + ta_MY.txt ta_SG.txt te.txt te_IN.txt teo.txt\ + teo_KE.txt teo_UG.txt th.txt th_TH.txt ti.txt\ + ti_ER.txt ti_ET.txt to.txt to_TO.txt tr.txt\ + tr_CY.txt tr_TR.txt twq.txt twq_NE.txt tzm.txt\ + tzm_MA.txt ug.txt ug_CN.txt uk.txt uk_UA.txt\ + ur.txt ur_IN.txt ur_PK.txt uz.txt uz_Arab.txt\ + uz_Arab_AF.txt uz_Cyrl.txt uz_Cyrl_UZ.txt uz_Latn.txt uz_Latn_UZ.txt\ + vai.txt vai_Latn.txt vai_Latn_LR.txt vai_Vaii.txt vai_Vaii_LR.txt\ + vi.txt vi_VN.txt vun.txt vun_TZ.txt wae.txt\ + wae_CH.txt xog.txt xog_UG.txt yav.txt yav_CM.txt\ + yi.txt yi_001.txt yo.txt yo_BJ.txt yo_NG.txt\ + yue.txt yue_HK.txt zgh.txt zgh_MA.txt zh.txt\ + zh_Hans.txt zh_Hans_CN.txt zh_Hans_HK.txt zh_Hans_MO.txt zh_Hans_SG.txt\ + zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zh_Hant_TW.txt zu.txt\ + zu_ZA.txt diff --git a/icu4c/source/data/region/es_BZ.txt b/icu4c/source/data/region/es_BZ.txt new file mode 100644 index 00000000000..7734598e064 --- /dev/null +++ b/icu4c/source/data/region/es_BZ.txt @@ -0,0 +1,6 @@ +// © 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License +es_BZ{ + %%Parent{"es_419"} + Version{"2.1.32.37"} +} diff --git a/icu4c/source/data/region/resfiles.mk b/icu4c/source/data/region/resfiles.mk index 6a38276c209..082bc48aef8 100644 --- a/icu4c/source/data/region/resfiles.mk +++ b/icu4c/source/data/region/resfiles.mk @@ -76,47 +76,47 @@ REGION_SOURCE = af.txt agq.txt ak.txt am.txt\ en_TV.txt en_TZ.txt en_UG.txt en_VC.txt en_VG.txt\ en_VU.txt en_WS.txt en_ZA.txt en_ZM.txt en_ZW.txt\ eo.txt es.txt es_419.txt es_AR.txt es_BO.txt\ - es_BR.txt es_CL.txt es_CO.txt es_CR.txt es_CU.txt\ - es_DO.txt es_EC.txt es_GT.txt es_HN.txt es_MX.txt\ - es_NI.txt es_PA.txt es_PE.txt es_PR.txt es_PY.txt\ - es_SV.txt es_US.txt es_UY.txt es_VE.txt et.txt\ - eu.txt ewo.txt fa.txt fa_AF.txt ff.txt\ - fi.txt fil.txt fo.txt fr.txt fr_BE.txt\ - fr_CA.txt fur.txt fy.txt ga.txt gd.txt\ - gl.txt gsw.txt gu.txt guz.txt gv.txt\ - ha.txt haw.txt he.txt hi.txt hr.txt\ - hsb.txt hu.txt hy.txt id.txt ig.txt\ - ii.txt is.txt it.txt ja.txt jgo.txt\ - jmc.txt ka.txt kab.txt kam.txt kde.txt\ - kea.txt khq.txt ki.txt kk.txt kkj.txt\ - kl.txt kln.txt km.txt kn.txt ko.txt\ - ko_KP.txt kok.txt ks.txt ksb.txt ksf.txt\ - ksh.txt kw.txt ky.txt lag.txt lb.txt\ - lg.txt lkt.txt ln.txt lo.txt lrc.txt\ - lt.txt lu.txt luo.txt luy.txt lv.txt\ - mas.txt mer.txt mfe.txt mg.txt mgh.txt\ - mgo.txt mk.txt ml.txt mn.txt mr.txt\ - ms.txt mt.txt mua.txt my.txt mzn.txt\ - naq.txt nb.txt nd.txt nds.txt ne.txt\ - nl.txt nmg.txt nn.txt nnh.txt nus.txt\ - nyn.txt om.txt or.txt os.txt pa.txt\ - pa_Arab.txt pa_Guru.txt pl.txt ps.txt pt.txt\ - pt_AO.txt pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt\ - pt_LU.txt pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt\ - pt_TL.txt qu.txt rm.txt rn.txt ro.txt\ - ro_MD.txt rof.txt ru.txt ru_UA.txt rw.txt\ - rwk.txt sah.txt saq.txt sbp.txt se.txt\ - se_FI.txt seh.txt ses.txt sg.txt shi.txt\ - shi_Latn.txt shi_Tfng.txt si.txt sk.txt sl.txt\ - smn.txt sn.txt so.txt sq.txt sr.txt\ - sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_XK.txt sr_Latn.txt\ - sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_XK.txt sv.txt sw.txt\ - sw_CD.txt sw_KE.txt ta.txt te.txt teo.txt\ - th.txt ti.txt to.txt tr.txt twq.txt\ - tzm.txt ug.txt uk.txt ur.txt ur_IN.txt\ - uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt vai.txt\ - vai_Latn.txt vai_Vaii.txt vi.txt vun.txt wae.txt\ - xog.txt yav.txt yi.txt yo.txt yo_BJ.txt\ - yue.txt zgh.txt zh.txt zh_Hans.txt zh_Hant.txt\ - zh_Hant_HK.txt zh_Hant_MO.txt zu.txt + es_BR.txt es_BZ.txt es_CL.txt es_CO.txt es_CR.txt\ + es_CU.txt es_DO.txt es_EC.txt es_GT.txt es_HN.txt\ + es_MX.txt es_NI.txt es_PA.txt es_PE.txt es_PR.txt\ + es_PY.txt es_SV.txt es_US.txt es_UY.txt es_VE.txt\ + et.txt eu.txt ewo.txt fa.txt fa_AF.txt\ + ff.txt fi.txt fil.txt fo.txt fr.txt\ + fr_BE.txt fr_CA.txt fur.txt fy.txt ga.txt\ + gd.txt gl.txt gsw.txt gu.txt guz.txt\ + gv.txt ha.txt haw.txt he.txt hi.txt\ + hr.txt hsb.txt hu.txt hy.txt id.txt\ + ig.txt ii.txt is.txt it.txt ja.txt\ + jgo.txt jmc.txt ka.txt kab.txt kam.txt\ + kde.txt kea.txt khq.txt ki.txt kk.txt\ + kkj.txt kl.txt kln.txt km.txt kn.txt\ + ko.txt ko_KP.txt kok.txt ks.txt ksb.txt\ + ksf.txt ksh.txt kw.txt ky.txt lag.txt\ + lb.txt lg.txt lkt.txt ln.txt lo.txt\ + lrc.txt lt.txt lu.txt luo.txt luy.txt\ + lv.txt mas.txt mer.txt mfe.txt mg.txt\ + mgh.txt mgo.txt mk.txt ml.txt mn.txt\ + mr.txt ms.txt mt.txt mua.txt my.txt\ + mzn.txt naq.txt nb.txt nd.txt nds.txt\ + ne.txt nl.txt nmg.txt nn.txt nnh.txt\ + nus.txt nyn.txt om.txt or.txt os.txt\ + pa.txt pa_Arab.txt pa_Guru.txt pl.txt ps.txt\ + pt.txt pt_AO.txt pt_CH.txt pt_CV.txt pt_GQ.txt\ + pt_GW.txt pt_LU.txt pt_MO.txt pt_MZ.txt pt_PT.txt\ + pt_ST.txt pt_TL.txt qu.txt rm.txt rn.txt\ + ro.txt ro_MD.txt rof.txt ru.txt ru_UA.txt\ + rw.txt rwk.txt sah.txt saq.txt sbp.txt\ + se.txt se_FI.txt seh.txt ses.txt sg.txt\ + shi.txt shi_Latn.txt shi_Tfng.txt si.txt sk.txt\ + sl.txt smn.txt sn.txt so.txt sq.txt\ + sr.txt sr_Cyrl.txt sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_XK.txt\ + sr_Latn.txt sr_Latn_BA.txt sr_Latn_ME.txt sr_Latn_XK.txt sv.txt\ + sw.txt sw_CD.txt sw_KE.txt ta.txt te.txt\ + teo.txt th.txt ti.txt to.txt tr.txt\ + twq.txt tzm.txt ug.txt uk.txt ur.txt\ + ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt\ + vai.txt vai_Latn.txt vai_Vaii.txt vi.txt vun.txt\ + wae.txt xog.txt yav.txt yi.txt yo.txt\ + yo_BJ.txt yue.txt zgh.txt zh.txt zh_Hans.txt\ + zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt diff --git a/icu4c/source/data/unit/es_BZ.txt b/icu4c/source/data/unit/es_BZ.txt new file mode 100644 index 00000000000..7734598e064 --- /dev/null +++ b/icu4c/source/data/unit/es_BZ.txt @@ -0,0 +1,6 @@ +// © 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License +es_BZ{ + %%Parent{"es_419"} + Version{"2.1.32.37"} +} diff --git a/icu4c/source/data/unit/resfiles.mk b/icu4c/source/data/unit/resfiles.mk index e582ab52af5..7ff973986af 100644 --- a/icu4c/source/data/unit/resfiles.mk +++ b/icu4c/source/data/unit/resfiles.mk @@ -76,45 +76,45 @@ UNIT_SOURCE = af.txt agq.txt ak.txt am.txt\ en_TV.txt en_TZ.txt en_UG.txt en_VC.txt en_VG.txt\ en_VU.txt en_WS.txt en_ZA.txt en_ZM.txt en_ZW.txt\ eo.txt es.txt es_419.txt es_AR.txt es_BO.txt\ - es_BR.txt es_CL.txt es_CO.txt es_CR.txt es_CU.txt\ - es_DO.txt es_EC.txt es_GT.txt es_HN.txt es_MX.txt\ - es_NI.txt es_PA.txt es_PE.txt es_PR.txt es_PY.txt\ - es_SV.txt es_US.txt es_UY.txt es_VE.txt et.txt\ - eu.txt ewo.txt fa.txt ff.txt fi.txt\ - fil.txt fo.txt fr.txt fr_CA.txt fr_HT.txt\ - fur.txt fy.txt ga.txt gd.txt gl.txt\ - gsw.txt gu.txt guz.txt gv.txt ha.txt\ - haw.txt he.txt hi.txt hr.txt hsb.txt\ - hu.txt hy.txt id.txt ig.txt ii.txt\ - is.txt it.txt ja.txt jgo.txt jmc.txt\ - ka.txt kab.txt kam.txt kde.txt kea.txt\ - khq.txt ki.txt kk.txt kkj.txt kl.txt\ - kln.txt km.txt kn.txt ko.txt kok.txt\ - ks.txt ksb.txt ksf.txt ksh.txt kw.txt\ - ky.txt lag.txt lb.txt lg.txt lkt.txt\ - ln.txt lo.txt lrc.txt lt.txt lu.txt\ - luo.txt luy.txt lv.txt mas.txt mer.txt\ - mfe.txt mg.txt mgh.txt mgo.txt mk.txt\ - ml.txt mn.txt mr.txt ms.txt mt.txt\ - mua.txt my.txt mzn.txt naq.txt nb.txt\ - nd.txt nds.txt ne.txt nl.txt nmg.txt\ - nn.txt nnh.txt nus.txt nyn.txt om.txt\ - or.txt os.txt pa.txt pa_Arab.txt pa_Guru.txt\ - pl.txt ps.txt pt.txt pt_AO.txt pt_CH.txt\ - pt_CV.txt pt_GQ.txt pt_GW.txt pt_LU.txt pt_MO.txt\ - pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt qu.txt\ - rm.txt rn.txt ro.txt ro_MD.txt rof.txt\ - ru.txt rw.txt rwk.txt sah.txt saq.txt\ - sbp.txt se.txt seh.txt ses.txt sg.txt\ - shi.txt shi_Latn.txt shi_Tfng.txt si.txt sk.txt\ - sl.txt smn.txt sn.txt so.txt sq.txt\ - sr.txt sr_Cyrl.txt sr_Latn.txt sv.txt sv_FI.txt\ - sw.txt ta.txt te.txt teo.txt th.txt\ - ti.txt to.txt tr.txt twq.txt tzm.txt\ - ug.txt uk.txt ur.txt ur_IN.txt uz.txt\ - uz_Arab.txt uz_Cyrl.txt uz_Latn.txt vai.txt vai_Latn.txt\ - vai_Vaii.txt vi.txt vun.txt wae.txt xog.txt\ - yav.txt yi.txt yo.txt yue.txt zgh.txt\ - zh.txt zh_Hans.txt zh_Hans_HK.txt zh_Hans_MO.txt zh_Hans_SG.txt\ - zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt + es_BR.txt es_BZ.txt es_CL.txt es_CO.txt es_CR.txt\ + es_CU.txt es_DO.txt es_EC.txt es_GT.txt es_HN.txt\ + es_MX.txt es_NI.txt es_PA.txt es_PE.txt es_PR.txt\ + es_PY.txt es_SV.txt es_US.txt es_UY.txt es_VE.txt\ + et.txt eu.txt ewo.txt fa.txt ff.txt\ + fi.txt fil.txt fo.txt fr.txt fr_CA.txt\ + fr_HT.txt fur.txt fy.txt ga.txt gd.txt\ + gl.txt gsw.txt gu.txt guz.txt gv.txt\ + ha.txt haw.txt he.txt hi.txt hr.txt\ + hsb.txt hu.txt hy.txt id.txt ig.txt\ + ii.txt is.txt it.txt ja.txt jgo.txt\ + jmc.txt ka.txt kab.txt kam.txt kde.txt\ + kea.txt khq.txt ki.txt kk.txt kkj.txt\ + kl.txt kln.txt km.txt kn.txt ko.txt\ + kok.txt ks.txt ksb.txt ksf.txt ksh.txt\ + kw.txt ky.txt lag.txt lb.txt lg.txt\ + lkt.txt ln.txt lo.txt lrc.txt lt.txt\ + lu.txt luo.txt luy.txt lv.txt mas.txt\ + mer.txt mfe.txt mg.txt mgh.txt mgo.txt\ + mk.txt ml.txt mn.txt mr.txt ms.txt\ + mt.txt mua.txt my.txt mzn.txt naq.txt\ + nb.txt nd.txt nds.txt ne.txt nl.txt\ + nmg.txt nn.txt nnh.txt nus.txt nyn.txt\ + om.txt or.txt os.txt pa.txt pa_Arab.txt\ + pa_Guru.txt pl.txt ps.txt pt.txt pt_AO.txt\ + pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt pt_LU.txt\ + pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt\ + qu.txt rm.txt rn.txt ro.txt ro_MD.txt\ + rof.txt ru.txt rw.txt rwk.txt sah.txt\ + saq.txt sbp.txt se.txt seh.txt ses.txt\ + sg.txt shi.txt shi_Latn.txt shi_Tfng.txt si.txt\ + sk.txt sl.txt smn.txt sn.txt so.txt\ + sq.txt sr.txt sr_Cyrl.txt sr_Latn.txt sv.txt\ + sv_FI.txt sw.txt ta.txt te.txt teo.txt\ + th.txt ti.txt to.txt tr.txt twq.txt\ + tzm.txt ug.txt uk.txt ur.txt ur_IN.txt\ + uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt vai.txt\ + vai_Latn.txt vai_Vaii.txt vi.txt vun.txt wae.txt\ + xog.txt yav.txt yi.txt yo.txt yue.txt\ + zgh.txt zh.txt zh_Hans.txt zh_Hans_HK.txt zh_Hans_MO.txt\ + zh_Hans_SG.txt zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt diff --git a/icu4c/source/data/zone/es_BZ.txt b/icu4c/source/data/zone/es_BZ.txt new file mode 100644 index 00000000000..7734598e064 --- /dev/null +++ b/icu4c/source/data/zone/es_BZ.txt @@ -0,0 +1,6 @@ +// © 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License +es_BZ{ + %%Parent{"es_419"} + Version{"2.1.32.37"} +} diff --git a/icu4c/source/data/zone/resfiles.mk b/icu4c/source/data/zone/resfiles.mk index b927e3e279f..c38a013c486 100644 --- a/icu4c/source/data/zone/resfiles.mk +++ b/icu4c/source/data/zone/resfiles.mk @@ -76,46 +76,46 @@ ZONE_SOURCE = af.txt agq.txt ak.txt am.txt\ en_TO.txt en_TT.txt en_TV.txt en_TZ.txt en_UG.txt\ en_VC.txt en_VG.txt en_VU.txt en_WS.txt en_ZA.txt\ en_ZM.txt en_ZW.txt eo.txt es.txt es_419.txt\ - es_AR.txt es_BO.txt es_BR.txt es_CL.txt es_CO.txt\ - es_CR.txt es_CU.txt es_DO.txt es_EC.txt es_GT.txt\ - es_HN.txt es_MX.txt es_NI.txt es_PA.txt es_PE.txt\ - es_PR.txt es_PY.txt es_SV.txt es_US.txt es_UY.txt\ - es_VE.txt et.txt eu.txt ewo.txt fa.txt\ - ff.txt fi.txt fil.txt fo.txt fr.txt\ - fr_CA.txt fr_GF.txt fur.txt fy.txt ga.txt\ - gd.txt gl.txt gsw.txt gu.txt guz.txt\ - gv.txt ha.txt haw.txt he.txt hi.txt\ - hr.txt hsb.txt hu.txt hy.txt id.txt\ - ig.txt ii.txt is.txt it.txt ja.txt\ - jgo.txt jmc.txt ka.txt kab.txt kam.txt\ - kde.txt kea.txt khq.txt ki.txt kk.txt\ - kkj.txt kl.txt kln.txt km.txt kn.txt\ - ko.txt ko_KP.txt kok.txt ks.txt ksb.txt\ - ksf.txt ksh.txt kw.txt ky.txt lag.txt\ - lb.txt lg.txt lkt.txt ln.txt lo.txt\ - lrc.txt lt.txt lu.txt luo.txt luy.txt\ - lv.txt mas.txt mer.txt mfe.txt mg.txt\ - mgh.txt mgo.txt mk.txt ml.txt mn.txt\ - mr.txt ms.txt mt.txt mua.txt my.txt\ - mzn.txt naq.txt nb.txt nd.txt nds.txt\ - ne.txt ne_IN.txt nl.txt nl_SR.txt nmg.txt\ - nn.txt nnh.txt nus.txt nyn.txt om.txt\ - or.txt os.txt pa.txt pa_Arab.txt pa_Guru.txt\ - pl.txt ps.txt pt.txt pt_AO.txt pt_CH.txt\ - pt_CV.txt pt_GQ.txt pt_GW.txt pt_LU.txt pt_MO.txt\ - pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt qu.txt\ - qu_BO.txt qu_EC.txt rm.txt rn.txt ro.txt\ - rof.txt ru.txt rw.txt rwk.txt sah.txt\ - saq.txt sbp.txt se.txt seh.txt ses.txt\ - sg.txt shi.txt shi_Latn.txt shi_Tfng.txt si.txt\ - sk.txt sl.txt smn.txt sn.txt so.txt\ - sq.txt sr.txt sr_Cyrl.txt sr_Latn.txt sv.txt\ - sw.txt ta.txt ta_MY.txt ta_SG.txt te.txt\ - teo.txt th.txt ti.txt to.txt tr.txt\ - twq.txt tzm.txt ug.txt uk.txt ur.txt\ - ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt\ - vai.txt vai_Latn.txt vai_Vaii.txt vi.txt vun.txt\ - wae.txt xog.txt yav.txt yi.txt yo.txt\ - yue.txt zgh.txt zh.txt zh_Hans.txt zh_Hans_SG.txt\ - zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt + es_AR.txt es_BO.txt es_BR.txt es_BZ.txt es_CL.txt\ + es_CO.txt es_CR.txt es_CU.txt es_DO.txt es_EC.txt\ + es_GT.txt es_HN.txt es_MX.txt es_NI.txt es_PA.txt\ + es_PE.txt es_PR.txt es_PY.txt es_SV.txt es_US.txt\ + es_UY.txt es_VE.txt et.txt eu.txt ewo.txt\ + fa.txt ff.txt fi.txt fil.txt fo.txt\ + fr.txt fr_CA.txt fr_GF.txt fur.txt fy.txt\ + ga.txt gd.txt gl.txt gsw.txt gu.txt\ + guz.txt gv.txt ha.txt haw.txt he.txt\ + hi.txt hr.txt hsb.txt hu.txt hy.txt\ + id.txt ig.txt ii.txt is.txt it.txt\ + ja.txt jgo.txt jmc.txt ka.txt kab.txt\ + kam.txt kde.txt kea.txt khq.txt ki.txt\ + kk.txt kkj.txt kl.txt kln.txt km.txt\ + kn.txt ko.txt ko_KP.txt kok.txt ks.txt\ + ksb.txt ksf.txt ksh.txt kw.txt ky.txt\ + lag.txt lb.txt lg.txt lkt.txt ln.txt\ + lo.txt lrc.txt lt.txt lu.txt luo.txt\ + luy.txt lv.txt mas.txt mer.txt mfe.txt\ + mg.txt mgh.txt mgo.txt mk.txt ml.txt\ + mn.txt mr.txt ms.txt mt.txt mua.txt\ + my.txt mzn.txt naq.txt nb.txt nd.txt\ + nds.txt ne.txt ne_IN.txt nl.txt nl_SR.txt\ + nmg.txt nn.txt nnh.txt nus.txt nyn.txt\ + om.txt or.txt os.txt pa.txt pa_Arab.txt\ + pa_Guru.txt pl.txt ps.txt pt.txt pt_AO.txt\ + pt_CH.txt pt_CV.txt pt_GQ.txt pt_GW.txt pt_LU.txt\ + pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt pt_TL.txt\ + qu.txt qu_BO.txt qu_EC.txt rm.txt rn.txt\ + ro.txt rof.txt ru.txt rw.txt rwk.txt\ + sah.txt saq.txt sbp.txt se.txt seh.txt\ + ses.txt sg.txt shi.txt shi_Latn.txt shi_Tfng.txt\ + si.txt sk.txt sl.txt smn.txt sn.txt\ + so.txt sq.txt sr.txt sr_Cyrl.txt sr_Latn.txt\ + sv.txt sw.txt ta.txt ta_MY.txt ta_SG.txt\ + te.txt teo.txt th.txt ti.txt to.txt\ + tr.txt twq.txt tzm.txt ug.txt uk.txt\ + ur.txt ur_IN.txt uz.txt uz_Arab.txt uz_Cyrl.txt\ + uz_Latn.txt vai.txt vai_Latn.txt vai_Vaii.txt vi.txt\ + vun.txt wae.txt xog.txt yav.txt yi.txt\ + yo.txt yue.txt zgh.txt zh.txt zh_Hans.txt\ + zh_Hans_SG.txt zh_Hant.txt zh_Hant_HK.txt zh_Hant_MO.txt zu.txt diff --git a/icu4j/main/shared/data/icudata.jar b/icu4j/main/shared/data/icudata.jar index 87a679a0b95..caa786027c7 100755 --- 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:88c822b919d4c929386735e4cf6d95194bf20dba17cfe4aa93d4f46a08d2a5d4 -size 12155049 +oid sha256:b7b2a9e282f3f3296f80ef40391df4d5a6f161bdebe6270b73e7bcc68db124ac +size 12155212 From 782e4ff95e0cabbdf37f5fb612cfe87df9eed5ed Mon Sep 17 00:00:00 2001 From: Markus Scherer Date: Tue, 7 Mar 2017 22:57:46 +0000 Subject: [PATCH 5/5] ICU-12922 bidi explicit level 0: lift it up to resolved paragraph level except leave it at 0 for paragraph separators X-SVN-Rev: 39741 --- icu4c/source/common/ubidi.cpp | 52 +++++++--- icu4c/source/common/unicode/ubidi.h | 9 +- icu4c/source/test/cintltst/cbiditst.c | 23 +++++ .../core/src/com/ibm/icu/text/Bidi.java | 96 ++++++++++++------- .../com/ibm/icu/dev/test/bidi/TestBidi.java | 20 +++- 5 files changed, 145 insertions(+), 55 deletions(-) diff --git a/icu4c/source/common/ubidi.cpp b/icu4c/source/common/ubidi.cpp index 29153499b0d..8e2fc36e5f1 100644 --- a/icu4c/source/common/ubidi.cpp +++ b/icu4c/source/common/ubidi.cpp @@ -1348,18 +1348,20 @@ resolveExplicitLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) { static UBiDiDirection checkExplicitLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) { DirProp *dirProps=pBiDi->dirProps; - DirProp dirProp; UBiDiLevel *levels=pBiDi->levels; int32_t isolateCount=0; - int32_t i, length=pBiDi->length; + int32_t length=pBiDi->length; Flags flags=0; /* collect all directionalities in the text */ - UBiDiLevel level; pBiDi->isolateCount=0; - for(i=0; i paras[0].limit; + int32_t currentParaLevel = pBiDi->paraLevel; + + for(int32_t i=0; i pBiDi->isolateCount) @@ -1369,21 +1371,41 @@ checkExplicitLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) { isolateCount--; else if(dirProp==B) isolateCount=0; - if(level&UBIDI_LEVEL_OVERRIDE) { + + // optimized version of int32_t currentParaLevel = GET_PARALEVEL(pBiDi, i); + if (pBiDi->defaultParaLevel != 0 && + i == currentParaLimit && (currentParaIndex + 1) < pBiDi->paraCount) { + currentParaLevel = pBiDi->paras[++currentParaIndex].level; + currentParaLimit = pBiDi->paras[currentParaIndex].limit; + } + + UBiDiLevel overrideFlag = level & UBIDI_LEVEL_OVERRIDE; + level &= ~UBIDI_LEVEL_OVERRIDE; + if (level < currentParaLevel || UBIDI_MAX_EXPLICIT_LEVEL < level) { + if (level == 0) { + if (dirProp == B) { + // Paragraph separators are ok with explicit level 0. + // Prevents reordering of paragraphs. + } else { + // Treat explicit level 0 as a wildcard for the paragraph level. + // Avoid making the caller guess what the paragraph level would be. + level = (UBiDiLevel)currentParaLevel; + levels[i] = level | overrideFlag; + } + } else { + // 1 <= level < currentParaLevel or UBIDI_MAX_EXPLICIT_LEVEL < level + /* level out of bounds */ + *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; + return UBIDI_LTR; + } + } + if (overrideFlag != 0) { /* keep the override flag in levels[i] but adjust the flags */ - level&=~UBIDI_LEVEL_OVERRIDE; /* make the range check below simpler */ flags|=DIRPROP_FLAG_O(level); } else { /* set the flags */ flags|=DIRPROP_FLAG_E(level)|DIRPROP_FLAG(dirProp); } - if((level paraLevel); diff --git a/icu4c/source/common/unicode/ubidi.h b/icu4c/source/common/unicode/ubidi.h index 3f29ecdc47e..3b255f928b6 100644 --- a/icu4c/source/common/unicode/ubidi.h +++ b/icu4c/source/common/unicode/ubidi.h @@ -1196,11 +1196,12 @@ ubidi_setContext(UBiDi *pBiDi, * A level overrides the directional property of its corresponding * (same index) character if the level has the * #UBIDI_LEVEL_OVERRIDE
bit set.
- * Except for that bit, it must be + * Aside from that bit, it must be *paraLevel<=embeddingLevels[]<=UBIDI_MAX_EXPLICIT_LEVEL
, - * with one exception: a level of zero may be specified for a paragraph - * separator even ifparaLevel>0
when multiple paragraphs - * are submitted in the same call toubidi_setPara()
.
+ * except that level 0 is always allowed. + * Level 0 for a paragraph separator prevents reordering of paragraphs. + * Level 0 for other characters is treated as a wildcard + * and is lifted up to the resolved level of the surrounding paragraph.
* Caution: A copy of this pointer, not of the levels, * will be stored in theUBiDi
object; * theembeddingLevels
array must not be diff --git a/icu4c/source/test/cintltst/cbiditst.c b/icu4c/source/test/cintltst/cbiditst.c index e2a7d4e753a..a902da7a493 100644 --- a/icu4c/source/test/cintltst/cbiditst.c +++ b/icu4c/source/test/cintltst/cbiditst.c @@ -90,6 +90,7 @@ static void testContext(void); static void doTailTest(void); static void testBracketOverflow(void); +static void TestExplicitLevel0(); /* new BIDI API */ static void testReorderingMode(void); @@ -138,6 +139,7 @@ addComplexTest(TestNode** root) { addTest(root, testGetBaseDirection, "complex/bidi/testGetBaseDirection"); addTest(root, testContext, "complex/bidi/testContext"); addTest(root, testBracketOverflow, "complex/bidi/TestBracketOverflow"); + addTest(root, &TestExplicitLevel0, "complex/bidi/TestExplicitLevel0"); addTest(root, doArabicShapingTest, "complex/arabic-shaping/ArabicShapingTest"); addTest(root, doLamAlefSpecialVLTRArabicShapingTest, "complex/arabic-shaping/lamalef"); @@ -4922,3 +4924,24 @@ testBracketOverflow(void) { ubidi_close(bidi); } +static void TestExplicitLevel0() { + // The following used to fail with an error, see ICU ticket #12922. + static const UChar text[2] = { 0x202d, 0x05d0 }; + static UBiDiLevel embeddings[2] = { 0, 0 }; + UErrorCode errorCode = U_ZERO_ERROR; + UBiDi *bidi = ubidi_open(); + ubidi_setPara(bidi, text, 2, UBIDI_DEFAULT_LTR , embeddings, &errorCode); + if (U_FAILURE(errorCode)) { + log_err("ubidi_setPara() - %s", u_errorName(errorCode)); + } else { + UBiDiLevel level0 = ubidi_getLevelAt(bidi, 0); + UBiDiLevel level1 = ubidi_getLevelAt(bidi, 1); + if (level0 != 1 || level1 != 1) { + log_err("resolved levels != 1: { %d, %d }\n", level0, level1); + } + if (embeddings[0] != 1 || embeddings[1] != 1) { + log_err("modified embeddings[] levels != 1: { %d, %d }\n", embeddings[0], embeddings[1]); + } + } + ubidi_close(bidi); +} diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/Bidi.java b/icu4j/main/classes/core/src/com/ibm/icu/text/Bidi.java index 62a276dc723..623f0aa6d2e 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/Bidi.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/Bidi.java @@ -2674,28 +2674,29 @@ public class Bidi { return dirct; } - /* + /** * Use a pre-specified embedding levels array: * - * Adjust the directional properties for overrides (->LEVEL_OVERRIDE), + *Adjust the directional properties for overrides (->LEVEL_OVERRIDE), * ignore all explicit codes (X9), * and check all the preset levels. * - * Recalculate the flags to have them reflect the real properties + *
Recalculate the flags to have them reflect the real properties * after taking the explicit embeddings into account. */ private byte checkExplicitLevels() { - byte dirProp; - int i; int isolateCount = 0; this.flags = 0; /* collect all directionalities in the text */ - byte level; this.isolateCount = 0; - for (i = 0; i < length; ++i) { - level = levels[i]; - dirProp = dirProps[i]; + int currentParaIndex = 0; + int currentParaLimit = paras_limit[0]; + byte currentParaLevel = paraLevel; + + for (int i = 0; i < length; ++i) { + byte level = levels[i]; + byte dirProp = dirProps[i]; if (dirProp == LRI || dirProp == RLI) { isolateCount++; if (isolateCount > this.isolateCount) @@ -2705,21 +2706,40 @@ public class Bidi { isolateCount--; else if (dirProp == B) isolateCount = 0; - if ((level & LEVEL_OVERRIDE) != 0) { + + // optimized version of byte currentParaLevel = GetParaLevelAt(i); + if (defaultParaLevel != 0 && + i == currentParaLimit && (currentParaIndex + 1) < paraCount) { + currentParaLevel = paras_level[++currentParaIndex]; + currentParaLimit = paras_limit[currentParaIndex]; + } + + int overrideFlag = level & LEVEL_OVERRIDE; + level &= ~LEVEL_OVERRIDE; + if (level < currentParaLevel || MAX_EXPLICIT_LEVEL < level) { + if (level == 0) { + if (dirProp == B) { + // Paragraph separators are ok with explicit level 0. + // Prevents reordering of paragraphs. + } else { + // Treat explicit level 0 as a wildcard for the paragraph level. + // Avoid making the caller guess what the paragraph level would be. + level = currentParaLevel; + levels[i] = (byte)(level | overrideFlag); + } + } else { + // 1 <= level < currentParaLevel or MAX_EXPLICIT_LEVEL < level + throw new IllegalArgumentException("level " + level + + " out of bounds at " + i); + } + } + if (overrideFlag != 0) { /* keep the override flag in levels[i] but adjust the flags */ - level &= ~LEVEL_OVERRIDE; /* make the range check below simpler */ flags |= DirPropFlagO(level); } else { /* set the flags */ flags |= DirPropFlagE(level) | DirPropFlag(dirProp); } - if ((level < GetParaLevelAt(i) && - !((0 == level) && (dirProp == B))) || - (MAX_EXPLICIT_LEVEL < level)) { - /* level out of bounds */ - throw new IllegalArgumentException("level " + level + - " out of bounds at " + i); - } } if ((flags & MASK_EMBEDDING) != 0) flags |= DirPropFlagLR(paraLevel); @@ -3950,11 +3970,12 @@ public class Bidi { * A level overrides the directional property of its corresponding * (same index) character if the level has the *
LEVEL_OVERRIDE
bit set.
- * Except for that bit, it must be + * Aside from that bit, it must be *paraLevel<=embeddingLevels[]<=MAX_EXPLICIT_LEVEL
, - * with one exception: a level of zero may be specified for a - * paragraph separator even ifparaLevel>0
when multiple - * paragraphs are submitted in the same call tosetPara()
.
+ * except that level 0 is always allowed. + * Level 0 for a paragraph separator prevents reordering of paragraphs. + * Level 0 for other characters is treated as a wildcard + * and is lifted up to the resolved level of the surrounding paragraph.
* Caution: A reference to this array, not a copy * of the levels, will be stored in theBidi
object; * theembeddingLevels
@@ -5294,13 +5315,19 @@ public class Bidi { /** * Create Bidi from the given text, embedding, and direction information. - * The embeddings array may be null. If present, the values represent - * embedding level information. Negative values from -1 to -61 indicate - * overrides at the absolute value of the level. Positive values from 1 to - * 61 indicate embeddings. Where values are zero, the base embedding level - * as determined by the base direction is assumed.* - * Note: this constructor calls setPara() internally. + *
The embeddings array may be null. If present, the values represent + * embedding level information. + * Negative values from -1 to -{@link #MAX_EXPLICIT_LEVEL} + * indicate overrides at the absolute value of the level. + * Positive values from 1 to {@link #MAX_EXPLICIT_LEVEL} indicate embeddings. + * Where values are zero, the base embedding level + * as determined by the base direction is assumed, + * except for paragraph separators which remain at 0 to prevent reordering of paragraphs.
+ * + *
Note: This constructor calls setPara() internally, + * after converting the java.text.Bidi-style embeddings with negative overrides + * into ICU-style embeddings with bit fields for {@link #LEVEL_OVERRIDE} and the level. * * @param text an array containing the paragraph of text to process. * @param textStart the index into the text array of the start of the @@ -5354,22 +5381,23 @@ public class Bidi { if (embeddings == null) { paraEmbeddings = null; } else { + // Convert from java.text.Bidi embeddings to ICU setPara() levels: + // Copy to the start of a new array and convert java.text negative overrides + // to ICU bit-field-and-mask overrides. + // A copy of the embeddings is always required because + // setPara() may modify its embeddings. paraEmbeddings = new byte[paragraphLength]; byte lev; for (int i = 0; i < paragraphLength; i++) { lev = embeddings[i + embStart]; if (lev < 0) { lev = (byte)((- lev) | LEVEL_OVERRIDE); - } else if (lev == 0) { - lev = paraLvl; - if (paraLvl > MAX_EXPLICIT_LEVEL) { - lev &= 1; - } } + // setPara() lifts level 0 up to the resolved paragraph level. paraEmbeddings[i] = lev; } } - if (textStart == 0 && embStart == 0 && paragraphLength == text.length) { + if (textStart == 0 && paragraphLength == text.length) { setPara(text, paraLvl, paraEmbeddings); } else { char[] paraText = new char[paragraphLength]; diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestBidi.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestBidi.java index 9fe50a65a35..af155ed8d25 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestBidi.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestBidi.java @@ -526,7 +526,7 @@ public class TestBidi extends BidiFmwk { bidi.setReorderingMode(Bidi.REORDER_RUNS_ONLY); bidi.setPara("a \u05d0 b \u05d1 c \u05d2 d ", Bidi.LTR, null); assertEquals("\nWrong number of runs #4", 14, bidi.countRuns()); - + /* test testGetBaseDirection to verify fast string direction detection function */ /* mixed start with L */ String mixedEnglishFirst = "\u0061\u0627\u0032\u06f3\u0061\u0034"; @@ -566,7 +566,7 @@ public class TestBidi extends BidiFmwk { assertEquals("\nWrong direction through fast detection #12", Bidi.NEUTRAL, Bidi.getBaseDirection(allArabicDigits)); /* null string */ String nullString = null; - assertEquals("\nWrong direction through fast detection #13", Bidi.NEUTRAL, Bidi.getBaseDirection(nullString)); + assertEquals("\nWrong direction through fast detection #13", Bidi.NEUTRAL, Bidi.getBaseDirection(nullString)); /* first L (English) others are R (Hebrew etc.) */ String startEnglishOthersHebrew = "\u0071\u0590\u05D5\u05EA\u05F1"; assertEquals("\nWrong direction through fast detection #14", Bidi.LTR, Bidi.getBaseDirection(startEnglishOthersHebrew)); @@ -574,4 +574,20 @@ public class TestBidi extends BidiFmwk { String lastHebrewOthersEnglishDigit = "\u0031\u0032\u0033\u05F1"; assertEquals("\nWrong direction through fast detection #15", Bidi.RTL, Bidi.getBaseDirection(lastHebrewOthersEnglishDigit)); } + + @Test + public void testExplicitLevel0() { + // The following used to fail with an error, see ICU ticket #12922. + String text = "\u202d\u05d0"; + byte[] embeddings = new byte[2]; // all 0 + int flags = Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT; // 0x7e + Bidi bidi = new Bidi(text.toCharArray(), 0, embeddings, 0, text.length(), flags); + assertEquals("resolved level at 0", 1, bidi.getLevelAt(0)); + assertEquals("resolved level at 1", 1, bidi.getLevelAt(1)); + + flags = java.text.Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT; // -2 + java.text.Bidi jb = new java.text.Bidi(text.toCharArray(), 0, embeddings, 0, text.length(), flags); + assertEquals("java.text resolved level at 0", 1, jb.getLevelAt(0)); + assertEquals("java.text resolved level at 1", 1, jb.getLevelAt(1)); + } }