From 0126f0d6bd80187b65a7eab90b129cbb83611fbb Mon Sep 17 00:00:00 2001 From: Hyunjee Kim Date: Fri, 6 Dec 2019 11:08:25 +0900 Subject: [PATCH] Imported Upstream version 65.1 Change-Id: I44469146f3db93ffb20b6678a38b9ea24072b4d7 Signed-off-by: Hyunjee Kim --- APIChangeReport.html | 2850 +++--- APIChangeReport.md | 1093 +++ as_is/bomlist.txt | 2 +- packaging/distrelease.ps1 | 41 +- readme.html | 11 +- source/aclocal.m4 | 8 +- ...rary.WarningSettings.ProjectConfiguration.props | 4 +- .../Build.Windows.ProjectConfiguration.props | 83 +- .../Build.Windows.UWP.ProjectConfiguration.props | 17 + source/allinone/allinone.sln | 288 +- source/allinone/icucheck.bat | 10 +- source/common/Makefile.in | 6 +- source/common/brkeng.cpp | 2 +- source/common/brkiter.cpp | 2 +- source/common/bytesinkutil.h | 2 +- source/common/characterproperties.cpp | 13 +- source/common/charstr.cpp | 23 + source/common/charstr.h | 14 + source/common/cmemory.h | 45 +- source/common/common.vcxproj | 126 +- source/common/common.vcxproj.filters | 52 +- source/common/common_uwp.vcxproj | 173 +- source/common/edits.cpp | 2 +- source/common/filteredbrk.cpp | 2 +- source/common/localebuilder.cpp | 60 +- source/common/localematcher.cpp | 720 ++ source/common/localeprioritylist.cpp | 239 + source/common/localeprioritylist.h | 115 + source/common/locavailable.cpp | 207 +- source/common/locbased.h | 2 +- source/common/locdistance.cpp | 364 + source/common/locdistance.h | 109 + source/common/locdspnm.cpp | 100 +- source/common/locid.cpp | 25 +- source/common/loclikely.cpp | 30 +- source/common/loclikelysubtags.cpp | 638 ++ source/common/loclikelysubtags.h | 143 + source/common/lsr.cpp | 101 + source/common/lsr.h | 72 + source/common/mutex.h | 72 +- source/common/normalizer2impl.h | 6 +- source/common/putil.cpp | 46 +- source/common/putilimp.h | 70 - source/common/rbbi.cpp | 12 +- source/common/rbbi_cache.cpp | 2 +- source/common/resbund.cpp | 3 +- source/common/resource.h | 24 +- source/common/restrace.cpp | 130 + source/common/restrace.h | 147 + source/common/schriter.cpp | 2 +- source/common/serv.cpp | 21 +- source/common/servls.cpp | 2 +- source/common/servnotf.cpp | 13 +- source/common/uarrsort.cpp | 50 +- source/common/ubidiimp.h | 82 +- source/common/ubiditransform.cpp | 10 +- source/common/ucase.cpp | 5 +- source/common/uchar.cpp | 2 +- source/common/uchriter.cpp | 2 +- source/common/ucln_cmn.cpp | 15 +- source/common/ucln_cmn.h | 5 +- source/common/ucnv.cpp | 24 +- source/common/ucnv2022.cpp | 15 +- source/common/ucnv_bld.cpp | 27 +- source/common/ucnv_lmb.cpp | 12 +- source/common/ucnvbocu.cpp | 4 +- source/common/ucnvhz.cpp | 18 +- source/common/ucnvisci.cpp | 12 +- source/common/ucnvsel.cpp | 38 +- source/common/ucptrie.cpp | 2 +- source/common/ucurr.cpp | 41 +- source/common/udata.cpp | 45 +- source/common/uhash.cpp | 15 +- source/common/uidna.cpp | 7 +- source/common/uinvchar.cpp | 15 +- source/common/uinvchar.h | 89 + source/common/uloc.cpp | 53 +- source/common/uloc_tag.cpp | 6 +- source/common/umutex.cpp | 122 +- source/common/umutex.h | 119 +- source/common/unames.cpp | 4 +- source/common/unicode/appendable.h | 5 + source/common/unicode/brkiter.h | 10 +- source/common/unicode/bytestream.h | 5 + source/common/unicode/bytestrie.h | 47 + source/common/unicode/bytestriebuilder.h | 5 + source/common/unicode/caniter.h | 4 + source/common/unicode/casemap.h | 5 + source/common/unicode/char16ptr.h | 7 +- source/common/unicode/chariter.h | 8 +- source/common/unicode/dbbi.h | 6 + source/common/unicode/docmain.h | 4 +- source/common/unicode/dtintrv.h | 6 +- source/common/unicode/edits.h | 7 +- source/common/unicode/errorcode.h | 5 + source/common/unicode/filteredbrk.h | 7 + source/common/unicode/idna.h | 5 + source/common/unicode/localebuilder.h | 27 +- source/common/unicode/localematcher.h | 605 ++ source/common/unicode/locdspnm.h | 4 + source/common/unicode/locid.h | 163 +- source/common/unicode/messagepattern.h | 4 + source/common/unicode/normalizer2.h | 5 + source/common/unicode/normlzr.h | 11 +- source/common/unicode/parsepos.h | 5 + source/common/unicode/platform.h | 74 +- source/common/unicode/rbbi.h | 15 +- source/common/unicode/rep.h | 9 +- source/common/unicode/resbund.h | 6 + source/common/unicode/schriter.h | 8 +- source/common/unicode/simpleformatter.h | 5 + source/common/unicode/std_string.h | 4 + source/common/unicode/strenum.h | 9 +- source/common/unicode/stringpiece.h | 35 + source/common/unicode/stringtriebuilder.h | 5 + source/common/unicode/symtable.h | 5 + source/common/unicode/uchar.h | 23 +- source/common/unicode/ucharstrie.h | 47 + source/common/unicode/ucharstriebuilder.h | 5 + source/common/unicode/uchriter.h | 8 +- source/common/unicode/uconfig.h | 2 +- source/common/unicode/ucpmap.h | 19 +- source/common/unicode/ucptrie.h | 116 +- source/common/unicode/ucurr.h | 17 +- source/common/unicode/udata.h | 38 +- source/common/unicode/uloc.h | 84 +- source/common/unicode/umachine.h | 36 + source/common/unicode/umutablecptrie.h | 27 +- source/common/unicode/unifilt.h | 14 + source/common/unicode/unifunct.h | 5 + source/common/unicode/unimatch.h | 3 + source/common/unicode/uniset.h | 15 +- source/common/unicode/unistr.h | 46 +- source/common/unicode/unorm.h | 4 + source/common/unicode/uobject.h | 12 +- source/common/unicode/urename.h | 24 +- source/common/unicode/usetiter.h | 5 + source/common/unicode/utext.h | 14 +- source/common/unicode/utf16.h | 92 +- source/common/unicode/utf8.h | 93 +- source/common/unicode/utf_old.h | 205 +- source/common/unicode/utrace.h | 71 +- source/common/unicode/utypes.h | 28 +- source/common/unicode/uvernum.h | 12 +- source/common/unicode/uversion.h | 32 +- source/common/unifiedcache.cpp | 51 +- source/common/uniset.cpp | 6 +- source/common/uniset_props.cpp | 5 +- source/common/unisetspan.cpp | 4 +- source/common/unistr.cpp | 2 +- source/common/uresbund.cpp | 278 +- source/common/uresdata.cpp | 96 +- source/common/uresdata.h | 76 +- source/common/uresimp.h | 8 + source/common/usprep.cpp | 30 +- source/common/ustr_titlecase_brkiter.cpp | 14 +- source/common/ustring.cpp | 10 +- source/common/utext.cpp | 4 +- source/common/util.cpp | 10 + source/common/util.h | 15 +- source/common/utrace.cpp | 12 + source/common/utracimp.h | 93 +- source/common/utrie.h | 19 +- source/common/utrie2.h | 16 +- source/config/mh-cygwin-msvc | 12 +- source/config/mh-mingw | 30 +- source/config/mh-mingw64 | 30 +- source/config/mh-msys-msvc | 12 +- source/configure | 131 +- source/configure.ac | 27 +- source/data/BUILDRULES.py | 92 +- source/data/Makefile.in | 4 +- source/data/brkitr/de.txt | 2 +- source/data/brkitr/dictionaries/laodict.txt | 1 + source/data/brkitr/el.txt | 2 +- source/data/brkitr/en.txt | 2 +- source/data/brkitr/en_US.txt | 2 +- source/data/brkitr/en_US_POSIX.txt | 2 +- source/data/brkitr/es.txt | 2 +- source/data/brkitr/fr.txt | 2 +- source/data/brkitr/it.txt | 2 +- source/data/brkitr/ja.txt | 2 +- source/data/brkitr/pt.txt | 2 +- source/data/brkitr/root.txt | 2 +- source/data/brkitr/ru.txt | 2 +- source/data/brkitr/rules/README.md | 11 + source/data/brkitr/rules/char.txt | 10 + source/data/brkitr/rules/word.txt | 100 +- source/data/brkitr/rules/word_POSIX.txt | 100 +- source/data/brkitr/zh.txt | 2 +- source/data/brkitr/zh_Hant.txt | 2 +- source/data/build.xml | 105 +- source/data/buildtool/renderers/common_exec.py | 93 - source/data/buildtool/renderers/unix_exec.py | 7 - source/data/cldr-icu-readme.txt | 86 +- source/data/coll/af.txt | 4 +- source/data/coll/am.txt | 4 +- source/data/coll/ar.txt | 6 +- source/data/coll/as.txt | 4 +- source/data/coll/az.txt | 6 +- source/data/coll/be.txt | 4 +- source/data/coll/bg.txt | 4 +- source/data/coll/bn.txt | 6 +- source/data/coll/bo.txt | 2 +- source/data/coll/bs.txt | 6 +- source/data/coll/bs_Cyrl.txt | 4 +- source/data/coll/ca.txt | 4 +- source/data/coll/ceb.txt | 4 +- source/data/coll/chr.txt | 4 +- source/data/coll/cs.txt | 4 +- source/data/coll/cy.txt | 4 +- source/data/coll/da.txt | 6 +- source/data/coll/de.txt | 6 +- source/data/coll/de_AT.txt | 4 +- source/data/coll/dsb.txt | 4 +- source/data/coll/dz.txt | 2 +- source/data/coll/ee.txt | 4 +- source/data/coll/el.txt | 4 +- source/data/coll/en.txt | 2 +- source/data/coll/en_US.txt | 2 +- source/data/coll/en_US_POSIX.txt | 4 +- source/data/coll/eo.txt | 4 +- source/data/coll/es.txt | 8 +- source/data/coll/et.txt | 4 +- source/data/coll/fa.txt | 4 +- source/data/coll/fa_AF.txt | 4 +- source/data/coll/fi.txt | 8 +- source/data/coll/fil.txt | 4 +- source/data/coll/fo.txt | 6 +- source/data/coll/fr.txt | 2 +- source/data/coll/fr_CA.txt | 4 +- source/data/coll/ga.txt | 2 +- source/data/coll/gl.txt | 6 +- source/data/coll/gu.txt | 4 +- source/data/coll/ha.txt | 4 +- source/data/coll/haw.txt | 4 +- source/data/coll/he.txt | 6 +- source/data/coll/hi.txt | 4 +- source/data/coll/hr.txt | 6 +- source/data/coll/hsb.txt | 4 +- source/data/coll/hu.txt | 4 +- source/data/coll/hy.txt | 4 +- source/data/coll/id.txt | 2 +- source/data/coll/ig.txt | 4 +- source/data/coll/is.txt | 6 +- source/data/coll/it.txt | 2 +- source/data/coll/ja.txt | 8 +- source/data/coll/ka.txt | 4 +- source/data/coll/kk.txt | 4 +- source/data/coll/kl.txt | 6 +- source/data/coll/km.txt | 4 +- source/data/coll/kn.txt | 6 +- source/data/coll/ko.txt | 10 +- source/data/coll/kok.txt | 4 +- source/data/coll/ku.txt | 4 +- source/data/coll/ky.txt | 4 +- source/data/coll/lb.txt | 2 +- source/data/coll/lkt.txt | 4 +- source/data/coll/ln.txt | 6 +- source/data/coll/lo.txt | 4 +- source/data/coll/lt.txt | 4 +- source/data/coll/lv.txt | 4 +- source/data/coll/mk.txt | 4 +- source/data/coll/ml.txt | 4 +- source/data/coll/mn.txt | 4 +- source/data/coll/mr.txt | 4 +- source/data/coll/ms.txt | 2 +- source/data/coll/mt.txt | 4 +- source/data/coll/my.txt | 4 +- source/data/coll/nb.txt | 6 +- source/data/coll/ne.txt | 4 +- source/data/coll/nl.txt | 2 +- source/data/coll/nn.txt | 6 +- source/data/coll/om.txt | 4 +- source/data/coll/or.txt | 4 +- source/data/coll/pa.txt | 4 +- source/data/coll/pl.txt | 4 +- source/data/coll/ps.txt | 4 +- source/data/coll/pt.txt | 2 +- source/data/coll/ro.txt | 4 +- source/data/coll/root.txt | 12 +- source/data/coll/ru.txt | 4 +- source/data/coll/se.txt | 6 +- source/data/coll/si.txt | 6 +- source/data/coll/sk.txt | 6 +- source/data/coll/sl.txt | 4 +- source/data/coll/smn.txt | 6 +- source/data/coll/sq.txt | 4 +- source/data/coll/sr.txt | 4 +- source/data/coll/sr_Latn.txt | 6 +- source/data/coll/sv.txt | 8 +- source/data/coll/sw.txt | 2 +- source/data/coll/ta.txt | 4 +- source/data/coll/te.txt | 4 +- source/data/coll/th.txt | 4 +- source/data/coll/tk.txt | 4 +- source/data/coll/to.txt | 4 +- source/data/coll/tr.txt | 6 +- source/data/coll/ug.txt | 4 +- source/data/coll/uk.txt | 4 +- source/data/coll/ur.txt | 4 +- source/data/coll/uz.txt | 4 +- source/data/coll/vi.txt | 6 +- source/data/coll/wae.txt | 2 +- source/data/coll/wo.txt | 4 +- source/data/coll/xh.txt | 2 +- source/data/coll/yi.txt | 6 +- source/data/coll/yo.txt | 4 +- source/data/coll/zh.txt | 16 +- source/data/coll/zh_Hant.txt | 2 +- source/data/coll/zu.txt | 2 +- source/data/curr/af.txt | 253 +- source/data/curr/af_NA.txt | 2 +- source/data/curr/agq.txt | 2 +- source/data/curr/ak.txt | 2 +- source/data/curr/am.txt | 2 +- source/data/curr/ar.txt | 11 +- source/data/curr/ar_AE.txt | 2 +- source/data/curr/ar_DJ.txt | 2 +- source/data/curr/ar_ER.txt | 2 +- source/data/curr/ar_KM.txt | 2 +- source/data/curr/ar_LB.txt | 2 +- source/data/curr/ar_SO.txt | 2 +- source/data/curr/ar_SS.txt | 2 +- source/data/curr/as.txt | 98 +- source/data/curr/asa.txt | 2 +- source/data/curr/ast.txt | 2 +- source/data/curr/az.txt | 121 +- source/data/curr/az_Cyrl.txt | 2 +- source/data/curr/az_Latn.txt | 2 +- source/data/curr/bas.txt | 2 +- source/data/curr/be.txt | 226 +- source/data/curr/bem.txt | 2 +- source/data/curr/bez.txt | 2 +- source/data/curr/bg.txt | 68 +- source/data/curr/bm.txt | 2 +- source/data/curr/bn.txt | 3 +- source/data/curr/bo.txt | 2 +- source/data/curr/bo_IN.txt | 2 +- source/data/curr/br.txt | 249 +- source/data/curr/brx.txt | 2 +- source/data/curr/bs.txt | 6 +- source/data/curr/bs_Cyrl.txt | 488 +- source/data/curr/bs_Latn.txt | 2 +- source/data/curr/ca.txt | 13 +- source/data/curr/ca_FR.txt | 2 +- source/data/curr/ccp.txt | 2 +- source/data/curr/ce.txt | 2 +- source/data/curr/ceb.txt | 1194 ++- source/data/curr/cgg.txt | 2 +- source/data/curr/chr.txt | 101 +- source/data/curr/ckb.txt | 2 +- source/data/curr/cs.txt | 10 +- source/data/curr/cy.txt | 146 +- source/data/curr/da.txt | 23 +- source/data/curr/dav.txt | 2 +- source/data/curr/de.txt | 4 +- source/data/curr/de_CH.txt | 22 +- source/data/curr/de_LI.txt | 2 +- source/data/curr/de_LU.txt | 2 +- source/data/curr/dje.txt | 2 +- source/data/curr/dsb.txt | 2 +- source/data/curr/dua.txt | 2 +- source/data/curr/dyo.txt | 2 +- source/data/curr/dz.txt | 2 +- source/data/curr/ebu.txt | 2 +- source/data/curr/ee.txt | 2 +- source/data/curr/el.txt | 2 +- source/data/curr/en.txt | 2 +- source/data/curr/en_001.txt | 10 +- source/data/curr/en_150.txt | 2 +- source/data/curr/en_AE.txt | 2 +- source/data/curr/en_AG.txt | 2 +- source/data/curr/en_AI.txt | 2 +- source/data/curr/en_AT.txt | 2 +- source/data/curr/en_AU.txt | 461 +- source/data/curr/en_BB.txt | 2 +- source/data/curr/en_BE.txt | 2 +- source/data/curr/en_BI.txt | 2 +- source/data/curr/en_BM.txt | 2 +- source/data/curr/en_BS.txt | 2 +- source/data/curr/en_BW.txt | 2 +- source/data/curr/en_BZ.txt | 2 +- source/data/curr/en_CA.txt | 6 +- source/data/curr/en_CC.txt | 2 +- source/data/curr/en_CH.txt | 2 +- source/data/curr/en_CK.txt | 2 +- source/data/curr/en_CM.txt | 2 +- source/data/curr/en_CX.txt | 2 +- source/data/curr/en_CY.txt | 2 +- source/data/curr/en_DE.txt | 2 +- source/data/curr/en_DG.txt | 2 +- source/data/curr/en_DK.txt | 2 +- source/data/curr/en_DM.txt | 2 +- source/data/curr/en_ER.txt | 2 +- source/data/curr/en_FI.txt | 2 +- source/data/curr/en_FJ.txt | 2 +- source/data/curr/en_FK.txt | 2 +- source/data/curr/en_FM.txt | 2 +- source/data/curr/en_GB.txt | 17 +- source/data/curr/en_GD.txt | 2 +- source/data/curr/en_GG.txt | 2 +- source/data/curr/en_GH.txt | 2 +- source/data/curr/en_GI.txt | 2 +- source/data/curr/en_GM.txt | 2 +- source/data/curr/en_GY.txt | 2 +- source/data/curr/en_HK.txt | 2 +- source/data/curr/en_IE.txt | 2 +- source/data/curr/en_IL.txt | 2 +- source/data/curr/en_IM.txt | 2 +- source/data/curr/en_IN.txt | 2 +- source/data/curr/en_IO.txt | 2 +- source/data/curr/en_JE.txt | 2 +- source/data/curr/en_JM.txt | 2 +- source/data/curr/en_KE.txt | 2 +- source/data/curr/en_KI.txt | 2 +- source/data/curr/en_KN.txt | 2 +- source/data/curr/en_KY.txt | 2 +- source/data/curr/en_LC.txt | 2 +- source/data/curr/en_LR.txt | 2 +- source/data/curr/en_LS.txt | 2 +- source/data/curr/en_MG.txt | 2 +- source/data/curr/en_MO.txt | 2 +- source/data/curr/en_MS.txt | 2 +- source/data/curr/en_MT.txt | 2 +- source/data/curr/en_MU.txt | 2 +- source/data/curr/en_MW.txt | 2 +- source/data/curr/en_MY.txt | 2 +- source/data/curr/en_NA.txt | 2 +- source/data/curr/en_NF.txt | 2 +- source/data/curr/en_NG.txt | 2 +- source/data/curr/en_NL.txt | 2 +- source/data/curr/en_NR.txt | 2 +- source/data/curr/en_NU.txt | 2 +- source/data/curr/en_NZ.txt | 2 +- source/data/curr/en_PG.txt | 2 +- source/data/curr/en_PH.txt | 2 +- source/data/curr/en_PK.txt | 2 +- source/data/curr/en_PN.txt | 2 +- source/data/curr/en_PW.txt | 2 +- source/data/curr/en_RW.txt | 2 +- source/data/curr/en_SB.txt | 2 +- source/data/curr/en_SC.txt | 2 +- source/data/curr/en_SD.txt | 2 +- source/data/curr/en_SE.txt | 2 +- source/data/curr/en_SG.txt | 2 +- source/data/curr/en_SH.txt | 4 +- source/data/curr/en_SI.txt | 2 +- source/data/curr/en_SL.txt | 2 +- source/data/curr/en_SS.txt | 2 +- source/data/curr/en_SX.txt | 2 +- source/data/curr/en_SZ.txt | 2 +- source/data/curr/en_TC.txt | 2 +- source/data/curr/en_TK.txt | 2 +- source/data/curr/en_TO.txt | 2 +- source/data/curr/en_TT.txt | 2 +- source/data/curr/en_TV.txt | 2 +- source/data/curr/en_TZ.txt | 2 +- source/data/curr/en_UG.txt | 2 +- source/data/curr/en_VC.txt | 2 +- source/data/curr/en_VG.txt | 2 +- source/data/curr/en_VU.txt | 2 +- source/data/curr/en_WS.txt | 2 +- source/data/curr/en_ZA.txt | 2 +- source/data/curr/en_ZM.txt | 2 +- source/data/curr/en_ZW.txt | 2 +- source/data/curr/eo.txt | 2 +- source/data/curr/es.txt | 16 +- source/data/curr/es_419.txt | 529 +- source/data/curr/es_AR.txt | 2 +- source/data/curr/es_BO.txt | 2 +- source/data/curr/es_BR.txt | 2 +- source/data/curr/es_BZ.txt | 2 +- source/data/curr/es_CL.txt | 2 +- source/data/curr/es_CO.txt | 2 +- source/data/curr/es_CR.txt | 2 +- source/data/curr/es_CU.txt | 2 +- source/data/curr/es_DO.txt | 2 +- source/data/curr/es_EC.txt | 2 +- source/data/curr/es_GQ.txt | 2 +- source/data/curr/es_GT.txt | 2 +- source/data/curr/es_HN.txt | 2 +- source/data/curr/es_MX.txt | 50 +- source/data/curr/es_NI.txt | 2 +- source/data/curr/es_PA.txt | 2 +- source/data/curr/es_PE.txt | 2 +- source/data/curr/es_PH.txt | 2 +- source/data/curr/es_PR.txt | 2 +- source/data/curr/es_PY.txt | 2 +- source/data/curr/es_SV.txt | 2 +- source/data/curr/es_US.txt | 71 +- source/data/curr/es_UY.txt | 2 +- source/data/curr/es_VE.txt | 4 +- source/data/curr/et.txt | 4 +- source/data/curr/eu.txt | 858 +- source/data/curr/ewo.txt | 2 +- source/data/curr/fa.txt | 333 +- source/data/curr/fa_AF.txt | 2 +- source/data/curr/ff.txt | 2 +- source/data/curr/ff_Latn.txt | 2 +- source/data/curr/ff_Latn_GH.txt | 2 +- source/data/curr/ff_Latn_GM.txt | 2 +- source/data/curr/ff_Latn_GN.txt | 2 +- source/data/curr/ff_Latn_LR.txt | 2 +- source/data/curr/ff_Latn_MR.txt | 2 +- source/data/curr/ff_Latn_NG.txt | 2 +- source/data/curr/ff_Latn_SL.txt | 2 +- source/data/curr/fi.txt | 15 +- source/data/curr/fil.txt | 14 +- source/data/curr/fo.txt | 12 +- source/data/curr/fo_DK.txt | 2 +- source/data/curr/fr.txt | 6 +- source/data/curr/fr_BI.txt | 2 +- source/data/curr/fr_CA.txt | 173 +- source/data/curr/fr_CD.txt | 2 +- source/data/curr/fr_DJ.txt | 2 +- source/data/curr/fr_DZ.txt | 2 +- source/data/curr/fr_GN.txt | 2 +- source/data/curr/fr_HT.txt | 2 +- source/data/curr/fr_KM.txt | 2 +- source/data/curr/fr_LU.txt | 2 +- source/data/curr/fr_MG.txt | 2 +- source/data/curr/fr_MR.txt | 2 +- source/data/curr/fr_MU.txt | 2 +- source/data/curr/fr_RW.txt | 2 +- source/data/curr/fr_SC.txt | 2 +- source/data/curr/fr_SY.txt | 2 +- source/data/curr/fr_TN.txt | 2 +- source/data/curr/fr_VU.txt | 2 +- source/data/curr/fur.txt | 2 +- source/data/curr/fy.txt | 2 +- source/data/curr/ga.txt | 52 +- source/data/curr/gd.txt | 111 +- source/data/curr/gl.txt | 520 +- source/data/curr/gsw.txt | 2 +- source/data/curr/gu.txt | 11 +- source/data/curr/guz.txt | 2 +- source/data/curr/gv.txt | 2 +- source/data/curr/ha.txt | 23 +- source/data/curr/ha_GH.txt | 2 +- source/data/curr/ha_NE.txt | 291 - source/data/curr/haw.txt | 2 +- source/data/curr/he.txt | 15 +- source/data/curr/hi.txt | 109 +- source/data/curr/hr.txt | 148 +- source/data/curr/hr_BA.txt | 2 +- source/data/curr/hsb.txt | 2 +- source/data/curr/hu.txt | 109 +- source/data/curr/hy.txt | 77 +- source/data/curr/ia.txt | 5 +- source/data/curr/id.txt | 96 +- source/data/curr/ig.txt | 52 +- source/data/curr/ii.txt | 2 +- source/data/curr/is.txt | 14 +- source/data/curr/it.txt | 2 +- source/data/curr/ja.txt | 5 +- source/data/curr/jgo.txt | 2 +- source/data/curr/jmc.txt | 2 +- source/data/curr/jv.txt | 106 +- source/data/curr/ka.txt | 47 +- source/data/curr/kab.txt | 2 +- source/data/curr/kam.txt | 2 +- source/data/curr/kde.txt | 2 +- source/data/curr/kea.txt | 22 +- source/data/curr/khq.txt | 2 +- source/data/curr/ki.txt | 2 +- source/data/curr/kk.txt | 6 +- source/data/curr/kkj.txt | 2 +- source/data/curr/kl.txt | 2 +- source/data/curr/kln.txt | 2 +- source/data/curr/km.txt | 2 +- source/data/curr/kn.txt | 57 +- source/data/curr/ko.txt | 95 +- source/data/curr/kok.txt | 1155 ++- source/data/curr/ks.txt | 2 +- source/data/curr/ksb.txt | 2 +- source/data/curr/ksf.txt | 2 +- source/data/curr/ksh.txt | 2 +- source/data/curr/ku.txt | 5 +- source/data/curr/kw.txt | 2 +- source/data/curr/ky.txt | 2 +- source/data/curr/lag.txt | 2 +- source/data/curr/lb.txt | 2 +- source/data/curr/lg.txt | 2 +- source/data/curr/lkt.txt | 2 +- source/data/curr/ln.txt | 2 +- source/data/curr/ln_AO.txt | 2 +- source/data/curr/lo.txt | 30 +- source/data/curr/lrc.txt | 2 +- source/data/curr/lt.txt | 3 +- source/data/curr/lu.txt | 2 +- source/data/curr/luo.txt | 2 +- source/data/curr/luy.txt | 2 +- source/data/curr/lv.txt | 2 +- source/data/curr/mas.txt | 2 +- source/data/curr/mas_TZ.txt | 2 +- source/data/curr/mer.txt | 2 +- source/data/curr/mfe.txt | 2 +- source/data/curr/mg.txt | 2 +- source/data/curr/mgh.txt | 2 +- source/data/curr/mgo.txt | 2 +- source/data/curr/mi.txt | 50 +- source/data/curr/mk.txt | 98 +- source/data/curr/ml.txt | 3 +- source/data/curr/mn.txt | 902 +- source/data/curr/mr.txt | 2 +- source/data/curr/ms.txt | 2 +- source/data/curr/ms_BN.txt | 2 +- source/data/curr/ms_SG.txt | 2 +- source/data/curr/mt.txt | 2 +- source/data/curr/mua.txt | 2 +- source/data/curr/my.txt | 3 +- source/data/curr/mzn.txt | 2 +- source/data/curr/naq.txt | 2 +- source/data/curr/nb.txt | 12 +- source/data/curr/nd.txt | 2 +- source/data/curr/nds.txt | 2 +- source/data/curr/ne.txt | 95 +- source/data/curr/nl.txt | 8 +- source/data/curr/nl_AW.txt | 2 +- source/data/curr/nl_BQ.txt | 2 +- source/data/curr/nl_CW.txt | 2 +- source/data/curr/nl_SR.txt | 2 +- source/data/curr/nl_SX.txt | 2 +- source/data/curr/nmg.txt | 2 +- source/data/curr/nn.txt | 2 +- source/data/curr/nnh.txt | 2 +- source/data/curr/nus.txt | 2 +- source/data/curr/nyn.txt | 2 +- source/data/curr/om.txt | 2 +- source/data/curr/om_KE.txt | 2 +- source/data/curr/or.txt | 2 +- source/data/curr/os.txt | 2 +- source/data/curr/os_RU.txt | 2 +- source/data/curr/pa.txt | 83 +- source/data/curr/pa_Arab.txt | 2 +- source/data/curr/pa_Guru.txt | 2 +- source/data/curr/pl.txt | 90 +- source/data/curr/ps.txt | 1176 ++- source/data/curr/ps_PK.txt | 2 +- source/data/curr/pt.txt | 8 +- source/data/curr/pt_AO.txt | 2 +- source/data/curr/pt_CH.txt | 2 +- source/data/curr/pt_CV.txt | 4 +- source/data/curr/pt_GQ.txt | 2 +- source/data/curr/pt_GW.txt | 2 +- source/data/curr/pt_LU.txt | 2 +- source/data/curr/pt_MO.txt | 4 +- source/data/curr/pt_MZ.txt | 2 +- source/data/curr/pt_PT.txt | 456 +- source/data/curr/pt_ST.txt | 2 +- source/data/curr/pt_TL.txt | 2 +- source/data/curr/qu.txt | 1082 ++- source/data/curr/qu_BO.txt | 6 +- source/data/curr/qu_EC.txt | 6 +- source/data/curr/rm.txt | 2 +- source/data/curr/rn.txt | 2 +- source/data/curr/ro.txt | 96 +- source/data/curr/ro_MD.txt | 2 +- source/data/curr/rof.txt | 2 +- source/data/curr/root.txt | 2 +- source/data/curr/ru.txt | 2 +- source/data/curr/ru_BY.txt | 2 +- source/data/curr/ru_KG.txt | 2 +- source/data/curr/ru_KZ.txt | 2 +- source/data/curr/ru_MD.txt | 2 +- source/data/curr/rw.txt | 2 +- source/data/curr/rwk.txt | 2 +- source/data/curr/sah.txt | 2 +- source/data/curr/saq.txt | 2 +- source/data/curr/sbp.txt | 2 +- source/data/curr/sd.txt | 101 +- source/data/curr/se.txt | 2 +- source/data/curr/se_SE.txt | 2 +- source/data/curr/seh.txt | 2 +- source/data/curr/ses.txt | 2 +- source/data/curr/sg.txt | 2 +- source/data/curr/shi.txt | 2 +- source/data/curr/shi_Latn.txt | 2 +- source/data/curr/shi_Tfng.txt | 2 +- source/data/curr/si.txt | 85 +- source/data/curr/sk.txt | 8 +- source/data/curr/sl.txt | 4 +- source/data/curr/smn.txt | 2 +- source/data/curr/sn.txt | 2 +- source/data/curr/so.txt | 104 +- source/data/curr/so_DJ.txt | 2 +- source/data/curr/so_ET.txt | 2 +- source/data/curr/so_KE.txt | 2 +- source/data/curr/sq.txt | 102 +- source/data/curr/sq_MK.txt | 2 +- source/data/curr/sr.txt | 29 +- source/data/curr/sr_Cyrl.txt | 2 +- source/data/curr/sr_Latn.txt | 29 +- source/data/curr/sv.txt | 25 +- source/data/curr/sw.txt | 96 +- source/data/curr/sw_CD.txt | 2 +- source/data/curr/sw_KE.txt | 725 ++ source/data/curr/sw_UG.txt | 2 +- source/data/curr/ta.txt | 102 +- source/data/curr/ta_LK.txt | 2 +- source/data/curr/ta_MY.txt | 2 +- source/data/curr/ta_SG.txt | 2 +- source/data/curr/te.txt | 17 +- source/data/curr/teo.txt | 2 +- source/data/curr/teo_KE.txt | 2 +- source/data/curr/tg.txt | 2 +- source/data/curr/th.txt | 32 +- source/data/curr/ti.txt | 2 +- source/data/curr/ti_ER.txt | 2 +- source/data/curr/tk.txt | 3 +- source/data/curr/to.txt | 53 +- source/data/curr/tr.txt | 41 +- source/data/curr/tt.txt | 2 +- source/data/curr/twq.txt | 2 +- source/data/curr/tzm.txt | 2 +- source/data/curr/ug.txt | 2 +- source/data/curr/uk.txt | 98 +- source/data/curr/ur.txt | 37 +- source/data/curr/ur_IN.txt | 2 +- source/data/curr/uz.txt | 96 +- source/data/curr/uz_Arab.txt | 2 +- source/data/curr/uz_Cyrl.txt | 2 +- source/data/curr/uz_Latn.txt | 2 +- source/data/curr/vai.txt | 2 +- source/data/curr/vai_Latn.txt | 2 +- source/data/curr/vai_Vaii.txt | 2 +- source/data/curr/vi.txt | 52 +- source/data/curr/vun.txt | 2 +- source/data/curr/wae.txt | 2 +- source/data/curr/wo.txt | 2 +- source/data/curr/xh.txt | 2 +- source/data/curr/xog.txt | 2 +- source/data/curr/yav.txt | 2 +- source/data/curr/yi.txt | 2 +- source/data/curr/yo.txt | 17 +- source/data/curr/yo_BJ.txt | 31 +- source/data/curr/yue.txt | 95 +- source/data/curr/yue_Hans.txt | 95 +- source/data/curr/yue_Hant.txt | 2 +- source/data/curr/zgh.txt | 2 +- source/data/curr/zh.txt | 15 +- source/data/curr/zh_Hans.txt | 2 +- source/data/curr/zh_Hans_HK.txt | 2 +- source/data/curr/zh_Hans_MO.txt | 2 +- source/data/curr/zh_Hans_SG.txt | 2 +- source/data/curr/zh_Hant.txt | 12 +- source/data/curr/zh_Hant_HK.txt | 2 +- source/data/curr/zh_Hant_MO.txt | 2 +- source/data/curr/zu.txt | 81 +- source/data/dtd/cldr-35.1/common/dtd/ldml.dtd | 3146 +++++++ source/data/dtd/cldr-35.1/common/dtd/ldmlICU.dtd | 113 + source/data/icu-config.xml | 1 + source/data/lang/af.txt | 58 +- source/data/lang/agq.txt | 2 +- source/data/lang/ak.txt | 2 +- source/data/lang/am.txt | 14 +- source/data/lang/ar.txt | 21 +- source/data/lang/ar_EG.txt | 2 +- source/data/lang/ar_LY.txt | 2 +- source/data/lang/ar_SA.txt | 24 +- source/data/lang/as.txt | 12 +- source/data/lang/asa.txt | 2 +- source/data/lang/ast.txt | 26 +- source/data/lang/az.txt | 13 +- source/data/lang/az_Cyrl.txt | 3 +- source/data/lang/az_Latn.txt | 2 +- source/data/lang/bas.txt | 2 +- source/data/lang/be.txt | 32 +- source/data/lang/bem.txt | 2 +- source/data/lang/bez.txt | 2 +- source/data/lang/bg.txt | 40 +- source/data/lang/bm.txt | 2 +- source/data/lang/bn.txt | 15 +- source/data/lang/bn_IN.txt | 2 +- source/data/lang/bo.txt | 2 +- source/data/lang/br.txt | 76 +- source/data/lang/brx.txt | 2 +- source/data/lang/bs.txt | 28 +- source/data/lang/bs_Cyrl.txt | 178 +- source/data/lang/bs_Latn.txt | 2 +- source/data/lang/ca.txt | 29 +- source/data/lang/ccp.txt | 2 +- source/data/lang/ce.txt | 3 +- source/data/lang/ceb.txt | 25 +- source/data/lang/cgg.txt | 2 +- source/data/lang/chr.txt | 13 +- source/data/lang/ckb.txt | 4 +- source/data/lang/cs.txt | 13 +- source/data/lang/cy.txt | 42 +- source/data/lang/da.txt | 13 +- source/data/lang/dav.txt | 2 +- source/data/lang/de.txt | 14 +- source/data/lang/de_AT.txt | 2 +- source/data/lang/de_CH.txt | 7 +- source/data/lang/de_LU.txt | 2 +- source/data/lang/dje.txt | 2 +- source/data/lang/dsb.txt | 2 +- source/data/lang/dua.txt | 2 +- source/data/lang/dyo.txt | 2 +- source/data/lang/dz.txt | 2 +- source/data/lang/ebu.txt | 2 +- source/data/lang/ee.txt | 6 +- source/data/lang/el.txt | 12 +- source/data/lang/en.txt | 12 +- source/data/lang/en_001.txt | 6 +- source/data/lang/en_150.txt | 2 +- source/data/lang/en_AG.txt | 2 +- source/data/lang/en_AI.txt | 2 +- source/data/lang/en_AT.txt | 2 +- source/data/lang/en_AU.txt | 23 +- source/data/lang/en_BB.txt | 2 +- source/data/lang/en_BE.txt | 2 +- source/data/lang/en_BM.txt | 2 +- source/data/lang/en_BS.txt | 2 +- source/data/lang/en_BW.txt | 2 +- source/data/lang/en_BZ.txt | 2 +- source/data/lang/en_CA.txt | 33 +- source/data/lang/en_CC.txt | 2 +- source/data/lang/en_CH.txt | 2 +- source/data/lang/en_CK.txt | 2 +- source/data/lang/en_CM.txt | 2 +- source/data/lang/en_CX.txt | 2 +- source/data/lang/en_CY.txt | 2 +- source/data/lang/en_DE.txt | 2 +- source/data/lang/en_DG.txt | 2 +- source/data/lang/en_DK.txt | 2 +- source/data/lang/en_DM.txt | 2 +- source/data/lang/en_ER.txt | 2 +- source/data/lang/en_FI.txt | 2 +- source/data/lang/en_FJ.txt | 2 +- source/data/lang/en_FK.txt | 2 +- source/data/lang/en_FM.txt | 2 +- source/data/lang/en_GB.txt | 31 +- source/data/lang/en_GD.txt | 2 +- source/data/lang/en_GG.txt | 2 +- source/data/lang/en_GH.txt | 2 +- source/data/lang/en_GI.txt | 2 +- source/data/lang/en_GM.txt | 2 +- source/data/lang/en_GY.txt | 2 +- source/data/lang/en_HK.txt | 2 +- source/data/lang/en_IE.txt | 2 +- source/data/lang/en_IL.txt | 2 +- source/data/lang/en_IM.txt | 2 +- source/data/lang/en_IN.txt | 3 +- source/data/lang/en_IO.txt | 2 +- source/data/lang/en_JE.txt | 2 +- source/data/lang/en_JM.txt | 2 +- source/data/lang/en_KE.txt | 2 +- source/data/lang/en_KI.txt | 2 +- source/data/lang/en_KN.txt | 2 +- source/data/lang/en_KY.txt | 2 +- source/data/lang/en_LC.txt | 2 +- source/data/lang/en_LR.txt | 2 +- source/data/lang/en_LS.txt | 2 +- source/data/lang/en_MG.txt | 2 +- source/data/lang/en_MO.txt | 2 +- source/data/lang/en_MS.txt | 2 +- source/data/lang/en_MT.txt | 2 +- source/data/lang/en_MU.txt | 2 +- source/data/lang/en_MW.txt | 2 +- source/data/lang/en_MY.txt | 2 +- source/data/lang/en_NA.txt | 2 +- source/data/lang/en_NF.txt | 2 +- source/data/lang/en_NG.txt | 2 +- source/data/lang/en_NL.txt | 2 +- source/data/lang/en_NR.txt | 2 +- source/data/lang/en_NU.txt | 2 +- source/data/lang/en_NZ.txt | 2 +- source/data/lang/en_PG.txt | 2 +- source/data/lang/en_PH.txt | 2 +- source/data/lang/en_PK.txt | 2 +- source/data/lang/en_PN.txt | 2 +- source/data/lang/en_PW.txt | 2 +- source/data/lang/en_RW.txt | 2 +- source/data/lang/en_SB.txt | 2 +- source/data/lang/en_SC.txt | 2 +- source/data/lang/en_SD.txt | 2 +- source/data/lang/en_SE.txt | 2 +- source/data/lang/en_SG.txt | 2 +- source/data/lang/en_SH.txt | 2 +- source/data/lang/en_SI.txt | 2 +- source/data/lang/en_SL.txt | 2 +- source/data/lang/en_SS.txt | 2 +- source/data/lang/en_SX.txt | 2 +- source/data/lang/en_SZ.txt | 2 +- source/data/lang/en_TC.txt | 2 +- source/data/lang/en_TK.txt | 2 +- source/data/lang/en_TO.txt | 2 +- source/data/lang/en_TT.txt | 2 +- source/data/lang/en_TV.txt | 2 +- source/data/lang/en_TZ.txt | 2 +- source/data/lang/en_UG.txt | 2 +- source/data/lang/en_VC.txt | 2 +- source/data/lang/en_VG.txt | 2 +- source/data/lang/en_VU.txt | 2 +- source/data/lang/en_WS.txt | 2 +- source/data/lang/en_ZA.txt | 2 +- source/data/lang/en_ZM.txt | 2 +- source/data/lang/en_ZW.txt | 2 +- source/data/lang/eo.txt | 2 +- source/data/lang/es.txt | 35 +- source/data/lang/es_419.txt | 46 +- source/data/lang/es_AR.txt | 2 +- source/data/lang/es_BO.txt | 2 +- source/data/lang/es_BR.txt | 2 +- source/data/lang/es_BZ.txt | 2 +- source/data/lang/es_CL.txt | 2 +- source/data/lang/es_CO.txt | 2 +- source/data/lang/es_CR.txt | 2 +- source/data/lang/es_CU.txt | 2 +- source/data/lang/es_DO.txt | 2 +- source/data/lang/es_EC.txt | 2 +- source/data/lang/es_GT.txt | 2 +- source/data/lang/es_HN.txt | 2 +- source/data/lang/es_MX.txt | 58 +- source/data/lang/es_NI.txt | 2 +- source/data/lang/es_PA.txt | 2 +- source/data/lang/es_PE.txt | 2 +- source/data/lang/es_PR.txt | 2 +- source/data/lang/es_PY.txt | 2 +- source/data/lang/es_SV.txt | 2 +- source/data/lang/es_US.txt | 18 +- source/data/lang/es_UY.txt | 2 +- source/data/lang/es_VE.txt | 2 +- source/data/lang/et.txt | 20 +- source/data/lang/eu.txt | 44 +- source/data/lang/ewo.txt | 2 +- source/data/lang/fa.txt | 30 +- source/data/lang/fa_AF.txt | 2 +- source/data/lang/ff.txt | 2 +- source/data/lang/ff_Latn.txt | 2 +- source/data/lang/fi.txt | 37 +- source/data/lang/fil.txt | 12 +- source/data/lang/fo.txt | 13 +- source/data/lang/fr.txt | 32 +- source/data/lang/fr_BE.txt | 2 +- source/data/lang/fr_CA.txt | 31 +- source/data/lang/fr_CH.txt | 2 +- source/data/lang/fur.txt | 2 +- source/data/lang/fy.txt | 2 +- source/data/lang/ga.txt | 58 +- source/data/lang/gd.txt | 20 +- source/data/lang/gl.txt | 54 +- source/data/lang/gsw.txt | 2 +- source/data/lang/gu.txt | 11 +- source/data/lang/guz.txt | 2 +- source/data/lang/gv.txt | 2 +- source/data/lang/ha.txt | 226 +- source/data/lang/ha_NE.txt | 86 +- source/data/lang/haw.txt | 2 +- source/data/lang/he.txt | 27 +- source/data/lang/hi.txt | 11 +- source/data/lang/hr.txt | 31 +- source/data/lang/hsb.txt | 6 +- source/data/lang/hu.txt | 18 +- source/data/lang/hy.txt | 45 +- source/data/lang/ia.txt | 4 +- source/data/lang/id.txt | 22 +- source/data/lang/ig.txt | 12 +- source/data/lang/ii.txt | 2 +- source/data/lang/is.txt | 14 +- source/data/lang/it.txt | 10 +- source/data/lang/ja.txt | 27 +- source/data/lang/jgo.txt | 2 +- source/data/lang/jmc.txt | 2 +- source/data/lang/jv.txt | 18 +- source/data/lang/ka.txt | 11 +- source/data/lang/kab.txt | 2 +- source/data/lang/kam.txt | 2 +- source/data/lang/kde.txt | 2 +- source/data/lang/kea.txt | 102 +- source/data/lang/khq.txt | 2 +- source/data/lang/ki.txt | 2 +- source/data/lang/kk.txt | 12 +- source/data/lang/kkj.txt | 2 +- source/data/lang/kl.txt | 2 +- source/data/lang/kln.txt | 2 +- source/data/lang/km.txt | 15 +- source/data/lang/kn.txt | 20 +- source/data/lang/ko.txt | 10 +- source/data/lang/kok.txt | 53 +- source/data/lang/ks.txt | 2 +- source/data/lang/ksb.txt | 2 +- source/data/lang/ksf.txt | 2 +- source/data/lang/ksh.txt | 2 +- source/data/lang/ku.txt | 2 +- source/data/lang/kw.txt | 2 +- source/data/lang/ky.txt | 10 +- source/data/lang/lag.txt | 2 +- source/data/lang/lb.txt | 4 +- source/data/lang/lg.txt | 2 +- source/data/lang/lkt.txt | 2 +- source/data/lang/ln.txt | 2 +- source/data/lang/lo.txt | 11 +- source/data/lang/lrc.txt | 2 +- source/data/lang/lt.txt | 13 +- source/data/lang/lu.txt | 2 +- source/data/lang/luo.txt | 2 +- source/data/lang/luy.txt | 2 +- source/data/lang/lv.txt | 37 +- source/data/lang/mas.txt | 2 +- source/data/lang/mer.txt | 2 +- source/data/lang/mfe.txt | 2 +- source/data/lang/mg.txt | 2 +- source/data/lang/mgh.txt | 2 +- source/data/lang/mgo.txt | 2 +- source/data/lang/mi.txt | 11 +- source/data/lang/mk.txt | 13 +- source/data/lang/ml.txt | 9 +- source/data/lang/mn.txt | 18 +- source/data/lang/mr.txt | 11 +- source/data/lang/ms.txt | 134 +- source/data/lang/mt.txt | 4 +- source/data/lang/mua.txt | 2 +- source/data/lang/my.txt | 13 +- source/data/lang/mzn.txt | 2 +- source/data/lang/naq.txt | 2 +- source/data/lang/nb.txt | 16 +- source/data/lang/nd.txt | 2 +- source/data/lang/nds.txt | 2 +- source/data/lang/ne.txt | 11 +- source/data/lang/nl.txt | 16 +- source/data/lang/nmg.txt | 2 +- source/data/lang/nn.txt | 2 +- source/data/lang/nnh.txt | 2 +- source/data/lang/nus.txt | 2 +- source/data/lang/nyn.txt | 2 +- source/data/lang/om.txt | 2 +- source/data/lang/or.txt | 10 +- source/data/lang/os.txt | 2 +- source/data/lang/pa.txt | 15 +- source/data/lang/pa_Arab.txt | 2 +- source/data/lang/pa_Guru.txt | 2 +- source/data/lang/pl.txt | 49 +- source/data/lang/ps.txt | 147 +- source/data/lang/ps_PK.txt | 2 +- source/data/lang/pt.txt | 29 +- source/data/lang/pt_AO.txt | 2 +- source/data/lang/pt_CH.txt | 2 +- source/data/lang/pt_CV.txt | 2 +- source/data/lang/pt_GQ.txt | 2 +- source/data/lang/pt_GW.txt | 2 +- source/data/lang/pt_LU.txt | 2 +- source/data/lang/pt_MO.txt | 2 +- source/data/lang/pt_MZ.txt | 2 +- source/data/lang/pt_PT.txt | 25 +- source/data/lang/pt_ST.txt | 2 +- source/data/lang/pt_TL.txt | 2 +- source/data/lang/qu.txt | 208 +- source/data/lang/rm.txt | 2 +- source/data/lang/rn.txt | 2 +- source/data/lang/ro.txt | 36 +- source/data/lang/ro_MD.txt | 2 +- source/data/lang/rof.txt | 2 +- source/data/lang/root.txt | 2 +- source/data/lang/ru.txt | 40 +- source/data/lang/rw.txt | 2 +- source/data/lang/rwk.txt | 2 +- source/data/lang/sah.txt | 2 +- source/data/lang/saq.txt | 2 +- source/data/lang/sbp.txt | 2 +- source/data/lang/sd.txt | 17 +- source/data/lang/se.txt | 2 +- source/data/lang/se_FI.txt | 3 +- source/data/lang/seh.txt | 2 +- source/data/lang/ses.txt | 2 +- source/data/lang/sg.txt | 2 +- source/data/lang/shi.txt | 2 +- source/data/lang/shi_Latn.txt | 2 +- source/data/lang/shi_Tfng.txt | 2 +- source/data/lang/si.txt | 11 +- source/data/lang/sk.txt | 33 +- source/data/lang/sl.txt | 10 +- source/data/lang/smn.txt | 6 +- source/data/lang/sn.txt | 2 +- source/data/lang/so.txt | 14 +- source/data/lang/sq.txt | 6 +- source/data/lang/sr.txt | 19 +- source/data/lang/sr_Cyrl.txt | 2 +- source/data/lang/sr_Cyrl_BA.txt | 5 +- source/data/lang/sr_Cyrl_ME.txt | 2 +- source/data/lang/sr_Cyrl_XK.txt | 2 +- source/data/lang/sr_Latn.txt | 19 +- source/data/lang/sr_Latn_BA.txt | 5 +- source/data/lang/sr_Latn_ME.txt | 2 +- source/data/lang/sr_Latn_XK.txt | 2 +- source/data/lang/sv.txt | 36 +- source/data/lang/sv_FI.txt | 5 +- source/data/lang/sw.txt | 16 +- source/data/lang/sw_CD.txt | 2 +- source/data/lang/sw_KE.txt | 40 +- source/data/lang/ta.txt | 15 +- source/data/lang/te.txt | 11 +- source/data/lang/teo.txt | 2 +- source/data/lang/tg.txt | 24 +- source/data/lang/th.txt | 15 +- source/data/lang/ti.txt | 2 +- source/data/lang/tk.txt | 23 +- source/data/lang/to.txt | 25 +- source/data/lang/tr.txt | 47 +- source/data/lang/tt.txt | 18 +- source/data/lang/twq.txt | 2 +- source/data/lang/tzm.txt | 2 +- source/data/lang/ug.txt | 2 +- source/data/lang/uk.txt | 15 +- source/data/lang/ur.txt | 27 +- source/data/lang/ur_IN.txt | 2 +- source/data/lang/uz.txt | 11 +- source/data/lang/uz_Arab.txt | 2 +- source/data/lang/uz_Cyrl.txt | 3 +- source/data/lang/uz_Latn.txt | 2 +- source/data/lang/vai.txt | 2 +- source/data/lang/vai_Latn.txt | 2 +- source/data/lang/vai_Vaii.txt | 2 +- source/data/lang/vi.txt | 92 +- source/data/lang/vun.txt | 2 +- source/data/lang/wae.txt | 2 +- source/data/lang/wo.txt | 2 +- source/data/lang/xh.txt | 2 +- source/data/lang/xog.txt | 2 +- source/data/lang/yav.txt | 2 +- source/data/lang/yi.txt | 3 +- source/data/lang/yo.txt | 46 +- source/data/lang/yo_BJ.txt | 127 +- source/data/lang/yue.txt | 10 +- source/data/lang/yue_Hans.txt | 10 +- source/data/lang/yue_Hant.txt | 2 +- source/data/lang/zgh.txt | 2 +- source/data/lang/zh.txt | 11 +- source/data/lang/zh_Hans.txt | 2 +- source/data/lang/zh_Hant.txt | 6 +- source/data/lang/zh_Hant_HK.txt | 3 +- source/data/lang/zh_Hant_MO.txt | 2 +- source/data/lang/zu.txt | 30 +- source/data/locales/af.txt | 265 +- source/data/locales/af_NA.txt | 2 +- source/data/locales/af_ZA.txt | 2 +- source/data/locales/agq.txt | 4 +- source/data/locales/agq_CM.txt | 2 +- source/data/locales/ak.txt | 4 +- source/data/locales/ak_GH.txt | 2 +- source/data/locales/am.txt | 37 +- source/data/locales/am_ET.txt | 2 +- source/data/locales/ar.txt | 138 +- source/data/locales/ar_001.txt | 2 +- source/data/locales/ar_AE.txt | 14 +- source/data/locales/ar_BH.txt | 14 +- source/data/locales/ar_DJ.txt | 2 +- source/data/locales/ar_DZ.txt | 10 +- source/data/locales/ar_EG.txt | 14 +- source/data/locales/ar_EH.txt | 2 +- source/data/locales/ar_ER.txt | 2 +- source/data/locales/ar_IL.txt | 2 +- source/data/locales/ar_IQ.txt | 14 +- source/data/locales/ar_JO.txt | 14 +- source/data/locales/ar_KM.txt | 2 +- source/data/locales/ar_KW.txt | 14 +- source/data/locales/ar_LB.txt | 4 +- source/data/locales/ar_LY.txt | 4 +- source/data/locales/ar_MA.txt | 10 +- source/data/locales/ar_MR.txt | 4 +- source/data/locales/ar_OM.txt | 14 +- source/data/locales/ar_PS.txt | 2 +- source/data/locales/ar_QA.txt | 14 +- source/data/locales/ar_SA.txt | 30 +- source/data/locales/ar_SD.txt | 14 +- source/data/locales/ar_SO.txt | 4 +- source/data/locales/ar_SS.txt | 2 +- source/data/locales/ar_SY.txt | 14 +- source/data/locales/ar_TD.txt | 2 +- source/data/locales/ar_TN.txt | 10 +- source/data/locales/ar_YE.txt | 14 +- source/data/locales/as.txt | 41 +- source/data/locales/as_IN.txt | 2 +- source/data/locales/asa.txt | 2 +- source/data/locales/asa_TZ.txt | 2 +- source/data/locales/ast.txt | 6 +- source/data/locales/ast_ES.txt | 2 +- source/data/locales/az.txt | 165 +- source/data/locales/az_Cyrl.txt | 4 +- source/data/locales/az_Cyrl_AZ.txt | 2 +- source/data/locales/az_Latn.txt | 2 +- source/data/locales/az_Latn_AZ.txt | 2 +- source/data/locales/bas.txt | 4 +- source/data/locales/bas_CM.txt | 2 +- source/data/locales/be.txt | 156 +- source/data/locales/be_BY.txt | 2 +- source/data/locales/bem.txt | 2 +- source/data/locales/bem_ZM.txt | 2 +- source/data/locales/bez.txt | 2 +- source/data/locales/bez_TZ.txt | 2 +- source/data/locales/bg.txt | 147 +- source/data/locales/bg_BG.txt | 2 +- source/data/locales/bm.txt | 2 +- source/data/locales/bm_ML.txt | 2 +- source/data/locales/bn.txt | 188 +- source/data/locales/bn_BD.txt | 2 +- source/data/locales/bn_IN.txt | 2 +- source/data/locales/bo.txt | 4 +- source/data/locales/bo_CN.txt | 2 +- source/data/locales/bo_IN.txt | 2 +- source/data/locales/br.txt | 515 +- source/data/locales/br_FR.txt | 2 +- source/data/locales/brx.txt | 4 +- source/data/locales/brx_IN.txt | 2 +- source/data/locales/bs.txt | 15 +- source/data/locales/bs_Cyrl.txt | 654 +- source/data/locales/bs_Cyrl_BA.txt | 2 +- source/data/locales/bs_Latn.txt | 2 +- source/data/locales/bs_Latn_BA.txt | 2 +- source/data/locales/ca.txt | 32 +- source/data/locales/ca_AD.txt | 2 +- source/data/locales/ca_ES.txt | 2 +- source/data/locales/ca_FR.txt | 2 +- source/data/locales/ca_IT.txt | 2 +- source/data/locales/ccp.txt | 6 +- source/data/locales/ccp_BD.txt | 2 +- source/data/locales/ccp_IN.txt | 2 +- source/data/locales/ce.txt | 8 +- source/data/locales/ce_RU.txt | 2 +- source/data/locales/ceb.txt | 453 +- source/data/locales/ceb_PH.txt | 2 +- source/data/locales/cgg.txt | 2 +- source/data/locales/cgg_UG.txt | 2 +- source/data/locales/chr.txt | 51 +- source/data/locales/chr_US.txt | 2 +- source/data/locales/ckb.txt | 4 +- source/data/locales/ckb_IQ.txt | 2 +- source/data/locales/ckb_IR.txt | 2 +- source/data/locales/cs.txt | 1849 +++- source/data/locales/cs_CZ.txt | 2 +- source/data/locales/cy.txt | 157 +- source/data/locales/cy_GB.txt | 2 +- source/data/locales/da.txt | 177 +- source/data/locales/da_DK.txt | 2 +- source/data/locales/da_GL.txt | 2 +- source/data/locales/dav.txt | 2 +- source/data/locales/dav_KE.txt | 2 +- source/data/locales/de.txt | 423 +- source/data/locales/de_AT.txt | 4 +- source/data/locales/de_BE.txt | 2 +- source/data/locales/de_CH.txt | 10 +- source/data/locales/de_DE.txt | 2 +- source/data/locales/de_IT.txt | 2 +- source/data/locales/de_LI.txt | 4 +- source/data/locales/de_LU.txt | 2 +- source/data/locales/dje.txt | 4 +- source/data/locales/dje_NE.txt | 2 +- source/data/locales/dsb.txt | 8 +- source/data/locales/dsb_DE.txt | 2 +- source/data/locales/dua.txt | 4 +- source/data/locales/dua_CM.txt | 2 +- source/data/locales/dyo.txt | 4 +- source/data/locales/dyo_SN.txt | 2 +- source/data/locales/dz.txt | 8 +- source/data/locales/dz_BT.txt | 2 +- source/data/locales/ebu.txt | 2 +- source/data/locales/ebu_KE.txt | 2 +- source/data/locales/ee.txt | 8 +- source/data/locales/ee_GH.txt | 2 +- source/data/locales/ee_TG.txt | 2 +- source/data/locales/el.txt | 387 +- source/data/locales/el_CY.txt | 2 +- source/data/locales/el_GR.txt | 2 +- source/data/locales/en.txt | 8 +- source/data/locales/en_001.txt | 169 +- source/data/locales/en_150.txt | 2 +- source/data/locales/en_AE.txt | 2 +- source/data/locales/en_AG.txt | 2 +- source/data/locales/en_AI.txt | 2 +- source/data/locales/en_AS.txt | 2 +- source/data/locales/en_AT.txt | 2 +- source/data/locales/en_AU.txt | 392 +- source/data/locales/en_BB.txt | 2 +- source/data/locales/en_BE.txt | 2 +- source/data/locales/en_BI.txt | 2 +- source/data/locales/en_BM.txt | 2 +- source/data/locales/en_BS.txt | 2 +- source/data/locales/en_BW.txt | 2 +- source/data/locales/en_BZ.txt | 2 +- source/data/locales/en_CA.txt | 14 +- source/data/locales/en_CC.txt | 2 +- source/data/locales/en_CH.txt | 2 +- source/data/locales/en_CK.txt | 2 +- source/data/locales/en_CM.txt | 2 +- source/data/locales/en_CX.txt | 2 +- source/data/locales/en_CY.txt | 2 +- source/data/locales/en_DE.txt | 2 +- source/data/locales/en_DG.txt | 2 +- source/data/locales/en_DK.txt | 2 +- source/data/locales/en_DM.txt | 2 +- source/data/locales/en_ER.txt | 2 +- source/data/locales/en_FI.txt | 4 +- source/data/locales/en_FJ.txt | 2 +- source/data/locales/en_FK.txt | 2 +- source/data/locales/en_FM.txt | 2 +- source/data/locales/en_GB.txt | 219 +- source/data/locales/en_GD.txt | 2 +- source/data/locales/en_GG.txt | 2 +- source/data/locales/en_GH.txt | 2 +- source/data/locales/en_GI.txt | 2 +- source/data/locales/en_GM.txt | 2 +- source/data/locales/en_GU.txt | 2 +- source/data/locales/en_GY.txt | 2 +- source/data/locales/en_HK.txt | 9 +- source/data/locales/en_IE.txt | 2 +- source/data/locales/en_IL.txt | 2 +- source/data/locales/en_IM.txt | 2 +- source/data/locales/en_IN.txt | 27 +- source/data/locales/en_IO.txt | 2 +- source/data/locales/en_JE.txt | 2 +- source/data/locales/en_JM.txt | 2 +- source/data/locales/en_KE.txt | 2 +- source/data/locales/en_KI.txt | 2 +- source/data/locales/en_KN.txt | 2 +- source/data/locales/en_KY.txt | 2 +- source/data/locales/en_LC.txt | 2 +- source/data/locales/en_LR.txt | 2 +- source/data/locales/en_LS.txt | 2 +- source/data/locales/en_MG.txt | 2 +- source/data/locales/en_MH.txt | 2 +- source/data/locales/en_MO.txt | 2 +- source/data/locales/en_MP.txt | 2 +- source/data/locales/en_MS.txt | 2 +- source/data/locales/en_MT.txt | 2 +- source/data/locales/en_MU.txt | 2 +- source/data/locales/en_MW.txt | 2 +- source/data/locales/en_MY.txt | 2 +- source/data/locales/en_NA.txt | 2 +- source/data/locales/en_NF.txt | 2 +- source/data/locales/en_NG.txt | 2 +- source/data/locales/en_NL.txt | 2 +- source/data/locales/en_NR.txt | 2 +- source/data/locales/en_NU.txt | 2 +- source/data/locales/en_NZ.txt | 2 +- source/data/locales/en_PG.txt | 2 +- source/data/locales/en_PH.txt | 2 +- source/data/locales/en_PK.txt | 2 +- source/data/locales/en_PN.txt | 2 +- source/data/locales/en_PR.txt | 2 +- source/data/locales/en_PW.txt | 2 +- source/data/locales/en_RW.txt | 2 +- source/data/locales/en_SB.txt | 2 +- source/data/locales/en_SC.txt | 2 +- source/data/locales/en_SD.txt | 2 +- source/data/locales/en_SE.txt | 4 +- source/data/locales/en_SG.txt | 16 +- source/data/locales/en_SH.txt | 2 +- source/data/locales/en_SI.txt | 2 +- source/data/locales/en_SL.txt | 2 +- source/data/locales/en_SS.txt | 2 +- source/data/locales/en_SX.txt | 2 +- source/data/locales/en_SZ.txt | 2 +- source/data/locales/en_TC.txt | 2 +- source/data/locales/en_TK.txt | 2 +- source/data/locales/en_TO.txt | 2 +- source/data/locales/en_TT.txt | 2 +- source/data/locales/en_TV.txt | 2 +- source/data/locales/en_TZ.txt | 2 +- source/data/locales/en_UG.txt | 2 +- source/data/locales/en_UM.txt | 2 +- source/data/locales/en_US.txt | 2 +- source/data/locales/en_US_POSIX.txt | 4 +- source/data/locales/en_VC.txt | 2 +- source/data/locales/en_VG.txt | 2 +- source/data/locales/en_VI.txt | 2 +- source/data/locales/en_VU.txt | 2 +- source/data/locales/en_WS.txt | 2 +- source/data/locales/en_ZA.txt | 4 +- source/data/locales/en_ZM.txt | 2 +- source/data/locales/en_ZW.txt | 2 +- source/data/locales/eo.txt | 4 +- source/data/locales/eo_001.txt | 2 +- source/data/locales/es.txt | 303 +- source/data/locales/es_419.txt | 185 +- source/data/locales/es_AR.txt | 4 +- source/data/locales/es_BO.txt | 10 +- source/data/locales/es_BR.txt | 2 +- source/data/locales/es_BZ.txt | 2 +- source/data/locales/es_CL.txt | 10 +- source/data/locales/es_CO.txt | 8 +- source/data/locales/es_CR.txt | 17 +- source/data/locales/es_CU.txt | 2 +- source/data/locales/es_DO.txt | 8 +- source/data/locales/es_EA.txt | 2 +- source/data/locales/es_EC.txt | 6 +- source/data/locales/es_ES.txt | 2 +- source/data/locales/es_GQ.txt | 2 +- source/data/locales/es_GT.txt | 19 +- source/data/locales/es_HN.txt | 21 +- source/data/locales/es_IC.txt | 2 +- source/data/locales/es_MX.txt | 184 +- source/data/locales/es_NI.txt | 17 +- source/data/locales/es_PA.txt | 21 +- source/data/locales/es_PE.txt | 10 +- source/data/locales/es_PH.txt | 2 +- source/data/locales/es_PR.txt | 10 +- source/data/locales/es_PY.txt | 13 +- source/data/locales/es_SV.txt | 10 +- source/data/locales/es_US.txt | 215 +- source/data/locales/es_UY.txt | 6 +- source/data/locales/es_VE.txt | 8 +- source/data/locales/et.txt | 114 +- source/data/locales/et_EE.txt | 2 +- source/data/locales/eu.txt | 95 +- source/data/locales/eu_ES.txt | 2 +- source/data/locales/ewo.txt | 4 +- source/data/locales/ewo_CM.txt | 2 +- source/data/locales/fa.txt | 1207 ++- source/data/locales/fa_AF.txt | 7 +- source/data/locales/fa_IR.txt | 2 +- source/data/locales/ff.txt | 4 +- source/data/locales/ff_Latn.txt | 2 +- source/data/locales/ff_Latn_BF.txt | 2 +- source/data/locales/ff_Latn_CM.txt | 2 +- source/data/locales/ff_Latn_GH.txt | 2 +- source/data/locales/ff_Latn_GM.txt | 2 +- source/data/locales/ff_Latn_GN.txt | 2 +- source/data/locales/ff_Latn_GW.txt | 2 +- source/data/locales/ff_Latn_LR.txt | 2 +- source/data/locales/ff_Latn_MR.txt | 2 +- source/data/locales/ff_Latn_NE.txt | 2 +- source/data/locales/ff_Latn_NG.txt | 2 +- source/data/locales/ff_Latn_SL.txt | 2 +- source/data/locales/ff_Latn_SN.txt | 2 +- source/data/locales/fi.txt | 62 +- source/data/locales/fi_FI.txt | 2 +- source/data/locales/fil.txt | 1106 ++- source/data/locales/fil_PH.txt | 2 +- source/data/locales/fo.txt | 120 +- source/data/locales/fo_DK.txt | 2 +- source/data/locales/fo_FO.txt | 2 +- source/data/locales/fr.txt | 163 +- source/data/locales/fr_BE.txt | 2 +- source/data/locales/fr_BF.txt | 2 +- source/data/locales/fr_BI.txt | 2 +- source/data/locales/fr_BJ.txt | 2 +- source/data/locales/fr_BL.txt | 2 +- source/data/locales/fr_CA.txt | 85 +- source/data/locales/fr_CD.txt | 2 +- source/data/locales/fr_CF.txt | 2 +- source/data/locales/fr_CG.txt | 2 +- source/data/locales/fr_CH.txt | 3 +- source/data/locales/fr_CI.txt | 2 +- source/data/locales/fr_CM.txt | 2 +- source/data/locales/fr_DJ.txt | 2 +- source/data/locales/fr_DZ.txt | 2 +- source/data/locales/fr_FR.txt | 2 +- source/data/locales/fr_GA.txt | 2 +- source/data/locales/fr_GF.txt | 2 +- source/data/locales/fr_GN.txt | 2 +- source/data/locales/fr_GP.txt | 2 +- source/data/locales/fr_GQ.txt | 2 +- source/data/locales/fr_HT.txt | 2 +- source/data/locales/fr_KM.txt | 2 +- source/data/locales/fr_LU.txt | 4 +- source/data/locales/fr_MA.txt | 4 +- source/data/locales/fr_MC.txt | 2 +- source/data/locales/fr_MF.txt | 2 +- source/data/locales/fr_MG.txt | 2 +- source/data/locales/fr_ML.txt | 2 +- source/data/locales/fr_MQ.txt | 2 +- source/data/locales/fr_MR.txt | 2 +- source/data/locales/fr_MU.txt | 2 +- source/data/locales/fr_NC.txt | 2 +- source/data/locales/fr_NE.txt | 2 +- source/data/locales/fr_PF.txt | 2 +- source/data/locales/fr_PM.txt | 2 +- source/data/locales/fr_RE.txt | 2 +- source/data/locales/fr_RW.txt | 2 +- source/data/locales/fr_SC.txt | 2 +- source/data/locales/fr_SN.txt | 2 +- source/data/locales/fr_SY.txt | 2 +- source/data/locales/fr_TD.txt | 2 +- source/data/locales/fr_TG.txt | 2 +- source/data/locales/fr_TN.txt | 2 +- source/data/locales/fr_VU.txt | 2 +- source/data/locales/fr_WF.txt | 2 +- source/data/locales/fr_YT.txt | 2 +- source/data/locales/fur.txt | 4 +- source/data/locales/fur_IT.txt | 2 +- source/data/locales/fy.txt | 8 +- source/data/locales/fy_NL.txt | 2 +- source/data/locales/ga.txt | 102 +- source/data/locales/ga_GB.txt | 5 + source/data/locales/ga_IE.txt | 2 +- source/data/locales/gd.txt | 72 +- source/data/locales/gd_GB.txt | 2 +- source/data/locales/gl.txt | 96 +- source/data/locales/gl_ES.txt | 2 +- source/data/locales/gsw.txt | 2 +- source/data/locales/gsw_CH.txt | 2 +- source/data/locales/gsw_FR.txt | 2 +- source/data/locales/gsw_LI.txt | 2 +- source/data/locales/gu.txt | 317 +- source/data/locales/gu_IN.txt | 2 +- source/data/locales/guz.txt | 2 +- source/data/locales/guz_KE.txt | 2 +- source/data/locales/gv.txt | 6 +- source/data/locales/gv_IM.txt | 2 +- source/data/locales/ha.txt | 902 +- source/data/locales/ha_GH.txt | 2 +- source/data/locales/ha_NE.txt | 951 +- source/data/locales/ha_NG.txt | 2 +- source/data/locales/haw.txt | 4 +- source/data/locales/haw_US.txt | 2 +- source/data/locales/he.txt | 269 +- source/data/locales/he_IL.txt | 2 +- source/data/locales/hi.txt | 147 +- source/data/locales/hi_IN.txt | 2 +- source/data/locales/hr.txt | 340 +- source/data/locales/hr_BA.txt | 2 +- source/data/locales/hr_HR.txt | 2 +- source/data/locales/hsb.txt | 8 +- source/data/locales/hsb_DE.txt | 2 +- source/data/locales/hu.txt | 111 +- source/data/locales/hu_HU.txt | 2 +- source/data/locales/hy.txt | 188 +- source/data/locales/hy_AM.txt | 2 +- source/data/locales/ia.txt | 4 +- source/data/locales/ia_001.txt | 2 +- source/data/locales/id.txt | 120 +- source/data/locales/id_ID.txt | 2 +- source/data/locales/ig.txt | 196 +- source/data/locales/ig_NG.txt | 2 +- source/data/locales/ii.txt | 4 +- source/data/locales/ii_CN.txt | 2 +- source/data/locales/is.txt | 72 +- source/data/locales/is_IS.txt | 2 +- source/data/locales/it.txt | 25 +- source/data/locales/it_CH.txt | 4 +- source/data/locales/it_IT.txt | 2 +- source/data/locales/it_SM.txt | 2 +- source/data/locales/it_VA.txt | 2 +- source/data/locales/ja.txt | 313 +- source/data/locales/ja_JP.txt | 2 +- source/data/locales/jgo.txt | 6 +- source/data/locales/jgo_CM.txt | 2 +- source/data/locales/jmc.txt | 2 +- source/data/locales/jmc_TZ.txt | 2 +- source/data/locales/jv.txt | 372 +- source/data/locales/jv_ID.txt | 2 +- source/data/locales/ka.txt | 88 +- source/data/locales/ka_GE.txt | 2 +- source/data/locales/kab.txt | 4 +- source/data/locales/kab_DZ.txt | 2 +- source/data/locales/kam.txt | 2 +- source/data/locales/kam_KE.txt | 2 +- source/data/locales/kde.txt | 2 +- source/data/locales/kde_TZ.txt | 2 +- source/data/locales/kea.txt | 453 +- source/data/locales/kea_CV.txt | 2 +- source/data/locales/khq.txt | 4 +- source/data/locales/khq_ML.txt | 2 +- source/data/locales/ki.txt | 2 +- source/data/locales/ki_KE.txt | 2 +- source/data/locales/kk.txt | 110 +- source/data/locales/kk_KZ.txt | 2 +- source/data/locales/kkj.txt | 4 +- source/data/locales/kkj_CM.txt | 2 +- source/data/locales/kl.txt | 66 +- source/data/locales/kl_GL.txt | 2 +- source/data/locales/kln.txt | 2 +- source/data/locales/kln_KE.txt | 2 +- source/data/locales/km.txt | 92 +- source/data/locales/km_KH.txt | 2 +- source/data/locales/kn.txt | 386 +- source/data/locales/kn_IN.txt | 2 +- source/data/locales/ko.txt | 54 +- source/data/locales/ko_KP.txt | 2 +- source/data/locales/ko_KR.txt | 2 +- source/data/locales/kok.txt | 345 +- source/data/locales/kok_IN.txt | 2 +- source/data/locales/ks.txt | 4 +- source/data/locales/ks_IN.txt | 2 +- source/data/locales/ksb.txt | 2 +- source/data/locales/ksb_TZ.txt | 2 +- source/data/locales/ksf.txt | 4 +- source/data/locales/ksf_CM.txt | 2 +- source/data/locales/ksh.txt | 2 +- source/data/locales/ksh_DE.txt | 2 +- source/data/locales/ku.txt | 162 +- source/data/locales/ku_TR.txt | 2 +- source/data/locales/kw.txt | 2 +- source/data/locales/kw_GB.txt | 2 +- source/data/locales/ky.txt | 20 +- source/data/locales/ky_KG.txt | 2 +- source/data/locales/lag.txt | 2 +- source/data/locales/lag_TZ.txt | 2 +- source/data/locales/lb.txt | 12 +- source/data/locales/lb_LU.txt | 2 +- source/data/locales/lg.txt | 2 +- source/data/locales/lg_UG.txt | 2 +- source/data/locales/lkt.txt | 6 +- source/data/locales/lkt_US.txt | 2 +- source/data/locales/ln.txt | 4 +- source/data/locales/ln_AO.txt | 2 +- source/data/locales/ln_CD.txt | 2 +- source/data/locales/ln_CF.txt | 2 +- source/data/locales/ln_CG.txt | 2 +- source/data/locales/lo.txt | 93 +- source/data/locales/lo_LA.txt | 2 +- source/data/locales/lrc.txt | 10 +- source/data/locales/lrc_IQ.txt | 2 +- source/data/locales/lrc_IR.txt | 2 +- source/data/locales/lt.txt | 361 +- source/data/locales/lt_LT.txt | 2 +- source/data/locales/lu.txt | 4 +- source/data/locales/lu_CD.txt | 2 +- source/data/locales/luo.txt | 2 +- source/data/locales/luo_KE.txt | 2 +- source/data/locales/luy.txt | 2 +- source/data/locales/luy_KE.txt | 2 +- source/data/locales/lv.txt | 162 +- source/data/locales/lv_LV.txt | 2 +- source/data/locales/mas.txt | 2 +- source/data/locales/mas_KE.txt | 2 +- source/data/locales/mas_TZ.txt | 2 +- source/data/locales/mer.txt | 2 +- source/data/locales/mer_KE.txt | 2 +- source/data/locales/mfe.txt | 4 +- source/data/locales/mfe_MU.txt | 2 +- source/data/locales/mg.txt | 4 +- source/data/locales/mg_MG.txt | 2 +- source/data/locales/mgh.txt | 4 +- source/data/locales/mgh_MZ.txt | 2 +- source/data/locales/mgo.txt | 4 +- source/data/locales/mgo_CM.txt | 2 +- source/data/locales/mi.txt | 81 +- source/data/locales/mi_NZ.txt | 2 +- source/data/locales/mk.txt | 47 +- source/data/locales/mk_MK.txt | 2 +- source/data/locales/ml.txt | 159 +- source/data/locales/ml_IN.txt | 2 +- source/data/locales/mn.txt | 162 +- source/data/locales/mn_MN.txt | 2 +- source/data/locales/mr.txt | 135 +- source/data/locales/mr_IN.txt | 2 +- source/data/locales/ms.txt | 809 +- source/data/locales/ms_BN.txt | 2 +- source/data/locales/ms_MY.txt | 2 +- source/data/locales/ms_SG.txt | 2 +- source/data/locales/mt.txt | 6 +- source/data/locales/mt_MT.txt | 2 +- source/data/locales/mua.txt | 4 +- source/data/locales/mua_CM.txt | 2 +- source/data/locales/my.txt | 22 +- source/data/locales/my_MM.txt | 2 +- source/data/locales/mzn.txt | 4 +- source/data/locales/mzn_IR.txt | 2 +- source/data/locales/naq.txt | 2 +- source/data/locales/naq_NA.txt | 2 +- source/data/locales/nb.txt | 2613 +++++- source/data/locales/nb_NO.txt | 2 +- source/data/locales/nb_SJ.txt | 2 +- source/data/locales/nd.txt | 2 +- source/data/locales/nd_ZW.txt | 2 +- source/data/locales/nds.txt | 8 +- source/data/locales/nds_DE.txt | 2 +- source/data/locales/nds_NL.txt | 6 +- source/data/locales/ne.txt | 142 +- source/data/locales/ne_IN.txt | 2 +- source/data/locales/ne_NP.txt | 2 +- source/data/locales/nl.txt | 3297 ++++++- source/data/locales/nl_AW.txt | 2 +- source/data/locales/nl_BE.txt | 2 +- source/data/locales/nl_BQ.txt | 2 +- source/data/locales/nl_CW.txt | 2 +- source/data/locales/nl_NL.txt | 2 +- source/data/locales/nl_SR.txt | 2 +- source/data/locales/nl_SX.txt | 2 +- source/data/locales/nmg.txt | 4 +- source/data/locales/nmg_CM.txt | 2 +- source/data/locales/nn.txt | 2 +- source/data/locales/nn_NO.txt | 2 +- source/data/locales/nnh.txt | 4 +- source/data/locales/nnh_CM.txt | 2 +- source/data/locales/nus.txt | 4 +- source/data/locales/nus_SS.txt | 2 +- source/data/locales/nyn.txt | 2 +- source/data/locales/nyn_UG.txt | 2 +- source/data/locales/om.txt | 4 +- source/data/locales/om_ET.txt | 2 +- source/data/locales/om_KE.txt | 2 +- source/data/locales/or.txt | 117 +- source/data/locales/or_IN.txt | 2 +- source/data/locales/os.txt | 8 +- source/data/locales/os_GE.txt | 2 +- source/data/locales/os_RU.txt | 2 +- source/data/locales/pa.txt | 384 +- source/data/locales/pa_Arab.txt | 4 +- source/data/locales/pa_Arab_PK.txt | 2 +- source/data/locales/pa_Guru.txt | 2 +- source/data/locales/pa_Guru_IN.txt | 2 +- source/data/locales/pl.txt | 54 +- source/data/locales/pl_PL.txt | 2 +- source/data/locales/ps.txt | 904 +- source/data/locales/ps_AF.txt | 2 +- source/data/locales/ps_PK.txt | 12 +- source/data/locales/pt.txt | 156 +- source/data/locales/pt_AO.txt | 2 +- source/data/locales/pt_BR.txt | 2 +- source/data/locales/pt_CH.txt | 2 +- source/data/locales/pt_CV.txt | 2 +- source/data/locales/pt_GQ.txt | 2 +- source/data/locales/pt_GW.txt | 2 +- source/data/locales/pt_LU.txt | 2 +- source/data/locales/pt_MO.txt | 2 +- source/data/locales/pt_MZ.txt | 2 +- source/data/locales/pt_PT.txt | 101 +- source/data/locales/pt_ST.txt | 2 +- source/data/locales/pt_TL.txt | 2 +- source/data/locales/qu.txt | 95 +- source/data/locales/qu_BO.txt | 2 +- source/data/locales/qu_EC.txt | 2 +- source/data/locales/qu_PE.txt | 2 +- source/data/locales/rm.txt | 308 +- source/data/locales/rm_CH.txt | 2 +- source/data/locales/rn.txt | 4 +- source/data/locales/rn_BI.txt | 2 +- source/data/locales/ro.txt | 365 +- source/data/locales/ro_MD.txt | 2 +- source/data/locales/ro_RO.txt | 2 +- source/data/locales/rof.txt | 2 +- source/data/locales/rof_TZ.txt | 2 +- source/data/locales/root.txt | 6 +- source/data/locales/ru.txt | 269 +- source/data/locales/ru_BY.txt | 2 +- source/data/locales/ru_KG.txt | 2 +- source/data/locales/ru_KZ.txt | 2 +- source/data/locales/ru_MD.txt | 2 +- source/data/locales/ru_RU.txt | 2 +- source/data/locales/ru_UA.txt | 2 +- source/data/locales/rw.txt | 4 +- source/data/locales/rw_RW.txt | 2 +- source/data/locales/rwk.txt | 2 +- source/data/locales/rwk_TZ.txt | 2 +- source/data/locales/sah.txt | 4 +- source/data/locales/sah_RU.txt | 2 +- source/data/locales/saq.txt | 2 +- source/data/locales/saq_KE.txt | 2 +- source/data/locales/sbp.txt | 4 +- source/data/locales/sbp_TZ.txt | 2 +- source/data/locales/sd.txt | 122 +- source/data/locales/sd_PK.txt | 2 +- source/data/locales/se.txt | 2 +- source/data/locales/se_FI.txt | 5 +- source/data/locales/se_NO.txt | 2 +- source/data/locales/se_SE.txt | 2 +- source/data/locales/seh.txt | 4 +- source/data/locales/seh_MZ.txt | 2 +- source/data/locales/ses.txt | 4 +- source/data/locales/ses_ML.txt | 2 +- source/data/locales/sg.txt | 4 +- source/data/locales/sg_CF.txt | 2 +- source/data/locales/shi.txt | 4 +- source/data/locales/shi_Latn.txt | 4 +- source/data/locales/shi_Latn_MA.txt | 2 +- source/data/locales/shi_Tfng.txt | 2 +- source/data/locales/shi_Tfng_MA.txt | 2 +- source/data/locales/si.txt | 24 +- source/data/locales/si_LK.txt | 2 +- source/data/locales/sk.txt | 124 +- source/data/locales/sk_SK.txt | 2 +- source/data/locales/sl.txt | 171 +- source/data/locales/sl_SI.txt | 2 +- source/data/locales/smn.txt | 4 +- source/data/locales/smn_FI.txt | 2 +- source/data/locales/sn.txt | 4 +- source/data/locales/sn_ZW.txt | 2 +- source/data/locales/so.txt | 619 +- source/data/locales/so_DJ.txt | 2 +- source/data/locales/so_ET.txt | 2 +- source/data/locales/so_KE.txt | 2 +- source/data/locales/so_SO.txt | 2 +- source/data/locales/sq.txt | 45 +- source/data/locales/sq_AL.txt | 2 +- source/data/locales/sq_MK.txt | 2 +- source/data/locales/sq_XK.txt | 2 +- source/data/locales/sr.txt | 135 +- source/data/locales/sr_Cyrl.txt | 2 +- source/data/locales/sr_Cyrl_BA.txt | 29 +- source/data/locales/sr_Cyrl_ME.txt | 2 +- source/data/locales/sr_Cyrl_RS.txt | 2 +- source/data/locales/sr_Cyrl_XK.txt | 2 +- source/data/locales/sr_Latn.txt | 137 +- source/data/locales/sr_Latn_BA.txt | 23 +- source/data/locales/sr_Latn_ME.txt | 52 +- source/data/locales/sr_Latn_RS.txt | 2 +- source/data/locales/sr_Latn_XK.txt | 58 +- source/data/locales/sv.txt | 279 +- source/data/locales/sv_AX.txt | 2 +- source/data/locales/sv_FI.txt | 45 +- source/data/locales/sv_SE.txt | 2 +- source/data/locales/sw.txt | 85 +- source/data/locales/sw_CD.txt | 2 +- source/data/locales/sw_KE.txt | 176 +- source/data/locales/sw_TZ.txt | 2 +- source/data/locales/sw_UG.txt | 2 +- source/data/locales/ta.txt | 245 +- source/data/locales/ta_IN.txt | 2 +- source/data/locales/ta_LK.txt | 2 +- source/data/locales/ta_MY.txt | 2 +- source/data/locales/ta_SG.txt | 2 +- source/data/locales/te.txt | 344 +- source/data/locales/te_IN.txt | 2 +- source/data/locales/teo.txt | 2 +- source/data/locales/teo_KE.txt | 2 +- source/data/locales/teo_UG.txt | 2 +- source/data/locales/tg.txt | 269 +- source/data/locales/tg_TJ.txt | 2 +- source/data/locales/th.txt | 408 +- source/data/locales/th_TH.txt | 2 +- source/data/locales/ti.txt | 4 +- source/data/locales/ti_ER.txt | 2 +- source/data/locales/ti_ET.txt | 2 +- source/data/locales/tk.txt | 59 +- source/data/locales/tk_TM.txt | 2 +- source/data/locales/to.txt | 407 +- source/data/locales/to_TO.txt | 2 +- source/data/locales/tr.txt | 207 +- source/data/locales/tr_CY.txt | 2 +- source/data/locales/tr_TR.txt | 2 +- source/data/locales/tt.txt | 16 +- source/data/locales/tt_RU.txt | 2 +- source/data/locales/twq.txt | 4 +- source/data/locales/twq_NE.txt | 2 +- source/data/locales/tzm.txt | 4 +- source/data/locales/tzm_MA.txt | 2 +- source/data/locales/ug.txt | 4 +- source/data/locales/ug_CN.txt | 2 +- source/data/locales/uk.txt | 307 +- source/data/locales/uk_UA.txt | 2 +- source/data/locales/ur.txt | 76 +- source/data/locales/ur_IN.txt | 2 +- source/data/locales/ur_PK.txt | 2 +- source/data/locales/uz.txt | 116 +- source/data/locales/uz_Arab.txt | 4 +- source/data/locales/uz_Arab_AF.txt | 2 +- source/data/locales/uz_Cyrl.txt | 4 +- source/data/locales/uz_Cyrl_UZ.txt | 2 +- source/data/locales/uz_Latn.txt | 2 +- source/data/locales/uz_Latn_UZ.txt | 2 +- source/data/locales/vai.txt | 4 +- source/data/locales/vai_Latn.txt | 4 +- source/data/locales/vai_Latn_LR.txt | 2 +- source/data/locales/vai_Vaii.txt | 2 +- source/data/locales/vai_Vaii_LR.txt | 2 +- source/data/locales/vi.txt | 1985 +---- source/data/locales/vi_VN.txt | 2 +- source/data/locales/vun.txt | 2 +- source/data/locales/vun_TZ.txt | 2 +- source/data/locales/wae.txt | 4 +- source/data/locales/wae_CH.txt | 2 +- source/data/locales/wo.txt | 2 +- source/data/locales/wo_SN.txt | 2 +- source/data/locales/xh.txt | 2 +- source/data/locales/xh_ZA.txt | 2 +- source/data/locales/xog.txt | 2 +- source/data/locales/xog_UG.txt | 2 +- source/data/locales/yav.txt | 4 +- source/data/locales/yav_CM.txt | 2 +- source/data/locales/yi.txt | 6 +- source/data/locales/yi_001.txt | 2 +- source/data/locales/yo.txt | 102 +- source/data/locales/yo_BJ.txt | 358 +- source/data/locales/yo_NG.txt | 2 +- source/data/locales/yue.txt | 100 +- source/data/locales/yue_Hans.txt | 100 +- source/data/locales/yue_Hans_CN.txt | 2 +- source/data/locales/yue_Hant.txt | 2 +- source/data/locales/yue_Hant_HK.txt | 2 +- source/data/locales/zgh.txt | 4 +- source/data/locales/zgh_MA.txt | 2 +- source/data/locales/zh.txt | 411 +- source/data/locales/zh_Hans.txt | 2 +- source/data/locales/zh_Hans_CN.txt | 2 +- source/data/locales/zh_Hans_HK.txt | 32 +- source/data/locales/zh_Hans_MO.txt | 2 +- source/data/locales/zh_Hans_SG.txt | 2 +- source/data/locales/zh_Hant.txt | 1094 ++- source/data/locales/zh_Hant_HK.txt | 9 +- source/data/locales/zh_Hant_MO.txt | 2 +- source/data/locales/zh_Hant_TW.txt | 2 +- source/data/locales/zu.txt | 126 +- source/data/locales/zu_ZA.txt | 2 +- source/data/makedata.mak | 123 +- source/data/makedata.vcxproj | 82 +- source/data/makedata.vcxproj.filters | 3 - source/data/makedata_uwp.vcxproj | 78 +- source/data/misc/icuver.txt | 4 +- source/data/misc/langInfo.txt | 2691 ++++++ source/data/misc/likelySubtags.txt | 15 +- source/data/misc/metaZones.txt | 4 +- source/data/misc/metadata.txt | 31 + source/data/misc/pluralRanges.txt | 119 +- source/data/misc/plurals.txt | 65 +- source/data/misc/supplementalData.txt | 1872 +++- source/data/misc/windowsZones.txt | 25 +- source/data/misc/zoneinfo64.txt | 160 +- source/data/rbnf/af.txt | 2 +- source/data/rbnf/ak.txt | 2 +- source/data/rbnf/am.txt | 2 +- source/data/rbnf/ar.txt | 2 +- source/data/rbnf/az.txt | 2 +- source/data/rbnf/be.txt | 2 +- source/data/rbnf/bg.txt | 2 +- source/data/rbnf/bs.txt | 2 +- source/data/rbnf/ca.txt | 2 +- source/data/rbnf/ccp.txt | 2 +- source/data/rbnf/chr.txt | 2 +- source/data/rbnf/cs.txt | 2 +- source/data/rbnf/cy.txt | 2 +- source/data/rbnf/da.txt | 4 +- source/data/rbnf/de.txt | 2 +- source/data/rbnf/de_CH.txt | 2 +- source/data/rbnf/ee.txt | 2 +- source/data/rbnf/el.txt | 2 +- source/data/rbnf/en.txt | 2 +- source/data/rbnf/en_001.txt | 2 +- source/data/rbnf/en_IN.txt | 2 +- source/data/rbnf/eo.txt | 2 +- source/data/rbnf/es.txt | 2 +- source/data/rbnf/es_419.txt | 2 +- source/data/rbnf/et.txt | 2 +- source/data/rbnf/fa.txt | 2 +- source/data/rbnf/fa_AF.txt | 2 +- source/data/rbnf/ff.txt | 2 +- source/data/rbnf/fi.txt | 2 +- source/data/rbnf/fil.txt | 2 +- source/data/rbnf/fo.txt | 2 +- source/data/rbnf/fr.txt | 2 +- source/data/rbnf/fr_BE.txt | 2 +- source/data/rbnf/fr_CH.txt | 2 +- source/data/rbnf/ga.txt | 2 +- source/data/rbnf/he.txt | 2 +- source/data/rbnf/hi.txt | 2 +- source/data/rbnf/hr.txt | 2 +- source/data/rbnf/hu.txt | 2 +- source/data/rbnf/hy.txt | 2 +- source/data/rbnf/id.txt | 2 +- source/data/rbnf/is.txt | 2 +- source/data/rbnf/it.txt | 2 +- source/data/rbnf/ja.txt | 2 +- source/data/rbnf/ka.txt | 2 +- source/data/rbnf/kl.txt | 2 +- source/data/rbnf/km.txt | 2 +- source/data/rbnf/ko.txt | 2 +- source/data/rbnf/ky.txt | 2 +- source/data/rbnf/lb.txt | 2 +- source/data/rbnf/lo.txt | 2 +- source/data/rbnf/lrc.txt | 2 +- source/data/rbnf/lt.txt | 2 +- source/data/rbnf/lv.txt | 2 +- source/data/rbnf/mk.txt | 2 +- source/data/rbnf/ms.txt | 2 +- source/data/rbnf/mt.txt | 2 +- source/data/rbnf/my.txt | 2 +- source/data/rbnf/nb.txt | 2 +- source/data/rbnf/nl.txt | 2 +- source/data/rbnf/nn.txt | 2 +- source/data/rbnf/pl.txt | 2 +- source/data/rbnf/pt.txt | 2 +- source/data/rbnf/pt_PT.txt | 2 +- source/data/rbnf/qu.txt | 2 +- source/data/rbnf/ro.txt | 2 +- source/data/rbnf/root.txt | 2 +- source/data/rbnf/ru.txt | 2 +- source/data/rbnf/se.txt | 2 +- source/data/rbnf/sk.txt | 2 +- source/data/rbnf/sl.txt | 2 +- source/data/rbnf/sq.txt | 2 +- source/data/rbnf/sr.txt | 2 +- source/data/rbnf/sr_Latn.txt | 2 +- source/data/rbnf/sv.txt | 2 +- source/data/rbnf/sw.txt | 2 +- source/data/rbnf/ta.txt | 2 +- source/data/rbnf/th.txt | 2 +- source/data/rbnf/tr.txt | 2 +- source/data/rbnf/uk.txt | 2 +- source/data/rbnf/vi.txt | 2 +- source/data/rbnf/yue.txt | 20 +- source/data/rbnf/yue_Hans.txt | 20 +- source/data/rbnf/zh.txt | 2 +- source/data/rbnf/zh_Hant.txt | 2 +- source/data/region/af.txt | 12 +- source/data/region/agq.txt | 3 +- source/data/region/ak.txt | 3 +- source/data/region/am.txt | 6 +- source/data/region/ar.txt | 8 +- source/data/region/ar_AE.txt | 2 +- source/data/region/ar_LY.txt | 2 +- source/data/region/ar_SA.txt | 3 +- source/data/region/as.txt | 13 +- source/data/region/asa.txt | 3 +- source/data/region/ast.txt | 4 +- source/data/region/az.txt | 8 +- source/data/region/az_Cyrl.txt | 3 +- source/data/region/az_Latn.txt | 2 +- source/data/region/bas.txt | 3 +- source/data/region/be.txt | 24 +- source/data/region/bem.txt | 2 +- source/data/region/bez.txt | 3 +- source/data/region/bg.txt | 13 +- source/data/region/bm.txt | 3 +- source/data/region/bn.txt | 7 +- source/data/region/bn_IN.txt | 2 +- source/data/region/bo.txt | 2 +- source/data/region/bo_IN.txt | 2 +- source/data/region/br.txt | 10 +- source/data/region/brx.txt | 3 +- source/data/region/bs.txt | 11 +- source/data/region/bs_Cyrl.txt | 47 +- source/data/region/bs_Latn.txt | 2 +- source/data/region/ca.txt | 22 +- source/data/region/ccp.txt | 3 +- source/data/region/ce.txt | 3 +- source/data/region/ceb.txt | 300 +- source/data/region/cgg.txt | 3 +- source/data/region/chr.txt | 4 +- source/data/region/ckb.txt | 10 +- source/data/region/cs.txt | 4 +- source/data/region/cy.txt | 4 +- source/data/region/da.txt | 9 +- source/data/region/dav.txt | 3 +- source/data/region/de.txt | 8 +- source/data/region/de_AT.txt | 2 +- source/data/region/de_CH.txt | 2 +- source/data/region/dje.txt | 3 +- source/data/region/dsb.txt | 4 +- source/data/region/dua.txt | 2 +- source/data/region/dyo.txt | 2 +- source/data/region/dz.txt | 4 +- source/data/region/ebu.txt | 3 +- source/data/region/ee.txt | 4 +- source/data/region/el.txt | 4 +- source/data/region/en.txt | 2 +- source/data/region/en_001.txt | 16 + source/data/region/en_150.txt | 2 +- source/data/region/en_AG.txt | 2 +- source/data/region/en_AI.txt | 2 +- source/data/region/en_AT.txt | 2 +- source/data/region/en_AU.txt | 9 +- source/data/region/en_BB.txt | 2 +- source/data/region/en_BE.txt | 2 +- source/data/region/en_BM.txt | 2 +- source/data/region/en_BS.txt | 2 +- source/data/region/en_BW.txt | 2 +- source/data/region/en_BZ.txt | 2 +- source/data/region/en_CA.txt | 2 +- source/data/region/en_CC.txt | 2 +- source/data/region/en_CH.txt | 2 +- source/data/region/en_CK.txt | 2 +- source/data/region/en_CM.txt | 2 +- source/data/region/en_CX.txt | 2 +- source/data/region/en_CY.txt | 2 +- source/data/region/en_DE.txt | 2 +- source/data/region/en_DG.txt | 2 +- source/data/region/en_DK.txt | 2 +- source/data/region/en_DM.txt | 2 +- source/data/region/en_ER.txt | 2 +- source/data/region/en_FI.txt | 2 +- source/data/region/en_FJ.txt | 2 +- source/data/region/en_FK.txt | 2 +- source/data/region/en_FM.txt | 2 +- source/data/region/en_GB.txt | 16 +- source/data/region/en_GD.txt | 2 +- source/data/region/en_GG.txt | 2 +- source/data/region/en_GH.txt | 2 +- source/data/region/en_GI.txt | 2 +- source/data/region/en_GM.txt | 2 +- source/data/region/en_GY.txt | 2 +- source/data/region/en_HK.txt | 2 +- source/data/region/en_IE.txt | 2 +- source/data/region/en_IL.txt | 2 +- source/data/region/en_IM.txt | 2 +- source/data/region/en_IN.txt | 2 +- source/data/region/en_IO.txt | 2 +- source/data/region/en_JE.txt | 2 +- source/data/region/en_JM.txt | 2 +- source/data/region/en_KE.txt | 2 +- source/data/region/en_KI.txt | 2 +- source/data/region/en_KN.txt | 2 +- source/data/region/en_KY.txt | 2 +- source/data/region/en_LC.txt | 2 +- source/data/region/en_LR.txt | 2 +- source/data/region/en_LS.txt | 2 +- source/data/region/en_MG.txt | 2 +- source/data/region/en_MO.txt | 2 +- source/data/region/en_MS.txt | 2 +- source/data/region/en_MT.txt | 2 +- source/data/region/en_MU.txt | 2 +- source/data/region/en_MW.txt | 2 +- source/data/region/en_MY.txt | 2 +- source/data/region/en_NA.txt | 2 +- source/data/region/en_NF.txt | 2 +- source/data/region/en_NG.txt | 2 +- source/data/region/en_NL.txt | 2 +- source/data/region/en_NR.txt | 2 +- source/data/region/en_NU.txt | 2 +- source/data/region/en_NZ.txt | 2 +- source/data/region/en_PG.txt | 2 +- source/data/region/en_PH.txt | 2 +- source/data/region/en_PK.txt | 2 +- source/data/region/en_PN.txt | 2 +- source/data/region/en_PW.txt | 2 +- source/data/region/en_RW.txt | 2 +- source/data/region/en_SB.txt | 2 +- source/data/region/en_SC.txt | 2 +- source/data/region/en_SD.txt | 2 +- source/data/region/en_SE.txt | 2 +- source/data/region/en_SG.txt | 2 +- source/data/region/en_SH.txt | 2 +- source/data/region/en_SI.txt | 2 +- source/data/region/en_SL.txt | 2 +- source/data/region/en_SS.txt | 2 +- source/data/region/en_SX.txt | 2 +- source/data/region/en_SZ.txt | 2 +- source/data/region/en_TC.txt | 2 +- source/data/region/en_TK.txt | 2 +- source/data/region/en_TO.txt | 2 +- source/data/region/en_TT.txt | 2 +- source/data/region/en_TV.txt | 2 +- source/data/region/en_TZ.txt | 2 +- source/data/region/en_UG.txt | 2 +- source/data/region/en_VC.txt | 2 +- source/data/region/en_VG.txt | 2 +- source/data/region/en_VU.txt | 2 +- source/data/region/en_WS.txt | 2 +- source/data/region/en_ZA.txt | 2 +- source/data/region/en_ZM.txt | 2 +- source/data/region/en_ZW.txt | 2 +- source/data/region/eo.txt | 3 +- source/data/region/es.txt | 4 +- source/data/region/es_419.txt | 6 +- source/data/region/es_AR.txt | 4 +- source/data/region/es_BO.txt | 3 +- source/data/region/es_BR.txt | 2 +- source/data/region/es_BZ.txt | 2 +- source/data/region/es_CL.txt | 3 +- source/data/region/es_CO.txt | 4 +- source/data/region/es_CR.txt | 3 +- source/data/region/es_CU.txt | 2 +- source/data/region/es_DO.txt | 3 +- source/data/region/es_EC.txt | 3 +- source/data/region/es_GT.txt | 3 +- source/data/region/es_HN.txt | 3 +- source/data/region/es_MX.txt | 8 +- source/data/region/es_NI.txt | 3 +- source/data/region/es_PA.txt | 3 +- source/data/region/es_PE.txt | 3 +- source/data/region/es_PR.txt | 2 +- source/data/region/es_PY.txt | 3 +- source/data/region/es_SV.txt | 2 +- source/data/region/es_US.txt | 7 +- source/data/region/es_UY.txt | 2 +- source/data/region/es_VE.txt | 3 +- source/data/region/et.txt | 6 +- source/data/region/eu.txt | 3 +- source/data/region/ewo.txt | 3 +- source/data/region/fa.txt | 21 +- source/data/region/fa_AF.txt | 6 +- source/data/region/ff.txt | 3 +- source/data/region/ff_Latn.txt | 2 +- source/data/region/fi.txt | 3 +- source/data/region/fil.txt | 3 +- source/data/region/fo.txt | 14 +- source/data/region/fr.txt | 2 +- source/data/region/fr_BE.txt | 2 +- source/data/region/fr_CA.txt | 2 +- source/data/region/fur.txt | 4 +- source/data/region/fy.txt | 4 +- source/data/region/ga.txt | 12 +- source/data/region/gd.txt | 7 +- source/data/region/gl.txt | 22 +- source/data/region/gsw.txt | 6 +- source/data/region/gu.txt | 6 +- source/data/region/guz.txt | 3 +- source/data/region/gv.txt | 2 +- source/data/region/ha.txt | 83 +- source/data/region/ha_NE.txt | 232 - source/data/region/haw.txt | 2 +- source/data/region/he.txt | 4 +- source/data/region/hi.txt | 9 +- source/data/region/hr.txt | 9 +- source/data/region/hsb.txt | 4 +- source/data/region/hu.txt | 6 +- source/data/region/hy.txt | 6 +- source/data/region/ia.txt | 3 +- source/data/region/id.txt | 30 +- source/data/region/ig.txt | 246 +- source/data/region/ii.txt | 2 +- source/data/region/is.txt | 9 +- source/data/region/it.txt | 7 +- source/data/region/ja.txt | 4 +- source/data/region/jgo.txt | 2 +- source/data/region/jmc.txt | 3 +- source/data/region/jv.txt | 15 +- source/data/region/ka.txt | 7 +- source/data/region/kab.txt | 3 +- source/data/region/kam.txt | 3 +- source/data/region/kde.txt | 3 +- source/data/region/kea.txt | 75 +- source/data/region/khq.txt | 3 +- source/data/region/ki.txt | 3 +- source/data/region/kk.txt | 4 +- source/data/region/kkj.txt | 2 +- source/data/region/kl.txt | 2 +- source/data/region/kln.txt | 3 +- source/data/region/km.txt | 11 +- source/data/region/kn.txt | 11 +- source/data/region/ko.txt | 2 +- source/data/region/ko_KP.txt | 2 +- source/data/region/kok.txt | 13 +- source/data/region/ks.txt | 3 +- source/data/region/ksb.txt | 3 +- source/data/region/ksf.txt | 3 +- source/data/region/ksh.txt | 4 +- source/data/region/ku.txt | 3 +- source/data/region/kw.txt | 2 +- source/data/region/ky.txt | 5 +- source/data/region/lag.txt | 3 +- source/data/region/lb.txt | 2 +- source/data/region/lg.txt | 3 +- source/data/region/lkt.txt | 2 +- source/data/region/ln.txt | 3 +- source/data/region/lo.txt | 7 +- source/data/region/lrc.txt | 2 +- source/data/region/lt.txt | 6 +- source/data/region/lu.txt | 3 +- source/data/region/luo.txt | 3 +- source/data/region/luy.txt | 3 +- source/data/region/lv.txt | 10 +- source/data/region/mas.txt | 3 +- source/data/region/mer.txt | 3 +- source/data/region/mfe.txt | 3 +- source/data/region/mg.txt | 3 +- source/data/region/mgh.txt | 3 +- source/data/region/mgo.txt | 2 +- source/data/region/mi.txt | 2 +- source/data/region/mk.txt | 3 +- source/data/region/ml.txt | 7 +- source/data/region/mn.txt | 12 +- source/data/region/mr.txt | 9 +- source/data/region/ms.txt | 5 +- source/data/region/mt.txt | 2 +- source/data/region/mua.txt | 3 +- source/data/region/my.txt | 4 +- source/data/region/mzn.txt | 4 +- source/data/region/naq.txt | 3 +- source/data/region/nb.txt | 6 +- source/data/region/nd.txt | 3 +- source/data/region/nds.txt | 2 +- source/data/region/ne.txt | 16 +- source/data/region/nl.txt | 2 +- source/data/region/nmg.txt | 3 +- source/data/region/nn.txt | 2 +- source/data/region/nnh.txt | 2 +- source/data/region/nus.txt | 2 +- source/data/region/nyn.txt | 3 +- source/data/region/om.txt | 2 +- source/data/region/or.txt | 4 +- source/data/region/os.txt | 2 +- source/data/region/pa.txt | 7 +- source/data/region/pa_Arab.txt | 2 +- source/data/region/pa_Guru.txt | 2 +- source/data/region/pl.txt | 2 +- source/data/region/ps.txt | 20 +- source/data/region/ps_PK.txt | 2 +- source/data/region/pt.txt | 9 +- source/data/region/pt_AO.txt | 2 +- source/data/region/pt_CH.txt | 2 +- source/data/region/pt_CV.txt | 2 +- source/data/region/pt_GQ.txt | 2 +- source/data/region/pt_GW.txt | 2 +- source/data/region/pt_LU.txt | 2 +- source/data/region/pt_MO.txt | 2 +- source/data/region/pt_MZ.txt | 2 +- source/data/region/pt_PT.txt | 6 +- source/data/region/pt_ST.txt | 2 +- source/data/region/pt_TL.txt | 2 +- source/data/region/qu.txt | 81 +- source/data/region/rm.txt | 3 +- source/data/region/rn.txt | 3 +- source/data/region/ro.txt | 4 +- source/data/region/ro_MD.txt | 2 +- source/data/region/rof.txt | 3 +- source/data/region/root.txt | 2 +- source/data/region/ru.txt | 3 +- source/data/region/ru_UA.txt | 2 +- source/data/region/rw.txt | 4 +- source/data/region/rwk.txt | 3 +- source/data/region/sah.txt | 2 +- source/data/region/saq.txt | 3 +- source/data/region/sbp.txt | 3 +- source/data/region/sd.txt | 7 +- source/data/region/se.txt | 3 +- source/data/region/se_FI.txt | 2 +- source/data/region/seh.txt | 3 +- source/data/region/ses.txt | 3 +- source/data/region/sg.txt | 3 +- source/data/region/shi.txt | 3 +- source/data/region/shi_Latn.txt | 3 +- source/data/region/shi_Tfng.txt | 2 +- source/data/region/si.txt | 16 +- source/data/region/sk.txt | 9 +- source/data/region/sl.txt | 5 +- source/data/region/smn.txt | 3 +- source/data/region/sn.txt | 3 +- source/data/region/so.txt | 7 +- source/data/region/sq.txt | 2 +- source/data/region/sr.txt | 9 +- source/data/region/sr_Cyrl.txt | 2 +- source/data/region/sr_Cyrl_BA.txt | 5 +- source/data/region/sr_Cyrl_ME.txt | 5 +- source/data/region/sr_Cyrl_XK.txt | 5 +- source/data/region/sr_Latn.txt | 9 +- source/data/region/sr_Latn_BA.txt | 5 +- source/data/region/sr_Latn_ME.txt | 5 +- source/data/region/sr_Latn_XK.txt | 5 +- source/data/region/sv.txt | 7 +- source/data/region/sw.txt | 15 +- source/data/region/sw_CD.txt | 2 +- source/data/region/sw_KE.txt | 13 +- source/data/region/ta.txt | 19 +- source/data/region/te.txt | 19 +- source/data/region/teo.txt | 3 +- source/data/region/tg.txt | 4 +- source/data/region/th.txt | 6 +- source/data/region/ti.txt | 2 +- source/data/region/tk.txt | 7 +- source/data/region/to.txt | 16 +- source/data/region/tr.txt | 11 +- source/data/region/tt.txt | 4 +- source/data/region/twq.txt | 3 +- source/data/region/tzm.txt | 3 +- source/data/region/ug.txt | 2 +- source/data/region/uk.txt | 6 +- source/data/region/ur.txt | 8 +- source/data/region/ur_IN.txt | 2 +- source/data/region/uz.txt | 5 +- source/data/region/uz_Arab.txt | 2 +- source/data/region/uz_Cyrl.txt | 2 +- source/data/region/uz_Latn.txt | 2 +- source/data/region/vai.txt | 3 +- source/data/region/vai_Latn.txt | 3 +- source/data/region/vai_Vaii.txt | 2 +- source/data/region/vi.txt | 13 +- source/data/region/vun.txt | 3 +- source/data/region/wae.txt | 4 +- source/data/region/wo.txt | 4 +- source/data/region/xh.txt | 2 +- source/data/region/xog.txt | 3 +- source/data/region/yav.txt | 3 +- source/data/region/yi.txt | 3 +- source/data/region/yo.txt | 49 +- source/data/region/yo_BJ.txt | 39 +- source/data/region/yue.txt | 6 +- source/data/region/yue_Hans.txt | 6 +- source/data/region/yue_Hant.txt | 2 +- source/data/region/zgh.txt | 3 +- source/data/region/zh.txt | 3 +- source/data/region/zh_Hans.txt | 2 +- source/data/region/zh_Hant.txt | 7 +- source/data/region/zh_Hant_HK.txt | 5 +- source/data/region/zh_Hant_MO.txt | 2 +- source/data/region/zu.txt | 10 +- source/data/translit/Hira_Kana.txt | 8 +- source/data/translit/Latin_ASCII.txt | 101 + source/data/unit/af.txt | 614 +- source/data/unit/agq.txt | 2 +- source/data/unit/ak.txt | 2 +- source/data/unit/am.txt | 206 +- source/data/unit/ar.txt | 593 +- source/data/unit/ar_SA.txt | 815 +- source/data/unit/as.txt | 22 +- source/data/unit/asa.txt | 2 +- source/data/unit/ast.txt | 2 +- source/data/unit/az.txt | 166 +- source/data/unit/az_Cyrl.txt | 2 +- source/data/unit/az_Latn.txt | 2 +- source/data/unit/bas.txt | 2 +- source/data/unit/be.txt | 701 +- source/data/unit/bem.txt | 2 +- source/data/unit/bez.txt | 2 +- source/data/unit/bg.txt | 273 +- source/data/unit/bm.txt | 2 +- source/data/unit/bn.txt | 310 +- source/data/unit/bo.txt | 2 +- source/data/unit/br.txt | 2007 ++++- source/data/unit/brx.txt | 2 +- source/data/unit/bs.txt | 104 +- source/data/unit/bs_Cyrl.txt | 320 +- source/data/unit/bs_Latn.txt | 2 +- source/data/unit/ca.txt | 184 +- source/data/unit/ccp.txt | 2 +- source/data/unit/ce.txt | 2 +- source/data/unit/ceb.txt | 1426 ++- source/data/unit/cgg.txt | 2 +- source/data/unit/chr.txt | 77 +- source/data/unit/ckb.txt | 2 +- source/data/unit/cs.txt | 282 +- source/data/unit/cy.txt | 938 +- source/data/unit/da.txt | 229 +- source/data/unit/dav.txt | 2 +- source/data/unit/de.txt | 735 +- source/data/unit/de_CH.txt | 2 +- source/data/unit/dje.txt | 2 +- source/data/unit/dsb.txt | 2 +- source/data/unit/dua.txt | 2 +- source/data/unit/dyo.txt | 2 +- source/data/unit/dz.txt | 2 +- source/data/unit/ebu.txt | 2 +- source/data/unit/ee.txt | 2 +- source/data/unit/el.txt | 121 +- source/data/unit/en.txt | 173 +- source/data/unit/en_001.txt | 58 +- source/data/unit/en_150.txt | 2 +- source/data/unit/en_AG.txt | 2 +- source/data/unit/en_AI.txt | 2 +- source/data/unit/en_AT.txt | 2 +- source/data/unit/en_AU.txt | 60 +- source/data/unit/en_BB.txt | 2 +- source/data/unit/en_BE.txt | 2 +- source/data/unit/en_BM.txt | 2 +- source/data/unit/en_BS.txt | 2 +- source/data/unit/en_BW.txt | 2 +- source/data/unit/en_BZ.txt | 2 +- source/data/unit/en_CA.txt | 8 +- source/data/unit/en_CC.txt | 2 +- source/data/unit/en_CH.txt | 2 +- source/data/unit/en_CK.txt | 2 +- source/data/unit/en_CM.txt | 2 +- source/data/unit/en_CX.txt | 2 +- source/data/unit/en_CY.txt | 2 +- source/data/unit/en_DE.txt | 2 +- source/data/unit/en_DG.txt | 2 +- source/data/unit/en_DK.txt | 2 +- source/data/unit/en_DM.txt | 2 +- source/data/unit/en_ER.txt | 2 +- source/data/unit/en_FI.txt | 2 +- source/data/unit/en_FJ.txt | 2 +- source/data/unit/en_FK.txt | 2 +- source/data/unit/en_FM.txt | 2 +- source/data/unit/en_GB.txt | 41 +- source/data/unit/en_GD.txt | 2 +- source/data/unit/en_GG.txt | 2 +- source/data/unit/en_GH.txt | 2 +- source/data/unit/en_GI.txt | 2 +- source/data/unit/en_GM.txt | 2 +- source/data/unit/en_GY.txt | 2 +- source/data/unit/en_HK.txt | 2 +- source/data/unit/en_IE.txt | 2 +- source/data/unit/en_IL.txt | 2 +- source/data/unit/en_IM.txt | 2 +- source/data/unit/en_IN.txt | 23 +- source/data/unit/en_IO.txt | 2 +- source/data/unit/en_JE.txt | 2 +- source/data/unit/en_JM.txt | 2 +- source/data/unit/en_KE.txt | 2 +- source/data/unit/en_KI.txt | 2 +- source/data/unit/en_KN.txt | 2 +- source/data/unit/en_KY.txt | 2 +- source/data/unit/en_LC.txt | 2 +- source/data/unit/en_LR.txt | 2 +- source/data/unit/en_LS.txt | 2 +- source/data/unit/en_MG.txt | 2 +- source/data/unit/en_MO.txt | 2 +- source/data/unit/en_MS.txt | 2 +- source/data/unit/en_MT.txt | 2 +- source/data/unit/en_MU.txt | 2 +- source/data/unit/en_MW.txt | 2 +- source/data/unit/en_MY.txt | 2 +- source/data/unit/en_NA.txt | 2 +- source/data/unit/en_NF.txt | 2 +- source/data/unit/en_NG.txt | 2 +- source/data/unit/en_NL.txt | 2 +- source/data/unit/en_NR.txt | 2 +- source/data/unit/en_NU.txt | 2 +- source/data/unit/en_NZ.txt | 2 +- source/data/unit/en_PG.txt | 2 +- source/data/unit/en_PH.txt | 2 +- source/data/unit/en_PK.txt | 2 +- source/data/unit/en_PN.txt | 2 +- source/data/unit/en_PW.txt | 2 +- source/data/unit/en_RW.txt | 2 +- source/data/unit/en_SB.txt | 2 +- source/data/unit/en_SC.txt | 2 +- source/data/unit/en_SD.txt | 2 +- source/data/unit/en_SE.txt | 2 +- source/data/unit/en_SG.txt | 2 +- source/data/unit/en_SH.txt | 2 +- source/data/unit/en_SI.txt | 2 +- source/data/unit/en_SL.txt | 2 +- source/data/unit/en_SS.txt | 2 +- source/data/unit/en_SX.txt | 2 +- source/data/unit/en_SZ.txt | 2 +- source/data/unit/en_TC.txt | 2 +- source/data/unit/en_TK.txt | 2 +- source/data/unit/en_TO.txt | 2 +- source/data/unit/en_TT.txt | 2 +- source/data/unit/en_TV.txt | 2 +- source/data/unit/en_TZ.txt | 2 +- source/data/unit/en_UG.txt | 2 +- source/data/unit/en_VC.txt | 2 +- source/data/unit/en_VG.txt | 2 +- source/data/unit/en_VU.txt | 2 +- source/data/unit/en_WS.txt | 2 +- source/data/unit/en_ZA.txt | 2 +- source/data/unit/en_ZM.txt | 2 +- source/data/unit/en_ZW.txt | 2 +- source/data/unit/eo.txt | 2 +- source/data/unit/es.txt | 252 +- source/data/unit/es_419.txt | 111 +- source/data/unit/es_AR.txt | 16 +- source/data/unit/es_BO.txt | 2 +- source/data/unit/es_BR.txt | 2 +- source/data/unit/es_BZ.txt | 2 +- source/data/unit/es_CL.txt | 18 +- source/data/unit/es_CO.txt | 2 +- source/data/unit/es_CR.txt | 2 +- source/data/unit/es_CU.txt | 2 +- source/data/unit/es_DO.txt | 16 +- source/data/unit/es_EC.txt | 2 +- source/data/unit/es_GT.txt | 22 +- source/data/unit/es_HN.txt | 2 +- source/data/unit/es_MX.txt | 130 +- source/data/unit/es_NI.txt | 2 +- source/data/unit/es_PA.txt | 2 +- source/data/unit/es_PE.txt | 2 +- source/data/unit/es_PR.txt | 2 +- source/data/unit/es_PY.txt | 16 +- source/data/unit/es_SV.txt | 2 +- source/data/unit/es_US.txt | 169 +- source/data/unit/es_UY.txt | 2 +- source/data/unit/es_VE.txt | 2 +- source/data/unit/et.txt | 131 +- source/data/unit/eu.txt | 462 +- source/data/unit/ewo.txt | 2 +- source/data/unit/fa.txt | 146 +- source/data/unit/ff.txt | 2 +- source/data/unit/ff_Latn.txt | 2 +- source/data/unit/fi.txt | 170 +- source/data/unit/fil.txt | 169 +- source/data/unit/fo.txt | 248 +- source/data/unit/fr.txt | 217 +- source/data/unit/fr_CA.txt | 21 +- source/data/unit/fr_HT.txt | 2 +- source/data/unit/fur.txt | 2 +- source/data/unit/fy.txt | 2 +- source/data/unit/ga.txt | 135 +- source/data/unit/gd.txt | 736 +- source/data/unit/gl.txt | 287 +- source/data/unit/gsw.txt | 2 +- source/data/unit/gu.txt | 119 +- source/data/unit/guz.txt | 2 +- source/data/unit/gv.txt | 2 +- source/data/unit/ha.txt | 7 +- source/data/unit/ha_NE.txt | 10 - source/data/unit/haw.txt | 2 +- source/data/unit/he.txt | 658 +- source/data/unit/hi.txt | 345 +- source/data/unit/hr.txt | 1320 ++- source/data/unit/hsb.txt | 2 +- source/data/unit/hu.txt | 245 +- source/data/unit/hy.txt | 295 +- source/data/unit/ia.txt | 2 +- source/data/unit/id.txt | 213 +- source/data/unit/ig.txt | 27 +- source/data/unit/ii.txt | 2 +- source/data/unit/is.txt | 196 +- source/data/unit/it.txt | 102 +- source/data/unit/ja.txt | 131 +- source/data/unit/jgo.txt | 2 +- source/data/unit/jmc.txt | 2 +- source/data/unit/jv.txt | 176 +- source/data/unit/ka.txt | 210 +- source/data/unit/kab.txt | 2 +- source/data/unit/kam.txt | 2 +- source/data/unit/kde.txt | 2 +- source/data/unit/kea.txt | 520 +- source/data/unit/khq.txt | 2 +- source/data/unit/ki.txt | 2 +- source/data/unit/kk.txt | 193 +- source/data/unit/kkj.txt | 2 +- source/data/unit/kl.txt | 2 +- source/data/unit/kln.txt | 2 +- source/data/unit/km.txt | 157 +- source/data/unit/kn.txt | 403 +- source/data/unit/ko.txt | 303 +- source/data/unit/kok.txt | 1411 ++- source/data/unit/ks.txt | 2 +- source/data/unit/ksb.txt | 2 +- source/data/unit/ksf.txt | 2 +- source/data/unit/ksh.txt | 2 +- source/data/unit/ku.txt | 96 +- source/data/unit/kw.txt | 2 +- source/data/unit/ky.txt | 22 +- source/data/unit/lag.txt | 2 +- source/data/unit/lb.txt | 2 +- source/data/unit/lg.txt | 2 +- source/data/unit/lkt.txt | 2 +- source/data/unit/ln.txt | 2 +- source/data/unit/lo.txt | 165 +- source/data/unit/lrc.txt | 2 +- source/data/unit/lt.txt | 314 +- source/data/unit/lu.txt | 2 +- source/data/unit/luo.txt | 2 +- source/data/unit/luy.txt | 2 +- source/data/unit/lv.txt | 390 +- source/data/unit/mas.txt | 2 +- source/data/unit/mer.txt | 2 +- source/data/unit/mfe.txt | 2 +- source/data/unit/mg.txt | 2 +- source/data/unit/mgh.txt | 2 +- source/data/unit/mgo.txt | 2 +- source/data/unit/mi.txt | 2 +- source/data/unit/mk.txt | 167 +- source/data/unit/ml.txt | 232 +- source/data/unit/mn.txt | 816 +- source/data/unit/mr.txt | 148 +- source/data/unit/ms.txt | 270 +- source/data/unit/mt.txt | 2 +- source/data/unit/mua.txt | 2 +- source/data/unit/my.txt | 27 +- source/data/unit/mzn.txt | 2 +- source/data/unit/naq.txt | 2 +- source/data/unit/nb.txt | 155 +- source/data/unit/nd.txt | 2 +- source/data/unit/nds.txt | 2 +- source/data/unit/ne.txt | 133 +- source/data/unit/nl.txt | 1225 ++- source/data/unit/nmg.txt | 2 +- source/data/unit/nn.txt | 2 +- source/data/unit/nnh.txt | 2 +- source/data/unit/nus.txt | 2 +- source/data/unit/nyn.txt | 2 +- source/data/unit/om.txt | 2 +- source/data/unit/or.txt | 87 +- source/data/unit/os.txt | 2 +- source/data/unit/pa.txt | 276 +- source/data/unit/pa_Arab.txt | 2 +- source/data/unit/pa_Guru.txt | 2 +- source/data/unit/pl.txt | 339 +- source/data/unit/ps.txt | 139 +- source/data/unit/ps_PK.txt | 2 +- source/data/unit/pt.txt | 249 +- source/data/unit/pt_AO.txt | 2 +- source/data/unit/pt_CH.txt | 2 +- source/data/unit/pt_CV.txt | 2 +- source/data/unit/pt_GQ.txt | 2 +- source/data/unit/pt_GW.txt | 2 +- source/data/unit/pt_LU.txt | 2 +- source/data/unit/pt_MO.txt | 2 +- source/data/unit/pt_MZ.txt | 2 +- source/data/unit/pt_PT.txt | 77 +- source/data/unit/pt_ST.txt | 2 +- source/data/unit/pt_TL.txt | 2 +- source/data/unit/qu.txt | 388 +- source/data/unit/rm.txt | 2 +- source/data/unit/rn.txt | 2 +- source/data/unit/ro.txt | 425 +- source/data/unit/ro_MD.txt | 10 +- source/data/unit/rof.txt | 2 +- source/data/unit/root.txt | 49 +- source/data/unit/ru.txt | 280 +- source/data/unit/rw.txt | 2 +- source/data/unit/rwk.txt | 2 +- source/data/unit/sah.txt | 2 +- source/data/unit/saq.txt | 2 +- source/data/unit/sbp.txt | 2 +- source/data/unit/sd.txt | 85 +- source/data/unit/se.txt | 2 +- source/data/unit/seh.txt | 2 +- source/data/unit/ses.txt | 2 +- source/data/unit/sg.txt | 2 +- source/data/unit/shi.txt | 2 +- source/data/unit/shi_Latn.txt | 2 +- source/data/unit/shi_Tfng.txt | 2 +- source/data/unit/si.txt | 131 +- source/data/unit/sk.txt | 354 +- source/data/unit/sl.txt | 162 +- source/data/unit/smn.txt | 2 +- source/data/unit/sn.txt | 2 +- source/data/unit/so.txt | 330 +- source/data/unit/sq.txt | 151 +- source/data/unit/sr.txt | 212 +- source/data/unit/sr_Cyrl.txt | 2 +- source/data/unit/sr_Latn.txt | 198 +- source/data/unit/sv.txt | 266 +- source/data/unit/sv_FI.txt | 2 +- source/data/unit/sw.txt | 203 +- source/data/unit/sw_KE.txt | 135 + source/data/unit/ta.txt | 243 +- source/data/unit/te.txt | 153 +- source/data/unit/teo.txt | 2 +- source/data/unit/tg.txt | 2 +- source/data/unit/th.txt | 105 +- source/data/unit/ti.txt | 2 +- source/data/unit/tk.txt | 99 +- source/data/unit/to.txt | 374 +- source/data/unit/tr.txt | 468 +- source/data/unit/tt.txt | 2 +- source/data/unit/twq.txt | 2 +- source/data/unit/tzm.txt | 2 +- source/data/unit/ug.txt | 2 +- source/data/unit/uk.txt | 159 +- source/data/unit/ur.txt | 176 +- source/data/unit/ur_IN.txt | 2 +- source/data/unit/uz.txt | 120 +- source/data/unit/uz_Arab.txt | 2 +- source/data/unit/uz_Cyrl.txt | 2 +- source/data/unit/uz_Latn.txt | 2 +- source/data/unit/vai.txt | 2 +- source/data/unit/vai_Latn.txt | 2 +- source/data/unit/vai_Vaii.txt | 2 +- source/data/unit/vi.txt | 256 +- source/data/unit/vun.txt | 2 +- source/data/unit/wae.txt | 2 +- source/data/unit/wo.txt | 2 +- source/data/unit/xh.txt | 2 +- source/data/unit/xog.txt | 2 +- source/data/unit/yav.txt | 2 +- source/data/unit/yi.txt | 2 +- source/data/unit/yo.txt | 124 +- source/data/unit/yo_BJ.txt | 113 +- source/data/unit/yue.txt | 94 +- source/data/unit/yue_Hans.txt | 94 +- source/data/unit/yue_Hant.txt | 2 +- source/data/unit/zgh.txt | 2 +- source/data/unit/zh.txt | 177 +- source/data/unit/zh_Hans.txt | 2 +- source/data/unit/zh_Hans_HK.txt | 2 +- source/data/unit/zh_Hans_MO.txt | 2 +- source/data/unit/zh_Hans_SG.txt | 2 +- source/data/unit/zh_Hant.txt | 76 +- source/data/unit/zh_Hant_HK.txt | 45 +- source/data/unit/zh_Hant_MO.txt | 2 +- source/data/unit/zu.txt | 207 +- source/data/xml/brkitr/de.xml | 4 +- source/data/xml/brkitr/el.xml | 4 +- source/data/xml/brkitr/en.xml | 4 +- source/data/xml/brkitr/en_US.xml | 4 +- source/data/xml/brkitr/en_US_POSIX.xml | 4 +- source/data/xml/brkitr/es.xml | 4 +- source/data/xml/brkitr/fr.xml | 4 +- source/data/xml/brkitr/it.xml | 4 +- source/data/xml/brkitr/ja.xml | 4 +- source/data/xml/brkitr/pt.xml | 4 +- source/data/xml/brkitr/root.xml | 4 +- source/data/xml/brkitr/ru.xml | 4 +- source/data/xml/brkitr/zh.xml | 4 +- source/data/xml/brkitr/zh_Hant.xml | 4 +- source/data/xml/collation/root.xml | 4 +- source/data/xml/main/root.xml | 4 +- source/data/xml/rbnf/be.xml | 2 +- source/data/xml/rbnf/bg.xml | 2 +- source/data/xml/rbnf/ca.xml | 2 +- source/data/xml/rbnf/cy.xml | 2 +- source/data/xml/rbnf/da.xml | 2 +- source/data/xml/rbnf/de.xml | 2 +- source/data/xml/rbnf/en.xml | 2 +- source/data/xml/rbnf/fo.xml | 2 +- source/data/xml/rbnf/ga.xml | 2 +- source/data/xml/rbnf/is.xml | 2 +- source/data/xml/rbnf/mk.xml | 2 +- source/data/xml/rbnf/mt.xml | 2 +- source/data/xml/rbnf/nb.xml | 2 +- source/data/xml/rbnf/nn.xml | 2 +- source/data/xml/rbnf/root.xml | 2 +- source/data/xml/rbnf/ru.xml | 2 +- source/data/xml/rbnf/sr.xml | 2 +- source/data/xml/rbnf/uk.xml | 2 +- source/data/zone/af.txt | 7 +- source/data/zone/agq.txt | 2 +- source/data/zone/ak.txt | 2 +- source/data/zone/am.txt | 5 +- source/data/zone/ar.txt | 2 +- source/data/zone/as.txt | 2 +- source/data/zone/asa.txt | 2 +- source/data/zone/ast.txt | 2 +- source/data/zone/az.txt | 30 +- source/data/zone/az_Cyrl.txt | 2 +- source/data/zone/az_Latn.txt | 2 +- source/data/zone/bas.txt | 2 +- source/data/zone/be.txt | 65 +- source/data/zone/bem.txt | 2 +- source/data/zone/bez.txt | 2 +- source/data/zone/bg.txt | 5 +- source/data/zone/bm.txt | 2 +- source/data/zone/bn.txt | 2 +- source/data/zone/bo.txt | 2 +- source/data/zone/br.txt | 109 +- source/data/zone/brx.txt | 2 +- source/data/zone/bs.txt | 7 +- source/data/zone/bs_Cyrl.txt | 739 +- source/data/zone/bs_Latn.txt | 2 +- source/data/zone/ca.txt | 26 +- source/data/zone/ccp.txt | 2 +- source/data/zone/ce.txt | 2 +- source/data/zone/ceb.txt | 554 +- source/data/zone/cgg.txt | 2 +- source/data/zone/chr.txt | 5 +- source/data/zone/ckb.txt | 2 +- source/data/zone/cs.txt | 7 +- source/data/zone/cy.txt | 22 +- source/data/zone/da.txt | 7 +- source/data/zone/dav.txt | 2 +- source/data/zone/de.txt | 5 +- source/data/zone/de_CH.txt | 2 +- source/data/zone/dje.txt | 2 +- source/data/zone/dsb.txt | 2 +- source/data/zone/dua.txt | 2 +- source/data/zone/dyo.txt | 2 +- source/data/zone/dz.txt | 2 +- source/data/zone/ebu.txt | 2 +- source/data/zone/ee.txt | 2 +- source/data/zone/el.txt | 12 +- source/data/zone/en.txt | 2 +- source/data/zone/en_001.txt | 28 +- source/data/zone/en_150.txt | 2 +- source/data/zone/en_AE.txt | 2 +- source/data/zone/en_AG.txt | 2 +- source/data/zone/en_AI.txt | 2 +- source/data/zone/en_AT.txt | 2 +- source/data/zone/en_AU.txt | 26 +- source/data/zone/en_BB.txt | 2 +- source/data/zone/en_BE.txt | 2 +- source/data/zone/en_BM.txt | 2 +- source/data/zone/en_BS.txt | 2 +- source/data/zone/en_BW.txt | 2 +- source/data/zone/en_BZ.txt | 2 +- source/data/zone/en_CA.txt | 3 +- source/data/zone/en_CC.txt | 2 +- source/data/zone/en_CH.txt | 2 +- source/data/zone/en_CK.txt | 2 +- source/data/zone/en_CM.txt | 2 +- source/data/zone/en_CX.txt | 2 +- source/data/zone/en_CY.txt | 2 +- source/data/zone/en_DE.txt | 2 +- source/data/zone/en_DG.txt | 2 +- source/data/zone/en_DK.txt | 2 +- source/data/zone/en_DM.txt | 2 +- source/data/zone/en_ER.txt | 2 +- source/data/zone/en_FI.txt | 2 +- source/data/zone/en_FJ.txt | 2 +- source/data/zone/en_FK.txt | 2 +- source/data/zone/en_FM.txt | 2 +- source/data/zone/en_GB.txt | 1191 ++- source/data/zone/en_GD.txt | 2 +- source/data/zone/en_GG.txt | 2 +- source/data/zone/en_GH.txt | 2 +- source/data/zone/en_GI.txt | 2 +- source/data/zone/en_GM.txt | 2 +- source/data/zone/en_GU.txt | 2 +- source/data/zone/en_GY.txt | 2 +- source/data/zone/en_HK.txt | 2 +- source/data/zone/en_IE.txt | 2 +- source/data/zone/en_IL.txt | 2 +- source/data/zone/en_IM.txt | 2 +- source/data/zone/en_IN.txt | 2 +- source/data/zone/en_IO.txt | 2 +- source/data/zone/en_JE.txt | 2 +- source/data/zone/en_JM.txt | 2 +- source/data/zone/en_KE.txt | 2 +- source/data/zone/en_KI.txt | 2 +- source/data/zone/en_KN.txt | 2 +- source/data/zone/en_KY.txt | 2 +- source/data/zone/en_LC.txt | 2 +- source/data/zone/en_LR.txt | 2 +- source/data/zone/en_LS.txt | 2 +- source/data/zone/en_MG.txt | 2 +- source/data/zone/en_MH.txt | 2 +- source/data/zone/en_MO.txt | 2 +- source/data/zone/en_MP.txt | 2 +- source/data/zone/en_MS.txt | 2 +- source/data/zone/en_MT.txt | 2 +- source/data/zone/en_MU.txt | 2 +- source/data/zone/en_MW.txt | 2 +- source/data/zone/en_MY.txt | 2 +- source/data/zone/en_NA.txt | 2 +- source/data/zone/en_NF.txt | 2 +- source/data/zone/en_NG.txt | 2 +- source/data/zone/en_NL.txt | 2 +- source/data/zone/en_NR.txt | 2 +- source/data/zone/en_NU.txt | 2 +- source/data/zone/en_NZ.txt | 2 +- source/data/zone/en_PG.txt | 2 +- source/data/zone/en_PH.txt | 2 +- source/data/zone/en_PK.txt | 2 +- source/data/zone/en_PN.txt | 2 +- source/data/zone/en_PW.txt | 2 +- source/data/zone/en_RW.txt | 2 +- source/data/zone/en_SB.txt | 2 +- source/data/zone/en_SC.txt | 2 +- source/data/zone/en_SD.txt | 2 +- source/data/zone/en_SE.txt | 2 +- source/data/zone/en_SG.txt | 2 +- source/data/zone/en_SH.txt | 2 +- source/data/zone/en_SI.txt | 2 +- source/data/zone/en_SL.txt | 2 +- source/data/zone/en_SS.txt | 2 +- source/data/zone/en_SX.txt | 2 +- source/data/zone/en_SZ.txt | 2 +- source/data/zone/en_TC.txt | 2 +- source/data/zone/en_TK.txt | 2 +- source/data/zone/en_TO.txt | 2 +- source/data/zone/en_TT.txt | 2 +- source/data/zone/en_TV.txt | 2 +- source/data/zone/en_TZ.txt | 2 +- source/data/zone/en_UG.txt | 2 +- source/data/zone/en_VC.txt | 2 +- source/data/zone/en_VG.txt | 2 +- source/data/zone/en_VU.txt | 2 +- source/data/zone/en_WS.txt | 2 +- source/data/zone/en_ZA.txt | 2 +- source/data/zone/en_ZM.txt | 2 +- source/data/zone/en_ZW.txt | 2 +- source/data/zone/eo.txt | 2 +- source/data/zone/es.txt | 8 +- source/data/zone/es_419.txt | 22 +- source/data/zone/es_AR.txt | 2 +- source/data/zone/es_BO.txt | 2 +- source/data/zone/es_BR.txt | 2 +- source/data/zone/es_BZ.txt | 2 +- source/data/zone/es_CL.txt | 2 +- source/data/zone/es_CO.txt | 2 +- source/data/zone/es_CR.txt | 2 +- source/data/zone/es_CU.txt | 2 +- source/data/zone/es_DO.txt | 2 +- source/data/zone/es_EC.txt | 2 +- source/data/zone/es_GT.txt | 2 +- source/data/zone/es_HN.txt | 2 +- source/data/zone/es_MX.txt | 29 +- source/data/zone/es_NI.txt | 2 +- source/data/zone/es_PA.txt | 2 +- source/data/zone/es_PE.txt | 2 +- source/data/zone/es_PR.txt | 2 +- source/data/zone/es_PY.txt | 2 +- source/data/zone/es_SV.txt | 2 +- source/data/zone/es_US.txt | 35 +- source/data/zone/es_UY.txt | 2 +- source/data/zone/es_VE.txt | 2 +- source/data/zone/et.txt | 4 +- source/data/zone/eu.txt | 7 +- source/data/zone/ewo.txt | 2 +- source/data/zone/fa.txt | 8 +- source/data/zone/ff.txt | 2 +- source/data/zone/ff_Latn.txt | 2 +- source/data/zone/fi.txt | 2 +- source/data/zone/fil.txt | 2 +- source/data/zone/fo.txt | 5 +- source/data/zone/fr.txt | 2 +- source/data/zone/fr_CA.txt | 5 +- source/data/zone/fr_GF.txt | 2 +- source/data/zone/fur.txt | 2 +- source/data/zone/fy.txt | 2 +- source/data/zone/ga.txt | 2 +- source/data/zone/gd.txt | 5 +- source/data/zone/gl.txt | 121 +- source/data/zone/gsw.txt | 2 +- source/data/zone/gu.txt | 44 +- source/data/zone/guz.txt | 2 +- source/data/zone/gv.txt | 2 +- source/data/zone/ha.txt | 726 +- source/data/zone/ha_NE.txt | 432 - source/data/zone/haw.txt | 2 +- source/data/zone/he.txt | 20 +- source/data/zone/hi.txt | 2 +- source/data/zone/hr.txt | 32 +- source/data/zone/hsb.txt | 2 +- source/data/zone/hu.txt | 6 +- source/data/zone/hy.txt | 5 +- source/data/zone/ia.txt | 2 +- source/data/zone/id.txt | 10 +- source/data/zone/ig.txt | 554 +- source/data/zone/ii.txt | 2 +- source/data/zone/is.txt | 2 +- source/data/zone/it.txt | 5 +- source/data/zone/ja.txt | 5 +- source/data/zone/jgo.txt | 2 +- source/data/zone/jmc.txt | 2 +- source/data/zone/jv.txt | 13 +- source/data/zone/ka.txt | 4 +- source/data/zone/kab.txt | 2 +- source/data/zone/kam.txt | 2 +- source/data/zone/kde.txt | 2 +- source/data/zone/kea.txt | 119 +- source/data/zone/khq.txt | 2 +- source/data/zone/ki.txt | 2 +- source/data/zone/kk.txt | 13 +- source/data/zone/kkj.txt | 2 +- source/data/zone/kl.txt | 2 +- source/data/zone/kln.txt | 2 +- source/data/zone/km.txt | 5 +- source/data/zone/kn.txt | 6 +- source/data/zone/ko.txt | 2 +- source/data/zone/ko_KP.txt | 2 +- source/data/zone/kok.txt | 1251 ++- source/data/zone/ks.txt | 2 +- source/data/zone/ksb.txt | 2 +- source/data/zone/ksf.txt | 2 +- source/data/zone/ksh.txt | 2 +- source/data/zone/ku.txt | 2 +- source/data/zone/kw.txt | 2 +- source/data/zone/ky.txt | 5 +- source/data/zone/lag.txt | 2 +- source/data/zone/lb.txt | 2 +- source/data/zone/lg.txt | 2 +- source/data/zone/lkt.txt | 2 +- source/data/zone/ln.txt | 2 +- source/data/zone/lo.txt | 21 +- source/data/zone/lrc.txt | 2 +- source/data/zone/lt.txt | 2 +- source/data/zone/lu.txt | 2 +- source/data/zone/luo.txt | 2 +- source/data/zone/luy.txt | 2 +- source/data/zone/lv.txt | 5 +- source/data/zone/mas.txt | 2 +- source/data/zone/mer.txt | 2 +- source/data/zone/mfe.txt | 2 +- source/data/zone/mg.txt | 2 +- source/data/zone/mgh.txt | 2 +- source/data/zone/mgo.txt | 2 +- source/data/zone/mi.txt | 2 +- source/data/zone/mk.txt | 2 +- source/data/zone/ml.txt | 4 +- source/data/zone/mn.txt | 67 +- source/data/zone/mr.txt | 2 +- source/data/zone/ms.txt | 13 +- source/data/zone/mt.txt | 2 +- source/data/zone/mua.txt | 2 +- source/data/zone/my.txt | 7 +- source/data/zone/mzn.txt | 2 +- source/data/zone/naq.txt | 2 +- source/data/zone/nb.txt | 4 +- source/data/zone/nd.txt | 2 +- source/data/zone/nds.txt | 2 +- source/data/zone/ne.txt | 5 +- source/data/zone/ne_IN.txt | 2 +- source/data/zone/nl.txt | 23 +- source/data/zone/nl_SR.txt | 2 +- source/data/zone/nmg.txt | 2 +- source/data/zone/nn.txt | 2 +- source/data/zone/nnh.txt | 2 +- source/data/zone/nus.txt | 2 +- source/data/zone/nyn.txt | 2 +- source/data/zone/om.txt | 2 +- source/data/zone/or.txt | 5 +- source/data/zone/os.txt | 2 +- source/data/zone/pa.txt | 4 +- source/data/zone/pa_Arab.txt | 2 +- source/data/zone/pa_Guru.txt | 2 +- source/data/zone/pl.txt | 6 +- source/data/zone/ps.txt | 648 +- source/data/zone/ps_PK.txt | 2 +- source/data/zone/pt.txt | 406 +- source/data/zone/pt_AO.txt | 2 +- source/data/zone/pt_CH.txt | 2 +- source/data/zone/pt_CV.txt | 4 +- source/data/zone/pt_GQ.txt | 2 +- source/data/zone/pt_GW.txt | 2 +- source/data/zone/pt_LU.txt | 2 +- source/data/zone/pt_MO.txt | 2 +- source/data/zone/pt_MZ.txt | 2 +- source/data/zone/pt_PT.txt | 364 +- source/data/zone/pt_ST.txt | 2 +- source/data/zone/pt_TL.txt | 2 +- source/data/zone/qu.txt | 765 +- source/data/zone/qu_BO.txt | 2 +- source/data/zone/qu_EC.txt | 2 +- source/data/zone/rm.txt | 2 +- source/data/zone/rn.txt | 2 +- source/data/zone/ro.txt | 5 +- source/data/zone/rof.txt | 2 +- source/data/zone/root.txt | 2 +- source/data/zone/ru.txt | 6 +- source/data/zone/rw.txt | 2 +- source/data/zone/rwk.txt | 2 +- source/data/zone/sah.txt | 2 +- source/data/zone/saq.txt | 2 +- source/data/zone/sbp.txt | 2 +- source/data/zone/sd.txt | 5 +- source/data/zone/se.txt | 2 +- source/data/zone/se_FI.txt | 2 +- source/data/zone/seh.txt | 2 +- source/data/zone/ses.txt | 2 +- source/data/zone/sg.txt | 2 +- source/data/zone/shi.txt | 2 +- source/data/zone/shi_Latn.txt | 2 +- source/data/zone/shi_Tfng.txt | 2 +- source/data/zone/si.txt | 5 +- source/data/zone/sk.txt | 3 +- source/data/zone/sl.txt | 9 +- source/data/zone/smn.txt | 2 +- source/data/zone/sn.txt | 2 +- source/data/zone/so.txt | 177 +- source/data/zone/sq.txt | 5 +- source/data/zone/sr.txt | 6 +- source/data/zone/sr_Cyrl.txt | 2 +- source/data/zone/sr_Latn.txt | 6 +- source/data/zone/sv.txt | 2 +- source/data/zone/sw.txt | 2 +- source/data/zone/sw_KE.txt | 251 + source/data/zone/ta.txt | 2 +- source/data/zone/ta_MY.txt | 2 +- source/data/zone/ta_SG.txt | 2 +- source/data/zone/te.txt | 2 +- source/data/zone/teo.txt | 2 +- source/data/zone/tg.txt | 4 +- source/data/zone/th.txt | 6 +- source/data/zone/ti.txt | 2 +- source/data/zone/tk.txt | 26 +- source/data/zone/to.txt | 73 +- source/data/zone/tr.txt | 7 +- source/data/zone/tt.txt | 2 +- source/data/zone/twq.txt | 2 +- source/data/zone/tzm.txt | 2 +- source/data/zone/ug.txt | 2 +- source/data/zone/uk.txt | 11 +- source/data/zone/ur.txt | 20 +- source/data/zone/ur_IN.txt | 3 +- source/data/zone/uz.txt | 2 +- source/data/zone/uz_Arab.txt | 2 +- source/data/zone/uz_Cyrl.txt | 2 +- source/data/zone/uz_Latn.txt | 2 +- source/data/zone/vai.txt | 2 +- source/data/zone/vai_Latn.txt | 2 +- source/data/zone/vai_Vaii.txt | 2 +- source/data/zone/vi.txt | 11 +- source/data/zone/vun.txt | 2 +- source/data/zone/wae.txt | 2 +- source/data/zone/wo.txt | 2 +- source/data/zone/xh.txt | 2 +- source/data/zone/xog.txt | 2 +- source/data/zone/yav.txt | 2 +- source/data/zone/yi.txt | 2 +- source/data/zone/yo.txt | 505 +- source/data/zone/yo_BJ.txt | 14 +- source/data/zone/yue.txt | 5 +- source/data/zone/yue_Hans.txt | 5 +- source/data/zone/yue_Hant.txt | 2 +- source/data/zone/zgh.txt | 2 +- source/data/zone/zh.txt | 9 +- source/data/zone/zh_Hans.txt | 2 +- source/data/zone/zh_Hans_SG.txt | 2 +- source/data/zone/zh_Hant.txt | 3 +- source/data/zone/zh_Hant_HK.txt | 8 +- source/data/zone/zh_Hant_MO.txt | 2 +- source/data/zone/zu.txt | 56 +- source/extra/Makefile.in | 2 +- source/extra/scrptrun/scrptrun.cpp | 3 + source/extra/scrptrun/scrptrun.h | 3 + source/extra/scrptrun/srtest.cpp | 5 +- source/extra/uconv/makedata.mak | 25 +- source/extra/uconv/uconv.vcxproj | 156 +- source/i18n/Makefile.in | 12 +- source/i18n/alphaindex.cpp | 7 +- source/i18n/anytrans.cpp | 2 +- source/i18n/anytrans.h | 2 +- source/i18n/astro.cpp | 17 +- source/i18n/bocsu.h | 4 +- source/i18n/brktrans.cpp | 2 +- source/i18n/brktrans.h | 2 +- source/i18n/buddhcal.cpp | 4 +- source/i18n/buddhcal.h | 2 +- source/i18n/calendar.cpp | 7 +- source/i18n/casetrn.cpp | 2 +- source/i18n/casetrn.h | 2 +- source/i18n/chnsecal.cpp | 19 +- source/i18n/chnsecal.h | 2 +- source/i18n/choicfmt.cpp | 2 +- source/i18n/coll.cpp | 2 +- source/i18n/collationiterator.cpp | 4 +- source/i18n/compactdecimalformat.cpp | 8 +- source/i18n/coptccal.cpp | 2 +- source/i18n/coptccal.h | 2 +- source/i18n/cpdtrans.cpp | 2 +- source/i18n/cpdtrans.h | 2 +- source/i18n/csdetect.cpp | 2 +- source/i18n/curramt.cpp | 2 +- source/i18n/currfmt.cpp | 2 +- source/i18n/currfmt.h | 2 +- source/i18n/currunit.cpp | 2 +- source/i18n/dangical.cpp | 2 +- source/i18n/dangical.h | 2 +- source/i18n/datefmt.cpp | 4 +- source/i18n/decNumberLocal.h | 4 +- source/i18n/decimfmt.cpp | 369 +- source/i18n/double-conversion-bignum-dtoa.cpp | 40 +- source/i18n/double-conversion-bignum.cpp | 581 +- source/i18n/double-conversion-bignum.h | 68 +- source/i18n/double-conversion-cached-powers.cpp | 204 +- source/i18n/double-conversion-cached-powers.h | 26 +- source/i18n/double-conversion-diy-fp.cpp | 74 - source/i18n/double-conversion-diy-fp.h | 59 +- source/i18n/double-conversion-double-to-string.cpp | 450 + source/i18n/double-conversion-double-to-string.h | 419 + source/i18n/double-conversion-fast-dtoa.cpp | 54 +- source/i18n/double-conversion-ieee.h | 38 +- ....cpp => double-conversion-string-to-double.cpp} | 462 +- source/i18n/double-conversion-string-to-double.h | 244 + source/i18n/double-conversion-strtod.cpp | 146 +- source/i18n/double-conversion-strtod.h | 5 + source/i18n/double-conversion-utils.h | 107 +- source/i18n/double-conversion.h | 557 +- source/i18n/dtfmtsym.cpp | 26 +- source/i18n/dtitv_impl.h | 2 +- source/i18n/dtitvfmt.cpp | 31 +- source/i18n/dtitvinf.cpp | 4 +- source/i18n/dtptngen.cpp | 76 +- source/i18n/esctrn.cpp | 2 +- source/i18n/esctrn.h | 2 +- source/i18n/ethpccal.cpp | 2 +- source/i18n/ethpccal.h | 2 +- source/i18n/fmtable.cpp | 2 +- ...ingbuilder.cpp => formatted_string_builder.cpp} | 230 +- source/i18n/formatted_string_builder.h | 253 + source/i18n/formattedval_impl.h | 39 +- source/i18n/formattedval_sbimpl.cpp | 182 +- source/i18n/funcrepl.cpp | 2 +- source/i18n/funcrepl.h | 2 +- source/i18n/gender.cpp | 2 +- source/i18n/gregocal.cpp | 32 +- source/i18n/hebrwcal.cpp | 2 +- source/i18n/hebrwcal.h | 2 +- source/i18n/i18n.vcxproj | 128 +- source/i18n/i18n.vcxproj.filters | 23 +- source/i18n/i18n_uwp.vcxproj | 102 +- source/i18n/indiancal.cpp | 2 +- source/i18n/indiancal.h | 2 +- source/i18n/islamcal.cpp | 4 +- source/i18n/islamcal.h | 2 +- source/i18n/japancal.cpp | 2 +- source/i18n/japancal.h | 2 +- source/i18n/listformatter.cpp | 6 +- source/i18n/measfmt.cpp | 239 +- source/i18n/measunit.cpp | 576 +- source/i18n/measure.cpp | 4 +- source/i18n/msgfmt.cpp | 6 +- source/i18n/name2uni.cpp | 2 +- source/i18n/name2uni.h | 2 +- source/i18n/nortrans.cpp | 2 +- source/i18n/nortrans.h | 2 +- source/i18n/nounit.cpp | 2 +- source/i18n/nultrans.cpp | 2 +- source/i18n/nultrans.h | 2 +- source/i18n/number_affixutils.cpp | 8 +- source/i18n/number_affixutils.h | 10 +- source/i18n/number_asformat.cpp | 10 +- source/i18n/number_asformat.h | 2 +- source/i18n/number_compact.cpp | 6 +- source/i18n/number_currencysymbols.cpp | 6 +- source/i18n/number_decimalquantity.cpp | 21 +- source/i18n/number_decimalquantity.h | 11 +- source/i18n/number_decnum.h | 2 + source/i18n/number_fluent.cpp | 4 +- source/i18n/number_formatimpl.cpp | 76 +- source/i18n/number_formatimpl.h | 24 +- source/i18n/number_longnames.cpp | 29 +- source/i18n/number_longnames.h | 9 +- source/i18n/number_mapper.h | 12 +- source/i18n/number_modifiers.cpp | 22 +- source/i18n/number_modifiers.h | 56 +- source/i18n/number_output.cpp | 13 +- source/i18n/number_padding.cpp | 6 +- source/i18n/number_patternmodifier.cpp | 38 +- source/i18n/number_patternmodifier.h | 16 +- source/i18n/number_patternstring.cpp | 7 +- source/i18n/number_patternstring.h | 2 +- source/i18n/number_rounding.cpp | 14 +- source/i18n/number_scientific.cpp | 12 +- source/i18n/number_scientific.h | 2 +- source/i18n/number_skeletons.cpp | 11 +- source/i18n/number_skeletons.h | 6 +- source/i18n/number_stringbuilder.h | 164 - source/i18n/number_types.h | 28 +- source/i18n/number_utils.cpp | 11 + source/i18n/number_utils.h | 45 +- source/i18n/number_utypes.h | 6 +- source/i18n/numfmt.cpp | 30 +- source/i18n/numparse_affixes.cpp | 5 +- source/i18n/numparse_compositions.cpp | 1 + source/i18n/numparse_currency.cpp | 1 + source/i18n/numparse_decimal.cpp | 1 + source/i18n/numparse_impl.cpp | 6 +- source/i18n/numparse_impl.h | 1 + source/i18n/numparse_parsednumber.cpp | 5 +- source/i18n/numparse_scientific.cpp | 65 +- source/i18n/numparse_scientific.h | 2 + source/i18n/numparse_stringsegment.h | 24 - source/i18n/numparse_symbols.cpp | 9 +- source/i18n/numparse_symbols.h | 2 +- source/i18n/numparse_types.h | 115 +- source/i18n/numrange_fluent.cpp | 4 +- source/i18n/numrange_impl.cpp | 2 +- source/i18n/numrange_impl.h | 6 +- source/i18n/numsys.cpp | 2 +- source/i18n/olsontz.cpp | 9 +- source/i18n/olsontz.h | 4 +- source/i18n/persncal.cpp | 2 +- source/i18n/persncal.h | 2 +- source/i18n/plurfmt.cpp | 15 +- source/i18n/quant.cpp | 2 +- source/i18n/quant.h | 2 +- source/i18n/quantityformatter.cpp | 10 +- source/i18n/quantityformatter.h | 11 +- source/i18n/rbnf.cpp | 53 +- source/i18n/rbt.cpp | 6 +- source/i18n/rbt.h | 2 +- source/i18n/rbt_pars.cpp | 2 +- source/i18n/rbt_rule.cpp | 6 +- source/i18n/rbtz.cpp | 6 +- source/i18n/regexcmp.cpp | 64 +- source/i18n/regeximp.h | 2 +- source/i18n/region.cpp | 40 +- source/i18n/reldatefmt.cpp | 18 +- source/i18n/reldtfmt.cpp | 4 +- source/i18n/reldtfmt.h | 2 +- source/i18n/rematch.cpp | 144 +- source/i18n/remtrans.cpp | 6 +- source/i18n/remtrans.h | 2 +- source/i18n/repattrn.cpp | 4 +- source/i18n/rulebasedcollator.cpp | 2 +- source/i18n/scientificnumberformatter.cpp | 4 +- source/i18n/selfmt.cpp | 2 +- source/i18n/simpletz.cpp | 5 +- source/i18n/smpdtfmt.cpp | 50 +- ...mparse_stringsegment.cpp => string_segment.cpp} | 7 +- source/i18n/string_segment.h | 134 + source/i18n/strmatch.cpp | 2 +- source/i18n/strmatch.h | 2 +- source/i18n/strrepl.cpp | 2 +- source/i18n/strrepl.h | 2 +- source/i18n/stsearch.cpp | 2 +- source/i18n/taiwncal.cpp | 2 +- source/i18n/taiwncal.h | 2 +- source/i18n/timezone.cpp | 20 +- source/i18n/titletrn.cpp | 2 +- source/i18n/titletrn.h | 2 +- source/i18n/tmunit.cpp | 2 +- source/i18n/tmutamt.cpp | 2 +- source/i18n/tmutfmt.cpp | 10 +- source/i18n/tolowtrn.cpp | 2 +- source/i18n/tolowtrn.h | 2 +- source/i18n/toupptrn.cpp | 2 +- source/i18n/toupptrn.h | 2 +- source/i18n/translit.cpp | 65 +- source/i18n/transreg.cpp | 8 +- source/i18n/tridpars.cpp | 12 +- source/i18n/tzfmt.cpp | 29 +- source/i18n/tzgnames.cpp | 52 +- source/i18n/tznames.cpp | 19 +- source/i18n/tznames_impl.cpp | 39 +- source/i18n/tznames_impl.h | 4 +- source/i18n/tzrule.cpp | 2 +- source/i18n/ucal.cpp | 29 +- source/i18n/udat.cpp | 8 +- source/i18n/unesctrn.cpp | 2 +- source/i18n/unesctrn.h | 2 +- source/i18n/uni2name.cpp | 2 +- source/i18n/uni2name.h | 2 +- source/i18n/unicode/alphaindex.h | 6 + source/i18n/unicode/basictz.h | 12 + source/i18n/unicode/calendar.h | 27 +- source/i18n/unicode/choicfmt.h | 9 +- source/i18n/unicode/coleitr.h | 4 + source/i18n/unicode/coll.h | 24 +- source/i18n/unicode/compactdecimalformat.h | 7 +- source/i18n/unicode/curramt.h | 7 +- source/i18n/unicode/currpinf.h | 4 + source/i18n/unicode/currunit.h | 7 +- source/i18n/unicode/datefmt.h | 12 + source/i18n/unicode/dcfmtsym.h | 8 +- source/i18n/unicode/decimfmt.h | 31 +- source/i18n/unicode/dtfmtsym.h | 4 + source/i18n/unicode/dtitvfmt.h | 6 +- source/i18n/unicode/dtitvinf.h | 6 +- source/i18n/unicode/dtptngen.h | 12 +- source/i18n/unicode/dtrule.h | 6 +- source/i18n/unicode/fieldpos.h | 4 + source/i18n/unicode/fmtable.h | 4 + source/i18n/unicode/format.h | 4 + source/i18n/unicode/formattedvalue.h | 23 +- source/i18n/unicode/fpositer.h | 5 + source/i18n/unicode/gender.h | 4 + source/i18n/unicode/gregocal.h | 8 +- source/i18n/unicode/listformatter.h | 6 +- source/i18n/unicode/measfmt.h | 17 +- source/i18n/unicode/measunit.h | 229 +- source/i18n/unicode/measure.h | 7 +- source/i18n/unicode/msgfmt.h | 10 +- source/i18n/unicode/nounit.h | 9 +- source/i18n/unicode/numberformatter.h | 281 +- source/i18n/unicode/numberrangeformatter.h | 135 +- source/i18n/unicode/numfmt.h | 16 +- source/i18n/unicode/numsys.h | 4 + source/i18n/unicode/plurfmt.h | 17 +- source/i18n/unicode/plurrule.h | 4 + source/i18n/unicode/rbnf.h | 28 +- source/i18n/unicode/rbtz.h | 8 +- source/i18n/unicode/regex.h | 5 + source/i18n/unicode/region.h | 7 +- source/i18n/unicode/reldatefmt.h | 25 +- source/i18n/unicode/scientificnumberformatter.h | 9 +- source/i18n/unicode/search.h | 7 +- source/i18n/unicode/selfmt.h | 9 +- source/i18n/unicode/simpletz.h | 8 +- source/i18n/unicode/smpdtfmt.h | 8 +- source/i18n/unicode/sortkey.h | 4 + source/i18n/unicode/stsearch.h | 9 +- source/i18n/unicode/tblcoll.h | 11 +- source/i18n/unicode/timezone.h | 14 +- source/i18n/unicode/tmunit.h | 7 +- source/i18n/unicode/tmutamt.h | 12 +- source/i18n/unicode/tmutfmt.h | 8 +- source/i18n/unicode/translit.h | 4 + source/i18n/unicode/tzfmt.h | 7 +- source/i18n/unicode/tznames.h | 5 + source/i18n/unicode/tzrule.h | 12 +- source/i18n/unicode/tztrans.h | 6 +- source/i18n/unicode/ucal.h | 40 +- source/i18n/unicode/ucol.h | 2 + source/i18n/unicode/udat.h | 2 + source/i18n/unicode/udatpg.h | 2 + source/i18n/unicode/uformattedvalue.h | 3 +- source/i18n/unicode/ulistformatter.h | 4 +- source/i18n/unicode/unirepl.h | 4 + source/i18n/unicode/unum.h | 4 +- source/i18n/unicode/unumberformatter.h | 71 +- source/i18n/unicode/usearch.h | 18 +- source/i18n/unicode/uspoof.h | 496 +- source/i18n/unicode/utrans.h | 11 +- source/i18n/unicode/vtzone.h | 8 +- source/i18n/unum.cpp | 5 + source/i18n/usearch.cpp | 28 +- source/i18n/uspoof.cpp | 2 +- source/i18n/uspoof_impl.cpp | 4 +- source/i18n/vtzone.cpp | 14 +- source/i18n/windtfmt.cpp | 2 +- source/i18n/windtfmt.h | 2 +- source/i18n/winnmfmt.cpp | 2 +- source/i18n/winnmfmt.h | 2 +- source/i18n/zonemeta.cpp | 29 +- source/io/io.vcxproj | 122 +- source/io/locbund.cpp | 2 +- source/io/ucln_io.cpp | 1 + source/io/unicode/ustream.h | 6 + source/layoutex/layoutex.vcxproj | 13 +- .../icutools/__init__.py} | 11 +- .../icutools/databuilder}/__init__.py | 32 +- .../icutools/databuilder}/__main__.py | 639 +- .../icutools/databuilder}/comment_stripper.py | 102 +- .../icutools/databuilder}/filtration.py | 786 +- .../icutools/databuilder}/filtration_schema.json | 315 +- .../icutools/databuilder}/locale_dependencies.py | 448 +- .../icutools/databuilder}/renderers/__init__.py | 20 +- .../icutools/databuilder/renderers/common_exec.py | 146 + .../icutools/databuilder}/renderers/makefile.py | 490 +- .../icutools/databuilder}/request_types.py | 695 +- .../icutools/databuilder}/test/__init__.py | 4 +- .../icutools/databuilder}/test/__main__.py | 28 +- .../icutools/databuilder}/test/filtration_test.py | 706 +- .../icutools/databuilder}/utils.py | 234 +- source/samples/break/break.vcxproj | 4 - source/samples/cal/cal.c | 4 +- source/samples/cal/cal.vcxproj | 4 - source/samples/case/case.vcxproj | 12 +- source/samples/citer/citer.cpp | 4 +- source/samples/citer/citer.vcxproj | 4 - source/samples/coll/coll.vcxproj | 4 - source/samples/csdet/csdet.vcxproj | 4 - source/samples/date/date.vcxproj | 4 - source/samples/datefmt/datefmt.vcxproj | 4 - source/samples/layout/layout.vcxproj | 4 - source/samples/legacy/legacy.vcxproj | 4 - source/samples/msgfmt/msgfmt.vcxproj | 4 - source/samples/numfmt/numfmt.vcxproj | 4 - source/samples/props/props.vcxproj | 4 - source/samples/strsrch/strsrch.vcxproj | 4 - source/samples/translit/translit.vcxproj | 4 - source/samples/uciter8/uciter8.vcxproj | 4 - source/samples/ucnv/ucnv.vcxproj | 4 - source/samples/udata/reader.vcxproj | 4 - source/samples/udata/writer.vcxproj | 4 - source/samples/ufortune/ufortune.vcxproj | 2 - source/samples/ugrep/ugrep.vcxproj | 4 - source/samples/uresb/uresb.vcxproj | 4 - source/samples/ustring/ustring.vcxproj | 4 - source/stubdata/stubdata.vcxproj | 110 +- source/test/Makefile.in | 6 +- source/test/cintltst/bocu1tst.c | 4 +- source/test/cintltst/callcoll.c | 2 +- source/test/cintltst/capitst.c | 123 +- source/test/cintltst/cbiapts.c | 27 +- source/test/cintltst/cbiditst.c | 11 +- source/test/cintltst/ccaltst.c | 115 +- source/test/cintltst/ccapitst.c | 24 +- source/test/cintltst/cdtdptst.c | 49 +- source/test/cintltst/cdtrgtst.c | 1 + source/test/cintltst/cintltst.c | 14 + source/test/cintltst/cintltst.h | 6 + source/test/cintltst/cintltst.vcxproj | 121 +- source/test/cintltst/citertst.c | 4 +- source/test/cintltst/cldrtest.c | 1 + source/test/cintltst/cloctst.c | 129 +- source/test/cintltst/cloctst.h | 5 +- source/test/cintltst/cmsccoll.c | 6 +- source/test/cintltst/cmsgtst.c | 37 +- source/test/cintltst/cnmdptst.c | 2 + source/test/cintltst/cnormtst.c | 7 +- source/test/cintltst/cnumtst.c | 61 +- source/test/cintltst/crelativedateformattest.c | 8 +- source/test/cintltst/crestst.c | 22 +- source/test/cintltst/creststn.c | 42 +- source/test/cintltst/cstrcase.c | 4 +- source/test/cintltst/cstrtest.c | 70 +- source/test/cintltst/cucdtst.c | 38 +- source/test/cintltst/currtest.c | 2 +- source/test/cintltst/custrtrn.c | 6 +- source/test/cintltst/hpmufn.c | 24 +- source/test/cintltst/nccbtst.c | 10 +- source/test/cintltst/ncnvtst.c | 8 +- source/test/cintltst/nucnvtst.c | 108 +- source/test/cintltst/putiltst.c | 2 +- source/test/cintltst/reapits.c | 37 +- source/test/cintltst/sorttest.c | 1 + source/test/cintltst/spooftest.c | 46 +- source/test/cintltst/spreptst.c | 1 + source/test/cintltst/sprpdata.c | 3 +- source/test/cintltst/tracetst.c | 27 +- source/test/cintltst/trie2test.c | 6 +- source/test/cintltst/trietest.c | 2 + source/test/cintltst/ucnvseltst.c | 4 +- source/test/cintltst/ucptrietest.c | 5 +- source/test/cintltst/udatatst.c | 7 +- source/test/cintltst/uenumtst.c | 11 +- source/test/cintltst/uformattedvaluetst.c | 2 + source/test/cintltst/unumberformattertst.c | 4 +- source/test/cintltst/usrchtst.c | 72 +- source/test/cintltst/utexttst.c | 26 +- source/test/cintltst/utf8tst.c | 12 +- source/test/cintltst/utmstest.c | 2 +- source/test/depstest/dependencies.txt | 57 +- source/test/depstest/depstest.py | 7 +- source/test/fuzzer/Makefile.in | 99 + ...terator_fuzzer.cc => break_iterator_fuzzer.cpp} | 1 + source/test/fuzzer/collator_compare_fuzzer.cpp | 35 + source/test/fuzzer/collator_rulebased_fuzzer.cpp | 26 + .../collator_rulebased_fuzzer_seed_corpus.txt | Bin 0 -> 316 bytes .../{converter_fuzzer.cc => converter_fuzzer.cpp} | 2 + source/test/fuzzer/fuzzer_driver.cpp | 20 + .../fuzzer/{locale_fuzzer.cc => locale_fuzzer.cpp} | 0 .../fuzzer/{locale_util.cc => locale_util.cpp} | 0 ...r_format_fuzzer.cc => number_format_fuzzer.cpp} | 2 + .../{ucasemap_fuzzer.cc => ucasemap_fuzzer.cpp} | 4 +- ...lize_fuzzer.cc => uloc_canonicalize_fuzzer.cpp} | 0 ..._fuzzer.cc => uloc_for_language_tag_fuzzer.cpp} | 0 ...get_name_fuzzer.cc => uloc_get_name_fuzzer.cpp} | 0 ..._fuzzer.cc => uloc_is_right_to_left_fuzzer.cpp} | 0 ...rds_fuzzer.cc => uloc_open_keywords_fuzzer.cpp} | 0 ...c => unicode_string_codepage_create_fuzzer.cpp} | 1 + ...regex_open_fuzzer.cc => uregex_open_fuzzer.cpp} | 6 +- source/test/hdrtst/Makefile.in | 171 +- source/test/hdrtst/cxxfiles.txt | 138 - source/test/hdrtst/pfiles.txt | 5 - source/test/hdrtst/testtagsguards.sh | 94 + source/test/intltest/Makefile.in | 7 +- source/test/intltest/alphaindextst.cpp | 73 +- source/test/intltest/apicoll.cpp | 10 +- source/test/intltest/astrotst.cpp | 132 +- source/test/intltest/bytestrietest.cpp | 57 + source/test/intltest/calregts.cpp | 112 +- source/test/intltest/calregts.h | 2 + source/test/intltest/caltest.cpp | 37 +- source/test/intltest/citrtest.cpp | 42 +- source/test/intltest/compactdecimalformattest.cpp | 30 +- source/test/intltest/convtest.cpp | 16 +- source/test/intltest/cpdtrtst.cpp | 8 +- source/test/intltest/csdetest.cpp | 136 +- source/test/intltest/dadrcal.cpp | 15 +- .../intltest/datadrivennumberformattestsuite.cpp | 2 +- source/test/intltest/dcfmapts.cpp | 13 +- source/test/intltest/dcfmtest.cpp | 56 +- source/test/intltest/dtfmapts.cpp | 2 +- source/test/intltest/dtfmrgts.cpp | 97 +- source/test/intltest/dtfmttst.cpp | 156 +- source/test/intltest/dtfmttst.h | 1 + source/test/intltest/dtifmtts.cpp | 53 +- source/test/intltest/dtptngts.cpp | 151 +- source/test/intltest/dtptngts.h | 2 + source/test/intltest/erarulestest.cpp | 3 +- ...ilder.cpp => formatted_string_builder_test.cpp} | 100 +- source/test/intltest/idnaconf.cpp | 2 +- source/test/intltest/idnaref.cpp | 19 +- source/test/intltest/incaltst.cpp | 339 +- source/test/intltest/intltest.cpp | 61 +- source/test/intltest/intltest.h | 19 +- source/test/intltest/intltest.vcxproj | 120 +- source/test/intltest/intltest.vcxproj.filters | 15 +- source/test/intltest/itformat.cpp | 20 + source/test/intltest/itrbnf.cpp | 2 +- source/test/intltest/itspoof.cpp | 57 +- source/test/intltest/itutil.cpp | 132 +- source/test/intltest/localebuildertest.cpp | 79 +- source/test/intltest/localematchertest.cpp | 589 ++ source/test/intltest/locnmtst.cpp | 199 +- source/test/intltest/locnmtst.h | 5 + source/test/intltest/loctest.cpp | 250 +- source/test/intltest/loctest.h | 9 + source/test/intltest/measfmttest.cpp | 554 +- source/test/intltest/miscdtfm.cpp | 13 +- source/test/intltest/msfmrgts.cpp | 44 +- source/test/intltest/nmfmapts.cpp | 8 +- source/test/intltest/nptrans.cpp | 41 +- source/test/intltest/numbertest.h | 54 +- source/test/intltest/numbertest_affixutils.cpp | 4 +- source/test/intltest/numbertest_api.cpp | 156 +- .../test/intltest/numbertest_decimalquantity.cpp | 2 +- source/test/intltest/numbertest_modifiers.cpp | 24 +- source/test/intltest/numbertest_parse.cpp | 12 +- .../test/intltest/numbertest_patternmodifier.cpp | 26 +- source/test/intltest/numbertest_permutation.cpp | 198 + source/test/intltest/numbertest_skeletons.cpp | 2 + source/test/intltest/numfmtst.cpp | 107 +- source/test/intltest/numfmtst.h | 1 + source/test/intltest/numrgts.cpp | 64 +- source/test/intltest/plurfmts.cpp | 21 +- source/test/intltest/plurults.cpp | 28 +- source/test/intltest/plurults.h | 1 + source/test/intltest/pptest.cpp | 2 +- source/test/intltest/quantityformattertest.cpp | 7 + source/test/intltest/rbbiapts.cpp | 30 +- source/test/intltest/rbbimonkeytest.cpp | 14 +- source/test/intltest/rbbimonkeytest.h | 8 +- source/test/intltest/rbbitst.cpp | 61 +- source/test/intltest/regcoll.cpp | 24 +- source/test/intltest/regextst.cpp | 89 +- source/test/intltest/reldatefmttest.cpp | 46 +- source/test/intltest/reptest.cpp | 4 +- source/test/intltest/restest.cpp | 34 +- source/test/intltest/restsnew.cpp | 199 +- source/test/intltest/restsnew.h | 4 + source/test/intltest/selfmts.cpp | 11 +- source/test/intltest/simplethread.cpp | 2 +- source/test/intltest/simplethread.h | 4 +- source/test/intltest/srchtest.cpp | 12 +- source/test/intltest/ssearch.cpp | 32 +- ...t_stringsegment.cpp => string_segment_test.cpp} | 20 +- source/test/intltest/strtest.cpp | 100 + source/test/intltest/strtest.h | 6 + source/test/intltest/tchcfmt.cpp | 2 +- source/test/intltest/testidna.cpp | 17 +- source/test/intltest/testidna.h | 5 +- source/test/intltest/tmsgfmt.cpp | 26 +- source/test/intltest/transapi.cpp | 16 +- source/test/intltest/transrt.cpp | 21 +- source/test/intltest/transtst.cpp | 34 +- source/test/intltest/tsdate.cpp | 18 +- source/test/intltest/tsmthred.cpp | 268 +- source/test/intltest/tsmthred.h | 5 - source/test/intltest/tstnorm.cpp | 2 +- source/test/intltest/tufmtts.cpp | 17 +- source/test/intltest/tzfmttst.cpp | 42 +- source/test/intltest/tzfmttst.h | 2 + source/test/intltest/tzregts.cpp | 69 +- source/test/intltest/tzrulets.cpp | 8 +- source/test/intltest/tztest.cpp | 37 +- source/test/intltest/ucharstrietest.cpp | 57 + source/test/intltest/uobjtest.cpp | 34 +- source/test/intltest/usettest.cpp | 30 +- source/test/intltest/ustrtest.cpp | 4 +- source/test/intltest/utxttest.cpp | 28 +- source/test/intltest/uvectest.cpp | 10 +- source/test/intltest/v32test.cpp | 10 +- source/test/iotest/filetst.c | 4 +- source/test/iotest/iotest.vcxproj | 116 +- source/test/iotest/strtst.c | 7 +- source/test/letest/gendata.vcxproj | 4 - source/test/letest/letest.cpp | 2 +- source/test/letest/letest.vcxproj | 2 - source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj | 1 - source/test/perf/charperf/charperf.vcxproj | 4 - source/test/perf/collperf/collperf.vcxproj | 4 - source/test/perf/collperf2/collperf2.vcxproj | 4 - source/test/perf/convperf/convperf.vcxproj | 4 - source/test/perf/normperf/dtfmtrtperf.vcxproj | 4 - source/test/perf/normperf/normperf.vcxproj | 4 - source/test/perf/strsrchperf/strsrchperf.vcxproj | 4 - source/test/perf/ubrkperf/ubrkperf.vcxproj | 4 - source/test/perf/unisetperf/unisetperf.vcxproj | 4 - source/test/perf/usetperf/usetperf.vcxproj | 4 - source/test/perf/ustrperf/stringperf.vcxproj | 4 - source/test/perf/utfperf/utfperf.vcxproj | 4 - source/test/perf/utrie2perf/utrie2perf.vcxproj | 4 - source/test/testdata/BUILDRULES.py | 28 +- source/test/testdata/GraphemeBreakTest.txt | 159 +- source/test/testdata/break_rules/README.md | 100 + source/test/testdata/break_rules/grapheme.txt | 8 + source/test/testdata/break_rules/readme.txt | 76 - source/test/testdata/filters/filtertest.txt | 2 + source/test/testdata/filtertest.txt | 3 + source/test/testdata/localeMatcherTest.txt | 1959 +++++ .../testdata/numberformattestspecification.txt | 430 +- source/test/testdata/numberpermutationtest.txt | 9103 ++++++++++++++++++++ source/test/testdata/rbbitst.txt | 492 ++ source/test/testdata/regextst.txt | 42 +- source/test/testdata/root.txt | 4 +- source/test/testdata/structLocale.txt | 5 + source/test/testdata/testdata.mak | 4 +- source/test/testdata/tstfiles.mk | 12 - source/tools/ctestfw/ctest.c | 19 +- source/tools/ctestfw/ctestfw.vcxproj | 123 +- source/tools/genbrk/genbrk.cpp | 6 +- source/tools/genbrk/genbrk.vcxproj | 191 +- source/tools/genccode/genccode.c | 15 +- source/tools/genccode/genccode.vcxproj | 187 +- source/tools/gencfu/gencfu.cpp | 2 +- source/tools/gencfu/gencfu.vcxproj | 179 +- source/tools/gencmn/gencmn.vcxproj | 191 +- source/tools/gencnval/gencnval.c | 1 + source/tools/gencnval/gencnval.vcxproj | 191 +- source/tools/gendict/gendict.vcxproj | 191 +- source/tools/gennorm2/gennorm2.vcxproj | 143 +- source/tools/genrb/derb.cpp | 2 +- source/tools/genrb/derb.vcxproj | 203 +- source/tools/genrb/filterrb.cpp | 3 + source/tools/genrb/genrb.cpp | 8 +- source/tools/genrb/genrb.vcxproj | 189 +- source/tools/genrb/parse.cpp | 104 +- source/tools/genrb/reslist.cpp | 2 +- source/tools/genrb/rle.c | 4 +- source/tools/genrb/ustr.h | 8 +- source/tools/gensprep/gensprep.c | 3 + source/tools/gensprep/gensprep.vcxproj | 189 +- source/tools/gensprep/store.c | 3 +- source/tools/gentest/gentest.vcxproj | 170 +- source/tools/icuinfo/icuinfo.vcxproj | 123 +- source/tools/icuinfo/testplug.vcxproj | 194 +- source/tools/icupkg/icupkg.vcxproj | 124 +- source/tools/makeconv/gencnvex.c | 7 +- source/tools/makeconv/makeconv.vcxproj | 131 +- source/tools/pkgdata/pkgdata.cpp | 80 +- source/tools/pkgdata/pkgdata.vcxproj | 145 +- source/tools/toolutil/filetools.cpp | 2 +- source/tools/toolutil/pkg_genc.cpp | 242 +- source/tools/toolutil/pkg_genc.h | 25 +- source/tools/toolutil/pkgitems.cpp | 3 +- source/tools/toolutil/toolutil.cpp | 2 +- source/tools/toolutil/toolutil.vcxproj | 187 +- source/tools/toolutil/ucbuf.h | 4 +- source/tools/toolutil/xmlparser.cpp | 2 +- source/tools/tzcode/icuzdump.vcxproj | 2 - 3754 files changed, 119751 insertions(+), 47379 deletions(-) create mode 100644 APIChangeReport.md create mode 100644 source/common/localematcher.cpp create mode 100644 source/common/localeprioritylist.cpp create mode 100644 source/common/localeprioritylist.h create mode 100644 source/common/locdistance.cpp create mode 100644 source/common/locdistance.h create mode 100644 source/common/loclikelysubtags.cpp create mode 100644 source/common/loclikelysubtags.h create mode 100644 source/common/lsr.cpp create mode 100644 source/common/lsr.h create mode 100644 source/common/restrace.cpp create mode 100644 source/common/restrace.h create mode 100644 source/common/unicode/localematcher.h create mode 100644 source/data/brkitr/rules/README.md delete mode 100644 source/data/buildtool/renderers/common_exec.py delete mode 100644 source/data/buildtool/renderers/unix_exec.py delete mode 100644 source/data/curr/ha_NE.txt create mode 100644 source/data/curr/sw_KE.txt create mode 100644 source/data/dtd/cldr-35.1/common/dtd/ldml.dtd create mode 100644 source/data/dtd/cldr-35.1/common/dtd/ldmlICU.dtd create mode 100644 source/data/locales/ga_GB.txt create mode 100644 source/data/misc/langInfo.txt create mode 100644 source/data/region/en_001.txt delete mode 100644 source/data/region/ha_NE.txt delete mode 100644 source/data/unit/ha_NE.txt create mode 100644 source/data/unit/sw_KE.txt delete mode 100644 source/data/zone/ha_NE.txt create mode 100644 source/data/zone/sw_KE.txt delete mode 100644 source/i18n/double-conversion-diy-fp.cpp create mode 100644 source/i18n/double-conversion-double-to-string.cpp create mode 100644 source/i18n/double-conversion-double-to-string.h rename source/i18n/{double-conversion.cpp => double-conversion-string-to-double.cpp} (63%) create mode 100644 source/i18n/double-conversion-string-to-double.h rename source/i18n/{number_stringbuilder.cpp => formatted_string_builder.cpp} (58%) create mode 100644 source/i18n/formatted_string_builder.h delete mode 100644 source/i18n/number_stringbuilder.h delete mode 100644 source/i18n/numparse_stringsegment.h rename source/i18n/{numparse_stringsegment.cpp => string_segment.cpp} (96%) create mode 100644 source/i18n/string_segment.h rename source/{data/buildtool/renderers/windows_exec.py => python/icutools/__init__.py} (53%) rename source/{data/buildtool => python/icutools/databuilder}/__init__.py (97%) rename source/{data/buildtool => python/icutools/databuilder}/__main__.py (75%) rename source/{data/buildtool => python/icutools/databuilder}/comment_stripper.py (97%) rename source/{data/buildtool => python/icutools/databuilder}/filtration.py (91%) rename source/{data/buildtool => python/icutools/databuilder}/filtration_schema.json (78%) rename source/{data/buildtool => python/icutools/databuilder}/locale_dependencies.py (96%) rename source/{data/buildtool => python/icutools/databuilder}/renderers/__init__.py (97%) create mode 100644 source/python/icutools/databuilder/renderers/common_exec.py rename source/{data/buildtool => python/icutools/databuilder}/renderers/makefile.py (97%) rename source/{data/buildtool => python/icutools/databuilder}/request_types.py (82%) rename source/{data/buildtool => python/icutools/databuilder}/test/__init__.py (98%) rename source/{data/buildtool => python/icutools/databuilder}/test/__main__.py (96%) rename source/{data/buildtool => python/icutools/databuilder}/test/filtration_test.py (96%) rename source/{data/buildtool => python/icutools/databuilder}/utils.py (79%) create mode 100644 source/test/fuzzer/Makefile.in rename source/test/fuzzer/{break_iterator_fuzzer.cc => break_iterator_fuzzer.cpp} (98%) create mode 100644 source/test/fuzzer/collator_compare_fuzzer.cpp create mode 100644 source/test/fuzzer/collator_rulebased_fuzzer.cpp create mode 100644 source/test/fuzzer/collator_rulebased_fuzzer_seed_corpus.txt rename source/test/fuzzer/{converter_fuzzer.cc => converter_fuzzer.cpp} (97%) create mode 100644 source/test/fuzzer/fuzzer_driver.cpp rename source/test/fuzzer/{locale_fuzzer.cc => locale_fuzzer.cpp} (100%) rename source/test/fuzzer/{locale_util.cc => locale_util.cpp} (100%) rename source/test/fuzzer/{number_format_fuzzer.cc => number_format_fuzzer.cpp} (96%) rename source/test/fuzzer/{ucasemap_fuzzer.cc => ucasemap_fuzzer.cpp} (97%) rename source/test/fuzzer/{uloc_canonicalize_fuzzer.cc => uloc_canonicalize_fuzzer.cpp} (100%) rename source/test/fuzzer/{uloc_for_language_tag_fuzzer.cc => uloc_for_language_tag_fuzzer.cpp} (100%) rename source/test/fuzzer/{uloc_get_name_fuzzer.cc => uloc_get_name_fuzzer.cpp} (100%) rename source/test/fuzzer/{uloc_is_right_to_left_fuzzer.cc => uloc_is_right_to_left_fuzzer.cpp} (100%) rename source/test/fuzzer/{uloc_open_keywords_fuzzer.cc => uloc_open_keywords_fuzzer.cpp} (100%) rename source/test/fuzzer/{unicode_string_codepage_create_fuzzer.cc => unicode_string_codepage_create_fuzzer.cpp} (98%) rename source/test/fuzzer/{uregex_open_fuzzer.cc => uregex_open_fuzzer.cpp} (96%) delete mode 100644 source/test/hdrtst/cxxfiles.txt delete mode 100644 source/test/hdrtst/pfiles.txt create mode 100755 source/test/hdrtst/testtagsguards.sh rename source/test/intltest/{numbertest_stringbuilder.cpp => formatted_string_builder_test.cpp} (78%) create mode 100644 source/test/intltest/localematchertest.cpp create mode 100644 source/test/intltest/numbertest_permutation.cpp rename source/test/intltest/{numbertest_stringsegment.cpp => string_segment_test.cpp} (91%) create mode 100644 source/test/testdata/break_rules/README.md delete mode 100644 source/test/testdata/break_rules/readme.txt create mode 100644 source/test/testdata/localeMatcherTest.txt create mode 100644 source/test/testdata/numberpermutationtest.txt delete mode 100644 source/test/testdata/tstfiles.mk diff --git a/APIChangeReport.html b/APIChangeReport.html index 0483c43..6d22e94 100644 --- a/APIChangeReport.html +++ b/APIChangeReport.html @@ -1,104 +1,100 @@ -ICU4C API Comparison: ICU 63 with ICU 64 (update #1: 64.2) +ICU4C API Comparison: ICU 64 (update #1: 64.2) with ICU 65 -

ICU4C API Comparison: ICU 63 with ICU 64 (update #1: 64.2)

+

ICU4C API Comparison: ICU 64 (update #1: 64.2) with ICU 65

-

Removed from ICU 63

+

Removed from ICU 64

- + - - - - - - - - - - - - - - - -
FileAPIICU 63ICU 64FileAPIICU 64ICU 65
localpointer.hLocalArray<T>& icu::LocalArray< T >::moveFrom(LocalArray< T >&)Draft
ICU 56
(missing)
+
decimfmt.hconst number::LocalizedNumberFormatter& icu::DecimalFormat::toNumberFormatter() constDeprecated
ICU 64
(missing)
localpointer.hLocalPointer<T>& icu::LocalPointer< T >::moveFrom(LocalPointer< T >&)Draft
ICU 56
(missing)
+
edits.hUBool icu::Edits::copyErrorTo(UErrorCode&)Stable
ICU 59
(missing)
numberformatter.hAppendable& icu::number::FormattedNumber::appendTo(Appendable&)Deprecated
ICU 62
(missing)
+
platform.h#define __has_attributeInternal(missing)
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::rounding(const Rounder&) const&Deprecated
ICU 62
(missing)
+
platform.h#define __has_builtinInternal(missing)
numberformatter.hPrecision icu::number::Precision::withMode(UNumberFormatRoundingMode) constDeprecated
ICU 62
(missing)
+
platform.h#define __has_cpp_attributeInternal(missing)
numberformatter.hUnicodeString icu::number::FormattedNumber::toString() constDeprecated
ICU 62
(missing)
+
platform.h#define __has_declspec_attributeInternal(missing)
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::fixedDigits(int32_t)Deprecated
ICU 62
(missing)
+
platform.h#define __has_extensionInternal(missing)
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::maxDigits(int32_t)Deprecated
ICU 62
(missing)
+
platform.h#define __has_featureInternal(missing)
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::minDigits(int32_t)Deprecated
ICU 62
(missing)
+
platform.h#define __has_warningInternal(missing)
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::minMaxDigits(int32_t, int32_t)Deprecated
ICU 62
(missing)
+
uversion.h#define U_NAMESPACE_BEGINStable
ICU 2.4
(missing)
numberformatter.hvoid icu::number::FormattedNumber::populateFieldPosition(FieldPosition&, UErrorCode&)Deprecated
ICU 62
(missing)
+
uversion.h#define U_NAMESPACE_ENDStable
ICU 2.4
(missing)
numberformatter.hvoid icu::number::FormattedNumber::populateFieldPositionIterator(FieldPositionIterator&, UErrorCode&)Deprecated
ICU 62
(missing)
+
uversion.h#define U_NAMESPACE_QUALIFIERStable
ICU 2.4
(missing)
numsys.h#define NUMSYS_NAME_CAPACITYInternal(missing)
-
unistr.hUnicodeString& icu::UnicodeString::moveFrom(UnicodeString&)Draft
ICU 56
(missing)
+
uversion.h#define U_NAMESPACE_USEStable
ICU 2.4
(missing)
@@ -106,2432 +102,3038 @@ (jump back to top)
-

Deprecated or Obsoleted in ICU 64

+

Deprecated or Obsoleted in ICU 65

- + - - - - - -
FileAPIICU 63ICU 64FileAPIICU 64ICU 65
brkiter.hstatic BreakIterator* icu::BreakIterator::createTitleInstance(const Locale&, UErrorCode&)Stable
ICU 2.1
Deprecated
-ICU 64
decimfmt.hconst number::LocalizedNumberFormatter& icu::DecimalFormat::toNumberFormatter() constDraft
ICU 62
Deprecated
-ICU 64

(jump back to top)
-

Changed in ICU 64 (old, new)

+

Changed in ICU 65 (old, new)

- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + -
FileAPIICU 63ICU 64FileAPIICU 64ICU 65
brkiter.hstatic BreakIterator* icu::BreakIterator::createTitleInstance(const Locale&, UErrorCode&)Stable
ICU 2.1
Deprecated
-ICU 64
decimfmt.hint32_t icu::DecimalFormat::getMultiplierScale() constDraft→Stable
ICU 62
decimfmt.hUBool icu::DecimalFormat::isFormatFailIfMoreThanMaxDigits() constInternalDraft
-ICU 64
decimfmt.hvoid icu::DecimalFormat::setMultiplierScale(int32_t)Draft→Stable
ICU 62
decimfmt.hUBool icu::DecimalFormat::isParseCaseSensitive() constInternalDraft
-ICU 64
locid.hLocale& icu::Locale::operator=(Locale&&)Draft→Stable
ICU 63
decimfmt.hUBool icu::DecimalFormat::isParseNoExponent() constInternalDraft
-ICU 64
locid.hStringClass icu::Locale::getKeywordValue(StringPiece, UErrorCode&) constDraft→Stable
ICU 63
decimfmt.hUBool icu::DecimalFormat::isSignAlwaysShown() constInternalDraft
-ICU 64
locid.hStringClass icu::Locale::getUnicodeKeywordValue(StringPiece, UErrorCode&) constDraft→Stable
ICU 63
decimfmt.hconst number::LocalizedNumberFormatter& icu::DecimalFormat::toNumberFormatter() constDraft
ICU 62
Deprecated
-ICU 64
locid.hStringClass icu::Locale::toLanguageTag(UErrorCode&) constDraft→Stable
ICU 63
decimfmt.hint32_t icu::DecimalFormat::getMinimumGroupingDigits() constInternalDraft
-ICU 64
locid.hStringEnumeration* icu::Locale::createUnicodeKeywords(UErrorCode&) constDraft→Stable
ICU 63
decimfmt.hvoid icu::DecimalFormat::setFormatFailIfMoreThanMaxDigits(UBool)InternalDraft
-ICU 64
locid.hicu::Locale::Locale(Locale&&)Draft→Stable
ICU 63
decimfmt.hvoid icu::DecimalFormat::setMinimumGroupingDigits(int32_t)InternalDraft
-ICU 64
locid.hstatic Locale icu::Locale::forLanguageTag(StringPiece, UErrorCode&)Draft→Stable
ICU 63
decimfmt.hvoid icu::DecimalFormat::setParseCaseSensitive(UBool)InternalDraft
-ICU 64
locid.hvoid icu::Locale::addLikelySubtags(UErrorCode&)Draft→Stable
ICU 63
decimfmt.hvoid icu::DecimalFormat::setParseNoExponent(UBool)InternalDraft
-ICU 64
locid.hvoid icu::Locale::getKeywordValue(StringPiece, ByteSink&, UErrorCode&) constDraft→Stable
ICU 63
decimfmt.hvoid icu::DecimalFormat::setSignAlwaysShown(UBool)InternalDraft
-ICU 64
locid.hvoid icu::Locale::getKeywords(OutputIterator, UErrorCode&) constDraft→Stable
ICU 63
dtptngen.hUnicodeString icu::DateTimePatternGenerator::getFieldDisplayName(UDateTimePatternField, UDateTimePGDisplayWidth) constDraft→Stable
ICU 61
locid.hvoid icu::Locale::getUnicodeKeywordValue(StringPiece, ByteSink&, UErrorCode&) constDraft→Stable
ICU 63
ucurr.henum UCurrNameStyle::UCURR_NARROW_SYMBOL_NAMEDraft→Stable
ICU 61
locid.hvoid icu::Locale::getUnicodeKeywords(OutputIterator, UErrorCode&) constDraft→Stable
ICU 63
udatpg.henum UDateTimePGDisplayWidth::UDATPG_ABBREVIATEDDraft→Stable
ICU 61
locid.hvoid icu::Locale::minimizeSubtags(UErrorCode&)Draft→Stable
ICU 63
udatpg.henum UDateTimePGDisplayWidth::UDATPG_NARROWDraft→Stable
ICU 61
locid.hvoid icu::Locale::setKeywordValue(StringPiece, StringPiece, UErrorCode&)Draft→Stable
ICU 63
udatpg.henum UDateTimePGDisplayWidth::UDATPG_WIDEDraft→Stable
ICU 61
locid.hvoid icu::Locale::setUnicodeKeywordValue(StringPiece, StringPiece, UErrorCode&)Draft→Stable
ICU 63
udatpg.hint32_t udatpg_getFieldDisplayName(const UDateTimePatternGenerator*, UDateTimePatternField, UDateTimePGDisplayWidth, UChar*, int32_t, UErrorCode*)Draft→Stable
ICU 61
locid.hvoid icu::Locale::toLanguageTag(ByteSink&, UErrorCode&) constDraft→Stable
ICU 63
unum.henum UNumberFormatAttribute::UNUM_MINIMUM_GROUPING_DIGITSInternalDraft
-ICU 64
measunit.hstatic MeasureUnit* icu::MeasureUnit::createAtmosphere(UErrorCode&)Draft→Stable
ICU 63
unum.henum UNumberFormatAttribute::UNUM_PARSE_CASE_SENSITIVEInternalDraft
-ICU 64
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPercent(UErrorCode&)Draft→Stable
ICU 63
unum.henum UNumberFormatAttribute::UNUM_SIGN_ALWAYS_SHOWNInternalDraft
-ICU 64
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPermille(UErrorCode&)Draft→Stable
ICU 63
unumberformatter.hUBool unumf_resultNextFieldPosition(const UFormattedNumber*, UFieldPosition*, UErrorCode*)Draft→Stable
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPetabyte(UErrorCode&)Draft→Stable
ICU 63
unumberformatter.hUFormattedNumber* unumf_openResult(UErrorCode*)Draft→Stable
ICU 62
numberformatter.hAppendable& icu::number::FormattedNumber::appendTo(Appendable&, UErrorCode&) constDraft→Stable
ICU 62
unumberformatter.hUNumberFormatter* unumf_openForSkeletonAndLocale(const UChar*, int32_t, const char*, UErrorCode*)Draft→Stable
ICU 62
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*) const&Draft→Stable
ICU 61
unumberformatter.hint32_t unumf_resultToString(const UFormattedNumber*, UChar*, int32_t, UErrorCode*)Draft→Stable
ICU 62
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*)&&Draft→Stable
ICU 62
unumberformatter.hvoid unumf_close(UNumberFormatter*)Draft→Stable
ICU 62
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*) const&Draft→Stable
ICU 60
unumberformatter.hvoid unumf_closeResult(UFormattedNumber*)Draft→Stable
ICU 62
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*)&&Draft→Stable
ICU 62
unumberformatter.hvoid unumf_formatDecimal(const UNumberFormatter*, const char*, int32_t, UFormattedNumber*, UErrorCode*)Draft→Stable
ICU 62
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*) const&Draft→Stable
ICU 60
unumberformatter.hvoid unumf_formatDouble(const UNumberFormatter*, double, UFormattedNumber*, UErrorCode*)Draft→Stable
ICU 62
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*)&&Draft→Stable
ICU 62
unumberformatter.hvoid unumf_formatInt(const UNumberFormatter*, int64_t, UFormattedNumber*, UErrorCode*)Draft→Stable
ICU 62
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay) const&Draft→Stable
ICU 60
unumberformatter.hvoid unumf_resultGetAllFieldPositions(const UFormattedNumber*, UFieldPositionIterator*, UErrorCode*)Draft→Stable
ICU 62
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay)&&Draft→Stable
ICU 62
utf8.h#define U8_TRUNCATE_IF_INCOMPLETEDraft→Stable
ICU 61
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy) const&Draft→Stable
ICU 61
-

-(jump back to top) -
- -

Promoted to stable in ICU 64

- - - - + + + + + - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + -
FileAPIICU 63ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy)&&Draft→Stable
ICU 62
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&) const&Draft→Stable
ICU 60
dtptngen.hUnicodeString icu::DateTimePatternGenerator::getFieldDisplayName(UDateTimePatternField, UDateTimePGDisplayWidth) constDraft→Stable
ICU 61
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&)&&Draft→Stable
ICU 62
uchar.henum UBlockCode::UBLOCK_EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS(missing)Stable
-ICU 64
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&) const&Draft→Stable
ICU 60
uchar.henum UBlockCode::UBLOCK_ELYMAIC(missing)Stable
-ICU 64
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&)&&Draft→Stable
ICU 62
uchar.henum UBlockCode::UBLOCK_NANDINAGARI(missing)Stable
-ICU 64
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&) const&Draft→Stable
ICU 61
uchar.henum UBlockCode::UBLOCK_NYIAKENG_PUACHUE_HMONG(missing)Stable
-ICU 64
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&)&&Draft→Stable
ICU 62
uchar.henum UBlockCode::UBLOCK_OTTOMAN_SIYAQ_NUMBERS(missing)Stable
-ICU 64
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&) const&Draft→Stable
ICU 62
uchar.henum UBlockCode::UBLOCK_SMALL_KANA_EXTENSION(missing)Stable
-ICU 64
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&)&&Draft→Stable
ICU 62
uchar.henum UBlockCode::UBLOCK_SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A(missing)Stable
-ICU 64
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode) const&Draft→Stable
ICU 62
uchar.henum UBlockCode::UBLOCK_TAMIL_SUPPLEMENT(missing)Stable
-ICU 64
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode)&&Draft→Stable
ICU 62
uchar.henum UBlockCode::UBLOCK_WANCHO(missing)Stable
-ICU 64
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&) const&Draft→Stable
ICU 62
ucurr.henum UCurrNameStyle::UCURR_NARROW_SYMBOL_NAMEDraft→Stable
ICU 61
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&)&&Draft→Stable
ICU 62
udatpg.henum UDateTimePGDisplayWidth::UDATPG_ABBREVIATEDDraft→Stable
ICU 61
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay) const&Draft→Stable
ICU 60
udatpg.henum UDateTimePGDisplayWidth::UDATPG_NARROWDraft→Stable
ICU 61
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay)&&Draft→Stable
ICU 62
udatpg.henum UDateTimePGDisplayWidth::UDATPG_WIDEDraft→Stable
ICU 61
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&) const&Draft→Stable
ICU 60
udatpg.hint32_t udatpg_getFieldDisplayName(const UDateTimePatternGenerator*, UDateTimePatternField, UDateTimePGDisplayWidth, UChar*, int32_t, UErrorCode*)Draft→Stable
ICU 61
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&)&&Draft→Stable
ICU 62
unumberformatter.hUBool unumf_resultNextFieldPosition(const UFormattedNumber*, UFieldPosition*, UErrorCode*)Draft→Stable
ICU 62
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&) const&Draft→Stable
ICU 60
unumberformatter.hUFormattedNumber* unumf_openResult(UErrorCode*)Draft→Stable
ICU 62
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&)&&Draft→Stable
ICU 62
unumberformatter.hUNumberFormatter* unumf_openForSkeletonAndLocale(const UChar*, int32_t, const char*, UErrorCode*)Draft→Stable
ICU 62
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth) const&Draft→Stable
ICU 60
unumberformatter.hint32_t unumf_resultToString(const UFormattedNumber*, UChar*, int32_t, UErrorCode*)Draft→Stable
ICU 62
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth)&&Draft→Stable
ICU 62
unumberformatter.hvoid unumf_close(UNumberFormatter*)Draft→Stable
ICU 62
numberformatter.hFormat* icu::number::LocalizedNumberFormatter::toFormat(UErrorCode&) constDraft→Stable
ICU 62
unumberformatter.hvoid unumf_closeResult(UFormattedNumber*)Draft→Stable
ICU 62
numberformatter.hFormattedNumber icu::number::LocalizedNumberFormatter::formatDecimal(StringPiece, UErrorCode&) constDraft→Stable
ICU 60
unumberformatter.hvoid unumf_formatDecimal(const UNumberFormatter*, const char*, int32_t, UFormattedNumber*, UErrorCode*)Draft→Stable
ICU 62
numberformatter.hFormattedNumber icu::number::LocalizedNumberFormatter::formatDouble(double, UErrorCode&) constDraft→Stable
ICU 60
unumberformatter.hvoid unumf_formatDouble(const UNumberFormatter*, double, UFormattedNumber*, UErrorCode*)Draft→Stable
ICU 62
numberformatter.hFormattedNumber icu::number::LocalizedNumberFormatter::formatInt(int64_t, UErrorCode&) constDraft→Stable
ICU 60
unumberformatter.hvoid unumf_formatInt(const UNumberFormatter*, int64_t, UFormattedNumber*, UErrorCode*)Draft→Stable
ICU 62
numberformatter.hFormattedNumber& icu::number::FormattedNumber::operator=(FormattedNumber&&)Draft→Stable
ICU 62
unumberformatter.hvoid unumf_resultGetAllFieldPositions(const UFormattedNumber*, UFieldPositionIterator*, UErrorCode*)Draft→Stable
ICU 62
numberformatter.hIntegerWidth icu::number::IntegerWidth::truncateAt(int32_t)Draft→Stable
ICU 60
uscript.henum UScriptCode::USCRIPT_ELYMAIC(missing)Stable
-ICU 64
(Born Stable)numberformatter.hLocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&) const&Draft→Stable
ICU 60
uscript.henum UScriptCode::USCRIPT_NANDINAGARI(missing)Stable
-ICU 64
(Born Stable)numberformatter.hLocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&)&&Draft→Stable
ICU 62
uscript.henum UScriptCode::USCRIPT_NYIAKENG_PUACHUE_HMONG(missing)Stable
-ICU 64
(Born Stable)numberformatter.hLocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(LocalizedNumberFormatter&&)Draft→Stable
ICU 62
uscript.henum UScriptCode::USCRIPT_WANCHO(missing)Stable
-ICU 64
(Born Stable)numberformatter.hLocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(const LocalizedNumberFormatter&)Draft→Stable
ICU 62
utf8.h#define U8_TRUNCATE_IF_INCOMPLETEDraft→Stable
ICU 61
numberformatter.hPrecision icu::number::CurrencyPrecision::withCurrency(const CurrencyUnit&) constDraft→Stable
ICU 60
utypes.henum UErrorCode::U_NUMBER_ARG_OUTOFBOUNDS_ERROR(missing)Stable
-ICU 61
numberformatter.hPrecision icu::number::FractionPrecision::withMaxDigits(int32_t) constDraft→Stable
ICU 60
utypes.henum UErrorCode::U_NUMBER_SKELETON_SYNTAX_ERROR(missing)Stable
-ICU 62
numberformatter.hPrecision icu::number::FractionPrecision::withMinDigits(int32_t) constDraft→Stable
ICU 60
-

-(jump back to top) -
- -

Added in ICU 64

- - - - + + + + + + + + + + + + + + + + + + + + + + + - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + +
FileAPIICU 63ICU 64
numberformatter.hPrecision icu::number::IncrementPrecision::withMinFraction(int32_t) constDraft→Stable
ICU 60
numberformatter.hScale& icu::number::Scale::operator=(Scale&&)Draft→Stable
ICU 62
numberformatter.hScale& icu::number::Scale::operator=(const Scale&)Draft→Stable
ICU 62
numberformatter.hScientificNotation icu::number::ScientificNotation::withExponentSignDisplay(UNumberSignDisplay) constDraft→Stable
ICU 60
numberformatter.hScientificNotation icu::number::ScientificNotation::withMinExponentDigits(int32_t) constDraft→Stable
ICU 60
numberformatter.hUBool icu::number::NumberFormatterSettings< Derived >::copyErrorTo(UErrorCode&) constDraft→Stable
ICU 60
numberformatter.hUnicodeString icu::number::FormattedNumber::toString(UErrorCode&) constDraft→Stable
ICU 62
numberformatter.hUnicodeString icu::number::NumberFormatterSettings< Derived >::toSkeleton(UErrorCode&) constDraft→Stable
ICU 62
currunit.hicu::CurrencyUnit::CurrencyUnit(StringPiece, UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hUnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(UnlocalizedNumberFormatter&&)Draft→Stable
ICU 62
decimfmt.hconst number::LocalizedNumberFormatter* icu::DecimalFormat::toNumberFormatter(UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hUnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(const UnlocalizedNumberFormatter&)Draft→Stable
ICU 62
dtitvfmt.hAppendable& icu::FormattedDateInterval::appendTo(Appendable&, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hicu::number::FormattedNumber::FormattedNumber(FormattedNumber&&)Draft→Stable
ICU 62
dtitvfmt.hFormattedDateInterval icu::DateIntervalFormat::formatToValue(Calendar&, Calendar&, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hicu::number::FormattedNumber::~FormattedNumber()Draft→Stable
ICU 60
dtitvfmt.hFormattedDateInterval icu::DateIntervalFormat::formatToValue(const DateInterval&, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hicu::number::LocalizedNumberFormatter::LocalizedNumberFormatter()=defaultDraft→Stable
ICU 62
dtitvfmt.hFormattedDateInterval& icu::FormattedDateInterval::operator=(FormattedDateInterval&&)(missing)Draft
-ICU 64
numberformatter.hicu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(LocalizedNumberFormatter&&)Draft→Stable
ICU 62
dtitvfmt.hFormattedDateInterval& icu::FormattedDateInterval::operator=(const FormattedDateInterval&)=delete(missing) -
- -
-(untagged)
numberformatter.hicu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(const LocalizedNumberFormatter&)Draft→Stable
ICU 60
dtitvfmt.hUBool icu::FormattedDateInterval::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hicu::number::LocalizedNumberFormatter::~LocalizedNumberFormatter()Draft→Stable
ICU 60
dtitvfmt.hUnicodeString icu::FormattedDateInterval::toString(UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hicu::number::Scale::Scale(Scale&&)Draft→Stable
ICU 62
dtitvfmt.hUnicodeString icu::FormattedDateInterval::toTempString(UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hicu::number::Scale::Scale(const Scale&)Draft→Stable
ICU 62
dtitvfmt.hicu::FormattedDateInterval::FormattedDateInterval()(missing)Draft
-ICU 64
numberformatter.hicu::number::Scale::~Scale()Draft→Stable
ICU 62
dtitvfmt.hicu::FormattedDateInterval::FormattedDateInterval(FormattedDateInterval&&)(missing)Draft
-ICU 64
numberformatter.hicu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter()=defaultDraft→Stable
ICU 62
dtitvfmt.hicu::FormattedDateInterval::FormattedDateInterval(const FormattedDateInterval&)=delete(missing) -
- -
-(untagged)
numberformatter.hicu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(UnlocalizedNumberFormatter&&)Draft→Stable
ICU 62
dtitvfmt.hicu::FormattedDateInterval::~FormattedDateInterval()(missing)Draft
-ICU 64
numberformatter.hicu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(const UnlocalizedNumberFormatter&)Draft→Stable
ICU 60
formattedvalue.hAppendable& icu::FormattedValue::appendTo(Appendable&, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic CompactNotation icu::number::Notation::compactLong()Draft→Stable
ICU 60
formattedvalue.hUBool icu::ConstrainedFieldPosition::matchesField(int32_t, int32_t) const(missing)Draft
-ICU 64
numberformatter.hstatic CompactNotation icu::number::Notation::compactShort()Draft→Stable
ICU 60
formattedvalue.hUBool icu::FormattedValue::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic CurrencyPrecision icu::number::Precision::currency(UCurrencyUsage)Draft→Stable
ICU 60
formattedvalue.hUnicodeString icu::FormattedValue::toString(UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic FractionPrecision icu::number::Precision::fixedFraction(int32_t)Draft→Stable
ICU 60
formattedvalue.hUnicodeString icu::FormattedValue::toTempString(UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic FractionPrecision icu::number::Precision::integer()Draft→Stable
ICU 60
formattedvalue.hicu::ConstrainedFieldPosition::ConstrainedFieldPosition()(missing)Draft
-ICU 64
numberformatter.hstatic FractionPrecision icu::number::Precision::maxFraction(int32_t)Draft→Stable
ICU 60
formattedvalue.hicu::ConstrainedFieldPosition::~ConstrainedFieldPosition()(missing)Draft
-ICU 64
numberformatter.hstatic FractionPrecision icu::number::Precision::minFraction(int32_t)Draft→Stable
ICU 60
formattedvalue.hicu::FormattedValue::~FormattedValue()(missing)Draft
-ICU 64
numberformatter.hstatic FractionPrecision icu::number::Precision::minMaxFraction(int32_t, int32_t)Draft→Stable
ICU 60
formattedvalue.hint32_t icu::ConstrainedFieldPosition::getCategory() const(missing)Draft
-ICU 64
numberformatter.hstatic IncrementPrecision icu::number::Precision::increment(double)Draft→Stable
ICU 60
formattedvalue.hint32_t icu::ConstrainedFieldPosition::getField() const(missing)Draft
-ICU 64
numberformatter.hstatic IntegerWidth icu::number::IntegerWidth::zeroFillTo(int32_t)Draft→Stable
ICU 60
formattedvalue.hint32_t icu::ConstrainedFieldPosition::getLimit() const(missing)Draft
-ICU 64
numberformatter.hstatic LocalizedNumberFormatter icu::number::NumberFormatter::withLocale(const Locale&)Draft→Stable
ICU 60
formattedvalue.hint32_t icu::ConstrainedFieldPosition::getStart() const(missing)Draft
-ICU 64
numberformatter.hstatic Precision icu::number::Precision::unlimited()Draft→Stable
ICU 60
formattedvalue.hint64_t icu::ConstrainedFieldPosition::getInt64IterationContext() const(missing)Draft
-ICU 64
numberformatter.hstatic Scale icu::number::Scale::byDecimal(StringPiece)Draft→Stable
ICU 62
formattedvalue.hvoid icu::ConstrainedFieldPosition::constrainCategory(int32_t)(missing)Draft
-ICU 64
numberformatter.hstatic Scale icu::number::Scale::byDouble(double)Draft→Stable
ICU 62
formattedvalue.hvoid icu::ConstrainedFieldPosition::constrainField(int32_t, int32_t)(missing)Draft
-ICU 64
numberformatter.hstatic Scale icu::number::Scale::byDoubleAndPowerOfTen(double, int32_t)Draft→Stable
ICU 62
formattedvalue.hvoid icu::ConstrainedFieldPosition::reset()(missing)Draft
-ICU 64
numberformatter.hstatic Scale icu::number::Scale::none()Draft→Stable
ICU 62
formattedvalue.hvoid icu::ConstrainedFieldPosition::setInt64IterationContext(int64_t)(missing)Draft
-ICU 64
numberformatter.hstatic Scale icu::number::Scale::powerOfTen(int32_t)Draft→Stable
ICU 62
formattedvalue.hvoid icu::ConstrainedFieldPosition::setState(int32_t, int32_t, int32_t, int32_t)(missing)Draft
-ICU 64
numberformatter.hstatic ScientificNotation icu::number::Notation::engineering()Draft→Stable
ICU 60
listformatter.hAppendable& icu::FormattedList::appendTo(Appendable&, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic ScientificNotation icu::number::Notation::scientific()Draft→Stable
ICU 60
listformatter.hFormattedList icu::ListFormatter::formatStringsToValue(const UnicodeString items[], int32_t, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::fixedSignificantDigits(int32_t)Draft→Stable
ICU 62
listformatter.hFormattedList& icu::FormattedList::operator=(FormattedList&&)(missing)Draft
-ICU 64
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::maxSignificantDigits(int32_t)Draft→Stable
ICU 62
listformatter.hFormattedList& icu::FormattedList::operator=(const FormattedList&)=delete(missing) -
- -
-(untagged)
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::minMaxSignificantDigits(int32_t, int32_t)Draft→Stable
ICU 62
listformatter.hUBool icu::FormattedList::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::minSignificantDigits(int32_t)Draft→Stable
ICU 62
listformatter.hUnicodeString icu::FormattedList::toString(UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic SimpleNotation icu::number::Notation::simple()Draft→Stable
ICU 60
listformatter.hUnicodeString icu::FormattedList::toTempString(UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&, UErrorCode&)Draft→Stable
ICU 62
listformatter.hicu::FormattedList::FormattedList()(missing)Draft
-ICU 64
numberformatter.hstatic UnlocalizedNumberFormatter icu::number::NumberFormatter::with()Draft→Stable
ICU 60
listformatter.hicu::FormattedList::FormattedList(FormattedList&&)(missing)Draft
-ICU 64
numberrangeformatter.hAppendable& icu::number::FormattedNumberRange::appendTo(Appendable&, UErrorCode&) constDraft→Stable
ICU 63
listformatter.hicu::FormattedList::FormattedList(const FormattedList&)=delete(missing) -
- -
-(untagged)
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse) const&Draft→Stable
ICU 63
listformatter.hicu::FormattedList::~FormattedList()(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse)&&Draft→Stable
ICU 63
localebuilder.hLocale icu::LocaleBuilder::build(UErrorCode&)(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback) const&Draft→Stable
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::addUnicodeLocaleAttribute(StringPiece)(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback)&&Draft→Stable
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::clear()(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&) const&Draft→Stable
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::clearExtensions()(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&)&&Draft→Stable
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::removeUnicodeLocaleAttribute(StringPiece)(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&) const&Draft→Stable
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setExtension(char, StringPiece)(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&)&&Draft→Stable
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setLanguage(StringPiece)(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&) const&Draft→Stable
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setLanguageTag(StringPiece)(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&)&&Draft→Stable
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setLocale(const Locale&)(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&) const&Draft→Stable
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setRegion(StringPiece)(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&)&&Draft→Stable
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setScript(StringPiece)(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&) const&Draft→Stable
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setUnicodeLocaleKeyword(StringPiece, StringPiece)(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&)&&Draft→Stable
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setVariant(StringPiece)(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&) const&Draft→Stable
ICU 63
localebuilder.hicu::LocaleBuilder::LocaleBuilder()(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&)&&Draft→Stable
ICU 63
localebuilder.hicu::LocaleBuilder::~LocaleBuilder()(missing)Draft
-ICU 64
numberrangeformatter.hFormattedNumberRange icu::number::LocalizedNumberRangeFormatter::formatFormattableRange(const Formattable&, const Formattable&, UErrorCode&) constDraft→Stable
ICU 63
localpointer.hLocalArray<T>& icu::LocalArray< T >::operator=(std::unique_ptr< T[]>&&)(missing)Draft
-ICU 64
numberrangeformatter.hFormattedNumberRange& icu::number::FormattedNumberRange::operator=(FormattedNumberRange&&)Draft→Stable
ICU 63
localpointer.hLocalPointer<T>& icu::LocalPointer< T >::operator=(std::unique_ptr< T >&&)(missing)Draft
-ICU 64
numberrangeformatter.hLocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&) const&Draft→Stable
ICU 63
localpointer.hicu::LocalArray< T >::LocalArray(std::unique_ptr< T[]>&&)(missing)Draft
-ICU 64
numberrangeformatter.hLocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&)&&Draft→Stable
ICU 63
localpointer.hicu::LocalArray< T >::operator std::unique_ptr< T[]>() &&(missing)Draft
-ICU 64
numberrangeformatter.hLocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(LocalizedNumberRangeFormatter&&)Draft→Stable
ICU 63
localpointer.hicu::LocalPointer< T >::LocalPointer(std::unique_ptr< T >&&)(missing)Draft
-ICU 64
numberrangeformatter.hLocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(const LocalizedNumberRangeFormatter&)Draft→Stable
ICU 63
localpointer.hicu::LocalPointer< T >::operator std::unique_ptr< T >() &&(missing)Draft
-ICU 64
numberrangeformatter.hUBool icu::number::NumberRangeFormatterSettings< Derived >::copyErrorTo(UErrorCode&) constDraft→Stable
ICU 63
localpointer.hstatic void* icu::LocalPointerBase< T >::operator new(size_t)=delete(missing) -
- -
-(untagged)
numberrangeformatter.hUNumberRangeIdentityResult icu::number::FormattedNumberRange::getIdentityResult(UErrorCode&) constDraft→Stable
ICU 63
localpointer.hstatic void* icu::LocalPointerBase< T >::operator new[](size_t)=delete(missing) -
- -
-(untagged)
numberrangeformatter.hUnicodeString icu::number::FormattedNumberRange::toString(UErrorCode&) constDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getAcre()(missing)Draft
-ICU 64
numberrangeformatter.hUnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(UnlocalizedNumberRangeFormatter&&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getAcreFoot()(missing)Draft
-ICU 64
numberrangeformatter.hUnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(const UnlocalizedNumberRangeFormatter&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getAmpere()(missing)Draft
-ICU 64
numberrangeformatter.henum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_ALLDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getArcMinute()(missing)Draft
-ICU 64
numberrangeformatter.henum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_AUTODraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getArcSecond()(missing)Draft
-ICU 64
numberrangeformatter.henum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_NONEDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getAstronomicalUnit()(missing)Draft
-ICU 64
numberrangeformatter.henum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_UNITDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getAtmosphere()(missing)Draft
-ICU 64
numberrangeformatter.henum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUEDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getBarrel()(missing)Draft
-ICU 64
numberrangeformatter.henum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELYDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getBit()(missing)Draft
-ICU 64
numberrangeformatter.henum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_RANGEDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getBritishThermalUnit()(missing)Draft
-ICU 64
numberrangeformatter.henum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_SINGLE_VALUEDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getBushel()(missing)Draft
-ICU 64
numberrangeformatter.henum UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDINGDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getByte()(missing)Draft
-ICU 64
numberrangeformatter.henum UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDINGDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCalorie()(missing)Draft
-ICU 64
numberrangeformatter.henum UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_NOT_EQUALDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCarat()(missing)Draft
-ICU 64
numberrangeformatter.hicu::number::FormattedNumberRange::FormattedNumberRange(FormattedNumberRange&&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCelsius()(missing)Draft
-ICU 64
numberrangeformatter.hicu::number::FormattedNumberRange::~FormattedNumberRange()Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCentiliter()(missing)Draft
-ICU 64
numberrangeformatter.hicu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter()=defaultDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCentimeter()(missing)Draft
-ICU 64
numberrangeformatter.hicu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(LocalizedNumberRangeFormatter&&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCentury()(missing)Draft
-ICU 64
numberrangeformatter.hicu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(const LocalizedNumberRangeFormatter&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCubicCentimeter()(missing)Draft
-ICU 64
numberrangeformatter.hicu::number::LocalizedNumberRangeFormatter::~LocalizedNumberRangeFormatter()Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCubicFoot()(missing)Draft
-ICU 64
numberrangeformatter.hicu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter()=defaultDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCubicInch()(missing)Draft
-ICU 64
numberrangeformatter.hicu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(UnlocalizedNumberRangeFormatter&&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCubicKilometer()(missing)Draft
-ICU 64
numberrangeformatter.hicu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(const UnlocalizedNumberRangeFormatter&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCubicMeter()(missing)Draft
-ICU 64
numberrangeformatter.hstatic LocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::withLocale(const Locale&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCubicMile()(missing)Draft
-ICU 64
numberrangeformatter.hstatic UnlocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::with()Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCubicYard()(missing)Draft
-ICU 64
reldatefmt.henum UDateAbsoluteUnit::UDAT_ABSOLUTE_QUARTERDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCup()(missing)Draft
-ICU 64
uchar.hconst UCPMap* u_getIntPropertyMap(UProperty, UErrorCode*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCupMetric()(missing)Draft
-ICU 64
uchar.hconst USet* u_getBinaryPropertySet(UProperty, UErrorCode*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getDalton()(missing)Draft
-ICU 64
ucpmap.hUChar32 ucpmap_getRange(const UCPMap*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getDay()(missing)Draft
-ICU 64
ucpmap.henum UCPMapRangeOption::UCPMAP_RANGE_FIXED_ALL_SURROGATESDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getDayPerson()(missing)Draft
-ICU 64
ucpmap.henum UCPMapRangeOption::UCPMAP_RANGE_FIXED_LEAD_SURROGATESDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getDeciliter()(missing)Draft
-ICU 64
ucpmap.henum UCPMapRangeOption::UCPMAP_RANGE_NORMALDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getDecimeter()(missing)Draft
-ICU 64
ucpmap.huint32_t ucpmap_get(const UCPMap*, UChar32)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getDegree()(missing)Draft
-ICU 64
ucptrie.h#define UCPTRIE_16Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getDunam()(missing)Draft
-ICU 64
ucptrie.h#define UCPTRIE_32Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getEarthMass()(missing)Draft
-ICU 64
ucptrie.h#define UCPTRIE_8Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getElectronvolt()(missing)Draft
-ICU 64
ucptrie.h#define UCPTRIE_ASCII_GETDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getFahrenheit()(missing)Draft
-ICU 64
ucptrie.h#define UCPTRIE_FAST_BMP_GETDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getFathom()(missing)Draft
-ICU 64
ucptrie.h#define UCPTRIE_FAST_GETDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getFluidOunce()(missing)Draft
-ICU 64
ucptrie.h#define UCPTRIE_FAST_SUPP_GETDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getFluidOunceImperial()(missing)Draft
-ICU 64
ucptrie.h#define UCPTRIE_FAST_U16_NEXTDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getFoodcalorie()(missing)Draft
-ICU 64
ucptrie.h#define UCPTRIE_FAST_U16_PREVDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getFoot()(missing)Draft
-ICU 64
ucptrie.h#define UCPTRIE_FAST_U8_NEXTDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getFurlong()(missing)Draft
-ICU 64
ucptrie.h#define UCPTRIE_FAST_U8_PREVDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGForce()(missing)Draft
-ICU 64
ucptrie.h#define UCPTRIE_SMALL_GETDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGallon()(missing)Draft
-ICU 64
ucptrie.hUCPTrie* ucptrie_openFromBinary(UCPTrieType, UCPTrieValueWidth, const void*, int32_t, int32_t*, UErrorCode*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGallonImperial()(missing)Draft
-ICU 64
ucptrie.hUCPTrieType ucptrie_getType(const UCPTrie*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGenericTemperature()(missing)Draft
-ICU 64
ucptrie.hUCPTrieValueWidth ucptrie_getValueWidth(const UCPTrie*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGigabit()(missing)Draft
-ICU 64
ucptrie.hUChar32 ucptrie_getRange(const UCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGigabyte()(missing)Draft
-ICU 64
ucptrie.henum UCPTrieType::UCPTRIE_TYPE_ANYDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGigahertz()(missing)Draft
-ICU 64
ucptrie.henum UCPTrieType::UCPTRIE_TYPE_FASTDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGigawatt()(missing)Draft
-ICU 64
ucptrie.henum UCPTrieType::UCPTRIE_TYPE_SMALLDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGram()(missing)Draft
-ICU 64
ucptrie.henum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_16Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getHectare()(missing)Draft
-ICU 64
ucptrie.henum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_32Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getHectoliter()(missing)Draft
-ICU 64
ucptrie.henum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_8Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getHectopascal()(missing)Draft
-ICU 64
ucptrie.henum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_ANYDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getHertz()(missing)Draft
-ICU 64
ucptrie.hint32_t ucptrie_toBinary(const UCPTrie*, void*, int32_t, UErrorCode*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getHorsepower()(missing)Draft
-ICU 64
ucptrie.huint32_t ucptrie_get(const UCPTrie*, UChar32)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getHour()(missing)Draft
-ICU 64
ucptrie.hvoid ucptrie_close(UCPTrie*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getInch()(missing)Draft
-ICU 64
umutablecptrie.hUCPTrie* umutablecptrie_buildImmutable(UMutableCPTrie*, UCPTrieType, UCPTrieValueWidth, UErrorCode*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getInchHg()(missing)Draft
-ICU 64
umutablecptrie.hUMutableCPTrie* umutablecptrie_clone(const UMutableCPTrie*, UErrorCode*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getJoule()(missing)Draft
-ICU 64
umutablecptrie.hUMutableCPTrie* umutablecptrie_fromUCPMap(const UCPMap*, UErrorCode*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getKarat()(missing)Draft
-ICU 64
umutablecptrie.hUMutableCPTrie* umutablecptrie_fromUCPTrie(const UCPTrie*, UErrorCode*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getKelvin()(missing)Draft
-ICU 64
umutablecptrie.hUMutableCPTrie* umutablecptrie_open(uint32_t, uint32_t, UErrorCode*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilobit()(missing)Draft
-ICU 64
umutablecptrie.hUChar32 umutablecptrie_getRange(const UMutableCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilobyte()(missing)Draft
-ICU 64
umutablecptrie.huint32_t umutablecptrie_get(const UMutableCPTrie*, UChar32)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilocalorie()(missing)Draft
-ICU 64
umutablecptrie.hvoid umutablecptrie_close(UMutableCPTrie*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilogram()(missing)Draft
-ICU 64
umutablecptrie.hvoid umutablecptrie_set(UMutableCPTrie*, UChar32, uint32_t, UErrorCode*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilohertz()(missing)Draft
-ICU 64
umutablecptrie.hvoid umutablecptrie_setRange(UMutableCPTrie*, UChar32, UChar32, uint32_t, UErrorCode*)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilojoule()(missing)Draft
-ICU 64
unumberformatter.henum UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_ALWAYSDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilometer()(missing)Draft
-ICU 64
unumberformatter.henum UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_AUTODraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilometerPerHour()(missing)Draft
-ICU 64
unumberformatter.henum UNumberGroupingStrategy::UNUM_GROUPING_AUTODraft→Stable
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilopascal()(missing)Draft
-ICU 64
unumberformatter.henum UNumberGroupingStrategy::UNUM_GROUPING_MIN2Draft→Stable
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilowatt()(missing)Draft
-ICU 64
unumberformatter.henum UNumberGroupingStrategy::UNUM_GROUPING_OFFDraft→Stable
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilowattHour()(missing)Draft
-ICU 64
unumberformatter.henum UNumberGroupingStrategy::UNUM_GROUPING_ON_ALIGNEDDraft→Stable
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getKnot()(missing)Draft
-ICU 64
unumberformatter.henum UNumberGroupingStrategy::UNUM_GROUPING_THOUSANDSDraft→Stable
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getLightYear()(missing)Draft
-ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_ALWAYSDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getLiter()(missing)Draft
-ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_EXCEPT_ZERODraft→Stable
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getLiterPer100Kilometers()(missing)Draft
-ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_ACCOUNTINGDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getLiterPerKilometer()(missing)Draft
-ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_ALWAYSDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getLux()(missing)Draft
-ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_AUTODraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getMegabit()(missing)Draft
-ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_EXCEPT_ZERODraft→Stable
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getMegabyte()(missing)Draft
-ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_NEVERDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getMegahertz()(missing)Draft
-ICU 64
unumberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAMEDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getMegaliter()(missing)Draft
-ICU 64
unumberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDENDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getMegapascal()(missing)Draft
-ICU 64
unumberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODEDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getMegawatt()(missing)Draft
-ICU 64
unumberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROWDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getMeter()(missing)Draft
-ICU 64
unumberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORTDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getMeterPerSecond()(missing)Draft
-ICU 64
uspoof.henum USpoofChecks::USPOOF_HIDDEN_OVERLAYDraft→Stable
ICU 62
utf_old.h#define U_HIDE_OBSOLETE_UTF_OLD_HDeprecated
ICU 2.4
Internal
+
+

+(jump back to top) +
+ +

Promoted to stable in ICU 65

+ + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
FileAPIICU 64ICU 65
measunit.hstatic MeasureUnit icu::MeasureUnit::getMeterPerSecondSquared()(missing)Draft
-ICU 64
basictz.hvoid* icu::BasicTimeZone::clone() const(missing)Stable
+ICU 3.8
measunit.hstatic MeasureUnit icu::MeasureUnit::getMetricTon()(missing)Draft
-ICU 64
datefmt.hvoid* icu::DateFormat::clone() const(missing)Stable
+ICU 2.0
measunit.hstatic MeasureUnit icu::MeasureUnit::getMicrogram()(missing)Draft
-ICU 64
decimfmt.hint32_t icu::DecimalFormat::getMultiplierScale() constDraft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getMicrometer()(missing)Draft
-ICU 64
decimfmt.hvoid icu::DecimalFormat::setMultiplierScale(int32_t)Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getMicrosecond()(missing)Draft
-ICU 64
edits.hUBool icu::Edits::copyErrorTo(UErrorCode&) const(missing)Stable
+ICU 59
measunit.hstatic MeasureUnit icu::MeasureUnit::getMile()(missing)Draft
-ICU 64
locid.hLocale& icu::Locale::operator=(Locale&&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMilePerGallon()(missing)Draft
-ICU 64
locid.hStringClass icu::Locale::getKeywordValue(StringPiece, UErrorCode&) constDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMilePerGallonImperial()(missing)Draft
-ICU 64
locid.hStringClass icu::Locale::getUnicodeKeywordValue(StringPiece, UErrorCode&) constDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMilePerHour()(missing)Draft
-ICU 64
locid.hStringClass icu::Locale::toLanguageTag(UErrorCode&) constDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMileScandinavian()(missing)Draft
-ICU 64
locid.hStringEnumeration* icu::Locale::createUnicodeKeywords(UErrorCode&) constDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMilliampere()(missing)Draft
-ICU 64
locid.hicu::Locale::Locale(Locale&&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMillibar()(missing)Draft
-ICU 64
locid.hstatic Locale icu::Locale::forLanguageTag(StringPiece, UErrorCode&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMilligram()(missing)Draft
-ICU 64
locid.hvoid icu::Locale::addLikelySubtags(UErrorCode&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMilligramPerDeciliter()(missing)Draft
-ICU 64
locid.hvoid icu::Locale::getKeywordValue(StringPiece, ByteSink&, UErrorCode&) constDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMilliliter()(missing)Draft
-ICU 64
locid.hvoid icu::Locale::getKeywords(OutputIterator, UErrorCode&) constDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMillimeter()(missing)Draft
-ICU 64
locid.hvoid icu::Locale::getUnicodeKeywordValue(StringPiece, ByteSink&, UErrorCode&) constDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMillimeterOfMercury()(missing)Draft
-ICU 64
locid.hvoid icu::Locale::getUnicodeKeywords(OutputIterator, UErrorCode&) constDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMillimolePerLiter()(missing)Draft
-ICU 64
locid.hvoid icu::Locale::minimizeSubtags(UErrorCode&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMillisecond()(missing)Draft
-ICU 64
locid.hvoid icu::Locale::setKeywordValue(StringPiece, StringPiece, UErrorCode&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMilliwatt()(missing)Draft
-ICU 64
locid.hvoid icu::Locale::setUnicodeKeywordValue(StringPiece, StringPiece, UErrorCode&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMinute()(missing)Draft
-ICU 64
locid.hvoid icu::Locale::toLanguageTag(ByteSink&, UErrorCode&) constDraft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMole()(missing)Draft
-ICU 64
measunit.hstatic MeasureUnit* icu::MeasureUnit::createAtmosphere(UErrorCode&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMonth()(missing)Draft
-ICU 64
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPercent(UErrorCode&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getMonthPerson()(missing)Draft
-ICU 64
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPermille(UErrorCode&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getNanometer()(missing)Draft
-ICU 64
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPetabyte(UErrorCode&)Draft→Stable
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getNanosecond()(missing)Draft
-ICU 64
numberformatter.hAppendable& icu::number::FormattedNumber::appendTo(Appendable&, UErrorCode&) constDraft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getNauticalMile()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*) const&Draft→Stable
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getNewton()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getNewtonMeter()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*) const&Draft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getOhm()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getOunce()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*) const&Draft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getOunceTroy()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getParsec()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay) const&Draft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getPartPerMillion()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getPercent()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy) const&Draft→Stable
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getPermille()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getPermyriad()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&) const&Draft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getPetabyte()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getPicometer()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&) const&Draft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getPint()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getPintMetric()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&) const&Draft→Stable
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getPoint()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getPound()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&) const&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getPoundFoot()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getPoundForce()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode) const&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getPoundPerSquareInch()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getQuart()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&) const&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getRadian()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getRevolutionAngle()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay) const&Draft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getSecond()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getSolarLuminosity()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&) const&Draft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getSolarMass()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getSolarRadius()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&) const&Draft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getSquareCentimeter()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getSquareFoot()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth) const&Draft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getSquareInch()(missing)Draft
-ICU 64
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getSquareKilometer()(missing)Draft
-ICU 64
numberformatter.hFormat* icu::number::LocalizedNumberFormatter::toFormat(UErrorCode&) constDraft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getSquareMeter()(missing)Draft
-ICU 64
numberformatter.hFormattedNumber icu::number::LocalizedNumberFormatter::formatDecimal(StringPiece, UErrorCode&) constDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getSquareMile()(missing)Draft
-ICU 64
numberformatter.hFormattedNumber icu::number::LocalizedNumberFormatter::formatDouble(double, UErrorCode&) constDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getSquareYard()(missing)Draft
-ICU 64
numberformatter.hFormattedNumber icu::number::LocalizedNumberFormatter::formatInt(int64_t, UErrorCode&) constDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getStone()(missing)Draft
-ICU 64
numberformatter.hFormattedNumber& icu::number::FormattedNumber::operator=(FormattedNumber&&)Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getTablespoon()(missing)Draft
-ICU 64
numberformatter.hIntegerWidth icu::number::IntegerWidth::truncateAt(int32_t)Draft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getTeaspoon()(missing)Draft
-ICU 64
numberformatter.hLocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&) const&Draft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getTerabit()(missing)Draft
-ICU 64
numberformatter.hLocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&)&&Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getTerabyte()(missing)Draft
-ICU 64
numberformatter.hLocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(LocalizedNumberFormatter&&)Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getTon()(missing)Draft
-ICU 64
numberformatter.hLocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(const LocalizedNumberFormatter&)Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getVolt()(missing)Draft
-ICU 64
numberformatter.hPrecision icu::number::CurrencyPrecision::withCurrency(const CurrencyUnit&) constDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getWatt()(missing)Draft
-ICU 64
numberformatter.hPrecision icu::number::FractionPrecision::withMaxDigits(int32_t) constDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getWeek()(missing)Draft
-ICU 64
numberformatter.hPrecision icu::number::FractionPrecision::withMinDigits(int32_t) constDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getWeekPerson()(missing)Draft
-ICU 64
numberformatter.hPrecision icu::number::IncrementPrecision::withMinFraction(int32_t) constDraft→Stable
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getYard()(missing)Draft
-ICU 64
numberformatter.hScale& icu::number::Scale::operator=(Scale&&)Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getYear()(missing)Draft
-ICU 64
numberformatter.hScale& icu::number::Scale::operator=(const Scale&)Draft→Stable
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getYearPerson()(missing)Draft
-ICU 64
numberformatter.hScientificNotation icu::number::ScientificNotation::withExponentSignDisplay(UNumberSignDisplay) constDraft→Stable
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createBarrel(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hScientificNotation icu::number::ScientificNotation::withMinExponentDigits(int32_t) constDraft→Stable
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createBritishThermalUnit(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hUBool icu::number::NumberFormatterSettings< Derived >::copyErrorTo(UErrorCode&) constDraft→Stable
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createDalton(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hUnicodeString icu::number::FormattedNumber::toString(UErrorCode&) constDraft→Stable
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createDayPerson(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hUnicodeString icu::number::NumberFormatterSettings< Derived >::toSkeleton(UErrorCode&) constDraft→Stable
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createDunam(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hUnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(UnlocalizedNumberFormatter&&)Draft→Stable
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createEarthMass(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hUnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(const UnlocalizedNumberFormatter&)Draft→Stable
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createElectronvolt(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hicu::number::FormattedNumber::FormattedNumber(FormattedNumber&&)Draft→Stable
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createFluidOunceImperial(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hicu::number::FormattedNumber::~FormattedNumber()Draft→Stable
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createKilopascal(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hicu::number::LocalizedNumberFormatter::LocalizedNumberFormatter()=defaultDraft→Stable
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createMegapascal(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hicu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(LocalizedNumberFormatter&&)Draft→Stable
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createMole(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hicu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(const LocalizedNumberFormatter&)Draft→Stable
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createMonthPerson(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hicu::number::LocalizedNumberFormatter::~LocalizedNumberFormatter()Draft→Stable
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createNewton(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hicu::number::Scale::Scale(Scale&&)Draft→Stable
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createNewtonMeter(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hicu::number::Scale::Scale(const Scale&)Draft→Stable
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPermyriad(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hicu::number::Scale::~Scale()Draft→Stable
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPoundFoot(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hicu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter()=defaultDraft→Stable
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPoundForce(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hicu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(UnlocalizedNumberFormatter&&)Draft→Stable
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createSolarLuminosity(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hicu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(const UnlocalizedNumberFormatter&)Draft→Stable
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createSolarMass(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hstatic CompactNotation icu::number::Notation::compactLong()Draft→Stable
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createSolarRadius(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hstatic CompactNotation icu::number::Notation::compactShort()Draft→Stable
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createWeekPerson(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hstatic CurrencyPrecision icu::number::Precision::currency(UCurrencyUsage)Draft→Stable
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createYearPerson(UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hstatic FractionPrecision icu::number::Precision::fixedFraction(int32_t)Draft→Stable
ICU 60
numberformatter.hLocalPointer<Derived> icu::number::NumberFormatterSettings< Derived >::clone() &&(missing)Draft
-ICU 64
numberformatter.hstatic FractionPrecision icu::number::Precision::integer()Draft→Stable
ICU 60
numberformatter.hLocalPointer<Derived> icu::number::NumberFormatterSettings< Derived >::clone() const &(missing)Draft
-ICU 64
numberformatter.hstatic FractionPrecision icu::number::Precision::maxFraction(int32_t)Draft→Stable
ICU 60
numberformatter.hUBool icu::number::FormattedNumber::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic FractionPrecision icu::number::Precision::minFraction(int32_t)Draft→Stable
ICU 60
numberformatter.hUnicodeString icu::number::FormattedNumber::toTempString(UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic FractionPrecision icu::number::Precision::minMaxFraction(int32_t, int32_t)Draft→Stable
ICU 60
numberformatter.hicu::number::FormattedNumber::FormattedNumber()(missing)Draft
-ICU 64
numberformatter.hstatic IncrementPrecision icu::number::Precision::increment(double)Draft→Stable
ICU 60
numberformatter.hstatic UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&, UParseError&, UErrorCode&)(missing)Draft
-ICU 64
numberformatter.hstatic IntegerWidth icu::number::IntegerWidth::zeroFillTo(int32_t)Draft→Stable
ICU 60
numberrangeformatter.hLocalPointer<Derived> icu::number::NumberRangeFormatterSettings< Derived >::clone() &&(missing)Draft
-ICU 64
numberformatter.hstatic LocalizedNumberFormatter icu::number::NumberFormatter::withLocale(const Locale&)Draft→Stable
ICU 60
numberrangeformatter.hLocalPointer<Derived> icu::number::NumberRangeFormatterSettings< Derived >::clone() const &(missing)Draft
-ICU 64
numberformatter.hstatic Precision icu::number::Precision::unlimited()Draft→Stable
ICU 60
numberrangeformatter.hUBool icu::number::FormattedNumberRange::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic Scale icu::number::Scale::byDecimal(StringPiece)Draft→Stable
ICU 62
numberrangeformatter.hUnicodeString icu::number::FormattedNumberRange::toTempString(UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic Scale icu::number::Scale::byDouble(double)Draft→Stable
ICU 62
numfmt.henum - icu::NumberFormat::EAlignmentFields::kCompactField(missing)Draft
-ICU 64
numberformatter.hstatic Scale icu::number::Scale::byDoubleAndPowerOfTen(double, int32_t)Draft→Stable
ICU 62
numfmt.henum - icu::NumberFormat::EAlignmentFields::kMeasureUnitField(missing)Draft
-ICU 64
numberformatter.hstatic Scale icu::number::Scale::none()Draft→Stable
ICU 62
plurrule.hUnicodeString icu::PluralRules::select(const number::FormattedNumber&, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic Scale icu::number::Scale::powerOfTen(int32_t)Draft→Stable
ICU 62
reldatefmt.hAppendable& icu::FormattedRelativeDateTime::appendTo(Appendable&, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic ScientificNotation icu::number::Notation::engineering()Draft→Stable
ICU 60
reldatefmt.hFormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatNumericToValue(double, URelativeDateTimeUnit, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic ScientificNotation icu::number::Notation::scientific()Draft→Stable
ICU 60
reldatefmt.hFormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(UDateDirection, UDateAbsoluteUnit, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::fixedSignificantDigits(int32_t)Draft→Stable
ICU 62
reldatefmt.hFormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, UDateDirection, UDateRelativeUnit, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::maxSignificantDigits(int32_t)Draft→Stable
ICU 62
reldatefmt.hFormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, URelativeDateTimeUnit, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::minMaxSignificantDigits(int32_t, int32_t)Draft→Stable
ICU 62
reldatefmt.hFormattedRelativeDateTime& icu::FormattedRelativeDateTime::operator=(FormattedRelativeDateTime&&)(missing)Draft
-ICU 64
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::minSignificantDigits(int32_t)Draft→Stable
ICU 62
reldatefmt.hFormattedRelativeDateTime& icu::FormattedRelativeDateTime::operator=(const FormattedRelativeDateTime&)=delete(missing) -
- -
-(untagged)
numberformatter.hstatic SimpleNotation icu::number::Notation::simple()Draft→Stable
ICU 60
reldatefmt.hUBool icu::FormattedRelativeDateTime::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&, UErrorCode&)Draft→Stable
ICU 62
reldatefmt.hUnicodeString icu::FormattedRelativeDateTime::toString(UErrorCode&) const(missing)Draft
-ICU 64
numberformatter.hstatic UnlocalizedNumberFormatter icu::number::NumberFormatter::with()Draft→Stable
ICU 60
reldatefmt.hUnicodeString icu::FormattedRelativeDateTime::toTempString(UErrorCode&) const(missing)Draft
-ICU 64
numberrangeformatter.hAppendable& icu::number::FormattedNumberRange::appendTo(Appendable&, UErrorCode&) constDraft→Stable
ICU 63
reldatefmt.hicu::FormattedRelativeDateTime::FormattedRelativeDateTime()(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse) const&Draft→Stable
ICU 63
reldatefmt.hicu::FormattedRelativeDateTime::FormattedRelativeDateTime(FormattedRelativeDateTime&&)(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse)&&Draft→Stable
ICU 63
reldatefmt.hicu::FormattedRelativeDateTime::FormattedRelativeDateTime(const FormattedRelativeDateTime&)=delete(missing) -
- -
-(untagged)
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback) const&Draft→Stable
ICU 63
reldatefmt.hicu::FormattedRelativeDateTime::~FormattedRelativeDateTime()(missing)Draft
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback)&&Draft→Stable
ICU 63
simpleformatter.hUnicodeString icu::SimpleFormatter::getTextWithNoArguments(int32_t*, int32_t) const(missing)Internal
-
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&) const&Draft→Stable
ICU 63
uchar.henum UBlockCode::UBLOCK_EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS(missing)Stable
-ICU 64
(Born Stable)numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&)&&Draft→Stable
ICU 63
uchar.henum UBlockCode::UBLOCK_ELYMAIC(missing)Stable
-ICU 64
(Born Stable)numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&) const&Draft→Stable
ICU 63
uchar.henum UBlockCode::UBLOCK_NANDINAGARI(missing)Stable
-ICU 64
(Born Stable)numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&)&&Draft→Stable
ICU 63
uchar.henum UBlockCode::UBLOCK_NYIAKENG_PUACHUE_HMONG(missing)Stable
-ICU 64
(Born Stable)numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&) const&Draft→Stable
ICU 63
uchar.henum UBlockCode::UBLOCK_OTTOMAN_SIYAQ_NUMBERS(missing)Stable
-ICU 64
(Born Stable)numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&)&&Draft→Stable
ICU 63
uchar.henum UBlockCode::UBLOCK_SMALL_KANA_EXTENSION(missing)Stable
-ICU 64
(Born Stable)numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&) const&Draft→Stable
ICU 63
uchar.henum UBlockCode::UBLOCK_SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A(missing)Stable
-ICU 64
(Born Stable)numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&)&&Draft→Stable
ICU 63
uchar.henum UBlockCode::UBLOCK_TAMIL_SUPPLEMENT(missing)Stable
-ICU 64
(Born Stable)numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&) const&Draft→Stable
ICU 63
uchar.henum UBlockCode::UBLOCK_WANCHO(missing)Stable
-ICU 64
(Born Stable)numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&)&&Draft→Stable
ICU 63
uconfig.h#define UCONFIG_USE_WINDOWS_LCID_MAPPING_API(missing)Internal
-ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&) const&Draft→Stable
ICU 63
udat.h#define JP_ERA_2019_JA(missing)Internal
-
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&)&&Draft→Stable
ICU 63
udat.h#define JP_ERA_2019_NARROW(missing)Internal
-
numberrangeformatter.hFormattedNumberRange icu::number::LocalizedNumberRangeFormatter::formatFormattableRange(const Formattable&, const Formattable&, UErrorCode&) constDraft→Stable
ICU 63
udat.h#define JP_ERA_2019_ROOT(missing)Internal
-
numberrangeformatter.hFormattedNumberRange& icu::number::FormattedNumberRange::operator=(FormattedNumberRange&&)Draft→Stable
ICU 63
udateintervalformat.hUFormattedDateInterval* udtitvfmt_openResult(UErrorCode*)(missing)Draft
-ICU 64
numberrangeformatter.hLocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&) const&Draft→Stable
ICU 63
udateintervalformat.hconst UFormattedValue* udtitvfmt_resultAsValue(const UFormattedDateInterval*, UErrorCode*)(missing)Draft
-ICU 64
numberrangeformatter.hLocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&)&&Draft→Stable
ICU 63
udateintervalformat.hvoid udtitvfmt_closeResult(UFormattedDateInterval*)(missing)Draft
-ICU 64
numberrangeformatter.hLocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(LocalizedNumberRangeFormatter&&)Draft→Stable
ICU 63
udateintervalformat.hvoid udtitvfmt_formatToResult(const UDateIntervalFormat*, UFormattedDateInterval*, UDate, UDate, UErrorCode*)(missing)Draft
-ICU 64
numberrangeformatter.hLocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(const LocalizedNumberRangeFormatter&)Draft→Stable
ICU 63
uformattedvalue.hUBool ucfpos_matchesField(const UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*)(missing)Draft
-ICU 64
numberrangeformatter.hUBool icu::number::NumberRangeFormatterSettings< Derived >::copyErrorTo(UErrorCode&) constDraft→Stable
ICU 63
uformattedvalue.hUBool ufmtval_nextPosition(const UFormattedValue*, UConstrainedFieldPosition*, UErrorCode*)(missing)Draft
-ICU 64
numberrangeformatter.hUNumberRangeIdentityResult icu::number::FormattedNumberRange::getIdentityResult(UErrorCode&) constDraft→Stable
ICU 63
uformattedvalue.hUConstrainedFieldPosition* ucfpos_open(UErrorCode*)(missing)Draft
-ICU 64
numberrangeformatter.hUnicodeString icu::number::FormattedNumberRange::toString(UErrorCode&) constDraft→Stable
ICU 63
uformattedvalue.hconst UChar* ufmtval_getString(const UFormattedValue*, int32_t*, UErrorCode*)(missing)Draft
-ICU 64
numberrangeformatter.hUnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(UnlocalizedNumberRangeFormatter&&)Draft→Stable
ICU 63
uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_COUNT(missing)Internal
-
numberrangeformatter.hUnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(const UnlocalizedNumberRangeFormatter&)Draft→Stable
ICU 63
uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_DATE_INTERVAL_SPAN(missing)Draft
-ICU 64
numberrangeformatter.henum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_ALLDraft→Stable
ICU 63
uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_DATE_INTERVAL(missing)Internal
-
numberrangeformatter.henum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_AUTODraft→Stable
ICU 63
numberrangeformatter.henum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_NONEDraft→Stable
ICU 63
numberrangeformatter.henum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_UNITDraft→Stable
ICU 63
numberrangeformatter.henum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUEDraft→Stable
ICU 63
numberrangeformatter.henum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELYDraft→Stable
ICU 63
numberrangeformatter.henum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_RANGEDraft→Stable
ICU 63
numberrangeformatter.henum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_SINGLE_VALUEDraft→Stable
ICU 63
numberrangeformatter.henum UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDINGDraft→Stable
ICU 63
numberrangeformatter.henum UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDINGDraft→Stable
ICU 63
numberrangeformatter.henum UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_NOT_EQUALDraft→Stable
ICU 63
numberrangeformatter.hicu::number::FormattedNumberRange::FormattedNumberRange(FormattedNumberRange&&)Draft→Stable
ICU 63
numberrangeformatter.hicu::number::FormattedNumberRange::~FormattedNumberRange()Draft→Stable
ICU 63
numberrangeformatter.hicu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter()=defaultDraft→Stable
ICU 63
numberrangeformatter.hicu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(LocalizedNumberRangeFormatter&&)Draft→Stable
ICU 63
numberrangeformatter.hicu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(const LocalizedNumberRangeFormatter&)Draft→Stable
ICU 63
numberrangeformatter.hicu::number::LocalizedNumberRangeFormatter::~LocalizedNumberRangeFormatter()Draft→Stable
ICU 63
numberrangeformatter.hicu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter()=defaultDraft→Stable
ICU 63
numberrangeformatter.hicu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(UnlocalizedNumberRangeFormatter&&)Draft→Stable
ICU 63
numberrangeformatter.hicu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(const UnlocalizedNumberRangeFormatter&)Draft→Stable
ICU 63
numberrangeformatter.hstatic LocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::withLocale(const Locale&)Draft→Stable
ICU 63
numberrangeformatter.hstatic UnlocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::with()Draft→Stable
ICU 63
numfmt.hvoid* icu::NumberFormat::clone() const(missing)Stable
+ICU 2.0
reldatefmt.henum UDateAbsoluteUnit::UDAT_ABSOLUTE_QUARTERDraft→Stable
ICU 63
uchar.hconst UCPMap* u_getIntPropertyMap(UProperty, UErrorCode*)Draft→Stable
ICU 63
uchar.hconst USet* u_getBinaryPropertySet(UProperty, UErrorCode*)Draft→Stable
ICU 63
ucpmap.hUChar32 ucpmap_getRange(const UCPMap*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*)Draft→Stable
ICU 63
ucpmap.henum UCPMapRangeOption::UCPMAP_RANGE_FIXED_ALL_SURROGATESDraft→Stable
ICU 63
ucpmap.henum UCPMapRangeOption::UCPMAP_RANGE_FIXED_LEAD_SURROGATESDraft→Stable
ICU 63
ucpmap.henum UCPMapRangeOption::UCPMAP_RANGE_NORMALDraft→Stable
ICU 63
ucpmap.huint32_t ucpmap_get(const UCPMap*, UChar32)Draft→Stable
ICU 63
ucptrie.h#define UCPTRIE_16Draft→Stable
ICU 63
ucptrie.h#define UCPTRIE_32Draft→Stable
ICU 63
ucptrie.h#define UCPTRIE_8Draft→Stable
ICU 63
ucptrie.h#define UCPTRIE_ASCII_GETDraft→Stable
ICU 63
ucptrie.h#define UCPTRIE_FAST_BMP_GETDraft→Stable
ICU 63
ucptrie.h#define UCPTRIE_FAST_GETDraft→Stable
ICU 63
ucptrie.h#define UCPTRIE_FAST_SUPP_GETDraft→Stable
ICU 63
ucptrie.h#define UCPTRIE_FAST_U16_NEXTDraft→Stable
ICU 63
ucptrie.h#define UCPTRIE_FAST_U16_PREVDraft→Stable
ICU 63
ucptrie.h#define UCPTRIE_FAST_U8_NEXTDraft→Stable
ICU 63
ucptrie.h#define UCPTRIE_FAST_U8_PREVDraft→Stable
ICU 63
ucptrie.h#define UCPTRIE_SMALL_GETDraft→Stable
ICU 63
ucptrie.hUCPTrie* ucptrie_openFromBinary(UCPTrieType, UCPTrieValueWidth, const void*, int32_t, int32_t*, UErrorCode*)Draft→Stable
ICU 63
ucptrie.hUCPTrieType ucptrie_getType(const UCPTrie*)Draft→Stable
ICU 63
ucptrie.hUCPTrieValueWidth ucptrie_getValueWidth(const UCPTrie*)Draft→Stable
ICU 63
ucptrie.hUChar32 ucptrie_getRange(const UCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*)Draft→Stable
ICU 63
ucptrie.henum UCPTrieType::UCPTRIE_TYPE_ANYDraft→Stable
ICU 63
ucptrie.henum UCPTrieType::UCPTRIE_TYPE_FASTDraft→Stable
ICU 63
ucptrie.henum UCPTrieType::UCPTRIE_TYPE_SMALLDraft→Stable
ICU 63
uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_DATE(missing)Draft
-ICU 64
ucptrie.henum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_16Draft→Stable
ICU 63
uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_LIST_SPAN(missing)Draft
-ICU 64
ucptrie.henum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_32Draft→Stable
ICU 63
uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_LIST(missing)Draft
-ICU 64
ucptrie.henum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_8Draft→Stable
ICU 63
uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_NUMBER(missing)Draft
-ICU 64
ucptrie.henum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_ANYDraft→Stable
ICU 63
uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_RELATIVE_DATETIME(missing)Draft
-ICU 64
ucptrie.hint32_t ucptrie_toBinary(const UCPTrie*, void*, int32_t, UErrorCode*)Draft→Stable
ICU 63
uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_UNDEFINED(missing)Draft
-ICU 64
ucptrie.huint32_t ucptrie_get(const UCPTrie*, UChar32)Draft→Stable
ICU 63
uformattedvalue.hint32_t ucfpos_getCategory(const UConstrainedFieldPosition*, UErrorCode*)(missing)Draft
-ICU 64
ucptrie.hvoid ucptrie_close(UCPTrie*)Draft→Stable
ICU 63
uformattedvalue.hint32_t ucfpos_getField(const UConstrainedFieldPosition*, UErrorCode*)(missing)Draft
-ICU 64
umutablecptrie.hUCPTrie* umutablecptrie_buildImmutable(UMutableCPTrie*, UCPTrieType, UCPTrieValueWidth, UErrorCode*)Draft→Stable
ICU 63
uformattedvalue.hint64_t ucfpos_getInt64IterationContext(const UConstrainedFieldPosition*, UErrorCode*)(missing)Draft
-ICU 64
umutablecptrie.hUMutableCPTrie* umutablecptrie_clone(const UMutableCPTrie*, UErrorCode*)Draft→Stable
ICU 63
uformattedvalue.hvoid ucfpos_close(UConstrainedFieldPosition*)(missing)Draft
-ICU 64
umutablecptrie.hUMutableCPTrie* umutablecptrie_fromUCPMap(const UCPMap*, UErrorCode*)Draft→Stable
ICU 63
uformattedvalue.hvoid ucfpos_constrainCategory(UConstrainedFieldPosition*, int32_t, UErrorCode*)(missing)Draft
-ICU 64
umutablecptrie.hUMutableCPTrie* umutablecptrie_fromUCPTrie(const UCPTrie*, UErrorCode*)Draft→Stable
ICU 63
uformattedvalue.hvoid ucfpos_constrainField(UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*)(missing)Draft
-ICU 64
umutablecptrie.hUMutableCPTrie* umutablecptrie_open(uint32_t, uint32_t, UErrorCode*)Draft→Stable
ICU 63
uformattedvalue.hvoid ucfpos_getIndexes(const UConstrainedFieldPosition*, int32_t*, int32_t*, UErrorCode*)(missing)Draft
-ICU 64
umutablecptrie.hUChar32 umutablecptrie_getRange(const UMutableCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*)Draft→Stable
ICU 63
uformattedvalue.hvoid ucfpos_reset(UConstrainedFieldPosition*, UErrorCode*)(missing)Draft
-ICU 64
umutablecptrie.huint32_t umutablecptrie_get(const UMutableCPTrie*, UChar32)Draft→Stable
ICU 63
uformattedvalue.hvoid ucfpos_setInt64IterationContext(UConstrainedFieldPosition*, int64_t, UErrorCode*)(missing)Draft
-ICU 64
umutablecptrie.hvoid umutablecptrie_close(UMutableCPTrie*)Draft→Stable
ICU 63
uformattedvalue.hvoid ucfpos_setState(UConstrainedFieldPosition*, int32_t, int32_t, int32_t, int32_t, UErrorCode*)(missing)Draft
-ICU 64
umutablecptrie.hvoid umutablecptrie_set(UMutableCPTrie*, UChar32, uint32_t, UErrorCode*)Draft→Stable
ICU 63
ulistformatter.hUFormattedList* ulistfmt_openResult(UErrorCode*)(missing)Draft
-ICU 64
umutablecptrie.hvoid umutablecptrie_setRange(UMutableCPTrie*, UChar32, UChar32, uint32_t, UErrorCode*)Draft→Stable
ICU 63
ulistformatter.hconst UFormattedValue* ulistfmt_resultAsValue(const UFormattedList*, UErrorCode*)(missing)Draft
-ICU 64
unifilt.hvoid* icu::UnicodeFilter::clone() const(missing)Stable
+ICU 2.4
ulistformatter.hvoid ulistfmt_closeResult(UFormattedList*)(missing)Draft
-ICU 64
unumberformatter.henum UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_ALWAYSDraft→Stable
ICU 60
ulistformatter.hvoid ulistfmt_formatStringsToResult(const UListFormatter*, const UChar* const strings[], const int32_t*, int32_t, UFormattedList*, UErrorCode*)(missing)Draft
-ICU 64
unumberformatter.henum UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_AUTODraft→Stable
ICU 60
unum.henum UNumberFormatFields::UNUM_COMPACT_FIELD(missing)Draft
-ICU 64
unumberformatter.henum UNumberGroupingStrategy::UNUM_GROUPING_AUTODraft→Stable
ICU 61
unum.henum UNumberFormatFields::UNUM_MEASURE_UNIT_FIELD(missing)Draft
-ICU 64
unumberformatter.henum UNumberGroupingStrategy::UNUM_GROUPING_MIN2Draft→Stable
ICU 61
unumberformatter.hUNumberFormatter* unumf_openForSkeletonAndLocaleWithError(const UChar*, int32_t, const char*, UParseError*, UErrorCode*)(missing)Draft
-ICU 64
unumberformatter.henum UNumberGroupingStrategy::UNUM_GROUPING_OFFDraft→Stable
ICU 61
unumberformatter.hconst UFormattedValue* unumf_resultAsValue(const UFormattedNumber*, UErrorCode*)(missing)Draft
-ICU 64
unumberformatter.henum UNumberGroupingStrategy::UNUM_GROUPING_ON_ALIGNEDDraft→Stable
ICU 61
upluralrules.hint32_t uplrules_selectFormatted(const UPluralRules*, const struct UFormattedNumber*, UChar*, int32_t, UErrorCode*)(missing)Draft
-ICU 64
unumberformatter.henum UNumberGroupingStrategy::UNUM_GROUPING_THOUSANDSDraft→Stable
ICU 61
ureldatefmt.hUFormattedRelativeDateTime* ureldatefmt_openResult(UErrorCode*)(missing)Draft
-ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_ALWAYSDraft→Stable
ICU 60
ureldatefmt.hconst UFormattedValue* ureldatefmt_resultAsValue(const UFormattedRelativeDateTime*, UErrorCode*)(missing)Draft
-ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_EXCEPT_ZERODraft→Stable
ICU 61
ureldatefmt.henum URelativeDateTimeFormatterField::UDAT_REL_LITERAL_FIELD(missing)Draft
-ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_ACCOUNTINGDraft→Stable
ICU 60
ureldatefmt.henum URelativeDateTimeFormatterField::UDAT_REL_NUMERIC_FIELD(missing)Draft
-ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_ALWAYSDraft→Stable
ICU 60
ureldatefmt.hvoid ureldatefmt_closeResult(UFormattedRelativeDateTime*)(missing)Draft
-ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_AUTODraft→Stable
ICU 60
ureldatefmt.hvoid ureldatefmt_formatNumericToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*)(missing)Draft
-ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_EXCEPT_ZERODraft→Stable
ICU 61
ureldatefmt.hvoid ureldatefmt_formatToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*)(missing)Draft
-ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_NEVERDraft→Stable
ICU 60
uscript.henum UScriptCode::USCRIPT_ELYMAIC(missing)Stable
-ICU 64
(Born Stable)unumberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAMEDraft→Stable
ICU 60
uscript.henum UScriptCode::USCRIPT_NANDINAGARI(missing)Stable
-ICU 64
(Born Stable)unumberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDENDraft→Stable
ICU 60
uscript.henum UScriptCode::USCRIPT_NYIAKENG_PUACHUE_HMONG(missing)Stable
-ICU 64
(Born Stable)unumberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODEDraft→Stable
ICU 60
uscript.henum UScriptCode::USCRIPT_WANCHO(missing)Stable
-ICU 64
(Born Stable)unumberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROWDraft→Stable
ICU 60
utypes.henum UErrorCode::U_NUMBER_ARG_OUTOFBOUNDS_ERROR(missing)Stable
-ICU 61
unumberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORTDraft→Stable
ICU 60
utypes.henum UErrorCode::U_NUMBER_SKELETON_SYNTAX_ERROR(missing)Stable
-ICU 62
uspoof.henum USpoofChecks::USPOOF_HIDDEN_OVERLAYDraft→Stable
ICU 62

(jump back to top)
- -

Other existing drafts in ICU 64

-
+ +

Added in ICU 65

- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + +
FileAPIICU 63ICU 64FileAPIICU 64ICU 65
decimfmt.hint32_t icu::DecimalFormat::getMultiplierScale() constDraft
ICU 62
basictz.hvoid* icu::BasicTimeZone::clone() const(missing)Stable
+ICU 3.8
decimfmt.hvoid icu::DecimalFormat::setMultiplierScale(int32_t)Draft
ICU 62
bytestrie.hBytesTrie& icu::BytesTrie::resetToState64(uint64_t)(missing)Draft
+ICU 65
listformatter.hUnicodeString& icu::ListFormatter::format(const UnicodeString items[], int32_t, UnicodeString&, FieldPositionIterator*, UErrorCode&) constDraft
ICU 63
bytestrie.huint64_t icu::BytesTrie::getState64() const(missing)Draft
+ICU 65
locid.hLocale& icu::Locale::operator=(Locale&&)Draft
ICU 63
datefmt.hvoid* icu::DateFormat::clone() const(missing)Stable
+ICU 2.0
locid.hStringClass icu::Locale::getKeywordValue(StringPiece, UErrorCode&) constDraft
ICU 63
edits.hUBool icu::Edits::copyErrorTo(UErrorCode&) const(missing)Stable
+ICU 59
locid.hStringClass icu::Locale::getUnicodeKeywordValue(StringPiece, UErrorCode&) constDraft
ICU 63
localebuilder.hUBool icu::LocaleBuilder::copyErrorTo(UErrorCode&) const(missing)Draft
+ICU 65
locid.hStringClass icu::Locale::toLanguageTag(UErrorCode&) constDraft
ICU 63
localematcher.hBuilder& icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&)(missing)Draft
+ICU 65
locid.hStringEnumeration* icu::Locale::createUnicodeKeywords(UErrorCode&) constDraft
ICU 63
localematcher.hBuilder& icu::LocaleMatcher::Builder::operator=(Builder&&)(missing)Draft
+ICU 65
locid.hicu::Locale::Locale(Locale&&)Draft
ICU 63
localematcher.hBuilder& icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*)(missing)Draft
+ICU 65
locid.hstatic Locale icu::Locale::forLanguageTag(StringPiece, UErrorCode&)Draft
ICU 63
localematcher.hBuilder& icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion)(missing)Draft
+ICU 65
locid.hvoid icu::Locale::addLikelySubtags(UErrorCode&)Draft
ICU 63
localematcher.hBuilder& icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag)(missing)Draft
+ICU 65
locid.hvoid icu::Locale::getKeywordValue(StringPiece, ByteSink&, UErrorCode&) constDraft
ICU 63
localematcher.hBuilder& icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter)(missing)Draft
+ICU 65
locid.hvoid icu::Locale::getKeywords(OutputIterator, UErrorCode&) constDraft
ICU 63
localematcher.hBuilder& icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&)(missing)Draft
+ICU 65
locid.hvoid icu::Locale::getUnicodeKeywordValue(StringPiece, ByteSink&, UErrorCode&) constDraft
ICU 63
localematcher.hBuilder& icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece)(missing)Draft
+ICU 65
locid.hvoid icu::Locale::getUnicodeKeywords(OutputIterator, UErrorCode&) constDraft
ICU 63
localematcher.hBuilder& icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv)(missing)Draft
+ICU 65
locid.hvoid icu::Locale::minimizeSubtags(UErrorCode&)Draft
ICU 63
localematcher.hLocale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&) const(missing)Draft
+ICU 65
locid.hvoid icu::Locale::setKeywordValue(StringPiece, StringPiece, UErrorCode&)Draft
ICU 63
localematcher.hLocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&) const(missing)Draft
+ICU 65
locid.hvoid icu::Locale::setUnicodeKeywordValue(StringPiece, StringPiece, UErrorCode&)Draft
ICU 63
localematcher.hLocaleMatcher& icu::LocaleMatcher::operator=(LocaleMatcher&&)(missing)Draft
+ICU 65
locid.hvoid icu::Locale::toLanguageTag(ByteSink&, UErrorCode&) constDraft
ICU 63
localematcher.hResult icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&, UErrorCode&) const(missing)Draft
+ICU 65
measfmt.hvoid icu::MeasureFormat::parseObject(const UnicodeString&, Formattable&, ParsePosition&) constDraft
ICU 53
localematcher.hResult icu::LocaleMatcher::getBestMatchResult(const Locale&, UErrorCode&) const(missing)Draft
+ICU 65
measunit.hstatic MeasureUnit* icu::MeasureUnit::createAtmosphere(UErrorCode&)Draft
ICU 63
localematcher.hResult& icu::LocaleMatcher::Result::operator=(Result&&)(missing)Draft
+ICU 65
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPercent(UErrorCode&)Draft
ICU 63
localematcher.hUBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&) const(missing)Draft
+ICU 65
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPermille(UErrorCode&)Draft
ICU 63
localematcher.hconst Locale* icu::LocaleMatcher::Result::getDesiredLocale() const(missing)Draft
+ICU 65
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPetabyte(UErrorCode&)Draft
ICU 63
localematcher.hconst Locale* icu::LocaleMatcher::Result::getSupportedLocale() const(missing)Draft
+ICU 65
nounit.hUClassID icu::NoUnit::getDynamicClassID() constDraft
ICU 60
localematcher.hconst Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&, UErrorCode&) const(missing)Draft
+ICU 65
nounit.hUObject* icu::NoUnit::clone() constDraft
ICU 60
localematcher.hconst Locale* icu::LocaleMatcher::getBestMatch(const Locale&, UErrorCode&) const(missing)Draft
+ICU 65
nounit.hicu::NoUnit::NoUnit(const NoUnit&)Draft
ICU 60
localematcher.hconst Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&) const(missing)Draft
+ICU 65
nounit.hicu::NoUnit::~NoUnit()Draft
ICU 60
localematcher.hdouble icu::LocaleMatcher::internalMatch(const Locale&, const Locale&, UErrorCode&) const(missing)Internal
+
nounit.hstatic NoUnit icu::NoUnit::base()Draft
ICU 60
localematcher.henum ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE(missing)Draft
+ICU 65
nounit.hstatic NoUnit icu::NoUnit::percent()Draft
ICU 60
localematcher.henum ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION(missing)Draft
+ICU 65
nounit.hstatic NoUnit icu::NoUnit::permille()Draft
ICU 60
localematcher.henum ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE(missing)Draft
+ICU 65
nounit.hstatic UClassID icu::NoUnit::getStaticClassID()Draft
ICU 60
localematcher.henum ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT(missing)Draft
+ICU 65
localematcher.hicu::LocaleMatcher::Builder::Builder()(missing)Draft
+ICU 65
localematcher.hicu::LocaleMatcher::Builder::Builder(Builder&&)(missing)Draft
+ICU 65
localematcher.hicu::LocaleMatcher::Builder::~Builder()(missing)Draft
+ICU 65
localematcher.hicu::LocaleMatcher::LocaleMatcher(LocaleMatcher&&)(missing)Draft
+ICU 65
localematcher.hicu::LocaleMatcher::Result::Result(Result&&)(missing)Draft
+ICU 65
localematcher.hicu::LocaleMatcher::Result::~Result()(missing)Draft
+ICU 65
numberformatter.hAppendable& icu::number::FormattedNumber::appendTo(Appendable&, UErrorCode&) constDraft
ICU 62
localematcher.hicu::LocaleMatcher::~LocaleMatcher()(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*) const&Draft
ICU 61
localematcher.hint32_t icu::LocaleMatcher::Result::getDesiredIndex() const(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*)&&Draft
ICU 62
localematcher.hint32_t icu::LocaleMatcher::Result::getSupportedIndex() const(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*) const&Draft
ICU 60
locid.hUBool icu::Locale::ConvertingIterator< Iter, Conv >::hasNext() const override(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*)&&Draft
ICU 62
locid.hUBool icu::Locale::Iterator::hasNext() const(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*) const&Draft
ICU 60
locid.hUBool icu::Locale::RangeIterator< Iter >::hasNext() const override(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*)&&Draft
ICU 62
locid.hconst Locale& icu::Locale::ConvertingIterator< Iter, Conv >::next() override(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay) const&Draft
ICU 60
locid.hconst Locale& icu::Locale::Iterator::next()(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay)&&Draft
ICU 62
locid.hconst Locale& icu::Locale::RangeIterator< Iter >::next() override(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy) const&Draft
ICU 61
locid.hicu::Locale::ConvertingIterator< Iter, Conv >::ConvertingIterator(Iter, Iter, Conv)(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy)&&Draft
ICU 62
locid.hicu::Locale::Iterator::~Iterator()(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&) const&Draft
ICU 60
locid.hicu::Locale::RangeIterator< Iter >::RangeIterator(Iter, Iter)(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&)&&Draft
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getBar()(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&) const&Draft
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getDecade()(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&)&&Draft
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getDotPerCentimeter()(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&) const&Draft
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getDotPerInch()(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&)&&Draft
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getEm()(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&) const&Draft
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getMegapixel()(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&)&&Draft
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getPascal()(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode) const&Draft
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getPixel()(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode)&&Draft
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getPixelPerCentimeter()(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&) const&Draft
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getPixelPerInch()(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&)&&Draft
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getThermUs()(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay) const&Draft
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&)(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay)&&Draft
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&)(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&) const&Draft
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&)(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&)&&Draft
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&)(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&) const&Draft
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&)(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&)&&Draft
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&)(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth) const&Draft
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&)(missing)Draft
+ICU 65
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth)&&Draft
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&)(missing)Draft
+ICU 65
numberformatter.hFormat* icu::number::LocalizedNumberFormatter::toFormat(UErrorCode&) constDraft
ICU 62
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&)(missing)Draft
+ICU 65
numberformatter.hFormattedNumber icu::number::LocalizedNumberFormatter::formatDecimal(StringPiece, UErrorCode&) constDraft
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&)(missing)Draft
+ICU 65
numberformatter.hFormattedNumber icu::number::LocalizedNumberFormatter::formatDouble(double, UErrorCode&) constDraft
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&)(missing)Draft
+ICU 65
numberformatter.hFormattedNumber icu::number::LocalizedNumberFormatter::formatInt(int64_t, UErrorCode&) constDraft
ICU 60
numberformatter.hStringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&) const(missing)Draft
+ICU 65
numberformatter.hFormattedNumber& icu::number::FormattedNumber::operator=(FormattedNumber&&)Draft
ICU 62
numfmt.hvoid* icu::NumberFormat::clone() const(missing)Stable
+ICU 2.0
numberformatter.hIntegerWidth icu::number::IntegerWidth::truncateAt(int32_t)Draft
ICU 60
platform.h#define UPRV_HAS_ATTRIBUTE(missing)Internal
+
numberformatter.hLocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&) const&Draft
ICU 60
platform.h#define UPRV_HAS_BUILTIN(missing)Internal
+
numberformatter.hLocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&)&&Draft
ICU 62
platform.h#define UPRV_HAS_CPP_ATTRIBUTE(missing)Internal
+
numberformatter.hLocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(LocalizedNumberFormatter&&)Draft
ICU 62
platform.h#define UPRV_HAS_DECLSPEC_ATTRIBUTE(missing)Internal
+
numberformatter.hLocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(const LocalizedNumberFormatter&)Draft
ICU 62
platform.h#define UPRV_HAS_EXTENSION(missing)Internal
+
numberformatter.hPrecision icu::number::CurrencyPrecision::withCurrency(const CurrencyUnit&) constDraft
ICU 60
platform.h#define UPRV_HAS_FEATURE(missing)Internal
+
numberformatter.hPrecision icu::number::FractionPrecision::withMaxDigits(int32_t) constDraft
ICU 60
platform.h#define UPRV_HAS_WARNING(missing)Internal
+
numberformatter.hPrecision icu::number::FractionPrecision::withMinDigits(int32_t) constDraft
ICU 60
platform.h#define U_PF_EMSCRIPTEN(missing)Internal
+
numberformatter.hPrecision icu::number::IncrementPrecision::withMinFraction(int32_t) constDraft
ICU 60
reldatefmt.henum UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR(missing)Draft
+ICU 65
numberformatter.hScale& icu::number::Scale::operator=(Scale&&)Draft
ICU 62
reldatefmt.henum UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE(missing)Draft
+ICU 65
numberformatter.hScale& icu::number::Scale::operator=(const Scale&)Draft
ICU 62
stringpiece.hicu::StringPiece::StringPiece(T)(missing)Draft
+ICU 65
numberformatter.hScientificNotation icu::number::ScientificNotation::withExponentSignDisplay(UNumberSignDisplay) constDraft
ICU 60
ucal.hint32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*)(missing)Draft
+ICU 65
numberformatter.hScientificNotation icu::number::ScientificNotation::withMinExponentDigits(int32_t) constDraft
ICU 60
ucharstrie.hUCharsTrie& icu::UCharsTrie::resetToState64(uint64_t)(missing)Draft
+ICU 65
numberformatter.hUBool icu::number::FormattedNumber::nextFieldPosition(FieldPosition&, UErrorCode&) constDraft
ICU 62
ucharstrie.huint64_t icu::UCharsTrie::getState64() const(missing)Draft
+ICU 65
numberformatter.hUBool icu::number::NumberFormatterSettings< Derived >::copyErrorTo(UErrorCode&) constDraft
ICU 60
uloc.hUEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*)(missing)Draft
+ICU 65
numberformatter.hUnicodeString icu::number::FormattedNumber::toString(UErrorCode&) constDraft
ICU 62
uloc.henum ULocAvailableType::ULOC_AVAILABLE_COUNT(missing)Internal
+
numberformatter.hUnicodeString icu::number::NumberFormatterSettings< Derived >::toSkeleton(UErrorCode&) constDraft
ICU 62
uloc.henum ULocAvailableType::ULOC_AVAILABLE_DEFAULT(missing)Draft
+ICU 65
numberformatter.hUnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(UnlocalizedNumberFormatter&&)Draft
ICU 62
uloc.henum ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES(missing)Draft
+ICU 65
numberformatter.hUnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(const UnlocalizedNumberFormatter&)Draft
ICU 62
uloc.henum ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES(missing)Draft
+ICU 65
numberformatter.hicu::number::FormattedNumber::FormattedNumber(FormattedNumber&&)Draft
ICU 62
umachine.h#define UPRV_BLOCK_MACRO_BEGIN(missing)Internal
+
numberformatter.hicu::number::FormattedNumber::~FormattedNumber()Draft
ICU 60
umachine.h#define UPRV_BLOCK_MACRO_END(missing)Internal
+
numberformatter.hicu::number::LocalizedNumberFormatter::LocalizedNumberFormatter()=defaultDraft
ICU 62
unifilt.hvoid* icu::UnicodeFilter::clone() const(missing)Stable
+ICU 2.4
numberformatter.hicu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(LocalizedNumberFormatter&&)Draft
ICU 62
utrace.henum UTraceFunctionNumber::UTRACE_RES_DATA_LIMIT(missing)Internal
+
numberformatter.hicu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(const LocalizedNumberFormatter&)Draft
ICU 60
utrace.henum UTraceFunctionNumber::UTRACE_UDATA_BUNDLE(missing)Draft
+ICU 65
numberformatter.hicu::number::LocalizedNumberFormatter::~LocalizedNumberFormatter()Draft
ICU 60
utrace.henum UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE(missing)Draft
+ICU 65
numberformatter.hicu::number::Scale::Scale(Scale&&)Draft
ICU 62
utrace.henum UTraceFunctionNumber::UTRACE_UDATA_RESOURCE(missing)Draft
+ICU 65
numberformatter.hicu::number::Scale::Scale(const Scale&)Draft
ICU 62
utrace.henum UTraceFunctionNumber::UTRACE_UDATA_RES_FILE(missing)Draft
+ICU 65
numberformatter.hicu::number::Scale::~Scale()Draft
ICU 62
utrace.henum UTraceFunctionNumber::UTRACE_UDATA_START(missing)Draft
+ICU 65
+

+(jump back to top) +
+ +

Other existing drafts in ICU 65

+
+ + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + -
FileAPIICU 64ICU 65
numberformatter.hicu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter()=defaultDraft
ICU 62
currunit.hicu::CurrencyUnit::CurrencyUnit(StringPiece, UErrorCode&)Draft
ICU 64
numberformatter.hicu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(UnlocalizedNumberFormatter&&)Draft
ICU 62
decimfmt.hUBool icu::DecimalFormat::isFormatFailIfMoreThanMaxDigits() constDraft
ICU 64
numberformatter.hicu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(const UnlocalizedNumberFormatter&)Draft
ICU 60
decimfmt.hUBool icu::DecimalFormat::isParseCaseSensitive() constDraft
ICU 64
numberformatter.hstatic CompactNotation icu::number::Notation::compactLong()Draft
ICU 60
decimfmt.hUBool icu::DecimalFormat::isParseNoExponent() constDraft
ICU 64
numberformatter.hstatic CompactNotation icu::number::Notation::compactShort()Draft
ICU 60
decimfmt.hUBool icu::DecimalFormat::isSignAlwaysShown() constDraft
ICU 64
numberformatter.hstatic CurrencyPrecision icu::number::Precision::currency(UCurrencyUsage)Draft
ICU 60
decimfmt.hconst number::LocalizedNumberFormatter* icu::DecimalFormat::toNumberFormatter(UErrorCode&) constDraft
ICU 64
numberformatter.hstatic FractionPrecision icu::number::Precision::fixedFraction(int32_t)Draft
ICU 60
decimfmt.hint32_t icu::DecimalFormat::getMinimumGroupingDigits() constDraft
ICU 64
numberformatter.hstatic FractionPrecision icu::number::Precision::integer()Draft
ICU 60
decimfmt.hvoid icu::DecimalFormat::setFormatFailIfMoreThanMaxDigits(UBool)Draft
ICU 64
numberformatter.hstatic FractionPrecision icu::number::Precision::maxFraction(int32_t)Draft
ICU 60
decimfmt.hvoid icu::DecimalFormat::setMinimumGroupingDigits(int32_t)Draft
ICU 64
numberformatter.hstatic FractionPrecision icu::number::Precision::minFraction(int32_t)Draft
ICU 60
decimfmt.hvoid icu::DecimalFormat::setParseCaseSensitive(UBool)Draft
ICU 64
numberformatter.hstatic FractionPrecision icu::number::Precision::minMaxFraction(int32_t, int32_t)Draft
ICU 60
decimfmt.hvoid icu::DecimalFormat::setParseNoExponent(UBool)Draft
ICU 64
numberformatter.hstatic IncrementPrecision icu::number::Precision::increment(double)Draft
ICU 60
decimfmt.hvoid icu::DecimalFormat::setSignAlwaysShown(UBool)Draft
ICU 64
numberformatter.hstatic IntegerWidth icu::number::IntegerWidth::zeroFillTo(int32_t)Draft
ICU 60
dtitvfmt.hAppendable& icu::FormattedDateInterval::appendTo(Appendable&, UErrorCode&) constDraft
ICU 64
numberformatter.hstatic LocalizedNumberFormatter icu::number::NumberFormatter::withLocale(const Locale&)Draft
ICU 60
dtitvfmt.hFormattedDateInterval icu::DateIntervalFormat::formatToValue(Calendar&, Calendar&, UErrorCode&) constDraft
ICU 64
numberformatter.hstatic Precision icu::number::Precision::unlimited()Draft
ICU 60
dtitvfmt.hFormattedDateInterval icu::DateIntervalFormat::formatToValue(const DateInterval&, UErrorCode&) constDraft
ICU 64
numberformatter.hstatic Scale icu::number::Scale::byDecimal(StringPiece)Draft
ICU 62
dtitvfmt.hFormattedDateInterval& icu::FormattedDateInterval::operator=(FormattedDateInterval&&)Draft
ICU 64
numberformatter.hstatic Scale icu::number::Scale::byDouble(double)Draft
ICU 62
dtitvfmt.hUBool icu::FormattedDateInterval::nextPosition(ConstrainedFieldPosition&, UErrorCode&) constDraft
ICU 64
numberformatter.hstatic Scale icu::number::Scale::byDoubleAndPowerOfTen(double, int32_t)Draft
ICU 62
dtitvfmt.hUnicodeString icu::FormattedDateInterval::toString(UErrorCode&) constDraft
ICU 64
numberformatter.hstatic Scale icu::number::Scale::none()Draft
ICU 62
dtitvfmt.hUnicodeString icu::FormattedDateInterval::toTempString(UErrorCode&) constDraft
ICU 64
numberformatter.hstatic Scale icu::number::Scale::powerOfTen(int32_t)Draft
ICU 62
dtitvfmt.hicu::FormattedDateInterval::FormattedDateInterval()Draft
ICU 64
numberformatter.hstatic ScientificNotation icu::number::Notation::engineering()Draft
ICU 60
dtitvfmt.hicu::FormattedDateInterval::FormattedDateInterval(FormattedDateInterval&&)Draft
ICU 64
numberformatter.hstatic ScientificNotation icu::number::Notation::scientific()Draft
ICU 60
dtitvfmt.hicu::FormattedDateInterval::~FormattedDateInterval()Draft
ICU 64
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::fixedSignificantDigits(int32_t)Draft
ICU 62
formattedvalue.hAppendable& icu::FormattedValue::appendTo(Appendable&, UErrorCode&) constDraft
ICU 64
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::maxSignificantDigits(int32_t)Draft
ICU 62
formattedvalue.hUBool icu::ConstrainedFieldPosition::matchesField(int32_t, int32_t) constDraft
ICU 64
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::minMaxSignificantDigits(int32_t, int32_t)Draft
ICU 62
formattedvalue.hUBool icu::FormattedValue::nextPosition(ConstrainedFieldPosition&, UErrorCode&) constDraft
ICU 64
numberformatter.hstatic SignificantDigitsPrecision icu::number::Precision::minSignificantDigits(int32_t)Draft
ICU 62
formattedvalue.hUnicodeString icu::FormattedValue::toString(UErrorCode&) constDraft
ICU 64
numberformatter.hstatic SimpleNotation icu::number::Notation::simple()Draft
ICU 60
formattedvalue.hUnicodeString icu::FormattedValue::toTempString(UErrorCode&) constDraft
ICU 64
numberformatter.hstatic UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&, UErrorCode&)Draft
ICU 62
formattedvalue.hicu::ConstrainedFieldPosition::ConstrainedFieldPosition()Draft
ICU 64
numberformatter.hstatic UnlocalizedNumberFormatter icu::number::NumberFormatter::with()Draft
ICU 60
formattedvalue.hicu::ConstrainedFieldPosition::~ConstrainedFieldPosition()Draft
ICU 64
numberformatter.hvoid icu::number::FormattedNumber::getAllFieldPositions(FieldPositionIterator&, UErrorCode&) constDraft
ICU 62
formattedvalue.hicu::FormattedValue::~FormattedValue()Draft
ICU 64
numberrangeformatter.hAppendable& icu::number::FormattedNumberRange::appendTo(Appendable&, UErrorCode&) constDraft
ICU 63
formattedvalue.hint32_t icu::ConstrainedFieldPosition::getCategory() constDraft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse) const&Draft
ICU 63
formattedvalue.hint32_t icu::ConstrainedFieldPosition::getField() constDraft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse)&&Draft
ICU 63
formattedvalue.hint32_t icu::ConstrainedFieldPosition::getLimit() constDraft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback) const&Draft
ICU 63
formattedvalue.hint32_t icu::ConstrainedFieldPosition::getStart() constDraft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback)&&Draft
ICU 63
formattedvalue.hint64_t icu::ConstrainedFieldPosition::getInt64IterationContext() constDraft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&) const&Draft
ICU 63
formattedvalue.hvoid icu::ConstrainedFieldPosition::constrainCategory(int32_t)Draft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&)&&Draft
ICU 63
formattedvalue.hvoid icu::ConstrainedFieldPosition::constrainField(int32_t, int32_t)Draft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&) const&Draft
ICU 63
formattedvalue.hvoid icu::ConstrainedFieldPosition::reset()Draft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&)&&Draft
ICU 63
formattedvalue.hvoid icu::ConstrainedFieldPosition::setInt64IterationContext(int64_t)Draft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&) const&Draft
ICU 63
formattedvalue.hvoid icu::ConstrainedFieldPosition::setState(int32_t, int32_t, int32_t, int32_t)Draft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&)&&Draft
ICU 63
listformatter.hAppendable& icu::FormattedList::appendTo(Appendable&, UErrorCode&) constDraft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&) const&Draft
ICU 63
listformatter.hFormattedList icu::ListFormatter::formatStringsToValue(const UnicodeString items[], int32_t, UErrorCode&) constDraft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&)&&Draft
ICU 63
listformatter.hFormattedList& icu::FormattedList::operator=(FormattedList&&)Draft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&) const&Draft
ICU 63
listformatter.hUBool icu::FormattedList::nextPosition(ConstrainedFieldPosition&, UErrorCode&) constDraft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&)&&Draft
ICU 63
listformatter.hUnicodeString icu::FormattedList::toString(UErrorCode&) constDraft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&) const&Draft
ICU 63
listformatter.hUnicodeString icu::FormattedList::toTempString(UErrorCode&) constDraft
ICU 64
numberrangeformatter.hDerived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&)&&Draft
ICU 63
listformatter.hUnicodeString& icu::ListFormatter::format(const UnicodeString items[], int32_t, UnicodeString&, FieldPositionIterator*, UErrorCode&) constDraft
ICU 63
numberrangeformatter.hFormattedNumberRange icu::number::LocalizedNumberRangeFormatter::formatFormattableRange(const Formattable&, const Formattable&, UErrorCode&) constDraft
ICU 63
listformatter.hicu::FormattedList::FormattedList()Draft
ICU 64
numberrangeformatter.hFormattedNumberRange& icu::number::FormattedNumberRange::operator=(FormattedNumberRange&&)Draft
ICU 63
listformatter.hicu::FormattedList::FormattedList(FormattedList&&)Draft
ICU 64
numberrangeformatter.hLocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&) const&Draft
ICU 63
listformatter.hicu::FormattedList::~FormattedList()Draft
ICU 64
numberrangeformatter.hLocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&)&&Draft
ICU 63
localebuilder.hLocale icu::LocaleBuilder::build(UErrorCode&)Draft
ICU 64
numberrangeformatter.hLocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(LocalizedNumberRangeFormatter&&)Draft
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::addUnicodeLocaleAttribute(StringPiece)Draft
ICU 64
numberrangeformatter.hLocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(const LocalizedNumberRangeFormatter&)Draft
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::clear()Draft
ICU 64
numberrangeformatter.hUBool icu::number::FormattedNumberRange::nextFieldPosition(FieldPosition&, UErrorCode&) constDraft
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::clearExtensions()Draft
ICU 64
numberrangeformatter.hUBool icu::number::NumberRangeFormatterSettings< Derived >::copyErrorTo(UErrorCode&) constDraft
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::removeUnicodeLocaleAttribute(StringPiece)Draft
ICU 64
numberrangeformatter.hUNumberRangeIdentityResult icu::number::FormattedNumberRange::getIdentityResult(UErrorCode&) constDraft
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setExtension(char, StringPiece)Draft
ICU 64
numberrangeformatter.hUnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&) constDraft
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setLanguage(StringPiece)Draft
ICU 64
numberrangeformatter.hUnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&) constDraft
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setLanguageTag(StringPiece)Draft
ICU 64
numberrangeformatter.hUnicodeString icu::number::FormattedNumberRange::toString(UErrorCode&) constDraft
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setLocale(const Locale&)Draft
ICU 64
numberrangeformatter.hUnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(UnlocalizedNumberRangeFormatter&&)Draft
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setRegion(StringPiece)Draft
ICU 64
numberrangeformatter.hUnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(const UnlocalizedNumberRangeFormatter&)Draft
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setScript(StringPiece)Draft
ICU 64
numberrangeformatter.henum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_ALLDraft
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setUnicodeLocaleKeyword(StringPiece, StringPiece)Draft
ICU 64
numberrangeformatter.henum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_AUTODraft
ICU 63
localebuilder.hLocaleBuilder& icu::LocaleBuilder::setVariant(StringPiece)Draft
ICU 64
numberrangeformatter.henum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_NONEDraft
ICU 63
localebuilder.hicu::LocaleBuilder::LocaleBuilder()Draft
ICU 64
numberrangeformatter.henum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_UNITDraft
ICU 63
localebuilder.hicu::LocaleBuilder::~LocaleBuilder()Draft
ICU 64
numberrangeformatter.henum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUEDraft
ICU 63
localpointer.hLocalArray<T>& icu::LocalArray< T >::operator=(std::unique_ptr< T[]>&&)Draft
ICU 64
numberrangeformatter.henum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELYDraft
ICU 63
localpointer.hLocalPointer<T>& icu::LocalPointer< T >::operator=(std::unique_ptr< T >&&)Draft
ICU 64
numberrangeformatter.henum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_RANGEDraft
ICU 63
localpointer.hicu::LocalArray< T >::LocalArray(std::unique_ptr< T[]>&&)Draft
ICU 64
numberrangeformatter.henum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_SINGLE_VALUEDraft
ICU 63
localpointer.hicu::LocalArray< T >::operator std::unique_ptr< T[]>() &&Draft
ICU 64
numberrangeformatter.henum UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDINGDraft
ICU 63
localpointer.hicu::LocalPointer< T >::LocalPointer(std::unique_ptr< T >&&)Draft
ICU 64
numberrangeformatter.henum UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDINGDraft
ICU 63
localpointer.hicu::LocalPointer< T >::operator std::unique_ptr< T >() &&Draft
ICU 64
numberrangeformatter.henum UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_NOT_EQUALDraft
ICU 63
measfmt.hvoid icu::MeasureFormat::parseObject(const UnicodeString&, Formattable&, ParsePosition&) constDraft
ICU 53
numberrangeformatter.hicu::number::FormattedNumberRange::FormattedNumberRange(FormattedNumberRange&&)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getAcre()Draft
ICU 64
numberrangeformatter.hicu::number::FormattedNumberRange::~FormattedNumberRange()Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getAcreFoot()Draft
ICU 64
numberrangeformatter.hicu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter()=defaultDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getAmpere()Draft
ICU 64
numberrangeformatter.hicu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(LocalizedNumberRangeFormatter&&)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getArcMinute()Draft
ICU 64
numberrangeformatter.hicu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(const LocalizedNumberRangeFormatter&)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getArcSecond()Draft
ICU 64
numberrangeformatter.hicu::number::LocalizedNumberRangeFormatter::~LocalizedNumberRangeFormatter()Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getAstronomicalUnit()Draft
ICU 64
numberrangeformatter.hicu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter()=defaultDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getAtmosphere()Draft
ICU 64
numberrangeformatter.hicu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(UnlocalizedNumberRangeFormatter&&)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getBarrel()Draft
ICU 64
numberrangeformatter.hicu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(const UnlocalizedNumberRangeFormatter&)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getBit()Draft
ICU 64
numberrangeformatter.hstatic LocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::withLocale(const Locale&)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getBritishThermalUnit()Draft
ICU 64
numberrangeformatter.hstatic UnlocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::with()Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getBushel()Draft
ICU 64
numberrangeformatter.hvoid icu::number::FormattedNumberRange::getAllFieldPositions(FieldPositionIterator&, UErrorCode&) constDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getByte()Draft
ICU 64
reldatefmt.henum UDateAbsoluteUnit::UDAT_ABSOLUTE_QUARTERDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCalorie()Draft
ICU 64
uchar.hconst UCPMap* u_getIntPropertyMap(UProperty, UErrorCode*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCarat()Draft
ICU 64
uchar.hconst USet* u_getBinaryPropertySet(UProperty, UErrorCode*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCelsius()Draft
ICU 64
ucpmap.hUChar32 ucpmap_getRange(const UCPMap*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCentiliter()Draft
ICU 64
ucpmap.henum UCPMapRangeOption::UCPMAP_RANGE_FIXED_ALL_SURROGATESDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCentimeter()Draft
ICU 64
ucpmap.henum UCPMapRangeOption::UCPMAP_RANGE_FIXED_LEAD_SURROGATESDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCentury()Draft
ICU 64
ucpmap.henum UCPMapRangeOption::UCPMAP_RANGE_NORMALDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCubicCentimeter()Draft
ICU 64
ucpmap.huint32_t ucpmap_get(const UCPMap*, UChar32)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCubicFoot()Draft
ICU 64
ucptrie.h#define UCPTRIE_16Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCubicInch()Draft
ICU 64
ucptrie.h#define UCPTRIE_32Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCubicKilometer()Draft
ICU 64
ucptrie.h#define UCPTRIE_8Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCubicMeter()Draft
ICU 64
ucptrie.h#define UCPTRIE_ASCII_GETDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCubicMile()Draft
ICU 64
ucptrie.h#define UCPTRIE_FAST_BMP_GETDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCubicYard()Draft
ICU 64
ucptrie.h#define UCPTRIE_FAST_GETDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCup()Draft
ICU 64
ucptrie.h#define UCPTRIE_FAST_SUPP_GETDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getCupMetric()Draft
ICU 64
ucptrie.h#define UCPTRIE_FAST_U16_NEXTDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getDalton()Draft
ICU 64
ucptrie.h#define UCPTRIE_FAST_U16_PREVDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getDay()Draft
ICU 64
ucptrie.h#define UCPTRIE_FAST_U8_NEXTDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getDayPerson()Draft
ICU 64
ucptrie.h#define UCPTRIE_FAST_U8_PREVDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getDeciliter()Draft
ICU 64
ucptrie.h#define UCPTRIE_SMALL_GETDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getDecimeter()Draft
ICU 64
ucptrie.hUCPTrie* ucptrie_openFromBinary(UCPTrieType, UCPTrieValueWidth, const void*, int32_t, int32_t*, UErrorCode*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getDegree()Draft
ICU 64
ucptrie.hUCPTrieType ucptrie_getType(const UCPTrie*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getDunam()Draft
ICU 64
ucptrie.hUCPTrieValueWidth ucptrie_getValueWidth(const UCPTrie*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getEarthMass()Draft
ICU 64
ucptrie.hUChar32 ucptrie_getRange(const UCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getElectronvolt()Draft
ICU 64
ucptrie.henum UCPTrieType::UCPTRIE_TYPE_ANYDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getFahrenheit()Draft
ICU 64
ucptrie.henum UCPTrieType::UCPTRIE_TYPE_FASTDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getFathom()Draft
ICU 64
ucptrie.henum UCPTrieType::UCPTRIE_TYPE_SMALLDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getFluidOunce()Draft
ICU 64
ucptrie.henum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_16Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getFluidOunceImperial()Draft
ICU 64
ucptrie.henum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_32Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getFoodcalorie()Draft
ICU 64
ucptrie.henum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_8Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getFoot()Draft
ICU 64
ucptrie.henum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_ANYDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getFurlong()Draft
ICU 64
ucptrie.hint32_t ucptrie_toBinary(const UCPTrie*, void*, int32_t, UErrorCode*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGForce()Draft
ICU 64
ucptrie.huint32_t ucptrie_get(const UCPTrie*, UChar32)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGallon()Draft
ICU 64
ucptrie.hvoid ucptrie_close(UCPTrie*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGallonImperial()Draft
ICU 64
ulistformatter.henum UListFormatterField::ULISTFMT_ELEMENT_FIELDDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGenericTemperature()Draft
ICU 64
ulistformatter.henum UListFormatterField::ULISTFMT_LITERAL_FIELDDraft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGigabit()Draft
ICU 64
umutablecptrie.hUCPTrie* umutablecptrie_buildImmutable(UMutableCPTrie*, UCPTrieType, UCPTrieValueWidth, UErrorCode*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGigabyte()Draft
ICU 64
umutablecptrie.hUMutableCPTrie* umutablecptrie_clone(const UMutableCPTrie*, UErrorCode*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGigahertz()Draft
ICU 64
umutablecptrie.hUMutableCPTrie* umutablecptrie_fromUCPMap(const UCPMap*, UErrorCode*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGigawatt()Draft
ICU 64
umutablecptrie.hUMutableCPTrie* umutablecptrie_fromUCPTrie(const UCPTrie*, UErrorCode*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getGram()Draft
ICU 64
umutablecptrie.hUMutableCPTrie* umutablecptrie_open(uint32_t, uint32_t, UErrorCode*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getHectare()Draft
ICU 64
umutablecptrie.hUChar32 umutablecptrie_getRange(const UMutableCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getHectoliter()Draft
ICU 64
umutablecptrie.huint32_t umutablecptrie_get(const UMutableCPTrie*, UChar32)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getHectopascal()Draft
ICU 64
umutablecptrie.hvoid umutablecptrie_close(UMutableCPTrie*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getHertz()Draft
ICU 64
umutablecptrie.hvoid umutablecptrie_set(UMutableCPTrie*, UChar32, uint32_t, UErrorCode*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getHorsepower()Draft
ICU 64
umutablecptrie.hvoid umutablecptrie_setRange(UMutableCPTrie*, UChar32, UChar32, uint32_t, UErrorCode*)Draft
ICU 63
measunit.hstatic MeasureUnit icu::MeasureUnit::getHour()Draft
ICU 64
unumberformatter.henum UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_ALWAYSDraft
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getInch()Draft
ICU 64
unumberformatter.henum UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_AUTODraft
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getInchHg()Draft
ICU 64
unumberformatter.henum UNumberGroupingStrategy::UNUM_GROUPING_AUTODraft
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getJoule()Draft
ICU 64
unumberformatter.henum UNumberGroupingStrategy::UNUM_GROUPING_MIN2Draft
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getKarat()Draft
ICU 64
unumberformatter.henum UNumberGroupingStrategy::UNUM_GROUPING_OFFDraft
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getKelvin()Draft
ICU 64
unumberformatter.henum UNumberGroupingStrategy::UNUM_GROUPING_ON_ALIGNEDDraft
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilobit()Draft
ICU 64
unumberformatter.henum UNumberGroupingStrategy::UNUM_GROUPING_THOUSANDSDraft
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilobyte()Draft
ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_ALWAYSDraft
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilocalorie()Draft
ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_EXCEPT_ZERODraft
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilogram()Draft
ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_ACCOUNTINGDraft
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilohertz()Draft
ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_ALWAYSDraft
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilojoule()Draft
ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_AUTODraft
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilometer()Draft
ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_EXCEPT_ZERODraft
ICU 61
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilometerPerHour()Draft
ICU 64
unumberformatter.henum UNumberSignDisplay::UNUM_SIGN_NEVERDraft
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilopascal()Draft
ICU 64
unumberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAMEDraft
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilowatt()Draft
ICU 64
unumberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDENDraft
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getKilowattHour()Draft
ICU 64
unumberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODEDraft
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getKnot()Draft
ICU 64
unumberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROWDraft
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getLightYear()Draft
ICU 64
unumberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORTDraft
ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::getLiter()Draft
ICU 64
uregex.henum URegexpFlag::UREGEX_CANON_EQDraft
ICU 2.4
measunit.hstatic MeasureUnit icu::MeasureUnit::getLiterPer100Kilometers()Draft
ICU 64
uspoof.henum USpoofChecks::USPOOF_HIDDEN_OVERLAYDraft
ICU 62
measunit.hstatic MeasureUnit icu::MeasureUnit::getLiterPerKilometer()Draft
ICU 64
-
-

-(jump back to top) -
- -

Signature Simplifications

-This section shows cases where the signature was "simplified" for the sake of comparison. The simplified form is in bold, followed by - all possible variations in "original" form. -
-
    + +measunit.hstatic MeasureUnit icu::MeasureUnit::getLux()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMegabit()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMegabyte()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMegahertz()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMegaliter()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMegapascal()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMegawatt()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMeter()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMeterPerSecond()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMeterPerSecondSquared()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMetricTon()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMicrogram()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMicrometer()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMicrosecond()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMile()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMilePerGallon()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMilePerGallonImperial()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMilePerHour()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMileScandinavian()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMilliampere()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMillibar()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMilligram()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMilligramPerDeciliter()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMilliliter()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMillimeter()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMillimeterOfMercury()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMillimolePerLiter()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMillisecond()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMilliwatt()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMinute()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMole()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMonth()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getMonthPerson()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getNanometer()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getNanosecond()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getNauticalMile()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getNewton()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getNewtonMeter()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getOhm()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getOunce()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getOunceTroy()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getParsec()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getPartPerMillion()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getPercent()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getPermille()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getPermyriad()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getPetabyte()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getPicometer()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getPint()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getPintMetric()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getPoint()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getPound()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getPoundFoot()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getPoundForce()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getPoundPerSquareInch()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getQuart()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getRadian()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getRevolutionAngle()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getSecond()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getSolarLuminosity()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getSolarMass()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getSolarRadius()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getSquareCentimeter()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getSquareFoot()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getSquareInch()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getSquareKilometer()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getSquareMeter()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getSquareMile()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getSquareYard()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getStone()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getTablespoon()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getTeaspoon()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getTerabit()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getTerabyte()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getTon()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getVolt()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getWatt()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getWeek()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getWeekPerson()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getYard()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getYear()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit icu::MeasureUnit::getYearPerson()Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createBarrel(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createBritishThermalUnit(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createDalton(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createDayPerson(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createDunam(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createEarthMass(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createElectronvolt(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createFluidOunceImperial(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createKilopascal(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createMegapascal(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createMole(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createMonthPerson(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createNewton(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createNewtonMeter(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createPermyriad(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createPoundFoot(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createPoundForce(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createSolarLuminosity(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createSolarMass(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createSolarRadius(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createWeekPerson(UErrorCode&)Draft
    ICU 64 + + +measunit.hstatic MeasureUnit* icu::MeasureUnit::createYearPerson(UErrorCode&)Draft
    ICU 64 + + +nounit.hUClassID icu::NoUnit::getDynamicClassID() constDraft
    ICU 60 + + +nounit.hicu::NoUnit::NoUnit(const NoUnit&)Draft
    ICU 60 + + +nounit.hicu::NoUnit::~NoUnit()Draft
    ICU 60 + + +nounit.hstatic NoUnit icu::NoUnit::base()Draft
    ICU 60 + + +nounit.hstatic NoUnit icu::NoUnit::percent()Draft
    ICU 60 + + +nounit.hstatic NoUnit icu::NoUnit::permille()Draft
    ICU 60 + + +nounit.hstatic UClassID icu::NoUnit::getStaticClassID()Draft
    ICU 60 + + +nounit.hvoid* icu::NoUnit::clone() constDraft
    ICU 60 + + +numberformatter.hLocalPointer<Derived> icu::number::NumberFormatterSettings< Derived >::clone() &&Draft
    ICU 64 + + +numberformatter.hLocalPointer<Derived> icu::number::NumberFormatterSettings< Derived >::clone() const &Draft
    ICU 64 + + +numberformatter.hUBool icu::number::FormattedNumber::nextFieldPosition(FieldPosition&, UErrorCode&) constDraft
    ICU 62 + + +numberformatter.hUBool icu::number::FormattedNumber::nextPosition(ConstrainedFieldPosition&, UErrorCode&) constDraft
    ICU 64 + + +numberformatter.hUnicodeString icu::number::FormattedNumber::toTempString(UErrorCode&) constDraft
    ICU 64 + + +numberformatter.hicu::number::FormattedNumber::FormattedNumber()Draft
    ICU 64 + + +numberformatter.hstatic UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&, UParseError&, UErrorCode&)Draft
    ICU 64 + + +numberformatter.hvoid icu::number::FormattedNumber::getAllFieldPositions(FieldPositionIterator&, UErrorCode&) constDraft
    ICU 62 + + +numberrangeformatter.hLocalPointer<Derived> icu::number::NumberRangeFormatterSettings< Derived >::clone() &&Draft
    ICU 64 + + +numberrangeformatter.hLocalPointer<Derived> icu::number::NumberRangeFormatterSettings< Derived >::clone() const &Draft
    ICU 64 + + +numberrangeformatter.hUBool icu::number::FormattedNumberRange::nextFieldPosition(FieldPosition&, UErrorCode&) constDraft
    ICU 63 + + +numberrangeformatter.hUBool icu::number::FormattedNumberRange::nextPosition(ConstrainedFieldPosition&, UErrorCode&) constDraft
    ICU 64 + + +numberrangeformatter.hUnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&) constDraft
    ICU 63 + + +numberrangeformatter.hUnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&) constDraft
    ICU 63 + + +numberrangeformatter.hUnicodeString icu::number::FormattedNumberRange::toTempString(UErrorCode&) constDraft
    ICU 64 + + +numberrangeformatter.hvoid icu::number::FormattedNumberRange::getAllFieldPositions(FieldPositionIterator&, UErrorCode&) constDraft
    ICU 63 + + +numfmt.henum icu::NumberFormat::EAlignmentFields::kCompactFieldDraft
    ICU 64 + + +numfmt.henum icu::NumberFormat::EAlignmentFields::kMeasureUnitFieldDraft
    ICU 64 + + +plurrule.hUnicodeString icu::PluralRules::select(const number::FormattedNumber&, UErrorCode&) constDraft
    ICU 64 + + +reldatefmt.hAppendable& icu::FormattedRelativeDateTime::appendTo(Appendable&, UErrorCode&) constDraft
    ICU 64 + + +reldatefmt.hFormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatNumericToValue(double, URelativeDateTimeUnit, UErrorCode&) constDraft
    ICU 64 + + +reldatefmt.hFormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(UDateDirection, UDateAbsoluteUnit, UErrorCode&) constDraft
    ICU 64 + + +reldatefmt.hFormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, UDateDirection, UDateRelativeUnit, UErrorCode&) constDraft
    ICU 64 + + +reldatefmt.hFormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, URelativeDateTimeUnit, UErrorCode&) constDraft
    ICU 64 + + +reldatefmt.hFormattedRelativeDateTime& icu::FormattedRelativeDateTime::operator=(FormattedRelativeDateTime&&)Draft
    ICU 64 + + +reldatefmt.hUBool icu::FormattedRelativeDateTime::nextPosition(ConstrainedFieldPosition&, UErrorCode&) constDraft
    ICU 64 + + +reldatefmt.hUnicodeString icu::FormattedRelativeDateTime::toString(UErrorCode&) constDraft
    ICU 64 + + +reldatefmt.hUnicodeString icu::FormattedRelativeDateTime::toTempString(UErrorCode&) constDraft
    ICU 64 + + +reldatefmt.hicu::FormattedRelativeDateTime::FormattedRelativeDateTime()Draft
    ICU 64 + + +reldatefmt.hicu::FormattedRelativeDateTime::FormattedRelativeDateTime(FormattedRelativeDateTime&&)Draft
    ICU 64 + + +reldatefmt.hicu::FormattedRelativeDateTime::~FormattedRelativeDateTime()Draft
    ICU 64 + + +udateintervalformat.hUFormattedDateInterval* udtitvfmt_openResult(UErrorCode*)Draft
    ICU 64 + + +udateintervalformat.hconst UFormattedValue* udtitvfmt_resultAsValue(const UFormattedDateInterval*, UErrorCode*)Draft
    ICU 64 + + +udateintervalformat.hvoid udtitvfmt_closeResult(UFormattedDateInterval*)Draft
    ICU 64 + + +udateintervalformat.hvoid udtitvfmt_formatToResult(const UDateIntervalFormat*, UFormattedDateInterval*, UDate, UDate, UErrorCode*)Draft
    ICU 64 + + +uformattedvalue.hUBool ucfpos_matchesField(const UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*)Draft
    ICU 64 + + +uformattedvalue.hUBool ufmtval_nextPosition(const UFormattedValue*, UConstrainedFieldPosition*, UErrorCode*)Draft
    ICU 64 + + +uformattedvalue.hUConstrainedFieldPosition* ucfpos_open(UErrorCode*)Draft
    ICU 64 + + +uformattedvalue.hconst UChar* ufmtval_getString(const UFormattedValue*, int32_t*, UErrorCode*)Draft
    ICU 64 + + +uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_DATE_INTERVAL_SPANDraft
    ICU 64 + + +uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_DATEDraft
    ICU 64 + + +uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_LIST_SPANDraft
    ICU 64 + + +uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_LISTDraft
    ICU 64 + + +uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_NUMBERDraft
    ICU 64 + + +uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_RELATIVE_DATETIMEDraft
    ICU 64 + + +uformattedvalue.henum UFieldCategory::UFIELD_CATEGORY_UNDEFINEDDraft
    ICU 64 + + +uformattedvalue.hint32_t ucfpos_getCategory(const UConstrainedFieldPosition*, UErrorCode*)Draft
    ICU 64 + + +uformattedvalue.hint32_t ucfpos_getField(const UConstrainedFieldPosition*, UErrorCode*)Draft
    ICU 64 + + +uformattedvalue.hint64_t ucfpos_getInt64IterationContext(const UConstrainedFieldPosition*, UErrorCode*)Draft
    ICU 64 + + +uformattedvalue.hvoid ucfpos_close(UConstrainedFieldPosition*)Draft
    ICU 64 + + +uformattedvalue.hvoid ucfpos_constrainCategory(UConstrainedFieldPosition*, int32_t, UErrorCode*)Draft
    ICU 64 + + +uformattedvalue.hvoid ucfpos_constrainField(UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*)Draft
    ICU 64 + + +uformattedvalue.hvoid ucfpos_getIndexes(const UConstrainedFieldPosition*, int32_t*, int32_t*, UErrorCode*)Draft
    ICU 64 + + +uformattedvalue.hvoid ucfpos_reset(UConstrainedFieldPosition*, UErrorCode*)Draft
    ICU 64 + + +uformattedvalue.hvoid ucfpos_setInt64IterationContext(UConstrainedFieldPosition*, int64_t, UErrorCode*)Draft
    ICU 64 + + +uformattedvalue.hvoid ucfpos_setState(UConstrainedFieldPosition*, int32_t, int32_t, int32_t, int32_t, UErrorCode*)Draft
    ICU 64 + + +ulistformatter.hUFormattedList* ulistfmt_openResult(UErrorCode*)Draft
    ICU 64 + + +ulistformatter.hconst UFormattedValue* ulistfmt_resultAsValue(const UFormattedList*, UErrorCode*)Draft
    ICU 64 + + +ulistformatter.henum UListFormatterField::ULISTFMT_ELEMENT_FIELDDraft
    ICU 63 + + +ulistformatter.henum UListFormatterField::ULISTFMT_LITERAL_FIELDDraft
    ICU 63 + + +ulistformatter.hvoid ulistfmt_closeResult(UFormattedList*)Draft
    ICU 64 + + +ulistformatter.hvoid ulistfmt_formatStringsToResult(const UListFormatter*, const UChar* const strings[], const int32_t*, int32_t, UFormattedList*, UErrorCode*)Draft
    ICU 64 + + +unum.henum UNumberFormatAttribute::UNUM_MINIMUM_GROUPING_DIGITSDraft
    ICU 64 + + +unum.henum UNumberFormatAttribute::UNUM_PARSE_CASE_SENSITIVEDraft
    ICU 64 + + +unum.henum UNumberFormatAttribute::UNUM_SIGN_ALWAYS_SHOWNDraft
    ICU 64 + + +unum.henum UNumberFormatFields::UNUM_COMPACT_FIELDDraft
    ICU 64 + + +unum.henum UNumberFormatFields::UNUM_MEASURE_UNIT_FIELDDraft
    ICU 64 + + +unumberformatter.hUNumberFormatter* unumf_openForSkeletonAndLocaleWithError(const UChar*, int32_t, const char*, UParseError*, UErrorCode*)Draft
    ICU 64 + + +unumberformatter.hconst UFormattedValue* unumf_resultAsValue(const UFormattedNumber*, UErrorCode*)Draft
    ICU 64 + + +upluralrules.hint32_t uplrules_selectFormatted(const UPluralRules*, const struct UFormattedNumber*, UChar*, int32_t, UErrorCode*)Draft
    ICU 64 + + +uregex.henum URegexpFlag::UREGEX_CANON_EQDraft
    ICU 2.4 + + +ureldatefmt.hUFormattedRelativeDateTime* ureldatefmt_openResult(UErrorCode*)Draft
    ICU 64 + + +ureldatefmt.hconst UFormattedValue* ureldatefmt_resultAsValue(const UFormattedRelativeDateTime*, UErrorCode*)Draft
    ICU 64 + + +ureldatefmt.henum URelativeDateTimeFormatterField::UDAT_REL_LITERAL_FIELDDraft
    ICU 64 + + +ureldatefmt.henum URelativeDateTimeFormatterField::UDAT_REL_NUMERIC_FIELDDraft
    ICU 64 + + +ureldatefmt.hvoid ureldatefmt_closeResult(UFormattedRelativeDateTime*)Draft
    ICU 64 + + +ureldatefmt.hvoid ureldatefmt_formatNumericToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*)Draft
    ICU 64 + + +ureldatefmt.hvoid ureldatefmt_formatToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*)Draft
    ICU 64 + + +
    +

    +(jump back to top) +
    + +

    Signature Simplifications

    +This section shows cases where the signature was "simplified" for the sake of comparison. The simplified form is in bold, followed by + all possible variations in "original" form. +
    +
      +
    • +void* icu::ChoiceFormat::clone() const +
      ChoiceFormat* icu::ChoiceFormat::clone() const
      Format* icu::ChoiceFormat::clone() const
      +
    • +
    • +void* icu::CompactDecimalFormat::clone() const +
      CompactDecimalFormat* icu::CompactDecimalFormat::clone() const U_OVERRIDE
      Format* icu::CompactDecimalFormat::clone() const U_OVERRIDE
      +
    • +
    • +void* icu::CurrencyAmount::clone() const +
      CurrencyAmount* icu::CurrencyAmount::clone() const
      UObject* icu::CurrencyAmount::clone() const
      +
    • +
    • +void* icu::CurrencyUnit::clone() const +
      CurrencyUnit* icu::CurrencyUnit::clone() const
      UObject* icu::CurrencyUnit::clone() const
      +
    • +
    • +void* icu::DateIntervalFormat::clone() const +
      DateIntervalFormat* icu::DateIntervalFormat::clone() const
      Format* icu::DateIntervalFormat::clone() const
      +
    • +
    • +void* icu::DecimalFormat::clone() const +
      DecimalFormat* icu::DecimalFormat::clone() const U_OVERRIDE
      Format* icu::DecimalFormat::clone() const U_OVERRIDE
      +
    • +
    • +void* icu::GregorianCalendar::clone() const +
      Calendar* icu::GregorianCalendar::clone() const
      GregorianCalendar* icu::GregorianCalendar::clone() const
      +
    • +
    • +void* icu::Measure::clone() const +
      Measure* icu::Measure::clone() const
      UObject* icu::Measure::clone() const
      +
    • +
    • +void* icu::MeasureFormat::clone() const +
      Format* icu::MeasureFormat::clone() const
      MeasureFormat* icu::MeasureFormat::clone() const
      +
    • +
    • +void* icu::MeasureUnit::clone() const +
      MeasureUnit* icu::MeasureUnit::clone() const
      UObject* icu::MeasureUnit::clone() const
      +
    • +
    • +void* icu::MessageFormat::clone() const +
      Format* icu::MessageFormat::clone() const
      MessageFormat* icu::MessageFormat::clone() const
      +
    • +
    • +void* icu::NoUnit::clone() const +
      NoUnit* icu::NoUnit::clone() const
      UObject* icu::NoUnit::clone() const
      +
    • +
    • +void* icu::PluralFormat::clone() const +
      Format* icu::PluralFormat::clone() const
      PluralFormat* icu::PluralFormat::clone() const
      +
    • +
    • +void* icu::RuleBasedBreakIterator::clone() const +
      BreakIterator* icu::RuleBasedBreakIterator::clone() const
      RuleBasedBreakIterator* icu::RuleBasedBreakIterator::clone() const
      +
    • +
    • +void* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&) +
      BreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)
      RuleBasedBreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)
      +
    • +
    • +void* icu::RuleBasedCollator::clone() const +
      Collator* icu::RuleBasedCollator::clone() const
      RuleBasedCollator* icu::RuleBasedCollator::clone() const
      +
    • +
    • +void* icu::RuleBasedNumberFormat::clone() const +
      Format* icu::RuleBasedNumberFormat::clone() const
      RuleBasedNumberFormat* icu::RuleBasedNumberFormat::clone() const
      +
    • +
    • +void* icu::RuleBasedTimeZone::clone() const +
      RuleBasedTimeZone* icu::RuleBasedTimeZone::clone() const
      TimeZone* icu::RuleBasedTimeZone::clone() const
      +
    • +
    • +void* icu::SelectFormat::clone() const +
      Format* icu::SelectFormat::clone() const
      SelectFormat* icu::SelectFormat::clone() const
      +
    • +
    • +void* icu::SimpleDateFormat::clone() const +
      Format* icu::SimpleDateFormat::clone() const
      SimpleDateFormat* icu::SimpleDateFormat::clone() const
      +
    • +
    • +void* icu::SimpleTimeZone::clone() const +
      SimpleTimeZone* icu::SimpleTimeZone::clone() const
      TimeZone* icu::SimpleTimeZone::clone() const
      +
    • +
    • +void* icu::StringCharacterIterator::clone() const +
      CharacterIterator* icu::StringCharacterIterator::clone() const
      StringCharacterIterator* icu::StringCharacterIterator::clone() const
      +
    • +
    • +void* icu::StringSearch::safeClone() const +
      SearchIterator* icu::StringSearch::safeClone() const
      StringSearch* icu::StringSearch::safeClone() const
      +
    • +
    • +void* icu::TimeUnit::clone() const +
      TimeUnit* icu::TimeUnit::clone() const
      UObject* icu::TimeUnit::clone() const
      +
    • +
    • +void* icu::TimeUnitAmount::clone() const +
      TimeUnitAmount* icu::TimeUnitAmount::clone() const
      UObject* icu::TimeUnitAmount::clone() const
      +
    • +
    • +void* icu::TimeUnitFormat::clone() const +
      Format* icu::TimeUnitFormat::clone() const
      TimeUnitFormat* icu::TimeUnitFormat::clone() const
      +
    • +
    • +void* icu::TimeZoneFormat::clone() const +
      Format* icu::TimeZoneFormat::clone() const
      TimeZoneFormat* icu::TimeZoneFormat::clone() const
      +
    • +
    • +void* icu::UCharCharacterIterator::clone() const +
      CharacterIterator* icu::UCharCharacterIterator::clone() const
      UCharCharacterIterator* icu::UCharCharacterIterator::clone() const
      +
    • +
    • +void* icu::UnicodeSet::clone() const +
      UnicodeFunctor* icu::UnicodeSet::clone() const
      UnicodeSet* icu::UnicodeSet::clone() const
      +
    • +
    • +void* icu::UnicodeSet::cloneAsThawed() const +
      UnicodeFunctor* icu::UnicodeSet::cloneAsThawed() const
      UnicodeSet* icu::UnicodeSet::cloneAsThawed() const
      +
    • +
    • +void* icu::UnicodeSet::freeze() +
      UnicodeFunctor* icu::UnicodeSet::freeze()
      UnicodeSet* icu::UnicodeSet::freeze()
      +
    • +
    • +void* icu::UnicodeString::clone() const +
      Replaceable* icu::UnicodeString::clone() const
      UnicodeString* icu::UnicodeString::clone() const
      +
    • +
    • +void* icu::VTimeZone::clone() const +
      TimeZone* icu::VTimeZone::clone() const
      VTimeZone* icu::VTimeZone::clone() const
      +
    • +

    (jump back to top)

    -Contents generated by StableAPI tool on Fri Apr 05 10:36:27 PDT 2019
    Copyright (C) 2019, International Business Machines Corporation, All Rights Reserved.
    +Contents generated by StableAPI tool on Wed Oct 02 10:22:29 PDT 2019
    + Copyright © 2017 and later: Unicode, Inc. and others.
    + License & terms of use: http://www.unicode.org/copyright.html +

    diff --git a/APIChangeReport.md b/APIChangeReport.md new file mode 100644 index 0000000..6a8ffd0 --- /dev/null +++ b/APIChangeReport.md @@ -0,0 +1,1093 @@ + + + + +# ICU4C API Comparison: ICU 64 (update #1: 64.2) with ICU 65 + +> _Note_ Markdown format of this document is new for ICU 65. + +- [Removed from ICU 64](#removed) +- [Deprecated or Obsoleted in ICU 65](#deprecated) +- [Changed in ICU 65](#changed) +- [Promoted to stable in ICU 65](#promoted) +- [Added in ICU 65](#added) +- [Other existing drafts in ICU 65](#other) +- [Signature Simplifications](#simplifications) + +## Removed + +Removed from ICU 64 + +| File | API | ICU 64 | ICU 65 | +|---|---|---|---| +| decimfmt.h | const number::LocalizedNumberFormatter& icu::DecimalFormat::toNumberFormatter() const | DeprecatedICU 64 | (missing) +| edits.h | UBool icu::Edits::copyErrorTo(UErrorCode&) | StableICU 59 | (missing) +| platform.h | #define __has_attribute | Internal | (missing) +| platform.h | #define __has_builtin | Internal | (missing) +| platform.h | #define __has_cpp_attribute | Internal | (missing) +| platform.h | #define __has_declspec_attribute | Internal | (missing) +| platform.h | #define __has_extension | Internal | (missing) +| platform.h | #define __has_feature | Internal | (missing) +| platform.h | #define __has_warning | Internal | (missing) +| uversion.h | #define U_NAMESPACE_BEGIN | StableICU 2.4 | (missing) +| uversion.h | #define U_NAMESPACE_END | StableICU 2.4 | (missing) +| uversion.h | #define U_NAMESPACE_QUALIFIER | StableICU 2.4 | (missing) +| uversion.h | #define U_NAMESPACE_USE | StableICU 2.4 | (missing) + +## Deprecated + +Deprecated or Obsoleted in ICU 65 + +| File | API | ICU 64 | ICU 65 | +|---|---|---|---| + +## Changed + +Changed in ICU 65 (old, new) + + + +| File | API | ICU 64 | ICU 65 | +|---|---|---|---| +| decimfmt.h | int32_t icu::DecimalFormat::getMultiplierScale() const | Draft→StableICU 62 +| decimfmt.h | void icu::DecimalFormat::setMultiplierScale(int32_t) | Draft→StableICU 62 +| locid.h | Locale& icu::Locale::operator=(Locale&&) | Draft→StableICU 63 +| locid.h | StringClass icu::Locale::getKeywordValue(StringPiece, UErrorCode&) const | Draft→StableICU 63 +| locid.h | StringClass icu::Locale::getUnicodeKeywordValue(StringPiece, UErrorCode&) const | Draft→StableICU 63 +| locid.h | StringClass icu::Locale::toLanguageTag(UErrorCode&) const | Draft→StableICU 63 +| locid.h | StringEnumeration* icu::Locale::createUnicodeKeywords(UErrorCode&) const | Draft→StableICU 63 +| locid.h | icu::Locale::Locale(Locale&&) | Draft→StableICU 63 +| locid.h | static Locale icu::Locale::forLanguageTag(StringPiece, UErrorCode&) | Draft→StableICU 63 +| locid.h | void icu::Locale::addLikelySubtags(UErrorCode&) | Draft→StableICU 63 +| locid.h | void icu::Locale::getKeywordValue(StringPiece, ByteSink&, UErrorCode&) const | Draft→StableICU 63 +| locid.h | void icu::Locale::getKeywords(OutputIterator, UErrorCode&) const | Draft→StableICU 63 +| locid.h | void icu::Locale::getUnicodeKeywordValue(StringPiece, ByteSink&, UErrorCode&) const | Draft→StableICU 63 +| locid.h | void icu::Locale::getUnicodeKeywords(OutputIterator, UErrorCode&) const | Draft→StableICU 63 +| locid.h | void icu::Locale::minimizeSubtags(UErrorCode&) | Draft→StableICU 63 +| locid.h | void icu::Locale::setKeywordValue(StringPiece, StringPiece, UErrorCode&) | Draft→StableICU 63 +| locid.h | void icu::Locale::setUnicodeKeywordValue(StringPiece, StringPiece, UErrorCode&) | Draft→StableICU 63 +| locid.h | void icu::Locale::toLanguageTag(ByteSink&, UErrorCode&) const | Draft→StableICU 63 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createAtmosphere(UErrorCode&) | Draft→StableICU 63 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createPercent(UErrorCode&) | Draft→StableICU 63 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createPermille(UErrorCode&) | Draft→StableICU 63 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createPetabyte(UErrorCode&) | Draft→StableICU 63 +| numberformatter.h | Appendable& icu::number::FormattedNumber::appendTo(Appendable&, UErrorCode&) const | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*) const& | Draft→StableICU 61 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy) const& | Draft→StableICU 61 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&) const& | Draft→StableICU 61 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&) const& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode) const& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&) const& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth)&& | Draft→StableICU 62 +| numberformatter.h | Format* icu::number::LocalizedNumberFormatter::toFormat(UErrorCode&) const | Draft→StableICU 62 +| numberformatter.h | FormattedNumber icu::number::LocalizedNumberFormatter::formatDecimal(StringPiece, UErrorCode&) const | Draft→StableICU 60 +| numberformatter.h | FormattedNumber icu::number::LocalizedNumberFormatter::formatDouble(double, UErrorCode&) const | Draft→StableICU 60 +| numberformatter.h | FormattedNumber icu::number::LocalizedNumberFormatter::formatInt(int64_t, UErrorCode&) const | Draft→StableICU 60 +| numberformatter.h | FormattedNumber& icu::number::FormattedNumber::operator=(FormattedNumber&&) | Draft→StableICU 62 +| numberformatter.h | IntegerWidth icu::number::IntegerWidth::truncateAt(int32_t) | Draft→StableICU 60 +| numberformatter.h | LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&) const& | Draft→StableICU 60 +| numberformatter.h | LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&)&& | Draft→StableICU 62 +| numberformatter.h | LocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(LocalizedNumberFormatter&&) | Draft→StableICU 62 +| numberformatter.h | LocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(const LocalizedNumberFormatter&) | Draft→StableICU 62 +| numberformatter.h | Precision icu::number::CurrencyPrecision::withCurrency(const CurrencyUnit&) const | Draft→StableICU 60 +| numberformatter.h | Precision icu::number::FractionPrecision::withMaxDigits(int32_t) const | Draft→StableICU 60 +| numberformatter.h | Precision icu::number::FractionPrecision::withMinDigits(int32_t) const | Draft→StableICU 60 +| numberformatter.h | Precision icu::number::IncrementPrecision::withMinFraction(int32_t) const | Draft→StableICU 60 +| numberformatter.h | Scale& icu::number::Scale::operator=(Scale&&) | Draft→StableICU 62 +| numberformatter.h | Scale& icu::number::Scale::operator=(const Scale&) | Draft→StableICU 62 +| numberformatter.h | ScientificNotation icu::number::ScientificNotation::withExponentSignDisplay(UNumberSignDisplay) const | Draft→StableICU 60 +| numberformatter.h | ScientificNotation icu::number::ScientificNotation::withMinExponentDigits(int32_t) const | Draft→StableICU 60 +| numberformatter.h | UBool icu::number::NumberFormatterSettings< Derived >::copyErrorTo(UErrorCode&) const | Draft→StableICU 60 +| numberformatter.h | UnicodeString icu::number::FormattedNumber::toString(UErrorCode&) const | Draft→StableICU 62 +| numberformatter.h | UnicodeString icu::number::NumberFormatterSettings< Derived >::toSkeleton(UErrorCode&) const | Draft→StableICU 62 +| numberformatter.h | UnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(UnlocalizedNumberFormatter&&) | Draft→StableICU 62 +| numberformatter.h | UnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(const UnlocalizedNumberFormatter&) | Draft→StableICU 62 +| numberformatter.h | icu::number::FormattedNumber::FormattedNumber(FormattedNumber&&) | Draft→StableICU 62 +| numberformatter.h | icu::number::FormattedNumber::~FormattedNumber() | Draft→StableICU 60 +| numberformatter.h | icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter()=default | Draft→StableICU 62 +| numberformatter.h | icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(LocalizedNumberFormatter&&) | Draft→StableICU 62 +| numberformatter.h | icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(const LocalizedNumberFormatter&) | Draft→StableICU 60 +| numberformatter.h | icu::number::LocalizedNumberFormatter::~LocalizedNumberFormatter() | Draft→StableICU 60 +| numberformatter.h | icu::number::Scale::Scale(Scale&&) | Draft→StableICU 62 +| numberformatter.h | icu::number::Scale::Scale(const Scale&) | Draft→StableICU 62 +| numberformatter.h | icu::number::Scale::~Scale() | Draft→StableICU 62 +| numberformatter.h | icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter()=default | Draft→StableICU 62 +| numberformatter.h | icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(UnlocalizedNumberFormatter&&) | Draft→StableICU 62 +| numberformatter.h | icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(const UnlocalizedNumberFormatter&) | Draft→StableICU 60 +| numberformatter.h | static CompactNotation icu::number::Notation::compactLong() | Draft→StableICU 60 +| numberformatter.h | static CompactNotation icu::number::Notation::compactShort() | Draft→StableICU 60 +| numberformatter.h | static CurrencyPrecision icu::number::Precision::currency(UCurrencyUsage) | Draft→StableICU 60 +| numberformatter.h | static FractionPrecision icu::number::Precision::fixedFraction(int32_t) | Draft→StableICU 60 +| numberformatter.h | static FractionPrecision icu::number::Precision::integer() | Draft→StableICU 60 +| numberformatter.h | static FractionPrecision icu::number::Precision::maxFraction(int32_t) | Draft→StableICU 60 +| numberformatter.h | static FractionPrecision icu::number::Precision::minFraction(int32_t) | Draft→StableICU 60 +| numberformatter.h | static FractionPrecision icu::number::Precision::minMaxFraction(int32_t, int32_t) | Draft→StableICU 60 +| numberformatter.h | static IncrementPrecision icu::number::Precision::increment(double) | Draft→StableICU 60 +| numberformatter.h | static IntegerWidth icu::number::IntegerWidth::zeroFillTo(int32_t) | Draft→StableICU 60 +| numberformatter.h | static LocalizedNumberFormatter icu::number::NumberFormatter::withLocale(const Locale&) | Draft→StableICU 60 +| numberformatter.h | static Precision icu::number::Precision::unlimited() | Draft→StableICU 60 +| numberformatter.h | static Scale icu::number::Scale::byDecimal(StringPiece) | Draft→StableICU 62 +| numberformatter.h | static Scale icu::number::Scale::byDouble(double) | Draft→StableICU 62 +| numberformatter.h | static Scale icu::number::Scale::byDoubleAndPowerOfTen(double, int32_t) | Draft→StableICU 62 +| numberformatter.h | static Scale icu::number::Scale::none() | Draft→StableICU 62 +| numberformatter.h | static Scale icu::number::Scale::powerOfTen(int32_t) | Draft→StableICU 62 +| numberformatter.h | static ScientificNotation icu::number::Notation::engineering() | Draft→StableICU 60 +| numberformatter.h | static ScientificNotation icu::number::Notation::scientific() | Draft→StableICU 60 +| numberformatter.h | static SignificantDigitsPrecision icu::number::Precision::fixedSignificantDigits(int32_t) | Draft→StableICU 62 +| numberformatter.h | static SignificantDigitsPrecision icu::number::Precision::maxSignificantDigits(int32_t) | Draft→StableICU 62 +| numberformatter.h | static SignificantDigitsPrecision icu::number::Precision::minMaxSignificantDigits(int32_t, int32_t) | Draft→StableICU 62 +| numberformatter.h | static SignificantDigitsPrecision icu::number::Precision::minSignificantDigits(int32_t) | Draft→StableICU 62 +| numberformatter.h | static SimpleNotation icu::number::Notation::simple() | Draft→StableICU 60 +| numberformatter.h | static UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&, UErrorCode&) | Draft→StableICU 62 +| numberformatter.h | static UnlocalizedNumberFormatter icu::number::NumberFormatter::with() | Draft→StableICU 60 +| numberrangeformatter.h | Appendable& icu::number::FormattedNumberRange::appendTo(Appendable&, UErrorCode&) const | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse)&& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback)&& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&)&& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&)&& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&)&& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&)&& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&)&& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&)&& | Draft→StableICU 63 +| numberrangeformatter.h | FormattedNumberRange icu::number::LocalizedNumberRangeFormatter::formatFormattableRange(const Formattable&, const Formattable&, UErrorCode&) const | Draft→StableICU 63 +| numberrangeformatter.h | FormattedNumberRange& icu::number::FormattedNumberRange::operator=(FormattedNumberRange&&) | Draft→StableICU 63 +| numberrangeformatter.h | LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&) const& | Draft→StableICU 63 +| numberrangeformatter.h | LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&)&& | Draft→StableICU 63 +| numberrangeformatter.h | LocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(LocalizedNumberRangeFormatter&&) | Draft→StableICU 63 +| numberrangeformatter.h | LocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(const LocalizedNumberRangeFormatter&) | Draft→StableICU 63 +| numberrangeformatter.h | UBool icu::number::NumberRangeFormatterSettings< Derived >::copyErrorTo(UErrorCode&) const | Draft→StableICU 63 +| numberrangeformatter.h | UNumberRangeIdentityResult icu::number::FormattedNumberRange::getIdentityResult(UErrorCode&) const | Draft→StableICU 63 +| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::toString(UErrorCode&) const | Draft→StableICU 63 +| numberrangeformatter.h | UnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(UnlocalizedNumberRangeFormatter&&) | Draft→StableICU 63 +| numberrangeformatter.h | UnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(const UnlocalizedNumberRangeFormatter&) | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_ALL | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_AUTO | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_NONE | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_UNIT | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUE | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELY | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_RANGE | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_SINGLE_VALUE | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDING | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDING | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_NOT_EQUAL | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::FormattedNumberRange::FormattedNumberRange(FormattedNumberRange&&) | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::FormattedNumberRange::~FormattedNumberRange() | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter()=default | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(LocalizedNumberRangeFormatter&&) | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(const LocalizedNumberRangeFormatter&) | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::~LocalizedNumberRangeFormatter() | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter()=default | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(UnlocalizedNumberRangeFormatter&&) | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(const UnlocalizedNumberRangeFormatter&) | Draft→StableICU 63 +| numberrangeformatter.h | static LocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::withLocale(const Locale&) | Draft→StableICU 63 +| numberrangeformatter.h | static UnlocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::with() | Draft→StableICU 63 +| reldatefmt.h | enum UDateAbsoluteUnit::UDAT_ABSOLUTE_QUARTER | Draft→StableICU 63 +| uchar.h | const UCPMap* u_getIntPropertyMap(UProperty, UErrorCode*) | Draft→StableICU 63 +| uchar.h | const USet* u_getBinaryPropertySet(UProperty, UErrorCode*) | Draft→StableICU 63 +| ucpmap.h | UChar32 ucpmap_getRange(const UCPMap*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*) | Draft→StableICU 63 +| ucpmap.h | enum UCPMapRangeOption::UCPMAP_RANGE_FIXED_ALL_SURROGATES | Draft→StableICU 63 +| ucpmap.h | enum UCPMapRangeOption::UCPMAP_RANGE_FIXED_LEAD_SURROGATES | Draft→StableICU 63 +| ucpmap.h | enum UCPMapRangeOption::UCPMAP_RANGE_NORMAL | Draft→StableICU 63 +| ucpmap.h | uint32_t ucpmap_get(const UCPMap*, UChar32) | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_16 | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_32 | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_8 | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_ASCII_GET | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_FAST_BMP_GET | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_FAST_GET | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_FAST_SUPP_GET | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_FAST_U16_NEXT | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_FAST_U16_PREV | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_FAST_U8_NEXT | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_FAST_U8_PREV | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_SMALL_GET | Draft→StableICU 63 +| ucptrie.h | UCPTrie* ucptrie_openFromBinary(UCPTrieType, UCPTrieValueWidth, const void*, int32_t, int32_t*, UErrorCode*) | Draft→StableICU 63 +| ucptrie.h | UCPTrieType ucptrie_getType(const UCPTrie*) | Draft→StableICU 63 +| ucptrie.h | UCPTrieValueWidth ucptrie_getValueWidth(const UCPTrie*) | Draft→StableICU 63 +| ucptrie.h | UChar32 ucptrie_getRange(const UCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*) | Draft→StableICU 63 +| ucptrie.h | enum UCPTrieType::UCPTRIE_TYPE_ANY | Draft→StableICU 63 +| ucptrie.h | enum UCPTrieType::UCPTRIE_TYPE_FAST | Draft→StableICU 63 +| ucptrie.h | enum UCPTrieType::UCPTRIE_TYPE_SMALL | Draft→StableICU 63 +| ucptrie.h | enum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_16 | Draft→StableICU 63 +| ucptrie.h | enum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_32 | Draft→StableICU 63 +| ucptrie.h | enum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_8 | Draft→StableICU 63 +| ucptrie.h | enum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_ANY | Draft→StableICU 63 +| ucptrie.h | int32_t ucptrie_toBinary(const UCPTrie*, void*, int32_t, UErrorCode*) | Draft→StableICU 63 +| ucptrie.h | uint32_t ucptrie_get(const UCPTrie*, UChar32) | Draft→StableICU 63 +| ucptrie.h | void ucptrie_close(UCPTrie*) | Draft→StableICU 63 +| umutablecptrie.h | UCPTrie* umutablecptrie_buildImmutable(UMutableCPTrie*, UCPTrieType, UCPTrieValueWidth, UErrorCode*) | Draft→StableICU 63 +| umutablecptrie.h | UMutableCPTrie* umutablecptrie_clone(const UMutableCPTrie*, UErrorCode*) | Draft→StableICU 63 +| umutablecptrie.h | UMutableCPTrie* umutablecptrie_fromUCPMap(const UCPMap*, UErrorCode*) | Draft→StableICU 63 +| umutablecptrie.h | UMutableCPTrie* umutablecptrie_fromUCPTrie(const UCPTrie*, UErrorCode*) | Draft→StableICU 63 +| umutablecptrie.h | UMutableCPTrie* umutablecptrie_open(uint32_t, uint32_t, UErrorCode*) | Draft→StableICU 63 +| umutablecptrie.h | UChar32 umutablecptrie_getRange(const UMutableCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*) | Draft→StableICU 63 +| umutablecptrie.h | uint32_t umutablecptrie_get(const UMutableCPTrie*, UChar32) | Draft→StableICU 63 +| umutablecptrie.h | void umutablecptrie_close(UMutableCPTrie*) | Draft→StableICU 63 +| umutablecptrie.h | void umutablecptrie_set(UMutableCPTrie*, UChar32, uint32_t, UErrorCode*) | Draft→StableICU 63 +| umutablecptrie.h | void umutablecptrie_setRange(UMutableCPTrie*, UChar32, UChar32, uint32_t, UErrorCode*) | Draft→StableICU 63 +| unumberformatter.h | enum UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_ALWAYS | Draft→StableICU 60 +| unumberformatter.h | enum UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_AUTO | Draft→StableICU 60 +| unumberformatter.h | enum UNumberGroupingStrategy::UNUM_GROUPING_AUTO | Draft→StableICU 61 +| unumberformatter.h | enum UNumberGroupingStrategy::UNUM_GROUPING_MIN2 | Draft→StableICU 61 +| unumberformatter.h | enum UNumberGroupingStrategy::UNUM_GROUPING_OFF | Draft→StableICU 61 +| unumberformatter.h | enum UNumberGroupingStrategy::UNUM_GROUPING_ON_ALIGNED | Draft→StableICU 61 +| unumberformatter.h | enum UNumberGroupingStrategy::UNUM_GROUPING_THOUSANDS | Draft→StableICU 61 +| unumberformatter.h | enum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_ALWAYS | Draft→StableICU 60 +| unumberformatter.h | enum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO | Draft→StableICU 61 +| unumberformatter.h | enum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING | Draft→StableICU 60 +| unumberformatter.h | enum UNumberSignDisplay::UNUM_SIGN_ALWAYS | Draft→StableICU 60 +| unumberformatter.h | enum UNumberSignDisplay::UNUM_SIGN_AUTO | Draft→StableICU 60 +| unumberformatter.h | enum UNumberSignDisplay::UNUM_SIGN_EXCEPT_ZERO | Draft→StableICU 61 +| unumberformatter.h | enum UNumberSignDisplay::UNUM_SIGN_NEVER | Draft→StableICU 60 +| unumberformatter.h | enum UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME | Draft→StableICU 60 +| unumberformatter.h | enum UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDEN | Draft→StableICU 60 +| unumberformatter.h | enum UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODE | Draft→StableICU 60 +| unumberformatter.h | enum UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROW | Draft→StableICU 60 +| unumberformatter.h | enum UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORT | Draft→StableICU 60 +| uspoof.h | enum USpoofChecks::USPOOF_HIDDEN_OVERLAY | Draft→StableICU 62 +| utf_old.h | #define U_HIDE_OBSOLETE_UTF_OLD_H | DeprecatedICU 2.4 | Internal + +## Promoted + +Promoted to stable in ICU 65 + +| File | API | ICU 64 | ICU 65 | +|---|---|---|---| +| basictz.h | void* icu::BasicTimeZone::clone() const | (missing) | StableICU 3.8 +| datefmt.h | void* icu::DateFormat::clone() const | (missing) | StableICU 2.0 +| decimfmt.h | int32_t icu::DecimalFormat::getMultiplierScale() const | Draft→StableICU 62 +| decimfmt.h | void icu::DecimalFormat::setMultiplierScale(int32_t) | Draft→StableICU 62 +| edits.h | UBool icu::Edits::copyErrorTo(UErrorCode&) const | (missing) | StableICU 59 +| locid.h | Locale& icu::Locale::operator=(Locale&&) | Draft→StableICU 63 +| locid.h | StringClass icu::Locale::getKeywordValue(StringPiece, UErrorCode&) const | Draft→StableICU 63 +| locid.h | StringClass icu::Locale::getUnicodeKeywordValue(StringPiece, UErrorCode&) const | Draft→StableICU 63 +| locid.h | StringClass icu::Locale::toLanguageTag(UErrorCode&) const | Draft→StableICU 63 +| locid.h | StringEnumeration* icu::Locale::createUnicodeKeywords(UErrorCode&) const | Draft→StableICU 63 +| locid.h | icu::Locale::Locale(Locale&&) | Draft→StableICU 63 +| locid.h | static Locale icu::Locale::forLanguageTag(StringPiece, UErrorCode&) | Draft→StableICU 63 +| locid.h | void icu::Locale::addLikelySubtags(UErrorCode&) | Draft→StableICU 63 +| locid.h | void icu::Locale::getKeywordValue(StringPiece, ByteSink&, UErrorCode&) const | Draft→StableICU 63 +| locid.h | void icu::Locale::getKeywords(OutputIterator, UErrorCode&) const | Draft→StableICU 63 +| locid.h | void icu::Locale::getUnicodeKeywordValue(StringPiece, ByteSink&, UErrorCode&) const | Draft→StableICU 63 +| locid.h | void icu::Locale::getUnicodeKeywords(OutputIterator, UErrorCode&) const | Draft→StableICU 63 +| locid.h | void icu::Locale::minimizeSubtags(UErrorCode&) | Draft→StableICU 63 +| locid.h | void icu::Locale::setKeywordValue(StringPiece, StringPiece, UErrorCode&) | Draft→StableICU 63 +| locid.h | void icu::Locale::setUnicodeKeywordValue(StringPiece, StringPiece, UErrorCode&) | Draft→StableICU 63 +| locid.h | void icu::Locale::toLanguageTag(ByteSink&, UErrorCode&) const | Draft→StableICU 63 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createAtmosphere(UErrorCode&) | Draft→StableICU 63 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createPercent(UErrorCode&) | Draft→StableICU 63 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createPermille(UErrorCode&) | Draft→StableICU 63 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createPetabyte(UErrorCode&) | Draft→StableICU 63 +| numberformatter.h | Appendable& icu::number::FormattedNumber::appendTo(Appendable&, UErrorCode&) const | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*) const& | Draft→StableICU 61 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy) const& | Draft→StableICU 61 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&) const& | Draft→StableICU 61 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&) const& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode) const& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&) const& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&)&& | Draft→StableICU 62 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth) const& | Draft→StableICU 60 +| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth)&& | Draft→StableICU 62 +| numberformatter.h | Format* icu::number::LocalizedNumberFormatter::toFormat(UErrorCode&) const | Draft→StableICU 62 +| numberformatter.h | FormattedNumber icu::number::LocalizedNumberFormatter::formatDecimal(StringPiece, UErrorCode&) const | Draft→StableICU 60 +| numberformatter.h | FormattedNumber icu::number::LocalizedNumberFormatter::formatDouble(double, UErrorCode&) const | Draft→StableICU 60 +| numberformatter.h | FormattedNumber icu::number::LocalizedNumberFormatter::formatInt(int64_t, UErrorCode&) const | Draft→StableICU 60 +| numberformatter.h | FormattedNumber& icu::number::FormattedNumber::operator=(FormattedNumber&&) | Draft→StableICU 62 +| numberformatter.h | IntegerWidth icu::number::IntegerWidth::truncateAt(int32_t) | Draft→StableICU 60 +| numberformatter.h | LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&) const& | Draft→StableICU 60 +| numberformatter.h | LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&)&& | Draft→StableICU 62 +| numberformatter.h | LocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(LocalizedNumberFormatter&&) | Draft→StableICU 62 +| numberformatter.h | LocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(const LocalizedNumberFormatter&) | Draft→StableICU 62 +| numberformatter.h | Precision icu::number::CurrencyPrecision::withCurrency(const CurrencyUnit&) const | Draft→StableICU 60 +| numberformatter.h | Precision icu::number::FractionPrecision::withMaxDigits(int32_t) const | Draft→StableICU 60 +| numberformatter.h | Precision icu::number::FractionPrecision::withMinDigits(int32_t) const | Draft→StableICU 60 +| numberformatter.h | Precision icu::number::IncrementPrecision::withMinFraction(int32_t) const | Draft→StableICU 60 +| numberformatter.h | Scale& icu::number::Scale::operator=(Scale&&) | Draft→StableICU 62 +| numberformatter.h | Scale& icu::number::Scale::operator=(const Scale&) | Draft→StableICU 62 +| numberformatter.h | ScientificNotation icu::number::ScientificNotation::withExponentSignDisplay(UNumberSignDisplay) const | Draft→StableICU 60 +| numberformatter.h | ScientificNotation icu::number::ScientificNotation::withMinExponentDigits(int32_t) const | Draft→StableICU 60 +| numberformatter.h | UBool icu::number::NumberFormatterSettings< Derived >::copyErrorTo(UErrorCode&) const | Draft→StableICU 60 +| numberformatter.h | UnicodeString icu::number::FormattedNumber::toString(UErrorCode&) const | Draft→StableICU 62 +| numberformatter.h | UnicodeString icu::number::NumberFormatterSettings< Derived >::toSkeleton(UErrorCode&) const | Draft→StableICU 62 +| numberformatter.h | UnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(UnlocalizedNumberFormatter&&) | Draft→StableICU 62 +| numberformatter.h | UnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(const UnlocalizedNumberFormatter&) | Draft→StableICU 62 +| numberformatter.h | icu::number::FormattedNumber::FormattedNumber(FormattedNumber&&) | Draft→StableICU 62 +| numberformatter.h | icu::number::FormattedNumber::~FormattedNumber() | Draft→StableICU 60 +| numberformatter.h | icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter()=default | Draft→StableICU 62 +| numberformatter.h | icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(LocalizedNumberFormatter&&) | Draft→StableICU 62 +| numberformatter.h | icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(const LocalizedNumberFormatter&) | Draft→StableICU 60 +| numberformatter.h | icu::number::LocalizedNumberFormatter::~LocalizedNumberFormatter() | Draft→StableICU 60 +| numberformatter.h | icu::number::Scale::Scale(Scale&&) | Draft→StableICU 62 +| numberformatter.h | icu::number::Scale::Scale(const Scale&) | Draft→StableICU 62 +| numberformatter.h | icu::number::Scale::~Scale() | Draft→StableICU 62 +| numberformatter.h | icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter()=default | Draft→StableICU 62 +| numberformatter.h | icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(UnlocalizedNumberFormatter&&) | Draft→StableICU 62 +| numberformatter.h | icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(const UnlocalizedNumberFormatter&) | Draft→StableICU 60 +| numberformatter.h | static CompactNotation icu::number::Notation::compactLong() | Draft→StableICU 60 +| numberformatter.h | static CompactNotation icu::number::Notation::compactShort() | Draft→StableICU 60 +| numberformatter.h | static CurrencyPrecision icu::number::Precision::currency(UCurrencyUsage) | Draft→StableICU 60 +| numberformatter.h | static FractionPrecision icu::number::Precision::fixedFraction(int32_t) | Draft→StableICU 60 +| numberformatter.h | static FractionPrecision icu::number::Precision::integer() | Draft→StableICU 60 +| numberformatter.h | static FractionPrecision icu::number::Precision::maxFraction(int32_t) | Draft→StableICU 60 +| numberformatter.h | static FractionPrecision icu::number::Precision::minFraction(int32_t) | Draft→StableICU 60 +| numberformatter.h | static FractionPrecision icu::number::Precision::minMaxFraction(int32_t, int32_t) | Draft→StableICU 60 +| numberformatter.h | static IncrementPrecision icu::number::Precision::increment(double) | Draft→StableICU 60 +| numberformatter.h | static IntegerWidth icu::number::IntegerWidth::zeroFillTo(int32_t) | Draft→StableICU 60 +| numberformatter.h | static LocalizedNumberFormatter icu::number::NumberFormatter::withLocale(const Locale&) | Draft→StableICU 60 +| numberformatter.h | static Precision icu::number::Precision::unlimited() | Draft→StableICU 60 +| numberformatter.h | static Scale icu::number::Scale::byDecimal(StringPiece) | Draft→StableICU 62 +| numberformatter.h | static Scale icu::number::Scale::byDouble(double) | Draft→StableICU 62 +| numberformatter.h | static Scale icu::number::Scale::byDoubleAndPowerOfTen(double, int32_t) | Draft→StableICU 62 +| numberformatter.h | static Scale icu::number::Scale::none() | Draft→StableICU 62 +| numberformatter.h | static Scale icu::number::Scale::powerOfTen(int32_t) | Draft→StableICU 62 +| numberformatter.h | static ScientificNotation icu::number::Notation::engineering() | Draft→StableICU 60 +| numberformatter.h | static ScientificNotation icu::number::Notation::scientific() | Draft→StableICU 60 +| numberformatter.h | static SignificantDigitsPrecision icu::number::Precision::fixedSignificantDigits(int32_t) | Draft→StableICU 62 +| numberformatter.h | static SignificantDigitsPrecision icu::number::Precision::maxSignificantDigits(int32_t) | Draft→StableICU 62 +| numberformatter.h | static SignificantDigitsPrecision icu::number::Precision::minMaxSignificantDigits(int32_t, int32_t) | Draft→StableICU 62 +| numberformatter.h | static SignificantDigitsPrecision icu::number::Precision::minSignificantDigits(int32_t) | Draft→StableICU 62 +| numberformatter.h | static SimpleNotation icu::number::Notation::simple() | Draft→StableICU 60 +| numberformatter.h | static UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&, UErrorCode&) | Draft→StableICU 62 +| numberformatter.h | static UnlocalizedNumberFormatter icu::number::NumberFormatter::with() | Draft→StableICU 60 +| numberrangeformatter.h | Appendable& icu::number::FormattedNumberRange::appendTo(Appendable&, UErrorCode&) const | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse)&& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback)&& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&)&& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&)&& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&)&& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&)&& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&)&& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&) const& | Draft→StableICU 63 +| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&)&& | Draft→StableICU 63 +| numberrangeformatter.h | FormattedNumberRange icu::number::LocalizedNumberRangeFormatter::formatFormattableRange(const Formattable&, const Formattable&, UErrorCode&) const | Draft→StableICU 63 +| numberrangeformatter.h | FormattedNumberRange& icu::number::FormattedNumberRange::operator=(FormattedNumberRange&&) | Draft→StableICU 63 +| numberrangeformatter.h | LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&) const& | Draft→StableICU 63 +| numberrangeformatter.h | LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&)&& | Draft→StableICU 63 +| numberrangeformatter.h | LocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(LocalizedNumberRangeFormatter&&) | Draft→StableICU 63 +| numberrangeformatter.h | LocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(const LocalizedNumberRangeFormatter&) | Draft→StableICU 63 +| numberrangeformatter.h | UBool icu::number::NumberRangeFormatterSettings< Derived >::copyErrorTo(UErrorCode&) const | Draft→StableICU 63 +| numberrangeformatter.h | UNumberRangeIdentityResult icu::number::FormattedNumberRange::getIdentityResult(UErrorCode&) const | Draft→StableICU 63 +| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::toString(UErrorCode&) const | Draft→StableICU 63 +| numberrangeformatter.h | UnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(UnlocalizedNumberRangeFormatter&&) | Draft→StableICU 63 +| numberrangeformatter.h | UnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(const UnlocalizedNumberRangeFormatter&) | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_ALL | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_AUTO | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_NONE | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_UNIT | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUE | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELY | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_RANGE | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_SINGLE_VALUE | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDING | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDING | Draft→StableICU 63 +| numberrangeformatter.h | enum UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_NOT_EQUAL | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::FormattedNumberRange::FormattedNumberRange(FormattedNumberRange&&) | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::FormattedNumberRange::~FormattedNumberRange() | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter()=default | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(LocalizedNumberRangeFormatter&&) | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(const LocalizedNumberRangeFormatter&) | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::~LocalizedNumberRangeFormatter() | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter()=default | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(UnlocalizedNumberRangeFormatter&&) | Draft→StableICU 63 +| numberrangeformatter.h | icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(const UnlocalizedNumberRangeFormatter&) | Draft→StableICU 63 +| numberrangeformatter.h | static LocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::withLocale(const Locale&) | Draft→StableICU 63 +| numberrangeformatter.h | static UnlocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::with() | Draft→StableICU 63 +| numfmt.h | void* icu::NumberFormat::clone() const | (missing) | StableICU 2.0 +| reldatefmt.h | enum UDateAbsoluteUnit::UDAT_ABSOLUTE_QUARTER | Draft→StableICU 63 +| uchar.h | const UCPMap* u_getIntPropertyMap(UProperty, UErrorCode*) | Draft→StableICU 63 +| uchar.h | const USet* u_getBinaryPropertySet(UProperty, UErrorCode*) | Draft→StableICU 63 +| ucpmap.h | UChar32 ucpmap_getRange(const UCPMap*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*) | Draft→StableICU 63 +| ucpmap.h | enum UCPMapRangeOption::UCPMAP_RANGE_FIXED_ALL_SURROGATES | Draft→StableICU 63 +| ucpmap.h | enum UCPMapRangeOption::UCPMAP_RANGE_FIXED_LEAD_SURROGATES | Draft→StableICU 63 +| ucpmap.h | enum UCPMapRangeOption::UCPMAP_RANGE_NORMAL | Draft→StableICU 63 +| ucpmap.h | uint32_t ucpmap_get(const UCPMap*, UChar32) | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_16 | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_32 | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_8 | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_ASCII_GET | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_FAST_BMP_GET | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_FAST_GET | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_FAST_SUPP_GET | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_FAST_U16_NEXT | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_FAST_U16_PREV | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_FAST_U8_NEXT | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_FAST_U8_PREV | Draft→StableICU 63 +| ucptrie.h | #define UCPTRIE_SMALL_GET | Draft→StableICU 63 +| ucptrie.h | UCPTrie* ucptrie_openFromBinary(UCPTrieType, UCPTrieValueWidth, const void*, int32_t, int32_t*, UErrorCode*) | Draft→StableICU 63 +| ucptrie.h | UCPTrieType ucptrie_getType(const UCPTrie*) | Draft→StableICU 63 +| ucptrie.h | UCPTrieValueWidth ucptrie_getValueWidth(const UCPTrie*) | Draft→StableICU 63 +| ucptrie.h | UChar32 ucptrie_getRange(const UCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*) | Draft→StableICU 63 +| ucptrie.h | enum UCPTrieType::UCPTRIE_TYPE_ANY | Draft→StableICU 63 +| ucptrie.h | enum UCPTrieType::UCPTRIE_TYPE_FAST | Draft→StableICU 63 +| ucptrie.h | enum UCPTrieType::UCPTRIE_TYPE_SMALL | Draft→StableICU 63 +| ucptrie.h | enum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_16 | Draft→StableICU 63 +| ucptrie.h | enum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_32 | Draft→StableICU 63 +| ucptrie.h | enum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_8 | Draft→StableICU 63 +| ucptrie.h | enum UCPTrieValueWidth::UCPTRIE_VALUE_BITS_ANY | Draft→StableICU 63 +| ucptrie.h | int32_t ucptrie_toBinary(const UCPTrie*, void*, int32_t, UErrorCode*) | Draft→StableICU 63 +| ucptrie.h | uint32_t ucptrie_get(const UCPTrie*, UChar32) | Draft→StableICU 63 +| ucptrie.h | void ucptrie_close(UCPTrie*) | Draft→StableICU 63 +| umutablecptrie.h | UCPTrie* umutablecptrie_buildImmutable(UMutableCPTrie*, UCPTrieType, UCPTrieValueWidth, UErrorCode*) | Draft→StableICU 63 +| umutablecptrie.h | UMutableCPTrie* umutablecptrie_clone(const UMutableCPTrie*, UErrorCode*) | Draft→StableICU 63 +| umutablecptrie.h | UMutableCPTrie* umutablecptrie_fromUCPMap(const UCPMap*, UErrorCode*) | Draft→StableICU 63 +| umutablecptrie.h | UMutableCPTrie* umutablecptrie_fromUCPTrie(const UCPTrie*, UErrorCode*) | Draft→StableICU 63 +| umutablecptrie.h | UMutableCPTrie* umutablecptrie_open(uint32_t, uint32_t, UErrorCode*) | Draft→StableICU 63 +| umutablecptrie.h | UChar32 umutablecptrie_getRange(const UMutableCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*) | Draft→StableICU 63 +| umutablecptrie.h | uint32_t umutablecptrie_get(const UMutableCPTrie*, UChar32) | Draft→StableICU 63 +| umutablecptrie.h | void umutablecptrie_close(UMutableCPTrie*) | Draft→StableICU 63 +| umutablecptrie.h | void umutablecptrie_set(UMutableCPTrie*, UChar32, uint32_t, UErrorCode*) | Draft→StableICU 63 +| umutablecptrie.h | void umutablecptrie_setRange(UMutableCPTrie*, UChar32, UChar32, uint32_t, UErrorCode*) | Draft→StableICU 63 +| unifilt.h | void* icu::UnicodeFilter::clone() const | (missing) | StableICU 2.4 +| unumberformatter.h | enum UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_ALWAYS | Draft→StableICU 60 +| unumberformatter.h | enum UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_AUTO | Draft→StableICU 60 +| unumberformatter.h | enum UNumberGroupingStrategy::UNUM_GROUPING_AUTO | Draft→StableICU 61 +| unumberformatter.h | enum UNumberGroupingStrategy::UNUM_GROUPING_MIN2 | Draft→StableICU 61 +| unumberformatter.h | enum UNumberGroupingStrategy::UNUM_GROUPING_OFF | Draft→StableICU 61 +| unumberformatter.h | enum UNumberGroupingStrategy::UNUM_GROUPING_ON_ALIGNED | Draft→StableICU 61 +| unumberformatter.h | enum UNumberGroupingStrategy::UNUM_GROUPING_THOUSANDS | Draft→StableICU 61 +| unumberformatter.h | enum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_ALWAYS | Draft→StableICU 60 +| unumberformatter.h | enum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO | Draft→StableICU 61 +| unumberformatter.h | enum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING | Draft→StableICU 60 +| unumberformatter.h | enum UNumberSignDisplay::UNUM_SIGN_ALWAYS | Draft→StableICU 60 +| unumberformatter.h | enum UNumberSignDisplay::UNUM_SIGN_AUTO | Draft→StableICU 60 +| unumberformatter.h | enum UNumberSignDisplay::UNUM_SIGN_EXCEPT_ZERO | Draft→StableICU 61 +| unumberformatter.h | enum UNumberSignDisplay::UNUM_SIGN_NEVER | Draft→StableICU 60 +| unumberformatter.h | enum UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME | Draft→StableICU 60 +| unumberformatter.h | enum UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDEN | Draft→StableICU 60 +| unumberformatter.h | enum UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODE | Draft→StableICU 60 +| unumberformatter.h | enum UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROW | Draft→StableICU 60 +| unumberformatter.h | enum UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORT | Draft→StableICU 60 +| uspoof.h | enum USpoofChecks::USPOOF_HIDDEN_OVERLAY | Draft→StableICU 62 + +## Added + +Added in ICU 65 + +| File | API | ICU 64 | ICU 65 | +|---|---|---|---| +| basictz.h | void* icu::BasicTimeZone::clone() const | (missing) | StableICU 3.8 +| bytestrie.h | BytesTrie& icu::BytesTrie::resetToState64(uint64_t) | (missing) | DraftICU 65 +| bytestrie.h | uint64_t icu::BytesTrie::getState64() const | (missing) | DraftICU 65 +| datefmt.h | void* icu::DateFormat::clone() const | (missing) | StableICU 2.0 +| edits.h | UBool icu::Edits::copyErrorTo(UErrorCode&) const | (missing) | StableICU 59 +| localebuilder.h | UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&) const | (missing) | DraftICU 65 +| localematcher.h | Builder& icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&) | (missing) | DraftICU 65 +| localematcher.h | Builder& icu::LocaleMatcher::Builder::operator=(Builder&&) | (missing) | DraftICU 65 +| localematcher.h | Builder& icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*) | (missing) | DraftICU 65 +| localematcher.h | Builder& icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion) | (missing) | DraftICU 65 +| localematcher.h | Builder& icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag) | (missing) | DraftICU 65 +| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter) | (missing) | DraftICU 65 +| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&) | (missing) | DraftICU 65 +| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece) | (missing) | DraftICU 65 +| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv) | (missing) | DraftICU 65 +| localematcher.h | Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&) const | (missing) | DraftICU 65 +| localematcher.h | LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&) const | (missing) | DraftICU 65 +| localematcher.h | LocaleMatcher& icu::LocaleMatcher::operator=(LocaleMatcher&&) | (missing) | DraftICU 65 +| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&, UErrorCode&) const | (missing) | DraftICU 65 +| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(const Locale&, UErrorCode&) const | (missing) | DraftICU 65 +| localematcher.h | Result& icu::LocaleMatcher::Result::operator=(Result&&) | (missing) | DraftICU 65 +| localematcher.h | UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&) const | (missing) | DraftICU 65 +| localematcher.h | const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const | (missing) | DraftICU 65 +| localematcher.h | const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const | (missing) | DraftICU 65 +| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&, UErrorCode&) const | (missing) | DraftICU 65 +| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(const Locale&, UErrorCode&) const | (missing) | DraftICU 65 +| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&) const | (missing) | DraftICU 65 +| localematcher.h | double icu::LocaleMatcher::internalMatch(const Locale&, const Locale&, UErrorCode&) const | (missing) | Internal +| localematcher.h | enum ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE | (missing) | DraftICU 65 +| localematcher.h | enum ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION | (missing) | DraftICU 65 +| localematcher.h | enum ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE | (missing) | DraftICU 65 +| localematcher.h | enum ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT | (missing) | DraftICU 65 +| localematcher.h | icu::LocaleMatcher::Builder::Builder() | (missing) | DraftICU 65 +| localematcher.h | icu::LocaleMatcher::Builder::Builder(Builder&&) | (missing) | DraftICU 65 +| localematcher.h | icu::LocaleMatcher::Builder::~Builder() | (missing) | DraftICU 65 +| localematcher.h | icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&&) | (missing) | DraftICU 65 +| localematcher.h | icu::LocaleMatcher::Result::Result(Result&&) | (missing) | DraftICU 65 +| localematcher.h | icu::LocaleMatcher::Result::~Result() | (missing) | DraftICU 65 +| localematcher.h | icu::LocaleMatcher::~LocaleMatcher() | (missing) | DraftICU 65 +| localematcher.h | int32_t icu::LocaleMatcher::Result::getDesiredIndex() const | (missing) | DraftICU 65 +| localematcher.h | int32_t icu::LocaleMatcher::Result::getSupportedIndex() const | (missing) | DraftICU 65 +| locid.h | UBool icu::Locale::ConvertingIterator< Iter, Conv >::hasNext() const override | (missing) | DraftICU 65 +| locid.h | UBool icu::Locale::Iterator::hasNext() const | (missing) | DraftICU 65 +| locid.h | UBool icu::Locale::RangeIterator< Iter >::hasNext() const override | (missing) | DraftICU 65 +| locid.h | const Locale& icu::Locale::ConvertingIterator< Iter, Conv >::next() override | (missing) | DraftICU 65 +| locid.h | const Locale& icu::Locale::Iterator::next() | (missing) | DraftICU 65 +| locid.h | const Locale& icu::Locale::RangeIterator< Iter >::next() override | (missing) | DraftICU 65 +| locid.h | icu::Locale::ConvertingIterator< Iter, Conv >::ConvertingIterator(Iter, Iter, Conv) | (missing) | DraftICU 65 +| locid.h | icu::Locale::Iterator::~Iterator() | (missing) | DraftICU 65 +| locid.h | icu::Locale::RangeIterator< Iter >::RangeIterator(Iter, Iter) | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit icu::MeasureUnit::getBar() | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit icu::MeasureUnit::getDecade() | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit icu::MeasureUnit::getDotPerCentimeter() | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit icu::MeasureUnit::getDotPerInch() | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit icu::MeasureUnit::getEm() | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit icu::MeasureUnit::getMegapixel() | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit icu::MeasureUnit::getPascal() | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit icu::MeasureUnit::getPixel() | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit icu::MeasureUnit::getPixelPerCentimeter() | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit icu::MeasureUnit::getPixelPerInch() | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit icu::MeasureUnit::getThermUs() | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&) | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&) | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&) | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&) | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&) | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&) | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&) | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&) | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&) | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&) | (missing) | DraftICU 65 +| measunit.h | static MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&) | (missing) | DraftICU 65 +| numberformatter.h | StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&) const | (missing) | DraftICU 65 +| numfmt.h | void* icu::NumberFormat::clone() const | (missing) | StableICU 2.0 +| platform.h | #define UPRV_HAS_ATTRIBUTE | (missing) | Internal +| platform.h | #define UPRV_HAS_BUILTIN | (missing) | Internal +| platform.h | #define UPRV_HAS_CPP_ATTRIBUTE | (missing) | Internal +| platform.h | #define UPRV_HAS_DECLSPEC_ATTRIBUTE | (missing) | Internal +| platform.h | #define UPRV_HAS_EXTENSION | (missing) | Internal +| platform.h | #define UPRV_HAS_FEATURE | (missing) | Internal +| platform.h | #define UPRV_HAS_WARNING | (missing) | Internal +| platform.h | #define U_PF_EMSCRIPTEN | (missing) | Internal +| reldatefmt.h | enum UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR | (missing) | DraftICU 65 +| reldatefmt.h | enum UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE | (missing) | DraftICU 65 +| stringpiece.h | icu::StringPiece::StringPiece(T) | (missing) | DraftICU 65 +| ucal.h | int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*) | (missing) | DraftICU 65 +| ucharstrie.h | UCharsTrie& icu::UCharsTrie::resetToState64(uint64_t) | (missing) | DraftICU 65 +| ucharstrie.h | uint64_t icu::UCharsTrie::getState64() const | (missing) | DraftICU 65 +| uloc.h | UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*) | (missing) | DraftICU 65 +| uloc.h | enum ULocAvailableType::ULOC_AVAILABLE_COUNT | (missing) | Internal +| uloc.h | enum ULocAvailableType::ULOC_AVAILABLE_DEFAULT | (missing) | DraftICU 65 +| uloc.h | enum ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES | (missing) | DraftICU 65 +| uloc.h | enum ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES | (missing) | DraftICU 65 +| umachine.h | #define UPRV_BLOCK_MACRO_BEGIN | (missing) | Internal +| umachine.h | #define UPRV_BLOCK_MACRO_END | (missing) | Internal +| unifilt.h | void* icu::UnicodeFilter::clone() const | (missing) | StableICU 2.4 +| utrace.h | enum UTraceFunctionNumber::UTRACE_RES_DATA_LIMIT | (missing) | Internal +| utrace.h | enum UTraceFunctionNumber::UTRACE_UDATA_BUNDLE | (missing) | DraftICU 65 +| utrace.h | enum UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE | (missing) | DraftICU 65 +| utrace.h | enum UTraceFunctionNumber::UTRACE_UDATA_RESOURCE | (missing) | DraftICU 65 +| utrace.h | enum UTraceFunctionNumber::UTRACE_UDATA_RES_FILE | (missing) | DraftICU 65 +| utrace.h | enum UTraceFunctionNumber::UTRACE_UDATA_START | (missing) | DraftICU 65 + +## Other + +Other existing drafts in ICU 65 + +| File | API | ICU 64 | ICU 65 | +|---|---|---|---| +| currunit.h | icu::CurrencyUnit::CurrencyUnit(StringPiece, UErrorCode&) | DraftICU 64 | +| decimfmt.h | UBool icu::DecimalFormat::isFormatFailIfMoreThanMaxDigits() const | DraftICU 64 | +| decimfmt.h | UBool icu::DecimalFormat::isParseCaseSensitive() const | DraftICU 64 | +| decimfmt.h | UBool icu::DecimalFormat::isParseNoExponent() const | DraftICU 64 | +| decimfmt.h | UBool icu::DecimalFormat::isSignAlwaysShown() const | DraftICU 64 | +| decimfmt.h | const number::LocalizedNumberFormatter* icu::DecimalFormat::toNumberFormatter(UErrorCode&) const | DraftICU 64 | +| decimfmt.h | int32_t icu::DecimalFormat::getMinimumGroupingDigits() const | DraftICU 64 | +| decimfmt.h | void icu::DecimalFormat::setFormatFailIfMoreThanMaxDigits(UBool) | DraftICU 64 | +| decimfmt.h | void icu::DecimalFormat::setMinimumGroupingDigits(int32_t) | DraftICU 64 | +| decimfmt.h | void icu::DecimalFormat::setParseCaseSensitive(UBool) | DraftICU 64 | +| decimfmt.h | void icu::DecimalFormat::setParseNoExponent(UBool) | DraftICU 64 | +| decimfmt.h | void icu::DecimalFormat::setSignAlwaysShown(UBool) | DraftICU 64 | +| dtitvfmt.h | Appendable& icu::FormattedDateInterval::appendTo(Appendable&, UErrorCode&) const | DraftICU 64 | +| dtitvfmt.h | FormattedDateInterval icu::DateIntervalFormat::formatToValue(Calendar&, Calendar&, UErrorCode&) const | DraftICU 64 | +| dtitvfmt.h | FormattedDateInterval icu::DateIntervalFormat::formatToValue(const DateInterval&, UErrorCode&) const | DraftICU 64 | +| dtitvfmt.h | FormattedDateInterval& icu::FormattedDateInterval::operator=(FormattedDateInterval&&) | DraftICU 64 | +| dtitvfmt.h | UBool icu::FormattedDateInterval::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const | DraftICU 64 | +| dtitvfmt.h | UnicodeString icu::FormattedDateInterval::toString(UErrorCode&) const | DraftICU 64 | +| dtitvfmt.h | UnicodeString icu::FormattedDateInterval::toTempString(UErrorCode&) const | DraftICU 64 | +| dtitvfmt.h | icu::FormattedDateInterval::FormattedDateInterval() | DraftICU 64 | +| dtitvfmt.h | icu::FormattedDateInterval::FormattedDateInterval(FormattedDateInterval&&) | DraftICU 64 | +| dtitvfmt.h | icu::FormattedDateInterval::~FormattedDateInterval() | DraftICU 64 | +| formattedvalue.h | Appendable& icu::FormattedValue::appendTo(Appendable&, UErrorCode&) const | DraftICU 64 | +| formattedvalue.h | UBool icu::ConstrainedFieldPosition::matchesField(int32_t, int32_t) const | DraftICU 64 | +| formattedvalue.h | UBool icu::FormattedValue::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const | DraftICU 64 | +| formattedvalue.h | UnicodeString icu::FormattedValue::toString(UErrorCode&) const | DraftICU 64 | +| formattedvalue.h | UnicodeString icu::FormattedValue::toTempString(UErrorCode&) const | DraftICU 64 | +| formattedvalue.h | icu::ConstrainedFieldPosition::ConstrainedFieldPosition() | DraftICU 64 | +| formattedvalue.h | icu::ConstrainedFieldPosition::~ConstrainedFieldPosition() | DraftICU 64 | +| formattedvalue.h | icu::FormattedValue::~FormattedValue() | DraftICU 64 | +| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getCategory() const | DraftICU 64 | +| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getField() const | DraftICU 64 | +| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getLimit() const | DraftICU 64 | +| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getStart() const | DraftICU 64 | +| formattedvalue.h | int64_t icu::ConstrainedFieldPosition::getInt64IterationContext() const | DraftICU 64 | +| formattedvalue.h | void icu::ConstrainedFieldPosition::constrainCategory(int32_t) | DraftICU 64 | +| formattedvalue.h | void icu::ConstrainedFieldPosition::constrainField(int32_t, int32_t) | DraftICU 64 | +| formattedvalue.h | void icu::ConstrainedFieldPosition::reset() | DraftICU 64 | +| formattedvalue.h | void icu::ConstrainedFieldPosition::setInt64IterationContext(int64_t) | DraftICU 64 | +| formattedvalue.h | void icu::ConstrainedFieldPosition::setState(int32_t, int32_t, int32_t, int32_t) | DraftICU 64 | +| listformatter.h | Appendable& icu::FormattedList::appendTo(Appendable&, UErrorCode&) const | DraftICU 64 | +| listformatter.h | FormattedList icu::ListFormatter::formatStringsToValue(const UnicodeString items[], int32_t, UErrorCode&) const | DraftICU 64 | +| listformatter.h | FormattedList& icu::FormattedList::operator=(FormattedList&&) | DraftICU 64 | +| listformatter.h | UBool icu::FormattedList::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const | DraftICU 64 | +| listformatter.h | UnicodeString icu::FormattedList::toString(UErrorCode&) const | DraftICU 64 | +| listformatter.h | UnicodeString icu::FormattedList::toTempString(UErrorCode&) const | DraftICU 64 | +| listformatter.h | UnicodeString& icu::ListFormatter::format(const UnicodeString items[], int32_t, UnicodeString&, FieldPositionIterator*, UErrorCode&) const | DraftICU 63 | +| listformatter.h | icu::FormattedList::FormattedList() | DraftICU 64 | +| listformatter.h | icu::FormattedList::FormattedList(FormattedList&&) | DraftICU 64 | +| listformatter.h | icu::FormattedList::~FormattedList() | DraftICU 64 | +| localebuilder.h | Locale icu::LocaleBuilder::build(UErrorCode&) | DraftICU 64 | +| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::addUnicodeLocaleAttribute(StringPiece) | DraftICU 64 | +| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::clear() | DraftICU 64 | +| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::clearExtensions() | DraftICU 64 | +| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::removeUnicodeLocaleAttribute(StringPiece) | DraftICU 64 | +| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setExtension(char, StringPiece) | DraftICU 64 | +| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setLanguage(StringPiece) | DraftICU 64 | +| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setLanguageTag(StringPiece) | DraftICU 64 | +| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setLocale(const Locale&) | DraftICU 64 | +| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setRegion(StringPiece) | DraftICU 64 | +| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setScript(StringPiece) | DraftICU 64 | +| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setUnicodeLocaleKeyword(StringPiece, StringPiece) | DraftICU 64 | +| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setVariant(StringPiece) | DraftICU 64 | +| localebuilder.h | icu::LocaleBuilder::LocaleBuilder() | DraftICU 64 | +| localebuilder.h | icu::LocaleBuilder::~LocaleBuilder() | DraftICU 64 | +| localpointer.h | LocalArray<T>& icu::LocalArray< T >::operator=(std::unique_ptr< T[]>&&) | DraftICU 64 | +| localpointer.h | LocalPointer<T>& icu::LocalPointer< T >::operator=(std::unique_ptr< T >&&) | DraftICU 64 | +| localpointer.h | icu::LocalArray< T >::LocalArray(std::unique_ptr< T[]>&&) | DraftICU 64 | +| localpointer.h | icu::LocalArray< T >::operator std::unique_ptr< T[]>() && | DraftICU 64 | +| localpointer.h | icu::LocalPointer< T >::LocalPointer(std::unique_ptr< T >&&) | DraftICU 64 | +| localpointer.h | icu::LocalPointer< T >::operator std::unique_ptr< T >() && | DraftICU 64 | +| measfmt.h | void icu::MeasureFormat::parseObject(const UnicodeString&, Formattable&, ParsePosition&) const | DraftICU 53 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getAcre() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getAcreFoot() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getAmpere() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getArcMinute() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getArcSecond() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getAstronomicalUnit() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getAtmosphere() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getBarrel() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getBit() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getBritishThermalUnit() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getBushel() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getByte() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getCalorie() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getCarat() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getCelsius() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getCentiliter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getCentimeter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getCentury() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getCubicCentimeter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getCubicFoot() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getCubicInch() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getCubicKilometer() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getCubicMeter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getCubicMile() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getCubicYard() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getCup() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getCupMetric() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getDalton() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getDay() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getDayPerson() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getDeciliter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getDecimeter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getDegree() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getDunam() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getEarthMass() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getElectronvolt() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getFahrenheit() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getFathom() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getFluidOunce() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getFluidOunceImperial() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getFoodcalorie() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getFoot() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getFurlong() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getGForce() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getGallon() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getGallonImperial() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getGenericTemperature() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getGigabit() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getGigabyte() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getGigahertz() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getGigawatt() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getGram() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getHectare() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getHectoliter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getHectopascal() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getHertz() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getHorsepower() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getHour() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getInch() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getInchHg() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getJoule() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getKarat() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getKelvin() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getKilobit() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getKilobyte() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getKilocalorie() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getKilogram() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getKilohertz() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getKilojoule() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getKilometer() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getKilometerPerHour() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getKilopascal() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getKilowatt() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getKilowattHour() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getKnot() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getLightYear() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getLiter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getLiterPer100Kilometers() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getLiterPerKilometer() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getLux() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMegabit() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMegabyte() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMegahertz() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMegaliter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMegapascal() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMegawatt() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMeter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMeterPerSecond() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMeterPerSecondSquared() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMetricTon() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMicrogram() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMicrometer() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMicrosecond() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMile() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMilePerGallon() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMilePerGallonImperial() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMilePerHour() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMileScandinavian() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMilliampere() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMillibar() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMilligram() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMilligramPerDeciliter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMilliliter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMillimeter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMillimeterOfMercury() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMillimolePerLiter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMillisecond() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMilliwatt() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMinute() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMole() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMonth() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getMonthPerson() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getNanometer() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getNanosecond() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getNauticalMile() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getNewton() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getNewtonMeter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getOhm() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getOunce() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getOunceTroy() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getParsec() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getPartPerMillion() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getPercent() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getPermille() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getPermyriad() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getPetabyte() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getPicometer() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getPint() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getPintMetric() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getPoint() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getPound() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getPoundFoot() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getPoundForce() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getPoundPerSquareInch() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getQuart() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getRadian() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getRevolutionAngle() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getSecond() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getSolarLuminosity() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getSolarMass() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getSolarRadius() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getSquareCentimeter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getSquareFoot() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getSquareInch() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getSquareKilometer() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getSquareMeter() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getSquareMile() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getSquareYard() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getStone() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getTablespoon() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getTeaspoon() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getTerabit() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getTerabyte() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getTon() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getVolt() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getWatt() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getWeek() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getWeekPerson() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getYard() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getYear() | DraftICU 64 | +| measunit.h | static MeasureUnit icu::MeasureUnit::getYearPerson() | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createBarrel(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createBritishThermalUnit(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createDalton(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createDayPerson(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createDunam(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createEarthMass(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createElectronvolt(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createFluidOunceImperial(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createKilopascal(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createMegapascal(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createMole(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createMonthPerson(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createNewton(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createNewtonMeter(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createPermyriad(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createPoundFoot(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createPoundForce(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createSolarLuminosity(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createSolarMass(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createSolarRadius(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createWeekPerson(UErrorCode&) | DraftICU 64 | +| measunit.h | static MeasureUnit* icu::MeasureUnit::createYearPerson(UErrorCode&) | DraftICU 64 | +| nounit.h | UClassID icu::NoUnit::getDynamicClassID() const | DraftICU 60 | +| nounit.h | icu::NoUnit::NoUnit(const NoUnit&) | DraftICU 60 | +| nounit.h | icu::NoUnit::~NoUnit() | DraftICU 60 | +| nounit.h | static NoUnit icu::NoUnit::base() | DraftICU 60 | +| nounit.h | static NoUnit icu::NoUnit::percent() | DraftICU 60 | +| nounit.h | static NoUnit icu::NoUnit::permille() | DraftICU 60 | +| nounit.h | static UClassID icu::NoUnit::getStaticClassID() | DraftICU 60 | +| nounit.h | void* icu::NoUnit::clone() const | DraftICU 60 | +| numberformatter.h | LocalPointer<Derived> icu::number::NumberFormatterSettings< Derived >::clone() && | DraftICU 64 | +| numberformatter.h | LocalPointer<Derived> icu::number::NumberFormatterSettings< Derived >::clone() const & | DraftICU 64 | +| numberformatter.h | UBool icu::number::FormattedNumber::nextFieldPosition(FieldPosition&, UErrorCode&) const | DraftICU 62 | +| numberformatter.h | UBool icu::number::FormattedNumber::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const | DraftICU 64 | +| numberformatter.h | UnicodeString icu::number::FormattedNumber::toTempString(UErrorCode&) const | DraftICU 64 | +| numberformatter.h | icu::number::FormattedNumber::FormattedNumber() | DraftICU 64 | +| numberformatter.h | static UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&, UParseError&, UErrorCode&) | DraftICU 64 | +| numberformatter.h | void icu::number::FormattedNumber::getAllFieldPositions(FieldPositionIterator&, UErrorCode&) const | DraftICU 62 | +| numberrangeformatter.h | LocalPointer<Derived> icu::number::NumberRangeFormatterSettings< Derived >::clone() && | DraftICU 64 | +| numberrangeformatter.h | LocalPointer<Derived> icu::number::NumberRangeFormatterSettings< Derived >::clone() const & | DraftICU 64 | +| numberrangeformatter.h | UBool icu::number::FormattedNumberRange::nextFieldPosition(FieldPosition&, UErrorCode&) const | DraftICU 63 | +| numberrangeformatter.h | UBool icu::number::FormattedNumberRange::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const | DraftICU 64 | +| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&) const | DraftICU 63 | +| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&) const | DraftICU 63 | +| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::toTempString(UErrorCode&) const | DraftICU 64 | +| numberrangeformatter.h | void icu::number::FormattedNumberRange::getAllFieldPositions(FieldPositionIterator&, UErrorCode&) const | DraftICU 63 | +| numfmt.h | enum icu::NumberFormat::EAlignmentFields::kCompactField | DraftICU 64 | +| numfmt.h | enum icu::NumberFormat::EAlignmentFields::kMeasureUnitField | DraftICU 64 | +| plurrule.h | UnicodeString icu::PluralRules::select(const number::FormattedNumber&, UErrorCode&) const | DraftICU 64 | +| reldatefmt.h | Appendable& icu::FormattedRelativeDateTime::appendTo(Appendable&, UErrorCode&) const | DraftICU 64 | +| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatNumericToValue(double, URelativeDateTimeUnit, UErrorCode&) const | DraftICU 64 | +| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(UDateDirection, UDateAbsoluteUnit, UErrorCode&) const | DraftICU 64 | +| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, UDateDirection, UDateRelativeUnit, UErrorCode&) const | DraftICU 64 | +| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, URelativeDateTimeUnit, UErrorCode&) const | DraftICU 64 | +| reldatefmt.h | FormattedRelativeDateTime& icu::FormattedRelativeDateTime::operator=(FormattedRelativeDateTime&&) | DraftICU 64 | +| reldatefmt.h | UBool icu::FormattedRelativeDateTime::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const | DraftICU 64 | +| reldatefmt.h | UnicodeString icu::FormattedRelativeDateTime::toString(UErrorCode&) const | DraftICU 64 | +| reldatefmt.h | UnicodeString icu::FormattedRelativeDateTime::toTempString(UErrorCode&) const | DraftICU 64 | +| reldatefmt.h | icu::FormattedRelativeDateTime::FormattedRelativeDateTime() | DraftICU 64 | +| reldatefmt.h | icu::FormattedRelativeDateTime::FormattedRelativeDateTime(FormattedRelativeDateTime&&) | DraftICU 64 | +| reldatefmt.h | icu::FormattedRelativeDateTime::~FormattedRelativeDateTime() | DraftICU 64 | +| udateintervalformat.h | UFormattedDateInterval* udtitvfmt_openResult(UErrorCode*) | DraftICU 64 | +| udateintervalformat.h | const UFormattedValue* udtitvfmt_resultAsValue(const UFormattedDateInterval*, UErrorCode*) | DraftICU 64 | +| udateintervalformat.h | void udtitvfmt_closeResult(UFormattedDateInterval*) | DraftICU 64 | +| udateintervalformat.h | void udtitvfmt_formatToResult(const UDateIntervalFormat*, UFormattedDateInterval*, UDate, UDate, UErrorCode*) | DraftICU 64 | +| uformattedvalue.h | UBool ucfpos_matchesField(const UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*) | DraftICU 64 | +| uformattedvalue.h | UBool ufmtval_nextPosition(const UFormattedValue*, UConstrainedFieldPosition*, UErrorCode*) | DraftICU 64 | +| uformattedvalue.h | UConstrainedFieldPosition* ucfpos_open(UErrorCode*) | DraftICU 64 | +| uformattedvalue.h | const UChar* ufmtval_getString(const UFormattedValue*, int32_t*, UErrorCode*) | DraftICU 64 | +| uformattedvalue.h | enum UFieldCategory::UFIELD_CATEGORY_DATE_INTERVAL_SPAN | DraftICU 64 | +| uformattedvalue.h | enum UFieldCategory::UFIELD_CATEGORY_DATE | DraftICU 64 | +| uformattedvalue.h | enum UFieldCategory::UFIELD_CATEGORY_LIST_SPAN | DraftICU 64 | +| uformattedvalue.h | enum UFieldCategory::UFIELD_CATEGORY_LIST | DraftICU 64 | +| uformattedvalue.h | enum UFieldCategory::UFIELD_CATEGORY_NUMBER | DraftICU 64 | +| uformattedvalue.h | enum UFieldCategory::UFIELD_CATEGORY_RELATIVE_DATETIME | DraftICU 64 | +| uformattedvalue.h | enum UFieldCategory::UFIELD_CATEGORY_UNDEFINED | DraftICU 64 | +| uformattedvalue.h | int32_t ucfpos_getCategory(const UConstrainedFieldPosition*, UErrorCode*) | DraftICU 64 | +| uformattedvalue.h | int32_t ucfpos_getField(const UConstrainedFieldPosition*, UErrorCode*) | DraftICU 64 | +| uformattedvalue.h | int64_t ucfpos_getInt64IterationContext(const UConstrainedFieldPosition*, UErrorCode*) | DraftICU 64 | +| uformattedvalue.h | void ucfpos_close(UConstrainedFieldPosition*) | DraftICU 64 | +| uformattedvalue.h | void ucfpos_constrainCategory(UConstrainedFieldPosition*, int32_t, UErrorCode*) | DraftICU 64 | +| uformattedvalue.h | void ucfpos_constrainField(UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*) | DraftICU 64 | +| uformattedvalue.h | void ucfpos_getIndexes(const UConstrainedFieldPosition*, int32_t*, int32_t*, UErrorCode*) | DraftICU 64 | +| uformattedvalue.h | void ucfpos_reset(UConstrainedFieldPosition*, UErrorCode*) | DraftICU 64 | +| uformattedvalue.h | void ucfpos_setInt64IterationContext(UConstrainedFieldPosition*, int64_t, UErrorCode*) | DraftICU 64 | +| uformattedvalue.h | void ucfpos_setState(UConstrainedFieldPosition*, int32_t, int32_t, int32_t, int32_t, UErrorCode*) | DraftICU 64 | +| ulistformatter.h | UFormattedList* ulistfmt_openResult(UErrorCode*) | DraftICU 64 | +| ulistformatter.h | const UFormattedValue* ulistfmt_resultAsValue(const UFormattedList*, UErrorCode*) | DraftICU 64 | +| ulistformatter.h | enum UListFormatterField::ULISTFMT_ELEMENT_FIELD | DraftICU 63 | +| ulistformatter.h | enum UListFormatterField::ULISTFMT_LITERAL_FIELD | DraftICU 63 | +| ulistformatter.h | void ulistfmt_closeResult(UFormattedList*) | DraftICU 64 | +| ulistformatter.h | void ulistfmt_formatStringsToResult(const UListFormatter*, const UChar* const strings[], const int32_t*, int32_t, UFormattedList*, UErrorCode*) | DraftICU 64 | +| unum.h | enum UNumberFormatAttribute::UNUM_MINIMUM_GROUPING_DIGITS | DraftICU 64 | +| unum.h | enum UNumberFormatAttribute::UNUM_PARSE_CASE_SENSITIVE | DraftICU 64 | +| unum.h | enum UNumberFormatAttribute::UNUM_SIGN_ALWAYS_SHOWN | DraftICU 64 | +| unum.h | enum UNumberFormatFields::UNUM_COMPACT_FIELD | DraftICU 64 | +| unum.h | enum UNumberFormatFields::UNUM_MEASURE_UNIT_FIELD | DraftICU 64 | +| unumberformatter.h | UNumberFormatter* unumf_openForSkeletonAndLocaleWithError(const UChar*, int32_t, const char*, UParseError*, UErrorCode*) | DraftICU 64 | +| unumberformatter.h | const UFormattedValue* unumf_resultAsValue(const UFormattedNumber*, UErrorCode*) | DraftICU 64 | +| upluralrules.h | int32_t uplrules_selectFormatted(const UPluralRules*, const struct UFormattedNumber*, UChar*, int32_t, UErrorCode*) | DraftICU 64 | +| uregex.h | enum URegexpFlag::UREGEX_CANON_EQ | DraftICU 2.4 | +| ureldatefmt.h | UFormattedRelativeDateTime* ureldatefmt_openResult(UErrorCode*) | DraftICU 64 | +| ureldatefmt.h | const UFormattedValue* ureldatefmt_resultAsValue(const UFormattedRelativeDateTime*, UErrorCode*) | DraftICU 64 | +| ureldatefmt.h | enum URelativeDateTimeFormatterField::UDAT_REL_LITERAL_FIELD | DraftICU 64 | +| ureldatefmt.h | enum URelativeDateTimeFormatterField::UDAT_REL_NUMERIC_FIELD | DraftICU 64 | +| ureldatefmt.h | void ureldatefmt_closeResult(UFormattedRelativeDateTime*) | DraftICU 64 | +| ureldatefmt.h | void ureldatefmt_formatNumericToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*) | DraftICU 64 | +| ureldatefmt.h | void ureldatefmt_formatToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*) | DraftICU 64 | + +## Simplifications + +This section shows cases where the signature was "simplified" for the sake of comparison. The simplified form is in bold, followed by + all possible variations in "original" form. + +- **`void* icu::ChoiceFormat::clone() const`** + - `ChoiceFormat* icu::ChoiceFormat::clone() const` + - `Format* icu::ChoiceFormat::clone() const` +- **`void* icu::CompactDecimalFormat::clone() const`** + - `CompactDecimalFormat* icu::CompactDecimalFormat::clone() const U_OVERRIDE` + - `Format* icu::CompactDecimalFormat::clone() const U_OVERRIDE` +- **`void* icu::CurrencyAmount::clone() const`** + - `CurrencyAmount* icu::CurrencyAmount::clone() const` + - `UObject* icu::CurrencyAmount::clone() const` +- **`void* icu::CurrencyUnit::clone() const`** + - `CurrencyUnit* icu::CurrencyUnit::clone() const` + - `UObject* icu::CurrencyUnit::clone() const` +- **`void* icu::DateIntervalFormat::clone() const`** + - `DateIntervalFormat* icu::DateIntervalFormat::clone() const` + - `Format* icu::DateIntervalFormat::clone() const` +- **`void* icu::DecimalFormat::clone() const`** + - `DecimalFormat* icu::DecimalFormat::clone() const U_OVERRIDE` + - `Format* icu::DecimalFormat::clone() const U_OVERRIDE` +- **`void* icu::GregorianCalendar::clone() const`** + - `Calendar* icu::GregorianCalendar::clone() const` + - `GregorianCalendar* icu::GregorianCalendar::clone() const` +- **`void* icu::Measure::clone() const`** + - `Measure* icu::Measure::clone() const` + - `UObject* icu::Measure::clone() const` +- **`void* icu::MeasureFormat::clone() const`** + - `Format* icu::MeasureFormat::clone() const` + - `MeasureFormat* icu::MeasureFormat::clone() const` +- **`void* icu::MeasureUnit::clone() const`** + - `MeasureUnit* icu::MeasureUnit::clone() const` + - `UObject* icu::MeasureUnit::clone() const` +- **`void* icu::MessageFormat::clone() const`** + - `Format* icu::MessageFormat::clone() const` + - `MessageFormat* icu::MessageFormat::clone() const` +- **`void* icu::NoUnit::clone() const`** + - `NoUnit* icu::NoUnit::clone() const` + - `UObject* icu::NoUnit::clone() const` +- **`void* icu::PluralFormat::clone() const`** + - `Format* icu::PluralFormat::clone() const` + - `PluralFormat* icu::PluralFormat::clone() const` +- **`void* icu::RuleBasedBreakIterator::clone() const`** + - `BreakIterator* icu::RuleBasedBreakIterator::clone() const` + - `RuleBasedBreakIterator* icu::RuleBasedBreakIterator::clone() const` +- **`void* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)`** + - `BreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)` + - `RuleBasedBreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)` +- **`void* icu::RuleBasedCollator::clone() const`** + - `Collator* icu::RuleBasedCollator::clone() const` + - `RuleBasedCollator* icu::RuleBasedCollator::clone() const` +- **`void* icu::RuleBasedNumberFormat::clone() const`** + - `Format* icu::RuleBasedNumberFormat::clone() const` + - `RuleBasedNumberFormat* icu::RuleBasedNumberFormat::clone() const` +- **`void* icu::RuleBasedTimeZone::clone() const`** + - `RuleBasedTimeZone* icu::RuleBasedTimeZone::clone() const` + - `TimeZone* icu::RuleBasedTimeZone::clone() const` +- **`void* icu::SelectFormat::clone() const`** + - `Format* icu::SelectFormat::clone() const` + - `SelectFormat* icu::SelectFormat::clone() const` +- **`void* icu::SimpleDateFormat::clone() const`** + - `Format* icu::SimpleDateFormat::clone() const` + - `SimpleDateFormat* icu::SimpleDateFormat::clone() const` +- **`void* icu::SimpleTimeZone::clone() const`** + - `SimpleTimeZone* icu::SimpleTimeZone::clone() const` + - `TimeZone* icu::SimpleTimeZone::clone() const` +- **`void* icu::StringCharacterIterator::clone() const`** + - `CharacterIterator* icu::StringCharacterIterator::clone() const` + - `StringCharacterIterator* icu::StringCharacterIterator::clone() const` +- **`void* icu::StringSearch::safeClone() const`** + - `SearchIterator* icu::StringSearch::safeClone() const` + - `StringSearch* icu::StringSearch::safeClone() const` +- **`void* icu::TimeUnit::clone() const`** + - `TimeUnit* icu::TimeUnit::clone() const` + - `UObject* icu::TimeUnit::clone() const` +- **`void* icu::TimeUnitAmount::clone() const`** + - `TimeUnitAmount* icu::TimeUnitAmount::clone() const` + - `UObject* icu::TimeUnitAmount::clone() const` +- **`void* icu::TimeUnitFormat::clone() const`** + - `Format* icu::TimeUnitFormat::clone() const` + - `TimeUnitFormat* icu::TimeUnitFormat::clone() const` +- **`void* icu::TimeZoneFormat::clone() const`** + - `Format* icu::TimeZoneFormat::clone() const` + - `TimeZoneFormat* icu::TimeZoneFormat::clone() const` +- **`void* icu::UCharCharacterIterator::clone() const`** + - `CharacterIterator* icu::UCharCharacterIterator::clone() const` + - `UCharCharacterIterator* icu::UCharCharacterIterator::clone() const` +- **`void* icu::UnicodeSet::clone() const`** + - `UnicodeFunctor* icu::UnicodeSet::clone() const` + - `UnicodeSet* icu::UnicodeSet::clone() const` +- **`void* icu::UnicodeSet::cloneAsThawed() const`** + - `UnicodeFunctor* icu::UnicodeSet::cloneAsThawed() const` + - `UnicodeSet* icu::UnicodeSet::cloneAsThawed() const` +- **`void* icu::UnicodeSet::freeze()`** + - `UnicodeFunctor* icu::UnicodeSet::freeze()` + - `UnicodeSet* icu::UnicodeSet::freeze()` +- **`void* icu::UnicodeString::clone() const`** + - `Replaceable* icu::UnicodeString::clone() const` + - `UnicodeString* icu::UnicodeString::clone() const` +- **`void* icu::VTimeZone::clone() const`** + - `TimeZone* icu::VTimeZone::clone() const` + - `VTimeZone* icu::VTimeZone::clone() const` + +## Colophon + +Contents generated by StableAPI tool on Wed Oct 02 10:22:36 PDT 2019 + +Copyright © 2019 and later: Unicode, Inc. and others. +License & terms of use: http://www.unicode.org/copyright.html + \ No newline at end of file diff --git a/as_is/bomlist.txt b/as_is/bomlist.txt index 7118059..123c898 100644 --- a/as_is/bomlist.txt +++ b/as_is/bomlist.txt @@ -88,8 +88,8 @@ icu/source/test/testdata/break_rules/line_normal.txt icu/source/test/testdata/break_rules/line_loose.txt icu/source/test/testdata/break_rules/line_loose_cj.txt icu/source/test/testdata/break_rules/word.txt +icu/source/test/testdata/break_rules/README.md icu/source/test/testdata/break_rules/line.txt -icu/source/test/testdata/break_rules/readme.txt icu/source/test/testdata/break_rules/word_POSIX.txt icu/source/test/testdata/break_rules/sentence.txt icu/source/test/testdata/break_rules/line_normal_cj.txt diff --git a/packaging/distrelease.ps1 b/packaging/distrelease.ps1 index 89ce439..d907cef 100644 --- a/packaging/distrelease.ps1 +++ b/packaging/distrelease.ps1 @@ -13,7 +13,7 @@ # (bring up Powershell ISE) # cd C:\icu\icu4c\ # Set-ExecutionPolicy -Scope Process Unrestricted -# .\packaging\distrelease.ps1 +# .\packaging\distrelease.ps1 -arch "x64 or x86 or ARM64" # # Will emit: c:\icu4c\icu\source\dist\icu-windows.zip # @@ -22,6 +22,9 @@ # see https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-5.1&viewFallbackFrom=powershell-Microsoft.PowerShell.Core # for more about execution policies. +Param( + [string]$arch = "x64" # use x64 as default +) $icuDir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent $icuDir = Resolve-Path -Path '$icuDir\..' @@ -35,11 +38,30 @@ Get-ChildItem -Path $source -ErrorAction SilentlyContinue | Remove-Item -Recurse New-Item -Path $source -ItemType "directory" -ErrorAction SilentlyContinue # copy required stuff -Copy-Item -Path "$icuDir\lib" -Destination $source -Recurse -Copy-Item -Path "$icuDir\lib64" -Destination $source -Recurse +if ($arch -eq "x64") +{ + Copy-Item -Path "$icuDir\lib64" -Destination $source -Recurse + Copy-Item -Path "$icuDir\bin64" -Destination $source -Recurse +} +elseif ($arch -eq "x86") +{ + Copy-Item -Path "$icuDir\lib" -Destination $source -Recurse + Copy-Item -Path "$icuDir\bin" -Destination $source -Recurse +} +elseif ($arch -eq "ARM64") +{ + Copy-Item -Path "$icuDir\libARM64" -Destination $source -Recurse + Copy-Item -Path "$icuDir\binARM64" -Destination $source -Recurse +} +else +{ + $filename = $MyInvocation.MyCommand.Name; + echo "Invalid architecture." + echo "Usage: $filename -arch `"x64 or x86`"" + exit +} + Copy-Item -Path "$icuDir\include" -Destination $source -Recurse -Copy-Item -Path "$icuDir\bin" -Destination $source -Recurse -Copy-Item -Path "$icuDir\bin64" -Destination $source -Recurse Copy-Item -Path "$icuDir\APIChangeReport.html" -Destination $source -Recurse Copy-Item -Path "$icuDir\icu4c.css" -Destination $source -Recurse Copy-Item -Path "$icuDir\LICENSE" -Destination $source -Recurse @@ -48,9 +70,14 @@ Copy-Item -Path "$icuDir\readme.html" -Destination $source -Recurse $destination = "$icuDir\source\dist\icu-windows.zip" Remove-Item -Path $destination -ErrorAction Continue -Add-Type -assembly "system.io.compression.filesystem" Echo $source Echo $destination -[io.compression.zipfile]::CreateFromDirectory($source, $destination) + +# Use 7Zip to build zip file to avoid backslash path separator errors when unzipping on CygWin +if (-not (Get-Module -ListAvailable -Name 7Zip4PowerShell)) +{ + Install-Module 7Zip4PowerShell -Force -Verbose +} +Compress-7Zip $source -ArchiveFileName $destination -Format Zip echo $destination \ No newline at end of file diff --git a/readme.html b/readme.html index f55c6b5..e991f14 100644 --- a/readme.html +++ b/readme.html @@ -3,7 +3,7 @@ - ReadMe for ICU 64.2 + ReadMe for ICU 65.1 @@ -44,7 +44,7 @@

    This is a release candidate version of ICU4C. It is not recommended for production use.

    -

    Last updated: 2019-Apr-04
    +

    Last updated: 2019-Sept-16
    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. @@ -233,7 +233,7 @@

    What Is New In This Release?

    -

    See the ICU 64 download page +

    See the ICU 65 download page for an overview of this release, important changes, new features, bug fixes, known issues, changes to supported platforms and build environments, and migration issues for existing applications migrating from previous ICU releases.

    @@ -744,7 +744,8 @@ across library and compiler versions is very hard to achieve. Most ICU C++ APIs are in header files that contain a comment with \brief C++ API. - Consider not installing these header files. + Consider not installing these header files, or define U_SHOW_CPLUSPLUS_API + to be 0 by modifying unicode/utypes.h before installing it.
  • Disable renaming: By default, ICU library entry point names have an ICU version suffix. Turn this off for a system-level installation, to enable upgrading ICU without breaking applications. For example:
    diff --git a/source/aclocal.m4 b/source/aclocal.m4 index 413f509..b5ee8a9 100644 --- a/source/aclocal.m4 +++ b/source/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.15 -*- Autoconf -*- +# generated automatically by aclocal 1.15.1 -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -13,7 +13,7 @@ m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -dnl serial 11 (pkg-config-0.29.1) +dnl serial 11 (pkg-config-0.29) dnl dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson @@ -55,7 +55,7 @@ dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], -[m4_define([PKG_MACROS_VERSION], [0.29.1]) +[m4_define([PKG_MACROS_VERSION], [0.29]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ diff --git a/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props b/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props index 6e92e87..a00e2c4 100644 --- a/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props +++ b/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props @@ -17,8 +17,10 @@ C4005 Macro redifintion. C4068 Unknown pragma. C4267 Conversion from size_t to type, possible loss of data. + C4910 __declspec(dllexport) and extern are incompatible on an explicit instantiation. + C4003 Not enough parameters for macro. --> - 4251;4661;4715;4706;4005;4068;4267;%(TreatSpecificWarningsAsErrors) + 4251;4661;4715;4706;4005;4068;4267;4910;4003;%(TreatSpecificWarningsAsErrors) diff --git a/source/allinone/Build.Windows.ProjectConfiguration.props b/source/allinone/Build.Windows.ProjectConfiguration.props index 3557e9c..ab53588 100644 --- a/source/allinone/Build.Windows.ProjectConfiguration.props +++ b/source/allinone/Build.Windows.ProjectConfiguration.props @@ -12,6 +12,14 @@ Debug x64 + + Debug + ARM + + + Debug + ARM64 + Release Win32 @@ -20,15 +28,52 @@ Release x64 + + Release + ARM + + + Release + ARM64 + + + + bin + lib + + + bin64 + lib64 + + + binARM + libARM + + + binARM64 + libARM64 + + - 8.1 + + + + 10.0.16299.0 + true + + + 10.0.16299.0 + true + 0x0601 @@ -61,6 +106,7 @@ true + true @@ -71,12 +117,15 @@ NDEBUG;%(PreprocessorDefinitions) true + true + ProgramDatabase NDEBUG;%(PreprocessorDefinitions) true + UseLinkTimeCodeGeneration @@ -122,4 +171,36 @@ MachineX64 + + + + ARM + + + ARM;WIN32;%(PreprocessorDefinitions) + + + MachineARM + + kernel32.lib;%(AdditionalDependencies) + + C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm + + + + + + ARM64 + + + ARM64;WIN32;%(PreprocessorDefinitions) + + + MachineARM64 + + kernel32.lib;%(AdditionalDependencies) + + C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64 + + \ No newline at end of file diff --git a/source/allinone/Build.Windows.UWP.ProjectConfiguration.props b/source/allinone/Build.Windows.UWP.ProjectConfiguration.props index 5dffa96..359d2c2 100644 --- a/source/allinone/Build.Windows.UWP.ProjectConfiguration.props +++ b/source/allinone/Build.Windows.UWP.ProjectConfiguration.props @@ -24,6 +24,23 @@ + + + bin32uwp + lib32uwp + + + bin64uwp + lib64uwp + + + binARMuwp + libARMuwp + + + binARM64uwp + libARM64uwp + diff --git a/source/allinone/allinone.sln b/source/allinone/allinone.sln index b2b1330..fbbec35 100644 --- a/source/allinone/allinone.sln +++ b/source/allinone/allinone.sln @@ -197,335 +197,515 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|ARM.ActiveCfg = Debug|Win32 + {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|ARM64.ActiveCfg = Debug|Win32 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.ActiveCfg = Debug|Win32 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.Build.0 = Debug|Win32 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.ActiveCfg = Debug|x64 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.Build.0 = Debug|x64 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|ARM.ActiveCfg = Release|Win32 + {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|ARM64.ActiveCfg = Release|Win32 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.ActiveCfg = Release|Win32 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.Build.0 = Release|Win32 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.ActiveCfg = Release|x64 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.Build.0 = Release|x64 - {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM.ActiveCfg = Debug|Win32 + {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM.ActiveCfg = Debug|ARM + {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM.Build.0 = Debug|ARM + {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM64.Build.0 = Debug|ARM64 {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.ActiveCfg = Debug|Win32 {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.Build.0 = Debug|Win32 {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.ActiveCfg = Debug|x64 {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.Build.0 = Debug|x64 - {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|ARM.ActiveCfg = Release|Win32 + {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|ARM.ActiveCfg = Release|ARM + {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|ARM.Build.0 = Release|ARM + {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|ARM64.ActiveCfg = Release|ARM64 + {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|ARM64.Build.0 = Release|ARM64 {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.ActiveCfg = Release|Win32 {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.Build.0 = Release|Win32 {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.ActiveCfg = Release|x64 {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.Build.0 = Release|x64 - {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|ARM.ActiveCfg = Debug|Win32 + {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|ARM.ActiveCfg = Debug|ARM + {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|ARM.Build.0 = Debug|ARM + {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|ARM64.Build.0 = Debug|ARM64 {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.ActiveCfg = Debug|Win32 {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.Build.0 = Debug|Win32 {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.ActiveCfg = Debug|x64 {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.Build.0 = Debug|x64 - {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|ARM.ActiveCfg = Release|Win32 + {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|ARM.ActiveCfg = Release|ARM + {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|ARM.Build.0 = Release|ARM + {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|ARM64.ActiveCfg = Release|ARM64 + {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|ARM64.Build.0 = Release|ARM64 {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.ActiveCfg = Release|Win32 {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.Build.0 = Release|Win32 {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.ActiveCfg = Release|x64 {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.Build.0 = Release|x64 - {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|ARM.ActiveCfg = Debug|Win32 + {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|ARM.ActiveCfg = Debug|ARM + {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|ARM.Build.0 = Debug|ARM + {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|ARM64.Build.0 = Debug|ARM64 {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.ActiveCfg = Debug|Win32 {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.Build.0 = Debug|Win32 {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.ActiveCfg = Debug|x64 {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.Build.0 = Debug|x64 - {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|ARM.ActiveCfg = Release|Win32 + {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|ARM.ActiveCfg = Release|ARM + {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|ARM.Build.0 = Release|ARM + {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|ARM64.ActiveCfg = Release|ARM64 + {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|ARM64.Build.0 = Release|ARM64 {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.ActiveCfg = Release|Win32 {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.Build.0 = Release|Win32 {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.ActiveCfg = Release|x64 {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.Build.0 = Release|x64 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|ARM.ActiveCfg = Debug|Win32 + {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|ARM64.ActiveCfg = Debug|Win32 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.ActiveCfg = Debug|Win32 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.Build.0 = Debug|Win32 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.ActiveCfg = Debug|x64 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.Build.0 = Debug|x64 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|ARM.ActiveCfg = Release|Win32 + {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|ARM64.ActiveCfg = Release|Win32 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.ActiveCfg = Release|Win32 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.Build.0 = Release|Win32 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.ActiveCfg = Release|x64 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.Build.0 = Release|x64 - {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM.ActiveCfg = Debug|Win32 + {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM.ActiveCfg = Debug|ARM + {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM.Build.0 = Debug|ARM + {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM64.Build.0 = Debug|ARM64 {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.ActiveCfg = Debug|Win32 {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.Build.0 = Debug|Win32 {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.ActiveCfg = Debug|x64 {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.Build.0 = Debug|x64 - {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|ARM.ActiveCfg = Release|Win32 + {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|ARM.ActiveCfg = Release|ARM + {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|ARM.Build.0 = Release|ARM + {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|ARM64.ActiveCfg = Release|ARM64 + {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|ARM64.Build.0 = Release|ARM64 {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.ActiveCfg = Release|Win32 {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.Build.0 = Release|Win32 {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.ActiveCfg = Release|x64 {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.Build.0 = Release|x64 - {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|ARM.ActiveCfg = Debug|Win32 + {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|ARM.ActiveCfg = Debug|ARM + {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|ARM.Build.0 = Debug|ARM + {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|ARM64.Build.0 = Debug|ARM64 {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.ActiveCfg = Debug|Win32 {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.Build.0 = Debug|Win32 {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.ActiveCfg = Debug|x64 {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.Build.0 = Debug|x64 - {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|ARM.ActiveCfg = Release|Win32 + {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|ARM.ActiveCfg = Release|ARM + {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|ARM.Build.0 = Release|ARM + {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|ARM64.ActiveCfg = Release|ARM64 + {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|ARM64.Build.0 = Release|ARM64 {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.ActiveCfg = Release|Win32 {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.Build.0 = Release|Win32 {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.ActiveCfg = Release|x64 {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.Build.0 = Release|x64 - {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|ARM.ActiveCfg = Debug|Win32 + {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|ARM.ActiveCfg = Debug|ARM + {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|ARM.Build.0 = Debug|ARM + {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|ARM64.Build.0 = Debug|ARM64 {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.ActiveCfg = Debug|Win32 {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.Build.0 = Debug|Win32 {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.ActiveCfg = Debug|x64 {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.Build.0 = Debug|x64 - {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|ARM.ActiveCfg = Release|Win32 + {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|ARM.ActiveCfg = Release|ARM + {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|ARM.Build.0 = Release|ARM + {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|ARM64.ActiveCfg = Release|ARM64 + {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|ARM64.Build.0 = Release|ARM64 {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.ActiveCfg = Release|Win32 {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.Build.0 = Release|Win32 {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.ActiveCfg = Release|x64 {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.Build.0 = Release|x64 - {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|ARM.ActiveCfg = Debug|Win32 + {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|ARM.ActiveCfg = Debug|ARM + {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|ARM.Build.0 = Debug|ARM + {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|ARM64.Build.0 = Debug|ARM64 {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.ActiveCfg = Debug|Win32 {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.Build.0 = Debug|Win32 {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.ActiveCfg = Debug|x64 {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.Build.0 = Debug|x64 - {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|ARM.ActiveCfg = Release|Win32 + {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|ARM.ActiveCfg = Release|ARM + {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|ARM.Build.0 = Release|ARM + {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|ARM64.ActiveCfg = Release|ARM64 + {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|ARM64.Build.0 = Release|ARM64 {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.ActiveCfg = Release|Win32 {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.Build.0 = Release|Win32 {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.ActiveCfg = Release|x64 {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.Build.0 = Release|x64 - {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|ARM.ActiveCfg = Debug|Win32 + {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|ARM.ActiveCfg = Debug|ARM + {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|ARM.Build.0 = Debug|ARM + {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|ARM64.Build.0 = Debug|ARM64 {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.ActiveCfg = Debug|Win32 {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.Build.0 = Debug|Win32 {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.ActiveCfg = Debug|x64 {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.Build.0 = Debug|x64 - {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|ARM.ActiveCfg = Release|Win32 + {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|ARM.ActiveCfg = Release|ARM + {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|ARM.Build.0 = Release|ARM + {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|ARM64.ActiveCfg = Release|ARM64 + {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|ARM64.Build.0 = Release|ARM64 {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.ActiveCfg = Release|Win32 {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.Build.0 = Release|Win32 {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.ActiveCfg = Release|x64 {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.Build.0 = Release|x64 - {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|ARM.ActiveCfg = Debug|Win32 + {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|ARM.ActiveCfg = Debug|ARM + {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|ARM.Build.0 = Debug|ARM + {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|ARM64.Build.0 = Debug|ARM64 {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.ActiveCfg = Debug|Win32 {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.Build.0 = Debug|Win32 {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.ActiveCfg = Debug|x64 {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.Build.0 = Debug|x64 - {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|ARM.ActiveCfg = Release|Win32 + {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|ARM.ActiveCfg = Release|ARM + {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|ARM.Build.0 = Release|ARM + {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|ARM64.ActiveCfg = Release|ARM64 + {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|ARM64.Build.0 = Release|ARM64 {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.ActiveCfg = Release|Win32 {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.Build.0 = Release|Win32 {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.ActiveCfg = Release|x64 {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.Build.0 = Release|x64 - {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|ARM.ActiveCfg = Debug|Win32 + {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|ARM.ActiveCfg = Debug|ARM + {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|ARM.Build.0 = Debug|ARM + {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|ARM64.Build.0 = Debug|ARM64 {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.ActiveCfg = Debug|Win32 {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.Build.0 = Debug|Win32 {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.ActiveCfg = Debug|x64 {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.Build.0 = Debug|x64 - {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|ARM.ActiveCfg = Release|Win32 + {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|ARM.ActiveCfg = Release|ARM + {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|ARM.Build.0 = Release|ARM + {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|ARM64.ActiveCfg = Release|ARM64 + {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|ARM64.Build.0 = Release|ARM64 {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.ActiveCfg = Release|Win32 {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.Build.0 = Release|Win32 {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.ActiveCfg = Release|x64 {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.Build.0 = Release|x64 - {0178B127-6269-407D-B112-93877BB62776}.Debug|ARM.ActiveCfg = Debug|Win32 + {0178B127-6269-407D-B112-93877BB62776}.Debug|ARM.ActiveCfg = Debug|ARM + {0178B127-6269-407D-B112-93877BB62776}.Debug|ARM.Build.0 = Debug|ARM + {0178B127-6269-407D-B112-93877BB62776}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0178B127-6269-407D-B112-93877BB62776}.Debug|ARM64.Build.0 = Debug|ARM64 {0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.ActiveCfg = Debug|Win32 {0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.Build.0 = Debug|Win32 {0178B127-6269-407D-B112-93877BB62776}.Debug|x64.ActiveCfg = Debug|x64 {0178B127-6269-407D-B112-93877BB62776}.Debug|x64.Build.0 = Debug|x64 - {0178B127-6269-407D-B112-93877BB62776}.Release|ARM.ActiveCfg = Release|Win32 + {0178B127-6269-407D-B112-93877BB62776}.Release|ARM.ActiveCfg = Release|ARM + {0178B127-6269-407D-B112-93877BB62776}.Release|ARM.Build.0 = Release|ARM + {0178B127-6269-407D-B112-93877BB62776}.Release|ARM64.ActiveCfg = Release|ARM64 + {0178B127-6269-407D-B112-93877BB62776}.Release|ARM64.Build.0 = Release|ARM64 {0178B127-6269-407D-B112-93877BB62776}.Release|Win32.ActiveCfg = Release|Win32 {0178B127-6269-407D-B112-93877BB62776}.Release|Win32.Build.0 = Release|Win32 {0178B127-6269-407D-B112-93877BB62776}.Release|x64.ActiveCfg = Release|x64 {0178B127-6269-407D-B112-93877BB62776}.Release|x64.Build.0 = Release|x64 - {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|ARM.ActiveCfg = Debug|Win32 + {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|ARM.ActiveCfg = Debug|ARM + {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|ARM.Build.0 = Debug|ARM + {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|ARM64.Build.0 = Debug|ARM64 {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.ActiveCfg = Debug|Win32 {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.Build.0 = Debug|Win32 {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.ActiveCfg = Debug|x64 {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.Build.0 = Debug|x64 - {73632960-B3A6-464D-83A3-4B43365F19B8}.Release|ARM.ActiveCfg = Release|Win32 + {73632960-B3A6-464D-83A3-4B43365F19B8}.Release|ARM.ActiveCfg = Release|ARM + {73632960-B3A6-464D-83A3-4B43365F19B8}.Release|ARM.Build.0 = Release|ARM + {73632960-B3A6-464D-83A3-4B43365F19B8}.Release|ARM64.ActiveCfg = Release|ARM64 + {73632960-B3A6-464D-83A3-4B43365F19B8}.Release|ARM64.Build.0 = Release|ARM64 {73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.ActiveCfg = Release|Win32 {73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.Build.0 = Release|Win32 {73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.ActiveCfg = Release|x64 {73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.Build.0 = Release|x64 - {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|ARM.ActiveCfg = Debug|Win32 + {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|ARM.ActiveCfg = Debug|ARM + {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|ARM.Build.0 = Debug|ARM + {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|ARM64.Build.0 = Debug|ARM64 {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.ActiveCfg = Debug|Win32 {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.Build.0 = Debug|Win32 {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.ActiveCfg = Debug|x64 {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.Build.0 = Debug|x64 - {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|ARM.ActiveCfg = Release|Win32 + {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|ARM.ActiveCfg = Release|ARM + {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|ARM.Build.0 = Release|ARM + {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|ARM64.ActiveCfg = Release|ARM64 + {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|ARM64.Build.0 = Release|ARM64 {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.ActiveCfg = Release|Win32 {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.Build.0 = Release|Win32 {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.ActiveCfg = Release|x64 {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.Build.0 = Release|x64 - {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|ARM.ActiveCfg = Debug|Win32 + {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|ARM.ActiveCfg = Debug|ARM + {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|ARM.Build.0 = Debug|ARM + {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|ARM64.Build.0 = Debug|ARM64 {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.ActiveCfg = Debug|Win32 {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.Build.0 = Debug|Win32 {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.ActiveCfg = Debug|x64 {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.Build.0 = Debug|x64 - {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|ARM.ActiveCfg = Release|Win32 + {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|ARM.ActiveCfg = Release|ARM + {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|ARM.Build.0 = Release|ARM + {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|ARM64.ActiveCfg = Release|ARM64 + {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|ARM64.Build.0 = Release|ARM64 {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.ActiveCfg = Release|Win32 {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.Build.0 = Release|Win32 {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.ActiveCfg = Release|x64 {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.Build.0 = Release|x64 - {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|ARM.ActiveCfg = Debug|Win32 + {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|ARM.ActiveCfg = Debug|ARM + {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|ARM.Build.0 = Debug|ARM + {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|ARM64.Build.0 = Debug|ARM64 {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.ActiveCfg = Debug|Win32 {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.Build.0 = Debug|Win32 {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.ActiveCfg = Debug|x64 {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.Build.0 = Debug|x64 - {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|ARM.ActiveCfg = Release|Win32 + {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|ARM.ActiveCfg = Release|ARM + {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|ARM.Build.0 = Release|ARM + {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|ARM64.ActiveCfg = Release|ARM64 + {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|ARM64.Build.0 = Release|ARM64 {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.ActiveCfg = Release|Win32 {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.Build.0 = Release|Win32 {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.ActiveCfg = Release|x64 {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.Build.0 = Release|x64 - {203EC78A-0531-43F0-A636-285439BDE025}.Debug|ARM.ActiveCfg = Debug|Win32 + {203EC78A-0531-43F0-A636-285439BDE025}.Debug|ARM.ActiveCfg = Debug|ARM + {203EC78A-0531-43F0-A636-285439BDE025}.Debug|ARM.Build.0 = Debug|ARM + {203EC78A-0531-43F0-A636-285439BDE025}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {203EC78A-0531-43F0-A636-285439BDE025}.Debug|ARM64.Build.0 = Debug|ARM64 {203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.ActiveCfg = Debug|Win32 {203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.Build.0 = Debug|Win32 {203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.ActiveCfg = Debug|x64 {203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.Build.0 = Debug|x64 - {203EC78A-0531-43F0-A636-285439BDE025}.Release|ARM.ActiveCfg = Release|Win32 + {203EC78A-0531-43F0-A636-285439BDE025}.Release|ARM.ActiveCfg = Release|ARM + {203EC78A-0531-43F0-A636-285439BDE025}.Release|ARM.Build.0 = Release|ARM + {203EC78A-0531-43F0-A636-285439BDE025}.Release|ARM64.ActiveCfg = Release|ARM64 + {203EC78A-0531-43F0-A636-285439BDE025}.Release|ARM64.Build.0 = Release|ARM64 {203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.ActiveCfg = Release|Win32 {203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.Build.0 = Release|Win32 {203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.ActiveCfg = Release|x64 {203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.Build.0 = Release|x64 - {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|ARM.ActiveCfg = Debug|Win32 + {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|ARM.ActiveCfg = Debug|ARM + {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|ARM.Build.0 = Debug|ARM + {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|ARM64.Build.0 = Debug|ARM64 {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.ActiveCfg = Debug|Win32 {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.Build.0 = Debug|Win32 {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.ActiveCfg = Debug|x64 {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.Build.0 = Debug|x64 - {6B231032-3CB5-4EED-9210-810D666A23A0}.Release|ARM.ActiveCfg = Release|Win32 + {6B231032-3CB5-4EED-9210-810D666A23A0}.Release|ARM.ActiveCfg = Release|ARM + {6B231032-3CB5-4EED-9210-810D666A23A0}.Release|ARM.Build.0 = Release|ARM + {6B231032-3CB5-4EED-9210-810D666A23A0}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B231032-3CB5-4EED-9210-810D666A23A0}.Release|ARM64.Build.0 = Release|ARM64 {6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.ActiveCfg = Release|Win32 {6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.Build.0 = Release|Win32 {6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.ActiveCfg = Release|x64 {6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.Build.0 = Release|x64 - {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|ARM.ActiveCfg = Debug|Win32 + {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|ARM.ActiveCfg = Debug|ARM + {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|ARM.Build.0 = Debug|ARM + {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|ARM64.Build.0 = Debug|ARM64 {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.ActiveCfg = Debug|Win32 {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.Build.0 = Debug|Win32 {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.ActiveCfg = Debug|x64 {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.Build.0 = Debug|x64 - {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|ARM.ActiveCfg = Release|Win32 + {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|ARM.ActiveCfg = Release|ARM + {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|ARM.Build.0 = Release|ARM + {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|ARM64.ActiveCfg = Release|ARM64 + {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|ARM64.Build.0 = Release|ARM64 {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.ActiveCfg = Release|Win32 {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.Build.0 = Release|Win32 {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.ActiveCfg = Release|x64 {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.Build.0 = Release|x64 - {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|ARM.ActiveCfg = Debug|Win32 + {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|ARM.ActiveCfg = Debug|ARM + {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|ARM.Build.0 = Debug|ARM + {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|ARM64.Build.0 = Debug|ARM64 {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.ActiveCfg = Debug|Win32 {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.Build.0 = Debug|Win32 {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.ActiveCfg = Debug|x64 {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.Build.0 = Debug|x64 - {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|ARM.ActiveCfg = Release|Win32 + {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|ARM.ActiveCfg = Release|ARM + {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|ARM.Build.0 = Release|ARM + {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|ARM64.ActiveCfg = Release|ARM64 + {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|ARM64.Build.0 = Release|ARM64 {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.ActiveCfg = Release|Win32 {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.Build.0 = Release|Win32 {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.ActiveCfg = Release|x64 {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.Build.0 = Release|x64 - {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|ARM.ActiveCfg = Debug|Win32 + {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|ARM.ActiveCfg = Debug|ARM + {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|ARM.Build.0 = Debug|ARM + {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|ARM64.Build.0 = Debug|ARM64 {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.ActiveCfg = Debug|Win32 {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.Build.0 = Debug|Win32 {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.ActiveCfg = Debug|x64 {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.Build.0 = Debug|x64 - {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|ARM.ActiveCfg = Release|Win32 + {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|ARM.ActiveCfg = Release|ARM + {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|ARM.Build.0 = Release|ARM + {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|ARM64.ActiveCfg = Release|ARM64 + {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|ARM64.Build.0 = Release|ARM64 {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.ActiveCfg = Release|Win32 {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.Build.0 = Release|Win32 {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.ActiveCfg = Release|x64 {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.Build.0 = Release|x64 - {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|ARM.ActiveCfg = Debug|Win32 + {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|ARM.ActiveCfg = Debug|ARM + {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|ARM.Build.0 = Debug|ARM + {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|ARM64.Build.0 = Debug|ARM64 {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.ActiveCfg = Debug|Win32 {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.Build.0 = Debug|Win32 {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.ActiveCfg = Debug|x64 {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.Build.0 = Debug|x64 - {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|ARM.ActiveCfg = Release|Win32 + {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|ARM.ActiveCfg = Release|ARM + {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|ARM.Build.0 = Release|ARM + {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|ARM64.ActiveCfg = Release|ARM64 + {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|ARM64.Build.0 = Release|ARM64 {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.ActiveCfg = Release|Win32 {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.Build.0 = Release|Win32 {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.ActiveCfg = Release|x64 {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.Build.0 = Release|x64 - {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|ARM.ActiveCfg = Debug|Win32 + {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|ARM.ActiveCfg = Debug|ARM + {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|ARM.Build.0 = Debug|ARM + {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|ARM64.Build.0 = Debug|ARM64 {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|Win32.ActiveCfg = Debug|Win32 {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|Win32.Build.0 = Debug|Win32 {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|x64.ActiveCfg = Debug|x64 {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|x64.Build.0 = Debug|x64 - {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|ARM.ActiveCfg = Release|Win32 + {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|ARM.ActiveCfg = Release|ARM + {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|ARM.Build.0 = Release|ARM + {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|ARM64.ActiveCfg = Release|ARM64 + {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|ARM64.Build.0 = Release|ARM64 {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|Win32.ActiveCfg = Release|Win32 {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|Win32.Build.0 = Release|Win32 {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|x64.ActiveCfg = Release|x64 {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|x64.Build.0 = Release|x64 - {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|ARM.ActiveCfg = Debug|Win32 + {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|ARM.ActiveCfg = Debug|ARM + {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|ARM.Build.0 = Debug|ARM + {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|ARM64.Build.0 = Debug|ARM64 {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|Win32.ActiveCfg = Debug|Win32 {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|Win32.Build.0 = Debug|Win32 {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|x64.ActiveCfg = Debug|x64 {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|x64.Build.0 = Debug|x64 - {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|ARM.ActiveCfg = Release|Win32 + {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|ARM.ActiveCfg = Release|ARM + {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|ARM.Build.0 = Release|ARM + {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|ARM64.ActiveCfg = Release|ARM64 + {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|ARM64.Build.0 = Release|ARM64 {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|Win32.ActiveCfg = Release|Win32 {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|Win32.Build.0 = Release|Win32 {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|x64.ActiveCfg = Release|x64 {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|x64.Build.0 = Release|x64 - {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|ARM.ActiveCfg = Debug|Win32 + {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|ARM.ActiveCfg = Debug|ARM + {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|ARM.Build.0 = Debug|ARM + {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|ARM64.Build.0 = Debug|ARM64 {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|Win32.ActiveCfg = Debug|Win32 {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|Win32.Build.0 = Debug|Win32 {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|x64.ActiveCfg = Debug|x64 {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|x64.Build.0 = Debug|x64 - {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|ARM.ActiveCfg = Release|Win32 + {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|ARM.ActiveCfg = Release|ARM + {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|ARM.Build.0 = Release|ARM + {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|ARM64.ActiveCfg = Release|ARM64 + {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|ARM64.Build.0 = Release|ARM64 {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|Win32.ActiveCfg = Release|Win32 {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|Win32.Build.0 = Release|Win32 {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|x64.ActiveCfg = Release|x64 {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|x64.Build.0 = Release|x64 - {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|ARM.ActiveCfg = Debug|Win32 + {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|ARM.ActiveCfg = Debug|ARM + {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|ARM.Build.0 = Debug|ARM + {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|ARM64.Build.0 = Debug|ARM64 {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|Win32.ActiveCfg = Debug|Win32 {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|Win32.Build.0 = Debug|Win32 {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|x64.ActiveCfg = Debug|x64 {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|x64.Build.0 = Debug|x64 - {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|ARM.ActiveCfg = Release|Win32 + {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|ARM.ActiveCfg = Release|ARM + {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|ARM.Build.0 = Release|ARM + {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|ARM64.ActiveCfg = Release|ARM64 + {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|ARM64.Build.0 = Release|ARM64 {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|Win32.ActiveCfg = Release|Win32 {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|Win32.Build.0 = Release|Win32 {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|x64.ActiveCfg = Release|x64 {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|x64.Build.0 = Release|x64 - {E7611F49-F088-4175-9446-6111444E72C8}.Debug|ARM.ActiveCfg = Debug|Win32 + {E7611F49-F088-4175-9446-6111444E72C8}.Debug|ARM.ActiveCfg = Debug|ARM + {E7611F49-F088-4175-9446-6111444E72C8}.Debug|ARM.Build.0 = Debug|ARM + {E7611F49-F088-4175-9446-6111444E72C8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {E7611F49-F088-4175-9446-6111444E72C8}.Debug|ARM64.Build.0 = Debug|ARM64 {E7611F49-F088-4175-9446-6111444E72C8}.Debug|Win32.ActiveCfg = Debug|Win32 {E7611F49-F088-4175-9446-6111444E72C8}.Debug|Win32.Build.0 = Debug|Win32 {E7611F49-F088-4175-9446-6111444E72C8}.Debug|x64.ActiveCfg = Debug|x64 {E7611F49-F088-4175-9446-6111444E72C8}.Debug|x64.Build.0 = Debug|x64 - {E7611F49-F088-4175-9446-6111444E72C8}.Release|ARM.ActiveCfg = Release|Win32 + {E7611F49-F088-4175-9446-6111444E72C8}.Release|ARM.ActiveCfg = Release|ARM + {E7611F49-F088-4175-9446-6111444E72C8}.Release|ARM.Build.0 = Release|ARM + {E7611F49-F088-4175-9446-6111444E72C8}.Release|ARM64.ActiveCfg = Release|ARM64 + {E7611F49-F088-4175-9446-6111444E72C8}.Release|ARM64.Build.0 = Release|ARM64 {E7611F49-F088-4175-9446-6111444E72C8}.Release|Win32.ActiveCfg = Release|Win32 {E7611F49-F088-4175-9446-6111444E72C8}.Release|Win32.Build.0 = Release|Win32 {E7611F49-F088-4175-9446-6111444E72C8}.Release|x64.ActiveCfg = Release|x64 {E7611F49-F088-4175-9446-6111444E72C8}.Release|x64.Build.0 = Release|x64 - {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|ARM.ActiveCfg = Debug|Win32 + {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|ARM.ActiveCfg = Debug|ARM + {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|ARM.Build.0 = Debug|ARM + {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|ARM64.Build.0 = Debug|ARM64 {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|Win32.ActiveCfg = Debug|Win32 {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|Win32.Build.0 = Debug|Win32 {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|x64.ActiveCfg = Debug|x64 {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|x64.Build.0 = Debug|x64 - {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|ARM.ActiveCfg = Release|Win32 + {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|ARM.ActiveCfg = Release|ARM + {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|ARM.Build.0 = Release|ARM + {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|ARM64.ActiveCfg = Release|ARM64 + {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|ARM64.Build.0 = Release|ARM64 {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|Win32.ActiveCfg = Release|Win32 {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|Win32.Build.0 = Release|Win32 {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|x64.ActiveCfg = Release|x64 {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|x64.Build.0 = Release|x64 {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|ARM.ActiveCfg = Debug|ARM {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|ARM.Build.0 = Debug|ARM + {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|ARM64.Build.0 = Debug|ARM64 {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|Win32.ActiveCfg = Debug|Win32 {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|Win32.Build.0 = Debug|Win32 {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|x64.ActiveCfg = Debug|x64 {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|x64.Build.0 = Debug|x64 {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|ARM.ActiveCfg = Release|ARM {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|ARM.Build.0 = Release|ARM + {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|ARM64.ActiveCfg = Release|ARM64 + {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|ARM64.Build.0 = Release|ARM64 {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|Win32.ActiveCfg = Release|Win32 {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|Win32.Build.0 = Release|Win32 {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|x64.ActiveCfg = Release|x64 {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|x64.Build.0 = Release|x64 {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|ARM.ActiveCfg = Debug|ARM {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|ARM.Build.0 = Debug|ARM + {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|ARM64.Build.0 = Debug|ARM64 {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|Win32.ActiveCfg = Debug|Win32 {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|Win32.Build.0 = Debug|Win32 {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|x64.ActiveCfg = Debug|x64 {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|x64.Build.0 = Debug|x64 {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|ARM.ActiveCfg = Release|ARM {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|ARM.Build.0 = Release|ARM + {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|ARM64.ActiveCfg = Release|ARM64 + {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|ARM64.Build.0 = Release|ARM64 {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|Win32.ActiveCfg = Release|Win32 {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|Win32.Build.0 = Release|Win32 {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|x64.ActiveCfg = Release|x64 {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|x64.Build.0 = Release|x64 {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|ARM.ActiveCfg = Debug|ARM {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|ARM.Build.0 = Debug|ARM + {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|ARM64.Build.0 = Debug|ARM64 {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|Win32.ActiveCfg = Debug|Win32 {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|Win32.Build.0 = Debug|Win32 {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|x64.ActiveCfg = Debug|x64 {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|x64.Build.0 = Debug|x64 {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|ARM.ActiveCfg = Release|ARM {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|ARM.Build.0 = Release|ARM + {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|ARM64.ActiveCfg = Release|ARM64 + {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|ARM64.Build.0 = Release|ARM64 {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|Win32.ActiveCfg = Release|Win32 {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|Win32.Build.0 = Release|Win32 {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|x64.ActiveCfg = Release|x64 diff --git a/source/allinone/icucheck.bat b/source/allinone/icucheck.bat index 9fc56fa..1f84a6d 100644 --- a/source/allinone/icucheck.bat +++ b/source/allinone/icucheck.bat @@ -11,7 +11,7 @@ set ICU_ARCH=%1 set ICU_DBRL=%2 if "%1" == "" ( -echo Usage: %0 "x86 or x64" "Debug or Release" +echo Usage: %0 "x86 or x64 or ARM or ARM64" "Debug or Release" exit /b 1 ) @@ -25,9 +25,13 @@ set ICU_OPATH=%PATH% set ICU_ICUDIR="%~dp0"\..\.. if "%ICU_ARCH%" == "x64" ( -set ICU_BINDIR=%~dp0\..\..\bin64 + set ICU_BINDIR=%~dp0\..\..\bin64 +) else if "%ICU_ARCH%" == "ARM64" ( + set ICU_BINDIR=%~dp0\..\..\binARM64 +) else if "%ICU_ARCH%" == "ARM" ( + set ICU_BINDIR=%~dp0\..\..\binARM ) else ( -set ICU_BINDIR=%~dp0\..\..\bin + set ICU_BINDIR=%~dp0\..\..\bin ) set PATH=%ICU_BINDIR%;%PATH% diff --git a/source/common/Makefile.in b/source/common/Makefile.in index e663cb8..d21f5d0 100644 --- a/source/common/Makefile.in +++ b/source/common/Makefile.in @@ -88,8 +88,9 @@ ucnv_u7.o ucnv_u8.o ucnv_u16.o ucnv_u32.o ucnvscsu.o ucnvbocu.o \ ucnv_ext.o ucnvmbcs.o ucnv2022.o ucnvhz.o ucnv_lmb.o ucnvisci.o ucnvdisp.o ucnv_set.o ucnv_ct.o \ resource.o uresbund.o ures_cnv.o uresdata.o resbund.o resbund_cnv.o \ ucurr.o \ -localebuilder.o \ +localebuilder.o localeprioritylist.o \ messagepattern.o ucat.o locmap.o uloc.o locid.o locutil.o locavailable.o locdispnames.o locdspnm.o loclikely.o locresdata.o \ +lsr.o loclikelysubtags.o locdistance.o localematcher.o \ bytestream.o stringpiece.o bytesinkutil.o \ stringtriebuilder.o bytestriebuilder.o \ bytestrie.o bytestrieiterator.o \ @@ -115,7 +116,8 @@ ulist.o uloc_tag.o icudataver.o icuplug.o \ sharedobject.o simpleformatter.o unifiedcache.o uloc_keytype.o \ ubiditransform.o \ pluralmap.o \ -static_unicode_sets.o +static_unicode_sets.o \ +restrace.o ## Header files to install HEADERS = $(srcdir)/unicode/*.h diff --git a/source/common/brkeng.cpp b/source/common/brkeng.cpp index 19467dc..78492db 100644 --- a/source/common/brkeng.cpp +++ b/source/common/brkeng.cpp @@ -129,7 +129,7 @@ ICULanguageBreakFactory::getEngineFor(UChar32 c) { const LanguageBreakEngine *lbe = NULL; UErrorCode status = U_ZERO_ERROR; - static UMutex gBreakEngineMutex = U_MUTEX_INITIALIZER; + static UMutex gBreakEngineMutex; Mutex m(&gBreakEngineMutex); if (fEngines == NULL) { diff --git a/source/common/brkiter.cpp b/source/common/brkiter.cpp index 52e5c7c..3d1366a 100644 --- a/source/common/brkiter.cpp +++ b/source/common/brkiter.cpp @@ -277,7 +277,7 @@ ICUBreakIteratorService::~ICUBreakIteratorService() {} // defined in ucln_cmn.h U_NAMESPACE_END -static icu::UInitOnce gInitOnceBrkiter; +static icu::UInitOnce gInitOnceBrkiter = U_INITONCE_INITIALIZER; static icu::ICULocaleService* gService = NULL; diff --git a/source/common/bytesinkutil.h b/source/common/bytesinkutil.h index 69e4cbc..6808fbe 100644 --- a/source/common/bytesinkutil.h +++ b/source/common/bytesinkutil.h @@ -59,7 +59,7 @@ private: ByteSink &sink, uint32_t options, Edits *edits); }; -class CharStringByteSink : public ByteSink { +class U_COMMON_API CharStringByteSink : public ByteSink { public: CharStringByteSink(CharString* dest); ~CharStringByteSink() override; diff --git a/source/common/characterproperties.cpp b/source/common/characterproperties.cpp index 5a57364..7b50a4e 100644 --- a/source/common/characterproperties.cpp +++ b/source/common/characterproperties.cpp @@ -38,8 +38,8 @@ UBool U_CALLCONV characterproperties_cleanup(); constexpr int32_t NUM_INCLUSIONS = UPROPS_SRC_COUNT + UCHAR_INT_LIMIT - UCHAR_INT_START; struct Inclusion { - UnicodeSet *fSet; - UInitOnce fInitOnce; + UnicodeSet *fSet = nullptr; + UInitOnce fInitOnce = U_INITONCE_INITIALIZER; }; Inclusion gInclusions[NUM_INCLUSIONS]; // cached getInclusions() @@ -47,10 +47,7 @@ UnicodeSet *sets[UCHAR_BINARY_LIMIT] = {}; UCPMap *maps[UCHAR_INT_LIMIT - UCHAR_INT_START] = {}; -icu::UMutex *cpMutex() { - static icu::UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +icu::UMutex cpMutex; //---------------------------------------------------------------- // Inclusions list @@ -361,7 +358,7 @@ u_getBinaryPropertySet(UProperty property, UErrorCode *pErrorCode) { *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR; return nullptr; } - Mutex m(cpMutex()); + Mutex m(&cpMutex); UnicodeSet *set = sets[property]; if (set == nullptr) { sets[property] = set = makeSet(property, *pErrorCode); @@ -377,7 +374,7 @@ u_getIntPropertyMap(UProperty property, UErrorCode *pErrorCode) { *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR; return nullptr; } - Mutex m(cpMutex()); + Mutex m(&cpMutex); UCPMap *map = maps[property - UCHAR_INT_START]; if (map == nullptr) { maps[property - UCHAR_INT_START] = map = makeMap(property, *pErrorCode); diff --git a/source/common/charstr.cpp b/source/common/charstr.cpp index 852cc53..dda29da 100644 --- a/source/common/charstr.cpp +++ b/source/common/charstr.cpp @@ -35,6 +35,17 @@ CharString& CharString::operator=(CharString&& src) U_NOEXCEPT { return *this; } +char *CharString::cloneData(UErrorCode &errorCode) const { + if (U_FAILURE(errorCode)) { return nullptr; } + char *p = static_cast(uprv_malloc(len + 1)); + if (p == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + return nullptr; + } + uprv_memcpy(p, buffer.getAlias(), len + 1); + return p; +} + CharString &CharString::copyFrom(const CharString &s, UErrorCode &errorCode) { if(U_SUCCESS(errorCode) && this!=&s && ensureCapacity(s.len+1, 0, errorCode)) { len=s.len; @@ -52,6 +63,18 @@ int32_t CharString::lastIndexOf(char c) const { return -1; } +bool CharString::contains(StringPiece s) const { + if (s.empty()) { return false; } + const char *p = buffer.getAlias(); + int32_t lastStart = len - s.length(); + for (int32_t i = 0; i <= lastStart; ++i) { + if (uprv_memcmp(p + i, s.data(), s.length()) == 0) { + return true; + } + } + return false; +} + CharString &CharString::truncate(int32_t newLength) { if(newLength<0) { newLength=0; diff --git a/source/common/charstr.h b/source/common/charstr.h index 1a97e01..23b950e 100644 --- a/source/common/charstr.h +++ b/source/common/charstr.h @@ -82,10 +82,24 @@ public: const char *data() const { return buffer.getAlias(); } char *data() { return buffer.getAlias(); } + /** + * Allocates length()+1 chars and copies the NUL-terminated data(). + * The caller must uprv_free() the result. + */ + char *cloneData(UErrorCode &errorCode) const; + + bool operator==(StringPiece other) const { + return len == other.length() && (len == 0 || uprv_memcmp(data(), other.data(), len) == 0); + } + bool operator!=(StringPiece other) const { + return !operator==(other); + } /** @return last index of c, or -1 if c is not in this string */ int32_t lastIndexOf(char c) const; + bool contains(StringPiece s) const; + CharString &clear() { len=0; buffer[0]=0; return *this; } CharString &truncate(int32_t newLength); diff --git a/source/common/cmemory.h b/source/common/cmemory.h index f19715c..7f7fd8d 100644 --- a/source/common/cmemory.h +++ b/source/common/cmemory.h @@ -65,37 +65,36 @@ U_CAPI void * U_EXPORT2 uprv_calloc(size_t num, size_t size) U_MALLOC_ATTR U_ALLOC_SIZE_ATTR2(1,2); /** - * This should align the memory properly on any machine. - * This is very useful for the safeClone functions. - */ -typedef union { - long t1; - double t2; - void *t3; -} UAlignedMemory; - -/** * Get the least significant bits of a pointer (a memory address). * For example, with a mask of 3, the macro gets the 2 least significant bits, * which will be 0 if the pointer is 32-bit (4-byte) aligned. * - * ptrdiff_t is the most appropriate integer type to cast to. - * size_t should work too, since on most (or all?) platforms it has the same - * width as ptrdiff_t. + * uintptr_t is the most appropriate integer type to cast to. */ -#define U_POINTER_MASK_LSB(ptr, mask) (((ptrdiff_t)(char *)(ptr)) & (mask)) +#define U_POINTER_MASK_LSB(ptr, mask) ((uintptr_t)(ptr) & (mask)) /** - * Get the amount of bytes that a pointer is off by from - * the previous UAlignedMemory-aligned pointer. - */ -#define U_ALIGNMENT_OFFSET(ptr) U_POINTER_MASK_LSB(ptr, sizeof(UAlignedMemory) - 1) - -/** - * Get the amount of bytes to add to a pointer - * in order to get the next UAlignedMemory-aligned address. + * Create & return an instance of "type" in statically allocated storage. + * e.g. + * static std::mutex *myMutex = STATIC_NEW(std::mutex); + * To destroy an object created in this way, invoke the destructor explicitly, e.g. + * myMutex->~mutex(); + * DO NOT use delete. + * DO NOT use with class UMutex, which has specific support for static instances. + * + * STATIC_NEW is intended for use when + * - We want a static (or global) object. + * - We don't want it to ever be destructed, or to explicitly control destruction, + * to avoid use-after-destruction problems. + * - We want to avoid an ordinary heap allocated object, + * to avoid the possibility of memory allocation failures, and + * to avoid memory leak reports, from valgrind, for example. + * This is defined as a macro rather than a template function because each invocation + * must define distinct static storage for the object being returned. */ -#define U_ALIGNMENT_OFFSET_UP(ptr) (sizeof(UAlignedMemory) - U_ALIGNMENT_OFFSET(ptr)) +#define STATIC_NEW(type) [] () { \ + alignas(type) static char storage[sizeof(type)]; \ + return new(storage) type();} () /** * Heap clean up function, called from u_cleanup() diff --git a/source/common/common.vcxproj b/source/common/common.vcxproj index 6b06b3d..54eb011 100644 --- a/source/common/common.vcxproj +++ b/source/common/common.vcxproj @@ -35,29 +35,35 @@ <_ProjectFileVersion>10.0.30319.1 - .\..\..\lib\ - .\x86\Release\ - false - .\..\..\lib\ - .\x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false + + $(OutDir)\icuuc.tlb + U_ATTRIBUTE_DEPRECATED=;U_COMMON_IMPLEMENTATION;U_PLATFORM_USES_ONLY_WIN32_API=1;%(PreprocessorDefinitions) false Level3 + Default + ProgramDatabase + $(OutDir)/icuuc.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/icuuc.pdb + icudt.lib;%(AdditionalDependencies) - 0x4a800000 + .\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) @@ -67,6 +73,11 @@ true MultiThreadedDebugDLL + + ..\..\$(IcuBinOutputDir)\icuuc65d.dll + .\..\..\$(IcuLibOutputDir)\icuucd.pdb + ..\..\$(IcuLibOutputDir)\icuucd.lib + @@ -74,79 +85,10 @@ MultiThreadedDLL true - - - - .\..\..\lib\icuuc.tlb - - - .\x86\Release/common.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ - - - ..\..\bin\icuuc64.dll - .\..\..\lib;%(AdditionalLibraryDirectories) - .\..\..\lib\icuuc.pdb - - - ..\..\lib\icuuc.lib - - - - - .\..\..\lib\icuucd.tlb - - - .\x86\Debug/common.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ - EditAndContinue - - ..\..\bin\icuuc64d.dll - .\..\..\lib;%(AdditionalLibraryDirectories) - .\..\..\lib\icuucd.pdb - - - ..\..\lib\icuucd.lib - - - - - .\..\..\lib64\icuuc.tlb - - - .\x64\Release/common.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - - - ..\..\bin64\icuuc64.dll - .\..\..\lib64;%(AdditionalLibraryDirectories) - .\..\..\lib64\icuuc.pdb - ..\..\lib64\icuuc.lib - - - - - .\..\..\lib64\icuucd.tlb - - - .\x64\Debug/common.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - ProgramDatabase - - - ..\..\bin64\icuuc64d.dll - .\..\..\lib64;%(AdditionalLibraryDirectories) - .\..\..\lib64\icuucd.pdb - ..\..\lib64\icuucd.lib + ..\..\$(IcuBinOutputDir)\icuuc65.dll + .\..\..\$(IcuLibOutputDir)\icuuc.pdb + ..\..\$(IcuLibOutputDir)\icuuc.lib @@ -238,14 +180,20 @@ + + + + + + @@ -256,7 +204,6 @@ - @@ -339,6 +286,7 @@ + @@ -406,8 +354,12 @@ + + + + @@ -447,7 +399,7 @@ - + diff --git a/source/common/common.vcxproj.filters b/source/common/common.vcxproj.filters index 4fe13d5..5fabc6f 100644 --- a/source/common/common.vcxproj.filters +++ b/source/common/common.vcxproj.filters @@ -313,6 +313,15 @@ idna + + locales & resources + + + locales & resources + + + locales & resources + locales & resources @@ -322,18 +331,27 @@ locales & resources + + locales & resources + locales & resources locales & resources + + locales & resources + locales & resources locales & resources + + locales & resources + locales & resources @@ -361,9 +379,6 @@ locales & resources - - locales & resources - normalization @@ -619,6 +634,9 @@ formatting + + data & memory + @@ -813,12 +831,24 @@ idna + + locales & resources + locales & resources + + locales & resources + + + locales & resources + locales & resources + + locales & resources + locales & resources @@ -954,9 +984,12 @@ formatting - + data & memory - + + + data & memory + @@ -1072,6 +1105,12 @@ idna + + locales & resources + + + locales & resources + locales & resources @@ -1231,8 +1270,5 @@ strings - - locales & resources - diff --git a/source/common/common_uwp.vcxproj b/source/common/common_uwp.vcxproj index 94169ce..8469178 100644 --- a/source/common/common_uwp.vcxproj +++ b/source/common/common_uwp.vcxproj @@ -13,6 +13,10 @@ Debug ARM + + Debug + ARM64 + Release Win32 @@ -25,6 +29,10 @@ Release ARM + + Release + ARM64 + {C10CF34B-3F79-430E-AD38-5A32DC0589C2} @@ -51,26 +59,21 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\ReleaseUWP\ - .\x86\ReleaseUWP\ - .\x86\DebugUWP\ - .\x86\DebugUWP\ - .\x64\ReleaseUWP\ - .\x64\ReleaseUWP\ - .\x64\DebugUWP\ - .\x64\DebugUWP\ - .\arm\ReleaseUWP\ - .\arm\ReleaseUWP\ - .\arm\DebugUWP\ - .\arm\DebugUWP\ - false + .\$(Platform)\$(Configuration)UWP\ + .\$(Platform)\$(Configuration)UWP\ + + .\x86\$(Configuration)UWP\ + .\x86\$(Configuration)UWP\ + true + false true true + $(OutDir)\icuuc.tlb ..\..\include;..\common;%(AdditionalIncludeDirectories) @@ -89,6 +92,11 @@ NotUsing false /utf-8 %(AdditionalOptions) + $(OutDir)/icuuc.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/icuuc.pdb + ProgramDatabase 0x0409 @@ -102,7 +110,8 @@ true vccorlib.lib;msvcrt.lib - onecoreuap.lib + + icudt.lib;onecore.lib;%(AdditionalDependencies) @@ -119,7 +128,10 @@ true - vccorlib.lib;WindowsApp.lib;msvcrt.lib;%(AdditionalDependencies) + vccorlib.lib;msvcrt.lib;vcruntime.lib;%(AdditionalDependencies) + ..\..\$(IcuBinOutputDir)\icuuc65.dll + .\..\..\$(IcuLibOutputDir)\icuuc.pdb + ..\..\$(IcuLibOutputDir)\icuuc.lib @@ -133,14 +145,16 @@ Disabled EnableFastChecks true - EditAndContinue _DEBUG;%(PreprocessorDefinitions) true - vccorlibd.lib;WindowsApp.lib;msvcrtd.lib;%(AdditionalDependencies) + vccorlibd.lib;msvcrtd.lib;vcruntimed.lib;%(AdditionalDependencies) + ..\..\$(IcuBinOutputDir)\icuuc65d.dll + .\..\..\$(IcuLibOutputDir)\icuucd.pdb + ..\..\$(IcuLibOutputDir)\icuucd.lib @@ -151,6 +165,10 @@ WIN32;%(PreprocessorDefinitions) + + + .\..\..\lib;%(AdditionalLibraryDirectories) + @@ -162,6 +180,8 @@ MachineX64 + + .\..\..\lib64;%(AdditionalLibraryDirectories) @@ -174,103 +194,22 @@ MachineARM + + .\..\..\libARM;%(AdditionalLibraryDirectories) - - - - .\..\..\lib32uwp\icuuc.tlb - - - .\x86\ReleaseUWP/common.pch - .\x86\ReleaseUWP/ - .\x86\ReleaseUWP/ - .\x86\ReleaseUWP/ - - - ..\..\bin32uwp\icuuc64.dll - .\..\..\lib32uwp\icuuc.pdb - ..\..\lib32uwp\icuuc.lib - - - - - .\..\..\lib32uwp\icuucd.tlb - - - .\x86\DebugUWP/common.pch - .\x86\DebugUWP/ - .\x86\DebugUWP/ - .\x86\DebugUWP/ - - - ..\..\bin32uwp\icuuc64d.dll - .\..\..\lib32uwp\icuucd.pdb - ..\..\lib32uwp\icuucd.lib - - - - - .\..\..\lib64uwp\icuuc.tlb - - - .\x64\ReleaseUWP/common.pch - .\x64\ReleaseUWP/ - .\x64\ReleaseUWP/ - .\x64\ReleaseUWP/ - - - ..\..\bin64uwp\icuuc64.dll - .\..\..\lib64uwp\icuuc.pdb - ..\..\lib64uwp\icuuc.lib - - - + + - .\..\..\lib64uwp\icuucd.tlb + ARM64 - .\x64\DebugUWP/common.pch - .\x64\DebugUWP/ - .\x64\DebugUWP/ - .\x64\DebugUWP/ + ARM64;WIN32;%(PreprocessorDefinitions) - ..\..\bin64uwp\icuuc64d.dll - .\..\..\lib64uwp\icuucd.pdb - ..\..\lib64uwp\icuucd.lib - - - - - .\..\..\libARMuwp\icuuc.tlb - - - .\ARM\ReleaseUWP/common.pch - .\ARM\ReleaseUWP/ - .\ARM\ReleaseUWP/ - .\ARM\ReleaseUWP/ - - - ..\..\binARMuwp\icuuc64.dll - .\..\..\libARMuwp\icuuc.pdb - ..\..\libARMuwp\icuuc.lib - - - - - .\..\..\libARMuwp\icuucd.tlb - - - .\ARM\DebugUWP/common.pch - .\ARM\DebugUWP/ - .\ARM\DebugUWP/ - .\ARM\DebugUWP/ - - - ..\..\binARMuwp\icuuc64d.dll - .\..\..\libARMuwp\icuucd.pdb - ..\..\libARMuwp\icuucd.lib + MachineARM64 + + .\..\..\libARM64;%(AdditionalLibraryDirectories) @@ -317,9 +256,7 @@ - - true - + @@ -365,14 +302,20 @@ + + + + + + @@ -383,7 +326,6 @@ - @@ -465,6 +407,7 @@ + @@ -534,8 +477,12 @@ + + + + @@ -574,7 +521,7 @@ - + @@ -585,4 +532,4 @@ - + \ No newline at end of file diff --git a/source/common/edits.cpp b/source/common/edits.cpp index 00a8d60..95f0c19 100644 --- a/source/common/edits.cpp +++ b/source/common/edits.cpp @@ -243,7 +243,7 @@ UBool Edits::growArray() { return TRUE; } -UBool Edits::copyErrorTo(UErrorCode &outErrorCode) { +UBool Edits::copyErrorTo(UErrorCode &outErrorCode) const { if (U_FAILURE(outErrorCode)) { return TRUE; } if (U_SUCCESS(errorCode_)) { return FALSE; } outErrorCode = errorCode_; diff --git a/source/common/filteredbrk.cpp b/source/common/filteredbrk.cpp index 20c3aa8..c07128c 100644 --- a/source/common/filteredbrk.cpp +++ b/source/common/filteredbrk.cpp @@ -173,7 +173,7 @@ public: status = U_SAFECLONE_ALLOCATED_WARNING; return clone(); } - virtual BreakIterator* clone(void) const { return new SimpleFilteredSentenceBreakIterator(*this); } + virtual SimpleFilteredSentenceBreakIterator* clone() const { return new SimpleFilteredSentenceBreakIterator(*this); } virtual UClassID getDynamicClassID(void) const { return NULL; } virtual UBool operator==(const BreakIterator& o) const { if(this==&o) return true; return false; } diff --git a/source/common/localebuilder.cpp b/source/common/localebuilder.cpp index fe931fc..1dd8131 100644 --- a/source/common/localebuilder.cpp +++ b/source/common/localebuilder.cpp @@ -157,13 +157,18 @@ _isKeywordValue(const char* key, const char* value, int32_t value_len) } static void -_copyExtensions(const Locale& from, Locale* to, bool validate, UErrorCode& errorCode) +_copyExtensions(const Locale& from, icu::StringEnumeration *keywords, + Locale& to, bool validate, UErrorCode& errorCode) { if (U_FAILURE(errorCode)) { return; } - LocalPointer iter(from.createKeywords(errorCode)); - if (U_FAILURE(errorCode) || iter.isNull()) { return; } + LocalPointer ownedKeywords; + if (keywords == nullptr) { + ownedKeywords.adoptInstead(from.createKeywords(errorCode)); + if (U_FAILURE(errorCode) || ownedKeywords.isNull()) { return; } + keywords = ownedKeywords.getAlias(); + } const char* key; - while ((key = iter->next(nullptr, errorCode)) != nullptr) { + while ((key = keywords->next(nullptr, errorCode)) != nullptr) { CharString value; CharStringByteSink sink(&value); from.getKeywordValue(key, sink, errorCode); @@ -176,34 +181,34 @@ _copyExtensions(const Locale& from, Locale* to, bool validate, UErrorCode& error errorCode = U_ILLEGAL_ARGUMENT_ERROR; return; } - to->setKeywordValue(key, value.data(), errorCode); + to.setKeywordValue(key, value.data(), errorCode); if (U_FAILURE(errorCode)) { return; } } } void static -_clearUAttributesAndKeyType(Locale* locale, UErrorCode& errorCode) +_clearUAttributesAndKeyType(Locale& locale, UErrorCode& errorCode) { // Clear Unicode attributes - locale->setKeywordValue(kAttributeKey, "", errorCode); + locale.setKeywordValue(kAttributeKey, "", errorCode); // Clear all Unicode keyword values - LocalPointer iter(locale->createUnicodeKeywords(errorCode)); + LocalPointer iter(locale.createUnicodeKeywords(errorCode)); if (U_FAILURE(errorCode) || iter.isNull()) { return; } const char* key; while ((key = iter->next(nullptr, errorCode)) != nullptr) { - locale->setUnicodeKeywordValue(key, nullptr, errorCode); + locale.setUnicodeKeywordValue(key, nullptr, errorCode); } } static void -_setUnicodeExtensions(Locale* locale, const CharString& value, UErrorCode& errorCode) +_setUnicodeExtensions(Locale& locale, const CharString& value, UErrorCode& errorCode) { // Add the unicode extensions to extensions_ CharString locale_str("und-u-", errorCode); locale_str.append(value, errorCode); _copyExtensions( - Locale::forLanguageTag(locale_str.data(), errorCode), + Locale::forLanguageTag(locale_str.data(), errorCode), nullptr, locale, false, errorCode); } @@ -235,10 +240,10 @@ LocaleBuilder& LocaleBuilder::setExtension(char key, StringPiece value) status_); return *this; } - _clearUAttributesAndKeyType(extensions_, status_); + _clearUAttributesAndKeyType(*extensions_, status_); if (U_FAILURE(status_)) { return *this; } if (!value.empty()) { - _setUnicodeExtensions(extensions_, value_str, status_); + _setUnicodeExtensions(*extensions_, value_str, status_); } return *this; } @@ -401,6 +406,24 @@ Locale makeBogusLocale() { return bogus; } +void LocaleBuilder::copyExtensionsFrom(const Locale& src, UErrorCode& errorCode) +{ + if (U_FAILURE(errorCode)) { return; } + LocalPointer keywords(src.createKeywords(errorCode)); + if (U_FAILURE(errorCode) || keywords.isNull() || keywords->count(errorCode) == 0) { + // Error, or no extensions to copy. + return; + } + if (extensions_ == nullptr) { + extensions_ = new Locale(); + if (extensions_ == nullptr) { + status_ = U_MEMORY_ALLOCATION_ERROR; + return; + } + } + _copyExtensions(src, keywords.getAlias(), *extensions_, false, errorCode); +} + Locale LocaleBuilder::build(UErrorCode& errorCode) { if (U_FAILURE(errorCode)) { @@ -425,7 +448,7 @@ Locale LocaleBuilder::build(UErrorCode& errorCode) } Locale product(locale_str.data()); if (extensions_ != nullptr) { - _copyExtensions(*extensions_, &product, true, errorCode); + _copyExtensions(*extensions_, nullptr, product, true, errorCode); } if (U_FAILURE(errorCode)) { return makeBogusLocale(); @@ -433,4 +456,13 @@ Locale LocaleBuilder::build(UErrorCode& errorCode) return product; } +UBool LocaleBuilder::copyErrorTo(UErrorCode &outErrorCode) const { + if (U_FAILURE(outErrorCode)) { + // Do not overwrite the older error code + return TRUE; + } + outErrorCode = status_; + return U_FAILURE(outErrorCode); +} + U_NAMESPACE_END diff --git a/source/common/localematcher.cpp b/source/common/localematcher.cpp new file mode 100644 index 0000000..d975fe7 --- /dev/null +++ b/source/common/localematcher.cpp @@ -0,0 +1,720 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License + +// localematcher.cpp +// created: 2019may08 Markus W. Scherer + +#ifndef __LOCMATCHER_H__ +#define __LOCMATCHER_H__ + +#include "unicode/utypes.h" +#include "unicode/localebuilder.h" +#include "unicode/localematcher.h" +#include "unicode/locid.h" +#include "unicode/stringpiece.h" +#include "unicode/uobject.h" +#include "cstring.h" +#include "localeprioritylist.h" +#include "loclikelysubtags.h" +#include "locdistance.h" +#include "lsr.h" +#include "uassert.h" +#include "uhash.h" +#include "uvector.h" + +#define UND_LSR LSR("und", "", "") + +/** + * Indicator for the lifetime of desired-locale objects passed into the LocaleMatcher. + * + * @draft ICU 65 + */ +enum ULocMatchLifetime { + /** + * Locale objects are temporary. + * The matcher will make a copy of a locale that will be used beyond one function call. + * + * @draft ICU 65 + */ + ULOCMATCH_TEMPORARY_LOCALES, + /** + * Locale objects are stored at least as long as the matcher is used. + * The matcher will keep only a pointer to a locale that will be used beyond one function call, + * avoiding a copy. + * + * @draft ICU 65 + */ + ULOCMATCH_STORED_LOCALES // TODO: permanent? cached? clone? +}; +#ifndef U_IN_DOXYGEN +typedef enum ULocMatchLifetime ULocMatchLifetime; +#endif + +U_NAMESPACE_BEGIN + +LocaleMatcher::Result::Result(LocaleMatcher::Result &&src) U_NOEXCEPT : + desiredLocale(src.desiredLocale), + supportedLocale(src.supportedLocale), + desiredIndex(src.desiredIndex), + supportedIndex(src.supportedIndex), + desiredIsOwned(src.desiredIsOwned) { + if (desiredIsOwned) { + src.desiredLocale = nullptr; + src.desiredIndex = -1; + src.desiredIsOwned = FALSE; + } +} + +LocaleMatcher::Result::~Result() { + if (desiredIsOwned) { + delete desiredLocale; + } +} + +LocaleMatcher::Result &LocaleMatcher::Result::operator=(LocaleMatcher::Result &&src) U_NOEXCEPT { + this->~Result(); + + desiredLocale = src.desiredLocale; + supportedLocale = src.supportedLocale; + desiredIndex = src.desiredIndex; + supportedIndex = src.supportedIndex; + desiredIsOwned = src.desiredIsOwned; + + if (desiredIsOwned) { + src.desiredLocale = nullptr; + src.desiredIndex = -1; + src.desiredIsOwned = FALSE; + } + return *this; +} + +Locale LocaleMatcher::Result::makeResolvedLocale(UErrorCode &errorCode) const { + if (U_FAILURE(errorCode) || supportedLocale == nullptr) { + return Locale::getRoot(); + } + const Locale *bestDesired = getDesiredLocale(); + if (bestDesired == nullptr || *supportedLocale == *bestDesired) { + return *supportedLocale; + } + LocaleBuilder b; + b.setLocale(*supportedLocale); + + // Copy the region from bestDesired, if there is one. + const char *region = bestDesired->getCountry(); + if (*region != 0) { + b.setRegion(region); + } + + // Copy the variants from bestDesired, if there are any. + // Note that this will override any supportedLocale variants. + // For example, "sco-ulster-fonipa" + "...-fonupa" => "sco-fonupa" (replacing ulster). + const char *variants = bestDesired->getVariant(); + if (*variants != 0) { + b.setVariant(variants); + } + + // Copy the extensions from bestDesired, if there are any. + // C++ note: The following note, copied from Java, may not be true, + // as long as C++ copies by legacy ICU keyword, not by extension singleton. + // Note that this will override any supportedLocale extensions. + // For example, "th-u-nu-latn-ca-buddhist" + "...-u-nu-native" => "th-u-nu-native" + // (replacing calendar). + b.copyExtensionsFrom(*bestDesired, errorCode); + return b.build(errorCode); +} + +LocaleMatcher::Builder::Builder(LocaleMatcher::Builder &&src) U_NOEXCEPT : + errorCode_(src.errorCode_), + supportedLocales_(src.supportedLocales_), + thresholdDistance_(src.thresholdDistance_), + demotion_(src.demotion_), + defaultLocale_(src.defaultLocale_), + favor_(src.favor_) { + src.supportedLocales_ = nullptr; + src.defaultLocale_ = nullptr; +} + +LocaleMatcher::Builder::~Builder() { + delete supportedLocales_; + delete defaultLocale_; +} + +LocaleMatcher::Builder &LocaleMatcher::Builder::operator=(LocaleMatcher::Builder &&src) U_NOEXCEPT { + this->~Builder(); + + errorCode_ = src.errorCode_; + supportedLocales_ = src.supportedLocales_; + thresholdDistance_ = src.thresholdDistance_; + demotion_ = src.demotion_; + defaultLocale_ = src.defaultLocale_; + favor_ = src.favor_; + + src.supportedLocales_ = nullptr; + src.defaultLocale_ = nullptr; + return *this; +} + +void LocaleMatcher::Builder::clearSupportedLocales() { + if (supportedLocales_ != nullptr) { + supportedLocales_->removeAllElements(); + } +} + +bool LocaleMatcher::Builder::ensureSupportedLocaleVector() { + if (U_FAILURE(errorCode_)) { return false; } + if (supportedLocales_ != nullptr) { return true; } + supportedLocales_ = new UVector(uprv_deleteUObject, nullptr, errorCode_); + if (U_FAILURE(errorCode_)) { return false; } + if (supportedLocales_ == nullptr) { + errorCode_ = U_MEMORY_ALLOCATION_ERROR; + return false; + } + return true; +} + +LocaleMatcher::Builder &LocaleMatcher::Builder::setSupportedLocalesFromListString( + StringPiece locales) { + LocalePriorityList list(locales, errorCode_); + if (U_FAILURE(errorCode_)) { return *this; } + clearSupportedLocales(); + if (!ensureSupportedLocaleVector()) { return *this; } + int32_t length = list.getLengthIncludingRemoved(); + for (int32_t i = 0; i < length; ++i) { + Locale *locale = list.orphanLocaleAt(i); + if (locale == nullptr) { continue; } + supportedLocales_->addElement(locale, errorCode_); + if (U_FAILURE(errorCode_)) { + delete locale; + break; + } + } + return *this; +} + +LocaleMatcher::Builder &LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator &locales) { + if (U_FAILURE(errorCode_)) { return *this; } + clearSupportedLocales(); + if (!ensureSupportedLocaleVector()) { return *this; } + while (locales.hasNext()) { + const Locale &locale = locales.next(); + Locale *clone = locale.clone(); + if (clone == nullptr) { + errorCode_ = U_MEMORY_ALLOCATION_ERROR; + break; + } + supportedLocales_->addElement(clone, errorCode_); + if (U_FAILURE(errorCode_)) { + delete clone; + break; + } + } + return *this; +} + +LocaleMatcher::Builder &LocaleMatcher::Builder::addSupportedLocale(const Locale &locale) { + if (!ensureSupportedLocaleVector()) { return *this; } + Locale *clone = locale.clone(); + if (clone == nullptr) { + errorCode_ = U_MEMORY_ALLOCATION_ERROR; + return *this; + } + supportedLocales_->addElement(clone, errorCode_); + if (U_FAILURE(errorCode_)) { + delete clone; + } + return *this; +} + +LocaleMatcher::Builder &LocaleMatcher::Builder::setDefaultLocale(const Locale *defaultLocale) { + if (U_FAILURE(errorCode_)) { return *this; } + Locale *clone = nullptr; + if (defaultLocale != nullptr) { + clone = defaultLocale->clone(); + if (clone == nullptr) { + errorCode_ = U_MEMORY_ALLOCATION_ERROR; + return *this; + } + } + delete defaultLocale_; + defaultLocale_ = clone; + return *this; +} + +LocaleMatcher::Builder &LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag subtag) { + if (U_FAILURE(errorCode_)) { return *this; } + favor_ = subtag; + return *this; +} + +LocaleMatcher::Builder &LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion demotion) { + if (U_FAILURE(errorCode_)) { return *this; } + demotion_ = demotion; + return *this; +} + +#if 0 +/** + * Internal only! + * + * @param thresholdDistance the thresholdDistance to set, with -1 = default + * @return this Builder object + * @internal + * @deprecated This API is ICU internal only. + */ +@Deprecated +LocaleMatcher::Builder &LocaleMatcher::Builder::internalSetThresholdDistance(int32_t thresholdDistance) { + if (U_FAILURE(errorCode_)) { return *this; } + if (thresholdDistance > 100) { + thresholdDistance = 100; + } + thresholdDistance_ = thresholdDistance; + return *this; +} +#endif + +UBool LocaleMatcher::Builder::copyErrorTo(UErrorCode &outErrorCode) const { + if (U_FAILURE(outErrorCode)) { return TRUE; } + if (U_SUCCESS(errorCode_)) { return FALSE; } + outErrorCode = errorCode_; + return TRUE; +} + +LocaleMatcher LocaleMatcher::Builder::build(UErrorCode &errorCode) const { + if (U_SUCCESS(errorCode) && U_FAILURE(errorCode_)) { + errorCode = errorCode_; + } + return LocaleMatcher(*this, errorCode); +} + +namespace { + +LSR getMaximalLsrOrUnd(const XLikelySubtags &likelySubtags, const Locale &locale, + UErrorCode &errorCode) { + if (U_FAILURE(errorCode) || locale.isBogus() || *locale.getName() == 0 /* "und" */) { + return UND_LSR; + } else { + return likelySubtags.makeMaximizedLsrFrom(locale, errorCode); + } +} + +int32_t hashLSR(const UHashTok token) { + const LSR *lsr = static_cast(token.pointer); + return lsr->hashCode; +} + +UBool compareLSRs(const UHashTok t1, const UHashTok t2) { + const LSR *lsr1 = static_cast(t1.pointer); + const LSR *lsr2 = static_cast(t2.pointer); + return *lsr1 == *lsr2; +} + +bool putIfAbsent(UHashtable *lsrToIndex, const LSR &lsr, int32_t i, UErrorCode &errorCode) { + if (U_FAILURE(errorCode)) { return false; } + U_ASSERT(i > 0); + int32_t index = uhash_geti(lsrToIndex, &lsr); + if (index != 0) { + return false; + } else { + uhash_puti(lsrToIndex, const_cast(&lsr), i, &errorCode); + return U_SUCCESS(errorCode); + } +} + +} // namespace + +LocaleMatcher::LocaleMatcher(const Builder &builder, UErrorCode &errorCode) : + likelySubtags(*XLikelySubtags::getSingleton(errorCode)), + localeDistance(*LocaleDistance::getSingleton(errorCode)), + thresholdDistance(builder.thresholdDistance_), + demotionPerDesiredLocale(0), + favorSubtag(builder.favor_), + supportedLocales(nullptr), lsrs(nullptr), supportedLocalesLength(0), + supportedLsrToIndex(nullptr), + supportedLSRs(nullptr), supportedIndexes(nullptr), supportedLSRsLength(0), + ownedDefaultLocale(nullptr), defaultLocale(nullptr), defaultLocaleIndex(-1) { + if (U_FAILURE(errorCode)) { return; } + if (thresholdDistance < 0) { + thresholdDistance = localeDistance.getDefaultScriptDistance(); + } + supportedLocalesLength = builder.supportedLocales_ != nullptr ? + builder.supportedLocales_->size() : 0; + const Locale *def = builder.defaultLocale_; + int32_t idef = -1; + if (supportedLocalesLength > 0) { + // Store the supported locales in input order, + // so that when different types are used (e.g., language tag strings) + // we can return those by parallel index. + supportedLocales = static_cast( + uprv_malloc(supportedLocalesLength * sizeof(const Locale *))); + // Supported LRSs in input order. + // In C++, we store these permanently to simplify ownership management + // in the hash tables. Duplicate LSRs (if any) are unused overhead. + lsrs = new LSR[supportedLocalesLength]; + if (supportedLocales == nullptr || lsrs == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + return; + } + // If the constructor fails partway, we need null pointers for destructibility. + uprv_memset(supportedLocales, 0, supportedLocalesLength * sizeof(const Locale *)); + // Also find the first supported locale whose LSR is + // the same as that for the default locale. + LSR builderDefaultLSR; + const LSR *defLSR = nullptr; + if (def != nullptr) { + builderDefaultLSR = getMaximalLsrOrUnd(likelySubtags, *def, errorCode); + if (U_FAILURE(errorCode)) { return; } + defLSR = &builderDefaultLSR; + } + for (int32_t i = 0; i < supportedLocalesLength; ++i) { + const Locale &locale = *static_cast(builder.supportedLocales_->elementAt(i)); + supportedLocales[i] = locale.clone(); + if (supportedLocales[i] == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + return; + } + const Locale &supportedLocale = *supportedLocales[i]; + LSR &lsr = lsrs[i] = getMaximalLsrOrUnd(likelySubtags, supportedLocale, errorCode); + lsr.setHashCode(); + if (U_FAILURE(errorCode)) { return; } + if (idef < 0 && defLSR != nullptr && lsr == *defLSR) { + idef = i; + defLSR = &lsr; // owned pointer to put into supportedLsrToIndex + if (*def == supportedLocale) { + def = &supportedLocale; // owned pointer to keep + } + } + } + + // We need an unordered map from LSR to first supported locale with that LSR, + // and an ordered list of (LSR, supported index). + // We insert the supported locales in the following order: + // 1. Default locale, if it is supported. + // 2. Priority locales (aka "paradigm locales") in builder order. + // 3. Remaining locales in builder order. + // In Java, we use a LinkedHashMap for both map & ordered lists. + // In C++, we use separate structures. + // We over-allocate arrays of LSRs and indexes for simplicity. + // We reserve slots at the array starts for the default and paradigm locales, + // plus enough for all supported locales. + // If there are few paradigm locales and few duplicate supported LSRs, + // then the amount of wasted space is small. + supportedLsrToIndex = uhash_openSize(hashLSR, compareLSRs, uhash_compareLong, + supportedLocalesLength, &errorCode); + if (U_FAILURE(errorCode)) { return; } + int32_t paradigmLimit = 1 + localeDistance.getParadigmLSRsLength(); + int32_t suppLSRsCapacity = paradigmLimit + supportedLocalesLength; + supportedLSRs = static_cast( + uprv_malloc(suppLSRsCapacity * sizeof(const LSR *))); + supportedIndexes = static_cast( + uprv_malloc(suppLSRsCapacity * sizeof(int32_t))); + if (supportedLSRs == nullptr || supportedIndexes == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + return; + } + int32_t paradigmIndex = 0; + int32_t otherIndex = paradigmLimit; + if (idef >= 0) { + uhash_puti(supportedLsrToIndex, const_cast(defLSR), idef + 1, &errorCode); + supportedLSRs[0] = defLSR; + supportedIndexes[0] = idef; + paradigmIndex = 1; + } + for (int32_t i = 0; i < supportedLocalesLength; ++i) { + if (i == idef) { continue; } + const Locale &locale = *supportedLocales[i]; + const LSR &lsr = lsrs[i]; + if (defLSR == nullptr) { + U_ASSERT(i == 0); + def = &locale; + defLSR = &lsr; + idef = 0; + uhash_puti(supportedLsrToIndex, const_cast(&lsr), 0 + 1, &errorCode); + supportedLSRs[0] = &lsr; + supportedIndexes[0] = 0; + paradigmIndex = 1; + } else if (idef >= 0 && lsr == *defLSR) { + // lsr == *defLSR means that this supported locale is + // a duplicate of the default locale. + // Either an explicit default locale is supported, and we added it before the loop, + // or there is no explicit default locale, and this is + // a duplicate of the first supported locale. + // In both cases, idef >= 0 now, so otherwise we can skip the comparison. + // For a duplicate, putIfAbsent() is a no-op, so nothing to do. + } else { + if (putIfAbsent(supportedLsrToIndex, lsr, i + 1, errorCode)) { + if (localeDistance.isParadigmLSR(lsr)) { + supportedLSRs[paradigmIndex] = &lsr; + supportedIndexes[paradigmIndex++] = i; + } else { + supportedLSRs[otherIndex] = &lsr; + supportedIndexes[otherIndex++] = i; + } + } + } + if (U_FAILURE(errorCode)) { return; } + } + // Squeeze out unused array slots. + if (paradigmIndex < paradigmLimit && paradigmLimit < otherIndex) { + uprv_memmove(supportedLSRs + paradigmIndex, supportedLSRs + paradigmLimit, + (otherIndex - paradigmLimit) * sizeof(const LSR *)); + uprv_memmove(supportedIndexes + paradigmIndex, supportedIndexes + paradigmLimit, + (otherIndex - paradigmLimit) * sizeof(int32_t)); + } + supportedLSRsLength = otherIndex - (paradigmLimit - paradigmIndex); + } + + if (def != nullptr && (idef < 0 || def != supportedLocales[idef])) { + ownedDefaultLocale = def->clone(); + if (ownedDefaultLocale == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + return; + } + def = ownedDefaultLocale; + } + defaultLocale = def; + defaultLocaleIndex = idef; + + if (builder.demotion_ == ULOCMATCH_DEMOTION_REGION) { + demotionPerDesiredLocale = localeDistance.getDefaultDemotionPerDesiredLocale(); + } +} + +LocaleMatcher::LocaleMatcher(LocaleMatcher &&src) U_NOEXCEPT : + likelySubtags(src.likelySubtags), + localeDistance(src.localeDistance), + thresholdDistance(src.thresholdDistance), + demotionPerDesiredLocale(src.demotionPerDesiredLocale), + favorSubtag(src.favorSubtag), + supportedLocales(src.supportedLocales), lsrs(src.lsrs), + supportedLocalesLength(src.supportedLocalesLength), + supportedLsrToIndex(src.supportedLsrToIndex), + supportedLSRs(src.supportedLSRs), + supportedIndexes(src.supportedIndexes), + supportedLSRsLength(src.supportedLSRsLength), + ownedDefaultLocale(src.ownedDefaultLocale), defaultLocale(src.defaultLocale), + defaultLocaleIndex(src.defaultLocaleIndex) { + src.supportedLocales = nullptr; + src.lsrs = nullptr; + src.supportedLocalesLength = 0; + src.supportedLsrToIndex = nullptr; + src.supportedLSRs = nullptr; + src.supportedIndexes = nullptr; + src.supportedLSRsLength = 0; + src.ownedDefaultLocale = nullptr; + src.defaultLocale = nullptr; + src.defaultLocaleIndex = -1; +} + +LocaleMatcher::~LocaleMatcher() { + for (int32_t i = 0; i < supportedLocalesLength; ++i) { + delete supportedLocales[i]; + } + uprv_free(supportedLocales); + delete[] lsrs; + uhash_close(supportedLsrToIndex); + uprv_free(supportedLSRs); + uprv_free(supportedIndexes); + delete ownedDefaultLocale; +} + +LocaleMatcher &LocaleMatcher::operator=(LocaleMatcher &&src) U_NOEXCEPT { + this->~LocaleMatcher(); + + thresholdDistance = src.thresholdDistance; + demotionPerDesiredLocale = src.demotionPerDesiredLocale; + favorSubtag = src.favorSubtag; + supportedLocales = src.supportedLocales; + lsrs = src.lsrs; + supportedLocalesLength = src.supportedLocalesLength; + supportedLsrToIndex = src.supportedLsrToIndex; + supportedLSRs = src.supportedLSRs; + supportedIndexes = src.supportedIndexes; + supportedLSRsLength = src.supportedLSRsLength; + ownedDefaultLocale = src.ownedDefaultLocale; + defaultLocale = src.defaultLocale; + defaultLocaleIndex = src.defaultLocaleIndex; + + src.supportedLocales = nullptr; + src.lsrs = nullptr; + src.supportedLocalesLength = 0; + src.supportedLsrToIndex = nullptr; + src.supportedLSRs = nullptr; + src.supportedIndexes = nullptr; + src.supportedLSRsLength = 0; + src.ownedDefaultLocale = nullptr; + src.defaultLocale = nullptr; + src.defaultLocaleIndex = -1; + return *this; +} + +class LocaleLsrIterator { +public: + LocaleLsrIterator(const XLikelySubtags &likelySubtags, Locale::Iterator &locales, + ULocMatchLifetime lifetime) : + likelySubtags(likelySubtags), locales(locales), lifetime(lifetime) {} + + ~LocaleLsrIterator() { + if (lifetime == ULOCMATCH_TEMPORARY_LOCALES) { + delete remembered; + } + } + + bool hasNext() const { + return locales.hasNext(); + } + + LSR next(UErrorCode &errorCode) { + current = &locales.next(); + return getMaximalLsrOrUnd(likelySubtags, *current, errorCode); + } + + void rememberCurrent(int32_t desiredIndex, UErrorCode &errorCode) { + if (U_FAILURE(errorCode)) { return; } + bestDesiredIndex = desiredIndex; + if (lifetime == ULOCMATCH_STORED_LOCALES) { + remembered = current; + } else { + // ULOCMATCH_TEMPORARY_LOCALES + delete remembered; + remembered = new Locale(*current); + if (remembered == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + } + } + } + + const Locale *orphanRemembered() { + const Locale *rem = remembered; + remembered = nullptr; + return rem; + } + + int32_t getBestDesiredIndex() const { + return bestDesiredIndex; + } + +private: + const XLikelySubtags &likelySubtags; + Locale::Iterator &locales; + ULocMatchLifetime lifetime; + const Locale *current = nullptr, *remembered = nullptr; + int32_t bestDesiredIndex = -1; +}; + +const Locale *LocaleMatcher::getBestMatch(const Locale &desiredLocale, UErrorCode &errorCode) const { + if (U_FAILURE(errorCode)) { return nullptr; } + int32_t suppIndex = getBestSuppIndex( + getMaximalLsrOrUnd(likelySubtags, desiredLocale, errorCode), + nullptr, errorCode); + return U_SUCCESS(errorCode) && suppIndex >= 0 ? supportedLocales[suppIndex] : defaultLocale; +} + +const Locale *LocaleMatcher::getBestMatch(Locale::Iterator &desiredLocales, + UErrorCode &errorCode) const { + if (U_FAILURE(errorCode)) { return nullptr; } + if (!desiredLocales.hasNext()) { + return defaultLocale; + } + LocaleLsrIterator lsrIter(likelySubtags, desiredLocales, ULOCMATCH_TEMPORARY_LOCALES); + int32_t suppIndex = getBestSuppIndex(lsrIter.next(errorCode), &lsrIter, errorCode); + return U_SUCCESS(errorCode) && suppIndex >= 0 ? supportedLocales[suppIndex] : defaultLocale; +} + +const Locale *LocaleMatcher::getBestMatchForListString( + StringPiece desiredLocaleList, UErrorCode &errorCode) const { + LocalePriorityList list(desiredLocaleList, errorCode); + LocalePriorityList::Iterator iter = list.iterator(); + return getBestMatch(iter, errorCode); +} + +LocaleMatcher::Result LocaleMatcher::getBestMatchResult( + const Locale &desiredLocale, UErrorCode &errorCode) const { + if (U_FAILURE(errorCode)) { + return Result(nullptr, defaultLocale, -1, defaultLocaleIndex, FALSE); + } + int32_t suppIndex = getBestSuppIndex( + getMaximalLsrOrUnd(likelySubtags, desiredLocale, errorCode), + nullptr, errorCode); + if (U_FAILURE(errorCode) || suppIndex < 0) { + return Result(nullptr, defaultLocale, -1, defaultLocaleIndex, FALSE); + } else { + return Result(&desiredLocale, supportedLocales[suppIndex], 0, suppIndex, FALSE); + } +} + +LocaleMatcher::Result LocaleMatcher::getBestMatchResult( + Locale::Iterator &desiredLocales, UErrorCode &errorCode) const { + if (U_FAILURE(errorCode) || !desiredLocales.hasNext()) { + return Result(nullptr, defaultLocale, -1, defaultLocaleIndex, FALSE); + } + LocaleLsrIterator lsrIter(likelySubtags, desiredLocales, ULOCMATCH_TEMPORARY_LOCALES); + int32_t suppIndex = getBestSuppIndex(lsrIter.next(errorCode), &lsrIter, errorCode); + if (U_FAILURE(errorCode) || suppIndex < 0) { + return Result(nullptr, defaultLocale, -1, defaultLocaleIndex, FALSE); + } else { + return Result(lsrIter.orphanRemembered(), supportedLocales[suppIndex], + lsrIter.getBestDesiredIndex(), suppIndex, TRUE); + } +} + +int32_t LocaleMatcher::getBestSuppIndex(LSR desiredLSR, LocaleLsrIterator *remainingIter, + UErrorCode &errorCode) const { + if (U_FAILURE(errorCode)) { return -1; } + int32_t desiredIndex = 0; + int32_t bestSupportedLsrIndex = -1; + for (int32_t bestDistance = thresholdDistance;;) { + // Quick check for exact maximized LSR. + // Returns suppIndex+1 where 0 means not found. + if (supportedLsrToIndex != nullptr) { + desiredLSR.setHashCode(); + int32_t index = uhash_geti(supportedLsrToIndex, &desiredLSR); + if (index != 0) { + int32_t suppIndex = index - 1; + if (remainingIter != nullptr) { + remainingIter->rememberCurrent(desiredIndex, errorCode); + } + return suppIndex; + } + } + int32_t bestIndexAndDistance = localeDistance.getBestIndexAndDistance( + desiredLSR, supportedLSRs, supportedLSRsLength, bestDistance, favorSubtag); + if (bestIndexAndDistance >= 0) { + bestDistance = bestIndexAndDistance & 0xff; + if (remainingIter != nullptr) { + remainingIter->rememberCurrent(desiredIndex, errorCode); + if (U_FAILURE(errorCode)) { return -1; } + } + bestSupportedLsrIndex = bestIndexAndDistance >= 0 ? bestIndexAndDistance >> 8 : -1; + } + if ((bestDistance -= demotionPerDesiredLocale) <= 0) { + break; + } + if (remainingIter == nullptr || !remainingIter->hasNext()) { + break; + } + desiredLSR = remainingIter->next(errorCode); + if (U_FAILURE(errorCode)) { return -1; } + ++desiredIndex; + } + if (bestSupportedLsrIndex < 0) { + // no good match + return -1; + } + return supportedIndexes[bestSupportedLsrIndex]; +} + +double LocaleMatcher::internalMatch(const Locale &desired, const Locale &supported, UErrorCode &errorCode) const { + // Returns the inverse of the distance: That is, 1-distance(desired, supported). + LSR suppLSR = getMaximalLsrOrUnd(likelySubtags, supported, errorCode); + if (U_FAILURE(errorCode)) { return 0; } + const LSR *pSuppLSR = &suppLSR; + int32_t distance = localeDistance.getBestIndexAndDistance( + getMaximalLsrOrUnd(likelySubtags, desired, errorCode), + &pSuppLSR, 1, + thresholdDistance, favorSubtag) & 0xff; + return (100 - distance) / 100.0; +} + +U_NAMESPACE_END + +#endif // __LOCMATCHER_H__ diff --git a/source/common/localeprioritylist.cpp b/source/common/localeprioritylist.cpp new file mode 100644 index 0000000..06442fb --- /dev/null +++ b/source/common/localeprioritylist.cpp @@ -0,0 +1,239 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License + +// localeprioritylist.cpp +// created: 2019jul11 Markus W. Scherer + +#include "unicode/utypes.h" +#include "unicode/localpointer.h" +#include "unicode/locid.h" +#include "unicode/stringpiece.h" +#include "unicode/uobject.h" +#include "charstr.h" +#include "cmemory.h" +#include "localeprioritylist.h" +#include "uarrsort.h" +#include "uassert.h" +#include "uhash.h" + +U_NAMESPACE_BEGIN + +namespace { + +int32_t hashLocale(const UHashTok token) { + auto *locale = static_cast(token.pointer); + return locale->hashCode(); +} + +UBool compareLocales(const UHashTok t1, const UHashTok t2) { + auto *l1 = static_cast(t1.pointer); + auto *l2 = static_cast(t2.pointer); + return *l1 == *l2; +} + +constexpr int32_t WEIGHT_ONE = 1000; + +struct LocaleAndWeight { + Locale *locale; + int32_t weight; // 0..1000 = 0.0..1.0 + int32_t index; // force stable sort + + int32_t compare(const LocaleAndWeight &other) const { + int32_t diff = other.weight - weight; // descending: other-this + if (diff != 0) { return diff; } + return index - other.index; + } +}; + +int32_t U_CALLCONV +compareLocaleAndWeight(const void * /*context*/, const void *left, const void *right) { + return static_cast(left)-> + compare(*static_cast(right)); +} + +const char *skipSpaces(const char *p, const char *limit) { + while (p < limit && *p == ' ') { ++p; } + return p; +} + +int32_t findTagLength(const char *p, const char *limit) { + // Look for accept-language delimiters. + // Leave other validation up to the Locale constructor. + const char *q; + for (q = p; q < limit; ++q) { + char c = *q; + if (c == ' ' || c == ',' || c == ';') { break; } + } + return static_cast(q - p); +} + +/** + * Parses and returns a qvalue weight in millis. + * Advances p to after the parsed substring. + * Returns a negative value if parsing fails. + */ +int32_t parseWeight(const char *&p, const char *limit) { + p = skipSpaces(p, limit); + char c; + if (p == limit || ((c = *p) != '0' && c != '1')) { return -1; } + int32_t weight = (c - '0') * 1000; + if (++p == limit || *p != '.') { return weight; } + int32_t multiplier = 100; + while (++p != limit && '0' <= (c = *p) && c <= '9') { + c -= '0'; + if (multiplier > 0) { + weight += c * multiplier; + multiplier /= 10; + } else if (multiplier == 0) { + // round up + if (c >= 5) { ++weight; } + multiplier = -1; + } // else ignore further fraction digits + } + return weight <= WEIGHT_ONE ? weight : -1; // bad if > 1.0 +} + +} // namespace + +/** + * Nothing but a wrapper over a MaybeStackArray of LocaleAndWeight. + * + * This wrapper exists (and is not in an anonymous namespace) + * so that we can forward-declare it in the header file and + * don't have to expose the MaybeStackArray specialization and + * the LocaleAndWeight to code (like the test) that #includes localeprioritylist.h. + * Also, otherwise we would have to do a platform-specific + * template export declaration of some kind for the MaybeStackArray specialization + * to be properly exported from the common DLL. + */ +struct LocaleAndWeightArray : public UMemory { + MaybeStackArray array; +}; + +LocalePriorityList::LocalePriorityList(StringPiece s, UErrorCode &errorCode) { + if (U_FAILURE(errorCode)) { return; } + list = new LocaleAndWeightArray(); + if (list == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + return; + } + const char *p = s.data(); + const char *limit = p + s.length(); + while ((p = skipSpaces(p, limit)) != limit) { + if (*p == ',') { // empty range field + ++p; + continue; + } + int32_t tagLength = findTagLength(p, limit); + if (tagLength == 0) { + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return; + } + CharString tag(p, tagLength, errorCode); + if (U_FAILURE(errorCode)) { return; } + Locale locale = Locale(tag.data()); + if (locale.isBogus()) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + return; + } + int32_t weight = WEIGHT_ONE; + if ((p = skipSpaces(p + tagLength, limit)) != limit && *p == ';') { + if ((p = skipSpaces(p + 1, limit)) == limit || *p != 'q' || + (p = skipSpaces(p + 1, limit)) == limit || *p != '=' || + (++p, (weight = parseWeight(p, limit)) < 0)) { + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return; + } + p = skipSpaces(p, limit); + } + if (p != limit && *p != ',') { // trailing junk + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return; + } + add(locale, weight, errorCode); + if (p == limit) { break; } + ++p; + } + sort(errorCode); +} + +LocalePriorityList::~LocalePriorityList() { + if (list != nullptr) { + for (int32_t i = 0; i < listLength; ++i) { + delete list->array[i].locale; + } + delete list; + } + uhash_close(map); +} + +const Locale *LocalePriorityList::localeAt(int32_t i) const { + return list->array[i].locale; +} + +Locale *LocalePriorityList::orphanLocaleAt(int32_t i) { + if (list == nullptr) { return nullptr; } + LocaleAndWeight &lw = list->array[i]; + Locale *l = lw.locale; + lw.locale = nullptr; + return l; +} + +bool LocalePriorityList::add(const Locale &locale, int32_t weight, UErrorCode &errorCode) { + if (U_FAILURE(errorCode)) { return false; } + if (map == nullptr) { + if (weight <= 0) { return true; } // do not add q=0 + map = uhash_open(hashLocale, compareLocales, uhash_compareLong, &errorCode); + if (U_FAILURE(errorCode)) { return false; } + } + LocalPointer clone; + int32_t index = uhash_geti(map, &locale); + if (index != 0) { + // Duplicate: Remove the old item and append it anew. + LocaleAndWeight &lw = list->array[index - 1]; + clone.adoptInstead(lw.locale); + lw.locale = nullptr; + lw.weight = 0; + ++numRemoved; + } + if (weight <= 0) { // do not add q=0 + if (index != 0) { + // Not strictly necessary but cleaner. + uhash_removei(map, &locale); + } + return true; + } + if (clone.isNull()) { + clone.adoptInstead(locale.clone()); + if (clone.isNull() || (clone->isBogus() && !locale.isBogus())) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + return false; + } + } + if (listLength == list->array.getCapacity()) { + int32_t newCapacity = listLength < 50 ? 100 : 4 * listLength; + if (list->array.resize(newCapacity, listLength) == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + return false; + } + } + uhash_puti(map, clone.getAlias(), listLength + 1, &errorCode); + if (U_FAILURE(errorCode)) { return false; } + LocaleAndWeight &lw = list->array[listLength]; + lw.locale = clone.orphan(); + lw.weight = weight; + lw.index = listLength++; + if (weight < WEIGHT_ONE) { hasWeights = true; } + U_ASSERT(uhash_count(map) == getLength()); + return true; +} + +void LocalePriorityList::sort(UErrorCode &errorCode) { + // Sort by descending weights if there is a mix of weights. + // The comparator forces a stable sort via the item index. + if (U_FAILURE(errorCode) || getLength() <= 1 || !hasWeights) { return; } + uprv_sortArray(list->array.getAlias(), listLength, sizeof(LocaleAndWeight), + compareLocaleAndWeight, nullptr, FALSE, &errorCode); +} + +U_NAMESPACE_END diff --git a/source/common/localeprioritylist.h b/source/common/localeprioritylist.h new file mode 100644 index 0000000..80ca38a --- /dev/null +++ b/source/common/localeprioritylist.h @@ -0,0 +1,115 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License + +// localeprioritylist.h +// created: 2019jul11 Markus W. Scherer + +#ifndef __LOCALEPRIORITYLIST_H__ +#define __LOCALEPRIORITYLIST_H__ + +#include "unicode/utypes.h" +#include "unicode/locid.h" +#include "unicode/stringpiece.h" +#include "unicode/uobject.h" + +struct UHashtable; + +U_NAMESPACE_BEGIN + +struct LocaleAndWeightArray; + +/** + * Parses a list of locales from an accept-language string. + * We are a bit more lenient than the spec: + * We accept extra whitespace in more places, empty range fields, + * and any number of qvalue fraction digits. + * + * https://tools.ietf.org/html/rfc2616#section-14.4 + * 14.4 Accept-Language + * + * Accept-Language = "Accept-Language" ":" + * 1#( language-range [ ";" "q" "=" qvalue ] ) + * language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" ) + * + * Each language-range MAY be given an associated quality value which + * represents an estimate of the user's preference for the languages + * specified by that range. The quality value defaults to "q=1". For + * example, + * + * Accept-Language: da, en-gb;q=0.8, en;q=0.7 + * + * https://tools.ietf.org/html/rfc2616#section-3.9 + * 3.9 Quality Values + * + * HTTP content negotiation (section 12) uses short "floating point" + * numbers to indicate the relative importance ("weight") of various + * negotiable parameters. A weight is normalized to a real number in + * the range 0 through 1, where 0 is the minimum and 1 the maximum + * value. If a parameter has a quality value of 0, then content with + * this parameter is `not acceptable' for the client. HTTP/1.1 + * applications MUST NOT generate more than three digits after the + * decimal point. User configuration of these values SHOULD also be + * limited in this fashion. + * + * qvalue = ( "0" [ "." 0*3DIGIT ] ) + * | ( "1" [ "." 0*3("0") ] ) + */ +class U_COMMON_API LocalePriorityList : public UMemory { +public: + class Iterator : public Locale::Iterator { + public: + UBool hasNext() const override { return count < length; } + + const Locale &next() override { + for(;;) { + const Locale *locale = list.localeAt(index++); + if (locale != nullptr) { + ++count; + return *locale; + } + } + } + + private: + friend class LocalePriorityList; + + Iterator(const LocalePriorityList &list) : list(list), length(list.getLength()) {} + + const LocalePriorityList &list; + int32_t index = 0; + int32_t count = 0; + const int32_t length; + }; + + LocalePriorityList(StringPiece s, UErrorCode &errorCode); + + ~LocalePriorityList(); + + int32_t getLength() const { return listLength - numRemoved; } + + int32_t getLengthIncludingRemoved() const { return listLength; } + + Iterator iterator() const { return Iterator(*this); } + + const Locale *localeAt(int32_t i) const; + + Locale *orphanLocaleAt(int32_t i); + +private: + LocalePriorityList(const LocalePriorityList &) = delete; + LocalePriorityList &operator=(const LocalePriorityList &) = delete; + + bool add(const Locale &locale, int32_t weight, UErrorCode &errorCode); + + void sort(UErrorCode &errorCode); + + LocaleAndWeightArray *list = nullptr; + int32_t listLength = 0; + int32_t numRemoved = 0; + bool hasWeights = false; // other than 1.0 + UHashtable *map = nullptr; +}; + +U_NAMESPACE_END + +#endif // __LOCALEPRIORITYLIST_H__ diff --git a/source/common/locavailable.cpp b/source/common/locavailable.cpp index 5f06aff..e8ec512 100644 --- a/source/common/locavailable.cpp +++ b/source/common/locavailable.cpp @@ -19,11 +19,13 @@ * that then do not depend on resource bundle code and res_index bundles. */ +#include "unicode/errorcode.h" #include "unicode/utypes.h" #include "unicode/locid.h" #include "unicode/uloc.h" #include "unicode/ures.h" #include "cmemory.h" +#include "cstring.h" #include "ucln_cmn.h" #include "uassert.h" #include "umutex.h" @@ -95,85 +97,174 @@ U_NAMESPACE_USE /* ### Constants **************************************************/ -/* These strings describe the resources we attempt to load from - the locale ResourceBundle data file.*/ -static const char _kIndexLocaleName[] = "res_index"; -static const char _kIndexTag[] = "InstalledLocales"; +namespace { -static char** _installedLocales = NULL; -static int32_t _installedLocalesCount = 0; -static icu::UInitOnce _installedLocalesInitOnce; +// Enough capacity for the two lists in the res_index.res file +const char** gAvailableLocaleNames[2] = {}; +int32_t gAvailableLocaleCounts[2] = {}; +icu::UInitOnce ginstalledLocalesInitOnce = U_INITONCE_INITIALIZER; -/* ### Get available **************************************************/ +class AvailableLocalesSink : public ResourceSink { + public: + void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) U_OVERRIDE { + ResourceTable resIndexTable = value.getTable(status); + if (U_FAILURE(status)) { + return; + } + for (int32_t i = 0; resIndexTable.getKeyAndValue(i, key, value); ++i) { + ULocAvailableType type; + if (uprv_strcmp(key, "InstalledLocales") == 0) { + type = ULOC_AVAILABLE_DEFAULT; + } else if (uprv_strcmp(key, "AliasLocales") == 0) { + type = ULOC_AVAILABLE_ONLY_LEGACY_ALIASES; + } else { + // CLDRVersion, etc. + continue; + } + ResourceTable availableLocalesTable = value.getTable(status); + if (U_FAILURE(status)) { + return; + } + gAvailableLocaleCounts[type] = availableLocalesTable.getSize(); + gAvailableLocaleNames[type] = static_cast( + uprv_malloc(gAvailableLocaleCounts[type] * sizeof(const char*))); + if (gAvailableLocaleNames[type] == nullptr) { + status = U_MEMORY_ALLOCATION_ERROR; + return; + } + for (int32_t j = 0; availableLocalesTable.getKeyAndValue(j, key, value); ++j) { + gAvailableLocaleNames[type][j] = key; + } + } + } +}; -static UBool U_CALLCONV uloc_cleanup(void) { - char ** temp; +class AvailableLocalesStringEnumeration : public StringEnumeration { + public: + AvailableLocalesStringEnumeration(ULocAvailableType type) : fType(type) { + } + + const char* next(int32_t *resultLength, UErrorCode&) override { + ULocAvailableType actualType = fType; + int32_t actualIndex = fIndex++; + + // If the "combined" list was requested, resolve that now + if (fType == ULOC_AVAILABLE_WITH_LEGACY_ALIASES) { + int32_t defaultLocalesCount = gAvailableLocaleCounts[ULOC_AVAILABLE_DEFAULT]; + if (actualIndex < defaultLocalesCount) { + actualType = ULOC_AVAILABLE_DEFAULT; + } else { + actualIndex -= defaultLocalesCount; + actualType = ULOC_AVAILABLE_ONLY_LEGACY_ALIASES; + } + } - if (_installedLocales) { - temp = _installedLocales; - _installedLocales = NULL; + // Return the requested string + int32_t count = gAvailableLocaleCounts[actualType]; + const char* result; + if (actualIndex < count) { + result = gAvailableLocaleNames[actualType][actualIndex]; + if (resultLength != nullptr) { + *resultLength = static_cast(uprv_strlen(result)); + } + } else { + result = nullptr; + if (resultLength != nullptr) { + *resultLength = 0; + } + } + return result; + } - _installedLocalesCount = 0; - _installedLocalesInitOnce.reset(); + void reset(UErrorCode&) override { + fIndex = 0; + } - uprv_free(temp); + int32_t count(UErrorCode&) const override { + if (fType == ULOC_AVAILABLE_WITH_LEGACY_ALIASES) { + return gAvailableLocaleCounts[ULOC_AVAILABLE_DEFAULT] + + gAvailableLocaleCounts[ULOC_AVAILABLE_ONLY_LEGACY_ALIASES]; + } else { + return gAvailableLocaleCounts[fType]; + } } + + private: + ULocAvailableType fType; + int32_t fIndex = 0; +}; + +/* ### Get available **************************************************/ + +static UBool U_CALLCONV uloc_cleanup(void) { + for (int32_t i = 0; i < UPRV_LENGTHOF(gAvailableLocaleNames); i++) { + uprv_free(gAvailableLocaleNames[i]); + gAvailableLocaleNames[i] = nullptr; + gAvailableLocaleCounts[i] = 0; + } + ginstalledLocalesInitOnce.reset(); return TRUE; } // Load Installed Locales. This function will be called exactly once // via the initOnce mechanism. -static void U_CALLCONV loadInstalledLocales() { - UErrorCode status = U_ZERO_ERROR; - int32_t i = 0; - int32_t localeCount; - - U_ASSERT(_installedLocales == NULL); - U_ASSERT(_installedLocalesCount == 0); - - _installedLocalesCount = 0; +static void U_CALLCONV loadInstalledLocales(UErrorCode& status) { + ucln_common_registerCleanup(UCLN_COMMON_ULOC, uloc_cleanup); - icu::LocalUResourceBundlePointer indexLocale(ures_openDirect(NULL, _kIndexLocaleName, &status)); - icu::StackUResourceBundle installed; - - ures_getByKey(indexLocale.getAlias(), _kIndexTag, installed.getAlias(), &status); - - if(U_SUCCESS(status)) { - localeCount = ures_getSize(installed.getAlias()); - _installedLocales = (char **) uprv_malloc(sizeof(char*) * (localeCount+1)); - if (_installedLocales != NULL) { - ures_resetIterator(installed.getAlias()); - while(ures_hasNext(installed.getAlias())) { - ures_getNextString(installed.getAlias(), NULL, (const char **)&_installedLocales[i++], &status); - } - _installedLocales[i] = NULL; - _installedLocalesCount = localeCount; - ucln_common_registerCleanup(UCLN_COMMON_ULOC, uloc_cleanup); - } - } + icu::LocalUResourceBundlePointer rb(ures_openDirect(NULL, "res_index", &status)); + AvailableLocalesSink sink; + ures_getAllItemsWithFallback(rb.getAlias(), "", sink, status); } -static void _load_installedLocales() -{ - umtx_initOnce(_installedLocalesInitOnce, &loadInstalledLocales); +void _load_installedLocales(UErrorCode& status) { + umtx_initOnce(ginstalledLocalesInitOnce, &loadInstalledLocales, status); } +} // namespace + U_CAPI const char* U_EXPORT2 -uloc_getAvailable(int32_t offset) -{ - - _load_installedLocales(); - - if (offset > _installedLocalesCount) - return NULL; - return _installedLocales[offset]; +uloc_getAvailable(int32_t offset) { + icu::ErrorCode status; + _load_installedLocales(status); + if (status.isFailure()) { + return nullptr; + } + if (offset > gAvailableLocaleCounts[0]) { + // *status = U_ILLEGAL_ARGUMENT_ERROR; + return nullptr; + } + return gAvailableLocaleNames[0][offset]; } U_CAPI int32_t U_EXPORT2 -uloc_countAvailable() -{ - _load_installedLocales(); - return _installedLocalesCount; +uloc_countAvailable() { + icu::ErrorCode status; + _load_installedLocales(status); + if (status.isFailure()) { + return 0; + } + return gAvailableLocaleCounts[0]; +} + +U_CAPI UEnumeration* U_EXPORT2 +uloc_openAvailableByType(ULocAvailableType type, UErrorCode* status) { + if (U_FAILURE(*status)) { + return nullptr; + } + if (type < 0 || type >= ULOC_AVAILABLE_COUNT) { + *status = U_ILLEGAL_ARGUMENT_ERROR; + return nullptr; + } + _load_installedLocales(*status); + if (U_FAILURE(*status)) { + return nullptr; + } + LocalPointer result( + new AvailableLocalesStringEnumeration(type), *status); + if (U_FAILURE(*status)) { + return nullptr; + } + return uenum_openFromStringEnumeration(result.orphan(), status); } diff --git a/source/common/locbased.h b/source/common/locbased.h index 06133be..4573886 100644 --- a/source/common/locbased.h +++ b/source/common/locbased.h @@ -22,7 +22,7 @@ * `actualLocale' of size ULOC_FULLNAME_CAPACITY */ #define U_LOCALE_BASED(varname, objname) \ - LocaleBased varname((objname).validLocale, (objname).actualLocale); + LocaleBased varname((objname).validLocale, (objname).actualLocale) U_NAMESPACE_BEGIN diff --git a/source/common/locdistance.cpp b/source/common/locdistance.cpp new file mode 100644 index 0000000..800d0ea --- /dev/null +++ b/source/common/locdistance.cpp @@ -0,0 +1,364 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License + +// locdistance.cpp +// created: 2019may08 Markus W. Scherer + +#include "unicode/utypes.h" +#include "unicode/bytestrie.h" +#include "unicode/localematcher.h" +#include "unicode/locid.h" +#include "unicode/uobject.h" +#include "unicode/ures.h" +#include "cstring.h" +#include "locdistance.h" +#include "loclikelysubtags.h" +#include "uassert.h" +#include "ucln_cmn.h" +#include "uinvchar.h" +#include "umutex.h" + +U_NAMESPACE_BEGIN + +namespace { + +/** + * Bit flag used on the last character of a subtag in the trie. + * Must be set consistently by the builder and the lookup code. + */ +constexpr int32_t END_OF_SUBTAG = 0x80; +/** Distance value bit flag, set by the builder. */ +constexpr int32_t DISTANCE_SKIP_SCRIPT = 0x80; +/** Distance value bit flag, set by trieNext(). */ +constexpr int32_t DISTANCE_IS_FINAL = 0x100; +constexpr int32_t DISTANCE_IS_FINAL_OR_SKIP_SCRIPT = DISTANCE_IS_FINAL | DISTANCE_SKIP_SCRIPT; + +constexpr int32_t ABOVE_THRESHOLD = 100; + +// Indexes into array of distances. +enum { + IX_DEF_LANG_DISTANCE, + IX_DEF_SCRIPT_DISTANCE, + IX_DEF_REGION_DISTANCE, + IX_MIN_REGION_DISTANCE, + IX_LIMIT +}; + +LocaleDistance *gLocaleDistance = nullptr; +UInitOnce gInitOnce = U_INITONCE_INITIALIZER; + +UBool U_CALLCONV cleanup() { + delete gLocaleDistance; + gLocaleDistance = nullptr; + gInitOnce.reset(); + return TRUE; +} + +} // namespace + +void U_CALLCONV LocaleDistance::initLocaleDistance(UErrorCode &errorCode) { + // This function is invoked only via umtx_initOnce(). + U_ASSERT(gLocaleDistance == nullptr); + const XLikelySubtags &likely = *XLikelySubtags::getSingleton(errorCode); + if (U_FAILURE(errorCode)) { return; } + const LocaleDistanceData &data = likely.getDistanceData(); + if (data.distanceTrieBytes == nullptr || + data.regionToPartitions == nullptr || data.partitions == nullptr || + // ok if no paradigms + data.distances == nullptr) { + errorCode = U_MISSING_RESOURCE_ERROR; + return; + } + gLocaleDistance = new LocaleDistance(data); + if (gLocaleDistance == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + return; + } + ucln_common_registerCleanup(UCLN_COMMON_LOCALE_DISTANCE, cleanup); +} + +const LocaleDistance *LocaleDistance::getSingleton(UErrorCode &errorCode) { + if (U_FAILURE(errorCode)) { return nullptr; } + umtx_initOnce(gInitOnce, &LocaleDistance::initLocaleDistance, errorCode); + return gLocaleDistance; +} + +LocaleDistance::LocaleDistance(const LocaleDistanceData &data) : + trie(data.distanceTrieBytes), + regionToPartitionsIndex(data.regionToPartitions), partitionArrays(data.partitions), + paradigmLSRs(data.paradigms), paradigmLSRsLength(data.paradigmsLength), + defaultLanguageDistance(data.distances[IX_DEF_LANG_DISTANCE]), + defaultScriptDistance(data.distances[IX_DEF_SCRIPT_DISTANCE]), + defaultRegionDistance(data.distances[IX_DEF_REGION_DISTANCE]), + minRegionDistance(data.distances[IX_MIN_REGION_DISTANCE]) { + // For the default demotion value, use the + // default region distance between unrelated Englishes. + // Thus, unless demotion is turned off, + // a mere region difference for one desired locale + // is as good as a perfect match for the next following desired locale. + // As of CLDR 36, we have . + LSR en("en", "Latn", "US"); + LSR enGB("en", "Latn", "GB"); + const LSR *p_enGB = &enGB; + defaultDemotionPerDesiredLocale = getBestIndexAndDistance(en, &p_enGB, 1, + 50, ULOCMATCH_FAVOR_LANGUAGE) & 0xff; +} + +int32_t LocaleDistance::getBestIndexAndDistance( + const LSR &desired, + const LSR **supportedLSRs, int32_t supportedLSRsLength, + int32_t threshold, ULocMatchFavorSubtag favorSubtag) const { + BytesTrie iter(trie); + // Look up the desired language only once for all supported LSRs. + // Its "distance" is either a match point value of 0, or a non-match negative value. + // Note: The data builder verifies that there are no <*, supported> or rules. + int32_t desLangDistance = trieNext(iter, desired.language, false); + uint64_t desLangState = desLangDistance >= 0 && supportedLSRsLength > 1 ? iter.getState64() : 0; + // Index of the supported LSR with the lowest distance. + int32_t bestIndex = -1; + for (int32_t slIndex = 0; slIndex < supportedLSRsLength; ++slIndex) { + const LSR &supported = *supportedLSRs[slIndex]; + bool star = false; + int32_t distance = desLangDistance; + if (distance >= 0) { + U_ASSERT((distance & DISTANCE_IS_FINAL) == 0); + if (slIndex != 0) { + iter.resetToState64(desLangState); + } + distance = trieNext(iter, supported.language, true); + } + // Note: The data builder verifies that there are no rules with "any" (*) language and + // real (non *) script or region subtags. + // This means that if the lookup for either language fails we can use + // the default distances without further lookups. + int32_t flags; + if (distance >= 0) { + flags = distance & DISTANCE_IS_FINAL_OR_SKIP_SCRIPT; + distance &= ~DISTANCE_IS_FINAL_OR_SKIP_SCRIPT; + } else { // <*, *> + if (uprv_strcmp(desired.language, supported.language) == 0) { + distance = 0; + } else { + distance = defaultLanguageDistance; + } + flags = 0; + star = true; + } + U_ASSERT(0 <= distance && distance <= 100); + // We implement "favor subtag" by reducing the language subtag distance + // (unscientifically reducing it to a quarter of the normal value), + // so that the script distance is relatively more important. + // For example, given a default language distance of 80, we reduce it to 20, + // which is below the default threshold of 50, which is the default script distance. + if (favorSubtag == ULOCMATCH_FAVOR_SCRIPT) { + distance >>= 2; + } + if (distance >= threshold) { + continue; + } + + int32_t scriptDistance; + if (star || flags != 0) { + if (uprv_strcmp(desired.script, supported.script) == 0) { + scriptDistance = 0; + } else { + scriptDistance = defaultScriptDistance; + } + } else { + scriptDistance = getDesSuppScriptDistance(iter, iter.getState64(), + desired.script, supported.script); + flags = scriptDistance & DISTANCE_IS_FINAL; + scriptDistance &= ~DISTANCE_IS_FINAL; + } + distance += scriptDistance; + if (distance >= threshold) { + continue; + } + + if (uprv_strcmp(desired.region, supported.region) == 0) { + // regionDistance = 0 + } else if (star || (flags & DISTANCE_IS_FINAL) != 0) { + distance += defaultRegionDistance; + } else { + int32_t remainingThreshold = threshold - distance; + if (minRegionDistance >= remainingThreshold) { + continue; + } + + // From here on we know the regions are not equal. + // Map each region to zero or more partitions. (zero = one non-matching string) + // (Each array of single-character partition strings is encoded as one string.) + // If either side has more than one, then we find the maximum distance. + // This could be optimized by adding some more structure, but probably not worth it. + distance += getRegionPartitionsDistance( + iter, iter.getState64(), + partitionsForRegion(desired), + partitionsForRegion(supported), + remainingThreshold); + } + if (distance < threshold) { + if (distance == 0) { + return slIndex << 8; + } + bestIndex = slIndex; + threshold = distance; + } + } + return bestIndex >= 0 ? (bestIndex << 8) | threshold : 0xffffff00 | ABOVE_THRESHOLD; +} + +int32_t LocaleDistance::getDesSuppScriptDistance( + BytesTrie &iter, uint64_t startState, const char *desired, const char *supported) { + // Note: The data builder verifies that there are no <*, supported> or rules. + int32_t distance = trieNext(iter, desired, false); + if (distance >= 0) { + distance = trieNext(iter, supported, true); + } + if (distance < 0) { + UStringTrieResult result = iter.resetToState64(startState).next(u'*'); // <*, *> + U_ASSERT(USTRINGTRIE_HAS_VALUE(result)); + if (uprv_strcmp(desired, supported) == 0) { + distance = 0; // same script + } else { + distance = iter.getValue(); + U_ASSERT(distance >= 0); + } + if (result == USTRINGTRIE_FINAL_VALUE) { + distance |= DISTANCE_IS_FINAL; + } + } + return distance; +} + +int32_t LocaleDistance::getRegionPartitionsDistance( + BytesTrie &iter, uint64_t startState, + const char *desiredPartitions, const char *supportedPartitions, int32_t threshold) { + char desired = *desiredPartitions++; + char supported = *supportedPartitions++; + U_ASSERT(desired != 0 && supported != 0); + // See if we have single desired/supported partitions, from NUL-terminated + // partition strings without explicit length. + bool suppLengthGt1 = *supportedPartitions != 0; // gt1: more than 1 character + // equivalent to: if (desLength == 1 && suppLength == 1) + if (*desiredPartitions == 0 && !suppLengthGt1) { + // Fastpath for single desired/supported partitions. + UStringTrieResult result = iter.next(uprv_invCharToAscii(desired) | END_OF_SUBTAG); + if (USTRINGTRIE_HAS_NEXT(result)) { + result = iter.next(uprv_invCharToAscii(supported) | END_OF_SUBTAG); + if (USTRINGTRIE_HAS_VALUE(result)) { + return iter.getValue(); + } + } + return getFallbackRegionDistance(iter, startState); + } + + const char *supportedStart = supportedPartitions - 1; // for restart of inner loop + int32_t regionDistance = 0; + // Fall back to * only once, not for each pair of partition strings. + bool star = false; + for (;;) { + // Look up each desired-partition string only once, + // not for each (desired, supported) pair. + UStringTrieResult result = iter.next(uprv_invCharToAscii(desired) | END_OF_SUBTAG); + if (USTRINGTRIE_HAS_NEXT(result)) { + uint64_t desState = suppLengthGt1 ? iter.getState64() : 0; + for (;;) { + result = iter.next(uprv_invCharToAscii(supported) | END_OF_SUBTAG); + int32_t d; + if (USTRINGTRIE_HAS_VALUE(result)) { + d = iter.getValue(); + } else if (star) { + d = 0; + } else { + d = getFallbackRegionDistance(iter, startState); + star = true; + } + if (d >= threshold) { + return d; + } else if (regionDistance < d) { + regionDistance = d; + } + if ((supported = *supportedPartitions++) != 0) { + iter.resetToState64(desState); + } else { + break; + } + } + } else if (!star) { + int32_t d = getFallbackRegionDistance(iter, startState); + if (d >= threshold) { + return d; + } else if (regionDistance < d) { + regionDistance = d; + } + star = true; + } + if ((desired = *desiredPartitions++) != 0) { + iter.resetToState64(startState); + supportedPartitions = supportedStart; + supported = *supportedPartitions++; + } else { + break; + } + } + return regionDistance; +} + +int32_t LocaleDistance::getFallbackRegionDistance(BytesTrie &iter, uint64_t startState) { +#if U_DEBUG + UStringTrieResult result = +#endif + iter.resetToState64(startState).next(u'*'); // <*, *> + U_ASSERT(USTRINGTRIE_HAS_VALUE(result)); + int32_t distance = iter.getValue(); + U_ASSERT(distance >= 0); + return distance; +} + +int32_t LocaleDistance::trieNext(BytesTrie &iter, const char *s, bool wantValue) { + uint8_t c; + if ((c = *s) == 0) { + return -1; // no empty subtags in the distance data + } + for (;;) { + c = uprv_invCharToAscii(c); + // EBCDIC: If *s is not an invariant character, + // then c is now 0 and will simply not match anything, which is harmless. + uint8_t next = *++s; + if (next != 0) { + if (!USTRINGTRIE_HAS_NEXT(iter.next(c))) { + return -1; + } + } else { + // last character of this subtag + UStringTrieResult result = iter.next(c | END_OF_SUBTAG); + if (wantValue) { + if (USTRINGTRIE_HAS_VALUE(result)) { + int32_t value = iter.getValue(); + if (result == USTRINGTRIE_FINAL_VALUE) { + value |= DISTANCE_IS_FINAL; + } + return value; + } + } else { + if (USTRINGTRIE_HAS_NEXT(result)) { + return 0; + } + } + return -1; + } + c = next; + } +} + +UBool LocaleDistance::isParadigmLSR(const LSR &lsr) const { + // Linear search for a very short list (length 6 as of 2019). + // If there are many paradigm LSRs we should use a hash set. + U_ASSERT(paradigmLSRsLength <= 15); + for (int32_t i = 0; i < paradigmLSRsLength; ++i) { + if (lsr == paradigmLSRs[i]) { return true; } + } + return false; +} + +U_NAMESPACE_END diff --git a/source/common/locdistance.h b/source/common/locdistance.h new file mode 100644 index 0000000..7439f51 --- /dev/null +++ b/source/common/locdistance.h @@ -0,0 +1,109 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License + +// locdistance.h +// created: 2019may08 Markus W. Scherer + +#ifndef __LOCDISTANCE_H__ +#define __LOCDISTANCE_H__ + +#include "unicode/utypes.h" +#include "unicode/bytestrie.h" +#include "unicode/localematcher.h" +#include "unicode/locid.h" +#include "unicode/uobject.h" +#include "lsr.h" + +U_NAMESPACE_BEGIN + +struct LocaleDistanceData; + +/** + * Offline-built data for LocaleMatcher. + * Mostly but not only the data for mapping locales to their maximized forms. + */ +class LocaleDistance final : public UMemory { +public: + static const LocaleDistance *getSingleton(UErrorCode &errorCode); + + /** + * Finds the supported LSR with the smallest distance from the desired one. + * Equivalent LSR subtags must be normalized into a canonical form. + * + *

    Returns the index of the lowest-distance supported LSR in bits 31..8 + * (negative if none has a distance below the threshold), + * and its distance (0..ABOVE_THRESHOLD) in bits 7..0. + */ + int32_t getBestIndexAndDistance(const LSR &desired, + const LSR **supportedLSRs, int32_t supportedLSRsLength, + int32_t threshold, ULocMatchFavorSubtag favorSubtag) const; + + int32_t getParadigmLSRsLength() const { return paradigmLSRsLength; } + + UBool isParadigmLSR(const LSR &lsr) const; + + int32_t getDefaultScriptDistance() const { + return defaultScriptDistance; + } + + int32_t getDefaultDemotionPerDesiredLocale() const { + return defaultDemotionPerDesiredLocale; + } + +private: + LocaleDistance(const LocaleDistanceData &data); + LocaleDistance(const LocaleDistance &other) = delete; + LocaleDistance &operator=(const LocaleDistance &other) = delete; + + static void initLocaleDistance(UErrorCode &errorCode); + + static int32_t getDesSuppScriptDistance(BytesTrie &iter, uint64_t startState, + const char *desired, const char *supported); + + static int32_t getRegionPartitionsDistance( + BytesTrie &iter, uint64_t startState, + const char *desiredPartitions, const char *supportedPartitions, + int32_t threshold); + + static int32_t getFallbackRegionDistance(BytesTrie &iter, uint64_t startState); + + static int32_t trieNext(BytesTrie &iter, const char *s, bool wantValue); + + const char *partitionsForRegion(const LSR &lsr) const { + // ill-formed region -> one non-matching string + int32_t pIndex = regionToPartitionsIndex[lsr.regionIndex]; + return partitionArrays[pIndex]; + } + + int32_t getDefaultRegionDistance() const { + return defaultRegionDistance; + } + + // The trie maps each dlang+slang+dscript+sscript+dregion+sregion + // (encoded in ASCII with bit 7 set on the last character of each subtag) to a distance. + // There is also a trie value for each subsequence of whole subtags. + // One '*' is used for a (desired, supported) pair of "und", "Zzzz"/"", or "ZZ"/"". + BytesTrie trie; + + /** + * Maps each region to zero or more single-character partitions. + */ + const uint8_t *regionToPartitionsIndex; + const char **partitionArrays; + + /** + * Used to get the paradigm region for a cluster, if there is one. + */ + const LSR *paradigmLSRs; + int32_t paradigmLSRsLength; + + int32_t defaultLanguageDistance; + int32_t defaultScriptDistance; + int32_t defaultRegionDistance; + int32_t minRegionDistance; + int32_t defaultDemotionPerDesiredLocale; +}; + +U_NAMESPACE_END + +#endif // __LOCDISTANCE_H__ diff --git a/source/common/locdspnm.cpp b/source/common/locdspnm.cpp index da35be9..43334f5 100644 --- a/source/common/locdspnm.cpp +++ b/source/common/locdspnm.cpp @@ -291,6 +291,7 @@ class LocaleDisplayNamesImpl : public LocaleDisplayNames { UnicodeString formatCloseParen; UnicodeString formatReplaceCloseParen; UDisplayContext nameLength; + UDisplayContext substitute; // Constants for capitalization context usage types. enum CapContextUsage { @@ -337,7 +338,7 @@ public: UnicodeString& result) const; private: UnicodeString& localeIdName(const char* localeId, - UnicodeString& result) const; + UnicodeString& result, bool substitute) const; UnicodeString& appendWithSep(UnicodeString& buffer, const UnicodeString& src) const; UnicodeString& adjustForUsageAndContext(CapContextUsage usage, UnicodeString& result) const; UnicodeString& scriptDisplayName(const char* script, UnicodeString& result, UBool skipAdjust) const; @@ -359,6 +360,7 @@ LocaleDisplayNamesImpl::LocaleDisplayNamesImpl(const Locale& locale, , capitalizationContext(UDISPCTX_CAPITALIZATION_NONE) , capitalizationBrkIter(NULL) , nameLength(UDISPCTX_LENGTH_FULL) + , substitute(UDISPCTX_SUBSTITUTE) { initialize(); } @@ -371,6 +373,7 @@ LocaleDisplayNamesImpl::LocaleDisplayNamesImpl(const Locale& locale, , capitalizationContext(UDISPCTX_CAPITALIZATION_NONE) , capitalizationBrkIter(NULL) , nameLength(UDISPCTX_LENGTH_FULL) + , substitute(UDISPCTX_SUBSTITUTE) { while (length-- > 0) { UDisplayContext value = *contexts++; @@ -385,6 +388,9 @@ LocaleDisplayNamesImpl::LocaleDisplayNamesImpl(const Locale& locale, case UDISPCTX_TYPE_DISPLAY_LENGTH: nameLength = value; break; + case UDISPCTX_TYPE_SUBSTITUTE_HANDLING: + substitute = value; + break; default: break; } @@ -535,6 +541,8 @@ LocaleDisplayNamesImpl::getContext(UDisplayContextType type) const { return capitalizationContext; case UDISPCTX_TYPE_DISPLAY_LENGTH: return nameLength; + case UDISPCTX_TYPE_SUBSTITUTE_HANDLING: + return substitute; default: break; } @@ -549,7 +557,7 @@ LocaleDisplayNamesImpl::adjustForUsageAndContext(CapContextUsage usage, if ( result.length() > 0 && u_islower(result.char32At(0)) && capitalizationBrkIter!= NULL && ( capitalizationContext==UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE || fCapitalization[usage] ) ) { // note fCapitalization[usage] won't be set unless capitalizationContext is UI_LIST_OR_MENU or STANDALONE - static UMutex capitalizationBrkIterLock = U_MUTEX_INITIALIZER; + static UMutex capitalizationBrkIterLock; Mutex lock(&capitalizationBrkIterLock); result.toTitle(capitalizationBrkIter, locale, U_TITLECASE_NO_LOWERCASE | U_TITLECASE_NO_BREAK_ADJUSTMENT); } @@ -583,7 +591,7 @@ LocaleDisplayNamesImpl::localeDisplayName(const Locale& loc, do { // loop construct is so we can break early out of search if (hasScript && hasCountry) { ncat(buffer, ULOC_FULLNAME_CAPACITY, lang, "_", script, "_", country, (char *)0); - localeIdName(buffer, resultName); + localeIdName(buffer, resultName, false); if (!resultName.isBogus()) { hasScript = FALSE; hasCountry = FALSE; @@ -592,7 +600,7 @@ LocaleDisplayNamesImpl::localeDisplayName(const Locale& loc, } if (hasScript) { ncat(buffer, ULOC_FULLNAME_CAPACITY, lang, "_", script, (char *)0); - localeIdName(buffer, resultName); + localeIdName(buffer, resultName, false); if (!resultName.isBogus()) { hasScript = FALSE; break; @@ -600,7 +608,7 @@ LocaleDisplayNamesImpl::localeDisplayName(const Locale& loc, } if (hasCountry) { ncat(buffer, ULOC_FULLNAME_CAPACITY, lang, "_", country, (char*)0); - localeIdName(buffer, resultName); + localeIdName(buffer, resultName, false); if (!resultName.isBogus()) { hasCountry = FALSE; break; @@ -609,7 +617,11 @@ LocaleDisplayNamesImpl::localeDisplayName(const Locale& loc, } while (FALSE); } if (resultName.isBogus() || resultName.isEmpty()) { - localeIdName(lang, resultName); + localeIdName(lang, resultName, substitute == UDISPCTX_SUBSTITUTE); + if (resultName.isBogus()) { + result.setToBogus(); + return result; + } } UnicodeString resultRemainder; @@ -617,13 +629,28 @@ LocaleDisplayNamesImpl::localeDisplayName(const Locale& loc, UErrorCode status = U_ZERO_ERROR; if (hasScript) { - resultRemainder.append(scriptDisplayName(script, temp, TRUE)); + UnicodeString script_str = scriptDisplayName(script, temp, TRUE); + if (script_str.isBogus()) { + result.setToBogus(); + return result; + } + resultRemainder.append(script_str); } if (hasCountry) { - appendWithSep(resultRemainder, regionDisplayName(country, temp, TRUE)); + UnicodeString region_str = regionDisplayName(country, temp, TRUE); + if (region_str.isBogus()) { + result.setToBogus(); + return result; + } + appendWithSep(resultRemainder, region_str); } if (hasVariant) { - appendWithSep(resultRemainder, variantDisplayName(variant, temp, TRUE)); + UnicodeString variant_str = variantDisplayName(variant, temp, TRUE); + if (variant_str.isBogus()) { + result.setToBogus(); + return result; + } + appendWithSep(resultRemainder, variant_str); } resultRemainder.findAndReplace(formatOpenParen, formatReplaceOpenParen); resultRemainder.findAndReplace(formatCloseParen, formatReplaceCloseParen); @@ -689,14 +716,18 @@ LocaleDisplayNamesImpl::localeDisplayName(const char* localeId, // private UnicodeString& LocaleDisplayNamesImpl::localeIdName(const char* localeId, - UnicodeString& result) const { + UnicodeString& result, bool substitute) const { if (nameLength == UDISPCTX_LENGTH_SHORT) { langData.getNoFallback("Languages%short", localeId, result); if (!result.isBogus()) { return result; } } - return langData.getNoFallback("Languages", localeId, result); + if (substitute) { + return langData.get("Languages", localeId, result); + } else { + return langData.getNoFallback("Languages", localeId, result); + } } UnicodeString& @@ -706,12 +737,16 @@ LocaleDisplayNamesImpl::languageDisplayName(const char* lang, return result = UnicodeString(lang, -1, US_INV); } if (nameLength == UDISPCTX_LENGTH_SHORT) { - langData.get("Languages%short", lang, result); + langData.getNoFallback("Languages%short", lang, result); if (!result.isBogus()) { return adjustForUsageAndContext(kCapContextUsageLanguage, result); } } - langData.get("Languages", lang, result); + if (substitute == UDISPCTX_SUBSTITUTE) { + langData.get("Languages", lang, result); + } else { + langData.getNoFallback("Languages", lang, result); + } return adjustForUsageAndContext(kCapContextUsageLanguage, result); } @@ -720,12 +755,16 @@ LocaleDisplayNamesImpl::scriptDisplayName(const char* script, UnicodeString& result, UBool skipAdjust) const { if (nameLength == UDISPCTX_LENGTH_SHORT) { - langData.get("Scripts%short", script, result); + langData.getNoFallback("Scripts%short", script, result); if (!result.isBogus()) { return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageScript, result); } } - langData.get("Scripts", script, result); + if (substitute == UDISPCTX_SUBSTITUTE) { + langData.get("Scripts", script, result); + } else { + langData.getNoFallback("Scripts", script, result); + } return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageScript, result); } @@ -746,12 +785,16 @@ LocaleDisplayNamesImpl::regionDisplayName(const char* region, UnicodeString& result, UBool skipAdjust) const { if (nameLength == UDISPCTX_LENGTH_SHORT) { - regionData.get("Countries%short", region, result); + regionData.getNoFallback("Countries%short", region, result); if (!result.isBogus()) { return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageTerritory, result); } } - regionData.get("Countries", region, result); + if (substitute == UDISPCTX_SUBSTITUTE) { + regionData.get("Countries", region, result); + } else { + regionData.getNoFallback("Countries", region, result); + } return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageTerritory, result); } @@ -767,7 +810,11 @@ LocaleDisplayNamesImpl::variantDisplayName(const char* variant, UnicodeString& result, UBool skipAdjust) const { // don't have a resource for short variant names - langData.get("Variants", variant, result); + if (substitute == UDISPCTX_SUBSTITUTE) { + langData.get("Variants", variant, result); + } else { + langData.getNoFallback("Variants", variant, result); + } return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageVariant, result); } @@ -782,7 +829,11 @@ LocaleDisplayNamesImpl::keyDisplayName(const char* key, UnicodeString& result, UBool skipAdjust) const { // don't have a resource for short key names - langData.get("Keys", key, result); + if (substitute == UDISPCTX_SUBSTITUTE) { + langData.get("Keys", key, result); + } else { + langData.getNoFallback("Keys", key, result); + } return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageKey, result); } @@ -802,9 +853,8 @@ LocaleDisplayNamesImpl::keyValueDisplayName(const char* key, UErrorCode sts = U_ZERO_ERROR; UnicodeString ustrValue(value, -1, US_INV); int32_t len; - UBool isChoice = FALSE; const UChar *currencyName = ucurr_getName(ustrValue.getTerminatedBuffer(), - locale.getBaseName(), UCURR_LONG_NAME, &isChoice, &len, &sts); + locale.getBaseName(), UCURR_LONG_NAME, nullptr /* isChoiceFormat */, &len, &sts); if (U_FAILURE(sts)) { // Return the value as is on failure result = ustrValue; @@ -815,12 +865,16 @@ LocaleDisplayNamesImpl::keyValueDisplayName(const char* key, } if (nameLength == UDISPCTX_LENGTH_SHORT) { - langData.get("Types%short", key, value, result); + langData.getNoFallback("Types%short", key, value, result); if (!result.isBogus()) { return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageKeyValue, result); } } - langData.get("Types", key, value, result); + if (substitute == UDISPCTX_SUBSTITUTE) { + langData.get("Types", key, value, result); + } else { + langData.getNoFallback("Types", key, value, result); + } return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageKeyValue, result); } diff --git a/source/common/locid.cpp b/source/common/locid.cpp index 06986b6..c6d3f88 100644 --- a/source/common/locid.cpp +++ b/source/common/locid.cpp @@ -38,19 +38,19 @@ #include "unicode/strenum.h" #include "unicode/stringpiece.h" #include "unicode/uloc.h" -#include "putilimp.h" -#include "mutex.h" -#include "umutex.h" -#include "uassert.h" + +#include "bytesinkutil.h" +#include "charstr.h" #include "cmemory.h" #include "cstring.h" +#include "mutex.h" +#include "putilimp.h" #include "uassert.h" +#include "ucln_cmn.h" #include "uhash.h" #include "ulocimp.h" -#include "ucln_cmn.h" +#include "umutex.h" #include "ustr_imp.h" -#include "charstr.h" -#include "bytesinkutil.h" U_CDECL_BEGIN static UBool U_CALLCONV locale_cleanup(void); @@ -62,10 +62,7 @@ static Locale *gLocaleCache = NULL; static UInitOnce gLocaleCacheInitOnce = U_INITONCE_INITIALIZER; // gDefaultLocaleMutex protects all access to gDefaultLocalesHashT and gDefaultLocale. -static UMutex *gDefaultLocaleMutex() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static UMutex gDefaultLocaleMutex; static UHashtable *gDefaultLocalesHashT = NULL; static Locale *gDefaultLocale = NULL; @@ -174,7 +171,7 @@ U_NAMESPACE_BEGIN Locale *locale_set_default_internal(const char *id, UErrorCode& status) { // Synchronize this entire function. - Mutex lock(gDefaultLocaleMutex()); + Mutex lock(&gDefaultLocaleMutex); UBool canonicalize = FALSE; @@ -711,7 +708,7 @@ const Locale& U_EXPORT2 Locale::getDefault() { { - Mutex lock(gDefaultLocaleMutex()); + Mutex lock(&gDefaultLocaleMutex); if (gDefaultLocale != NULL) { return *gDefaultLocale; } @@ -1399,5 +1396,7 @@ Locale::getBaseName() const { return baseName; } +Locale::Iterator::~Iterator() = default; + //eof U_NAMESPACE_END diff --git a/source/common/loclikely.cpp b/source/common/loclikely.cpp index 843cd8f..a4a4181 100644 --- a/source/common/loclikely.cpp +++ b/source/common/loclikely.cpp @@ -807,24 +807,24 @@ error: return FALSE; } -#define CHECK_TRAILING_VARIANT_SIZE(trailing, trailingLength) \ - { int32_t count = 0; \ - int32_t i; \ - for (i = 0; i < trailingLength; i++) { \ - if (trailing[i] == '-' || trailing[i] == '_') { \ - count = 0; \ - if (count > 8) { \ - goto error; \ - } \ - } else if (trailing[i] == '@') { \ - break; \ - } else if (count > 8) { \ +#define CHECK_TRAILING_VARIANT_SIZE(trailing, trailingLength) UPRV_BLOCK_MACRO_BEGIN { \ + int32_t count = 0; \ + int32_t i; \ + for (i = 0; i < trailingLength; i++) { \ + if (trailing[i] == '-' || trailing[i] == '_') { \ + count = 0; \ + if (count > 8) { \ goto error; \ - } else { \ - count++; \ } \ + } else if (trailing[i] == '@') { \ + break; \ + } else if (count > 8) { \ + goto error; \ + } else { \ + count++; \ } \ - } + } \ +} UPRV_BLOCK_MACRO_END static void _uloc_addLikelySubtags(const char* localeID, diff --git a/source/common/loclikelysubtags.cpp b/source/common/loclikelysubtags.cpp new file mode 100644 index 0000000..d7f5e12 --- /dev/null +++ b/source/common/loclikelysubtags.cpp @@ -0,0 +1,638 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License + +// loclikelysubtags.cpp +// created: 2019may08 Markus W. Scherer + +#include +#include "unicode/utypes.h" +#include "unicode/bytestrie.h" +#include "unicode/localpointer.h" +#include "unicode/locid.h" +#include "unicode/uobject.h" +#include "unicode/ures.h" +#include "charstr.h" +#include "cstring.h" +#include "loclikelysubtags.h" +#include "lsr.h" +#include "uassert.h" +#include "ucln_cmn.h" +#include "uhash.h" +#include "uinvchar.h" +#include "umutex.h" +#include "uresdata.h" +#include "uresimp.h" + +U_NAMESPACE_BEGIN + +namespace { + +constexpr char PSEUDO_ACCENTS_PREFIX = '\''; // -XA, -PSACCENT +constexpr char PSEUDO_BIDI_PREFIX = '+'; // -XB, -PSBIDI +constexpr char PSEUDO_CRACKED_PREFIX = ','; // -XC, -PSCRACK + +/** + * Stores NUL-terminated strings with duplicate elimination. + * Checks for unique UTF-16 string pointers and converts to invariant characters. + */ +class UniqueCharStrings { +public: + UniqueCharStrings(UErrorCode &errorCode) : strings(nullptr) { + uhash_init(&map, uhash_hashUChars, uhash_compareUChars, uhash_compareLong, &errorCode); + if (U_FAILURE(errorCode)) { return; } + strings = new CharString(); + if (strings == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + } + } + ~UniqueCharStrings() { + uhash_close(&map); + delete strings; + } + + /** Returns/orphans the CharString that contains all strings. */ + CharString *orphanCharStrings() { + CharString *result = strings; + strings = nullptr; + return result; + } + + /** Adds a string and returns a unique number for it. */ + int32_t add(const UnicodeString &s, UErrorCode &errorCode) { + if (U_FAILURE(errorCode)) { return 0; } + if (isFrozen) { + errorCode = U_NO_WRITE_PERMISSION; + return 0; + } + // The string points into the resource bundle. + const char16_t *p = s.getBuffer(); + int32_t oldIndex = uhash_geti(&map, p); + if (oldIndex != 0) { // found duplicate + return oldIndex; + } + // Explicit NUL terminator for the previous string. + // The strings object is also terminated with one implicit NUL. + strings->append(0, errorCode); + int32_t newIndex = strings->length(); + strings->appendInvariantChars(s, errorCode); + uhash_puti(&map, const_cast(p), newIndex, &errorCode); + return newIndex; + } + + void freeze() { isFrozen = true; } + + /** + * Returns a string pointer for its unique number, if this object is frozen. + * Otherwise nullptr. + */ + const char *get(int32_t i) const { + U_ASSERT(isFrozen); + return isFrozen && i > 0 ? strings->data() + i : nullptr; + } + +private: + UHashtable map; + CharString *strings; + bool isFrozen = false; +}; + +} // namespace + +LocaleDistanceData::LocaleDistanceData(LocaleDistanceData &&data) : + distanceTrieBytes(data.distanceTrieBytes), + regionToPartitions(data.regionToPartitions), + partitions(data.partitions), + paradigms(data.paradigms), paradigmsLength(data.paradigmsLength), + distances(data.distances) { + data.partitions = nullptr; + data.paradigms = nullptr; +} + +LocaleDistanceData::~LocaleDistanceData() { + uprv_free(partitions); + delete[] paradigms; +} + +// TODO(ICU-20777): Rename to just LikelySubtagsData. +struct XLikelySubtagsData { + UResourceBundle *langInfoBundle = nullptr; + UniqueCharStrings strings; + CharStringMap languageAliases; + CharStringMap regionAliases; + const uint8_t *trieBytes = nullptr; + LSR *lsrs = nullptr; + int32_t lsrsLength = 0; + + LocaleDistanceData distanceData; + + XLikelySubtagsData(UErrorCode &errorCode) : strings(errorCode) {} + + ~XLikelySubtagsData() { + ures_close(langInfoBundle); + delete[] lsrs; + } + + void load(UErrorCode &errorCode) { + langInfoBundle = ures_openDirect(nullptr, "langInfo", &errorCode); + if (U_FAILURE(errorCode)) { return; } + StackUResourceBundle stackTempBundle; + ResourceDataValue value; + ures_getValueWithFallback(langInfoBundle, "likely", stackTempBundle.getAlias(), + value, errorCode); + ResourceTable likelyTable = value.getTable(errorCode); + if (U_FAILURE(errorCode)) { return; } + + // Read all strings in the resource bundle and convert them to invariant char *. + LocalMemory languageIndexes, regionIndexes, lsrSubtagIndexes; + int32_t languagesLength = 0, regionsLength = 0, lsrSubtagsLength = 0; + if (!readStrings(likelyTable, "languageAliases", value, + languageIndexes, languagesLength, errorCode) || + !readStrings(likelyTable, "regionAliases", value, + regionIndexes, regionsLength, errorCode) || + !readStrings(likelyTable, "lsrs", value, + lsrSubtagIndexes,lsrSubtagsLength, errorCode)) { + return; + } + if ((languagesLength & 1) != 0 || + (regionsLength & 1) != 0 || + (lsrSubtagsLength % 3) != 0) { + errorCode = U_INVALID_FORMAT_ERROR; + return; + } + if (lsrSubtagsLength == 0) { + errorCode = U_MISSING_RESOURCE_ERROR; + return; + } + + if (!likelyTable.findValue("trie", value)) { + errorCode = U_MISSING_RESOURCE_ERROR; + return; + } + int32_t length; + trieBytes = value.getBinary(length, errorCode); + if (U_FAILURE(errorCode)) { return; } + + // Also read distance/matcher data if available, + // to open & keep only one resource bundle pointer + // and to use one single UniqueCharStrings. + UErrorCode matchErrorCode = U_ZERO_ERROR; + ures_getValueWithFallback(langInfoBundle, "match", stackTempBundle.getAlias(), + value, matchErrorCode); + LocalMemory partitionIndexes, paradigmSubtagIndexes; + int32_t partitionsLength = 0, paradigmSubtagsLength = 0; + if (U_SUCCESS(matchErrorCode)) { + ResourceTable matchTable = value.getTable(errorCode); + if (U_FAILURE(errorCode)) { return; } + + if (matchTable.findValue("trie", value)) { + distanceData.distanceTrieBytes = value.getBinary(length, errorCode); + if (U_FAILURE(errorCode)) { return; } + } + + if (matchTable.findValue("regionToPartitions", value)) { + distanceData.regionToPartitions = value.getBinary(length, errorCode); + if (U_FAILURE(errorCode)) { return; } + if (length < LSR::REGION_INDEX_LIMIT) { + errorCode = U_INVALID_FORMAT_ERROR; + return; + } + } + + if (!readStrings(matchTable, "partitions", value, + partitionIndexes, partitionsLength, errorCode) || + !readStrings(matchTable, "paradigms", value, + paradigmSubtagIndexes, paradigmSubtagsLength, errorCode)) { + return; + } + if ((paradigmSubtagsLength % 3) != 0) { + errorCode = U_INVALID_FORMAT_ERROR; + return; + } + + if (matchTable.findValue("distances", value)) { + distanceData.distances = value.getIntVector(length, errorCode); + if (U_FAILURE(errorCode)) { return; } + if (length < 4) { // LocaleDistance IX_LIMIT + errorCode = U_INVALID_FORMAT_ERROR; + return; + } + } + } else if (matchErrorCode == U_MISSING_RESOURCE_ERROR) { + // ok for likely subtags + } else { // error other than missing resource + errorCode = matchErrorCode; + return; + } + + // Fetch & store invariant-character versions of strings + // only after we have collected and de-duplicated all of them. + strings.freeze(); + + languageAliases = CharStringMap(languagesLength / 2, errorCode); + for (int32_t i = 0; i < languagesLength; i += 2) { + languageAliases.put(strings.get(languageIndexes[i]), + strings.get(languageIndexes[i + 1]), errorCode); + } + + regionAliases = CharStringMap(regionsLength / 2, errorCode); + for (int32_t i = 0; i < regionsLength; i += 2) { + regionAliases.put(strings.get(regionIndexes[i]), + strings.get(regionIndexes[i + 1]), errorCode); + } + if (U_FAILURE(errorCode)) { return; } + + lsrsLength = lsrSubtagsLength / 3; + lsrs = new LSR[lsrsLength]; + if (lsrs == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + return; + } + for (int32_t i = 0, j = 0; i < lsrSubtagsLength; i += 3, ++j) { + lsrs[j] = LSR(strings.get(lsrSubtagIndexes[i]), + strings.get(lsrSubtagIndexes[i + 1]), + strings.get(lsrSubtagIndexes[i + 2])); + } + + if (partitionsLength > 0) { + distanceData.partitions = static_cast( + uprv_malloc(partitionsLength * sizeof(const char *))); + if (distanceData.partitions == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + return; + } + for (int32_t i = 0; i < partitionsLength; ++i) { + distanceData.partitions[i] = strings.get(partitionIndexes[i]); + } + } + + if (paradigmSubtagsLength > 0) { + distanceData.paradigmsLength = paradigmSubtagsLength / 3; + LSR *paradigms = new LSR[distanceData.paradigmsLength]; + if (paradigms == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + return; + } + for (int32_t i = 0, j = 0; i < paradigmSubtagsLength; i += 3, ++j) { + paradigms[j] = LSR(strings.get(paradigmSubtagIndexes[i]), + strings.get(paradigmSubtagIndexes[i + 1]), + strings.get(paradigmSubtagIndexes[i + 2])); + } + distanceData.paradigms = paradigms; + } + } + +private: + bool readStrings(const ResourceTable &table, const char *key, ResourceValue &value, + LocalMemory &indexes, int32_t &length, UErrorCode &errorCode) { + if (table.findValue(key, value)) { + ResourceArray stringArray = value.getArray(errorCode); + if (U_FAILURE(errorCode)) { return false; } + length = stringArray.getSize(); + if (length == 0) { return true; } + int32_t *rawIndexes = indexes.allocateInsteadAndCopy(length); + if (rawIndexes == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + return false; + } + for (int i = 0; i < length; ++i) { + stringArray.getValue(i, value); // returns TRUE because i < length + rawIndexes[i] = strings.add(value.getUnicodeString(errorCode), errorCode); + if (U_FAILURE(errorCode)) { return false; } + } + } + return true; + } +}; + +namespace { + +XLikelySubtags *gLikelySubtags = nullptr; +UInitOnce gInitOnce = U_INITONCE_INITIALIZER; + +UBool U_CALLCONV cleanup() { + delete gLikelySubtags; + gLikelySubtags = nullptr; + gInitOnce.reset(); + return TRUE; +} + +} // namespace + +void U_CALLCONV XLikelySubtags::initLikelySubtags(UErrorCode &errorCode) { + // This function is invoked only via umtx_initOnce(). + U_ASSERT(gLikelySubtags == nullptr); + XLikelySubtagsData data(errorCode); + data.load(errorCode); + if (U_FAILURE(errorCode)) { return; } + gLikelySubtags = new XLikelySubtags(data); + if (gLikelySubtags == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + return; + } + ucln_common_registerCleanup(UCLN_COMMON_LIKELY_SUBTAGS, cleanup); +} + +const XLikelySubtags *XLikelySubtags::getSingleton(UErrorCode &errorCode) { + if (U_FAILURE(errorCode)) { return nullptr; } + umtx_initOnce(gInitOnce, &XLikelySubtags::initLikelySubtags, errorCode); + return gLikelySubtags; +} + +XLikelySubtags::XLikelySubtags(XLikelySubtagsData &data) : + langInfoBundle(data.langInfoBundle), + strings(data.strings.orphanCharStrings()), + languageAliases(std::move(data.languageAliases)), + regionAliases(std::move(data.regionAliases)), + trie(data.trieBytes), + lsrs(data.lsrs), +#if U_DEBUG + lsrsLength(data.lsrsLength), +#endif + distanceData(std::move(data.distanceData)) { + data.langInfoBundle = nullptr; + data.lsrs = nullptr; + + // Cache the result of looking up language="und" encoded as "*", and "und-Zzzz" ("**"). + UStringTrieResult result = trie.next(u'*'); + U_ASSERT(USTRINGTRIE_HAS_NEXT(result)); + trieUndState = trie.getState64(); + result = trie.next(u'*'); + U_ASSERT(USTRINGTRIE_HAS_NEXT(result)); + trieUndZzzzState = trie.getState64(); + result = trie.next(u'*'); + U_ASSERT(USTRINGTRIE_HAS_VALUE(result)); + defaultLsrIndex = trie.getValue(); + trie.reset(); + + for (char16_t c = u'a'; c <= u'z'; ++c) { + result = trie.next(c); + if (result == USTRINGTRIE_NO_VALUE) { + trieFirstLetterStates[c - u'a'] = trie.getState64(); + } + trie.reset(); + } +} + +XLikelySubtags::~XLikelySubtags() { + ures_close(langInfoBundle); + delete strings; + delete[] lsrs; +} + +LSR XLikelySubtags::makeMaximizedLsrFrom(const Locale &locale, UErrorCode &errorCode) const { + const char *name = locale.getName(); + if (uprv_isAtSign(name[0]) && name[1] == 'x' && name[2] == '=') { // name.startsWith("@x=") + // Private use language tag x-subtag-subtag... + return LSR(name, "", ""); + } + return makeMaximizedLsr(locale.getLanguage(), locale.getScript(), locale.getCountry(), + locale.getVariant(), errorCode); +} + +namespace { + +const char *getCanonical(const CharStringMap &aliases, const char *alias) { + const char *canonical = aliases.get(alias); + return canonical == nullptr ? alias : canonical; +} + +} // namespace + +LSR XLikelySubtags::makeMaximizedLsr(const char *language, const char *script, const char *region, + const char *variant, UErrorCode &errorCode) const { + // Handle pseudolocales like en-XA, ar-XB, fr-PSCRACK. + // They should match only themselves, + // not other locales with what looks like the same language and script subtags. + char c1; + if (region[0] == 'X' && (c1 = region[1]) != 0 && region[2] == 0) { + switch (c1) { + case 'A': + return LSR(PSEUDO_ACCENTS_PREFIX, language, script, region, errorCode); + case 'B': + return LSR(PSEUDO_BIDI_PREFIX, language, script, region, errorCode); + case 'C': + return LSR(PSEUDO_CRACKED_PREFIX, language, script, region, errorCode); + default: // normal locale + break; + } + } + + if (variant[0] == 'P' && variant[1] == 'S') { + if (uprv_strcmp(variant, "PSACCENT") == 0) { + return LSR(PSEUDO_ACCENTS_PREFIX, language, script, + *region == 0 ? "XA" : region, errorCode); + } else if (uprv_strcmp(variant, "PSBIDI") == 0) { + return LSR(PSEUDO_BIDI_PREFIX, language, script, + *region == 0 ? "XB" : region, errorCode); + } else if (uprv_strcmp(variant, "PSCRACK") == 0) { + return LSR(PSEUDO_CRACKED_PREFIX, language, script, + *region == 0 ? "XC" : region, errorCode); + } + // else normal locale + } + + language = getCanonical(languageAliases, language); + // (We have no script mappings.) + region = getCanonical(regionAliases, region); + return maximize(language, script, region); +} + +LSR XLikelySubtags::maximize(const char *language, const char *script, const char *region) const { + if (uprv_strcmp(language, "und") == 0) { + language = ""; + } + if (uprv_strcmp(script, "Zzzz") == 0) { + script = ""; + } + if (uprv_strcmp(region, "ZZ") == 0) { + region = ""; + } + if (*script != 0 && *region != 0 && *language != 0) { + return LSR(language, script, region); // already maximized + } + + uint32_t retainOldMask = 0; + BytesTrie iter(trie); + uint64_t state; + int32_t value; + // Small optimization: Array lookup for first language letter. + int32_t c0; + if (0 <= (c0 = uprv_lowerOrdinal(language[0])) && c0 <= 25 && + language[1] != 0 && // language.length() >= 2 + (state = trieFirstLetterStates[c0]) != 0) { + value = trieNext(iter.resetToState64(state), language, 1); + } else { + value = trieNext(iter, language, 0); + } + if (value >= 0) { + if (*language != 0) { + retainOldMask |= 4; + } + state = iter.getState64(); + } else { + retainOldMask |= 4; + iter.resetToState64(trieUndState); // "und" ("*") + state = 0; + } + + if (value > 0) { + // Intermediate or final value from just language. + if (value == SKIP_SCRIPT) { + value = 0; + } + if (*script != 0) { + retainOldMask |= 2; + } + } else { + value = trieNext(iter, script, 0); + if (value >= 0) { + if (*script != 0) { + retainOldMask |= 2; + } + state = iter.getState64(); + } else { + retainOldMask |= 2; + if (state == 0) { + iter.resetToState64(trieUndZzzzState); // "und-Zzzz" ("**") + } else { + iter.resetToState64(state); + value = trieNext(iter, "", 0); + U_ASSERT(value >= 0); + state = iter.getState64(); + } + } + } + + if (value > 0) { + // Final value from just language or language+script. + if (*region != 0) { + retainOldMask |= 1; + } + } else { + value = trieNext(iter, region, 0); + if (value >= 0) { + if (*region != 0) { + retainOldMask |= 1; + } + } else { + retainOldMask |= 1; + if (state == 0) { + value = defaultLsrIndex; + } else { + iter.resetToState64(state); + value = trieNext(iter, "", 0); + U_ASSERT(value > 0); + } + } + } + U_ASSERT(value < lsrsLength); + const LSR &result = lsrs[value]; + + if (*language == 0) { + language = "und"; + } + + if (retainOldMask == 0) { + // Quickly return a copy of the lookup-result LSR + // without new allocation of the subtags. + return LSR(result.language, result.script, result.region); + } + if ((retainOldMask & 4) == 0) { + language = result.language; + } + if ((retainOldMask & 2) == 0) { + script = result.script; + } + if ((retainOldMask & 1) == 0) { + region = result.region; + } + return LSR(language, script, region); +} + +int32_t XLikelySubtags::trieNext(BytesTrie &iter, const char *s, int32_t i) { + UStringTrieResult result; + uint8_t c; + if ((c = s[i]) == 0) { + result = iter.next(u'*'); + } else { + for (;;) { + c = uprv_invCharToAscii(c); + // EBCDIC: If s[i] is not an invariant character, + // then c is now 0 and will simply not match anything, which is harmless. + uint8_t next = s[++i]; + if (next != 0) { + if (!USTRINGTRIE_HAS_NEXT(iter.next(c))) { + return -1; + } + } else { + // last character of this subtag + result = iter.next(c | 0x80); + break; + } + c = next; + } + } + switch (result) { + case USTRINGTRIE_NO_MATCH: return -1; + case USTRINGTRIE_NO_VALUE: return 0; + case USTRINGTRIE_INTERMEDIATE_VALUE: + U_ASSERT(iter.getValue() == SKIP_SCRIPT); + return SKIP_SCRIPT; + case USTRINGTRIE_FINAL_VALUE: return iter.getValue(); + default: return -1; + } +} + +// TODO(ICU-20777): Switch Locale/uloc_ likely-subtags API from the old code +// in loclikely.cpp to this new code, including activating this +// minimizeSubtags() function. The LocaleMatcher does not minimize. +#if 0 +LSR XLikelySubtags::minimizeSubtags(const char *languageIn, const char *scriptIn, + const char *regionIn, ULocale.Minimize fieldToFavor, + UErrorCode &errorCode) const { + LSR result = maximize(languageIn, scriptIn, regionIn); + + // We could try just a series of checks, like: + // LSR result2 = addLikelySubtags(languageIn, "", ""); + // if result.equals(result2) return result2; + // However, we can optimize 2 of the cases: + // (languageIn, "", "") + // (languageIn, "", regionIn) + + // value00 = lookup(result.language, "", "") + BytesTrie iter = new BytesTrie(trie); + int value = trieNext(iter, result.language, 0); + U_ASSERT(value >= 0); + if (value == 0) { + value = trieNext(iter, "", 0); + U_ASSERT(value >= 0); + if (value == 0) { + value = trieNext(iter, "", 0); + } + } + U_ASSERT(value > 0); + LSR value00 = lsrs[value]; + boolean favorRegionOk = false; + if (result.script.equals(value00.script)) { //script is default + if (result.region.equals(value00.region)) { + return new LSR(result.language, "", ""); + } else if (fieldToFavor == ULocale.Minimize.FAVOR_REGION) { + return new LSR(result.language, "", result.region); + } else { + favorRegionOk = true; + } + } + + // The last case is not as easy to optimize. + // Maybe do later, but for now use the straightforward code. + LSR result2 = maximize(languageIn, scriptIn, ""); + if (result2.equals(result)) { + return new LSR(result.language, result.script, ""); + } else if (favorRegionOk) { + return new LSR(result.language, "", result.region); + } + return result; +} +#endif + +U_NAMESPACE_END diff --git a/source/common/loclikelysubtags.h b/source/common/loclikelysubtags.h new file mode 100644 index 0000000..8c8a08a --- /dev/null +++ b/source/common/loclikelysubtags.h @@ -0,0 +1,143 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License + +// loclikelysubtags.h +// created: 2019may08 Markus W. Scherer + +#ifndef __LOCLIKELYSUBTAGS_H__ +#define __LOCLIKELYSUBTAGS_H__ + +#include +#include "unicode/utypes.h" +#include "unicode/bytestrie.h" +#include "unicode/locid.h" +#include "unicode/uobject.h" +#include "unicode/ures.h" +#include "lsr.h" +#include "uhash.h" + +U_NAMESPACE_BEGIN + +struct XLikelySubtagsData; + +/** + * Map of const char * keys & values. + * Stores pointers as is: Does not own/copy/adopt/release strings. + */ +class CharStringMap final : public UMemory { +public: + /** Constructs an unusable non-map. */ + CharStringMap() : map(nullptr) {} + CharStringMap(int32_t size, UErrorCode &errorCode) { + map = uhash_openSize(uhash_hashChars, uhash_compareChars, uhash_compareChars, + size, &errorCode); + } + CharStringMap(CharStringMap &&other) U_NOEXCEPT : map(other.map) { + other.map = nullptr; + } + CharStringMap(const CharStringMap &other) = delete; + ~CharStringMap() { + uhash_close(map); + } + + CharStringMap &operator=(CharStringMap &&other) U_NOEXCEPT { + map = other.map; + other.map = nullptr; + return *this; + } + CharStringMap &operator=(const CharStringMap &other) = delete; + + const char *get(const char *key) const { return static_cast(uhash_get(map, key)); } + void put(const char *key, const char *value, UErrorCode &errorCode) { + uhash_put(map, const_cast(key), const_cast(value), &errorCode); + } + +private: + UHashtable *map; +}; + +struct LocaleDistanceData { + LocaleDistanceData() = default; + LocaleDistanceData(LocaleDistanceData &&data); + ~LocaleDistanceData(); + + const uint8_t *distanceTrieBytes = nullptr; + const uint8_t *regionToPartitions = nullptr; + const char **partitions = nullptr; + const LSR *paradigms = nullptr; + int32_t paradigmsLength = 0; + const int32_t *distances = nullptr; + +private: + LocaleDistanceData &operator=(const LocaleDistanceData &) = delete; +}; + +// TODO(ICU-20777): Rename to just LikelySubtags. +class XLikelySubtags final : public UMemory { +public: + ~XLikelySubtags(); + + static constexpr int32_t SKIP_SCRIPT = 1; + + // VisibleForTesting + static const XLikelySubtags *getSingleton(UErrorCode &errorCode); + + // VisibleForTesting + LSR makeMaximizedLsrFrom(const Locale &locale, UErrorCode &errorCode) const; + + // TODO(ICU-20777): Switch Locale/uloc_ likely-subtags API from the old code + // in loclikely.cpp to this new code, including activating this + // minimizeSubtags() function. The LocaleMatcher does not minimize. +#if 0 + LSR minimizeSubtags(const char *languageIn, const char *scriptIn, const char *regionIn, + ULocale.Minimize fieldToFavor, UErrorCode &errorCode) const; +#endif + + // visible for LocaleDistance + const LocaleDistanceData &getDistanceData() const { return distanceData; } + +private: + XLikelySubtags(XLikelySubtagsData &data); + XLikelySubtags(const XLikelySubtags &other) = delete; + XLikelySubtags &operator=(const XLikelySubtags &other) = delete; + + static void initLikelySubtags(UErrorCode &errorCode); + + LSR makeMaximizedLsr(const char *language, const char *script, const char *region, + const char *variant, UErrorCode &errorCode) const; + + /** + * Raw access to addLikelySubtags. Input must be in canonical format, eg "en", not "eng" or "EN". + */ + LSR maximize(const char *language, const char *script, const char *region) const; + + static int32_t trieNext(BytesTrie &iter, const char *s, int32_t i); + + UResourceBundle *langInfoBundle; + // We could store the strings by value, except that if there were few enough strings, + // moving the contents could copy it to a different array, + // invalidating the pointers stored in the maps. + CharString *strings; + CharStringMap languageAliases; + CharStringMap regionAliases; + + // The trie maps each lang+script+region (encoded in ASCII) to an index into lsrs. + // There is also a trie value for each intermediate lang and lang+script. + // '*' is used instead of "und", "Zzzz"/"" and "ZZ"/"". + BytesTrie trie; + uint64_t trieUndState; + uint64_t trieUndZzzzState; + int32_t defaultLsrIndex; + uint64_t trieFirstLetterStates[26]; + const LSR *lsrs; +#if U_DEBUG + int32_t lsrsLength; +#endif + + // distance/matcher data: see comment in XLikelySubtagsData::load() + LocaleDistanceData distanceData; +}; + +U_NAMESPACE_END + +#endif // __LOCLIKELYSUBTAGS_H__ diff --git a/source/common/lsr.cpp b/source/common/lsr.cpp new file mode 100644 index 0000000..0c28eed --- /dev/null +++ b/source/common/lsr.cpp @@ -0,0 +1,101 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License + +// lsr.cpp +// created: 2019may08 Markus W. Scherer + +#include "unicode/utypes.h" +#include "charstr.h" +#include "cmemory.h" +#include "cstring.h" +#include "lsr.h" +#include "uinvchar.h" +#include "ustr_imp.h" + +U_NAMESPACE_BEGIN + +LSR::LSR(char prefix, const char *lang, const char *scr, const char *r, UErrorCode &errorCode) : + language(nullptr), script(nullptr), region(r), + regionIndex(indexForRegion(region)) { + if (U_SUCCESS(errorCode)) { + CharString langScript; + langScript.append(prefix, errorCode).append(lang, errorCode).append('\0', errorCode); + int32_t scriptOffset = langScript.length(); + langScript.append(prefix, errorCode).append(scr, errorCode); + owned = langScript.cloneData(errorCode); + if (U_SUCCESS(errorCode)) { + language = owned; + script = owned + scriptOffset; + } + } +} + +LSR::LSR(LSR &&other) U_NOEXCEPT : + language(other.language), script(other.script), region(other.region), owned(other.owned), + regionIndex(other.regionIndex), hashCode(other.hashCode) { + if (owned != nullptr) { + other.language = other.script = ""; + other.owned = nullptr; + other.hashCode = 0; + } +} + +void LSR::deleteOwned() { + uprv_free(owned); +} + +LSR &LSR::operator=(LSR &&other) U_NOEXCEPT { + this->~LSR(); + language = other.language; + script = other.script; + region = other.region; + regionIndex = other.regionIndex; + owned = other.owned; + hashCode = other.hashCode; + if (owned != nullptr) { + other.language = other.script = ""; + other.owned = nullptr; + other.hashCode = 0; + } + return *this; +} + +UBool LSR::operator==(const LSR &other) const { + return + uprv_strcmp(language, other.language) == 0 && + uprv_strcmp(script, other.script) == 0 && + regionIndex == other.regionIndex && + // Compare regions if both are ill-formed (and their indexes are 0). + (regionIndex > 0 || uprv_strcmp(region, other.region) == 0); +} + +int32_t LSR::indexForRegion(const char *region) { + int32_t c = region[0]; + int32_t a = c - '0'; + if (0 <= a && a <= 9) { // digits: "419" + int32_t b = region[1] - '0'; + if (b < 0 || 9 < b) { return 0; } + c = region[2] - '0'; + if (c < 0 || 9 < c || region[3] != 0) { return 0; } + return (10 * a + b) * 10 + c + 1; + } else { // letters: "DE" + a = uprv_upperOrdinal(c); + if (a < 0 || 25 < a) { return 0; } + int32_t b = uprv_upperOrdinal(region[1]); + if (b < 0 || 25 < b || region[2] != 0) { return 0; } + return 26 * a + b + 1001; + } + return 0; +} + +LSR &LSR::setHashCode() { + if (hashCode == 0) { + hashCode = + (ustr_hashCharsN(language, static_cast(uprv_strlen(language))) * 37 + + ustr_hashCharsN(script, static_cast(uprv_strlen(script)))) * 37 + + regionIndex; + } + return *this; +} + +U_NAMESPACE_END diff --git a/source/common/lsr.h b/source/common/lsr.h new file mode 100644 index 0000000..db6cf93 --- /dev/null +++ b/source/common/lsr.h @@ -0,0 +1,72 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License + +// lsr.h +// created: 2019may08 Markus W. Scherer + +#ifndef __LSR_H__ +#define __LSR_H__ + +#include "unicode/utypes.h" +#include "unicode/uobject.h" +#include "cstring.h" + +U_NAMESPACE_BEGIN + +struct LSR final : public UMemory { + static constexpr int32_t REGION_INDEX_LIMIT = 1001 + 26 * 26; + + const char *language; + const char *script; + const char *region; + char *owned = nullptr; + /** Index for region, 0 if ill-formed. @see indexForRegion */ + int32_t regionIndex = 0; + /** Only set for LSRs that will be used in a hash table. */ + int32_t hashCode = 0; + + LSR() : language("und"), script(""), region("") {} + + /** Constructor which aliases all subtag pointers. */ + LSR(const char *lang, const char *scr, const char *r) : + language(lang), script(scr), region(r), + regionIndex(indexForRegion(region)) {} + /** + * Constructor which prepends the prefix to the language and script, + * copies those into owned memory, and aliases the region. + */ + LSR(char prefix, const char *lang, const char *scr, const char *r, UErrorCode &errorCode); + LSR(LSR &&other) U_NOEXCEPT; + LSR(const LSR &other) = delete; + inline ~LSR() { + // Pure inline code for almost all instances. + if (owned != nullptr) { + deleteOwned(); + } + } + + LSR &operator=(LSR &&other) U_NOEXCEPT; + LSR &operator=(const LSR &other) = delete; + + /** + * Returns a positive index (>0) for a well-formed region code. + * Do not rely on a particular region->index mapping; it may change. + * Returns 0 for ill-formed strings. + */ + static int32_t indexForRegion(const char *region); + + UBool operator==(const LSR &other) const; + + inline UBool operator!=(const LSR &other) const { + return !operator==(other); + } + + LSR &setHashCode(); + +private: + void deleteOwned(); +}; + +U_NAMESPACE_END + +#endif // __LSR_H__ diff --git a/source/common/mutex.h b/source/common/mutex.h index 47f5e08..44b1f90 100644 --- a/source/common/mutex.h +++ b/source/common/mutex.h @@ -28,50 +28,48 @@ U_NAMESPACE_BEGIN -//---------------------------------------------------------------------------- -// Code within that accesses shared static or global data should -// should instantiate a Mutex object while doing so. You should make your own -// private mutex where possible. - -// For example: -// -// UMutex myMutex = U_MUTEX_INITIALIZER; -// -// void Function(int arg1, int arg2) -// { -// static Object* foo; // Shared read-write object -// Mutex mutex(&myMutex); // or no args for the global lock -// foo->Method(); -// // When 'mutex' goes out of scope and gets destroyed here, the lock is released -// } -// -// Note: Do NOT use the form 'Mutex mutex();' as that merely forward-declares a function -// returning a Mutex. This is a common mistake which silently slips through the -// compiler!! -// +/** + * Mutex is a helper class for convenient locking and unlocking of a UMutex. + * + * Creating a local scope Mutex will lock a UMutex, holding the lock until the Mutex + * goes out of scope. + * + * If no UMutex is specified, the ICU global mutex is implied. + * + * For example: + * + * static UMutex myMutex; + * + * void Function(int arg1, int arg2) + * { + * static Object* foo; // Shared read-write object + * Mutex mutex(&myMutex); // or no args for the global lock + * foo->Method(); + * // When 'mutex' goes out of scope and gets destroyed here, the lock is released + * } + * + * Note: Do NOT use the form 'Mutex mutex();' as that merely forward-declares a function + * returning a Mutex. This is a common mistake which silently slips through the + * compiler!! + */ class U_COMMON_API Mutex : public UMemory { public: - inline Mutex(UMutex *mutex = NULL); - inline ~Mutex(); + Mutex(UMutex *mutex = nullptr) : fMutex(mutex) { + umtx_lock(fMutex); + } + ~Mutex() { + umtx_unlock(fMutex); + } -private: - UMutex *fMutex; + Mutex(const Mutex &other) = delete; // forbid assigning of this class + Mutex &operator=(const Mutex &other) = delete; // forbid copying of this class + void *operator new(size_t s) = delete; // forbid heap allocation. Locals only. - Mutex(const Mutex &other); // forbid copying of this class - Mutex &operator=(const Mutex &other); // forbid copying of this class +private: + UMutex *fMutex; }; -inline Mutex::Mutex(UMutex *mutex) - : fMutex(mutex) -{ - umtx_lock(fMutex); -} - -inline Mutex::~Mutex() -{ - umtx_unlock(fMutex); -} U_NAMESPACE_END diff --git a/source/common/normalizer2impl.h b/source/common/normalizer2impl.h index 7ecdef6..cf3015e 100644 --- a/source/common/normalizer2impl.h +++ b/source/common/normalizer2impl.h @@ -245,9 +245,7 @@ private: */ class U_COMMON_API Normalizer2Impl : public UObject { public: - Normalizer2Impl() : normTrie(NULL), fCanonIterData(NULL) { - fCanonIterDataInitOnce.reset(); - } + Normalizer2Impl() : normTrie(NULL), fCanonIterData(NULL) { } virtual ~Normalizer2Impl(); void init(const int32_t *inIndexes, const UCPTrie *inTrie, @@ -723,7 +721,7 @@ private: const uint16_t *extraData; // mappings and/or compositions for yesYes, yesNo & noNo characters const uint8_t *smallFCD; // [0x100] one bit per 32 BMP code points, set if any FCD!=0 - UInitOnce fCanonIterDataInitOnce; + UInitOnce fCanonIterDataInitOnce = U_INITONCE_INITIALIZER; CanonIterData *fCanonIterData; }; diff --git a/source/common/putil.cpp b/source/common/putil.cpp index 532a090..acb9022 100644 --- a/source/common/putil.cpp +++ b/source/common/putil.cpp @@ -249,7 +249,7 @@ static UDate getUTCtime_real() { } static UDate getUTCtime_fake() { - static UMutex fakeClockMutex = U_MUTEX_INTIALIZER; + static UMutex fakeClockMutex; umtx_lock(&fakeClockMutex); if(!fakeClock_set) { UDate real = getUTCtime_real(); @@ -1315,11 +1315,10 @@ uprv_pathIsAbsolute(const char *path) # endif #endif -#if U_PLATFORM_HAS_WINUWP_API != 0 +#if defined(ICU_DATA_DIR_WINDOWS) // Helper function to get the ICU Data Directory under the Windows directory location. static BOOL U_CALLCONV getIcuDataDirectoryUnderWindowsDirectory(char* directoryBuffer, UINT bufferLength) { -#if defined(ICU_DATA_DIR_WINDOWS) wchar_t windowsPath[MAX_PATH]; char windowsPathUtf8[MAX_PATH]; @@ -1346,7 +1345,6 @@ static BOOL U_CALLCONV getIcuDataDirectoryUnderWindowsDirectory(char* directoryB } } } -#endif return FALSE; } @@ -1380,9 +1378,9 @@ static void U_CALLCONV dataDirectoryInitFn() { */ # if !defined(ICU_NO_USER_DATA_OVERRIDE) && !UCONFIG_NO_FILE_IO /* First try to get the environment variable */ -# if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP does not support getenv +# if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP does not support getenv path=getenv("ICU_DATA"); -# endif +# endif # endif /* ICU_DATA_DIR may be set as a compile option. @@ -1411,7 +1409,7 @@ static void U_CALLCONV dataDirectoryInitFn() { } #endif -#if U_PLATFORM_HAS_WINUWP_API != 0 && defined(ICU_DATA_DIR_WINDOWS) +#if defined(ICU_DATA_DIR_WINDOWS) char datadir_path_buffer[MAX_PATH]; if (getIcuDataDirectoryUnderWindowsDirectory(datadir_path_buffer, UPRV_LENGTHOF(datadir_path_buffer))) { path = datadir_path_buffer; @@ -1461,12 +1459,17 @@ static void U_CALLCONV TimeZoneDataDirInitFn(UErrorCode &status) { const char *dir = ""; -#if U_PLATFORM_HAS_WINUWP_API != 0 - // The UWP version does not support the environment variable setting, but can possibly pick them up from the Windows directory. +#if U_PLATFORM_HAS_WINUWP_API == 1 +// The UWP version does not support the environment variable setting. + +# if defined(ICU_DATA_DIR_WINDOWS) + // When using the Windows system data, we can possibly pick up time zone data from the Windows directory. char datadir_path_buffer[MAX_PATH]; if (getIcuDataDirectoryUnderWindowsDirectory(datadir_path_buffer, UPRV_LENGTHOF(datadir_path_buffer))) { dir = datadir_path_buffer; } +# endif + #else dir = getenv("ICU_TIMEZONE_FILES_DIR"); #endif // U_PLATFORM_HAS_WINUWP_API @@ -1560,6 +1563,10 @@ static const char *uprv_getPOSIXIDForCategory(int category) { /* Nothing worked. Give it a nice POSIX default value. */ posixID = "en_US_POSIX"; + // Note: this test will not catch 'C.UTF-8', + // that will be handled in uprv_getDefaultLocaleID(). + // Leave this mapping here for the uprv_getPOSIXIDForDefaultCodepage() + // caller which expects to see "en_US_POSIX" in many branches. } return posixID; } @@ -1631,8 +1638,8 @@ The leftmost codepage (.xxx) wins. } // Copy the ID into owned memory. - // Over-allocate in case we replace "@" with "__". - char *correctedPOSIXLocale = static_cast(uprv_malloc(uprv_strlen(posixID) + 1 + 1)); + // Over-allocate in case we replace "C" with "en_US_POSIX" (+10), + null termination + char *correctedPOSIXLocale = static_cast(uprv_malloc(uprv_strlen(posixID) + 10 + 1)); if (correctedPOSIXLocale == nullptr) { return nullptr; } @@ -1641,11 +1648,18 @@ The leftmost codepage (.xxx) wins. char *limit; if ((limit = uprv_strchr(correctedPOSIXLocale, '.')) != nullptr) { *limit = 0; - if ((limit = uprv_strchr(correctedPOSIXLocale, '@')) != nullptr) { - *limit = 0; - } + } + if ((limit = uprv_strchr(correctedPOSIXLocale, '@')) != nullptr) { + *limit = 0; } + if ((uprv_strcmp("C", correctedPOSIXLocale) == 0) // no @ variant + || (uprv_strcmp("POSIX", correctedPOSIXLocale) == 0)) { + // Raw input was C.* or POSIX.*, Give it a nice POSIX default value. + // (The "C"/"POSIX" case is handled in uprv_getPOSIXIDForCategory()) + uprv_strcpy(correctedPOSIXLocale, "en_US_POSIX"); + } + /* Note that we scan the *uncorrected* ID. */ const char *p; if ((p = uprv_strrchr(posixID, '@')) != nullptr) { @@ -1668,7 +1682,7 @@ The leftmost codepage (.xxx) wins. if ((q = uprv_strchr(p, '.')) != nullptr) { /* How big will the resulting string be? */ int32_t len = (int32_t)(uprv_strlen(correctedPOSIXLocale) + (q-p)); - uprv_strncat(correctedPOSIXLocale, p, q-p); + uprv_strncat(correctedPOSIXLocale, p, q-p); // do not include charset correctedPOSIXLocale[len] = 0; } else { @@ -2053,7 +2067,7 @@ int_getDefaultCodepage() static char codepage[64]; DWORD codepageNumber = 0; -#if U_PLATFORM_HAS_WINUWP_API > 0 +#if U_PLATFORM_HAS_WINUWP_API == 1 // UWP doesn't have a direct API to get the default ACP as Microsoft would rather // have folks use Unicode than a "system" code page, however this is the same // codepage as the system default locale codepage. (FWIW, the system locale is diff --git a/source/common/putilimp.h b/source/common/putilimp.h index 73defd9..d9c90cf 100644 --- a/source/common/putilimp.h +++ b/source/common/putilimp.h @@ -179,76 +179,6 @@ typedef size_t uintptr_t; /** @} */ /*===========================================================================*/ -/** @{ GCC built in functions for atomic memory operations */ -/*===========================================================================*/ - -/** - * \def U_HAVE_GCC_ATOMICS - * @internal - */ -#ifdef U_HAVE_GCC_ATOMICS - /* Use the predefined value. */ -#elif U_PLATFORM == U_PF_MINGW - #define U_HAVE_GCC_ATOMICS 0 -#elif U_GCC_MAJOR_MINOR >= 404 || defined(__clang__) - /* TODO: Intel icc and IBM xlc on AIX also support gcc atomics. (Intel originated them.) - * Add them for these compilers. - * Note: Clang sets __GNUC__ defines for version 4.2, so misses the 4.4 test here. - */ -# define U_HAVE_GCC_ATOMICS 1 -#else -# define U_HAVE_GCC_ATOMICS 0 -#endif - -/** @} */ - -/** - * \def U_HAVE_STD_ATOMICS - * Defines whether to use the C++11 std::atomic functions. - * If false, ICU will fall back to compiler or platform specific alternatives. - * Note: support for these fall back options for atomics will be removed in a future version - * of ICU, and the use of C++ 11 atomics will be required. - * @internal - */ -#ifdef U_HAVE_STD_ATOMICS - /* Use the predefined value. */ -#else -# define U_HAVE_STD_ATOMICS 1 -#endif - -/** - * \def U_HAVE_CLANG_ATOMICS - * Defines whether Clang c11 style built-in atomics are available. - * These are used in preference to gcc atomics when both are available. - */ -#ifdef U_HAVE_CLANG_ATOMICS - /* Use the predefined value. */ -#elif __has_builtin(__c11_atomic_load) && \ - __has_builtin(__c11_atomic_store) && \ - __has_builtin(__c11_atomic_fetch_add) && \ - __has_builtin(__c11_atomic_fetch_sub) -# define U_HAVE_CLANG_ATOMICS 1 -#else -# define U_HAVE_CLANG_ATOMICS 0 -#endif - - -/** - * \def U_HAVE_STD_MUTEX - * Defines whether to use the C++11 std::mutex functions. - * If false, ICU will fall back to compiler or platform specific alternatives. - * std::mutex is preferred, and used by default unless this setting is overridden. - * Note: support for other options for mutexes will be removed in a future version - * of ICU, and the use of std::mutex will be required. - * @internal - */ -#ifdef U_HAVE_STD_MUTEX - /* Use the predefined value. */ -#else -# define U_HAVE_STD_MUTEX 1 -#endif - -/*===========================================================================*/ /** @{ Programs used by ICU code */ /*===========================================================================*/ diff --git a/source/common/rbbi.cpp b/source/common/rbbi.cpp index 3b116ff..01dae48 100644 --- a/source/common/rbbi.cpp +++ b/source/common/rbbi.cpp @@ -323,8 +323,8 @@ void RuleBasedBreakIterator::init(UErrorCode &status) { // Virtual function: does the right thing with subclasses. // //----------------------------------------------------------------------------- -BreakIterator* -RuleBasedBreakIterator::clone(void) const { +RuleBasedBreakIterator* +RuleBasedBreakIterator::clone() const { return new RuleBasedBreakIterator(*this); } @@ -352,7 +352,7 @@ RuleBasedBreakIterator::operator==(const BreakIterator& that) const { // or have a different iteration position. // Note that fText's position is always the same as the break iterator's position. return FALSE; - }; + } if (!(fPosition == that2.fPosition && fRuleStatusIndex == that2.fRuleStatusIndex && @@ -1079,10 +1079,8 @@ const uint8_t *RuleBasedBreakIterator::getBinaryRules(uint32_t &length) { } -BreakIterator * RuleBasedBreakIterator::createBufferClone(void * /*stackBuffer*/, - int32_t &bufferSize, - UErrorCode &status) -{ +RuleBasedBreakIterator *RuleBasedBreakIterator::createBufferClone( + void * /*stackBuffer*/, int32_t &bufferSize, UErrorCode &status) { if (U_FAILURE(status)){ return NULL; } diff --git a/source/common/rbbi_cache.cpp b/source/common/rbbi_cache.cpp index 17ee232..4f9e833 100644 --- a/source/common/rbbi_cache.cpp +++ b/source/common/rbbi_cache.cpp @@ -519,7 +519,7 @@ UBool RuleBasedBreakIterator::BreakCache::populatePreceding(UErrorCode &status) // The initial handleNext() only advanced by a single code point. Go again. position = fBI->handleNext(); // Safe rules identify safe pairs. } - }; + } positionStatusIdx = fBI->fRuleStatusIndex; } } while (position >= fromPosition); diff --git a/source/common/resbund.cpp b/source/common/resbund.cpp index 08cda3a..7c5063b 100644 --- a/source/common/resbund.cpp +++ b/source/common/resbund.cpp @@ -51,6 +51,7 @@ #include "unicode/utypes.h" #include "unicode/resbund.h" +#include "cmemory.h" #include "mutex.h" #include "uassert.h" #include "umutex.h" @@ -377,7 +378,7 @@ void ResourceBundle::getVersion(UVersionInfo versionInfo) const { } const Locale &ResourceBundle::getLocale(void) const { - static UMutex gLocaleLock = U_MUTEX_INITIALIZER; + static UMutex gLocaleLock; Mutex lock(&gLocaleLock); if (fLocale != NULL) { return *fLocale; diff --git a/source/common/resource.h b/source/common/resource.h index 3dbff78..5199b85 100644 --- a/source/common/resource.h +++ b/source/common/resource.h @@ -28,6 +28,7 @@ #include "unicode/utypes.h" #include "unicode/unistr.h" #include "unicode/ures.h" +#include "restrace.h" struct ResourceData; @@ -47,8 +48,10 @@ public: ResourceArray() : items16(NULL), items32(NULL), length(0) {} /** Only for implementation use. @internal */ - ResourceArray(const uint16_t *i16, const uint32_t *i32, int32_t len) : - items16(i16), items32(i32), length(len) {} + ResourceArray(const uint16_t *i16, const uint32_t *i32, int32_t len, + const ResourceTracer& traceInfo) : + items16(i16), items32(i32), length(len), + fTraceInfo(traceInfo) {} /** * @return The number of items in the array resource. @@ -68,6 +71,7 @@ private: const uint16_t *items16; const uint32_t *items32; int32_t length; + ResourceTracer fTraceInfo; }; /** @@ -80,27 +84,37 @@ public: /** Only for implementation use. @internal */ ResourceTable(const uint16_t *k16, const int32_t *k32, - const uint16_t *i16, const uint32_t *i32, int32_t len) : - keys16(k16), keys32(k32), items16(i16), items32(i32), length(len) {} + const uint16_t *i16, const uint32_t *i32, int32_t len, + const ResourceTracer& traceInfo) : + keys16(k16), keys32(k32), items16(i16), items32(i32), length(len), + fTraceInfo(traceInfo) {} /** * @return The number of items in the array resource. */ int32_t getSize() const { return length; } /** - * @param i Array item index. + * @param i Table item index. * @param key Output-only, receives the key of the i'th item. * @param value Output-only, receives the value of the i'th item. * @return TRUE if i is non-negative and less than getSize(). */ UBool getKeyAndValue(int32_t i, const char *&key, ResourceValue &value) const; + /** + * @param key Key string to find in the table. + * @param value Output-only, receives the value of the item with that key. + * @return TRUE if the table contains the key. + */ + UBool findValue(const char *key, ResourceValue &value) const; + private: const uint16_t *keys16; const int32_t *keys32; const uint16_t *items16; const uint32_t *items32; int32_t length; + ResourceTracer fTraceInfo; }; /** diff --git a/source/common/restrace.cpp b/source/common/restrace.cpp new file mode 100644 index 0000000..5c64988 --- /dev/null +++ b/source/common/restrace.cpp @@ -0,0 +1,130 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html + +#include "unicode/utypes.h" + +#if U_ENABLE_TRACING + +#include "restrace.h" +#include "charstr.h" +#include "cstring.h" +#include "utracimp.h" +#include "uresimp.h" +#include "uassert.h" +#include "util.h" + +U_NAMESPACE_BEGIN + +ResourceTracer::~ResourceTracer() = default; + +void ResourceTracer::trace(const char* resType) const { + U_ASSERT(fResB || fParent); + UTRACE_ENTRY(UTRACE_UDATA_RESOURCE); + UErrorCode status = U_ZERO_ERROR; + + CharString filePath; + getFilePath(filePath, status); + + CharString resPath; + getResPath(resPath, status); + + // The longest type ("intvector") is 9 chars + const char kSpaces[] = " "; + CharString format; + format.append(kSpaces, sizeof(kSpaces) - 1 - uprv_strlen(resType), status); + format.append("(%s) %s @ %s", status); + + UTRACE_DATA3(UTRACE_VERBOSE, + format.data(), + resType, + filePath.data(), + resPath.data()); + UTRACE_EXIT_STATUS(status); +} + +void ResourceTracer::traceOpen() const { + U_ASSERT(fResB); + UTRACE_ENTRY(UTRACE_UDATA_BUNDLE); + UErrorCode status = U_ZERO_ERROR; + + CharString filePath; + UTRACE_DATA1(UTRACE_VERBOSE, "%s", getFilePath(filePath, status).data()); + UTRACE_EXIT_STATUS(status); +} + +CharString& ResourceTracer::getFilePath(CharString& output, UErrorCode& status) const { + if (fResB) { + output.append(fResB->fData->fPath, status); + output.append('/', status); + output.append(fResB->fData->fName, status); + output.append(".res", status); + } else { + fParent->getFilePath(output, status); + } + return output; +} + +CharString& ResourceTracer::getResPath(CharString& output, UErrorCode& status) const { + if (fResB) { + output.append('/', status); + output.append(fResB->fResPath, status); + // removing the trailing / + U_ASSERT(output[output.length()-1] == '/'); + output.truncate(output.length()-1); + } else { + fParent->getResPath(output, status); + } + if (fKey) { + output.append('/', status); + output.append(fKey, status); + } + if (fIndex != -1) { + output.append('[', status); + UnicodeString indexString; + ICU_Utility::appendNumber(indexString, fIndex); + output.appendInvariantChars(indexString, status); + output.append(']', status); + } + return output; +} + +void FileTracer::traceOpen(const char* path, const char* type, const char* name) { + if (uprv_strcmp(type, "res") == 0) { + traceOpenResFile(path, name); + } else { + traceOpenDataFile(path, type, name); + } +} + +void FileTracer::traceOpenDataFile(const char* path, const char* type, const char* name) { + UTRACE_ENTRY(UTRACE_UDATA_DATA_FILE); + UErrorCode status = U_ZERO_ERROR; + + CharString filePath; + filePath.append(path, status); + filePath.append('/', status); + filePath.append(name, status); + filePath.append('.', status); + filePath.append(type, status); + + UTRACE_DATA1(UTRACE_VERBOSE, "%s", filePath.data()); + UTRACE_EXIT_STATUS(status); +} + +void FileTracer::traceOpenResFile(const char* path, const char* name) { + UTRACE_ENTRY(UTRACE_UDATA_RES_FILE); + UErrorCode status = U_ZERO_ERROR; + + CharString filePath; + filePath.append(path, status); + filePath.append('/', status); + filePath.append(name, status); + filePath.append(".res", status); + + UTRACE_DATA1(UTRACE_VERBOSE, "%s", filePath.data()); + UTRACE_EXIT_STATUS(status); +} + +U_NAMESPACE_END + +#endif // U_ENABLE_TRACING diff --git a/source/common/restrace.h b/source/common/restrace.h new file mode 100644 index 0000000..ef29eae --- /dev/null +++ b/source/common/restrace.h @@ -0,0 +1,147 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html + +#ifndef __RESTRACE_H__ +#define __RESTRACE_H__ + +#include "unicode/utypes.h" + +#if U_ENABLE_TRACING + +struct UResourceBundle; + +U_NAMESPACE_BEGIN + +class CharString; + +/** + * Instances of this class store information used to trace reads from resource + * bundles when ICU is built with --enable-tracing. + * + * All arguments of type const UResourceBundle*, const char*, and + * const ResourceTracer& are stored as pointers. The caller must retain + * ownership for the lifetime of this ResourceTracer. + * + * Exported as U_COMMON_API for Windows because it is a value field + * in other exported types. + */ +class U_COMMON_API ResourceTracer { +public: + ResourceTracer() : + fResB(nullptr), + fParent(nullptr), + fKey(nullptr), + fIndex(-1) {} + + ResourceTracer(const UResourceBundle* resB) : + fResB(resB), + fParent(nullptr), + fKey(nullptr), + fIndex(-1) {} + + ResourceTracer(const UResourceBundle* resB, const char* key) : + fResB(resB), + fParent(nullptr), + fKey(key), + fIndex(-1) {} + + ResourceTracer(const UResourceBundle* resB, int32_t index) : + fResB(resB), + fParent(nullptr), + fKey(nullptr), + fIndex(index) {} + + ResourceTracer(const ResourceTracer& parent, const char* key) : + fResB(nullptr), + fParent(&parent), + fKey(key), + fIndex(-1) {} + + ResourceTracer(const ResourceTracer& parent, int32_t index) : + fResB(nullptr), + fParent(&parent), + fKey(nullptr), + fIndex(index) {} + + ~ResourceTracer(); + + void trace(const char* type) const; + void traceOpen() const; + + /** + * Calls trace() if the resB or parent provided to the constructor was + * non-null; otherwise, does nothing. + */ + void maybeTrace(const char* type) const { + if (fResB || fParent) { + trace(type); + } + } + +private: + const UResourceBundle* fResB; + const ResourceTracer* fParent; + const char* fKey; + int32_t fIndex; + + CharString& getFilePath(CharString& output, UErrorCode& status) const; + + CharString& getResPath(CharString& output, UErrorCode& status) const; +}; + +/** + * This class provides methods to trace data file reads when ICU is built + * with --enable-tracing. + */ +class FileTracer { +public: + static void traceOpen(const char* path, const char* type, const char* name); + +private: + static void traceOpenDataFile(const char* path, const char* type, const char* name); + static void traceOpenResFile(const char* path, const char* name); +}; + +U_NAMESPACE_END + +#else // U_ENABLE_TRACING + +U_NAMESPACE_BEGIN + +/** + * Default trivial implementation when --enable-tracing is not used. + */ +class U_COMMON_API ResourceTracer { +public: + ResourceTracer() {} + + ResourceTracer(const void*) {} + + ResourceTracer(const void*, const char*) {} + + ResourceTracer(const void*, int32_t) {} + + ResourceTracer(const ResourceTracer&, const char*) {} + + ResourceTracer(const ResourceTracer&, int32_t) {} + + void trace(const char*) const {} + + void traceOpen() const {} + + void maybeTrace(const char*) const {} +}; + +/** + * Default trivial implementation when --enable-tracing is not used. + */ +class FileTracer { +public: + static void traceOpen(const char*, const char*, const char*) {} +}; + +U_NAMESPACE_END + +#endif // U_ENABLE_TRACING + +#endif //__RESTRACE_H__ diff --git a/source/common/schriter.cpp b/source/common/schriter.cpp index f852800..17b68ae 100644 --- a/source/common/schriter.cpp +++ b/source/common/schriter.cpp @@ -101,7 +101,7 @@ StringCharacterIterator::operator==(const ForwardCharacterIterator& that) const && end == realThat.end; } -CharacterIterator* +StringCharacterIterator* StringCharacterIterator::clone() const { return new StringCharacterIterator(*this); } diff --git a/source/common/serv.cpp b/source/common/serv.cpp index 555c055..ce545b9 100644 --- a/source/common/serv.cpp +++ b/source/common/serv.cpp @@ -333,10 +333,7 @@ U_CDECL_END ****************************************************************** */ -static UMutex *lock() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static UMutex lock; ICUService::ICUService() : name() @@ -361,7 +358,7 @@ ICUService::ICUService(const UnicodeString& newName) ICUService::~ICUService() { { - Mutex mutex(lock()); + Mutex mutex(&lock); clearCaches(); delete factories; factories = NULL; @@ -452,7 +449,7 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer // if factory is not null, we're calling from within the mutex, // and since some unix machines don't have reentrant mutexes we // need to make sure not to try to lock it again. - XMutex mutex(lock(), factory != NULL); + XMutex mutex(&lock, factory != NULL); if (serviceCache == NULL) { ncthis->serviceCache = new Hashtable(status); @@ -618,7 +615,7 @@ ICUService::getVisibleIDs(UVector& result, const UnicodeString* matchID, UErrorC } { - Mutex mutex(lock()); + Mutex mutex(&lock); const Hashtable* map = getVisibleIDMap(status); if (map != NULL) { ICUServiceKey* fallbackKey = createKey(matchID, status); @@ -695,7 +692,7 @@ ICUService::getDisplayName(const UnicodeString& id, UnicodeString& result, const { { UErrorCode status = U_ZERO_ERROR; - Mutex mutex(lock()); + Mutex mutex(&lock); const Hashtable* map = getVisibleIDMap(status); if (map != NULL) { ICUServiceFactory* f = (ICUServiceFactory*)map->get(id); @@ -747,7 +744,7 @@ ICUService::getDisplayNames(UVector& result, result.setDeleter(userv_deleteStringPair); if (U_SUCCESS(status)) { ICUService* ncthis = (ICUService*)this; // cast away semantic const - Mutex mutex(lock()); + Mutex mutex(&lock); if (dnCache != NULL && dnCache->locale != locale) { delete dnCache; @@ -852,7 +849,7 @@ URegistryKey ICUService::registerFactory(ICUServiceFactory* factoryToAdopt, UErrorCode& status) { if (U_SUCCESS(status) && factoryToAdopt != NULL) { - Mutex mutex(lock()); + Mutex mutex(&lock); if (factories == NULL) { factories = new UVector(deleteUObject, NULL, status); @@ -883,7 +880,7 @@ ICUService::unregister(URegistryKey rkey, UErrorCode& status) ICUServiceFactory *factory = (ICUServiceFactory*)rkey; UBool result = FALSE; if (factory != NULL && factories != NULL) { - Mutex mutex(lock()); + Mutex mutex(&lock); if (factories->removeElement(factory)) { clearCaches(); @@ -903,7 +900,7 @@ void ICUService::reset() { { - Mutex mutex(lock()); + Mutex mutex(&lock); reInitializeFactories(); clearCaches(); } diff --git a/source/common/servls.cpp b/source/common/servls.cpp index 90874d1..81dc4f7 100644 --- a/source/common/servls.cpp +++ b/source/common/servls.cpp @@ -263,7 +263,7 @@ ICULocaleService::validateFallbackLocale() const { const Locale& loc = Locale::getDefault(); ICULocaleService* ncThis = (ICULocaleService*)this; - static UMutex llock = U_MUTEX_INITIALIZER; + static UMutex llock; { Mutex mutex(&llock); if (loc != fallbackLocale) { diff --git a/source/common/servnotf.cpp b/source/common/servnotf.cpp index 1e65a14..f577795 100644 --- a/source/common/servnotf.cpp +++ b/source/common/servnotf.cpp @@ -21,10 +21,7 @@ U_NAMESPACE_BEGIN EventListener::~EventListener() {} UOBJECT_DEFINE_RTTI_IMPLEMENTATION(EventListener) -static UMutex *notifyLock() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static UMutex notifyLock; ICUNotifier::ICUNotifier(void) : listeners(NULL) @@ -33,7 +30,7 @@ ICUNotifier::ICUNotifier(void) ICUNotifier::~ICUNotifier(void) { { - Mutex lmx(notifyLock()); + Mutex lmx(¬ifyLock); delete listeners; listeners = NULL; } @@ -50,7 +47,7 @@ ICUNotifier::addListener(const EventListener* l, UErrorCode& status) } if (acceptsListener(*l)) { - Mutex lmx(notifyLock()); + Mutex lmx(¬ifyLock); if (listeners == NULL) { listeners = new UVector(5, status); } else { @@ -83,7 +80,7 @@ ICUNotifier::removeListener(const EventListener *l, UErrorCode& status) } { - Mutex lmx(notifyLock()); + Mutex lmx(¬ifyLock); if (listeners != NULL) { // identity equality check for (int i = 0, e = listeners->size(); i < e; ++i) { @@ -106,7 +103,7 @@ void ICUNotifier::notifyChanged(void) { if (listeners != NULL) { - Mutex lmx(notifyLock()); + Mutex lmx(¬ifyLock); if (listeners != NULL) { for (int i = 0, e = listeners->size(); i < e; ++i) { EventListener* el = (EventListener*)listeners->elementAt(i); diff --git a/source/common/uarrsort.cpp b/source/common/uarrsort.cpp index 03c4d4e..6090582 100644 --- a/source/common/uarrsort.cpp +++ b/source/common/uarrsort.cpp @@ -34,6 +34,10 @@ enum { STACK_ITEM_SIZE=200 }; +static constexpr int32_t sizeInMaxAlignTs(int32_t sizeInBytes) { + return (sizeInBytes + sizeof(max_align_t) - 1) / sizeof(max_align_t); +} + /* UComparator convenience implementations ---------------------------------- */ U_CAPI int32_t U_EXPORT2 @@ -134,25 +138,15 @@ doInsertionSort(char *array, int32_t length, int32_t itemSize, static void insertionSort(char *array, int32_t length, int32_t itemSize, UComparator *cmp, const void *context, UErrorCode *pErrorCode) { - UAlignedMemory v[STACK_ITEM_SIZE/sizeof(UAlignedMemory)+1]; - void *pv; - /* allocate an intermediate item variable (v) */ - if(itemSize<=STACK_ITEM_SIZE) { - pv=v; - } else { - pv=uprv_malloc(itemSize); - if(pv==NULL) { - *pErrorCode=U_MEMORY_ALLOCATION_ERROR; - return; - } + icu::MaybeStackArray v; + if (sizeInMaxAlignTs(itemSize) > v.getCapacity() && + v.resize(sizeInMaxAlignTs(itemSize)) == nullptr) { + *pErrorCode = U_MEMORY_ALLOCATION_ERROR; + return; } - doInsertionSort(array, length, itemSize, cmp, context, pv); - - if(pv!=v) { - uprv_free(pv); - } + doInsertionSort(array, length, itemSize, cmp, context, v.getAlias()); } /* QuickSort ---------------------------------------------------------------- */ @@ -238,26 +232,16 @@ subQuickSort(char *array, int32_t start, int32_t limit, int32_t itemSize, static void quickSort(char *array, int32_t length, int32_t itemSize, UComparator *cmp, const void *context, UErrorCode *pErrorCode) { - UAlignedMemory xw[(2*STACK_ITEM_SIZE)/sizeof(UAlignedMemory)+1]; - void *p; - /* allocate two intermediate item variables (x and w) */ - if(itemSize<=STACK_ITEM_SIZE) { - p=xw; - } else { - p=uprv_malloc(2*itemSize); - if(p==NULL) { - *pErrorCode=U_MEMORY_ALLOCATION_ERROR; - return; - } + icu::MaybeStackArray xw; + if(sizeInMaxAlignTs(itemSize)*2 > xw.getCapacity() && + xw.resize(sizeInMaxAlignTs(itemSize) * 2) == nullptr) { + *pErrorCode=U_MEMORY_ALLOCATION_ERROR; + return; } - subQuickSort(array, 0, length, itemSize, - cmp, context, p, (char *)p+itemSize); - - if(p!=xw) { - uprv_free(p); - } + subQuickSort(array, 0, length, itemSize, cmp, context, + xw.getAlias(), xw.getAlias() + sizeInMaxAlignTs(itemSize)); } /* uprv_sortArray() API ----------------------------------------------------- */ diff --git a/source/common/ubidiimp.h b/source/common/ubidiimp.h index a5d0727..9746b2b 100644 --- a/source/common/ubidiimp.h +++ b/source/common/ubidiimp.h @@ -198,8 +198,8 @@ typedef struct Run { /* in a Run, logicalStart will get this bit set if the run level is odd */ #define INDEX_ODD_BIT (1UL<<31) -#define MAKE_INDEX_ODD_PAIR(index, level) ((index)|((int32_t)(level)<<31)) -#define ADD_ODD_BIT_FROM_LEVEL(x, level) ((x)|=((int32_t)(level)<<31)) +#define MAKE_INDEX_ODD_PAIR(index, level) ((index)|((int32_t)((level)&1)<<31)) +#define ADD_ODD_BIT_FROM_LEVEL(x, level) ((x)|=((int32_t)((level)&1)<<31)) #define REMOVE_ODD_BIT(x) ((x)&=~INDEX_ODD_BIT) #define GET_INDEX(x) ((x)&~INDEX_ODD_BIT) @@ -387,41 +387,49 @@ typedef union { } BidiMemoryForAllocation; /* Macros for initial checks at function entry */ -#define RETURN_IF_NULL_OR_FAILING_ERRCODE(pErrcode, retvalue) \ - if((pErrcode)==NULL || U_FAILURE(*pErrcode)) return retvalue -#define RETURN_IF_NOT_VALID_PARA(bidi, errcode, retvalue) \ - if(!IS_VALID_PARA(bidi)) { \ - errcode=U_INVALID_STATE_ERROR; \ - return retvalue; \ - } -#define RETURN_IF_NOT_VALID_PARA_OR_LINE(bidi, errcode, retvalue) \ - if(!IS_VALID_PARA_OR_LINE(bidi)) { \ - errcode=U_INVALID_STATE_ERROR; \ - return retvalue; \ - } -#define RETURN_IF_BAD_RANGE(arg, start, limit, errcode, retvalue) \ - if((arg)<(start) || (arg)>=(limit)) { \ - (errcode)=U_ILLEGAL_ARGUMENT_ERROR; \ - return retvalue; \ - } - -#define RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrcode) \ - if((pErrcode)==NULL || U_FAILURE(*pErrcode)) return -#define RETURN_VOID_IF_NOT_VALID_PARA(bidi, errcode) \ - if(!IS_VALID_PARA(bidi)) { \ - errcode=U_INVALID_STATE_ERROR; \ - return; \ - } -#define RETURN_VOID_IF_NOT_VALID_PARA_OR_LINE(bidi, errcode) \ - if(!IS_VALID_PARA_OR_LINE(bidi)) { \ - errcode=U_INVALID_STATE_ERROR; \ - return; \ - } -#define RETURN_VOID_IF_BAD_RANGE(arg, start, limit, errcode) \ - if((arg)<(start) || (arg)>=(limit)) { \ - (errcode)=U_ILLEGAL_ARGUMENT_ERROR; \ - return; \ - } +#define RETURN_IF_NULL_OR_FAILING_ERRCODE(pErrcode, retvalue) UPRV_BLOCK_MACRO_BEGIN { \ + if((pErrcode)==NULL || U_FAILURE(*pErrcode)) return retvalue; \ +} UPRV_BLOCK_MACRO_END +#define RETURN_IF_NOT_VALID_PARA(bidi, errcode, retvalue) UPRV_BLOCK_MACRO_BEGIN { \ + if(!IS_VALID_PARA(bidi)) { \ + errcode=U_INVALID_STATE_ERROR; \ + return retvalue; \ + } \ +} UPRV_BLOCK_MACRO_END +#define RETURN_IF_NOT_VALID_PARA_OR_LINE(bidi, errcode, retvalue) UPRV_BLOCK_MACRO_BEGIN { \ + if(!IS_VALID_PARA_OR_LINE(bidi)) { \ + errcode=U_INVALID_STATE_ERROR; \ + return retvalue; \ + } \ +} UPRV_BLOCK_MACRO_END +#define RETURN_IF_BAD_RANGE(arg, start, limit, errcode, retvalue) UPRV_BLOCK_MACRO_BEGIN { \ + if((arg)<(start) || (arg)>=(limit)) { \ + (errcode)=U_ILLEGAL_ARGUMENT_ERROR; \ + return retvalue; \ + } \ +} UPRV_BLOCK_MACRO_END + +#define RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrcode) UPRV_BLOCK_MACRO_BEGIN { \ + if((pErrcode)==NULL || U_FAILURE(*pErrcode)) return; \ +} UPRV_BLOCK_MACRO_END +#define RETURN_VOID_IF_NOT_VALID_PARA(bidi, errcode) UPRV_BLOCK_MACRO_BEGIN { \ + if(!IS_VALID_PARA(bidi)) { \ + errcode=U_INVALID_STATE_ERROR; \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END +#define RETURN_VOID_IF_NOT_VALID_PARA_OR_LINE(bidi, errcode) UPRV_BLOCK_MACRO_BEGIN { \ + if(!IS_VALID_PARA_OR_LINE(bidi)) { \ + errcode=U_INVALID_STATE_ERROR; \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END +#define RETURN_VOID_IF_BAD_RANGE(arg, start, limit, errcode) UPRV_BLOCK_MACRO_BEGIN { \ + if((arg)<(start) || (arg)>=(limit)) { \ + (errcode)=U_ILLEGAL_ARGUMENT_ERROR; \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END /* helper function to (re)allocate memory if allowed */ U_CFUNC UBool diff --git a/source/common/ubiditransform.cpp b/source/common/ubiditransform.cpp index e6d1d9c..5b0d5cf 100644 --- a/source/common/ubiditransform.cpp +++ b/source/common/ubiditransform.cpp @@ -31,11 +31,11 @@ #define SHAPE_LOGICAL U_SHAPE_TEXT_DIRECTION_LOGICAL #define SHAPE_VISUAL U_SHAPE_TEXT_DIRECTION_VISUAL_LTR -#define CHECK_LEN(STR, LEN, ERROR) { \ - if (LEN == 0) return 0; \ - if (LEN < -1) { *(ERROR) = U_ILLEGAL_ARGUMENT_ERROR; return 0; } \ - if (LEN == -1) LEN = u_strlen(STR); \ - } +#define CHECK_LEN(STR, LEN, ERROR) UPRV_BLOCK_MACRO_BEGIN { \ + if (LEN == 0) return 0; \ + if (LEN < -1) { *(ERROR) = U_ILLEGAL_ARGUMENT_ERROR; return 0; } \ + if (LEN == -1) LEN = u_strlen(STR); \ +} UPRV_BLOCK_MACRO_END #define MAX_ACTIONS 7 diff --git a/source/common/ucase.cpp b/source/common/ucase.cpp index 8414c52..4ec25a2 100644 --- a/source/common/ucase.cpp +++ b/source/common/ucase.cpp @@ -116,7 +116,7 @@ static const uint8_t flagsOffset[256]={ * moved to the last uint16_t of the value, use +1 for beginning of next slot * @param value (out) int32_t or uint32_t output if hasSlot, otherwise not modified */ -#define GET_SLOT_VALUE(excWord, idx, pExc16, value) \ +#define GET_SLOT_VALUE(excWord, idx, pExc16, value) UPRV_BLOCK_MACRO_BEGIN { \ if(((excWord)&UCASE_EXC_DOUBLE_SLOTS)==0) { \ (pExc16)+=SLOT_OFFSET(excWord, idx); \ (value)=*pExc16; \ @@ -124,7 +124,8 @@ static const uint8_t flagsOffset[256]={ (pExc16)+=2*SLOT_OFFSET(excWord, idx); \ (value)=*pExc16++; \ (value)=((value)<<16)|*pExc16; \ - } + } \ +} UPRV_BLOCK_MACRO_END /* simple case mappings ----------------------------------------------------- */ diff --git a/source/common/uchar.cpp b/source/common/uchar.cpp index ca9c31f..b54cd62 100644 --- a/source/common/uchar.cpp +++ b/source/common/uchar.cpp @@ -40,7 +40,7 @@ /* constants and macros for access to the data ------------------------------ */ /* getting a uint32_t properties word from the data */ -#define GET_PROPS(c, result) ((result)=UTRIE2_GET16(&propsTrie, c)); +#define GET_PROPS(c, result) ((result)=UTRIE2_GET16(&propsTrie, c)) /* API functions ------------------------------------------------------------ */ diff --git a/source/common/uchriter.cpp b/source/common/uchriter.cpp index 822168f..bedbabc 100644 --- a/source/common/uchriter.cpp +++ b/source/common/uchriter.cpp @@ -89,7 +89,7 @@ UCharCharacterIterator::hashCode() const { return ustr_hashUCharsN(text, textLength) ^ pos ^ begin ^ end; } -CharacterIterator* +UCharCharacterIterator* UCharCharacterIterator::clone() const { return new UCharCharacterIterator(*this); } diff --git a/source/common/ucln_cmn.cpp b/source/common/ucln_cmn.cpp index bfbf53a..f3e07c6 100644 --- a/source/common/ucln_cmn.cpp +++ b/source/common/ucln_cmn.cpp @@ -65,9 +65,20 @@ U_CFUNC void ucln_common_registerCleanup(ECleanupCommonType type, cleanupFunc *func) { + // Thread safety messiness: From ticket 10295, calls to registerCleanup() may occur + // concurrently. Although such cases should be storing the same value, they raise errors + // from the thread sanity checker. Doing the store within a mutex avoids those. + // BUT that can trigger a recursive entry into std::call_once() in umutex.cpp when this code, + // running from the call_once function, tries to grab the ICU global mutex, which + // re-enters the mutex init path. So, work-around by special casing UCLN_COMMON_MUTEX, not + // using the ICU global mutex for it. + // + // No other point in ICU uses std::call_once(). + U_ASSERT(UCLN_COMMON_START < type && type < UCLN_COMMON_COUNT); - if (UCLN_COMMON_START < type && type < UCLN_COMMON_COUNT) - { + if (type == UCLN_COMMON_MUTEX) { + gCommonCleanupFunctions[type] = func; + } else if (UCLN_COMMON_START < type && type < UCLN_COMMON_COUNT) { icu::Mutex m; // See ticket 10295 for discussion. gCommonCleanupFunctions[type] = func; } diff --git a/source/common/ucln_cmn.h b/source/common/ucln_cmn.h index 0ca911b..b837fb9 100644 --- a/source/common/ucln_cmn.h +++ b/source/common/ucln_cmn.h @@ -22,8 +22,6 @@ /* These are the cleanup functions for various APIs. */ /* @return true if cleanup complete successfully.*/ -U_CFUNC UBool umtx_cleanup(void); - U_CFUNC UBool utrace_cleanup(void); U_CFUNC UBool ucln_lib_cleanup(void); @@ -41,6 +39,8 @@ typedef enum ECleanupCommonType { UCLN_COMMON_LOCALE_KEY_TYPE, UCLN_COMMON_LOCALE, UCLN_COMMON_LOCALE_AVAILABLE, + UCLN_COMMON_LIKELY_SUBTAGS, + UCLN_COMMON_LOCALE_DISTANCE, UCLN_COMMON_ULOC, UCLN_COMMON_CURRENCY, UCLN_COMMON_LOADED_NORMALIZER2, @@ -62,6 +62,7 @@ typedef enum ECleanupCommonType { */ UCLN_COMMON_UNIFIED_CACHE, UCLN_COMMON_URES, + UCLN_COMMON_MUTEX, // Mutexes should be the last to be cleaned up. UCLN_COMMON_COUNT /* This must be last */ } ECleanupCommonType; diff --git a/source/common/ucnv.cpp b/source/common/ucnv.cpp index 4e57619..856be70 100644 --- a/source/common/ucnv.cpp +++ b/source/common/ucnv.cpp @@ -25,6 +25,8 @@ #if !UCONFIG_NO_CONVERSION +#include + #include "unicode/ustring.h" #include "unicode/ucnv.h" #include "unicode/ucnv_err.h" @@ -158,7 +160,6 @@ ucnv_safeClone(const UConverter* cnv, void *stackBuffer, int32_t *pBufferSize, U UConverter *localConverter, *allocatedConverter; int32_t stackBufferSize; int32_t bufferSizeNeeded; - char *stackBufferChars = (char *)stackBuffer; UErrorCode cbErr; UConverterToUnicodeArgs toUArgs = { sizeof(UConverterToUnicodeArgs), @@ -224,23 +225,22 @@ ucnv_safeClone(const UConverter* cnv, void *stackBuffer, int32_t *pBufferSize, U } } - - /* Pointers on 64-bit platforms need to be aligned - * on a 64-bit boundary in memory. + /* Adjust (if necessary) the stackBuffer pointer to be aligned correctly for a UConverter. + * TODO(Jira ICU-20736) Redo this using std::align() once g++4.9 compatibility is no longer needed. */ - if (U_ALIGNMENT_OFFSET(stackBuffer) != 0) { - int32_t offsetUp = (int32_t)U_ALIGNMENT_OFFSET_UP(stackBufferChars); - if(stackBufferSize > offsetUp) { - stackBufferSize -= offsetUp; - stackBufferChars += offsetUp; + if (stackBuffer) { + uintptr_t p = reinterpret_cast(stackBuffer); + uintptr_t aligned_p = (p + alignof(UConverter) - 1) & ~(alignof(UConverter) - 1); + ptrdiff_t pointerAdjustment = aligned_p - p; + if (bufferSizeNeeded + pointerAdjustment <= stackBufferSize) { + stackBuffer = reinterpret_cast(aligned_p); + stackBufferSize -= pointerAdjustment; } else { /* prevent using the stack buffer but keep the size > 0 so that we do not just preflight */ stackBufferSize = 1; } } - stackBuffer = (void *)stackBufferChars; - /* Now, see if we must allocate any memory */ if (stackBufferSize < bufferSizeNeeded || stackBuffer == NULL) { @@ -475,7 +475,7 @@ ucnv_setSubstString(UConverter *cnv, const UChar *s, int32_t length, UErrorCode *err) { - UAlignedMemory cloneBuffer[U_CNV_SAFECLONE_BUFFERSIZE / sizeof(UAlignedMemory) + 1]; + alignas(UConverter) char cloneBuffer[U_CNV_SAFECLONE_BUFFERSIZE]; char chars[UCNV_ERROR_BUFFER_LENGTH]; UConverter *clone; diff --git a/source/common/ucnv2022.cpp b/source/common/ucnv2022.cpp index d1a50d2..dbc5bb7 100644 --- a/source/common/ucnv2022.cpp +++ b/source/common/ucnv2022.cpp @@ -3571,20 +3571,11 @@ _ISO_2022_WriteSub(UConverterFromUnicodeArgs *args, int32_t offsetIndex, UErrorC /* * Structure for cloning an ISO 2022 converter into a single memory block. - * ucnv_safeClone() of the converter will align the entire cloneStruct, - * and then ucnv_safeClone() of the sub-converter may additionally align - * currentConverter inside the cloneStruct, for which we need the deadSpace - * after currentConverter. - * This is because UAlignedMemory may be larger than the actually - * necessary alignment size for the platform. - * The other cloneStruct fields will not be moved around, - * and are aligned properly with cloneStruct's alignment. */ struct cloneStruct { UConverter cnv; UConverter currentConverter; - UAlignedMemory deadSpace; UConverterDataISO2022 mydata; }; @@ -3602,6 +3593,10 @@ _ISO_2022_SafeClone( UConverterDataISO2022 *cnvData; int32_t i, size; + if (U_FAILURE(*status)){ + return nullptr; + } + if (*pBufferSize == 0) { /* 'preflighting' request - set needed size into *pBufferSize */ *pBufferSize = (int32_t)sizeof(struct cloneStruct); return NULL; @@ -3619,7 +3614,7 @@ _ISO_2022_SafeClone( /* share the subconverters */ if(cnvData->currentConverter != NULL) { - size = (int32_t)(sizeof(UConverter) + sizeof(UAlignedMemory)); /* include size of padding */ + size = (int32_t)sizeof(UConverter); localClone->mydata.currentConverter = ucnv_safeClone(cnvData->currentConverter, &localClone->currentConverter, diff --git a/source/common/ucnv_bld.cpp b/source/common/ucnv_bld.cpp index b71be8f..56fc3d6 100644 --- a/source/common/ucnv_bld.cpp +++ b/source/common/ucnv_bld.cpp @@ -194,10 +194,7 @@ static struct { /*initializes some global variables */ static UHashtable *SHARED_DATA_HASHTABLE = NULL; -static icu::UMutex *cnvCacheMutex() { /* Mutex for synchronizing cnv cache access. */ - static icu::UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static icu::UMutex cnvCacheMutex; /* Note: the global mutex is used for */ /* reference count updates. */ @@ -602,9 +599,9 @@ U_CFUNC void ucnv_unloadSharedDataIfReady(UConverterSharedData *sharedData) { if(sharedData != NULL && sharedData->isReferenceCounted) { - umtx_lock(cnvCacheMutex()); + umtx_lock(&cnvCacheMutex); ucnv_unload(sharedData); - umtx_unlock(cnvCacheMutex()); + umtx_unlock(&cnvCacheMutex); } } @@ -612,9 +609,9 @@ U_CFUNC void ucnv_incrementRefCount(UConverterSharedData *sharedData) { if(sharedData != NULL && sharedData->isReferenceCounted) { - umtx_lock(cnvCacheMutex()); + umtx_lock(&cnvCacheMutex); sharedData->referenceCounter++; - umtx_unlock(cnvCacheMutex()); + umtx_unlock(&cnvCacheMutex); } } @@ -815,9 +812,9 @@ ucnv_loadSharedData(const char *converterName, pArgs->nestedLoads=1; pArgs->pkg=NULL; - umtx_lock(cnvCacheMutex()); + umtx_lock(&cnvCacheMutex); mySharedConverterData = ucnv_load(pArgs, err); - umtx_unlock(cnvCacheMutex()); + umtx_unlock(&cnvCacheMutex); if (U_FAILURE (*err) || (mySharedConverterData == NULL)) { return NULL; @@ -1064,7 +1061,7 @@ ucnv_flushCache () * because the sequence of looking up in the cache + incrementing * is protected by cnvCacheMutex. */ - umtx_lock(cnvCacheMutex()); + umtx_lock(&cnvCacheMutex); /* * double loop: A delta/extension-only converter has a pointer to its base table's * shared data; the first iteration of the outer loop may see the delta converter @@ -1093,7 +1090,7 @@ ucnv_flushCache () } } } while(++i == 1 && remaining > 0); - umtx_unlock(cnvCacheMutex()); + umtx_unlock(&cnvCacheMutex); UTRACE_DATA1(UTRACE_INFO, "ucnv_flushCache() exits with %d converters remaining", remaining); @@ -1199,7 +1196,7 @@ internalSetName(const char *name, UErrorCode *status) { } algorithmicSharedData = getAlgorithmicTypeFromName(stackArgs.name); - umtx_lock(cnvCacheMutex()); + umtx_lock(&cnvCacheMutex); gDefaultAlgorithmicSharedData = algorithmicSharedData; gDefaultConverterContainsOption = containsOption; @@ -1215,7 +1212,7 @@ internalSetName(const char *name, UErrorCode *status) { ucnv_enableCleanup(); - umtx_unlock(cnvCacheMutex()); + umtx_unlock(&cnvCacheMutex); } #endif @@ -1240,7 +1237,7 @@ ucnv_getDefaultName() { but ucnv_setDefaultName is not thread safe. */ { - icu::Mutex lock(cnvCacheMutex()); + icu::Mutex lock(&cnvCacheMutex); name = gDefaultConverterName; } if(name==NULL) { diff --git a/source/common/ucnv_lmb.cpp b/source/common/ucnv_lmb.cpp index 1ec56f7..1683928 100644 --- a/source/common/ucnv_lmb.cpp +++ b/source/common/ucnv_lmb.cpp @@ -1107,11 +1107,13 @@ GetUniFromLMBCSUni(char const ** ppLMBCSin) /* Called with LMBCS-style Unicode all input as required by ICU converter semantics. */ -#define CHECK_SOURCE_LIMIT(index) \ - if (args->source+index > args->sourceLimit){\ - *err = U_TRUNCATED_CHAR_FOUND;\ - args->source = args->sourceLimit;\ - return 0xffff;} +#define CHECK_SOURCE_LIMIT(index) UPRV_BLOCK_MACRO_BEGIN { \ + if (args->source+index > args->sourceLimit) { \ + *err = U_TRUNCATED_CHAR_FOUND; \ + args->source = args->sourceLimit; \ + return 0xffff; \ + } \ +} UPRV_BLOCK_MACRO_END /* Return the Unicode representation for the current LMBCS character */ diff --git a/source/common/ucnvbocu.cpp b/source/common/ucnvbocu.cpp index 5b66c50..7c2aab5 100644 --- a/source/common/ucnvbocu.cpp +++ b/source/common/ucnvbocu.cpp @@ -202,14 +202,14 @@ bocu1TrailToByte[BOCU1_TRAIL_CONTROLS_COUNT]={ * @param d Divisor. * @param m Output variable for the rest (modulo result). */ -#define NEGDIVMOD(n, d, m) { \ +#define NEGDIVMOD(n, d, m) UPRV_BLOCK_MACRO_BEGIN { \ (m)=(n)%(d); \ (n)/=(d); \ if((m)<0) { \ --(n); \ (m)+=(d); \ } \ -} +} UPRV_BLOCK_MACRO_END /* Faster versions of packDiff() for single-byte-encoded diff values. */ diff --git a/source/common/ucnvhz.cpp b/source/common/ucnvhz.cpp index e9f5206..6b2f5fa 100644 --- a/source/common/ucnvhz.cpp +++ b/source/common/ucnvhz.cpp @@ -38,7 +38,7 @@ #define ESC_LEN 2 -#define CONCAT_ESCAPE_MACRO( args, targetIndex,targetLength,strToAppend, err, len,sourceIndex){ \ +#define CONCAT_ESCAPE_MACRO(args, targetIndex,targetLength,strToAppend, err, len,sourceIndex) UPRV_BLOCK_MACRO_BEGIN { \ while(len-->0){ \ if(targetIndex < targetLength){ \ args->target[targetIndex] = (unsigned char) *strToAppend; \ @@ -53,7 +53,7 @@ } \ strToAppend++; \ } \ -} +} UPRV_BLOCK_MACRO_END typedef struct{ @@ -518,19 +518,11 @@ _HZ_WriteSub(UConverterFromUnicodeArgs *args, int32_t offsetIndex, UErrorCode *e /* * Structure for cloning an HZ converter into a single memory block. - * ucnv_safeClone() of the HZ converter will align the entire cloneHZStruct, - * and then ucnv_safeClone() of the sub-converter may additionally align - * subCnv inside the cloneHZStruct, for which we need the deadSpace after - * subCnv. This is because UAlignedMemory may be larger than the actually - * necessary alignment size for the platform. - * The other cloneHZStruct fields will not be moved around, - * and are aligned properly with cloneHZStruct's alignment. */ struct cloneHZStruct { UConverter cnv; UConverter subCnv; - UAlignedMemory deadSpace; UConverterDataHZ mydata; }; @@ -545,12 +537,12 @@ _HZ_SafeClone(const UConverter *cnv, int32_t size, bufferSizeNeeded = sizeof(struct cloneHZStruct); if (U_FAILURE(*status)){ - return 0; + return nullptr; } if (*pBufferSize == 0){ /* 'preflighting' request - set needed size into *pBufferSize */ *pBufferSize = bufferSizeNeeded; - return 0; + return nullptr; } localClone = (struct cloneHZStruct *)stackBuffer; @@ -561,7 +553,7 @@ _HZ_SafeClone(const UConverter *cnv, localClone->cnv.isExtraLocal = TRUE; /* deep-clone the sub-converter */ - size = (int32_t)(sizeof(UConverter) + sizeof(UAlignedMemory)); /* include size of padding */ + size = (int32_t)sizeof(UConverter); ((UConverterDataHZ*)localClone->cnv.extraInfo)->gbConverter = ucnv_safeClone(((UConverterDataHZ*)cnv->extraInfo)->gbConverter, &localClone->subCnv, &size, status); diff --git a/source/common/ucnvisci.cpp b/source/common/ucnvisci.cpp index 27a3a31..44a7c05 100644 --- a/source/common/ucnvisci.cpp +++ b/source/common/ucnvisci.cpp @@ -831,7 +831,7 @@ static const uint16_t nuktaSpecialCases[][2]={ }; -#define WRITE_TO_TARGET_FROM_U(args,offsets,source,target,targetLimit,targetByteUnit,err){ \ +#define WRITE_TO_TARGET_FROM_U(args,offsets,source,target,targetLimit,targetByteUnit,err) UPRV_BLOCK_MACRO_BEGIN { \ int32_t offset = (int32_t)(source - args->source-1); \ /* write the targetUniChar to target */ \ if(target < targetLimit){ \ @@ -884,7 +884,7 @@ static const uint16_t nuktaSpecialCases[][2]={ (uint8_t) (targetByteUnit); \ *err = U_BUFFER_OVERFLOW_ERROR; \ } \ -} +} UPRV_BLOCK_MACRO_END /* Rules: * Explicit Halant : @@ -1119,7 +1119,7 @@ static const uint16_t lookupTable[][2]={ { GURMUKHI, PNJ_MASK } }; -#define WRITE_TO_TARGET_TO_U(args,source,target,offsets,offset,targetUniChar,delta, err){\ +#define WRITE_TO_TARGET_TO_U(args,source,target,offsets,offset,targetUniChar,delta, err) UPRV_BLOCK_MACRO_BEGIN { \ /* add offset to current Indic Block */ \ if(targetUniChar>ASCII_END && \ targetUniChar != ZWJ && \ @@ -1140,9 +1140,9 @@ static const uint16_t lookupTable[][2]={ (UChar)targetUniChar; \ *err = U_BUFFER_OVERFLOW_ERROR; \ } \ -} +} UPRV_BLOCK_MACRO_END -#define GET_MAPPING(sourceChar,targetUniChar,data){ \ +#define GET_MAPPING(sourceChar,targetUniChar,data) UPRV_BLOCK_MACRO_BEGIN { \ targetUniChar = toUnicodeTable[(sourceChar)] ; \ /* is the code point valid in current script? */ \ if(sourceChar> ASCII_END && \ @@ -1153,7 +1153,7 @@ static const uint16_t lookupTable[][2]={ targetUniChar=missingCharMarker; \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /*********** * Rules for ISCII to Unicode converter diff --git a/source/common/ucnvsel.cpp b/source/common/ucnvsel.cpp index 79be8c3..2dff5ac 100644 --- a/source/common/ucnvsel.cpp +++ b/source/common/ucnvsel.cpp @@ -691,36 +691,36 @@ static int16_t countOnes(uint32_t* mask, int32_t len) { /* internal function! */ static UEnumeration *selectForMask(const UConverterSelector* sel, - uint32_t *mask, UErrorCode *status) { + uint32_t *theMask, UErrorCode *status) { + LocalMemory mask(theMask); // this is the context we will use. Store a table of indices to which // encodings are legit. - struct Enumerator* result = (Enumerator*)uprv_malloc(sizeof(Enumerator)); - if (result == NULL) { - uprv_free(mask); + LocalMemory result(static_cast(uprv_malloc(sizeof(Enumerator)))); + if (result.isNull()) { *status = U_MEMORY_ALLOCATION_ERROR; - return NULL; + return nullptr; } - result->index = NULL; // this will be allocated later! + result->index = nullptr; // this will be allocated later! result->length = result->cur = 0; result->sel = sel; - UEnumeration *en = (UEnumeration *)uprv_malloc(sizeof(UEnumeration)); - if (en == NULL) { + LocalMemory en(static_cast(uprv_malloc(sizeof(UEnumeration)))); + if (en.isNull()) { // TODO(markus): Combine Enumerator and UEnumeration into one struct. - uprv_free(mask); - uprv_free(result); *status = U_MEMORY_ALLOCATION_ERROR; - return NULL; + return nullptr; } - memcpy(en, &defaultEncodings, sizeof(UEnumeration)); - en->context = result; - + memcpy(en.getAlias(), &defaultEncodings, sizeof(UEnumeration)); + int32_t columns = (sel->encodingsCount+31)/32; - int16_t numOnes = countOnes(mask, columns); + int16_t numOnes = countOnes(mask.getAlias(), columns); // now, we know the exact space we need for index if (numOnes > 0) { - result->index = (int16_t*) uprv_malloc(numOnes * sizeof(int16_t)); - + result->index = static_cast(uprv_malloc(numOnes * sizeof(int16_t))); + if (result->index == nullptr) { + *status = U_MEMORY_ALLOCATION_ERROR; + return nullptr; + } int32_t i, j; int16_t k = 0; for (j = 0 ; j < columns; j++) { @@ -734,8 +734,8 @@ static UEnumeration *selectForMask(const UConverterSelector* sel, } } //otherwise, index will remain NULL (and will never be touched by //the enumerator code anyway) - uprv_free(mask); - return en; + en->context = result.orphan(); + return en.orphan(); } /* check a string against the selector - UTF16 version */ diff --git a/source/common/ucptrie.cpp b/source/common/ucptrie.cpp index b72e318..0004160 100644 --- a/source/common/ucptrie.cpp +++ b/source/common/ucptrie.cpp @@ -280,7 +280,7 @@ UChar32 getRange(const void *t, UChar32 start, int32_t prevI3Block = -1; int32_t prevBlock = -1; UChar32 c = start; - uint32_t trieValue, value; + uint32_t trieValue, value = nullValue; bool haveValue = false; do { int32_t i3Block; diff --git a/source/common/ucurr.cpp b/source/common/ucurr.cpp index 444adc0..dfee3bd 100644 --- a/source/common/ucurr.cpp +++ b/source/common/ucurr.cpp @@ -365,10 +365,7 @@ U_CDECL_END #if !UCONFIG_NO_SERVICE struct CReg; -static UMutex *gCRegLock() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static UMutex gCRegLock; static CReg* gCRegHead = 0; struct CReg : public icu::UMemory { @@ -394,14 +391,14 @@ struct CReg : public icu::UMemory { if (status && U_SUCCESS(*status) && _iso && _id) { CReg* n = new CReg(_iso, _id); if (n) { - umtx_lock(gCRegLock()); + umtx_lock(&gCRegLock); if (!gCRegHead) { /* register for the first time */ ucln_common_registerCleanup(UCLN_COMMON_CURRENCY, currency_cleanup); } n->next = gCRegHead; gCRegHead = n; - umtx_unlock(gCRegLock()); + umtx_unlock(&gCRegLock); return n; } *status = U_MEMORY_ALLOCATION_ERROR; @@ -411,7 +408,7 @@ struct CReg : public icu::UMemory { static UBool unreg(UCurrRegistryKey key) { UBool found = FALSE; - umtx_lock(gCRegLock()); + umtx_lock(&gCRegLock); CReg** p = &gCRegHead; while (*p) { @@ -424,13 +421,13 @@ struct CReg : public icu::UMemory { p = &((*p)->next); } - umtx_unlock(gCRegLock()); + umtx_unlock(&gCRegLock); return found; } static const UChar* get(const char* id) { const UChar* result = NULL; - umtx_lock(gCRegLock()); + umtx_lock(&gCRegLock); CReg* p = gCRegHead; /* register cleanup of the mutex */ @@ -442,7 +439,7 @@ struct CReg : public icu::UMemory { } p = p->next; } - umtx_unlock(gCRegLock()); + umtx_unlock(&gCRegLock); return result; } @@ -716,7 +713,9 @@ ucurr_getName(const UChar* currency, // We no longer support choice format data in names. Data should not contain // choice patterns. - *isChoiceFormat = FALSE; + if (isChoiceFormat != NULL) { + *isChoiceFormat = FALSE; + } if (U_SUCCESS(ec2)) { U_ASSERT(s != NULL); return s; @@ -1356,10 +1355,7 @@ static CurrencyNameCacheEntry* currCache[CURRENCY_NAME_CACHE_NUM] = {NULL}; // It is a simple round-robin replacement strategy. static int8_t currentCacheEntryIndex = 0; -static UMutex *gCurrencyCacheMutex() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static UMutex gCurrencyCacheMutex; // Cache deletion static void @@ -1408,7 +1404,7 @@ getCacheEntry(const char* locale, UErrorCode& ec) { CurrencyNameStruct* currencySymbols = NULL; CurrencyNameCacheEntry* cacheEntry = NULL; - umtx_lock(gCurrencyCacheMutex()); + umtx_lock(&gCurrencyCacheMutex); // in order to handle racing correctly, // not putting 'search' in a separate function. int8_t found = -1; @@ -1423,13 +1419,13 @@ getCacheEntry(const char* locale, UErrorCode& ec) { cacheEntry = currCache[found]; ++(cacheEntry->refCount); } - umtx_unlock(gCurrencyCacheMutex()); + umtx_unlock(&gCurrencyCacheMutex); if (found == -1) { collectCurrencyNames(locale, ¤cyNames, &total_currency_name_count, ¤cySymbols, &total_currency_symbol_count, ec); if (U_FAILURE(ec)) { return NULL; } - umtx_lock(gCurrencyCacheMutex()); + umtx_lock(&gCurrencyCacheMutex); // check again. for (int8_t i = 0; i < CURRENCY_NAME_CACHE_NUM; ++i) { if (currCache[i]!= NULL && @@ -1468,19 +1464,19 @@ getCacheEntry(const char* locale, UErrorCode& ec) { cacheEntry = currCache[found]; ++(cacheEntry->refCount); } - umtx_unlock(gCurrencyCacheMutex()); + umtx_unlock(&gCurrencyCacheMutex); } return cacheEntry; } static void releaseCacheEntry(CurrencyNameCacheEntry* cacheEntry) { - umtx_lock(gCurrencyCacheMutex()); + umtx_lock(&gCurrencyCacheMutex); --(cacheEntry->refCount); if (cacheEntry->refCount == 0) { // remove deleteCacheEntry(cacheEntry); } - umtx_unlock(gCurrencyCacheMutex()); + umtx_unlock(&gCurrencyCacheMutex); } U_CAPI void @@ -1601,10 +1597,9 @@ uprv_getStaticCurrencyName(const UChar* iso, const char* loc, { U_NAMESPACE_USE - UBool isChoiceFormat; int32_t len; const UChar* currname = ucurr_getName(iso, loc, UCURR_SYMBOL_NAME, - &isChoiceFormat, &len, &ec); + nullptr /* isChoiceFormat */, &len, &ec); if (U_SUCCESS(ec)) { result.setTo(currname, len); } diff --git a/source/common/udata.cpp b/source/common/udata.cpp index efcd2a2..ec9c999 100644 --- a/source/common/udata.cpp +++ b/source/common/udata.cpp @@ -33,6 +33,7 @@ might have to #include some other header #include "cstring.h" #include "mutex.h" #include "putilimp.h" +#include "restrace.h" #include "uassert.h" #include "ucln_cmn.h" #include "ucmndata.h" @@ -110,11 +111,12 @@ static u_atomic_int32_t gHaveTriedToLoadCommonData = ATOMIC_INT32_T_INITIALIZER( static UHashtable *gCommonDataCache = NULL; /* Global hash table of opened ICU data files. */ static icu::UInitOnce gCommonDataCacheInitOnce = U_INITONCE_INITIALIZER; -#if U_PLATFORM_HAS_WINUWP_API == 0 +#if !defined(ICU_DATA_DIR_WINDOWS) static UDataFileAccess gDataFileAccess = UDATA_DEFAULT_ACCESS; // Access not synchronized. // Modifying is documented as thread-unsafe. #else -static UDataFileAccess gDataFileAccess = UDATA_NO_FILES; // Windows UWP looks in one spot explicitly +// If we are using the Windows data directory, then look in one spot only. +static UDataFileAccess gDataFileAccess = UDATA_NO_FILES; #endif static UBool U_CALLCONV @@ -206,7 +208,7 @@ setCommonICUData(UDataMemory *pData, /* The new common data. Belongs to ca return didUpdate; } -#if U_PLATFORM_HAS_WINUWP_API == 0 +#if !defined(ICU_DATA_DIR_WINDOWS) static UBool setCommonICUDataPointer(const void *pData, UBool /*warn*/, UErrorCode *pErrorCode) { @@ -320,7 +322,7 @@ static UDataMemory *udata_findCachedData(const char *path, UErrorCode &err) retVal = el->item; } #ifdef UDATA_DEBUG - fprintf(stderr, "Cache: [%s] -> %p\n", baseName, retVal); + fprintf(stderr, "Cache: [%s] -> %p\n", baseName, (void*) retVal); #endif return retVal; } @@ -383,7 +385,7 @@ static UDataMemory *udata_cacheDataItem(const char *path, UDataMemory *item, UEr #ifdef UDATA_DEBUG fprintf(stderr, "Cache: [%s] <<< %p : %s. vFunc=%p\n", newElement->name, - newElement->item, u_errorName(subErr), newElement->item->vFuncs); + (void*) newElement->item, u_errorName(subErr), (void*) newElement->item->vFuncs); #endif if (subErr == U_USING_DEFAULT_WARNING || U_FAILURE(subErr)) { @@ -477,7 +479,7 @@ UDataPathIterator::UDataPathIterator(const char *inPath, const char *pkg, nextPath = itemPath.data(); } #ifdef UDATA_DEBUG - fprintf(stderr, "SUFFIX=%s [%p]\n", inSuffix, inSuffix); + fprintf(stderr, "SUFFIX=%s [%p]\n", inSuffix, (void*) inSuffix); #endif /** Suffix **/ @@ -492,12 +494,11 @@ UDataPathIterator::UDataPathIterator(const char *inPath, const char *pkg, /* pathBuffer will hold the output path strings returned by this iterator */ #ifdef UDATA_DEBUG - fprintf(stderr, "%p: init %s -> [path=%s], [base=%s], [suff=%s], [itempath=%s], [nextpath=%s], [checklast4=%s]\n", - iter, + fprintf(stderr, "0: init %s -> [path=%s], [base=%s], [suff=%s], [itempath=%s], [nextpath=%s], [checklast4=%s]\n", item, path, basename, - suffix, + suffix.data(), itemPath.data(), nextPath, checkLastFour?"TRUE":"false"); @@ -553,7 +554,7 @@ const char *UDataPathIterator::next(UErrorCode *pErrorCode) fprintf(stderr, "rest of path (IDD) = %s\n", currentPath); fprintf(stderr, " "); { - uint32_t qqq; + int32_t qqq; for(qqq=0;qqqpHeader == &U_ICUDATA_ENTRY_POINT) { @@ -714,7 +717,8 @@ openCommonData(const char *path, /* Path from OpenChoice? */ setCommonICUDataPointer(uprv_getICUData_conversion(), FALSE, pErrorCode); } */ -#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time +#if !defined(ICU_DATA_DIR_WINDOWS) +// When using the Windows system data, we expect only a single data file. setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT, FALSE, pErrorCode); { Mutex lock; @@ -831,7 +835,7 @@ static UBool extendICUData(UErrorCode *pErr) * Use a specific mutex to avoid nested locks of the global mutex. */ #if MAP_IMPLEMENTATION==MAP_STDIO - static UMutex extendICUDataMutex = U_MUTEX_INITIALIZER; + static UMutex extendICUDataMutex; umtx_lock(&extendICUDataMutex); #endif if(!umtx_loadAcquire(gHaveTriedToLoadCommonData)) { @@ -1070,13 +1074,13 @@ static UDataMemory *doLoadFromCommonData(UBool isICUData, const char * /*pkgName /* look up the data piece in the common data */ pHeader=pCommonData->vFuncs->Lookup(pCommonData, tocEntryName, &length, subErrorCode); #ifdef UDATA_DEBUG - fprintf(stderr, "%s: pHeader=%p - %s\n", tocEntryName, pHeader, u_errorName(*subErrorCode)); + fprintf(stderr, "%s: pHeader=%p - %s\n", tocEntryName, (void*) pHeader, u_errorName(*subErrorCode)); #endif if(pHeader!=NULL) { pEntryData = checkDataItem(pHeader, isAcceptable, context, type, name, subErrorCode, pErrorCode); #ifdef UDATA_DEBUG - fprintf(stderr, "pEntryData=%p\n", pEntryData); + fprintf(stderr, "pEntryData=%p\n", (void*) pEntryData); #endif if (U_FAILURE(*pErrorCode)) { return NULL; @@ -1168,6 +1172,9 @@ doOpenChoice(const char *path, const char *type, const char *name, UBool isICUData = FALSE; + FileTracer::traceOpen(path, type, name); + + /* Is this path ICU data? */ if(path == NULL || !strcmp(path, U_ICUDATA_ALIAS) || /* "ICUDATA" */ @@ -1276,12 +1283,12 @@ doOpenChoice(const char *path, const char *type, const char *name, fprintf(stderr, " tocEntryPath = %s\n", tocEntryName.data()); #endif -#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time +#if !defined(ICU_DATA_DIR_WINDOWS) if(path == NULL) { path = COMMON_DATA_NAME; /* "icudt26e" */ } #else - // Windows UWP expects only a single data file. + // When using the Windows system data, we expects only a single data file. path = COMMON_DATA_NAME; /* "icudt26e" */ #endif diff --git a/source/common/uhash.cpp b/source/common/uhash.cpp index 79241a2..86311ce 100644 --- a/source/common/uhash.cpp +++ b/source/common/uhash.cpp @@ -119,13 +119,14 @@ static const float RESIZE_POLICY_RATIO_TABLE[6] = { /* This macro expects a UHashTok.pointer as its keypointer and valuepointer parameters */ -#define HASH_DELETE_KEY_VALUE(hash, keypointer, valuepointer) \ - if (hash->keyDeleter != NULL && keypointer != NULL) { \ - (*hash->keyDeleter)(keypointer); \ - } \ - if (hash->valueDeleter != NULL && valuepointer != NULL) { \ - (*hash->valueDeleter)(valuepointer); \ - } +#define HASH_DELETE_KEY_VALUE(hash, keypointer, valuepointer) UPRV_BLOCK_MACRO_BEGIN { \ + if (hash->keyDeleter != NULL && keypointer != NULL) { \ + (*hash->keyDeleter)(keypointer); \ + } \ + if (hash->valueDeleter != NULL && valuepointer != NULL) { \ + (*hash->valueDeleter)(valuepointer); \ + } \ +} UPRV_BLOCK_MACRO_END /* * Constants for hinting whether a key or value is an integer diff --git a/source/common/uidna.cpp b/source/common/uidna.cpp index 7cc97a9..ac2f9c3 100644 --- a/source/common/uidna.cpp +++ b/source/common/uidna.cpp @@ -57,18 +57,16 @@ toASCIILower(UChar ch){ inline static UBool startsWithPrefix(const UChar* src , int32_t srcLength){ - UBool startsWithPrefix = TRUE; - if(srcLength < ACE_PREFIX_LENGTH){ return FALSE; } for(int8_t i=0; i< ACE_PREFIX_LENGTH; i++){ if(toASCIILower(src[i]) != ACE_PREFIX[i]){ - startsWithPrefix = FALSE; + return FALSE; } } - return startsWithPrefix; + return TRUE; } @@ -441,6 +439,7 @@ _internal_toUnicode(const UChar* src, int32_t srcLength, for(int32_t j=0; j 0x7f){ srcIsASCII = FALSE; + break; }/*else if(isLDHChar(src[j])==FALSE){ // here we do not assemble surrogates // since we know that LDH code points diff --git a/source/common/uinvchar.cpp b/source/common/uinvchar.cpp index 8ce2350..05bcf10 100644 --- a/source/common/uinvchar.cpp +++ b/source/common/uinvchar.cpp @@ -207,7 +207,8 @@ u_UCharsToChars(const UChar *us, char *cs, int32_t length) { while(length>0) { u=*us++; if(!UCHAR_IS_INVARIANT(u)) { - UPRV_UNREACHABLE; /* Variant characters were used. These are not portable in ICU. */ + U_ASSERT(FALSE); /* Variant characters were used. These are not portable in ICU. */ + u=0; } *cs++=(char)UCHAR_TO_CHAR(u); --length; @@ -445,6 +446,13 @@ uprv_copyEbcdic(const UDataSwapper *ds, return length; } +U_CFUNC UBool +uprv_isEbcdicAtSign(char c) { + static const uint8_t ebcdicAtSigns[] = { + 0x7C, 0x44, 0x66, 0x80, 0xAC, 0xAE, 0xAF, 0xB5, 0xEC, 0xEF, 0x00 }; + return c != 0 && uprv_strchr((const char *)ebcdicAtSigns, c) != nullptr; +} + /* compare invariant strings; variant characters compare less than others and unlike each other */ U_CFUNC int32_t uprv_compareInvAscii(const UDataSwapper *ds, @@ -562,6 +570,11 @@ uprv_compareInvEbcdicAsAscii(const char *s1, const char *s2) { } U_CAPI char U_EXPORT2 +uprv_ebcdicToAscii(char c) { + return (char)asciiFromEbcdic[(uint8_t)c]; +} + +U_CAPI char U_EXPORT2 uprv_ebcdicToLowercaseAscii(char c) { return (char)lowercaseAsciiFromEbcdic[(uint8_t)c]; } diff --git a/source/common/uinvchar.h b/source/common/uinvchar.h index 56dddfa..a43cfcd 100644 --- a/source/common/uinvchar.h +++ b/source/common/uinvchar.h @@ -68,6 +68,75 @@ uprv_isInvariantUString(const UChar *s, int32_t length); # error Unknown charset family! #endif +#ifdef __cplusplus + +U_NAMESPACE_BEGIN + +/** + * Like U_UPPER_ORDINAL(x) but with validation. + * Returns 0..25 for A..Z else a value outside 0..25. + */ +inline int32_t uprv_upperOrdinal(int32_t c) { +#if U_CHARSET_FAMILY==U_ASCII_FAMILY + return c - 'A'; +#elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY + // EBCDIC: A-Z (26 letters) is split into three ranges A-I (9 letters), J-R (9), S-Z (8). + // https://en.wikipedia.org/wiki/EBCDIC_037#Codepage_layout + if (c <= 'I') { return c - 'A'; } // A-I --> 0-8 + if (c < 'J') { return -1; } + if (c <= 'R') { return c - 'J' + 9; } // J-R --> 9..17 + if (c < 'S') { return -1; } + return c - 'S' + 18; // S-Z --> 18..25 +#else +# error Unknown charset family! +#endif +} + +// Like U_UPPER_ORDINAL(x) but for lowercase and with validation. +// Returns 0..25 for a..z else a value outside 0..25. +inline int32_t uprv_lowerOrdinal(int32_t c) { +#if U_CHARSET_FAMILY==U_ASCII_FAMILY + return c - 'a'; +#elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY + // EBCDIC: a-z (26 letters) is split into three ranges a-i (9 letters), j-r (9), s-z (8). + // https://en.wikipedia.org/wiki/EBCDIC_037#Codepage_layout + if (c <= 'i') { return c - 'a'; } // a-i --> 0-8 + if (c < 'j') { return -1; } + if (c <= 'r') { return c - 'j' + 9; } // j-r --> 9..17 + if (c < 's') { return -1; } + return c - 's' + 18; // s-z --> 18..25 +#else +# error Unknown charset family! +#endif +} + +U_NAMESPACE_END + +#endif + +/** + * Returns true if c == '@' is possible. + * The @ sign is variant, and the @ sign used on one + * EBCDIC machine won't be compiled the same way on other EBCDIC based machines. + * @internal + */ +U_CFUNC UBool +uprv_isEbcdicAtSign(char c); + +/** + * \def uprv_isAtSign + * Returns true if c == '@' is possible. + * For ASCII, checks for exactly '@'. For EBCDIC, calls uprv_isEbcdicAtSign(). + * @internal + */ +#if U_CHARSET_FAMILY==U_ASCII_FAMILY +# define uprv_isAtSign(c) ((c)=='@') +#elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY +# define uprv_isAtSign(c) uprv_isEbcdicAtSign(c) +#else +# error Unknown charset family! +#endif + /** * Compare two EBCDIC invariant-character strings in ASCII order. * @internal @@ -89,6 +158,26 @@ uprv_compareInvEbcdicAsAscii(const char *s1, const char *s2); #endif /** + * Converts an EBCDIC invariant character to ASCII. + * @internal + */ +U_INTERNAL char U_EXPORT2 +uprv_ebcdicToAscii(char c); + +/** + * \def uprv_invCharToAscii + * Converts an invariant character to ASCII. + * @internal + */ +#if U_CHARSET_FAMILY==U_ASCII_FAMILY +# define uprv_invCharToAscii(c) (c) +#elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY +# define uprv_invCharToAscii(c) uprv_ebcdicToAscii(c) +#else +# error Unknown charset family! +#endif + +/** * Converts an EBCDIC invariant character to lowercase ASCII. * @internal */ diff --git a/source/common/uloc.cpp b/source/common/uloc.cpp index 73b4320..6a9bfcf 100644 --- a/source/common/uloc.cpp +++ b/source/common/uloc.cpp @@ -148,7 +148,8 @@ static const char * const LANGUAGES[] = { "mad", "maf", "mag", "mai", "mak", "man", "mas", "mde", "mdf", "mdh", "mdr", "men", "mer", "mfe", "mg", "mga", "mgh", "mgo", "mh", "mi", "mic", "min", "mis", "mk", - "ml", "mn", "mnc", "mni", "moh", "mos", "mr", "mrj", + "ml", "mn", "mnc", "mni", "mo", + "moh", "mos", "mr", "mrj", "ms", "mt", "mua", "mul", "mus", "mwl", "mwr", "mwv", "my", "mye", "myv", "mzn", "na", "nan", "nap", "naq", "nb", "nd", "nds", "ne", @@ -264,7 +265,8 @@ static const char * const LANGUAGES_3[] = { "mad", "maf", "mag", "mai", "mak", "man", "mas", "mde", "mdf", "mdh", "mdr", "men", "mer", "mfe", "mlg", "mga", "mgh", "mgo", "mah", "mri", "mic", "min", "mis", "mkd", - "mal", "mon", "mnc", "mni", "moh", "mos", "mar", "mrj", + "mal", "mon", "mnc", "mni", "mol", + "moh", "mos", "mar", "mrj", "msa", "mlt", "mua", "mul", "mus", "mwl", "mwr", "mwv", "mya", "mye", "myv", "mzn", "nau", "nan", "nap", "naq", "nob", "nde", "nds", "nep", @@ -480,14 +482,15 @@ static const CanonicalizationMap CANONICALIZE_MAP[] = { /* Test if the locale id has BCP47 u extension and does not have '@' */ #define _hasBCP47Extension(id) (id && uprv_strstr(id, "@") == NULL && getShortestSubtagLength(localeID) == 1) /* Converts the BCP47 id to Unicode id. Does nothing to id if conversion fails */ -#define _ConvertBCP47(finalID, id, buffer, length,err) \ - if (uloc_forLanguageTag(id, buffer, length, NULL, err) <= 0 || \ - U_FAILURE(*err) || *err == U_STRING_NOT_TERMINATED_WARNING) { \ - finalID=id; \ - if (*err == U_STRING_NOT_TERMINATED_WARNING) { *err = U_BUFFER_OVERFLOW_ERROR; } \ - } else { \ - finalID=buffer; \ - } +#define _ConvertBCP47(finalID, id, buffer, length,err) UPRV_BLOCK_MACRO_BEGIN { \ + if (uloc_forLanguageTag(id, buffer, length, NULL, err) <= 0 || \ + U_FAILURE(*err) || *err == U_STRING_NOT_TERMINATED_WARNING) { \ + finalID=id; \ + if (*err == U_STRING_NOT_TERMINATED_WARNING) { *err = U_BUFFER_OVERFLOW_ERROR; } \ + } else { \ + finalID=buffer; \ + } \ +} UPRV_BLOCK_MACRO_END /* Gets the size of the shortest subtag in the given localeID. */ static int32_t getShortestSubtagLength(const char *localeID) { int32_t localeIDLength = static_cast(uprv_strlen(localeID)); @@ -1454,31 +1457,29 @@ static const UEnumeration gKeywordsEnum = { U_CAPI UEnumeration* U_EXPORT2 uloc_openKeywordList(const char *keywordList, int32_t keywordListSize, UErrorCode* status) { - UKeywordsContext *myContext = NULL; - UEnumeration *result = NULL; + LocalMemory myContext; + LocalMemory result; - if(U_FAILURE(*status)) { - return NULL; + if (U_FAILURE(*status)) { + return nullptr; } - result = (UEnumeration *)uprv_malloc(sizeof(UEnumeration)); - /* Null pointer test */ - if (result == NULL) { + myContext.adoptInstead(static_cast(uprv_malloc(sizeof(UKeywordsContext)))); + result.adoptInstead(static_cast(uprv_malloc(sizeof(UEnumeration)))); + if (myContext.isNull() || result.isNull()) { *status = U_MEMORY_ALLOCATION_ERROR; - return NULL; + return nullptr; } - uprv_memcpy(result, &gKeywordsEnum, sizeof(UEnumeration)); - myContext = static_cast(uprv_malloc(sizeof(UKeywordsContext))); - if (myContext == NULL) { + uprv_memcpy(result.getAlias(), &gKeywordsEnum, sizeof(UEnumeration)); + myContext->keywords = static_cast(uprv_malloc(keywordListSize+1)); + if (myContext->keywords == nullptr) { *status = U_MEMORY_ALLOCATION_ERROR; - uprv_free(result); - return NULL; + return nullptr; } - myContext->keywords = (char *)uprv_malloc(keywordListSize+1); uprv_memcpy(myContext->keywords, keywordList, keywordListSize); myContext->keywords[keywordListSize] = 0; myContext->current = myContext->keywords; - result->context = myContext; - return result; + result->context = myContext.orphan(); + return result.orphan(); } U_CAPI UEnumeration* U_EXPORT2 diff --git a/source/common/uloc_tag.cpp b/source/common/uloc_tag.cpp index 0e17436..1c10c48 100644 --- a/source/common/uloc_tag.cpp +++ b/source/common/uloc_tag.cpp @@ -1558,10 +1558,8 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT return; } - if (!_addAttributeToList(&attrFirst, attr)) { - *status = U_ILLEGAL_ARGUMENT_ERROR; - return; - } + // duplicate attribute is ignored, causes no error. + _addAttributeToList(&attrFirst, attr); /* next tag */ pTag += len; diff --git a/source/common/umutex.cpp b/source/common/umutex.cpp index 20b03d6..ccbee99 100644 --- a/source/common/umutex.cpp +++ b/source/common/umutex.cpp @@ -24,6 +24,7 @@ #include "unicode/utypes.h" #include "uassert.h" +#include "ucln_cmn.h" #include "cmemory.h" U_NAMESPACE_BEGIN @@ -35,60 +36,94 @@ U_NAMESPACE_BEGIN #error U_USER_MUTEX_CPP not supported #endif + /************************************************************************************************* * * ICU Mutex wrappers. * *************************************************************************************************/ -// The ICU global mutex. Used when ICU implementation code passes NULL for the mutex pointer. -static UMutex *globalMutex() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +namespace { +std::mutex *initMutex; +std::condition_variable *initCondition; -U_CAPI void U_EXPORT2 -umtx_lock(UMutex *mutex) { - if (mutex == nullptr) { - mutex = globalMutex(); - } - mutex->fMutex.lock(); -} +// The ICU global mutex. +// Used when ICU implementation code passes nullptr for the mutex pointer. +UMutex globalMutex; +std::once_flag initFlag; +std::once_flag *pInitFlag = &initFlag; -U_CAPI void U_EXPORT2 -umtx_unlock(UMutex* mutex) -{ - if (mutex == nullptr) { - mutex = globalMutex(); - } - mutex->fMutex.unlock(); -} +} // Anonymous namespace -UConditionVar::UConditionVar() : fCV() { +U_CDECL_BEGIN +static UBool U_CALLCONV umtx_cleanup() { + initMutex->~mutex(); + initCondition->~condition_variable(); + UMutex::cleanup(); + + // Reset the once_flag, by destructing it and creating a fresh one in its place. + // Do not use this trick anywhere else in ICU; use umtx_initOnce, not std::call_once(). + pInitFlag->~once_flag(); + pInitFlag = new(&initFlag) std::once_flag(); + return true; } -UConditionVar::~UConditionVar() { +static void U_CALLCONV umtx_init() { + initMutex = STATIC_NEW(std::mutex); + initCondition = STATIC_NEW(std::condition_variable); + ucln_common_registerCleanup(UCLN_COMMON_MUTEX, umtx_cleanup); +} +U_CDECL_END + + +std::mutex *UMutex::getMutex() { + std::mutex *retPtr = fMutex.load(std::memory_order_acquire); + if (retPtr == nullptr) { + std::call_once(*pInitFlag, umtx_init); + std::lock_guard guard(*initMutex); + retPtr = fMutex.load(std::memory_order_acquire); + if (retPtr == nullptr) { + fMutex = new(fStorage) std::mutex(); + retPtr = fMutex; + fListLink = gListHead; + gListHead = this; + } + } + U_ASSERT(retPtr != nullptr); + return retPtr; } -U_CAPI void U_EXPORT2 -umtx_condWait(UConditionVar *cond, UMutex *mutex) { - if (mutex == nullptr) { - mutex = globalMutex(); +UMutex *UMutex::gListHead = nullptr; + +void UMutex::cleanup() { + UMutex *next = nullptr; + for (UMutex *m = gListHead; m != nullptr; m = next) { + (*m->fMutex).~mutex(); + m->fMutex = nullptr; + next = m->fListLink; + m->fListLink = nullptr; } - cond->fCV.wait(mutex->fMutex); + gListHead = nullptr; } -U_CAPI void U_EXPORT2 -umtx_condBroadcast(UConditionVar *cond) { - cond->fCV.notify_all(); +U_CAPI void U_EXPORT2 +umtx_lock(UMutex *mutex) { + if (mutex == nullptr) { + mutex = &globalMutex; + } + mutex->lock(); } -U_CAPI void U_EXPORT2 -umtx_condSignal(UConditionVar *cond) { - cond->fCV.notify_one(); +U_CAPI void U_EXPORT2 +umtx_unlock(UMutex* mutex) +{ + if (mutex == nullptr) { + mutex = &globalMutex; + } + mutex->unlock(); } @@ -98,17 +133,6 @@ umtx_condSignal(UConditionVar *cond) { * *************************************************************************************************/ -static std::mutex &initMutex() { - static std::mutex m; - return m; -} - -static std::condition_variable &initCondition() { - static std::condition_variable cv; - return cv; -} - - // This function is called when a test of a UInitOnce::fState reveals that // initialization has not completed, that we either need to call the init // function on this thread, or wait for some other thread to complete. @@ -119,8 +143,8 @@ static std::condition_variable &initCondition() { // U_COMMON_API UBool U_EXPORT2 umtx_initImplPreInit(UInitOnce &uio) { - std::unique_lock lock(initMutex()); - + std::call_once(*pInitFlag, umtx_init); + std::unique_lock lock(*initMutex); if (umtx_loadAcquire(uio.fState) == 0) { umtx_storeRelease(uio.fState, 1); return true; // Caller will next call the init function. @@ -128,7 +152,7 @@ umtx_initImplPreInit(UInitOnce &uio) { while (umtx_loadAcquire(uio.fState) == 1) { // Another thread is currently running the initialization. // Wait until it completes. - initCondition().wait(lock); + initCondition->wait(lock); } U_ASSERT(uio.fState == 2); return false; @@ -145,10 +169,10 @@ umtx_initImplPreInit(UInitOnce &uio) { U_COMMON_API void U_EXPORT2 umtx_initImplPostInit(UInitOnce &uio) { { - std::unique_lock lock(initMutex()); + std::unique_lock lock(*initMutex); umtx_storeRelease(uio.fState, 2); } - initCondition().notify_all(); + initCondition->notify_all(); } U_NAMESPACE_END diff --git a/source/common/umutex.h b/source/common/umutex.h index d0a7e7a..2503aa4 100755 --- a/source/common/umutex.h +++ b/source/common/umutex.h @@ -23,6 +23,7 @@ #include #include #include +#include #include "unicode/utypes.h" #include "unicode/uclean.h" @@ -36,10 +37,11 @@ #error U_USER_ATOMICS and U_USER_MUTEX_H are not supported #endif - // Export an explicit template instantiation of std::atomic. // When building DLLs for Windows this is required as it is used as a data member of the exported SharedObject class. // See digitlst.h, pluralaffix.h, datefmt.h, and others for similar examples. +// +// Similar story for std::atomic, and the exported UMutex class. #if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN && !defined(U_IN_DOXYGEN) #if defined(__clang__) || defined(_MSC_VER) #if defined(__clang__) @@ -48,12 +50,14 @@ #pragma clang diagnostic ignored "-Winstantiation-after-specialization" #endif template struct U_COMMON_API std::atomic; +template struct U_COMMON_API std::atomic; #if defined(__clang__) #pragma clang diagnostic pop #endif #elif defined(__GNUC__) // For GCC this class is already exported/visible, so no need for U_COMMON_API. template struct std::atomic; +template struct std::atomic; #endif #endif @@ -180,49 +184,78 @@ template void umtx_initOnce(UInitOnce &uio, void (U_CALLCONV *fp)(T, UE } } +// UMutex should be constexpr-constructible, so that no initialization code +// is run during startup. +// This works on all C++ libraries except MS VS before VS2019. +#if (defined(_CPPLIB_VER) && !defined(_MSVC_STL_VERSION)) || \ + (defined(_MSVC_STL_VERSION) && _MSVC_STL_VERSION < 142) + // (VS std lib older than VS2017) || (VS std lib version < VS2019) +# define UMUTEX_CONSTEXPR +#else +# define UMUTEX_CONSTEXPR constexpr +#endif -/************************************************************************************************* +/** + * UMutex - ICU Mutex class. * - * ICU Mutex wrappers. Originally wrapped operating system mutexes, giving the rest of ICU a - * platform independent set of mutex operations. Now vestigial, wrapping std::mutex only. - * For internal ICU use only. + * This is the preferred Mutex class for use within ICU implementation code. + * It is a thin wrapper over C++ std::mutex, with these additions: + * - Static instances are safe, not triggering static construction or destruction, + * and the associated order of construction or destruction issues. + * - Plumbed into u_cleanup() for destructing the underlying std::mutex, + * which frees any OS level resources they may be holding. * - *************************************************************************************************/ + * Limitations: + * - Static or global instances only. Cannot be heap allocated. Cannot appear as a + * member of another class. + * - No condition variables or other advanced features. If needed, you will need to use + * std::mutex and std::condition_variable directly. For an example, see unifiedcache.cpp + * + * Typical Usage: + * static UMutex myMutex; + * + * { + * Mutex lock(myMutex); + * ... // Do stuff that is protected by myMutex; + * } // myMutex is released when lock goes out of scope. + */ -struct UMutex : public icu::UMemory { - UMutex() = default; +class U_COMMON_API UMutex { +public: + UMUTEX_CONSTEXPR UMutex() {} ~UMutex() = default; + UMutex(const UMutex &other) = delete; UMutex &operator =(const UMutex &other) = delete; + void *operator new(size_t) = delete; - std::mutex fMutex = {}; // Note: struct - pubic members - because most access is from - // // plain C style functions (umtx_lock(), etc.) -}; + // requirements for C++ BasicLockable, allows UMutex to work with std::lock_guard + void lock() { + std::mutex *m = fMutex.load(std::memory_order_acquire); + if (m == nullptr) { m = getMutex(); } + m->lock(); + } + void unlock() { fMutex.load(std::memory_order_relaxed)->unlock(); } + static void cleanup(); -struct UConditionVar : public icu::UMemory { - U_COMMON_API UConditionVar(); - U_COMMON_API ~UConditionVar(); - UConditionVar(const UConditionVar &other) = delete; - UConditionVar &operator =(const UConditionVar &other) = delete; +private: + alignas(std::mutex) char fStorage[sizeof(std::mutex)] {}; + std::atomic fMutex { nullptr }; - std::condition_variable_any fCV; -}; + /** All initialized UMutexes are kept in a linked list, so that they can be found, + * and the underlying std::mutex destructed, by u_cleanup(). + */ + UMutex *fListLink { nullptr }; + static UMutex *gListHead; -#define U_MUTEX_INITIALIZER {} -#define U_CONDITION_INITIALIZER {} + /** Out-of-line function to lazily initialize a UMutex on first use. + * Initial fast check is inline, in lock(). The returned value may never + * be nullptr. + */ + std::mutex *getMutex(); +}; -// Implementation notes for UConditionVar: -// -// Use an out-of-line constructor to reduce problems with the ICU dependency checker. -// On Linux, the default constructor of std::condition_variable_any -// produces an in-line reference to global operator new(), which the -// dependency checker flags for any file that declares a UConditionVar. With -// an out-of-line constructor, the dependency is constrained to umutex.o -// -// Do not export (U_COMMON_API) the entire class, but only the constructor -// and destructor, to avoid Windows build problems with attempting to export the -// std::condition_variable_any. /* Lock a mutex. * @param mutex The given mutex to be locked. Pass NULL to specify @@ -237,30 +270,6 @@ U_INTERNAL void U_EXPORT2 umtx_lock(UMutex* mutex); */ U_INTERNAL void U_EXPORT2 umtx_unlock (UMutex* mutex); -/* - * Wait on a condition variable. - * The calling thread will unlock the mutex and wait on the condition variable. - * The mutex must be locked by the calling thread when invoking this function. - * - * @param cond the condition variable to wait on. - * @param mutex the associated mutex. - */ - -U_INTERNAL void U_EXPORT2 umtx_condWait(UConditionVar *cond, UMutex *mutex); - - -/* - * Broadcast wakeup of all threads waiting on a Condition. - * - * @param cond the condition variable. - */ -U_INTERNAL void U_EXPORT2 umtx_condBroadcast(UConditionVar *cond); - -/* - * Signal a condition variable, waking up one waiting thread. - */ -U_INTERNAL void U_EXPORT2 umtx_condSignal(UConditionVar *cond); - U_NAMESPACE_END diff --git a/source/common/unames.cpp b/source/common/unames.cpp index d9f61ca..cde8b5a 100644 --- a/source/common/unames.cpp +++ b/source/common/unames.cpp @@ -212,13 +212,13 @@ isDataLoaded(UErrorCode *pErrorCode) { return U_SUCCESS(*pErrorCode); } -#define WRITE_CHAR(buffer, bufferLength, bufferPos, c) { \ +#define WRITE_CHAR(buffer, bufferLength, bufferPos, c) UPRV_BLOCK_MACRO_BEGIN { \ if((bufferLength)>0) { \ *(buffer)++=c; \ --(bufferLength); \ } \ ++(bufferPos); \ -} +} UPRV_BLOCK_MACRO_END #define U_ISO_COMMENT U_CHAR_NAME_CHOICE_COUNT diff --git a/source/common/unicode/appendable.h b/source/common/unicode/appendable.h index 8512c2f..4beacaf 100644 --- a/source/common/unicode/appendable.h +++ b/source/common/unicode/appendable.h @@ -23,6 +23,9 @@ */ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" U_NAMESPACE_BEGIN @@ -231,4 +234,6 @@ private: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __APPENDABLE_H__ diff --git a/source/common/unicode/brkiter.h b/source/common/unicode/brkiter.h index ac1bf1d..b944497 100644 --- a/source/common/unicode/brkiter.h +++ b/source/common/unicode/brkiter.h @@ -29,6 +29,10 @@ * \brief C++ API: Break Iterator. */ +#include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #if UCONFIG_NO_BREAK_ITERATION U_NAMESPACE_BEGIN @@ -135,7 +139,7 @@ public: * method which subclasses implement. * @stable ICU 2.0 */ - virtual BreakIterator* clone(void) const = 0; + virtual BreakIterator* clone() const = 0; /** * Return a polymorphic class ID for this object. Different subclasses @@ -493,6 +497,7 @@ public: static UnicodeString& U_EXPORT2 getDisplayName(const Locale& objectLocale, UnicodeString& name); +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Deprecated functionality. Use clone() instead. * @@ -515,6 +520,7 @@ public: virtual BreakIterator * createBufferClone(void *stackBuffer, int32_t &BufferSize, UErrorCode &status) = 0; +#endif // U_FORCE_HIDE_DEPRECATED_API #ifndef U_HIDE_DEPRECATED_API @@ -658,5 +664,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_BREAK_ITERATION */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // BRKITER_H //eof diff --git a/source/common/unicode/bytestream.h b/source/common/unicode/bytestream.h index 493115f..0d60492 100644 --- a/source/common/unicode/bytestream.h +++ b/source/common/unicode/bytestream.h @@ -38,6 +38,9 @@ */ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" #include "unicode/std_string.h" @@ -267,4 +270,6 @@ class StringByteSink : public ByteSink { U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __BYTESTREAM_H__ diff --git a/source/common/unicode/bytestrie.h b/source/common/unicode/bytestrie.h index c57b8cc..51405f6 100644 --- a/source/common/unicode/bytestrie.h +++ b/source/common/unicode/bytestrie.h @@ -23,6 +23,9 @@ */ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/stringpiece.h" #include "unicode/uobject.h" #include "unicode/ustringtrie.h" @@ -94,6 +97,41 @@ public: return *this; } +#ifndef U_HIDE_DRAFT_API + /** + * Returns the state of this trie as a 64-bit integer. + * The state value is never 0. + * + * @return opaque state value + * @see resetToState64 + * @draft ICU 65 + */ + uint64_t getState64() const { + return (static_cast(remainingMatchLength_ + 2) << kState64RemainingShift) | + (uint64_t)(pos_ - bytes_); + } + + /** + * Resets this trie to the saved state. + * Unlike resetToState(State), the 64-bit state value + * must be from getState64() from the same trie object or + * from one initialized the exact same way. + * Because of no validation, this method is faster. + * + * @param state The opaque trie state value from getState64(). + * @return *this + * @see getState64 + * @see resetToState + * @see reset + * @draft ICU 65 + */ + BytesTrie &resetToState64(uint64_t state) { + remainingMatchLength_ = static_cast(state >> kState64RemainingShift) - 2; + pos_ = bytes_ + (state & kState64PosMask); + return *this; + } +#endif /* U_HIDE_DRAFT_API */ + /** * BytesTrie state object, for saving a trie's current state * and resetting the trie back to this state later. @@ -502,6 +540,13 @@ private: static const int32_t kMaxTwoByteDelta=((kMinThreeByteDeltaLead-kMinTwoByteDeltaLead)<<8)-1; // 0x2fff static const int32_t kMaxThreeByteDelta=((kFourByteDeltaLead-kMinThreeByteDeltaLead)<<16)-1; // 0xdffff + // For getState64(): + // The remainingMatchLength_ is -1..14=(kMaxLinearMatchLength=0x10)-2 + // so we need at least 5 bits for that. + // We add 2 to store it as a positive value 1..16=kMaxLinearMatchLength. + static constexpr int32_t kState64RemainingShift = 59; + static constexpr uint64_t kState64PosMask = (UINT64_C(1) << kState64RemainingShift) - 1; + uint8_t *ownedArray_; // Fixed value referencing the BytesTrie bytes. @@ -517,4 +562,6 @@ private: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __BYTESTRIE_H__ diff --git a/source/common/unicode/bytestriebuilder.h b/source/common/unicode/bytestriebuilder.h index 2a1f28e..b98374b 100644 --- a/source/common/unicode/bytestriebuilder.h +++ b/source/common/unicode/bytestriebuilder.h @@ -23,6 +23,9 @@ #define __BYTESTRIEBUILDER_H__ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/bytestrie.h" #include "unicode/stringpiece.h" #include "unicode/stringtriebuilder.h" @@ -179,4 +182,6 @@ private: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __BYTESTRIEBUILDER_H__ diff --git a/source/common/unicode/caniter.h b/source/common/unicode/caniter.h index 9b21ba5..13e524f 100644 --- a/source/common/unicode/caniter.h +++ b/source/common/unicode/caniter.h @@ -12,6 +12,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_NORMALIZATION #include "unicode/uobject.h" @@ -207,4 +209,6 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_NORMALIZATION */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/casemap.h b/source/common/unicode/casemap.h index 477eb48..53af84f 100644 --- a/source/common/unicode/casemap.h +++ b/source/common/unicode/casemap.h @@ -8,6 +8,9 @@ #define __CASEMAP_H__ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/stringpiece.h" #include "unicode/uobject.h" @@ -489,4 +492,6 @@ private: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __CASEMAP_H__ diff --git a/source/common/unicode/char16ptr.h b/source/common/unicode/char16ptr.h index a7c5f1a..c8a9ae6 100644 --- a/source/common/unicode/char16ptr.h +++ b/source/common/unicode/char16ptr.h @@ -7,9 +7,12 @@ #ifndef __CHAR16PTR_H__ #define __CHAR16PTR_H__ -#include #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + +#include + /** * \file * \brief C++ API: char16_t pointer wrappers with @@ -305,4 +308,6 @@ inline OldUChar *toOldUCharPtr(char16_t *p) { U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __CHAR16PTR_H__ diff --git a/source/common/unicode/chariter.h b/source/common/unicode/chariter.h index 70d7a24..db86f79 100644 --- a/source/common/unicode/chariter.h +++ b/source/common/unicode/chariter.h @@ -13,6 +13,9 @@ #define CHARITER_H #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" #include "unicode/unistr.h" /** @@ -377,7 +380,7 @@ public: * @return a pointer to a new CharacterIterator * @stable ICU 2.0 */ - virtual CharacterIterator* clone(void) const = 0; + virtual CharacterIterator* clone() const = 0; /** * Sets the iterator to refer to the first code unit in its @@ -725,4 +728,7 @@ CharacterIterator::getLength(void) const { } U_NAMESPACE_END + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/dbbi.h b/source/common/unicode/dbbi.h index a2c3d7d..3de9cc3 100644 --- a/source/common/unicode/dbbi.h +++ b/source/common/unicode/dbbi.h @@ -13,6 +13,10 @@ #ifndef DBBI_H #define DBBI_H +#include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/rbbi.h" #if !UCONFIG_NO_BREAK_ITERATION @@ -39,4 +43,6 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_BREAK_ITERATION */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/docmain.h b/source/common/unicode/docmain.h index 1e959cb..704139a 100644 --- a/source/common/unicode/docmain.h +++ b/source/common/unicode/docmain.h @@ -99,7 +99,7 @@ * * * Codepage Conversion - * ucnv.h, ucnvsel.hb + * ucnv.h, ucnvsel.h * C API * * @@ -115,7 +115,7 @@ * * Locales * uloc.h - * icu::Locale, icu::LocaleBuilder + * icu::Locale, icu::LocaleBuilder, icu::LocaleMatcher * * * Resource Bundles diff --git a/source/common/unicode/dtintrv.h b/source/common/unicode/dtintrv.h index aa6ca71..15e15c9 100644 --- a/source/common/unicode/dtintrv.h +++ b/source/common/unicode/dtintrv.h @@ -15,6 +15,9 @@ #define __DTINTRV_H__ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" /** @@ -22,7 +25,6 @@ * \brief C++ API: Date Interval data type */ - U_NAMESPACE_BEGIN @@ -157,4 +159,6 @@ DateInterval::operator!=(const DateInterval& other) const { U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/edits.h b/source/common/unicode/edits.h index 79e98b0..c3ceacc 100644 --- a/source/common/unicode/edits.h +++ b/source/common/unicode/edits.h @@ -8,6 +8,9 @@ #define __EDITS_H__ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" /** @@ -159,7 +162,7 @@ public: * @return TRUE if U_FAILURE(outErrorCode) * @stable ICU 59 */ - UBool copyErrorTo(UErrorCode &outErrorCode); + UBool copyErrorTo(UErrorCode &outErrorCode) const; /** * How much longer is the new text compared with the old text? @@ -523,4 +526,6 @@ private: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __EDITS_H__ diff --git a/source/common/unicode/errorcode.h b/source/common/unicode/errorcode.h index 81cad20..fe7b518 100644 --- a/source/common/unicode/errorcode.h +++ b/source/common/unicode/errorcode.h @@ -26,6 +26,9 @@ */ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" U_NAMESPACE_BEGIN @@ -136,4 +139,6 @@ protected: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __ERRORCODE_H__ diff --git a/source/common/unicode/filteredbrk.h b/source/common/unicode/filteredbrk.h index 2444114..4293676 100644 --- a/source/common/unicode/filteredbrk.h +++ b/source/common/unicode/filteredbrk.h @@ -11,6 +11,9 @@ #define FILTEREDBRK_H #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/brkiter.h" #if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILTERED_BREAK_ITERATION @@ -101,6 +104,7 @@ class U_COMMON_API FilteredBreakIteratorBuilder : public UObject { */ virtual UBool unsuppressBreakAfter(const UnicodeString& string, UErrorCode& status) = 0; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * This function has been deprecated in favor of wrapIteratorWithFilter() * The behavior is identical. @@ -111,6 +115,7 @@ class U_COMMON_API FilteredBreakIteratorBuilder : public UObject { * @see wrapBreakIteratorWithFilter() */ virtual BreakIterator *build(BreakIterator* adoptBreakIterator, UErrorCode& status) = 0; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Wrap (adopt) an existing break iterator in a new filtered instance. @@ -142,4 +147,6 @@ U_NAMESPACE_END #endif // #if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILTERED_BREAK_ITERATION +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // #ifndef FILTEREDBRK_H diff --git a/source/common/unicode/idna.h b/source/common/unicode/idna.h index f08658e..6dfcfe4 100644 --- a/source/common/unicode/idna.h +++ b/source/common/unicode/idna.h @@ -24,6 +24,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_IDNA #include "unicode/bytestream.h" @@ -322,4 +324,7 @@ private: U_NAMESPACE_END #endif // UCONFIG_NO_IDNA + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __IDNA_H__ diff --git a/source/common/unicode/localebuilder.h b/source/common/unicode/localebuilder.h index 960e598..19e10f1 100644 --- a/source/common/unicode/localebuilder.h +++ b/source/common/unicode/localebuilder.h @@ -3,11 +3,14 @@ #ifndef __LOCALEBUILDER_H__ #define __LOCALEBUILDER_H__ +#include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/locid.h" +#include "unicode/localematcher.h" #include "unicode/stringpiece.h" #include "unicode/uobject.h" -#include "unicode/utypes.h" - #ifndef U_HIDE_DRAFT_API /** @@ -276,7 +279,24 @@ public: */ Locale build(UErrorCode& status); +#ifndef U_HIDE_DRAFT_API + /** + * Sets the UErrorCode if an error occurred while recording sets. + * Preserves older error codes in the outErrorCode. + * @param outErrorCode Set to an error code that occurred while setting subtags. + * Unchanged if there is no such error or if outErrorCode + * already contained an error. + * @return TRUE if U_FAILURE(outErrorCode) + * @draft ICU 65 + */ + UBool copyErrorTo(UErrorCode &outErrorCode) const; +#endif /* U_HIDE_DRAFT_API */ + private: + friend class LocaleMatcher::Result; + + void copyExtensionsFrom(const Locale& src, UErrorCode& errorCode); + UErrorCode status_; char language_[9]; char script_[5]; @@ -289,4 +309,7 @@ private: U_NAMESPACE_END #endif // U_HIDE_DRAFT_API + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __LOCALEBUILDER_H__ diff --git a/source/common/unicode/localematcher.h b/source/common/unicode/localematcher.h new file mode 100644 index 0000000..701123f --- /dev/null +++ b/source/common/unicode/localematcher.h @@ -0,0 +1,605 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License + +// localematcher.h +// created: 2019may08 Markus W. Scherer + +#ifndef __LOCALEMATCHER_H__ +#define __LOCALEMATCHER_H__ + +#include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + +#include "unicode/locid.h" +#include "unicode/stringpiece.h" +#include "unicode/uobject.h" + +/** + * \file + * \brief C++ API: Locale matcher: User's desired locales vs. application's supported locales. + */ + +#ifndef U_HIDE_DRAFT_API + +/** + * Builder option for whether the language subtag or the script subtag is most important. + * + * @see Builder#setFavorSubtag(FavorSubtag) + * @draft ICU 65 + */ +enum ULocMatchFavorSubtag { + /** + * Language differences are most important, then script differences, then region differences. + * (This is the default behavior.) + * + * @draft ICU 65 + */ + ULOCMATCH_FAVOR_LANGUAGE, + /** + * Makes script differences matter relatively more than language differences. + * + * @draft ICU 65 + */ + ULOCMATCH_FAVOR_SCRIPT +}; +#ifndef U_IN_DOXYGEN +typedef enum ULocMatchFavorSubtag ULocMatchFavorSubtag; +#endif + +/** + * Builder option for whether all desired locales are treated equally or + * earlier ones are preferred. + * + * @see Builder#setDemotionPerDesiredLocale(Demotion) + * @draft ICU 65 + */ +enum ULocMatchDemotion { + /** + * All desired locales are treated equally. + * + * @draft ICU 65 + */ + ULOCMATCH_DEMOTION_NONE, + /** + * Earlier desired locales are preferred. + * + *

    From each desired locale to the next, + * the distance to any supported locale is increased by an additional amount + * which is at least as large as most region mismatches. + * A later desired locale has to have a better match with some supported locale + * due to more than merely having the same region subtag. + * + *

    For example: Supported={en, sv} desired=[en-GB, sv] + * yields Result(en-GB, en) because + * with the demotion of sv its perfect match is no better than + * the region distance between the earlier desired locale en-GB and en=en-US. + * + *

    Notes: + *

      + *
    • In some cases, language and/or script differences can be as small as + * the typical region difference. (Example: sr-Latn vs. sr-Cyrl) + *
    • It is possible for certain region differences to be larger than usual, + * and larger than the demotion. + * (As of CLDR 35 there is no such case, but + * this is possible in future versions of the data.) + *
    + * + * @draft ICU 65 + */ + ULOCMATCH_DEMOTION_REGION +}; +#ifndef U_IN_DOXYGEN +typedef enum ULocMatchDemotion ULocMatchDemotion; +#endif + +struct UHashtable; + +U_NAMESPACE_BEGIN + +struct LSR; + +class LocaleDistance; +class LocaleLsrIterator; +class UVector; +class XLikelySubtags; + +/** + * Immutable class that picks the best match between a user's desired locales and + * an application's supported locales. + * Movable but not copyable. + * + *

    Example: + *

    + * UErrorCode errorCode = U_ZERO_ERROR;
    + * LocaleMatcher matcher = LocaleMatcher::Builder().setSupportedLocales("fr, en-GB, en").build(errorCode);
    + * Locale *bestSupported = matcher.getBestLocale(Locale.US, errorCode);  // "en"
    + * 
    + * + *

    A matcher takes into account when languages are close to one another, + * such as Danish and Norwegian, + * and when regional variants are close, like en-GB and en-AU as opposed to en-US. + * + *

    If there are multiple supported locales with the same (language, script, region) + * likely subtags, then the current implementation returns the first of those locales. + * It ignores variant subtags (except for pseudolocale variants) and extensions. + * This may change in future versions. + * + *

    For example, the current implementation does not distinguish between + * de, de-DE, de-Latn, de-1901, de-u-co-phonebk. + * + *

    If you prefer one equivalent locale over another, then provide only the preferred one, + * or place it earlier in the list of supported locales. + * + *

    Otherwise, the order of supported locales may have no effect on the best-match results. + * The current implementation compares each desired locale with supported locales + * in the following order: + * 1. Default locale, if supported; + * 2. CLDR "paradigm locales" like en-GB and es-419; + * 3. other supported locales. + * This may change in future versions. + * + *

    Often a product will just need one matcher instance, built with the languages + * that it supports. However, it may want multiple instances with different + * default languages based on additional information, such as the domain. + * + *

    This class is not intended for public subclassing. + * + * @draft ICU 65 + */ +class U_COMMON_API LocaleMatcher : public UMemory { +public: + /** + * Data for the best-matching pair of a desired and a supported locale. + * Movable but not copyable. + * + * @draft ICU 65 + */ + class U_COMMON_API Result : public UMemory { + public: + /** + * Move constructor; might modify the source. + * This object will have the same contents that the source object had. + * + * @param src Result to move contents from. + * @draft ICU 65 + */ + Result(Result &&src) U_NOEXCEPT; + + /** + * Destructor. + * + * @draft ICU 65 + */ + ~Result(); + + /** + * Move assignment; might modify the source. + * This object will have the same contents that the source object had. + * + * @param src Result to move contents from. + * @draft ICU 65 + */ + Result &operator=(Result &&src) U_NOEXCEPT; + + /** + * Returns the best-matching desired locale. + * nullptr if the list of desired locales is empty or if none matched well enough. + * + * @return the best-matching desired locale, or nullptr. + * @draft ICU 65 + */ + inline const Locale *getDesiredLocale() const { return desiredLocale; } + + /** + * Returns the best-matching supported locale. + * If none matched well enough, this is the default locale. + * The default locale is nullptr if the list of supported locales is empty and + * no explicit default locale is set. + * + * @return the best-matching supported locale, or nullptr. + * @draft ICU 65 + */ + inline const Locale *getSupportedLocale() const { return supportedLocale; } + + /** + * Returns the index of the best-matching desired locale in the input Iterable order. + * -1 if the list of desired locales is empty or if none matched well enough. + * + * @return the index of the best-matching desired locale, or -1. + * @draft ICU 65 + */ + inline int32_t getDesiredIndex() const { return desiredIndex; } + + /** + * Returns the index of the best-matching supported locale in the + * constructor’s or builder’s input order (“set” Collection plus “added” locales). + * If the matcher was built from a locale list string, then the iteration order is that + * of a LocalePriorityList built from the same string. + * -1 if the list of supported locales is empty or if none matched well enough. + * + * @return the index of the best-matching supported locale, or -1. + * @draft ICU 65 + */ + inline int32_t getSupportedIndex() const { return supportedIndex; } + + /** + * Takes the best-matching supported locale and adds relevant fields of the + * best-matching desired locale, such as the -t- and -u- extensions. + * May replace some fields of the supported locale. + * The result is the locale that should be used for date and number formatting, collation, etc. + * Returns the root locale if getSupportedLocale() returns nullptr. + * + *

    Example: desired=ar-SA-u-nu-latn, supported=ar-EG, resolved locale=ar-SA-u-nu-latn + * + * @return a locale combining the best-matching desired and supported locales. + * @draft ICU 65 + */ + Locale makeResolvedLocale(UErrorCode &errorCode) const; + + private: + Result(const Locale *desired, const Locale *supported, + int32_t desIndex, int32_t suppIndex, UBool owned) : + desiredLocale(desired), supportedLocale(supported), + desiredIndex(desIndex), supportedIndex(suppIndex), + desiredIsOwned(owned) {} + + Result(const Result &other) = delete; + Result &operator=(const Result &other) = delete; + + const Locale *desiredLocale; + const Locale *supportedLocale; + int32_t desiredIndex; + int32_t supportedIndex; + UBool desiredIsOwned; + + friend class LocaleMatcher; + }; + + /** + * LocaleMatcher builder. + * Movable but not copyable. + * + * @see LocaleMatcher#builder() + * @draft ICU 65 + */ + class U_COMMON_API Builder : public UMemory { + public: + /** + * Constructs a builder used in chaining parameters for building a LocaleMatcher. + * + * @return a new Builder object + * @draft ICU 65 + */ + Builder() {} + + /** + * Move constructor; might modify the source. + * This builder will have the same contents that the source builder had. + * + * @param src Builder to move contents from. + * @draft ICU 65 + */ + Builder(Builder &&src) U_NOEXCEPT; + + /** + * Destructor. + * + * @draft ICU 65 + */ + ~Builder(); + + /** + * Move assignment; might modify the source. + * This builder will have the same contents that the source builder had. + * + * @param src Builder to move contents from. + * @draft ICU 65 + */ + Builder &operator=(Builder &&src) U_NOEXCEPT; + + /** + * Parses an Accept-Language string + * (RFC 2616 Section 14.4), + * such as "af, en, fr;q=0.9", and sets the supported locales accordingly. + * Allows whitespace in more places but does not allow "*". + * Clears any previously set/added supported locales first. + * + * @param locales the Accept-Language string of locales to set + * @return this Builder object + * @draft ICU 65 + */ + Builder &setSupportedLocalesFromListString(StringPiece locales); + + /** + * Copies the supported locales, preserving iteration order. + * Clears any previously set/added supported locales first. + * Duplicates are allowed, and are not removed. + * + * @param locales the list of locale + * @return this Builder object + * @draft ICU 65 + */ + Builder &setSupportedLocales(Locale::Iterator &locales); + + /** + * Copies the supported locales from the begin/end range, preserving iteration order. + * Clears any previously set/added supported locales first. + * Duplicates are allowed, and are not removed. + * + * Each of the iterator parameter values must be an + * input iterator whose value is convertible to const Locale &. + * + * @param begin Start of range. + * @param end Exclusive end of range. + * @return this Builder object + * @draft ICU 65 + */ + template + Builder &setSupportedLocales(Iter begin, Iter end) { + if (U_FAILURE(errorCode_)) { return *this; } + clearSupportedLocales(); + while (begin != end) { + addSupportedLocale(*begin++); + } + return *this; + } + + /** + * Copies the supported locales from the begin/end range, preserving iteration order. + * Calls the converter to convert each *begin to a Locale or const Locale &. + * Clears any previously set/added supported locales first. + * Duplicates are allowed, and are not removed. + * + * Each of the iterator parameter values must be an + * input iterator whose value is convertible to const Locale &. + * + * @param begin Start of range. + * @param end Exclusive end of range. + * @param converter Converter from *begin to const Locale & or compatible. + * @return this Builder object + * @draft ICU 65 + */ + template + Builder &setSupportedLocalesViaConverter(Iter begin, Iter end, Conv converter) { + if (U_FAILURE(errorCode_)) { return *this; } + clearSupportedLocales(); + while (begin != end) { + addSupportedLocale(converter(*begin++)); + } + return *this; + } + + /** + * Adds another supported locale. + * Duplicates are allowed, and are not removed. + * + * @param locale another locale + * @return this Builder object + * @draft ICU 65 + */ + Builder &addSupportedLocale(const Locale &locale); + + /** + * Sets the default locale; if nullptr, or if it is not set explicitly, + * then the first supported locale is used as the default locale. + * + * @param defaultLocale the default locale (will be copied) + * @return this Builder object + * @draft ICU 65 + */ + Builder &setDefaultLocale(const Locale *defaultLocale); + + /** + * If ULOCMATCH_FAVOR_SCRIPT, then the language differences are smaller than script + * differences. + * This is used in situations (such as maps) where + * it is better to fall back to the same script than a similar language. + * + * @param subtag the subtag to favor + * @return this Builder object + * @draft ICU 65 + */ + Builder &setFavorSubtag(ULocMatchFavorSubtag subtag); + + /** + * Option for whether all desired locales are treated equally or + * earlier ones are preferred (this is the default). + * + * @param demotion the demotion per desired locale to set. + * @return this Builder object + * @draft ICU 65 + */ + Builder &setDemotionPerDesiredLocale(ULocMatchDemotion demotion); + + /** + * Sets the UErrorCode if an error occurred while setting parameters. + * Preserves older error codes in the outErrorCode. + * + * @param outErrorCode Set to an error code if it does not contain one already + * and an error occurred while setting parameters. + * Otherwise unchanged. + * @return TRUE if U_FAILURE(outErrorCode) + * @draft ICU 65 + */ + UBool copyErrorTo(UErrorCode &outErrorCode) const; + + /** + * Builds and returns a new locale matcher. + * This builder can continue to be used. + * + * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test, + * or else the function returns immediately. Check for U_FAILURE() + * on output or use with function chaining. (See User Guide for details.) + * @return new LocaleMatcher. + * @draft ICU 65 + */ + LocaleMatcher build(UErrorCode &errorCode) const; + + private: + friend class LocaleMatcher; + + Builder(const Builder &other) = delete; + Builder &operator=(const Builder &other) = delete; + + void clearSupportedLocales(); + bool ensureSupportedLocaleVector(); + + UErrorCode errorCode_ = U_ZERO_ERROR; + UVector *supportedLocales_ = nullptr; + int32_t thresholdDistance_ = -1; + ULocMatchDemotion demotion_ = ULOCMATCH_DEMOTION_REGION; + Locale *defaultLocale_ = nullptr; + ULocMatchFavorSubtag favor_ = ULOCMATCH_FAVOR_LANGUAGE; + }; + + // FYI No public LocaleMatcher constructors in C++; use the Builder. + + /** + * Move copy constructor; might modify the source. + * This matcher will have the same settings that the source matcher had. + * @param src source matcher + * @draft ICU 65 + */ + LocaleMatcher(LocaleMatcher &&src) U_NOEXCEPT; + + /** + * Destructor. + * @draft ICU 65 + */ + ~LocaleMatcher(); + + /** + * Move assignment operator; might modify the source. + * This matcher will have the same settings that the source matcher had. + * The behavior is undefined if *this and src are the same object. + * @param src source matcher + * @return *this + * @draft ICU 65 + */ + LocaleMatcher &operator=(LocaleMatcher &&src) U_NOEXCEPT; + + /** + * Returns the supported locale which best matches the desired locale. + * + * @param desiredLocale Typically a user's language. + * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test, + * or else the function returns immediately. Check for U_FAILURE() + * on output or use with function chaining. (See User Guide for details.) + * @return the best-matching supported locale. + * @draft ICU 65 + */ + const Locale *getBestMatch(const Locale &desiredLocale, UErrorCode &errorCode) const; + + /** + * Returns the supported locale which best matches one of the desired locales. + * + * @param desiredLocales Typically a user's languages, in order of preference (descending). + * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test, + * or else the function returns immediately. Check for U_FAILURE() + * on output or use with function chaining. (See User Guide for details.) + * @return the best-matching supported locale. + * @draft ICU 65 + */ + const Locale *getBestMatch(Locale::Iterator &desiredLocales, UErrorCode &errorCode) const; + + /** + * Parses an Accept-Language string + * (RFC 2616 Section 14.4), + * such as "af, en, fr;q=0.9", + * and returns the supported locale which best matches one of the desired locales. + * Allows whitespace in more places but does not allow "*". + * + * @param desiredLocaleList Typically a user's languages, as an Accept-Language string. + * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test, + * or else the function returns immediately. Check for U_FAILURE() + * on output or use with function chaining. (See User Guide for details.) + * @return the best-matching supported locale. + * @draft ICU 65 + */ + const Locale *getBestMatchForListString(StringPiece desiredLocaleList, UErrorCode &errorCode) const; + + /** + * Returns the best match between the desired locale and the supported locales. + * If the result's desired locale is not nullptr, then it is the address of the input locale. + * It has not been cloned. + * + * @param desiredLocale Typically a user's language. + * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test, + * or else the function returns immediately. Check for U_FAILURE() + * on output or use with function chaining. (See User Guide for details.) + * @return the best-matching pair of the desired and a supported locale. + * @draft ICU 65 + */ + Result getBestMatchResult(const Locale &desiredLocale, UErrorCode &errorCode) const; + + /** + * Returns the best match between the desired and supported locales. + * If the result's desired locale is not nullptr, then it is a clone of + * the best-matching desired locale. The Result object owns the clone. + * + * @param desiredLocales Typically a user's languages, in order of preference (descending). + * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test, + * or else the function returns immediately. Check for U_FAILURE() + * on output or use with function chaining. (See User Guide for details.) + * @return the best-matching pair of a desired and a supported locale. + * @draft ICU 65 + */ + Result getBestMatchResult(Locale::Iterator &desiredLocales, UErrorCode &errorCode) const; + +#ifndef U_HIDE_INTERNAL_API + /** + * Returns a fraction between 0 and 1, where 1 means that the languages are a + * perfect match, and 0 means that they are completely different. + * + *

    This is mostly an implementation detail, and the precise values may change over time. + * The implementation may use either the maximized forms or the others ones, or both. + * The implementation may or may not rely on the forms to be consistent with each other. + * + *

    Callers should construct and use a matcher rather than match pairs of locales directly. + * + * @param desired Desired locale. + * @param supported Supported locale. + * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test, + * or else the function returns immediately. Check for U_FAILURE() + * on output or use with function chaining. (See User Guide for details.) + * @return value between 0 and 1, inclusive. + * @internal (has a known user) + */ + double internalMatch(const Locale &desired, const Locale &supported, UErrorCode &errorCode) const; +#endif // U_HIDE_INTERNAL_API + +private: + LocaleMatcher(const Builder &builder, UErrorCode &errorCode); + LocaleMatcher(const LocaleMatcher &other) = delete; + LocaleMatcher &operator=(const LocaleMatcher &other) = delete; + + int32_t getBestSuppIndex(LSR desiredLSR, LocaleLsrIterator *remainingIter, UErrorCode &errorCode) const; + + const XLikelySubtags &likelySubtags; + const LocaleDistance &localeDistance; + int32_t thresholdDistance; + int32_t demotionPerDesiredLocale; + ULocMatchFavorSubtag favorSubtag; + + // These are in input order. + const Locale ** supportedLocales; + LSR *lsrs; + int32_t supportedLocalesLength; + // These are in preference order: 1. Default locale 2. paradigm locales 3. others. + UHashtable *supportedLsrToIndex; // Map stores index+1 because 0 is "not found" + // Array versions of the supportedLsrToIndex keys and values. + // The distance lookup loops over the supportedLSRs and returns the index of the best match. + const LSR **supportedLSRs; + int32_t *supportedIndexes; + int32_t supportedLSRsLength; + Locale *ownedDefaultLocale; + const Locale *defaultLocale; + int32_t defaultLocaleIndex; +}; + +U_NAMESPACE_END + +#endif // U_HIDE_DRAFT_API +#endif // U_SHOW_CPLUSPLUS_API +#endif // __LOCALEMATCHER_H__ diff --git a/source/common/unicode/locdspnm.h b/source/common/unicode/locdspnm.h index f6e7783..4f06f85 100644 --- a/source/common/unicode/locdspnm.h +++ b/source/common/unicode/locdspnm.h @@ -12,6 +12,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Provides display names of Locale and its components. @@ -204,4 +206,6 @@ U_NAMESPACE_END #endif +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/locid.h b/source/common/unicode/locid.h index 7e410e5..57c669b 100644 --- a/source/common/unicode/locid.h +++ b/source/common/unicode/locid.h @@ -31,11 +31,14 @@ #ifndef LOCID_H #define LOCID_H +#include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/bytestream.h" #include "unicode/localpointer.h" #include "unicode/strenum.h" #include "unicode/stringpiece.h" -#include "unicode/utypes.h" #include "unicode/uobject.h" #include "unicode/putil.h" #include "unicode/uloc.h" @@ -284,16 +287,14 @@ public: */ Locale(const Locale& other); -#ifndef U_HIDE_DRAFT_API /** * Move constructor; might leave source in bogus state. * This locale will have the same contents that the source locale had. * * @param other The Locale object being moved in. - * @draft ICU 63 + * @stable ICU 63 */ Locale(Locale&& other) U_NOEXCEPT; -#endif // U_HIDE_DRAFT_API /** * Destructor @@ -310,7 +311,6 @@ public: */ Locale& operator=(const Locale& other); -#ifndef U_HIDE_DRAFT_API /** * Move assignment operator; might leave source in bogus state. * This locale will have the same contents that the source locale had. @@ -318,10 +318,9 @@ public: * * @param other The Locale object being moved in. * @return *this - * @draft ICU 63 + * @stable ICU 63 */ Locale& operator=(Locale&& other) U_NOEXCEPT; -#endif // U_HIDE_DRAFT_API /** * Checks if two locale keys are the same. @@ -389,7 +388,6 @@ public: UErrorCode& success); #endif /* U_HIDE_SYSTEM_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns a Locale for the specified BCP47 language tag string. * If the specified language tag contains any ill-formed subtags, @@ -405,7 +403,7 @@ public: * @param tag the input BCP47 language tag. * @param status error information if creating the Locale failed. * @return the Locale for the specified BCP47 language tag. - * @draft ICU 63 + * @stable ICU 63 */ static Locale U_EXPORT2 forLanguageTag(StringPiece tag, UErrorCode& status); @@ -420,7 +418,7 @@ public: * @param sink the output sink receiving the BCP47 language * tag for this Locale. * @param status error information if creating the language tag failed. - * @draft ICU 63 + * @stable ICU 63 */ void toLanguageTag(ByteSink& sink, UErrorCode& status) const; @@ -432,11 +430,10 @@ public: * * @param status error information if creating the language tag failed. * @return the BCP47 language tag for this Locale. - * @draft ICU 63 + * @stable ICU 63 */ template inline StringClass toLanguageTag(UErrorCode& status) const; -#endif // U_HIDE_DRAFT_API /** * Creates a locale which has had minimal canonicalization @@ -508,7 +505,6 @@ public: */ const char * getBaseName() const; -#ifndef U_HIDE_DRAFT_API /** * Add the likely subtags for this Locale, per the algorithm described * in the following CLDR technical report: @@ -536,7 +532,7 @@ public: * @param status error information if maximizing this Locale failed. * If this Locale is not well-formed, the error code is * U_ILLEGAL_ARGUMENT_ERROR. - * @draft ICU 63 + * @stable ICU 63 */ void addLikelySubtags(UErrorCode& status); @@ -567,10 +563,9 @@ public: * @param status error information if maximizing this Locale failed. * If this Locale is not well-formed, the error code is * U_ILLEGAL_ARGUMENT_ERROR. - * @draft ICU 63 + * @stable ICU 63 */ void minimizeSubtags(UErrorCode& status); -#endif // U_HIDE_DRAFT_API /** * Gets the list of keywords for the specified locale. @@ -583,8 +578,6 @@ public: */ StringEnumeration * createKeywords(UErrorCode &status) const; -#ifndef U_HIDE_DRAFT_API - /** * Gets the list of Unicode keywords for the specified locale. * @@ -592,7 +585,7 @@ public: * @return pointer to StringEnumeration class, or NULL if there are no keywords. * Client must dispose of it by calling delete. * @see getUnicodeKeywords - * @draft ICU 63 + * @stable ICU 63 */ StringEnumeration * createUnicodeKeywords(UErrorCode &status) const; @@ -605,7 +598,7 @@ public: * * @param iterator an STL style output iterator to write the keywords to. * @param status error information if creating set of keywords failed. - * @draft ICU 63 + * @stable ICU 63 */ template inline void getKeywords(OutputIterator iterator, UErrorCode& status) const; @@ -619,13 +612,11 @@ public: * * @param iterator an STL style output iterator to write the keywords to. * @param status error information if creating set of keywords failed. - * @draft ICU 63 + * @stable ICU 63 */ template inline void getUnicodeKeywords(OutputIterator iterator, UErrorCode& status) const; -#endif // U_HIDE_DRAFT_API - /** * Gets the value for a keyword. * @@ -644,7 +635,6 @@ public: */ int32_t getKeywordValue(const char* keywordName, char *buffer, int32_t bufferCapacity, UErrorCode &status) const; -#ifndef U_HIDE_DRAFT_API /** * Gets the value for a keyword. * @@ -656,7 +646,7 @@ public: * @param keywordName name of the keyword for which we want the value. * @param sink the sink to receive the keyword value. * @param status error information if getting the value failed. - * @draft ICU 63 + * @stable ICU 63 */ void getKeywordValue(StringPiece keywordName, ByteSink& sink, UErrorCode& status) const; @@ -671,7 +661,7 @@ public: * @param keywordName name of the keyword for which we want the value. * @param status error information if getting the value failed. * @return the keyword value. - * @draft ICU 63 + * @stable ICU 63 */ template inline StringClass getKeywordValue(StringPiece keywordName, UErrorCode& status) const; @@ -687,7 +677,7 @@ public: * @param keywordName name of the keyword for which we want the value. * @param sink the sink to receive the keyword value. * @param status error information if getting the value failed. - * @draft ICU 63 + * @stable ICU 63 */ void getUnicodeKeywordValue(StringPiece keywordName, ByteSink& sink, UErrorCode& status) const; @@ -702,11 +692,10 @@ public: * @param keywordName name of the keyword for which we want the value. * @param status error information if getting the value failed. * @return the keyword value. - * @draft ICU 63 + * @stable ICU 63 */ template inline StringClass getUnicodeKeywordValue(StringPiece keywordName, UErrorCode& status) const; -#endif // U_HIDE_DRAFT_API /** * Sets or removes the value for a keyword. @@ -729,7 +718,6 @@ public: */ void setKeywordValue(const char* keywordName, const char* keywordValue, UErrorCode &status); -#ifndef U_HIDE_DRAFT_API /** * Sets or removes the value for a keyword. * @@ -746,7 +734,7 @@ public: * NULL, will result in the keyword being removed. No error is given if * that keyword does not exist. * @param status Returns any error information while performing this operation. - * @draft ICU 63 + * @stable ICU 63 */ void setKeywordValue(StringPiece keywordName, StringPiece keywordValue, UErrorCode& status); @@ -766,10 +754,9 @@ public: * NULL, will result in the keyword being removed. No error is given if * that keyword does not exist. * @param status Returns any error information while performing this operation. - * @draft ICU 63 + * @stable ICU 63 */ void setUnicodeKeywordValue(StringPiece keywordName, StringPiece keywordValue, UErrorCode& status); -#endif // U_HIDE_DRAFT_API /** * returns the locale's three-letter language code, as specified @@ -1008,6 +995,104 @@ public: */ virtual UClassID getDynamicClassID() const; +#ifndef U_HIDE_DRAFT_API + /** + * A Locale iterator interface similar to a Java Iterator. + * @draft ICU 65 + */ + class U_COMMON_API Iterator /* not : public UObject because this is an interface/mixin class */ { + public: + /** @draft ICU 65 */ + virtual ~Iterator(); + + /** + * @return TRUE if next() can be called again. + * @draft ICU 65 + */ + virtual UBool hasNext() const = 0; + + /** + * @return the next locale. + * @draft ICU 65 + */ + virtual const Locale &next() = 0; + }; + + /** + * A generic Locale iterator implementation over Locale input iterators. + * @draft ICU 65 + */ + template + class RangeIterator : public Iterator, public UMemory { + public: + /** + * Constructs an iterator from a begin/end range. + * Each of the iterator parameter values must be an + * input iterator whose value is convertible to const Locale &. + * + * @param begin Start of range. + * @param end Exclusive end of range. + * @draft ICU 65 + */ + RangeIterator(Iter begin, Iter end) : it_(begin), end_(end) {} + + /** + * @return TRUE if next() can be called again. + * @draft ICU 65 + */ + UBool hasNext() const override { return it_ != end_; } + + /** + * @return the next locale. + * @draft ICU 65 + */ + const Locale &next() override { return *it_++; } + + private: + Iter it_; + const Iter end_; + }; + + /** + * A generic Locale iterator implementation over Locale input iterators. + * Calls the converter to convert each *begin to a const Locale &. + * @draft ICU 65 + */ + template + class ConvertingIterator : public Iterator, public UMemory { + public: + /** + * Constructs an iterator from a begin/end range. + * Each of the iterator parameter values must be an + * input iterator whose value the converter converts to const Locale &. + * + * @param begin Start of range. + * @param end Exclusive end of range. + * @param converter Converter from *begin to const Locale & or compatible. + * @draft ICU 65 + */ + ConvertingIterator(Iter begin, Iter end, Conv converter) : + it_(begin), end_(end), converter_(converter) {} + + /** + * @return TRUE if next() can be called again. + * @draft ICU 65 + */ + UBool hasNext() const override { return it_ != end_; } + + /** + * @return the next locale. + * @draft ICU 65 + */ + const Locale &next() override { return converter_(*it_++); } + + private: + Iter it_; + const Iter end_; + Conv converter_; + }; +#endif // U_HIDE_DRAFT_API + protected: /* only protected for testing purposes. DO NOT USE. */ #ifndef U_HIDE_INTERNAL_API /** @@ -1074,7 +1159,6 @@ Locale::operator!=(const Locale& other) const return !operator==(other); } -#ifndef U_HIDE_DRAFT_API template inline StringClass Locale::toLanguageTag(UErrorCode& status) const { @@ -1083,7 +1167,6 @@ Locale::toLanguageTag(UErrorCode& status) const toLanguageTag(sink, status); return result; } -#endif // U_HIDE_DRAFT_API inline const char * Locale::getCountry() const @@ -1115,13 +1198,11 @@ Locale::getName() const return fullName; } -#ifndef U_HIDE_DRAFT_API - template inline void Locale::getKeywords(OutputIterator iterator, UErrorCode& status) const { LocalPointer keys(createKeywords(status)); - if (U_FAILURE(status)) { + if (U_FAILURE(status) || keys.isNull()) { return; } for (;;) { @@ -1138,7 +1219,7 @@ template inline void Locale::getUnicodeKeywords(OutputIterator iterator, UErrorCode& status) const { LocalPointer keys(createUnicodeKeywords(status)); - if (U_FAILURE(status)) { + if (U_FAILURE(status) || keys.isNull()) { return; } for (;;) { @@ -1169,8 +1250,6 @@ Locale::getUnicodeKeywordValue(StringPiece keywordName, UErrorCode& status) cons return result; } -#endif // U_HIDE_DRAFT_API - inline UBool Locale::isBogus(void) const { return fIsBogus; @@ -1178,4 +1257,6 @@ Locale::isBogus(void) const { U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/messagepattern.h b/source/common/unicode/messagepattern.h index 9f2a865..04f00a8 100644 --- a/source/common/unicode/messagepattern.h +++ b/source/common/unicode/messagepattern.h @@ -24,6 +24,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING #include "unicode/parseerr.h" @@ -942,4 +944,6 @@ U_NAMESPACE_END #endif // !UCONFIG_NO_FORMATTING +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __MESSAGEPATTERN_H__ diff --git a/source/common/unicode/normalizer2.h b/source/common/unicode/normalizer2.h index 4caa0e3..4aeb3bb 100644 --- a/source/common/unicode/normalizer2.h +++ b/source/common/unicode/normalizer2.h @@ -26,6 +26,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_NORMALIZATION #include "unicode/stringpiece.h" @@ -771,4 +773,7 @@ private: U_NAMESPACE_END #endif // !UCONFIG_NO_NORMALIZATION + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __NORMALIZER2_H__ diff --git a/source/common/unicode/normlzr.h b/source/common/unicode/normlzr.h index 0141058..07a596b 100644 --- a/source/common/unicode/normlzr.h +++ b/source/common/unicode/normlzr.h @@ -13,6 +13,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Unicode Normalization @@ -183,6 +185,7 @@ public: Normalizer(const CharacterIterator& iter, UNormalizationMode mode); #endif /* U_HIDE_DEPRECATED_API */ +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Copy constructor. * @param copy The object to be copied. @@ -195,7 +198,7 @@ public: * @deprecated ICU 56 Use Normalizer2 instead. */ virtual ~Normalizer(); - +#endif // U_FORCE_HIDE_DEPRECATED_API //------------------------------------------------------------------------- // Static utility methods @@ -599,7 +602,7 @@ public: * @return a pointer to a new Normalizer * @deprecated ICU 56 Use Normalizer2 instead. */ - Normalizer* clone(void) const; + Normalizer* clone() const; /** * Generates a hash code for this iterator. @@ -723,12 +726,14 @@ public: static UClassID U_EXPORT2 getStaticClassID(); #endif /* U_HIDE_DEPRECATED_API */ +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * ICU "poor man's RTTI", returns a UClassID for the actual class. * @return a UClassID for the actual class. * @deprecated ICU 56 Use Normalizer2 instead. */ virtual UClassID getDynamicClassID() const; +#endif // U_FORCE_HIDE_DEPRECATED_API private: //------------------------------------------------------------------------- @@ -807,3 +812,5 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_NORMALIZATION */ #endif // NORMLZR_H + +#endif /* U_SHOW_CPLUSPLUS_API */ diff --git a/source/common/unicode/parsepos.h b/source/common/unicode/parsepos.h index b63b84f..909d288 100644 --- a/source/common/unicode/parsepos.h +++ b/source/common/unicode/parsepos.h @@ -19,6 +19,9 @@ #define PARSEPOS_H #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" @@ -229,4 +232,6 @@ ParsePosition::setErrorIndex(int32_t ei) } U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/platform.h b/source/common/unicode/platform.h index a3623f5..ad75b29 100644 --- a/source/common/unicode/platform.h +++ b/source/common/unicode/platform.h @@ -135,6 +135,14 @@ /** Fuchsia is a POSIX-ish platform. @internal */ #define U_PF_FUCHSIA 4100 /* Maximum value for Linux-based platform is 4499 */ +/** + * Emscripten is a C++ transpiler for the Web that can target asm.js or + * WebAssembly. It provides some POSIX-compatible wrappers and stubs and + * some Linux-like functionality, but is not fully compatible with + * either. + * @internal + */ +#define U_PF_EMSCRIPTEN 5010 /** z/OS is the successor to OS/390 which was the successor to MVS. @internal */ #define U_PF_OS390 9000 /** "IBM i" is the current name of what used to be i5/OS and earlier OS/400. @internal */ @@ -192,6 +200,8 @@ # define U_PLATFORM U_PF_OS390 #elif defined(__OS400__) || defined(__TOS_OS400__) # define U_PLATFORM U_PF_OS400 +#elif defined(__EMSCRIPTEN__) +# define U_PLATFORM U_PF_EMSCRIPTEN #else # define U_PLATFORM U_PF_UNKNOWN #endif @@ -414,26 +424,40 @@ #endif /* Compatibility with compilers other than clang: http://clang.llvm.org/docs/LanguageExtensions.html */ -#ifndef __has_attribute -# define __has_attribute(x) 0 +#ifdef __has_attribute +# define UPRV_HAS_ATTRIBUTE(x) __has_attribute(x) +#else +# define UPRV_HAS_ATTRIBUTE(x) 0 #endif -#ifndef __has_cpp_attribute -# define __has_cpp_attribute(x) 0 +#ifdef __has_cpp_attribute +# define UPRV_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x) +#else +# define UPRV_HAS_CPP_ATTRIBUTE(x) 0 #endif -#ifndef __has_declspec_attribute -# define __has_declspec_attribute(x) 0 +#ifdef __has_declspec_attribute +# define UPRV_HAS_DECLSPEC_ATTRIBUTE(x) __has_declspec_attribute(x) +#else +# define UPRV_HAS_DECLSPEC_ATTRIBUTE(x) 0 #endif -#ifndef __has_builtin -# define __has_builtin(x) 0 +#ifdef __has_builtin +# define UPRV_HAS_BUILTIN(x) __has_builtin(x) +#else +# define UPRV_HAS_BUILTIN(x) 0 #endif -#ifndef __has_feature -# define __has_feature(x) 0 +#ifdef __has_feature +# define UPRV_HAS_FEATURE(x) __has_feature(x) +#else +# define UPRV_HAS_FEATURE(x) 0 #endif -#ifndef __has_extension -# define __has_extension(x) 0 +#ifdef __has_extension +# define UPRV_HAS_EXTENSION(x) __has_extension(x) +#else +# define UPRV_HAS_EXTENSION(x) 0 #endif -#ifndef __has_warning -# define __has_warning(x) 0 +#ifdef __has_warning +# define UPRV_HAS_WARNING(x) __has_warning(x) +#else +# define UPRV_HAS_WARNING(x) 0 #endif /** @@ -452,7 +476,9 @@ * Attribute to specify the size of the allocated buffer for malloc-like functions * @internal */ -#if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))) || __has_attribute(alloc_size) +#if (defined(__GNUC__) && \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))) || \ + UPRV_HAS_ATTRIBUTE(alloc_size) # define U_ALLOC_SIZE_ATTR(X) __attribute__ ((alloc_size(X))) # define U_ALLOC_SIZE_ATTR2(X,Y) __attribute__ ((alloc_size(X,Y))) #else @@ -516,8 +542,9 @@ namespace std { #elif defined(__clang__) // Test for compiler vs. feature separately. // Other compilers might choke on the feature test. -# if __has_cpp_attribute(clang::fallthrough) || \ - (__has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough")) +# if UPRV_HAS_CPP_ATTRIBUTE(clang::fallthrough) || \ + (UPRV_HAS_FEATURE(cxx_attributes) && \ + UPRV_HAS_WARNING("-Wimplicit-fallthrough")) # define U_FALLTHROUGH [[clang::fallthrough]] # endif #elif defined(__GNUC__) && (__GNUC__ >= 7) @@ -620,7 +647,8 @@ namespace std { */ #ifdef U_CHARSET_IS_UTF8 /* Use the predefined value. */ -#elif U_PLATFORM_IS_LINUX_BASED || U_PLATFORM_IS_DARWIN_BASED +#elif U_PLATFORM_IS_LINUX_BASED || U_PLATFORM_IS_DARWIN_BASED || \ + U_PLATFORM == U_PF_EMSCRIPTEN # define U_CHARSET_IS_UTF8 1 #else # define U_CHARSET_IS_UTF8 0 @@ -707,7 +735,7 @@ namespace std { * narrow-character strings are in EBCDIC. */ # define U_SIZEOF_WCHAR_T 2 -#else +# else /* * LOCALETYPE(*CLD) or LOCALETYPE(*LOCALE) is specified. * Wide-character strings are in 16-bit EBCDIC, @@ -786,7 +814,8 @@ namespace std { /* Use the predefined value. */ #elif defined(U_STATIC_IMPLEMENTATION) # define U_EXPORT -#elif defined(_MSC_VER) || (__has_declspec_attribute(dllexport) && __has_declspec_attribute(dllimport)) +#elif defined(_MSC_VER) || (UPRV_HAS_DECLSPEC_ATTRIBUTE(dllexport) && \ + UPRV_HAS_DECLSPEC_ATTRIBUTE(dllimport)) # define U_EXPORT __declspec(dllexport) #elif defined(__GNUC__) # define U_EXPORT __attribute__((visibility("default"))) @@ -810,7 +839,8 @@ namespace std { #ifdef U_IMPORT /* Use the predefined value. */ -#elif defined(_MSC_VER) || (__has_declspec_attribute(dllexport) && __has_declspec_attribute(dllimport)) +#elif defined(_MSC_VER) || (UPRV_HAS_DECLSPEC_ATTRIBUTE(dllexport) && \ + UPRV_HAS_DECLSPEC_ATTRIBUTE(dllimport)) /* Windows needs to export/import data. */ # define U_IMPORT __declspec(dllimport) #else @@ -852,4 +882,4 @@ namespace std { #endif /* @} */ -#endif +#endif // _PLATFORM_H diff --git a/source/common/unicode/rbbi.h b/source/common/unicode/rbbi.h index 365ae2d..7825f60 100644 --- a/source/common/unicode/rbbi.h +++ b/source/common/unicode/rbbi.h @@ -18,6 +18,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Rule Based Break Iterator @@ -272,7 +274,7 @@ public: * @return a newly-constructed RuleBasedBreakIterator * @stable ICU 2.0 */ - virtual BreakIterator* clone() const; + virtual RuleBasedBreakIterator* clone() const; /** * Compute a hash code for this BreakIterator @@ -536,6 +538,7 @@ public: */ static UClassID U_EXPORT2 getStaticClassID(void); +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Deprecated functionality. Use clone() instead. * @@ -562,10 +565,10 @@ public: * or if the stackBuffer was too small to hold the clone. * @deprecated ICU 52. Use clone() instead. */ - virtual BreakIterator * createBufferClone(void *stackBuffer, - int32_t &BufferSize, - UErrorCode &status); - + virtual RuleBasedBreakIterator *createBufferClone(void *stackBuffer, + int32_t &BufferSize, + UErrorCode &status); +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Return the binary form of compiled break rules, @@ -696,4 +699,6 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_BREAK_ITERATION */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/rep.h b/source/common/unicode/rep.h index 41fdc04..6dd4530 100644 --- a/source/common/unicode/rep.h +++ b/source/common/unicode/rep.h @@ -16,6 +16,10 @@ #ifndef REP_H #define REP_H +#include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" /** @@ -189,9 +193,6 @@ public: * Clones can be used concurrently in multiple threads. * If a subclass does not implement clone(), or if an error occurs, * then NULL is returned. - * The clone functions in all subclasses return a pointer to a Replaceable - * because some compilers do not support covariant (same-as-this) - * return types; cast to the appropriate subclass if necessary. * The caller must delete the clone. * * @return a clone of this object @@ -260,4 +261,6 @@ Replaceable::char32At(int32_t offset) const { U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/resbund.h b/source/common/unicode/resbund.h index ad58990..2894067 100644 --- a/source/common/unicode/resbund.h +++ b/source/common/unicode/resbund.h @@ -49,6 +49,9 @@ #define RESBUND_H #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" #include "unicode/ures.h" #include "unicode/unistr.h" @@ -489,4 +492,7 @@ private: }; U_NAMESPACE_END + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/schriter.h b/source/common/unicode/schriter.h index 42f0269..1ca5b70 100644 --- a/source/common/unicode/schriter.h +++ b/source/common/unicode/schriter.h @@ -21,6 +21,9 @@ #define SCHRITER_H #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/chariter.h" #include "unicode/uchriter.h" @@ -130,7 +133,7 @@ public: * @return the newly cloned object. * @stable ICU 2.0 */ - virtual CharacterIterator* clone(void) const; + virtual StringCharacterIterator* clone() const; /** * Sets the iterator to iterate over the provided string. @@ -186,4 +189,7 @@ protected: }; U_NAMESPACE_END + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/simpleformatter.h b/source/common/unicode/simpleformatter.h index 3f7d93d..9414bca 100644 --- a/source/common/unicode/simpleformatter.h +++ b/source/common/unicode/simpleformatter.h @@ -17,6 +17,9 @@ */ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/unistr.h" U_NAMESPACE_BEGIN @@ -333,4 +336,6 @@ private: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __SIMPLEFORMATTER_H__ diff --git a/source/common/unicode/std_string.h b/source/common/unicode/std_string.h index 729c563..bf87230 100644 --- a/source/common/unicode/std_string.h +++ b/source/common/unicode/std_string.h @@ -27,6 +27,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + // Workaround for a libstdc++ bug before libstdc++4.6 (2011). // https://bugs.llvm.org/show_bug.cgi?id=13364 #if defined(__GLIBCXX__) @@ -34,4 +36,6 @@ namespace std { class type_info; } #endif #include +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __STD_STRING_H__ diff --git a/source/common/unicode/strenum.h b/source/common/unicode/strenum.h index 61d5148..8601f1f 100644 --- a/source/common/unicode/strenum.h +++ b/source/common/unicode/strenum.h @@ -12,6 +12,10 @@ #ifndef STRENUM_H #define STRENUM_H +#include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" #include "unicode/unistr.h" @@ -67,9 +71,6 @@ public: * Clones can be used concurrently in multiple threads. * If a subclass does not implement clone(), or if an error occurs, * then NULL is returned. - * The clone functions in all subclasses return a base class pointer - * because some compilers do not support covariant (same-as-this) - * return types; cast to the appropriate subclass if necessary. * The caller must delete the clone. * * @return a clone of this object @@ -274,5 +275,7 @@ protected: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + /* STRENUM_H */ #endif diff --git a/source/common/unicode/stringpiece.h b/source/common/unicode/stringpiece.h index b0887ef..f581091 100644 --- a/source/common/unicode/stringpiece.h +++ b/source/common/unicode/stringpiece.h @@ -28,6 +28,12 @@ */ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + +#include +#include + #include "unicode/uobject.h" #include "unicode/std_string.h" @@ -74,6 +80,33 @@ class U_COMMON_API StringPiece : public UMemory { */ StringPiece(const std::string& str) : ptr_(str.data()), length_(static_cast(str.size())) { } +#ifndef U_HIDE_DRAFT_API + /** + * Constructs from some other implementation of a string piece class, from any + * C++ record type that has these two methods: + * + * \code{.cpp} + * + * struct OtherStringPieceClass { + * const char* data(); + * size_t size(); + * }; + * + * \endcode + * + * The other string piece class will typically be std::string_view from C++17 + * or absl::string_view from Abseil. + * + * @param str the other string piece + * @draft ICU 65 + */ + template ::value && + std::is_same::value>::type> + StringPiece(T str) + : ptr_(str.data()), length_(static_cast(str.size())) {} +#endif // U_HIDE_DRAFT_API /** * Constructs from a const char * pointer and a specified length. * @param offset a const char * pointer (need not be terminated) @@ -221,4 +254,6 @@ inline UBool operator!=(const StringPiece& x, const StringPiece& y) { U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __STRINGPIECE_H__ diff --git a/source/common/unicode/stringtriebuilder.h b/source/common/unicode/stringtriebuilder.h index fe99fdb..2c47dd4 100644 --- a/source/common/unicode/stringtriebuilder.h +++ b/source/common/unicode/stringtriebuilder.h @@ -18,6 +18,9 @@ #define __STRINGTRIEBUILDER_H__ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" /** @@ -418,4 +421,6 @@ protected: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __STRINGTRIEBUILDER_H__ diff --git a/source/common/unicode/symtable.h b/source/common/unicode/symtable.h index 35e5f23..b64d877 100644 --- a/source/common/unicode/symtable.h +++ b/source/common/unicode/symtable.h @@ -13,6 +13,9 @@ #define SYMTABLE_H #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" /** @@ -111,4 +114,6 @@ public: }; U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/uchar.h b/source/common/unicode/uchar.h index d70c964..1b7ee09 100644 --- a/source/common/unicode/uchar.h +++ b/source/common/unicode/uchar.h @@ -2578,8 +2578,6 @@ typedef enum UVerticalOrientation { U_STABLE UBool U_EXPORT2 u_hasBinaryProperty(UChar32 c, UProperty which); -#ifndef U_HIDE_DRAFT_API - /** * Returns a frozen USet for a binary property. * The library retains ownership over the returned object. @@ -2593,13 +2591,11 @@ u_hasBinaryProperty(UChar32 c, UProperty which); * @see UProperty * @see u_hasBinaryProperty * @see Unicode::fromUSet - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI const USet * U_EXPORT2 u_getBinaryPropertySet(UProperty property, UErrorCode *pErrorCode); -#endif // U_HIDE_DRAFT_API - /** * Check if a code point has the Alphabetic Unicode property. * Same as u_hasBinaryProperty(c, UCHAR_ALPHABETIC). @@ -2757,8 +2753,6 @@ u_getIntPropertyMinValue(UProperty which); U_STABLE int32_t U_EXPORT2 u_getIntPropertyMaxValue(UProperty which); -#ifndef U_HIDE_DRAFT_API - /** * Returns an immutable UCPMap for an enumerated/catalog/int-valued property. * The library retains ownership over the returned object. @@ -2772,13 +2766,11 @@ u_getIntPropertyMaxValue(UProperty which); * @return the property as a map * @see UProperty * @see u_getIntPropertyValue - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI const UCPMap * U_EXPORT2 u_getIntPropertyMap(UProperty property, UErrorCode *pErrorCode); -#endif // U_HIDE_DRAFT_API - /** * Get the numeric value for a Unicode code point as defined in the * Unicode Character Database. @@ -3197,15 +3189,14 @@ U_STABLE UBool U_EXPORT2 u_isprint(UChar32 c); /** - * Determines whether the specified code point is a base character. + * Non-standard: Determines whether the specified code point is a base character. * True for general categories "L" (letters), "N" (numbers), * "Mc" (spacing combining marks), and "Me" (enclosing marks). * - * Note that this is different from the Unicode definition in - * chapter 3.5, conformance clause D13, - * which defines base characters to be all characters (not Cn) - * that do not graphically combine with preceding characters (M) - * and that are neither control (Cc) or format (Cf) characters. + * Note that this is different from the Unicode Standard definition in + * chapter 3.6, conformance clause D51 “Base character”, + * which defines base characters as the code points with general categories + * Letter (L), Number (N), Punctuation (P), Symbol (S), or Space Separator (Zs). * * @param c the code point to be tested * @return TRUE if the code point is a base character according to this function diff --git a/source/common/unicode/ucharstrie.h b/source/common/unicode/ucharstrie.h index dfc93f6..d5729d9 100644 --- a/source/common/unicode/ucharstrie.h +++ b/source/common/unicode/ucharstrie.h @@ -24,6 +24,9 @@ */ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/unistr.h" #include "unicode/uobject.h" #include "unicode/ustringtrie.h" @@ -94,6 +97,41 @@ public: return *this; } +#ifndef U_HIDE_DRAFT_API + /** + * Returns the state of this trie as a 64-bit integer. + * The state value is never 0. + * + * @return opaque state value + * @see resetToState64 + * @draft ICU 65 + */ + uint64_t getState64() const { + return (static_cast(remainingMatchLength_ + 2) << kState64RemainingShift) | + (uint64_t)(pos_ - uchars_); + } + + /** + * Resets this trie to the saved state. + * Unlike resetToState(State), the 64-bit state value + * must be from getState64() from the same trie object or + * from one initialized the exact same way. + * Because of no validation, this method is faster. + * + * @param state The opaque trie state value from getState64(). + * @return *this + * @see getState64 + * @see resetToState + * @see reset + * @draft ICU 65 + */ + UCharsTrie &resetToState64(uint64_t state) { + remainingMatchLength_ = static_cast(state >> kState64RemainingShift) - 2; + pos_ = uchars_ + (state & kState64PosMask); + return *this; + } +#endif /* U_HIDE_DRAFT_API */ + /** * UCharsTrie state object, for saving a trie's current state * and resetting the trie back to this state later. @@ -560,6 +598,13 @@ private: static const int32_t kMaxTwoUnitDelta=((kThreeUnitDeltaLead-kMinTwoUnitDeltaLead)<<16)-1; // 0x03feffff + // For getState64(): + // The remainingMatchLength_ is -1..14=(kMaxLinearMatchLength=0x10)-2 + // so we need at least 5 bits for that. + // We add 2 to store it as a positive value 1..16=kMaxLinearMatchLength. + static constexpr int32_t kState64RemainingShift = 59; + static constexpr uint64_t kState64PosMask = (UINT64_C(1) << kState64RemainingShift) - 1; + char16_t *ownedArray_; // Fixed value referencing the UCharsTrie words. @@ -575,4 +620,6 @@ private: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __UCHARSTRIE_H__ diff --git a/source/common/unicode/ucharstriebuilder.h b/source/common/unicode/ucharstriebuilder.h index 2aa4757..540dcc0 100644 --- a/source/common/unicode/ucharstriebuilder.h +++ b/source/common/unicode/ucharstriebuilder.h @@ -18,6 +18,9 @@ #define __UCHARSTRIEBUILDER_H__ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/stringtriebuilder.h" #include "unicode/ucharstrie.h" #include "unicode/unistr.h" @@ -184,4 +187,6 @@ private: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __UCHARSTRIEBUILDER_H__ diff --git a/source/common/unicode/uchriter.h b/source/common/unicode/uchriter.h index efcd263..a485259 100644 --- a/source/common/unicode/uchriter.h +++ b/source/common/unicode/uchriter.h @@ -11,6 +11,9 @@ #define UCHRITER_H #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/chariter.h" /** @@ -132,7 +135,7 @@ public: * @return the CharacterIterator newly created * @stable ICU 2.0 */ - virtual CharacterIterator* clone(void) const; + virtual UCharCharacterIterator* clone() const; /** * Sets the iterator to refer to the first code unit in its @@ -384,4 +387,7 @@ protected: }; U_NAMESPACE_END + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/uconfig.h b/source/common/unicode/uconfig.h index e61eb57..bbc232d 100644 --- a/source/common/unicode/uconfig.h +++ b/source/common/unicode/uconfig.h @@ -453,4 +453,4 @@ # define UCONFIG_NO_FILTERED_BREAK_ITERATION 0 #endif -#endif +#endif // __UCONFIG_H__ diff --git a/source/common/unicode/ucpmap.h b/source/common/unicode/ucpmap.h index f2c42b6..31e1365 100644 --- a/source/common/unicode/ucpmap.h +++ b/source/common/unicode/ucpmap.h @@ -9,8 +9,6 @@ #include "unicode/utypes.h" -#ifndef U_HIDE_DRAFT_API - U_CDECL_BEGIN /** @@ -28,7 +26,7 @@ U_CDECL_BEGIN * * @see UCPTrie * @see UMutableCPTrie - * @draft ICU 63 + * @stable ICU 63 */ typedef struct UCPMap UCPMap; @@ -39,13 +37,13 @@ typedef struct UCPMap UCPMap; * @see ucpmap_getRange * @see ucptrie_getRange * @see umutablecptrie_getRange - * @draft ICU 63 + * @stable ICU 63 */ enum UCPMapRangeOption { /** * ucpmap_getRange() enumerates all same-value ranges as stored in the map. * Most users should use this option. - * @draft ICU 63 + * @stable ICU 63 */ UCPMAP_RANGE_NORMAL, /** @@ -61,7 +59,7 @@ enum UCPMapRangeOption { * special values optimized for UTF-16 string processing * or for special error behavior for unpaired surrogates, * but those values are not to be associated with the lead surrogate code *points*. - * @draft ICU 63 + * @stable ICU 63 */ UCPMAP_RANGE_FIXED_LEAD_SURROGATES, /** @@ -77,7 +75,7 @@ enum UCPMapRangeOption { * special values optimized for UTF-16 string processing * or for special error behavior for unpaired surrogates, * but those values are not to be associated with the lead surrogate code *points*. - * @draft ICU 63 + * @stable ICU 63 */ UCPMAP_RANGE_FIXED_ALL_SURROGATES }; @@ -93,7 +91,7 @@ typedef enum UCPMapRangeOption UCPMapRangeOption; * @param c the code point * @return the map value, * or an implementation-defined error value if the code point is not in the range 0..U+10FFFF - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI uint32_t U_EXPORT2 ucpmap_get(const UCPMap *map, UChar32 c); @@ -110,7 +108,7 @@ ucpmap_get(const UCPMap *map, UChar32 c); * @param context an opaque pointer, as passed into the getRange function * @param value a value from the map * @return the modified value - * @draft ICU 63 + * @stable ICU 63 */ typedef uint32_t U_CALLCONV UCPMapValueFilter(const void *context, uint32_t value); @@ -149,7 +147,7 @@ UCPMapValueFilter(const void *context, uint32_t value); * may have been modified by filter(context, map value) * if that function pointer is not NULL * @return the range end code point, or -1 if start is not a valid code point - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI UChar32 U_EXPORT2 ucpmap_getRange(const UCPMap *map, UChar32 start, @@ -158,5 +156,4 @@ ucpmap_getRange(const UCPMap *map, UChar32 start, U_CDECL_END -#endif // U_HIDE_DRAFT_API #endif diff --git a/source/common/unicode/ucptrie.h b/source/common/unicode/ucptrie.h index 2718c98..be06a22 100644 --- a/source/common/unicode/ucptrie.h +++ b/source/common/unicode/ucptrie.h @@ -9,8 +9,6 @@ #include "unicode/utypes.h" -#ifndef U_HIDE_DRAFT_API - #include "unicode/localpointer.h" #include "unicode/ucpmap.h" #include "unicode/utf8.h" @@ -55,7 +53,7 @@ typedef union UCPTrieData { * The macros will return bogus values, or may crash, if used on the wrong type or value width. * * @see UMutableCPTrie - * @draft ICU 63 + * @stable ICU 63 */ struct UCPTrie { #ifndef U_IN_DOXYGEN @@ -115,23 +113,23 @@ typedef struct UCPTrie UCPTrie; * @see umutablecptrie_buildImmutable * @see ucptrie_openFromBinary * @see ucptrie_getType - * @draft ICU 63 + * @stable ICU 63 */ enum UCPTrieType { /** * For ucptrie_openFromBinary() to accept any type. * ucptrie_getType() will return the actual type. - * @draft ICU 63 + * @stable ICU 63 */ UCPTRIE_TYPE_ANY = -1, /** * Fast/simple/larger BMP data structure. Use functions and "fast" macros. - * @draft ICU 63 + * @stable ICU 63 */ UCPTRIE_TYPE_FAST, /** * Small/slower BMP data structure. Use functions and "small" macros. - * @draft ICU 63 + * @stable ICU 63 */ UCPTRIE_TYPE_SMALL }; @@ -145,30 +143,30 @@ typedef enum UCPTrieType UCPTrieType; * @see umutablecptrie_buildImmutable * @see ucptrie_openFromBinary * @see ucptrie_getValueWidth - * @draft ICU 63 + * @stable ICU 63 */ enum UCPTrieValueWidth { /** * For ucptrie_openFromBinary() to accept any data value width. * ucptrie_getValueWidth() will return the actual data value width. - * @draft ICU 63 + * @stable ICU 63 */ UCPTRIE_VALUE_BITS_ANY = -1, /** * The trie stores 16 bits per data value. * It returns them as unsigned values 0..0xffff=65535. - * @draft ICU 63 + * @stable ICU 63 */ UCPTRIE_VALUE_BITS_16, /** * The trie stores 32 bits per data value. - * @draft ICU 63 + * @stable ICU 63 */ UCPTRIE_VALUE_BITS_32, /** * The trie stores 8 bits per data value. * It returns them as unsigned values 0..0xff=255. - * @draft ICU 63 + * @stable ICU 63 */ UCPTRIE_VALUE_BITS_8 }; @@ -200,7 +198,7 @@ typedef enum UCPTrieValueWidth UCPTrieValueWidth; * @see umutablecptrie_open * @see umutablecptrie_buildImmutable * @see ucptrie_toBinary - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI UCPTrie * U_EXPORT2 ucptrie_openFromBinary(UCPTrieType type, UCPTrieValueWidth valueWidth, @@ -211,30 +209,11 @@ ucptrie_openFromBinary(UCPTrieType type, UCPTrieValueWidth valueWidth, * Closes a trie and releases associated memory. * * @param trie the trie - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI void U_EXPORT2 ucptrie_close(UCPTrie *trie); -#if U_SHOW_CPLUSPLUS_API - -U_NAMESPACE_BEGIN - -/** - * \class LocalUCPTriePointer - * "Smart pointer" class, closes a UCPTrie via ucptrie_close(). - * For most methods see the LocalPointerBase base class. - * - * @see LocalPointerBase - * @see LocalPointer - * @draft ICU 63 - */ -U_DEFINE_LOCAL_OPEN_POINTER(LocalUCPTriePointer, UCPTrie, ucptrie_close); - -U_NAMESPACE_END - -#endif - /** * Returns the trie type. * @@ -242,7 +221,7 @@ U_NAMESPACE_END * @return the trie type * @see ucptrie_openFromBinary * @see UCPTRIE_TYPE_ANY - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI UCPTrieType U_EXPORT2 ucptrie_getType(const UCPTrie *trie); @@ -254,7 +233,7 @@ ucptrie_getType(const UCPTrie *trie); * @return the number of bits in a trie data value * @see ucptrie_openFromBinary * @see UCPTRIE_VALUE_BITS_ANY - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI UCPTrieValueWidth U_EXPORT2 ucptrie_getValueWidth(const UCPTrie *trie); @@ -271,7 +250,7 @@ ucptrie_getValueWidth(const UCPTrie *trie); * @param c the code point * @return the trie value, * or the trie error value if the code point is not in the range 0..U+10FFFF - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI uint32_t U_EXPORT2 ucptrie_get(const UCPTrie *trie, UChar32 c); @@ -310,7 +289,7 @@ ucptrie_get(const UCPTrie *trie, UChar32 c); * may have been modified by filter(context, trie value) * if that function pointer is not NULL * @return the range end code point, or -1 if start is not a valid code point - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI UChar32 U_EXPORT2 ucptrie_getRange(const UCPTrie *trie, UChar32 start, @@ -330,7 +309,7 @@ ucptrie_getRange(const UCPTrie *trie, UChar32 start, * @return the number of bytes written or (if buffer overflow) needed for the trie * * @see ucptrie_openFromBinary() - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI int32_t U_EXPORT2 ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode *pErrorCode); @@ -341,7 +320,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * * Do not use this macro in any other way. * * @see UCPTRIE_VALUE_BITS_16 - * @draft ICU 63 + * @stable ICU 63 */ #define UCPTRIE_16(trie, i) ((trie)->data.ptr16[i]) @@ -351,7 +330,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * * Do not use this macro in any other way. * * @see UCPTRIE_VALUE_BITS_32 - * @draft ICU 63 + * @stable ICU 63 */ #define UCPTRIE_32(trie, i) ((trie)->data.ptr32[i]) @@ -361,7 +340,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * * Do not use this macro in any other way. * * @see UCPTRIE_VALUE_BITS_8 - * @draft ICU 63 + * @stable ICU 63 */ #define UCPTRIE_8(trie, i) ((trie)->data.ptr8[i]) @@ -373,7 +352,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * * @param dataAccess UCPTRIE_16, UCPTRIE_32, or UCPTRIE_8 according to the trie’s value width * @param c (UChar32, in) the input code point * @return The code point's trie value. - * @draft ICU 63 + * @stable ICU 63 */ #define UCPTRIE_FAST_GET(trie, dataAccess, c) dataAccess(trie, _UCPTRIE_CP_INDEX(trie, 0xffff, c)) @@ -385,7 +364,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * * @param dataAccess UCPTRIE_16, UCPTRIE_32, or UCPTRIE_8 according to the trie’s value width * @param c (UChar32, in) the input code point * @return The code point's trie value. - * @draft ICU 63 + * @stable ICU 63 */ #define UCPTRIE_SMALL_GET(trie, dataAccess, c) \ dataAccess(trie, _UCPTRIE_CP_INDEX(trie, UCPTRIE_SMALL_MAX, c)) @@ -401,9 +380,9 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * * @param limit (const UChar *, in) the limit pointer for the text, or NULL if NUL-terminated * @param c (UChar32, out) variable for the code point * @param result (out) variable for the trie lookup result - * @draft ICU 63 + * @stable ICU 63 */ -#define UCPTRIE_FAST_U16_NEXT(trie, dataAccess, src, limit, c, result) { \ +#define UCPTRIE_FAST_U16_NEXT(trie, dataAccess, src, limit, c, result) UPRV_BLOCK_MACRO_BEGIN { \ (c) = *(src)++; \ int32_t __index; \ if (!U16_IS_SURROGATE(c)) { \ @@ -419,7 +398,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * } \ } \ (result) = dataAccess(trie, __index); \ -} +} UPRV_BLOCK_MACRO_END /** * UTF-16: Reads the previous code point (UChar32 c, out), pre-decrements src, @@ -432,9 +411,9 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * * @param src (const UChar *, in/out) the source text pointer * @param c (UChar32, out) variable for the code point * @param result (out) variable for the trie lookup result - * @draft ICU 63 + * @stable ICU 63 */ -#define UCPTRIE_FAST_U16_PREV(trie, dataAccess, start, src, c, result) { \ +#define UCPTRIE_FAST_U16_PREV(trie, dataAccess, start, src, c, result) UPRV_BLOCK_MACRO_BEGIN { \ (c) = *--(src); \ int32_t __index; \ if (!U16_IS_SURROGATE(c)) { \ @@ -450,7 +429,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * } \ } \ (result) = dataAccess(trie, __index); \ -} +} UPRV_BLOCK_MACRO_END /** * UTF-8: Post-increments src and gets a value from the trie. @@ -466,9 +445,9 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * * @param src (const char *, in/out) the source text pointer * @param limit (const char *, in) the limit pointer for the text (must not be NULL) * @param result (out) variable for the trie lookup result - * @draft ICU 63 + * @stable ICU 63 */ -#define UCPTRIE_FAST_U8_NEXT(trie, dataAccess, src, limit, result) { \ +#define UCPTRIE_FAST_U8_NEXT(trie, dataAccess, src, limit, result) UPRV_BLOCK_MACRO_BEGIN { \ int32_t __lead = (uint8_t)*(src)++; \ if (!U8_IS_SINGLE(__lead)) { \ uint8_t __t1, __t2, __t3; \ @@ -496,7 +475,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * } \ } \ (result) = dataAccess(trie, __lead); \ -} +} UPRV_BLOCK_MACRO_END /** * UTF-8: Pre-decrements src and gets a value from the trie. @@ -512,9 +491,9 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * * @param start (const char *, in) the start pointer for the text * @param src (const char *, in/out) the source text pointer * @param result (out) variable for the trie lookup result - * @draft ICU 63 + * @stable ICU 63 */ -#define UCPTRIE_FAST_U8_PREV(trie, dataAccess, start, src, result) { \ +#define UCPTRIE_FAST_U8_PREV(trie, dataAccess, start, src, result) UPRV_BLOCK_MACRO_BEGIN { \ int32_t __index = (uint8_t)*--(src); \ if (!U8_IS_SINGLE(__index)) { \ __index = ucptrie_internalU8PrevIndex((trie), __index, (const uint8_t *)(start), \ @@ -523,7 +502,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * __index >>= 3; \ } \ (result) = dataAccess(trie, __index); \ -} +} UPRV_BLOCK_MACRO_END /** * Returns a trie value for an ASCII code point, without range checking. @@ -532,7 +511,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * * @param dataAccess UCPTRIE_16, UCPTRIE_32, or UCPTRIE_8 according to the trie’s value width * @param c (UChar32, in) the input code point; must be U+0000..U+007F * @return The ASCII code point's trie value. - * @draft ICU 63 + * @stable ICU 63 */ #define UCPTRIE_ASCII_GET(trie, dataAccess, c) dataAccess(trie, c) @@ -545,7 +524,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * * @param dataAccess UCPTRIE_16, UCPTRIE_32, or UCPTRIE_8 according to the trie’s value width * @param c (UChar32, in) the input code point, must be U+0000..U+FFFF * @return The BMP code point's trie value. - * @draft ICU 63 + * @stable ICU 63 */ #define UCPTRIE_FAST_BMP_GET(trie, dataAccess, c) dataAccess(trie, _UCPTRIE_FAST_INDEX(trie, c)) @@ -557,7 +536,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode * * @param dataAccess UCPTRIE_16, UCPTRIE_32, or UCPTRIE_8 according to the trie’s value width * @param c (UChar32, in) the input code point, must be U+10000..U+10FFFF * @return The supplementary code point's trie value. - * @draft ICU 63 + * @stable ICU 63 */ #define UCPTRIE_FAST_SUPP_GET(trie, dataAccess, c) dataAccess(trie, _UCPTRIE_SMALL_INDEX(trie, c)) @@ -642,5 +621,24 @@ ucptrie_internalU8PrevIndex(const UCPTrie *trie, UChar32 c, U_CDECL_END #endif // U_IN_DOXYGEN -#endif // U_HIDE_DRAFT_API + +#if U_SHOW_CPLUSPLUS_API + +U_NAMESPACE_BEGIN + +/** + * \class LocalUCPTriePointer + * "Smart pointer" class, closes a UCPTrie via ucptrie_close(). + * For most methods see the LocalPointerBase base class. + * + * @see LocalPointerBase + * @see LocalPointer + * @stable ICU 63 + */ +U_DEFINE_LOCAL_OPEN_POINTER(LocalUCPTriePointer, UCPTrie, ucptrie_close); + +U_NAMESPACE_END + +#endif // U_SHOW_CPLUSPLUS_API + #endif diff --git a/source/common/unicode/ucurr.h b/source/common/unicode/ucurr.h index c915327..f91cc0d 100644 --- a/source/common/unicode/ucurr.h +++ b/source/common/unicode/ucurr.h @@ -159,14 +159,14 @@ ucurr_unregister(UCurrRegistryKey key, UErrorCode* status); * @param currency null-terminated 3-letter ISO 4217 code * @param locale locale in which to display currency * @param nameStyle selector for which kind of name to return - * @param isChoiceFormat fill-in set to TRUE if the returned value - * is a ChoiceFormat pattern; otherwise it is a static string + * @param isChoiceFormat always set to FALSE, or can be NULL; + * display names are static strings; + * since ICU 4.4, ChoiceFormat patterns are no longer supported * @param len fill-in parameter to receive length of result * @param ec error code * @return pointer to display string of 'len' UChars. If the resource * data contains no entry for 'currency', then 'currency' itself is - * returned. If *isChoiceFormat is TRUE, then the result is a - * ChoiceFormat pattern. Otherwise it is a static string. + * returned. * @stable ICU 2.6 */ U_STABLE const UChar* U_EXPORT2 @@ -183,14 +183,15 @@ ucurr_getName(const UChar* currency, * currency object in the en_US locale is "US dollar" or "US dollars". * @param currency null-terminated 3-letter ISO 4217 code * @param locale locale in which to display currency - * @param isChoiceFormat fill-in set to TRUE if the returned value - * is a ChoiceFormat pattern; otherwise it is a static string + * @param isChoiceFormat always set to FALSE, or can be NULL; + * display names are static strings; + * since ICU 4.4, ChoiceFormat patterns are no longer supported * @param pluralCount plural count * @param len fill-in parameter to receive length of result * @param ec error code * @return pointer to display string of 'len' UChars. If the resource * data contains no entry for 'currency', then 'currency' itself is - * returned. + * returned. * @stable ICU 4.2 */ U_STABLE const UChar* U_EXPORT2 @@ -320,7 +321,7 @@ typedef enum UCurrCurrencyType { * Provides a UEnumeration object for listing ISO-4217 codes. * @param currType You can use one of several UCurrCurrencyType values for this * variable. You can also | (or) them together to get a specific list of - * currencies. Most people will want to use the (UCURR_CURRENCY|UCURR_NON_DEPRECATED) value to + * currencies. Most people will want to use the (UCURR_COMMON|UCURR_NON_DEPRECATED) value to * get a list of current currencies. * @param pErrorCode Error code * @stable ICU 3.2 diff --git a/source/common/unicode/udata.h b/source/common/unicode/udata.h index a0286e1..325ffcf 100644 --- a/source/common/unicode/udata.h +++ b/source/common/unicode/udata.h @@ -264,25 +264,6 @@ udata_openChoice(const char *path, const char *type, const char *name, U_STABLE void U_EXPORT2 udata_close(UDataMemory *pData); -#if U_SHOW_CPLUSPLUS_API - -U_NAMESPACE_BEGIN - -/** - * \class LocalUDataMemoryPointer - * "Smart pointer" class, closes a UDataMemory via udata_close(). - * For most methods see the LocalPointerBase base class. - * - * @see LocalPointerBase - * @see LocalPointer - * @stable ICU 4.4 - */ -U_DEFINE_LOCAL_OPEN_POINTER(LocalUDataMemoryPointer, UDataMemory, udata_close); - -U_NAMESPACE_END - -#endif - /** * Get the pointer to the actual data inside the data memory. * The data is read-only. @@ -434,4 +415,23 @@ udata_setFileAccess(UDataFileAccess access, UErrorCode *status); U_CDECL_END +#if U_SHOW_CPLUSPLUS_API + +U_NAMESPACE_BEGIN + +/** + * \class LocalUDataMemoryPointer + * "Smart pointer" class, closes a UDataMemory via udata_close(). + * For most methods see the LocalPointerBase base class. + * + * @see LocalPointerBase + * @see LocalPointer + * @stable ICU 4.4 + */ +U_DEFINE_LOCAL_OPEN_POINTER(LocalUDataMemoryPointer, UDataMemory, udata_close); + +U_NAMESPACE_END + +#endif // U_SHOW_CPLUSPLUS_API + #endif diff --git a/source/common/unicode/uloc.h b/source/common/unicode/uloc.h index 23a54a9..c45edad 100644 --- a/source/common/unicode/uloc.h +++ b/source/common/unicode/uloc.h @@ -742,12 +742,18 @@ uloc_getDisplayName(const char* localeID, /** - * Gets the specified locale from a list of all available locales. - * The return value is a pointer to an item of - * a locale name array. Both this array and the pointers - * it contains are owned by ICU and should not be deleted or written through - * by the caller. The locale name is terminated by a null pointer. - * @param n the specific locale name index of the available locale list + * Gets the specified locale from a list of available locales. + * + * This method corresponds to uloc_openAvailableByType called with the + * ULOC_AVAILABLE_DEFAULT type argument. + * + * The return value is a pointer to an item of a locale name array. Both this + * array and the pointers it contains are owned by ICU and should not be + * deleted or written through by the caller. The locale name is terminated by + * a null pointer. + * + * @param n the specific locale name index of the available locale list; + * should not exceed the number returned by uloc_countAvailable. * @return a specified locale name of all available locales * @stable ICU 2.0 */ @@ -762,6 +768,72 @@ uloc_getAvailable(int32_t n); */ U_STABLE int32_t U_EXPORT2 uloc_countAvailable(void); +#ifndef U_HIDE_DRAFT_API + +/** + * Types for uloc_getAvailableByType and uloc_countAvailableByType. + * + * @draft ICU 65 + */ +typedef enum ULocAvailableType { + /** + * Locales that return data when passed to ICU APIs, + * but not including legacy or alias locales. + * + * @draft ICU 65 + */ + ULOC_AVAILABLE_DEFAULT, + + /** + * Legacy or alias locales that return data when passed to ICU APIs. + * Examples of supported legacy or alias locales: + * + * - iw (alias to he) + * - mo (alias to ro) + * - zh_CN (alias to zh_Hans_CN) + * - sr_BA (alias to sr_Cyrl_BA) + * - ars (alias to ar_SA) + * + * The locales in this set are disjoint from the ones in + * ULOC_AVAILABLE_DEFAULT. To get both sets at the same time, use + * ULOC_AVAILABLE_WITH_LEGACY_ALIASES. + * + * @draft ICU 65 + */ + ULOC_AVAILABLE_ONLY_LEGACY_ALIASES, + + /** + * The union of the locales in ULOC_AVAILABLE_DEFAULT and + * ULOC_AVAILABLE_ONLY_LEGACY_ALIAS. + * + * @draft ICU 65 + */ + ULOC_AVAILABLE_WITH_LEGACY_ALIASES, + +#ifndef U_HIDE_INTERNAL_API + /** + * @internal + */ + ULOC_AVAILABLE_COUNT +#endif +} ULocAvailableType; + +/** + * Gets a list of available locales according to the type argument, allowing + * the user to access different sets of supported locales in ICU. + * + * The returned UEnumeration must be closed by the caller. + * + * @param type Type choice from ULocAvailableType. + * @param status Set if an error occurred. + * @return a UEnumeration owned by the caller, or nullptr on failure. + * @draft ICU 65 + */ +U_DRAFT UEnumeration* U_EXPORT2 +uloc_openAvailableByType(ULocAvailableType type, UErrorCode* status); + +#endif // U_HIDE_DRAFT_API + /** * * Gets a list of all available 2-letter language codes defined in ISO 639, diff --git a/source/common/unicode/umachine.h b/source/common/unicode/umachine.h index 0205da6..c52984c 100644 --- a/source/common/unicode/umachine.h +++ b/source/common/unicode/umachine.h @@ -140,6 +140,42 @@ #define U_FINAL final #endif +// Before ICU 65, function-like, multi-statement ICU macros were just defined as +// series of statements wrapped in { } blocks and the caller could choose to +// either treat them as if they were actual functions and end the invocation +// with a trailing ; creating an empty statement after the block or else omit +// this trailing ; using the knowledge that the macro would expand to { }. +// +// But doing so doesn't work well with macros that look like functions and +// compiler warnings about empty statements (ICU-20601) and ICU 65 therefore +// switches to the standard solution of wrapping such macros in do { } while. +// +// This will however break existing code that depends on being able to invoke +// these macros without a trailing ; so to be able to remain compatible with +// such code the wrapper is itself defined as macros so that it's possible to +// build ICU 65 and later with the old macro behaviour, like this: +// +// export CPPFLAGS='-DUPRV_BLOCK_MACRO_BEGIN="" -DUPRV_BLOCK_MACRO_END=""' +// runConfigureICU ... +// + +/** + * \def UPRV_BLOCK_MACRO_BEGIN + * Defined as the "do" keyword by default. + * @internal + */ +#ifndef UPRV_BLOCK_MACRO_BEGIN +#define UPRV_BLOCK_MACRO_BEGIN do +#endif + +/** + * \def UPRV_BLOCK_MACRO_END + * Defined as "while (FALSE)" by default. + * @internal + */ +#ifndef UPRV_BLOCK_MACRO_END +#define UPRV_BLOCK_MACRO_END while (FALSE) +#endif /*==========================================================================*/ /* limits for int32_t etc., like in POSIX inttypes.h */ diff --git a/source/common/unicode/umutablecptrie.h b/source/common/unicode/umutablecptrie.h index e75191a..13e71ef 100644 --- a/source/common/unicode/umutablecptrie.h +++ b/source/common/unicode/umutablecptrie.h @@ -9,8 +9,6 @@ #include "unicode/utypes.h" -#ifndef U_HIDE_DRAFT_API - #include "unicode/localpointer.h" #include "unicode/ucpmap.h" #include "unicode/ucptrie.h" @@ -44,7 +42,7 @@ U_CDECL_BEGIN * * @see UCPTrie * @see umutablecptrie_buildImmutable - * @draft ICU 63 + * @stable ICU 63 */ typedef struct UMutableCPTrie UMutableCPTrie; @@ -59,7 +57,7 @@ typedef struct UMutableCPTrie UMutableCPTrie; * @param errorValue the value for out-of-range code points and ill-formed UTF-8/16 * @param pErrorCode an in/out ICU UErrorCode * @return the trie - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI UMutableCPTrie * U_EXPORT2 umutablecptrie_open(uint32_t initialValue, uint32_t errorValue, UErrorCode *pErrorCode); @@ -71,7 +69,7 @@ umutablecptrie_open(uint32_t initialValue, uint32_t errorValue, UErrorCode *pErr * @param other the trie to clone * @param pErrorCode an in/out ICU UErrorCode * @return the trie clone - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI UMutableCPTrie * U_EXPORT2 umutablecptrie_clone(const UMutableCPTrie *other, UErrorCode *pErrorCode); @@ -80,7 +78,7 @@ umutablecptrie_clone(const UMutableCPTrie *other, UErrorCode *pErrorCode); * Closes a mutable trie and releases associated memory. * * @param trie the trie - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI void U_EXPORT2 umutablecptrie_close(UMutableCPTrie *trie); @@ -96,7 +94,7 @@ U_NAMESPACE_BEGIN * * @see LocalPointerBase * @see LocalPointer - * @draft ICU 63 + * @stable ICU 63 */ U_DEFINE_LOCAL_OPEN_POINTER(LocalUMutableCPTriePointer, UMutableCPTrie, umutablecptrie_close); @@ -111,7 +109,7 @@ U_NAMESPACE_END * @param map the source map * @param pErrorCode an in/out ICU UErrorCode * @return the mutable trie - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI UMutableCPTrie * U_EXPORT2 umutablecptrie_fromUCPMap(const UCPMap *map, UErrorCode *pErrorCode); @@ -123,7 +121,7 @@ umutablecptrie_fromUCPMap(const UCPMap *map, UErrorCode *pErrorCode); * @param trie the immutable trie * @param pErrorCode an in/out ICU UErrorCode * @return the mutable trie - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI UMutableCPTrie * U_EXPORT2 umutablecptrie_fromUCPTrie(const UCPTrie *trie, UErrorCode *pErrorCode); @@ -134,7 +132,7 @@ umutablecptrie_fromUCPTrie(const UCPTrie *trie, UErrorCode *pErrorCode); * @param trie the trie * @param c the code point * @return the value - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI uint32_t U_EXPORT2 umutablecptrie_get(const UMutableCPTrie *trie, UChar32 c); @@ -166,7 +164,7 @@ umutablecptrie_get(const UMutableCPTrie *trie, UChar32 c); * may have been modified by filter(context, trie value) * if that function pointer is not NULL * @return the range end code point, or -1 if start is not a valid code point - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI UChar32 U_EXPORT2 umutablecptrie_getRange(const UMutableCPTrie *trie, UChar32 start, @@ -180,7 +178,7 @@ umutablecptrie_getRange(const UMutableCPTrie *trie, UChar32 start, * @param c the code point * @param value the value * @param pErrorCode an in/out ICU UErrorCode - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI void U_EXPORT2 umutablecptrie_set(UMutableCPTrie *trie, UChar32 c, uint32_t value, UErrorCode *pErrorCode); @@ -194,7 +192,7 @@ umutablecptrie_set(UMutableCPTrie *trie, UChar32 c, uint32_t value, UErrorCode * * @param end the last code point to get the value (inclusive) * @param value the value * @param pErrorCode an in/out ICU UErrorCode - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI void U_EXPORT2 umutablecptrie_setRange(UMutableCPTrie *trie, @@ -229,7 +227,7 @@ umutablecptrie_setRange(UMutableCPTrie *trie, * @param pErrorCode an in/out ICU UErrorCode * * @see umutablecptrie_fromUCPTrie - * @draft ICU 63 + * @stable ICU 63 */ U_CAPI UCPTrie * U_EXPORT2 umutablecptrie_buildImmutable(UMutableCPTrie *trie, UCPTrieType type, UCPTrieValueWidth valueWidth, @@ -237,5 +235,4 @@ umutablecptrie_buildImmutable(UMutableCPTrie *trie, UCPTrieType type, UCPTrieVal U_CDECL_END -#endif // U_HIDE_DRAFT_API #endif diff --git a/source/common/unicode/unifilt.h b/source/common/unicode/unifilt.h index e105271..420e1a1 100644 --- a/source/common/unicode/unifilt.h +++ b/source/common/unicode/unifilt.h @@ -12,6 +12,10 @@ #ifndef UNIFILT_H #define UNIFILT_H +#include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/unifunct.h" #include "unicode/unimatch.h" @@ -68,6 +72,14 @@ public: virtual ~UnicodeFilter(); /** + * Clones this object polymorphically. + * The caller owns the result and should delete it when done. + * @return clone, or nullptr if an error occurred + * @stable ICU 2.4 + */ + virtual UnicodeFilter* clone() const = 0; + + /** * Returns true for characters that are in the selected * subset. In other words, if a character is to be * filtered, then contains() returns @@ -119,4 +131,6 @@ protected: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/unifunct.h b/source/common/unicode/unifunct.h index 1c50759..7d31af7 100644 --- a/source/common/unicode/unifunct.h +++ b/source/common/unicode/unifunct.h @@ -13,6 +13,9 @@ #define UNIFUNCT_H #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" /** @@ -124,4 +127,6 @@ protected: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/unimatch.h b/source/common/unicode/unimatch.h index ee4326f..5a192b1 100644 --- a/source/common/unicode/unimatch.h +++ b/source/common/unicode/unimatch.h @@ -17,6 +17,7 @@ * \brief C++ API: Unicode Matcher */ +#if U_SHOW_CPLUSPLUS_API U_NAMESPACE_BEGIN @@ -162,4 +163,6 @@ public: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/uniset.h b/source/common/unicode/uniset.h index 4a94d62..9742311 100644 --- a/source/common/unicode/uniset.h +++ b/source/common/unicode/uniset.h @@ -13,6 +13,10 @@ #ifndef UNICODESET_H #define UNICODESET_H +#include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/ucpmap.h" #include "unicode/unifilt.h" #include "unicode/unistr.h" @@ -501,7 +505,7 @@ public: * @see cloneAsThawed * @stable ICU 2.0 */ - virtual UnicodeFunctor* clone() const; + virtual UnicodeSet* clone() const; /** * Returns the hash code value for this set. @@ -579,7 +583,7 @@ public: * @see cloneAsThawed * @stable ICU 3.8 */ - UnicodeFunctor *freeze(); + UnicodeSet *freeze(); /** * Clone the set and make the clone mutable. @@ -589,7 +593,7 @@ public: * @see isFrozen * @stable ICU 3.8 */ - UnicodeFunctor *cloneAsThawed() const; + UnicodeSet *cloneAsThawed() const; //---------------------------------------------------------------- // Public API @@ -1651,11 +1655,10 @@ private: const UnicodeSet* inclusions, UErrorCode &status); -#ifndef U_HIDE_DRAFT_API // Skipped: ucpmap.h is draft only. + // UCPMap is now stable ICU 63 void applyIntPropertyValue(const UCPMap *map, UCPMapValueFilter *filter, const void *context, UErrorCode &errorCode); -#endif /* U_HIDE_DRAFT_API */ /** * Set the new pattern to cache. @@ -1736,4 +1739,6 @@ inline int32_t UnicodeSet::spanBack(const UnicodeString &s, int32_t limit, USetS U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/unistr.h b/source/common/unicode/unistr.h index 8fd1444..da79053 100644 --- a/source/common/unicode/unistr.h +++ b/source/common/unicode/unistr.h @@ -28,8 +28,11 @@ * \brief C++ API: Unicode String */ -#include #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + +#include #include "unicode/char16ptr.h" #include "unicode/rep.h" #include "unicode/std_string.h" @@ -209,7 +212,9 @@ class UnicodeStringAppendable; // unicode/appendable.h * similar functionality as the Java String and StringBuffer/StringBuilder classes. * It is a concrete implementation of the abstract class Replaceable (for transliteration). * - * A UnicodeString may also "alias" an external array of characters + * The UnicodeString equivalent of std::string’s clear() is remove(). + * + * A UnicodeString may "alias" an external array of characters * (that is, point to it, rather than own the array) * whose lifetime must then at least match the lifetime of the aliasing object. * This aliasing may be preserved when returning a UnicodeString by value, @@ -2092,8 +2097,7 @@ public: * s.truncate(0); // set to an empty string (complete truncation), or * s=UnicodeString(); // assign an empty string, or * s.setTo((UChar32)-1); // set to a pseudo code point that is out of range, or - * static const char16_t nul=0; - * s.setTo(&nul, 0); // set to an empty C Unicode string + * s.setTo(u"", 0); // set to an empty C Unicode string * } * \endcode * @@ -2534,11 +2538,14 @@ public: /* Remove operations */ /** - * Remove all characters from the UnicodeString object. + * Removes all characters from the UnicodeString object and clears the bogus flag. + * This is the UnicodeString equivalent of std::string’s clear(). + * * @return a reference to this + * @see setToBogus * @stable ICU 2.0 */ - inline UnicodeString& remove(void); + inline UnicodeString& remove(); /** * Remove the characters in the range @@ -3034,11 +3041,11 @@ public: * uint16_t * constructor. * Delegates to UnicodeString(const char16_t *, int32_t). * @param text UTF-16 string - * @param length string length + * @param textLength string length * @stable ICU 59 */ - UnicodeString(const uint16_t *text, int32_t length) : - UnicodeString(ConstChar16Ptr(text), length) {} + UnicodeString(const uint16_t *text, int32_t textLength) : + UnicodeString(ConstChar16Ptr(text), textLength) {} #endif #if U_SIZEOF_WCHAR_T==2 || defined(U_IN_DOXYGEN) @@ -3047,21 +3054,21 @@ public: * (Only defined if U_SIZEOF_WCHAR_T==2.) * Delegates to UnicodeString(const char16_t *, int32_t). * @param text NUL-terminated UTF-16 string - * @param length string length + * @param textLength string length * @stable ICU 59 */ - UnicodeString(const wchar_t *text, int32_t length) : - UnicodeString(ConstChar16Ptr(text), length) {} + UnicodeString(const wchar_t *text, int32_t textLength) : + UnicodeString(ConstChar16Ptr(text), textLength) {} #endif /** * nullptr_t constructor. * Effectively the same as the default constructor, makes an empty string object. * @param text nullptr - * @param length ignored + * @param textLength ignored * @stable ICU 59 */ - inline UnicodeString(const std::nullptr_t text, int32_t length); + inline UnicodeString(const std::nullptr_t text, int32_t textLength); /** * Readonly-aliasing char16_t* constructor. @@ -3266,13 +3273,13 @@ public: * } * \endcode * @param src String using only invariant characters. - * @param length Length of src, or -1 if NUL-terminated. + * @param textLength Length of src, or -1 if NUL-terminated. * @param inv Signature-distinguishing paramater, use US_INV. * * @see US_INV * @stable ICU 3.2 */ - UnicodeString(const char *src, int32_t length, enum EInvariant inv); + UnicodeString(const char *src, int32_t textLength, enum EInvariant inv); /** @@ -3323,9 +3330,6 @@ public: * Clones can be used concurrently in multiple threads. * If a subclass does not implement clone(), or if an error occurs, * then NULL is returned. - * The clone functions in all subclasses return a pointer to a Replaceable - * because some compilers do not support covariant (same-as-this) - * return types; cast to the appropriate subclass if necessary. * The caller must delete the clone. * * @return a clone of this object @@ -3334,7 +3338,7 @@ public: * @see getDynamicClassID * @stable ICU 2.6 */ - virtual Replaceable *clone() const; + virtual UnicodeString *clone() const; /** Destructor. * @stable ICU 2.0 @@ -4748,4 +4752,6 @@ UnicodeString::reverse(int32_t start, U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/unorm.h b/source/common/unicode/unorm.h index 3839de1..09dd366 100644 --- a/source/common/unicode/unorm.h +++ b/source/common/unicode/unorm.h @@ -131,6 +131,8 @@ // Do not conditionalize the following enum with #ifndef U_HIDE_DEPRECATED_API, // it is needed for layout of Normalizer object. +#ifndef U_FORCE_HIDE_DEPRECATED_API + /** * Constants for normalization modes. * @deprecated ICU 56 Use unorm2.h instead. @@ -155,6 +157,8 @@ typedef enum { UNORM_MODE_COUNT } UNormalizationMode; +#endif // U_FORCE_HIDE_DEPRECATED_API + #ifndef U_HIDE_DEPRECATED_API /** diff --git a/source/common/unicode/uobject.h b/source/common/unicode/uobject.h index c2663eb..eeb331c 100644 --- a/source/common/unicode/uobject.h +++ b/source/common/unicode/uobject.h @@ -20,6 +20,9 @@ #define __UOBJECT_H__ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/platform.h" /** @@ -43,7 +46,7 @@ * @stable ICU 4.2. Since ICU 64, Use U_NOEXCEPT instead. See ICU-20422. */ #ifndef U_NO_THROW -#define U_NO_THROW throw() +#define U_NO_THROW U_NOEXCEPT #endif /*===========================================================================*/ @@ -212,11 +215,8 @@ public: * The clone() function is not available in UObject because it is not * implemented by all ICU classes. * Many ICU services provide a clone() function for their class trees, - * defined on the service's C++ base class, and all subclasses within that - * service class tree return a pointer to the service base class + * defined on the service's C++ base class * (which itself is a subclass of UObject). - * This is because some compilers do not support covariant (same-as-this) - * return types; cast to the appropriate subclass if necessary. * * @stable ICU 2.2 */ @@ -319,4 +319,6 @@ protected: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/urename.h b/source/common/unicode/urename.h index eaf56c9..e302bf0 100644 --- a/source/common/unicode/urename.h +++ b/source/common/unicode/urename.h @@ -193,10 +193,13 @@ #define res_getAlias U_ICU_ENTRY_POINT_RENAME(res_getAlias) #define res_getArrayItem U_ICU_ENTRY_POINT_RENAME(res_getArrayItem) #define res_getBinary U_ICU_ENTRY_POINT_RENAME(res_getBinary) +#define res_getBinaryNoTrace U_ICU_ENTRY_POINT_RENAME(res_getBinaryNoTrace) #define res_getIntVector U_ICU_ENTRY_POINT_RENAME(res_getIntVector) +#define res_getIntVectorNoTrace U_ICU_ENTRY_POINT_RENAME(res_getIntVectorNoTrace) #define res_getPublicType U_ICU_ENTRY_POINT_RENAME(res_getPublicType) #define res_getResource U_ICU_ENTRY_POINT_RENAME(res_getResource) #define res_getString U_ICU_ENTRY_POINT_RENAME(res_getString) +#define res_getStringNoTrace U_ICU_ENTRY_POINT_RENAME(res_getStringNoTrace) #define res_getTableItemByIndex U_ICU_ENTRY_POINT_RENAME(res_getTableItemByIndex) #define res_getTableItemByKey U_ICU_ENTRY_POINT_RENAME(res_getTableItemByKey) #define res_load U_ICU_ENTRY_POINT_RENAME(res_load) @@ -523,6 +526,7 @@ #define ucal_getDefaultTimeZone U_ICU_ENTRY_POINT_RENAME(ucal_getDefaultTimeZone) #define ucal_getFieldDifference U_ICU_ENTRY_POINT_RENAME(ucal_getFieldDifference) #define ucal_getGregorianChange U_ICU_ENTRY_POINT_RENAME(ucal_getGregorianChange) +#define ucal_getHostTimeZone U_ICU_ENTRY_POINT_RENAME(ucal_getHostTimeZone) #define ucal_getKeywordValuesForLocale U_ICU_ENTRY_POINT_RENAME(ucal_getKeywordValuesForLocale) #define ucal_getLimit U_ICU_ENTRY_POINT_RENAME(ucal_getLimit) #define ucal_getLocaleByType U_ICU_ENTRY_POINT_RENAME(ucal_getLocaleByType) @@ -575,7 +579,6 @@ #define ucasemap_getLocale U_ICU_ENTRY_POINT_RENAME(ucasemap_getLocale) #define ucasemap_getOptions U_ICU_ENTRY_POINT_RENAME(ucasemap_getOptions) #define ucasemap_internalUTF8ToTitle U_ICU_ENTRY_POINT_RENAME(ucasemap_internalUTF8ToTitle) -#define ucasemap_mapUTF8 U_ICU_ENTRY_POINT_RENAME(ucasemap_mapUTF8) #define ucasemap_open U_ICU_ENTRY_POINT_RENAME(ucasemap_open) #define ucasemap_setBreakIterator U_ICU_ENTRY_POINT_RENAME(ucasemap_setBreakIterator) #define ucasemap_setLocale U_ICU_ENTRY_POINT_RENAME(ucasemap_setLocale) @@ -930,16 +933,9 @@ #define ufieldpositer_close U_ICU_ENTRY_POINT_RENAME(ufieldpositer_close) #define ufieldpositer_next U_ICU_ENTRY_POINT_RENAME(ufieldpositer_next) #define ufieldpositer_open U_ICU_ENTRY_POINT_RENAME(ufieldpositer_open) -#define ufile_close_translit U_ICU_ENTRY_POINT_RENAME(ufile_close_translit) -#define ufile_fill_uchar_buffer U_ICU_ENTRY_POINT_RENAME(ufile_fill_uchar_buffer) -#define ufile_flush_io U_ICU_ENTRY_POINT_RENAME(ufile_flush_io) -#define ufile_flush_translit U_ICU_ENTRY_POINT_RENAME(ufile_flush_translit) #define ufile_getch U_ICU_ENTRY_POINT_RENAME(ufile_getch) #define ufile_getch32 U_ICU_ENTRY_POINT_RENAME(ufile_getch32) -#define ufmt_64tou U_ICU_ENTRY_POINT_RENAME(ufmt_64tou) #define ufmt_close U_ICU_ENTRY_POINT_RENAME(ufmt_close) -#define ufmt_defaultCPToUnicode U_ICU_ENTRY_POINT_RENAME(ufmt_defaultCPToUnicode) -#define ufmt_digitvalue U_ICU_ENTRY_POINT_RENAME(ufmt_digitvalue) #define ufmt_getArrayItemByIndex U_ICU_ENTRY_POINT_RENAME(ufmt_getArrayItemByIndex) #define ufmt_getArrayLength U_ICU_ENTRY_POINT_RENAME(ufmt_getArrayLength) #define ufmt_getDate U_ICU_ENTRY_POINT_RENAME(ufmt_getDate) @@ -951,11 +947,7 @@ #define ufmt_getType U_ICU_ENTRY_POINT_RENAME(ufmt_getType) #define ufmt_getUChars U_ICU_ENTRY_POINT_RENAME(ufmt_getUChars) #define ufmt_isNumeric U_ICU_ENTRY_POINT_RENAME(ufmt_isNumeric) -#define ufmt_isdigit U_ICU_ENTRY_POINT_RENAME(ufmt_isdigit) #define ufmt_open U_ICU_ENTRY_POINT_RENAME(ufmt_open) -#define ufmt_ptou U_ICU_ENTRY_POINT_RENAME(ufmt_ptou) -#define ufmt_uto64 U_ICU_ENTRY_POINT_RENAME(ufmt_uto64) -#define ufmt_utop U_ICU_ENTRY_POINT_RENAME(ufmt_utop) #define ufmtval_getString U_ICU_ENTRY_POINT_RENAME(ufmtval_getString) #define ufmtval_nextPosition U_ICU_ENTRY_POINT_RENAME(ufmtval_nextPosition) #define ugender_getInstance U_ICU_ENTRY_POINT_RENAME(ugender_getInstance) @@ -1103,6 +1095,7 @@ #define uloc_getVariant U_ICU_ENTRY_POINT_RENAME(uloc_getVariant) #define uloc_isRightToLeft U_ICU_ENTRY_POINT_RENAME(uloc_isRightToLeft) #define uloc_minimizeSubtags U_ICU_ENTRY_POINT_RENAME(uloc_minimizeSubtags) +#define uloc_openAvailableByType U_ICU_ENTRY_POINT_RENAME(uloc_openAvailableByType) #define uloc_openKeywordList U_ICU_ENTRY_POINT_RENAME(uloc_openKeywordList) #define uloc_openKeywords U_ICU_ENTRY_POINT_RENAME(uloc_openKeywords) #define uloc_setDefault U_ICU_ENTRY_POINT_RENAME(uloc_setDefault) @@ -1159,9 +1152,6 @@ #define umsg_toPattern U_ICU_ENTRY_POINT_RENAME(umsg_toPattern) #define umsg_vformat U_ICU_ENTRY_POINT_RENAME(umsg_vformat) #define umsg_vparse U_ICU_ENTRY_POINT_RENAME(umsg_vparse) -#define umtx_condBroadcast U_ICU_ENTRY_POINT_RENAME(umtx_condBroadcast) -#define umtx_condSignal U_ICU_ENTRY_POINT_RENAME(umtx_condSignal) -#define umtx_condWait U_ICU_ENTRY_POINT_RENAME(umtx_condWait) #define umtx_lock U_ICU_ENTRY_POINT_RENAME(umtx_lock) #define umtx_unlock U_ICU_ENTRY_POINT_RENAME(umtx_unlock) #define umutablecptrie_buildImmutable U_ICU_ENTRY_POINT_RENAME(umutablecptrie_buildImmutable) @@ -1327,7 +1317,6 @@ #define uprv_decNumberAbs U_ICU_ENTRY_POINT_RENAME(uprv_decNumberAbs) #define uprv_decNumberAdd U_ICU_ENTRY_POINT_RENAME(uprv_decNumberAdd) #define uprv_decNumberAnd U_ICU_ENTRY_POINT_RENAME(uprv_decNumberAnd) -#define uprv_decNumberClass U_ICU_ENTRY_POINT_RENAME(uprv_decNumberClass) #define uprv_decNumberClassToString U_ICU_ENTRY_POINT_RENAME(uprv_decNumberClassToString) #define uprv_decNumberCompare U_ICU_ENTRY_POINT_RENAME(uprv_decNumberCompare) #define uprv_decNumberCompareSignal U_ICU_ENTRY_POINT_RENAME(uprv_decNumberCompareSignal) @@ -1393,6 +1382,7 @@ #define uprv_dlsym_func U_ICU_ENTRY_POINT_RENAME(uprv_dlsym_func) #define uprv_eastrncpy U_ICU_ENTRY_POINT_RENAME(uprv_eastrncpy) #define uprv_ebcdicFromAscii U_ICU_ENTRY_POINT_RENAME(uprv_ebcdicFromAscii) +#define uprv_ebcdicToAscii U_ICU_ENTRY_POINT_RENAME(uprv_ebcdicToAscii) #define uprv_ebcdicToLowercaseAscii U_ICU_ENTRY_POINT_RENAME(uprv_ebcdicToLowercaseAscii) #define uprv_ebcdictolower U_ICU_ENTRY_POINT_RENAME(uprv_ebcdictolower) #define uprv_fabs U_ICU_ENTRY_POINT_RENAME(uprv_fabs) @@ -1412,6 +1402,7 @@ #define uprv_getUTCtime U_ICU_ENTRY_POINT_RENAME(uprv_getUTCtime) #define uprv_int32Comparator U_ICU_ENTRY_POINT_RENAME(uprv_int32Comparator) #define uprv_isASCIILetter U_ICU_ENTRY_POINT_RENAME(uprv_isASCIILetter) +#define uprv_isEbcdicAtSign U_ICU_ENTRY_POINT_RENAME(uprv_isEbcdicAtSign) #define uprv_isInfinite U_ICU_ENTRY_POINT_RENAME(uprv_isInfinite) #define uprv_isInvariantString U_ICU_ENTRY_POINT_RENAME(uprv_isInvariantString) #define uprv_isInvariantUString U_ICU_ENTRY_POINT_RENAME(uprv_isInvariantUString) @@ -1579,6 +1570,7 @@ #define ures_getUTF8String U_ICU_ENTRY_POINT_RENAME(ures_getUTF8String) #define ures_getUTF8StringByIndex U_ICU_ENTRY_POINT_RENAME(ures_getUTF8StringByIndex) #define ures_getUTF8StringByKey U_ICU_ENTRY_POINT_RENAME(ures_getUTF8StringByKey) +#define ures_getValueWithFallback U_ICU_ENTRY_POINT_RENAME(ures_getValueWithFallback) #define ures_getVersion U_ICU_ENTRY_POINT_RENAME(ures_getVersion) #define ures_getVersionByKey U_ICU_ENTRY_POINT_RENAME(ures_getVersionByKey) #define ures_getVersionNumber U_ICU_ENTRY_POINT_RENAME(ures_getVersionNumber) diff --git a/source/common/unicode/usetiter.h b/source/common/unicode/usetiter.h index d0d9918..c6396fd 100644 --- a/source/common/unicode/usetiter.h +++ b/source/common/unicode/usetiter.h @@ -10,6 +10,9 @@ #define USETITER_H #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" #include "unicode/unistr.h" @@ -317,4 +320,6 @@ inline UChar32 UnicodeSetIterator::getCodepointEnd() const { U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/common/unicode/utext.h b/source/common/unicode/utext.h index 4b06962..196056b 100644 --- a/source/common/unicode/utext.h +++ b/source/common/unicode/utext.h @@ -766,12 +766,14 @@ utext_extract(UText *ut, * * @stable ICU 3.8 */ -#define UTEXT_SETNATIVEINDEX(ut, ix) \ - { int64_t __offset = (ix) - (ut)->chunkNativeStart; \ - if (__offset>=0 && __offset<(int64_t)(ut)->nativeIndexingLimit && (ut)->chunkContents[__offset]<0xdc00) { \ - (ut)->chunkOffset=(int32_t)__offset; \ - } else { \ - utext_setNativeIndex((ut), (ix)); } } +#define UTEXT_SETNATIVEINDEX(ut, ix) UPRV_BLOCK_MACRO_BEGIN { \ + int64_t __offset = (ix) - (ut)->chunkNativeStart; \ + if (__offset>=0 && __offset<(int64_t)(ut)->nativeIndexingLimit && (ut)->chunkContents[__offset]<0xdc00) { \ + (ut)->chunkOffset=(int32_t)__offset; \ + } else { \ + utext_setNativeIndex((ut), (ix)); \ + } \ +} UPRV_BLOCK_MACRO_END diff --git a/source/common/unicode/utf16.h b/source/common/unicode/utf16.h index aca51b5..9fd7d5c 100644 --- a/source/common/unicode/utf16.h +++ b/source/common/unicode/utf16.h @@ -163,7 +163,7 @@ * @see U16_GET * @stable ICU 2.4 */ -#define U16_GET_UNSAFE(s, i, c) { \ +#define U16_GET_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[i]; \ if(U16_IS_SURROGATE(c)) { \ if(U16_IS_SURROGATE_LEAD(c)) { \ @@ -172,7 +172,7 @@ (c)=U16_GET_SUPPLEMENTARY((s)[(i)-1], (c)); \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Get a code point from a string at a random-access offset, @@ -197,7 +197,7 @@ * @see U16_GET_UNSAFE * @stable ICU 2.4 */ -#define U16_GET(s, start, i, length, c) { \ +#define U16_GET(s, start, i, length, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[i]; \ if(U16_IS_SURROGATE(c)) { \ uint16_t __c2; \ @@ -211,7 +211,7 @@ } \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Get a code point from a string at a random-access offset, @@ -236,7 +236,7 @@ * @see U16_GET_UNSAFE * @stable ICU 60 */ -#define U16_GET_OR_FFFD(s, start, i, length, c) { \ +#define U16_GET_OR_FFFD(s, start, i, length, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[i]; \ if(U16_IS_SURROGATE(c)) { \ uint16_t __c2; \ @@ -254,7 +254,7 @@ } \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /* definitions with forward iteration --------------------------------------- */ @@ -277,12 +277,12 @@ * @see U16_NEXT * @stable ICU 2.4 */ -#define U16_NEXT_UNSAFE(s, i, c) { \ +#define U16_NEXT_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[(i)++]; \ if(U16_IS_LEAD(c)) { \ (c)=U16_GET_SUPPLEMENTARY((c), (s)[(i)++]); \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Get a code point from a string at a code point boundary offset, @@ -305,7 +305,7 @@ * @see U16_NEXT_UNSAFE * @stable ICU 2.4 */ -#define U16_NEXT(s, i, length, c) { \ +#define U16_NEXT(s, i, length, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[(i)++]; \ if(U16_IS_LEAD(c)) { \ uint16_t __c2; \ @@ -314,7 +314,7 @@ (c)=U16_GET_SUPPLEMENTARY((c), __c2); \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Get a code point from a string at a code point boundary offset, @@ -337,7 +337,7 @@ * @see U16_NEXT_UNSAFE * @stable ICU 60 */ -#define U16_NEXT_OR_FFFD(s, i, length, c) { \ +#define U16_NEXT_OR_FFFD(s, i, length, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[(i)++]; \ if(U16_IS_SURROGATE(c)) { \ uint16_t __c2; \ @@ -348,7 +348,7 @@ (c)=0xfffd; \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Append a code point to a string, overwriting 1 or 2 code units. @@ -363,14 +363,14 @@ * @see U16_APPEND * @stable ICU 2.4 */ -#define U16_APPEND_UNSAFE(s, i, c) { \ +#define U16_APPEND_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ if((uint32_t)(c)<=0xffff) { \ (s)[(i)++]=(uint16_t)(c); \ } else { \ (s)[(i)++]=(uint16_t)(((c)>>10)+0xd7c0); \ (s)[(i)++]=(uint16_t)(((c)&0x3ff)|0xdc00); \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Append a code point to a string, overwriting 1 or 2 code units. @@ -389,7 +389,7 @@ * @see U16_APPEND_UNSAFE * @stable ICU 2.4 */ -#define U16_APPEND(s, i, capacity, c, isError) { \ +#define U16_APPEND(s, i, capacity, c, isError) UPRV_BLOCK_MACRO_BEGIN { \ if((uint32_t)(c)<=0xffff) { \ (s)[(i)++]=(uint16_t)(c); \ } else if((uint32_t)(c)<=0x10ffff && (i)+1<(capacity)) { \ @@ -398,7 +398,7 @@ } else /* c>0x10ffff or not enough space */ { \ (isError)=TRUE; \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Advance the string offset from one code point boundary to the next. @@ -410,11 +410,11 @@ * @see U16_FWD_1 * @stable ICU 2.4 */ -#define U16_FWD_1_UNSAFE(s, i) { \ +#define U16_FWD_1_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ if(U16_IS_LEAD((s)[(i)++])) { \ ++(i); \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Advance the string offset from one code point boundary to the next. @@ -429,11 +429,11 @@ * @see U16_FWD_1_UNSAFE * @stable ICU 2.4 */ -#define U16_FWD_1(s, i, length) { \ +#define U16_FWD_1(s, i, length) UPRV_BLOCK_MACRO_BEGIN { \ if(U16_IS_LEAD((s)[(i)++]) && (i)!=(length) && U16_IS_TRAIL((s)[i])) { \ ++(i); \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Advance the string offset from one code point boundary to the n-th next one, @@ -447,13 +447,13 @@ * @see U16_FWD_N * @stable ICU 2.4 */ -#define U16_FWD_N_UNSAFE(s, i, n) { \ +#define U16_FWD_N_UNSAFE(s, i, n) UPRV_BLOCK_MACRO_BEGIN { \ int32_t __N=(n); \ while(__N>0) { \ U16_FWD_1_UNSAFE(s, i); \ --__N; \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Advance the string offset from one code point boundary to the n-th next one, @@ -470,13 +470,13 @@ * @see U16_FWD_N_UNSAFE * @stable ICU 2.4 */ -#define U16_FWD_N(s, i, length, n) { \ +#define U16_FWD_N(s, i, length, n) UPRV_BLOCK_MACRO_BEGIN { \ int32_t __N=(n); \ while(__N>0 && ((i)<(length) || ((length)<0 && (s)[i]!=0))) { \ U16_FWD_1(s, i, length); \ --__N; \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Adjust a random-access offset to a code point boundary @@ -491,11 +491,11 @@ * @see U16_SET_CP_START * @stable ICU 2.4 */ -#define U16_SET_CP_START_UNSAFE(s, i) { \ +#define U16_SET_CP_START_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ if(U16_IS_TRAIL((s)[i])) { \ --(i); \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Adjust a random-access offset to a code point boundary @@ -511,11 +511,11 @@ * @see U16_SET_CP_START_UNSAFE * @stable ICU 2.4 */ -#define U16_SET_CP_START(s, start, i) { \ +#define U16_SET_CP_START(s, start, i) UPRV_BLOCK_MACRO_BEGIN { \ if(U16_IS_TRAIL((s)[i]) && (i)>(start) && U16_IS_LEAD((s)[(i)-1])) { \ --(i); \ } \ -} +} UPRV_BLOCK_MACRO_END /* definitions with backward iteration -------------------------------------- */ @@ -539,12 +539,12 @@ * @see U16_PREV * @stable ICU 2.4 */ -#define U16_PREV_UNSAFE(s, i, c) { \ +#define U16_PREV_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[--(i)]; \ if(U16_IS_TRAIL(c)) { \ (c)=U16_GET_SUPPLEMENTARY((s)[--(i)], (c)); \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Move the string offset from one code point boundary to the previous one @@ -566,7 +566,7 @@ * @see U16_PREV_UNSAFE * @stable ICU 2.4 */ -#define U16_PREV(s, start, i, c) { \ +#define U16_PREV(s, start, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[--(i)]; \ if(U16_IS_TRAIL(c)) { \ uint16_t __c2; \ @@ -575,7 +575,7 @@ (c)=U16_GET_SUPPLEMENTARY(__c2, (c)); \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Move the string offset from one code point boundary to the previous one @@ -597,7 +597,7 @@ * @see U16_PREV_UNSAFE * @stable ICU 60 */ -#define U16_PREV_OR_FFFD(s, start, i, c) { \ +#define U16_PREV_OR_FFFD(s, start, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[--(i)]; \ if(U16_IS_SURROGATE(c)) { \ uint16_t __c2; \ @@ -608,7 +608,7 @@ (c)=0xfffd; \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Move the string offset from one code point boundary to the previous one. @@ -621,11 +621,11 @@ * @see U16_BACK_1 * @stable ICU 2.4 */ -#define U16_BACK_1_UNSAFE(s, i) { \ +#define U16_BACK_1_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ if(U16_IS_TRAIL((s)[--(i)])) { \ --(i); \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Move the string offset from one code point boundary to the previous one. @@ -639,11 +639,11 @@ * @see U16_BACK_1_UNSAFE * @stable ICU 2.4 */ -#define U16_BACK_1(s, start, i) { \ +#define U16_BACK_1(s, start, i) UPRV_BLOCK_MACRO_BEGIN { \ if(U16_IS_TRAIL((s)[--(i)]) && (i)>(start) && U16_IS_LEAD((s)[(i)-1])) { \ --(i); \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Move the string offset from one code point boundary to the n-th one before it, @@ -658,13 +658,13 @@ * @see U16_BACK_N * @stable ICU 2.4 */ -#define U16_BACK_N_UNSAFE(s, i, n) { \ +#define U16_BACK_N_UNSAFE(s, i, n) UPRV_BLOCK_MACRO_BEGIN { \ int32_t __N=(n); \ while(__N>0) { \ U16_BACK_1_UNSAFE(s, i); \ --__N; \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Move the string offset from one code point boundary to the n-th one before it, @@ -680,13 +680,13 @@ * @see U16_BACK_N_UNSAFE * @stable ICU 2.4 */ -#define U16_BACK_N(s, start, i, n) { \ +#define U16_BACK_N(s, start, i, n) UPRV_BLOCK_MACRO_BEGIN { \ int32_t __N=(n); \ while(__N>0 && (i)>(start)) { \ U16_BACK_1(s, start, i); \ --__N; \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Adjust a random-access offset to a code point boundary after a code point. @@ -701,11 +701,11 @@ * @see U16_SET_CP_LIMIT * @stable ICU 2.4 */ -#define U16_SET_CP_LIMIT_UNSAFE(s, i) { \ +#define U16_SET_CP_LIMIT_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ if(U16_IS_LEAD((s)[(i)-1])) { \ ++(i); \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Adjust a random-access offset to a code point boundary after a code point. @@ -724,10 +724,10 @@ * @see U16_SET_CP_LIMIT_UNSAFE * @stable ICU 2.4 */ -#define U16_SET_CP_LIMIT(s, start, i, length) { \ +#define U16_SET_CP_LIMIT(s, start, i, length) UPRV_BLOCK_MACRO_BEGIN { \ if((start)<(i) && ((i)<(length) || (length)<0) && U16_IS_LEAD((s)[(i)-1]) && U16_IS_TRAIL((s)[i])) { \ ++(i); \ } \ -} +} UPRV_BLOCK_MACRO_END #endif diff --git a/source/common/unicode/utf8.h b/source/common/unicode/utf8.h index 3685ae3..4987a00 100644 --- a/source/common/unicode/utf8.h +++ b/source/common/unicode/utf8.h @@ -229,11 +229,11 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_GET * @stable ICU 2.4 */ -#define U8_GET_UNSAFE(s, i, c) { \ +#define U8_GET_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ int32_t _u8_get_unsafe_index=(int32_t)(i); \ U8_SET_CP_START_UNSAFE(s, _u8_get_unsafe_index); \ U8_NEXT_UNSAFE(s, _u8_get_unsafe_index, c); \ -} +} UPRV_BLOCK_MACRO_END /** * Get a code point from a string at a random-access offset, @@ -256,11 +256,11 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_GET_UNSAFE * @stable ICU 2.4 */ -#define U8_GET(s, start, i, length, c) { \ +#define U8_GET(s, start, i, length, c) UPRV_BLOCK_MACRO_BEGIN { \ int32_t _u8_get_index=(i); \ U8_SET_CP_START(s, start, _u8_get_index); \ U8_NEXT(s, _u8_get_index, length, c); \ -} +} UPRV_BLOCK_MACRO_END /** * Get a code point from a string at a random-access offset, @@ -287,11 +287,11 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_GET * @stable ICU 51 */ -#define U8_GET_OR_FFFD(s, start, i, length, c) { \ +#define U8_GET_OR_FFFD(s, start, i, length, c) UPRV_BLOCK_MACRO_BEGIN { \ int32_t _u8_get_index=(i); \ U8_SET_CP_START(s, start, _u8_get_index); \ U8_NEXT_OR_FFFD(s, _u8_get_index, length, c); \ -} +} UPRV_BLOCK_MACRO_END /* definitions with forward iteration --------------------------------------- */ @@ -312,7 +312,7 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_NEXT * @stable ICU 2.4 */ -#define U8_NEXT_UNSAFE(s, i, c) { \ +#define U8_NEXT_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(uint8_t)(s)[(i)++]; \ if(!U8_IS_SINGLE(c)) { \ if((c)<0xe0) { \ @@ -326,7 +326,7 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); (i)+=3; \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Get a code point from a string at a code point boundary offset, @@ -377,7 +377,7 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); #define U8_NEXT_OR_FFFD(s, i, length, c) U8_INTERNAL_NEXT_OR_SUB(s, i, length, c, 0xfffd) /** @internal */ -#define U8_INTERNAL_NEXT_OR_SUB(s, i, length, c, sub) { \ +#define U8_INTERNAL_NEXT_OR_SUB(s, i, length, c, sub) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(uint8_t)(s)[(i)++]; \ if(!U8_IS_SINGLE(c)) { \ uint8_t __t = 0; \ @@ -403,7 +403,7 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); (c)=(sub); /* ill-formed*/ \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Append a code point to a string, overwriting 1 to 4 bytes. @@ -418,7 +418,7 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_APPEND * @stable ICU 2.4 */ -#define U8_APPEND_UNSAFE(s, i, c) { \ +#define U8_APPEND_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ uint32_t __uc=(c); \ if(__uc<=0x7f) { \ (s)[(i)++]=(uint8_t)__uc; \ @@ -436,7 +436,7 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); } \ (s)[(i)++]=(uint8_t)((__uc&0x3f)|0x80); \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Append a code point to a string, overwriting 1 to 4 bytes. @@ -455,7 +455,7 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_APPEND_UNSAFE * @stable ICU 2.4 */ -#define U8_APPEND(s, i, capacity, c, isError) { \ +#define U8_APPEND(s, i, capacity, c, isError) UPRV_BLOCK_MACRO_BEGIN { \ uint32_t __uc=(c); \ if(__uc<=0x7f) { \ (s)[(i)++]=(uint8_t)__uc; \ @@ -474,7 +474,7 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); } else { \ (isError)=TRUE; \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Advance the string offset from one code point boundary to the next. @@ -486,9 +486,9 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_FWD_1 * @stable ICU 2.4 */ -#define U8_FWD_1_UNSAFE(s, i) { \ +#define U8_FWD_1_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ (i)+=1+U8_COUNT_TRAIL_BYTES_UNSAFE((s)[i]); \ -} +} UPRV_BLOCK_MACRO_END /** * Advance the string offset from one code point boundary to the next. @@ -503,7 +503,7 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_FWD_1_UNSAFE * @stable ICU 2.4 */ -#define U8_FWD_1(s, i, length) { \ +#define U8_FWD_1(s, i, length) UPRV_BLOCK_MACRO_BEGIN { \ uint8_t __b=(s)[(i)++]; \ if(U8_IS_LEAD(__b) && (i)!=(length)) { \ uint8_t __t1=(s)[i]; \ @@ -524,7 +524,7 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); } \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Advance the string offset from one code point boundary to the n-th next one, @@ -538,13 +538,13 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_FWD_N * @stable ICU 2.4 */ -#define U8_FWD_N_UNSAFE(s, i, n) { \ +#define U8_FWD_N_UNSAFE(s, i, n) UPRV_BLOCK_MACRO_BEGIN { \ int32_t __N=(n); \ while(__N>0) { \ U8_FWD_1_UNSAFE(s, i); \ --__N; \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Advance the string offset from one code point boundary to the n-th next one, @@ -561,13 +561,13 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_FWD_N_UNSAFE * @stable ICU 2.4 */ -#define U8_FWD_N(s, i, length, n) { \ +#define U8_FWD_N(s, i, length, n) UPRV_BLOCK_MACRO_BEGIN { \ int32_t __N=(n); \ while(__N>0 && ((i)<(length) || ((length)<0 && (s)[i]!=0))) { \ U8_FWD_1(s, i, length); \ --__N; \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Adjust a random-access offset to a code point boundary @@ -582,9 +582,9 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_SET_CP_START * @stable ICU 2.4 */ -#define U8_SET_CP_START_UNSAFE(s, i) { \ +#define U8_SET_CP_START_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ while(U8_IS_TRAIL((s)[i])) { --(i); } \ -} +} UPRV_BLOCK_MACRO_END /** * Adjust a random-access offset to a code point boundary @@ -603,11 +603,11 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_TRUNCATE_IF_INCOMPLETE * @stable ICU 2.4 */ -#define U8_SET_CP_START(s, start, i) { \ +#define U8_SET_CP_START(s, start, i) UPRV_BLOCK_MACRO_BEGIN { \ if(U8_IS_TRAIL((s)[(i)])) { \ (i)=utf8_back1SafeBody(s, start, (i)); \ } \ -} +} UPRV_BLOCK_MACRO_END /** * If the string ends with a UTF-8 byte sequence that is valid so far @@ -635,7 +635,7 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_SET_CP_START * @stable ICU 61 */ -#define U8_TRUNCATE_IF_INCOMPLETE(s, start, length) \ +#define U8_TRUNCATE_IF_INCOMPLETE(s, start, length) UPRV_BLOCK_MACRO_BEGIN { \ if((length)>(start)) { \ uint8_t __b1=s[(length)-1]; \ if(U8_IS_SINGLE(__b1)) { \ @@ -656,7 +656,8 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); } \ } \ } \ - } + } \ +} UPRV_BLOCK_MACRO_END /* definitions with backward iteration -------------------------------------- */ @@ -679,7 +680,7 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_PREV * @stable ICU 2.4 */ -#define U8_PREV_UNSAFE(s, i, c) { \ +#define U8_PREV_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(uint8_t)(s)[--(i)]; \ if(U8_IS_TRAIL(c)) { \ uint8_t __b, __count=1, __shift=6; \ @@ -699,7 +700,7 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); } \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Move the string offset from one code point boundary to the previous one @@ -721,12 +722,12 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_PREV_UNSAFE * @stable ICU 2.4 */ -#define U8_PREV(s, start, i, c) { \ +#define U8_PREV(s, start, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(uint8_t)(s)[--(i)]; \ if(!U8_IS_SINGLE(c)) { \ (c)=utf8_prevCharSafeBody((const uint8_t *)s, start, &(i), c, -1); \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Move the string offset from one code point boundary to the previous one @@ -752,12 +753,12 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_PREV * @stable ICU 51 */ -#define U8_PREV_OR_FFFD(s, start, i, c) { \ +#define U8_PREV_OR_FFFD(s, start, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(uint8_t)(s)[--(i)]; \ if(!U8_IS_SINGLE(c)) { \ (c)=utf8_prevCharSafeBody((const uint8_t *)s, start, &(i), c, -3); \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Move the string offset from one code point boundary to the previous one. @@ -770,9 +771,9 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_BACK_1 * @stable ICU 2.4 */ -#define U8_BACK_1_UNSAFE(s, i) { \ +#define U8_BACK_1_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ while(U8_IS_TRAIL((s)[--(i)])) {} \ -} +} UPRV_BLOCK_MACRO_END /** * Move the string offset from one code point boundary to the previous one. @@ -786,11 +787,11 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_BACK_1_UNSAFE * @stable ICU 2.4 */ -#define U8_BACK_1(s, start, i) { \ +#define U8_BACK_1(s, start, i) UPRV_BLOCK_MACRO_BEGIN { \ if(U8_IS_TRAIL((s)[--(i)])) { \ (i)=utf8_back1SafeBody(s, start, (i)); \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Move the string offset from one code point boundary to the n-th one before it, @@ -805,13 +806,13 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_BACK_N * @stable ICU 2.4 */ -#define U8_BACK_N_UNSAFE(s, i, n) { \ +#define U8_BACK_N_UNSAFE(s, i, n) UPRV_BLOCK_MACRO_BEGIN { \ int32_t __N=(n); \ while(__N>0) { \ U8_BACK_1_UNSAFE(s, i); \ --__N; \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Move the string offset from one code point boundary to the n-th one before it, @@ -827,13 +828,13 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_BACK_N_UNSAFE * @stable ICU 2.4 */ -#define U8_BACK_N(s, start, i, n) { \ +#define U8_BACK_N(s, start, i, n) UPRV_BLOCK_MACRO_BEGIN { \ int32_t __N=(n); \ while(__N>0 && (i)>(start)) { \ U8_BACK_1(s, start, i); \ --__N; \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Adjust a random-access offset to a code point boundary after a code point. @@ -848,10 +849,10 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_SET_CP_LIMIT * @stable ICU 2.4 */ -#define U8_SET_CP_LIMIT_UNSAFE(s, i) { \ +#define U8_SET_CP_LIMIT_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ U8_BACK_1_UNSAFE(s, i); \ U8_FWD_1_UNSAFE(s, i); \ -} +} UPRV_BLOCK_MACRO_END /** * Adjust a random-access offset to a code point boundary after a code point. @@ -870,11 +871,11 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i); * @see U8_SET_CP_LIMIT_UNSAFE * @stable ICU 2.4 */ -#define U8_SET_CP_LIMIT(s, start, i, length) { \ +#define U8_SET_CP_LIMIT(s, start, i, length) UPRV_BLOCK_MACRO_BEGIN { \ if((start)<(i) && ((i)<(length) || (length)<0)) { \ U8_BACK_1(s, start, i); \ U8_FWD_1(s, i, length); \ } \ -} +} UPRV_BLOCK_MACRO_END #endif diff --git a/source/common/unicode/utf_old.h b/source/common/unicode/utf_old.h index 55c17c0..b2428e6 100644 --- a/source/common/unicode/utf_old.h +++ b/source/common/unicode/utf_old.h @@ -19,9 +19,6 @@ /** * \file * \brief C API: Deprecated macros for Unicode string handling - */ - -/** * * The macros in utf_old.h are all deprecated and their use discouraged. * Some of the design principles behind the set of UTF macros @@ -139,12 +136,16 @@ * *


    * - * @deprecated ICU 2.4. Use the macros in utf.h, utf16.h, utf8.h instead. + * Deprecated ICU 2.4. Use the macros in utf.h, utf16.h, utf8.h instead. */ #ifndef __UTF_OLD_H__ #define __UTF_OLD_H__ +#include "unicode/utf.h" +#include "unicode/utf8.h" +#include "unicode/utf16.h" + /** * \def U_HIDE_OBSOLETE_UTF_OLD_H * @@ -162,10 +163,6 @@ #if !defined(U_HIDE_DEPRECATED_API) && !U_HIDE_OBSOLETE_UTF_OLD_H -#include "unicode/utf.h" -#include "unicode/utf8.h" -#include "unicode/utf16.h" - /* Formerly utf.h, part 1 --------------------------------------------------- */ #ifdef U_USE_UTF_DEPRECATES @@ -365,21 +362,21 @@ U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[]; /* U_IMPORT2? */ /*U_I #define UTF8_ARRAY_SIZE(size) ((5*(size))/2) /** @deprecated ICU 2.4. Renamed to U8_GET_UNSAFE, see utf_old.h. */ -#define UTF8_GET_CHAR_UNSAFE(s, i, c) { \ +#define UTF8_GET_CHAR_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ int32_t _utf8_get_char_unsafe_index=(int32_t)(i); \ UTF8_SET_CHAR_START_UNSAFE(s, _utf8_get_char_unsafe_index); \ UTF8_NEXT_CHAR_UNSAFE(s, _utf8_get_char_unsafe_index, c); \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Use U8_GET instead, see utf_old.h. */ -#define UTF8_GET_CHAR_SAFE(s, start, i, length, c, strict) { \ +#define UTF8_GET_CHAR_SAFE(s, start, i, length, c, strict) UPRV_BLOCK_MACRO_BEGIN { \ int32_t _utf8_get_char_safe_index=(int32_t)(i); \ UTF8_SET_CHAR_START_SAFE(s, start, _utf8_get_char_safe_index); \ UTF8_NEXT_CHAR_SAFE(s, _utf8_get_char_safe_index, length, c, strict); \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U8_NEXT_UNSAFE, see utf_old.h. */ -#define UTF8_NEXT_CHAR_UNSAFE(s, i, c) { \ +#define UTF8_NEXT_CHAR_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[(i)++]; \ if((uint8_t)((c)-0xc0)<0x35) { \ uint8_t __count=UTF8_COUNT_TRAIL_BYTES(c); \ @@ -396,10 +393,10 @@ U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[]; /* U_IMPORT2? */ /*U_I break; \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U8_APPEND_UNSAFE, see utf_old.h. */ -#define UTF8_APPEND_CHAR_UNSAFE(s, i, c) { \ +#define UTF8_APPEND_CHAR_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ if((uint32_t)(c)<=0x7f) { \ (s)[(i)++]=(uint8_t)(c); \ } else { \ @@ -416,29 +413,29 @@ U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[]; /* U_IMPORT2? */ /*U_I } \ (s)[(i)++]=(uint8_t)(((c)&0x3f)|0x80); \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U8_FWD_1_UNSAFE, see utf_old.h. */ -#define UTF8_FWD_1_UNSAFE(s, i) { \ +#define UTF8_FWD_1_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ (i)+=1+UTF8_COUNT_TRAIL_BYTES((s)[i]); \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U8_FWD_N_UNSAFE, see utf_old.h. */ -#define UTF8_FWD_N_UNSAFE(s, i, n) { \ +#define UTF8_FWD_N_UNSAFE(s, i, n) UPRV_BLOCK_MACRO_BEGIN { \ int32_t __N=(n); \ while(__N>0) { \ UTF8_FWD_1_UNSAFE(s, i); \ --__N; \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U8_SET_CP_START_UNSAFE, see utf_old.h. */ -#define UTF8_SET_CHAR_START_UNSAFE(s, i) { \ +#define UTF8_SET_CHAR_START_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ while(UTF8_IS_TRAIL((s)[i])) { --(i); } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Use U8_NEXT instead, see utf_old.h. */ -#define UTF8_NEXT_CHAR_SAFE(s, i, length, c, strict) { \ +#define UTF8_NEXT_CHAR_SAFE(s, i, length, c, strict) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[(i)++]; \ if((c)>=0x80) { \ if(UTF8_IS_LEAD(c)) { \ @@ -447,16 +444,16 @@ U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[]; /* U_IMPORT2? */ /*U_I (c)=UTF8_ERROR_VALUE_1; \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Use U8_APPEND instead, see utf_old.h. */ -#define UTF8_APPEND_CHAR_SAFE(s, i, length, c) { \ +#define UTF8_APPEND_CHAR_SAFE(s, i, length, c) UPRV_BLOCK_MACRO_BEGIN { \ if((uint32_t)(c)<=0x7f) { \ (s)[(i)++]=(uint8_t)(c); \ } else { \ (i)=utf8_appendCharSafeBody(s, (int32_t)(i), (int32_t)(length), c, NULL); \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U8_FWD_1, see utf_old.h. */ #define UTF8_FWD_1_SAFE(s, i, length) U8_FWD_1(s, i, length) @@ -468,7 +465,7 @@ U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[]; /* U_IMPORT2? */ /*U_I #define UTF8_SET_CHAR_START_SAFE(s, start, i) U8_SET_CP_START(s, start, i) /** @deprecated ICU 2.4. Renamed to U8_PREV_UNSAFE, see utf_old.h. */ -#define UTF8_PREV_CHAR_UNSAFE(s, i, c) { \ +#define UTF8_PREV_CHAR_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[--(i)]; \ if(UTF8_IS_TRAIL(c)) { \ uint8_t __b, __count=1, __shift=6; \ @@ -488,30 +485,30 @@ U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[]; /* U_IMPORT2? */ /*U_I } \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U8_BACK_1_UNSAFE, see utf_old.h. */ -#define UTF8_BACK_1_UNSAFE(s, i) { \ +#define UTF8_BACK_1_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ while(UTF8_IS_TRAIL((s)[--(i)])) {} \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U8_BACK_N_UNSAFE, see utf_old.h. */ -#define UTF8_BACK_N_UNSAFE(s, i, n) { \ +#define UTF8_BACK_N_UNSAFE(s, i, n) UPRV_BLOCK_MACRO_BEGIN { \ int32_t __N=(n); \ while(__N>0) { \ UTF8_BACK_1_UNSAFE(s, i); \ --__N; \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U8_SET_CP_LIMIT_UNSAFE, see utf_old.h. */ -#define UTF8_SET_CHAR_LIMIT_UNSAFE(s, i) { \ +#define UTF8_SET_CHAR_LIMIT_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ UTF8_BACK_1_UNSAFE(s, i); \ UTF8_FWD_1_UNSAFE(s, i); \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Use U8_PREV instead, see utf_old.h. */ -#define UTF8_PREV_CHAR_SAFE(s, start, i, c, strict) { \ +#define UTF8_PREV_CHAR_SAFE(s, start, i, c, strict) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[--(i)]; \ if((c)>=0x80) { \ if((c)<=0xbf) { \ @@ -520,7 +517,7 @@ U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[]; /* U_IMPORT2? */ /*U_I (c)=UTF8_ERROR_VALUE_1; \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U8_BACK_1, see utf_old.h. */ #define UTF8_BACK_1_SAFE(s, start, i) U8_BACK_1(s, start, i) @@ -593,7 +590,7 @@ U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[]; /* U_IMPORT2? */ /*U_I * UTF16_PREV_CHAR[_UNSAFE]() is more efficient for that. * @deprecated ICU 2.4. Renamed to U16_GET_UNSAFE, see utf_old.h. */ -#define UTF16_GET_CHAR_UNSAFE(s, i, c) { \ +#define UTF16_GET_CHAR_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[i]; \ if(UTF_IS_SURROGATE(c)) { \ if(UTF_IS_SURROGATE_FIRST(c)) { \ @@ -602,10 +599,10 @@ U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[]; /* U_IMPORT2? */ /*U_I (c)=UTF16_GET_PAIR_VALUE((s)[(i)-1], (c)); \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Use U16_GET instead, see utf_old.h. */ -#define UTF16_GET_CHAR_SAFE(s, start, i, length, c, strict) { \ +#define UTF16_GET_CHAR_SAFE(s, start, i, length, c, strict) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[i]; \ if(UTF_IS_SURROGATE(c)) { \ uint16_t __c2; \ @@ -629,51 +626,51 @@ U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[]; /* U_IMPORT2? */ /*U_I } else if((strict) && !UTF_IS_UNICODE_CHAR(c)) { \ (c)=UTF_ERROR_VALUE; \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U16_NEXT_UNSAFE, see utf_old.h. */ -#define UTF16_NEXT_CHAR_UNSAFE(s, i, c) { \ +#define UTF16_NEXT_CHAR_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[(i)++]; \ if(UTF_IS_FIRST_SURROGATE(c)) { \ (c)=UTF16_GET_PAIR_VALUE((c), (s)[(i)++]); \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U16_APPEND_UNSAFE, see utf_old.h. */ -#define UTF16_APPEND_CHAR_UNSAFE(s, i, c) { \ +#define UTF16_APPEND_CHAR_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ if((uint32_t)(c)<=0xffff) { \ (s)[(i)++]=(uint16_t)(c); \ } else { \ (s)[(i)++]=(uint16_t)(((c)>>10)+0xd7c0); \ (s)[(i)++]=(uint16_t)(((c)&0x3ff)|0xdc00); \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U16_FWD_1_UNSAFE, see utf_old.h. */ -#define UTF16_FWD_1_UNSAFE(s, i) { \ +#define UTF16_FWD_1_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ if(UTF_IS_FIRST_SURROGATE((s)[(i)++])) { \ ++(i); \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U16_FWD_N_UNSAFE, see utf_old.h. */ -#define UTF16_FWD_N_UNSAFE(s, i, n) { \ +#define UTF16_FWD_N_UNSAFE(s, i, n) UPRV_BLOCK_MACRO_BEGIN { \ int32_t __N=(n); \ while(__N>0) { \ UTF16_FWD_1_UNSAFE(s, i); \ --__N; \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U16_SET_CP_START_UNSAFE, see utf_old.h. */ -#define UTF16_SET_CHAR_START_UNSAFE(s, i) { \ +#define UTF16_SET_CHAR_START_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ if(UTF_IS_SECOND_SURROGATE((s)[i])) { \ --(i); \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Use U16_NEXT instead, see utf_old.h. */ -#define UTF16_NEXT_CHAR_SAFE(s, i, length, c, strict) { \ +#define UTF16_NEXT_CHAR_SAFE(s, i, length, c, strict) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[(i)++]; \ if(UTF_IS_FIRST_SURROGATE(c)) { \ uint16_t __c2; \ @@ -689,10 +686,10 @@ U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[]; /* U_IMPORT2? */ /*U_I /* unmatched second surrogate or other non-character */ \ (c)=UTF_ERROR_VALUE; \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Use U16_APPEND instead, see utf_old.h. */ -#define UTF16_APPEND_CHAR_SAFE(s, i, length, c) { \ +#define UTF16_APPEND_CHAR_SAFE(s, i, length, c) UPRV_BLOCK_MACRO_BEGIN { \ if((uint32_t)(c)<=0xffff) { \ (s)[(i)++]=(uint16_t)(c); \ } else if((uint32_t)(c)<=0x10ffff) { \ @@ -705,7 +702,7 @@ U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[]; /* U_IMPORT2? */ /*U_I } else /* c>0x10ffff, write error value */ { \ (s)[(i)++]=UTF_ERROR_VALUE; \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U16_FWD_1, see utf_old.h. */ #define UTF16_FWD_1_SAFE(s, i, length) U16_FWD_1(s, i, length) @@ -717,38 +714,38 @@ U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[]; /* U_IMPORT2? */ /*U_I #define UTF16_SET_CHAR_START_SAFE(s, start, i) U16_SET_CP_START(s, start, i) /** @deprecated ICU 2.4. Renamed to U16_PREV_UNSAFE, see utf_old.h. */ -#define UTF16_PREV_CHAR_UNSAFE(s, i, c) { \ +#define UTF16_PREV_CHAR_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[--(i)]; \ if(UTF_IS_SECOND_SURROGATE(c)) { \ (c)=UTF16_GET_PAIR_VALUE((s)[--(i)], (c)); \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U16_BACK_1_UNSAFE, see utf_old.h. */ -#define UTF16_BACK_1_UNSAFE(s, i) { \ +#define UTF16_BACK_1_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ if(UTF_IS_SECOND_SURROGATE((s)[--(i)])) { \ --(i); \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U16_BACK_N_UNSAFE, see utf_old.h. */ -#define UTF16_BACK_N_UNSAFE(s, i, n) { \ +#define UTF16_BACK_N_UNSAFE(s, i, n) UPRV_BLOCK_MACRO_BEGIN { \ int32_t __N=(n); \ while(__N>0) { \ UTF16_BACK_1_UNSAFE(s, i); \ --__N; \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U16_SET_CP_LIMIT_UNSAFE, see utf_old.h. */ -#define UTF16_SET_CHAR_LIMIT_UNSAFE(s, i) { \ +#define UTF16_SET_CHAR_LIMIT_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ if(UTF_IS_FIRST_SURROGATE((s)[(i)-1])) { \ ++(i); \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Use U16_PREV instead, see utf_old.h. */ -#define UTF16_PREV_CHAR_SAFE(s, start, i, c, strict) { \ +#define UTF16_PREV_CHAR_SAFE(s, start, i, c, strict) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[--(i)]; \ if(UTF_IS_SECOND_SURROGATE(c)) { \ uint16_t __c2; \ @@ -764,7 +761,7 @@ U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[]; /* U_IMPORT2? */ /*U_I /* unmatched first surrogate or other non-character */ \ (c)=UTF_ERROR_VALUE; \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Renamed to U16_BACK_1, see utf_old.h. */ #define UTF16_BACK_1_SAFE(s, start, i) U16_BACK_1(s, start, i) @@ -830,122 +827,122 @@ U_CFUNC U_IMPORT const uint8_t utf8_countTrailBytes[]; /* U_IMPORT2? */ /*U_I #define UTF32_ARRAY_SIZE(size) (size) /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_GET_CHAR_UNSAFE(s, i, c) { \ +#define UTF32_GET_CHAR_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[i]; \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_GET_CHAR_SAFE(s, start, i, length, c, strict) { \ +#define UTF32_GET_CHAR_SAFE(s, start, i, length, c, strict) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[i]; \ if(!UTF32_IS_SAFE(c, strict)) { \ (c)=UTF_ERROR_VALUE; \ } \ -} +} UPRV_BLOCK_MACRO_END /* definitions with forward iteration --------------------------------------- */ /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_NEXT_CHAR_UNSAFE(s, i, c) { \ +#define UTF32_NEXT_CHAR_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[(i)++]; \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_APPEND_CHAR_UNSAFE(s, i, c) { \ +#define UTF32_APPEND_CHAR_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (s)[(i)++]=(c); \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_FWD_1_UNSAFE(s, i) { \ +#define UTF32_FWD_1_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ ++(i); \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_FWD_N_UNSAFE(s, i, n) { \ +#define UTF32_FWD_N_UNSAFE(s, i, n) UPRV_BLOCK_MACRO_BEGIN { \ (i)+=(n); \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_SET_CHAR_START_UNSAFE(s, i) { \ -} +#define UTF32_SET_CHAR_START_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_NEXT_CHAR_SAFE(s, i, length, c, strict) { \ +#define UTF32_NEXT_CHAR_SAFE(s, i, length, c, strict) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[(i)++]; \ if(!UTF32_IS_SAFE(c, strict)) { \ (c)=UTF_ERROR_VALUE; \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_APPEND_CHAR_SAFE(s, i, length, c) { \ +#define UTF32_APPEND_CHAR_SAFE(s, i, length, c) UPRV_BLOCK_MACRO_BEGIN { \ if((uint32_t)(c)<=0x10ffff) { \ (s)[(i)++]=(c); \ } else /* c>0x10ffff, write 0xfffd */ { \ (s)[(i)++]=0xfffd; \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_FWD_1_SAFE(s, i, length) { \ +#define UTF32_FWD_1_SAFE(s, i, length) UPRV_BLOCK_MACRO_BEGIN { \ ++(i); \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_FWD_N_SAFE(s, i, length, n) { \ +#define UTF32_FWD_N_SAFE(s, i, length, n) UPRV_BLOCK_MACRO_BEGIN { \ if(((i)+=(n))>(length)) { \ (i)=(length); \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_SET_CHAR_START_SAFE(s, start, i) { \ -} +#define UTF32_SET_CHAR_START_SAFE(s, start, i) UPRV_BLOCK_MACRO_BEGIN { \ +} UPRV_BLOCK_MACRO_END /* definitions with backward iteration -------------------------------------- */ /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_PREV_CHAR_UNSAFE(s, i, c) { \ +#define UTF32_PREV_CHAR_UNSAFE(s, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[--(i)]; \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_BACK_1_UNSAFE(s, i) { \ +#define UTF32_BACK_1_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ --(i); \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_BACK_N_UNSAFE(s, i, n) { \ +#define UTF32_BACK_N_UNSAFE(s, i, n) UPRV_BLOCK_MACRO_BEGIN { \ (i)-=(n); \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_SET_CHAR_LIMIT_UNSAFE(s, i) { \ -} +#define UTF32_SET_CHAR_LIMIT_UNSAFE(s, i) UPRV_BLOCK_MACRO_BEGIN { \ +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_PREV_CHAR_SAFE(s, start, i, c, strict) { \ +#define UTF32_PREV_CHAR_SAFE(s, start, i, c, strict) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(s)[--(i)]; \ if(!UTF32_IS_SAFE(c, strict)) { \ (c)=UTF_ERROR_VALUE; \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_BACK_1_SAFE(s, start, i) { \ +#define UTF32_BACK_1_SAFE(s, start, i) UPRV_BLOCK_MACRO_BEGIN { \ --(i); \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_BACK_N_SAFE(s, start, i, n) { \ +#define UTF32_BACK_N_SAFE(s, start, i, n) UPRV_BLOCK_MACRO_BEGIN { \ (i)-=(n); \ if((i)<(start)) { \ (i)=(start); \ } \ -} +} UPRV_BLOCK_MACRO_END /** @deprecated ICU 2.4. Obsolete, see utf_old.h. */ -#define UTF32_SET_CHAR_LIMIT_SAFE(s, i, length) { \ -} +#define UTF32_SET_CHAR_LIMIT_SAFE(s, i, length) UPRV_BLOCK_MACRO_BEGIN { \ +} UPRV_BLOCK_MACRO_END /* Formerly utf.h, part 2 --------------------------------------------------- */ diff --git a/source/common/unicode/utrace.h b/source/common/unicode/utrace.h index 6626978..5afcd9f 100644 --- a/source/common/unicode/utrace.h +++ b/source/common/unicode/utrace.h @@ -66,6 +66,7 @@ typedef enum UTraceFunctionNumber { UTRACE_FUNCTION_START=0, UTRACE_U_INIT=UTRACE_FUNCTION_START, UTRACE_U_CLEANUP, + #ifndef U_HIDE_DEPRECATED_API /** * One more than the highest normal collation trace location. @@ -83,6 +84,7 @@ typedef enum UTraceFunctionNumber { UTRACE_UCNV_FLUSH_CACHE, UTRACE_UCNV_LOAD, UTRACE_UCNV_UNLOAD, + #ifndef U_HIDE_DEPRECATED_API /** * One more than the highest normal collation trace location. @@ -101,13 +103,80 @@ typedef enum UTraceFunctionNumber { UTRACE_UCOL_STRCOLLITER, UTRACE_UCOL_OPEN_FROM_SHORT_STRING, UTRACE_UCOL_STRCOLLUTF8, /**< @stable ICU 50 */ + #ifndef U_HIDE_DEPRECATED_API /** * One more than the highest normal collation trace location. * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420. */ - UTRACE_COLLATION_LIMIT + UTRACE_COLLATION_LIMIT, #endif // U_HIDE_DEPRECATED_API + +#ifndef U_HIDE_DRAFT_API + + /** + * The lowest resource/data location. + * @draft ICU 65 + */ + UTRACE_UDATA_START=0x3000, + + /** + * Indicates that a value was read from a resource bundle. Provides three + * C-style strings to UTraceData: type, file name, and resource path. The + * possible types are: + * + * - "string" (a string value was accessed) + * - "binary" (a binary value was accessed) + * - "intvector" (a integer vector value was accessed) + * - "int" (a signed integer value was accessed) + * - "uint" (a unsigned integer value was accessed) + * - "get" (a path was loaded, but the value was not accessed) + * - "getalias" (a path was loaded, and an alias was resolved) + * + * @draft ICU 65 + */ + UTRACE_UDATA_RESOURCE=UTRACE_UDATA_START, + + /** + * Indicates that a resource bundle was opened. + * + * Provides one C-style string to UTraceData: file name. + * @draft ICU 65 + */ + UTRACE_UDATA_BUNDLE, + + /** + * Indicates that a data file was opened, but not *.res files. + * + * Provides one C-style string to UTraceData: file name. + * + * @draft ICU 65 + */ + UTRACE_UDATA_DATA_FILE, + + /** + * Indicates that a *.res file was opened. + * + * This differs from UTRACE_UDATA_BUNDLE because a res file is typically + * opened only once per application runtime, but the bundle corresponding + * to that res file may be opened many times. + * + * Provides one C-style string to UTraceData: file name. + * + * @draft ICU 65 + */ + UTRACE_UDATA_RES_FILE, + +#endif // U_HIDE_DRAFT_API + +#ifndef U_HIDE_INTERNAL_API + /** + * One more than the highest normal resource/data trace location. + * @internal The numeric value may change over time, see ICU ticket #12420. + */ + UTRACE_RES_DATA_LIMIT, +#endif // U_HIDE_INTERNAL_API + } UTraceFunctionNumber; /** diff --git a/source/common/unicode/utypes.h b/source/common/unicode/utypes.h index f224ae4..8d8f547 100644 --- a/source/common/unicode/utypes.h +++ b/source/common/unicode/utypes.h @@ -385,17 +385,31 @@ typedef double UDate; /*===========================================================================*/ /** - * Error code to replace exception handling, so that the code is compatible with all C++ compilers, - * and to use the same mechanism for C and C++. + * Standard ICU4C error code type, a substitute for exceptions. + * + * Initialize the UErrorCode with U_ZERO_ERROR, and check for success or + * failure using U_SUCCESS() or U_FAILURE(): + * + * UErrorCode errorCode = U_ZERO_ERROR; + * // call ICU API that needs an error code parameter. + * if (U_FAILURE(errorCode)) { + * // An error occurred. Handle it here. + * } + * + * C++ code should use icu::ErrorCode, available in unicode/errorcode.h, or a + * suitable subclass. + * + * For more information, see: + * http://icu-project.org/userguide/conventions + * + * Note: By convention, ICU functions that take a reference (C++) or a pointer + * (C) to a UErrorCode first test: + * + * if (U_FAILURE(errorCode)) { return immediately; } * - * \par - * ICU functions that take a reference (C++) or a pointer (C) to a UErrorCode - * first test if(U_FAILURE(errorCode)) { return immediately; } * so that in a chain of such functions the first one that sets an error code * causes the following ones to not perform any operations. * - * \par - * Error codes should be tested using U_FAILURE() and U_SUCCESS(). * @stable ICU 2.0 */ typedef enum UErrorCode { diff --git a/source/common/unicode/uvernum.h b/source/common/unicode/uvernum.h index 7c114be..0923c1d 100644 --- a/source/common/unicode/uvernum.h +++ b/source/common/unicode/uvernum.h @@ -60,13 +60,13 @@ * This value will change in the subsequent releases of ICU * @stable ICU 2.4 */ -#define U_ICU_VERSION_MAJOR_NUM 64 +#define U_ICU_VERSION_MAJOR_NUM 65 /** The current ICU minor version as an integer. * This value will change in the subsequent releases of ICU * @stable ICU 2.6 */ -#define U_ICU_VERSION_MINOR_NUM 2 +#define U_ICU_VERSION_MINOR_NUM 1 /** The current ICU patchlevel version as an integer. * This value will change in the subsequent releases of ICU @@ -86,7 +86,7 @@ * This value will change in the subsequent releases of ICU * @stable ICU 2.6 */ -#define U_ICU_VERSION_SUFFIX _64 +#define U_ICU_VERSION_SUFFIX _65 /** * \def U_DEF2_ICU_ENTRY_POINT_RENAME @@ -139,7 +139,7 @@ * This value will change in the subsequent releases of ICU * @stable ICU 2.4 */ -#define U_ICU_VERSION "64.2" +#define U_ICU_VERSION "65.1" /** * The current ICU library major version number as a string, for library name suffixes. @@ -152,13 +152,13 @@ * * @stable ICU 2.6 */ -#define U_ICU_VERSION_SHORT "64" +#define U_ICU_VERSION_SHORT "65" #ifndef U_HIDE_INTERNAL_API /** Data version in ICU4C. * @internal ICU 4.4 Internal Use Only **/ -#define U_ICU_DATA_VERSION "64.2" +#define U_ICU_DATA_VERSION "65.1" #endif /* U_HIDE_INTERNAL_API */ /*=========================================================================== diff --git a/source/common/unicode/uversion.h b/source/common/unicode/uversion.h index 4aaa8b4..5700f62 100644 --- a/source/common/unicode/uversion.h +++ b/source/common/unicode/uversion.h @@ -62,26 +62,22 @@ typedef uint8_t UVersionInfo[U_MAX_VERSION_LENGTH]; /* C++ namespace if supported. Versioned unless versioning is disabled. */ /*===========================================================================*/ +/* Define C++ namespace symbols. */ +#ifdef __cplusplus + /** * \def U_NAMESPACE_BEGIN - * This is used to begin a declaration of a public ICU C++ API. - * When not compiling for C++, it does nothing. - * When compiling for C++, it begins an extern "C++" linkage block (to protect - * against cases in which an external client includes ICU header files inside - * an extern "C" linkage block). + * This is used to begin a declaration of a public ICU C++ API within + * versioned-ICU-namespace block. * - * It also begins a versioned-ICU-namespace block. * @stable ICU 2.4 */ /** * \def U_NAMESPACE_END * This is used to end a declaration of a public ICU C++ API. - * When not compiling for C++, it does nothing. - * When compiling for C++, it ends the extern "C++" block begun by - * U_NAMESPACE_BEGIN. + * It ends the versioned-ICU-namespace block begun by U_NAMESPACE_BEGIN. * - * It also ends the versioned-ICU-namespace block begun by U_NAMESPACE_BEGIN. * @stable ICU 2.4 */ @@ -89,9 +85,6 @@ typedef uint8_t UVersionInfo[U_MAX_VERSION_LENGTH]; * \def U_NAMESPACE_USE * This is used to specify that the rest of the code uses the * public ICU C++ API namespace. - * This is invoked by default; we recommend that you turn it off: - * See the "Recommended Build Options" section of the ICU4C readme - * (http://source.icu-project.org/repos/icu/icu/trunk/readme.html#RecBuild) * @stable ICU 2.4 */ @@ -105,8 +98,6 @@ typedef uint8_t UVersionInfo[U_MAX_VERSION_LENGTH]; * @stable ICU 2.4 */ -/* Define C++ namespace symbols. */ -#ifdef __cplusplus # if U_DISABLE_RENAMING # define U_ICU_NAMESPACE icu namespace U_ICU_NAMESPACE { } @@ -116,8 +107,8 @@ typedef uint8_t UVersionInfo[U_MAX_VERSION_LENGTH]; namespace icu = U_ICU_NAMESPACE; # endif -# define U_NAMESPACE_BEGIN extern "C++" { namespace U_ICU_NAMESPACE { -# define U_NAMESPACE_END } } +# define U_NAMESPACE_BEGIN namespace U_ICU_NAMESPACE { +# define U_NAMESPACE_END } # define U_NAMESPACE_USE using namespace U_ICU_NAMESPACE; # define U_NAMESPACE_QUALIFIER U_ICU_NAMESPACE:: @@ -133,12 +124,7 @@ typedef uint8_t UVersionInfo[U_MAX_VERSION_LENGTH]; # if U_USING_ICU_NAMESPACE U_NAMESPACE_USE # endif -#else -# define U_NAMESPACE_BEGIN -# define U_NAMESPACE_END -# define U_NAMESPACE_USE -# define U_NAMESPACE_QUALIFIER -#endif +#endif /* __cplusplus */ /*===========================================================================*/ /* General version helper functions. Definitions in putil.c */ diff --git a/source/common/unifiedcache.cpp b/source/common/unifiedcache.cpp index 641f4ec..f2dd916 100644 --- a/source/common/unifiedcache.cpp +++ b/source/common/unifiedcache.cpp @@ -13,22 +13,15 @@ #include "unifiedcache.h" #include // For std::max() +#include -#include "mutex.h" #include "uassert.h" #include "uhash.h" #include "ucln_cmn.h" -#include "umutex.h" static icu::UnifiedCache *gCache = NULL; -static icu::UMutex *gCacheMutex() { - static icu::UMutex m = U_MUTEX_INITIALIZER; - return &m; -} -static icu::UConditionVar *gInProgressValueAddedCond() { - static icu::UConditionVar cv = U_CONDITION_INITIALIZER; - return &cv; -} +static std::mutex *gCacheMutex = nullptr; +static std::condition_variable *gInProgressValueAddedCond; static icu::UInitOnce gCacheInitOnce = U_INITONCE_INITIALIZER; static const int32_t MAX_EVICT_ITERATIONS = 10; @@ -39,10 +32,12 @@ static const int32_t DEFAULT_PERCENTAGE_OF_IN_USE = 100; U_CDECL_BEGIN static UBool U_CALLCONV unifiedcache_cleanup() { gCacheInitOnce.reset(); - if (gCache) { - delete gCache; - gCache = NULL; - } + delete gCache; + gCache = nullptr; + gCacheMutex->~mutex(); + gCacheMutex = nullptr; + gInProgressValueAddedCond->~condition_variable(); + gInProgressValueAddedCond = nullptr; return TRUE; } U_CDECL_END @@ -77,6 +72,8 @@ static void U_CALLCONV cacheInit(UErrorCode &status) { ucln_common_registerCleanup( UCLN_COMMON_UNIFIED_CACHE, unifiedcache_cleanup); + gCacheMutex = STATIC_NEW(std::mutex); + gInProgressValueAddedCond = STATIC_NEW(std::condition_variable); gCache = new UnifiedCache(status); if (gCache == NULL) { status = U_MEMORY_ALLOCATION_ERROR; @@ -138,28 +135,28 @@ void UnifiedCache::setEvictionPolicy( status = U_ILLEGAL_ARGUMENT_ERROR; return; } - Mutex lock(gCacheMutex()); + std::lock_guard lock(*gCacheMutex); fMaxUnused = count; fMaxPercentageOfInUse = percentageOfInUseItems; } int32_t UnifiedCache::unusedCount() const { - Mutex lock(gCacheMutex()); + std::lock_guard lock(*gCacheMutex); return uhash_count(fHashtable) - fNumValuesInUse; } int64_t UnifiedCache::autoEvictedCount() const { - Mutex lock(gCacheMutex()); + std::lock_guard lock(*gCacheMutex); return fAutoEvictedCount; } int32_t UnifiedCache::keyCount() const { - Mutex lock(gCacheMutex()); + std::lock_guard lock(*gCacheMutex); return uhash_count(fHashtable); } void UnifiedCache::flush() const { - Mutex lock(gCacheMutex()); + std::lock_guard lock(*gCacheMutex); // Use a loop in case cache items that are flushed held hard references to // other cache items making those additional cache items eligible for @@ -168,7 +165,7 @@ void UnifiedCache::flush() const { } void UnifiedCache::handleUnreferencedObject() const { - Mutex lock(gCacheMutex()); + std::lock_guard lock(*gCacheMutex); --fNumValuesInUse; _runEvictionSlice(); } @@ -187,7 +184,7 @@ void UnifiedCache::dump() { } void UnifiedCache::dumpContents() const { - Mutex lock(gCacheMutex()); + std::lock_guard lock(*gCacheMutex); _dumpContents(); } @@ -227,7 +224,7 @@ UnifiedCache::~UnifiedCache() { // Now all that should be left in the cache are entries that refer to // each other and entries with hard references from outside the cache. // Nothing we can do about these so proceed to wipe out the cache. - Mutex lock(gCacheMutex()); + std::lock_guard lock(*gCacheMutex); _flush(TRUE); } uhash_close(fHashtable); @@ -328,7 +325,7 @@ void UnifiedCache::_putIfAbsentAndGet( const CacheKeyBase &key, const SharedObject *&value, UErrorCode &status) const { - Mutex lock(gCacheMutex()); + std::lock_guard lock(*gCacheMutex); const UHashElement *element = uhash_find(fHashtable, &key); if (element != NULL && !_inProgress(element)) { _fetch(element, value, status); @@ -353,15 +350,15 @@ UBool UnifiedCache::_poll( UErrorCode &status) const { U_ASSERT(value == NULL); U_ASSERT(status == U_ZERO_ERROR); - Mutex lock(gCacheMutex()); + std::unique_lock lock(*gCacheMutex); const UHashElement *element = uhash_find(fHashtable, &key); // If the hash table contains an inProgress placeholder entry for this key, // this means that another thread is currently constructing the value object. // Loop, waiting for that construction to complete. while (element != NULL && _inProgress(element)) { - umtx_condWait(gInProgressValueAddedCond(), gCacheMutex()); - element = uhash_find(fHashtable, &key); + gInProgressValueAddedCond->wait(lock); + element = uhash_find(fHashtable, &key); } // If the hash table contains an entry for the key, @@ -433,7 +430,7 @@ void UnifiedCache::_put( // Tell waiting threads that we replace in-progress status with // an error. - umtx_condBroadcast(gInProgressValueAddedCond()); + gInProgressValueAddedCond->notify_all(); } void UnifiedCache::_fetch( diff --git a/source/common/uniset.cpp b/source/common/uniset.cpp index 2024277..b73d612 100644 --- a/source/common/uniset.cpp +++ b/source/common/uniset.cpp @@ -278,11 +278,11 @@ UnicodeSet& UnicodeSet::copyFrom(const UnicodeSet& o, UBool asThawed) { * to support cloning in order to allow classes using * UnicodeMatchers, such as Transliterator, to implement cloning. */ -UnicodeFunctor* UnicodeSet::clone() const { +UnicodeSet* UnicodeSet::clone() const { return new UnicodeSet(*this); } -UnicodeFunctor *UnicodeSet::cloneAsThawed() const { +UnicodeSet *UnicodeSet::cloneAsThawed() const { return new UnicodeSet(*this, TRUE); } @@ -2172,7 +2172,7 @@ void UnicodeSet::setPattern(const char16_t *newPat, int32_t newPatLen) { // We can regenerate an equivalent pattern later when requested. } -UnicodeFunctor *UnicodeSet::freeze() { +UnicodeSet *UnicodeSet::freeze() { if(!isFrozen() && !isBogus()) { compact(); diff --git a/source/common/uniset_props.cpp b/source/common/uniset_props.cpp index e98c175..37277fc 100644 --- a/source/common/uniset_props.cpp +++ b/source/common/uniset_props.cpp @@ -802,7 +802,10 @@ static UBool mungeCharName(char* dst, const char* src, int32_t dstCapacity) { // Property set API //---------------------------------------------------------------- -#define FAIL(ec) {ec=U_ILLEGAL_ARGUMENT_ERROR; return *this;} +#define FAIL(ec) UPRV_BLOCK_MACRO_BEGIN { \ + ec=U_ILLEGAL_ARGUMENT_ERROR; \ + return *this; \ +} UPRV_BLOCK_MACRO_END UnicodeSet& UnicodeSet::applyIntPropertyValue(UProperty prop, int32_t value, UErrorCode& ec) { diff --git a/source/common/unisetspan.cpp b/source/common/unisetspan.cpp index 0a88934..68e44d9 100644 --- a/source/common/unisetspan.cpp +++ b/source/common/unisetspan.cpp @@ -400,7 +400,7 @@ UnicodeSetStringSpan::UnicodeSetStringSpan(const UnicodeSetStringSpan &otherStri if(otherStringSpan.pSpanNotSet==&otherStringSpan.spanSet) { pSpanNotSet=&spanSet; } else { - pSpanNotSet=(UnicodeSet *)otherStringSpan.pSpanNotSet->clone(); + pSpanNotSet=otherStringSpan.pSpanNotSet->clone(); } // Allocate a block of meta data. @@ -436,7 +436,7 @@ void UnicodeSetStringSpan::addToSpanNotSet(UChar32 c) { if(spanSet.contains(c)) { return; // Nothing to do. } - UnicodeSet *newSet=(UnicodeSet *)spanSet.cloneAsThawed(); + UnicodeSet *newSet=spanSet.cloneAsThawed(); if(newSet==NULL) { return; // Out of memory. } else { diff --git a/source/common/unistr.cpp b/source/common/unistr.cpp index 8f06515..901bb33 100644 --- a/source/common/unistr.cpp +++ b/source/common/unistr.cpp @@ -332,7 +332,7 @@ Replaceable::clone() const { } // UnicodeString overrides clone() with a real implementation -Replaceable * +UnicodeString * UnicodeString::clone() const { return new UnicodeString(*this); } diff --git a/source/common/uresbund.cpp b/source/common/uresbund.cpp index af6d1a1..6c0e760 100644 --- a/source/common/uresbund.cpp +++ b/source/common/uresbund.cpp @@ -31,6 +31,7 @@ #include "ucln_cmn.h" #include "cmemory.h" #include "cstring.h" +#include "mutex.h" #include "uhash.h" #include "unicode/uenum.h" #include "uenumimp.h" @@ -38,6 +39,7 @@ #include "umutex.h" #include "putilimp.h" #include "uassert.h" +#include "uresdata.h" using namespace icu; @@ -47,12 +49,9 @@ TODO: This cache should probably be removed when the deprecated code is completely removed. */ static UHashtable *cache = NULL; -static icu::UInitOnce gCacheInitOnce; +static icu::UInitOnce gCacheInitOnce = U_INITONCE_INITIALIZER; -static UMutex *resbMutex() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static UMutex resbMutex; /* INTERNAL: hashes an entry */ static int32_t U_CALLCONV hashEntry(const UHashTok parm) { @@ -96,13 +95,12 @@ static UBool chopLocale(char *name) { * Internal function */ static void entryIncrease(UResourceDataEntry *entry) { - umtx_lock(resbMutex()); + Mutex lock(&resbMutex); entry->fCountExisting++; while(entry->fParent != NULL) { entry = entry->fParent; entry->fCountExisting++; } - umtx_unlock(resbMutex()); } /** @@ -184,9 +182,8 @@ static int32_t ures_flushCache() /*if shared data hasn't even been lazy evaluated yet * return 0 */ - umtx_lock(resbMutex()); + Mutex lock(&resbMutex); if (cache == NULL) { - umtx_unlock(resbMutex()); return 0; } @@ -218,7 +215,6 @@ static int32_t ures_flushCache() * got decremented by free_entry(). */ } while(deletedMore); - umtx_unlock(resbMutex()); return rbDeletedNum; } @@ -232,9 +228,8 @@ U_CAPI UBool U_EXPORT2 ures_dumpCacheContents(void) { const UHashElement *e; UResourceDataEntry *resB; - umtx_lock(resbMutex()); + Mutex lock(&resbMutex); if (cache == NULL) { - umtx_unlock(resbMutex()); fprintf(stderr,"%s:%d: RB Cache is NULL.\n", __FILE__, __LINE__); return FALSE; } @@ -253,9 +248,6 @@ U_CAPI UBool U_EXPORT2 ures_dumpCacheContents(void) { } fprintf(stderr,"%s:%d: RB Cache still contains %d items.\n", __FILE__, __LINE__, uhash_count(cache)); - - umtx_unlock(resbMutex()); - return cacheNotEmpty; } @@ -401,7 +393,8 @@ static UResourceDataEntry *init_entry(const char *localeID, const char *path, UE /* We'll try to get alias string from the bundle */ aliasres = res_getResource(&(r->fData), "%%ALIAS"); if (aliasres != RES_BOGUS) { - const UChar *alias = res_getString(&(r->fData), aliasres, &aliasLen); + // No tracing: called during initial data loading + const UChar *alias = res_getStringNoTrace(&(r->fData), aliasres, &aliasLen); if(alias != NULL && aliasLen > 0) { /* if there is actual alias - unload and load new data */ u_UCharsToChars(alias, aliasName, aliasLen+1); r->fAlias = init_entry(aliasName, path, status); @@ -542,7 +535,8 @@ loadParentsExceptRoot(UResourceDataEntry *&t1, Resource parentRes = res_getResource(&t1->fData, "%%Parent"); if (parentRes != RES_BOGUS) { // An explicit parent was found. int32_t parentLocaleLen = 0; - const UChar *parentLocaleName = res_getString(&(t1->fData), parentRes, &parentLocaleLen); + // No tracing: called during initial data loading + const UChar *parentLocaleName = res_getStringNoTrace(&(t1->fData), parentRes, &parentLocaleLen); if(parentLocaleName != NULL && 0 < parentLocaleLen && parentLocaleLen < nameCapacity) { u_UCharsToChars(parentLocaleName, name, parentLocaleLen + 1); if (uprv_strcmp(name, kRootLocaleName) == 0) { @@ -666,107 +660,105 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID, } } - umtx_lock(resbMutex()); - { /* umtx_lock */ - /* We're going to skip all the locales that do not have any data */ - r = findFirstExisting(path, name, &isRoot, &hasChopped, &isDefault, &intStatus); + Mutex lock(&resbMutex); // Lock resbMutex until the end of this function. + + /* We're going to skip all the locales that do not have any data */ + r = findFirstExisting(path, name, &isRoot, &hasChopped, &isDefault, &intStatus); + + // If we failed due to out-of-memory, report the failure and exit early. + if (intStatus == U_MEMORY_ALLOCATION_ERROR) { + *status = intStatus; + goto finish; + } + + if(r != NULL) { /* if there is one real locale, we can look for parents. */ + t1 = r; + hasRealData = TRUE; + if ( usingUSRData ) { /* This code inserts user override data into the inheritance chain */ + UErrorCode usrStatus = U_ZERO_ERROR; + UResourceDataEntry *u1 = init_entry(t1->fName, usrDataPath, &usrStatus); + // If we failed due to out-of-memory, report the failure and exit early. + if (intStatus == U_MEMORY_ALLOCATION_ERROR) { + *status = intStatus; + goto finish; + } + if ( u1 != NULL ) { + if(u1->fBogus == U_ZERO_ERROR) { + u1->fParent = t1; + r = u1; + } else { + /* the USR override data wasn't found, set it to be deleted */ + u1->fCountExisting = 0; + } + } + } + if (hasChopped && !isRoot) { + if (!loadParentsExceptRoot(t1, name, UPRV_LENGTHOF(name), usingUSRData, usrDataPath, status)) { + goto finish; + } + } + } + /* we could have reached this point without having any real data */ + /* if that is the case, we need to chain in the default locale */ + if(r==NULL && openType == URES_OPEN_LOCALE_DEFAULT_ROOT && !isDefault && !isRoot) { + /* insert default locale */ + uprv_strcpy(name, uloc_getDefault()); + r = findFirstExisting(path, name, &isRoot, &hasChopped, &isDefault, &intStatus); // If we failed due to out-of-memory, report the failure and exit early. if (intStatus == U_MEMORY_ALLOCATION_ERROR) { *status = intStatus; - goto finishUnlock; + goto finish; } - - if(r != NULL) { /* if there is one real locale, we can look for parents. */ + intStatus = U_USING_DEFAULT_WARNING; + if(r != NULL) { /* the default locale exists */ t1 = r; hasRealData = TRUE; - if ( usingUSRData ) { /* This code inserts user override data into the inheritance chain */ - UErrorCode usrStatus = U_ZERO_ERROR; - UResourceDataEntry *u1 = init_entry(t1->fName, usrDataPath, &usrStatus); - // If we failed due to out-of-memory, report the failure and exit early. - if (intStatus == U_MEMORY_ALLOCATION_ERROR) { - *status = intStatus; - goto finishUnlock; - } - if ( u1 != NULL ) { - if(u1->fBogus == U_ZERO_ERROR) { - u1->fParent = t1; - r = u1; - } else { - /* the USR override data wasn't found, set it to be deleted */ - u1->fCountExisting = 0; - } - } - } + isDefault = TRUE; + // TODO: Why not if (usingUSRData) { ... } like in the non-default-locale code path? if (hasChopped && !isRoot) { if (!loadParentsExceptRoot(t1, name, UPRV_LENGTHOF(name), usingUSRData, usrDataPath, status)) { - goto finishUnlock; + goto finish; } } } + } - /* we could have reached this point without having any real data */ - /* if that is the case, we need to chain in the default locale */ - if(r==NULL && openType == URES_OPEN_LOCALE_DEFAULT_ROOT && !isDefault && !isRoot) { - /* insert default locale */ - uprv_strcpy(name, uloc_getDefault()); - r = findFirstExisting(path, name, &isRoot, &hasChopped, &isDefault, &intStatus); - // If we failed due to out-of-memory, report the failure and exit early. - if (intStatus == U_MEMORY_ALLOCATION_ERROR) { - *status = intStatus; - goto finishUnlock; - } + /* we could still have r == NULL at this point - maybe even default locale is not */ + /* present */ + if(r == NULL) { + uprv_strcpy(name, kRootLocaleName); + r = findFirstExisting(path, name, &isRoot, &hasChopped, &isDefault, &intStatus); + // If we failed due to out-of-memory, report the failure and exit early. + if (intStatus == U_MEMORY_ALLOCATION_ERROR) { + *status = intStatus; + goto finish; + } + if(r != NULL) { + t1 = r; intStatus = U_USING_DEFAULT_WARNING; - if(r != NULL) { /* the default locale exists */ - t1 = r; - hasRealData = TRUE; - isDefault = TRUE; - // TODO: Why not if (usingUSRData) { ... } like in the non-default-locale code path? - if (hasChopped && !isRoot) { - if (!loadParentsExceptRoot(t1, name, UPRV_LENGTHOF(name), usingUSRData, usrDataPath, status)) { - goto finishUnlock; - } - } - } + hasRealData = TRUE; + } else { /* we don't even have the root locale */ + *status = U_MISSING_RESOURCE_ERROR; + goto finish; } - - /* we could still have r == NULL at this point - maybe even default locale is not */ - /* present */ - if(r == NULL) { - uprv_strcpy(name, kRootLocaleName); - r = findFirstExisting(path, name, &isRoot, &hasChopped, &isDefault, &intStatus); - // If we failed due to out-of-memory, report the failure and exit early. - if (intStatus == U_MEMORY_ALLOCATION_ERROR) { - *status = intStatus; - goto finishUnlock; - } - if(r != NULL) { - t1 = r; - intStatus = U_USING_DEFAULT_WARNING; - hasRealData = TRUE; - } else { /* we don't even have the root locale */ - *status = U_MISSING_RESOURCE_ERROR; - goto finishUnlock; - } - } else if(!isRoot && uprv_strcmp(t1->fName, kRootLocaleName) != 0 && - t1->fParent == NULL && !r->fData.noFallback) { - if (!insertRootBundle(t1, status)) { - goto finishUnlock; - } - if(!hasRealData) { - r->fBogus = U_USING_DEFAULT_WARNING; - } + } else if(!isRoot && uprv_strcmp(t1->fName, kRootLocaleName) != 0 && + t1->fParent == NULL && !r->fData.noFallback) { + if (!insertRootBundle(t1, status)) { + goto finish; } - - // TODO: Does this ever loop? - while(r != NULL && !isRoot && t1->fParent != NULL) { - t1->fParent->fCountExisting++; - t1 = t1->fParent; + if(!hasRealData) { + r->fBogus = U_USING_DEFAULT_WARNING; } - } /* umtx_lock */ -finishUnlock: - umtx_unlock(resbMutex()); + } + // TODO: Does this ever loop? + while(r != NULL && !isRoot && t1->fParent != NULL) { + t1->fParent->fCountExisting++; + t1 = t1->fParent; + } + +finish: if(U_SUCCESS(*status)) { if(intStatus != U_ZERO_ERROR) { *status = intStatus; @@ -790,7 +782,7 @@ entryOpenDirect(const char* path, const char* localeID, UErrorCode* status) { return NULL; } - umtx_lock(resbMutex()); + Mutex lock(&resbMutex); // findFirstExisting() without fallbacks. UResourceDataEntry *r = init_entry(localeID, path, status); if(U_SUCCESS(*status)) { @@ -828,7 +820,6 @@ entryOpenDirect(const char* path, const char* localeID, UErrorCode* status) { t1 = t1->fParent; } } - umtx_unlock(resbMutex()); return r; } @@ -871,9 +862,8 @@ static void entryCloseInt(UResourceDataEntry *resB) { */ static void entryClose(UResourceDataEntry *resB) { - umtx_lock(resbMutex()); + Mutex lock(&resbMutex); entryCloseInt(resB); - umtx_unlock(resbMutex()); } /* @@ -1177,6 +1167,7 @@ static UResourceBundle *init_resb_result(const ResourceData *rdata, Resource r, if(mainRes != result) { ures_close(mainRes); } + ResourceTracer(resB).maybeTrace("getalias"); return result; } } else { @@ -1256,6 +1247,7 @@ static UResourceBundle *init_resb_result(const ResourceData *rdata, Resource r, /*resB->fParent = parent->fRes;*/ uprv_memmove(&resB->fResData, rdata, sizeof(ResourceData)); resB->fSize = res_countArrayItems(&(resB->fResData), resB->fRes); + ResourceTracer(resB).trace("get"); return resB; } @@ -1304,7 +1296,7 @@ U_CAPI const UChar* U_EXPORT2 ures_getString(const UResourceBundle* resB, int32_ *status = U_ILLEGAL_ARGUMENT_ERROR; return NULL; } - s = res_getString(&(resB->fResData), resB->fRes, len); + s = res_getString({resB}, &(resB->fResData), resB->fRes, len); if (s == NULL) { *status = U_RESOURCE_TYPE_MISMATCH; } @@ -1393,7 +1385,7 @@ U_CAPI const uint8_t* U_EXPORT2 ures_getBinary(const UResourceBundle* resB, int3 *status = U_ILLEGAL_ARGUMENT_ERROR; return NULL; } - p = res_getBinary(&(resB->fResData), resB->fRes, len); + p = res_getBinary({resB}, &(resB->fResData), resB->fRes, len); if (p == NULL) { *status = U_RESOURCE_TYPE_MISMATCH; } @@ -1410,7 +1402,7 @@ U_CAPI const int32_t* U_EXPORT2 ures_getIntVector(const UResourceBundle* resB, i *status = U_ILLEGAL_ARGUMENT_ERROR; return NULL; } - p = res_getIntVector(&(resB->fResData), resB->fRes, len); + p = res_getIntVector({resB}, &(resB->fResData), resB->fRes, len); if (p == NULL) { *status = U_RESOURCE_TYPE_MISMATCH; } @@ -1431,7 +1423,7 @@ U_CAPI int32_t U_EXPORT2 ures_getInt(const UResourceBundle* resB, UErrorCode *st *status = U_RESOURCE_TYPE_MISMATCH; return 0xffffffff; } - return RES_GET_INT(resB->fRes); + return res_getInt({resB}, resB->fRes); } U_CAPI uint32_t U_EXPORT2 ures_getUInt(const UResourceBundle* resB, UErrorCode *status) { @@ -1446,7 +1438,7 @@ U_CAPI uint32_t U_EXPORT2 ures_getUInt(const UResourceBundle* resB, UErrorCode * *status = U_RESOURCE_TYPE_MISMATCH; return 0xffffffff; } - return RES_GET_UINT(resB->fRes); + return res_getUInt({resB}, resB->fRes); } U_CAPI UResType U_EXPORT2 ures_getType(const UResourceBundle *resB) { @@ -1457,10 +1449,18 @@ U_CAPI UResType U_EXPORT2 ures_getType(const UResourceBundle *resB) { } U_CAPI const char * U_EXPORT2 ures_getKey(const UResourceBundle *resB) { + // + // TODO: Trace ures_getKey? I guess not usually. + // + // We usually get the key string to decide whether we want the value, or to + // make a key-value pair. Tracing the value should suffice. + // + // However, I believe we have some data (e.g., in res_index) where the key + // strings are the data. Tracing the enclosing table should suffice. + // if(resB == NULL) { return NULL; } - return(resB->fKey); } @@ -1480,7 +1480,7 @@ static const UChar* ures_getStringWithAlias(const UResourceBundle *resB, Resourc ures_close(tempRes); return result; } else { - return res_getString(&(resB->fResData), r, len); + return res_getString({resB, sIndex}, &(resB->fResData), r, len); } } @@ -1516,7 +1516,7 @@ U_CAPI const UChar* U_EXPORT2 ures_getNextString(UResourceBundle *resB, int32_t* switch(RES_GET_TYPE(resB->fRes)) { case URES_STRING: case URES_STRING_V2: - return res_getString(&(resB->fResData), resB->fRes, len); + return res_getString({resB}, &(resB->fResData), resB->fRes, len); case URES_TABLE: case URES_TABLE16: case URES_TABLE32: @@ -1661,7 +1661,7 @@ U_CAPI const UChar* U_EXPORT2 ures_getStringByIndex(const UResourceBundle *resB, switch(RES_GET_TYPE(resB->fRes)) { case URES_STRING: case URES_STRING_V2: - return res_getString(&(resB->fResData), resB->fRes, len); + return res_getString({resB}, &(resB->fResData), resB->fRes, len); case URES_TABLE: case URES_TABLE16: case URES_TABLE32: @@ -1953,10 +1953,10 @@ void getAllItemsWithFallback( // When the sink sees the no-fallback/no-inheritance marker, // then it would remove the parent's item. // We would deserialize parent values even though they are overridden in a child bundle. - value.pResData = &bundle->fResData; + value.setData(&bundle->fResData); UResourceDataEntry *parentEntry = bundle->fData->fParent; UBool hasParent = parentEntry != NULL && U_SUCCESS(parentEntry->fBogus); - value.setResource(bundle->fRes); + value.setResource(bundle->fRes, ResourceTracer(bundle)); sink.put(bundle->fKey, value, !hasParent, errorCode); if (hasParent) { // We might try to query the sink whether @@ -2001,31 +2001,60 @@ void getAllItemsWithFallback( } // namespace +// Requires a ResourceDataValue fill-in, so that we need not cast from a ResourceValue. +// Unfortunately, the caller must know which subclass to make and pass in. +// Alternatively, we could make it as polymorphic as in Java by +// returning a ResourceValue pointer (possibly wrapped into a LocalPointer) +// that the caller then owns. +// +// Also requires a UResourceBundle fill-in, so that the value's ResourceTracer +// can point to a non-local bundle. +// Without tracing, the child bundle could be a function-local object. +U_CAPI void U_EXPORT2 +ures_getValueWithFallback(const UResourceBundle *bundle, const char *path, + UResourceBundle *tempFillIn, + ResourceDataValue &value, UErrorCode &errorCode) { + if (U_FAILURE(errorCode)) { return; } + if (path == nullptr) { + errorCode = U_ILLEGAL_ARGUMENT_ERROR; + return; + } + const UResourceBundle *rb; + if (*path == 0) { + // empty path + rb = bundle; + } else { + rb = ures_getByKeyWithFallback(bundle, path, tempFillIn, &errorCode); + if (U_FAILURE(errorCode)) { + return; + } + } + value.setData(&rb->fResData); + value.setResource(rb->fRes, ResourceTracer(rb)); +} + U_CAPI void U_EXPORT2 ures_getAllItemsWithFallback(const UResourceBundle *bundle, const char *path, icu::ResourceSink &sink, UErrorCode &errorCode) { if (U_FAILURE(errorCode)) { return; } - if (path == NULL) { + if (path == nullptr) { errorCode = U_ILLEGAL_ARGUMENT_ERROR; return; } - UResourceBundle stackBundle; - ures_initStackObject(&stackBundle); + StackUResourceBundle stackBundle; const UResourceBundle *rb; if (*path == 0) { // empty path rb = bundle; } else { - rb = ures_getByKeyWithFallback(bundle, path, &stackBundle, &errorCode); + rb = ures_getByKeyWithFallback(bundle, path, stackBundle.getAlias(), &errorCode); if (U_FAILURE(errorCode)) { - ures_close(&stackBundle); return; } } // Get all table items with fallback. ResourceDataValue value; getAllItemsWithFallback(rb, value, sink, errorCode); - ures_close(&stackBundle); } U_CAPI UResourceBundle* U_EXPORT2 ures_getByKey(const UResourceBundle *resB, const char* inKey, UResourceBundle *fillIn, UErrorCode *status) { @@ -2108,7 +2137,7 @@ U_CAPI const UChar* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB, c switch (RES_GET_TYPE(res)) { case URES_STRING: case URES_STRING_V2: - return res_getString(rd, res, len); + return res_getString({resB, key}, rd, res, len); case URES_ALIAS: { const UChar* result = 0; @@ -2130,7 +2159,7 @@ U_CAPI const UChar* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB, c switch (RES_GET_TYPE(res)) { case URES_STRING: case URES_STRING_V2: - return res_getString(&(resB->fResData), res, len); + return res_getString({resB, key}, &(resB->fResData), res, len); case URES_ALIAS: { const UChar* result = 0; @@ -2151,6 +2180,7 @@ U_CAPI const UChar* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB, c /* here should go a first attempt to locate the key using index table */ const ResourceData *rd = getFallbackData(resB, &key, &realData, &res, status); if(U_SUCCESS(*status)) { + // TODO: Tracing return res_getString(rd, res, len); } else { *status = U_MISSING_RESOURCE_ERROR; @@ -2296,6 +2326,8 @@ ures_openWithType(UResourceBundle *r, const char* path, const char* localeID, r->fSize = res_countArrayItems(&(r->fResData), r->fRes); r->fIndex = -1; + ResourceTracer(r).traceOpen(); + return r; } diff --git a/source/common/uresdata.cpp b/source/common/uresdata.cpp index 8bcb9ab..b3c2e2e 100644 --- a/source/common/uresdata.cpp +++ b/source/common/uresdata.cpp @@ -33,6 +33,7 @@ #include "uinvchar.h" #include "uresdata.h" #include "uresimp.h" +#include "utracimp.h" /* * Resource access helpers @@ -307,7 +308,7 @@ res_getPublicType(Resource res) { } U_CAPI const UChar * U_EXPORT2 -res_getString(const ResourceData *pResData, Resource res, int32_t *pLength) { +res_getStringNoTrace(const ResourceData *pResData, Resource res, int32_t *pLength) { const UChar *p; uint32_t offset=RES_GET_OFFSET(res); int32_t length; @@ -402,7 +403,8 @@ int32_t getStringArray(const ResourceData *pResData, const icu::ResourceArray &a } for(int32_t i = 0; i < length; ++i) { int32_t sLength; - const UChar *s = res_getString(pResData, array.internalGetResource(pResData, i), &sLength); + // No tracing: handled by the caller + const UChar *s = res_getStringNoTrace(pResData, array.internalGetResource(pResData, i), &sLength); if(s == NULL) { errorCode = U_RESOURCE_TYPE_MISMATCH; return 0; @@ -434,7 +436,7 @@ res_getAlias(const ResourceData *pResData, Resource res, int32_t *pLength) { } U_CAPI const uint8_t * U_EXPORT2 -res_getBinary(const ResourceData *pResData, Resource res, int32_t *pLength) { +res_getBinaryNoTrace(const ResourceData *pResData, Resource res, int32_t *pLength) { const uint8_t *p; uint32_t offset=RES_GET_OFFSET(res); int32_t length; @@ -454,7 +456,7 @@ res_getBinary(const ResourceData *pResData, Resource res, int32_t *pLength) { U_CAPI const int32_t * U_EXPORT2 -res_getIntVector(const ResourceData *pResData, Resource res, int32_t *pLength) { +res_getIntVectorNoTrace(const ResourceData *pResData, Resource res, int32_t *pLength) { const int32_t *p; uint32_t offset=RES_GET_OFFSET(res); int32_t length; @@ -507,7 +509,7 @@ const UChar *ResourceDataValue::getString(int32_t &length, UErrorCode &errorCode if(U_FAILURE(errorCode)) { return NULL; } - const UChar *s = res_getString(pResData, res, &length); + const UChar *s = res_getString(fTraceInfo, &getData(), res, &length); if(s == NULL) { errorCode = U_RESOURCE_TYPE_MISMATCH; } @@ -518,7 +520,7 @@ const UChar *ResourceDataValue::getAliasString(int32_t &length, UErrorCode &erro if(U_FAILURE(errorCode)) { return NULL; } - const UChar *s = res_getAlias(pResData, res, &length); + const UChar *s = res_getAlias(&getData(), res, &length); if(s == NULL) { errorCode = U_RESOURCE_TYPE_MISMATCH; } @@ -532,7 +534,7 @@ int32_t ResourceDataValue::getInt(UErrorCode &errorCode) const { if(RES_GET_TYPE(res) != URES_INT) { errorCode = U_RESOURCE_TYPE_MISMATCH; } - return RES_GET_INT(res); + return res_getInt(fTraceInfo, res); } uint32_t ResourceDataValue::getUInt(UErrorCode &errorCode) const { @@ -542,14 +544,14 @@ uint32_t ResourceDataValue::getUInt(UErrorCode &errorCode) const { if(RES_GET_TYPE(res) != URES_INT) { errorCode = U_RESOURCE_TYPE_MISMATCH; } - return RES_GET_UINT(res); + return res_getUInt(fTraceInfo, res); } const int32_t *ResourceDataValue::getIntVector(int32_t &length, UErrorCode &errorCode) const { if(U_FAILURE(errorCode)) { return NULL; } - const int32_t *iv = res_getIntVector(pResData, res, &length); + const int32_t *iv = res_getIntVector(fTraceInfo, &getData(), res, &length); if(iv == NULL) { errorCode = U_RESOURCE_TYPE_MISMATCH; } @@ -560,7 +562,7 @@ const uint8_t *ResourceDataValue::getBinary(int32_t &length, UErrorCode &errorCo if(U_FAILURE(errorCode)) { return NULL; } - const uint8_t *b = res_getBinary(pResData, res, &length); + const uint8_t *b = res_getBinary(fTraceInfo, &getData(), res, &length); if(b == NULL) { errorCode = U_RESOURCE_TYPE_MISMATCH; } @@ -578,19 +580,19 @@ ResourceArray ResourceDataValue::getArray(UErrorCode &errorCode) const { switch(RES_GET_TYPE(res)) { case URES_ARRAY: if (offset!=0) { // empty if offset==0 - items32 = (const Resource *)pResData->pRoot+offset; + items32 = (const Resource *)getData().pRoot+offset; length = *items32++; } break; case URES_ARRAY16: - items16 = pResData->p16BitUnits+offset; + items16 = getData().p16BitUnits+offset; length = *items16++; break; default: errorCode = U_RESOURCE_TYPE_MISMATCH; return ResourceArray(); } - return ResourceArray(items16, items32, length); + return ResourceArray(items16, items32, length, fTraceInfo); } ResourceTable ResourceDataValue::getTable(UErrorCode &errorCode) const { @@ -606,19 +608,19 @@ ResourceTable ResourceDataValue::getTable(UErrorCode &errorCode) const { switch(RES_GET_TYPE(res)) { case URES_TABLE: if (offset != 0) { // empty if offset==0 - keys16 = (const uint16_t *)(pResData->pRoot+offset); + keys16 = (const uint16_t *)(getData().pRoot+offset); length = *keys16++; items32 = (const Resource *)(keys16+length+(~length&1)); } break; case URES_TABLE16: - keys16 = pResData->p16BitUnits+offset; + keys16 = getData().p16BitUnits+offset; length = *keys16++; items16 = keys16 + length; break; case URES_TABLE32: if (offset != 0) { // empty if offset==0 - keys32 = pResData->pRoot+offset; + keys32 = getData().pRoot+offset; length = *keys32++; items32 = (const Resource *)keys32 + length; } @@ -627,22 +629,22 @@ ResourceTable ResourceDataValue::getTable(UErrorCode &errorCode) const { errorCode = U_RESOURCE_TYPE_MISMATCH; return ResourceTable(); } - return ResourceTable(keys16, keys32, items16, items32, length); + return ResourceTable(keys16, keys32, items16, items32, length, fTraceInfo); } UBool ResourceDataValue::isNoInheritanceMarker() const { - return ::isNoInheritanceMarker(pResData, res); + return ::isNoInheritanceMarker(&getData(), res); } int32_t ResourceDataValue::getStringArray(UnicodeString *dest, int32_t capacity, UErrorCode &errorCode) const { - return ::getStringArray(pResData, getArray(errorCode), dest, capacity, errorCode); + return ::getStringArray(&getData(), getArray(errorCode), dest, capacity, errorCode); } int32_t ResourceDataValue::getStringArrayOrStringAsArray(UnicodeString *dest, int32_t capacity, UErrorCode &errorCode) const { if(URES_IS_ARRAY(res)) { - return ::getStringArray(pResData, getArray(errorCode), dest, capacity, errorCode); + return ::getStringArray(&getData(), getArray(errorCode), dest, capacity, errorCode); } if(U_FAILURE(errorCode)) { return 0; @@ -656,7 +658,7 @@ int32_t ResourceDataValue::getStringArrayOrStringAsArray(UnicodeString *dest, in return 1; } int32_t sLength; - const UChar *s = res_getString(pResData, res, &sLength); + const UChar *s = res_getString(fTraceInfo, &getData(), res, &sLength); if(s != NULL) { dest[0].setTo(TRUE, s, sLength); return 1; @@ -671,7 +673,7 @@ UnicodeString ResourceDataValue::getStringOrFirstOfArray(UErrorCode &errorCode) return us; } int32_t sLength; - const UChar *s = res_getString(pResData, res, &sLength); + const UChar *s = res_getString(fTraceInfo, &getData(), res, &sLength); if(s != NULL) { us.setTo(TRUE, s, sLength); return us; @@ -681,7 +683,8 @@ UnicodeString ResourceDataValue::getStringOrFirstOfArray(UErrorCode &errorCode) return us; } if(array.getSize() > 0) { - s = res_getString(pResData, array.internalGetResource(pResData, 0), &sLength); + // Tracing is already performed above (unimportant for trace that this is an array) + s = res_getStringNoTrace(&getData(), array.internalGetResource(&getData(), 0), &sLength); if(s != NULL) { us.setTo(TRUE, s, sLength); return us; @@ -818,18 +821,45 @@ UBool icu::ResourceTable::getKeyAndValue(int32_t i, const char *&key, icu::ResourceValue &value) const { if(0 <= i && i < length) { icu::ResourceDataValue &rdValue = static_cast(value); - if (keys16 != NULL) { - key = RES_GET_KEY16(rdValue.pResData, keys16[i]); + if (keys16 != nullptr) { + key = RES_GET_KEY16(&rdValue.getData(), keys16[i]); } else { - key = RES_GET_KEY32(rdValue.pResData, keys32[i]); + key = RES_GET_KEY32(&rdValue.getData(), keys32[i]); } Resource res; - if (items16 != NULL) { - res = makeResourceFrom16(rdValue.pResData, items16[i]); + if (items16 != nullptr) { + res = makeResourceFrom16(&rdValue.getData(), items16[i]); } else { res = items32[i]; } - rdValue.setResource(res); + // Note: the ResourceTracer keeps a reference to the field of this + // ResourceTable. This is OK because the ResourceTable should remain + // alive for the duration that fields are being read from it + // (including nested fields). + rdValue.setResource(res, ResourceTracer(fTraceInfo, key)); + return TRUE; + } + return FALSE; +} + +UBool icu::ResourceTable::findValue(const char *key, ResourceValue &value) const { + icu::ResourceDataValue &rdValue = static_cast(value); + const char *realKey = nullptr; + int32_t i; + if (keys16 != nullptr) { + i = _res_findTableItem(&rdValue.getData(), keys16, length, key, &realKey); + } else { + i = _res_findTable32Item(&rdValue.getData(), keys32, length, key, &realKey); + } + if (i >= 0) { + Resource res; + if (items16 != nullptr) { + res = makeResourceFrom16(&rdValue.getData(), items16[i]); + } else { + res = items32[i]; + } + // Same note about lifetime as in getKeyAndValue(). + rdValue.setResource(res, ResourceTracer(fTraceInfo, key)); return TRUE; } return FALSE; @@ -875,7 +905,13 @@ uint32_t icu::ResourceArray::internalGetResource(const ResourceData *pResData, i UBool icu::ResourceArray::getValue(int32_t i, icu::ResourceValue &value) const { if(0 <= i && i < length) { icu::ResourceDataValue &rdValue = static_cast(value); - rdValue.setResource(internalGetResource(rdValue.pResData, i)); + // Note: the ResourceTracer keeps a reference to the field of this + // ResourceArray. This is OK because the ResourceArray should remain + // alive for the duration that fields are being read from it + // (including nested fields). + rdValue.setResource( + internalGetResource(&rdValue.getData(), i), + ResourceTracer(fTraceInfo, i)); return TRUE; } return FALSE; diff --git a/source/common/uresdata.h b/source/common/uresdata.h index 4e28ddc..d1b67ba 100644 --- a/source/common/uresdata.h +++ b/source/common/uresdata.h @@ -69,14 +69,16 @@ typedef uint32_t Resource; #define RES_GET_OFFSET(res) ((res)&0x0fffffff) #define RES_GET_POINTER(pRoot, res) ((pRoot)+RES_GET_OFFSET(res)) -/* get signed and unsigned integer values directly from the Resource handle */ +/* get signed and unsigned integer values directly from the Resource handle + * NOTE: For proper logging, please use the res_getInt() constexpr + */ #if U_SIGNED_RIGHT_SHIFT_IS_ARITHMETIC -# define RES_GET_INT(res) (((int32_t)((res)<<4L))>>4L) +# define RES_GET_INT_NO_TRACE(res) (((int32_t)((res)<<4L))>>4L) #else -# define RES_GET_INT(res) (int32_t)(((res)&0x08000000) ? (res)|0xf0000000 : (res)&0x07ffffff) +# define RES_GET_INT_NO_TRACE(res) (int32_t)(((res)&0x08000000) ? (res)|0xf0000000 : (res)&0x07ffffff) #endif -#define RES_GET_UINT(res) ((res)&0x0fffffff) +#define RES_GET_UINT_NO_TRACE(res) ((res)&0x0fffffff) #define URES_IS_ARRAY(type) ((int32_t)(type)==URES_ARRAY || (int32_t)(type)==URES_ARRAY16) #define URES_IS_TABLE(type) ((int32_t)(type)==URES_TABLE || (int32_t)(type)==URES_TABLE16 || (int32_t)(type)==URES_TABLE32) @@ -423,22 +425,26 @@ res_unload(ResourceData *pResData); U_INTERNAL UResType U_EXPORT2 res_getPublicType(Resource res); +/////////////////////////////////////////////////////////////////////////// +// To enable tracing, use the inline versions of the res_get* functions. // +/////////////////////////////////////////////////////////////////////////// + /* * Return a pointer to a zero-terminated, const UChar* string * and set its length in *pLength. * Returns NULL if not found. */ U_INTERNAL const UChar * U_EXPORT2 -res_getString(const ResourceData *pResData, Resource res, int32_t *pLength); - -U_INTERNAL const UChar * U_EXPORT2 -res_getAlias(const ResourceData *pResData, Resource res, int32_t *pLength); +res_getStringNoTrace(const ResourceData *pResData, Resource res, int32_t *pLength); U_INTERNAL const uint8_t * U_EXPORT2 -res_getBinary(const ResourceData *pResData, Resource res, int32_t *pLength); +res_getBinaryNoTrace(const ResourceData *pResData, Resource res, int32_t *pLength); U_INTERNAL const int32_t * U_EXPORT2 -res_getIntVector(const ResourceData *pResData, Resource res, int32_t *pLength); +res_getIntVectorNoTrace(const ResourceData *pResData, Resource res, int32_t *pLength); + +U_INTERNAL const UChar * U_EXPORT2 +res_getAlias(const ResourceData *pResData, Resource res, int32_t *pLength); U_INTERNAL Resource U_EXPORT2 res_getResource(const ResourceData *pResData, const char *key); @@ -470,17 +476,55 @@ U_CFUNC Resource res_findResource(const ResourceData *pResData, Resource r, #ifdef __cplusplus #include "resource.h" +#include "restrace.h" U_NAMESPACE_BEGIN +inline const UChar* res_getString(const ResourceTracer& traceInfo, + const ResourceData *pResData, Resource res, int32_t *pLength) { + traceInfo.trace("string"); + return res_getStringNoTrace(pResData, res, pLength); +} + +inline const uint8_t* res_getBinary(const ResourceTracer& traceInfo, + const ResourceData *pResData, Resource res, int32_t *pLength) { + traceInfo.trace("binary"); + return res_getBinaryNoTrace(pResData, res, pLength); +} + +inline const int32_t* res_getIntVector(const ResourceTracer& traceInfo, + const ResourceData *pResData, Resource res, int32_t *pLength) { + traceInfo.trace("intvector"); + return res_getIntVectorNoTrace(pResData, res, pLength); +} + +inline int32_t res_getInt(const ResourceTracer& traceInfo, Resource res) { + traceInfo.trace("int"); + return RES_GET_INT_NO_TRACE(res); +} + +inline uint32_t res_getUInt(const ResourceTracer& traceInfo, Resource res) { + traceInfo.trace("uint"); + return RES_GET_UINT_NO_TRACE(res); +} + class ResourceDataValue : public ResourceValue { public: - ResourceDataValue() : pResData(NULL), res(static_cast(URES_NONE)) {} + ResourceDataValue() : + res(static_cast(URES_NONE)), + fTraceInfo() {} virtual ~ResourceDataValue(); - void setData(const ResourceData *data) { pResData = data; } - void setResource(Resource r) { res = r; } + void setData(const ResourceData *data) { + resData = *data; + } + void setResource(Resource r, ResourceTracer&& traceInfo) { + res = r; + fTraceInfo = traceInfo; + } + + const ResourceData &getData() const { return resData; } virtual UResType getType() const; virtual const UChar *getString(int32_t &length, UErrorCode &errorCode) const; virtual const UChar *getAliasString(int32_t &length, UErrorCode &errorCode) const; @@ -497,10 +541,12 @@ public: UErrorCode &errorCode) const; virtual UnicodeString getStringOrFirstOfArray(UErrorCode &errorCode) const; - const ResourceData *pResData; - private: + // TODO(ICU-20769): If UResourceBundle.fResData becomes a pointer, + // then remove this value field again and just store a pResData pointer. + ResourceData resData; Resource res; + ResourceTracer fTraceInfo; }; U_NAMESPACE_END diff --git a/source/common/uresimp.h b/source/common/uresimp.h index 51db6c5..f453ddc 100644 --- a/source/common/uresimp.h +++ b/source/common/uresimp.h @@ -67,6 +67,9 @@ struct UResourceBundle { char *fVersion; UResourceDataEntry *fTopLevelData; /* for getting the valid locale */ char *fResPath; /* full path to the resource: "zh_TW/CollationElements/Sequence" */ + // TODO(ICU-20769): Try to change the by-value fResData into a pointer, + // with the struct in only one place for each bundle. + // Also replace class ResourceDataValue.resData with a pResData pointer again. ResourceData fResData; char fResBuf[RES_BUFSIZE]; int32_t fResPathLen; @@ -282,6 +285,11 @@ ures_getStringByKeyWithFallback(const UResourceBundle *resB, #ifdef __cplusplus U_CAPI void U_EXPORT2 +ures_getValueWithFallback(const UResourceBundle *bundle, const char *path, + UResourceBundle *tempFillIn, + icu::ResourceDataValue &value, UErrorCode &errorCode); + +U_CAPI void U_EXPORT2 ures_getAllItemsWithFallback(const UResourceBundle *bundle, const char *path, icu::ResourceSink &sink, UErrorCode &errorCode); diff --git a/source/common/usprep.cpp b/source/common/usprep.cpp index a05fae1..8351a77 100644 --- a/source/common/usprep.cpp +++ b/source/common/usprep.cpp @@ -45,13 +45,9 @@ U_CDECL_BEGIN Static cache for already opened StringPrep profiles */ static UHashtable *SHARED_DATA_HASHTABLE = NULL; -static icu::UInitOnce gSharedDataInitOnce; - -static UMutex *usprepMutex() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static icu::UInitOnce gSharedDataInitOnce = U_INITONCE_INITIALIZER; +static UMutex usprepMutex; /* format version of spp file */ //static uint8_t formatVersion[4]={ 0, 0, 0, 0 }; @@ -151,9 +147,9 @@ usprep_internal_flushCache(UBool noRefCount){ * if shared data hasn't even been lazy evaluated yet * return 0 */ - umtx_lock(usprepMutex()); + umtx_lock(&usprepMutex); if (SHARED_DATA_HASHTABLE == NULL) { - umtx_unlock(usprepMutex()); + umtx_unlock(&usprepMutex); return 0; } @@ -184,7 +180,7 @@ usprep_internal_flushCache(UBool noRefCount){ } } - umtx_unlock(usprepMutex()); + umtx_unlock(&usprepMutex); return deletedNum; } @@ -262,7 +258,7 @@ loadData(UStringPrepProfile* profile, } /* in the mutex block, set the data for this process */ - umtx_lock(usprepMutex()); + umtx_lock(&usprepMutex); if(profile->sprepData==NULL) { profile->sprepData=dataMemory; dataMemory=NULL; @@ -271,7 +267,7 @@ loadData(UStringPrepProfile* profile, } else { p=(const int32_t *)udata_getMemory(profile->sprepData); } - umtx_unlock(usprepMutex()); + umtx_unlock(&usprepMutex); /* initialize some variables */ profile->mappingData=(uint16_t *)((uint8_t *)(p+_SPREP_INDEX_TOP)+profile->indexes[_SPREP_INDEX_TRIE_SIZE]); @@ -328,12 +324,12 @@ usprep_getProfile(const char* path, stackKey.path = (char*) path; /* fetch the data from the cache */ - umtx_lock(usprepMutex()); + umtx_lock(&usprepMutex); profile = (UStringPrepProfile*) (uhash_get(SHARED_DATA_HASHTABLE,&stackKey)); if(profile != NULL) { profile->refCount++; } - umtx_unlock(usprepMutex()); + umtx_unlock(&usprepMutex); if(profile == NULL) { /* else load the data and put the data in the cache */ @@ -365,7 +361,7 @@ usprep_getProfile(const char* path, return NULL; } - umtx_lock(usprepMutex()); + umtx_lock(&usprepMutex); // If another thread already inserted the same key/value, refcount and cleanup our thread data profile = (UStringPrepProfile*) (uhash_get(SHARED_DATA_HASHTABLE,&stackKey)); if(profile != NULL) { @@ -386,7 +382,7 @@ usprep_getProfile(const char* path, profile->refCount = 1; uhash_put(SHARED_DATA_HASHTABLE, key.orphan(), profile, status); } - umtx_unlock(usprepMutex()); + umtx_unlock(&usprepMutex); } return profile; @@ -425,12 +421,12 @@ usprep_close(UStringPrepProfile* profile){ return; } - umtx_lock(usprepMutex()); + umtx_lock(&usprepMutex); /* decrement the ref count*/ if(profile->refCount > 0){ profile->refCount--; } - umtx_unlock(usprepMutex()); + umtx_unlock(&usprepMutex); } diff --git a/source/common/ustr_titlecase_brkiter.cpp b/source/common/ustr_titlecase_brkiter.cpp index 056b40e..457905e 100644 --- a/source/common/ustr_titlecase_brkiter.cpp +++ b/source/common/ustr_titlecase_brkiter.cpp @@ -45,7 +45,7 @@ public: WholeStringBreakIterator() : BreakIterator(), length(0) {} ~WholeStringBreakIterator() U_OVERRIDE; UBool operator==(const BreakIterator&) const U_OVERRIDE; - BreakIterator *clone() const U_OVERRIDE; + WholeStringBreakIterator *clone() const U_OVERRIDE; static UClassID U_EXPORT2 getStaticClassID(); UClassID getDynamicClassID() const U_OVERRIDE; CharacterIterator &getText() const U_OVERRIDE; @@ -62,9 +62,9 @@ public: int32_t preceding(int32_t offset) U_OVERRIDE; UBool isBoundary(int32_t offset) U_OVERRIDE; int32_t next(int32_t n) U_OVERRIDE; - BreakIterator *createBufferClone(void *stackBuffer, int32_t &BufferSize, - UErrorCode &errorCode) U_OVERRIDE; - BreakIterator &refreshInputText(UText *input, UErrorCode &errorCode) U_OVERRIDE; + WholeStringBreakIterator *createBufferClone(void *stackBuffer, int32_t &BufferSize, + UErrorCode &errorCode) U_OVERRIDE; + WholeStringBreakIterator &refreshInputText(UText *input, UErrorCode &errorCode) U_OVERRIDE; private: int32_t length; @@ -74,7 +74,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(WholeStringBreakIterator) WholeStringBreakIterator::~WholeStringBreakIterator() {} UBool WholeStringBreakIterator::operator==(const BreakIterator&) const { return FALSE; } -BreakIterator *WholeStringBreakIterator::clone() const { return nullptr; } +WholeStringBreakIterator *WholeStringBreakIterator::clone() const { return nullptr; } CharacterIterator &WholeStringBreakIterator::getText() const { UPRV_UNREACHABLE; // really should not be called @@ -113,14 +113,14 @@ int32_t WholeStringBreakIterator::preceding(int32_t /*offset*/) { return 0; } UBool WholeStringBreakIterator::isBoundary(int32_t /*offset*/) { return FALSE; } int32_t WholeStringBreakIterator::next(int32_t /*n*/) { return length; } -BreakIterator *WholeStringBreakIterator::createBufferClone( +WholeStringBreakIterator *WholeStringBreakIterator::createBufferClone( void * /*stackBuffer*/, int32_t & /*BufferSize*/, UErrorCode &errorCode) { if (U_SUCCESS(errorCode)) { errorCode = U_UNSUPPORTED_ERROR; } return nullptr; } -BreakIterator &WholeStringBreakIterator::refreshInputText( +WholeStringBreakIterator &WholeStringBreakIterator::refreshInputText( UText * /*input*/, UErrorCode &errorCode) { if (U_SUCCESS(errorCode)) { errorCode = U_UNSUPPORTED_ERROR; diff --git a/source/common/ustring.cpp b/source/common/ustring.cpp index 6450ea2..67cb454 100644 --- a/source/common/ustring.cpp +++ b/source/common/ustring.cpp @@ -1428,7 +1428,7 @@ u_unescape(const char *src, UChar *dest, int32_t destCapacity) { * NUL-terminate a string no matter what its type. * Set warning and error codes accordingly. */ -#define __TERMINATE_STRING(dest, destCapacity, length, pErrorCode) \ +#define __TERMINATE_STRING(dest, destCapacity, length, pErrorCode) UPRV_BLOCK_MACRO_BEGIN { \ if(pErrorCode!=NULL && U_SUCCESS(*pErrorCode)) { \ /* not a public function, so no complete argument checking */ \ \ @@ -1448,7 +1448,8 @@ u_unescape(const char *src, UChar *dest, int32_t destCapacity) { /* even the string itself did not fit - set an error code */ \ *pErrorCode=U_BUFFER_OVERFLOW_ERROR; \ } \ - } + } \ +} UPRV_BLOCK_MACRO_END U_CAPI int32_t U_EXPORT2 u_terminateUChars(UChar *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode) { @@ -1488,7 +1489,7 @@ u_terminateWChars(wchar_t *dest, int32_t destCapacity, int32_t length, UErrorCod the output range. [LIU] */ -#define STRING_HASH(TYPE, STR, STRLEN, DEREF) \ +#define STRING_HASH(TYPE, STR, STRLEN, DEREF) UPRV_BLOCK_MACRO_BEGIN { \ uint32_t hash = 0; \ const TYPE *p = (const TYPE*) STR; \ if (p != NULL) { \ @@ -1500,7 +1501,8 @@ u_terminateWChars(wchar_t *dest, int32_t destCapacity, int32_t length, UErrorCod p += inc; \ } \ } \ - return static_cast(hash) + return static_cast(hash); \ +} UPRV_BLOCK_MACRO_END /* Used by UnicodeString to compute its hashcode - Not public API. */ U_CAPI int32_t U_EXPORT2 diff --git a/source/common/utext.cpp b/source/common/utext.cpp index 6f579bd..9a77228 100644 --- a/source/common/utext.cpp +++ b/source/common/utext.cpp @@ -567,7 +567,7 @@ enum { struct ExtendedUText { UText ut; - UAlignedMemory extension; + max_align_t extension; }; static const UText emptyText = UTEXT_INITIALIZER; @@ -582,7 +582,7 @@ utext_setup(UText *ut, int32_t extraSpace, UErrorCode *status) { // We need to heap-allocate storage for the new UText int32_t spaceRequired = sizeof(UText); if (extraSpace > 0) { - spaceRequired = sizeof(ExtendedUText) + extraSpace - sizeof(UAlignedMemory); + spaceRequired = sizeof(ExtendedUText) + extraSpace - sizeof(max_align_t); } ut = (UText *)uprv_malloc(spaceRequired); if (ut == NULL) { diff --git a/source/common/util.cpp b/source/common/util.cpp index a762cc4..86e5c79 100644 --- a/source/common/util.cpp +++ b/source/common/util.cpp @@ -276,6 +276,16 @@ int32_t ICU_Utility::parsePattern(const UnicodeString& pat, return -1; // text ended before end of pat } +int32_t ICU_Utility::parseAsciiInteger(const UnicodeString& str, int32_t& pos) { + int32_t result = 0; + UChar c; + while (pos < str.length() && (c = str.charAt(pos)) >= u'0' && c <= u'9') { + result = result * 10 + (c - u'0'); + pos++; + } + return result; +} + /** * Append a character to a rule that is being built up. To flush * the quoteBuf to rule, make one final call with isLiteral == TRUE. diff --git a/source/common/util.h b/source/common/util.h index e197cab..f3f71dc 100644 --- a/source/common/util.h +++ b/source/common/util.h @@ -179,13 +179,22 @@ class U_COMMON_API ICU_Utility /* not : public UObject because all methods are s * Parse an integer at pos, either of the form \d+ or of the form * 0x[0-9A-Fa-f]+ or 0[0-7]+, that is, in standard decimal, hex, * or octal format. - * @param pos INPUT-OUTPUT parameter. On input, the first - * character to parse. On output, the character after the last - * parsed character. + * @param pos INPUT-OUTPUT parameter. On input, the index of the first + * character to parse. On output, the index of the character after the + * last parsed character. */ static int32_t parseInteger(const UnicodeString& rule, int32_t& pos, int32_t limit); /** + * Parse an integer at pos using only ASCII digits. + * Base 10 only. + * @param pos INPUT-OUTPUT parameter. On input, the index of the first + * character to parse. On output, the index of the character after the + * last parsed character. + */ + static int32_t parseAsciiInteger(const UnicodeString& str, int32_t& pos); + + /** * Parse a Unicode identifier from the given string at the given * position. Return the identifier, or an empty string if there * is no identifier. diff --git a/source/common/utrace.cpp b/source/common/utrace.cpp index 2ac3d77..c981546 100644 --- a/source/common/utrace.cpp +++ b/source/common/utrace.cpp @@ -476,6 +476,16 @@ trCollNames[] = { NULL }; + +static const char* const +trResDataNames[] = { + "resc", + "bundle-open", + "file-open", + "res-open", + NULL +}; + U_CAPI const char * U_EXPORT2 utrace_functionName(int32_t fnNumber) { @@ -485,6 +495,8 @@ utrace_functionName(int32_t fnNumber) { return trConvNames[fnNumber - UTRACE_CONVERSION_START]; } else if(UTRACE_COLLATION_START <= fnNumber && fnNumber < UTRACE_COLLATION_LIMIT){ return trCollNames[fnNumber - UTRACE_COLLATION_START]; + } else if(UTRACE_UDATA_START <= fnNumber && fnNumber < UTRACE_RES_DATA_LIMIT){ + return trResDataNames[fnNumber - UTRACE_UDATA_START]; } else { return "[BOGUS Trace Function Number]"; } diff --git a/source/common/utracimp.h b/source/common/utracimp.h index e8ee53f..f32fe1d 100644 --- a/source/common/utracimp.h +++ b/source/common/utracimp.h @@ -144,10 +144,12 @@ U_CDECL_END */ #define UTRACE_ENTRY(fnNumber) \ int32_t utraceFnNumber=(fnNumber); \ +UPRV_BLOCK_MACRO_BEGIN { \ if(utrace_getLevel()>=UTRACE_INFO) { \ utrace_entry(fnNumber); \ utraceFnNumber |= UTRACE_TRACED_ENTRY; \ - } + } \ +} UPRV_BLOCK_MACRO_END /** @@ -162,10 +164,12 @@ U_CDECL_END */ #define UTRACE_ENTRY_OC(fnNumber) \ int32_t utraceFnNumber=(fnNumber); \ +UPRV_BLOCK_MACRO_BEGIN { \ if(utrace_getLevel()>=UTRACE_OPEN_CLOSE) { \ utrace_entry(fnNumber); \ utraceFnNumber |= UTRACE_TRACED_ENTRY; \ - } + } \ +} UPRV_BLOCK_MACRO_END /** * Trace statement for each exit point of a function that has a UTRACE_ENTRY() @@ -179,10 +183,11 @@ U_CDECL_END * * @internal */ -#define UTRACE_EXIT() \ - {if(utraceFnNumber & UTRACE_TRACED_ENTRY) { \ +#define UTRACE_EXIT() UPRV_BLOCK_MACRO_BEGIN { \ + if(utraceFnNumber & UTRACE_TRACED_ENTRY) { \ utrace_exit(utraceFnNumber & ~UTRACE_TRACED_ENTRY, UTRACE_EXITV_NONE); \ - }} + } \ +} UPRV_BLOCK_MACRO_END /** * Trace statement for each exit point of a function that has a UTRACE_ENTRY() @@ -192,25 +197,29 @@ U_CDECL_END * * @internal */ -#define UTRACE_EXIT_VALUE(val) \ - {if(utraceFnNumber & UTRACE_TRACED_ENTRY) { \ +#define UTRACE_EXIT_VALUE(val) UPRV_BLOCK_MACRO_BEGIN { \ + if(utraceFnNumber & UTRACE_TRACED_ENTRY) { \ utrace_exit(utraceFnNumber & ~UTRACE_TRACED_ENTRY, UTRACE_EXITV_I32, val); \ - }} + } \ +} UPRV_BLOCK_MACRO_END -#define UTRACE_EXIT_STATUS(status) \ - {if(utraceFnNumber & UTRACE_TRACED_ENTRY) { \ +#define UTRACE_EXIT_STATUS(status) UPRV_BLOCK_MACRO_BEGIN { \ + if(utraceFnNumber & UTRACE_TRACED_ENTRY) { \ utrace_exit(utraceFnNumber & ~UTRACE_TRACED_ENTRY, UTRACE_EXITV_STATUS, status); \ - }} + } \ +} UPRV_BLOCK_MACRO_END -#define UTRACE_EXIT_VALUE_STATUS(val, status) \ - {if(utraceFnNumber & UTRACE_TRACED_ENTRY) { \ +#define UTRACE_EXIT_VALUE_STATUS(val, status) UPRV_BLOCK_MACRO_BEGIN { \ + if(utraceFnNumber & UTRACE_TRACED_ENTRY) { \ utrace_exit(utraceFnNumber & ~UTRACE_TRACED_ENTRY, (UTRACE_EXITV_I32 | UTRACE_EXITV_STATUS), val, status); \ - }} + } \ +} UPRV_BLOCK_MACRO_END -#define UTRACE_EXIT_PTR_STATUS(ptr, status) \ - {if(utraceFnNumber & UTRACE_TRACED_ENTRY) { \ +#define UTRACE_EXIT_PTR_STATUS(ptr, status) UPRV_BLOCK_MACRO_BEGIN { \ + if(utraceFnNumber & UTRACE_TRACED_ENTRY) { \ utrace_exit(utraceFnNumber & ~UTRACE_TRACED_ENTRY, (UTRACE_EXITV_PTR | UTRACE_EXITV_STATUS), ptr, status); \ - }} + } \ +} UPRV_BLOCK_MACRO_END /** * Trace statement used inside functions that have a UTRACE_ENTRY() statement. @@ -220,10 +229,11 @@ U_CDECL_END * Calls utrace_data() if the level is high enough. * @internal */ -#define UTRACE_DATA0(level, fmt) \ +#define UTRACE_DATA0(level, fmt) UPRV_BLOCK_MACRO_BEGIN { \ if(UTRACE_LEVEL(level)) { \ utrace_data(utraceFnNumber & ~UTRACE_TRACED_ENTRY, (level), (fmt)); \ - } + } \ +} UPRV_BLOCK_MACRO_END /** * Trace statement used inside functions that have a UTRACE_ENTRY() statement. @@ -233,10 +243,11 @@ U_CDECL_END * Calls utrace_data() if the level is high enough. * @internal */ -#define UTRACE_DATA1(level, fmt, a) \ +#define UTRACE_DATA1(level, fmt, a) UPRV_BLOCK_MACRO_BEGIN { \ if(UTRACE_LEVEL(level)) { \ utrace_data(utraceFnNumber & ~UTRACE_TRACED_ENTRY , (level), (fmt), (a)); \ - } + } \ +} UPRV_BLOCK_MACRO_END /** * Trace statement used inside functions that have a UTRACE_ENTRY() statement. @@ -246,10 +257,11 @@ U_CDECL_END * Calls utrace_data() if the level is high enough. * @internal */ -#define UTRACE_DATA2(level, fmt, a, b) \ +#define UTRACE_DATA2(level, fmt, a, b) UPRV_BLOCK_MACRO_BEGIN { \ if(UTRACE_LEVEL(level)) { \ utrace_data(utraceFnNumber & ~UTRACE_TRACED_ENTRY , (level), (fmt), (a), (b)); \ - } + } \ +} UPRV_BLOCK_MACRO_END /** * Trace statement used inside functions that have a UTRACE_ENTRY() statement. @@ -259,10 +271,11 @@ U_CDECL_END * Calls utrace_data() if the level is high enough. * @internal */ -#define UTRACE_DATA3(level, fmt, a, b, c) \ +#define UTRACE_DATA3(level, fmt, a, b, c) UPRV_BLOCK_MACRO_BEGIN { \ if(UTRACE_LEVEL(level)) { \ utrace_data(utraceFnNumber & ~UTRACE_TRACED_ENTRY, (level), (fmt), (a), (b), (c)); \ - } + } \ +} UPRV_BLOCK_MACRO_END /** * Trace statement used inside functions that have a UTRACE_ENTRY() statement. @@ -272,10 +285,11 @@ U_CDECL_END * Calls utrace_data() if the level is high enough. * @internal */ -#define UTRACE_DATA4(level, fmt, a, b, c, d) \ +#define UTRACE_DATA4(level, fmt, a, b, c, d) UPRV_BLOCK_MACRO_BEGIN { \ if(UTRACE_LEVEL(level)) { \ utrace_data(utraceFnNumber & ~UTRACE_TRACED_ENTRY, (level), (fmt), (a), (b), (c), (d)); \ - } + } \ +} UPRV_BLOCK_MACRO_END /** * Trace statement used inside functions that have a UTRACE_ENTRY() statement. @@ -285,10 +299,11 @@ U_CDECL_END * Calls utrace_data() if the level is high enough. * @internal */ -#define UTRACE_DATA5(level, fmt, a, b, c, d, e) \ +#define UTRACE_DATA5(level, fmt, a, b, c, d, e) UPRV_BLOCK_MACRO_BEGIN { \ if(UTRACE_LEVEL(level)) { \ utrace_data(utraceFnNumber & ~UTRACE_TRACED_ENTRY, (level), (fmt), (a), (b), (c), (d), (e)); \ - } + } \ +} UPRV_BLOCK_MACRO_END /** * Trace statement used inside functions that have a UTRACE_ENTRY() statement. @@ -298,10 +313,11 @@ U_CDECL_END * Calls utrace_data() if the level is high enough. * @internal */ -#define UTRACE_DATA6(level, fmt, a, b, c, d, e, f) \ +#define UTRACE_DATA6(level, fmt, a, b, c, d, e, f) UPRV_BLOCK_MACRO_BEGIN { \ if(UTRACE_LEVEL(level)) { \ utrace_data(utraceFnNumber & ~UTRACE_TRACED_ENTRY, (level), (fmt), (a), (b), (c), (d), (e), (f)); \ - } + } \ +} UPRV_BLOCK_MACRO_END /** * Trace statement used inside functions that have a UTRACE_ENTRY() statement. @@ -311,10 +327,11 @@ U_CDECL_END * Calls utrace_data() if the level is high enough. * @internal */ -#define UTRACE_DATA7(level, fmt, a, b, c, d, e, f, g) \ +#define UTRACE_DATA7(level, fmt, a, b, c, d, e, f, g) UPRV_BLOCK_MACRO_BEGIN { \ if(UTRACE_LEVEL(level)) { \ utrace_data(utraceFnNumber & ~UTRACE_TRACED_ENTRY, (level), (fmt), (a), (b), (c), (d), (e), (f), (g)); \ - } + } \ +} UPRV_BLOCK_MACRO_END /** * Trace statement used inside functions that have a UTRACE_ENTRY() statement. @@ -324,10 +341,11 @@ U_CDECL_END * Calls utrace_data() if the level is high enough. * @internal */ -#define UTRACE_DATA8(level, fmt, a, b, c, d, e, f, g, h) \ +#define UTRACE_DATA8(level, fmt, a, b, c, d, e, f, g, h) UPRV_BLOCK_MACRO_BEGIN { \ if(UTRACE_LEVEL(level)) { \ utrace_data(utraceFnNumber & ~UTRACE_TRACED_ENTRY, (level), (fmt), (a), (b), (c), (d), (e), (f), (g), (h)); \ - } + } \ +} UPRV_BLOCK_MACRO_END /** * Trace statement used inside functions that have a UTRACE_ENTRY() statement. @@ -337,10 +355,11 @@ U_CDECL_END * Calls utrace_data() if the level is high enough. * @internal */ -#define UTRACE_DATA9(level, fmt, a, b, c, d, e, f, g, h, i) \ +#define UTRACE_DATA9(level, fmt, a, b, c, d, e, f, g, h, i) UPRV_BLOCK_MACRO_BEGIN { \ if(UTRACE_LEVEL(level)) { \ utrace_data(utraceFnNumber & ~UTRACE_TRACED_ENTRY, (level), (fmt), (a), (b), (c), (d), (e), (f), (g), (h), (i)); \ - } + } \ +} UPRV_BLOCK_MACRO_END #else diff --git a/source/common/utrie.h b/source/common/utrie.h index 3e2197e..532ba77 100644 --- a/source/common/utrie.h +++ b/source/common/utrie.h @@ -182,7 +182,7 @@ typedef struct UTrie UTrie; ] /** Internal trie getter from a pair of surrogates */ -#define _UTRIE_GET_FROM_PAIR(trie, data, c, c2, result, resultType) { \ +#define _UTRIE_GET_FROM_PAIR(trie, data, c, c2, result, resultType) UPRV_BLOCK_MACRO_BEGIN { \ int32_t __offset; \ \ /* get data for lead surrogate */ \ @@ -195,18 +195,18 @@ typedef struct UTrie UTrie; } else { \ (result)=(resultType)((trie)->initialValue); \ } \ -} +} UPRV_BLOCK_MACRO_END /** Internal trie getter from a BMP code point, treating a lead surrogate as a normal code point */ #define _UTRIE_GET_FROM_BMP(trie, data, c16) \ - _UTRIE_GET_RAW(trie, data, 0xd800<=(c16) && (c16)<=0xdbff ? UTRIE_LEAD_INDEX_DISP : 0, c16); + _UTRIE_GET_RAW(trie, data, 0xd800<=(c16) && (c16)<=0xdbff ? UTRIE_LEAD_INDEX_DISP : 0, c16) /** * Internal trie getter from a code point. * Could be faster(?) but longer with * if((c32)<=0xd7ff) { (result)=_UTRIE_GET_RAW(trie, data, 0, c32); } */ -#define _UTRIE_GET(trie, data, c32, result, resultType) \ +#define _UTRIE_GET(trie, data, c32, result, resultType) UPRV_BLOCK_MACRO_BEGIN { \ if((uint32_t)(c32)<=0xffff) { \ /* BMP code points */ \ (result)=_UTRIE_GET_FROM_BMP(trie, data, c32); \ @@ -217,10 +217,11 @@ typedef struct UTrie UTrie; } else { \ /* out of range */ \ (result)=(resultType)((trie)->initialValue); \ - } + } \ +} UPRV_BLOCK_MACRO_END /** Internal next-post-increment: get the next code point (c, c2) and its data */ -#define _UTRIE_NEXT(trie, data, src, limit, c, c2, result, resultType) { \ +#define _UTRIE_NEXT(trie, data, src, limit, c, c2, result, resultType) UPRV_BLOCK_MACRO_BEGIN { \ (c)=*(src)++; \ if(!U16_IS_LEAD(c)) { \ (c2)=0; \ @@ -233,10 +234,10 @@ typedef struct UTrie UTrie; (c2)=0; \ (result)=_UTRIE_GET_RAW((trie), data, UTRIE_LEAD_INDEX_DISP, (c)); \ } \ -} +} UPRV_BLOCK_MACRO_END /** Internal previous: get the previous code point (c, c2) and its data */ -#define _UTRIE_PREVIOUS(trie, data, start, src, c, c2, result, resultType) { \ +#define _UTRIE_PREVIOUS(trie, data, start, src, c, c2, result, resultType) UPRV_BLOCK_MACRO_BEGIN { \ (c)=*--(src); \ if(!U16_IS_SURROGATE(c)) { \ (c2)=0; \ @@ -257,7 +258,7 @@ typedef struct UTrie UTrie; (c2)=0; \ (result)=_UTRIE_GET_RAW((trie), data, UTRIE_LEAD_INDEX_DISP, (c)); \ } \ -} +} UPRV_BLOCK_MACRO_END /* Public UTrie API ---------------------------------------------------------*/ diff --git a/source/common/utrie2.h b/source/common/utrie2.h index 75028ee..671f44e 100644 --- a/source/common/utrie2.h +++ b/source/common/utrie2.h @@ -871,7 +871,7 @@ utrie2_internalU8PrevIndex(const UTrie2 *trie, UChar32 c, (trie)->data[_UTRIE2_INDEX_FROM_CP(trie, asciiOffset, c)] /** Internal next-post-increment: get the next code point (c) and its data. */ -#define _UTRIE2_U16_NEXT(trie, data, src, limit, c, result) { \ +#define _UTRIE2_U16_NEXT(trie, data, src, limit, c, result) UPRV_BLOCK_MACRO_BEGIN { \ { \ uint16_t __c2; \ (c)=*(src)++; \ @@ -885,10 +885,10 @@ utrie2_internalU8PrevIndex(const UTrie2 *trie, UChar32 c, (result)=_UTRIE2_GET_FROM_SUPP((trie), data, (c)); \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** Internal pre-decrement-previous: get the previous code point (c) and its data */ -#define _UTRIE2_U16_PREV(trie, data, start, src, c, result) { \ +#define _UTRIE2_U16_PREV(trie, data, start, src, c, result) UPRV_BLOCK_MACRO_BEGIN { \ { \ uint16_t __c2; \ (c)=*--(src); \ @@ -900,10 +900,10 @@ utrie2_internalU8PrevIndex(const UTrie2 *trie, UChar32 c, (result)=_UTRIE2_GET_FROM_SUPP((trie), data, (c)); \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** Internal UTF-8 next-post-increment: get the next code point's data. */ -#define _UTRIE2_U8_NEXT(trie, ascii, data, src, limit, result) { \ +#define _UTRIE2_U8_NEXT(trie, ascii, data, src, limit, result) UPRV_BLOCK_MACRO_BEGIN { \ uint8_t __lead=(uint8_t)*(src)++; \ if(U8_IS_SINGLE(__lead)) { \ (result)=(trie)->ascii[__lead]; \ @@ -935,10 +935,10 @@ utrie2_internalU8PrevIndex(const UTrie2 *trie, UChar32 c, (result)=(trie)->data[__index>>3]; \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /** Internal UTF-8 pre-decrement-previous: get the previous code point's data. */ -#define _UTRIE2_U8_PREV(trie, ascii, data, start, src, result) { \ +#define _UTRIE2_U8_PREV(trie, ascii, data, start, src, result) UPRV_BLOCK_MACRO_BEGIN { \ uint8_t __b=(uint8_t)*--(src); \ if(U8_IS_SINGLE(__b)) { \ (result)=(trie)->ascii[__b]; \ @@ -948,7 +948,7 @@ utrie2_internalU8PrevIndex(const UTrie2 *trie, UChar32 c, (src)-=__index&7; \ (result)=(trie)->data[__index>>3]; \ } \ -} +} UPRV_BLOCK_MACRO_END U_CDECL_END diff --git a/source/config/mh-cygwin-msvc b/source/config/mh-cygwin-msvc index 0db6b26..31ac458 100644 --- a/source/config/mh-cygwin-msvc +++ b/source/config/mh-cygwin-msvc @@ -121,13 +121,13 @@ LIBCTESTFW= $(top_builddir)/tools/ctestfw/$(LIBICU)$(CTESTFW_STUBNAME)$(ICULIBSU LIBICUTOOLUTIL= $(LIBDIR)/$(LIBICU)$(TOOLUTIL_STUBNAME)$(ICULIBSUFFIX).lib ## These are the library specific LDFLAGS -LDFLAGSICUDT+= -base:"0x4ad00000" -NOENTRY# The NOENTRY option is required for creating a resource-only DLL. -LDFLAGSICUUC= -base:"0x4a800000"# in-uc = 1MB -LDFLAGSICUI18N= -base:"0x4a900000"# io-in = 2MB -LDFLAGSICUIO= -base:"0x4ab00000"# le-io = 1MB -LDFLAGSICULX= -base:"0x4ac80000" +LDFLAGSICUDT+= -NOENTRY# The NOENTRY option is required for creating a resource-only DLL. +LDFLAGSICUUC=# Unused for now. +LDFLAGSICUI18N=# Unused for now. +LDFLAGSICUIO=# Unused for now. +LDFLAGSICULX=# Unused for now. LDFLAGSCTESTFW=# Unused for now. -LDFLAGSICUTOOLUTIL= -base:"0x4ac00000"# Same as layout. Layout and tools probably won't mix. +LDFLAGSICUTOOLUTIL=# Unused for now. # The #M# is used to delete lines for icu-config # Current full path directory. diff --git a/source/config/mh-mingw b/source/config/mh-mingw index 78df54a..7dac12f 100644 --- a/source/config/mh-mingw +++ b/source/config/mh-mingw @@ -103,13 +103,29 @@ LIBICU = $(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX) #SH## with usually. Many applications will want to add ${ICULIBS_I18N} as well. #SH#ICULIBS="${ICULIBS_BASE} ${ICULIBS_I18N} ${ICULIBS_COMMON} ${ICULIBS_DATA} " -# The #M# is used to delete lines for icu-config -# Current full path directory. -#CURR_FULL_DIR=$(shell pwd -W)#M# for MSYS -CURR_FULL_DIR?=$(subst \,/,$(shell cmd /c cd))#M# for Cygwin shell -# Current full path directory for use in source code in a -D compiler option. -#CURR_SRCCODE_FULL_DIR=$(subst /,\\\\,$(shell pwd -W))#M# for MSYS -CURR_SRCCODE_FULL_DIR=$(subst \,/,$(shell cmd /c cd))#M# for Cygwin shell +# Note: The #M# is used to delete lines for icu-config +MSYS_VERSION ?= $(if $(findstring Msys, $(shell uname -o)),$(word 1, $(subst ., ,$(shell uname -r))),0)#M# +$(info Detected MSYS version: $(MSYS_VERSION)) + +ifeq ($(MSYS_VERSION),$(filter $(MSYS_VERSION),0 1)) + # Older versions of MSYS don't have cygpath by default. #M# + + # Current full path directory. #M# + #CURR_FULL_DIR=$(shell pwd -W)#M# for MSYS + CURR_FULL_DIR?=$(subst \,/,$(shell cmd /c cd))#M# for Cygwin shell + + # Current full path directory for use in source code in a -D compiler option. #M# + #CURR_SRCCODE_FULL_DIR=$(subst /,\\\\,$(shell pwd -W))#M# for MSYS + CURR_SRCCODE_FULL_DIR=$(subst \,/,$(shell cmd /c cd))#M# for Cygwin shell +else + # MSYS2 and up have cygpath by default #M# + + # Current full path directory. #M# + CURR_FULL_DIR?=$(shell cygpath . -a -m)#M# + + # Current full path directory for use in source code in a -D compiler option. #M# + CURR_SRCCODE_FULL_DIR=$(shell cygpath . -a -m)#M# +endif ## Compilation rules %.$(STATIC_O): $(srcdir)/%.c diff --git a/source/config/mh-mingw64 b/source/config/mh-mingw64 index 7d464e5..456997a 100644 --- a/source/config/mh-mingw64 +++ b/source/config/mh-mingw64 @@ -103,13 +103,29 @@ LIBICU = $(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX) #SH## with usually. Many applications will want to add ${ICULIBS_I18N} as well. #SH#ICULIBS="${ICULIBS_BASE} ${ICULIBS_I18N} ${ICULIBS_COMMON} ${ICULIBS_DATA} " -# The #M# is used to delete lines for icu-config -# Current full path directory. -#CURR_FULL_DIR=$(shell pwd -W)#M# for MSYS -CURR_FULL_DIR?=$(subst \,/,$(shell cmd /c cd))#M# for Cygwin shell -# Current full path directory for use in source code in a -D compiler option. -#CURR_SRCCODE_FULL_DIR=$(subst /,\\\\,$(shell pwd -W))#M# for MSYS -CURR_SRCCODE_FULL_DIR=$(subst \,/,$(shell cmd /c cd))#M# for Cygwin shell +# Note: The #M# is used to delete lines for icu-config +MSYS_VERSION ?= $(if $(findstring Msys, $(shell uname -o)),$(word 1, $(subst ., ,$(shell uname -r))),0)#M# +$(info Detected MSYS version: $(MSYS_VERSION)) + +ifeq ($(MSYS_VERSION),$(filter $(MSYS_VERSION),0 1)) + # Older versions of MSYS don't have cygpath by default. #M# + + # Current full path directory. #M# + #CURR_FULL_DIR=$(shell pwd -W)#M# for MSYS + CURR_FULL_DIR?=$(subst \,/,$(shell cmd /c cd))#M# for Cygwin shell + + # Current full path directory for use in source code in a -D compiler option. #M# + #CURR_SRCCODE_FULL_DIR=$(subst /,\\\\,$(shell pwd -W))#M# for MSYS + CURR_SRCCODE_FULL_DIR=$(subst \,/,$(shell cmd /c cd))#M# for Cygwin shell +else + # MSYS2 and up have cygpath by default #M# + + # Current full path directory. #M# + CURR_FULL_DIR?=$(shell cygpath . -a -m)#M# + + # Current full path directory for use in source code in a -D compiler option. #M# + CURR_SRCCODE_FULL_DIR=$(shell cygpath . -a -m)#M# +endif ## Compilation rules %.$(STATIC_O): $(srcdir)/%.c diff --git a/source/config/mh-msys-msvc b/source/config/mh-msys-msvc index 05fe514..17f710e 100644 --- a/source/config/mh-msys-msvc +++ b/source/config/mh-msys-msvc @@ -122,13 +122,13 @@ LIBCTESTFW= $(top_builddir)/tools/ctestfw/$(LIBICU)$(CTESTFW_STUBNAME)$(ICULIBSU LIBICUTOOLUTIL= $(LIBDIR)/$(LIBICU)$(TOOLUTIL_STUBNAME)$(ICULIBSUFFIX).lib ## These are the library specific LDFLAGS -LDFLAGSICUDT+= -base:"0x4ad00000" -NOENTRY# The NOENTRY option is required for creating a resource-only DLL. -LDFLAGSICUUC= -base:"0x4a800000"# in-uc = 1MB -LDFLAGSICUI18N= -base:"0x4a900000"# io-in = 2MB -LDFLAGSICUIO= -base:"0x4ab00000"# le-io = 1MB -LDFLAGSICULX= -base:"0x4ac80000" +LDFLAGSICUDT+= -NOENTRY# The NOENTRY option is required for creating a resource-only DLL. +LDFLAGSICUUC=# Unused for now. +LDFLAGSICUI18N=# Unused for now. +LDFLAGSICUIO=# Unused for now. +LDFLAGSICULX=# Unused for now. LDFLAGSCTESTFW=# Unused for now. -LDFLAGSICUTOOLUTIL= -base:"0x4ac00000"# Same as layout. Layout and tools probably won't mix. +LDFLAGSICUTOOLUTIL=# Unused for now. ## Compilation rules %.$(STATIC_O): $(srcdir)/%.c diff --git a/source/configure b/source/configure index 9ef981d..35c8c56 100755 --- a/source/configure +++ b/source/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for ICU 64.2. +# Generated by GNU Autoconf 2.69 for ICU 65.1. # # Report bugs to . # @@ -582,8 +582,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ICU' PACKAGE_TARNAME='International Components for Unicode' -PACKAGE_VERSION='64.2' -PACKAGE_STRING='ICU 64.2' +PACKAGE_VERSION='65.1' +PACKAGE_STRING='ICU 65.1' PACKAGE_BUGREPORT='http://icu-project.org/bugs' PACKAGE_URL='http://icu-project.org' @@ -645,6 +645,8 @@ ICULIBSUFFIX DATA_PACKAGING_MODE thepkgicudatadir pkgicudatadir +U_HAVE_FUZZER +FUZZER_TRUE U_HAVE_TOOLS TOOLS_TRUE U_HAVE_LAYOUTEX @@ -797,6 +799,7 @@ enable_icuio enable_layoutex enable_layout enable_tools +enable_fuzzer with_data_packaging with_library_suffix enable_tests @@ -1359,7 +1362,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ICU 64.2 to adapt to many kinds of systems. +\`configure' configures ICU 65.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1425,7 +1428,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ICU 64.2:";; + short | recursive ) echo "Configuration of ICU 65.1:";; esac cat <<\_ACEOF @@ -1454,6 +1457,7 @@ Optional Features: icu-le-hb must be installed via pkg-config. See http://harfbuzz.org --enable-tools build ICU's tools default=yes + --enable-fuzzer build ICU's fuzzer test targets default=no --enable-tests build ICU tests default=yes --enable-samples build ICU samples default=yes @@ -1562,7 +1566,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ICU configure 64.2 +ICU configure 65.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2197,6 +2201,60 @@ $as_echo "$ac_res" >&6; } } # ac_fn_c_check_func +# ac_fn_cxx_check_type LINENO TYPE VAR INCLUDES +# --------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_cxx_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_cxx_check_type + # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache @@ -2254,7 +2312,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ICU $as_me 64.2, which was +It was created by ICU $as_me 65.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -7149,6 +7207,29 @@ else fi +# Check if C++17 std::string_view is available. +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +ac_fn_cxx_check_type "$LINENO" "std::string_view" "ac_cv_type_std__string_view" "#include +" +if test "x$ac_cv_type_std__string_view" = xyes; then : + +fi + +if test "x$ac_cv_type_std__string_view" = xyes; then : + CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STRING_VIEW=1" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + # Checks for typedefs ac_fn_c_check_type "$LINENO" "int8_t" "ac_cv_type_int8_t" "$ac_includes_default" if test "x$ac_cv_type_int8_t" = xyes; then : @@ -7665,6 +7746,28 @@ else U_HAVE_TOOLS=0 fi +# Enable/disable fuzzer target tests. +# Check whether --enable-fuzzer was given. +if test "${enable_fuzzer+set}" = set; then : + enableval=$enable_fuzzer; case "${enableval}" in + yes) fuzzer=true ;; + no) fuzzer=false ;; + *) as_fn_error $? "bad value ${enableval} for --enable-fuzzer" "$LINENO" 5 ;; + esac +else + fuzzer=false +fi + + + +if test "$fuzzer" = true; then + FUZZER_TRUE= + U_HAVE_FUZZER=1 +else + FUZZER_TRUE='#' + U_HAVE_FUZZER=0 +fi + # Check whether --with-data-packaging was given. if test "${with_data_packaging+set}" = set; then : @@ -7863,6 +7966,7 @@ fi if test "${CXX}" = "clang++"; then CLANGCXXFLAGS="-Qunused-arguments -Wno-parentheses-equality" + LIBCXXFLAGS="$LIBCXXFLAGS -Wglobal-constructors" else CLANGCXXFLAGS="" fi @@ -7883,7 +7987,7 @@ echo "CXXFLAGS=$CXXFLAGS" # output the Makefiles -ac_config_files="$ac_config_files icudefs.mk Makefile data/pkgdataMakefile config/Makefile.inc config/icu.pc config/pkgdataMakefile data/Makefile stubdata/Makefile common/Makefile i18n/Makefile layoutex/Makefile io/Makefile extra/Makefile extra/uconv/Makefile extra/uconv/pkgdataMakefile extra/scrptrun/Makefile tools/Makefile tools/ctestfw/Makefile tools/toolutil/Makefile tools/makeconv/Makefile tools/genrb/Makefile tools/genccode/Makefile tools/gencmn/Makefile tools/gencnval/Makefile tools/gendict/Makefile tools/gentest/Makefile tools/gennorm2/Makefile tools/genbrk/Makefile tools/gensprep/Makefile tools/icuinfo/Makefile tools/icupkg/Makefile tools/icuswap/Makefile tools/pkgdata/Makefile tools/tzcode/Makefile tools/gencfu/Makefile tools/escapesrc/Makefile test/Makefile test/compat/Makefile test/testdata/Makefile test/testdata/pkgdataMakefile test/hdrtst/Makefile test/intltest/Makefile test/cintltst/Makefile test/iotest/Makefile test/letest/Makefile test/perf/Makefile test/perf/collationperf/Makefile test/perf/collperf/Makefile test/perf/collperf2/Makefile test/perf/dicttrieperf/Makefile test/perf/ubrkperf/Makefile test/perf/charperf/Makefile test/perf/convperf/Makefile test/perf/normperf/Makefile test/perf/DateFmtPerf/Makefile test/perf/howExpensiveIs/Makefile test/perf/strsrchperf/Makefile test/perf/unisetperf/Makefile test/perf/usetperf/Makefile test/perf/ustrperf/Makefile test/perf/utfperf/Makefile test/perf/utrie2perf/Makefile test/perf/leperf/Makefile samples/Makefile samples/date/Makefile samples/cal/Makefile samples/layout/Makefile" +ac_config_files="$ac_config_files icudefs.mk Makefile data/pkgdataMakefile config/Makefile.inc config/icu.pc config/pkgdataMakefile data/Makefile stubdata/Makefile common/Makefile i18n/Makefile layoutex/Makefile io/Makefile extra/Makefile extra/uconv/Makefile extra/uconv/pkgdataMakefile extra/scrptrun/Makefile tools/Makefile tools/ctestfw/Makefile tools/toolutil/Makefile tools/makeconv/Makefile tools/genrb/Makefile tools/genccode/Makefile tools/gencmn/Makefile tools/gencnval/Makefile tools/gendict/Makefile tools/gentest/Makefile tools/gennorm2/Makefile tools/genbrk/Makefile tools/gensprep/Makefile tools/icuinfo/Makefile tools/icupkg/Makefile tools/icuswap/Makefile tools/pkgdata/Makefile tools/tzcode/Makefile tools/gencfu/Makefile tools/escapesrc/Makefile test/Makefile test/compat/Makefile test/testdata/Makefile test/testdata/pkgdataMakefile test/hdrtst/Makefile test/intltest/Makefile test/cintltst/Makefile test/iotest/Makefile test/letest/Makefile test/perf/Makefile test/perf/collationperf/Makefile test/perf/collperf/Makefile test/perf/collperf2/Makefile test/perf/dicttrieperf/Makefile test/perf/ubrkperf/Makefile test/perf/charperf/Makefile test/perf/convperf/Makefile test/perf/normperf/Makefile test/perf/DateFmtPerf/Makefile test/perf/howExpensiveIs/Makefile test/perf/strsrchperf/Makefile test/perf/unisetperf/Makefile test/perf/usetperf/Makefile test/perf/ustrperf/Makefile test/perf/utfperf/Makefile test/perf/utrie2perf/Makefile test/perf/leperf/Makefile test/fuzzer/Makefile samples/Makefile samples/date/Makefile samples/cal/Makefile samples/layout/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -8428,7 +8532,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ICU $as_me 64.2, which was +This file was extended by ICU $as_me 65.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -8482,7 +8586,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -ICU config.status 64.2 +ICU config.status 65.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -8656,6 +8760,7 @@ do "test/perf/utfperf/Makefile") CONFIG_FILES="$CONFIG_FILES test/perf/utfperf/Makefile" ;; "test/perf/utrie2perf/Makefile") CONFIG_FILES="$CONFIG_FILES test/perf/utrie2perf/Makefile" ;; "test/perf/leperf/Makefile") CONFIG_FILES="$CONFIG_FILES test/perf/leperf/Makefile" ;; + "test/fuzzer/Makefile") CONFIG_FILES="$CONFIG_FILES test/fuzzer/Makefile" ;; "samples/Makefile") CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;; "samples/date/Makefile") CONFIG_FILES="$CONFIG_FILES samples/date/Makefile" ;; "samples/cal/Makefile") CONFIG_FILES="$CONFIG_FILES samples/cal/Makefile" ;; @@ -9123,7 +9228,8 @@ else if test -f "$srcdir/data/locales/root.txt"; then echo "Spawning Python to generate data/rules.mk..." - PYTHONPATH="$srcdir/data" $PYTHON -m buildtool \ + PYTHONPATH="$srcdir/python" \ + $PYTHON -m icutools.databuilder \ --mode gnumake \ --seqmode parallel \ --src_dir "$srcdir/data" \ @@ -9138,7 +9244,8 @@ else touch data/rules.mk fi echo "Spawning Python to generate test/testdata/rules.mk..." - PYTHONPATH="$srcdir/test/testdata:$srcdir/data" $PYTHON -m buildtool \ + PYTHONPATH="$srcdir/python" \ + $PYTHON -m icutools.databuilder \ --mode gnumake \ --seqmode parallel \ --src_dir "$srcdir/test/testdata" \ diff --git a/source/configure.ac b/source/configure.ac index 8cd270b..759c495 100644 --- a/source/configure.ac +++ b/source/configure.ac @@ -903,6 +903,14 @@ else fi AC_SUBST(U_HAVE_STRTOD_L) +# Check if C++17 std::string_view is available. +AC_LANG_PUSH([C++]) +AC_CHECK_TYPE(std::string_view, [], [], [[#include ]]) +if test "x$ac_cv_type_std__string_view" = xyes; then : + CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STRING_VIEW=1" +fi +AC_LANG_POP([C++]) + # Checks for typedefs AC_CHECK_TYPE(int8_t,signed char) AC_CHECK_TYPE(uint8_t,unsigned char) @@ -1124,6 +1132,17 @@ AC_ARG_ENABLE(tools, tools=true) ICU_CONDITIONAL(TOOLS, test "$tools" = true) +# Enable/disable fuzzer target tests. +AC_ARG_ENABLE(fuzzer, + [ --enable-fuzzer build ICU's fuzzer test targets [default=no]], + [case "${enableval}" in + yes) fuzzer=true ;; + no) fuzzer=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-fuzzer) ;; + esac], + fuzzer=false) +ICU_CONDITIONAL(FUZZER, test "$fuzzer" = true) + AC_ARG_WITH(data-packaging, [ --with-data-packaging specify how to package ICU data. Possible values: files raw files (.res, etc) @@ -1304,6 +1323,7 @@ fi if test "${CXX}" = "clang++"; then CLANGCXXFLAGS="-Qunused-arguments -Wno-parentheses-equality" + LIBCXXFLAGS="$LIBCXXFLAGS -Wglobal-constructors" else CLANGCXXFLAGS="" fi @@ -1387,6 +1407,7 @@ AC_CONFIG_FILES([icudefs.mk \ test/perf/utfperf/Makefile \ test/perf/utrie2perf/Makefile \ test/perf/leperf/Makefile \ + test/fuzzer/Makefile \ samples/Makefile samples/date/Makefile \ samples/cal/Makefile samples/layout/Makefile]) AC_OUTPUT @@ -1399,7 +1420,8 @@ else if test -f "$srcdir/data/locales/root.txt"; then echo "Spawning Python to generate data/rules.mk..." - PYTHONPATH="$srcdir/data" $PYTHON -m buildtool \ + PYTHONPATH="$srcdir/python" \ + $PYTHON -m icutools.databuilder \ --mode gnumake \ --seqmode parallel \ --src_dir "$srcdir/data" \ @@ -1414,7 +1436,8 @@ else touch data/rules.mk fi echo "Spawning Python to generate test/testdata/rules.mk..." - PYTHONPATH="$srcdir/test/testdata:$srcdir/data" $PYTHON -m buildtool \ + PYTHONPATH="$srcdir/python" \ + $PYTHON -m icutools.databuilder \ --mode gnumake \ --seqmode parallel \ --src_dir "$srcdir/test/testdata" \ diff --git a/source/data/BUILDRULES.py b/source/data/BUILDRULES.py index 577ad2b..696a6a2 100644 --- a/source/data/BUILDRULES.py +++ b/source/data/BUILDRULES.py @@ -5,14 +5,13 @@ # TODO(ICU-20301): Remove this. from __future__ import print_function -from buildtool import * -from buildtool import locale_dependencies -from buildtool import utils -from buildtool.request_types import * +from icutools.databuilder import * +from icutools.databuilder import locale_dependencies +from icutools.databuilder import utils +from icutools.databuilder.request_types import * import os import sys -import xml.etree.ElementTree as ET def generate(config, glob, common_vars): @@ -23,6 +22,7 @@ def generate(config, glob, common_vars): exit(1) requests += generate_cnvalias(config, glob, common_vars) + requests += generate_ulayout(config, glob, common_vars) requests += generate_confusables(config, glob, common_vars) requests += generate_conversion_mappings(config, glob, common_vars) requests += generate_brkitr_brk(config, glob, common_vars) @@ -32,7 +32,6 @@ def generate(config, glob, common_vars): requests += generate_coll_ucadata(config, glob, common_vars) requests += generate_full_unicore_data(config, glob, common_vars) requests += generate_unames(config, glob, common_vars) - requests += generate_ulayout(config, glob, common_vars) requests += generate_misc(config, glob, common_vars) requests += generate_curr_supplemental(config, glob, common_vars) requests += generate_translit(config, glob, common_vars) @@ -43,48 +42,49 @@ def generate(config, glob, common_vars): "locales", None, "icu-locale-deprecates.xml", - True, + config.use_pool_bundle, []) requests += generate_tree(config, glob, common_vars, "curr", "curr", "icu-locale-deprecates.xml", - True, + config.use_pool_bundle, []) requests += generate_tree(config, glob, common_vars, "lang", "lang", "icu-locale-deprecates.xml", - True, + config.use_pool_bundle, []) requests += generate_tree(config, glob, common_vars, "region", "region", "icu-locale-deprecates.xml", - True, + config.use_pool_bundle, []) requests += generate_tree(config, glob, common_vars, "zone", "zone", "icu-locale-deprecates.xml", - True, + config.use_pool_bundle, []) requests += generate_tree(config, glob, common_vars, "unit", "unit", "icu-locale-deprecates.xml", - True, + config.use_pool_bundle, []) requests += generate_tree(config, glob, common_vars, "coll", "coll", "icu-coll-deprecates.xml", + # Never use pool bundle for coll, brkitr, or rbnf False, # Depends on timezoneTypes.res and keyTypeData.res. # TODO: We should not need this dependency to build collation. @@ -95,6 +95,7 @@ def generate(config, glob, common_vars): "brkitr", "brkitr", "icu-locale-deprecates.xml", + # Never use pool bundle for coll, brkitr, or rbnf False, [DepTarget("brkitr_brk"), DepTarget("dictionaries")]) @@ -102,6 +103,7 @@ def generate(config, glob, common_vars): "rbnf", "rbnf", "icu-rbnf-deprecates.xml", + # Never use pool bundle for coll, brkitr, or rbnf False, []) @@ -187,7 +189,7 @@ def generate_brkitr_brk(config, glob, common_vars): RepeatedExecutionRequest( name = "brkitr_brk", category = "brkitr_rules", - dep_targets = [DepTarget("cnvalias")], + dep_targets = [DepTarget("cnvalias"), DepTarget("ulayout")], input_files = input_files, output_files = output_files, tool = IcuTool("genbrk"), @@ -516,54 +518,48 @@ def generate_tree( ) ] - # Generate index txt file - synthetic_locales = set() - deprecates_xml_path = os.path.join(os.path.dirname(__file__), xml_filename) - deprecates_xml = ET.parse(deprecates_xml_path) - for child in deprecates_xml.getroot(): - if child.tag == "alias": - synthetic_locales.add(child.attrib["from"]) - elif child.tag == "emptyLocale": - synthetic_locales.add(child.attrib["locale"]) - else: - raise ValueError("Unknown tag in deprecates XML: %s" % child.tag) - index_input_files = [] + # Generate res_index file + # Exclude the deprecated locale variants and root; see ICU-20628. This + # could be data-driven, but we do not want to perform I/O in this script + # (for example, we do not want to read from an XML file). + excluded_locales = set([ + "ja_JP_TRADITIONAL", + "th_TH_TRADITIONAL", + "de_", + "de__PHONEBOOK", + "es_", + "es__TRADITIONAL", + "root", + ]) + # Put alias locales in a separate structure; see ICU-20627 + alias_locales = set(locale_dependencies.data["aliases"].keys()) + alias_files = [] + installed_files = [] for f in input_files: - file_stem = f.filename[f.filename.rfind("/")+1:-4] - if file_stem == "root": - continue - if file_stem in synthetic_locales: + file_stem = IndexRequest.locale_file_stem(f) + if file_stem in excluded_locales: continue - index_input_files.append(f) + destination = alias_files if file_stem in alias_locales else installed_files + destination.append(f) cldr_version = locale_dependencies.data["cldrVersion"] if sub_dir == "locales" else None index_file_txt = TmpFile("{IN_SUB_DIR}/{INDEX_NAME}.txt".format( IN_SUB_DIR = sub_dir, **common_vars )) - index_file_target_name = "%s_index_txt" % sub_dir - requests += [ - IndexTxtRequest( - name = index_file_target_name, - category = category, - input_files = index_input_files, - output_file = index_file_txt, - cldr_version = cldr_version - ) - ] - - # Generate index res file index_res_file = OutFile("{OUT_PREFIX}{INDEX_NAME}.res".format( OUT_PREFIX = out_prefix, **common_vars )) + index_file_target_name = "%s_index_txt" % sub_dir requests += [ - SingleExecutionRequest( - name = "%s_index_res" % sub_dir, + IndexRequest( + name = index_file_target_name, category = category, - dep_targets = [DepTarget(index_file_target_name)], - input_files = [], - output_files = [index_res_file], - tool = IcuTool("genrb"), + installed_files = installed_files, + alias_files = alias_files, + txt_file = index_file_txt, + output_file = index_res_file, + cldr_version = cldr_version, args = "-s {TMP_DIR}/{IN_SUB_DIR} -d {OUT_DIR}/{OUT_PREFIX} -i {OUT_DIR} " "-k " "{INDEX_NAME}.txt", diff --git a/source/data/Makefile.in b/source/data/Makefile.in index abd5c38..f29778c 100644 --- a/source/data/Makefile.in +++ b/source/data/Makefile.in @@ -136,7 +136,7 @@ cleanpackage: $(RMV) $(LIBDIR)/*$(LIB_ICUDATA_NAME)*.$(SO)* $(LIBDIR)/$(LIB_STATIC_ICUDATA_NAME).$(A) check-local: - PYTHONPATH=$(srcdir) @PYTHON@ -m buildtool.test + PYTHONPATH=$(top_srcdir)/python @PYTHON@ -m icutools.databuilder.test # Find out if we have a source archive. # If we have that, then use that instead of building everything from scratch. @@ -266,7 +266,7 @@ ifeq ($(TZDATA),) TZDATA = $(firstword $(wildcard $(top_builddir)/tools/tzcode/tzdata*.tar.gz) $(wildcard $(top_srcdir)/tools/tzcode/tzdata*.tar.gz)) endif -# TODO(ICU-20466): Make the TZDATA override part of Python buildtool +# TODO(ICU-20466): Make the TZDATA override part of Python icutools.databuilder ifneq ($(TZDATA),) TZCODE_DIR=$(top_builddir)/tools/tzcode diff --git a/source/data/brkitr/de.txt b/source/data/brkitr/de.txt index d3289d8..cbbca45 100644 --- a/source/data/brkitr/de.txt +++ b/source/data/brkitr/de.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License de{ - Version{"2.1.19.14"} + Version{"36"} exceptions{ SentenceBreak:array{ "Port.", diff --git a/source/data/brkitr/dictionaries/laodict.txt b/source/data/brkitr/dictionaries/laodict.txt index bd8440b..10f1fdf 100644 --- a/source/data/brkitr/dictionaries/laodict.txt +++ b/source/data/brkitr/dictionaries/laodict.txt @@ -370,6 +370,7 @@ ອາທາລີຢາ ອາທາຣີມ ອາແຖນ +ອາແມນ ອັດລາຍ ອັດຕະໂຣດເບັດໂຢອາບ ອາດໂຣດໂຊຟັນ diff --git a/source/data/brkitr/el.txt b/source/data/brkitr/el.txt index a9fa383..06bdec1 100644 --- a/source/data/brkitr/el.txt +++ b/source/data/brkitr/el.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License el{ - Version{"2.1.19.14"} + Version{"36"} boundaries{ sentence:process(dependency){"sent_el.brk"} } diff --git a/source/data/brkitr/en.txt b/source/data/brkitr/en.txt index 0bb77db..52f14e0 100644 --- a/source/data/brkitr/en.txt +++ b/source/data/brkitr/en.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en{ - Version{"2.1.19.14"} + Version{"36"} exceptions{ SentenceBreak:array{ "L.P.", diff --git a/source/data/brkitr/en_US.txt b/source/data/brkitr/en_US.txt index ffd5fbd..d2e5cc6 100644 --- a/source/data/brkitr/en_US.txt +++ b/source/data/brkitr/en_US.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_US{ - Version{"2.1.19.14"} + Version{"36"} } diff --git a/source/data/brkitr/en_US_POSIX.txt b/source/data/brkitr/en_US_POSIX.txt index 8b35523..acab9d6 100644 --- a/source/data/brkitr/en_US_POSIX.txt +++ b/source/data/brkitr/en_US_POSIX.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_US_POSIX{ - Version{"2.1.29.25"} + Version{"36"} boundaries{ word:process(dependency){"word_POSIX.brk"} } diff --git a/source/data/brkitr/es.txt b/source/data/brkitr/es.txt index e861e32..2b7769a 100644 --- a/source/data/brkitr/es.txt +++ b/source/data/brkitr/es.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License es{ - Version{"2.1.19.14"} + Version{"36"} exceptions{ SentenceBreak:array{ "Rdos.", diff --git a/source/data/brkitr/fr.txt b/source/data/brkitr/fr.txt index 6cef886..6992de3 100644 --- a/source/data/brkitr/fr.txt +++ b/source/data/brkitr/fr.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr{ - Version{"2.1.19.14"} + Version{"36"} exceptions{ SentenceBreak:array{ "aux.", diff --git a/source/data/brkitr/it.txt b/source/data/brkitr/it.txt index 55d2026..ddde6c7 100644 --- a/source/data/brkitr/it.txt +++ b/source/data/brkitr/it.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License it{ - Version{"2.1.19.14"} + Version{"36"} exceptions{ SentenceBreak:array{ "N.B.", diff --git a/source/data/brkitr/ja.txt b/source/data/brkitr/ja.txt index bb3f37f..2978275 100644 --- a/source/data/brkitr/ja.txt +++ b/source/data/brkitr/ja.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ja{ - Version{"2.1.44.56"} + Version{"36"} boundaries{ line:process(dependency){"line_normal.brk"} line_loose:process(dependency){"line_loose_cj.brk"} diff --git a/source/data/brkitr/pt.txt b/source/data/brkitr/pt.txt index 57d429a..604d565 100644 --- a/source/data/brkitr/pt.txt +++ b/source/data/brkitr/pt.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pt{ - Version{"2.1.19.14"} + Version{"36"} exceptions{ SentenceBreak:array{ "psicol.", diff --git a/source/data/brkitr/root.txt b/source/data/brkitr/root.txt index cbdfd8c..218adaf 100644 --- a/source/data/brkitr/root.txt +++ b/source/data/brkitr/root.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License root{ - Version{"2.1.49.32"} + Version{"36"} boundaries{ grapheme:process(dependency){"char.brk"} line:process(dependency){"line.brk"} diff --git a/source/data/brkitr/ru.txt b/source/data/brkitr/ru.txt index 6dd5cbf..a5661d9 100644 --- a/source/data/brkitr/ru.txt +++ b/source/data/brkitr/ru.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ru{ - Version{"2.1.19.14"} + Version{"36"} exceptions{ SentenceBreak:array{ "\u0440\u0443\u0431.", diff --git a/source/data/brkitr/rules/README.md b/source/data/brkitr/rules/README.md new file mode 100644 index 0000000..5fd9229 --- /dev/null +++ b/source/data/brkitr/rules/README.md @@ -0,0 +1,11 @@ + + +## Break Iterator Rule Source Data + +This directory contains rule based break iterator rule files, one set per file. + +The set of rules to be included for each locale is defined in the parent directory, icu/icu4c/source/data/brkitr. Most locales fall back to root rules, which are from char.txt, word.txt, line.txt and sent.txt for, respectively, grapheme cluster, word, line and sentence breaks. + diff --git a/source/data/brkitr/rules/char.txt b/source/data/brkitr/rules/char.txt index 708de2d..dff699c 100644 --- a/source/data/brkitr/rules/char.txt +++ b/source/data/brkitr/rules/char.txt @@ -25,6 +25,13 @@ $Prepend = [\p{Grapheme_Cluster_Break = Prepend}]; $SpacingMark = [\p{Grapheme_Cluster_Break = SpacingMark}]; # +# From cldr/common/properties/segments/ +# and issue CLDR-10994 +# +$Virama = [\p{Gujr}\p{sc=Telu}\p{sc=Mlym}\p{sc=Orya}\p{sc=Beng}\p{sc=Deva}&\p{Indic_Syllabic_Category=Virama}]; +$LinkingConsonant = [\p{Gujr}\p{sc=Telu}\p{sc=Mlym}\p{sc=Orya}\p{sc=Beng}\p{sc=Deva}&\p{Indic_Syllabic_Category=Consonant}]; +$ExtCccZwj = [[\p{gcb=Extend}-\p{ccc=0}] \p{gcb=ZWJ}]; + # Korean Syllable Definitions # $L = [\p{Grapheme_Cluster_Break = L}]; @@ -57,6 +64,9 @@ $L ($L | $V | $LV | $LVT); # GB 9b $Prepend [^$Control $CR $LF]; +# GB 9.3, from CLDR-10994 +$LinkingConsonant $ExtCccZwj* $Virama $ExtCccZwj* $LinkingConsonant; + # GB 11 Do not break within emoji modifier sequences or emoji zwj sequences. $Extended_Pict $Extend* $ZWJ $Extended_Pict; diff --git a/source/data/brkitr/rules/word.txt b/source/data/brkitr/rules/word.txt index aa88b83..e9f4f8e 100644 --- a/source/data/brkitr/rules/word.txt +++ b/source/data/brkitr/rules/word.txt @@ -45,10 +45,11 @@ $MidNum = [\p{Word_Break = MidNum}]; $Numeric = [[\p{Word_Break = Numeric}] [\uFF10-\uff19]]; # Patch for ICU-12079 $ExtendNumLet = [\p{Word_Break = ExtendNumLet}]; $WSegSpace = [\p{Word_Break = WSegSpace}]; -$Extended_Pict = [:ExtPict:]; +$Extended_Pict = [\p{Extended_Pictographic}]; $Han = [:Han:]; $Hiragana = [:Hiragana:]; +$Ideographic = [\p{Ideographic}]; # Dictionary character set, for triggering language-based break engines. Currently @@ -63,38 +64,20 @@ $KanaKanji = [$Han $Hiragana $Katakana]; $dictionaryCJK = [$KanaKanji $HangulSyllable]; $dictionary = [$ComplexContext $dictionaryCJK]; +# TODO: check if handling of katakana in dictionary makes rules incorrect/void + # leave CJK scripts out of ALetterPlus $ALetterPlus = [$ALetter-$dictionaryCJK [$ComplexContext-$Extend-$Control]]; -# -# Rules 4 Ignore Format and Extend characters, -# except when they appear at the beginning of a region of text. -# -# TODO: check if handling of katakana in dictionary makes rules incorrect/void -$KatakanaEx = $Katakana ($Extend | $Format | $ZWJ)*; -$Hebrew_LetterEx = $Hebrew_Letter ($Extend | $Format | $ZWJ)*; -$ALetterEx = $ALetterPlus ($Extend | $Format | $ZWJ)*; -$Single_QuoteEx = $Single_Quote ($Extend | $Format | $ZWJ)*; -$Double_QuoteEx = $Double_Quote ($Extend | $Format | $ZWJ)*; -$MidNumLetEx = $MidNumLet ($Extend | $Format | $ZWJ)*; -$MidLetterEx = $MidLetter ($Extend | $Format | $ZWJ)*; -$MidNumEx = $MidNum ($Extend | $Format | $ZWJ)*; -$NumericEx = $Numeric ($Extend | $Format | $ZWJ)*; -$ExtendNumLetEx = $ExtendNumLet ($Extend | $Format | $ZWJ)*; -$Regional_IndicatorEx = $Regional_Indicator ($Extend | $Format | $ZWJ)*; - -$Ideographic = [\p{Ideographic}]; -$HiraganaEx = $Hiragana ($Extend | $Format | $ZWJ)*; -$IdeographicEx = $Ideographic ($Extend | $Format | $ZWJ)*; - ## ------------------------------------------------- # Rule 3 - CR x LF # $CR $LF; -# Rule 3c ZWJ x (Extended_Pict | EmojiNRK). Precedes WB4, so no intervening Extend chars allowed. +# Rule 3c Do not break within emoji zwj sequences. +# ZWJ × \p{Extended_Pictographic}. Precedes WB4, so no intervening Extend chars allowed. # $ZWJ $Extended_Pict; @@ -103,78 +86,81 @@ $ZWJ $Extended_Pict; $WSegSpace $WSegSpace; # Rule 4 - ignore Format and Extend characters, except when they appear at the beginning -# of a region of Text. The rule here comes into play when the start of text -# begins with a group of Format chars, or with a "word" consisting of a single -# char that is not in any of the listed word break categories followed by -# format char(s), or is not a CJK dictionary character. -[^$CR $LF $Newline]? ($Extend | $Format | $ZWJ)+; - -$NumericEx {100}; -$ALetterEx {200}; -$HangulSyllable {200}; -$Hebrew_LetterEx{200}; -$KatakanaEx {400}; # note: these status values override those from rule 5 -$HiraganaEx {400}; # by virtue of being numerically larger. -$IdeographicEx {400}; # +# of a region of Text. + +$ExFm = [$Extend $Format $ZWJ]; + +^$ExFm+; # This rule fires only when there are format or extend characters at the + # start of text, or immediately following another boundary. It groups them, in + # the event there are more than one. -$Extended_Pict ($Extend | $Format | $ZWJ)*; +[^$CR $LF $Newline $ExFm] $ExFm*; # This rule rule attaches trailing format/extends to words, + # with no special rule status value. + +$Numeric $ExFm* {100}; # This group of rules also attach trailing format/extends, but +$ALetterPlus $ExFm* {200}; # with rule status set based on the word's final base character. +$HangulSyllable {200}; +$Hebrew_Letter $ExFm* {200}; +$Katakana $ExFm* {400}; # note: these status values override those from rule 5 +$Hiragana $ExFm* {400}; # by virtue of being numerically larger. +$Ideographic $ExFm* {400}; # # # rule 5 # Do not break between most letters. # -($ALetterEx | $Hebrew_LetterEx) ($ALetterEx | $Hebrew_LetterEx) {200}; +($ALetterPlus | $Hebrew_Letter) $ExFm* ($ALetterPlus | $Hebrew_Letter); # rule 6 and 7 -($ALetterEx | $Hebrew_LetterEx) ($MidLetterEx | $MidNumLetEx | $Single_QuoteEx) ($ALetterEx | $Hebrew_LetterEx) {200}; +($ALetterPlus | $Hebrew_Letter) $ExFm* ($MidLetter | $MidNumLet | $Single_Quote) $ExFm* ($ALetterPlus | $Hebrew_Letter) {200}; # rule 7a -$Hebrew_LetterEx $Single_QuoteEx {200}; +$Hebrew_Letter $ExFm* $Single_Quote {200}; # rule 7b and 7c -$Hebrew_LetterEx $Double_QuoteEx $Hebrew_LetterEx {200}; +$Hebrew_Letter $ExFm* $Double_Quote $ExFm* $Hebrew_Letter; # rule 8 -$NumericEx $NumericEx {100}; +$Numeric $ExFm* $Numeric; # rule 9 -($ALetterEx | $Hebrew_LetterEx) $NumericEx {200}; +($ALetterPlus | $Hebrew_Letter) $ExFm* $Numeric; # rule 10 -$NumericEx ($ALetterEx | $Hebrew_LetterEx) {200}; +$Numeric $ExFm* ($ALetterPlus | $Hebrew_Letter); # rule 11 and 12 -$NumericEx ($MidNumEx | $MidNumLetEx | $Single_QuoteEx) $NumericEx {100}; +$Numeric $ExFm* ($MidNum | $MidNumLet | $Single_Quote) $ExFm* $Numeric; # rule 13 # to be consistent with $KanaKanji $KanaKanhi, changed # from 300 to 400. # See also TestRuleStatus in intltest/rbbiapts.cpp -$KatakanaEx $KatakanaEx {400}; +$Katakana $ExFm* $Katakana {400}; # rule 13a/b -$ALetterEx $ExtendNumLetEx {200}; # (13a) -$Hebrew_LetterEx $ExtendNumLetEx {200}; # (13a) -$NumericEx $ExtendNumLetEx {100}; # (13a) -$KatakanaEx $ExtendNumLetEx {400}; # (13a) -$ExtendNumLetEx $ExtendNumLetEx {200}; # (13a) +$ALetterPlus $ExFm* $ExtendNumLet {200}; # (13a) +$Hebrew_Letter $ExFm* $ExtendNumLet {200}; # (13a) +$Numeric $ExFm* $ExtendNumLet {100}; # (13a) +$Katakana $ExFm* $ExtendNumLet {400}; # (13a) +$ExtendNumLet $ExFm* $ExtendNumLet {200}; # (13a) -$ExtendNumLetEx $ALetterEx {200}; # (13b) -$ExtendNumLetEx $Hebrew_Letter {200}; # (13b) -$ExtendNumLetEx $NumericEx {100}; # (13b) -$ExtendNumLetEx $KatakanaEx {400}; # (13b) +$ExtendNumLet $ExFm* $ALetterPlus {200}; # (13b) +$ExtendNumLet $ExFm* $Hebrew_Letter {200}; # (13b) +$ExtendNumLet $ExFm* $Numeric {100}; # (13b) +$ExtendNumLet $ExFm* $Katakana {400}; # (13b) # rules 15 - 17 # Pairs of Regional Indicators stay together. -# With rule chaining disabled by ^, this rule will match exactly two of them. +# With incoming rule chaining disabled by ^, this rule will match exactly two of them. # No other rule begins with a Regional_Indicator, so chaining cannot extend the match. # -^$Regional_IndicatorEx $Regional_IndicatorEx; +^$Regional_Indicator $ExFm* $Regional_Indicator; # special handling for CJK characters: chain for later dictionary segmentation $HangulSyllable $HangulSyllable {200}; diff --git a/source/data/brkitr/rules/word_POSIX.txt b/source/data/brkitr/rules/word_POSIX.txt index ab27090..3adbddf 100644 --- a/source/data/brkitr/rules/word_POSIX.txt +++ b/source/data/brkitr/rules/word_POSIX.txt @@ -45,10 +45,11 @@ $MidNum = [\p{Word_Break = MidNum} [.]]; $Numeric = [[\p{Word_Break = Numeric}] [\uFF10-\uff19]]; # Patch for ICU-12079 $ExtendNumLet = [\p{Word_Break = ExtendNumLet}]; $WSegSpace = [\p{Word_Break = WSegSpace}]; -$Extended_Pict = [:ExtPict:]; +$Extended_Pict = [\p{Extended_Pictographic}]; $Han = [:Han:]; $Hiragana = [:Hiragana:]; +$Ideographic = [\p{Ideographic}]; # Dictionary character set, for triggering language-based break engines. Currently @@ -63,38 +64,20 @@ $KanaKanji = [$Han $Hiragana $Katakana]; $dictionaryCJK = [$KanaKanji $HangulSyllable]; $dictionary = [$ComplexContext $dictionaryCJK]; +# TODO: check if handling of katakana in dictionary makes rules incorrect/void + # leave CJK scripts out of ALetterPlus $ALetterPlus = [$ALetter-$dictionaryCJK [$ComplexContext-$Extend-$Control]]; -# -# Rules 4 Ignore Format and Extend characters, -# except when they appear at the beginning of a region of text. -# -# TODO: check if handling of katakana in dictionary makes rules incorrect/void -$KatakanaEx = $Katakana ($Extend | $Format | $ZWJ)*; -$Hebrew_LetterEx = $Hebrew_Letter ($Extend | $Format | $ZWJ)*; -$ALetterEx = $ALetterPlus ($Extend | $Format | $ZWJ)*; -$Single_QuoteEx = $Single_Quote ($Extend | $Format | $ZWJ)*; -$Double_QuoteEx = $Double_Quote ($Extend | $Format | $ZWJ)*; -$MidNumLetEx = $MidNumLet ($Extend | $Format | $ZWJ)*; -$MidLetterEx = $MidLetter ($Extend | $Format | $ZWJ)*; -$MidNumEx = $MidNum ($Extend | $Format | $ZWJ)*; -$NumericEx = $Numeric ($Extend | $Format | $ZWJ)*; -$ExtendNumLetEx = $ExtendNumLet ($Extend | $Format | $ZWJ)*; -$Regional_IndicatorEx = $Regional_Indicator ($Extend | $Format | $ZWJ)*; - -$Ideographic = [\p{Ideographic}]; -$HiraganaEx = $Hiragana ($Extend | $Format | $ZWJ)*; -$IdeographicEx = $Ideographic ($Extend | $Format | $ZWJ)*; - ## ------------------------------------------------- # Rule 3 - CR x LF # $CR $LF; -# Rule 3c ZWJ x (Extended_Pict | EmojiNRK). Precedes WB4, so no intervening Extend chars allowed. +# Rule 3c Do not break within emoji zwj sequences. +# ZWJ × \p{Extended_Pictographic}. Precedes WB4, so no intervening Extend chars allowed. # $ZWJ $Extended_Pict; @@ -103,78 +86,81 @@ $ZWJ $Extended_Pict; $WSegSpace $WSegSpace; # Rule 4 - ignore Format and Extend characters, except when they appear at the beginning -# of a region of Text. The rule here comes into play when the start of text -# begins with a group of Format chars, or with a "word" consisting of a single -# char that is not in any of the listed word break categories followed by -# format char(s), or is not a CJK dictionary character. -[^$CR $LF $Newline]? ($Extend | $Format | $ZWJ)+; - -$NumericEx {100}; -$ALetterEx {200}; -$HangulSyllable {200}; -$Hebrew_LetterEx{200}; -$KatakanaEx {400}; # note: these status values override those from rule 5 -$HiraganaEx {400}; # by virtue of being numerically larger. -$IdeographicEx {400}; # +# of a region of Text. + +$ExFm = [$Extend $Format $ZWJ]; + +^$ExFm+; # This rule fires only when there are format or extend characters at the + # start of text, or immediately following another boundary. It groups them, in + # the event there are more than one. -$Extended_Pict ($Extend | $Format | $ZWJ)*; +[^$CR $LF $Newline $ExFm] $ExFm*; # This rule rule attaches trailing format/extends to words, + # with no special rule status value. + +$Numeric $ExFm* {100}; # This group of rules also attach trailing format/extends, but +$ALetterPlus $ExFm* {200}; # with rule status set based on the word's final base character. +$HangulSyllable {200}; +$Hebrew_Letter $ExFm* {200}; +$Katakana $ExFm* {400}; # note: these status values override those from rule 5 +$Hiragana $ExFm* {400}; # by virtue of being numerically larger. +$Ideographic $ExFm* {400}; # # # rule 5 # Do not break between most letters. # -($ALetterEx | $Hebrew_LetterEx) ($ALetterEx | $Hebrew_LetterEx) {200}; +($ALetterPlus | $Hebrew_Letter) $ExFm* ($ALetterPlus | $Hebrew_Letter); # rule 6 and 7 -($ALetterEx | $Hebrew_LetterEx) ($MidLetterEx | $MidNumLetEx | $Single_QuoteEx) ($ALetterEx | $Hebrew_LetterEx) {200}; +($ALetterPlus | $Hebrew_Letter) $ExFm* ($MidLetter | $MidNumLet | $Single_Quote) $ExFm* ($ALetterPlus | $Hebrew_Letter) {200}; # rule 7a -$Hebrew_LetterEx $Single_QuoteEx {200}; +$Hebrew_Letter $ExFm* $Single_Quote {200}; # rule 7b and 7c -$Hebrew_LetterEx $Double_QuoteEx $Hebrew_LetterEx {200}; +$Hebrew_Letter $ExFm* $Double_Quote $ExFm* $Hebrew_Letter; # rule 8 -$NumericEx $NumericEx {100}; +$Numeric $ExFm* $Numeric; # rule 9 -($ALetterEx | $Hebrew_LetterEx) $NumericEx {200}; +($ALetterPlus | $Hebrew_Letter) $ExFm* $Numeric; # rule 10 -$NumericEx ($ALetterEx | $Hebrew_LetterEx) {200}; +$Numeric $ExFm* ($ALetterPlus | $Hebrew_Letter); # rule 11 and 12 -$NumericEx ($MidNumEx | $MidNumLetEx | $Single_QuoteEx) $NumericEx {100}; +$Numeric $ExFm* ($MidNum | $MidNumLet | $Single_Quote) $ExFm* $Numeric; # rule 13 # to be consistent with $KanaKanji $KanaKanhi, changed # from 300 to 400. # See also TestRuleStatus in intltest/rbbiapts.cpp -$KatakanaEx $KatakanaEx {400}; +$Katakana $ExFm* $Katakana {400}; # rule 13a/b -$ALetterEx $ExtendNumLetEx {200}; # (13a) -$Hebrew_LetterEx $ExtendNumLetEx {200}; # (13a) -$NumericEx $ExtendNumLetEx {100}; # (13a) -$KatakanaEx $ExtendNumLetEx {400}; # (13a) -$ExtendNumLetEx $ExtendNumLetEx {200}; # (13a) +$ALetterPlus $ExFm* $ExtendNumLet {200}; # (13a) +$Hebrew_Letter $ExFm* $ExtendNumLet {200}; # (13a) +$Numeric $ExFm* $ExtendNumLet {100}; # (13a) +$Katakana $ExFm* $ExtendNumLet {400}; # (13a) +$ExtendNumLet $ExFm* $ExtendNumLet {200}; # (13a) -$ExtendNumLetEx $ALetterEx {200}; # (13b) -$ExtendNumLetEx $Hebrew_Letter {200}; # (13b) -$ExtendNumLetEx $NumericEx {100}; # (13b) -$ExtendNumLetEx $KatakanaEx {400}; # (13b) +$ExtendNumLet $ExFm* $ALetterPlus {200}; # (13b) +$ExtendNumLet $ExFm* $Hebrew_Letter {200}; # (13b) +$ExtendNumLet $ExFm* $Numeric {100}; # (13b) +$ExtendNumLet $ExFm* $Katakana {400}; # (13b) # rules 15 - 17 # Pairs of Regional Indicators stay together. -# With rule chaining disabled by ^, this rule will match exactly two of them. +# With incoming rule chaining disabled by ^, this rule will match exactly two of them. # No other rule begins with a Regional_Indicator, so chaining cannot extend the match. # -^$Regional_IndicatorEx $Regional_IndicatorEx; +^$Regional_Indicator $ExFm* $Regional_Indicator; # special handling for CJK characters: chain for later dictionary segmentation $HangulSyllable $HangulSyllable {200}; diff --git a/source/data/brkitr/zh.txt b/source/data/brkitr/zh.txt index 295cec3..d652e9b 100644 --- a/source/data/brkitr/zh.txt +++ b/source/data/brkitr/zh.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh{ - Version{"2.1.19.14"} + Version{"36"} boundaries{ line:process(dependency){"line_cj.brk"} line_loose:process(dependency){"line_loose_cj.brk"} diff --git a/source/data/brkitr/zh_Hant.txt b/source/data/brkitr/zh_Hant.txt index 7fa1d60..8546f13 100644 --- a/source/data/brkitr/zh_Hant.txt +++ b/source/data/brkitr/zh_Hant.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hant{ - Version{"2.1.36.98"} + Version{"36"} boundaries{ line:process(dependency){"line_cj.brk"} line_loose:process(dependency){"line_loose_cj.brk"} diff --git a/source/data/build.xml b/source/data/build.xml index c02b63d..b8862fd 100644 --- a/source/data/build.xml +++ b/source/data/build.xml @@ -43,13 +43,17 @@ - + + + + + @@ -60,11 +64,31 @@ + + + + + + + + + + + + + + + + + + + - + @@ -101,22 +125,23 @@ - + - + - + - + + @@ -154,11 +179,11 @@ - + - + @@ -169,11 +194,11 @@ - + - + @@ -184,12 +209,12 @@ - + - + @@ -200,119 +225,119 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -325,11 +350,11 @@ - + - + @@ -337,12 +362,12 @@ - + - + @@ -354,11 +379,11 @@ - + @@ -374,7 +399,7 @@ - + diff --git a/source/data/buildtool/renderers/common_exec.py b/source/data/buildtool/renderers/common_exec.py deleted file mode 100644 index b4916d7..0000000 --- a/source/data/buildtool/renderers/common_exec.py +++ /dev/null @@ -1,93 +0,0 @@ -# Copyright (C) 2018 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html - -from . import * -from .. import * -from .. import utils -from ..request_types import * - -import os -import shutil -import subprocess - -def run(build_dirs, requests, common_vars, **kwargs): - for bd in build_dirs: - os.makedirs(bd.format(**common_vars), exist_ok=True) - for request in requests: - status = run_helper(request, common_vars, **kwargs) - if status != 0: - print("!!! ERROR executing above command line: exit code %d" % status) - return 1 - print("All data build commands executed") - return 0 - -def run_helper(request, common_vars, is_windows, tool_dir, tool_cfg=None, **kwargs): - if isinstance(request, PrintFileRequest): - output_path = "{DIRNAME}/{FILENAME}".format( - DIRNAME = utils.dir_for(request.output_file).format(**common_vars), - FILENAME = request.output_file.filename, - ) - print("Printing to file: %s" % output_path) - with open(output_path, "w") as f: - f.write(request.content) - return 0 - if isinstance(request, CopyRequest): - input_path = "{DIRNAME}/{FILENAME}".format( - DIRNAME = utils.dir_for(request.input_file).format(**common_vars), - FILENAME = request.input_file.filename, - ) - output_path = "{DIRNAME}/{FILENAME}".format( - DIRNAME = utils.dir_for(request.output_file).format(**common_vars), - FILENAME = request.output_file.filename, - ) - print("Copying file to: %s" % output_path) - shutil.copyfile(input_path, output_path) - return 0 - if isinstance(request, VariableRequest): - # No-op - return 0 - - assert isinstance(request.tool, IcuTool) - if is_windows: - cmd_template = "{TOOL_DIR}/{TOOL}/{TOOL_CFG}/{TOOL}.exe {{ARGS}}".format( - TOOL_DIR = tool_dir, - TOOL_CFG = tool_cfg, - TOOL = request.tool.name, - **common_vars - ) - else: - cmd_template = "{TOOL_DIR}/{TOOL} {{ARGS}}".format( - TOOL_DIR = tool_dir, - TOOL = request.tool.name, - **common_vars - ) - - if isinstance(request, RepeatedExecutionRequest): - for loop_vars in utils.repeated_execution_request_looper(request): - command_line = utils.format_repeated_request_command( - request, - cmd_template, - loop_vars, - common_vars - ) - if is_windows: - # Note: this / to \ substitution may be too aggressive? - command_line = command_line.replace("/", "\\") - print("Running: %s" % command_line) - res = subprocess.run(command_line, shell=True) - if res.returncode != 0: - return res.returncode - return 0 - if isinstance(request, SingleExecutionRequest): - command_line = utils.format_single_request_command( - request, - cmd_template, - common_vars - ) - if is_windows: - # Note: this / to \ substitution may be too aggressive? - command_line = command_line.replace("/", "\\") - print("Running: %s" % command_line) - res = subprocess.run(command_line, shell=True) - return res.returncode - assert False diff --git a/source/data/buildtool/renderers/unix_exec.py b/source/data/buildtool/renderers/unix_exec.py deleted file mode 100644 index 802bc0b..0000000 --- a/source/data/buildtool/renderers/unix_exec.py +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (C) 2018 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html - -from . import common_exec - -def run(**kwargs): - return common_exec.run(is_windows=False, **kwargs) diff --git a/source/data/cldr-icu-readme.txt b/source/data/cldr-icu-readme.txt index cd2504c..36a066c 100644 --- a/source/data/cldr-icu-readme.txt +++ b/source/data/cldr-icu-readme.txt @@ -35,21 +35,6 @@ # #---- # -# CLDR dtd caching -# -# Parts of the build process (notably building the new ICU data files in step 4) -# require http: access to files in the CLDR repository; for example, processing -# the files in icu4c/source/data/xml/ may require access to -# http://www.unicode.org/repos/cldr/trunk/common/dtd/ldml.dtd -# -# Unless you cache the dtds locally by -# 1. creating a temp directory e.g. ~/.cldrdtd -# 2. setting CLDR_DTD_CACHE to it e.g. -DCLDR_DTD_CACHE=~/.cldrdtd -# your system will make excessive network requests, which will result in the -# Unicode server blocking access. -# -#---- -# # There are several environment variables that need to be defined. # # a) Java- and ant-related variables @@ -62,9 +47,6 @@ # # -Xmx4096m, to give Java more memory; otherwise it may run out # of heap. -# -DCLDR_DTD_CACHE=~/.cldrdtd (or some other temp directory -# that already exists), to reduce frequent http: access to dtds -# and consequent blockage by Unicode server. # # b) CLDR-related variables # @@ -73,6 +55,16 @@ # CLDR_CLASSES: Path to the CLDR Tools classes directory. If not set, defaults # to $CLDR_DIR/tools/java/classes # +# CLDR_TMP_DIR: Parent of temporary CLDR production data. +# Defaults to $CLDR_DIR/../cldr-aux (sibling to CLDR_DIR). +# +# *** NOTE ***: In CLDR release-36-beta, the GenerateProductionData +# tool no longer generates data into $CLDR_TMP_DIR/production; instead +# it generates data into $CLDR_DIR/../cldr-staging/production. However +# the rest of the build still assumes that the generated data is in +# $CLDR_TMP_DIR/production. So CLDR_TMP_DIR must be defined to be +# $CLDR_DIR/../cldr-staging +# # c) ICU-related variables # These variables only need to be set if you're directly reusing the # commands below. @@ -140,38 +132,23 @@ # 1a. Java and ant variables, adjust for your system export JAVA_HOME=`/usr/libexec/java_home` -export ANT_OPTS="-Xmx4096m -DCLDR_DTD_CACHE=~/.cldrdtd" +export ANT_OPTS="-Xmx4096m # 1b. CLDR variables, adjust for your setup; with cygwin it might be e.g. # CLDR_DIR=`cygpath -wp /build/cldr` -export CLDR_DIR=$HOME/cldr/trunk +export CLDR_DIR=$HOME/cldr-myfork # 1c. ICU variables -export ICU4C_DIR=$HOME/icu/icu4c -export ICU4J_ROOT=$HOME/icu/icu4j - -# 1d. Pre-populate your CLDR DTD cache. You need to do this only once. - -mkdir ~/.cldrdtd -cd ~/.cldrdtd -curl http://www.unicode.org/repos/cldr/trunk/common/dtd/ldml.dtd \ - -o http___www.unicode.org_repos_cldr_trunk_common_dtd_ldml.dtd -# WAIT before hitting the server again; it WILL NOT give you a second chance! -sleep 5 -curl http://www.unicode.org/repos/cldr/trunk/common/dtd/ldmlICU.dtd \ - -o http___www.unicode.org_repos_cldr_trunk_common_dtd_ldmlICU.dtd -sleep 5 -curl http://www.unicode.org/repos/cldr/trunk/common/dtd/ldmlSupplemental.dtd \ - -o http___www.unicode.org_repos_cldr_trunk_common_dtd_ldmlSupplemental.dtd +export ICU4C_DIR=$HOME/icu-myfork/icu4c +export ICU4J_ROOT=$HOME/icu-myfork/icu4j -# 2. Build the CLDR Java tools -# Optionally build the jar, but ant will look inside the classes directory anyway +# 2. Build the CLDR Java tools and jar cd $CLDR_DIR/tools/java ant all -#ant jar +ant jar # 3. Configure ICU4C, build and test without new data first, to verify that # there are no pre-existing errors. Here is the runConfigureICU @@ -182,7 +159,7 @@ cd $ICU4C_DIR/source make all 2>&1 | tee /tmp/icu4c-oldData-makeAll.txt make check 2>&1 | tee /tmp/icu4c-oldData-makeCheck.txt -# 4. Build the new ICU4C data files; these include .txt files and .mk files. +# 4. Build the new ICU4C data files; these include .txt files and .py files. # These new files will replace whatever was already present in the ICU4C sources. # This process uses ant with ICU's data/build.xml and data/icu-config.xml to # operate (via CLDR's ant/CLDRConverterTool.java and ant/CLDRBuild.java) the @@ -193,22 +170,15 @@ make check 2>&1 | tee /tmp/icu4c-oldData-makeCheck.txt # Running "ant setup" is not required, but it will print useful errors to # debug issues with your path when it fails. # -# If you see timeout errors when building the rbnf data, for example, then you are -# likely not using a CLDR dtd cache; see "CLDR dtd caching" above. If you are using -# a dtd cache and are still having timeout problems, the IP address of your system -# may have been blocked due to previous excessive access. In this case you may need -# to contact a Unicode sysadmin to restore access. -# -# Unfortunately, even if you have your DTD cache variable enabled, you may still -# get blocked and unable to populate your cache because of multiple successive -# requests to download the required DTD files. It is recommended that you -# pre-populate your cache as shown above in step 1d. cd $ICU4C_DIR/source/data ant setup ant clean ant all 2>&1 | tee /tmp/cldr-newData-buildLog.txt +# NOTE: if you change the CLDR data, please run "ant cleanprod" to clean out the +# temporary production data directory (usually $CLDR_DIR/../cldr-aux/production ) + # 5. Check which data files have modifications, which have been added or removed # (if there are no changes, you may not need to proceed further). Make sure the # list seems reasonable. @@ -291,6 +261,22 @@ ant check 2>&1 | tee /tmp/icu4j-newData-antCheck.txt # more failures in ICU4C or ICU4J (except failures that were present before you # began testing the new CLDR data). +# Note that certain data changes and related test failures may require the +# rebuilding of other kinds of data. For example: +# a) Changes to locale matching data may cause failures in e.g. the following: +# com.ibm.icu.dev.test.util.LocaleDistanceTest (testLoadedDataSameAsBuiltFromScratch) +# com.ibm.icu.dev.test.util.LocaleMatcherTest (testLikelySubtagsLoadedDataSameAsBuiltFromScratch) +# To address these requires building and running the tool +# icu4j/tools/misc/src/com/ibm/icu/dev/tool/locale/LocaleDistanceBuilder.java +# to regenerate the file icu4c/source/data/misc/langInfo.txt and then regenerating +# the ICU4J data jars. +# b) Changes to plurals data may cause failures in e.g. the following +# com.ibm.icu.dev.test.format.PluralRulesTest (TestLocales) +# To address these requires updating the LOCALE_SNAPSHOT data in +# icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRulesTest.java +# by modifying the TestLocales() test there to run generateLOCALE_SNAPSHOT() and then +# copying in the updated data. + # 15. Check the file changes; then git add or git rm as necessary, and # commit the changes. diff --git a/source/data/coll/af.txt b/source/data/coll/af.txt index 43c4ac6..4843133 100644 --- a/source/data/coll/af.txt +++ b/source/data/coll/af.txt @@ -1,11 +1,11 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License af{ - Version{"2.1.19.14"} + Version{"36"} collations{ standard{ Sequence{"&N<<<ʼn"} - Version{"35.1"} + Version{"36"} } } } diff --git a/source/data/coll/am.txt b/source/data/coll/am.txt index 7319b53..5504070 100644 --- a/source/data/coll/am.txt +++ b/source/data/coll/am.txt @@ -1,11 +1,11 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License am{ - Version{"2.1.19.14"} + Version{"36"} collations{ standard{ Sequence{"[reorder Ethi]"} - Version{"35.1"} + Version{"36"} } } } diff --git a/source/data/coll/ar.txt b/source/data/coll/ar.txt index 9a97d8a..5652653 100644 --- a/source/data/coll/ar.txt +++ b/source/data/coll/ar.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ar{ - Version{"2.1.19.14"} + Version{"36"} collations{ compat{ Sequence{ @@ -9,7 +9,7 @@ ar{ "&ت<<ة<<<ﺔ<<<ﺓ" "&ي<<ى<<<ﯨ<<<ﯩ<<<ﻰ<<<ﻯ<<<ﲐ<<<ﱝ" } - Version{"35.1"} + Version{"36"} } standard{ Sequence{ @@ -397,7 +397,7 @@ ar{ "‎&ۓ‎=ﮰ‎=ﮱ" "‎&ۀ‎=ﮤ‎=ﮥ" } - Version{"35.1"} + Version{"36"} } } } diff --git a/source/data/coll/as.txt b/source/data/coll/as.txt index 172699f..d31cf8f 100644 --- a/source/data/coll/as.txt +++ b/source/data/coll/as.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License as{ - Version{"2.1.19.14"} + Version{"36"} collations{ standard{ Sequence{ @@ -11,7 +11,7 @@ as{ "&[before 1]ত<ৎ=ত্\u200D" "&হ<ক্ষ" } - Version{"35.1"} + Version{"36"} } } } diff --git a/source/data/coll/az.txt b/source/data/coll/az.txt index b8b13c4..848dbc5 100644 --- a/source/data/coll/az.txt +++ b/source/data/coll/az.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License az{ - Version{"2.1.19.14"} + Version{"36"} collations{ search{ Sequence{ @@ -9,7 +9,7 @@ az{ "[import az-u-co-standard]" "[reorder others]" } - Version{"35.1"} + Version{"36"} } standard{ Sequence{ @@ -26,7 +26,7 @@ az{ "&H + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/data/dtd/cldr-35.1/common/dtd/ldmlICU.dtd b/source/data/dtd/cldr-35.1/common/dtd/ldmlICU.dtd new file mode 100644 index 0000000..567d9c6 --- /dev/null +++ b/source/data/dtd/cldr-35.1/common/dtd/ldmlICU.dtd @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/data/icu-config.xml b/source/data/icu-config.xml index 71bb13c..476b74c 100644 --- a/source/data/icu-config.xml +++ b/source/data/icu-config.xml @@ -370,6 +370,7 @@ + diff --git a/source/data/lang/af.txt b/source/data/lang/af.txt index 4717573..156539e 100644 --- a/source/data/lang/af.txt +++ b/source/data/lang/af.txt @@ -4,13 +4,13 @@ af{ Keys{ calendar{"Kalender"} cf{"Geldeenheidformaat"} - colAlternate{"Ignoreer simboolsortering"} - colBackwards{"Omgekeerde aksentsortering"} - colCaseFirst{"Hoofletters/kleinletters-sortering"} - colCaseLevel{"Kassensitiewe sortering"} - colNormalization{"Genormaliseerde sortering"} - colNumeric{"Numeriese sortering"} - colStrength{"Sorteringssterkte"} + colAlternate{"Ignoreer simboolrangskikking"} + colBackwards{"Omgekeerde aksentrangskikking"} + colCaseFirst{"Hoofletter-/kleinletter-rangskikking"} + colCaseLevel{"Kassensitiewe rangskikking"} + colNormalization{"Genormaliseerde rangskikking"} + colNumeric{"Numeriese rangskikking"} + colStrength{"Rangskiksterkte"} collation{"Rangskikvolgorde"} currency{"Geldeenheid"} hc{"Uursiklus (12 vs 24)"} @@ -70,6 +70,7 @@ af{ bug{"Buginees"} byn{"Blin"} ca{"Katalaans"} + ccp{"Tsjaakma"} ce{"Tsjetsjeens"} ceb{"Cebuano"} cgg{"Kiga"} @@ -92,7 +93,6 @@ af{ dar{"Dakota"} dav{"Taita"} de{"Duits"} - de_CH{"Switserse hoog-Duits"} dgr{"Dogrib"} dje{"Zarma"} dsb{"Benedesorbies"} @@ -273,7 +273,7 @@ af{ naq{"Nama"} nb{"Boeknoors"} nd{"Noord-Ndebele"} - nds{"Lae Duits"} + nds{"Nederduits"} nds_NL{"Nedersaksies"} ne{"Nepalees"} new{"Newari"} @@ -393,7 +393,7 @@ af{ ug{"Uighur"} uk{"Oekraïens"} umb{"Umbundu"} - und{"Onbekende of ongeldige taal"} + und{"Onbekende taal"} ur{"Oerdoe"} uz{"Oezbeeks"} vai{"Vai"} @@ -417,18 +417,22 @@ af{ yo{"Yoruba"} yue{"Kantonees"} zgh{"Standaard Marokkaanse Tamazight"} - zh{"Sjinees"} - zh_Hans{"Chinees (Vereenvoudig)"} - zh_Hant{"Chinees (Tradisioneel)"} + zh{"Chinees"} zu{"Zoeloe"} zun{"Zuni"} zxx{"Geen taalinhoud nie"} zza{"Zaza"} } + Languages%long{ + zh_Hans{"Mandarynse Chinees (Vereenvoudigd)"} + zh_Hant{"Mandarynse Chinees (Tradisioneel)"} + } + Languages%menu{ + yue{"Kantonese Chinees"} + zh{"Mandarynse Chinees"} + } Languages%short{ az{"Azeri"} - en_GB{"Engels (VK)"} - en_US{"Engels (VSA)"} } Languages%variant{ ps{"Pushto"} @@ -446,7 +450,7 @@ af{ Grek{"Grieks"} Gujr{"Gudjarati"} Guru{"Gurmukhi"} - Hanb{"Hanb"} + Hanb{"Han met Bopomofo"} Hang{"Hangul"} Hani{"Han"} Hans{"Vereenvoudig"} @@ -476,7 +480,7 @@ af{ Zsye{"Emoji"} Zsym{"Simbole"} Zxxx{"Ongeskrewe"} - Zyyy{"Algemeen"} + Zyyy{"Gemeenskaplik"} Zzzz{"Onbekende skryfstelsel"} } Scripts%stand-alone{ @@ -624,19 +628,19 @@ af{ vaii{"Vai-syfers"} } } - Version{"2.1.48.17"} + Version{"36"} characterLabelPattern{ - all{"{0} – Alle"} + all{"{0} – alle"} category-list{"{0}: {1}"} - compatibility{"{0} – Versoenbaarheid"} - enclosed{"{0} – Ingesluit"} - extended{"{0} – Uitgebreid"} - historic{"{0} – Histories"} - miscellaneous{"{0} – Allerlei"} - other{"{0} – Ander"} - scripts{"Skrifte – {0}"} + compatibility{"{0} – versoenbaarheid"} + enclosed{"{0} ingeslote"} + extended{"{0} – uitgebreid"} + historic{"{0} – histories"} + miscellaneous{"{0} – allerlei"} + other{"{0} – ander"} + scripts{"skrifte – {0}"} strokes{ - one{"{0} hale"} + one{"{0} haal"} other{"{0} hale"} } } diff --git a/source/data/lang/agq.txt b/source/data/lang/agq.txt index 45f1599..b82fce3 100644 --- a/source/data/lang/agq.txt +++ b/source/data/lang/agq.txt @@ -48,5 +48,5 @@ agq{ zh{"Chàenê"} zu{"Zulù"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/ak.txt b/source/data/lang/ak.txt index db8da6e..6a6ebf1 100644 --- a/source/data/lang/ak.txt +++ b/source/data/lang/ak.txt @@ -47,5 +47,5 @@ ak{ zh{"Kyaena kasa"} zu{"Zulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/am.txt b/source/data/lang/am.txt index 56b669d..f21e1b0 100644 --- a/source/data/lang/am.txt +++ b/source/data/lang/am.txt @@ -99,6 +99,7 @@ am{ car{"ካሪብ"} cay{"ካዩጋ"} cch{"አትሳም"} + ccp{"ቻክማ"} ce{"ችችን"} ceb{"ካቡዋኖ"} cgg{"ቺጋኛ"} @@ -488,6 +489,14 @@ am{ zxx{"ቋንቋዊ ይዘት አይደለም"} zza{"ዛዛ"} } + Languages%long{ + zh_Hans{"ቀለል ያለ ማንድሪን ቻይንኛ"} + zh_Hant{"ባህላዊ ማንድሪን ቻይንኛ"} + } + Languages%menu{ + yue{"ቻይና፤ ካንቶንኛ"} + zh{"ማንድሪን ቻይንኛ"} + } Languages%short{ az{"አዜሪ"} en_GB{"የዩናይትድ ኪንግደም እንግሊዝኛ"} @@ -536,8 +545,7 @@ am{ Thaa{"ታና"} Thai{"ታይ"} Tibt{"ቲቤታን"} - Zmth{"Zmth"} - Zsye{"Zsye"} + Zsye{"ኢሞጂ"} Zsym{"ምልክቶች"} Zxxx{"ያልተጻፈ"} Zyyy{"የጋራ"} @@ -688,7 +696,7 @@ am{ vaii{"የቫይ አሃዞች"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — ሁሉም"} category-list{"{0}: {1}"} diff --git a/source/data/lang/ar.txt b/source/data/lang/ar.txt index 3a6e3c3..4330d95 100644 --- a/source/data/lang/ar.txt +++ b/source/data/lang/ar.txt @@ -4,13 +4,13 @@ ar{ Keys{ calendar{"التقويم"} cf{"تنسيق العملة"} - colAlternate{"التصنيف بحسب تجاهل الرموز"} - colBackwards{"التصنيف بحسب اللكنة المعكوسة"} + colAlternate{"الفرز بحسب تجاهل الرموز"} + colBackwards{"الفرز بحسب اللكنة المعكوسة"} colCaseFirst{"الترتيب بحسب الأحرف الكبيرة/الصغيرة"} - colCaseLevel{"التصنيف بحسب حساسية حالة الأحرف"} - colNormalization{"التصنيف الموحد"} - colNumeric{"التصنيف الرقمي"} - colStrength{"قوة التصنيف"} + colCaseLevel{"الفرز بحسب حساسية حالة الأحرف"} + colNormalization{"الفرز الموحد"} + colNumeric{"الفرز الرقمي"} + colStrength{"قوة الفرز"} collation{"ترتيب الفرز"} currency{"العملة"} hc{"نظام التوقيت (12 مقابل 24)"} @@ -42,7 +42,7 @@ ar{ ang{"الإنجليزية القديمة"} anp{"الأنجيكا"} ar{"العربية"} - ar_001{"العربية الرسمية الحديثة"} + ar_001{"العربية الفصحى الحديثة"} arc{"الآرامية"} arn{"المابودونغونية"} arp{"الأراباهو"} @@ -92,6 +92,7 @@ ar{ car{"الكاريبية"} cay{"الكايوجية"} cch{"الأتسام"} + ccp{"تشاكما"} ce{"الشيشانية"} ceb{"السيبيوانية"} cgg{"تشيغا"} @@ -553,6 +554,10 @@ ar{ zxx{"بدون محتوى لغوي"} zza{"زازا"} } + Languages%menu{ + yue{"الكَنْتُونية"} + zh{"الصينية"} + } Languages%short{ az{"الأذرية"} en_GB{"الإنجليزية المملكة المتحدة"} @@ -852,7 +857,7 @@ ar{ VALENCIA{"بلنسية"} WADEGILE{"المندرين باللاتينية - ويد–جيلز"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} - الكل"} category-list{"{0}: {1}"} diff --git a/source/data/lang/ar_EG.txt b/source/data/lang/ar_EG.txt index 359d33b..9d4c6bf 100644 --- a/source/data/lang/ar_EG.txt +++ b/source/data/lang/ar_EG.txt @@ -4,5 +4,5 @@ ar_EG{ Languages{ da{"الدنماركية"} } - Version{"2.1.49.36"} + Version{"36"} } diff --git a/source/data/lang/ar_LY.txt b/source/data/lang/ar_LY.txt index bb246fa..ee0a649 100644 --- a/source/data/lang/ar_LY.txt +++ b/source/data/lang/ar_LY.txt @@ -12,5 +12,5 @@ ar_LY{ sw_CD{"السواحيلية الكونغولية"} ti{"التيغرينية"} } - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/ar_SA.txt b/source/data/lang/ar_SA.txt index e21fd30..384ba75 100644 --- a/source/data/lang/ar_SA.txt +++ b/source/data/lang/ar_SA.txt @@ -2,16 +2,38 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ar_SA{ Languages{ + ar_001{"العربية الرسمية الحديثة"} arn{"المابودونجونية"} + de_AT{"الألمانية النمساوية"} + de_CH{"الألمانية العليا السويسرية"} + en_AU{"الإنجليزية الأسترالية"} + en_CA{"الإنجليزية الكندية"} + en_GB{"الإنجليزية البريطانية"} + en_US{"الإنجليزية الأمريكية"} + es_419{"الإسبانية أمريكا اللاتينية"} + es_ES{"الإسبانية الأوروبية"} + es_MX{"الإسبانية المكسيكية"} + fr_CA{"الفرنسية الكندية"} + fr_CH{"الفرنسية السويسرية"} gn{"الغورانية"} hsb{"صوربيا العليا"} lo{"اللاوو"} + nds_NL{"السكسونية السفلى"} + nl_BE{"الفلمنكية"} + pt_BR{"البرتغالية البرازيلية"} + pt_PT{"البرتغالية الأوروبية"} sh{"الكرواتية الصربية"} sma{"سامي الجنوبية"} sw{"السواحيلية"} sw_CD{"السواحيلية الكونغولية"} te{"التيلوجو"} ti{"التيغرينية"} + zh_Hans{"الصينية المبسطة"} + zh_Hant{"الصينية التقليدية"} } - Version{"2.1.49.36"} + Languages%short{ + en_GB{"الإنجليزية المملكة المتحدة"} + en_US{"الإنجليزية الولايات المتحدة"} + } + Version{"36"} } diff --git a/source/data/lang/as.txt b/source/data/lang/as.txt index 746dfbf..6cbff2c 100644 --- a/source/data/lang/as.txt +++ b/source/data/lang/as.txt @@ -315,7 +315,7 @@ as{ sc{"ছাৰ্ডিনিয়ান"} scn{"ছিচিলিয়ান"} sco{"স্কটছ"} - sd{"সিন্ধি"} + sd{"সিন্ধী"} se{"উদীচ্য ছামি"} seh{"ছেনা"} ses{"কোইৰাবোৰো চেন্নি"} @@ -404,6 +404,14 @@ as{ zxx{"কোনো ভাষা সমল নাই"} zza{"ঝাঝা"} } + Languages%long{ + zh_Hans{"সৰলীকৃত মেণ্ডাৰিন চীনা"} + zh_Hant{"পৰম্পৰাগত মেণ্ডাৰিন চীনা"} + } + Languages%menu{ + yue{"চাইনিজ, কেণ্টোনীজ"} + zh{"চীনা, মেণ্ডাৰিন"} + } Languages%short{ az{"আজেৰি"} en_GB{"ইউ. কে. ইংৰাজী"} @@ -544,7 +552,7 @@ as{ tibt{"তিব্বতী অংক"} } } - Version{"2.1.48.17"} + Version{"36"} characterLabelPattern{ all{"{0} — সকলো"} category-list{"{0}: {1}"} diff --git a/source/data/lang/asa.txt b/source/data/lang/asa.txt index 716a765..f6ab11c 100644 --- a/source/data/lang/asa.txt +++ b/source/data/lang/asa.txt @@ -48,5 +48,5 @@ asa{ zh{"Kichina"} zu{"Kidhulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/ast.txt b/source/data/lang/ast.txt index 46bd581..509f16e 100644 --- a/source/data/lang/ast.txt +++ b/source/data/lang/ast.txt @@ -464,7 +464,6 @@ ast{ ro_MD{"moldavu"} rof{"rombo"} rom{"romaní"} - root{"root"} rtm{"rotumanu"} ru{"rusu"} rue{"rusyn"} @@ -965,71 +964,48 @@ ast{ BAKU1926{"alfabetu turcu llatino unificáu"} BALANKA{"dialectu balanka del anii"} BARLA{"grupu dialectal barlavento del cabuverdianu"} - BASICENG{"BASICENG"} - BAUDDHA{"BAUDDHA"} - BISCAYAN{"BISCAYAN"} BISKE{"dialectu San Giorgio/Bila"} BOHORIC{"alfabetu bohorič"} BOONT{"boontling"} COLB1945{"convención ortográfica brasilanu-portuguesa de 1945"} - CORNU{"CORNU"} DAJNKO{"alfabetu dajnko"} EKAVSK{"serbiu con pronunciación ekaviana"} EMODENG{"inglés modernu primitivu"} FONIPA{"fonética IPA"} FONUPA{"fonética UPA"} - FONXSAMP{"FONXSAMP"} HEPBURN{"romanización de Hepburn"} - HOGNORSK{"HOGNORSK"} IJEKAVSK{"serbiu con pronunciación Ijekaviana"} - ITIHASA{"ITIHASA"} - JAUER{"JAUER"} - JYUTPING{"JYUTPING"} KKCOR{"ortografía común"} - KOCIEWIE{"KOCIEWIE"} KSCOR{"ortografía estándar"} - LAUKIKA{"LAUKIKA"} LIPAW{"el dialectu lipovaz del resianu"} - LUNA1918{"LUNA1918"} METELKO{"alfabetu metelko"} MONOTON{"monotónicu"} NDYUKA{"dialectu ndyuka"} NEDIS{"dialectu natisone"} - NEWFOUND{"NEWFOUND"} NJIVA{"dialectu gniva/njiva"} NULIK{"volapük modernu"} OSOJS{"dialectu oseacco/osojane"} OXENDICT{"ortografía del diccionariu d’inglés d’Oxford"} PAMAKA{"dialectu pamaka"} - PETR1708{"PETR1708"} PINYIN{"romanización pinyin"} POLYTON{"politónicu"} POSIX{"ordenador"} - PUTER{"PUTER"} REVISED{"ortografía revisada"} RIGIK{"volapük clásicu"} ROZAJ{"resianu"} - RUMGR{"RUMGR"} SAAHO{"saho"} SCOTLAND{"inglés estándar escocés"} SCOUSE{"scouse"} - SIMPLE{"SIMPLE"} SOLBA{"dialectu stolvizza/solbica"} SOTAV{"grupu dialectal sotavento del cabuverdianu"} - SURMIRAN{"SURMIRAN"} - SURSILV{"SURSILV"} - SUTSILV{"SUTSILV"} TARASK{"ortografía taraskievica"} UCCOR{"ortografía unificada"} UCRCOR{"ortografía unificada revisada"} - ULSTER{"ULSTER"} UNIFON{"alfabetu fonéticu Unifon"} - VAIDIKA{"VAIDIKA"} VALENCIA{"valencianu"} - VALLADER{"VALLADER"} WADEGILE{"romanización de Wade-Giles"} } - Version{"2.1.47.82"} + Version{"36"} characterLabelPattern{ all{"{0} — too"} category-list{"{0}: {1}"} diff --git a/source/data/lang/az.txt b/source/data/lang/az.txt index 4412714..f331ef8 100644 --- a/source/data/lang/az.txt +++ b/source/data/lang/az.txt @@ -346,7 +346,6 @@ az{ no{"norveç"} nog{"noqay"} non{"qədim nors"} - nqo{"nqo"} nr{"cənubi ndebele"} nso{"şimal soto"} nus{"nuer"} @@ -527,10 +526,16 @@ az{ zxx{"dil məzmunu yoxdur"} zza{"zaza"} } + Languages%long{ + zh_Hans{"sadələşmiş mandarin çincəsi"} + zh_Hant{"ənənəvi mandarin çincəsi"} + } + Languages%menu{ + yue{"Çin, kanton"} + zh{"Çin, mandarin"} + } Languages%short{ az{"azəri"} - en_GB{"ingilis (BK)"} - en_US{"ingilis (ABŞ)"} } Scripts{ Arab{"ərəb"} @@ -746,7 +751,7 @@ az{ tibt{"Tibet Rəqəmləri"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — Bütün"} category-list{"{0}: {1}"} diff --git a/source/data/lang/az_Cyrl.txt b/source/data/lang/az_Cyrl.txt index 5a6021d..9e32d5b 100644 --- a/source/data/lang/az_Cyrl.txt +++ b/source/data/lang/az_Cyrl.txt @@ -394,12 +394,11 @@ az_Cyrl{ } Languages%short{ en_GB{"инҝилис (Б.К.)"} - en_US{"инҝилис (АБШ)"} } Scripts{ Cyrl{"Кирил"} } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"Дил: {0}"} script{"Скрипт: {0}"} diff --git a/source/data/lang/az_Latn.txt b/source/data/lang/az_Latn.txt index 9c120f3..5247644 100644 --- a/source/data/lang/az_Latn.txt +++ b/source/data/lang/az_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License az_Latn{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/bas.txt b/source/data/lang/bas.txt index aa77299..3a6292b 100644 --- a/source/data/lang/bas.txt +++ b/source/data/lang/bas.txt @@ -48,5 +48,5 @@ bas{ zh{"Hɔp u kinà"} zu{"Hɔp u zulù"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/be.txt b/source/data/lang/be.txt index f9f4ba8..df1eeb4 100644 --- a/source/data/lang/be.txt +++ b/source/data/lang/be.txt @@ -29,6 +29,7 @@ be{ ang{"стараанглійская"} anp{"ангіка"} ar{"арабская"} + ar_001{"сучасная стандартная арабская"} arc{"арамейская"} arn{"мапудунгун"} arp{"арапаха"} @@ -61,6 +62,7 @@ be{ bug{"бугіс"} byn{"білен"} ca{"каталанская"} + ccp{"чакма"} ce{"чачэнская"} ceb{"себуана"} cgg{"чыга"} @@ -84,6 +86,8 @@ be{ dar{"даргінская"} dav{"таіта"} de{"нямецкая"} + de_AT{"аўстрыйская нямецкая"} + de_CH{"швейцарская літаратурная нямецкая"} dgr{"догрыб"} dje{"зарма"} dsb{"ніжнялужыцкая"} @@ -99,8 +103,15 @@ be{ eka{"экаджук"} el{"грэчаская"} en{"англійская"} + en_AU{"аўстралійская англійская"} + en_CA{"канадская англійская"} + en_GB{"брытанская англійская"} + en_US{"амерыканская англійская"} eo{"эсперанта"} es{"іспанская"} + es_419{"лацінаамерыканская іспанская"} + es_ES{"еўрапейская іспанская"} + es_MX{"мексіканская іспанская"} et{"эстонская"} eu{"баскская"} ewo{"эвонда"} @@ -112,6 +123,8 @@ be{ fo{"фарэрская"} fon{"фон"} fr{"французская"} + fr_CA{"канадская французская"} + fr_CH{"швейцарская французская"} fro{"старафранцузская"} fur{"фрыульская"} fy{"заходняя фрызская"} @@ -266,6 +279,7 @@ be{ nia{"ніас"} niu{"ніўэ"} nl{"нідэрландская"} + nl_BE{"фламандская"} nmg{"нгумба"} nn{"нарвежская (нюношк)"} nnh{"нг’ембон"} @@ -382,7 +396,7 @@ be{ twq{"тасаўак"} ty{"таіці"} tyv{"тувінская"} - tzm{"цэнтральнаатлаская тамазіхт"} + tzm{"сярэднеатлаская тамазігхт"} udm{"удмурцкая"} ug{"уйгурская"} uk{"украінская"} @@ -419,9 +433,17 @@ be{ zxx{"няма моўнага матэрыялу"} zza{"зазакі"} } + Languages%long{ + zh_Hans{"паўночнакітайская (спрошчаныя іерогліфы)"} + zh_Hant{"паўночнакітайская (традыцыйныя іерогліфы)"} + } + Languages%menu{ + yue{"кітайская, кантонскі дыялект"} + zh{"кітайская, паўночныя дыялекты"} + } Languages%short{ az{"азербайджанская"} - en_US{"англійская (ЗША)"} + en_GB{"вялікабрытанская англійская"} } Scripts{ Arab{"арабскае"} @@ -454,7 +476,7 @@ be{ Latn{"лацініца"} Mlym{"малаялам"} Mong{"старамангольскае"} - Mymr{"м’янмарскае"} + Mymr{"бірманскае"} Orya{"орыя"} Sinh{"сінгальскае"} Taml{"тамільскае"} @@ -466,7 +488,7 @@ be{ Zsye{"эмодзі"} Zsym{"сімвалы"} Zxxx{"беспісьменная"} - Zyyy{"звычайнае"} + Zyyy{"агульнае"} Zzzz{"невядомае пісьмо"} } Scripts%stand-alone{ @@ -551,7 +573,7 @@ be{ tibt{"тыбецкія лічбы"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — Усё"} category-list{"{0}: {1}"} diff --git a/source/data/lang/bem.txt b/source/data/lang/bem.txt index f0a0952..bb70f21 100644 --- a/source/data/lang/bem.txt +++ b/source/data/lang/bem.txt @@ -48,5 +48,5 @@ bem{ zh{"Ichi Chainisi"} zu{"Ichi Zulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/bez.txt b/source/data/lang/bez.txt index 64dd4f5..154286e 100644 --- a/source/data/lang/bez.txt +++ b/source/data/lang/bez.txt @@ -48,5 +48,5 @@ bez{ zh{"Hichina"} zu{"Hizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/bg.txt b/source/data/lang/bg.txt index 34ab901..dcd044f 100644 --- a/source/data/lang/bg.txt +++ b/source/data/lang/bg.txt @@ -134,6 +134,7 @@ bg{ el{"гръцки"} elx{"еламитски"} en{"английски"} + en_GB{"английски (Обединено кралство)"} en_US{"английски (САЩ)"} enm{"средновековен английски"} eo{"есперанто"} @@ -155,14 +156,14 @@ bg{ fro{"старофренски"} frr{"северен фризски"} frs{"източнофризийски"} - fur{"фриулиански"} + fur{"фриулски"} fy{"западнофризийски"} ga{"ирландски"} gaa{"га"} gag{"гагаузки"} gay{"гайо"} gba{"гбая"} - gd{"шотландски галски"} + gd{"шотландски келтски"} gez{"гииз"} gil{"гилбертски"} gl{"галисийски"} @@ -201,7 +202,7 @@ bg{ id{"индонезийски"} ie{"оксидентал"} ig{"игбо"} - ii{"съчуански и"} + ii{"съчуански йи"} ik{"инупиак"} ilo{"илоко"} inh{"ингушетски"} @@ -320,7 +321,7 @@ bg{ mwr{"марвари"} my{"бирмански"} myv{"ерзиа"} - mzn{"мазандари"} + mzn{"мазандерански"} na{"науру"} nap{"неаполитански"} naq{"нама"} @@ -356,7 +357,7 @@ bg{ oj{"оджибва"} om{"оромо"} or{"ория"} - os{"осетски"} + os{"осетински"} osa{"осейджи"} ota{"отомански турски"} pa{"пенджабски"} @@ -393,7 +394,7 @@ bg{ rwk{"рва"} sa{"санскрит"} sad{"сандаве"} - sah{"якутски"} + sah{"сакха"} sam{"самаритански арамейски"} saq{"самбуру"} sas{"сасак"} @@ -433,7 +434,7 @@ bg{ srr{"серер"} ss{"свати"} ssy{"сахо"} - st{"сесото"} + st{"сото"} su{"сундански"} suk{"сукума"} sus{"сусу"} @@ -520,6 +521,13 @@ bg{ zxx{"без лингвистично съдържание"} zza{"заза"} } + Languages%long{ + zh_Hans{"китайски, мандарин (опростен)"} + zh_Hant{"китайски, мандарин (традиционен)"} + } + Languages%menu{ + zh{"китайски, мандарин"} + } Languages%short{ az{"азерски"} en_GB{"английски (UK)"} @@ -539,7 +547,7 @@ bg{ Blis{"Блис символи"} Bopo{"бопомофо"} Brah{"Брахми"} - Brai{"Брайлова"} + Brai{"брайлова"} Bugi{"Бугинска"} Buhd{"Бухид"} Cakm{"Чакма"} @@ -566,10 +574,10 @@ bg{ Guru{"гурмукхи"} Hanb{"ханб"} Hang{"хангъл"} - Hani{"китайска"} + Hani{"хан"} Hano{"Хануну"} Hans{"опростена"} - Hant{"традиционен"} + Hant{"традиционна"} Hebr{"иврит"} Hira{"хирагана"} Hmng{"Пахау хмонг"} @@ -645,16 +653,16 @@ bg{ Xpeo{"Староперсийска"} Xsux{"Шумеро-акадски клинопис"} Yiii{"Йи"} - Zmth{"Математически символи"} - Zsye{"емотикони"} + Zmth{"математически символи"} + Zsye{"емоджи"} Zsym{"символи"} Zxxx{"без писменост"} Zyyy{"обща"} Zzzz{"непозната писменост"} } Scripts%stand-alone{ - Hans{"опростен китайски"} - Hant{"традиционен китайски"} + Hans{"опростен хан"} + Hant{"традиционен хан"} } Scripts%variant{ Arab{"персийско-арабска"} @@ -716,7 +724,7 @@ bg{ collation{ big5han{"Традиционен китайски (Big5)"} dictionary{"Речников ред на сортиране"} - ducet{"стандартен ред на сортиране в Уникод"} + ducet{"ред на сортиране в Unicode по подразбиране"} gb2312han{"Опростен китайски (GB2312)"} phonebook{"Азбучен ред"} phonetic{"Фонетичен ред на сортиране"} @@ -828,7 +836,7 @@ bg{ VALENCIA{"Валенсиански"} WADEGILE{"Уейд-Джайлс романизация"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} – всички"} category-list{"{0}: {1}"} diff --git a/source/data/lang/bm.txt b/source/data/lang/bm.txt index a170dfe..cdbbcd9 100644 --- a/source/data/lang/bm.txt +++ b/source/data/lang/bm.txt @@ -48,5 +48,5 @@ bm{ zh{"siniwakan"} zu{"zulukan"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/bn.txt b/source/data/lang/bn.txt index c2fc07a..8a10baf 100644 --- a/source/data/lang/bn.txt +++ b/source/data/lang/bn.txt @@ -83,6 +83,7 @@ bn{ cad{"ক্যাডো"} car{"ক্যারিব"} cch{"আত্সাম"} + ccp{"চাকমা"} ce{"চেচেন"} ceb{"চেবুয়ানো"} cgg{"চিগা"} @@ -193,7 +194,6 @@ bn{ gwi{"গওইচ্’ইন"} ha{"হাউসা"} hai{"হাইডা"} - hak{"hak"} haw{"হাওয়াইয়ান"} he{"হিব্রু"} hi{"হিন্দি"} @@ -337,7 +337,6 @@ bn{ myv{"এরজিয়া"} mzn{"মাজানদেরানি"} na{"নাউরু"} - nan{"nan"} nap{"নেয়াপোলিটান"} naq{"নামা"} nb{"নরওয়েজিয়ান বোকমাল"} @@ -526,7 +525,7 @@ bn{ ybb{"ইয়েম্বা"} yi{"ইয়েদ্দিশ"} yo{"ইওরুবা"} - yue{"ক্যানটোনীজ"} + yue{"ক্যান্টোনিজ"} za{"ঝু্য়াঙ"} zap{"জাপোটেক"} zbl{"চিত্র ভাষা"} @@ -540,6 +539,14 @@ bn{ zxx{"ভাষাভিত্তিক বিষয়বস্তু নেই"} zza{"জাজা"} } + Languages%long{ + zh_Hans{"চীনা ম্যান্ডারিন সরলীকৃত"} + zh_Hant{"ঐতিহ্যবাহী ম্যান্ডারিন চীনা"} + } + Languages%menu{ + yue{"চীনা, ক্যানটোনীজ"} + zh{"চীনা, ম্যান্ডারিন"} + } Languages%short{ az{"আজেরি"} en_GB{"যুক্তরাজ্যের ইংরেজি"} @@ -872,7 +879,7 @@ bn{ wara{"ওয়ারেং সিটি সংখ্যা"} } } - Version{"2.1.48.36"} + Version{"36"} characterLabelPattern{ all{"{0} — সমস্ত"} category-list{"{0}: {1}"} diff --git a/source/data/lang/bn_IN.txt b/source/data/lang/bn_IN.txt index 7c3c5f8..338e4b4 100644 --- a/source/data/lang/bn_IN.txt +++ b/source/data/lang/bn_IN.txt @@ -4,5 +4,5 @@ bn_IN{ Languages{ ksh{"কোলোনিয়ান"} } - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/bo.txt b/source/data/lang/bo.txt index f435763..bccb760 100644 --- a/source/data/lang/bo.txt +++ b/source/data/lang/bo.txt @@ -21,5 +21,5 @@ bo{ Tibt{"བོད་ཡིག་"} Zxxx{"སྙན་བརྒྱུད། ཡིག་རིགས་སུ་མ་བཀོད་པའི་ཟིན་ཐོ།"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/br.txt b/source/data/lang/br.txt index 4f4b3e9..819649b 100644 --- a/source/data/lang/br.txt +++ b/source/data/lang/br.txt @@ -83,6 +83,7 @@ br{ cad{"caddo"} car{"karibeg"} cch{"atsam"} + ccp{"chakmaeg"} ce{"tchetcheneg"} ceb{"cebuano"} cgg{"chigaeg"} @@ -553,6 +554,14 @@ br{ zxx{"diyezh"} zza{"zazakeg"} } + Languages%long{ + zh_Hans{"sinaeg mandarinek eeunaet"} + zh_Hant{"sinaeg mandarinek hengounel"} + } + Languages%menu{ + yue{"sinaeg, kantoneg"} + zh{"sinaeg, mandarineg"} + } Languages%short{ az{"azeri"} en_GB{"saozneg RU"} @@ -566,14 +575,21 @@ br{ Avst{"avestek"} Bali{"balinek"} Bamu{"bamounek"} + Batk{"batak"} Beng{"bengali"} Bopo{"bopomofo"} Brai{"Braille"} Bugi{"bougiek"} + Cakm{"chakmaek"} + Cans{"silabennaoueg engenidik unvan Kanada"} + Cham{"cham"} + Cher{"cherokee"} Copt{"koptek"} + Cprt{"silabennaoueg kipriek"} Cyrl{"kirillek"} Cyrs{"kirillek henslavonek"} Deva{"devanagari"} + Dupl{"berrskriverezh Duployé"} Egyp{"hieroglifoù egiptek"} Ethi{"etiopek"} Geor{"jorjianek"} @@ -584,7 +600,7 @@ br{ Guru{"gurmukhi"} Hanb{"han gant bopomofo"} Hang{"hangeul"} - Hani{"han"} + Hani{"sinalunioù (han)"} Hans{"eeunaet"} Hant{"hengounel"} Hebr{"hebraek"} @@ -613,6 +629,7 @@ br{ Narb{"henarabek an Norzh"} Ogam{"ogam"} Orya{"oriya"} + Phnx{"fenikianek"} Runr{"runek"} Samr{"samaritek"} Sarb{"henarabek ar Su"} @@ -632,6 +649,7 @@ br{ Vaii{"vai"} Xpeo{"persek kozh"} Xsux{"gennheñvel"} + Zinh{"hêrezh"} Zmth{"notadur jedoniel"} Zsye{"fromlunioù"} Zsym{"arouezioù"} @@ -640,8 +658,8 @@ br{ Zzzz{"skritur dianav"} } Scripts%stand-alone{ - Hans{"han eeunaet"} - Hant{"han hengounel"} + Hans{"sinalunioù (han) eeunaet"} + Hant{"sinalunioù (han) hengounel"} } Types{ calendar{ @@ -752,10 +770,12 @@ br{ thai{"sifroù thai"} tibt{"sifroù tibetan"} vaii{"sifroù vai"} + wara{"sifroù warang"} + wcho{"sifroù wantcho"} } } Variants{ - 1606NICT{"krenncʼhalleg"} + 1606NICT{"krenncʼhalleg diwezhañ"} 1694ACAD{"galleg rakvodern"} 1901{"reizhskrivadur alamanek hengounel"} 1959ACAD{"belaruseg akademek"} @@ -766,9 +786,11 @@ br{ ALALC97{"romanekadur ALA-LC 1997"} ALUKU{"rannyezh aloukou"} AO1990{"emglev 1990 war ar reizhskrivadur portugalek"} + ARANES{"araneg"} AREVELA{"armenianeg ar Reter"} AREVMDA{"armenianeg ar Cʼhornôg"} ASANTE{"achanti"} + AUVERN{"arverneg"} BAKU1926{"lizherenneg latin turkek unvan"} BALANKA{"rannyezh aniiek Balanka"} BARLA{"rannyezhoù Barlavento kreoleg ar Cʼhab-Glas"} @@ -778,27 +800,36 @@ br{ BISKE{"rannyezh San Giorgio/Bila"} BOHORIC{"lizherenneg Bohorič"} BOONT{"boontling"} + CISAUP{"kizalpeg"} COLB1945{"emglev 1945 war reizhskrivadur portugaleg Brazil"} CORNU{"saozneg Kerne-Veur"} + CREISS{"rannyezhoù Creissent"} DAJNKO{"lizherenneg Dajnko"} EKAVSK{"serbeg gant distagadur ekavian"} EMODENG{"saozneg rakvodern"} FONIPA{"lizherenneg fonetek etrebroadel"} - FONNAPA{"FONNAPA"} + FONKIRSH{"lizherenneg fonetek Kirshenbaum"} + FONNAPA{"lizherenneg fonetek Norzh Amerika"} FONUPA{"lizherenneg fonetek ouralek"} FONXSAMP{"treuzskrivadur X-SAMPA"} + GASCON{"gwaskoneg"} + GRCLASS{"skritur okitanek klasel"} + GRITAL{"skritur okitanek Italia"} + GRMISTR{"skritur okitanek mistralek"} HEPBURN{"romanekadur Hepburn"} HOGNORSK{"uhelnorvegeg"} HSISTEMO{"esperanteg sistem H"} IJEKAVSK{"serbeg gant distagadur ijekavian"} ITIHASA{"sanskriteg itihâsa"} - IVANCHOV{"reizhskrivadur Ivanchov"} + IVANCHOV{"reizhskrivadur bulgarek Ivanchov"} JAUER{"rannyezh romañchek Jauer"} JYUTPING{"romanekadur kantonek Jyutping"} KKCOR{"kerneveureg kumun"} - KOCIEWIE{"Kociewie"} + KOCIEWIE{"rannyezh polonek Kociewie"} KSCOR{"kerneveureg standart"} LAUKIKA{"sanskriteg klasel"} + LEMOSIN{"rannyezh Limousin"} + LENGADOC{"lengadokeg"} LIPAW{"rannyezh resianek Lipovaz"} LUNA1918{"reizhskrivadur rusianek goude 1917"} METELKO{"lizherenneg Metelko"} @@ -806,18 +837,20 @@ br{ NDYUKA{"rannyezh Ndyuka"} NEDIS{"rannyezh Natisone"} NEWFOUND{"saozneg an Douar-Nevez"} + NICARD{"nisardeg"} NJIVA{"rannyezh Gniva/Njiva"} NULIK{"volapük modern"} OSOJS{"rannyezh Oseacco/Osojane"} OXENDICT{"skritur Oxford English Dictionary"} - PAHAWH2{"PAHAWH2"} - PAHAWH3{"PAHAWH3"} - PAHAWH4{"PAHAWH4"} + PAHAWH2{"reizhskrivadur pahawh hmong lankad 2"} + PAHAWH3{"reizhskrivadur pahawh hmong lankad 3"} + PAHAWH4{"reizhskrivadur pahawh hmong doare diwezhañ"} PAMAKA{"rannyezh Pamaka"} PETR1708{"reizhskrivadur rusianek 1708 Pêr I"} PINYIN{"romanekadur pinyin"} POLYTON{"gresianeg liestonel"} - POSIX{"POSIX"} + POSIX{"stlenneg"} + PROVENC{"provañseg"} PUTER{"rannyezh romañchek Puter"} REVISED{"reizhskrivadur reizhet"} RIGIK{"volapük klasel"} @@ -826,10 +859,10 @@ br{ SAAHO{"saho"} SCOTLAND{"saozneg standart Skos"} SCOUSE{"saozneg Liverpool (scouse)"} - SIMPLE{"SIMPLE"} + SIMPLE{"eeunaet"} SOLBA{"rannyezh Stolvizza/Solbica"} SOTAV{"rannyezhoù Sotavento kreoleg ar Cʼhab-Glas"} - SPANGLIS{"SPANGLIS"} + SPANGLIS{"spanglish"} SURMIRAN{"rannyezh romañchek surmiran"} SURSILV{"rannyezh romañchek sursilvan"} SUTSILV{"rannyezh romañchek sutsilvan"} @@ -841,14 +874,23 @@ br{ VAIDIKA{"sanskriteg vedek"} VALENCIA{"valensianeg"} VALLADER{"rannyezh romañchek Vallader"} + VIVARAUP{"vivaroalpeg"} WADEGILE{"romanekadur Wade-Giles"} XSISTEMO{"esperanteg sistem X"} } - Version{"2.1.48.86"} + Version{"36"} + characterLabelPattern{ + enclosed{"{0} — kelcʼhiet"} + extended{"{0} — astennet"} + historic{"{0} — istorel"} + miscellaneous{"{0} — liesseurt"} + other{"{0} — all"} + scripts{"skriturioù — {0}"} + } codePatterns{ - language{"{0}"} - script{"{0}"} - territory{"{0}"} + language{"yezh : {0}"} + script{"skritur : {0}"} + territory{"rannved : {0}"} } localeDisplayPattern{ keyTypePattern{"{0} : {1}"} diff --git a/source/data/lang/brx.txt b/source/data/lang/brx.txt index 7a19eaf..75c3b31 100644 --- a/source/data/lang/brx.txt +++ b/source/data/lang/brx.txt @@ -609,7 +609,7 @@ brx{ SOLBA{"श्टोलविज़्ज़ा या सोलबीका डायलेक्ट"} TARASK{"तारास्कीएवीचा वर्तनी"} } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ script{"देवनागरी: {0}"} territory{"क्षेत्र:भारत {0}"} diff --git a/source/data/lang/bs.txt b/source/data/lang/bs.txt index 58f8902..a730bd9 100644 --- a/source/data/lang/bs.txt +++ b/source/data/lang/bs.txt @@ -4,12 +4,22 @@ bs{ Keys{ calendar{"Kalendar"} cf{"Format valute"} + colAlternate{"Zanemarivanje poredavanja simbola"} + colBackwards{"Obrnuto poredavanje po naglasku"} + colCaseFirst{"Poredavanje po velikim/malim slovima"} + colCaseLevel{"Poredavanje u skladu s veličinom slova"} + colNormalization{"Normalizirano poredavanje"} + colNumeric{"Numeričko poredavanje"} + colStrength{"Jačina poredavanja"} collation{"Sortiranje"} currency{"Valuta"} hc{"Format vremena (12 ili 24)"} lb{"Stil prijeloma reda"} ms{"Mjerni sistem"} numbers{"Brojevi"} + timezone{"Vremenska zona"} + va{"Varijanta zemlje/jezika"} + x{"Privatna upotreba"} } Languages{ aa{"afarski"} @@ -81,6 +91,7 @@ bs{ car{"karipski"} cay{"kajuga"} cch{"atsam"} + ccp{"čakma"} ce{"čečenski"} ceb{"cebuano"} cgg{"čiga"} @@ -92,7 +103,7 @@ bs{ chn{"činukski žargon"} cho{"čoktav"} chp{"čipvijanski"} - chr{"čiroki"} + chr{"čeroki"} chy{"čejenski"} ckb{"centralnokurdski"} co{"korzikanski"} @@ -110,7 +121,6 @@ bs{ dar{"dargva"} dav{"taita"} de{"njemački"} - de_CH{"gornjonjemački (Švicarska)"} del{"delaver"} den{"slave"} dgr{"dogrib"} @@ -358,7 +368,7 @@ bs{ oc{"oksitanski"} oj{"ojibva"} om{"oromo"} - or{"orijski"} + or{"odija"} os{"osetski"} osa{"osage"} ota{"osmanski turski"} @@ -525,10 +535,16 @@ bs{ zxx{"bez lingvističkog sadržaja"} zza{"zaza"} } + Languages%long{ + zh_Hans{"kineski (pojednostavljeni standardni)"} + zh_Hant{"kineski (tradicionalni standardni)"} + } + Languages%menu{ + yue{"jue"} + zh{"kineski (standardni)"} + } Languages%short{ az{"azerski"} - en_GB{"engleski (UK)"} - en_US{"engleski (SAD)"} } Languages%variant{ ps{"pušto"} @@ -796,7 +812,7 @@ bs{ TARASK{"Taraskijevica ortografija"} VALENCIA{"Valencijski"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — sve"} category-list{"{0}: {1}"} diff --git a/source/data/lang/bs_Cyrl.txt b/source/data/lang/bs_Cyrl.txt index 2d3b262..4416cd1 100644 --- a/source/data/lang/bs_Cyrl.txt +++ b/source/data/lang/bs_Cyrl.txt @@ -4,8 +4,12 @@ bs_Cyrl{ %%Parent{"root"} Keys{ calendar{"Календар"} - collation{"Сортирање"} - currency{"Валута"} + cf{"формат валуте"} + collation{"сортирање"} + currency{"валута"} + hc{"сат (12-сати / 24-сата)"} + lb{"стил завршетка ретка"} + ms{"систем мјерења"} numbers{"Бројеви"} x{"Приватна употреба"} } @@ -17,8 +21,9 @@ bs_Cyrl{ ada{"адангмејски"} ady{"адигејски"} ae{"авестански"} - af{"африканерски"} + af{"африканс"} afh{"африхили"} + agq{"ахемски"} ain{"аину"} ak{"акан"} akk{"акадијски"} @@ -29,11 +34,13 @@ bs_Cyrl{ ang{"староенглески"} anp{"ангика"} ar{"арапски"} + ar_001{"арапски (стандардни)"} arc{"армајски"} arn{"ароканијски"} arp{"арапахо"} arw{"аравак"} as{"асемијски"} + asa{"асу"} ast{"астуријски"} av{"аварски"} awa{"авадхи"} @@ -46,6 +53,7 @@ bs_Cyrl{ be{"бјелоруски"} bej{"беја"} bem{"бемба"} + bez{"бена"} bg{"бугарски"} bho{"бојпури"} bi{"бислама"} @@ -53,10 +61,11 @@ bs_Cyrl{ bin{"бини"} bla{"сисика"} bm{"бамбара"} - bn{"бенгласки"} + bn{"бенгалски"} bo{"тибетански"} br{"бретонски"} bra{"брај"} + brx{"бодо"} bs{"босански"} bua{"буриат"} bug{"бугинежански"} @@ -65,8 +74,10 @@ bs_Cyrl{ cad{"кадо"} car{"карипски"} cch{"атсамски"} + ccp{"чакма"} ce{"чеченски"} ceb{"цебуано"} + cgg{"чига"} ch{"чаморо"} chb{"чибча"} chg{"чагатаи"} @@ -77,6 +88,7 @@ bs_Cyrl{ chp{"чипвијански"} chr{"чероки"} chy{"чејенски"} + ckb{"централнокурдски"} co{"корзикански"} cop{"коптски"} cr{"кри"} @@ -89,17 +101,20 @@ bs_Cyrl{ da{"дански"} dak{"дакота"} dar{"даргва"} + dav{"таита"} de{"њемачки"} - de_CH{"Швајцарски високи немачки"} + de_CH{"високи њемачки (Швицарска)"} del{"делавер"} den{"славски"} dgr{"догриб"} din{"динка"} + dje{"зарма"} doi{"догри"} - dsb{"ниски сорбијански"} + dsb{"доњолужичкосрпски"} dua{"дуала"} dum{"средњи холандски"} dv{"дивехијски"} + dyo{"јола-фоњи"} dyu{"ђула"} dz{"џонга"} ebu{"ембу"} @@ -131,7 +146,7 @@ bs_Cyrl{ frr{"северно-фризијски"} frs{"источни фризијски"} fur{"фриулијски"} - fy{"фризијски"} + fy{"западни фризијски"} ga{"ирски"} gaa{"га"} gay{"гајо"} @@ -150,6 +165,7 @@ bs_Cyrl{ grc{"старогрчки"} gsw{"њемачки (Швицарска)"} gu{"гуџарати"} + guz{"гуси"} gv{"манкс"} gwi{"гвич’ин"} ha{"хауса"} @@ -162,18 +178,18 @@ bs_Cyrl{ hmn{"хмонг"} ho{"хири моту"} hr{"хрватски"} - hsb{"горњи сорбијски"} - ht{"хаитски"} + hsb{"горњолужичкосрпски"} + ht{"хаићански креолски"} hu{"мађарски"} hup{"хупа"} - hy{"ерменски"} + hy{"јерменски"} hz{"хереро"} ia{"интерлингва"} iba{"ибан"} id{"индонежански"} ie{"међујезички"} ig{"игбо"} - ii{"сичуан ји"} + ii{"сечуан ји"} ik{"унупиак"} ilo{"илоко"} inh{"ингвишки"} @@ -183,6 +199,8 @@ bs_Cyrl{ iu{"инуктитут"} ja{"јапански"} jbo{"лојбан"} + jgo{"нгомба"} + jmc{"мачаме"} jpr{"јудео-персијски"} jrb{"јудео-арапски"} jv{"јавански"} @@ -195,14 +213,19 @@ bs_Cyrl{ kaw{"кави"} kbd{"кабардијски"} kcg{"тјап"} + kde{"маконде"} + kea{"кабовердијански креолски"} kfo{"коро"} kg{"конго"} kha{"каси"} kho{"котанешки"} + khq{"којра чини"} ki{"кикују"} kj{"куањама"} - kk{"козачки"} + kk{"казашки"} + kkj{"како"} kl{"калалисут"} + kln{"калењин"} km{"кмерски"} kmb{"кимбунду"} kn{"канада"} @@ -216,6 +239,8 @@ bs_Cyrl{ kru{"курукх"} ks{"кашмирски"} ksb{"шамбала"} + ksf{"бафија"} + ksh{"келнски"} ku{"курдски"} kum{"кумик"} kut{"кутенаи"} @@ -224,16 +249,19 @@ bs_Cyrl{ ky{"киргиски"} la{"латински"} lad{"ладино"} + lag{"ланги"} lah{"ланда"} lam{"ламба"} lb{"луксембуршки"} lez{"лезгиан"} lg{"ганда"} li{"лимбургиш"} + lkt{"лакота"} ln{"лингала"} lo{"лаоски"} lol{"монго"} loz{"лози"} + lrc{"сјеверни лури"} lt{"литвански"} lu{"луба-катанга"} lua{"луба-лулуа"} @@ -241,6 +269,7 @@ bs_Cyrl{ lun{"лунда"} luo{"луо"} lus{"лушаи"} + luy{"луја"} lv{"латвијски"} mad{"мадурешки"} mag{"магахи"} @@ -251,8 +280,12 @@ bs_Cyrl{ mdf{"мокша"} mdr{"мандар"} men{"менде"} + mer{"меру"} + mfe{"мауритански"} mg{"малагасијски"} mga{"средњи ирски"} + mgh{"макуа-мето"} + mgo{"мета"} mh{"маршалски"} mi{"маорски"} mic{"микмак"} @@ -266,18 +299,21 @@ bs_Cyrl{ mos{"моси"} mr{"марати"} ms{"малајски"} - mt{"мелтешки"} + mt{"малтешки"} + mua{"мунданг"} mul{"више језика"} mus{"кришки"} mwl{"мирандешки"} mwr{"марвари"} my{"бурмански"} myv{"ерзија"} + mzn{"мазандерани"} na{"науру"} nap{"неаполитански"} + naq{"нама"} nb{"норвешки бокмал"} nd{"сјеверни ндебеле"} - nds{"ниски немачки"} + nds{"ниски њемачки"} ne{"непалски"} new{"невари"} ng{"ндонга"} @@ -285,13 +321,16 @@ bs_Cyrl{ niu{"ниуеан"} nl{"холандски"} nl_BE{"фламански"} - nn{"норвешки њорск"} + nmg{"квасио"} + nn{"норвешки нинорск"} + nnh{"нгиембун"} no{"норвешки"} nog{"ногаи"} non{"стари норски"} nqo{"н’ко"} nr{"јужни ндебеле"} nso{"сјеверни сото"} + nus{"нуер"} nv{"навахо"} nwc{"класични невари"} ny{"њања"} @@ -302,11 +341,11 @@ bs_Cyrl{ oc{"провансалски"} oj{"ојибва"} om{"оромо"} - or{"оријски"} + or{"одија"} os{"осетски"} osa{"осаге"} ota{"отомански турски"} - pa{"панџабски"} + pa{"пенџапски"} pag{"пангасински"} pal{"пахлави"} pam{"пампанга"} @@ -317,6 +356,7 @@ bs_Cyrl{ pi{"пали"} pl{"пољски"} pon{"понпејски"} + prg{"пруски"} pro{"старопровансалски"} ps{"паштунски"} pt{"португалски"} @@ -328,28 +368,35 @@ bs_Cyrl{ rn{"рунди"} ro{"румунски"} ro_MD{"молдавски"} + rof{"ромбо"} rom{"романи"} root{"рут"} ru{"руски"} rup{"ароманијски"} rw{"кинјаруанда"} + rwk{"рва"} sa{"санскрит"} sad{"сандаве"} - sah{"јакут"} + sah{"јакутски"} sam{"самаритански арамејски"} + saq{"самбуру"} sas{"сасак"} sat{"сантали"} + sbp{"сангу"} sc{"сардињаски"} scn{"сицилијански"} sco{"шкотски"} sd{"синди"} se{"сјеверни сами"} + seh{"сена"} sel{"селкап"} + ses{"којраборо сени"} sg{"санго"} sga{"староирски"} sh{"српскохрватски"} + shi{"ташелхит"} shn{"шан"} - si{"сингалески"} + si{"синхалски"} sid{"сидамо"} sk{"словачки"} sl{"словенски"} @@ -380,9 +427,10 @@ bs_Cyrl{ ta{"тамилски"} te{"телугу"} tem{"тимне"} + teo{"тесо"} ter{"терено"} tet{"тетум"} - tg{"тађик"} + tg{"таџички"} th{"тајландски"} ti{"тигриња"} tig{"тигре"} @@ -404,8 +452,10 @@ bs_Cyrl{ tum{"тумбука"} tvl{"тувалу"} tw{"тви"} + twq{"тасавак"} ty{"тахићански"} tyv{"тувинијски"} + tzm{"централноатласки тамазихт"} udm{"удмурт"} ug{"ујгурски"} uga{"угаритски"} @@ -419,15 +469,19 @@ bs_Cyrl{ vi{"вијетнамски"} vo{"волапук"} vot{"вотски"} + vun{"вунјо"} wa{"валун"} + wae{"валсерски"} wal{"валамо"} war{"варај"} was{"вашо"} wo{"волоф"} xal{"калмик"} - xh{"ксхоса"} + xh{"коса"} + xog{"сога"} yao{"јао"} yap{"јапешки"} + yav{"јангбен"} yi{"јидиш"} yo{"јоруба"} yue{"кантонски"} @@ -435,19 +489,20 @@ bs_Cyrl{ zap{"запотечки"} zbl{"блисимболи"} zen{"зенага"} - zgh{"стандардни марокански тамазигт"} + zgh{"стандардни марокански тамазихт"} zh{"кинески"} zh_Hans{"кинески (поједностављен)"} - zh_Hant{"кинески (традиционални)"} zu{"зулу"} zun{"зуни"} zxx{"без лингвистичког садржаја"} zza{"заза"} } + Languages%menu{ + yue{"кинески (кантонски)"} + zh{"кинески (мандарински)"} + } Languages%short{ az{"азерски"} - en_GB{"енглески (УК)"} - en_US{"енглески (САД)"} } Languages%variant{ ps{"пашто"} @@ -476,7 +531,7 @@ bs_Cyrl{ Cprt{"кипарско писмо"} Cyrl{"ћирилица"} Cyrs{"Старословенска црквена ћирилица"} - Deva{"Деванагари"} + Deva{"деванагари"} Dsrt{"Дезерет"} Egyd{"египатско народно писмо"} Egyh{"египатско хијератско писмо"} @@ -487,32 +542,33 @@ bs_Cyrl{ Glag{"глагољица"} Goth{"Готика"} Grek{"грчко писмо"} - Gujr{"гујарати писмо"} + Gujr{"гуџарати"} Guru{"гурмуки писмо"} + Hanb{"хан с бопомофо писмом"} Hang{"хангул"} Hani{"хан"} Hano{"хануно"} - Hans{"поједностављено кинеско писмо"} - Hant{"традиционално кинеско писмо"} + Hans{"поједностављени"} + Hant{"традиционални"} Hebr{"хебрејско писмо"} - Hira{"Хирагана"} + Hira{"хирагана"} Hmng{"пахав хмонг писмо"} - Hrkt{"Катакана или Хирагана"} + Hrkt{"јапанско слоговно писмо"} Hung{"старомађарско писмо"} Inds{"индушко писмо"} Ital{"стари италик"} - Jamo{"Џамо"} + Jamo{"џамо"} Java{"јаванско писмо"} Jpan{"јапанско писмо"} Kali{"кајах-ли писмо"} - Kana{"Катакана"} + Kana{"катакана"} Khar{"карошти писмо"} Khmr{"кмерско писмо"} - Knda{"каннада писмо"} + Knda{"канада писмо"} Kore{"корејско писмо"} Kthi{"каити"} Lana{"ланна писмо"} - Laoo{"лаошко писмо"} + Laoo{"лаоско писмо"} Latf{"латиница (фрактур варијанта)"} Latg{"галска латиница"} Latn{"латиница"} @@ -535,7 +591,7 @@ bs_Cyrl{ Ogam{"огамско писмо"} Olck{"ол чики писмо"} Orkh{"орконско писмо"} - Orya{"оријанско писмо"} + Orya{"одија писмо"} Osma{"осмањанско писмо"} Perm{"старо пермикско писмо"} Phag{"пагс-па писмо"} @@ -553,7 +609,7 @@ bs_Cyrl{ Saur{"саураштра писмо"} Sgnw{"знаковно писмо"} Shaw{"шавијанско писмо"} - Sinh{"синхала писмо"} + Sinh{"синхалско писмо"} Sylo{"силоти нагри писмо"} Syrc{"сиријско писмо"} Syre{"сиријско естрангело писмо"} @@ -568,7 +624,7 @@ bs_Cyrl{ Teng{"тенгвар писмо"} Tfng{"тифинаг писмо"} Tglg{"Тагалог"} - Thaa{"тхана писмо"} + Thaa{"тана писмо"} Thai{"тајландско писмо"} Tibt{"тибетанско писмо"} Ugar{"угаритско писмо"} @@ -579,6 +635,7 @@ bs_Cyrl{ Yiii{"ји писмо"} Zinh{"наследно писмо"} Zmth{"математичка нотација"} + Zsye{"емоџи"} Zsym{"симболи"} Zxxx{"неписани језик"} Zyyy{"заједничко писмо"} @@ -593,29 +650,36 @@ bs_Cyrl{ } Types{ calendar{ - buddhist{"Будистички календар"} - chinese{"Кинески календар"} + buddhist{"будистички календар"} + chinese{"кинески календар"} coptic{"коптски календар"} + dangi{"данги календар"} ethiopic{"етиопски календар"} ethiopic-amete-alem{"етиопски амет алем календар"} - gregorian{"Грегоријански календар"} - hebrew{"Хебрејски календар"} + gregorian{"грегоријански календар"} + hebrew{"хебрејски календар"} indian{"Индијски национални календар"} - islamic{"Исламски календар"} + islamic{"исламски календар"} islamic-civil{"Исламски цивилни календар"} - japanese{"Јапански календар"} + iso8601{"ISO-8601 календар"} + japanese{"јапански календар"} persian{"персијски календар"} roc{"Календар Републике Кине"} } + cf{ + account{"рачуноводствени формат валуте"} + standard{"стандардни формат валуте"} + } collation{ big5han{"Традиционално кинеско сортирање"} dictionary{"Редослед сортирања у речнику"} - ducet{"Подразумевани Unicode редослед сортирања"} + ducet{"задани Unicode редослијед сортирања"} gb2312han{"Поједностављено кинеско сортирање"} phonebook{"Сортирање као телефонски именик"} pinyin{"Пињин сортирање"} reformed{"Реформисани редослед сортирања"} - search{"Опште намењена претрага"} + search{"претрага опште намене"} + standard{"стандардни редослијед сортирања"} stroke{"Сортирање по броју црта"} traditional{"Традиционално сортирање"} unihan{"Редослед сортирања радикалним цртицама"} @@ -625,10 +689,26 @@ bs_Cyrl{ hwidth{"пола ширине"} npinyin{"Нумеричка"} } + hc{ + h11{"12-сатни систем (0–11)"} + h12{"12-сатни систем (1–12)"} + h23{"24-сатни систем (0–23)"} + h24{"24-сатни систем (1–24)"} + } + lb{ + loose{"слободан стил завршетка ретка"} + normal{"нормални стил завршетка ретка"} + strict{"строги стил завршетка ретка"} + } m0{ bgn{"БГН (BGN)"} ungegn{"УНГЕГН (BGN)"} } + ms{ + metric{"метрички систем"} + uksystem{"империјални систем мјерења"} + ussystem{"амерички систем мјерења"} + } numbers{ arab{"арапско-индијске цифре"} arabext{"продужене арапско-индијске цифре"} @@ -653,7 +733,7 @@ bs_Cyrl{ jpanfin{"јапански финансијски бројеви"} khmr{"кмерске цифре"} knda{"канада цифре"} - laoo{"лаошке цифре"} + laoo{"лаоске цифре"} latn{"западне цифре"} mlym{"малајалам цифре"} mong{"монголске цифре"} @@ -662,6 +742,7 @@ bs_Cyrl{ roman{"римски бројеви"} romanlow{"мали римски бројеви"} taml{"тамилски бројеви"} + tamldec{"тамилске цифре"} telu{"телугу цифре"} thai{"тајске цифре"} tibt{"тибетанске цифре"} @@ -696,7 +777,7 @@ bs_Cyrl{ TARASK{"Тараскијевичка ортографија"} VALENCIA{"Валенцијска"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — све"} strokes{ @@ -711,6 +792,7 @@ bs_Cyrl{ territory{"{0}"} } localeDisplayPattern{ + keyTypePattern{"{0}: {1}"} pattern{"{0} ({1})"} separator{"{0}, {1}"} } diff --git a/source/data/lang/bs_Latn.txt b/source/data/lang/bs_Latn.txt index a464369..40dd443 100644 --- a/source/data/lang/bs_Latn.txt +++ b/source/data/lang/bs_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bs_Latn{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/ca.txt b/source/data/lang/ca.txt index 7c14f53..e0ddfa26e 100644 --- a/source/data/lang/ca.txt +++ b/source/data/lang/ca.txt @@ -4,21 +4,21 @@ ca{ Keys{ calendar{"calendari"} cf{"format de moneda"} - colAlternate{"Ordenació sense tenir en compte els símbols"} - colBackwards{"Ordenació per accents invertida"} - colCaseFirst{"Ordenació per majúscules i minúscules"} - colCaseLevel{"Ordenació per detecció de majúscules"} - colNormalization{"Ordenació normalitzada"} - colNumeric{"Ordenació numèrica"} - colStrength{"Força de l’ordenació"} + colAlternate{"ordenació sense tenir en compte els símbols"} + colBackwards{"ordenació per accents invertida"} + colCaseFirst{"ordenació per majúscules i minúscules"} + colCaseLevel{"ordenació per detecció de majúscules"} + colNormalization{"ordenació normalitzada"} + colNumeric{"ordenació numèrica"} + colStrength{"força de l’ordenació"} collation{"ordenació"} currency{"moneda"} hc{"sistema horari (12 h o 24 h)"} lb{"estil de salt de línia"} ms{"sistema de mesures"} numbers{"xifres"} - timezone{"Zona horària"} - va{"Variant local"} + timezone{"zona horària"} + va{"variant local"} x{"ús privat"} } Languages{ @@ -596,10 +596,17 @@ ca{ zxx{"sense contingut lingüístic"} zza{"zaza"} } + Languages%long{ + zh_Hans{"xinès mandarí (simplificat)"} + zh_Hant{"xinès mandarí (tradicional)"} + } + Languages%menu{ + yue{"xinès, cantonès"} + zh{"xinès, mandarí"} + } Languages%short{ az{"àzeri"} en_GB{"anglès (GB)"} - en_US{"anglès (EUA)"} } Languages%variant{ ps{"pushtu"} @@ -1000,7 +1007,7 @@ ca{ VALLADER{"baix engiadinès"} WADEGILE{"romanització Wade-Giles"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} — tot"} category-list{"{0}: {1}"} diff --git a/source/data/lang/ccp.txt b/source/data/lang/ccp.txt index 41bd35a..4beddb5 100644 --- a/source/data/lang/ccp.txt +++ b/source/data/lang/ccp.txt @@ -833,7 +833,7 @@ ccp{ vaii{"𑄞𑄭 𑄚𑄘"} } } - Version{"2.1.48.88"} + Version{"36"} characterLabelPattern{ all{"{0} — 𑄗𑄪𑄟𑄴"} category-list{"{0}: {1}"} diff --git a/source/data/lang/ce.txt b/source/data/lang/ce.txt index 5e8548f..7b69bfc 100644 --- a/source/data/lang/ce.txt +++ b/source/data/lang/ce.txt @@ -405,7 +405,6 @@ ce{ Languages%short{ az{"азербайджанийн"} en_GB{"ингалсан (Британи)"} - en_US{"ингалсан (АЦШ)"} } Scripts{ Arab{"Ӏаьрбийн"} @@ -465,7 +464,7 @@ ce{ persian{"гӀажарийн"} } } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"Мотт: {0}"} script{"Скрипт: {0}"} diff --git a/source/data/lang/ceb.txt b/source/data/lang/ceb.txt index 4a0eed4..6ba4c27 100644 --- a/source/data/lang/ceb.txt +++ b/source/data/lang/ceb.txt @@ -2,7 +2,10 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ceb{ Languages{ - ceb{"Cebuano"} + ar{"Arabic"} + ar_001{"Modern Standard Arabic"} + bn{"Bangla"} + ceb{"Binisaya"} de{"Aleman"} de_AT{"Aleman (Austriano)"} de_CH{"Aleman (Swiss Hataas nga Aleman)"} @@ -18,17 +21,32 @@ ceb{ fr{"Pransesa"} fr_CA{"Pranses (Kanada)"} fr_CH{"Pransesa (Swiss)"} + hi{"Hindi"} + id{"Indonesian"} it{"Italiano"} ja{"Nipponggo"} + ko{"Korean"} + nl{"Dutch"} + nl_BE{"Flemish"} + pl{"Polish"} pt{"Portuguese"} pt_BR{"Portuguese (Brazilyano)"} pt_PT{"Portuguese (Uropanhon)"} ru{"Ruso"} + th{"Thai"} + tr{"Turkish"} und{"Wala Mailhing Pinulongan"} zh{"Intsik"} zh_Hans{"Pinasimpleng Intsik"} zh_Hant{"Tradisyonal Intsik"} } + Languages%long{ + zh_Hans{"Simplified Mandarin Chinese"} + zh_Hant{"Traditional Mandarin Chinese"} + } + Languages%menu{ + zh{"Chinese, Mandarin"} + } Languages%short{ en_GB{"Ingles (Britaniko)"} en_US{"Ingles (Amerika)"} @@ -38,6 +56,8 @@ ceb{ Cyrl{"Sirilisko"} Hans{"Pinasimple"} Hant{"Tradisyonal"} + Jpan{"Japanese"} + Kore{"Korean"} Latn{"Latin"} Zxxx{"Dili-sinulat"} Zzzz{"Wala Mailihing Alpabeto"} @@ -49,6 +69,7 @@ ceb{ Types{ calendar{ gregorian{"Gregorian nga Kalendaryo"} + iso8601{"Kalendaryo sa ISO-8601"} } collation{ standard{"Standard nga Paagi sa Pagpihig"} @@ -57,7 +78,7 @@ ceb{ latn{"Kasadpanhong mga Digit"} } } - Version{"2.1.49.82"} + Version{"36"} codePatterns{ language{"Pinulongan: {0}"} script{"Alpabeto {0}"} diff --git a/source/data/lang/cgg.txt b/source/data/lang/cgg.txt index d6b95bd..5001fa4 100644 --- a/source/data/lang/cgg.txt +++ b/source/data/lang/cgg.txt @@ -48,5 +48,5 @@ cgg{ zh{"Oruchaina"} zu{"Oruzuru"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/chr.txt b/source/data/lang/chr.txt index be32d40..e922971 100644 --- a/source/data/lang/chr.txt +++ b/source/data/lang/chr.txt @@ -292,7 +292,7 @@ chr{ ps{"ᏆᏍᏙ"} pt{"ᏉᏧᎩᏍ"} pt_BR{"ᏆᏏᎵᎢ ᏉᏧᎩᏍ"} - pt_PT{"ᏉᏥᎦᎳ ᏉᏧᎩᏍ"} + pt_PT{"ᏳᎳᏈ ᏉᏧᎩᏍ"} qu{"ᎨᏧᏩ"} quc{"ᎩᏤ"} rap{"ᎳᏆᏄᏫ"} @@ -407,6 +407,14 @@ chr{ zxx{"Ꮭ ᎦᏬᏂᎯᏍᏗ ᎦᎸᏛᎢ ᏱᎩ"} zza{"ᏌᏌ"} } + Languages%long{ + zh_Hans{"ᎠᎯᏗᎨ ᎹᏓᏈᏂ ᏓᎶᏂᎨ"} + zh_Hant{"ᎤᏦᏍᏗ ᎹᏓᏈᏂ ᏓᎶᏂᎨ"} + } + Languages%menu{ + yue{"ᏓᎶᏂᎨ, ᎨᎾᏙᏂᏏ"} + zh{"ᏓᎶᏂᎨ, ᎹᏓᏈᏂ"} + } Languages%short{ az{"ᎠᏎᎵ"} en_GB{"UK ᎩᎵᏏ"} @@ -540,14 +548,13 @@ chr{ tibt{"ᏘᏇᏔᏂ ᏗᏎᏍᏗ"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — ᏂᎦᏓ"} category-list{"{0}: {1}"} compatibility{"{0} — ᎤᏠᏯᏉᏗᏙᎵᎩ"} enclosed{"{0} — ᎠᏠᏯᏍᏔᏅ"} extended{"{0} — ᎦᏅᎯᏓ"} - historic{"{0} — ᎤᎵᏍᎨᏗ ᏂᏧᎵᏍᏔᏅᏍᏔᏅ"} miscellaneous{"{0} — ᏧᏓᎴᏅᏛ"} other{"{0} — ᏐᎢ"} scripts{"ᏗᎧᏁᎢᏍᏗ — {0}"} diff --git a/source/data/lang/ckb.txt b/source/data/lang/ckb.txt index 5d0ccc0..649f712 100644 --- a/source/data/lang/ckb.txt +++ b/source/data/lang/ckb.txt @@ -124,7 +124,7 @@ ckb{ hr{"كرواتی"} hsb{"سربیی سەروو"} ht{"کریولی هائیتی"} - hu{"هەنگاری (مەجاری)"} + hu{"هەنگاری"} hup{"هووپا"} hy{"ئەرمەنی"} hz{"هێرێرۆ"} @@ -441,5 +441,5 @@ ckb{ Hans{"هانی ئاسانکراو"} Hant{"هانی دێرین"} } - Version{"2.1.47.72"} + Version{"36"} } diff --git a/source/data/lang/cs.txt b/source/data/lang/cs.txt index 525d610..c8d7092 100644 --- a/source/data/lang/cs.txt +++ b/source/data/lang/cs.txt @@ -7,7 +7,7 @@ cs{ colAlternate{"Ignorovat řazení symbolů"} colBackwards{"Obrácené řazení akcentů"} colCaseFirst{"Řazení velkých a malých písmen"} - colCaseLevel{"Rozlišovaní velkých a malých písmen při řazení"} + colCaseLevel{"Rozlišování velkých a malých písmen při řazení"} colNormalization{"Normalizované řazení"} colNumeric{"Číselné řazení"} colStrength{"Míra řazení"} @@ -631,10 +631,17 @@ cs{ zxx{"žádný jazykový obsah"} zza{"zaza"} } + Languages%long{ + zh_Hans{"standardní čínština (zjednodušená)"} + zh_Hant{"standardní čínština (tradiční)"} + } + Languages%menu{ + yue{"jüe"} + zh{"standardní čínština"} + } Languages%short{ az{"ázerbájdžánština"} en_GB{"angličtina (VB)"} - en_US{"angličtina (USA)"} } Scripts{ Afak{"afaka"} @@ -962,7 +969,7 @@ cs{ SCOTLAND{"angličtina (Skotsko)"} WADEGILE{"Wade-Giles"} } - Version{"2.1.48.44"} + Version{"36"} characterLabelPattern{ all{"{0} – vše"} category-list{"{0}: {1}"} diff --git a/source/data/lang/cy.txt b/source/data/lang/cy.txt index 03d75fe..f9bc5df 100644 --- a/source/data/lang/cy.txt +++ b/source/data/lang/cy.txt @@ -5,7 +5,7 @@ cy{ calendar{"Calendr"} cf{"Fformat Arian"} collation{"Trefn"} - currency{"Arian Breiniol"} + currency{"Math o Arian"} hc{"Cylched Awr (12 vs 24)"} lb{"Arddull Toriad Llinell"} ms{"System Fesur"} @@ -443,7 +443,7 @@ cy{ sm{"Samöeg"} sma{"Sami Deheuol"} smj{"Sami Lwle"} - smn{"Sami Inari"} + smn{"Inari Sami"} sms{"Sami Scolt"} sn{"Shona"} snk{"Soninceg"} @@ -480,7 +480,7 @@ cy{ ti{"Tigrinya"} tig{"Tigreg"} tiv{"Tifeg"} - tk{"Twrcmeneg"} + tk{"Tyrcmeneg"} tkl{"Tocelaweg"} tkr{"Tsakhureg"} tl{"Tagalog"} @@ -502,7 +502,7 @@ cy{ twq{"Tasawaq"} ty{"Tahitïeg"} tyv{"Twfwnieg"} - tzm{"Tamaseit Canolbarth Moroco"} + tzm{"Tamazight Canol yr Atlas"} udm{"Fotiaceg"} ug{"Uighur"} uga{"Wgariteg"} @@ -539,18 +539,24 @@ cy{ zbl{"Blisssymbols"} zea{"Zêlandeg"} zgh{"Tamaseit Safonol"} - zh{"Tsieineeg"} - zh_Hans{"Tsieineeg Symledig"} - zh_Hant{"Tsieineeg Traddodiadol"} + zh{"Tsieinëeg"} + zh_Hans{"Tsieinëeg Symledig"} + zh_Hant{"Tsieinëeg Traddodiadol"} zu{"Swlw"} zun{"Swni"} zxx{"Dim cynnwys ieithyddol"} zza{"Sasäeg"} } + Languages%long{ + zh_Hans{"Tsieinëeg Mandarin Symledig"} + zh_Hant{"Tsieinëeg Mandarin Traddodiadol"} + } + Languages%menu{ + yue{"Tsieinëeg, Cantoneg"} + zh{"Tsieinëeg, Mandarin"} + } Languages%short{ az{"Aseri"} - en_GB{"Saesneg (DU)"} - en_US{"Saesneg (UDA)"} } Scripts{ Arab{"Arabaidd"} @@ -584,7 +590,6 @@ cy{ Mlym{"Malayalamaidd"} Mong{"Mongolaidd"} Mymr{"Myanmaraidd"} - Ogam{"Ogam"} Orya{"Orïaidd"} Sinh{"Sinhanaidd"} Taml{"Tamilaidd"} @@ -702,23 +707,13 @@ cy{ ALUKU{"tafodiaith Aluku"} AREVELA{"Armeneg Dwyreiniol"} AREVMDA{"Armeneg Gorllewinol"} - BAUDDHA{"BAUDDHA"} - BISCAYAN{"BISCAYAN"} BOHORIC{"Gwyddor Bohorič"} DAJNKO{"gwyddor Dajnko"} EMODENG{"Saesneg Modern Cynnar"} FONIPA{"Seineg IPA"} FONUPA{"Seineg UPA"} - FONXSAMP{"FONXSAMP"} - HOGNORSK{"HOGNORSK"} - ITIHASA{"ITIHASA"} - JAUER{"JAUER"} - JYUTPING{"JYUTPING"} KKCOR{"yr Orgraff Gyffredin"} - KOCIEWIE{"KOCIEWIE"} KSCOR{"yr Orgraff Safonol"} - LAUKIKA{"LAUKIKA"} - LUNA1918{"LUNA1918"} METELKO{"gwyddor Metelko"} NDYUKA{"tafodiaith Ndyuka"} NEDIS{"tafodiaith Natisone"} @@ -727,13 +722,8 @@ cy{ PAMAKA{"tafodiaith Pamaka"} POSIX{"Cyfrifiadur"} SCOTLAND{"Saesneg Safonol yr Alban"} - SURMIRAN{"SURMIRAN"} - SURSILV{"SURSILV"} - SUTSILV{"SUTSILV"} - VAIDIKA{"VAIDIKA"} - VALLADER{"VALLADER"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — y cwbl"} category-list{"{0}: {1}"} diff --git a/source/data/lang/da.txt b/source/data/lang/da.txt index fb7864b..ca174dd 100644 --- a/source/data/lang/da.txt +++ b/source/data/lang/da.txt @@ -92,6 +92,7 @@ da{ car{"caribisk"} cay{"cayuga"} cch{"atsam"} + ccp{"chakma"} ce{"tjetjensk"} ceb{"cebuano"} cgg{"chiga"} @@ -554,9 +555,12 @@ da{ zxx{"intet sprogligt indhold"} zza{"zaza"} } + Languages%menu{ + yue{"kantonesisk (Kina)"} + zh{"mandarin (Kina)"} + } Languages%short{ az{"azeri"} - en_GB{"engelsk (UK)"} } Languages%variant{ ps{"pushto"} @@ -928,7 +932,6 @@ da{ KSCOR{"standardortografi"} LAUKIKA{"laukika"} LIPAW{"lipovaz"} - LUNA1918{"LUNA1918"} METELKO{"Metelko-alfabet"} MONOTON{"monotonisk"} NDYUKA{"Ndyuka-dialekt"} @@ -937,19 +940,15 @@ da{ NULIK{"moderne volapük"} OSOJS{"Oseacco-/Osojane-dialekt"} PAMAKA{"Pamaka-dialekt"} - PETR1708{"PETR1708"} PINYIN{"pinyin"} POLYTON{"polytonisk"} POSIX{"computer"} - PUTER{"PUTER"} REVISED{"revideret retskrivning"} RIGIK{"klassisk volapük"} ROZAJ{"Resi"} - RUMGR{"RUMGR"} SAAHO{"saho"} SCOTLAND{"skotsk standardengelsk"} SCOUSE{"scouse"} - SOLBA{"SOLBA"} SURMIRAN{"surmiran"} SURSILV{"sursilv"} SUTSILV{"sutsilv"} @@ -962,7 +961,7 @@ da{ VALLADER{"vallader"} WADEGILE{"Wade-Giles"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} – alle"} category-list{"{0}: {1}"} diff --git a/source/data/lang/dav.txt b/source/data/lang/dav.txt index dfd26bc..d029a5e 100644 --- a/source/data/lang/dav.txt +++ b/source/data/lang/dav.txt @@ -48,5 +48,5 @@ dav{ zh{"Kichina"} zu{"Kizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/de.txt b/source/data/lang/de.txt index 939276f..6d99732 100644 --- a/source/data/lang/de.txt +++ b/source/data/lang/de.txt @@ -109,6 +109,7 @@ de{ car{"Karibisch"} cay{"Cayuga"} cch{"Atsam"} + ccp{"Chakma"} ce{"Tschetschenisch"} ceb{"Cebuano"} cgg{"Rukiga"} @@ -628,16 +629,20 @@ de{ zxx{"Keine Sprachinhalte"} zza{"Zaza"} } + Languages%long{ + zh_Hans{"Mandarin (Vereinfacht)"} + } + Languages%menu{ + yue{"Chinesisch (Kantonesisch)"} + zh{"Chinesisch (Mandarin)"} + } Languages%short{ az{"Aserbaidschanisch"} - en_GB{"Englisch (GB)"} - en_US{"Englisch (USA)"} } Scripts{ Afak{"Afaka"} Aghb{"Kaukasisch-Albanisch"} Arab{"Arabisch"} - Armi{"Armi"} Armn{"Armenisch"} Avst{"Avestisch"} Bali{"Balinesisch"} @@ -676,7 +681,6 @@ de{ Grek{"Griechisch"} Gujr{"Gujarati"} Guru{"Gurmukhi"} - Hanb{"Hanb"} Hang{"Hangul"} Hani{"Chinesisch"} Hano{"Hanunoo"} @@ -1006,7 +1010,7 @@ de{ VALENCIA{"Valencianisch"} WADEGILE{"Wade-Giles"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} — Alle"} category-list{"{0}: {1}"} diff --git a/source/data/lang/de_AT.txt b/source/data/lang/de_AT.txt index a82693f..a9abce6 100644 --- a/source/data/lang/de_AT.txt +++ b/source/data/lang/de_AT.txt @@ -16,5 +16,5 @@ de_AT{ sh{"Serbokroatisch"} szl{"Schlesisch"} } - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/de_CH.txt b/source/data/lang/de_CH.txt index 0e46259..d18ede1 100644 --- a/source/data/lang/de_CH.txt +++ b/source/data/lang/de_CH.txt @@ -9,18 +9,23 @@ de_CH{ Languages{ ace{"Aceh-Sprache"} ach{"Acholi-Sprache"} + ar_001{"Modernes Hocharabisch"} ars{"Nadschd-Arabisch"} bas{"Basaa-Sprache"} be{"Weissrussisch"} bik{"Bikol-Sprache"} bin{"Bini-Sprache"} chb{"Chibcha-Sprache"} + de_CH{"Schweizer Hochdeutsch"} din{"Dinka-Sprache"} fan{"Pangwe-Sprache"} gba{"Gbaya-Sprache"} kmb{"Kimbundu-Sprache"} mus{"Muskogee-Sprache"} + nl_BE{"Flämisch"} prg{"Altpreussisch"} + zh_Hans{"Chinesisch (vereinfacht)"} + zh_Hant{"Chinesisch (traditionell)"} } Types{ colCaseFirst{ @@ -35,5 +40,5 @@ de_CH{ ussystem{"US Mass-System"} } } - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/lang/de_LU.txt b/source/data/lang/de_LU.txt index ae5e562..9ced696 100644 --- a/source/data/lang/de_LU.txt +++ b/source/data/lang/de_LU.txt @@ -4,5 +4,5 @@ de_LU{ Languages{ be{"Belarussisch"} } - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/dje.txt b/source/data/lang/dje.txt index a4ee777..db8474f 100644 --- a/source/data/lang/dje.txt +++ b/source/data/lang/dje.txt @@ -48,5 +48,5 @@ dje{ zh{"Sinuwa senni"} zu{"Zulu senni"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/dsb.txt b/source/data/lang/dsb.txt index 3331af2..167608a 100644 --- a/source/data/lang/dsb.txt +++ b/source/data/lang/dsb.txt @@ -378,7 +378,7 @@ dsb{ tibt{"tibetske cyfry"} } } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"Rěc: {0}"} script{"Pismo: {0}"} diff --git a/source/data/lang/dua.txt b/source/data/lang/dua.txt index d6dd5c1..10d8193 100644 --- a/source/data/lang/dua.txt +++ b/source/data/lang/dua.txt @@ -4,5 +4,5 @@ dua{ Languages{ dua{"duálá"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/dyo.txt b/source/data/lang/dyo.txt index 7e85d5d..0ddb2f6 100644 --- a/source/data/lang/dyo.txt +++ b/source/data/lang/dyo.txt @@ -48,5 +48,5 @@ dyo{ zh{"sinua"} zu{"sulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/dz.txt b/source/data/lang/dz.txt index cb2cd4e..2a177bb 100644 --- a/source/data/lang/dz.txt +++ b/source/data/lang/dz.txt @@ -234,7 +234,7 @@ dz{ tibt{"ང་བཅས་ཀྱི་ཨང་ཡིག"} } } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"ཁ་སྐད་: {0}"} script{"ཡིག་གཟུགས་: {0}"} diff --git a/source/data/lang/ebu.txt b/source/data/lang/ebu.txt index e878edf..64584d8 100644 --- a/source/data/lang/ebu.txt +++ b/source/data/lang/ebu.txt @@ -48,5 +48,5 @@ ebu{ zh{"Kĩchina"} zu{"Kĩzulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/ee.txt b/source/data/lang/ee.txt index 3b34180..82de464 100644 --- a/source/data/lang/ee.txt +++ b/source/data/lang/ee.txt @@ -182,10 +182,6 @@ ee{ zu{"zulugbe"} zxx{"gbegbɔgblɔ manɔmee"} } - Languages%short{ - en_GB{"Yevugbe (GB)"} - en_US{"Yevugbe (US)"} - } Scripts{ Arab{"Arabiagbeŋɔŋlɔ"} Armn{"armeniagbeŋɔŋlɔ"} @@ -299,7 +295,7 @@ ee{ tibt{"tibet digitwo"} } } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"gbegbɔgblɔ {0}"} script{"gbeŋɔŋlɔ {0}"} diff --git a/source/data/lang/el.txt b/source/data/lang/el.txt index 93a5b49..841691c 100644 --- a/source/data/lang/el.txt +++ b/source/data/lang/el.txt @@ -19,7 +19,7 @@ el{ numbers{"Αριθμοί"} timezone{"Ζώνη ώρας"} va{"Παραλλαγή τοπικών ρυθμίσεων"} - x{"Προσωπική χρήση"} + x{"Ιδιωτική χρήση"} } Languages{ aa{"Αφάρ"} @@ -552,6 +552,14 @@ el{ zxx{"Χωρίς γλωσσολογικό περιεχόμενο"} zza{"Ζάζα"} } + Languages%long{ + zh_Hans{"Απλοποιημένα Μανδαρινικά Κινεζικά"} + zh_Hant{"Παραδοσιακά Μανδαρινικά Κινεζικά"} + } + Languages%menu{ + yue{"Κινεζικά, Καντονέζικα"} + zh{"Κινεζικά, Μανδαρινικά"} + } Languages%short{ az{"Αζερικά"} en_GB{"Αγγλικά ΗΒ"} @@ -883,7 +891,7 @@ el{ VALENCIA{"Βαλενθιανά"} WADEGILE{"Εκλατινισμένα Γουάντ-Γκιλς"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — όλα"} category-list{"{0}: {1}"} diff --git a/source/data/lang/en.txt b/source/data/lang/en.txt index c223a6b..fdccd69 100644 --- a/source/data/lang/en.txt +++ b/source/data/lang/en.txt @@ -140,6 +140,7 @@ en{ chp{"Chipewyan"} chr{"Cherokee"} chy{"Cheyenne"} + cic{"Chickasaw"} ckb{"Central Kurdish"} co{"Corsican"} cop{"Coptic"} @@ -408,7 +409,7 @@ en{ mt{"Maltese"} mua{"Mundang"} mul{"Multiple languages"} - mus{"Creek"} + mus{"Muscogee"} mwl{"Mirandese"} mwr{"Marwari"} mwv{"Mentawai"} @@ -661,6 +662,12 @@ en{ } Languages%long{ zh{"Mandarin Chinese"} + zh_Hans{"Simplified Mandarin Chinese"} + zh_Hant{"Traditional Mandarin Chinese"} + } + Languages%menu{ + yue{"Chinese, Cantonese"} + zh{"Chinese, Mandarin"} } Languages%short{ az{"Azeri"} @@ -807,6 +814,7 @@ en{ Phnx{"Phoenician"} Plrd{"Pollard Phonetic"} Prti{"Inscriptional Parthian"} + Qaag{"Zawgyi"} Rjng{"Rejang"} Rohg{"Hanifi Rohingya"} Roro{"Rongorongo"} @@ -1257,7 +1265,7 @@ en{ VALENCIA{"Valencian"} WADEGILE{"Wade-Giles Romanization"} } - Version{"2.1.48.65"} + Version{"36"} characterLabelPattern{ all{"{0} — all"} category-list{"{0}: {1}"} diff --git a/source/data/lang/en_001.txt b/source/data/lang/en_001.txt index 665a7bb..f2ce837 100644 --- a/source/data/lang/en_001.txt +++ b/source/data/lang/en_001.txt @@ -5,6 +5,10 @@ en_001{ colCaseLevel{"Case-Sensitive Sorting"} colNormalization{"Normalised Sorting"} } + Languages{ + mus{"Creek"} + nds_NL{"West Low German"} + } Types{ colNormalization{ no{"Sort Without Normalisation"} @@ -17,7 +21,7 @@ en_001{ h24{"24-Hour System (1–24)"} } } - Version{"2.1.47.69"} + Version{"36"} characterLabelPattern{ all{"{0} – all"} compatibility{"{0} – compatibility"} diff --git a/source/data/lang/en_150.txt b/source/data/lang/en_150.txt index 8d02750..d709e7f 100644 --- a/source/data/lang/en_150.txt +++ b/source/data/lang/en_150.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_150{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_AG.txt b/source/data/lang/en_AG.txt index 752a3d7..a63a580 100644 --- a/source/data/lang/en_AG.txt +++ b/source/data/lang/en_AG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_AI.txt b/source/data/lang/en_AI.txt index 9c02925..4d398f9 100644 --- a/source/data/lang/en_AI.txt +++ b/source/data/lang/en_AI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AI{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_AT.txt b/source/data/lang/en_AT.txt index 753d6cf..bd5afac 100644 --- a/source/data/lang/en_AT.txt +++ b/source/data/lang/en_AT.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AT{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_AU.txt b/source/data/lang/en_AU.txt index 49e18fd..754893f 100644 --- a/source/data/lang/en_AU.txt +++ b/source/data/lang/en_AU.txt @@ -3,15 +3,34 @@ en_AU{ %%Parent{"en_001"} Languages{ + ar_001{"Modern Standard Arabic"} bn{"Bengali"} + de_AT{"Austrian German"} + de_CH{"Swiss High German"} + en_AU{"Australian English"} + en_CA{"Canadian English"} + en_GB{"British English"} en_US{"United States English"} + es_419{"Latin American Spanish"} + es_ES{"European Spanish"} + es_MX{"Mexican Spanish"} + fr_CA{"Canadian French"} + fr_CH{"Swiss French"} frc{"frc"} lou{"lou"} + pt_BR{"Brazilian Portuguese"} + pt_PT{"European Portuguese"} ro_MD{"Moldovan"} + sr_ME{"Montenegrin"} + zh_Hans{"Simplified Chinese"} + zh_Hant{"Traditional Chinese"} + } + Languages%short{ + en_GB{"UK English"} + en_US{"US English"} } Scripts{ Beng{"Bengali"} - Thai{"Thai"} } Types{ calendar{ @@ -19,5 +38,5 @@ en_AU{ ethiopic{"Ethiopian Calendar"} } } - Version{"2.1.48.43"} + Version{"36"} } diff --git a/source/data/lang/en_BB.txt b/source/data/lang/en_BB.txt index fbf9df7..fca6cbd 100644 --- a/source/data/lang/en_BB.txt +++ b/source/data/lang/en_BB.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BB{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_BE.txt b/source/data/lang/en_BE.txt index 511a8be..be2dff5 100644 --- a/source/data/lang/en_BE.txt +++ b/source/data/lang/en_BE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BE{ %%Parent{"en_150"} - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/lang/en_BM.txt b/source/data/lang/en_BM.txt index 009afd0..b1f0c76 100644 --- a/source/data/lang/en_BM.txt +++ b/source/data/lang/en_BM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_BS.txt b/source/data/lang/en_BS.txt index 582cff3..dd37cc9 100644 --- a/source/data/lang/en_BS.txt +++ b/source/data/lang/en_BS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BS{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_BW.txt b/source/data/lang/en_BW.txt index 2ae5fdb..472bb0c 100644 --- a/source/data/lang/en_BW.txt +++ b/source/data/lang/en_BW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BW{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_BZ.txt b/source/data/lang/en_BZ.txt index b964726..5a047a0 100644 --- a/source/data/lang/en_BZ.txt +++ b/source/data/lang/en_BZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BZ{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_CA.txt b/source/data/lang/en_CA.txt index 856aa66..571c521 100644 --- a/source/data/lang/en_CA.txt +++ b/source/data/lang/en_CA.txt @@ -2,11 +2,42 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CA{ %%Parent{"en_001"} + Keys{ + colNormalization{"Normalized Sorting"} + } Languages{ + ar_001{"Modern Standard Arabic"} bn{"Bengali"} + de_AT{"Austrian German"} + de_CH{"Swiss High German"} + en_AU{"Australian English"} + en_CA{"Canadian English"} + en_GB{"British English"} + en_US{"American English"} + es_419{"Latin American Spanish"} + es_ES{"European Spanish"} + es_MX{"Mexican Spanish"} + fa_AF{"Dari"} + fr_CA{"Canadian French"} + fr_CH{"Swiss French"} mfe{"Mauritian"} + nl_BE{"Flemish"} + pt_BR{"Brazilian Portuguese"} + pt_PT{"European Portuguese"} ro_MD{"Moldovan"} + sr_ME{"Montenegrin"} + sw_CD{"Congo Swahili"} tvl{"Tuvaluan"} + zh_Hans{"Simplified Chinese"} + zh_Hant{"Traditional Chinese"} + } + Languages%long{ + zh_Hans{"Simplified Mandarin Chinese"} + zh_Hant{"Traditional Mandarin Chinese"} + } + Languages%short{ + en_GB{"UK English"} + en_US{"US English"} } Types{ calendar{ @@ -21,5 +52,5 @@ en_CA{ upper{"To Upper Case"} } } - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/lang/en_CC.txt b/source/data/lang/en_CC.txt index 1c8588b..6066465 100644 --- a/source/data/lang/en_CC.txt +++ b/source/data/lang/en_CC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CC{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_CH.txt b/source/data/lang/en_CH.txt index ae65071..8a72c4c 100644 --- a/source/data/lang/en_CH.txt +++ b/source/data/lang/en_CH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CH{ %%Parent{"en_150"} - Version{"2.1.48.50"} + Version{"36"} } diff --git a/source/data/lang/en_CK.txt b/source/data/lang/en_CK.txt index 4276b47..1b5afe5 100644 --- a/source/data/lang/en_CK.txt +++ b/source/data/lang/en_CK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CK{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_CM.txt b/source/data/lang/en_CM.txt index 3926c38..a78b9f9 100644 --- a/source/data/lang/en_CM.txt +++ b/source/data/lang/en_CM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_CX.txt b/source/data/lang/en_CX.txt index 6e70c69..750c035 100644 --- a/source/data/lang/en_CX.txt +++ b/source/data/lang/en_CX.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CX{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_CY.txt b/source/data/lang/en_CY.txt index c009b10..369d217 100644 --- a/source/data/lang/en_CY.txt +++ b/source/data/lang/en_CY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CY{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_DE.txt b/source/data/lang/en_DE.txt index 9ae118e..b2b71ff 100644 --- a/source/data/lang/en_DE.txt +++ b/source/data/lang/en_DE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DE{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_DG.txt b/source/data/lang/en_DG.txt index a6f3076..41b307a 100644 --- a/source/data/lang/en_DG.txt +++ b/source/data/lang/en_DG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_DK.txt b/source/data/lang/en_DK.txt index 494fee3..5b3228b 100644 --- a/source/data/lang/en_DK.txt +++ b/source/data/lang/en_DK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DK{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_DM.txt b/source/data/lang/en_DM.txt index 4f886aa..f849ffe 100644 --- a/source/data/lang/en_DM.txt +++ b/source/data/lang/en_DM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_ER.txt b/source/data/lang/en_ER.txt index b9d9f93..e4a92d5 100644 --- a/source/data/lang/en_ER.txt +++ b/source/data/lang/en_ER.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ER{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_FI.txt b/source/data/lang/en_FI.txt index 3ca4f54..b8fbbfe 100644 --- a/source/data/lang/en_FI.txt +++ b/source/data/lang/en_FI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FI{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_FJ.txt b/source/data/lang/en_FJ.txt index 918bc8f..07db8bd 100644 --- a/source/data/lang/en_FJ.txt +++ b/source/data/lang/en_FJ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FJ{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_FK.txt b/source/data/lang/en_FK.txt index 4a8a67b..7178b9d 100644 --- a/source/data/lang/en_FK.txt +++ b/source/data/lang/en_FK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FK{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_FM.txt b/source/data/lang/en_FM.txt index 877c94e..122264e 100644 --- a/source/data/lang/en_FM.txt +++ b/source/data/lang/en_FM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_GB.txt b/source/data/lang/en_GB.txt index aac194d..40bee9c 100644 --- a/source/data/lang/en_GB.txt +++ b/source/data/lang/en_GB.txt @@ -3,10 +3,35 @@ en_GB{ %%Parent{"en_001"} Languages{ + ar_001{"Modern Standard Arabic"} + de_AT{"Austrian German"} + de_CH{"Swiss High German"} + en_AU{"Australian English"} + en_CA{"Canadian English"} + en_GB{"British English"} + en_US{"American English"} + es_419{"Latin American Spanish"} + es_ES{"European Spanish"} + es_MX{"Mexican Spanish"} + fa_AF{"Dari"} + fr_CA{"Canadian French"} + fr_CH{"Swiss French"} nds_NL{"West Low German"} + nl_BE{"Flemish"} + pt_BR{"Brazilian Portuguese"} + pt_PT{"European Portuguese"} + ro_MD{"Moldavian"} + sw_CD{"Congo Swahili"} + zh_Hans{"Simplified Chinese"} + zh_Hant{"Traditional Chinese"} } - Scripts{ - Thai{"Thai"} + Languages%long{ + zh_Hans{"Simplified Mandarin Chinese"} + zh_Hant{"Traditional Mandarin Chinese"} } - Version{"2.1.47.86"} + Languages%short{ + en_GB{"UK English"} + en_US{"US English"} + } + Version{"36"} } diff --git a/source/data/lang/en_GD.txt b/source/data/lang/en_GD.txt index afef775..cf5232c 100644 --- a/source/data/lang/en_GD.txt +++ b/source/data/lang/en_GD.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GD{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_GG.txt b/source/data/lang/en_GG.txt index 6e4ba39..b763399 100644 --- a/source/data/lang/en_GG.txt +++ b/source/data/lang/en_GG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_GH.txt b/source/data/lang/en_GH.txt index ff08937..5a9a0a1 100644 --- a/source/data/lang/en_GH.txt +++ b/source/data/lang/en_GH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GH{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_GI.txt b/source/data/lang/en_GI.txt index 1f237f7..40711a6 100644 --- a/source/data/lang/en_GI.txt +++ b/source/data/lang/en_GI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GI{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_GM.txt b/source/data/lang/en_GM.txt index 5c15a1c..88c2aa4 100644 --- a/source/data/lang/en_GM.txt +++ b/source/data/lang/en_GM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_GY.txt b/source/data/lang/en_GY.txt index 0afd13f..f023f89 100644 --- a/source/data/lang/en_GY.txt +++ b/source/data/lang/en_GY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GY{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_HK.txt b/source/data/lang/en_HK.txt index 5ce84a6..930481d 100644 --- a/source/data/lang/en_HK.txt +++ b/source/data/lang/en_HK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_HK{ %%Parent{"en_001"} - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/lang/en_IE.txt b/source/data/lang/en_IE.txt index bc4d1b3..4f886d0 100644 --- a/source/data/lang/en_IE.txt +++ b/source/data/lang/en_IE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IE{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_IL.txt b/source/data/lang/en_IL.txt index 4f6fead..598b76d 100644 --- a/source/data/lang/en_IL.txt +++ b/source/data/lang/en_IL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IL{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_IM.txt b/source/data/lang/en_IM.txt index f109428..8c69f46 100644 --- a/source/data/lang/en_IM.txt +++ b/source/data/lang/en_IM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_IN.txt b/source/data/lang/en_IN.txt index da457aa..a30d0b7 100644 --- a/source/data/lang/en_IN.txt +++ b/source/data/lang/en_IN.txt @@ -4,6 +4,7 @@ en_IN{ %%Parent{"en_001"} Languages{ bn{"Bengali"} + ro_MD{"Moldavian"} } Scripts{ Beng{"Bengali"} @@ -15,5 +16,5 @@ en_IN{ orya{"Oriya Digits"} } } - Version{"2.1.49.14"} + Version{"36"} } diff --git a/source/data/lang/en_IO.txt b/source/data/lang/en_IO.txt index ae46d46..c161608 100644 --- a/source/data/lang/en_IO.txt +++ b/source/data/lang/en_IO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IO{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_JE.txt b/source/data/lang/en_JE.txt index b1fe588..f665bf2 100644 --- a/source/data/lang/en_JE.txt +++ b/source/data/lang/en_JE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_JE{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_JM.txt b/source/data/lang/en_JM.txt index b21c1a8..5ea01d1 100644 --- a/source/data/lang/en_JM.txt +++ b/source/data/lang/en_JM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_JM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_KE.txt b/source/data/lang/en_KE.txt index 3ba47c4..ac26682 100644 --- a/source/data/lang/en_KE.txt +++ b/source/data/lang/en_KE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KE{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_KI.txt b/source/data/lang/en_KI.txt index 5154257..6c4a2fb 100644 --- a/source/data/lang/en_KI.txt +++ b/source/data/lang/en_KI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KI{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_KN.txt b/source/data/lang/en_KN.txt index 3812274..fb3f8ec 100644 --- a/source/data/lang/en_KN.txt +++ b/source/data/lang/en_KN.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KN{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_KY.txt b/source/data/lang/en_KY.txt index d78d462..be44abe 100644 --- a/source/data/lang/en_KY.txt +++ b/source/data/lang/en_KY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KY{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_LC.txt b/source/data/lang/en_LC.txt index ff73931..5dc4de3 100644 --- a/source/data/lang/en_LC.txt +++ b/source/data/lang/en_LC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_LC{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_LR.txt b/source/data/lang/en_LR.txt index 6ad4654..0fb3e94 100644 --- a/source/data/lang/en_LR.txt +++ b/source/data/lang/en_LR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_LR{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_LS.txt b/source/data/lang/en_LS.txt index 21b3f4c..6e5b29f 100644 --- a/source/data/lang/en_LS.txt +++ b/source/data/lang/en_LS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_LS{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_MG.txt b/source/data/lang/en_MG.txt index 28412fc..b045963 100644 --- a/source/data/lang/en_MG.txt +++ b/source/data/lang/en_MG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_MO.txt b/source/data/lang/en_MO.txt index af3fa89..22f53f7 100644 --- a/source/data/lang/en_MO.txt +++ b/source/data/lang/en_MO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MO{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_MS.txt b/source/data/lang/en_MS.txt index c74d938..1730089 100644 --- a/source/data/lang/en_MS.txt +++ b/source/data/lang/en_MS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MS{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_MT.txt b/source/data/lang/en_MT.txt index 3a56120..2d36498 100644 --- a/source/data/lang/en_MT.txt +++ b/source/data/lang/en_MT.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MT{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_MU.txt b/source/data/lang/en_MU.txt index 020e010..f36fea5 100644 --- a/source/data/lang/en_MU.txt +++ b/source/data/lang/en_MU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MU{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_MW.txt b/source/data/lang/en_MW.txt index 6dcad2e..f301bed 100644 --- a/source/data/lang/en_MW.txt +++ b/source/data/lang/en_MW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MW{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/lang/en_MY.txt b/source/data/lang/en_MY.txt index cdc4e22..8f49ecc 100644 --- a/source/data/lang/en_MY.txt +++ b/source/data/lang/en_MY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MY{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_NA.txt b/source/data/lang/en_NA.txt index 7df2865..6e0e148 100644 --- a/source/data/lang/en_NA.txt +++ b/source/data/lang/en_NA.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NA{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_NF.txt b/source/data/lang/en_NF.txt index e4a866f..7442ce7 100644 --- a/source/data/lang/en_NF.txt +++ b/source/data/lang/en_NF.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NF{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_NG.txt b/source/data/lang/en_NG.txt index 77b61a7..1bd97f9 100644 --- a/source/data/lang/en_NG.txt +++ b/source/data/lang/en_NG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NG{ %%Parent{"en_001"} - Version{"2.1.48.22"} + Version{"36"} } diff --git a/source/data/lang/en_NL.txt b/source/data/lang/en_NL.txt index d804c44..d1a3ce6 100644 --- a/source/data/lang/en_NL.txt +++ b/source/data/lang/en_NL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NL{ %%Parent{"en_150"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_NR.txt b/source/data/lang/en_NR.txt index 11f0346..4f75cd9 100644 --- a/source/data/lang/en_NR.txt +++ b/source/data/lang/en_NR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NR{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_NU.txt b/source/data/lang/en_NU.txt index 0601e0c..3386104 100644 --- a/source/data/lang/en_NU.txt +++ b/source/data/lang/en_NU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NU{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_NZ.txt b/source/data/lang/en_NZ.txt index e5cd14d..3363fcb 100644 --- a/source/data/lang/en_NZ.txt +++ b/source/data/lang/en_NZ.txt @@ -5,5 +5,5 @@ en_NZ{ Languages{ mi{"Māori"} } - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/lang/en_PG.txt b/source/data/lang/en_PG.txt index d23f260..e79232a 100644 --- a/source/data/lang/en_PG.txt +++ b/source/data/lang/en_PG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_PH.txt b/source/data/lang/en_PH.txt index 2f92678..ee1ba4a 100644 --- a/source/data/lang/en_PH.txt +++ b/source/data/lang/en_PH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PH{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_PK.txt b/source/data/lang/en_PK.txt index 5a18ead..e123870 100644 --- a/source/data/lang/en_PK.txt +++ b/source/data/lang/en_PK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PK{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_PN.txt b/source/data/lang/en_PN.txt index 63c9656..dcd8c7a 100644 --- a/source/data/lang/en_PN.txt +++ b/source/data/lang/en_PN.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PN{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_PW.txt b/source/data/lang/en_PW.txt index 525f171..ee4cfe8 100644 --- a/source/data/lang/en_PW.txt +++ b/source/data/lang/en_PW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PW{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_RW.txt b/source/data/lang/en_RW.txt index 16bff2e..bd8ed84 100644 --- a/source/data/lang/en_RW.txt +++ b/source/data/lang/en_RW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_RW{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_SB.txt b/source/data/lang/en_SB.txt index b6539ce..faca3e1 100644 --- a/source/data/lang/en_SB.txt +++ b/source/data/lang/en_SB.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SB{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_SC.txt b/source/data/lang/en_SC.txt index c81672e..4c8930d 100644 --- a/source/data/lang/en_SC.txt +++ b/source/data/lang/en_SC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SC{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_SD.txt b/source/data/lang/en_SD.txt index e3ff67d..c887a86 100644 --- a/source/data/lang/en_SD.txt +++ b/source/data/lang/en_SD.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SD{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_SE.txt b/source/data/lang/en_SE.txt index c2ac2a0..0c9af16 100644 --- a/source/data/lang/en_SE.txt +++ b/source/data/lang/en_SE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SE{ %%Parent{"en_150"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_SG.txt b/source/data/lang/en_SG.txt index 27428d0..26803b3 100644 --- a/source/data/lang/en_SG.txt +++ b/source/data/lang/en_SG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_SH.txt b/source/data/lang/en_SH.txt index ec801da..a51cad9 100644 --- a/source/data/lang/en_SH.txt +++ b/source/data/lang/en_SH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SH{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_SI.txt b/source/data/lang/en_SI.txt index 385b87b..aa1b540 100644 --- a/source/data/lang/en_SI.txt +++ b/source/data/lang/en_SI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SI{ %%Parent{"en_150"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_SL.txt b/source/data/lang/en_SL.txt index 78a7f22..6764d97 100644 --- a/source/data/lang/en_SL.txt +++ b/source/data/lang/en_SL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SL{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_SS.txt b/source/data/lang/en_SS.txt index af2c30c..cb55162 100644 --- a/source/data/lang/en_SS.txt +++ b/source/data/lang/en_SS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SS{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_SX.txt b/source/data/lang/en_SX.txt index aef37fe..7b0bd2a 100644 --- a/source/data/lang/en_SX.txt +++ b/source/data/lang/en_SX.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SX{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_SZ.txt b/source/data/lang/en_SZ.txt index e227a3e..9734bed 100644 --- a/source/data/lang/en_SZ.txt +++ b/source/data/lang/en_SZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SZ{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_TC.txt b/source/data/lang/en_TC.txt index 9d08e3a..96ba2bd 100644 --- a/source/data/lang/en_TC.txt +++ b/source/data/lang/en_TC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TC{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_TK.txt b/source/data/lang/en_TK.txt index 0d507ae..828cda3 100644 --- a/source/data/lang/en_TK.txt +++ b/source/data/lang/en_TK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TK{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_TO.txt b/source/data/lang/en_TO.txt index a60d593..24b603f 100644 --- a/source/data/lang/en_TO.txt +++ b/source/data/lang/en_TO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TO{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_TT.txt b/source/data/lang/en_TT.txt index 06d76b3..17a4163 100644 --- a/source/data/lang/en_TT.txt +++ b/source/data/lang/en_TT.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TT{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_TV.txt b/source/data/lang/en_TV.txt index 7397675..898ad44 100644 --- a/source/data/lang/en_TV.txt +++ b/source/data/lang/en_TV.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TV{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_TZ.txt b/source/data/lang/en_TZ.txt index 5775c53..56e6a79 100644 --- a/source/data/lang/en_TZ.txt +++ b/source/data/lang/en_TZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TZ{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_UG.txt b/source/data/lang/en_UG.txt index 302faff..02c501e 100644 --- a/source/data/lang/en_UG.txt +++ b/source/data/lang/en_UG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_UG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_VC.txt b/source/data/lang/en_VC.txt index 482ec20..bf44e8e 100644 --- a/source/data/lang/en_VC.txt +++ b/source/data/lang/en_VC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_VC{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_VG.txt b/source/data/lang/en_VG.txt index 8e90bec..6d0d305 100644 --- a/source/data/lang/en_VG.txt +++ b/source/data/lang/en_VG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_VG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_VU.txt b/source/data/lang/en_VU.txt index 069081e..f76028d 100644 --- a/source/data/lang/en_VU.txt +++ b/source/data/lang/en_VU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_VU{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_WS.txt b/source/data/lang/en_WS.txt index 07f56ef..eaa44ad 100644 --- a/source/data/lang/en_WS.txt +++ b/source/data/lang/en_WS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_WS{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_ZA.txt b/source/data/lang/en_ZA.txt index d91f0dc..4119726 100644 --- a/source/data/lang/en_ZA.txt +++ b/source/data/lang/en_ZA.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ZA{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_ZM.txt b/source/data/lang/en_ZM.txt index 106aa70..7be977f 100644 --- a/source/data/lang/en_ZM.txt +++ b/source/data/lang/en_ZM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ZM{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/en_ZW.txt b/source/data/lang/en_ZW.txt index 1ff6458..ff7afc9 100644 --- a/source/data/lang/en_ZW.txt +++ b/source/data/lang/en_ZW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ZW{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/eo.txt b/source/data/lang/eo.txt index d45a042..2de2d93 100644 --- a/source/data/lang/eo.txt +++ b/source/data/lang/eo.txt @@ -156,5 +156,5 @@ eo{ zu{"zulua"} zxx{"nelingvaĵo"} } - Version{"2.1.49.33"} + Version{"36"} } diff --git a/source/data/lang/es.txt b/source/data/lang/es.txt index ed27023..18ad883 100644 --- a/source/data/lang/es.txt +++ b/source/data/lang/es.txt @@ -4,22 +4,22 @@ es{ Keys{ calendar{"calendario"} cf{"formato de moneda"} - colAlternate{"Orden ignorando símbolos"} - colBackwards{"Orden de acentos con inversión"} - colCaseFirst{"Orden de mayúsculas/minúsculas"} - colCaseLevel{"Orden con distinción entre mayúsculas y minúsculas"} - colNormalization{"Orden con normalización"} - colNumeric{"Orden numérico"} - colStrength{"Intensidad de orden"} + colAlternate{"orden ignorando símbolos"} + colBackwards{"orden de acentos con inversión"} + colCaseFirst{"orden de mayúsculas/minúsculas"} + colCaseLevel{"orden con distinción entre mayúsculas y minúsculas"} + colNormalization{"orden con normalización"} + colNumeric{"orden numérico"} + colStrength{"intensidad de orden"} collation{"orden"} currency{"moneda"} hc{"ciclo horario (12 o 24 horas)"} lb{"estilo de salto de línea"} ms{"sistema de medición"} numbers{"números"} - timezone{"Zona horaria"} - va{"Variante local"} - x{"Uso privado"} + timezone{"zona horaria"} + va{"variante local"} + x{"uso privado"} } Languages{ aa{"afar"} @@ -92,6 +92,7 @@ es{ car{"caribe"} cay{"cayuga"} cch{"atsam"} + ccp{"chakma"} ce{"checheno"} ceb{"cebuano"} cgg{"chiga"} @@ -388,7 +389,7 @@ es{ os{"osético"} osa{"osage"} ota{"turco otomano"} - pa{"panyabí"} + pa{"punyabí"} pag{"pangasinán"} pal{"pahlavi"} pam{"pampanga"} @@ -555,10 +556,16 @@ es{ zxx{"sin contenido lingüístico"} zza{"zazaki"} } + Languages%long{ + zh_Hans{"chino mandarín simplificado"} + zh_Hant{"chino mandarín tradicional"} + } + Languages%menu{ + yue{"chino cantonés"} + zh{"chino mandarín"} + } Languages%short{ az{"azerí"} - en_GB{"inglés (RU)"} - en_US{"inglés (EE. UU.)"} } Languages%variant{ ps{"pastú"} @@ -851,7 +858,7 @@ es{ VALENCIA{"Valenciano"} WADEGILE{"Romanización Wade-Giles"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — Todo"} category-list{"{0}: {1}"} diff --git a/source/data/lang/es_419.txt b/source/data/lang/es_419.txt index dfc3574..63c05eb 100644 --- a/source/data/lang/es_419.txt +++ b/source/data/lang/es_419.txt @@ -2,22 +2,28 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_419{ Keys{ - colAlternate{"orden ignorando símbolos"} - colBackwards{"orden de acentos con inversión"} - colCaseFirst{"orden de mayúsculas/minúsculas"} - colCaseLevel{"orden con distinción entre mayúsculas y minúsculas"} - lb{"salto de línea"} - ms{"sm"} + colNormalization{"orden normalizado"} } Languages{ ace{"achenés"} ady{"adigeo"} alt{"altái del sur"} + ar_001{"árabe estándar moderno"} arp{"arapajó"} ars{"árabe de Néyed"} bla{"siksiká"} - ccp{"chakma"} + de_AT{"alemán austríaco"} + de_CH{"alto alemán suizo"} + en_AU{"inglés australiano"} + en_CA{"inglés canadiense"} + en_GB{"inglés británico"} + en_US{"inglés estadounidense"} + es_419{"español latinoamericano"} + es_ES{"español de España"} + es_MX{"español de México"} eu{"vasco"} + fr_CA{"francés canadiense"} + fr_CH{"francés suizo"} goh{"alemán de la alta edad antigua"} grc{"griego clásico"} gu{"gujarati"} @@ -25,11 +31,15 @@ es_419{ kbd{"cabardiano"} krc{"karachái-bálkaro"} lo{"laosiano"} - luo{"luo"} + nl_BE{"flamenco"} nr{"ndebele del sur"} nso{"sesotho del norte"} + pa{"panyabí"} prg{"prusiano antiguo"} + pt_BR{"portugués de Brasil"} + pt_PT{"portugués de Portugal"} rm{"retorrománico"} + ro_MD{"moldavo"} shu{"árabe (Chad)"} sma{"sami del sur"} st{"sesotho del sur"} @@ -38,15 +48,16 @@ es_419{ syr{"siríaco"} tet{"tetun"} tyv{"tuvano"} - tzm{"tamazight del Marruecos Central"} - vai{"vai"} wal{"walamo"} wuu{"wu"} xal{"calmuco"} + zh_Hans{"chino simplificado"} + zh_Hant{"chino tradicional"} zun{"zuni"} } - Languages%short{ - en_GB{"inglés (R.U.)"} + Languages%long{ + zh_Hans{"chino mandarín simplificado"} + zh_Hant{"chino mandarín tradicional"} } Languages%variant{ ps{"pashtún"} @@ -85,22 +96,13 @@ es_419{ eor{"reglas de orden europeas"} phonebook{"orden de agenda telefónica"} } - lb{ - loose{"salto de línea flexible"} - strict{"salto de línea estricto"} - } - ms{ - metric{"Sistema Métrico de Unidades"} - uksystem{"sistema inglés"} - ussystem{"Sistema Anglosajón de Unidades"} - } numbers{ tirh{"dígitos en tirh"} traditional{"números traducionales"} wara{"dígitos en Warang Citi"} } } - Version{"2.1.47.86"} + Version{"36"} characterLabelPattern{ enclosed{"{0} — Adjunto"} extended{"{0} — Extendido"} diff --git a/source/data/lang/es_AR.txt b/source/data/lang/es_AR.txt index 07f9cf1..3d23b80 100644 --- a/source/data/lang/es_AR.txt +++ b/source/data/lang/es_AR.txt @@ -18,5 +18,5 @@ es_AR{ wo{"wolof"} zgh{"tamazight marroquí estándar"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_BO.txt b/source/data/lang/es_BO.txt index 6f29bc0..a9f50fa 100644 --- a/source/data/lang/es_BO.txt +++ b/source/data/lang/es_BO.txt @@ -18,5 +18,5 @@ es_BO{ wo{"wolof"} zgh{"tamazight marroquí estándar"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_BR.txt b/source/data/lang/es_BR.txt index f992acf..8a9f8fd 100644 --- a/source/data/lang/es_BR.txt +++ b/source/data/lang/es_BR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_BR{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_BZ.txt b/source/data/lang/es_BZ.txt index f18a98f..26aab70 100644 --- a/source/data/lang/es_BZ.txt +++ b/source/data/lang/es_BZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_BZ{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_CL.txt b/source/data/lang/es_CL.txt index 7d9d72f..4bf8849 100644 --- a/source/data/lang/es_CL.txt +++ b/source/data/lang/es_CL.txt @@ -23,5 +23,5 @@ es_CL{ phonebook{"orden de directorio telefónico"} } } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_CO.txt b/source/data/lang/es_CO.txt index 154d01c..e1c1b03 100644 --- a/source/data/lang/es_CO.txt +++ b/source/data/lang/es_CO.txt @@ -18,5 +18,5 @@ es_CO{ wo{"wolof"} zgh{"tamazight marroquí estándar"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_CR.txt b/source/data/lang/es_CR.txt index b8dea61..3671d24 100644 --- a/source/data/lang/es_CR.txt +++ b/source/data/lang/es_CR.txt @@ -18,5 +18,5 @@ es_CR{ wo{"wolof"} zgh{"tamazight marroquí estándar"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_CU.txt b/source/data/lang/es_CU.txt index 2224182..63dcde8 100644 --- a/source/data/lang/es_CU.txt +++ b/source/data/lang/es_CU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_CU{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_DO.txt b/source/data/lang/es_DO.txt index e06044d..fa156a6 100644 --- a/source/data/lang/es_DO.txt +++ b/source/data/lang/es_DO.txt @@ -18,5 +18,5 @@ es_DO{ wo{"wolof"} zgh{"tamazight marroquí estándar"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_EC.txt b/source/data/lang/es_EC.txt index 742096c..2932d8e 100644 --- a/source/data/lang/es_EC.txt +++ b/source/data/lang/es_EC.txt @@ -18,5 +18,5 @@ es_EC{ wo{"wolof"} zgh{"tamazight marroquí estándar"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_GT.txt b/source/data/lang/es_GT.txt index 20c337a..072f23a 100644 --- a/source/data/lang/es_GT.txt +++ b/source/data/lang/es_GT.txt @@ -18,5 +18,5 @@ es_GT{ wo{"wolof"} zgh{"tamazight marroquí estándar"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_HN.txt b/source/data/lang/es_HN.txt index 3575940..1b9397d 100644 --- a/source/data/lang/es_HN.txt +++ b/source/data/lang/es_HN.txt @@ -18,5 +18,5 @@ es_HN{ wo{"wolof"} zgh{"tamazight marroquí estándar"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_MX.txt b/source/data/lang/es_MX.txt index 07e3407..9f2d149 100644 --- a/source/data/lang/es_MX.txt +++ b/source/data/lang/es_MX.txt @@ -2,13 +2,9 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_MX{ %%Parent{"es_419"} - Keys{ - calendar{"Calendario"} - collation{"Orden"} - currency{"Moneda"} - } Languages{ ace{"acehnés"} + ar_001{"árabe estándar moderno"} arp{"arapaho"} bas{"basa"} bax{"bamun"} @@ -34,24 +30,28 @@ es_MX{ lus{"lushai"} mga{"irlandés medieval"} nan{"min nan (Chino)"} + nl_BE{"flamenco"} nr{"ndebele meridional"} nso{"sotho septentrional"} pa{"punyabí"} pcm{"pcm"} - rn{"kiroundi"} shu{"árabe chadiano"} ss{"siswati"} - st{"sesotho meridional"} sw{"suajili"} sw_CD{"suajili del Congo"} syr{"siriaco"} tet{"tetún"} tn{"setswana"} tyv{"tuviniano"} - wo{"wolof"} wuu{"wuu"} xal{"kalmyk"} zgh{"tamazight marroquí estándar"} + zh_Hans{"chino simplificado"} + zh_Hant{"chino tradicional"} + } + Languages%long{ + zh_Hans{"chino mandarín simplificado"} + zh_Hant{"chino mandarín tradicional"} } Languages%short{ en_GB{"inglés (R. U.)"} @@ -62,62 +62,22 @@ es_MX{ Scripts{ Hanb{"hanb"} Mlym{"malayálam"} - Telu{"telegu"} } Types{ calendar{ - gregorian{"Calendario gregoriano"} roc{"calendario minguo"} } collation{ ducet{"orden de clasificación de Unicode predeterminado"} - standard{"Orden estándar"} - traditional{"Orden tradicional"} - } - d0{ - fwidth{"Ancho completo"} - hwidth{"Ancho medio"} } lb{ normal{"salto de línea normal"} } - m0{ - bgn{"BGN"} - ungegn{"UNGEGN"} - } - ms{ - metric{"sistema métrico"} - uksystem{"sistema imperial"} - ussystem{"sistema estadounidense"} - } numbers{ - arab{"Dígitos en arábigo-índico"} - arabext{"Dígitos en árabigo-índico extendido"} - armn{"Números en armenio"} - armnlow{"Números en armenio en minúscula"} - ethi{"Números en etíope"} - geor{"Números en georgiano"} - grek{"Números en griego"} - greklow{"Números en griego en minúscula"} gujr{"dígitos en gujarati"} - guru{"Dígitos en gurmuji"} - hanidec{"Numeros decimales en chino"} - hans{"Números en chino simplificado"} - hansfin{"Números financieros en chino simplificado"} - hant{"Números en chino tradicional"} - hantfin{"Números financieros en chino tradicional"} - hebr{"Números en hebreo"} - jpanfin{"Números financieros en japonés"} - knda{"números en kannada"} - laoo{"Dígitos en lao"} - mlym{"Dígitos en malabar"} - taml{"Números en tamil"} - tamldec{"Dígitos en tamil"} - telu{"Dígitos en telugú"} - tibt{"Dígitos en tibetano"} } } - Version{"2.1.47.96"} + Version{"36"} characterLabelPattern{ historic{"{0} — Históricos"} miscellaneous{"{0} — Varios"} diff --git a/source/data/lang/es_NI.txt b/source/data/lang/es_NI.txt index 32a56bb..cd1ebfb 100644 --- a/source/data/lang/es_NI.txt +++ b/source/data/lang/es_NI.txt @@ -18,5 +18,5 @@ es_NI{ wo{"wolof"} zgh{"tamazight marroquí estándar"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_PA.txt b/source/data/lang/es_PA.txt index fb5f3d8..e64513c 100644 --- a/source/data/lang/es_PA.txt +++ b/source/data/lang/es_PA.txt @@ -18,5 +18,5 @@ es_PA{ wo{"wolof"} zgh{"tamazight marroquí estándar"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_PE.txt b/source/data/lang/es_PE.txt index d123c33..b9eafce 100644 --- a/source/data/lang/es_PE.txt +++ b/source/data/lang/es_PE.txt @@ -18,5 +18,5 @@ es_PE{ wo{"wolof"} zgh{"tamazight marroquí estándar"} } - Version{"2.1.47.83"} + Version{"36"} } diff --git a/source/data/lang/es_PR.txt b/source/data/lang/es_PR.txt index d297e50..6bc9095 100644 --- a/source/data/lang/es_PR.txt +++ b/source/data/lang/es_PR.txt @@ -11,5 +11,5 @@ es_PR{ ss{"siswati"} wo{"wolof"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_PY.txt b/source/data/lang/es_PY.txt index c1cffbb..fc78378 100644 --- a/source/data/lang/es_PY.txt +++ b/source/data/lang/es_PY.txt @@ -18,5 +18,5 @@ es_PY{ wo{"wolof"} zgh{"tamazight marroquí estándar"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_SV.txt b/source/data/lang/es_SV.txt index 2ec15fc..a952c15 100644 --- a/source/data/lang/es_SV.txt +++ b/source/data/lang/es_SV.txt @@ -11,5 +11,5 @@ es_SV{ ss{"siswati"} wo{"wolof"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_US.txt b/source/data/lang/es_US.txt index 94b7c27..b358d14 100644 --- a/source/data/lang/es_US.txt +++ b/source/data/lang/es_US.txt @@ -20,14 +20,17 @@ es_US{ grc{"griego antiguo"} gu{"gurayatí"} hak{"hak"} + hil{"hiligainón"} hsn{"xiang (China)"} ht{"criollo haitiano"} + inh{"ingusetio"} kbd{"kabardiano"} krc{"karachay-balkar"} lo{"lao"} lus{"lushai"} mga{"irlandés medieval"} nan{"nan"} + nl_BE{"flamenco"} nr{"ndebele meridional"} nso{"sotho septentrional"} pcm{"pcm"} @@ -42,35 +45,34 @@ es_US{ tet{"tetún"} tn{"setchwana"} tyv{"tuviniano"} - tzm{"tamazight del Atlas Central"} wo{"wolof"} wuu{"wuu"} xal{"kalmyk"} - } - Languages%short{ - en_GB{"inglés (RU)"} + zh_Hans{"chino simplificado"} + zh_Hant{"chino tradicional"} } Scripts{ Hanb{"hanb"} Mlym{"malayálam"} + Telu{"telegu"} } Types{ + calendar{ + roc{"calendario minguo"} + } collation{ ducet{"orden de clasificación de Unicode predeterminado"} } lb{ normal{"salto de línea normal"} } - ms{ - uksystem{"sistema imperial"} - } numbers{ gujr{"dígitos en gujarati"} knda{"números en kannada"} laoo{"números en lao"} } } - Version{"2.1.47.86"} + Version{"36"} characterLabelPattern{ historic{"{0} — Históricos"} miscellaneous{"{0} — Varios"} diff --git a/source/data/lang/es_UY.txt b/source/data/lang/es_UY.txt index 4e6692c..7b0799c 100644 --- a/source/data/lang/es_UY.txt +++ b/source/data/lang/es_UY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_UY{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/es_VE.txt b/source/data/lang/es_VE.txt index 3038758..7acee4e 100644 --- a/source/data/lang/es_VE.txt +++ b/source/data/lang/es_VE.txt @@ -18,5 +18,5 @@ es_VE{ wo{"wolof"} zgh{"tamazight marroquí estándar"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/et.txt b/source/data/lang/et.txt index 1f5049c..cea6c0b 100644 --- a/source/data/lang/et.txt +++ b/source/data/lang/et.txt @@ -107,7 +107,7 @@ et{ car{"kariibi"} cay{"kajuka"} cch{"aitšami"} - ccp{"Chakma"} + ccp{"tšaakma"} ce{"tšetšeeni"} ceb{"sebu"} cgg{"tšiga"} @@ -251,7 +251,7 @@ et{ id{"indoneesia"} ie{"interlingue"} ig{"ibo"} - ii{"Sichuani jii"} + ii{"nuosu"} ik{"injupiaki"} ilo{"iloko"} inh{"inguši"} @@ -340,7 +340,7 @@ et{ lrc{"põhjaluri"} lt{"leedu"} ltg{"latgali"} - lu{"luba"} + lu{"Katanga luba"} lua{"lulua"} lui{"luisenjo"} lun{"lunda"} @@ -423,7 +423,7 @@ et{ nwc{"vananevari"} ny{"njandža"} nym{"njamvesi"} - nyn{"nkole"} + nyn{"njankole"} nyo{"njoro"} nzi{"nzima"} oc{"oksitaani"} @@ -599,7 +599,7 @@ et{ vro{"võru"} vun{"vundžo"} wa{"vallooni"} - wae{"walseri"} + wae{"valsi"} wal{"volaita"} war{"varai"} was{"vašo"} @@ -632,6 +632,14 @@ et{ zxx{"mittekeeleline"} zza{"zaza"} } + Languages%long{ + zh_Hans{"lihtsustatud mandariinihiina"} + zh_Hant{"traditsiooniline mandariinihiina"} + } + Languages%menu{ + yue{"kantoni hiina"} + zh{"mandariinihiina"} + } Languages%short{ az{"aseri"} en_GB{"Briti inglise"} @@ -1039,7 +1047,7 @@ et{ VALENCIA{"valentsia"} WADEGILE{"Wade’i-Gilesi latinisatsioon"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} – kõik"} category-list{"{0}: {1}"} diff --git a/source/data/lang/eu.txt b/source/data/lang/eu.txt index d5bc109..4bdff52 100644 --- a/source/data/lang/eu.txt +++ b/source/data/lang/eu.txt @@ -42,7 +42,7 @@ eu{ arn{"maputxe"} arp{"arapaho"} as{"assamera"} - asa{"asua"} + asa{"asu"} ast{"asturiera"} av{"avarera"} awa{"awadhiera"} @@ -68,6 +68,7 @@ eu{ bug{"buginera"} byn{"bilena"} ca{"katalan"} + ccp{"chakmera"} ce{"txetxenera"} ceb{"cebuera"} cgg{"chigera"} @@ -77,7 +78,7 @@ eu{ cho{"choctaw"} chr{"txerokiera"} chy{"cheyennera"} - ckb{"sorania"} + ckb{"erdialdeko kurduera"} co{"korsikera"} crs{"Seychelleetako kreolera"} cs{"txekiera"} @@ -129,7 +130,7 @@ eu{ fr_CH{"Suitzako frantses"} fur{"friuliera"} fy{"frisiera"} - ga{"gaeliko"} + ga{"irlandera"} gaa{"ga"} gag{"gagauzera"} gd{"Eskoziako gaeliko"} @@ -172,7 +173,7 @@ eu{ ja{"japoniera"} jbo{"lojbanera"} jgo{"ngomba"} - jmc{"machamera"} + jmc{"machame"} jv{"javera"} ka{"georgiera"} kab{"kabilera"} @@ -181,16 +182,16 @@ eu{ kam{"kambera"} kbd{"kabardiera"} kcg{"kataba"} - kde{"makondera"} + kde{"makondeera"} kea{"Cabo Verdeko kreolera"} kfo{"koroa"} kg{"kikongoa"} kha{"kashia"} - khq{"koyra chiiniera"} + khq{"koyra chiini"} ki{"kikuyuera"} kj{"kuanyama"} kk{"kazakhera"} - kkj{"kakoa"} + kkj{"kako"} kl{"groenlandiera"} kln{"kalenjinera"} km{"khemerera"} @@ -226,7 +227,7 @@ eu{ loz{"loziera"} lrc{"iparraldeko lurera"} lt{"lituaniera"} - lu{"luba-katangera"} + lu{"Katangako lubera"} lua{"txilubera"} lun{"lundera"} luo{"luoera"} @@ -244,7 +245,7 @@ eu{ mfe{"Mauritaniako kreolera"} mg{"malgaxe"} mgh{"makhuwa-meettoera"} - mgo{"metera"} + mgo{"metaʼera"} mh{"marshallera"} mi{"maoriera"} mic{"mikmakera"} @@ -270,6 +271,7 @@ eu{ naq{"namera"} nb{"bokmål (norvegiera)"} nd{"iparraldeko ndebeleera"} + nds{"behe-aleman"} nds_NL{"behe-saxoiera"} ne{"nepalera"} new{"newarera"} @@ -314,12 +316,12 @@ eu{ rn{"rundiera"} ro{"errumaniera"} ro_MD{"moldaviera"} - rof{"romboera"} + rof{"rombo"} root{"erroa"} ru{"errusiera"} rup{"aromaniera"} rw{"kinyaruanda"} - rwk{"rwaera"} + rwk{"rwera"} sa{"sanskrito"} sad{"sandaweera"} sah{"sakhera"} @@ -333,10 +335,10 @@ eu{ sd{"sindhi"} se{"iparraldeko samiera"} seh{"senera"} - ses{"koyraboro sennia"} + ses{"koyraboro senni"} sg{"sango"} sh{"serbokroaziera"} - shi{"tachelhita"} + shi{"tachelhit"} shn{"shanera"} si{"sinhala"} sk{"eslovakiera"} @@ -361,7 +363,7 @@ eu{ sw{"swahilia"} sw_CD{"Kongoko swahilia"} swb{"komoreera"} - syr{"siriera"} + syr{"asiriera"} ta{"tamilera"} te{"telugu"} tem{"temnea"} @@ -408,7 +410,7 @@ eu{ xal{"kalmykera"} xh{"xhosera"} xog{"sogera"} - yav{"jangbenera"} + yav{"yangbenera"} ybb{"yemba"} yi{"yiddish"} yo{"jorubera"} @@ -422,6 +424,14 @@ eu{ zxx{"ez dago eduki linguistikorik"} zza{"zazera"} } + Languages%long{ + zh_Hans{"mandarin sinplifikatu"} + zh_Hant{"mandarin tradizional"} + } + Languages%menu{ + yue{"Kantongo txinera"} + zh{"mandarin"} + } Languages%short{ az{"azerbaijanera"} en_GB{"Erresuma Batuko ingeles"} @@ -598,7 +608,7 @@ eu{ hebr{"Zenbaki hebrearrak"} jpan{"Zenbaki japoniarrak"} jpanfin{"Finantzetarako zenbaki japoniarrak"} - khmr{"Digitu khmerarrak"} + khmr{"Digitu khemerarrak"} knda{"Digitu kannadarrak"} laoo{"Digitu laostarrak"} latn{"Digitu mendebaldarrak"} @@ -625,7 +635,7 @@ eu{ SCOTLAND{"ESKOZIAR INGELESA"} VALENCIA{"VALENTZIERA"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — Guztiak"} category-list{"{0}: {1}"} diff --git a/source/data/lang/ewo.txt b/source/data/lang/ewo.txt index e7b6e38..95c1f57 100644 --- a/source/data/lang/ewo.txt +++ b/source/data/lang/ewo.txt @@ -48,5 +48,5 @@ ewo{ zh{"Ǹkɔ́bɔ tsainís"} zu{"ǹkɔ́bɔ zulú"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/fa.txt b/source/data/lang/fa.txt index df09309..caee676 100644 --- a/source/data/lang/fa.txt +++ b/source/data/lang/fa.txt @@ -14,7 +14,7 @@ fa{ collation{"ترتیب"} currency{"واحد پول"} hc{"دور ساعت (۱۲ در مقابل ۲۴)"} - lb{"شیوهٔ اعمال سرخط"} + lb{"شیوهٔ سطرشکنی"} ms{"دستگاه اندازه‌گیری"} numbers{"اعداد"} timezone{"منطقهٔ زمانی"} @@ -363,7 +363,7 @@ fa{ nl_BE{"فلمنگی"} nmg{"کوازیو"} nn{"نروژی نی‌نُشک"} - nnh{"انگیمبونی"} + nnh{"نیامبون"} no{"نروژی"} nog{"نغایی"} non{"نرس باستان"} @@ -551,6 +551,14 @@ fa{ zxx{"بدون محتوای زبانی"} zza{"زازایی"} } + Languages%long{ + zh_Hans{"چینی ماندارین ساده‌شده"} + zh_Hant{"چینی ماندارین سنتی"} + } + Languages%menu{ + yue{"چینی کانتونی"} + zh{"چینی، ماندارین"} + } Languages%secondary{ tr{"ترکی"} } @@ -598,7 +606,7 @@ fa{ Grek{"یونانی"} Gujr{"گجراتی"} Guru{"گورومخی"} - Hanb{"هانبی"} + Hanb{"هان با بوموپوفو"} Hang{"هانگول"} Hani{"هان"} Hano{"هانونویی"} @@ -770,6 +778,7 @@ fa{ stroke{"ترتیب حرکتی"} traditional{"ترتیب سنتی"} unihan{"ترتیب رادیکالی-حرکتی"} + zhuyin{"ترتیب ژویین"} } d0{ fwidth{"تمام‌عرض"} @@ -783,9 +792,9 @@ fa{ h24{"سیستم ۲۴ ساعته (۱ تا ۲۴)"} } lb{ - loose{"شیوهٔ ضعیف اعمال سرخط"} - normal{"شیوهٔ عادی اعمال سرخط"} - strict{"شیوهٔ قوی اعمال سرخط"} + loose{"شیوهٔ سطرشکنی سهل‌گیرانه"} + normal{"شیوهٔ سطرشکنی عادی"} + strict{"شیوهٔ سطرشکنی سخت‌گیرانه"} } m0{ bgn{"ترانویسی انجمن نام‌های جغرافیایی ایالات متحده"} @@ -803,6 +812,7 @@ fa{ armnlow{"اعداد ارمنی با حروف کوچک"} bali{"ارقام بالیایی"} beng{"ارقام بنگالی"} + brah{"ارقام برهمایی"} cyrl{"ارقام سیریلیک"} deva{"ارقام دوناگری"} ethi{"اعداد اتیوپیایی"} @@ -826,6 +836,9 @@ fa{ knda{"ارقام کاناده‌ای"} laoo{"ارقام لائوسی"} latn{"ارقام غربی"} + mathbold{"ارقام ریاضی سیاه"} + mathsanb{"ارقام ریاضی سیاه بی‌سریف"} + mathsans{"ارقام ریاضی بی‌سریف"} mlym{"ارقام مالایالامی"} mong{"ارقام مغولی"} mymr{"ارقام میانماری"} @@ -848,15 +861,18 @@ fa{ 1996{"رسم‌الخط آلمانی ۱۹۹۶ میلادی"} AREVELA{"ارمنی شرقی"} AREVMDA{"ارمنی غربی"} + COLB1945{"کنوانسیون رسم‌الخط پرتغال و برزیل در ۱۹۴۵"} FONIPA{"فونتیک IPA"} FONUPA{"فونتیک UPA"} + KSCOR{"رسم‌الخط استاندارد"} + OXENDICT{"املای فرهنگ انگلیسی آکسفورد"} POSIX{"کامپیوتری"} REVISED{"رسم‌الخط تجدیدنظرشده"} ROZAJ{"روژان"} SAAHO{"ساهویی"} SCOTLAND{"انگلیسی معیار اسکاتلند"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — همه"} category-list{"{0}: {1}"} diff --git a/source/data/lang/fa_AF.txt b/source/data/lang/fa_AF.txt index bf994a3..a4b92b0 100644 --- a/source/data/lang/fa_AF.txt +++ b/source/data/lang/fa_AF.txt @@ -46,5 +46,5 @@ fa_AF{ Scripts{ Mong{"مغلی"} } - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/lang/ff.txt b/source/data/lang/ff.txt index e770e60..6609189 100644 --- a/source/data/lang/ff.txt +++ b/source/data/lang/ff.txt @@ -48,5 +48,5 @@ ff{ zh{"Sinuwaare"} zu{"Suluŋkoore"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/ff_Latn.txt b/source/data/lang/ff_Latn.txt index b0c2bc1..055ec0f 100644 --- a/source/data/lang/ff_Latn.txt +++ b/source/data/lang/ff_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/fi.txt b/source/data/lang/fi.txt index 55cfd8b..e05af95 100644 --- a/source/data/lang/fi.txt +++ b/source/data/lang/fi.txt @@ -4,11 +4,11 @@ fi{ Keys{ calendar{"kalenteri"} cf{"valuuttojen esitysmuoto"} - colAlternate{"symbolien lajittelu"} + colAlternate{"symbolit ohittava lajittelu"} colBackwards{"painomerkkien lajittelu"} colCaseFirst{"isojen ja pienten kirjainten järjestys"} colCaseLevel{"aakkoslajien lajittelu"} - colNormalization{"lajittelun normalisointi"} + colNormalization{"normalisoitu lajittelu"} colNumeric{"numeroiden lajittelu"} colStrength{"lajittelun taso"} collation{"lajittelujärjestys"} @@ -640,6 +640,10 @@ fi{ zxx{"ei kielellistä sisältöä"} zza{"zaza"} } + Languages%menu{ + yue{"kiina (kantonin)"} + zh{"kiina (mandariini)"} + } Languages%secondary{ crh{"kriminturkki"} fa{"persia"} @@ -648,8 +652,6 @@ fi{ } Languages%short{ az{"azeri"} - en_GB{"englanti (Britannia)"} - en_US{"englanti (USA)"} } Scripts{ Adlm{"fulanin adlam-aakkosto"} @@ -683,12 +685,14 @@ fi{ Cyrl{"kyrillinen"} Cyrs{"kyrillinen muinaiskirkkoslaavimuunnelma"} Deva{"devanagari"} + Dogr{"dogri"} Dsrt{"deseret"} Dupl{"Duployén pikakirjoitus"} Egyd{"egyptiläinen demoottinen"} Egyh{"egyptiläinen hieraattinen"} Egyp{"egyptiläiset hieroglyfit"} Elba{"elbasanilainen"} + Elym{"elymealainen"} Ethi{"etiopialainen"} Geok{"muinaisgeorgialainen"} Geor{"georgialainen"} @@ -741,10 +745,12 @@ fi{ Lyci{"lyykialainen"} Lydi{"lyydialainen"} Mahj{"mahajanilainen"} + Maka{"makassar"} Mand{"mandealainen"} Mani{"manikealainen"} Marc{"tiibetiläinen marchan-kirjoitus"} Maya{"maya-hieroglyfit"} + Medf{"medefaidrin"} Mend{"mende"} Merc{"meroiittinen kursiivikirjoitus"} Mero{"meroiittinen"} @@ -756,6 +762,7 @@ fi{ Mtei{"meitei"} Mult{"multanilainen"} Mymr{"burmalainen"} + Nand{"nandinagari"} Narb{"muinaispohjoisarabialainen"} Nbat{"nabatealainen"} Newa{"newarin newa-tavukirjoitus"} @@ -778,7 +785,9 @@ fi{ Phnx{"foinikialainen"} Plrd{"Pollardin foneettinen"} Prti{"piirtokirjoitusparthialainen"} + Qaag{"burmalainen zawgyi-toteutus"} Rjng{"rejang"} + Rohg{"rohinjalainen hanifi"} Roro{"rongorongo"} Runr{"riimukirjoitus"} Samr{"samarianaramealainen"} @@ -791,6 +800,8 @@ fi{ Sidd{"siddham-tavukirjoitus"} Sind{"khudabadi"} Sinh{"sinhalilainen"} + Sogd{"sogdialainen"} + Sogo{"muinaissogdialainen"} Sora{"sorang sompeng"} Soyo{"soyombo-kirjaimisto"} Sund{"sundalainen"} @@ -818,6 +829,7 @@ fi{ Vaii{"vailainen"} Visp{"näkyvä puhe"} Wara{"varang kshiti"} + Wcho{"wancholainen"} Wole{"woleai"} Xpeo{"muinaispersialainen"} Xsux{"sumerilais-akkadilainen nuolenpääkirjoitus"} @@ -967,6 +979,7 @@ fi{ finance{"talousnumerot"} fullwide{"ideografin levyiset numerot"} geor{"georgialaiset numerot"} + gonm{"gondin masaram-numerot"} grek{"kreikkalaiset numerot"} greklow{"kreikkalaiset piennumerot"} gujr{"gudžaratilaiset numerot"} @@ -1027,6 +1040,7 @@ fi{ traditional{"perinteiset numerot"} vaii{"vai-numerot"} wara{"varang kshiti -numerot"} + wcho{"wancholaiset numerot"} } } Variants{ @@ -1037,11 +1051,15 @@ fi{ 1994{"sloveenin resian murteen yhdenmukaistettu oikeinkirjoitus"} 1996{"saksan uusi oikeinkirjoitus"} ABL1943{"portugalin oikeinkirjoitus 1943"} + AKUAPEM{"akanin akuapem-murre"} ALALC97{"amerikkalainen kirjastolatinaistus 1997"} ALUKU{"alukun kreolimurre"} AO1990{"portugalin oikeinkirjoitussopimus 1990"} + ARANES{"oksitaanin Aranin laakson variantti"} AREVELA{"itäarmenialainen"} AREVMDA{"länsiarmenialainen"} + ASANTE{"akanin asante-variantti"} + AUVERN{"oksitaanin Auvergnen variantti"} BAKU1926{"yhtenäistetty turkkilainen latinalainen aakkosto"} BALANKA{"aniin balankalaismurre"} BARLA{"kapverdenkreolin barlaventolainen murreryhmä"} @@ -1051,26 +1069,35 @@ fi{ BISKE{"sloveenin resian San Giorgion/Bilan alamurre"} BOHORIC{"sloveenin Bohorič-aakkosto"} BOONT{"englannin boontling-murre"} + CISAUP{"oksitaanin luoteisitalialainen variantti"} COLB1945{"portugalin oikeinkirjoitus 1945"} CORNU{"englannin cornu-murre"} + CREISS{"oksitaanin Croissantin variantti"} DAJNKO{"sloveenin Dajnko-aakkosto"} EKAVSK{"serbian ekavialainen ääntämys"} EMODENG{"varhaisnykyenglanti"} FONIPA{"kansainvälinen foneettinen aakkosto IPA"} + FONKIRSH{"Kirshenbaumin foneettinen aakkosto"} FONNAPA{"pohjoisamerikkalainen foneettinen aakkosto NAPA"} FONUPA{"uralilainen foneettinen aakkosto UPA"} FONXSAMP{"foneettinen X-SAMPA-merkistö"} + GASCON{"oksitaanin Gasconyn variantti"} + GRCLASS{"oksitaanin klassinen ortografia"} + GRITAL{"oksitaanin italialaisvaikutteinen ortografia"} + GRMISTR{"oksitaanin Mistral-vaikutteinen ortografia"} HEPBURN{"japanin Hepburn-latinaistus"} HOGNORSK{"norjan högnorsk"} HSISTEMO{"esperanton h-kirjoitus"} IJEKAVSK{"serbian ijekavialainen ääntämys"} ITIHASA{"sanskriitin eeppinen muoto"} + IVANCHOV{"bulgarian 1899 ortografia"} JAUER{"retoromaanin jauer-murre"} JYUTPING{"kantoninkiinan jyutping-latinaistus"} KKCOR{"kornin yleiskirjoitus"} KOCIEWIE{"puolan kociewielainen murre"} KSCOR{"kornin Kernowek-ortografia"} LAUKIKA{"klassinen sanskriitti"} + LEMOSIN{"oksitaanin Limousin-alueen variantti"} LIPAW{"sloveenin resian Lipovazin/Lipovecin alamurre"} LUNA1918{"venäjän ortografia 1918"} METELKO{"sloveenin Metelko-aakkosto"} @@ -1119,7 +1146,7 @@ fi{ Variants%secondary{ FONUPA{"suomalais-ugrilainen tarkekirjoitus"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} – kaikki"} category-list{"{0}: {1}"} diff --git a/source/data/lang/fil.txt b/source/data/lang/fil.txt index 5e34e8b..5887fd4 100644 --- a/source/data/lang/fil.txt +++ b/source/data/lang/fil.txt @@ -429,6 +429,14 @@ fil{ zxx{"Walang nilalaman na ukol sa wika"} zza{"Zaza"} } + Languages%long{ + zh_Hans{"Pinasimpleng Mandarin Chinese"} + zh_Hant{"Tradisyonal na Mandarin Chinese"} + } + Languages%menu{ + yue{"Chinese, Cantonese"} + zh{"Chinese, Mandarin"} + } Languages%short{ az{"Azeri"} en_GB{"Ingles sa UK"} @@ -665,7 +673,7 @@ fil{ PINYIN{"Pinyin Romanization"} WADEGILE{"Wade-Giles Romanization"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — lahat"} category-list{"{0}: {1}"} @@ -678,7 +686,7 @@ fil{ scripts{"mga script — {0}"} strokes{ one{"{0} stroke"} - other{"{0} strokes"} + other{"{0} (na) stroke"} } } codePatterns{ diff --git a/source/data/lang/fo.txt b/source/data/lang/fo.txt index e8be011..d4f6a9f 100644 --- a/source/data/lang/fo.txt +++ b/source/data/lang/fo.txt @@ -59,6 +59,7 @@ fo{ bug{"buginesiskt"} byn{"blin"} ca{"katalani"} + ccp{"khakma"} ce{"tjetjenskt"} ceb{"cebuano"} cgg{"chiga"} @@ -411,10 +412,16 @@ fo{ zxx{"einki málsligt innihald"} zza{"zaza"} } + Languages%long{ + zh_Hans{"mandarin kinesiskt (einkult)"} + zh_Hant{"mandarin kinesiskt (vanligt)"} + } + Languages%menu{ + yue{"kinesiskt, kantonesiskt"} + zh{"kinesiskt, mandarin"} + } Languages%short{ az{"azeri"} - en_GB{"enskt (UK)"} - en_US{"enskt (USA)"} } Scripts{ Arab{"arabisk"} @@ -550,7 +557,7 @@ fo{ POLYTON{"polytonísk"} WADEGILE{"Wade-Giles"} } - Version{"2.1.48.9"} + Version{"36"} characterLabelPattern{ all{"{0} — Alt"} category-list{"{0}: {1}"} diff --git a/source/data/lang/fr.txt b/source/data/lang/fr.txt index 5281e4d..b079f9d 100644 --- a/source/data/lang/fr.txt +++ b/source/data/lang/fr.txt @@ -4,22 +4,22 @@ fr{ Keys{ calendar{"calendrier"} cf{"format de devise"} - colAlternate{"Tri ne tenant pas compte des symboles"} - colBackwards{"Tri inversé des caractères accentués"} - colCaseFirst{"Classement basé sur les majuscules et les minuscules"} - colCaseLevel{"Tri sensible à la casse"} - colNormalization{"Tri normalisé"} - colNumeric{"Tri numérique"} - colStrength{"Priorité du tri"} + colAlternate{"tri ne tenant pas compte des symboles"} + colBackwards{"tri inversé des caractères accentués"} + colCaseFirst{"classement basé sur les majuscules et les minuscules"} + colCaseLevel{"tri sensible à la casse"} + colNormalization{"tri normalisé"} + colNumeric{"tri numérique"} + colStrength{"priorité du tri"} collation{"ordre de tri"} currency{"devise"} hc{"système horaire (12 ou 24 heures)"} lb{"style de saut de ligne"} ms{"système de mesure"} numbers{"nombres"} - timezone{"Fuseau horaire"} - va{"Variante locale"} - x{"Usage privé"} + timezone{"fuseau horaire"} + va{"variante locale"} + x{"usage privé"} } Languages{ aa{"afar"} @@ -640,10 +640,16 @@ fr{ zxx{"sans contenu linguistique"} zza{"zazaki"} } + Languages%long{ + zh_Hans{"mandarin simplifié"} + zh_Hant{"mandarin traditionnel"} + } + Languages%menu{ + yue{"chinois cantonais"} + zh{"chinois mandarin"} + } Languages%short{ az{"azéri"} - en_GB{"anglais (R.-U.)"} - en_US{"anglais (É.-U.)"} } Languages%variant{ ps{"pashto"} @@ -977,7 +983,7 @@ fr{ VALENCIA{"valencien"} WADEGILE{"Wade-Giles"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — tout"} category-list{"{0} : {1}"} diff --git a/source/data/lang/fr_BE.txt b/source/data/lang/fr_BE.txt index 21b3167..1120409 100644 --- a/source/data/lang/fr_BE.txt +++ b/source/data/lang/fr_BE.txt @@ -7,5 +7,5 @@ fr_BE{ gu{"gujarati"} njo{"ao"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/lang/fr_CA.txt b/source/data/lang/fr_CA.txt index 45e6f1e..db6d5f3 100644 --- a/source/data/lang/fr_CA.txt +++ b/source/data/lang/fr_CA.txt @@ -4,6 +4,7 @@ fr_CA{ Languages{ ady{"adygué"} ang{"vieil anglais"} + ar_001{"arabe standard moderne"} asa{"assou"} az{"azerbaïdjanais"} bbj{"ghomala"} @@ -15,11 +16,21 @@ fr_CA{ chn{"chinook"} ckb{"kurde central"} cr{"cri"} + de_AT{"allemand autrichien"} + de_CH{"allemand suisse"} den{"slave"} dgr{"tlicho"} + en_AU{"anglais australien"} + en_CA{"anglais canadien"} + en_GB{"anglais britannique"} + en_US{"anglais américain"} esu{"yupik central"} ewo{"ewondo"} + fr_CA{"français canadien"} + fr_CH{"français suisse"} frc{"cajun"} + frp{"franco-provençal"} + gbz{"dari"} goh{"vieux haut-allemand"} gu{"gujarati"} ii{"yi de Sichuan"} @@ -31,16 +42,15 @@ fr_CA{ ksh{"kölsch"} liv{"live"} lu{"luba-katanga"} - luo{"luo"} lzh{"chinois classique"} mgh{"makhuwa-meetto"} mgo{"meta’"} mr{"marathe"} mwr{"marwari"} mwv{"mentawai"} - nds{"bas allemand"} nds_NL{"bas saxon"} njo{"ao naga"} + nl_BE{"flamand"} nmg{"kwasio"} nwc{"newari classique"} nyn{"nkole"} @@ -50,17 +60,32 @@ fr_CA{ peo{"vieux perse"} pfl{"palatin"} pro{"ancien occitan"} + pt_BR{"portugais brésilien"} + pt_PT{"portugais européen"} quc{"k’iche’"} rar{"rarotonga"} + ro_MD{"moldave"} sbp{"sangu"} sdh{"kurde méridional"} sei{"seri"} sga{"vieil irlandais"} sly{"selayar"} smn{"sami d’Inari"} + stq{"frison de Saterland"} + sus{"sosso"} sw_CD{"swahili congolais"} tru{"turoyo"} tzm{"tamazight"} + zh_Hans{"chinois simplifié"} + zh_Hant{"chinois traditionnel"} + } + Languages%long{ + zh_Hans{"chinois, mandarin simplifié"} + zh_Hant{"chinois, mandarin traditionnel"} + } + Languages%menu{ + yue{"chinois, cantonais"} + zh{"chinois, mandarin"} } Languages%variant{ ug{"ouïghour"} @@ -102,7 +127,7 @@ fr_CA{ mong{"Chiffres mongols"} } } - Version{"2.1.47.86"} + Version{"36"} characterLabelPattern{ category-list{"{0} : {1}"} } diff --git a/source/data/lang/fr_CH.txt b/source/data/lang/fr_CH.txt index 0ca5540..26aa0e9 100644 --- a/source/data/lang/fr_CH.txt +++ b/source/data/lang/fr_CH.txt @@ -6,5 +6,5 @@ fr_CH{ pdc{"allemand de Pennsylvanie"} sdh{"kurde méridional"} } - Version{"2.1.48.88"} + Version{"36"} } diff --git a/source/data/lang/fur.txt b/source/data/lang/fur.txt index 3ddaf99..07fad92 100644 --- a/source/data/lang/fur.txt +++ b/source/data/lang/fur.txt @@ -299,7 +299,7 @@ fur{ SOLBA{"dialet di Stolvize"} VALENCIA{"valenzian"} } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"Lenghe: {0}"} script{"Scriture: {0}"} diff --git a/source/data/lang/fy.txt b/source/data/lang/fy.txt index bffb96a..208d6dd 100644 --- a/source/data/lang/fy.txt +++ b/source/data/lang/fy.txt @@ -886,7 +886,7 @@ fy{ VALLADER{"Vallader"} WADEGILE{"Wade-Giles-romanisering"} } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"Taal: {0}"} script{"Skrift: {0}"} diff --git a/source/data/lang/ga.txt b/source/data/lang/ga.txt index 9760609..3fbe6a2 100644 --- a/source/data/lang/ga.txt +++ b/source/data/lang/ga.txt @@ -63,7 +63,6 @@ ga{ bug{"Buiginis"} byn{"byn"} ca{"Catalóinis"} - ccp{"ccp"} ce{"Seisnis"} ceb{"Seabúáinis"} cgg{"cgg"} @@ -186,30 +185,30 @@ ga{ iu{"Ionúitis"} ja{"Seapáinis"} jbo{"Lojban"} - jgo{"jgo"} - jmc{"jmc"} + jgo{"Ngomba"} + jmc{"Machame"} jut{"Iútlainnis"} jv{"Iáivis"} ka{"Seoirsis"} kaa{"Cara-Chalpáis"} - kab{"kab"} + kab{"Caibílis"} kac{"kac"} kaj{"kaj"} - kam{"kam"} + kam{"Cambais"} kbd{"kbd"} kcg{"kcg"} - kde{"kde"} + kde{"Makonde"} kea{"Kabuverdianu"} kfo{"kfo"} kg{"Congóis"} kha{"kha"} - khq{"khq"} + khq{"Koyra Chiini"} ki{"Ciocúis"} kj{"Cuainiáimis"} kk{"Casaicis"} - kkj{"kkj"} + kkj{"Kako"} kl{"Kalaallisut"} - kln{"kln"} + kln{"Kalenjin"} km{"Ciméiris"} kmb{"kmb"} kn{"Cannadais"} @@ -231,7 +230,7 @@ ga{ ky{"Cirgisis"} la{"Laidin"} lad{"Laidínis"} - lag{"lag"} + lag{"Langi"} lah{"Puinseáibis Iartharach"} lb{"Lucsambuirgis"} lez{"lez"} @@ -239,33 +238,33 @@ ga{ li{"Liombuirgis"} lij{"Liogúiris"} liv{"Liovóinis"} - lkt{"lkt"} + lkt{"Lakota"} lmo{"Lombairdis"} ln{"Liongáilis"} lo{"Laoisis"} loz{"loz"} - lrc{"lrc"} + lrc{"Luri Thuaidh"} lt{"Liotuáinis"} lu{"Lúba-Cataingis"} lua{"lua"} lun{"lun"} - luo{"luo"} + luo{"Lúóis"} lus{"lus"} - luy{"luy"} + luy{"Luyia"} lv{"Laitvis"} mad{"mad"} mag{"mag"} mai{"mai"} mak{"mak"} - mas{"mas"} + mas{"Másais"} mdf{"mdf"} men{"Meindis"} - mer{"mer"} - mfe{"mfe"} + mer{"Meru"} + mfe{"Morisyen"} mg{"Malagáisis"} mga{"Meán-Ghaeilge"} - mgh{"mgh"} - mgo{"mgo"} + mgh{"Makhuwa-Meetto"} + mgo{"Metaʼ"} mh{"Mairsillis"} mi{"Maorais"} mic{"mic"} @@ -280,18 +279,18 @@ ga{ mrj{"Mairis Iartharach"} ms{"Malaeis"} mt{"Máltais"} - mua{"mua"} + mua{"Mundang"} mul{"Ilteangacha"} mus{"mus"} mwl{"Mioraindéis"} mwr{"Marmhairis"} my{"Burmais"} myv{"myv"} - mzn{"mzn"} + mzn{"Mazanderani"} na{"Nárúis"} nan{"Sínis Min Nan"} nap{"Napóilis"} - naq{"naq"} + naq{"Nama"} nb{"Ioruais Bokmål"} nd{"Ndeibéilis an Tuaiscirt"} nds{"Gearmáinis Íochtarach"} @@ -303,19 +302,19 @@ ga{ niu{"Níobhais"} nl{"Ollainnis"} nl_BE{"Pléimeannais"} - nmg{"nmg"} + nmg{"Kwasio"} nn{"Nua-Ioruais"} - nnh{"nnh"} + nnh{"Ngiemboon"} no{"Ioruais"} nog{"nog"} non{"Sean-Lochlainnis"} nqo{"nqo"} nr{"Ndeibéilis an Deiscirt"} nso{"Sútúis an Tuaiscirt"} - nus{"nus"} + nus{"Nuer"} nv{"Navachóis"} ny{"Siséivis"} - nyn{"nyn"} + nyn{"Niancóilis"} oc{"Ocsatáinis"} oj{"Óisibis"} om{"Oraimis"} @@ -364,7 +363,7 @@ ga{ sd{"Sindis"} se{"Sáimis Thuaidh"} seh{"seh"} - ses{"ses"} + ses{"Koyraboro Senni"} sg{"Sangóis"} sga{"Sean-Ghaeilge"} sh{"Seirbea-Chróitis"} @@ -462,6 +461,9 @@ ga{ zxx{"Gan ábhar teangeolaíoch"} zza{"zza"} } + Languages%menu{ + yue{"Sínis, Cantainis"} + } Languages%short{ az{"Asairis"} en_GB{"Béarla na R.A."} @@ -854,7 +856,7 @@ ga{ WADEGILE{"Rómhánú Wade-Giles"} XSISTEMO{"XSISTEMO"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — Uile"} category-list{"{0}: {1}"} diff --git a/source/data/lang/gd.txt b/source/data/lang/gd.txt index edadabe..41a850c 100644 --- a/source/data/lang/gd.txt +++ b/source/data/lang/gd.txt @@ -72,7 +72,7 @@ gd{ bho{"Bhojpuri"} bi{"Bislama"} bik{"Bikol"} - bin{"Bini"} + bin{"Edo"} bjn{"Banjar"} bkm{"Kom"} bla{"Siksika"} @@ -97,6 +97,7 @@ gd{ car{"Carib"} cay{"Cayuga"} cch{"Atsam"} + ccp{"Chakma"} ce{"Deideanais"} ceb{"Cebuano"} cgg{"Chiga"} @@ -606,6 +607,14 @@ gd{ zxx{"Susbaint nach eil ’na chànan"} zza{"Zazaki"} } + Languages%long{ + zh_Hans{"Mandairinis Shimplichte"} + zh_Hant{"Mandairinis Thradaiseanta"} + } + Languages%menu{ + yue{"Sìnis, Cantonais"} + zh{"Sìnis, Mandairinis"} + } Languages%short{ az{"Azeri"} en_GB{"Beurla na RA"} @@ -648,6 +657,7 @@ gd{ Dupl{"Gearr-sgrìobhadh Duployé"} Egyp{"Sealbh-sgrìobhadh Èipheiteach"} Elba{"Elbasan"} + Elym{"Elymaidheach"} Ethi{"Ge’ez"} Geor{"Cairtbheilis"} Glag{"Glagoliticeach"} @@ -669,6 +679,7 @@ gd{ Hira{"Hiragana"} Hluw{"Dealbh-sgrìobhadh Anatolach"} Hmng{"Pahawh Hmong"} + Hmnp{"Nyiakeng Puachue Hmong"} Hrkt{"Katakana no Hiragana"} Hung{"Seann-Ungarais"} Ital{"Seann-Eadailtis"} @@ -715,6 +726,7 @@ gd{ Mtei{"Meitei Mayek"} Mult{"Multani"} Mymr{"Miànmar"} + Nand{"Nandinagari"} Narb{"Seann-Arabach Thuathach"} Nbat{"Nabataean"} Newa{"Newa"} @@ -736,6 +748,7 @@ gd{ Phnx{"Pheniceach"} Plrd{"Miao Phollard"} Prti{"Partais snaidh-sgrìobhte"} + Qaag{"Qaag"} Rjng{"Rejang"} Rohg{"Hanifi Rohingya"} Roro{"Rongorongo"} @@ -777,6 +790,7 @@ gd{ Ugar{"Ugariticeach"} Vaii{"Vai"} Wara{"Varang Kshiti"} + Wcho{"Wancho"} Wole{"Woleai"} Xpeo{"Seann-Pheirsis"} Xsux{"Gèinn-sgrìobhadh Sumer is Akkad"} @@ -892,6 +906,7 @@ gd{ hantfin{"Àireamhan ionmhasail na Sìnise Thradaiseanta"} hebr{"Àireamhan na h-Eabhra"} hmng{"Àireamhan Pahawh Hmong"} + hmnp{"Àireamhan Nyiakeng Puachue"} java{"Àireamhan na Deàbhanaise"} jpan{"Àireamhan na Seapanaise"} jpanfin{"Àireamhan ionmhasail na Seapanaise"} @@ -940,6 +955,7 @@ gd{ tirh{"Àireamhan Tirhuta"} vaii{"Àireamhan Vai"} wara{"Àireamhan Warang Citi"} + wcho{"Àireamhan Wancho"} } } Variants{ @@ -1032,7 +1048,7 @@ gd{ WADEGILE{"Ròmanachadh Wade-Giles"} XSISTEMO{"XSISTEMO"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} – na h-uile"} category-list{"{0}: {1}"} diff --git a/source/data/lang/gl.txt b/source/data/lang/gl.txt index 49f452f..e79a490 100644 --- a/source/data/lang/gl.txt +++ b/source/data/lang/gl.txt @@ -17,9 +17,9 @@ gl{ lb{"estilo de quebra de liña"} ms{"sistema internacional de unidades"} numbers{"números"} - timezone{"Fuso horario"} - va{"Variante local"} - x{"Uso privado"} + timezone{"fuso horario"} + va{"variante rexional"} + x{"uso privado"} } Languages{ aa{"afar"} @@ -52,7 +52,7 @@ gl{ ba{"baxkir"} ban{"balinés"} bas{"basaa"} - be{"bielorruso"} + be{"belaruso"} bem{"bemba"} bez{"bena"} bg{"búlgaro"} @@ -79,7 +79,7 @@ gl{ cho{"choctaw"} chr{"cherokee"} chy{"cheyenne"} - ckb{"kurdo soraní"} + ckb{"kurdo central"} co{"corso"} crs{"seselwa (crioulo das Seychelles)"} cs{"checo"} @@ -192,7 +192,7 @@ gl{ khq{"koyra chiini"} ki{"kikuyu"} kj{"kuanyama"} - kk{"casaco"} + kk{"kazako"} kkj{"kako"} kl{"groenlandés"} kln{"kalenjin"} @@ -292,7 +292,7 @@ gl{ nso{"sesotho do norte"} nus{"nuer"} nv{"navajo"} - ny{"nyanja"} + ny{"chewa"} nyn{"nyankole"} oc{"occitano"} om{"oromo"} @@ -376,7 +376,7 @@ gl{ th{"tailandés"} ti{"tigriña"} tig{"tigré"} - tk{"turcomán"} + tk{"turkmeno"} tl{"tagalo"} tlh{"klingon"} tn{"tswana"} @@ -399,7 +399,7 @@ gl{ umb{"umbundu"} und{"lingua descoñecida"} ur{"urdú"} - uz{"uzbeco"} + uz{"uzbeko"} vai{"vai"} ve{"venda"} vi{"vietnamita"} @@ -428,10 +428,16 @@ gl{ zxx{"sen contido lingüístico"} zza{"zazaki"} } + Languages%long{ + zh_Hans{"chinés mandarín simplificado"} + zh_Hant{"chinés mandarín tradicional"} + } + Languages%menu{ + yue{"chinés cantonés"} + zh{"chinés mandarín"} + } Languages%short{ az{"azerí"} - en_GB{"inglés (RU)"} - en_US{"inglés (EUA)"} } Scripts{ Arab{"árabe"} @@ -445,9 +451,9 @@ gl{ Ethi{"etíope"} Geor{"xeorxiano"} Grek{"grego"} - Gujr{"guxaratí"} + Gujr{"guxarati"} Guru{"gurmukhi"} - Hanb{"hanb"} + Hanb{"han con bopomofo"} Hang{"hangul"} Hani{"han"} Hans{"simplificado"} @@ -459,14 +465,14 @@ gl{ Jpan{"xaponés"} Kana{"katakana"} Khmr{"khmer"} - Knda{"canarés"} + Knda{"kannará"} Kore{"coreano"} Laoo{"laosiano"} Latn{"latino"} Mlym{"malabar"} Mong{"mongol"} Mymr{"birmano"} - Orya{"oriá"} + Orya{"odiá"} Sinh{"cingalés"} Taml{"támil"} Telu{"telugu"} @@ -478,7 +484,7 @@ gl{ Zsym{"símbolos"} Zxxx{"non escrito"} Zyyy{"común"} - Zzzz{"alfabeto descoñecido"} + Zzzz{"sistema de escritura descoñecido"} } Scripts%stand-alone{ Hans{"han simplificado"} @@ -570,7 +576,7 @@ gl{ h24{"sistema de 24 horas (1–24)"} } lb{ - loose{"estilo de quebra de liña separada"} + loose{"estilo de quebra de liña flexible"} normal{"estilo de quebra de liña normal"} strict{"estilo de quebra de liña estrita"} } @@ -584,8 +590,8 @@ gl{ ussystem{"sistema estadounidense de unidades"} } numbers{ - arab{"díxitos arábigo-índicos"} - arabext{"díxitos arábigo-índicos ampliados"} + arab{"díxitos indoarábigos"} + arabext{"díxitos indoarábigos ampliados"} armn{"numeración armenia"} armnlow{"numeración armenia en minúscula"} beng{"díxitos bengalís"} @@ -596,7 +602,7 @@ gl{ geor{"numeración xeorxiana"} grek{"numeración grega"} greklow{"numeración grega en minúscula"} - gujr{"díxitos guxaratís"} + gujr{"díxitos guxaratis"} guru{"díxitos do gurmukhi"} hanidec{"numeración decimal chinesa"} hans{"numeración chinesa simplificada"} @@ -607,14 +613,14 @@ gl{ jpan{"numeración xaponesa"} jpanfin{"numeración financeira xaponesa"} khmr{"díxitos khmer"} - knda{"díxitos canareses"} + knda{"díxitos kannarás"} laoo{"díxitos laosianos"} latn{"díxitos occidentais"} mlym{"díxitos malabares"} mong{"Díxitos mongoles"} mymr{"díxitos birmanos"} native{"Díxitos orixinais"} - orya{"díxitos do oriá"} + orya{"díxitos do odiá"} roman{"numeración romana"} romanlow{"numeración romana en minúsculas"} taml{"numeración támil tradicional"} @@ -626,7 +632,7 @@ gl{ vaii{"Díxitos Vai"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} (todo)"} category-list{"{0}: {1}"} @@ -644,7 +650,7 @@ gl{ } codePatterns{ language{"Idioma: {0}"} - script{"Alfabeto: {0}"} + script{"Sistema de escritura: {0}"} territory{"Rexión: {0}"} } localeDisplayPattern{ diff --git a/source/data/lang/gsw.txt b/source/data/lang/gsw.txt index 451f144..37175fd 100644 --- a/source/data/lang/gsw.txt +++ b/source/data/lang/gsw.txt @@ -619,7 +619,7 @@ gsw{ SOLBA{"Solbica-Mundart"} TARASK{"Taraskievica-Rächtschriibig"} } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"Schpraach: {0}"} script{"Schrift: {0}"} diff --git a/source/data/lang/gu.txt b/source/data/lang/gu.txt index 5e89839..a4f4663 100644 --- a/source/data/lang/gu.txt +++ b/source/data/lang/gu.txt @@ -89,6 +89,7 @@ gu{ cad{"કડ્ડો"} car{"કરિબ"} cch{"અત્સમ"} + ccp{"ચકમા"} ce{"ચેચન"} ceb{"સિબુઆનો"} cgg{"ચિગા"} @@ -553,6 +554,14 @@ gu{ zxx{"કોઇ ભાષાશાસ્ત્રીય સામગ્રી નથી"} zza{"ઝાઝા"} } + Languages%long{ + zh_Hans{"સરળીકૃત મેન્ડેરિન ચાઇનીઝ"} + zh_Hant{"પરંપરાગત મેન્ડેરિન ચાઇનીઝ"} + } + Languages%menu{ + yue{"ચાઇનીઝ, કેન્ટોનીઝ"} + zh{"ચાઇનીઝ, મેન્ડેરિન"} + } Languages%short{ az{"અઝેરી"} en_GB{"યુ.કે. અંગ્રેજી"} @@ -849,7 +858,7 @@ gu{ PINYIN{"પિનયિન રોમનાઇઝેશન"} WADEGILE{"વેડ-ગિલ્સ રોમનાઇઝેશન"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} — તમામ"} category-list{"{0}: {1}"} diff --git a/source/data/lang/guz.txt b/source/data/lang/guz.txt index 1db117f..591c0de 100644 --- a/source/data/lang/guz.txt +++ b/source/data/lang/guz.txt @@ -48,5 +48,5 @@ guz{ zh{"Kichina"} zu{"Kizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/gv.txt b/source/data/lang/gv.txt index 8ac7868..5e97194 100644 --- a/source/data/lang/gv.txt +++ b/source/data/lang/gv.txt @@ -4,5 +4,5 @@ gv{ Languages{ gv{"Gaelg"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/ha.txt b/source/data/lang/ha.txt index 8945359..2d25d09 100644 --- a/source/data/lang/ha.txt +++ b/source/data/lang/ha.txt @@ -1,78 +1,274 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ha{ + Keys{ + calendar{"Kalanda"} + cf{"Yanayin Kudi"} + currency{"Kudin Kasa"} + hc{"Zagayen Awowi"} + numbers{"Lambobi"} + } Languages{ + af{"Afirkanci"} + agq{"Aghem"} ak{"Akan"} am{"Amharik"} ar{"Larabci"} + ar_001{"Larabci Asali Na Zamani"} + as{"Asamisanci"} + asa{"Asu"} + ast{"Asturian"} + az{"Azerbaijanci"} + bas{"Basaa"} be{"Belarusanci"} + bem{"Bemba"} + bez{"Bena"} bg{"Bulgaranci"} + bm{"Bambara"} bn{"Bengali"} + bo{"Tibetan"} + br{"Buretananci"} + brx{"Bodo"} + bs{"Bosniyanci"} + ca{"Kataloniyanci"} + ccp{"Chakma"} + ce{"Chechen"} + ceb{"Cebuano"} + cgg{"Chiga"} + chr{"Cherokee"} + ckb{"Kurdish na Tsaka"} + co{"Corsican"} cs{"Harshen Cak"} + cu{"Church Slavic"} + cy{"Kabilar Welsh"} + da{"Danish"} + dav{"Taita"} de{"Jamusanci"} de_AT{"Jamusanci Ostiriya"} de_CH{"Jamusanci Suwizalan"} + dje{"Zarma"} + dsb{"Lower Sorbian"} + dua{"Duala"} + dyo{"Jola-Fonyi"} + dz{"Dzongkha"} + ebu{"Embu"} + ee{"Ewe"} el{"Girkanci"} en{"Turanci"} en_AU{"Turanci Ostareliya"} en_CA{"Turanci Kanada"} en_GB{"Turanci Biritaniya"} en_US{"Turanci Amirka"} + eo{"Dʼan/ʼYar Kabilar Andalus"} es{"Sifaniyanci"} es_419{"Sifaniyancin Latin Amirka"} es_ES{"Sifaniyanci Turai"} es_MX{"Sifaniyanci Mesiko"} + et{"Istoniyanci"} + eu{"Basque"} + ewo{"Ewondo"} fa{"Parisanci"} + ff{"Fulah"} + fi{"Yaren mutanen Finland"} + fil{"Dan Filifin"} + fo{"Faroese"} fr{"Faransanci"} fr_CA{"Farasanci Kanada"} fr_CH{"Farasanci Suwizalan"} + fur{"Friulian"} + fy{"Kʼabilan Firsi"} + ga{"Dan Ailan"} + gd{"Kʼabilan Scots Gaelic"} + gl{"Bagalike"} + gsw{"Jamusanci Swiss"} + gu{"Gujarati"} + guz{"Gusii"} + gv{"Manx"} ha{"Hausa"} + haw{"Hawaiian"} + he{"Ibrananci"} hi{"Harshen Hindi"} + hmn{"Hmong"} + hr{"Kuroshiyan"} + hsb{"Sorbianci ta Sama"} + ht{"Haitian Creole"} hu{"Harshen Hungari"} + hy{"Armeniyanci"} + ia{"Yare Tsakanin Kasashe"} id{"Harshen Indunusiya"} ig{"Inyamuranci"} + ii{"Sichuan Yi"} + is{"Yaren mutanen Iceland"} it{"Italiyanci"} ja{"Japananci"} + jgo{"Ngomba"} + jmc{"Machame"} jv{"Jabananci"} + ka{"Jojiyanci"} + kab{"Kabyle"} + kam{"Kamba"} + kde{"Makonde"} + kea{"Kabuverdianu"} + khq{"Koyra Chiini"} + ki{"Kikuyu"} + kk{"Kazakh"} + kkj{"Kako"} + kl{"Kalaallisut"} + kln{"Kalenjin"} km{"Harshen Kimar"} + kn{"Kannada"} ko{"Harshen Koreya"} + kok{"Konkani"} + ks{"Kashmiri"} + ksb{"Shambala"} + ksf{"Bafia"} + ksh{"Colognian"} + ku{"Kurdanci"} + kw{"Cornish"} + ky{"Kirgizanci"} + la{"Dan Kabilar Latin"} + lag{"Langi"} + lb{"Luxembourgish"} + lg{"Ganda"} + lkt{"Lakota"} + ln{"Lingala"} + lo{"Laothian"} + lrc{"Northern Luri"} + lt{"Lituweniyanci"} + lu{"Luba-Katanga"} + luo{"Luo"} + luy{"Luyia"} + lv{"Latbiyanci"} + mas{"Harshen Masai"} + mer{"Meru"} + mfe{"Morisyen"} + mg{"Malagasy"} + mgh{"Makhuwa-Meetto"} + mgo{"Metaʼ"} + mi{"Maori"} + mk{"Dan Masedoniya"} + ml{"Kabilar Maleyalam"} + mn{"Mongolian"} + mr{"Kʼabilan Marathi"} ms{"Harshen Malai"} + mt{"Harshen Maltis"} + mua{"Mundang"} + mul{"Harsuna masu yawa"} my{"Burmanci"} + mzn{"Mazanderani"} + naq{"Nama"} + nb{"Norwegian Bokmål"} + nd{"North Ndebele"} + nds{"Low German"} ne{"Nepali"} nl{"Holanci"} + nmg{"Kwasio"} + nn{"Norwegian Nynorsk"} + nnh{"Ngiemboon"} + nus{"Nuer"} + ny{"Nyanja"} + nyn{"Nyankole"} + om{"Oromo"} + or{"Oriyanci"} + os{"Ossetic"} pa{"Punjabi"} pl{"Harshen Polan"} + prg{"Ferusawa"} + ps{"Pashtanci"} pt{"Harshen Fotugis"} - pt_BR{"Fotugis Kasashen Birazil"} pt_PT{"Fotugis kasashen Turai"} + qu{"Quechua"} + rm{"Romansh"} + rn{"Rundi"} ro{"Romaniyanci"} + rof{"Rombo"} ru{"Rashanci"} rw{"Kiniyaruwanda"} - so{"Somali"} + sa{"Sanskrit"} + sah{"Sakha"} + saq{"Samburu"} + sbp{"Sangu"} + sd{"Sindiyanci"} + se{"Northern Sami"} + seh{"Sena"} + ses{"Koyraboro Senni"} + sg{"Sango"} + shi{"Tachelhit"} + si{"Sinhalanci"} + sk{"Basulke"} + sl{"Basulabe"} + sm{"Samoan"} + smn{"Inari Sami"} + sn{"Shona"} + so{"Somalianci"} + sq{"Albanian"} + sr{"Sabiyan"} + st{"Sesotanci"} + su{"Sudananci"} sv{"Harshen Suwedan"} + sw{"Harshen Suwahili"} ta{"Tamil"} + te{"Dʼan/ʼYar Kabilar Telug"} + teo{"Teso"} + tg{"Tajik"} th{"Thai"} + ti{"Tigriyanci"} + tk{"Tukmenistanci"} + to{"Tongan"} tr{"Harshen Turkiyya"} + tt{"Tatar"} + twq{"Tasawaq"} + tzm{"Tamazight na Atlas Tsaka"} + ug{"Ugiranci"} uk{"Harshen Yukuren"} und{"Harshen da ba a sani ba"} - ur{"Harshen Urdu"} + ur{"Urdawa"} + uz{"Uzbek"} + vai{"Vai"} vi{"Harshen Biyetinam"} + vo{"Volapük"} + vun{"Vunjo"} + wae{"Walser"} + wo{"Wolof"} + xh{"Bazosa"} + xog{"Soga"} + yav{"Yangben"} + yi{"Yiddish"} yo{"Yarbanci"} + yue{"Cantonese"} + zgh{"Standard Moroccan Tamazight"} zh{"Harshen Sinanci"} zh_Hans{"Sauƙaƙaƙƙen Sinanci"} zh_Hant{"Sinanci na gargajiya"} zu{"Harshen Zulu"} } + Languages%menu{ + yue{"Sinanci"} + zh{"Harshen, Sinanci"} + } Languages%short{ + az{"Azeri"} en_GB{"Turanci Ingila"} en_US{"Amirka Turanci"} } Scripts{ Arab{"Larabci"} - Cyrl{"Cyrl"} + Armn{"Armeniyawa"} + Beng{"Bangla"} + Bopo{"Bopomofo"} + Cyrl{"Cyrillic"} + Deva{"Devanagari"} + Ethi{"Ethiopic"} + Geor{"Georgian"} + Grek{"Girka"} + Gujr{"Gujarati"} + Guru{"Gurmukhi"} + Hanb{"Han with Bopomofo"} Hans{"Sauƙaƙaƙƙen"} Hant{"Na gargajiya"} + Hebr{"Ibrananci"} Latn{"Latin"} + Zsym{"Alamomi"} Zxxx{"Ba rubutacce ba"} Zzzz{"Rubutun da ba sani ba"} } @@ -82,25 +278,35 @@ ha{ } Types{ calendar{ + buddhist{"Kalanda Buddist"} + chinese{"Kalanda Sin"} + dangi{"Kalanda Dangi"} + ethiopic{"Kalanda Etiofic"} gregorian{"Gregorian Kalanda"} + hebrew{"Kalanda Ibrananci"} + islamic{"Kalandar Musulunci"} + iso8601{"Kalanda ISO-8601"} + japanese{"Kalanda Jafan"} + persian{"Kalanda Farisa"} } collation{ standard{"Daidai ta ce Kasà"} } + hc{ + h11{"Tsarin Awowi 12(0–11)"} + h12{"Tsarin Awowi 12(1–12)"} + h23{"Tsarin Awowi 24(0–23)"} + h24{"Tsarin Awowi 24(1–24)"} + } numbers{ arab{"Lambobi na larabawan a gabas"} latn{"Lambobi na yammacin"} } } - Version{"2.1.48.45"} + Version{"36"} codePatterns{ language{"Harshe: {0}"} script{"Rubutu: {0}"} territory{"Yanki/Sashe: {0}"} } - localeDisplayPattern{ - keyTypePattern{"{0}: {1}"} - pattern{"{0} ({1})"} - separator{"{0}, {1}"} - } } diff --git a/source/data/lang/ha_NE.txt b/source/data/lang/ha_NE.txt index 454e7a1..c901bb8 100644 --- a/source/data/lang/ha_NE.txt +++ b/source/data/lang/ha_NE.txt @@ -2,105 +2,27 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ha_NE{ Languages{ - ak{"Akan"} - am{"Amharik"} - ar{"Larabci"} - be{"Belarusanci"} - bg{"Bulgaranci"} - bn{"Bengali"} - cs{"Harshen Cak"} - de{"Jamusanci"} + ar_001{"Larabci Asali Na Zamani"} de_AT{"Jamusanci Ostiriya"} de_CH{"Jamusanci Suwizalan"} - el{"Girkanci"} - en{"Turanci"} en_AU{"Turanci Ostareliya"} en_CA{"Turanci Kanada"} en_GB{"Turanci Biritaniya"} en_US{"Turanci Amirka"} - es{"Sifaniyanci"} + eo{"Dʼan/Ƴar Kabilar Andalus"} es_419{"Sifaniyancin Latin Amirka"} es_ES{"Sifaniyanci Turai"} es_MX{"Sifaniyanci Mesiko"} - fa{"Parisanci"} - fr{"Faransanci"} fr_CA{"Farasanci Kanada"} fr_CH{"Farasanci Suwizalan"} - ha{"Hausa"} - hi{"Harshen Hindi"} - hu{"Harshen Hungari"} - id{"Harshen Indunusiya"} - ig{"Inyamuranci"} - it{"Italiyanci"} - ja{"Japananci"} - jv{"Jabananci"} - km{"Harshen Kimar"} - ko{"Harshen Koreya"} - ms{"Harshen Malai"} - my{"Burmanci"} - ne{"Nepali"} - nl{"Holanci"} - pa{"Punjabi"} - pl{"Harshen Polan"} - pt{"Harshen Fotugis"} - pt_BR{"Fotugis Kasashen Birazil"} pt_PT{"Fotugis kasashen Turai"} - ro{"Romaniyanci"} - ru{"Rashanci"} - rw{"Kiniyaruwanda"} - so{"Somali"} - sv{"Harshen Suwedan"} - ta{"Tamil"} - th{"Thai"} - tr{"Harshen Turkiyya"} - uk{"Harshen Yukuren"} - und{"Harshen da ba a sani ba"} - ur{"Harshen Urdu"} - vi{"Harshen Biyetinam"} - yo{"Yarbanci"} - zh{"Harshen Sinanci"} + te{"Dʼan/Ƴar Kabilar Telug"} zh_Hans{"Sauƙaƙaƙƙen Sinanci"} zh_Hant{"Sinanci na gargajiya"} - zu{"Harshen Zulu"} } Languages%short{ en_GB{"Turanci Ingila"} en_US{"Amirka Turanci"} } - Scripts{ - Arab{"Larabci"} - Cyrl{"Cyrl"} - Hans{"Sauƙaƙaƙƙen"} - Hant{"Na gargajiya"} - Latn{"Latin"} - Zxxx{"Ba rubutacce ba"} - Zzzz{"Rubutun da ba sani ba"} - } - Scripts%stand-alone{ - Hans{"Sauƙaƙaƙƙen Hans"} - Hant{"Han na gargajiya"} - } - Types{ - calendar{ - gregorian{"Gregorian Kalanda"} - } - collation{ - standard{"Daidai ta ce Kasà"} - } - numbers{ - arab{"Lambobi na larabawan a gabas"} - latn{"Lambobi na yammacin"} - } - } - Version{"2.1.48.77"} - codePatterns{ - language{"Harshe: {0}"} - script{"Rubutu: {0}"} - territory{"Yanki/Sashe: {0}"} - } - localeDisplayPattern{ - keyTypePattern{"{0}: {1}"} - pattern{"{0} ({1})"} - separator{"{0}, {1}"} - } + Version{"36"} } diff --git a/source/data/lang/haw.txt b/source/data/lang/haw.txt index f415f79..052bb68 100644 --- a/source/data/lang/haw.txt +++ b/source/data/lang/haw.txt @@ -40,5 +40,5 @@ haw{ zh_Hans{"Pākē Hoʻomaʻalahi ʻia"} zh_Hant{"Pākē Kuʻuna"} } - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/lang/he.txt b/source/data/lang/he.txt index e92d9e0..bc25638 100644 --- a/source/data/lang/he.txt +++ b/source/data/lang/he.txt @@ -188,7 +188,7 @@ he{ got{"גותית"} grb{"גרבו"} grc{"יוונית עתיקה"} - gsw{"גרמנית שוויצרית"} + gsw{"גרמנית (בשוויץ)"} gu{"גוג׳ארטי"} guz{"גוסי"} gv{"מאנית"} @@ -204,7 +204,7 @@ he{ hmn{"המונג"} ho{"הירי מוטו"} hr{"קרואטית"} - hsb{"סורבית גבוהה"} + hsb{"סורבית עילית"} hsn{"סינית שיאנג"} ht{"קריאולית (האיטי)"} hu{"הונגרית"} @@ -482,7 +482,7 @@ he{ tk{"טורקמנית"} tkl{"טוקלאו"} tl{"טאגאלוג"} - tlh{"קלינגון"} + tlh{"קלינגונית"} tli{"טלינגיט"} tmh{"טמאשק"} tn{"סוואנה"} @@ -511,7 +511,7 @@ he{ uz{"אוזבקית"} vai{"וואי"} ve{"וונדה"} - vi{"ויאטנמית"} + vi{"וייטנאמית"} vo{"‏וולאפיק"} vot{"ווטיק"} vun{"וונג׳ו"} @@ -546,9 +546,16 @@ he{ zxx{"ללא תוכן לשוני"} zza{"זאזא"} } + Languages%long{ + zh_Hans{"סינית מנדרינית פשוטה"} + zh_Hant{"סינית מנדרינית מסורתית"} + } + Languages%menu{ + yue{"סינית, קנטונזית"} + zh{"סינית, מנדרינית"} + } Languages%short{ az{"אזרית"} - en_US{"אנגלית (ארה״ב)"} } Languages%variant{ ps{"פושטו"} @@ -574,7 +581,7 @@ he{ Grek{"יווני"} Gujr{"גוג׳רטי"} Guru{"גורמוקי"} - Hanb{"האנב"} + Hanb{"האן עם בופומופו"} Hang{"האנגול"} Hani{"האן"} Hans{"פשוט"} @@ -592,14 +599,14 @@ he{ Khmr{"חמרי"} Knda{"קאנאדה"} Kore{"קוריאני"} - Laoo{"לאית"} + Laoo{"לאי"} Latg{"לטיני גאלי"} Latn{"לטיני"} Maya{"מאיה"} Mlym{"מליאלאם"} Mong{"מונגולי"} Mymr{"מיאנמר"} - Orya{"אורייה"} + Orya{"אודייה"} Phnx{"פיניקי"} Runr{"רוני"} Sinh{"סינהלה"} @@ -648,7 +655,7 @@ he{ iso8601{"לוח שנה ISO-8601"} japanese{"לוח השנה היפני"} persian{"לוח השנה הפרסי"} - roc{"לוח השנה הטאיווני"} + roc{"לוח השנה הטייוואני"} } cf{ account{"תבנית מטבע למטרות חשבונאות"} @@ -782,7 +789,7 @@ he{ SCOTLAND{"אנגלית סקוטית סטנדרטית"} WADEGILE{"ווייד-גיילס, שיטה לתעתוק סינית לאותיות לטיניות"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} - הכל"} category-list{"{0}: {1}"} diff --git a/source/data/lang/hi.txt b/source/data/lang/hi.txt index 5af87b7..000a953 100644 --- a/source/data/lang/hi.txt +++ b/source/data/lang/hi.txt @@ -84,6 +84,7 @@ hi{ cad{"कैड्डो"} car{"कैरिब"} cch{"अत्सम"} + ccp{"चकमा"} ce{"चेचन"} ceb{"सिबुआनो"} cgg{"शिगा"} @@ -538,6 +539,14 @@ hi{ zxx{"कोई भाषा सामग्री नहीं"} zza{"ज़ाज़ा"} } + Languages%long{ + zh_Hans{"सरलीकृत मैंडेरिन चीनी"} + zh_Hant{"पारंपरिक मैंडेरिन चीनी"} + } + Languages%menu{ + yue{"चीनी, कैंटोनीज़"} + zh{"चीनी, मैंडेरिन"} + } Languages%short{ az{"अज़ेरी"} en_GB{"यू॰के॰ अंग्रेज़ी"} @@ -840,7 +849,7 @@ hi{ POSIX{"कम्प्यूटर"} REVISED{"संशोधित वर्तनी"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — सभी"} category-list{"{0}: {1}"} diff --git a/source/data/lang/hr.txt b/source/data/lang/hr.txt index 271d82d..6ba8a1b 100644 --- a/source/data/lang/hr.txt +++ b/source/data/lang/hr.txt @@ -4,13 +4,13 @@ hr{ Keys{ calendar{"kalendar"} cf{"Format valute"} - colAlternate{"Zanemarivanje poredavanja simbola"} - colBackwards{"Obrnuto poredavanje po naglasku"} - colCaseFirst{"Poredavanje po velikim/malim slovima"} - colCaseLevel{"Poredavanje u skladu s veličinom slova"} - colNormalization{"Normalizirano poredavanje"} - colNumeric{"Numeričko poredavanje"} - colStrength{"Jačina poredavanja"} + colAlternate{"Zanemarivanje razvrstavanja simbola"} + colBackwards{"Obrnuto razvrstavanje po naglasku"} + colCaseFirst{"Razvrstavanje po velikim/malim slovima"} + colCaseLevel{"Razvrstavanje prema veličini slova"} + colNormalization{"Normalizirano razvrstavanje"} + colNumeric{"Brojčano razvrstavanje"} + colStrength{"Jačina razvrstavanja"} collation{"Redoslijed razvrstavanja"} currency{"valuta"} hc{"format vremena (12 ili 24)"} @@ -557,10 +557,16 @@ hr{ zxx{"bez jezičnog sadržaja"} zza{"zazaki"} } + Languages%long{ + zh_Hans{"mandarinski kineski (pojednostavljeni)"} + zh_Hant{"mandarinski kineski (tradicionalni)"} + } + Languages%menu{ + yue{"kineski, kantonski"} + zh{"kineski, mandarinski"} + } Languages%short{ az{"azerski"} - en_GB{"engleski (UK)"} - en_US{"engleski (SAD)"} } Languages%variant{ ps{"puštu"} @@ -917,7 +923,7 @@ hr{ VALENCIA{"valencijski"} WADEGILE{"Wade-Giles romanizacija"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} – sve"} category-list{"{0}: {1}"} @@ -939,4 +945,9 @@ hr{ script{"Pismo: {0}"} territory{"Regija: {0}"} } + localeDisplayPattern{ + keyTypePattern{"{0}: {1}"} + pattern{"{0} ({1})"} + separator{"{0}, {1}"} + } } diff --git a/source/data/lang/hsb.txt b/source/data/lang/hsb.txt index e9c1721..7c8de8f 100644 --- a/source/data/lang/hsb.txt +++ b/source/data/lang/hsb.txt @@ -272,10 +272,6 @@ hsb{ zu{"zulušćina"} zxx{"žadyn rěčny wobsah"} } - Languages%short{ - en_GB{"jendźelšćina (UK)"} - en_US{"jendźelšćina (USA)"} - } Scripts{ Arab{"arabsce"} Armn{"armensce"} @@ -378,7 +374,7 @@ hsb{ tibt{"tibetske cyfry"} } } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"rěč: {0}"} script{"pismo: {0}"} diff --git a/source/data/lang/hu.txt b/source/data/lang/hu.txt index 3d020a6..35f610c 100644 --- a/source/data/lang/hu.txt +++ b/source/data/lang/hu.txt @@ -521,7 +521,7 @@ hu{ uz{"üzbég"} vai{"vai"} ve{"venda"} - vi{"vietnami"} + vi{"vietnámi"} vo{"volapük"} vot{"votják"} vun{"vunjo"} @@ -556,10 +556,16 @@ hu{ zxx{"nincs nyelvészeti tartalom"} zza{"zaza"} } + Languages%long{ + zh_Hans{"kínai (egyszerűsített)"} + zh_Hant{"kínai (hagyományos)"} + } + Languages%menu{ + yue{"kantoni kínai"} + zh{"mandarin"} + } Languages%short{ az{"azeri"} - en_GB{"angol (UK)"} - en_US{"angol (USA)"} } Scripts{ Arab{"Arab"} @@ -662,7 +668,10 @@ hu{ Saur{"Szaurastra"} Sgnw{"Jelírás"} Shaw{"Shaw ábécé"} + Sidd{"Sziddham"} Sinh{"Szingaléz"} + Sogd{"Szogd"} + Sogo{"Ószogd"} Sund{"Szundanéz"} Sylo{"Sylheti nagári"} Syrc{"Szíriai"} @@ -762,6 +771,7 @@ hu{ compat{"Előző rendezési sorrend a kompatibilitás érdekében"} dictionary{"Szótári rendezési sorrend"} ducet{"Alapértelmezett Unicode rendezési sorrend"} + emoji{"Emodzsi rendezési sorrend"} eor{"Európai rendezési szabályok"} gb2312han{"Egyszerűsített kínai sorrend - GB2312"} phonebook{"Telefonkönyv sorrend"} @@ -901,7 +911,7 @@ hu{ VALLADER{"Vallader"} WADEGILE{"Wade-Giles átírás"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} – összes"} category-list{"{0}: {1}"} diff --git a/source/data/lang/hy.txt b/source/data/lang/hy.txt index 57e0767..cb551e6 100644 --- a/source/data/lang/hy.txt +++ b/source/data/lang/hy.txt @@ -82,7 +82,7 @@ hy{ crh{"ղրիմյան թուրքերեն"} crs{"սեյշելյան խառնակերտ ֆրանսերեն"} cs{"չեխերեն"} - cu{"եկեղեցական սլավոներեն"} + cu{"սլավոներեն, եկեղեցական"} cv{"չուվաշերեն"} cy{"ուելսերեն"} da{"դանիերեն"} @@ -281,6 +281,7 @@ hy{ naq{"նամա"} nb{"գրքային նորվեգերեն"} nd{"հյուսիսային նդեբելե"} + nds{"ստորին գերմաներեն"} nds_NL{"ստորին սաքսոներեն"} ne{"նեպալերեն"} new{"նեվարերեն"} @@ -478,16 +479,18 @@ hy{ zgh{"ընդհանուր մարոկյան թամազիղտ"} zh{"չինարեն"} zh_Hans{"պարզեցված չինարեն"} - zh_Hant{"ավանդական չինարեն"} + zh_Hant{"չինարեն, ավանդական"} zu{"զուլուերեն"} zun{"զունիերեն"} zxx{"առանց լեզվային բովանդակության"} zza{"զազաերեն"} } + Languages%menu{ + yue{"չինարեն, կանտոներեն"} + } Languages%short{ az{"ադրբեջաներեն"} en_GB{"անգլերեն (Բրիտանիա)"} - en_US{"անգլերեն (ԱՄՆ)"} } Scripts{ Arab{"արաբական"} @@ -581,25 +584,25 @@ hy{ numbers{ arab{"արաբա-հնդկական թվանշաններ"} arabext{"արաբա-հնդկական թվերի ընդլայնված համակարգ"} - armn{"հայկական թվանշաններ"} - armnlow{"հայկական թվեր (փոքրատառ)"} + armn{"հայկական թվանիշեր"} + armnlow{"հայկական փոքրատառ թվանիշեր"} beng{"բենգալական թվանշաններ"} deva{"դեվանագարի թվանշաններ"} - ethi{"եթովպական թվանշաններ"} + ethi{"եթովպական թվանիշեր"} fullwide{"ամբողջ լայնքով թվանշաններ"} - geor{"վրացական թվեր"} - grek{"հունական թվեր"} - greklow{"հունական թվեր (փոքրատառ)"} + geor{"վրացական թվանիշեր"} + grek{"հունական թվանիշեր"} + greklow{"հունական փոքրատառ թվանիշեր"} gujr{"գուջարաթի թվանշաններ"} guru{"գուրմուխի թվանշաններ"} hanidec{"չինական տասնորդական թվեր"} - hans{"չինական պարզեցված թվեր"} - hansfin{"չինական պարզեցված ֆինանսական թվեր"} - hant{"չինական ավանդական թվեր"} - hantfin{"չինական ավանդական ֆինանսական թվեր"} - hebr{"եբրայերեն թվեր"} - jpan{"ճապոնական թվեր"} - jpanfin{"ճապոնական ֆինանսական թվեր"} + hans{"չինական պարզեցված թվանիշեր"} + hansfin{"չինական պարզեցված ֆինանսական թվանիշեր"} + hant{"չինական ավանդական թվանիշեր"} + hantfin{"չինական ավանդական ֆինանսական թվանիշեր"} + hebr{"եբրայական թվանիշեր"} + jpan{"ճապոնական թվանիշեր"} + jpanfin{"ճապոնական ֆինանսական թվանիշեր"} khmr{"քմերական թվանշաններ"} knda{"կաննադա թվանշաններ"} laoo{"լաոսական թվանշաններ"} @@ -607,9 +610,9 @@ hy{ mlym{"մալայալամ թվանշաններ"} mymr{"բիրմական թվանշաններ"} orya{"օրիյա թվանշաններ"} - roman{"հռոմեական թվեր"} - romanlow{"հռոմեական թվեր (փոքրատառ)"} - taml{"թամիլական ավանդական թվեր"} + roman{"հռոմեական թվանիշեր"} + romanlow{"հռոմեական փոքրատառ թվանիշեր"} + taml{"թամիլական ավանդական թվանիշեր"} tamldec{"թամիլական թվանշաններ"} telu{"թելուգու թվանշաններ"} thai{"թայական թվանշաններ"} @@ -620,10 +623,10 @@ hy{ AREVELA{"արևելահայերեն"} AREVMDA{"արեւմտահայերէն"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — բոլորը"} - category-list{"{0}՝ {1}"} + category-list{"{0}․ {1}"} compatibility{"{0} — համատեղելի"} enclosed{"{0} — ներդրված"} extended{"{0} — ընդլայնված"} diff --git a/source/data/lang/ia.txt b/source/data/lang/ia.txt index 216c80f..bf9ee17 100644 --- a/source/data/lang/ia.txt +++ b/source/data/lang/ia.txt @@ -404,8 +404,6 @@ ia{ } Languages%short{ az{"azeri"} - en_GB{"anglese (GB)"} - en_US{"anglese (SUA)"} } Scripts{ Arab{"arabe"} @@ -534,7 +532,7 @@ ia{ tibt{"cifras tibetan"} } } - Version{"2.1.48.36"} + Version{"36"} characterLabelPattern{ all{"{0} — toto"} category-list{"{0}: {1}"} diff --git a/source/data/lang/id.txt b/source/data/lang/id.txt index 5ae7541..be6e128 100644 --- a/source/data/lang/id.txt +++ b/source/data/lang/id.txt @@ -570,10 +570,13 @@ id{ zxx{"Tidak ada konten linguistik"} zza{"Zaza"} } + Languages%menu{ + yue{"Tionghoa, Kanton"} + zh{"Tionghoa, Mandarin"} + } Languages%short{ az{"Azeri"} en_GB{"Inggris (U.K.)"} - en_US{"Inggris (A.S.)"} } Languages%variant{ ps{"Pushto"} @@ -582,6 +585,7 @@ id{ Scripts{ Afak{"Afaka"} Aghb{"Albania Kaukasia"} + Arab{"Arab"} Armi{"Aram Imperial"} Armn{"Armenia"} Avst{"Avesta"} @@ -633,6 +637,7 @@ id{ Hung{"Hungaria Kuno"} Inds{"Indus"} Ital{"Italia Lama"} + Jamo{"Jamo"} Java{"Jawa"} Jpan{"Jepang"} Jurc{"Jurchen"} @@ -721,6 +726,7 @@ id{ Tfng{"Tifinagh"} Tglg{"Tagalog"} Thaa{"Thaana"} + Thai{"Thai"} Tibt{"Tibet"} Tirh{"Tirhuta"} Ugar{"Ugaritik"} @@ -764,7 +770,7 @@ id{ iso8601{"Kalender ISO-8601"} japanese{"Kalender Jepang"} persian{"Kalender Persia"} - roc{"Kalendar Minguo"} + roc{"Kalender Min-guo"} } cf{ account{"Format Mata Uang Akuntansi"} @@ -819,6 +825,7 @@ id{ stroke{"Urutan Sortir Guratan"} traditional{"Urutan Sortir Tradisional"} unihan{"Urutan Sortir Guratan Radikal"} + zhuyin{"Aturan Pengurutan Zhuyin"} } d0{ fwidth{"Lebar penuh"} @@ -837,8 +844,8 @@ id{ strict{"Gaya Pemisah Baris Rapat"} } m0{ - bgn{"BGN"} - ungegn{"UNGEGN"} + bgn{"Transliterasi BGN AS"} + ungegn{"Transliterasi GEGN PBB"} } ms{ metric{"Sistem Metrik"} @@ -945,7 +952,7 @@ id{ VALENCIA{"Valencia"} WADEGILE{"Wade-Giles Latin"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} — Semua"} category-list{"{0}: {1}"} @@ -965,4 +972,9 @@ id{ script{"Skrip: {0}"} territory{"Wilayah: {0}"} } + localeDisplayPattern{ + keyTypePattern{"{0}: {1}"} + pattern{"{0} ({1})"} + separator{"{0}, {1}"} + } } diff --git a/source/data/lang/ig.txt b/source/data/lang/ig.txt index ae5f380..68f3920 100644 --- a/source/data/lang/ig.txt +++ b/source/data/lang/ig.txt @@ -5,6 +5,7 @@ ig{ ak{"Akan"} am{"Amariikị"} ar{"Arabiikị"} + ar_001{"Ụdị Arabiikị nke oge a"} be{"Belaruusu"} bg{"Bọlụgarịa"} bn{"Bengali"} @@ -16,7 +17,6 @@ ig{ en{"Asụsụ Bekee"} en_AU{"Bekee ndị Australia"} en_CA{"Bekee ndị Canada"} - en_GB{"Bekee ndị Britain"} en_US{"Bekee ndị America"} es{"Asụsụ Spanish"} es_419{"Asụsụ Spanish ndị Latin America"} @@ -72,6 +72,8 @@ ig{ Cyrl{"Mkpụrụ Okwu Cyrillic"} Hans{"Nke dị mfe"} Hant{"Izugbe"} + Jpan{"Japanese"} + Kore{"Korea"} Latn{"Latin"} Zxxx{"Edeghị ede"} Zzzz{"Mkpụrụ okwu amaghị"} @@ -83,6 +85,7 @@ ig{ Types{ calendar{ gregorian{"Kalenda Gregory"} + iso8601{"Kalenda ISO-8601"} } collation{ standard{"Usoro Nhazi"} @@ -91,15 +94,10 @@ ig{ latn{"Ọnụ Ọgụgụ Mpaghara Ọdịda Anyanwụ"} } } - Version{"2.1.48.45"} + Version{"36"} codePatterns{ language{"Asụsụ: {0}"} script{"Mkpụrụ Okwu: {0}"} territory{"Mpaghara: {0}"} } - localeDisplayPattern{ - keyTypePattern{"{0}: {1}"} - pattern{"{0} ({1})"} - separator{"{0}, {1}"} - } } diff --git a/source/data/lang/ii.txt b/source/data/lang/ii.txt index 0e51109..ac97c4f 100644 --- a/source/data/lang/ii.txt +++ b/source/data/lang/ii.txt @@ -33,7 +33,7 @@ ii{ islamic{"ꑳꌦꇂꑍꉖ"} } } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"ꅇꉙ: {0}"} script{"ꇇꁱ: {0}"} diff --git a/source/data/lang/is.txt b/source/data/lang/is.txt index 8892372..c72608b 100644 --- a/source/data/lang/is.txt +++ b/source/data/lang/is.txt @@ -86,6 +86,7 @@ is{ car{"karíbamál"} cay{"kajúga"} cch{"atsam"} + ccp{"tsjakma"} ce{"tsjetsjenska"} ceb{"kebúanó"} cgg{"kíga"} @@ -366,7 +367,7 @@ is{ nus{"núer"} nv{"navahó"} nwc{"klassísk nevaríska"} - ny{"njanja; sísjeva; sjeva"} + ny{"nýanja"} nym{"njamvesí"} nyn{"nyankole"} nyo{"njóró"} @@ -543,10 +544,17 @@ is{ zxx{"ekkert tungumálaefni"} zza{"zázáíska"} } + Languages%long{ + zh_Hans{"mandarín (einfölduð)"} + zh_Hant{"mandarín (hefðbundin)"} + } + Languages%menu{ + yue{"kínverska, kantónska"} + zh{"kínverska, mandarín"} + } Languages%short{ az{"aserska"} en_GB{"enska (bresk)"} - en_US{"enska (BNA)"} } Scripts{ Arab{"arabískt"} @@ -751,7 +759,7 @@ is{ vaii{"Vai-tölustafir"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — allt"} category-list{"{0}: {1}"} diff --git a/source/data/lang/it.txt b/source/data/lang/it.txt index 3e8c505..aaa0a2c 100644 --- a/source/data/lang/it.txt +++ b/source/data/lang/it.txt @@ -634,10 +634,16 @@ it{ zxx{"nessun contenuto linguistico"} zza{"zaza"} } + Languages%long{ + zh_Hans{"cinese mandarino semplificato"} + zh_Hant{"cinese mandarino tradizionale"} + } + Languages%menu{ + zh{"cinese (mandarino)"} + } Languages%short{ az{"azero"} en_GB{"inglese (GB)"} - en_US{"inglese (USA)"} } Scripts{ Afak{"afaka"} @@ -1020,7 +1026,7 @@ it{ VALENCIA{"valenziano"} WADEGILE{"romanizzazione Wade-Giles"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} — Tutto"} category-list{"{0}: {1}"} diff --git a/source/data/lang/ja.txt b/source/data/lang/ja.txt index dfabf8d..e292b09 100644 --- a/source/data/lang/ja.txt +++ b/source/data/lang/ja.txt @@ -633,6 +633,14 @@ ja{ zxx{"言語的内容なし"} zza{"ザザ語"} } + Languages%long{ + zh_Hans{"標準中国語 (簡体字)"} + zh_Hant{"標準中国語 (繁体字)"} + } + Languages%menu{ + yue{"中国語 (広東語)"} + zh{"中国語 (標準語)"} + } Languages%short{ az{"アゼリー語"} en_GB{"英語(英国)"} @@ -748,7 +756,7 @@ ja{ Ogam{"オガム文字"} Olck{"オルチキ文字"} Orkh{"オルホン文字"} - Orya{"オリヤー文字"} + Orya{"オディア文字"} Osma{"オスマニア文字"} Palm{"パルミラ文字"} Pauc{"パウ・チン・ハウ文字"} @@ -784,7 +792,7 @@ ja{ Takr{"タークリー文字"} Tale{"タイ・レ文字"} Talu{"新タイ・ルー文字"} - Taml{"タミール文字"} + Taml{"タミル文字"} Tang{"西夏文字"} Tavt{"タイ・ヴェト文字"} Telu{"テルグ文字"} @@ -809,7 +817,7 @@ ja{ Zsym{"記号文字"} Zxxx{"非表記"} Zyyy{"共通文字"} - Zzzz{"未定義文字"} + Zzzz{"不明な文字"} } Scripts%stand-alone{ Hans{"漢字(簡体字)"} @@ -888,7 +896,7 @@ ja{ reformed{"リフォーム"} search{"汎用検索"} searchjl{"ハングル語頭子音による並べ替え"} - standard{"標準ソート順序"} + standard{"標準並べ替え順序"} stroke{"画数順"} traditional{"トラディッショナル"} unihan{"部首順"} @@ -929,7 +937,7 @@ ja{ brah{"ブラーフミー数字"} cakm{"チャクマ数字"} cham{"チャム数字"} - deva{"デーヴァナーガリー数字"} + deva{"デーバナーガリー数字"} ethi{"エチオピア数字"} finance{"財務用漢数字"} fullwide{"全角数字"} @@ -964,7 +972,7 @@ ja{ native{"独自の記数法"} nkoo{"ンコ数字"} olck{"オルチキ数字"} - orya{"オリヤー数字"} + orya{"オディア数字"} osma{"オスマニア数字"} roman{"ローマ数字"} romanlow{"ローマ数字(小文字)"} @@ -974,7 +982,7 @@ ja{ sund{"スンダ数字"} takr{"タークリー数字"} talu{"新タイ・ルー数字"} - taml{"タミール数字"} + taml{"伝統的タミル数字"} tamldec{"タミル数字"} telu{"テルグ数字"} thai{"タイ数字"} @@ -1014,6 +1022,7 @@ ja{ KSCOR{"標準コーンウォール語正書法"} LAUKIKA{"ラウキカ"} LIPAW{"レージア方言 リポヴァツ方言"} + LUNA1918{"LUNA1918"} METELKO{"メテルチッツァ"} MONOTON{"モノトニック"} NDYUKA{"ンジュカ方言"} @@ -1022,6 +1031,7 @@ ja{ NULIK{"現代ヴォラピュク語"} OSOJS{"オゼアッコ/オソヤネ方言"} PAMAKA{"パマカ方言"} + PETR1708{"PETR1708"} PINYIN{"ピン音(ローマ字表記法)"} POLYTON{"ポリトニック"} POSIX{"コンピュータ"} @@ -1029,6 +1039,7 @@ ja{ REVISED{"改訂版"} RIGIK{"古典ヴォラピュク語"} ROZAJ{"レシア方言"} + RUMGR{"RUMGR"} SAAHO{"サホ語"} SCOTLAND{"スコットランド標準英語"} SCOUSE{"リバプール方言"} @@ -1045,7 +1056,7 @@ ja{ VALLADER{"ヴァラダー"} WADEGILE{"ウェード式ローマ字表記法"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — すべて"} category-list{"{0}: {1}"} diff --git a/source/data/lang/jgo.txt b/source/data/lang/jgo.txt index e5bf66c..065a107 100644 --- a/source/data/lang/jgo.txt +++ b/source/data/lang/jgo.txt @@ -28,5 +28,5 @@ jgo{ latn{"pɛnɔ́mba"} } } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/jmc.txt b/source/data/lang/jmc.txt index 6c36859..e062bc4 100644 --- a/source/data/lang/jmc.txt +++ b/source/data/lang/jmc.txt @@ -48,5 +48,5 @@ jmc{ zh{"Kyichina"} zu{"Kyizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/jv.txt b/source/data/lang/jv.txt index f4b602c..bbe8d13 100644 --- a/source/data/lang/jv.txt +++ b/source/data/lang/jv.txt @@ -35,6 +35,7 @@ jv{ brx{"Bodo"} bs{"bs"} ca{"Katala"} + ccp{"Chakma"} ce{"Chechen"} ceb{"Cebuano"} cgg{"Chiga"} @@ -238,10 +239,17 @@ jv{ zu{"Zulu"} zxx{"Konten tanpa linguistik"} } + Languages%long{ + zh_Hans{"Tyonghwa Mandarin (Ringkes)"} + zh_Hant{"Tyonghwa Mandarin (Tradisional)"} + } + Languages%menu{ + yue{"Tyonghwa, Kanton"} + zh{"Tyonghwa, Mandarin"} + } Languages%short{ az{"Azeri"} en_GB{"Inggris (Britania)"} - en_US{"Inggris (AS)"} } Scripts{ Arab{"Arab"} @@ -278,6 +286,7 @@ jv{ Sinh{"Sinhala"} Taml{"Tamil"} Thaa{"Thaana"} + Thai{"Thailand"} Tibt{"Tibetan"} Zmth{"Notasi Matematika"} Zsye{"Emoji"} @@ -344,8 +353,8 @@ jv{ gujr{"Digit Gujarat"} guru{"Digit Gurmukhi"} hanidec{"Angka Desimal Mandarin"} - hans{"Angka Mandarin Prasaja"} - hansfin{"Angka Finansial Mandarin Prasaja"} + hans{"Angka Mandarin Ringkes"} + hansfin{"Angka Finansial Mandarin Ringkes"} hant{"Angka Mandarin Tradisional"} hantfin{"Angka Finansial Mandarin Tradisional"} hebr{"Angka Ibrani"} @@ -367,10 +376,9 @@ jv{ tibt{"Digit Tibet"} } } - Version{"2.1.48.44"} + Version{"36"} characterLabelPattern{ all{"{0} — kabeh"} - category-list{"{0}: {1}"} compatibility{"{0} — kompatibilitas"} enclosed{"{0} — ketutup"} extended{"{0} — didawakake"} diff --git a/source/data/lang/ka.txt b/source/data/lang/ka.txt index 344535b..76e1b42 100644 --- a/source/data/lang/ka.txt +++ b/source/data/lang/ka.txt @@ -70,6 +70,7 @@ ka{ byn{"ბილინი"} ca{"კატალანური"} cay{"კაიუგა"} + ccp{"ჩაკმა"} ce{"ჩეჩნური"} ceb{"სებუანო"} cgg{"ჩიგა"} @@ -490,6 +491,14 @@ ka{ zxx{"ლინგვისტური შიგთავსი არ არის"} zza{"ზაზაკი"} } + Languages%long{ + zh_Hans{"გამარტივებული ჩინური მანდარინი"} + zh_Hant{"ტრადიციული ჩინური მანდარინი"} + } + Languages%menu{ + yue{"ჩინური, კანტონური"} + zh{"ჩინური, მანდარინი"} + } Languages%short{ az{"აზერბაიჯანული"} en_GB{"გართ. სამ. ინგლისური"} @@ -734,7 +743,7 @@ ka{ tibt{"ტიბეტური ციფრები"} } } - Version{"2.1.48.17"} + Version{"36"} characterLabelPattern{ all{"{0} — ყველა"} category-list{"{0}: {1}"} diff --git a/source/data/lang/kab.txt b/source/data/lang/kab.txt index a83d579..1b1eae2 100644 --- a/source/data/lang/kab.txt +++ b/source/data/lang/kab.txt @@ -48,5 +48,5 @@ kab{ zh{"Tacinwat, Tamundarint"} zu{"Tazulut"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/kam.txt b/source/data/lang/kam.txt index 2492814..cae0da3 100644 --- a/source/data/lang/kam.txt +++ b/source/data/lang/kam.txt @@ -48,5 +48,5 @@ kam{ zh{"Kichina"} zu{"Kizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/kde.txt b/source/data/lang/kde.txt index f0fef55..c3a68f1 100644 --- a/source/data/lang/kde.txt +++ b/source/data/lang/kde.txt @@ -48,5 +48,5 @@ kde{ zh{"Chichina"} zu{"Chizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/kea.txt b/source/data/lang/kea.txt index cce04f8..f5a8e04 100644 --- a/source/data/lang/kea.txt +++ b/source/data/lang/kea.txt @@ -3,6 +3,13 @@ kea{ Keys{ calendar{"Kalendáriu"} + cf{"Formatu di mueda"} + collation{"Ordenason"} + currency{"Mueda"} + hc{"Siklu oráriu (12 o 24)"} + lb{"Stilu di kebra di linha"} + ms{"Sistema di midida"} + numbers{"Nunbru"} } Languages{ ab{"abkáziu"} @@ -15,9 +22,12 @@ kea{ arn{"araukanu"} as{"asames"} asa{"asu"} + ast{"asturianu"} ay{"aimara"} az{"azerbaijanu"} ba{"baxkir"} + ban{"balines"} + bas{"basa"} be{"bielorusu"} bem{"bemba"} bez{"bena"} @@ -29,19 +39,22 @@ kea{ brx{"bodo"} bs{"bosniu"} ca{"katalãu"} + ccp{"xakma"} ce{"txetxenu"} + ceb{"sebuanu"} cgg{"xiga"} chr{"xeroki"} ckb{"kurdu sentral"} co{"kórsiku"} cs{"txeku"} + cu{"slavu klériku"} cv{"txuvaxi"} cy{"gales"} da{"dinamarkes"} dav{"taita"} - de{"alimãu"} - de_AT{"alimãu austriaku"} - de_CH{"altu alimãu suisu"} + de{"alemon"} + de_AT{"alemon austríaku"} + de_CH{"alemon altu suisu"} dje{"zarma"} dsb{"sórbiu baxu"} dua{"duala"} @@ -53,7 +66,7 @@ kea{ en{"ingles"} en_AU{"ingles australianu"} en_CA{"ingles kanadianu"} - en_GB{"ingles britaniku"} + en_GB{"ingles britániku"} en_US{"ingles merkanu"} eo{"sperantu"} es{"spanhol"} @@ -62,7 +75,9 @@ kea{ es_MX{"spanhol mexikanu"} et{"stonianu"} eu{"basku"} + ewo{"ewondo"} fa{"persa"} + ff{"fula"} fi{"finlandes"} fil{"filipinu"} fj{"fijianu"} @@ -70,12 +85,13 @@ kea{ fr{"franses"} fr_CA{"franses kanadianu"} fr_CH{"franses suisu"} + fur{"friulanu"} fy{"fríziu osidental"} ga{"irlandes"} gag{"gagauz"} gl{"galegu"} gn{"guarani"} - gsw{"alimãu suísu"} + gsw{"alemon suísu"} gu{"gujarati"} guz{"gusii"} gv{"manks"} @@ -83,11 +99,13 @@ kea{ haw{"avaianu"} he{"ebraiku"} hi{"indi"} + hmn{"hmong"} hr{"kroata"} hsb{"sórbiu altu"} ht{"aitianu"} hu{"úngaru"} hy{"arméniu"} + ia{"interlingua"} id{"indonéziu"} ig{"ibo"} ii{"nuosu"} @@ -101,10 +119,12 @@ kea{ ka{"jorjianu"} kab{"kabila"} kam{"kamba"} + kde{"makonde"} kea{"kabuverdianu"} khq{"koira txiini"} ki{"kikuiu"} kk{"kazak"} + kkj{"kako"} kl{"groenlandes"} kln{"kalenjin"} km{"kmer"} @@ -114,16 +134,24 @@ kea{ kok{"konkani"} ks{"kaxmira"} ksf{"bafia"} + ksh{"kolonhanu"} ku{"kurdu"} kw{"kórniku"} ky{"kirgiz"} la{"latin"} + lag{"langi"} lb{"luxemburges"} lg{"luganda"} + lkt{"lakota"} + ln{"lingala"} lo{"lausianu"} - lt{"lituanes"} + lt{"lituanu"} + lu{"luba-katanga"} + luo{"luo"} + luy{"luyia"} lv{"letãu"} mg{"malgaxi"} + mgh{"makua"} mi{"maori"} mk{"masedóniu"} ml{"malaialam"} @@ -132,6 +160,7 @@ kea{ mt{"maltes"} my{"birmanes"} nb{"norueges bokmål"} + nds{"alemon baxu"} ne{"nepales"} nl{"olandes"} nl_BE{"flamengu"} @@ -139,8 +168,10 @@ kea{ nn{"norueges nynorsk"} om{"oromo"} or{"odía"} + os{"osétiku"} pa{"pandjabi"} pl{"pulaku"} + prg{"prusianu"} ps{"paxto"} pt{"purtuges"} pt_BR{"purtuges brazileru"} @@ -148,10 +179,13 @@ kea{ qu{"kexua"} quc{"kitxe"} rm{"romanxi"} + rn{"rundi"} ro{"rumenu"} ro_MD{"rumenu moldáviku"} + rof{"rombu"} ru{"rusu"} rw{"kiniaruanda"} + rwk{"rwa"} sa{"sánskritu"} sd{"sindi"} ses{"koiraboro seni"} @@ -185,16 +219,24 @@ kea{ wo{"uolof"} xh{"koza"} yo{"ioruba"} + yue{"kantunes"} + zgh{"tamazait marokinu padron"} zh{"xines"} zh_Hans{"xines simplifikadu"} zh_Hant{"xines tradisional"} zu{"zulu"} zxx{"sen kontiudu linguístiku"} } + Languages%long{ + zh_Hans{"xines mandarin (simplificadu)"} + zh_Hant{"xines mandarin (tradisional)"} + } + Languages%menu{ + yue{"kantunes (tradisional)"} + zh{"xines, mandarin"} + } Languages%short{ az{"azeri"} - en_GB{"ingles (R.U.)"} - en_US{"ingles (S.U.)"} } Scripts{ Arab{"arábiku"} @@ -215,6 +257,7 @@ kea{ Hant{"tradisional"} Hebr{"ebraiku"} Hira{"iragana"} + Hrkt{"silabáriu japunes"} Jpan{"japones"} Kana{"katakana"} Khmr{"kmer"} @@ -232,6 +275,8 @@ kea{ Thaa{"taana"} Thai{"tailandes"} Tibt{"tibetanu"} + Zmth{"notason matimátiku"} + Zsye{"emoji"} Zsym{"símbulus"} Zxxx{"nãu skritu"} Zyyy{"komun"} @@ -243,17 +288,52 @@ kea{ } Types{ calendar{ + buddhist{"Kalendáriu budista"} + chinese{"Kalendáriu xines"} + dangi{"Kalendáriu dangi"} + ethiopic{"Kalendáriu etiópiku"} gregorian{"Kalendáriu Gregorianu"} + hebrew{"Kalendáriu ebraiku"} + islamic{"Kalendáriu islámiku"} + iso8601{"Kalendáriu ISO-8601"} + japanese{"Kalendáriu japones"} + persian{"Kalendáriu persa"} + roc{"Kalendáriu di Repúblika di Xina"} + } + cf{ + account{"Formatu di mueda kontabilístiku"} + standard{"Formatu di mueda padron"} + } + collation{ + ducet{"Órdi padron di Unicode"} + search{"Piskiza di uzu jeral"} + standard{"Órdi padron"} + } + hc{ + h11{"Sistema di 12 ora (0–11)"} + h12{"Sistema di 12 ora (1–12)"} + h23{"Sistema di 24 ora (0–23)"} + h24{"Sistema di 24 ora (1–24)"} + } + lb{ + loose{"Stilu fleksível di kebra di linha"} + normal{"Stilu padron di kebra di linha"} + strict{"Stilu ríjidu di kebra di linha"} + } + ms{ + metric{"Sistema métriku"} + uksystem{"Sistema di midida britániku"} + ussystem{"Sistema di midida merkanu"} } numbers{ - latn{"Númerus Arábikus"} + latn{"Nunbru osidental"} } } - Version{"2.1.48.9"} + Version{"36"} codePatterns{ language{"Lingua: {0}"} script{"Skrita: {0}"} - territory{"Rejiãu: {0}"} + territory{"Rejion: {0}"} } localeDisplayPattern{ keyTypePattern{"{0}: {1}"} diff --git a/source/data/lang/khq.txt b/source/data/lang/khq.txt index 641c6ae..05e7765 100644 --- a/source/data/lang/khq.txt +++ b/source/data/lang/khq.txt @@ -48,5 +48,5 @@ khq{ zh{"Sinuwa senni, Mandareŋ"} zu{"Julu senni"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/ki.txt b/source/data/lang/ki.txt index 147240a..8bf045a 100644 --- a/source/data/lang/ki.txt +++ b/source/data/lang/ki.txt @@ -48,5 +48,5 @@ ki{ zh{"Kĩcaina"} zu{"Kizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/kk.txt b/source/data/lang/kk.txt index 8ddfa7c..1d02cbf 100644 --- a/source/data/lang/kk.txt +++ b/source/data/lang/kk.txt @@ -313,7 +313,7 @@ kk{ rwk{"руа тілі"} sa{"санскрит тілі"} sad{"сандаве тілі"} - sah{"якут тілі"} + sah{"саха тілі"} saq{"самбуру тілі"} sat{"сантали тілі"} sba{"нгамбай тілі"} @@ -414,6 +414,14 @@ kk{ zxx{"тілдік мазмұны жоқ"} zza{"заза тілі"} } + Languages%long{ + zh_Hans{"жеңілдетілген қытай тілі (мандарин)"} + zh_Hant{"дәстүрлі қытай тілі (мандарин)"} + } + Languages%menu{ + yue{"қытай тілі (кантон)"} + zh{"қытай тілі (мандарин)"} + } Languages%short{ az{"әзірбайжан тілі"} en_GB{"британиялық ағылшын тілі"} @@ -546,7 +554,7 @@ kk{ tibt{"Тибет сандары"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — барлығы"} category-list{"{0}: {1}"} diff --git a/source/data/lang/kkj.txt b/source/data/lang/kkj.txt index 4337c81..1133ce9 100644 --- a/source/data/lang/kkj.txt +++ b/source/data/lang/kkj.txt @@ -6,5 +6,5 @@ kkj{ fr{"numbu buy"} kkj{"kakɔ"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/kl.txt b/source/data/lang/kl.txt index 8d8a08b..63f609a 100644 --- a/source/data/lang/kl.txt +++ b/source/data/lang/kl.txt @@ -4,7 +4,7 @@ kl{ Languages{ kl{"kalaallisut"} } - Version{"2.1.47.82"} + Version{"36"} localeDisplayPattern{ keyTypePattern{"{0}: {1}"} pattern{"{0} ({1})"} diff --git a/source/data/lang/kln.txt b/source/data/lang/kln.txt index 7f559f5..ffa09d5 100644 --- a/source/data/lang/kln.txt +++ b/source/data/lang/kln.txt @@ -48,5 +48,5 @@ kln{ zh{"kutitab China"} zu{"kutitab Zulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/km.txt b/source/data/lang/km.txt index 187dfb9..917b307 100644 --- a/source/data/lang/km.txt +++ b/source/data/lang/km.txt @@ -59,6 +59,7 @@ km{ bug{"ប៊ុកហ្គី"} byn{"ប្ល៊ីន"} ca{"កាតាឡាន"} + ccp{"ចាក់ម៉ា"} ce{"ឈីឆេន"} ceb{"ស៊ីប៊ូអាណូ"} cgg{"ឈីហ្គា"} @@ -80,6 +81,7 @@ km{ dar{"ដាចវ៉ា"} dav{"តៃតា"} de{"អាល្លឺម៉ង់"} + de_CH{"អាល្លឺម៉ង់ (ស្វ៊ីស)"} dgr{"ដូគ្រីប"} dje{"ហ្សាម៉ា"} dsb{"សូប៊ីក្រោម"} @@ -108,6 +110,7 @@ km{ fo{"ហ្វារូស"} fon{"ហ្វ៊ុន"} fr{"បារាំង"} + fr_CH{"បារាំង (ស្វ៊ីស)"} fur{"ហ៊្វ្រូលាន"} fy{"ហ្វ្រីស៊ានខាងលិច"} ga{"អៀរឡង់"} @@ -403,10 +406,16 @@ km{ zxx{"គ្មាន​ទិន្នន័យ​ភាសា"} zza{"ហ្សាហ្សា"} } + Languages%long{ + zh_Hans{"ចិនកុកងឺ (អក្សរ​កាត់)"} + zh_Hant{"ចិនកុកងឺ (អក្សរ​ពុម្ព)"} + } + Languages%menu{ + yue{"ចិនកាតាំង"} + zh{"ចិនកុកងឺ"} + } Languages%short{ az{"អាហ្សេរី"} - en_GB{"អង់គ្លេស (ច.អ.)"} - en_US{"អង់គ្លេស (ស.រ.អ)"} } Scripts{ Arab{"អារ៉ាប់"} @@ -535,7 +544,7 @@ km{ tibt{"លេខទីបេ"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — ទាំងអស់"} category-list{"{0}: {1}"} diff --git a/source/data/lang/kn.txt b/source/data/lang/kn.txt index 58fd350..503769c 100644 --- a/source/data/lang/kn.txt +++ b/source/data/lang/kn.txt @@ -13,7 +13,7 @@ kn{ colStrength{"ವಿಂಗಡಣೆ ಸಾಮರ್ಥ್ಯ"} collation{"ವಿಂಗಡಣೆ ಕ್ರಮ"} currency{"ಕರೆನ್ಸಿ"} - hc{"ಗಂಟೆ ಚಕ್ರ (12 ವಿರುದ್ಧ 24)"} + hc{"ಕಾಲ ಚಕ್ರ (12 ವಿರುದ್ಧ 24)"} lb{"ಲೈನ್ ಬ್ರೇಕ್ ಶೈಲಿ"} ms{"ಮಾಪನ ವ್ಯವಸ್ಥೆ"} numbers{"ಸಂಖ್ಯೆಗಳು"} @@ -83,6 +83,7 @@ kn{ cad{"ಕ್ಯಾಡ್ಡೋ"} car{"ಕಾರಿಬ್"} cch{"ಅಟ್ಸಮ್"} + ccp{"ಚಕ್ಮಾ"} ce{"ಚೆಚನ್"} ceb{"ಸೆಬುವಾನೊ"} cgg{"ಚಿಗಾ"} @@ -120,7 +121,7 @@ kn{ din{"ಡಿಂಕಾ"} dje{"ಜರ್ಮಾ"} doi{"ಡೋಗ್ರಿ"} - dsb{"ಲೋವರ್ ಸೋರ್ಬಿಯನ್"} + dsb{"ಲೋವರ್ ಸರ್ಬಿಯನ್"} dua{"ಡುವಾಲಾ"} dum{"ಮಧ್ಯ ಡಚ್"} dv{"ದಿವೆಹಿ"} @@ -540,6 +541,13 @@ kn{ zxx{"ಯಾವುದೇ ಭಾಷಾಸಂಬಂಧಿ ವಿಷಯವಿಲ್ಲ"} zza{"ಜಾಝಾ"} } + Languages%long{ + zh_Hant{"ಸಾಂಪ್ರದಾಯಿಕ ಮ್ಯಾಂಡರಿನ್ ಚೈನೀಸ್"} + } + Languages%menu{ + yue{"ಚೈನೀಸ್, ಕ್ಯಾಂಟೊನೀಸ್"} + zh{"ಚೈನೀಸ್, ಮಂಡಾರಿನ್"} + } Languages%short{ az{"ಅಝೆರಿ"} en_GB{"ಯು.ಕೆ. ಇಂಗ್ಲಿಷ್"} @@ -586,7 +594,7 @@ kn{ Grek{"ಗ್ರೀಕ್"} Gujr{"ಗುಜರಾತಿ"} Guru{"ಗುರ್ಮುಖಿ"} - Hanb{"ಹಂಬ್"} + Hanb{"ಬೋಪೋಮೊಫೋ ಜೊತೆಗೆ ಹಾನ್"} Hang{"ಹ್ಯಾಂಗುಲ್"} Hani{"ಹಾನ್"} Hano{"ಹನೂನೂ"} @@ -633,7 +641,7 @@ kn{ Ogam{"ಓಘಮ್"} Olck{"ಓಲ್ ಚಿಕಿ"} Orkh{"ಓರ್ಖೋನ್"} - Orya{"ಒರಿಯಾ"} + Orya{"ಒಡಿಯಾ"} Osma{"ಓಸ್ಮಾನ್ಯಾ"} Perm{"ಪ್ರಾಚೀನ ಪೆರ್ಮಿಕ್"} Phag{"ಫಾಗ್ಸ್-ಪಾ"} @@ -711,7 +719,7 @@ kn{ roc{"ಮಿಂಗೋ ಕ್ಯಾಲೆಂಡರ್"} } cf{ - account{"ಲೆಕ್ಕಪರಿಶೋಧಕ ಕರೆನ್ಚಿ ಸ್ವರೂಪ"} + account{"ಅಕೌಂಟಿಂಗ್ ಕರೆನ್ಸಿ ಸ್ವರೂಪ"} standard{"ಪ್ರಮಾಣಿತ ಕರೆನ್ಸಿ ಸ್ವರೂಪ"} } colAlternate{ @@ -832,7 +840,7 @@ kn{ vaii{"ವಾಯ್ ಅಂಕೆಗಳು"} } } - Version{"2.1.48.17"} + Version{"36"} characterLabelPattern{ all{"{0} — ಎಲ್ಲ"} category-list{"{0}: {1}"} diff --git a/source/data/lang/ko.txt b/source/data/lang/ko.txt index af0e70d..b048422 100644 --- a/source/data/lang/ko.txt +++ b/source/data/lang/ko.txt @@ -561,6 +561,14 @@ ko{ zxx{"언어 관련 내용 없음"} zza{"자자어"} } + Languages%long{ + zh_Hans{"중국어(만다린, 간체)"} + zh_Hant{"중국어(만다린, 번체)"} + } + Languages%menu{ + yue{"중국어(광둥어)"} + zh{"중국어(만다린)"} + } Languages%short{ az{"아제리어"} } @@ -922,7 +930,7 @@ ko{ VAIDIKA{"바이디카"} VALLADER{"발라더"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — 전체"} category-list{"{0}: {1}"} diff --git a/source/data/lang/kok.txt b/source/data/lang/kok.txt index 9c9a4f7..010e1e2 100644 --- a/source/data/lang/kok.txt +++ b/source/data/lang/kok.txt @@ -9,7 +9,7 @@ kok{ hc{"वराचें चक्र (12 वि 24)"} lb{"रेग खंड करपाची शैली"} ms{"मापन प्रणाली"} - numbers{"क्रमांक"} + numbers{"संख्या"} } Languages{ aa{"अफार"} @@ -50,13 +50,14 @@ kok{ bla{"सिकसिका"} bm{"बंबारा"} bn{"बांग्ला"} - bo{"तिबेतियन"} + bo{"तिबेटी"} br{"ब्रेटन"} brx{"बोडो"} bs{"बोस्नियन"} bug{"बगिनिस"} byn{"ब्लीन"} ca{"कटलान"} + ccp{"चक्मा"} ce{"चिचेन"} ceb{"सिबौना"} cgg{"चिगा"} @@ -64,7 +65,7 @@ kok{ chk{"छुनिस"} chm{"मारी"} cho{"चोताव"} - chr{"चिरोकी"} + chr{"चॅरोकी"} chy{"चेयनी"} ckb{"मध्य खुर्दीश"} co{"कोर्शियन"} @@ -106,7 +107,7 @@ kok{ et{"इस्टोनियन्"} eu{"बास्क"} ewo{"एवोंडो"} - fa{"पर्षियन्"} + fa{"पर्सियन"} ff{"फुला"} fi{"फिन्निष्"} fil{"फिलिपिनो"} @@ -238,7 +239,7 @@ kok{ min{"मिनाग्काबौ"} mk{"मसीडोनियन्"} ml{"मळियाळम"} - mn{"मंगोलियन्"} + mn{"मंगोलियन"} mni{"मणिपुरी"} moh{"मोहाक"} mos{"मोस्सी"} @@ -257,6 +258,7 @@ kok{ naq{"नामा"} nb{"नोर्वेजियन बोकमाल"} nd{"उत्तर न्डेबेले"} + nds{"निम्न जर्मन"} ne{"नेपाळी"} new{"नेवरी"} ng{"डोंगा"} @@ -353,13 +355,13 @@ kok{ tem{"तिम्ने"} teo{"तेसो"} tet{"तेतम"} - tg{"तजिक"} + tg{"ताजिक"} th{"थाई"} ti{"तिग्रिन्या"} tig{"टिग्रे"} - tk{"तुर्कमन"} + tk{"तुर्कमेन"} tl{"तगालोग"} - tlh{"लिंगॉन"} + tlh{"क्लिंगन"} tn{"सेत्स्वाना"} to{"तोंगा"} tpi{"तोक पिसीन"} @@ -380,7 +382,7 @@ kok{ umb{"यमबुंडु"} und{"अज्ञात भाशा"} ur{"उर्दू"} - uz{"उज़बेक"} + uz{"उझबेक"} vai{"वाई"} ve{"वेंदा"} vi{"वियत्नामीज़"} @@ -438,7 +440,7 @@ kok{ Jamo{"जामो"} Jpan{"जपानी"} Kana{"काटकाना"} - Khmr{"खमेर"} + Khmr{"कंबोडियन"} Knda{"कन्नड"} Kore{"कोरियन"} Laoo{"लाओ"} @@ -474,7 +476,7 @@ kok{ hebrew{"हिब्रू दिनदर्शिका"} islamic{"ईस्लामीक दिनदर्शिका"} iso8601{"आयएसओ-8601 दिनदर्शिका"} - japanese{"जपानी"} + japanese{"जपानी दिनदर्शिका"} persian{"पर्शियन दिनदर्शिका"} roc{ "मिंगुआ दिनदर्शिका (अणकाराची कुरू: जाका चिनी दिनदर्शिकेचें प्रजासत्ता" @@ -483,11 +485,11 @@ kok{ } cf{ account{"लेखा चलन स्वरूप"} - standard{"प्रमाणित"} + standard{"प्रमाणित चलन स्वरुप"} } collation{ ducet{"डिफॉल्ट युनिकोड वर्गवारी क्रम"} - search{"सोद घेवचो"} + search{"सामान्य-उद्देशान केल्लो सोद"} standard{"प्रमाणित वर्गवारी क्रम"} } hc{ @@ -497,13 +499,13 @@ kok{ h24{"24 वरांची यंत्रणा (1–24)"} } lb{ - loose{"लूज रेग खंड शैली"} + loose{"सुटी रेग खंड शैली"} normal{"सामान्य रेग खंड शैली"} strict{"सक्तीची रेग खंड शैली"} } ms{ metric{"मॅट्रीक प्रणाली"} - uksystem{"व्हडली मापन प्रणाली"} + uksystem{"भव्य मापन प्रणाली"} ussystem{"युएस मापन प्रणाली"} } numbers{ @@ -531,20 +533,33 @@ kok{ khmr{"कंबोडियन अंक"} knda{"कन्नड अंक"} laoo{"लाओ अंक"} - latn{"अस्तंत अंक"} + latn{"अस्तंतीय अंक"} mlym{"मल्याळम अंक"} mymr{"म्यानमार अंक"} - orya{"ओडिया"} + orya{"ओडिया अंक"} roman{"रोमन संख्या"} romanlow{"रोमन लोवरकेस संख्या"} taml{"पारंपारीक तमिळ संख्या"} tamldec{"तमिळ अंक"} telu{"तेलुगू अंक"} thai{"थाय अंक"} - tibt{"तिबेतियन"} + tibt{"तिबेतियन अंक"} + } + } + Version{"36"} + characterLabelPattern{ + all{"{0} — सगळें"} + compatibility{"{0} — अनुरुपताय"} + enclosed{"{0} — जोडलां"} + extended{"{0} — विस्तारायलां"} + historic{"{0} — इतिहासीक"} + miscellaneous{"{0} — तरेकवार"} + other{"{0} — हेर"} + scripts{"लिपयो — {0}"} + strokes{ + other{"{0} आघात"} } } - Version{"2.1.49.82"} codePatterns{ language{"भाशा: {0}"} script{"लिपी: {0}"} diff --git a/source/data/lang/ks.txt b/source/data/lang/ks.txt index 2ce96ec..3897a20 100644 --- a/source/data/lang/ks.txt +++ b/source/data/lang/ks.txt @@ -609,7 +609,7 @@ ks{ SOLBA{"ثٹولوِزا/سولبِکا بوٗلۍ"} TARASK{"تاراسکیٖوِکا علمہ ہِجاِ"} } - Version{"2.1.47.83"} + Version{"36"} codePatterns{ language{"زَبان: {0}"} script{"رَسم الخط: {0}"} diff --git a/source/data/lang/ksb.txt b/source/data/lang/ksb.txt index f5dc64b..5031139 100644 --- a/source/data/lang/ksb.txt +++ b/source/data/lang/ksb.txt @@ -48,5 +48,5 @@ ksb{ zh{"Kichina"} zu{"Kizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/ksf.txt b/source/data/lang/ksf.txt index e6159c9..2482f4c 100644 --- a/source/data/lang/ksf.txt +++ b/source/data/lang/ksf.txt @@ -48,5 +48,5 @@ ksf{ zh{"ricinɔá"} zu{"rizúlu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/ksh.txt b/source/data/lang/ksh.txt index 6edbd50..0ab5b48 100644 --- a/source/data/lang/ksh.txt +++ b/source/data/lang/ksh.txt @@ -512,7 +512,7 @@ ksh{ VALENCIA{"valenzijaanesche Dijaläk"} WADEGILE{"lateijnesche Ömschreff noh Wade-Giles"} } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"de Schprohch afjekööz met „{0}“"} script{"de Schreff afjekööz met „{0}“"} diff --git a/source/data/lang/ku.txt b/source/data/lang/ku.txt index f4d2d0f..5560f99 100644 --- a/source/data/lang/ku.txt +++ b/source/data/lang/ku.txt @@ -273,7 +273,7 @@ ku{ roman{"hejmarên romî"} } } - Version{"2.1.47.83"} + Version{"36"} codePatterns{ language{"ziman: {0}"} script{"nivîs: {0}"} diff --git a/source/data/lang/kw.txt b/source/data/lang/kw.txt index fbdb453..3685161 100644 --- a/source/data/lang/kw.txt +++ b/source/data/lang/kw.txt @@ -4,5 +4,5 @@ kw{ Languages{ kw{"kernewek"} } - Version{"2.1.48.56"} + Version{"36"} } diff --git a/source/data/lang/ky.txt b/source/data/lang/ky.txt index 73c502e..aaf7f7e 100644 --- a/source/data/lang/ky.txt +++ b/source/data/lang/ky.txt @@ -58,6 +58,7 @@ ky{ bug{"бугийче"} byn{"блинче"} ca{"каталонча"} + ccp{"Чакма"} ce{"чеченче"} ceb{"себуанча"} cgg{"чигача"} @@ -289,6 +290,7 @@ ky{ prg{"пруссча"} ps{"пуштуча"} pt{"португалча"} + pt_BR{"Бразилиялык Португал тили"} pt_PT{"португалча (Европа)"} qu{"кечуача"} quc{"кичече"} @@ -408,10 +410,12 @@ ky{ zxx{"тилдик мазмун жок"} zza{"зазача"} } + Languages%menu{ + yue{"Кытайча, Кантондук"} + zh{"Кытайча,Мандарин"} + } Languages%short{ az{"азерче"} - en_GB{"англисче (УБ)"} - en_US{"англисче (АКШ)"} } Scripts{ Arab{"Араб"} @@ -540,7 +544,7 @@ ky{ tibt{"Тибет сандары"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — баары"} category-list{"{0}: {1}"} diff --git a/source/data/lang/lag.txt b/source/data/lang/lag.txt index 6eee322..5c09a78 100644 --- a/source/data/lang/lag.txt +++ b/source/data/lang/lag.txt @@ -48,5 +48,5 @@ lag{ zh{"Kɨchíina"} zu{"Kɨzúulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/lb.txt b/source/data/lang/lb.txt index 956622a..bf0554c 100644 --- a/source/data/lang/lb.txt +++ b/source/data/lang/lb.txt @@ -385,6 +385,7 @@ lb{ nb{"Norwegesch Bokmål"} nd{"Nord-Ndebele-Sprooch"} nds{"Nidderdäitsch"} + nds_NL{"nds_NL"} ne{"Nepalesesch"} new{"Newari"} ng{"Ndonga"} @@ -618,7 +619,6 @@ lb{ } Languages%short{ en_GB{"Englesch (UK)"} - en_US{"Englesch (US)"} } Scripts{ Arab{"Arabesch"} @@ -875,7 +875,7 @@ lb{ VALENCIA{"Valencianesch"} WADEGILE{"Wade-Giles"} } - Version{"2.1.49.82"} + Version{"36"} codePatterns{ language{"Sprooch: {0}"} script{"Schrëft: {0}"} diff --git a/source/data/lang/lg.txt b/source/data/lang/lg.txt index c15ad55..70d934d 100644 --- a/source/data/lang/lg.txt +++ b/source/data/lang/lg.txt @@ -48,5 +48,5 @@ lg{ zh{"Lucayina"} zu{"Luzzulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/lkt.txt b/source/data/lang/lkt.txt index 72f1efd..e291e93 100644 --- a/source/data/lang/lkt.txt +++ b/source/data/lang/lkt.txt @@ -152,5 +152,5 @@ lkt{ zu{"Zulu Iyápi"} zza{"Zaza Iyápi"} } - Version{"2.1.48.22"} + Version{"36"} } diff --git a/source/data/lang/ln.txt b/source/data/lang/ln.txt index 9e7e221..74132e8 100644 --- a/source/data/lang/ln.txt +++ b/source/data/lang/ln.txt @@ -48,5 +48,5 @@ ln{ zh{"lisinwa"} zu{"zulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/lo.txt b/source/data/lang/lo.txt index 0c7e5f4..c3d32b0 100644 --- a/source/data/lang/lo.txt +++ b/source/data/lang/lo.txt @@ -537,6 +537,13 @@ lo{ zxx{"ບໍ່ມີເນື້ອຫາພາສາ"} zza{"ຊາຊາ"} } + Languages%long{ + zh_Hans{"ພາສາຈີນກາງ"} + zh_Hant{"ພາສາຈີນແມນດາຣິນດັ້ງເດີມ"} + } + Languages%menu{ + zh{"ພາສາຈີນ, ພາສາຈີນກາງ"} + } Languages%short{ az{"ອາ​ເຊີ​ຣີ"} en_GB{"ອັງກິດ (ສະຫະລາດຊະອານາຈັກ)"} @@ -877,7 +884,7 @@ lo{ VALLADER{"ວັລລາເດີ"} WADEGILE{"ການຖອດອັກສອນແບບເວດ-ໄຈລ໌"} } - Version{"2.1.48.17"} + Version{"36"} characterLabelPattern{ all{"{0} — ທັງໝົດ"} category-list{"{0}: {1}"} @@ -889,7 +896,7 @@ lo{ other{"{0} — ອື່ນໆ"} scripts{"ແບບຂຽນ — {0}"} strokes{ - other{"{0} ສະໂຕຣກ"} + other{"{0} ຈັງຫວະ"} } } codePatterns{ diff --git a/source/data/lang/lrc.txt b/source/data/lang/lrc.txt index edf2a1d..7f90c0d 100644 --- a/source/data/lang/lrc.txt +++ b/source/data/lang/lrc.txt @@ -296,7 +296,7 @@ lrc{ latn{"عأدأدیا لاتین"} } } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"{0}"} script{"{0}"} diff --git a/source/data/lang/lt.txt b/source/data/lang/lt.txt index 9e9277b..17253ee 100644 --- a/source/data/lang/lt.txt +++ b/source/data/lang/lt.txt @@ -639,10 +639,16 @@ lt{ zxx{"nėra kalbinio turinio"} zza{"zaza"} } + Languages%long{ + zh_Hans{"supaprastintoji mandarinų kinų"} + zh_Hant{"tradicinė mandarinų kinų"} + } + Languages%menu{ + yue{"kinų kalbos Kantono tarmė"} + zh{"kinų, mandarinų"} + } Languages%short{ az{"azeri"} - en_GB{"anglų (JK)"} - en_US{"anglų (JAV)"} } Scripts{ Afak{"Afaka"} @@ -736,6 +742,7 @@ lt{ Merc{"Merojitų rankraštinis"} Mero{"meroitik"} Mlym{"malajalių"} + Modi{"Modi"} Mong{"mongolų"} Moon{"mūn"} Mroo{"Mro"} @@ -1023,7 +1030,7 @@ lt{ VALENCIA{"Valenciečiai"} WADEGILE{"Wade-Giles Romanization"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} – visi"} category-list{"{0}: {1}"} diff --git a/source/data/lang/lu.txt b/source/data/lang/lu.txt index 3b99aad..bfc1f60 100644 --- a/source/data/lang/lu.txt +++ b/source/data/lang/lu.txt @@ -46,5 +46,5 @@ lu{ zh{"shinɛ"} zu{"Nzulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/luo.txt b/source/data/lang/luo.txt index 6c2e379..d73dab6 100644 --- a/source/data/lang/luo.txt +++ b/source/data/lang/luo.txt @@ -48,5 +48,5 @@ luo{ zh{"Kichina"} zu{"Kizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/luy.txt b/source/data/lang/luy.txt index c7f4990..0ee9608 100644 --- a/source/data/lang/luy.txt +++ b/source/data/lang/luy.txt @@ -48,5 +48,5 @@ luy{ zh{"Kichina"} zu{"Kizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/lv.txt b/source/data/lang/lv.txt index 130262c..cb33947 100644 --- a/source/data/lang/lv.txt +++ b/source/data/lang/lv.txt @@ -4,22 +4,22 @@ lv{ Keys{ calendar{"Kalendārs"} cf{"valūtas formāts"} - colAlternate{"Kārtošana, ignorējot simbolus"} - colBackwards{"Diakritisko zīmju kārtošana apgrieztā secībā"} - colCaseFirst{"Lielo/mazo burtu kārtošana"} - colCaseLevel{"Reģistrjutīgo rakstzīmju kārtošana"} - colNormalization{"Normalizētā kārtošana"} - colNumeric{"Kārtošana skaitliskā secībā"} - colStrength{"Kārtošanas pakāpe"} + colAlternate{"kārtošana, ignorējot simbolus"} + colBackwards{"akcentēto burtu kārtošana apgrieztā secībā"} + colCaseFirst{"kārtošana pēc lielajiem/mazajiem burtiem"} + colCaseLevel{"reģistrjutīga kārtošana"} + colNormalization{"normalizēta kārtošana"} + colNumeric{"kārtošana skaitliskā secībā"} + colStrength{"kārtošanas pakāpe"} collation{"kārtošanas secība"} - currency{"Valūta"} + currency{"valūta"} hc{"Stundu formāts (12 vai 24)"} lb{"Rindiņas pārtraukuma stils"} ms{"mērvienību sistēma"} numbers{"Cipari"} - timezone{"Laika josla"} - va{"Lokalizācijas variants"} - x{"Personīgai lietošanai"} + timezone{"laika josla"} + va{"lokalizācijas variants"} + x{"personīgai lietošanai"} } Languages{ aa{"afāru"} @@ -314,7 +314,7 @@ lv{ mg{"malagasu"} mga{"vidusīru"} mgh{"makua"} - mgo{"mgo"} + mgo{"metu"} mh{"māršaliešu"} mi{"maoru"} mic{"mikmaku"} @@ -540,10 +540,17 @@ lv{ zxx{"bez lingvistiska satura"} zza{"zazaki"} } + Languages%long{ + zh_Hans{"ķīniešu vienkāršotā (mandarīnu)"} + zh_Hant{"ķīniešu tradicionālā (mandarīnu)"} + } + Languages%menu{ + yue{"ķīniešu (kantoniešu)"} + zh{"ķīniešu (mandarīnu)"} + } Languages%short{ az{"azerbaidžāņu"} en_GB{"angļu (Lielbritānija)"} - en_US{"angļu (ASV)"} } Scripts{ Arab{"arābu"} @@ -558,7 +565,7 @@ lv{ Copt{"koptu"} Cyrl{"kirilica"} Cyrs{"senslāvu"} - Deva{"devānagāri"} + Deva{"dēvanāgari"} Egyd{"demotiskais raksts"} Egyh{"hierātiskais raksts"} Egyp{"ēģiptiešu hieroglifi"} @@ -799,7 +806,7 @@ lv{ VALENCIA{"valensiešu"} WADEGILE{"Veida-Džailza romanizācija"} } - Version{"2.1.48.43"} + Version{"36"} characterLabelPattern{ all{"{0} — visas"} category-list{"{0}: {1}"} diff --git a/source/data/lang/mas.txt b/source/data/lang/mas.txt index 9b4329d..851f417 100644 --- a/source/data/lang/mas.txt +++ b/source/data/lang/mas.txt @@ -48,5 +48,5 @@ mas{ zh{"nkʉtʉ́k ɔ́ɔ̄ lchina"} zu{"nkʉtʉ́k ɔ́ɔ̄ lzulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/mer.txt b/source/data/lang/mer.txt index f0f2d36..76a220f 100644 --- a/source/data/lang/mer.txt +++ b/source/data/lang/mer.txt @@ -48,5 +48,5 @@ mer{ zh{"Kĩchina"} zu{"Kĩzulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/mfe.txt b/source/data/lang/mfe.txt index 63bb7bd..c4243f5 100644 --- a/source/data/lang/mfe.txt +++ b/source/data/lang/mfe.txt @@ -48,5 +48,5 @@ mfe{ zh{"sinwa, mandarin"} zu{"zoulou"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/mg.txt b/source/data/lang/mg.txt index a2f717c..394a541 100644 --- a/source/data/lang/mg.txt +++ b/source/data/lang/mg.txt @@ -48,5 +48,5 @@ mg{ zh{"Sinoa, Mandarin"} zu{"Zolò"} } - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/lang/mgh.txt b/source/data/lang/mgh.txt index 3764c75..920b1d5 100644 --- a/source/data/lang/mgh.txt +++ b/source/data/lang/mgh.txt @@ -47,5 +47,5 @@ mgh{ zh{"Ichina"} zu{"Izulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/mgo.txt b/source/data/lang/mgo.txt index 0975c42..dffe0e2 100644 --- a/source/data/lang/mgo.txt +++ b/source/data/lang/mgo.txt @@ -18,7 +18,7 @@ mgo{ latn{"inu"} } } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"{0}"} script{"{0}"} diff --git a/source/data/lang/mi.txt b/source/data/lang/mi.txt index 5e2ac91..734eb11 100644 --- a/source/data/lang/mi.txt +++ b/source/data/lang/mi.txt @@ -29,6 +29,9 @@ mi{ zh_Hans{"Hainamana Māmā"} zh_Hant{"Hainamana Tukuiho"} } + Languages%menu{ + zh{"Hainamana Manarini"} + } Languages%short{ en_GB{"Ingarihi UK"} en_US{"Ingarihi US"} @@ -57,11 +60,11 @@ mi{ latn{"Ngā Mati Pākehā"} } } - Version{"2.1.49.82"} + Version{"36"} codePatterns{ - language{"{0}"} - script{"{0}"} - territory{"{0}"} + language{"Reo: {0}"} + script{"Momotuhi: {0}"} + territory{"Rohe: {0}"} } localeDisplayPattern{ keyTypePattern{"{0}: {1}"} diff --git a/source/data/lang/mk.txt b/source/data/lang/mk.txt index 5ae3c1d..8a99b1f 100644 --- a/source/data/lang/mk.txt +++ b/source/data/lang/mk.txt @@ -628,10 +628,17 @@ mk{ zxx{"без лингвистичка содржина"} zza{"заза"} } + Languages%long{ + zh_Hans{"поедноставен мандарински"} + zh_Hant{"традиционален мандарински"} + } + Languages%menu{ + yue{"кинески, кантонски"} + zh{"кинески, мандарински"} + } Languages%short{ az{"азерски"} en_GB{"англиски (во ОК)"} - en_US{"англиски (САД)"} } Scripts{ Afak{"афака"} @@ -890,7 +897,7 @@ mk{ jpan{"Јапонски броеви"} jpanfin{"Јапонски финансиски броеви"} khmr{"Кмерски цифри"} - knda{"Канада цифри"} + knda{"Каннада цифри"} laoo{"Лаошки цифри"} latn{"Арапски броеви"} mlym{"Малајаламски цифри"} @@ -909,7 +916,7 @@ mk{ PINYIN{"Пинјин романизација"} WADEGILE{"Вејд-Џајлс романизација"} } - Version{"2.1.48.27"} + Version{"36"} characterLabelPattern{ all{"{0} - сите"} category-list{"{0}: {1}"} diff --git a/source/data/lang/ml.txt b/source/data/lang/ml.txt index 95f2965..9a6c8d2 100644 --- a/source/data/lang/ml.txt +++ b/source/data/lang/ml.txt @@ -91,6 +91,7 @@ ml{ car{"കാരിബ്"} cay{"കയൂഗ"} cch{"അറ്റ്സാം"} + ccp{"ചക്‌മ"} ce{"ചെചൻ"} ceb{"സെബുവാനോ"} cgg{"ചിഗ"} @@ -134,7 +135,7 @@ ml{ dv{"ദിവെഹി"} dyo{"യോല-ഫോന്യി"} dyu{"ദ്വൈല"} - dz{"സോങ്ക"} + dz{"ദ്‌സോങ്ക"} dzg{"ഡാസാഗ"} ebu{"എംബു"} ee{"യൂവ്"} @@ -554,6 +555,10 @@ ml{ zxx{"ഭാഷാപരമായ ഉള്ളടക്കമൊന്നുമില്ല"} zza{"സാസാ"} } + Languages%menu{ + yue{"ചൈനീസ്, കാന്റണീസ്"} + zh{"ചൈനീസ്, മാൻഡറിൻ"} + } Languages%short{ az{"അസേരി"} en_GB{"യു.കെ. ഇംഗ്ലീഷ്"} @@ -899,7 +904,7 @@ ml{ POSIX{"കമ്പ്യൂട്ടർ"} REVISED{"പരിഷ്ക്കരിച്ച ലിപി"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} — എല്ലാം"} category-list{"{0}: {1}"} diff --git a/source/data/lang/mn.txt b/source/data/lang/mn.txt index b20cae2..27eb431 100644 --- a/source/data/lang/mn.txt +++ b/source/data/lang/mn.txt @@ -57,6 +57,7 @@ mn{ bug{"буги"} byn{"блин"} ca{"каталан"} + ccp{"чакма"} ce{"чечень"} ceb{"себуано"} cgg{"чига"} @@ -258,6 +259,7 @@ mn{ naq{"нама"} nb{"норвегийн букмол"} nd{"хойд ндебеле"} + nds{"доод герман"} nds_NL{"бага саксон"} ne{"балба"} new{"невари"} @@ -374,7 +376,7 @@ mn{ twq{"тасавак"} ty{"таити"} tyv{"тува"} - tzm{"Төв Атласын тамазайт"} + tzm{"Төв Атласын тамазигхт"} udm{"удмурт"} ug{"уйгур"} uk{"украин"} @@ -400,7 +402,7 @@ mn{ yi{"иддиш"} yo{"ёруба"} yue{"кантон"} - zgh{"Мороккогийн стандарт тамазайт"} + zgh{"стандарт тамазайт (Морокко)"} zh{"хятад"} zh_Hans{"хялбаршуулсан хятад"} zh_Hant{"уламжлалт хятад"} @@ -409,6 +411,14 @@ mn{ zxx{"хэл зүйн агуулгагүй"} zza{"заза"} } + Languages%long{ + zh_Hans{"хялбаршуулсан мандарин хятад"} + zh_Hant{"уламжлалт мандарин хятад"} + } + Languages%menu{ + yue{"хятад, кантон"} + zh{"хятад, мандарин"} + } Languages%short{ az{"азери"} en_GB{"британи-англи"} @@ -511,7 +521,7 @@ mn{ beng{"бенгал тоо"} deva{"деванагари тоо"} ethi{"этиоп тоо"} - fullwide{"бүрэн хэмжээтэй тоо"} + fullwide{"бүтэн-өргөнтэй тоо"} geor{"гүрж тоо"} grek{"грек тоо"} greklow{"жижиг грек тоо"} @@ -542,7 +552,7 @@ mn{ tibt{"төвд тоо"} } } - Version{"2.1.48.17"} + Version{"36"} characterLabelPattern{ all{"{0} - Бүгд"} category-list{"{0}: {1}"} diff --git a/source/data/lang/mr.txt b/source/data/lang/mr.txt index f98c969..1d06d43 100644 --- a/source/data/lang/mr.txt +++ b/source/data/lang/mr.txt @@ -83,6 +83,7 @@ mr{ cad{"कॅड्डो"} car{"कॅरिब"} cch{"अत्सम"} + ccp{"चाकमा"} ce{"चेचेन"} ceb{"सिबुआनो"} cgg{"किगा"} @@ -540,6 +541,14 @@ mr{ zxx{"भाषावैज्ञानिक सामग्री नाही"} zza{"झाझा"} } + Languages%long{ + zh_Hans{"सरलीकृत मँडेरिन चीनी"} + zh_Hant{"पारंपारिक मँडेरिन चीनी"} + } + Languages%menu{ + yue{"चीनी, कँटोनीज"} + zh{"चीनी, मँडेरिन"} + } Languages%short{ az{"अझेरी"} en_GB{"यू.के. इंग्रजी"} @@ -835,7 +844,7 @@ mr{ PINYIN{"पिनयिन रोमनायझेशन"} WADEGILE{"वादे-गिलेस रोमनायझेशन"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} — सर्व"} category-list{"{0}: {1}"} diff --git a/source/data/lang/ms.txt b/source/data/lang/ms.txt index 48877db..e8c7b35 100644 --- a/source/data/lang/ms.txt +++ b/source/data/lang/ms.txt @@ -468,6 +468,14 @@ ms{ zxx{"Tiada kandungan linguistik"} zza{"Zaza"} } + Languages%long{ + zh_Hans{"Cina Mandarin Ringkas"} + zh_Hant{"Cina Mandarin Tradisional"} + } + Languages%menu{ + yue{"Cina, Kantonis"} + zh{"Cina, Mandarin"} + } Languages%short{ az{"Azeri"} en_GB{"Inggeris U.K."} @@ -478,44 +486,164 @@ ms{ ug{"Uighur"} } Scripts{ + Adlm{"Adlam"} + Aghb{"Kaukasia Albania"} Arab{"Arab"} + Armi{"Aramia Imperial"} Armn{"Armenia"} + Avst{"Avestan"} + Bali{"Bali"} + Bamu{"Bamu"} + Bass{"Bassa Vah"} + Batk{"Batak"} Beng{"Benggala"} + Bhks{"Bhaisuki"} Bopo{"Bopomofo"} + Brah{"Brahmi"} Brai{"Braille"} + Bugi{"Bugis"} + Buhd{"Buhid"} + Cakm{"Chakma"} + Cans{"Cans"} + Cari{"Carian"} + Cham{"Cham"} + Cher{"Cherokee"} + Copt{"Coptic"} + Cprt{"Cypriot"} Cyrl{"Cyril"} Deva{"Devanagari"} + Dogr{"Dogra"} + Dsrt{"Deseret"} + Dupl{"Trengkas Duployan"} + Egyp{"Hiroglif Mesir"} + Elba{"Elbasan"} + Elym{"Elymaic"} Ethi{"Ethiopia"} Geor{"Georgia"} + Glag{"Glagolitik"} + Gong{"Gunjala Gondi"} + Gonm{"Masaram Gonti"} + Goth{"Gothic"} + Gran{"Grantha"} Grek{"Greek"} Gujr{"Gujarat"} Guru{"Gurmukhi"} Hanb{"Han dengan Bopomofo"} Hang{"Hangul"} Hani{"Han"} + Hano{"Hanunoo"} Hans{"Ringkas"} Hant{"Tradisional"} + Hatr{"Hatran"} Hebr{"Ibrani"} Hira{"Hiragana"} + Hluw{"Hiroglif Anatoli"} + Hmng{"Pahawh Hmong"} + Hmnp{"Nyiakeng Puachue Hmong"} Hrkt{"Ejaan sukuan Jepun"} + Hung{"Hungary Lama"} + Ital{"Italik Lama"} Jamo{"Jamo"} + Java{"Jawa"} Jpan{"Jepun"} + Kali{"Kayah Li"} Kana{"Katakana"} + Khar{"Kharoshthi"} Khmr{"Khmer"} + Khoj{"Khojki"} Knda{"Kannada"} Kore{"Korea"} + Kthi{"Kaithi"} + Lana{"Lanna"} Laoo{"Lao"} Latn{"Latin"} + Lepc{"Lepcha"} + Limb{"Limbu"} + Lina{"Linear A"} + Linb{"Linear B"} + Lisu{"Fraser"} + Lyci{"Lycia"} + Lydi{"Lydia"} + Mahj{"Mahajani"} + Maka{"Makasar"} + Mand{"Mandaean"} + Mani{"Manichaean"} + Marc{"Marchen"} + Medf{"Medefaidrin"} + Mend{"Mende"} + Merc{"Kursif Meroitic"} + Mero{"Meroitic"} Mlym{"Malayalam"} + Modi{"Modi"} Mong{"Mongolia"} + Mroo{"Mro"} + Mtei{"Meitei Mayek"} + Mult{"Multani"} Mymr{"Myammar"} + Nand{"Nandinagari"} + Narb{"Arab Utara Lama"} + Nbat{"Nabataean"} + Newa{"Newa"} + Nkoo{"N’ko"} + Nshu{"Nushu"} + Ogam{"Ogham"} + Olck{"Ol Chiki"} + Orkh{"Orkhon"} Orya{"Oriya"} + Osge{"Osage"} + Osma{"Osmanya"} + Palm{"Palmyrene"} + Pauc{"Pau Cin Hau"} + Perm{"Permic Lama"} + Phag{"Phags-pa"} + Phli{"Inskripsi Pahlavi"} + Phlp{"Pslater Pahlavi"} + Phnx{"Phoenicia"} + Plrd{"Fonetik Pollard"} + Prti{"Inskripsi Parthian"} + Qaag{"Zawgyi"} + Rjng{"Rejang"} + Rohg{"Hanifi Rohingya"} + Runr{"Runic"} + Samr{"Samaritan"} + Sarb{"Arab Selatan Lama"} + Saur{"Saurashtra"} + Sgnw{"Tulisan Isyarat"} + Shaw{"Shavia"} + Shrd{"Sharada"} + Sidd{"Siddham"} + Sind{"Khudawadi"} Sinh{"Sinhala"} + Sogd{"Sogdia"} + Sogo{"Sogdia Lama"} + Sora{"Sora Sompeng"} + Soyo{"Soyombo"} + Sund{"Sunda"} + Sylo{"Syloti Nagri"} + Syrc{"Syria"} + Tagb{"Tagbanwa"} + Takr{"Takri"} + Tale{"Tai Le"} + Talu{"Tai Lue Baharu"} Taml{"Tamil"} + Tang{"Tangut"} + Tavt{"Tai Viet"} Telu{"Telugu"} + Tfng{"Tifinagh"} + Tglg{"Tagalog"} Thaa{"Thaana"} Thai{"Thai"} Tibt{"Tibet"} + Tirh{"Tirhuta"} + Ugar{"Ugaritic"} + Vaii{"Vai"} + Wara{"Varang Kshiti"} + Wcho{"Wancho"} + Xpeo{"Parsi Lama"} + Xsux{"Aksara Paku Sumero-Akkadia"} + Yiii{"Yi"} + Zanb{"Segi Empat Zanabazar"} + Zinh{"Diwarisi"} Zmth{"Tatatanda matematik"} Zsye{"Emoji"} Zsym{"Simbol"} @@ -649,6 +777,7 @@ ms{ finance{"Angka Kewangan"} fullwide{"Digit Lebar Penuh"} geor{"Angka Georgia"} + gong{"Digit Gunjala Gondi"} gonm{"Digit Masaram Gondi"} grek{"Angka Greek"} greklow{"Angka Huruf Kecil Greek"} @@ -661,6 +790,7 @@ ms{ hantfin{"Angka Kewangan Cina Tradisional"} hebr{"Angka Ibrani"} hmng{"Digit Pahawh Hmong"} + hmnp{"Digit Nyiakeng Puachue Hmong"} java{"Digit Jawa"} jpan{"Angka Jepun"} jpanfin{"Angka Kewangan Jepun"} @@ -691,6 +821,7 @@ ms{ olck{"Digit Ol Chiki"} orya{"Digit Oriya"} osma{"Digit Osmanya"} + rohg{"Digit Hanifi Rohingya"} roman{"Angka Roman"} romanlow{"Angka Huruf Kecil Roman"} saur{"Digit Saurashtra"} @@ -710,13 +841,14 @@ ms{ traditional{"Angka Tradisional"} vaii{"Digit Vai"} wara{"Digit Warang Citi"} + wcho{"Digit Wancho"} } } Variants{ POSIX{"Komputer"} SCOTLAND{"Inggeris Standard Scotland"} } - Version{"2.1.49.2"} + Version{"36"} characterLabelPattern{ all{"{0} — Semua"} category-list{"{0}: {1}"} diff --git a/source/data/lang/mt.txt b/source/data/lang/mt.txt index 4755206..274fb63 100644 --- a/source/data/lang/mt.txt +++ b/source/data/lang/mt.txt @@ -511,8 +511,6 @@ mt{ } Languages%short{ az{"Ażeri"} - en_GB{"Ingliż (UK)"} - en_US{"Ingliż (US)"} } Scripts{ Arab{"Għarbi"} @@ -559,7 +557,7 @@ mt{ Variants{ REVISED{"Ortografija Irriveda"} } - Version{"2.1.49.82"} + Version{"36"} codePatterns{ language{"Lingwa: {0}"} script{"Skript: {0}"} diff --git a/source/data/lang/mua.txt b/source/data/lang/mua.txt index adcfd42..3cef5be 100644 --- a/source/data/lang/mua.txt +++ b/source/data/lang/mua.txt @@ -48,5 +48,5 @@ mua{ zh{"zah Syiŋ"} zu{"Zulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/my.txt b/source/data/lang/my.txt index a52dd15..6b50ca1 100644 --- a/source/data/lang/my.txt +++ b/source/data/lang/my.txt @@ -28,6 +28,7 @@ my{ ang{"အင်ဂလို ဆက္ကစွန်"} anp{"အန်ဂီကာ"} ar{"အာရဗီ"} + ar_001{"ခေတ်သစ် ရှေ့ဆောင် အာရဗီ"} arn{"မာပုချီ"} arp{"အာရာပါဟို"} as{"အာသံ"} @@ -58,6 +59,7 @@ my{ bug{"ဘူဂစ်စ်"} byn{"ဘလင်"} ca{"ကတ်တလန်"} + ccp{"ချတ်ခ်မာ"} ce{"ချက်ချန်း"} ceb{"စီဗူအာနို"} cgg{"ချီဂါ"} @@ -107,6 +109,7 @@ my{ eo{"အက်စ်ပရန်တို"} es{"စပိန်"} es_ES{"စပိန် (ဥရောပ)"} + es_MX{"စပိန် (မက္ကဆီကို)"} et{"အက်စ်တိုးနီးယား"} eu{"ဘာစ်ခ်"} ewo{"အီဝန်ဒို"} @@ -424,6 +427,14 @@ my{ zxx{"ဘာသာစကားနှင့် ပတ်သက်သောအရာ မရှိပါ"} zza{"ဇာဇာ"} } + Languages%long{ + zh_Hans{"ပြည်ကြီးတရုတ် (ရိုးရှင်း)"} + zh_Hant{"ပြည်ကြီးတရုတ် (ရိုးရာ)"} + } + Languages%menu{ + yue{"တရုတ်၊ ကွမ်းတုံ"} + zh{"ပြည်ကြီးတရုတ်"} + } Languages%short{ az{"အဇာရီ"} en_GB{"ယူကေ အင်္ဂလိပ်"} @@ -580,7 +591,7 @@ my{ REVISED{"ပြန်လည်စီစစ်ထားသော ရေးထုံး"} SCOTLAND{"စကော့ စံ အင်္ဂလိပ်"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — အားလုံး"} category-list{"{0} − {1}"} diff --git a/source/data/lang/mzn.txt b/source/data/lang/mzn.txt index 3c0139e..d68457c 100644 --- a/source/data/lang/mzn.txt +++ b/source/data/lang/mzn.txt @@ -265,7 +265,7 @@ mzn{ Hans{"ساده‌بَیی هان"} Hant{"استاندارد ِسنتی هانت"} } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"زوون: {0}"} script{"اسکریپت: {0}"} diff --git a/source/data/lang/naq.txt b/source/data/lang/naq.txt index 80617d1..4c97c78 100644 --- a/source/data/lang/naq.txt +++ b/source/data/lang/naq.txt @@ -48,5 +48,5 @@ naq{ zh{"Chineesǁî gowab, Mandarinni"} zu{"Zulub"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/nb.txt b/source/data/lang/nb.txt index 7771ac7..05a6c8e 100644 --- a/source/data/lang/nb.txt +++ b/source/data/lang/nb.txt @@ -18,7 +18,7 @@ nb{ ms{"målesystem"} numbers{"tall"} timezone{"tidssone"} - va{"Språkvariant"} + va{"språkvariant"} x{"privat bruk"} } Languages{ @@ -109,6 +109,7 @@ nb{ car{"karibisk"} cay{"cayuga"} cch{"atsam"} + ccp{"chakma"} ce{"tsjetsjensk"} ceb{"cebuansk"} cgg{"kiga"} @@ -626,6 +627,13 @@ nb{ zxx{"uten språklig innhold"} zza{"zazaisk"} } + Languages%long{ + zh_Hans{"forenklet mandarinkinesisk"} + zh_Hant{"tradisjonell mandarinkinesisk"} + } + Languages%menu{ + zh{"kinesisk, mandarin"} + } Languages%short{ az{"azeri"} } @@ -1013,6 +1021,7 @@ nb{ KSCOR{"standard ortografi"} LAUKIKA{"laukika"} LIPAW{"resia med Lipovaz-dialekt"} + LUNA1918{"LUNA1918"} METELKO{"Metelko-alfabet"} MONOTON{"monotonisk rettskriving"} NDYUKA{"ndyuka-dialekt"} @@ -1021,12 +1030,15 @@ nb{ NULIK{"moderne volapük"} OSOJS{"oseacco- og osojanedialekt"} PAMAKA{"Pamaka-dialekt"} + PETR1708{"PETR1708"} PINYIN{"pinyin"} POLYTON{"polytonisk rettskriving"} POSIX{"dataspråk"} + PUTER{"PUTER"} REVISED{"revidert ortografi"} RIGIK{"klassisk volapük"} ROZAJ{"resisk dialekt"} + RUMGR{"RUMGR"} SAAHO{"saho"} SCOTLAND{"skotsk standard engelsk"} SCOUSE{"scouse dialekt"} @@ -1045,7 +1057,7 @@ nb{ VALLADER{"vallader"} WADEGILE{"Wade-Giles-romanisering"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} – alt"} category-list{"{0}: {1}"} diff --git a/source/data/lang/nd.txt b/source/data/lang/nd.txt index 7050c2c..0005698 100644 --- a/source/data/lang/nd.txt +++ b/source/data/lang/nd.txt @@ -48,5 +48,5 @@ nd{ zh{"isi-China"} zu{"isi-Zulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/nds.txt b/source/data/lang/nds.txt index f032c1f..2ff31d1 100644 --- a/source/data/lang/nds.txt +++ b/source/data/lang/nds.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nds{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/ne.txt b/source/data/lang/ne.txt index 0ad9ae1..2b8ee3d 100644 --- a/source/data/lang/ne.txt +++ b/source/data/lang/ne.txt @@ -97,6 +97,7 @@ ne{ car{"क्यारिब"} cay{"कायुगा"} cch{"अट्साम"} + ccp{"चाक्मा"} ce{"चेचेन"} ceb{"सेबुआनो"} cgg{"चिगा"} @@ -571,6 +572,14 @@ ne{ zxx{"भाषिक सामग्री छैन"} zza{"जाजा"} } + Languages%long{ + zh_Hans{"सरलिकृत म्यान्डरिन चिनियाँ"} + zh_Hant{"परम्परागत म्यान्डरिन चिनियाँ"} + } + Languages%menu{ + yue{"चिनियाँ, क्यान्टोनिज"} + zh{"चिनियाँ, म्यान्डरिन"} + } Languages%short{ az{"अजेरी"} en_GB{"संयुक्त अधिराज्य अङ्ग्रेजी"} @@ -798,7 +807,7 @@ ne{ AREVELA{"पूर्वी आर्मेनियाली"} POSIX{"कम्प्युटर"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0}-सबै"} category-list{"{0}: {1}"} diff --git a/source/data/lang/nl.txt b/source/data/lang/nl.txt index 8722818..52b8d3d 100644 --- a/source/data/lang/nl.txt +++ b/source/data/lang/nl.txt @@ -621,10 +621,16 @@ nl{ zxx{"geen linguïstische inhoud"} zza{"Zaza"} } + Languages%long{ + zh_Hans{"Mandarijn (vereenvoudigd)"} + zh_Hant{"Mandarijn (traditioneel)"} + } + Languages%menu{ + yue{"Kantonees"} + zh{"Mandarijn"} + } Languages%short{ az{"Azeri"} - en_GB{"Engels (VK)"} - en_US{"Engels (VS)"} } Languages%variant{ ps{"Pashto"} @@ -633,6 +639,7 @@ nl{ Adlm{"Adlam"} Afak{"Defaka"} Aghb{"Kaukasisch Albanees"} + Ahom{"Ahom"} Arab{"Arabisch"} Armi{"Keizerlijk Aramees"} Armn{"Armeens"} @@ -652,6 +659,7 @@ nl{ Cakm{"Chakma"} Cans{"Verenigde Canadese Aboriginal-symbolen"} Cari{"Carisch"} + Cham{"Cham"} Cher{"Cherokee"} Cirt{"Cirth"} Copt{"Koptisch"} @@ -731,6 +739,7 @@ nl{ Merc{"Meroitisch cursief"} Mero{"Meroïtisch"} Mlym{"Malayalam"} + Modi{"Modi"} Mong{"Mongools"} Moon{"Moon"} Mroo{"Mro"} @@ -760,6 +769,7 @@ nl{ Phnx{"Foenicisch"} Plrd{"Pollard-fonetisch"} Prti{"Inscriptioneel Parthisch"} + Qaag{"Qaag"} Rjng{"Rejang"} Rohg{"Hanifi Rohingya"} Roro{"Rongorongo"} @@ -1114,7 +1124,7 @@ nl{ WADEGILE{"Wade-Giles-romanisering"} XSISTEMO{"X-sistemo"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — alle"} category-list{"{0}: {1}"} diff --git a/source/data/lang/nmg.txt b/source/data/lang/nmg.txt index a64cb21..5b77d2a 100644 --- a/source/data/lang/nmg.txt +++ b/source/data/lang/nmg.txt @@ -47,5 +47,5 @@ nmg{ zh{"Kiɛl bó chinois"} zu{"Zulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/nn.txt b/source/data/lang/nn.txt index 3a19af8..69ca9c8 100644 --- a/source/data/lang/nn.txt +++ b/source/data/lang/nn.txt @@ -761,7 +761,7 @@ nn{ TARASK{"taraskievica-ortografi"} VALENCIA{"valensisk dialekt"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} – alt"} category-list{"{0}: {1}"} diff --git a/source/data/lang/nnh.txt b/source/data/lang/nnh.txt index e65c96c..8a93c8f 100644 --- a/source/data/lang/nnh.txt +++ b/source/data/lang/nnh.txt @@ -24,5 +24,5 @@ nnh{ yav{"Shwóŋò pʉa shÿó Mbafìa"} ybb{"Shwóŋò Tsaŋ"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/nus.txt b/source/data/lang/nus.txt index b2996c7..f7c2e39 100644 --- a/source/data/lang/nus.txt +++ b/source/data/lang/nus.txt @@ -48,5 +48,5 @@ nus{ zh{"Thok cayna"} zu{"Thok dhuluni"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/nyn.txt b/source/data/lang/nyn.txt index 23adbcb..a271e46 100644 --- a/source/data/lang/nyn.txt +++ b/source/data/lang/nyn.txt @@ -48,5 +48,5 @@ nyn{ zh{"Oruchaina"} zu{"Oruzuru"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/om.txt b/source/data/lang/om.txt index d86dda7..df206ac 100644 --- a/source/data/lang/om.txt +++ b/source/data/lang/om.txt @@ -92,5 +92,5 @@ om{ Scripts{ Latn{"Latin"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/or.txt b/source/data/lang/or.txt index 9c91d09..55db490 100644 --- a/source/data/lang/or.txt +++ b/source/data/lang/or.txt @@ -518,6 +518,14 @@ or{ zxx{"କୌଣସି ଲିଙ୍ଗୁଇଷ୍ଟ ସାମଗ୍ରୀ ନାହିଁ"} zza{"ଜାଜା"} } + Languages%long{ + zh_Hans{"ସରଳୀକୃତ ମାଣ୍ଡାରିନ୍ ଚାଇନିଜ୍"} + zh_Hant{"ପାରମ୍ପରିକ ମାଣ୍ଡାରିନ୍ ଚାଇନିଜ୍"} + } + Languages%menu{ + yue{"ଚାଇନିଜ୍‌, କାନଟୋନେସେ"} + zh{"ଚାଇନିଜ୍, ମାଣ୍ଡାରିନ୍"} + } Languages%short{ az{"ଆଜେରି"} en_GB{"ଯୁକ୍ତରାଜ୍ୟ ଇଂରାଜୀ"} @@ -739,7 +747,7 @@ or{ tibt{"ତିବତୀ ଅଙ୍କଗୁଡ଼ିକ"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — ସମସ୍ତ"} category-list{"{0}: {1}"} diff --git a/source/data/lang/os.txt b/source/data/lang/os.txt index 08243d7..064e6fc 100644 --- a/source/data/lang/os.txt +++ b/source/data/lang/os.txt @@ -96,7 +96,7 @@ os{ latn{"Нырыккон цифрӕтӕ"} } } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"Ӕвзаг: {0}"} script{"Скрипт: {0}"} diff --git a/source/data/lang/pa.txt b/source/data/lang/pa.txt index b15a8c6..0c02b68 100644 --- a/source/data/lang/pa.txt +++ b/source/data/lang/pa.txt @@ -60,6 +60,7 @@ pa{ bug{"ਬਗਨੀਜ਼"} byn{"ਬਲਿਨ"} ca{"ਕੈਟਾਲਾਨ"} + ccp{"ਚਕਮਾ"} ce{"ਚੇਚਨ"} ceb{"ਸੀਬੂਆਨੋ"} cgg{"ਚੀਗਾ"} @@ -237,7 +238,7 @@ pa{ men{"ਮੇਂਡੇ"} mer{"ਮੇਰੂ"} mfe{"ਮੋਰੀਸਿਅਨ"} - mg{"ਮੇਲੇਗਸੀ"} + mg{"ਮਾਲਾਗੈਸੀ"} mgh{"ਮਖੋਵਾ-ਮਿੱਟੋ"} mgo{"ਮੇਟਾ"} mh{"ਮਾਰਸ਼ਲੀਜ਼"} @@ -422,10 +423,16 @@ pa{ zxx{"ਬੋਲੀ ਸੰਬੰਧੀ ਕੋਈ ਸਮੱਗਰੀ ਨਹੀਂ"} zza{"ਜ਼ਾਜ਼ਾ"} } + Languages%long{ + zh_Hans{"ਚੀਨੀ ਮੈਂਡਰਿਨ (ਸਰਲ)"} + zh_Hant{"ਚੀਨੀ ਮੈਂਡਰਿਨ (ਰਵਾਇਤੀ)"} + } + Languages%menu{ + yue{"ਚੀਨੀ, ਕੈਂਟੋਨੀਜ਼"} + zh{"ਚੀਨੀ, ਮੈਂਡਰਿਨ"} + } Languages%short{ az{"ਅਜ਼ੇਰੀ"} - en_GB{"ਅੰਗਰੇਜ਼ੀ (ਯੂ.ਕੇ.)"} - en_US{"ਅੰਗਰੇਜ਼ੀ (ਯੂ.ਐੱਸ.)"} } Scripts{ Arab{"ਅਰਬੀ"} @@ -566,7 +573,7 @@ pa{ tibt{"ਤਿੱਬਤੀ ਅੰਕ"} } } - Version{"2.1.48.20"} + Version{"36"} characterLabelPattern{ all{"{0} — ਸਭ"} category-list{"{0}: {1}"} diff --git a/source/data/lang/pa_Arab.txt b/source/data/lang/pa_Arab.txt index 10d144d..007a983 100644 --- a/source/data/lang/pa_Arab.txt +++ b/source/data/lang/pa_Arab.txt @@ -9,5 +9,5 @@ pa_Arab{ Arab{"عربی"} Guru{"گُرمُکھی"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/pa_Guru.txt b/source/data/lang/pa_Guru.txt index 650b3ed..fb27b98 100644 --- a/source/data/lang/pa_Guru.txt +++ b/source/data/lang/pa_Guru.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pa_Guru{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/pl.txt b/source/data/lang/pl.txt index e959a0d..bcbd79f 100644 --- a/source/data/lang/pl.txt +++ b/source/data/lang/pl.txt @@ -6,16 +6,16 @@ pl{ cf{"format waluty"} colAlternate{"Sortowanie ignorujące symbole"} colBackwards{"Odwrotne sortowanie ze znakami akcentowanymi"} - colCaseFirst{"Porządek wielkie/małe litery"} + colCaseFirst{"Kolejność wielkie/małe litery"} colCaseLevel{"Sortowanie uwzględniające wielkość liter"} colNormalization{"Sortowanie znormalizowane"} colNumeric{"Sortowanie numeryczne"} colStrength{"Siła sortowania"} - collation{"porządek sortowania"} + collation{"kolejność sortowania"} currency{"waluta"} hc{"cykl (12- lub 24-godzinny)"} lb{"styl podziału wiersza"} - ms{"układ miar"} + ms{"system miar"} numbers{"cyfry"} timezone{"Strefa czasowa"} va{"Wariant regionalny"} @@ -640,10 +640,15 @@ pl{ zxx{"brak treści o charakterze językowym"} zza{"zazaki"} } + Languages%long{ + zh_Hans{"standardowy chiński uproszczony"} + zh_Hant{"standardowy chiński tradycyjny"} + } + Languages%menu{ + zh{"chiński, mandaryński"} + } Languages%short{ az{"azerski"} - en_GB{"angielski (Wlk. Bryt.)"} - en_US{"angielski (USA)"} } Languages%variant{ ps{"pasztuński"} @@ -684,11 +689,11 @@ pl{ Glag{"głagolica"} Goth{"gotyckie"} Grek{"greckie"} - Gujr{"gudźarackie"} + Gujr{"gudżarati"} Guru{"gurmukhi"} - Hanb{"hanb"} - Hang{"hangyl"} - Hani{"han"} + Hanb{"chińskie z bopomofo"} + Hang{"hangul"} + Hani{"chińskie"} Hano{"hanunoo"} Hans{"uproszczone"} Hant{"tradycyjne"} @@ -767,7 +772,7 @@ pl{ Teng{"tengwar"} Tfng{"tifinagh (berberski)"} Tglg{"tagalog"} - Thaa{"thaana"} + Thaa{"taana"} Thai{"tajskie"} Tibt{"tybetańskie"} Ugar{"ugaryckie"} @@ -778,15 +783,15 @@ pl{ Yiii{"yi"} Zinh{"dziedziczone"} Zmth{"notacja matematyczna"} - Zsye{"Emoji"} + Zsye{"emoji"} Zsym{"symbole"} Zxxx{"język bez systemu pisma"} Zyyy{"wspólne"} - Zzzz{"nieznany skrypt"} + Zzzz{"nieznane pismo"} } Scripts%stand-alone{ - Hans{"uproszczone han"} - Hant{"tradycyjne han"} + Hans{"chińskie uproszczone"} + Hant{"chińskie tradycyjne"} } Scripts%variant{ Arab{"perso-arabskie"} @@ -796,13 +801,13 @@ pl{ buddhist{"kalendarz buddyjski"} chinese{"kalendarz chiński"} coptic{"Kalendarz koptyjski"} - dangi{"kalendarz dangi"} + dangi{"kalendarz koreański"} ethiopic{"kalendarz etiopski"} ethiopic-amete-alem{"Kalendarz etiopski Amete Alem"} gregorian{"kalendarz gregoriański"} hebrew{"kalendarz hebrajski"} indian{"narodowy kalendarz hinduski"} - islamic{"kalendarz islamski (metoda wzrokowa)"} + islamic{"kalendarz muzułmański"} islamic-civil{"kalendarz islamski (metoda obliczeniowa)"} islamic-rgsa{"kalendarz islamski (Arabia Saudyjska, metoda wzrokowa)"} islamic-tbla{"kalendarz islamski (metoda obliczeniowa, epoka astronomiczna)"} @@ -852,16 +857,16 @@ pl{ big5han{"chiński tradycyjny porządek sortowania - Big5"} compat{"poprzedni porządek sortowania, dla zgodności"} dictionary{"sortowanie słownikowe"} - ducet{"domyślne sortowanie Unicode"} + ducet{"domyślna kolejność sortowania Unicode"} eor{"europejskie reguły określania kolejności"} gb2312han{"chiński uproszczony porządek sortowania - GB2312"} phonebook{"porządek sortowania książki telefonicznej"} phonetic{"sortowanie fonetyczne"} pinyin{"porządek sortowania pinyin"} reformed{"sortowanie zreformowane"} - search{"wyszukiwanie ogólnego użytku"} + search{"wyszukiwanie ogólnego zastosowania"} searchjl{"Wyszukiwanie według początkowej spółgłoski hangul"} - standard{"sortowanie standardowe"} + standard{"standardowa kolejność sortowania"} stroke{"porządek akcentów"} traditional{"tradycyjny porządek sortowania"} unihan{"sortowanie wg kluczy i ich liczby kresek"} @@ -883,8 +888,8 @@ pl{ strict{"ścisły styl podziału wiersza"} } m0{ - bgn{"BGN"} - ungegn{"UNGEGN"} + bgn{"transliteracja BGN"} + ungegn{"transliteracja UNGEGN"} } ms{ metric{"system metryczny"} @@ -967,7 +972,7 @@ pl{ VALENCIA{"walencki"} WADEGILE{"latynizacja Wade’a i Gilesa"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} — wszystko"} category-list{"{0}: {1}"} diff --git a/source/data/lang/ps.txt b/source/data/lang/ps.txt index a1718f2..8fe5af4 100644 --- a/source/data/lang/ps.txt +++ b/source/data/lang/ps.txt @@ -6,6 +6,10 @@ ps{ cf{"اسعارو بڼه"} collation{"ترتيب"} currency{"اسعارو"} + hc{"د ساعت چکر (۱۲ پرتله ۲۴)"} + lb{"د ماتې کرښې ډول"} + ms{"د ناپ نظام"} + numbers{"شمېرې"} } Languages{ aa{"افري"} @@ -38,14 +42,14 @@ ps{ ban{"بالنی"} bas{"باسا"} be{"بېلاروسي"} - bem{"بیبا"} + bem{"بيمبا"} bez{"بينا"} bg{"بلغاري"} bho{"بهوجپوري"} bi{"بسلاما"} bin{"بینی"} bla{"سکسيکا"} - bm{"بامره"} + bm{"بمبارا"} bn{"بنگالي"} bo{"تبتي"} br{"برېتون"} @@ -55,7 +59,7 @@ ps{ byn{"بلین"} ca{"کټلاني"} ccp{"چکما"} - ce{"چيچيني"} + ce{"چيچني"} ceb{"سیبوانوي"} cgg{"چيگايي"} ch{"چمورو"} @@ -71,7 +75,7 @@ ps{ cu{"د کليسا سلاوي"} cv{"چوواشي"} cy{"ويلشي"} - da{"دانمارکي"} + da{"ډنمارکي"} dak{"داکوتا"} dar{"درگوا"} dav{"ټایټا"} @@ -80,32 +84,31 @@ ps{ de_CH{"سوئس لوی جرمن"} dgr{"داگرب"} dje{"زرما"} - dsb{"لوړې سربي"} + dsb{"کښته سربيايي"} dua{"دوالا"} dv{"ديویهی"} dyo{"جولا فوني"} dz{"ژونگکه"} dzg{"ډزاګا"} - ebu{"ایمو"} + ebu{"ايمبو"} ee{"ايو"} efi{"افک"} eka{"اکجک"} el{"یوناني"} - en{"انګریزي"} - en_AU{"انګليسي (AU)"} + en{"انګليسي"} + en_AU{"آسټرالياوي انګليسي"} en_CA{"کاناډايي انګلیسي"} en_GB{"بريتانوی انګلیسي"} - en_US{"انګليسي (US)"} eo{"اسپرانتو"} es{"هسپانوي"} es_419{"لاتيني امريکايي هسپانوي"} es_ES{"اروپايي هسپانوي"} - es_MX{"ميکسيکو هسپانوي"} + es_MX{"ميکسيکي هسپانوي"} et{"حبشي"} eu{"باسکي"} ewo{"اوونڊو"} fa{"فارسي"} - ff{"فلاحہ"} + ff{"فولاح"} fi{"فینلنډي"} fil{"فلیپیني"} fj{"فجیان"} @@ -115,7 +118,7 @@ ps{ fr_CA{"کاناډايي فرانسوي"} fr_CH{"سويسي فرانسوي"} fur{"فرائیلیین"} - fy{"فريزي"} + fy{"لوېديځ فريشي"} ga{"ائيرلېنډي"} gaa{"gaa"} gd{"سکاټلېنډي ګېلک"} @@ -131,16 +134,16 @@ ps{ gwi{"ګیچین"} ha{"هوسا"} haw{"هوایی"} - he{"عبري"} + he{"عبراني"} hi{"هندي"} hil{"ھلیګینون"} hmn{"همونګ"} - hr{"کروواسي"} - hsb{"پورته صربي"} - ht{"هيٽي کرولي"} + hr{"کروايشيايي"} + hsb{"پورته سربيايي"} + ht{"هيټي کريول"} hu{"هنگري"} hup{"ھوپا"} - hy{"ارمني"} + hy{"آرمينيايي"} hz{"هیرورو"} ia{"انټرلنګوا"} iba{"ابن"} @@ -156,7 +159,7 @@ ps{ iu{"انوکتیتوت"} ja{"جاپاني"} jbo{"لوجبان"} - jgo{"نګبا"} + jgo{"نګومبا"} jmc{"ماچمی"} jv{"جاوايي"} ka{"جورجيائي"} @@ -166,7 +169,7 @@ ps{ kam{"کامبا"} kbd{"کابیرین"} kcg{"تایپ"} - kde{"ماکډون"} + kde{"ميکونډي"} kea{"کابوورډیانو"} kfo{"کورو"} kha{"خاسې"} @@ -179,23 +182,23 @@ ps{ kln{"کلینجن"} km{"خمر"} kmb{"کیمبوندو"} - kn{"کنأډه"} + kn{"کناډا"} ko{"کوریایی"} - kok{"کنکني"} + kok{"کونکاني"} kpe{"کیلي"} kr{"کنوری"} krc{"کراچی بالکر"} krl{"کاریلین"} kru{"کورخ"} ks{"کشمیري"} - ksb{"شمبلا"} + ksb{"شمبالا"} ksf{"بفیا"} - ksh{"کولوگنيسي"} + ksh{"کولوګنيايي"} ku{"کردي"} kum{"کومک"} kv{"کومی"} - kw{"کرونيشي"} - ky{"کرګيز"} + kw{"کورنيشي"} + ky{"کرغيزي"} la{"لاتیني"} lad{"لاډینو"} lag{"لنګی"} @@ -203,8 +206,8 @@ ps{ lez{"لیګغیان"} lg{"ګانده"} li{"لمبرگیانی"} - lkt{"لکټو"} - ln{"لنگلا"} + lkt{"لکوټا"} + ln{"لنګالا"} lo{"لاو"} loz{"لوزی"} lrc{"شمالي لوری"} @@ -242,7 +245,7 @@ ps{ ms{"ملایا"} mt{"مالټايي"} mua{"مندانګ"} - mul{"څو ژبو"} + mul{"متعدد ژبې"} mus{"کريکي"} mwl{"مرانديز"} my{"برمایی"} @@ -275,7 +278,7 @@ ps{ oc{"اوکسيټاني"} om{"اورومو"} or{"اوڊيا"} - os{"اوسیٹک"} + os{"اوسيټک"} pa{"پنجابي"} pag{"پانګاسین"} pam{"پمپانگا"} @@ -301,6 +304,7 @@ ps{ ru{"روسي"} rup{"اروماني"} rw{"کینیارونډا"} + rwk{"روا"} sa{"سنسکریټ"} sad{"سنډاوی"} sah{"سخا"} @@ -334,7 +338,7 @@ ps{ srn{"سوران ټونګو"} ss{"سواتی"} ssy{"سهو"} - st{"سيسوتو"} + st{"سويلي سوتو"} su{"سوډاني"} suk{"سکوما"} sv{"سویډنی"} @@ -342,7 +346,7 @@ ps{ sw_CD{"کانګو سواهلی"} swb{"کومورياني"} syr{"سوریاني"} - ta{"تامیل"} + ta{"تامل"} te{"تېليګو"} tem{"تیمني"} teo{"تیسو"} @@ -368,7 +372,7 @@ ps{ tzm{"مرکزی اطلس تمازائيٹ"} udm{"ادمورت"} ug{"اويغوري"} - uk{"اوکرانايي"} + uk{"اوکرايني"} umb{"امبوندو"} und{"نامعلومه ژبه"} ur{"اردو"} @@ -391,7 +395,7 @@ ps{ yi{"يديش"} yo{"یوروبا"} yue{"کانټوني"} - zgh{"معياري مراکش تمازټیټ"} + zgh{"معياري مراکشي تمازيټ"} zh{"چیني"} zh_Hans{"ساده چيني"} zh_Hant{"دوديزه چيني"} @@ -400,10 +404,18 @@ ps{ zxx{"نه ژبني منځپانګه"} zza{"زازا"} } + Languages%long{ + zh_Hans{"چيني ماندرين چيني"} + zh_Hant{"دوديزه ماندرين چيني"} + } + Languages%menu{ + yue{"چايني، کانټونيز"} + zh{"چيني، ماندرين"} + } Languages%short{ az{"اذري"} en_GB{"انګليسي (GB)"} - en_US{"انګليسي (US)"} + en_US{"د متحده آيالاتو انګليسي"} } Scripts{ Arab{"عربي"} @@ -437,9 +449,9 @@ ps{ Mlym{"مالایالم"} Mong{"منګولیایي"} Mymr{"میانمار"} - Orya{"اویا"} + Orya{"اوديا"} Sinh{"سنهالا"} - Taml{"تامیل"} + Taml{"تامل"} Telu{"تیلیګو"} Thaa{"تهانا"} Thai{"تایلنډي"} @@ -453,7 +465,7 @@ ps{ } Scripts%stand-alone{ Hans{"ساده هان"} - Hant{"دودیز هان"} + Hant{"دوديزه هان"} } Types{ calendar{ @@ -464,11 +476,11 @@ ps{ gregorian{"ګريګورين جنتري"} hebrew{"جورجویان جنتري"} islamic{"اسلامي جنتري"} - islamic-civil{"د اسلامي جنتري (جدولي، د مدني عصر)"} + islamic-civil{"اسلامي جنتري (جدولي، مدني عصر)"} islamic-tbla{"اسلامي جنتري (جدولي، ستورپوهنيز عصر)"} iso8601{"ISO-8601 جنتري"} - japanese{"د جاپاني جنتري"} - persian{"د فارسي جنتري"} + japanese{"جاپاني جنتري"} + persian{"فارسي جنتري"} roc{"منگوو جنتري"} } cf{ @@ -476,20 +488,66 @@ ps{ standard{"معياري اسعارو بڼه"} } collation{ - ducet{"ڊفالٽ یونیکوډ ترتیب"} - search{"عمومي موخو د لټون"} + ducet{"ډيفالټ يونيکوډ ترتيب"} + search{"د عمومي موخي لټون"} standard{"معياري د لټې ترتيب"} } + hc{ + h11{"د ۱۲ ساعتو نظام (۰ـ۱۱)"} + h12{"د ۱۲ ساعتو نظام (۱ ـ ۱۲)"} + h23{"د ۲۴ ساعتو نظام (۰ـ۲۳)"} + h24{"د ساعتو نظام (۱ـ۲۴)"} + } + lb{ + loose{"د غړندې ماتې کرښې ډول"} + normal{"د عادي ماتې کرښې ډول"} + strict{"د سختې ماتې کرښې ډول"} + } + ms{ + metric{"ميټرک نظام"} + ussystem{"د متحده آيالاتو د ناپ نظام"} + } numbers{ arab{"عربي - انډیک عددونه"} arabext{"غځېدلې عربي ۔ اينډيک عدد"} + armn{"آرمينيايي اعداد"} + armnlow{"آرمينيايي کوچني اعداد"} + beng{"د بنګلا اعداد"} + deva{"ديوانګري اعداد"} + ethi{"ايتهوپيايي اعداد"} + fullwide{"د بشپړه پراختيا اعداد"} + geor{"ګريګورين اعداد"} + grek{"يوناني اعداد"} + greklow{"يوناني کوچني اعداد"} + gujr{"ګوجراتي اعداد"} + guru{"ګرمخې اعداد"} + hanidec{"چايني اعشاري اعداد"} + hans{"ساده چيني اعداد"} + hansfin{"ساده چيني مالي اعداد"} + hant{"دوديز چيني اعداد"} + hantfin{"دوديز چيني مالي اعداد"} + hebr{"عبراني اعداد"} + jpan{"جاپاني اعداد"} + jpanfin{"جاپاني مالي اعداد"} + khmr{"خمري اعداد"} + knda{"کاناډا يي اعداد"} + laoo{"لاوي اعداد"} latn{"لويديځ عددونه"} + mlym{"ملاي لام اعداد"} + mymr{"د ميانمار اعداد"} + orya{"د اوډيا اعداد"} + roman{"رومن اعداد"} + romanlow{"رومن کوچني اعداد"} + taml{"دوديز تامل اعداد"} + tamldec{"تامل اعداد"} + telu{"تيلوګو اعداد"} + thai{"تايي اعداد"} + tibt{"تبتي اعداد"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} - ټول"} - category-list{"{0}: {1}"} compatibility{"{0} - مطابقت"} enclosed{"{0} - منسلک"} extended{"{0} - غځېدلی"} @@ -510,6 +568,5 @@ ps{ localeDisplayPattern{ keyTypePattern{"{0}: {1}"} pattern{"{0} ({1})"} - separator{"{0}, {1}"} } } diff --git a/source/data/lang/ps_PK.txt b/source/data/lang/ps_PK.txt index ae94560..24df584 100644 --- a/source/data/lang/ps_PK.txt +++ b/source/data/lang/ps_PK.txt @@ -16,5 +16,5 @@ ps_PK{ arabext{"غځېدلے عربي ۔ اينډيک عدد"} } } - Version{"2.1.49.34"} + Version{"36"} } diff --git a/source/data/lang/pt.txt b/source/data/lang/pt.txt index a767da5..ae55e15 100644 --- a/source/data/lang/pt.txt +++ b/source/data/lang/pt.txt @@ -5,12 +5,12 @@ pt{ calendar{"Calendário"} cf{"Formato de moeda"} colAlternate{"Ignorar classificação de símbolos"} - colBackwards{"Classificação reversa de acentos"} + colBackwards{"Classificação de acentos invertida"} colCaseFirst{"Ordem de maiúsculas/minúsculas"} - colCaseLevel{"Ordem com diferenciação de maiúsculas e minúsculas"} + colCaseLevel{"Classificação com distinção entre maiúsculas e minúsculas"} colNormalization{"Classificação normalizada"} colNumeric{"Classificação numérica"} - colStrength{"Intensidade da classificação"} + colStrength{"Prioridade da classificação"} collation{"Ordenação"} currency{"Moeda"} hc{"Ciclo de horário (12 vs. 24)"} @@ -93,7 +93,7 @@ pt{ car{"caribe"} cay{"cayuga"} cch{"atsam"} - ccp{"Chakma"} + ccp{"chakma"} ce{"checheno"} ceb{"cebuano"} cgg{"chiga"} @@ -545,9 +545,16 @@ pt{ zxx{"sem conteúdo linguístico"} zza{"zazaki"} } + Languages%long{ + zh_Hans{"chinês mandarim (simplificado)"} + zh_Hant{"chinês mandarim (tradicional)"} + } + Languages%menu{ + yue{"cantonês (tradicional)"} + zh{"chinês, mandarim"} + } Languages%short{ - az{"azeri"} - en_US{"inglês (EUA)"} + az{"azerbaijano"} } Languages%variant{ ps{"pushto"} @@ -639,7 +646,7 @@ pt{ Ogam{"ogâmico"} Olck{"ol chiki"} Orkh{"orkhon"} - Orya{"oriya"} + Orya{"oriá"} Osma{"osmania"} Perm{"pérmico antigo"} Phag{"phags-pa"} @@ -771,8 +778,8 @@ pt{ unihan{"Ordem por Radical-Traços"} } d0{ - fwidth{"Extensão total"} - hwidth{"Extensão total"} + fwidth{"Largura inteira"} + hwidth{"Meia largura"} npinyin{"Numérico"} } hc{ @@ -797,7 +804,7 @@ pt{ } numbers{ arab{"Algarismos indo-arábicos"} - arabext{"Algarismos indo-arábicos por extenso"} + arabext{"Algarismos indo-arábicos estendidos"} armn{"Algarismos armênios"} armnlow{"Algarismos armênios minúsculos"} beng{"Algarismos bengali"} @@ -881,7 +888,7 @@ pt{ VALENCIA{"valenciano"} WADEGILE{"romanização Wade-Giles"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} — todos"} category-list{"{0}: {1}"} diff --git a/source/data/lang/pt_AO.txt b/source/data/lang/pt_AO.txt index 747a081..78a8a40 100644 --- a/source/data/lang/pt_AO.txt +++ b/source/data/lang/pt_AO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_AO{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/pt_CH.txt b/source/data/lang/pt_CH.txt index 623220c..55f6857 100644 --- a/source/data/lang/pt_CH.txt +++ b/source/data/lang/pt_CH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_CH{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/pt_CV.txt b/source/data/lang/pt_CV.txt index 10dcb7a..aa31686 100644 --- a/source/data/lang/pt_CV.txt +++ b/source/data/lang/pt_CV.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_CV{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/pt_GQ.txt b/source/data/lang/pt_GQ.txt index 00f271d..1ba7e1f 100644 --- a/source/data/lang/pt_GQ.txt +++ b/source/data/lang/pt_GQ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_GQ{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/pt_GW.txt b/source/data/lang/pt_GW.txt index 60f99bb..f1125a1 100644 --- a/source/data/lang/pt_GW.txt +++ b/source/data/lang/pt_GW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_GW{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/pt_LU.txt b/source/data/lang/pt_LU.txt index c20ea4b..19ca221 100644 --- a/source/data/lang/pt_LU.txt +++ b/source/data/lang/pt_LU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_LU{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/pt_MO.txt b/source/data/lang/pt_MO.txt index 52f866b..0edb56c 100644 --- a/source/data/lang/pt_MO.txt +++ b/source/data/lang/pt_MO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_MO{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/pt_MZ.txt b/source/data/lang/pt_MZ.txt index 8a51997..c189063 100644 --- a/source/data/lang/pt_MZ.txt +++ b/source/data/lang/pt_MZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_MZ{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/pt_PT.txt b/source/data/lang/pt_PT.txt index 979ea0d..f65fb2d 100644 --- a/source/data/lang/pt_PT.txt +++ b/source/data/lang/pt_PT.txt @@ -3,14 +3,16 @@ pt_PT{ Keys{ cf{"Formato monetário"} + colAlternate{"Ignorar ordenação de símbolos"} colBackwards{"Ordenação de acentos invertida"} + colCaseFirst{"Ordenação de maiúsculas/minúsculas"} colCaseLevel{"Ordenação sensível a maiúsculas e minúsculas"} colNormalization{"Ordenação normalizada"} colNumeric{"Ordenação numérica"} colStrength{"Força da ordenação"} hc{"Ciclo horário (12 vs. 24)"} ms{"Sistema de medida"} - x{"Utilização privada"} + va{"Variante de região"} } Languages{ af{"africanês"} @@ -24,6 +26,7 @@ pt_PT{ bbj{"ghomala"} bn{"bengalês"} bua{"buriat"} + ccp{"changma"} chk{"chuquês"} chn{"jargão chinook"} chr{"cherokee"} @@ -66,7 +69,6 @@ pt_PT{ lg{"ganda"} lou{"crioulo de Louisiana"} lrc{"luri do norte"} - luo{"luo"} mak{"makassarês"} mk{"macedónio"} moh{"mohawk"} @@ -76,6 +78,7 @@ pt_PT{ nds{"baixo-alemão"} nds_NL{"baixo-saxão"} nl{"neerlandês"} + nl_BE{"flamengo"} nn{"norueguês nynorsk"} non{"nórdico antigo"} oc{"occitano"} @@ -91,6 +94,7 @@ pt_PT{ pt_BR{"português do Brasil"} pt_PT{"português europeu"} raj{"rajastanês"} + ro_MD{"moldávio"} root{"root"} se{"sami do norte"} sga{"irlandês antigo"} @@ -106,16 +110,25 @@ pt_PT{ tt{"tatar"} tzm{"tamazight do Atlas Central"} uz{"usbeque"} - vai{"vai"} wo{"uólofe"} xh{"xosa"} xog{"soga"} yo{"ioruba"} zgh{"tamazight marroquino padrão"} + zh_Hans{"chinês simplificado"} + zh_Hant{"chinês tradicional"} zun{"zuni"} zza{"zaza"} } + Languages%long{ + zh_Hans{"chinês mandarim simplificado"} + zh_Hant{"chinês mandarim tradicional"} + } + Languages%menu{ + zh{"chinês mandarim"} + } Languages%short{ + az{"azeri"} en_GB{"inglês (RU)"} } Scripts{ @@ -201,7 +214,6 @@ pt_PT{ } d0{ fwidth{"Largura completa"} - hwidth{"Meia largura"} } lb{ loose{"Estilo flexível de quebra de linha"} @@ -257,7 +269,7 @@ pt_PT{ MONOTON{"monotónico"} POLYTON{"politónico"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} – tudo"} compatibility{"{0} – compatibilidade"} @@ -267,9 +279,6 @@ pt_PT{ miscellaneous{"{0} – diversos"} other{"{0} – outro"} scripts{"{0} – escritas"} - strokes{ - one{"{0} traço"} - } } codePatterns{ script{"Escrita: {0}"} diff --git a/source/data/lang/pt_ST.txt b/source/data/lang/pt_ST.txt index 83f08a8..a05804b 100644 --- a/source/data/lang/pt_ST.txt +++ b/source/data/lang/pt_ST.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_ST{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/pt_TL.txt b/source/data/lang/pt_TL.txt index dcee0a3..d6937ec 100644 --- a/source/data/lang/pt_TL.txt +++ b/source/data/lang/pt_TL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_TL{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/qu.txt b/source/data/lang/qu.txt index c45b308..73fc24d 100644 --- a/source/data/lang/qu.txt +++ b/source/data/lang/qu.txt @@ -1,50 +1,87 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License qu{ + Keys{ + calendar{"Intiwatana"} + cf{"Imayna Qullqi kaynin"} + collation{"Ñiqinchana"} + currency{"qullqi"} + hc{"Ciclo de Horas (12 vs 24)"} + lb{"Siqi paway kaynin"} + ms{"Tupuy Kamay"} + numbers{"Yupaykuna"} + } Languages{ af{"Afrikaans Simi"} + agq{"Aghem Simi"} + ak{"Akan Simi"} am{"Amarico Simi"} ar{"Arabe Simi"} arn{"Mapuche Simi"} as{"Asames Simi"} + asa{"Asu Simi"} + ast{"Asturiano Simi"} ay{"Aymara Simi"} az{"Azerbaiyano Simi"} ba{"Baskir Simi"} + bas{"Basaa Simi"} be{"Bielorruso Simi"} + bem{"Bemba Simi"} + bez{"Bena Simi"} bg{"Bulgaro Simi"} + bm{"Bambara Simi"} bn{"Bangla Simi"} bo{"Tibetano Simi"} br{"Breton Simi"} + brx{"Bodo Simi"} bs{"Bosnio Simi"} ca{"Catalan Simi"} + ccp{"Chakma Simi"} + ce{"Checheno Simi"} + ceb{"Cebuano Simi"} + cgg{"Kiga Simi"} chr{"Cheroqui Simi"} ckb{"Chawpi Kurdo Simi"} co{"Corso Simi"} cs{"Checo Simi"} + cu{"Eslavo Eclesiástico Simi"} cy{"Gales Simi"} da{"Danes Simi"} + dav{"Taita Simi"} de{"Aleman Simi"} + dje{"Zarma Simi"} dsb{"Bajo Sorbio Simi"} + dua{"Duala Simi"} dv{"Divehi Simi"} + dyo{"Jola-Fonyi Simi"} + dz{"Butanés Simi"} + ebu{"Embu Simi"} + ee{"Ewé Simi"} el{"Griego Simi"} en{"Ingles Simi"} + eo{"Esperanto Simi"} es{"Español Simi"} es_419{"Español Simi (Latino América)"} et{"Estonio Simi"} eu{"Euskera Simi"} + ewo{"Ewondo Simi"} fa{"Persa Simi"} ff{"Fulah Simi"} fi{"Fines Simi"} fil{"Filipino Simi"} fo{"Feroes Simi"} fr{"Frances Simi"} + fur{"Friulano Simi"} fy{"Frison Simi"} ga{"Irlandes Simi"} gd{"Gaelico Escoces Simi"} gl{"Gallego Simi"} gsw{"Alsaciano Simi"} gu{"Gujarati Simi"} + guz{"Guzí Simi"} + gv{"Manés Simi"} ha{"Hausa Simi"} + haw{"Hawaiano Simi"} he{"Hebreo Simi"} hi{"Hindi Simi"} hmn{"Hmong Daw Simi"} @@ -53,6 +90,7 @@ qu{ ht{"Haitiano Criollo Simi"} hu{"Hungaro Simi"} hy{"Armenio Simi"} + ia{"Interlingua Simi"} id{"Indonesio Simi"} ig{"Igbo Simi"} ii{"Yi Simi"} @@ -60,18 +98,50 @@ qu{ it{"Italiano Simi"} iu{"Inuktitut Simi"} ja{"Japones Simi"} + jgo{"Ngomba Simi"} + jmc{"Machame Simi"} + jv{"Javanés Simi"} ka{"Georgiano Simi"} + kab{"Cabilio Simi"} + kam{"Kamba Simi"} + kde{"Makonde Simi"} + kea{"Caboverdiano Simi"} + khq{"Koyra Chiini Simi"} + ki{"Kikuyu Simi"} kk{"Kazajo Simi"} + kkj{"Kako Simi"} kl{"Groenlandes Simi"} + kln{"Kalenjin Simi"} km{"Khmer Simi"} kn{"Kannada Simi"} ko{"Coreano Simi"} kok{"Konkani Simi"} + ks{"Cachemir Simi"} + ksb{"Shambala Simi"} + ksf{"Bafia Simi"} + ksh{"Kölsch Simi"} + ku{"Kurdo Simi"} + kw{"Córnico Simi"} ky{"Kirghiz Simi"} + la{"Latín Simi"} + lag{"Langi Simi"} lb{"Luxemburgues Simi"} + lg{"Luganda Simi"} + lkt{"Lakota Simi"} + ln{"Lingala Simi"} lo{"Lao Simi"} + lrc{"Luri septentrional Simi"} lt{"Lituano Simi"} + lu{"Luba-Katanga Simi"} + luo{"Luo Simi"} + luy{"Luyia Simi"} lv{"Leton Simi"} + mas{"Masai Simi"} + mer{"Meru Simi"} + mfe{"Mauriciano Simi"} + mg{"Malgache Simi"} + mgh{"Makhuwa-Meetto Simi"} + mgo{"Metaʼ Simi"} mi{"Maori Simi"} mk{"Macedonio Simi"} ml{"Malayalam Simi"} @@ -80,66 +150,198 @@ qu{ mr{"Marathi Simi"} ms{"Malayo Simi"} mt{"Maltes Simi"} + mua{"Mundang Simi"} + mul{"Idiomas M´últiples Simi"} + my{"Birmano Simi"} + mzn{"Mazandaraní Simi"} + naq{"Nama Simi"} + nb{"Noruego Bokmål Simi"} + nd{"Ndebele septentrional Simi"} + nds{"Bajo Alemán Simi"} ne{"Nepali Simi"} nl{"Neerlandes Simi"} + nl_BE{"Flamenco Simi"} + nmg{"Kwasio Ngumba Simi"} + nn{"Noruego Nynorsk Simi"} + nnh{"Ngiemboon Simi"} no{"Noruego Simi"} nso{"Sesotho Sa Leboa Simi"} + nus{"Nuer Simi"} + ny{"Nyanja Simi"} + nyn{"Nyankole Simi"} oc{"Occitano Simi"} + om{"Oromo Simi"} or{"Odia Simi"} + os{"Osetio Simi"} pa{"Punyabi Simi"} pap{"Papiamento Simi"} pl{"Polaco Simi"} + prg{"Prusiano Simi"} ps{"Pashto Simi"} pt{"Portugues Simi"} qu{"Runasimi"} quc{"Kʼicheʼ Simi"} rm{"Romanche Simi"} + rn{"Rundi Simi"} ro{"Rumano Simi"} + rof{"Rombo Simi"} ru{"Ruso Simi"} rw{"Kinyarwanda Simi"} + rwk{"Rwa Simi"} sa{"Sanscrito Simi"} sah{"Sakha Simi"} + saq{"Samburu Simi"} + sbp{"Sangu Simi"} sd{"Sindhi Simi"} se{"Chincha Sami Simi"} + seh{"Sena Simi"} + ses{"Koyraboro Senni Simi"} + sg{"Sango Simi"} + shi{"Tashelhit Simi"} si{"Cingales Simi"} sk{"Eslovaco Simi"} sl{"Esloveno Simi"} + sm{"Samoano Simi"} sma{"Qulla Sami Simi"} smj{"Sami Lule Simi"} smn{"Sami Inari Simi"} sms{"Sami Skolt Simi"} + sn{"Shona Simi"} + so{"Somali Simi"} sq{"Albanes Simi"} sr{"Serbio Simi"} + st{"Soto Meridional Simi"} + su{"Sundanés Simi"} sv{"Sueco Simi"} sw{"Suajili Simi"} sw_CD{"Suajili Simi (Congo (RDC))"} syr{"Siriaco Simi"} ta{"Tamil Simi"} te{"Telugu Simi"} + teo{"Teso Simi"} tg{"Tayiko Simi"} th{"Tailandes Simi"} ti{"Tigriña Simi"} tk{"Turcomano Simi"} tn{"Setsuana Simi"} + to{"Tongano Simi"} tr{"Turco Simi"} tt{"Tartaro Simi"} + twq{"Tasawaq Simi"} + tzm{"Tamazight Simi"} ug{"Uigur Simi"} uk{"Ucraniano Simi"} + und{"Mana Riqsisqa Simi"} ur{"Urdu Simi"} uz{"Uzbeko Simi"} + vai{"Vai Simi"} vi{"Vietnamita Simi"} + vo{"Volapük Simi"} + vun{"Vunjo Simi"} + wae{"Walser Simi"} wo{"Wolof Simi"} xh{"Isixhosa Simi"} + xog{"Soga Simi"} + yav{"Yangben Simi"} + yi{"Yiddish Simi"} yo{"Yoruba Simi"} + yue{"Cantonés Simi"} + zgh{"Bereber Marroquí Estándar Simi"} zh{"Chino Simi"} + zh_Hans{"Chino Simplificado Simi"} + zh_Hant{"Chino Tradicional Simi"} zu{"Isizulu Simi"} + zxx{"Sin contenido linguístico"} + } + Languages%long{ + zh_Hans{"Chino Mandarín Simplificado Simi"} + zh_Hant{"Chino Mandarín Tradicional Simi"} + } + Languages%menu{ + yue{"Chino Cantonés Simi"} + zh{"Chino Mandarín Simi"} } Languages%short{ + az{"Azerí Simi"} en_GB{"Ingles Simi (GB)"} en_US{"Ingles Simi (US)"} } - Variants{ - VALENCIA{"Valenciano Simi"} + Types{ + calendar{ + buddhist{"Budista Intiwatana"} + chinese{"Chino Intiwatana"} + dangi{"Dangi Intiwatana"} + ethiopic{"Etiope Intiwatana"} + gregorian{"Gregoriano Intiwatana"} + hebrew{"Hebreo Intiwatana"} + islamic{"Islamico Intiwatana"} + iso8601{"ISO-8601 Intiwatana"} + japanese{"Japones Intiwatana"} + persian{"Persa Intiwatana"} + roc{"Minguo Intiwatana"} + } + cf{ + account{"Yupana Qullqi imayna kaynin"} + standard{"Estandar nisqa qullqi imayna kaynin"} + } + collation{ + ducet{"Ñawpaqchasqa Unicode Nisqa Ñiqinchana"} + search{"Llapanpaq maskana"} + standard{"Estandar nisqa Ñiqinchana"} + } + hc{ + h11{"12 hora kaynin (0–11)"} + h12{"12 hora kaynin (1–12)"} + h23{"24 hora kaynin (0–23)"} + h24{"24 hora kaynin (1–24)"} + } + lb{ + loose{"Siqi paway chinkachiy kaynin"} + normal{"Siqi paway Normal kaynin"} + strict{"Siqi paway Chiqa kaynin"} + } + ms{ + metric{"Metrico Kamay"} + uksystem{"Metrico Ingles Kamay"} + ussystem{"Metrico Americano Kamay"} + } + numbers{ + arab{"Arabe Sananpakuna"} + arabext{"Arabe Mirachisqa Sananpakuna"} + armn{"Armenio Sananpakuna"} + armnlow{"Armenio Uchuy Sananpakuna"} + beng{"Bangla Sananpakuna"} + deva{"Devanagari Sananpakuna"} + ethi{"Etiope Sananpakuna"} + fullwide{"Llapan kinray Sananpakuna"} + geor{"Gregoriano Yupaykuna"} + grek{"Griego Yupaykuna"} + greklow{"Griego Uchuy Yupaykuna"} + gujr{"Gujarati Sananpakuna"} + guru{"Gurmukhi Sananpakuna"} + hanidec{"Chunkachasqa Chino Yupaykuna"} + hans{"Uchuyachusqa Chino Yupaypakuna"} + hansfin{"Uchuyachisqa Qullqi Chino Yupaypakuna"} + hant{"Kikin Chino Yupaypakuna"} + hantfin{"Kikin Qullqi Chino Yupaypakuna"} + hebr{"Hebreo Yupaykuna"} + jpan{"Japones Yupaykuna"} + jpanfin{"Japones Qullqi Yupaykuna"} + khmr{"Khmer Sananpakuna"} + knda{"Kannada Sananpakuna"} + laoo{"Lao Sananpakuna"} + latn{"Occidental Sananpakuna"} + mlym{"Malayalam Sananpakuna"} + mymr{"Myanmar Sananpakuna"} + orya{"Odia Sananpakuna"} + roman{"Romano Sananpakuna"} + romanlow{"Roman Uchuy Yupaykuna"} + taml{"Kikin Tamil Yupaykuna"} + tamldec{"Tamil Sananpakuna"} + telu{"Telegu Sananpakuna"} + thai{"Thai Sananpakuna"} + tibt{"Tibetano Sananpakuna"} + } } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/lang/rm.txt b/source/data/lang/rm.txt index 3f1fb80..8317c2a 100644 --- a/source/data/lang/rm.txt +++ b/source/data/lang/rm.txt @@ -627,7 +627,7 @@ rm{ TARASK{"ortografia taraskievica"} VALENCIA{"valencian"} } - Version{"2.1.48.4"} + Version{"36"} codePatterns{ language{"Lingua: {0}"} script{"Scrittira: {0}"} diff --git a/source/data/lang/rn.txt b/source/data/lang/rn.txt index b46a4e8..183c1fe 100644 --- a/source/data/lang/rn.txt +++ b/source/data/lang/rn.txt @@ -48,5 +48,5 @@ rn{ zh{"Igishinwa"} zu{"Ikizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/ro.txt b/source/data/lang/ro.txt index ddfe888..a4f922a 100644 --- a/source/data/lang/ro.txt +++ b/source/data/lang/ro.txt @@ -2,23 +2,24 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ro{ Keys{ + calendar{"calendar"} cf{"Format monedă"} - colAlternate{"Ordonare cu simbolurile ignorate"} - colBackwards{"Ordonare inversă după accent"} - colCaseFirst{"Ordonare după majuscule/minuscule"} - colCaseLevel{"Ordonare care ține seama de majuscule/minuscule"} - colNormalization{"Ordonare normalizată"} - colNumeric{"Ordonare numerică"} - colStrength{"Puterea ordonării"} + colAlternate{"sortare cu ignorarea simbolurilo"} + colBackwards{"sortare inversă după accent"} + colCaseFirst{"sortare după majuscule/minuscule"} + colCaseLevel{"sortare care ține seama de majuscule/minuscule"} + colNormalization{"sortare normalizată"} + colNumeric{"sortare numerică"} + colStrength{"puterea sortării"} collation{"ordine de sortare"} currency{"monedă"} hc{"ciclu orar (12 sau 24)"} lb{"stil de întrerupere a liniei"} ms{"sistem de unități de măsură"} numbers{"numere"} - timezone{"Fusul orar"} - va{"Varianta locală"} - x{"Utilizare privată"} + timezone{"fus orar"} + va{"variantă locală"} + x{"utilizare privată"} } Languages{ aa{"afar"} @@ -544,6 +545,14 @@ ro{ zxx{"fară conținut lingvistic"} zza{"zaza"} } + Languages%long{ + zh_Hans{"chineză mandarină simplificată"} + zh_Hant{"chineză mandarină tradițională"} + } + Languages%menu{ + yue{"chineză, cantoneză"} + zh{"chineză, mandarină"} + } Languages%short{ az{"azeră"} en_US{"engleză (S.U.A)"} @@ -781,7 +790,7 @@ ro{ SCOTLAND{"engleză standard scoțiană"} WADEGILE{"Wade-Giles"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} – toate"} category-list{"{0}: {1}"} @@ -803,4 +812,9 @@ ro{ script{"Scriere: {0}"} territory{"Regiune: {0}"} } + localeDisplayPattern{ + keyTypePattern{"{0}: {1}"} + pattern{"{0} ({1})"} + separator{"{0}, {1}"} + } } diff --git a/source/data/lang/ro_MD.txt b/source/data/lang/ro_MD.txt index 44ded81..ed17e2c 100644 --- a/source/data/lang/ro_MD.txt +++ b/source/data/lang/ro_MD.txt @@ -5,5 +5,5 @@ ro_MD{ sw_CD{"swahili (R. D. Congo)"} wal{"wolaytta"} } - Version{"2.1.48.43"} + Version{"36"} } diff --git a/source/data/lang/rof.txt b/source/data/lang/rof.txt index a8f5862..f3e20bb 100644 --- a/source/data/lang/rof.txt +++ b/source/data/lang/rof.txt @@ -48,5 +48,5 @@ rof{ zh{"Kichina"} zu{"Kizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/root.txt b/source/data/lang/root.txt index dd0f78d..e704a30 100644 --- a/source/data/lang/root.txt +++ b/source/data/lang/root.txt @@ -4,7 +4,7 @@ * ICU source: /common/main/root.xml */ root{ - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — all"} category-list{"{0}: {1}"} diff --git a/source/data/lang/ru.txt b/source/data/lang/ru.txt index c76b054..777cdcf 100644 --- a/source/data/lang/ru.txt +++ b/source/data/lang/ru.txt @@ -4,22 +4,22 @@ ru{ Keys{ calendar{"календарь"} cf{"формат валюты"} - colAlternate{"Игнорировать символы при сортировке"} - colBackwards{"Обратная сортировка по акценту"} - colCaseFirst{"Сортировка по верхнему или нижнему регистру"} - colCaseLevel{"Сортировка с учетом регистра"} - colNormalization{"Нормализованная сортировка"} - colNumeric{"Сортировка чисел"} - colStrength{"Эффективность сортировки"} + colAlternate{"сортировка без учета символов"} + colBackwards{"обратная сортировка по акценту"} + colCaseFirst{"сортировка по верхнему или нижнему регистру"} + colCaseLevel{"сортировка с учетом регистра"} + colNormalization{"нормализованная сортировка"} + colNumeric{"числовая сортировка"} + colStrength{"эффективность сортировки"} collation{"порядок сортировки"} currency{"валюта"} - hc{"формат времени (12 или 24)"} + hc{"формат времени (12- или 24-часовой)"} lb{"стиль перевода строки"} ms{"система мер"} numbers{"цифры"} - timezone{"Часовой пояс"} - va{"Вариант региональных настроек"} - x{"Частное"} + timezone{"часовой пояс"} + va{"вариант региональных настроек"} + x{"частное"} } Languages{ aa{"афарский"} @@ -42,7 +42,7 @@ ru{ ang{"староанглийский"} anp{"ангика"} ar{"арабский"} - ar_001{"литературный арабский"} + ar_001{"арабский литературный"} arc{"арамейский"} arn{"мапуче"} arp{"арапахо"} @@ -349,14 +349,14 @@ ru{ my{"бирманский"} mye{"миене"} myv{"эрзянский"} - mzn{"мазендеранский"} + mzn{"мазандеранский"} na{"науру"} nan{"миньнань"} nap{"неаполитанский"} naq{"нама"} nb{"норвежский букмол"} nd{"северный ндебеле"} - nds{"нижнегерманский"} + nds{"нижненемецкий"} nds_NL{"нижнесаксонский"} ne{"непальский"} new{"неварский"} @@ -557,6 +557,14 @@ ru{ zxx{"нет языкового материала"} zza{"заза"} } + Languages%long{ + zh_Hans{"севернокитайский, упрощенное письмо"} + zh_Hant{"севернокитайский, традиционное письмо"} + } + Languages%menu{ + yue{"юэ"} + zh{"севернокитайский"} + } Languages%short{ az{"азербайджанский"} en_GB{"британский английский"} @@ -614,7 +622,7 @@ ru{ Hira{"хирагана"} Hluw{"лувийские иероглифы"} Hmng{"пахау хмонг"} - Hrkt{"катакана или хирагана"} + Hrkt{"катакана и хирагана"} Hung{"старовенгерская"} Inds{"хараппская (письменность долины Инда)"} Ital{"староитальянская"} @@ -918,7 +926,7 @@ ru{ VALENCIA{"Валенсийский"} WADEGILE{"Система Уэйда – Джайлза"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — все"} category-list{"{0}: {1}"} diff --git a/source/data/lang/rw.txt b/source/data/lang/rw.txt index 788c5f5..39c15f2 100644 --- a/source/data/lang/rw.txt +++ b/source/data/lang/rw.txt @@ -108,5 +108,5 @@ rw{ yi{"Inyeyidishi"} zu{"Inyezulu"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/lang/rwk.txt b/source/data/lang/rwk.txt index 9854fd5..346b1b3 100644 --- a/source/data/lang/rwk.txt +++ b/source/data/lang/rwk.txt @@ -48,5 +48,5 @@ rwk{ zh{"Kyichina"} zu{"Kyizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/sah.txt b/source/data/lang/sah.txt index 1c1a630..59c2e03 100644 --- a/source/data/lang/sah.txt +++ b/source/data/lang/sah.txt @@ -91,7 +91,7 @@ sah{ h24{"24 чаастаах тиһик (0–24)"} } } - Version{"2.1.47.82"} + Version{"36"} characterLabelPattern{ strokes{ other{"{0} Strokes"} diff --git a/source/data/lang/saq.txt b/source/data/lang/saq.txt index 2a58030..e7251ce 100644 --- a/source/data/lang/saq.txt +++ b/source/data/lang/saq.txt @@ -48,5 +48,5 @@ saq{ zh{"Kichina"} zu{"Kizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/sbp.txt b/source/data/lang/sbp.txt index 9b5a196..df86868 100644 --- a/source/data/lang/sbp.txt +++ b/source/data/lang/sbp.txt @@ -48,5 +48,5 @@ sbp{ zh{"Ishishina"} zu{"Ishisulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/sd.txt b/source/data/lang/sd.txt index 3379e07..a845136 100644 --- a/source/data/lang/sd.txt +++ b/source/data/lang/sd.txt @@ -288,7 +288,7 @@ sd{ pl{"پولش"} prg{"پرشن"} ps{"پشتو"} - pt{"پرتگالي"} + pt{"پورٽگليز"} pt_BR{"برازيلي پرتگالي"} pt_PT{"يورپي پرتگالي"} qu{"ڪيچوا"} @@ -404,6 +404,14 @@ sd{ zxx{"ڪوئي ٻولي جو مواد ڪونهي"} zza{"زازا"} } + Languages%long{ + zh_Hans{"سادي مندارن چيني"} + zh_Hant{"رواجي مندارن چيني"} + } + Languages%menu{ + yue{"چيني، ڪينٽونيز"} + zh{"چيني، مندارن"} + } Languages%short{ az{"ازري"} en_GB{"برطانوي انگريزي"} @@ -430,7 +438,9 @@ sd{ Hebr{"عبراني"} Hira{"هراگنا"} Hrkt{"جاپاني لکت"} + Ital{"قديم اطالوي"} Jamo{"جامو"} + Java{"جاوانيز"} Jpan{"جاپاني"} Kana{"ڪٽاڪانا"} Khmr{"خمر"} @@ -440,14 +450,17 @@ sd{ Latn{"لاطيني"} Mlym{"مليالم"} Mong{"منگولي"} + Mult{"ملتاني"} Mymr{"ميانمر"} Orya{"اوڊيا"} + Sarb{"قديم ڏاکڻي عربي"} Sinh{"سنهالا"} Taml{"تامل"} Telu{"تلگو"} Thaa{"ٿانا"} Thai{"ٿائي"} Tibt{"تبيتن"} + Xpeo{"قديم فارسي"} Zmth{"رياضي جون نشانيون"} Zsye{"ايموجي"} Zsym{"نشانيون"} @@ -536,7 +549,7 @@ sd{ tibt{"تبتي عدد"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — سڀئي"} category-list{"{0}: {1}"} diff --git a/source/data/lang/se.txt b/source/data/lang/se.txt index 24ff67a..d28e9fe 100644 --- a/source/data/lang/se.txt +++ b/source/data/lang/se.txt @@ -154,7 +154,7 @@ se{ PINYIN{"pinyin"} WADEGILE{"Wade-Giles"} } - Version{"2.1.48.4"} + Version{"36"} codePatterns{ language{"giella: {0}"} script{"chállin: {0}"} diff --git a/source/data/lang/se_FI.txt b/source/data/lang/se_FI.txt index 343b6c0..f90778c 100644 --- a/source/data/lang/se_FI.txt +++ b/source/data/lang/se_FI.txt @@ -31,6 +31,7 @@ se_FI{ th{"thaigiella"} vi{"vietnamagiella"} zh_Hans{"álkes kiinnágiella"} + zh_Hant{"árbevirolaš kiinnágiella"} } Languages%short{ en_GB{"brihttalaš eaŋgalsgiella"} @@ -62,7 +63,7 @@ se_FI{ fullwide{"fullwide"} } } - Version{"2.1.47.83"} + Version{"36"} codePatterns{ script{"čállin: {0}"} } diff --git a/source/data/lang/seh.txt b/source/data/lang/seh.txt index a058742..b6711e9 100644 --- a/source/data/lang/seh.txt +++ b/source/data/lang/seh.txt @@ -48,5 +48,5 @@ seh{ zh{"chinês"} zu{"zulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/ses.txt b/source/data/lang/ses.txt index c6d4d24..0879f71 100644 --- a/source/data/lang/ses.txt +++ b/source/data/lang/ses.txt @@ -48,5 +48,5 @@ ses{ zh{"Sinuwa senni, Mandareŋ"} zu{"Zulu senni"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/sg.txt b/source/data/lang/sg.txt index 788b2c9..5163fc3 100644 --- a/source/data/lang/sg.txt +++ b/source/data/lang/sg.txt @@ -48,5 +48,5 @@ sg{ zh{"Shinuäa"} zu{"Zûlu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/shi.txt b/source/data/lang/shi.txt index 8449c31..a355119 100644 --- a/source/data/lang/shi.txt +++ b/source/data/lang/shi.txt @@ -48,5 +48,5 @@ shi{ zh{"ⵜⴰⵛⵉⵏⵡⵉⵜ"} zu{"ⵜⴰⵣⵓⵍⵓⵜ"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/shi_Latn.txt b/source/data/lang/shi_Latn.txt index e25c51d..d2c167d 100644 --- a/source/data/lang/shi_Latn.txt +++ b/source/data/lang/shi_Latn.txt @@ -49,5 +49,5 @@ shi_Latn{ zh{"Tacinwit"} zu{"Tazulut"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/shi_Tfng.txt b/source/data/lang/shi_Tfng.txt index 2e3827e..ea72d32 100644 --- a/source/data/lang/shi_Tfng.txt +++ b/source/data/lang/shi_Tfng.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License shi_Tfng{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/si.txt b/source/data/lang/si.txt index b8cd526..43c81ec 100644 --- a/source/data/lang/si.txt +++ b/source/data/lang/si.txt @@ -59,6 +59,7 @@ si{ bug{"බුගිනීස්"} byn{"බ්ලින්"} ca{"කැටලන්"} + ccp{"චක්මා"} ce{"චෙච්නියානු"} ceb{"සෙබුඅනො"} cgg{"චිගා"} @@ -415,6 +416,14 @@ si{ zxx{"වාග් විද්‍යා අන්තර්ගතයක් නැත"} zza{"සාසා"} } + Languages%long{ + zh_Hans{"සරල මැන්ඩරීන් චීන"} + zh_Hant{"සාම්ප්‍රදායික මැන්ඩරීන් චීන"} + } + Languages%menu{ + yue{"චීන, කැන්ටොනීස්"} + zh{"චීන, මැන්ඩරීන්"} + } Languages%short{ az{"අසීරී"} en_GB{"එ.රා ඉංග්‍රීසි"} @@ -548,7 +557,7 @@ si{ tibt{"ටිබෙට ඉලක්කම්"} } } - Version{"2.1.48.17"} + Version{"36"} characterLabelPattern{ all{"{0} — සියල්ල"} category-list{"{0}: {1}"} diff --git a/source/data/lang/sk.txt b/source/data/lang/sk.txt index 6e041b2..db33730 100644 --- a/source/data/lang/sk.txt +++ b/source/data/lang/sk.txt @@ -4,22 +4,22 @@ sk{ Keys{ calendar{"kalendár"} cf{"formát meny"} - colAlternate{"Ignorovať radenie symbolov"} - colBackwards{"Obrátené radenie akcentov"} - colCaseFirst{"Radenie veľkých a malých písmen"} - colCaseLevel{"Rozlišovanie veľkých a malých písmen pri radení"} - colNormalization{"Normalizované radenie"} - colNumeric{"Číselné radenie"} - colStrength{"Sila radenia"} + colAlternate{"ignorovať radenie symbolov"} + colBackwards{"obrátené radenie diakritiky"} + colCaseFirst{"radenie veľkých a malých písmen"} + colCaseLevel{"rozlišovanie veľkých a malých písmen pri radení"} + colNormalization{"normálne radenie"} + colNumeric{"číselné radenie"} + colStrength{"sila radenia"} collation{"zoradenie"} currency{"mena"} hc{"hodinový cyklus (12 vs 24)"} lb{"štýl koncov riadka"} ms{"merná sústava"} numbers{"čísla"} - timezone{"Časové pásmo"} - va{"Variant miestneho nastavenia"} - x{"Súkromné použitie"} + timezone{"časové pásmo"} + va{"variant miestneho nastavenia"} + x{"súkromné použitie"} } Languages{ aa{"afarčina"} @@ -92,6 +92,7 @@ sk{ car{"karibčina"} cay{"kajugčina"} cch{"atsam"} + ccp{"čakma"} ce{"čečenčina"} ceb{"cebuánčina"} cgg{"kiga"} @@ -541,7 +542,7 @@ sk{ zap{"zapotéčtina"} zbl{"systém Bliss"} zen{"zenaga"} - zgh{"tuaregčina (štandardná marocká)"} + zgh{"tuaregčina (marocká štandardná)"} zh{"čínština"} zh_Hans{"čínština (zjednodušená)"} zh_Hant{"čínština (tradičná)"} @@ -550,6 +551,14 @@ sk{ zxx{"bez jazykového obsahu"} zza{"zaza"} } + Languages%long{ + zh_Hans{"čínština (mandarínska zjednodušená)"} + zh_Hant{"čínština (mandarínska tradičná)"} + } + Languages%menu{ + yue{"čínština (kantonská)"} + zh{"čínština (mandarínska)"} + } Languages%short{ az{"azerbajdžančina"} en_GB{"angličtina (britská)"} @@ -761,7 +770,7 @@ sk{ Variants{ SCOTLAND{"škótska štandardná angličtina"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} – všetko"} category-list{"{0}: {1}"} diff --git a/source/data/lang/sl.txt b/source/data/lang/sl.txt index 995ddc7..f21c674 100644 --- a/source/data/lang/sl.txt +++ b/source/data/lang/sl.txt @@ -19,7 +19,7 @@ sl{ numbers{"številke"} timezone{"Časovni pas"} va{"Različica območnih nastavitev"} - x{"Private-Use"} + x{"Zasebna-uporaba"} } Languages{ aa{"afarščina"} @@ -531,10 +531,12 @@ sl{ zxx{"brez jezikoslovne vsebine"} zza{"zazajščina"} } + Languages%menu{ + yue{"kitajščina (kantonščina)"} + zh{"kitajščina (mandarinščina)"} + } Languages%short{ az{"azerščina"} - en_GB{"angleščina (ZK)"} - en_US{"angleščina (ZDA)"} } Scripts{ Arab{"arabski"} @@ -880,7 +882,7 @@ sl{ VALENCIA{"valencijski pravopis"} WADEGILE{"romanizacija Wade-Giles"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} – vse"} category-list{"{0}: {1}"} diff --git a/source/data/lang/smn.txt b/source/data/lang/smn.txt index 7e52bfe..5be4ccf 100644 --- a/source/data/lang/smn.txt +++ b/source/data/lang/smn.txt @@ -397,11 +397,7 @@ smn{ zxx{"ij kielâlâš siskáldâs"} zza{"zazakielâ"} } - Languages%short{ - en_GB{"eŋgâlâskielâ (OK)"} - en_US{"eŋgâlâskielâ (USA)"} - } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"kielâ: {0}"} script{"čäällimvuáhádâh: {0}"} diff --git a/source/data/lang/sn.txt b/source/data/lang/sn.txt index 6c8a17a..c6350b7 100644 --- a/source/data/lang/sn.txt +++ b/source/data/lang/sn.txt @@ -48,5 +48,5 @@ sn{ zh{"chiChinese"} zu{"chiZulu"} } - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/lang/so.txt b/source/data/lang/so.txt index 4479ba1..98d2a12 100644 --- a/source/data/lang/so.txt +++ b/source/data/lang/so.txt @@ -250,13 +250,11 @@ so{ Languages%short{ az{"Aseeri"} en_GB{"Ingiriiska Boqortooyada Midooday"} - en_US{"Ingiriisi (US)"} } Scripts{ Arab{"Carabi"} Armn{"Armeeniyaan"} Beng{"Baangla"} - Bopo{"Bopo"} Brai{"Qoraalka Indhoolaha"} Cyrl{"Siriylik"} Deva{"Dhefangaari"} @@ -264,10 +262,7 @@ so{ Geor{"Jiyoorjoyaan"} Grek{"Giriik"} Gujr{"Gujaraati"} - Guru{"Guru"} - Hanb{"Hanb"} Hang{"Hanguul"} - Hani{"Hani"} Hans{"La fududeeyay"} Hant{"Hore"} Hebr{"Cibraani"} @@ -279,7 +274,6 @@ so{ Khmr{"Khamer"} Knda{"Kanada"} Kore{"Kuuriyaan"} - Laoo{"Laoo"} Latn{"Laatiin"} Mlym{"Maalayalam"} Mong{"Mongooliyaan"} @@ -379,10 +373,9 @@ so{ tibt{"Godka Tirada Tibetan"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} dhamaan"} - category-list{"{0}: {1}"} compatibility{"{0} — waafaqsanaanta"} enclosed{"{0}— xiran"} extended{"{0}— dheereyey"} @@ -400,9 +393,4 @@ so{ script{"Qoraal: {0}"} territory{"Gobol : {0}"} } - localeDisplayPattern{ - keyTypePattern{"{0}: {1}"} - pattern{"{0} ({1})"} - separator{"{0}, {1}"} - } } diff --git a/source/data/lang/sq.txt b/source/data/lang/sq.txt index 74017e2..e9854cc 100644 --- a/source/data/lang/sq.txt +++ b/source/data/lang/sq.txt @@ -414,6 +414,10 @@ sq{ zxx{"nuk ka përmbajtje gjuhësore"} zza{"zazaisht"} } + Languages%menu{ + yue{"kinezishte kantoneze"} + zh{"kinezishte mandarine"} + } Languages%short{ az{"azerisht"} en_GB{"anglishte e Mbretërisë së Bashkuar"} @@ -558,7 +562,7 @@ sq{ tibt{"shifra tibetiane"} } } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} — Të gjitha"} category-list{"{0}: {1}"} diff --git a/source/data/lang/sr.txt b/source/data/lang/sr.txt index 485635d..9b43896 100644 --- a/source/data/lang/sr.txt +++ b/source/data/lang/sr.txt @@ -8,9 +8,9 @@ sr{ colBackwards{"Сортирање према обрнутим акцентима"} colCaseFirst{"Ређање према малом/великом слову"} colCaseLevel{"Сортирање према малом/великом слову"} - colNormalization{"Нормализовано сортирање"} - colNumeric{"Нумеричко сортирање"} - colStrength{"Сортирање према јачини"} + colNormalization{"нормализовано сортирање"} + colNumeric{"нумеричко сортирање"} + colStrength{"сортирање према јачини"} collation{"редослед сортирања"} currency{"валута"} hc{"приказивање времена (12- или 24-часовно)"} @@ -83,7 +83,6 @@ sr{ cad{"кадо"} car{"карипски"} cch{"атсам"} - ccp{"ccp"} ce{"чеченски"} ceb{"себуански"} cgg{"чига"} @@ -120,7 +119,7 @@ sr{ din{"динка"} dje{"зарма"} doi{"догри"} - dsb{"доњи лужичкосрпски"} + dsb{"доњолужичкосрпски"} dua{"дуала"} dum{"средњехоландски"} dv{"малдивски"} @@ -194,7 +193,7 @@ sr{ hmn{"хмоншки"} ho{"хири моту"} hr{"хрватски"} - hsb{"горњи лужичкосрпски"} + hsb{"горњолужичкосрпски"} ht{"хаићански"} hu{"мађарски"} hup{"хупа"} @@ -529,10 +528,12 @@ sr{ zxx{"без лингвистичког садржаја"} zza{"заза"} } + Languages%menu{ + yue{"кантонски кинески"} + zh{"мандарински кинески"} + } Languages%short{ az{"азерски"} - en_GB{"енглески (УК)"} - en_US{"енглески (САД)"} } Languages%variant{ ps{"пашто"} @@ -849,7 +850,7 @@ sr{ TARASK{"Тараскијевичка ортографија"} VALENCIA{"Валенцијска"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — све"} category-list{"{0}: {1}"} diff --git a/source/data/lang/sr_Cyrl.txt b/source/data/lang/sr_Cyrl.txt index 8a82c60..8ccf74b 100644 --- a/source/data/lang/sr_Cyrl.txt +++ b/source/data/lang/sr_Cyrl.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sr_Cyrl{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/sr_Cyrl_BA.txt b/source/data/lang/sr_Cyrl_BA.txt index 51802ee..111e090 100644 --- a/source/data/lang/sr_Cyrl_BA.txt +++ b/source/data/lang/sr_Cyrl_BA.txt @@ -13,10 +13,13 @@ sr_Cyrl_BA{ nqo{"н’ко"} shi{"јужни шилха"} si{"синхалски"} + sw_CD{"кисвахили"} tzm{"централноатласки тамашек"} xh{"исикоса"} zgh{"стандардни марокански тамашек"} + zh_Hans{"поједностављени кинески"} + zh_Hant{"традиционални кинески"} zu{"исизулу"} } - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/lang/sr_Cyrl_ME.txt b/source/data/lang/sr_Cyrl_ME.txt index 33db4c0..47ae92f 100644 --- a/source/data/lang/sr_Cyrl_ME.txt +++ b/source/data/lang/sr_Cyrl_ME.txt @@ -17,5 +17,5 @@ sr_Cyrl_ME{ zgh{"стандардни марокански тамашек"} zu{"исизулу"} } - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/sr_Cyrl_XK.txt b/source/data/lang/sr_Cyrl_XK.txt index 00e1368..aa98bce 100644 --- a/source/data/lang/sr_Cyrl_XK.txt +++ b/source/data/lang/sr_Cyrl_XK.txt @@ -17,5 +17,5 @@ sr_Cyrl_XK{ zgh{"стандардни марокански тамашек"} zu{"исизулу"} } - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/sr_Latn.txt b/source/data/lang/sr_Latn.txt index 8c8ff3f..9d7c642 100644 --- a/source/data/lang/sr_Latn.txt +++ b/source/data/lang/sr_Latn.txt @@ -9,9 +9,9 @@ sr_Latn{ colBackwards{"Sortiranje prema obrnutim akcentima"} colCaseFirst{"Ređanje prema malom/velikom slovu"} colCaseLevel{"Sortiranje prema malom/velikom slovu"} - colNormalization{"Normalizovano sortiranje"} - colNumeric{"Numeričko sortiranje"} - colStrength{"Sortiranje prema jačini"} + colNormalization{"normalizovano sortiranje"} + colNumeric{"numeričko sortiranje"} + colStrength{"sortiranje prema jačini"} collation{"redosled sortiranja"} currency{"valuta"} hc{"prikazivanje vremena (12- ili 24-časovno)"} @@ -84,7 +84,6 @@ sr_Latn{ cad{"kado"} car{"karipski"} cch{"atsam"} - ccp{"ccp"} ce{"čečenski"} ceb{"sebuanski"} cgg{"čiga"} @@ -121,7 +120,7 @@ sr_Latn{ din{"dinka"} dje{"zarma"} doi{"dogri"} - dsb{"donji lužičkosrpski"} + dsb{"donjolužičkosrpski"} dua{"duala"} dum{"srednjeholandski"} dv{"maldivski"} @@ -195,7 +194,7 @@ sr_Latn{ hmn{"hmonški"} ho{"hiri motu"} hr{"hrvatski"} - hsb{"gornji lužičkosrpski"} + hsb{"gornjolužičkosrpski"} ht{"haićanski"} hu{"mađarski"} hup{"hupa"} @@ -530,10 +529,12 @@ sr_Latn{ zxx{"bez lingvističkog sadržaja"} zza{"zaza"} } + Languages%menu{ + yue{"kantonski kineski"} + zh{"mandarinski kineski"} + } Languages%short{ az{"azerski"} - en_GB{"engleski (UK)"} - en_US{"engleski (SAD)"} } Languages%variant{ ps{"pašto"} @@ -850,7 +851,7 @@ sr_Latn{ TARASK{"Taraskijevička ortografija"} VALENCIA{"Valencijska"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — sve"} category-list{"{0}: {1}"} diff --git a/source/data/lang/sr_Latn_BA.txt b/source/data/lang/sr_Latn_BA.txt index 404947b..dc02968 100644 --- a/source/data/lang/sr_Latn_BA.txt +++ b/source/data/lang/sr_Latn_BA.txt @@ -13,10 +13,13 @@ sr_Latn_BA{ nqo{"n’ko"} shi{"južni šilha"} si{"sinhalski"} + sw_CD{"kisvahili"} tzm{"centralnoatlaski tamašek"} xh{"isikosa"} zgh{"standardni marokanski tamašek"} + zh_Hans{"pojednostavljeni kineski"} + zh_Hant{"tradicionalni kineski"} zu{"isizulu"} } - Version{"2.1.48.77"} + Version{"36"} } diff --git a/source/data/lang/sr_Latn_ME.txt b/source/data/lang/sr_Latn_ME.txt index 34b3794..d6f5983 100644 --- a/source/data/lang/sr_Latn_ME.txt +++ b/source/data/lang/sr_Latn_ME.txt @@ -17,5 +17,5 @@ sr_Latn_ME{ zgh{"standardni marokanski tamašek"} zu{"isizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/sr_Latn_XK.txt b/source/data/lang/sr_Latn_XK.txt index 9a3b64b..c8a94dd 100644 --- a/source/data/lang/sr_Latn_XK.txt +++ b/source/data/lang/sr_Latn_XK.txt @@ -17,5 +17,5 @@ sr_Latn_XK{ zgh{"standardni marokanski tamašek"} zu{"isizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/sv.txt b/source/data/lang/sv.txt index a7ab65f..5c5e747 100644 --- a/source/data/lang/sv.txt +++ b/source/data/lang/sv.txt @@ -291,7 +291,7 @@ sv{ kgp{"kaingang"} kha{"khasi"} kho{"khotanesiska"} - khq{"Timbuktu-songhoy"} + khq{"Timbuktu-songhai"} khw{"khowar"} ki{"kikuyu"} kiu{"kirmanjki"} @@ -323,7 +323,7 @@ sv{ kut{"kutenaj"} kv{"kome"} kw{"korniska"} - ky{"kirgisiska"} + ky{"kirgiziska"} la{"latin"} lad{"ladino"} lag{"langi"} @@ -506,7 +506,7 @@ sv{ seh{"sena"} sei{"seri"} sel{"selkup"} - ses{"Gao-songhay"} + ses{"Gao-songhai"} sg{"sango"} sga{"forniriska"} sgs{"samogitiska"} @@ -640,6 +640,14 @@ sv{ zxx{"inget språkligt innehåll"} zza{"zazaiska"} } + Languages%long{ + zh_Hans{"förenklad kinesiska"} + zh_Hant{"traditionell kinesiska"} + } + Languages%menu{ + yue{"kantonesiska"} + zh{"mandarin"} + } Languages%short{ az{"azeriska"} } @@ -679,6 +687,7 @@ sv{ Cyrl{"kyrilliska"} Cyrs{"fornkyrkoslavisk kyrilliska"} Deva{"devanagari"} + Dogr{"dogriska"} Dsrt{"deseret"} Dupl{"Duployéstenografiska"} Egyd{"demotiska"} @@ -740,10 +749,12 @@ sv{ Lyci{"lykiska"} Lydi{"lydiska"} Mahj{"mahajaniska"} + Maka{"makasariska"} Mand{"mandaéiska"} Mani{"manikeanska"} Marc{"marchenska"} Maya{"mayahieroglyfer"} + Medf{"medefaidrin"} Mend{"mende"} Merc{"kursiv-meroitiska"} Mero{"meroitiska"} @@ -1033,11 +1044,15 @@ sv{ 1994{"1994 års resisk stavning"} 1996{"1996 års reformerad tysk stavning"} ABL1943{"1943 års stavning"} + AKUAPEM{"akapuem (twi)"} ALALC97{"1997 års ALA-LC"} ALUKU{"Aluku-dialekt"} AO1990{"stavning enligt 1990 års överenskommelse"} + ARANES{"aranesiska (occitanska)"} AREVELA{"östarmeniska"} AREVMDA{"västarmeniska"} + ASANTE{"asante (twi)"} + AUVERN{"auvergniska (occitanska)"} BAKU1926{"1926 års stavning"} BALANKA{"balanka-dialekt"} BARLA{"barlavento-dialekt"} @@ -1047,14 +1062,22 @@ sv{ BISKE{"Bila-dialekt"} BOHORIC{"Bohorič-alfabetet"} BOONT{"boontling"} + CISAUP{"cisalpinska (occitanska)"} COLB1945{"stavning enligt 1945 års konvention mellan Portugal och Brasilien"} CORNU{"kornisk engelska"} + CREISS{"croissant-occitanska"} DAJNKO{"Dajnko-alfabetet"} EKAVSK{"ekavisk dialekt"} EMODENG{"tidig modern engelska"} FONIPA{"internationell fonetisk notation - IPA"} + FONKIRSH{"Kirshenbaums fonetiska alfabet"} + FONNAPA{"nordamerikanskt fonetiskt alfabet"} FONUPA{"uralisk fonetisk notation"} FONXSAMP{"X-SAMPA fonetisk notation"} + GASCON{"Gascogne-occitanska"} + GRCLASS{"klassisk occitanska"} + GRITAL{"italiensk-inspirerad occitanska"} + GRMISTR{"Mistral-occitanska"} HEPBURN{"Hepburn"} HOGNORSK{"högnorsk dialekt"} HSISTEMO{"h-system"} @@ -1067,6 +1090,8 @@ sv{ KOCIEWIE{"kociewiska"} KSCOR{"standardstavning"} LAUKIKA{"laukika-dialekt"} + LEMOSIN{"Limousin-occitanska"} + LENGADOC{"languedociska"} LIPAW{"Lipovaz-dialekt"} LUNA1918{"1918 års stavning"} METELKO{"Metelko-alfabetet"} @@ -1074,6 +1099,7 @@ sv{ NDYUKA{"Ndyuka-dialekt"} NEDIS{"natisonsk dialekt"} NEWFOUND{"Newfoundland-engelska"} + NICARD{"Nice-occitanska"} NJIVA{"Njiva-dialekt"} NULIK{"nulik-stavning"} OSOJS{"Osojane-dialekt"} @@ -1086,6 +1112,7 @@ sv{ PINYIN{"pinyin"} POLYTON{"polytonisk stavning"} POSIX{"Posix"} + PROVENC{"provensalska"} PUTER{"puter-dialekt"} REVISED{"reformerad stavning"} RIGIK{"klassisk volapük"} @@ -1109,10 +1136,11 @@ sv{ VAIDIKA{"vedisk dialekt"} VALENCIA{"valensisk dialekt"} VALLADER{"vallader-dialekt"} + VIVARAUP{"vivaroalpinska (occitanska)"} WADEGILE{"Wade-Giles"} XSISTEMO{"x-system"} } - Version{"2.1.48.90"} + Version{"36"} characterLabelPattern{ all{"{0} – alla"} category-list{"{0}: {1}"} diff --git a/source/data/lang/sv_FI.txt b/source/data/lang/sv_FI.txt index b448ec7..fb1c64e 100644 --- a/source/data/lang/sv_FI.txt +++ b/source/data/lang/sv_FI.txt @@ -4,11 +4,8 @@ sv_FI{ Keys{ timezone{"tidszon"} } - Languages{ - ky{"kirgiziska"} - } Scripts%variant{ Arab{"persisk-arabiska"} } - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/sw.txt b/source/data/lang/sw.txt index 7cac020..fb49a18 100644 --- a/source/data/lang/sw.txt +++ b/source/data/lang/sw.txt @@ -17,8 +17,8 @@ sw{ lb{"Mtindo wa Kukata Mstari"} ms{"Mfumo wa Vipimo"} numbers{"Nambari"} - timezone{"Ukanda Saa"} - va{"Tofauti ya Mandhari"} + timezone{"Saa za Eneo"} + va{"Lahaja za Lugha"} x{"Matumizi ya Kibinafsi"} } Languages{ @@ -80,6 +80,7 @@ sw{ byn{"Kiblin"} byv{"Kimedumba"} ca{"Kikatalani"} + ccp{"Kichakma"} ce{"Kichechenia"} ceb{"Kichebuano"} cgg{"Kichiga"} @@ -337,6 +338,7 @@ sw{ rm{"Kiromanshi"} rn{"Kirundi"} ro{"Kiromania"} + ro_MD{"Kimoldova cha Romania"} rof{"Kirombo"} root{"Kiroot"} ru{"Kirusi"} @@ -449,10 +451,16 @@ sw{ zxx{"Hakuna maudhui ya lugha"} zza{"Kizaza"} } + Languages%long{ + zh_Hant{"Kichina (cha jadi)"} + } + Languages%menu{ + yue{"Kichina, Kikantoni"} + zh{"Kichina sanifu"} + } Languages%short{ az{"Kiazeri"} en_GB{"Kiingereza (UK)"} - en_US{"Kiingereza (US)"} } Languages%variant{ ps{"Kipushto"} @@ -648,7 +656,7 @@ sw{ vaii{"Dijiti za Vai"} } } - Version{"2.1.48.17"} + Version{"36"} characterLabelPattern{ all{"{0} — zote"} category-list{"{0}: {1}"} diff --git a/source/data/lang/sw_CD.txt b/source/data/lang/sw_CD.txt index 56e2429..f87c748 100644 --- a/source/data/lang/sw_CD.txt +++ b/source/data/lang/sw_CD.txt @@ -36,5 +36,5 @@ sw_CD{ udm{"Kiudumurti"} yi{"Kiyidi"} } - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/sw_KE.txt b/source/data/lang/sw_KE.txt index 67fe8c3..7023d23 100644 --- a/source/data/lang/sw_KE.txt +++ b/source/data/lang/sw_KE.txt @@ -1,7 +1,12 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sw_KE{ + Keys{ + hc{"Kipindi cha saa (12 dhidi ya 24)"} + va{"Tofauti ya Lugha"} + } Languages{ + ar_001{"Kiarabu sanifu"} arq{"Kiarabu cha Aljeria"} as{"Kiasamisi"} chr{"Kicheroki"} @@ -32,6 +37,7 @@ sw_KE{ nqo{"Kiin’ko"} or{"Kiodia"} pcm{"Kipijini cha Nigeria"} + ro_MD{"Kimoldova cha Romania"} ses{"Kikoyraborosenni"} shu{"Kiarabu cha Chadi"} srn{"Kisranantongo"} @@ -44,5 +50,37 @@ sw_KE{ ug{"Kiuiguri"} zgh{"Kitamazighati Sanifu cha Moroko"} } - Version{"2.1.47.71"} + Languages%long{ + zh_Hans{"Kichina cha Kimandarini Rahisi"} + zh_Hant{"Kichina cha Kimandarini cha Jadi"} + } + Languages%menu{ + zh{"Kichina, Kimandarini"} + } + Scripts{ + Brai{"Breli"} + Ethi{"Kihabeshi"} + Hebr{"Kihibrania"} + Hira{"Kihiragana"} + Jamo{"Kijamo"} + Mymr{"Kimyama"} + Orya{"Kiodia"} + Taml{"Kitamili"} + } + Types{ + calendar{ + dangi{"Kalenda ya Kidangi"} + ethiopic{"Kalenda ya Kihabeshi"} + hebrew{"Kalenda ya kihibrania"} + } + numbers{ + ethi{"Nambari za Kihabeshi"} + geor{"Nambari za Kijiojia"} + hebr{"Nambari za Kihibrania"} + mlym{"Nambari za Kimalayalam"} + mymr{"Nambari za Kimyama"} + tamldec{"Nambari za Kitamili"} + } + } + Version{"36"} } diff --git a/source/data/lang/ta.txt b/source/data/lang/ta.txt index f881f5c..fa32b8a 100644 --- a/source/data/lang/ta.txt +++ b/source/data/lang/ta.txt @@ -54,7 +54,7 @@ ta{ av{"அவேரிக்"} awa{"அவதி"} ay{"அய்மரா"} - az{"அஸர்பைஜானி"} + az{"அசர்பைஜானி"} ba{"பஷ்கிர்"} bal{"பலூச்சி"} ban{"பலினீஸ்"} @@ -86,6 +86,7 @@ ta{ cad{"கேடோ"} car{"கரீப்"} cch{"ஆட்சம்"} + ccp{"சக்மா"} ce{"செச்சென்"} ceb{"செபுவானோ"} cgg{"சிகா"} @@ -546,10 +547,16 @@ ta{ zxx{"மொழி உள்ளடக்கம் ஏதுமில்லை"} zza{"ஜாஜா"} } + Languages%long{ + zh_Hans{"எளிதாக்கப்பட்ட சீன மாண்டரின்"} + zh_Hant{"பாரம்பரிய சீன மாண்டரின்"} + } + Languages%menu{ + yue{"சீனம், காண்டோனீஸ்"} + zh{"சீனம், மாண்டரின்"} + } Languages%short{ az{"அஸேரி"} - en_GB{"ஆங்கிலம் (யூகே)"} - en_US{"ஆங்கிலம் (யூஎஸ்)"} } Languages%variant{ ps{"புஷ்தோ"} @@ -841,7 +848,7 @@ ta{ PINYIN{"பின்யின் ரோமானைசெஷன்"} WADEGILE{"வேட்-கைல்ஸ் ரோமனைஷேசன்"} } - Version{"2.1.48.17"} + Version{"36"} characterLabelPattern{ all{"{0} — அனைத்தும்"} category-list{"{0}: {1}"} diff --git a/source/data/lang/te.txt b/source/data/lang/te.txt index ef98dea..d2736f0 100644 --- a/source/data/lang/te.txt +++ b/source/data/lang/te.txt @@ -86,6 +86,7 @@ te{ cad{"కేడ్డో"} car{"కేరిబ్"} cch{"అట్సామ్"} + ccp{"చక్మా"} ce{"చెచెన్"} ceb{"సెబువానో"} cgg{"ఛిగా"} @@ -544,6 +545,14 @@ te{ zxx{"లిపి లేదు"} zza{"జాజా"} } + Languages%long{ + zh_Hans{"సరళీకృత మాండరిన్ చైనీస్"} + zh_Hant{"సాంప్రదాయక మాండరిన్ చైనీస్"} + } + Languages%menu{ + yue{"చైనీస్, కాంటనీస్"} + zh{"చైనీస్, మాండరిన్"} + } Languages%short{ az{"అజెరి"} en_GB{"యు.కె. ఇంగ్లీష్"} @@ -844,7 +853,7 @@ te{ REVISED{"సవరించబడిన వర్ణక్రమం"} WADEGILE{"వేడ్-గైల్స్ రోమనైజేషన్"} } - Version{"2.1.48.17"} + Version{"36"} characterLabelPattern{ all{"{0} — అన్ని"} category-list{"{0}: {1}"} diff --git a/source/data/lang/teo.txt b/source/data/lang/teo.txt index 12441d9..78cf540 100644 --- a/source/data/lang/teo.txt +++ b/source/data/lang/teo.txt @@ -48,5 +48,5 @@ teo{ zh{"Kichina"} zu{"Kizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/tg.txt b/source/data/lang/tg.txt index 14febbb..d32633d 100644 --- a/source/data/lang/tg.txt +++ b/source/data/lang/tg.txt @@ -26,14 +26,22 @@ tg{ cy{"валлӣ"} da{"даниягӣ"} de{"немисӣ"} + de_AT{"немисии австриягӣ"} + de_CH{"немисии швейсарии болоӣ"} dsb{"сербии поёнӣ"} dv{"дивеҳӣ"} dz{"дзонгха"} el{"юнонӣ"} en{"англисӣ"} + en_AU{"англисии австралиягӣ"} + en_CA{"англисии канадагӣ"} + en_GB{"англисии британӣ"} + en_US{"англисии америкоӣ"} eo{"эсперанто"} es{"испанӣ"} - es_419{"испанӣ (Америкаи Лотинӣ)"} + es_419{"испании америкоии лотинӣ"} + es_ES{"испании аврупоӣ"} + es_MX{"испании мексикоӣ"} et{"эстонӣ"} eu{"баскӣ"} fa{"форсӣ"} @@ -42,6 +50,8 @@ tg{ fil{"филиппинӣ"} fo{"фарерӣ"} fr{"франсузӣ"} + fr_CA{"франсузии канадагӣ"} + fr_CH{"франсузии швейсарӣ"} fy{"фризии ғарбӣ"} ga{"ирландӣ"} gd{"шотландии гэлӣ"} @@ -107,6 +117,8 @@ tg{ pl{"лаҳистонӣ"} ps{"пушту"} pt{"португалӣ"} + pt_BR{"португалии бразилиягӣ"} + pt_PT{"португалии аврупоӣ"} qu{"кечуа"} quc{"киче"} rm{"ретороманӣ"} @@ -154,9 +166,15 @@ tg{ zh_Hans{"хитоии осонфаҳм"} zh_Hant{"хитоии анъанавӣ"} } + Languages%long{ + zh_Hans{"хитоии мандаринии осонфаҳм"} + zh_Hant{"хитоии мандаринии анъанавӣ"} + } + Languages%menu{ + zh{"хитоӣ, мандаринӣ"} + } Languages%short{ en_GB{"англисӣ (ШМ)"} - en_US{"англисӣ (ИМ)"} } Scripts{ Arab{"Арабӣ"} @@ -183,7 +201,7 @@ tg{ latn{"Рақамҳои ғарбӣ"} } } - Version{"2.1.49.82"} + Version{"36"} codePatterns{ language{"{0}"} script{"{0}"} diff --git a/source/data/lang/th.txt b/source/data/lang/th.txt index e5003ec..eb7ba6a 100644 --- a/source/data/lang/th.txt +++ b/source/data/lang/th.txt @@ -109,6 +109,7 @@ th{ car{"คาริบ"} cay{"คายูกา"} cch{"แอตแซม"} + ccp{"จักม่า"} ce{"เชเชน"} ceb{"เซบู"} cgg{"คีกา"} @@ -254,7 +255,7 @@ th{ id{"อินโดนีเซีย"} ie{"อินเตอร์ลิงกิว"} ig{"อิกโบ"} - ii{"เสฉวนยิ"} + ii{"เสฉวนยี่"} ik{"อีนูเปียก"} ilo{"อีโลโก"} inh{"อินกุช"} @@ -639,6 +640,10 @@ th{ zxx{"ไม่มีข้อมูลภาษา"} zza{"ซาซา"} } + Languages%menu{ + yue{"จีน (กวางตุ้ง)"} + zh{"จีนกลาง"} + } Languages%short{ az{"อะเซอรี"} en_GB{"อังกฤษ - อังกฤษ"} @@ -814,7 +819,7 @@ th{ Zsym{"สัญลักษณ์"} Zxxx{"ไม่มีภาษาเขียน"} Zyyy{"สามัญ"} - Zzzz{"สคริปต์ที่ไม่รู้จัก"} + Zzzz{"ตัวอักษรที่ไม่รู้จัก"} } Scripts%stand-alone{ Hans{"ฮั่นตัวย่อ"} @@ -828,7 +833,7 @@ th{ buddhist{"ปฏิทินพุทธ"} chinese{"ปฏิทินจีน"} coptic{"ปฏิทินคอปติก"} - dangi{"ปฏิทินทันกิ"} + dangi{"ปฏิทินเกาหลี"} ethiopic{"ปฏิทินเอธิโอเปีย"} ethiopic-amete-alem{"ปฏิทินปีโลกเอธิโอเปีย"} gregorian{"ปฏิทินเกรกอเรียน"} @@ -1055,7 +1060,7 @@ th{ VALLADER{"วัลลาเดอร์"} WADEGILE{"การถอดอักษรแบบเวด-ไจลส์"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — ทั้งหมด"} category-list{"{0}: {1}"} @@ -1072,7 +1077,7 @@ th{ } codePatterns{ language{"ภาษา: {0}"} - script{"สคริปต์: {0}"} + script{"ตัวอักษร: {0}"} territory{"ภูมิภาค: {0}"} } localeDisplayPattern{ diff --git a/source/data/lang/ti.txt b/source/data/lang/ti.txt index b17c43b..9afebea 100644 --- a/source/data/lang/ti.txt +++ b/source/data/lang/ti.txt @@ -104,7 +104,7 @@ ti{ Ethi{"ፊደል"} Latn{"ላቲን"} } - Version{"2.1.49.82"} + Version{"36"} codePatterns{ language{"{0}"} script{"{0}"} diff --git a/source/data/lang/tk.txt b/source/data/lang/tk.txt index 5f4ea59..646c829 100644 --- a/source/data/lang/tk.txt +++ b/source/data/lang/tk.txt @@ -85,7 +85,7 @@ tk{ dsb{"aşaky lužits dili"} dua{"duala dili"} dv{"diwehi dili"} - dyo{"ýola-Fonyi dili"} + dyo{"ýola-fonýi dili"} dz{"dzong-ke dili"} dzg{"daza dili"} ebu{"embu dili"} @@ -205,7 +205,7 @@ tk{ loz{"lozi dili"} lrc{"demirgazyk luri dili"} lt{"litwa dili"} - lu{"luba-Katanga dili"} + lu{"luba-katanga dili"} lua{"luba-Lulua dili"} lun{"lunda dili"} luo{"luo dili"} @@ -222,7 +222,7 @@ tk{ mer{"meru dili"} mfe{"morisýen dili"} mg{"malagasiý dili"} - mgh{"makua-Mitto dili"} + mgh{"makuwa-mito dili"} mgo{"meta dili"} mh{"marşall dili"} mi{"maori dili"} @@ -310,7 +310,7 @@ tk{ sd{"sindhi dili"} se{"demirgazyk saam dili"} seh{"sena dili"} - ses{"koýraboro-Senni dili"} + ses{"koýraboro-senni dili"} sg{"sango dili"} shi{"tahelhit dili"} shn{"şan dili"} @@ -330,7 +330,7 @@ tk{ srn{"sranan-tongo dili"} ss{"swati dili"} ssy{"saho dili"} - st{"günorta Soto dili"} + st{"günorta soto dili"} su{"sundan dili"} suk{"sukuma dili"} sv{"şwed dili"} @@ -361,7 +361,7 @@ tk{ twq{"tasawak dili"} ty{"taiti dili"} tyv{"tuwa dili"} - tzm{"orta-Atlas tamazight dili"} + tzm{"orta-atlas tamazight dili"} udm{"udmurt dili"} ug{"uýgur dili"} uk{"ukrain dili"} @@ -396,9 +396,16 @@ tk{ zxx{"dilçilige degişli mazmun ýok"} zza{"zazaki dili"} } + Languages%long{ + zh_Hans{"ýönekeýleşdirilen hytaý diliniň mandarin şiwesi"} + zh_Hant{"adaty hytaý diliniň mandarin şiwesi"} + } + Languages%menu{ + yue{"hytaý dili, kantonça"} + zh{"hytaý dili, mandarin"} + } Languages%short{ az{"azeri dili"} - en_US{"iňlis dili (ABŞ)"} } Scripts{ Arab{"Arap elipbiýi"} @@ -527,7 +534,7 @@ tk{ tibt{"Tibet sanlary"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — ähli"} category-list{"{0}: {1}"} diff --git a/source/data/lang/to.txt b/source/data/lang/to.txt index 6fa4989..8fb00f8 100644 --- a/source/data/lang/to.txt +++ b/source/data/lang/to.txt @@ -98,6 +98,7 @@ to{ car{"lea fakakalipa"} cay{"lea fakakaiuka"} cch{"lea fakaʻatisami"} + ccp{"lea fakasākima"} ce{"lea fakasese"} ceb{"lea fakasepuano"} cgg{"lea fakakika"} @@ -627,6 +628,14 @@ to{ zxx{"ʻikai ha lea"} zza{"lea fakasāsā"} } + Languages%long{ + zh_Hans{"lea fakasiaina-mānitali-fakafaingofua"} + zh_Hant{"lea fakasiaina-mānitali-tukufakaholo"} + } + Languages%menu{ + yue{"lea fakakuangitongi (Siaina)"} + zh{"lea fakasiaina-mānitali"} + } Languages%short{ az{"lea fakaʻasapaisani"} en_GB{"lea fakapilitānia"} @@ -887,7 +896,21 @@ to{ tibt{"fika fakatipeti"} } } - Version{"2.1.47.82"} + Version{"36"} + characterLabelPattern{ + all{"{0} — kotoa"} + category-list{"{0}: {1}"} + compatibility{"{0} — hoa"} + enclosed{"{0} — kāpui"} + extended{"{0} — toloi"} + historic{"{0} — tupuʻa"} + miscellaneous{"{0} — kehekehe"} + other{"{0} — kehe"} + scripts{"ngaahi tohinima — {0}"} + strokes{ + other{"kohi ʻe {0}"} + } + } codePatterns{ language{"Lea: {0}"} script{"Tohinima: {0}"} diff --git a/source/data/lang/tr.txt b/source/data/lang/tr.txt index 2850da9..c484d39 100644 --- a/source/data/lang/tr.txt +++ b/source/data/lang/tr.txt @@ -14,7 +14,7 @@ tr{ collation{"Sıralama Düzeni"} currency{"Para Birimi"} hc{"Saat Sistemi (12 - 24)"} - lb{"Line Break Style"} + lb{"Satır Sonu Stili"} ms{"Ölçü Sistemi"} numbers{"Rakamlar"} timezone{"Saat Dilimi"} @@ -63,7 +63,7 @@ tr{ avk{"Kotava"} awa{"Awadhi"} ay{"Aymara"} - az{"Azerice"} + az{"Azerbaycan dili"} az_Arab{"Güney Azerice"} ba{"Başkırtça"} bal{"Beluçça"} @@ -113,7 +113,7 @@ tr{ ccp{"Chakma"} ce{"Çeçence"} ceb{"Sebuano dili"} - cgg{"Kigaca"} + cgg{"Kiga"} ch{"Çamorro dili"} chb{"Çibça dili"} chg{"Çağatayca"} @@ -250,7 +250,7 @@ tr{ hup{"Hupaca"} hy{"Ermenice"} hz{"Herero dili"} - ia{"Interlingua"} + ia{"İnterlingua"} iba{"Iban"} ibb{"İbibio dili"} id{"Endonezce"} @@ -273,7 +273,7 @@ tr{ jpr{"Yahudi Farsçası"} jrb{"Yahudi Arapçası"} jut{"Yutland Dili"} - jv{"Cava Dili"} + jv{"Cava dili"} ka{"Gürcüce"} kaa{"Karakalpakça"} kab{"Kabiliyece"} @@ -316,7 +316,7 @@ tr{ krl{"Karelyaca"} kru{"Kurukh dili"} ks{"Keşmir dili"} - ksb{"Shambala"} + ksb{"Şambala"} ksf{"Bafia"} ksh{"Köln lehçesi"} ku{"Kürtçe"} @@ -512,7 +512,7 @@ tr{ sga{"Eski İrlandaca"} sgs{"Samogitçe"} sh{"Sırp-Hırvat Dili"} - shi{"Taşelhit"} + shi{"Taşelit"} shn{"Shan dili"} shu{"Çad Arapçası"} si{"Sinhali dili"} @@ -526,7 +526,7 @@ tr{ smj{"Lule Laponcası"} smn{"İnari Laponcası"} sms{"Skolt Laponcası"} - sn{"Shona"} + sn{"Şona dili"} snk{"Soninke"} so{"Somalice"} sog{"Sogdiana Dili"} @@ -538,7 +538,7 @@ tr{ ssy{"Saho"} st{"Güney Sotho dili"} stq{"Saterland Frizcesi"} - su{"Sunda Dili"} + su{"Sunda dili"} suk{"Sukuma dili"} sus{"Susu"} sux{"Sümerce"} @@ -641,6 +641,14 @@ tr{ zxx{"Dilbilim içeriği yok"} zza{"Zazaca"} } + Languages%long{ + zh_Hans{"Basitleştirilmiş Çince (Mandarin)"} + zh_Hant{"Geleneksel Çince (Mandarin)"} + } + Languages%menu{ + yue{"Çince, Kantonca"} + zh{"Çince, Mandarin"} + } Languages%short{ az{"Azerice"} en_GB{"Birleşik Krallık İngilizcesi"} @@ -667,6 +675,7 @@ tr{ Cakm{"Chakma"} Cans{"UCAS"} Cari{"Karya"} + Cham{"Cham"} Cher{"Çeroki"} Cirt{"Cirth"} Copt{"Kıpti"} @@ -689,7 +698,7 @@ tr{ Grek{"Yunan"} Gujr{"Gücerat"} Guru{"Gurmukhi"} - Hanb{"Hanb"} + Hanb{"Han - Bopomofo"} Hang{"Hangıl"} Hani{"Han"} Hano{"Hanunoo"} @@ -699,7 +708,7 @@ tr{ Hira{"Hiragana"} Hluw{"Anadolu Hiyeroglifleri"} Hmng{"Pahavh Hmong"} - Hrkt{"Katakana veya Hiragana"} + Hrkt{"Japon hece alfabeleri"} Hung{"Eski Macar"} Inds{"Indus"} Ital{"Eski İtalyan"} @@ -731,11 +740,13 @@ tr{ Lydi{"Lidya"} Mahj{"Mahajani"} Mand{"Manden"} + Mani{"Mani"} Maya{"Maya Hiyeroglifleri"} Mend{"Mende"} Merc{"Meroitik El Yazısı"} Mero{"Meroitik"} Mlym{"Malayalam"} + Modi{"Modi"} Mong{"Moğol"} Moon{"Moon"} Mroo{"Mro"} @@ -908,13 +919,13 @@ tr{ h24{"24 Saat Sistemi (1–24)"} } lb{ - loose{"Loose Line Break Style"} - normal{"Normal Line Break Style"} - strict{"Strict Line Break Style"} + loose{"Serbest Satır Sonu Stili"} + normal{"Normal Satır Sonu Stili"} + strict{"Katı Satır Sonu Stili"} } m0{ - bgn{"BGN"} - ungegn{"UNGEGN"} + bgn{"US BGN Transliterasyon"} + ungegn{"UN GEGN Transliterasyon"} } ms{ metric{"Metrik Sistem"} @@ -943,7 +954,7 @@ tr{ greklow{"Küçük Harf Yunan Rakamları"} gujr{"Gücerat Rakamları"} guru{"Gurmukhi Rakamları"} - hanidec{"Çin Rakamları"} + hanidec{"Çin Ondalık Rakamları"} hans{"Basitleştirilmiş Çin Rakamları"} hansfin{"Finansal Basitleştirilmiş Çin Rakamları"} hant{"Geleneksel Çin Rakamları"} @@ -1036,7 +1047,7 @@ tr{ VALENCIA{"Valensiyaca"} WADEGILE{"Wade-Giles (Latin Alfabesinde Yazımı)"} } - Version{"2.1.48.42"} + Version{"36"} characterLabelPattern{ all{"{0} — tümü"} category-list{"{0}: {1}"} diff --git a/source/data/lang/tt.txt b/source/data/lang/tt.txt index 39e7cb8..25471ad 100644 --- a/source/data/lang/tt.txt +++ b/source/data/lang/tt.txt @@ -27,14 +27,18 @@ tt{ cy{"уэльс"} da{"дания"} de{"алман"} + de_CH{"югары алман (Швейцария)"} dsb{"түбән сорб"} dv{"мальдив"} dz{"дзонг-кха"} el{"грек"} en{"инглиз"} + en_GB{"Британия инглизчәсе"} + en_US{"Америка инглизчәсе"} eo{"эсперанто"} es{"испан"} es_419{"испан (Латин Америкасы)"} + es_ES{"испан (Европа)"} et{"эстон"} eu{"баск"} fa{"фарсы"} @@ -106,6 +110,7 @@ tt{ pl{"поляк"} ps{"пушту"} pt{"португал"} + pt_PT{"португал (Европа)"} qu{"кечуа"} quc{"киче"} rm{"ретороман"} @@ -153,6 +158,17 @@ tt{ zh_Hans{"гадиләштерелгән кытай"} zh_Hant{"традицион кытай"} } + Languages%long{ + zh_Hans{"гадиләштерелгән мандарин кытайчасы"} + zh_Hant{"традицион мандарин кытайчасы"} + } + Languages%menu{ + zh{"мандарин кытайчасы"} + } + Languages%short{ + en_GB{"инглиз (Берләшкән Корольлек)"} + en_US{"инглиз (АКШ)"} + } Scripts{ Arab{"гарәп"} Cyrl{"кирилл"} @@ -177,7 +193,7 @@ tt{ latn{"көнбатыш цифрлары"} } } - Version{"2.1.49.82"} + Version{"36"} codePatterns{ language{"Тел: {0}"} script{"Язу: {0}"} diff --git a/source/data/lang/twq.txt b/source/data/lang/twq.txt index e617bed..f6d056a 100644 --- a/source/data/lang/twq.txt +++ b/source/data/lang/twq.txt @@ -48,5 +48,5 @@ twq{ zh{"Sinuwa senni, Mandareŋ"} zu{"Zulu senni"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/tzm.txt b/source/data/lang/tzm.txt index a5b63c1..31dff78 100644 --- a/source/data/lang/tzm.txt +++ b/source/data/lang/tzm.txt @@ -48,5 +48,5 @@ tzm{ zh{"Tacinwit,Mandarin"} zu{"tazulut"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/ug.txt b/source/data/lang/ug.txt index 5849595..26ba12f 100644 --- a/source/data/lang/ug.txt +++ b/source/data/lang/ug.txt @@ -830,7 +830,7 @@ ug{ VALENCIA{"ۋالېنسىيە"} WADEGILE{"ۋېي ئائىلىسى پىنيىن لاتىنلاشتۇرۇش"} } - Version{"2.1.49.82"} + Version{"36"} codePatterns{ language{"تىل: {0}"} script{"يېزىق: {0}"} diff --git a/source/data/lang/uk.txt b/source/data/lang/uk.txt index 3d57e9c..b5f6f56 100644 --- a/source/data/lang/uk.txt +++ b/source/data/lang/uk.txt @@ -566,13 +566,20 @@ uk{ zh_Hant{"китайська (традиційне письмо)"} zu{"зулуська"} zun{"зуньї"} - zxx{"немає мовного вмісту"} + zxx{"природномовний текст відсутній"} zza{"зазакі"} } + Languages%long{ + zh_Hans{"китайська мандаринська (спрощене письмо)"} + zh_Hant{"китайська мандаринська (традиційне письмо)"} + } + Languages%menu{ + yue{"китайська кантонська"} + zh{"китайська мандаринська"} + } Languages%short{ az{"азері"} en_GB{"англійська (Брит.)"} - en_US{"англійська (США)"} } Scripts{ Adlm{"адлам"} @@ -821,7 +828,7 @@ uk{ strict{"точний стиль розриву рядка"} } m0{ - bgn{"транслітерація BGN США"} + bgn{"транслітерація РГН США"} ungegn{"транслітерація ГЕГН ООН"} } ms{ @@ -902,7 +909,7 @@ uk{ VALENCIA{"Валенсійська"} WADEGILE{"Романізація Вейда-Джайлза"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — усі"} category-list{"{0}: {1}"} diff --git a/source/data/lang/ur.txt b/source/data/lang/ur.txt index 4f7e492..55d359e 100644 --- a/source/data/lang/ur.txt +++ b/source/data/lang/ur.txt @@ -8,9 +8,9 @@ ur{ colBackwards{"معکوس تلفظ کی چھٹائی"} colCaseFirst{"بڑے حروف/ چھوٹے حروف کی ترتیب بندی"} colCaseLevel{"حروف کے تئیں حساس چھٹائی"} - colNormalization{"معمول کی چھٹائی"} - colNumeric{"عددی چھٹائی"} - colStrength{"چھٹائی کی قوت"} + colNormalization{"معمول کی چھانٹی"} + colNumeric{"عددی چھانٹی"} + colStrength{"چھانٹی کی قوت"} collation{"چھٹائی کی ترتیب"} currency{"کرنسی"} hc{"گھنٹہ سائیکل (12 بنام 24)"} @@ -62,7 +62,7 @@ ur{ bin{"بینی"} bla{"سکسیکا"} bm{"بمبارا"} - bn{"بنگالی"} + bn{"بنگلہ"} bo{"تبتی"} br{"بریٹن"} brx{"بوڈو"} @@ -434,9 +434,16 @@ ur{ zxx{"کوئی لسانی مواد نہیں"} zza{"زازا"} } + Languages%long{ + zh_Hans{"سادہ مندارن چینی"} + zh_Hant{"روایتی مندارن چینی"} + } + Languages%menu{ + yue{"چینی، کینٹونیز"} + zh{"چینی، مندارن"} + } Languages%short{ az{"ازیری"} - en_GB{"انگریزی (یو کے)"} en_US{"امریکی انگریزی"} } Scripts{ @@ -551,7 +558,7 @@ ur{ big5han{"روایتی چینی کی چھٹائی کی ترتیب - Big5"} compat{"سابقہ چھٹائی کی ترتیب، مطابقت کیلئے"} dictionary{"لغت کی چھٹنی کی ترتیب"} - ducet{"ڈیفالٹ یونیکوڈ کی چھٹنی کی ترتیب"} + ducet{"ڈیفالٹ یونی کوڈ چھانٹی کی ترتیب"} eor{"یورپی ترتیبی قوانین"} gb2312han{"آسان چینی کی چھٹائی کی ترتیب - GB2312"} phonebook{"فون بک کی چھٹنی کی ترتیب"} @@ -560,7 +567,7 @@ ur{ reformed{"دوبارہ تشکیل شدہ چھٹنی کی ترتیب"} search{"عام-مقصد کی تلاش"} searchjl{"Hangul Initial Consonant کے لحاظ سے تلاش کریں"} - standard{"معیاری چھنٹائی کی ترتیب"} + standard{"معیاری چھانٹی کی ترتیب"} stroke{"سٹروک کی چھٹنی کی ترتیب"} traditional{"روایتی چھٹنی کی ترتیب"} unihan{"اساسی-سٹروک کی چھٹنی کی ترتیب"} @@ -582,8 +589,8 @@ ur{ strict{"سخت لائن بریک انداز"} } m0{ - bgn{"US BGN"} - ungegn{"UN GEGN"} + bgn{"US BGN ٹرانسلٹریشن"} + ungegn{"UN GEGN ٹرانسلٹریشن"} } ms{ metric{"میٹرک نظام"} @@ -633,7 +640,7 @@ ur{ vaii{"وائی ہندسے"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — تمام"} category-list{"{0}: {1}"} diff --git a/source/data/lang/ur_IN.txt b/source/data/lang/ur_IN.txt index 3a8271e..2e87cd2 100644 --- a/source/data/lang/ur_IN.txt +++ b/source/data/lang/ur_IN.txt @@ -23,5 +23,5 @@ ur_IN{ tibt{"تبتی ہندسے"} } } - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/uz.txt b/source/data/lang/uz.txt index 55969c4..1c4ae8d 100644 --- a/source/data/lang/uz.txt +++ b/source/data/lang/uz.txt @@ -58,6 +58,7 @@ uz{ bug{"bugi"} byn{"blin"} ca{"katalan"} + ccp{"chakma"} ce{"chechen"} ceb{"sebuan"} cgg{"chiga"} @@ -414,6 +415,14 @@ uz{ zxx{"til tarkibi yo‘q"} zza{"zaza"} } + Languages%long{ + zh_Hans{"xitoy (soddalashtirilgan mandarin)"} + zh_Hant{"xitoy (an’anaviy mandarin)"} + } + Languages%menu{ + yue{"xitoy, kanton"} + zh{"xitoy, mandarin"} + } Languages%short{ az{"ozar"} en_GB{"ingliz (Buyuk Britaniya)"} @@ -546,7 +555,7 @@ uz{ tibt{"tibet raqamlari"} } } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — hammasi"} category-list{"{0}: {1}"} diff --git a/source/data/lang/uz_Arab.txt b/source/data/lang/uz_Arab.txt index 679b844..1cafd03 100644 --- a/source/data/lang/uz_Arab.txt +++ b/source/data/lang/uz_Arab.txt @@ -10,5 +10,5 @@ uz_Arab{ Scripts{ Arab{"عربی"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/uz_Cyrl.txt b/source/data/lang/uz_Cyrl.txt index 036f15f..8e447bf 100644 --- a/source/data/lang/uz_Cyrl.txt +++ b/source/data/lang/uz_Cyrl.txt @@ -313,7 +313,6 @@ uz_Cyrl{ } Languages%short{ az{"озар"} - en_US{"инглизча (АҚШ)"} } Scripts{ Arab{"Араб"} @@ -407,7 +406,7 @@ uz_Cyrl{ tibt{"Тибет рақамлари"} } } - Version{"2.1.49.82"} + Version{"36"} codePatterns{ language{"Тил: {0}"} script{"{0}"} diff --git a/source/data/lang/uz_Latn.txt b/source/data/lang/uz_Latn.txt index 14301e9..bc68300 100644 --- a/source/data/lang/uz_Latn.txt +++ b/source/data/lang/uz_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License uz_Latn{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/vai.txt b/source/data/lang/vai.txt index 867059a..90d2535 100644 --- a/source/data/lang/vai.txt +++ b/source/data/lang/vai.txt @@ -48,5 +48,5 @@ vai{ zh{"ꕦꕇꔧ"} zu{"ꖮꖨ"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/vai_Latn.txt b/source/data/lang/vai_Latn.txt index cc00c96..3a28ec3 100644 --- a/source/data/lang/vai_Latn.txt +++ b/source/data/lang/vai_Latn.txt @@ -49,5 +49,5 @@ vai_Latn{ zh{"Chaniĩ"} zu{"Zúlu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/vai_Vaii.txt b/source/data/lang/vai_Vaii.txt index d602abb..5390da9 100644 --- a/source/data/lang/vai_Vaii.txt +++ b/source/data/lang/vai_Vaii.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License vai_Vaii{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/vi.txt b/source/data/lang/vi.txt index 9b731a9..25590a0 100644 --- a/source/data/lang/vi.txt +++ b/source/data/lang/vi.txt @@ -13,7 +13,7 @@ vi{ colStrength{"Cường độ sắp xếp"} collation{"Thứ tự sắp xếp"} currency{"Tiền tệ"} - hc{"Chu kỳ giờ (12 vs 24)"} + hc{"Chu kỳ giờ (12 với 24)"} lb{"Kiểu xuống dòng"} ms{"Hệ thống đo lường"} numbers{"Số"} @@ -536,7 +536,7 @@ vi{ udm{"Tiếng Udmurt"} ug{"Tiếng Uyghur"} uga{"Tiếng Ugaritic"} - uk{"Tiếng Ucraina"} + uk{"Tiếng Ukraina"} umb{"Tiếng Umbundu"} und{"Ngôn ngữ không xác định"} ur{"Tiếng Urdu"} @@ -576,6 +576,14 @@ vi{ zxx{"Không có nội dung ngôn ngữ"} zza{"Tiếng Zaza"} } + Languages%long{ + zh_Hans{"Tiếng Trung Phổ thông (Giản thể)"} + zh_Hant{"Tiếng Trung Phổ thông (Phồn thể)"} + } + Languages%menu{ + yue{"Tiếng Trung (Tiếng Quảng Đông)"} + zh{"Tiếng Trung (Phổ thông)"} + } Languages%short{ az{"Tiếng Azeri"} en_GB{"Tiếng Anh (Anh)"} @@ -585,10 +593,7 @@ vi{ ps{"Tiếng Pushto"} } Scripts{ - Adlm{"Adlm"} Afak{"Chữ Afaka"} - Aghb{"Aghb"} - Ahom{"Ahom"} Arab{"Chữ Ả Rập"} Armi{"Chữ Imperial Aramaic"} Armn{"Chữ Armenia"} @@ -597,8 +602,7 @@ vi{ Bamu{"Chữ Bamum"} Bass{"Chữ Bassa Vah"} Batk{"Chữ Batak"} - Beng{"Chữ Bangladesh"} - Bhks{"Bhks"} + Beng{"Chữ Bangla"} Blis{"Chữ Blissymbols"} Bopo{"Chữ Bopomofo"} Brah{"Chữ Brahmi"} @@ -616,37 +620,30 @@ vi{ Cyrl{"Chữ Kirin"} Cyrs{"Chữ Kirin Slavơ Nhà thờ cổ"} Deva{"Chữ Devanagari"} - Dogr{"Dogr"} Dsrt{"Chữ Deseret"} Dupl{"Chữ tốc ký Duployan"} Egyd{"Chữ Ai Cập bình dân"} Egyh{"Chữ Ai Cập thày tu"} Egyp{"Chữ tượng hình Ai Cập"} - Elba{"Elba"} - Elym{"Elym"} Ethi{"Chữ Ethiopia"} Geok{"Chữ Khutsuri Georgia"} - Geor{"Chữ Gruzia"} + Geor{"Chữ Georgia"} Glag{"Chữ Glagolitic"} - Gong{"Gong"} - Gonm{"Gonm"} Goth{"Chữ Gô-tích"} Gran{"Chữ Grantha"} Grek{"Chữ Hy Lạp"} Gujr{"Chữ Gujarati"} Guru{"Chữ Gurmukhi"} - Hanb{"Chữ Hanb"} - Hang{"Chữ Hangul"} + Hanb{"Chữ Hán có chú âm"} + Hang{"Chữ Hàn"} Hani{"Chữ Hán"} Hano{"Chữ Hanunoo"} Hans{"Giản thể"} Hant{"Phồn thể"} - Hatr{"Hatr"} Hebr{"Chữ Do Thái"} Hira{"Chữ Hiragana"} Hluw{"Chữ tượng hình Anatolia"} Hmng{"Chữ Pahawh Hmong"} - Hmnp{"Hmnp"} Hrkt{"Bảng ký hiệu âm tiết Tiếng Nhật"} Hung{"Chữ Hungary cổ"} Inds{"Chữ Indus"} @@ -677,28 +674,20 @@ vi{ Loma{"Chữ Loma"} Lyci{"Chữ Lycia"} Lydi{"Chữ Lydia"} - Mahj{"Mahj"} - Maka{"Maka"} Mand{"Chữ Mandaean"} Mani{"Chữ Manichaean"} - Marc{"Marc"} Maya{"Chữ tượng hình Maya"} - Medf{"Medf"} Mend{"Chữ Mende"} Merc{"Chữ Meroitic Nét thảo"} Mero{"Chữ Meroitic"} Mlym{"Chữ Malayalam"} - Modi{"Modi"} Mong{"Chữ Mông Cổ"} Moon{"Chữ nổi Moon"} Mroo{"Chữ Mro"} Mtei{"Chữ Meitei Mayek"} - Mult{"Mult"} Mymr{"Chữ Myanmar"} - Nand{"Nand"} Narb{"Chữ Bắc Ả Rập cổ"} Nbat{"Chữ Nabataean"} - Newa{"Newa"} Nkgb{"Chữ Naxi Geba"} Nkoo{"Chữ N’Ko"} Nshu{"Chữ Nüshu"} @@ -706,10 +695,8 @@ vi{ Olck{"Chữ Ol Chiki"} Orkh{"Chữ Orkhon"} Orya{"Chữ Odia"} - Osge{"Osge"} Osma{"Chữ Osmanya"} Palm{"Chữ Palmyrene"} - Pauc{"Pauc"} Perm{"Chữ Permic cổ"} Phag{"Chữ Phags-pa"} Phli{"Chữ Pahlavi Văn bia"} @@ -718,9 +705,7 @@ vi{ Phnx{"Chữ Phoenicia"} Plrd{"Ngữ âm Pollard"} Prti{"Chữ Parthia Văn bia"} - Qaag{"Qaag"} Rjng{"Chữ Rejang"} - Rohg{"Rohg"} Roro{"Chữ Rongorongo"} Runr{"Chữ Runic"} Samr{"Chữ Samaritan"} @@ -730,13 +715,9 @@ vi{ Sgnw{"Chữ viết Ký hiệu"} Shaw{"Chữ Shavian"} Shrd{"Chữ Sharada"} - Sidd{"Sidd"} Sind{"Chữ Khudawadi"} Sinh{"Chữ Sinhala"} - Sogd{"Sogd"} - Sogo{"Sogo"} Sora{"Chữ Sora Sompeng"} - Soyo{"Soyo"} Sund{"Chữ Xu-đăng"} Sylo{"Chữ Syloti Nagri"} Syrc{"Chữ Syria"} @@ -762,12 +743,10 @@ vi{ Vaii{"Chữ Vai"} Visp{"Tiếng nói Nhìn thấy được"} Wara{"Chữ Varang Kshiti"} - Wcho{"Wcho"} Wole{"Chữ Woleai"} Xpeo{"Chữ Ba Tư cổ"} Xsux{"Chữ hình nêm Sumero-Akkadian"} Yiii{"Chữ Di"} - Zanb{"Zanb"} Zinh{"Chữ Kế thừa"} Zmth{"Ký hiệu Toán học"} Zsye{"Biểu tượng"} @@ -901,7 +880,7 @@ vi{ ethi{"Chữ số Ethiopia"} finance{"Chữ số dùng trong tài chính"} fullwide{"Chữ số có độ rộng đầy đủ"} - geor{"Chữ số Gruzia"} + geor{"Chữ số Georgia"} gong{"Chữ số Gong"} gonm{"Chữ số Gonm"} grek{"Chữ số Hy Lạp"} @@ -976,86 +955,47 @@ vi{ 1959ACAD{"Hàn lâm"} 1994{"Phép chính tả Resian Chuẩn hóa"} 1996{"Phép chính tả Tiếng Đức năm 1996"} - ABL1943{"ABL1943"} - AKUAPEM{"AKUAPEM"} ALALC97{"La Mã hóa ALA-LC, ấn bản năm 1997"} ALUKU{"Phương ngữ Aluku"} - AO1990{"AO1990"} - ARANES{"ARANES"} AREVELA{"Tiếng Armenia Miền Đông"} AREVMDA{"Tiếng Armenia Miền Tây"} - ASANTE{"ASANTE"} - AUVERN{"AUVERN"} BAKU1926{"Bảng chữ cái La-tinh Tiếng Turk Hợp nhất"} - BALANKA{"BALANKA"} - BARLA{"BARLA"} - BASICENG{"BASICENG"} BISKE{"Phương ngữ San Giorgio/Bila"} BOHORIC{"Bảng chữ cái Bohorič"} BOONT{"Tiếng Boontling"} - CISAUP{"CISAUP"} - COLB1945{"COLB1945"} - CORNU{"CORNU"} - CREISS{"CREISS"} DAJNKO{"Bảng chữ cái Dajnko"} - EKAVSK{"EKAVSK"} EMODENG{"Tiếng Anh Hiện đại Thời kỳ đầu"} FONIPA{"Ngữ âm học IPA"} - FONKIRSH{"FONKIRSH"} - FONNAPA{"FONNAPA"} FONUPA{"Ngữ âm học UPA"} - GASCON{"GASCON"} - GRCLASS{"GRCLASS"} - GRITAL{"GRITAL"} - GRMISTR{"GRMISTR"} HEPBURN{"La mã hóa Hepburn"} - HSISTEMO{"HSISTEMO"} - IJEKAVSK{"IJEKAVSK"} - IVANCHOV{"IVANCHOV"} KKCOR{"Phép chính tả Chung"} - KOCIEWIE{"KOCIEWIE"} KSCOR{"Phép chính tả Chuẩn"} - LEMOSIN{"LEMOSIN"} - LENGADOC{"LENGADOC"} LIPAW{"Phương ngữ Lipovaz của người Resian"} METELKO{"Bảng chữ cái Metelko"} MONOTON{"Đơn âm"} NDYUKA{"Phương ngữ Ndyuka"} NEDIS{"Phương ngữ Natisone"} - NEWFOUND{"NEWFOUND"} - NICARD{"NICARD"} NJIVA{"Phương ngữ Gniva/Njiva"} NULIK{"Tiếng Volapük Hiện đại"} OSOJS{"Phương ngữ Oseacco/Osojane"} - OXENDICT{"OXENDICT"} - PAHAWH2{"PAHAWH2"} - PAHAWH3{"PAHAWH3"} - PAHAWH4{"PAHAWH4"} PAMAKA{"Phương ngữ Pamaka"} PINYIN{"La Mã hóa Bính âm"} POLYTON{"Đa âm"} POSIX{"Máy tính"} - PROVENC{"PROVENC"} REVISED{"Phép chính tả Sửa đổi"} RIGIK{"Tiếng Volapük Cổ điển"} ROZAJ{"Tiếng Resian"} SAAHO{"Tiếng Saho"} SCOTLAND{"Tiếng Anh chuẩn tại Scotland"} SCOUSE{"Phương ngữ Liverpool"} - SIMPLE{"SIMPLE"} SOLBA{"Phương ngữ Stolvizza/Solbica"} - SOTAV{"SOTAV"} - SPANGLIS{"SPANGLIS"} TARASK{"Phép chính tả Taraskievica"} UCCOR{"Phép chính tả Hợp nhất"} UCRCOR{"Phép chính tả Sửa đổi Hợp nhất"} - UNIFON{"UNIFON"} VALENCIA{"Tiếng Valencia"} - VIVARAUP{"VIVARAUP"} WADEGILE{"La Mã hóa Wade-Giles"} - XSISTEMO{"XSISTEMO"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — tất cả"} category-list{"{0}: {1}"} diff --git a/source/data/lang/vun.txt b/source/data/lang/vun.txt index 46d62a9..b74b593 100644 --- a/source/data/lang/vun.txt +++ b/source/data/lang/vun.txt @@ -48,5 +48,5 @@ vun{ zh{"Kyichina"} zu{"Kyizulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/wae.txt b/source/data/lang/wae.txt index 8dc8138..508a233 100644 --- a/source/data/lang/wae.txt +++ b/source/data/lang/wae.txt @@ -193,7 +193,7 @@ wae{ latn{"Arabiši Zálä"} } } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"Sprač: {0}"} script{"Alfabét: {0}"} diff --git a/source/data/lang/wo.txt b/source/data/lang/wo.txt index 7dad2bc..3ca4736 100644 --- a/source/data/lang/wo.txt +++ b/source/data/lang/wo.txt @@ -181,7 +181,7 @@ wo{ latn{"Siifari Tugal"} } } - Version{"2.1.49.82"} + Version{"36"} codePatterns{ language{"{0}"} script{"{0}"} diff --git a/source/data/lang/xh.txt b/source/data/lang/xh.txt index ac0aae3..814cec6 100644 --- a/source/data/lang/xh.txt +++ b/source/data/lang/xh.txt @@ -4,5 +4,5 @@ xh{ Languages{ xh{"isiXhosa"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/lang/xog.txt b/source/data/lang/xog.txt index 8443154..195ebba 100644 --- a/source/data/lang/xog.txt +++ b/source/data/lang/xog.txt @@ -48,5 +48,5 @@ xog{ zh{"Olucayina"} zu{"Oluzzulu"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/yav.txt b/source/data/lang/yav.txt index c5b64bc..8b59ea7 100644 --- a/source/data/lang/yav.txt +++ b/source/data/lang/yav.txt @@ -48,5 +48,5 @@ yav{ zh{"sinúɛ"} zu{"nusulú"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/lang/yi.txt b/source/data/lang/yi.txt index b73bf91..a42d152 100644 --- a/source/data/lang/yi.txt +++ b/source/data/lang/yi.txt @@ -155,7 +155,6 @@ yi{ zu{"זולו"} } Languages%short{ - en_GB{"ענגליש (GB)"} en_US{"ענגליש (US)"} } Scripts{ @@ -171,7 +170,7 @@ yi{ gregorian{"גרעגארישער קאַלענדאַר"} } } - Version{"2.1.47.82"} + Version{"36"} codePatterns{ language{"שפראַך: {0}"} script{"שריפֿט: {0}"} diff --git a/source/data/lang/yo.txt b/source/data/lang/yo.txt index 4101c96..dcff06c 100644 --- a/source/data/lang/yo.txt +++ b/source/data/lang/yo.txt @@ -5,7 +5,7 @@ yo{ af{"Èdè Afrikani"} ak{"Èdè Akani"} am{"Èdè Amariki"} - ar{"Èdè Arabiki"} + ar{"Èdè Árábìkì"} as{"Ti Assam"} az{"Èdè Azerbaijani"} be{"Èdè Belarusi"} @@ -17,8 +17,8 @@ yo{ cs{"Èdè seeki"} cy{"Èdè Welshi"} da{"Èdè Ilẹ̀ Denmark"} - de{"Èdè Ilẹ̀ Jámánì"} - de_AT{"Èdè Ilẹ̀ Jámánì orílẹ̀-èdè Ọ́síríà )"} + de{"Èdè Jámánì"} + de_AT{"Èdè Jámánì (Ọ́síríà )"} de_CH{"Èdè Ilẹ̀ Jámánì (Orílẹ́ède swítsàlandì)"} el{"Èdè Giriki"} en{"Èdè Gẹ̀ẹ́sì"} @@ -27,18 +27,22 @@ yo{ en_GB{"Èdè òyìnbó Gẹ̀ẹ́sì"} eo{"Èdè Esperanto"} es{"Èdè Sípáníìṣì"} - es_419{"Èdè Sípáníìṣì (orílẹ̀-èdè Látìn-Amẹ́ríkà)"} + es_419{ + "Èdè Sípáníìṣì (orílẹ̀-èdè Látìn-Amẹ́ríkà) ( Èdè Sípáníìshì (Látìn-Amẹ́rí" + "kà)" + } es_ES{"Èdè Sípáníìṣì (orílẹ̀-èdè Yúróòpù)"} es_MX{"Èdè Sípáníìṣì (orílẹ̀-èdè Mẹ́síkò)"} et{"Èdè Estonia"} eu{"Èdè Baski"} fa{"Èdè Pasia"} + ff{"Èdè Fúlàní"} fi{"Èdè Finisi"} fil{"Èdè Filipino"} fo{"Èdè Faroesi"} fr{"Èdè Faransé"} fr_CA{"Èdè Faransé (orílẹ̀-èdè Kánádà)"} - fr_CH{"Èdè Faransé (orílẹ̀-èdè swítsàlandì)"} + fr_CH{"Èdè Faranṣé (Súwísàlaǹdì)"} fy{"Èdè Frisia"} ga{"Èdè Ireland"} gd{"Èdè Gaelik ti Ilu Scotland"} @@ -47,22 +51,22 @@ yo{ gu{"Èdè Gujarati"} ha{"Èdè Hausa"} he{"Èdè Heberu"} - hi{"Èdè Hindi"} + hi{"Èdè Híńdì"} hr{"Èdè Kroatia"} hu{"Èdè Hungaria"} hy{"Èdè Ile Armenia"} ia{"Èdè pipo"} - id{"Èdè Indonasia"} + id{"Èdè Indonéṣíà"} ie{"Iru Èdè"} - ig{"Èdè Ibo"} + ig{"Èdè Yíbò"} is{"Èdè Icelandic"} - it{"Èdè ilẹ̀ Ítálì"} - ja{"Èdè ilẹ̀ Japan"} + it{"Èdè Ítálì"} + ja{"Èdè Jàpáànù"} jv{"Èdè Javanasi"} ka{"Èdè Georgia"} km{"Èdè kameri"} kn{"Èdè Kannada"} - ko{"Èdè Koria"} + ko{"Èdè Kòríà"} la{"Èdè Latini"} lt{"Èdè Lithuania"} lv{"Èdè Latvianu"} @@ -72,16 +76,16 @@ yo{ mt{"Èdè Malta"} my{"Èdè Bumiisi"} ne{"Èdè Nepali"} - nl{"Èdè Duki"} + nl{"Èdè Dọ́ọ̀ṣì"} no{"Èdè Norway"} oc{"Èdè Occitani"} pa{"Èdè Punjabi"} - pl{"Èdè Ilẹ̀ Polandi"} + pl{"Èdè Póláǹdì"} pt{"Èdè Pọtogí"} pt_BR{"Èdè Pọtogí (Orilẹ̀-èdè Bràsíl)"} pt_PT{"Èdè Pọtogí (orílẹ̀-èdè Yúróòpù)"} ro{"Èdè Romania"} - ru{"Èdè Rọsià"} + ru{"Èdè Rọ́ṣíà"} rw{"Èdè Ruwanda"} sa{"Èdè awon ara Indo"} sd{"Èdè Sindhi"} @@ -114,18 +118,19 @@ yo{ zh{"Èdè Mandarin tí wọ́n ń sọ lórílẹ̀-èdè Ṣáínà"} zu{"Èdè Ṣulu"} } - Languages%short{ - en_GB{"Èdè Gẹ̀ẹ́sì (GB)"} - en_US{"Èdè Gẹ̀ẹ́sì (US)"} + Languages%menu{ + zh{"Ṣáídà, Mandrínì"} } Scripts{ Arab{"èdè Lárúbáwá"} Cyrl{"èdè ilẹ̀ Rọ́ṣíà"} Hans{"tí wọ́n mú rọrùn."} Hant{"Hans àtọwọ́dọ́wọ́"} + Jpan{"èdè jàpáànù"} + Kore{"Kóríà"} Latn{"Èdè Látìn"} Zxxx{"Aikọsilẹ"} - Zzzz{"ọ̀nà ìgbàkọ̀wé àìmọ̀"} + Zzzz{"Ìṣọwọ́kọ̀wé àìmọ̀"} } Scripts%stand-alone{ Hans{"Hans tí wọ́n mú rọrùn."} @@ -134,6 +139,7 @@ yo{ Types{ calendar{ gregorian{"Kàlẹ́ńdà Gregory"} + iso8601{"Kàlẹ́ńdà ISO-8601"} } collation{ standard{"Ìlànà Onírúurú Ètò"} @@ -142,10 +148,10 @@ yo{ latn{"Díjíítì Ìwọ̀ Oòrùn"} } } - Version{"2.1.48.17"} + Version{"36"} codePatterns{ language{"Èdè: {0}"} - script{"ọ̀nà ìgbàkọ̀wé: {0}"} + script{"Ìṣọwọ́kọ̀wé: {0}"} territory{"Àgbègbè: {0}"} } localeDisplayPattern{ diff --git a/source/data/lang/yo_BJ.txt b/source/data/lang/yo_BJ.txt index cb3394a..69de4e5 100644 --- a/source/data/lang/yo_BJ.txt +++ b/source/data/lang/yo_BJ.txt @@ -2,130 +2,42 @@ // License & terms of use: http://www.unicode.org/copyright.html#License yo_BJ{ Languages{ - af{"Èdè Afrikani"} - ak{"Èdè Akani"} - am{"Èdè Amariki"} - ar{"Èdè Arabiki"} - as{"Ti Assam"} - az{"Èdè Azerbaijani"} - be{"Èdè Belarusi"} - bg{"Èdè Bugaria"} - bn{"Èdè Bengali"} - br{"Èdè Bretoni"} - bs{"Èdè Bosnia"} - ca{"Èdè Catala"} - cs{"Èdè seeki"} - cy{"Èdè Welshi"} da{"Èdè Ilɛ̀ Denmark"} - de{"Èdè Ilɛ̀ Jámánì"} - de_AT{"Èdè Ilɛ̀ Jámánì orílɛ̀-èdè Ɔ́síríà )"} + de_AT{"Èdè Jámánì (Ɔ́síríà )"} de_CH{"Èdè Ilɛ̀ Jámánì (Orílɛ́ède swítsàlandì)"} - el{"Èdè Giriki"} en{"Èdè Gɛ̀ɛ́sì"} en_AU{"Èdè Gɛ̀ɛ́sì (órílɛ̀-èdè Ɔsirélíà)"} en_CA{"Èdè Gɛ̀ɛ́sì (Orílɛ̀-èdè Kánádà)"} en_GB{"Èdè òyìnbó Gɛ̀ɛ́sì"} - eo{"Èdè Esperanto"} es{"Èdè Sípáníìshì"} - es_419{"Èdè Sípáníìshì (orílɛ̀-èdè Látìn-Amɛ́ríkà)"} + es_419{ + "Èdè Sípáníìshì (orílɛ̀-èdè Látìn-Amɛ́ríkà) ( Èdè Sípáníìshì (Látìn-Amɛ́r" + "íkà)" + } es_ES{"Èdè Sípáníìshì (orílɛ̀-èdè Yúróòpù)"} es_MX{"Èdè Sípáníìshì (orílɛ̀-èdè Mɛ́síkò)"} - et{"Èdè Estonia"} - eu{"Èdè Baski"} - fa{"Èdè Pasia"} - fi{"Èdè Finisi"} - fil{"Èdè Filipino"} - fo{"Èdè Faroesi"} - fr{"Èdè Faransé"} fr_CA{"Èdè Faransé (orílɛ̀-èdè Kánádà)"} - fr_CH{"Èdè Faransé (orílɛ̀-èdè swítsàlandì)"} - fy{"Èdè Frisia"} - ga{"Èdè Ireland"} - gd{"Èdè Gaelik ti Ilu Scotland"} - gl{"Èdè Galicia"} - gn{"Èdè Guarani"} - gu{"Èdè Gujarati"} - ha{"Èdè Hausa"} - he{"Èdè Heberu"} - hi{"Èdè Hindi"} - hr{"Èdè Kroatia"} - hu{"Èdè Hungaria"} - hy{"Èdè Ile Armenia"} - ia{"Èdè pipo"} - id{"Èdè Indonasia"} - ie{"Iru Èdè"} - ig{"Èdè Ibo"} - is{"Èdè Icelandic"} - it{"Èdè ilɛ̀ Ítálì"} - ja{"Èdè ilɛ̀ Japan"} - jv{"Èdè Javanasi"} - ka{"Èdè Georgia"} - km{"Èdè kameri"} - kn{"Èdè Kannada"} - ko{"Èdè Koria"} - la{"Èdè Latini"} - lt{"Èdè Lithuania"} - lv{"Èdè Latvianu"} - mk{"Èdè Macedonia"} - mr{"Èdè marathi"} - ms{"Èdè Malaya"} - mt{"Èdè Malta"} - my{"Èdè Bumiisi"} - ne{"Èdè Nepali"} - nl{"Èdè Duki"} - no{"Èdè Norway"} - oc{"Èdè Occitani"} - pa{"Èdè Punjabi"} - pl{"Èdè Ilɛ̀ Polandi"} + fr_CH{"Èdè Faranshé (Súwísàlaǹdì)"} + id{"Èdè Indonéshíà"} + nl{"Èdè Dɔ́ɔ̀shì"} pt{"Èdè Pɔtogí"} pt_BR{"Èdè Pɔtogí (Orilɛ̀-èdè Bràsíl)"} pt_PT{"Èdè Pɔtogí (orílɛ̀-èdè Yúróòpù)"} - ro{"Èdè Romania"} - ru{"Èdè Rɔsià"} - rw{"Èdè Ruwanda"} - sa{"Èdè awon ara Indo"} - sd{"Èdè Sindhi"} - sh{"Èdè Serbo-Croatiani"} - si{"Èdè Sinhalese"} - sk{"Èdè Slovaki"} - sl{"Èdè Slovenia"} - so{"Èdè ara Somalia"} - sq{"Èdè Albania"} - sr{"Èdè Serbia"} - st{"Èdè Sesoto"} - su{"Èdè Sudani"} - sv{"Èdè Suwidiisi"} - sw{"Èdè Swahili"} - ta{"Èdè Tamili"} - te{"Èdè Telugu"} - th{"Èdè Tai"} - ti{"Èdè Tigrinya"} - tk{"Èdè Turkmen"} - tlh{"Èdè Klingoni"} + ru{"Èdè Rɔ́shíà"} tr{"Èdè Tɔɔkisi"} - uk{"Èdè Ukania"} und{"Èdè àìmɔ̀"} - ur{"Èdè Udu"} - uz{"Èdè Uzbek"} - vi{"Èdè Jetinamu"} - xh{"Èdè Xhosa"} - yi{"Èdè Yiddishi"} - yo{"Èdè Yorùbá"} zh{"Èdè Mandarin tí wɔ́n ń sɔ lórílɛ̀-èdè Sháínà"} zu{"Èdè Shulu"} } - Languages%short{ - en_GB{"Èdè Gɛ̀ɛ́sì (GB)"} - en_US{"Èdè Gɛ̀ɛ́sì (US)"} + Languages%menu{ + zh{"Sháídà, Mandrínì"} } Scripts{ - Arab{"èdè Lárúbáwá"} Cyrl{"èdè ilɛ̀ Rɔ́shíà"} Hans{"tí wɔ́n mú rɔrùn."} Hant{"Hans àtɔwɔ́dɔ́wɔ́"} - Latn{"Èdè Látìn"} Zxxx{"Aikɔsilɛ"} - Zzzz{"ɔ̀nà ìgbàkɔ̀wé àìmɔ̀"} + Zzzz{"Ìshɔwɔ́kɔ̀wé àìmɔ̀"} } Scripts%stand-alone{ Hans{"Hans tí wɔ́n mú rɔrùn."} @@ -134,23 +46,14 @@ yo_BJ{ Types{ calendar{ gregorian{"Kàlɛ́ńdà Gregory"} - } - collation{ - standard{"Ìlànà Onírúurú Ètò"} + iso8601{"Kàlɛ́ńdà ISO-8601"} } numbers{ latn{"Díjíítì Ìwɔ̀ Oòrùn"} } } - Version{"2.1.48.77"} + Version{"36"} codePatterns{ - language{"Èdè: {0}"} - script{"ɔ̀nà ìgbàkɔ̀wé: {0}"} - territory{"Àgbègbè: {0}"} - } - localeDisplayPattern{ - keyTypePattern{"{0}: {1}"} - pattern{"{0} ({1})"} - separator{"{0}, {1}"} + script{"Ìshɔwɔ́kɔ̀wé: {0}"} } } diff --git a/source/data/lang/yue.txt b/source/data/lang/yue.txt index 1e9c216..61ae0ef 100644 --- a/source/data/lang/yue.txt +++ b/source/data/lang/yue.txt @@ -626,6 +626,14 @@ yue{ zxx{"無語言內容"} zza{"扎扎文"} } + Languages%long{ + zh_Hans{"簡體中文 (普通話)"} + zh_Hant{"繁體中文 (普通話)"} + } + Languages%menu{ + yue{"中文 (粵語)"} + zh{"中文 (普通話)"} + } Languages%short{ az{"亞塞拜然文"} } @@ -1025,7 +1033,7 @@ yue{ VALLADER{"瑞士瓦勒德方言"} WADEGILE{"威妥瑪式拼音"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — 全部"} category-list{"{0}: {1}"} diff --git a/source/data/lang/yue_Hans.txt b/source/data/lang/yue_Hans.txt index 19c0e27..cada70e 100644 --- a/source/data/lang/yue_Hans.txt +++ b/source/data/lang/yue_Hans.txt @@ -627,6 +627,14 @@ yue_Hans{ zxx{"无语言内容"} zza{"扎扎文"} } + Languages%long{ + zh_Hans{"简体中文 (普通话)"} + zh_Hant{"繁体中文 (普通话)"} + } + Languages%menu{ + yue{"中文 (粤语)"} + zh{"中文 (普通话)"} + } Languages%short{ az{"亚塞拜然文"} } @@ -1026,7 +1034,7 @@ yue_Hans{ VALLADER{"瑞士瓦勒德方言"} WADEGILE{"威妥玛式拼音"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — 全部"} category-list{"{0}: {1}"} diff --git a/source/data/lang/yue_Hant.txt b/source/data/lang/yue_Hant.txt index 1aaa640..a4fe9d6 100644 --- a/source/data/lang/yue_Hant.txt +++ b/source/data/lang/yue_Hant.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yue_Hant{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/zgh.txt b/source/data/lang/zgh.txt index d5f5017..4803aed 100644 --- a/source/data/lang/zgh.txt +++ b/source/data/lang/zgh.txt @@ -61,5 +61,5 @@ zgh{ islamic{"ⴰⵙⵎⵍⵓⵙⵙⴰⵏ ⵏ ⵍⵉⵙⵍⴰⵎ"} } } - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/lang/zh.txt b/source/data/lang/zh.txt index 3cbc14b..de7a421 100644 --- a/source/data/lang/zh.txt +++ b/source/data/lang/zh.txt @@ -558,6 +558,14 @@ zh{ zxx{"无语言内容"} zza{"扎扎语"} } + Languages%long{ + zh_Hans{"现代标准汉语"} + zh_Hant{"台湾国语"} + } + Languages%menu{ + yue{"广东话"} + zh{"普通话"} + } Languages%short{ az{"阿塞语"} en_GB{"英式英语"} @@ -690,7 +698,6 @@ zh{ Phnx{"腓尼基文"} Plrd{"波拉德音标文字"} Prti{"帕提亚文碑铭体"} - Qaag{"Qaag"} Rjng{"拉让文"} Rohg{"哈乃斐罗兴亚文"} Roro{"朗格朗格文"} @@ -1022,7 +1029,7 @@ zh{ VALLADER{"瑞士瓦勒德方言"} WADEGILE{"WG 威氏拼音法"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — 全部"} category-list{"{0}: {1}"} diff --git a/source/data/lang/zh_Hans.txt b/source/data/lang/zh_Hans.txt index 2e93fd9..5a74156 100644 --- a/source/data/lang/zh_Hans.txt +++ b/source/data/lang/zh_Hans.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hans{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/lang/zh_Hant.txt b/source/data/lang/zh_Hant.txt index 5818316..4480355 100644 --- a/source/data/lang/zh_Hant.txt +++ b/source/data/lang/zh_Hant.txt @@ -629,6 +629,10 @@ zh_Hant{ zxx{"無語言內容"} zza{"扎扎文"} } + Languages%menu{ + yue{"粵語"} + zh{"中文"} + } Languages%short{ az{"亞塞拜然文"} } @@ -1075,7 +1079,7 @@ zh_Hant{ VALLADER{"瑞士瓦勒德方言"} WADEGILE{"威妥瑪式拼音"} } - Version{"2.1.49.82"} + Version{"36"} characterLabelPattern{ all{"{0} — 全部"} category-list{"{0}: {1}"} diff --git a/source/data/lang/zh_Hant_HK.txt b/source/data/lang/zh_Hant_HK.txt index 6c61a9a..6ac75e3 100644 --- a/source/data/lang/zh_Hant_HK.txt +++ b/source/data/lang/zh_Hant_HK.txt @@ -31,7 +31,6 @@ zh_Hant_HK{ gil{"吉爾伯特文"} gl{"加里西亞文"} gsw{"瑞士德文"} - hi{"印度文"} hmn{"苗語"} hr{"克羅地亞文"} it{"意大利文"} @@ -129,7 +128,7 @@ zh_Hant_HK{ SCOTLAND{"蘇格蘭標準英語"} SOTAV{"SOTAV"} } - Version{"2.1.47.86"} + Version{"36"} characterLabelPattern{ enclosed{"{0} — 包含"} historic{"{0} — 舊式"} diff --git a/source/data/lang/zh_Hant_MO.txt b/source/data/lang/zh_Hant_MO.txt index a0fc4d8..707fe99 100644 --- a/source/data/lang/zh_Hant_MO.txt +++ b/source/data/lang/zh_Hant_MO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hant_MO{ %%Parent{"zh_Hant_HK"} - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/lang/zu.txt b/source/data/lang/zu.txt index 4c8e47d..8542651 100644 --- a/source/data/lang/zu.txt +++ b/source/data/lang/zu.txt @@ -12,14 +12,14 @@ zu{ colNumeric{"Ukuhlelwa Ngezinombolo"} colStrength{"Amandla Okuhlelwa"} collation{"Uhlelo lokuhlunga"} - currency{"Ikharensi"} + currency{"Imali"} hc{"Umjikelezo wehora (12 vs 24"} lb{"I-Line Break Style"} ms{"Isistimu yokulinganisa"} numbers{"Izinombolo"} - timezone{"Izoni yesikhathi:"} + timezone{"Isikhathi Sendawo"} va{"Okokwehlukanisa Kwasendaweni"} - x{"i-Private-Use"} + x{"Yokusetshenziswa Ngasese"} } Languages{ aa{"isi-Afar"} @@ -431,6 +431,10 @@ zu{ zxx{"akukho okuqukethwe kolimi"} zza{"isi-Zaza"} } + Languages%menu{ + yue{"isi-Chinese, Cantonese"} + zh{"isi-Chinese, Mandarin"} + } Languages%short{ az{"isi-Azeria"} en_GB{"i-UK English"} @@ -495,20 +499,20 @@ zu{ Types{ calendar{ buddhist{"ikhalenda lesi-Buddhist"} - chinese{"ikhalenda lesi-Chinese"} + chinese{"Ikhalenda lesi-Chinese"} coptic{"i-Coptic Calender"} - dangi{"ikhalenda lesi-Dangi"} - ethiopic{"ikhalenda lesi-Ethiopic"} + dangi{"Ikhalenda lesi-Dangi"} + ethiopic{"Ikhalenda lesi-Ethiopic"} ethiopic-amete-alem{"i-Ethiopic Amete Alem Calender"} gregorian{"ikhalenda lesi-Gregorian"} - hebrew{"ikhalenda lesi-Hebrew"} + hebrew{"Ikhalenda lesi-Hebrew"} indian{"i-Indian National Calender"} - islamic{"ikhalenda lesi-Islamic"} + islamic{"Ikhalenda lesi-Islamic"} islamic-civil{"i-Islamic-Civil Calendar"} - iso8601{"ikhalenda le-ISO-8601"} - japanese{"ikhalenda lesi-Japanese"} - persian{"ikhalenda lesi-Persian"} - roc{"ikhalenda lesi-Minguo"} + iso8601{"Ikhalenda le-ISO-8601"} + japanese{"Ikhalenda lesi-Japanese"} + persian{"Ikhalenda lesi-Persian"} + roc{"Ikhalenda lesi-Minguo"} } cf{ account{"Ifomethi yemali ye-Accounting"} @@ -630,7 +634,7 @@ zu{ vaii{"Izinhlazu Zezinombolo ze-Vai"} } } - Version{"2.1.48.17"} + Version{"36"} characterLabelPattern{ all{"{0} — All"} category-list{"{0}: {1}"} diff --git a/source/data/locales/af.txt b/source/data/locales/af.txt index 451f1e1..ee735fb 100644 --- a/source/data/locales/af.txt +++ b/source/data/locales/af.txt @@ -12,13 +12,14 @@ af{ } ExemplarCharacters{"[a á â b c d e é è ê ë f g h i î ï j k l m n o ô ö p q r s t u û v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -29,6 +30,7 @@ af{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -192,9 +194,11 @@ af{ group{" "} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -209,8 +213,9 @@ af{ } } minimumGroupingDigits{"1"} + native{"latn"} } - Version{"2.1.48.17"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -221,10 +226,10 @@ af{ "EEEE dd MMMM y G", "dd MMMM y G", "dd MMM y G", - "GGGGG y-MM-dd", - "{1} {0}", - "{1} {0}", + "y-MM-dd GGGGG", "{1} {0}", + "{1} 'om' {0}", + "{1} 'om' {0}", "{1} {0}", "{1} {0}", } @@ -277,11 +282,6 @@ af{ B{"h B – h B"} h{"h–h B"} } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y–y G"} @@ -338,15 +338,15 @@ af{ M{"M – M"} } MEd{ - M{"E, d/M – E, d/M"} - d{"E, d/M – E, d/M"} + M{"E d/M – E d/M"} + d{"E d/M – E d/M"} } MMM{ M{"MMM – MMM"} } MMMEd{ - M{"E, d MMM – E, d MMM"} - d{"E, d MMM – E, d MMM"} + M{"E d MMM – E d MMM"} + d{"E d MMM – E d MMM"} } MMMd{ M{"d MMM – d MMM"} @@ -386,18 +386,18 @@ af{ y{"M/y – M/y GGGGG"} } yMEd{ - M{"E, d/M/y – E, d/M/y GGGGG"} - d{"E, d/M/y – E, d/M/y GGGGG"} - y{"E, d/M/y – E, d/M/y GGGGG"} + M{"E d/M/y – E d/M/y GGGGG"} + d{"E d/M/y – E d/M/y GGGGG"} + y{"E d/M/y – E d/M/y GGGGG"} } yMMM{ M{"MMM–MMM y G"} y{"MMM y – MMM y G"} } yMMMEd{ - M{"E, d MMM – E, d MMM, y G"} - d{"E, d MMM – E, d MMM, y G"} - y{"E, d MMM y – E, d MMM y G"} + M{"E d MMM – E d MMM y G"} + d{"E d MMM – E d MMM y G"} + y{"E d MMM y – E d MMM y G"} } yMMMM{ M{"MMMM–MMMM y G"} @@ -405,8 +405,8 @@ af{ } yMMMd{ M{"d MMM – d MMM y G"} - d{"d–d MMM, y G"} - y{"d MMM, y – d MMM, y G"} + d{"d–d MMM y G"} + y{"d MMM y – d MMM y G"} } yMd{ M{"d/M/y – d/M/y GGGGG"} @@ -448,11 +448,11 @@ af{ } availableFormats{ Bh{"h B"} - Bhm{"h:mm B"} - Bhms{"h:mm:ss B"} + Bhm{"hh:mm B"} + Bhms{"hh:mm:ss B"} E{"ccc"} - EBhm{"E h:mm B"} - EBhms{"E h:mm:ss B"} + EBhm{"E hh:mm B"} + EBhms{"E hh:mm:ss B"} EHm{"E HH:mm"} EHms{"E HH:mm:ss"} Ed{"E d"} @@ -932,92 +932,92 @@ af{ } } characterLabel{ - activities{"Aktiwiteite"} - african_scripts{"Afrika-skrifte"} - american_scripts{"Amerikaanse skrifte"} + activities{"aktiwiteit"} + african_scripts{"Afrika-skrif"} + american_scripts{"Amerikaanse skrif"} animal{"dier"} - animals_nature{"Diere en natuur"} - arrows{"Pyltjies"} + animals_nature{"diere of natuur"} + arrows{"pyltjie"} body{"liggaam"} - box_drawing{"Bokstekening"} + box_drawing{"bokstekening"} braille{"Braille"} building{"gebou"} - bullets_stars{"Kolpunte/Sterretjies"} - consonantal_jamo{"Konsonantale Jamo"} - currency_symbols{"Geldeenheidsimbole"} - dash_connector{"Koppelteken/Koppelaar"} - digits{"Syfers"} - dingbats{"Dingbats"} - divination_symbols{"Aanwys-simbole"} - downwards_arrows{"Af-pyltjies"} - downwards_upwards_arrows{"Af-op-pyltjies"} - east_asian_scripts{"Oos-Asiese skrifte"} - emoji{"Emoji"} - european_scripts{"Europese skrifte"} + bullets_stars{"kolpunt/sterretjie"} + consonantal_jamo{"konsonantale jamo"} + currency_symbols{"geldeenheidsimbool"} + dash_connector{"koppelteken/koppelaar"} + digits{"syfer"} + dingbats{"dingbat"} + divination_symbols{"towersimbool"} + downwards_arrows{"af-pyltjie"} + downwards_upwards_arrows{"af-op-pyltjie"} + east_asian_scripts{"Oos-Asiese skrif"} + emoji{"emoji"} + european_scripts{"Europese skrif"} female{"vroulik"} flag{"vlag"} - flags{"Vlae"} - food_drink{"Kos en drinkgoed"} - format{"Formaat"} - format_whitespace{"Formaat en witspasie"} - full_width_form_variant{"Vollewydte vormvariante"} - geometric_shapes{"Geometriese vorms"} - half_width_form_variant{"Halfwydte vormvariante"} - han_characters{"Han-karakters"} - han_radicals{"Han-radikale"} - hanja{"Hanja"} + flags{"vlae"} + food_drink{"kos en drinkgoed"} + format{"formatering"} + format_whitespace{"formatering en witspasie"} + full_width_form_variant{"volwye variant"} + geometric_shapes{"geometriese vorm"} + half_width_form_variant{"Halfwye variant"} + han_characters{"Han-karakter"} + han_radicals{"Han-radikaal"} + hanja{"hanja"} hanzi_simplified{"Hanzi (vereenvoudig)"} hanzi_traditional{"Hanzi (tradisioneel)"} heart{"hartjie"} - historic_scripts{"Historiese skrifte"} - ideographic_desc_characters{"Ideografies-beskrywende karakters"} - japanese_kana{"Japannese Kana"} - kanbun{"Kanbun"} - kanji{"Kanji"} - keycap{"sleutelbordtoets"} - leftwards_arrows{"Links-pyltjies"} - leftwards_rightwards_arrows{"Links-Regs-pyltjies"} - letterlike_symbols{"Letterige simbole"} - limited_use{"Beperkte gebruik"} + historic_scripts{"historiese skrif"} + ideographic_desc_characters{"ideografiese beskrywende karakter"} + japanese_kana{"Japannese kana"} + kanbun{"kanbun"} + kanji{"kanji"} + keycap{"knoppiesimbool"} + leftwards_arrows{"links-pyltjie"} + leftwards_rightwards_arrows{"links-regs-pyltjies"} + letterlike_symbols{"letteragtige simbool"} + limited_use{"beperkte gebruik"} male{"manlik"} - math_symbols{"Wiskunde simbole"} - middle_eastern_scripts{"Midde-Oosterse skrifte"} - miscellaneous{"Allerlei"} - modern_scripts{"Moderne skrifte"} - modifier{"Bepaler"} - musical_symbols{"Musikale simbole"} + math_symbols{"wiskundesimbole"} + middle_eastern_scripts{"Midde-Oosterse skrif"} + miscellaneous{"allerlei"} + modern_scripts{"moderne skrif"} + modifier{"bepaler"} + musical_symbols{"musieksimbool"} nature{"natuur"} - nonspacing{"Niespasiëring"} - numbers{"Nommers"} - objects{"Voorwerpe"} - other{"Ander"} + nonspacing{"niespasiërend"} + numbers{"nommers"} + objects{"voorwerp"} + other{"ander"} paired{"Saamgevoeg"} person{"persoon"} - phonetic_alphabet{"Fonetiese alfabet"} - pictographs{"Piktogram"} + phonetic_alphabet{"fonetiese alfabet"} + pictographs{"piktogram"} place{"plek"} plant{"plant"} - punctuation{"Leestekens"} - rightwards_arrows{"Regs-pyltjies"} - sign_standard_symbols{"Teken/Standaard simbool"} - small_form_variant{"Kleinvormvariante"} + punctuation{"leestekens"} + rightwards_arrows{"regs-pyltjie"} + sign_standard_symbols{"teken of simbool"} + small_form_variant{"klein variante"} smiley{"gesiggie"} - smileys_people{"Emosiekone en mense"} - south_asian_scripts{"Suid-Asiese skrifte"} - southeast_asian_scripts{"Suidoos-Asiese skrifte"} - spacing{"Spasiëring"} + smileys_people{"emosiekoon of mens"} + south_asian_scripts{"Suid-Asiese skrif"} + southeast_asian_scripts{"Suidoos-Asiese skrif"} + spacing{"spasiëring"} sport{"sport"} - symbols{"Simbole"} - technical_symbols{"Tegniese simbole"} - tone_marks{"Intonasie-klemtekens"} + symbols{"simbool"} + technical_symbols{"tegniese simbool"} + tone_marks{"toonteken"} travel{"reis"} - travel_places{"Reis en plekke"} - upwards_arrows{"Op-pyltjies"} - variant_forms{"Variantvorms"} - vocalic_jamo{"Vokaliese Jamo"} + travel_places{"reis of plek"} + upwards_arrows{"op-pyltjies"} + variant_forms{"variant"} + vocalic_jamo{"vokaliese jamo"} weather{"weer"} - western_asian_scripts{"Wes-Asiese skrifte"} - whitespace{"Witspasie"} + western_asian_scripts{"Wes-Asiese skrif"} + whitespace{"witspasie"} } delimiters{ alternateQuotationEnd{"’"} @@ -1133,24 +1133,20 @@ af{ fri-narrow{ relative{ "-1"{"verlede Vr."} - "0"{"dié Vr."} - "1"{"vlg. Vr."} + "0"{"hierdie Vr."} + "1"{"volgende Vr."} } relativeTime{ future{ one{"oor {0} Vr."} other{"oor {0} Vr."} } - past{ - one{"{0} Vrydae gelede"} - other{"{0} Vrydae gelede"} - } } } fri-short{ relative{ "-1"{"verlede Vr."} - "0"{"dié Vr."} + "0"{"hierdie Vr."} "1"{"vlg. Vr."} } relativeTime{ @@ -1276,10 +1272,6 @@ af{ one{"oor {0} Ma."} other{"oor {0} Ma."} } - past{ - one{"{0} Maandae gelede"} - other{"{0} Maandae gelede"} - } } } mon-short{ @@ -1319,6 +1311,11 @@ af{ } month-narrow{ dn{"md."} + relative{ + "-1"{"verlede md."} + "0"{"hierdie md."} + "1"{"volgende md."} + } relativeTime{ future{ one{"oor {0} md."} @@ -1332,6 +1329,11 @@ af{ } month-short{ dn{"md."} + relative{ + "-1"{"verlede md."} + "0"{"hierdie md."} + "1"{"volgende md."} + } relativeTime{ future{ one{"oor {0} md."} @@ -1407,25 +1409,21 @@ af{ sat-narrow{ relative{ "-1"{"verlede Sa."} - "0"{"dié Sa."} - "1"{"vlg. Sa."} + "0"{"hierdie Sa."} + "1"{"volgende Sa."} } relativeTime{ future{ one{"oor {0} Sa."} other{"oor {0} Sa."} } - past{ - one{"{0} Saterdae gelede"} - other{"{0} Saterdae gelede"} - } } } sat-short{ relative{ "-1"{"verlede Sa."} "0"{"dié Sa."} - "1"{"vlg. Sa."} + "1"{"volgende Sa."} } relativeTime{ future{ @@ -1498,20 +1496,11 @@ af{ } } sun-narrow{ - relative{ - "-1"{"verlede Son."} - "0"{"dié So."} - "1"{"vlg. So."} - } relativeTime{ future{ one{"oor {0} So."} other{"oor {0} So."} } - past{ - one{"{0} Sondae gelede"} - other{"{0} Sondae gelede"} - } } } sun-short{ @@ -1559,10 +1548,6 @@ af{ one{"oor {0} Do."} other{"oor {0} Do."} } - past{ - one{"{0} Donderdae gelede"} - other{"{0} Donderdae gelede"} - } } } thu-short{ @@ -1610,10 +1595,6 @@ af{ one{"oor {0} Di."} other{"oor {0} Di."} } - past{ - one{"{0} Dinsdae gelede"} - other{"{0} Dinsdae gelede"} - } } } tue-short{ @@ -1661,10 +1642,6 @@ af{ one{"oor {0} Wo."} other{"oor {0} Wo."} } - past{ - one{"{0} Woensdae gelede"} - other{"{0} Woensdae gelede"} - } } } wed-short{ @@ -1705,6 +1682,11 @@ af{ } week-narrow{ dn{"wk."} + relative{ + "-1"{"verlede w."} + "0"{"hierdie w."} + "1"{"volgende w."} + } relativePeriod{"die week van {0}"} relativeTime{ future{ @@ -1719,6 +1701,11 @@ af{ } week-short{ dn{"wk."} + relative{ + "-1"{"verlede w."} + "0"{"hierdie w."} + "1"{"volgende w."} + } relativePeriod{"die week van {0}"} relativeTime{ future{ @@ -1778,6 +1765,11 @@ af{ } year-narrow{ dn{"j."} + relative{ + "-1"{"verlede j."} + "0"{"hierdie j."} + "1"{"volgende j."} + } relativeTime{ future{ one{"oor {0} j."} @@ -1791,6 +1783,11 @@ af{ } year-short{ dn{"j."} + relative{ + "-1"{"verlede j."} + "0"{"hierdie j."} + "1"{"volgende j."} + } relativeTime{ future{ one{"oor {0} j."} diff --git a/source/data/locales/af_NA.txt b/source/data/locales/af_NA.txt index eb5a5b2..b8fcfb7 100644 --- a/source/data/locales/af_NA.txt +++ b/source/data/locales/af_NA.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License af_NA{ - Version{"2.1.48.22"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/af_ZA.txt b/source/data/locales/af_ZA.txt index ebef9c1..b65cd84 100644 --- a/source/data/locales/af_ZA.txt +++ b/source/data/locales/af_ZA.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License af_ZA{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/agq.txt b/source/data/locales/agq.txt index 8b862a2..18c90b7 100644 --- a/source/data/locales/agq.txt +++ b/source/data/locales/agq.txt @@ -9,7 +9,7 @@ agq{ "{ʉ\u030C} {ʉ\u0304} v w y z ʔ]" } ExemplarCharactersIndex{"[A B C D E Ɛ F G H I Ɨ K L M N Ŋ O Ɔ P S T U Ʉ V W Y Z ʔ]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -23,7 +23,7 @@ agq{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/agq_CM.txt b/source/data/locales/agq_CM.txt index 7e485c0..41657bc 100644 --- a/source/data/locales/agq_CM.txt +++ b/source/data/locales/agq_CM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License agq_CM{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ak.txt b/source/data/locales/ak.txt index 1184816..29572cb 100644 --- a/source/data/locales/ak.txt +++ b/source/data/locales/ak.txt @@ -4,7 +4,7 @@ ak{ AuxExemplarCharacters{"[c j q v z]"} ExemplarCharacters{"[a b d e ɛ f g h i k l m n o ɔ p r s t u w y]"} ExemplarCharactersIndex{"[A B C D E Ɛ F G H I J K L M N O Ɔ P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -25,7 +25,7 @@ ak{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ak_GH.txt b/source/data/locales/ak_GH.txt index 1e14484..6a5cddb 100644 --- a/source/data/locales/ak_GH.txt +++ b/source/data/locales/ak_GH.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ak_GH{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/am.txt b/source/data/locales/am.txt index 74692fd..86ad335 100644 --- a/source/data/locales/am.txt +++ b/source/data/locales/am.txt @@ -23,7 +23,7 @@ am{ "[ሀ ለ ሐ መ ሠ ረ ሰ ሸ ቀ ቈ በ ቨ ተ ቸ ኀ ኈ ነ ኘ አ ከ ኰ ኸ ወ ዐ ዘ ዠ የ ደ ጀ ገ ጐ ጠ ጨ ጰ ጸ ፀ ፈ ፐ" "]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{"[‐ – , ፡ ፣ ፤ ፥ ፦ ! ? . ። ‹ › « » ( ) \\[ \\]]"} MoreInformation{"?"} NumberElements{ @@ -37,6 +37,7 @@ am{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -195,13 +196,18 @@ am{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -216,7 +222,7 @@ am{ minimumGroupingDigits{"1"} traditional{"ethi"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -718,15 +724,6 @@ am{ yyyyQQQQ{"G y QQQQ"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } H{ H{"HH–HH"} } @@ -899,6 +896,10 @@ am{ yMd{"d/M/y"} yQQQ{"QQQ y"} yQQQQ{"QQQQ y"} + yw{ + one{"'week' w 'of' Y"} + other{"'week' w 'of' Y"} + } } dayNames{ format{ @@ -1043,6 +1044,10 @@ am{ "ዓ/ዓ", "ዓ/ም", } + abbreviated%variant{ + "BCE", + "CE", + } narrow{ "ዓ/ዓ", "ዓ/ም", @@ -1057,15 +1062,6 @@ am{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"G y – G y"} y{"G y–y"} @@ -2273,7 +2269,6 @@ am{ start{"{0}፣ {1}"} } standard-narrow{ - middle{"{0}፣ {1}"} start{"{0}, {1}"} } standard-short{ diff --git a/source/data/locales/am_ET.txt b/source/data/locales/am_ET.txt index 436d3ed..d9f8fa8 100644 --- a/source/data/locales/am_ET.txt +++ b/source/data/locales/am_ET.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License am_ET{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/ar.txt b/source/data/locales/ar.txt index 35ab30c..3c7cb48 100644 --- a/source/data/locales/ar.txt +++ b/source/data/locales/ar.txt @@ -15,23 +15,28 @@ ar{ "آ ب ة ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ى ي]" } ExemplarCharactersIndex{"[ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي]"} - ExemplarCharactersNumbers{"[\u061C\u200E \\- , ٫ ٬ . % ٪ ‰ ؉ + 0٠ 1١ 2٢ 3٣ 4٤ 5٥ 6٦ 7٧ 8٨ 9٩]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — ، ؛ \\: ! ؟ . … ' \u0022 « » ( ) \\[ \\]]"} + ExemplarCharactersNumbers{"[\u061C\u200E \\- ‑ , ٫ ٬ . % ٪ ‰ ؉ + 0٠ 1١ 2٢ 3٣ 4٤ 5٥ 6٦ 7٧ 8٨ 9٩]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — ، ؛ \\: ! ؟ . … ' \u0022 « » ( ) \\[ \\]]"} MoreInformation{"؟"} NumberElements{ arab{ patterns{ currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } symbols{ + decimal{"٫"} exponential{"اس"} + group{"٬"} infinity{"∞"} list{"؛"} + minusSign{"؜-"} nan{"ليس رقم"} perMille{"؉"} percentSign{"٪؜"} + plusSign{"؜+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -48,6 +53,7 @@ ar{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -350,7 +356,9 @@ ar{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} minusSign{"‎-"} nan{"ليس رقمًا"} @@ -377,7 +385,7 @@ ar{ minimumGroupingDigits{"1"} native{"arab"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ eras{ @@ -571,53 +579,6 @@ ar{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -975,53 +936,6 @@ ar{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -3033,26 +2947,31 @@ ar{ or{ 2{"{0} أو {1}"} end{"{0} أو {1}"} - middle{"{0} و{1}"} - start{"{0} و{1}"} + middle{"{0} أو {1}"} + start{"{0} أو {1}"} + } + or-narrow{ + start{"{0} أو {1}"} + } + or-short{ + middle{"{0} أو {1}"} } standard{ 2{"{0} و{1}"} - end{"{0}، و{1}"} - middle{"{0}، {1}"} - start{"{0}، {1}"} + end{"{0} و{1}"} + middle{"{0} و{1}"} + start{"{0} و{1}"} } standard-narrow{ - 2{"{0} و{1}"} end{"{0} و{1}"} middle{"{0} و{1}"} start{"{0} و{1}"} } standard-short{ 2{"{0} و{1}"} - end{"{0}، و{1}"} - middle{"{0}، و{1}"} - start{"{0}، و{1}"} + end{"{0} و{1}"} + middle{"{0} و{1}"} + start{"{0} و{1}"} } unit{ 2{"{0} و{1}"} @@ -3061,10 +2980,9 @@ ar{ start{"{0}، و{1}"} } unit-narrow{ - 2{"{0}، {1}"} - end{"{0}، {1}"} - middle{"{0}، {1}"} - start{"{0}، {1}"} + end{"{0} و{1}"} + middle{"{0} و{1}"} + start{"{0} و{1}"} } unit-short{ 2{"{0} و{1}"} diff --git a/source/data/locales/ar_001.txt b/source/data/locales/ar_001.txt index 9d38609..a3c5049 100644 --- a/source/data/locales/ar_001.txt +++ b/source/data/locales/ar_001.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ar_001{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/ar_AE.txt b/source/data/locales/ar_AE.txt index 389bd51..0681424 100644 --- a/source/data/locales/ar_AE.txt +++ b/source/data/locales/ar_AE.txt @@ -2,21 +2,9 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ar_AE{ NumberElements{ - arab{ - symbols{ - decimal{"٫"} - group{"٬"} - } - } default{"arab"} - latn{ - symbols{ - decimal{"."} - group{","} - } - } } - Version{"2.1.49.36"} + Version{"36"} calendar{ gregorian{ eras{ diff --git a/source/data/locales/ar_BH.txt b/source/data/locales/ar_BH.txt index 0331dfc..cfef41c 100644 --- a/source/data/locales/ar_BH.txt +++ b/source/data/locales/ar_BH.txt @@ -2,19 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ar_BH{ NumberElements{ - arab{ - symbols{ - decimal{"٫"} - group{"٬"} - } - } default{"arab"} - latn{ - symbols{ - decimal{"."} - group{","} - } - } } - Version{"2.1.49.36"} + Version{"36"} } diff --git a/source/data/locales/ar_DJ.txt b/source/data/locales/ar_DJ.txt index b993db2..cf66749 100644 --- a/source/data/locales/ar_DJ.txt +++ b/source/data/locales/ar_DJ.txt @@ -4,5 +4,5 @@ ar_DJ{ NumberElements{ default{"arab"} } - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/ar_DZ.txt b/source/data/locales/ar_DZ.txt index 04bea42..dfaae72 100644 --- a/source/data/locales/ar_DZ.txt +++ b/source/data/locales/ar_DZ.txt @@ -1,14 +1,8 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ar_DZ{ - ExemplarCharactersNumbers{"[\u200E \\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\u200E \\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ - arab{ - symbols{ - decimal{"٫"} - group{"٬"} - } - } default{"latn"} latn{ symbols{ @@ -17,7 +11,7 @@ ar_DZ{ } } } - Version{"2.1.47.86"} + Version{"36"} calendar{ gregorian{ monthNames{ diff --git a/source/data/locales/ar_EG.txt b/source/data/locales/ar_EG.txt index 04320e9..6c12c7a 100644 --- a/source/data/locales/ar_EG.txt +++ b/source/data/locales/ar_EG.txt @@ -2,19 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ar_EG{ NumberElements{ - arab{ - symbols{ - decimal{"٫"} - group{"٬"} - } - } default{"arab"} - latn{ - symbols{ - decimal{"."} - group{","} - } - } } - Version{"2.1.49.36"} + Version{"36"} } diff --git a/source/data/locales/ar_EH.txt b/source/data/locales/ar_EH.txt index dd01c1e..45b7b76 100644 --- a/source/data/locales/ar_EH.txt +++ b/source/data/locales/ar_EH.txt @@ -4,5 +4,5 @@ ar_EH{ NumberElements{ default{"latn"} } - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/ar_ER.txt b/source/data/locales/ar_ER.txt index e4aa7fd..d18ddc2 100644 --- a/source/data/locales/ar_ER.txt +++ b/source/data/locales/ar_ER.txt @@ -4,5 +4,5 @@ ar_ER{ NumberElements{ default{"arab"} } - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/ar_IL.txt b/source/data/locales/ar_IL.txt index 1818802..e0a3ad8 100644 --- a/source/data/locales/ar_IL.txt +++ b/source/data/locales/ar_IL.txt @@ -4,7 +4,7 @@ ar_IL{ NumberElements{ default{"arab"} } - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/ar_IQ.txt b/source/data/locales/ar_IQ.txt index 5d96137..36339bf 100644 --- a/source/data/locales/ar_IQ.txt +++ b/source/data/locales/ar_IQ.txt @@ -2,21 +2,9 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ar_IQ{ NumberElements{ - arab{ - symbols{ - decimal{"٫"} - group{"٬"} - } - } default{"arab"} - latn{ - symbols{ - decimal{"."} - group{","} - } - } } - Version{"2.1.49.36"} + Version{"36"} calendar{ gregorian{ monthNames{ diff --git a/source/data/locales/ar_JO.txt b/source/data/locales/ar_JO.txt index f92c202..dd88f0d 100644 --- a/source/data/locales/ar_JO.txt +++ b/source/data/locales/ar_JO.txt @@ -2,21 +2,9 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ar_JO{ NumberElements{ - arab{ - symbols{ - decimal{"٫"} - group{"٬"} - } - } default{"arab"} - latn{ - symbols{ - decimal{"."} - group{","} - } - } } - Version{"2.1.49.36"} + Version{"36"} calendar{ gregorian{ monthNames{ diff --git a/source/data/locales/ar_KM.txt b/source/data/locales/ar_KM.txt index cf332dd..d5604cf 100644 --- a/source/data/locales/ar_KM.txt +++ b/source/data/locales/ar_KM.txt @@ -4,7 +4,7 @@ ar_KM{ NumberElements{ default{"arab"} } - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/ar_KW.txt b/source/data/locales/ar_KW.txt index 7bc9c0c..20cfe2f 100644 --- a/source/data/locales/ar_KW.txt +++ b/source/data/locales/ar_KW.txt @@ -2,19 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ar_KW{ NumberElements{ - arab{ - symbols{ - decimal{"٫"} - group{"٬"} - } - } default{"arab"} - latn{ - symbols{ - decimal{"."} - group{","} - } - } } - Version{"2.1.49.36"} + Version{"36"} } diff --git a/source/data/locales/ar_LB.txt b/source/data/locales/ar_LB.txt index 9f1abbc..9763c2d 100644 --- a/source/data/locales/ar_LB.txt +++ b/source/data/locales/ar_LB.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ar_LB{ - ExemplarCharactersNumbers{"[\u200E \\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\u200E \\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ default{"arab"} latn{ @@ -11,7 +11,7 @@ ar_LB{ } } } - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ monthNames{ diff --git a/source/data/locales/ar_LY.txt b/source/data/locales/ar_LY.txt index b0d979e..76dfc9a 100644 --- a/source/data/locales/ar_LY.txt +++ b/source/data/locales/ar_LY.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ar_LY{ - ExemplarCharactersNumbers{"[\u200E \\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\u200E \\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ default{"latn"} latn{ @@ -11,7 +11,7 @@ ar_LY{ } } } - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ dayPeriod{ diff --git a/source/data/locales/ar_MA.txt b/source/data/locales/ar_MA.txt index 6cc672a..4930c71 100644 --- a/source/data/locales/ar_MA.txt +++ b/source/data/locales/ar_MA.txt @@ -2,14 +2,8 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ar_MA{ AuxExemplarCharacters{"[\u200C\u200D\u200E\u200F پ چ ژ ڜ ڢ ڤ ڥ ٯ ڧ ڨ ک ڭ گ ݣ ی]"} - ExemplarCharactersNumbers{"[\u200E \\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\u200E \\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ - arab{ - symbols{ - decimal{"٫"} - group{"٬"} - } - } default{"latn"} latn{ symbols{ @@ -18,7 +12,7 @@ ar_MA{ } } } - Version{"2.1.47.86"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/ar_MR.txt b/source/data/locales/ar_MR.txt index d03fd56..e786d36 100644 --- a/source/data/locales/ar_MR.txt +++ b/source/data/locales/ar_MR.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ar_MR{ - ExemplarCharactersNumbers{"[\u200E \\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\u200E \\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ default{"arab"} latn{ @@ -11,7 +11,7 @@ ar_MR{ } } } - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ monthNames{ diff --git a/source/data/locales/ar_OM.txt b/source/data/locales/ar_OM.txt index a63e2e0..8484b32 100644 --- a/source/data/locales/ar_OM.txt +++ b/source/data/locales/ar_OM.txt @@ -2,19 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ar_OM{ NumberElements{ - arab{ - symbols{ - decimal{"٫"} - group{"٬"} - } - } default{"arab"} - latn{ - symbols{ - decimal{"."} - group{","} - } - } } - Version{"2.1.49.36"} + Version{"36"} } diff --git a/source/data/locales/ar_PS.txt b/source/data/locales/ar_PS.txt index 28cbe59..6150596 100644 --- a/source/data/locales/ar_PS.txt +++ b/source/data/locales/ar_PS.txt @@ -4,7 +4,7 @@ ar_PS{ NumberElements{ default{"arab"} } - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ monthNames{ diff --git a/source/data/locales/ar_QA.txt b/source/data/locales/ar_QA.txt index e65c8e6..18d25ab 100644 --- a/source/data/locales/ar_QA.txt +++ b/source/data/locales/ar_QA.txt @@ -2,19 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ar_QA{ NumberElements{ - arab{ - symbols{ - decimal{"٫"} - group{"٬"} - } - } default{"arab"} - latn{ - symbols{ - decimal{"."} - group{","} - } - } } - Version{"2.1.49.36"} + Version{"36"} } diff --git a/source/data/locales/ar_SA.txt b/source/data/locales/ar_SA.txt index 61e2b28..a19b4f4 100644 --- a/source/data/locales/ar_SA.txt +++ b/source/data/locales/ar_SA.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ar_SA{ - ExemplarCharactersNumbers{"[\u200E \\- , . ٪ ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\u200E \\- ‑ , . ٪ ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ default{"arab"} latn{ @@ -10,34 +10,26 @@ ar_SA{ } } } - Version{"2.1.49.36"} + Version{"36"} calendar{ default{"islamic-umalqura"} gregorian{ dayPeriod{ format{ abbreviated{ - night2{"ل"} - } - narrow{ - morning1{"فجرًا"} - } - wide{ - morning1{"فجرًا"} - } - } - stand-alone{ - abbreviated{ - morning1{"فجرًا"} - } - narrow{ - morning1{"فجرًا"} - } - wide{ + afternoon1{"ظهرًا"} + afternoon2{"بعد الظهر"} + evening1{"مساءً"} morning1{"فجرًا"} + morning2{"ص"} + night1{"منتصف الليل"} + night2{"ل"} } } } } } + measurementSystemNames{ + US{"الولايت المتحدة"} + } } diff --git a/source/data/locales/ar_SD.txt b/source/data/locales/ar_SD.txt index 4969239..3f5cfb6 100644 --- a/source/data/locales/ar_SD.txt +++ b/source/data/locales/ar_SD.txt @@ -2,19 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ar_SD{ NumberElements{ - arab{ - symbols{ - decimal{"٫"} - group{"٬"} - } - } default{"arab"} - latn{ - symbols{ - decimal{"."} - group{","} - } - } } - Version{"2.1.49.36"} + Version{"36"} } diff --git a/source/data/locales/ar_SO.txt b/source/data/locales/ar_SO.txt index 03adeaf..bd94556 100644 --- a/source/data/locales/ar_SO.txt +++ b/source/data/locales/ar_SO.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ar_SO{ - ExemplarCharactersNumbers{"[\u200E \\- , . ٪ ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\u200E \\- ‑ , . ٪ ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ default{"arab"} latn{ @@ -10,5 +10,5 @@ ar_SO{ } } } - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/ar_SS.txt b/source/data/locales/ar_SS.txt index 6ef8044..a55f118 100644 --- a/source/data/locales/ar_SS.txt +++ b/source/data/locales/ar_SS.txt @@ -4,5 +4,5 @@ ar_SS{ NumberElements{ default{"arab"} } - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/ar_SY.txt b/source/data/locales/ar_SY.txt index 55cb43a..cafbd1d 100644 --- a/source/data/locales/ar_SY.txt +++ b/source/data/locales/ar_SY.txt @@ -2,21 +2,9 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ar_SY{ NumberElements{ - arab{ - symbols{ - decimal{"٫"} - group{"٬"} - } - } default{"arab"} - latn{ - symbols{ - decimal{"."} - group{","} - } - } } - Version{"2.1.49.36"} + Version{"36"} calendar{ gregorian{ monthNames{ diff --git a/source/data/locales/ar_TD.txt b/source/data/locales/ar_TD.txt index 39a3f04..3e5e246 100644 --- a/source/data/locales/ar_TD.txt +++ b/source/data/locales/ar_TD.txt @@ -4,5 +4,5 @@ ar_TD{ NumberElements{ default{"arab"} } - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/ar_TN.txt b/source/data/locales/ar_TN.txt index e9569e4..8b8d6ff 100644 --- a/source/data/locales/ar_TN.txt +++ b/source/data/locales/ar_TN.txt @@ -1,14 +1,8 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ar_TN{ - ExemplarCharactersNumbers{"[\u200E \\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\u200E \\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ - arab{ - symbols{ - decimal{"٫"} - group{"٬"} - } - } default{"latn"} latn{ symbols{ @@ -17,7 +11,7 @@ ar_TN{ } } } - Version{"2.1.47.86"} + Version{"36"} calendar{ gregorian{ monthNames{ diff --git a/source/data/locales/ar_YE.txt b/source/data/locales/ar_YE.txt index 63692df..9aee116 100644 --- a/source/data/locales/ar_YE.txt +++ b/source/data/locales/ar_YE.txt @@ -2,19 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ar_YE{ NumberElements{ - arab{ - symbols{ - decimal{"٫"} - group{"٬"} - } - } default{"arab"} - latn{ - symbols{ - decimal{"."} - group{","} - } - } } - Version{"2.1.49.36"} + Version{"36"} } diff --git a/source/data/locales/as.txt b/source/data/locales/as.txt index 1de5482..2380ab6 100644 --- a/source/data/locales/as.txt +++ b/source/data/locales/as.txt @@ -15,10 +15,14 @@ as{ " ঢ {ঢ\u09BC} ণ ত থ দ ধ ন প ফ ব ভ ম য {য\u09BC} ৰ ল ৱ শ ষ স হ {ক\u09CDষ} া ি " "ী \u09C1 \u09C2 \u09C3 ে ৈ ো ৌ \u09CD]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0০ 1১ 2২ 3৩ 4৪ 5৫ 6৬ 7৭ 8৮ 9৯]"} + ExemplarCharactersIndex{ + "[\u09BC অ আ ই ঈ উ ঊ ঋ এ ঐ ও ঔ ং ঃ ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ৎ ত থ দ ধ ন " + "প ফ ব ভ ম য ৰ ল ৱ শ ষ স হ \u09CD]" + } + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0০ 1১ 2২ 3৩ 4৪ 5৫ 6৬ 7৭ 8৮ 9৯]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … । ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " - "′ ″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … । ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † " + "‡ ′ ″]" } MoreInformation{"?"} NumberElements{ @@ -30,11 +34,15 @@ as{ scientificFormat{"#E0"} } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} } } @@ -42,7 +50,7 @@ as{ latn{ miscPatterns{ approximately{"~{0}"} - atLeast{"≥{0}"} + atLeast{"{0}+"} atMost{"≤{0}"} range{"{0}–{1}"} } @@ -208,11 +216,15 @@ as{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} } } @@ -225,10 +237,9 @@ as{ other{"{0} দিন"} } } - minimumGroupingDigits{"1"} native{"beng"} } - Version{"2.1.48.17"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -299,10 +310,6 @@ as{ h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } GyM{ G{"GGGGG M/y – GGGGG M/y"} M{"GGGGG M/y – M/y"} @@ -1247,6 +1254,11 @@ as{ } month-narrow{ dn{"মাহ"} + relative{ + "-1"{"যোৱা মা."} + "0"{"এই মা."} + "1"{"অহা মাহ"} + } relativeTime{ future{ one{"{0} মাহত"} @@ -1719,6 +1731,11 @@ as{ } year-short{ dn{"বছৰ"} + relative{ + "-1"{"যোৱা বছৰ"} + "0"{"এই বছৰ"} + "1"{"অহা বছৰ"} + } relativeTime{ future{ one{"{0} বছৰত"} @@ -1808,6 +1825,10 @@ as{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/as_IN.txt b/source/data/locales/as_IN.txt index b7fda7a..e1406f3 100644 --- a/source/data/locales/as_IN.txt +++ b/source/data/locales/as_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License as_IN{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/asa.txt b/source/data/locales/asa.txt index 70ebce9..d41500c 100644 --- a/source/data/locales/asa.txt +++ b/source/data/locales/asa.txt @@ -11,7 +11,7 @@ asa{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/asa_TZ.txt b/source/data/locales/asa_TZ.txt index 6da075a..fac75d7 100644 --- a/source/data/locales/asa_TZ.txt +++ b/source/data/locales/asa_TZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License asa_TZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ast.txt b/source/data/locales/ast.txt index 49e772f..ef8f056 100644 --- a/source/data/locales/ast.txt +++ b/source/data/locales/ast.txt @@ -12,9 +12,9 @@ ast{ } ExemplarCharacters{"[a á b c d e é f g h ḥ i í l ḷ m n ñ o ó p q r s t u ú ü v x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I L M N Ñ O P Q R S T U V X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ¡ ? ¿ . … ' ‘ ’ \u0022 “ ” « » ( ) \\[ \\] § @ * / " + "[\\- ‐ ‑ – — , ; \\: ! ¡ ? ¿ . … ' ‘ ’ \u0022 “ ” « » ( ) \\[ \\] § @ * / " "\\\\ \\& # † ‡ ′ ″]" } MoreInformation{"?"} @@ -236,7 +236,7 @@ ast{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ diff --git a/source/data/locales/ast_ES.txt b/source/data/locales/ast_ES.txt index bc9d786..50f6445 100644 --- a/source/data/locales/ast_ES.txt +++ b/source/data/locales/ast_ES.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ast_ES{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/az.txt b/source/data/locales/az.txt index 291fa55..8839244 100644 --- a/source/data/locales/az.txt +++ b/source/data/locales/az.txt @@ -12,13 +12,14 @@ az{ } ExemplarCharacters{"[a b c ç d e ə f g ğ h x ı i İ j k q l m n o ö p r s ş t u ü v y z]"} ExemplarCharactersIndex{"[A B C Ç D E Ə F G Ğ H X I İ J K Q L M N O Ö P R S Ş T U Ü V Y Z W]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -29,6 +30,7 @@ az{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -149,40 +151,40 @@ az{ other{"000K"} } 1000000{ - one{"0M"} - other{"0M"} + one{"0 mln"} + other{"0 mln"} } 10000000{ - one{"00M"} - other{"00M"} + one{"00 mln"} + other{"00 mln"} } 100000000{ - one{"000M"} - other{"000M"} + one{"000 mln"} + other{"000 mln"} } 1000000000{ - one{"0G"} - other{"0G"} + one{"0 mlrd"} + other{"0 mlrd"} } 10000000000{ - one{"00G"} - other{"00G"} + one{"00 mlrd"} + other{"00 mlrd"} } 100000000000{ - one{"000G"} - other{"000G"} + one{"000 mlrd"} + other{"000 mlrd"} } 1000000000000{ - one{"0T"} - other{"0T"} + one{"0 trln"} + other{"0 trln"} } 10000000000000{ - one{"00T"} - other{"00T"} + one{"00 trln"} + other{"00 trln"} } 100000000000000{ - one{"000T"} - other{"000T"} + one{"000 trln"} + other{"000 trln"} } } } @@ -192,9 +194,11 @@ az{ group{"."} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -212,8 +216,9 @@ az{ } } minimumGroupingDigits{"1"} + native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -275,19 +280,6 @@ az{ yyyyQQQQ{"G y QQQQ"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } GyM{ G{"GGGGG MM/y– GGGGG MM/y"} M{"GGGGG MM/y – MM/y"} @@ -506,10 +498,10 @@ az{ format{ abbreviated{ "B.", - "B.E.", - "Ç.A.", + "B.e.", + "Ç.a.", "Ç.", - "C.A.", + "C.a.", "C.", "Ş.", } @@ -671,19 +663,6 @@ az{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } GyM{ G{"GGGGG MM.y – GGGGG MM.y"} M{"GGGGG MM.y – MM.y"} @@ -887,9 +866,9 @@ az{ "12", } wide{ - "Yanvar", + "yanvar", "Fevral", - "Mart", + "mart", "Aprel", "May", "İyun", @@ -898,7 +877,7 @@ az{ "Sentyabr", "Oktyabr", "Noyabr", - "Dekabr", + "dekabr", } } } @@ -945,6 +924,70 @@ az{ } } } + islamic{ + monthNames{ + format{ + abbreviated{ + "Məh.", + "Səf.", + "Rəb. I", + "Rəb. II", + "Cəm. I", + "Cəm. II", + "Rəc.", + "Şab.", + "Ram.", + "Şəv.", + "Zilq.", + "Zilh.", + } + wide{ + "Məhərrəm", + "Səfər", + "Rəbiüləvvəl", + "Rəbiülaxır", + "Cəmadiyələvvəl", + "Cəmadiyəlaxır", + "Rəcəb", + "Şaban", + "Ramazan", + "Şəvval", + "Zilqədə", + "Zilhiccə", + } + } + stand-alone{ + abbreviated{ + "Məh.", + "Səf.", + "Rəb. I", + "Rəb. II", + "Cəm. I", + "Cəm. II", + "Rəc.", + "Şab.", + "Ram.", + "Şəv.", + "Zilq.", + "Zilh.", + } + wide{ + "Məhərrəm", + "Səfər", + "Rəbiüləvvəl", + "Rəbiülaxır", + "Cəmadiyələvvəl", + "Cəmadiyəlaxır", + "Rəcəb", + "Şaban", + "Ramazan", + "Şəvval", + "Zilqədə", + "Zilhiccə", + } + } + } + } } characterLabel{ activities{"Aktivitələr"} @@ -1016,7 +1059,7 @@ az{ rightwards_arrows{"Sağa Oxlar"} sign_standard_symbols{"İşarə/Standart Simvollar"} small_form_variant{"Kiçik Forma Variantları"} - smiley{"smayli"} + smiley{"təbəssüm"} smileys_people{"Gülüş və Camaat"} south_asian_scripts{"Cənubi Asiya Yazıları"} southeast_asian_scripts{"Cənub-Şərqi Asiya Yazıları"} @@ -1828,6 +1871,12 @@ az{ middle{"{0}, {1}"} start{"{0}, {1}"} } + or-narrow{ + 2{"{0}, yaxud {1}"} + } + or-short{ + 2{"{0}, yaxud {1}"} + } standard{ 2{"{0} və {1}"} end{"{0} və {1}"} @@ -1837,8 +1886,6 @@ az{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} və {1}"} @@ -1896,6 +1943,10 @@ az{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/az_Cyrl.txt b/source/data/locales/az_Cyrl.txt index 3ed659b..b5b0332 100644 --- a/source/data/locales/az_Cyrl.txt +++ b/source/data/locales/az_Cyrl.txt @@ -4,7 +4,7 @@ az_Cyrl{ %%Parent{"root"} AuxExemplarCharacters{"[ц щ ъ ь э ю я]"} ExemplarCharacters{"[а ә б в г ғ д е ж з и й ј к ҝ л м н о ө п р с т у ү ф х һ ч ҹ ш ы]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -27,7 +27,7 @@ az_Cyrl{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/az_Cyrl_AZ.txt b/source/data/locales/az_Cyrl_AZ.txt index 455bf0f..51d5343 100644 --- a/source/data/locales/az_Cyrl_AZ.txt +++ b/source/data/locales/az_Cyrl_AZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License az_Cyrl_AZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/az_Latn.txt b/source/data/locales/az_Latn.txt index 9c120f3..5247644 100644 --- a/source/data/locales/az_Latn.txt +++ b/source/data/locales/az_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License az_Latn{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/az_Latn_AZ.txt b/source/data/locales/az_Latn_AZ.txt index c66e098..998c733 100644 --- a/source/data/locales/az_Latn_AZ.txt +++ b/source/data/locales/az_Latn_AZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License az_Latn_AZ{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/bas.txt b/source/data/locales/bas.txt index 1cd16f8..ce18aa5 100644 --- a/source/data/locales/bas.txt +++ b/source/data/locales/bas.txt @@ -10,7 +10,7 @@ bas{ "t u ú ù û ǔ ū {u\u1DC6}{u\u1DC7} v w y z]" } ExemplarCharactersIndex{"[A B Ɓ C D E Ɛ F G H I J K L M N Ŋ O Ɔ P R S T U V W Y Z]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -24,7 +24,7 @@ bas{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/bas_CM.txt b/source/data/locales/bas_CM.txt index 3e38780..2b9e356 100644 --- a/source/data/locales/bas_CM.txt +++ b/source/data/locales/bas_CM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bas_CM{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/be.txt b/source/data/locales/be.txt index 41f3033..825ddb0 100644 --- a/source/data/locales/be.txt +++ b/source/data/locales/be.txt @@ -15,10 +15,11 @@ be{ } ExemplarCharacters{"[а б в г д {дж} {дз} е ё ж з і й к л м н о п р с т у ў ф х ц ч ш ы ь э ю я]"} ExemplarCharactersIndex{"[А Б В Г Д Е Ж З І Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Ы Э Ю Я]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . « » ( ) \\[ \\] \\{ \\}]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . « » ( ) \\[ \\] \\{ \\}]"} MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"≈{0}"} @@ -286,8 +287,9 @@ be{ } } minimumGroupingDigits{"2"} + native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -361,8 +363,8 @@ be{ GyMMMEd{"E, d MMM y G"} GyMMMd{"d MMM y G"} H{"HH"} - Hm{"HH.mm"} - Hms{"HH.mm.ss"} + Hm{"HH:mm"} + Hms{"HH:mm:ss"} M{"L"} MEd{"E, d.M"} MMM{"LLL"} @@ -372,8 +374,8 @@ be{ Md{"d.M"} d{"d"} h{"h a"} - hm{"h.mm a"} - hms{"h.mm.ss a"} + hm{"h:mm a"} + hms{"h:mm:ss a"} ms{"mm:ss"} y{"y G"} yyyy{"y G"} @@ -397,6 +399,44 @@ be{ h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"M.y GGGGG – M.y GGGGG"} + M{"M.y – M.y GGGGG"} + y{"M.y – M.y GGGGG"} + } + GyMEd{ + G{"E, d.M.y GGGGG – E, d.M.y GGGGG"} + M{"E, d.M.y – E, d.M.y GGGGG"} + d{"E, d.M.y – E, d.M.y GGGGG"} + y{"E, d.M.y – E, d.M.y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E, d MMM y G – E, d MMM y G"} + M{"E, d MMM – E, d MMM y G"} + d{"E, d MMM – E, d MMM y G"} + y{"E, d MMM y – E, d MMM y G"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d – d MMM y G"} + y{"d MMM y – d MMM y G"} + } + GyMd{ + G{"d.M.y GGGGG – d.M.y GGGGG"} + M{"d.M.y GGGGG – d.M.y GGGGG"} + d{"d.M.y – d.M.y GGGGG"} + y{"d.M.y GGGGG – d.M.y GGGGG"} + } M{ M{"M–M"} } @@ -409,11 +449,11 @@ be{ } MMMEd{ M{"E, d MMM – E, d MMM"} - d{"E, d – E, d MMM"} + d{"E, d MMM – E, d MMM"} } MMMd{ M{"d MMM – d MMM"} - d{"d–d MMM"} + d{"d – d MMM"} } Md{ M{"d.M – d.M"} @@ -422,18 +462,18 @@ be{ d{ d{"d–d"} } - fallback{"{0} - {1}"} + fallback{"{0} – {1}"} y{ - y{"y–y G"} + y{"y – y G"} } yM{ - M{"M.y – M.y G"} - y{"M.y – M.y G"} + M{"M.y – M.y GGGGG"} + y{"M.y – M.y GGGGG"} } yMEd{ - M{"E, d.M.y – E, d.M.y G"} - d{"E, d.M.y – E, d.M.y G"} - y{"E, d.M.y – E, d.M.y G"} + M{"E, d.M.y – E, d.M.y GGGGG"} + d{"E, d.M.y – E, d.M.y GGGGG"} + y{"E, d.M.y – E, d.M.y GGGGG"} } yMMM{ M{"LLL–LLL y G"} @@ -441,7 +481,7 @@ be{ } yMMMEd{ M{"E, d MMM – E, d MMM y G"} - d{"E, d – E, d MMM y G"} + d{"E, d MMM – E, d MMM y G"} y{"E, d MMM y – E, d MMM y G"} } yMMMM{ @@ -450,13 +490,13 @@ be{ } yMMMd{ M{"d MMM – d MMM y G"} - d{"d–d MMM y G"} + d{"d – d MMM y G"} y{"d MMM y – d MMM y G"} } yMd{ - M{"d.M.y – d.M.y G"} - d{"d.M.y – d.M.y G"} - y{"d.M.y – d.M.y G"} + M{"d.M.y – d.M.y GGGGG"} + d{"d.M.y – d.M.y GGGGG"} + y{"d.M.y – d.M.y GGGGG"} } } } @@ -649,6 +689,10 @@ be{ "да н.э.", "н.э.", } + abbreviated%variant{ + "да н.э.", + "н.э.", + } wide{ "да нараджэння Хрыстова", "ад нараджэння Хрыстова", @@ -938,13 +982,13 @@ be{ activities{"Віды дзейнасці"} african_scripts{"Афрыканскія пісьмы"} american_scripts{"Амерыканскія пісьмы"} - animal{"жывёліна"} + animal{"Жывёлы"} animals_nature{"Жывёлы і прырода"} arrows{"Стрэлкі"} - body{"цела"} + body{"Цела"} box_drawing{"Рысаванне квадратаў"} braille{"Брайль"} - building{"будынак"} + building{"Будынак"} bullets_stars{"Маркеры/Зоркі"} consonantal_jamo{"Кансанантнае чамо"} currency_symbols{"Знакі валют"} @@ -953,12 +997,12 @@ be{ dingbats{"Сімвалы-піктаграмы"} divination_symbols{"Гадальныя сімвалы"} downwards_arrows{"Стрэлкі ўніз"} - downwards_upwards_arrows{"Стрэлкі ўверх"} + downwards_upwards_arrows{"Стрэлкі ўніз і ўверх"} east_asian_scripts{"Усходнеазіяцкія пісьмы"} emoji{"Эмодзі"} european_scripts{"Еўрапейскія пісьмы"} - female{"жанчына"} - flag{"сцяг"} + female{"Жанчына"} + flag{"Сцяг"} flags{"Сцягі"} food_drink{"Ежа і напоі"} format{"Фарматаванне"} @@ -971,54 +1015,54 @@ be{ hanja{"Ханча"} hanzi_simplified{"Ханьцзы"} hanzi_traditional{"Ханьцзы (традыцыйнае)"} - heart{"сэрца"} + heart{"Сэрца"} historic_scripts{"Гістарычныя пісьмы"} ideographic_desc_characters{"Ідэаграфічныя апісальныя сімвалы"} japanese_kana{"Японская кана"} kanbun{"Камбун"} kanji{"Кандзі"} - keycap{"клавіша"} + keycap{"Клавіша"} leftwards_arrows{"Стрэлкі ўлева"} leftwards_rightwards_arrows{"Стрэлкі ўлева і ўправа"} - letterlike_symbols{"Сімвалы з падабенствам літар"} + letterlike_symbols{"Літарападобныя сімвалы"} limited_use{"Абмежаванае выкарыстанне"} - male{"мужчына"} + male{"Мужчына"} math_symbols{"Матэматычныя сімвалы"} middle_eastern_scripts{"Блізкаўсходнія пісьмы"} miscellaneous{"Рознае"} modern_scripts{"Сучасныя пісьмы"} modifier{"Знак-мадыфікатар"} musical_symbols{"Музычныя сімвалы"} - nature{"прырода"} + nature{"Прырода"} nonspacing{"Знак без шырыні"} numbers{"Лікі"} objects{"Аб’екты"} other{"Іншае"} paired{"Парныя"} - person{"чалавек"} - phonetic_alphabet{"Знак з шырынёй"} + person{"Чалавек"} + phonetic_alphabet{"Фанетычны алфавіт"} pictographs{"Піктаграмы"} - place{"месца"} - plant{"расліна"} + place{"Месца"} + plant{"Расліна"} punctuation{"Пунктуацыя"} rightwards_arrows{"Стрэлкі ўправа"} sign_standard_symbols{"Знакі і сімвалы"} small_form_variant{"Варыянты малых формаў"} - smiley{"смайлік"} + smiley{"Смайлікі"} smileys_people{"Смайлікі і людзі"} south_asian_scripts{"Усходнеазіяцкія пісьмы"} southeast_asian_scripts{"Паўднёваўсходнеазіяцкія пісьмы"} - spacing{"Знакі з шырынёй"} - sport{"спорт"} + spacing{"Інтэрвалы"} + sport{"Спорт"} symbols{"Спецыяльныя сімвалы"} technical_symbols{"Тэхнічныя сімвалы"} tone_marks{"Знакі тонаў"} - travel{"падарожжа"} + travel{"Падарожжа"} travel_places{"Падарожжы і месцы"} upwards_arrows{"Стрэлкі ўверх"} variant_forms{"Варыянтныя формы"} vocalic_jamo{"Вакалічнае чамо"} - weather{"надвор’е"} + weather{"Надвор’е"} western_asian_scripts{"Заходнеазіяцкія пісьмы"} whitespace{"Недрукаваны знак"} } @@ -1372,6 +1416,11 @@ be{ } month-narrow{ dn{"мес."} + relative{ + "-1"{"у мін. мес."} + "0"{"у гэтым мес."} + "1"{"у наст. мес."} + } relativeTime{ future{ few{"праз {0} мес."} @@ -1389,6 +1438,11 @@ be{ } month-short{ dn{"мес."} + relative{ + "-1"{"у мін. мес."} + "0"{"у гэтым мес."} + "1"{"у наст. мес."} + } relativeTime{ future{ few{"праз {0} мес."} @@ -1854,6 +1908,11 @@ be{ } week-narrow{ dn{"тыд"} + relative{ + "-1"{"на мін. тыд."} + "0"{"на гэтым тыд."} + "1"{"на наст. тыд."} + } relativePeriod{"тыдзень {0}"} relativeTime{ future{ @@ -1872,6 +1931,11 @@ be{ } week-short{ dn{"тыд"} + relative{ + "-1"{"на мін. тыд."} + "0"{"на гэтым тыд."} + "1"{"на наст. тыд."} + } relativePeriod{"тыдзень {0}"} relativeTime{ future{ @@ -1939,6 +2003,11 @@ be{ } year-narrow{ dn{"г."} + relative{ + "-1"{"у мін. годзе"} + "0"{"у гэтым годзе"} + "1"{"у наст. годзе"} + } relativeTime{ future{ few{"праз {0} г."} @@ -1956,6 +2025,11 @@ be{ } year-short{ dn{"г."} + relative{ + "-1"{"у мін. годзе"} + "0"{"у гэтым годзе"} + "1"{"у наст. годзе"} + } relativeTime{ future{ few{"праз {0} г."} diff --git a/source/data/locales/be_BY.txt b/source/data/locales/be_BY.txt index 69c6bb9..041fa61 100644 --- a/source/data/locales/be_BY.txt +++ b/source/data/locales/be_BY.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License be_BY{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/bem.txt b/source/data/locales/bem.txt index 45579ff..efc79cc 100644 --- a/source/data/locales/bem.txt +++ b/source/data/locales/bem.txt @@ -12,7 +12,7 @@ bem{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/bem_ZM.txt b/source/data/locales/bem_ZM.txt index 0466dc5..a20d9bd 100644 --- a/source/data/locales/bem_ZM.txt +++ b/source/data/locales/bem_ZM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bem_ZM{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/bez.txt b/source/data/locales/bez.txt index c27c386..acad012 100644 --- a/source/data/locales/bez.txt +++ b/source/data/locales/bez.txt @@ -11,7 +11,7 @@ bez{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/bez_TZ.txt b/source/data/locales/bez_TZ.txt index 6bb52d7..d26a9bc 100644 --- a/source/data/locales/bez_TZ.txt +++ b/source/data/locales/bez_TZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bez_TZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/bg.txt b/source/data/locales/bg.txt index dc74736..7066565 100644 --- a/source/data/locales/bg.txt +++ b/source/data/locales/bg.txt @@ -12,10 +12,11 @@ bg{ } ExemplarCharacters{"[а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ь ю я]"} ExemplarCharactersIndex{"[А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ю Я]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ ( ) \\[ \\] § * / ″ №]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ ( ) \\[ \\] § * / ″ №]"} MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -26,6 +27,7 @@ bg{ patterns{ accountingFormat{"0.00 ¤;(0.00 ¤)"} currencyFormat{"0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -189,10 +191,13 @@ bg{ group{" "} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -205,15 +210,16 @@ bg{ } } minimumGroupingDigits{"2"} + native{"latn"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ generic{ DateTimePatterns{ - "H:mm:ss 'ч'. zzzz", - "H:mm:ss 'ч'. z", - "H:mm:ss 'ч'.", - "H:mm 'ч'.", + "H:mm:ss zzzz", + "H:mm:ss z", + "H:mm:ss", + "H:mm", "EEEE, d MMMM y 'г'. G", "d MMMM y 'г'. G", "d.MM.y 'г'. G", @@ -225,7 +231,7 @@ bg{ "{1}, {0}", } availableFormats{ - Bh{"h 'ч' .B"} + Bh{"h 'ч'. B"} Bhm{"h:mm 'ч'. B"} Bhms{"h:mm:ss 'ч'. B"} E{"ccc"} @@ -280,10 +286,47 @@ bg{ h{"h – h B"} } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"M.y GGGGG – M.y GGGGG"} + M{"M.y – M.y GGGGG"} + y{"M.y – M.y GGGGG"} + } + GyMEd{ + G{"E, d.M.y GGGGG – E, d.M.y GGGGG"} + M{"E, d.M.y – E, d.M.y GGGGG"} + d{"E, d.M.y – E, d.M.y GGGGG"} + y{"E, d.M.y – E, d.M.y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E, d MMM y G – E, d MMM y G"} + M{"E, d MMM – E, d MMM y G"} + d{"E, d MMM – E, d MMM y G"} + y{"E, d MMM y – E, d MMM y G"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d – d MMM y G"} + y{"d MMM y – d MMM y G"} + } + GyMd{ + G{"d.M.y GGGGG – d.M.y GGGGG"} + M{"d.M.y – d.M.y GGGGG"} + d{"d.M.y – d.M.y GGGGG"} + y{"d.M.y – d.M.y GGGGG"} + } H{ H{"HH–HH"} } @@ -414,10 +457,10 @@ bg{ "pm", } DateTimePatterns{ - "H:mm:ss 'ч'. zzzz", - "H:mm:ss 'ч'. z", - "H:mm:ss 'ч'.", - "H:mm 'ч'.", + "H:mm:ss zzzz", + "H:mm:ss z", + "H:mm:ss", + "H:mm", "EEEE, d MMMM y 'г'.", "d MMMM y 'г'.", "d.MM.y 'г'.", @@ -432,17 +475,17 @@ bg{ Timezone{"{0} {1}"} } availableFormats{ - Bh{"h 'ч'. B"} - Bhm{"h:mm 'ч'. B"} - Bhms{"h:mm:ss 'ч'. B"} + Bh{"h B"} + Bhm{"h:mm B"} + Bhms{"h:mm:ss B"} E{"ccc"} - EBhm{"E, h:mm 'ч'. B"} - EBhms{"E, h:mm:ss 'ч'. B"} - EHm{"E, HH:mm 'ч'."} - EHms{"E, H:mm:ss 'ч'."} + EBhm{"E, h:mm B"} + EBhms{"E, h:mm:ss B"} + EHm{"E, HH:mm"} + EHms{"E, H:mm:ss"} Ed{"E, d"} - Ehm{"E, h:mm 'ч'. a"} - Ehms{"E, h:mm:ss 'ч'. a"} + Ehm{"E, h:mm a"} + Ehms{"E, h:mm:ss a"} Gy{"y 'г'. G"} GyMMM{"MM.y 'г'. G"} GyMMMEd{"E, d.MM.y 'г'. G"} @@ -450,11 +493,11 @@ bg{ GyMMMMEd{"E, d MMMM y 'г'. G"} GyMMMMd{"d MMMM y 'г'. G"} GyMMMd{"d.MM.y 'г'. G"} - H{"H 'ч'."} - Hm{"H:mm 'ч'."} - Hms{"H:mm:ss 'ч'."} - Hmsv{"HH:mm:ss 'ч'. v"} - Hmv{"HH:mm 'ч'. v"} + H{"H"} + Hm{"H:mm"} + Hms{"H:mm:ss"} + Hmsv{"HH:mm:ss v"} + Hmv{"HH:mm v"} M{"L"} MEd{"E, d.MM"} MMM{"MM"} @@ -470,11 +513,11 @@ bg{ MMMd{"d.MM"} Md{"d.MM"} d{"d"} - h{"h 'ч'. a"} - hm{"h:mm 'ч'. a"} - hms{"h:mm:ss 'ч'. a"} - hmsv{"h:mm:ss 'ч'. a v"} - hmv{"h:mm 'ч'. a v"} + h{"h a"} + hm{"h:mm a"} + hms{"h:mm:ss a"} + hmsv{"h:mm:ss a v"} + hmv{"h:mm a v"} ms{"m:ss"} y{"y 'г'."} yM{"MM.y 'г'."} @@ -651,11 +694,9 @@ bg{ } intervalFormats{ Bh{ - B{"h B – h B"} h{"h – h B"} } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } @@ -698,18 +739,18 @@ bg{ y{"dd.MM.y – dd.MM.y GGGGG"} } H{ - H{"H – H 'ч'."} + H{"H – H"} } Hm{ - H{"H:mm 'ч'. – H:mm 'ч'."} - m{"H:mm 'ч'. – H:mm 'ч'."} + H{"H:mm – H:mm"} + m{"H:mm – H:mm"} } Hmv{ - H{"H:mm 'ч'. – H:mm 'ч'. v"} - m{"H:mm 'ч'. – H:mm 'ч'. v"} + H{"H:mm – H:mm v"} + m{"H:mm – H:mm v"} } Hv{ - H{"H – H 'ч'. v"} + H{"H – H v"} } M{ M{"M – M"} @@ -749,22 +790,22 @@ bg{ } fallback{"{0} – {1}"} h{ - a{"h 'ч'. a – h 'ч'. a"} - h{"h – h 'ч'. a"} + a{"h a – h a"} + h{"h – h a"} } hm{ - a{"h:mm 'ч'. a – h:mm 'ч'. a"} - h{"h:mm 'ч'. – h:mm 'ч'. a"} - m{"h:mm 'ч'. – h:mm 'ч'. a"} + a{"h:mm a – h:mm a"} + h{"h:mm – h:mm a"} + m{"h:mm – h:mm a"} } hmv{ - a{"h:mm 'ч'. a – h:mm 'ч'. a v"} - h{"h:mm 'ч'. a – h:mm 'ч'. a v"} - m{"h:mm 'ч'. a – h:mm 'ч'. a v"} + a{"h:mm a – h:mm a v"} + h{"h:mm a – h:mm a v"} + m{"h:mm a – h:mm a v"} } hv{ - a{"h 'ч'. a – h 'ч'. a v"} - h{"h – h 'ч'. a v"} + a{"h a – h a v"} + h{"h – h a v"} } y{ y{"y – y 'г'."} @@ -1822,7 +1863,7 @@ bg{ week-short{ dn{"седм."} relative{ - "-1"{"миналата седмица"} + "-1"{"мин. седм."} "0"{"тази седм."} "1"{"следв. седм."} } @@ -1942,8 +1983,10 @@ bg{ middle{"{0}, {1}"} start{"{0}, {1}"} } + standard-narrow{ + 2{"{0}, {1}"} + } standard-short{ - 2{"{0} и{1}"} end{"{0} и {1}"} middle{"{0}, {1}"} start{"{0}, {1}"} diff --git a/source/data/locales/bg_BG.txt b/source/data/locales/bg_BG.txt index f749551..66b7586 100644 --- a/source/data/locales/bg_BG.txt +++ b/source/data/locales/bg_BG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bg_BG{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/bm.txt b/source/data/locales/bm.txt index ac4bdc0..f6fa0c0 100644 --- a/source/data/locales/bm.txt +++ b/source/data/locales/bm.txt @@ -12,7 +12,7 @@ bm{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/bm_ML.txt b/source/data/locales/bm_ML.txt index af41408..90ad82f 100644 --- a/source/data/locales/bm_ML.txt +++ b/source/data/locales/bm_ML.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bm_ML{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/bn.txt b/source/data/locales/bn.txt index db3f931..e0ecd0a 100644 --- a/source/data/locales/bn.txt +++ b/source/data/locales/bn.txt @@ -19,10 +19,10 @@ bn{ "[অ আ ই ঈ উ ঊ ঋ এ ঐ ও ঔ ক {ক\u09CDষ} খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ত থ দ ধ ন প " "ফ ব ভ ম য র ল শ ষ স হ]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0০ 1১ 2২ 3৩ 4৪ 5৫ 6৬ 7৭ 8৮ 9৯]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0০ 1১ 2২ 3৩ 4৪ 5৫ 6৬ 7৭ 8৮ 9৯]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ @@ -34,6 +34,7 @@ bn{ scientificFormat{"#E0"} } symbols{ + decimal{"."} exponential{"E"} group{","} infinity{"∞"} @@ -43,12 +44,15 @@ bn{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } default{"beng"} latn{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}–{1}"} } patterns{ @@ -191,8 +195,8 @@ bn{ other{"000 কো"} } 10000000000{ - one{"0000 কো"} - other{"0000 কো"} + one{"00 শত কো"} + other{"00শত কো"} } 100000000000{ one{"00000 কো"} @@ -213,11 +217,16 @@ bn{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -238,8 +247,21 @@ bn{ minimumGroupingDigits{"1"} native{"beng"} } - Version{"2.1.48.36"} + Version{"36"} calendar{ + buddhist{ + eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } + wide{ + "BE", + } + } + } coptic{ eras{ abbreviated{ @@ -527,15 +549,6 @@ bn{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y – y G"} @@ -574,6 +587,20 @@ bn{ d{"M/d/y – M/d/y GGGGG"} y{"M/d/y – M/d/y GGGGG"} } + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -600,6 +627,24 @@ bn{ d{"d–d"} } fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -882,15 +927,6 @@ bn{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y – y G"} @@ -901,10 +937,10 @@ bn{ y{"M/y – M/y GGGGG"} } GyMEd{ - G{"E, M/d/y GGGGG – E, M/d/y GGGGG"} - M{"E, M/d/y – E, M/d/y GGGGG"} - d{"E, M/d/y – E, M/d/y GGGGG"} - y{"E, M/d/y – E, M/d/y GGGGG"} + G{"E, d/M/y GGGGG – E, d/M/y GGGGG"} + M{"E, d/M/y GGGGG – E, d/M/y GGGGG"} + d{"E, d/M/y – E, d/M/y GGGGG"} + y{"E, d/M/y – E, d/M/y GGGGG"} } GyMMM{ G{"MMM y G – MMM y G"} @@ -912,22 +948,22 @@ bn{ y{"MMM y – MMM y G"} } GyMMMEd{ - G{"E, MMM d, y G – E, MMM d, y G"} - M{"E, MMM d – E, MMM d, y G"} - d{"E, MMM d – E, MMM d, y G"} - y{"E, MMM d, y – E, MMM d, y G"} + G{"E, d MMM, y G – E, d MMM, y G"} + M{"E, d MMM – E, d MMM, y G"} + d{"E, d MMM – E, d MMM, y G"} + y{"E, d MMM, y – E, d MMM, y G"} } GyMMMd{ - G{"MMM d, y G – MMM d, y G"} - M{"MMM d – MMM d, y G"} - d{"MMM d – d, y G"} - y{"MMM d, y – MMM d, y G"} + G{"d MMM, y G – d MMM, y G"} + M{"d MMM – d MMM, y G"} + d{"d – d MMM, y G"} + y{"d MMM, y – d MMM, y G"} } GyMd{ - G{"M/d/y GGGGG – M/d/y GGGGG"} - M{"M/d/y – M/d/y GGGGG"} - d{"M/d/y – M/d/y GGGGG"} - y{"M/d/y – M/d/y GGGGG"} + G{"d/M/y GGGGG – d/M/y GGGGG"} + M{"d/M/y – d/M/y GGGGG"} + d{"d/M/y – d/M/y GGGGG"} + y{"d/M/y – d/M/y GGGGG"} } H{ H{"HH–HH"} @@ -1173,18 +1209,22 @@ bn{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"d E"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E, d MMM, y G"} GyMMMd{"d MMM, y G"} + M{"L"} MEd{"E, d-M"} + MMM{"LLL"} MMMEd{"E d MMM"} MMMMEd{"E d MMMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} MMdd{"dd-MM"} Md{"d/M"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M/y G"} @@ -1198,7 +1238,32 @@ bn{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -1221,6 +1286,28 @@ bn{ M{"d/M – d/M"} d{"d/M – d/M"} } + d{ + d{"d–d"} + } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -1567,6 +1654,17 @@ bn{ } } persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } monthNames{ format{ abbreviated{ @@ -2600,10 +2698,8 @@ bn{ start{"{0}, {1}"} } standard-narrow{ - 2{"{0} এবং {1}"} - end{"{0} এবং {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} + 2{"{0}, {1}"} + end{"{0}, {1}"} } standard-short{ 2{"{0} এবং {1}"} @@ -2661,6 +2757,10 @@ bn{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/bn_BD.txt b/source/data/locales/bn_BD.txt index da23c66..552241b 100644 --- a/source/data/locales/bn_BD.txt +++ b/source/data/locales/bn_BD.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bn_BD{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/bn_IN.txt b/source/data/locales/bn_IN.txt index 0f17b0f..f2ec233 100644 --- a/source/data/locales/bn_IN.txt +++ b/source/data/locales/bn_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bn_IN{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/bo.txt b/source/data/locales/bo.txt index 48121b5..3f60fdd 100644 --- a/source/data/locales/bo.txt +++ b/source/data/locales/bo.txt @@ -14,7 +14,7 @@ bo{ "\u0FB3\u0F80} \u0F79 \u0F7A \u0F7B \u0F7C \u0F7D \u0F84]" } ExemplarCharactersIndex{"[ཀ ཁ ག ང ཅ ཆ ཇ ཉ ཏ ཐ ད ན པ ཕ བ མ ཙ ཚ ཛ ཝ ཞ ཟ འ ཡ ར ལ ཤ ས ཧ ཨ]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0༠ 1༡ 2༢ 3༣ 4༤ 5༥ 6༦ 7༧ 8༨ 9༩]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0༠ 1༡ 2༢ 3༣ 4༤ 5༥ 6༦ 7༧ 8༨ 9༩]"} NumberElements{ default{"latn"} latn{ @@ -33,7 +33,7 @@ bo{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/bo_CN.txt b/source/data/locales/bo_CN.txt index fcc2c98..98744de 100644 --- a/source/data/locales/bo_CN.txt +++ b/source/data/locales/bo_CN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bo_CN{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/bo_IN.txt b/source/data/locales/bo_IN.txt index 01b9be5..1ee6818 100644 --- a/source/data/locales/bo_IN.txt +++ b/source/data/locales/bo_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bo_IN{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/br.txt b/source/data/locales/br.txt index cf2f61a..6de42a6 100644 --- a/source/data/locales/br.txt +++ b/source/data/locales/br.txt @@ -12,8 +12,8 @@ br{ } ExemplarCharacters{"[a b {ch} {cʼh} d e ê f g h i j k l m n ñ o p r s t u ù v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . ( ) \\[ \\] \\{ \\}]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ( ) \\[ \\] \\{ \\}]"} MoreInformation{"?"} NumberElements{ arab{ @@ -34,6 +34,7 @@ br{ percentSign{"٪؜"} plusSign{"؜+"} superscriptingExponent{"×"} + timeSeparator{":"} } } arabext{ @@ -49,6 +50,98 @@ br{ percentSign{"٪"} plusSign{"‎+‎"} superscriptingExponent{"×"} + timeSeparator{"٫"} + } + } + bali{ + symbols{ + timeSeparator{":"} + } + } + beng{ + symbols{ + timeSeparator{":"} + } + } + brah{ + symbols{ + timeSeparator{":"} + } + } + cakm{ + symbols{ + timeSeparator{":"} + } + } + cham{ + symbols{ + timeSeparator{":"} + } + } + default{"latn"} + deva{ + symbols{ + timeSeparator{":"} + } + } + fullwide{ + symbols{ + timeSeparator{":"} + } + } + gonm{ + symbols{ + timeSeparator{":"} + } + } + gujr{ + symbols{ + timeSeparator{":"} + } + } + guru{ + symbols{ + timeSeparator{":"} + } + } + hanidec{ + symbols{ + timeSeparator{":"} + } + } + java{ + symbols{ + timeSeparator{":"} + } + } + kali{ + symbols{ + timeSeparator{":"} + } + } + khmr{ + symbols{ + timeSeparator{":"} + } + } + knda{ + symbols{ + timeSeparator{":"} + } + } + lana{ + symbols{ + timeSeparator{":"} + } + } + lanatham{ + symbols{ + timeSeparator{":"} + } + } + laoo{ + symbols{ + timeSeparator{":"} } } latn{ @@ -337,15 +430,135 @@ br{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} + } + } + lepc{ + symbols{ + timeSeparator{":"} + } + } + limb{ + symbols{ + timeSeparator{":"} } } minimalPairs{ ordinal{ other{"{0}vet"} } + plural{ + few{"{0} cʼhi-error"} + many{"{0} a chas"} + one{"{0} cʼhi"} + other{"{0} ki"} + two{"{0} gi"} + } + } + minimumGroupingDigits{"1"} + mlym{ + symbols{ + timeSeparator{":"} + } + } + mong{ + symbols{ + timeSeparator{":"} + } + } + mtei{ + symbols{ + timeSeparator{":"} + } + } + mymr{ + symbols{ + timeSeparator{":"} + } + } + mymrshan{ + symbols{ + timeSeparator{":"} + } + } + native{"latn"} + nkoo{ + symbols{ + timeSeparator{":"} + } + } + olck{ + symbols{ + timeSeparator{":"} + } + } + orya{ + symbols{ + timeSeparator{":"} + } + } + osma{ + symbols{ + timeSeparator{":"} + } + } + saur{ + symbols{ + timeSeparator{":"} + } + } + shrd{ + symbols{ + timeSeparator{":"} + } + } + sora{ + symbols{ + timeSeparator{":"} + } + } + sund{ + symbols{ + timeSeparator{":"} + } + } + takr{ + symbols{ + timeSeparator{":"} + } + } + talu{ + symbols{ + timeSeparator{":"} + } + } + tamldec{ + symbols{ + timeSeparator{":"} + } + } + telu{ + symbols{ + timeSeparator{":"} + } + } + thai{ + symbols{ + timeSeparator{":"} + } + } + tibt{ + symbols{ + timeSeparator{":"} + } + } + vaii{ + symbols{ + timeSeparator{":"} + } } } - Version{"2.1.48.86"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -387,7 +600,27 @@ br{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } + eras{ + abbreviated{ + "A.B.", + } + narrow{ + "AB", + } + wide{ + "amzervezh voudaek", + } + } intervalFormats{ + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } H{ H{"HH–HH"} } @@ -2234,11 +2467,24 @@ br{ M{ M{"MM–MM"} } + MEd{ + M{"E dd/MM – E dd/MM"} + d{"E dd/MM – E dd/MM"} + } MMM{ M{"LLL–LLL"} } + MMMEd{ + M{"E d MMM – E d MMM"} + d{"E d MMM – E d MMM"} + } + MMMd{ + M{"d MMM – d MMM"} + d{"d–d MMM"} + } Md{ - M{"MM-dd – MM-dd"} + M{"dd/MM – dd/MM"} + d{"dd/MM – dd/MM"} } d{ d{"d–d"} @@ -2262,6 +2508,10 @@ br{ a{"h a – h a v"} h{"h–h a v"} } + yM{ + M{"MM/y – MM/y"} + y{"MM/y – MM/y"} + } } monthNames{ format{ @@ -2635,6 +2885,44 @@ br{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"MM/y GGGGG – MM/y GGGGG"} + M{"MM/y – MM/y GGGGG"} + y{"MM/y – MM/y GGGGG"} + } + GyMEd{ + G{"E dd/MM/y GGGGG – E dd/MM/y GGGGG"} + M{"E dd/MM/y – E dd/MM/y GGGGG"} + d{"E dd/MM/y – E dd/MM/y GGGGG"} + y{"E dd/MM/y – E dd/MM/y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E d MMM y G – E d MMM y G"} + M{"E d MMM – E d MMM y G"} + d{"E d MMM y – E d MMM y G"} + y{"E d MMM y – E d MMM y G"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d – d MMM y G"} + y{"d MMM y – d MMM y G"} + } + GyMd{ + G{"dd/MM/y GGGGG – dd/MM/y GGGGG"} + M{"dd/MM/y – dd/MM/y GGGGG"} + d{"dd/MM/y – dd/MM/y GGGGG"} + y{"dd/MM/y – dd/MM/y GGGGG"} + } H{ H{"HH–HH"} } @@ -2787,11 +3075,11 @@ br{ MMM{"LLL"} MMMEd{"E d MMM"} MMMMW{ - few{"'sizhun' W MMMM"} - many{"'sizhun' W MMMM"} - one{"'sizhun' W MMMM"} - other{"'sizhun' W MMMM"} - two{"'sizhun' W MMMM"} + few{"'sizhun' W 'miz' MMMM"} + many{"'sizhun' W 'miz' MMMM"} + one{"'sizhun' W 'miz' MMMM"} + other{"'sizhun' W 'miz' MMMM"} + two{"'sizhun' W 'miz' MMMM"} } MMMMd{"d MMMM"} MMMd{"d MMM"} @@ -2921,23 +3209,65 @@ br{ "goude J.K.", } abbreviated%variant{ - "BCE", - "CE", + "AAK", + "AK", } narrow{ "a-raok J.K.", "goude J.K.", } + narrow%variant{ + "AAK", + "AK", + } wide{ "a-raok Jezuz-Krist", "goude Jezuz-Krist", } wide%variant{ - "BCE", - "CE", + "a-raok an amzervezh kristen", + "an amzervezh kristen", } } intervalFormats{ + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"MM/y GGGGG – MM/y GGGGG"} + M{"MM/y – MM/y GGGGG"} + y{"MM/y – MM/y GGGGG"} + } + GyMEd{ + G{"E dd/MM/y GGGGG – E dd/MM/y GGGGG"} + M{"E dd/MM/y – E dd/MM/y GGGGG"} + d{"E dd/MM/y – E dd/MM/y GGGGG"} + y{"E dd/MM/y – E dd/MM/y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E d MMM y G – E d MMM y G"} + M{"E d MMM – E d MMM y G"} + d{"E d MMM – E d MMM y G"} + y{"E d MMM y – E d MMM y G"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d – d MMM y G"} + y{"d MMM y – d MMM y G"} + } + GyMd{ + G{"dd/MM/y GGGGG – dd/MM/y GGGGG"} + M{"dd/MM/y – dd/MM/y GGGGG"} + d{"dd/MM/y – dd/MM/y GGGGG"} + y{"dd/MM/y – dd/MM/y GGGGG"} + } H{ H{"HH–HH"} } @@ -4776,17 +5106,32 @@ br{ animals_nature{"loened pe natur"} arrows{"biroù"} body{"korf"} - braille{"braille"} + braille{"skritur Braille"} building{"savadur"} + bullets_stars{"krug pe steredenn"} currency_symbols{"arouez moneiz"} digits{"sifr"} + divination_symbols{"arouez divinouriezh"} + european_scripts{"skritur europat"} + female{"benel"} flag{"banniel"} flags{"bannieloù"} + food_drink{"boued hag evaj"} + format{"furmad"} han_radicals{"gwrizienn han"} + historic_scripts{"skritur istorel"} + modern_scripts{"skritur modern"} + modifier{"kemmañ"} nature{"natur"} numbers{"niveroù"} objects{"tra"} person{"den"} + phonetic_alphabet{"lizherenneg soniadel"} + pictographs{"piktogramm"} + place{"lecʼh"} + plant{"plant"} + punctuation{"poentadur"} + smiley{"fromlun"} sport{"sport"} symbols{"arouez"} travel{"beaj"} @@ -4794,10 +5139,10 @@ br{ weather{"amzer"} } delimiters{ - alternateQuotationEnd{"»"} - alternateQuotationStart{"«"} - quotationEnd{"”"} - quotationStart{"“"} + alternateQuotationEnd{"”"} + alternateQuotationStart{"“"} + quotationEnd{"»"} + quotationStart{"«"} } fields{ day{ @@ -4826,7 +5171,7 @@ br{ } } day-narrow{ - dn{"d"} + dn{"d."} relative{ "-1"{"decʼh"} "-2"{"dercʼhent-decʼh"} @@ -4851,7 +5196,7 @@ br{ } } day-short{ - dn{"d"} + dn{"d."} relative{ "-1"{"decʼh"} "-2"{"dercʼhent-decʼh"} @@ -4875,6 +5220,15 @@ br{ } } } + dayOfYear{ + dn{"deiz ar bloaz"} + } + dayOfYear-narrow{ + dn{"d. ar b."} + } + dayOfYear-short{ + dn{"d. ar bl."} + } dayperiod{ dn{"AM/GM"} } @@ -4887,6 +5241,12 @@ br{ era{ dn{"amzervezh"} } + era-narrow{ + dn{"amzerv."} + } + era-short{ + dn{"amzerv."} + } fri{ relative{ "-1"{"Digwener diwezhañ"} @@ -5138,11 +5498,11 @@ br{ } } month-narrow{ - dn{"miz"} + dn{"m."} relative{ - "-1"{"ar miz diaraok"} - "0"{"ar miz-mañ"} - "1"{"ar miz a zeu"} + "-1"{"ar m. diaraok"} + "0"{"ar m.-mañ"} + "1"{"ar m. a zeu"} } relativeTime{ future{ @@ -5210,7 +5570,7 @@ br{ } } quarter-narrow{ - dn{"trim."} + dn{"t."} relative{ "-1"{"an trim. diaraok"} "0"{"an trim.-mañ"} @@ -5611,6 +5971,7 @@ br{ "0"{"ar sizhun-mañ"} "1"{"ar sizhun a zeu"} } + relativePeriod{"sizhun {0}"} relativeTime{ future{ few{"a-benn {0} sizhun"} @@ -5628,9 +5989,83 @@ br{ } } } + week-narrow{ + dn{"sizh."} + relative{ + "-1"{"ar sizh. diaraok"} + "0"{"ar sizh.-mañ"} + "1"{"ar sizh. a zeu"} + } + relativePeriod{"sizh. {0}"} + relativeTime{ + future{ + few{"a-benn {0} sizh."} + many{"a-benn {0} sizh."} + one{"a-benn {0} sizh."} + other{"a-benn {0} sizh."} + two{"a-benn {0} sizh."} + } + past{ + few{"{0} sizh. zo"} + many{"{0} sizh. zo"} + one{"{0} sizh. zo"} + other{"{0} sizh. zo"} + two{"{0} sizh. zo"} + } + } + } + week-short{ + dn{"sizh."} + relative{ + "-1"{"ar sizh. diaraok"} + "0"{"ar sizh.-mañ"} + "1"{"ar sizh. a zeu"} + } + relativePeriod{"sizh. {0}"} + relativeTime{ + future{ + few{"a-benn {0} sizh."} + many{"a-benn {0} sizh."} + one{"a-benn {0} sizh."} + other{"a-benn {0} sizh."} + two{"a-benn {0} sizh."} + } + past{ + few{"{0} sizh. zo"} + many{"{0} sizh. zo"} + one{"{0} sizh. zo"} + other{"{0} sizh. zo"} + two{"{0} sizh. zo"} + } + } + } + weekOfMonth{ + dn{"sizhun ar miz"} + } + weekOfMonth-narrow{ + dn{"sizh. ar m."} + } + weekOfMonth-short{ + dn{"sizh. ar miz"} + } weekday{ dn{"deiz ar sizhun"} } + weekday-narrow{ + dn{"d. ar sizh."} + } + weekday-short{ + dn{"d. ar sizh."} + } + weekdayOfMonth{ + dn{"deiz ar miz"} + } + weekdayOfMonth-narrow{ + dn{"d. ar m."} + } + weekdayOfMonth-short{ + dn{"d. ar miz"} + } year{ dn{"bloaz"} relative{ @@ -5656,7 +6091,7 @@ br{ } } year-narrow{ - dn{"bl."} + dn{"b."} relative{ "-1"{"warlene"} "0"{"hevlene"} @@ -5706,20 +6141,36 @@ br{ zone{ dn{"takad eur"} } + zone-narrow{ + dn{"takad"} + } + zone-short{ + dn{"takad"} + } } listPattern{ or{ 2{"{0} pe {1}"} - end{"{0}, pe {1}"} + end{"{0} pe {1}"} middle{"{0}, {1}"} start{"{0}, {1}"} } + or-narrow{ + end{"{0} pe {1}"} + } + or-short{ + end{"{0} pe {1}"} + } standard{ - 2{"{0}, {1}"} - end{"{0}, {1}"} + 2{"{0} ha {1}"} + end{"{0} ha {1}"} middle{"{0}, {1}"} start{"{0}, {1}"} } + standard-short{ + 2{"{0} & {1}"} + end{"{0} & {1}"} + } unit{ 2{"{0}, {1}"} end{"{0}, {1}"} @@ -5754,7 +6205,7 @@ br{ general{ lenient{ "[.․。︒﹒.。]", - "['ʼ՚᾽᾿’']", + "['ʼ՚ߴ᾽᾿’']", "[%٪﹪%]", "[؉‰]", "[\$﹩$$]", @@ -5770,6 +6221,10 @@ br{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/br_FR.txt b/source/data/locales/br_FR.txt index 49c5691..1babc7e 100644 --- a/source/data/locales/br_FR.txt +++ b/source/data/locales/br_FR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License br_FR{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/brx.txt b/source/data/locales/brx.txt index 15a3a24..afc8a5d 100644 --- a/source/data/locales/brx.txt +++ b/source/data/locales/brx.txt @@ -11,7 +11,7 @@ brx{ "[अ आ इ ई उ ऊ ऍ ए ऐ ऑ ओ औ क ख ग घ च छ ज झ ञ ट ठ ड {ड\u093C} ढ ण त थ द ध न प फ" " ब भ म य र ल ळ व श ष स ह]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ default{"latn"} latn{ @@ -36,7 +36,7 @@ brx{ } native{"deva"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/brx_IN.txt b/source/data/locales/brx_IN.txt index abcf65c..5f64d06 100644 --- a/source/data/locales/brx_IN.txt +++ b/source/data/locales/brx_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License brx_IN{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/bs.txt b/source/data/locales/bs.txt index 6c795c4..2aa90a6 100644 --- a/source/data/locales/bs.txt +++ b/source/data/locales/bs.txt @@ -11,9 +11,12 @@ bs{ word-medial{"{0} … {1}"} } ExemplarCharacters{"[a b c č ć d {dž} đ e f g h i j k l {lj} m n {nj} o p r s š t u v z ž]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersIndex{"[A B C Č Ć D {DŽ} E F G H I J K L {LJ} M N {NJ} O P Q R S Š T U V W X Y Z Ž]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] @ * / ′ ″]"} MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -229,6 +232,7 @@ bs{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -242,8 +246,9 @@ bs{ } } minimumGroupingDigits{"1"} + native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -474,9 +479,9 @@ bs{ MMMEd{"E, d. MMM"} MMMMEd{"E, d. MMMM"} MMMMW{ - few{"W. 'sedmica' 'u' MMMM"} - one{"W. 'sedmica' 'u' MMMM"} - other{"W. 'sedmica' 'u' MMMM"} + few{"W. 'sedmica' 'mjesec' MMMM"} + one{"W. 'sedmica' 'mjesec' MMMM"} + other{"W. 'sedmica' 'mjesec' MMMM"} } MMMMd{"d. MMMM"} MMMd{"d. MMM"} diff --git a/source/data/locales/bs_Cyrl.txt b/source/data/locales/bs_Cyrl.txt index f68743f..470357f 100644 --- a/source/data/locales/bs_Cyrl.txt +++ b/source/data/locales/bs_Cyrl.txt @@ -9,7 +9,7 @@ bs_Cyrl{ } ExemplarCharacters{"[а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш]"} ExemplarCharactersIndex{"[А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -83,6 +83,68 @@ bs_Cyrl{ } } patternsShort{ + currencyFormat{ + 1000{ + few{"0"} + one{"0"} + other{"0"} + } + 10000{ + few{"00 хиљ ¤"} + one{"00 хиљ ¤"} + other{"00 хиљ ¤"} + } + 100000{ + few{"000 хиљ ¤"} + one{"000 хиљ ¤"} + other{"000 хиљ ¤"} + } + 1000000{ + few{"0 мил ¤"} + one{"0 мил ¤"} + other{"0 мил ¤"} + } + 10000000{ + few{"00 мил ¤"} + one{"00 мил ¤"} + other{"00 мил ¤"} + } + 100000000{ + few{"000 мил ¤"} + one{"000 мил ¤"} + other{"000 мил ¤"} + } + 1000000000{ + few{"0 млрд ¤"} + one{"0 млрд ¤"} + other{"0 млрд ¤"} + } + 10000000000{ + few{"00 млрд ¤"} + one{"00 млрд ¤"} + other{"00 млрд ¤"} + } + 100000000000{ + few{"000 млрд ¤"} + one{"000 млрд ¤"} + other{"000 млрд ¤"} + } + 1000000000000{ + few{"0 бил ¤"} + one{"0 бил ¤"} + other{"0 бил ¤"} + } + 10000000000000{ + few{"00 бил ¤"} + one{"00 бил ¤"} + other{"00 бил ¤"} + } + 100000000000000{ + few{"000 бил ¤"} + one{"000 бил ¤"} + other{"000 бил ¤"} + } + } decimalFormat{ 1000{ few{"0"} @@ -164,9 +226,14 @@ bs_Cyrl{ ordinal{ other{"Скрените на {0}. крижању десно."} } + plural{ + few{"{0} сата"} + one{"{0} сат"} + other{"{0} сати"} + } } } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ eras{ @@ -303,7 +370,6 @@ bs_Cyrl{ d{ d{"d–d"} } - fallback{"{0} - {1}"} h{ a{"hh a – hh a"} h{"hh–hh a"} @@ -361,8 +427,8 @@ bs_Cyrl{ } gregorian{ AmPmMarkers{ - "пре подне", - "поподне", + "прије подне", + "послије подне", } AmPmMarkersAbbr{ "пре подне", @@ -395,22 +461,31 @@ bs_Cyrl{ MEd{"E, dd.MM."} MMM{"LLL"} MMMEd{"E, dd. MMM"} + MMMMW{ + few{"'седмица' W 'мјесец' MMMM"} + one{"'седмица' W 'мјесец' MMMM"} + other{"'седмица' W 'мјесец' MMMM"} + } + MMMMd{"d. MMMM"} MMMd{"dd. MMM"} Md{"dd.MM."} d{"d"} - h{"hh a"} - hm{"hh:mm a"} - hms{"hh:mm:ss a"} ms{"mm:ss"} y{"y."} yM{"MM.y."} yMEd{"E, dd.MM.y."} yMMM{"MMM y."} yMMMEd{"E, dd. MMM y."} + yMMMM{"MMMM y."} yMMMd{"dd. MMM y."} yMd{"dd.MM.y."} yQQQ{"y QQQ"} yQQQQ{"y QQQQ"} + yw{ + few{"'седмица' w 'година' Y"} + one{"'седмица' w 'година' Y"} + other{"'седмица' w 'година' Y"} + } } dayNames{ format{ @@ -454,6 +529,62 @@ bs_Cyrl{ } } } + dayPeriod{ + format{ + abbreviated{ + afternoon1{"у подне"} + evening1{"увече"} + midnight{"поноћ"} + morning1{"ујутру"} + night1{"ноћу"} + noon{"подне"} + } + narrow{ + afternoon1{"у подне"} + evening1{"увече"} + midnight{"поноћ"} + morning1{"ујутру"} + night1{"ноћу"} + noon{"подне"} + } + wide{ + afternoon1{"у подне"} + evening1{"увече"} + midnight{"поноћ"} + morning1{"ујутру"} + night1{"ноћу"} + noon{"подне"} + } + } + stand-alone{ + abbreviated{ + afternoon1{"послийеподне"} + evening1{"вече"} + midnight{"поноћ"} + morning1{"јутро"} + night1{"ноћ"} + noon{"подне"} + } + narrow{ + afternoon1{"послийеподне"} + evening1{"вече"} + midnight{"поноћ"} + morning1{"јутро"} + night1{"ноћ"} + noon{"подне"} + } + wide{ + afternoon1{"послийеподне"} + am{"прије подне"} + evening1{"вече"} + midnight{"поноћ"} + morning1{"јутро"} + night1{"ноћ"} + noon{"подне"} + pm{"послије подне"} + } + } + } eras{ abbreviated{ "п. н. е.", @@ -467,6 +598,10 @@ bs_Cyrl{ "прије нове ере", "нове ере", } + wide%variant{ + "п.н.е", + "н.е.", + } } intervalFormats{ H{ @@ -508,7 +643,6 @@ bs_Cyrl{ d{ d{"d–d"} } - fallback{"{0} - {1}"} h{ a{"hh a – hh a"} h{"hh–hh a"} @@ -1091,20 +1225,85 @@ bs_Cyrl{ other{"за {0} дана"} } past{ - few{"пре {0} дана"} - one{"пре {0} дан"} - other{"пре {0} дана"} + few{"прије {0} дана"} + one{"прије {0} дан"} + other{"прије {0} дана"} } } } + day-narrow{ + dn{"дан"} + relativeTime{ + past{ + few{"прије {0} дана"} + one{"прије {0} дан"} + other{"прије {0} дана"} + } + } + } + day-short{ + dn{"дан"} + relativeTime{ + past{ + few{"прије {0} дана"} + one{"прије {0} дан"} + other{"прије {0} дана"} + } + } + } + dayOfYear{ + dn{"дан у години"} + } + dayOfYear-narrow{ + dn{"дан у год."} + } + dayOfYear-short{ + dn{"дан у год."} + } dayperiod{ - dn{"пре подне/поподне"} + dn{"прије подне/послије подне"} + } + dayperiod-narrow{ + dn{"прије подне/послије подне"} + } + dayperiod-short{ + dn{"прије подне/послије подне"} } era{ dn{"ера"} } + era-narrow{ + dn{"ера"} + } + era-short{ + dn{"ера"} + } + fri{ + relative{ + "-1"{"прошлог петка"} + "0"{"овог петка"} + "1"{"сљедећег петка"} + } + } + fri-narrow{ + relative{ + "-1"{"пр. петка"} + "0"{"овог пет."} + "1"{"сљ. петка"} + } + } + fri-short{ + relative{ + "-1"{"прошл. петка"} + "0"{"овог пет."} + "1"{"сљед. петка"} + } + } hour{ - dn{"час"} + dn{"сат"} + relative{ + "0"{"овог сата"} + } relativeTime{ future{ few{"за {0} сата"} @@ -1112,14 +1311,37 @@ bs_Cyrl{ other{"за {0} сати"} } past{ - few{"пре {0} сата"} - one{"пре {0} сат"} - other{"пре {0} сати"} + few{"прије {0} сата"} + one{"прије {0} сат"} + other{"прије {0} сати"} + } + } + } + hour-narrow{ + dn{"сат"} + relativeTime{ + past{ + few{"прије {0} сата"} + one{"прије {0} сат"} + other{"прије {0} сати"} + } + } + } + hour-short{ + dn{"сат"} + relativeTime{ + past{ + few{"прије {0} сата"} + one{"прије {0} сат"} + other{"прије {0} сати"} } } } minute{ dn{"минут"} + relative{ + "0"{"овог минута"} + } relativeTime{ future{ few{"за {0} минута"} @@ -1127,34 +1349,153 @@ bs_Cyrl{ other{"за {0} минута"} } past{ - few{"пре {0} минута"} - one{"пре {0} минут"} - other{"пре {0} минута"} + few{"прије {0} минута"} + one{"прије {0} минут"} + other{"прије {0} минута"} + } + } + } + minute-narrow{ + dn{"мин"} + relativeTime{ + past{ + few{"прије {0} мин."} + one{"прије {0} мин."} + other{"прије {0} мин."} + } + } + } + minute-short{ + dn{"мин."} + relativeTime{ + past{ + few{"прије {0} минута"} + one{"прије {0} минут"} + other{"прије {0} минута"} } } } + mon{ + relative{ + "-1"{"прошлог понедјељка"} + "0"{"овог понедјељка"} + "1"{"сљедећег понедјељка"} + } + } + mon-narrow{ + relative{ + "-1"{"пр. понедј."} + "0"{"овог понедј."} + "1"{"сљ. понедј."} + } + } + mon-short{ + relative{ + "-1"{"прошл. понедјељка"} + "0"{"овог понедј."} + "1"{"сљ. понедјељка"} + } + } month{ - dn{"месец"} + dn{"мјесец"} + relative{ + "-1"{"прошлог мјесеца"} + "0"{"овог мјесеца"} + "1"{"сљедећег мјесеца"} + } + relativeTime{ + future{ + few{"за {0} мјесеца"} + one{"за {0} мјесец"} + other{"за {0} мјесеци"} + } + past{ + few{"прије {0} мјесеца"} + one{"прије {0} мјесец"} + other{"прије {0} мјесеци"} + } + } + } + month-narrow{ + dn{"мјес."} + relative{ + "-1"{"прош. мјес."} + "0"{"ов. мјес."} + "1"{"сљ. мјес."} + } + relativeTime{ + future{ + few{"за {0} мјес."} + one{"за {0} мјес."} + other{"за {0} мјес."} + } + past{ + few{"прије {0} мјес."} + one{"прије {0} мјес."} + other{"прије {0} мјес."} + } + } + } + month-short{ + dn{"мјес."} relative{ - "-1"{"Прошлог месеца"} - "0"{"Овог месеца"} - "1"{"Следећег месеца"} + "-1"{"прош. мјесеца"} + "0"{"овог мјес."} + "1"{"сљед. мјесеца"} } relativeTime{ future{ - few{"за {0} месеца"} - one{"за {0} месец"} - other{"за {0} месеци"} + few{"за {0} мјесеца"} + one{"за {0} мјесец"} + other{"за {0} мјесеци"} } past{ - few{"пре {0} месеца"} - one{"пре {0} месец"} - other{"пре {0} месеци"} + few{"прије {0} мјесеца"} + one{"прије {0} мјесец"} + other{"прије {0} мјесеци"} } } } + quarter{ + dn{"тромјесечје"} + relative{ + "-1"{"прошло тромјесечје"} + "0"{"ово тромјесечје"} + "1"{"сљедеће тромјесечје"} + } + } + quarter-narrow{ + dn{"qtr."} + } + quarter-short{ + dn{"тромје."} + } + sat{ + relative{ + "-1"{"прошле суботе"} + "0"{"ове суботе"} + "1"{"сљедеће суботе"} + } + } + sat-narrow{ + relative{ + "-1"{"пр. суботе"} + "0"{"ове суб."} + "1"{"сљ. суботе"} + } + } + sat-short{ + relative{ + "-1"{"прошл. суботе"} + "0"{"ове суб."} + "1"{"сљед. суботе"} + } + } second{ dn{"секунд"} + relative{ + "0"{"сада"} + } relativeTime{ future{ few{"за {0} секунде"} @@ -1162,41 +1503,222 @@ bs_Cyrl{ other{"за {0} секунди"} } past{ - few{"пре {0} секунде"} - one{"пре {0} секунд"} - other{"пре {0} секунди"} + few{"прије {0} секунде"} + one{"прије {0} секунд"} + other{"прије {0} секунди"} + } + } + } + second-narrow{ + dn{"сек"} + relativeTime{ + future{ + few{"за {0} секунде"} + one{"за {0} сек."} + other{"за {0} секунди"} + } + past{ + few{"прије {0} сек."} + one{"прије {0} сек."} + other{"прије {0} сек."} + } + } + } + second-short{ + dn{"сек."} + relativeTime{ + future{ + few{"за {0} секунде"} + one{"за {0} сек."} + other{"за {0} секунди"} + } + past{ + few{"прије {0} сек."} + one{"прије {0} сек."} + other{"прије {0} сек."} } } } + sun{ + relative{ + "-1"{"прошле недјеље"} + "0"{"ове недјеље"} + "1"{"сљедеће недјеље"} + } + } + sun-narrow{ + relative{ + "-1"{"пр. недјеље"} + "0"{"ове недј."} + "1"{"сљ. недјеље"} + } + } + sun-short{ + relative{ + "-1"{"прошл. недјеље"} + "0"{"ове недјеље"} + "1"{"сљ. недјеље"} + } + } + thu{ + relative{ + "-1"{"прошлог четвртка"} + "0"{"овог четвртка"} + "1"{"сљедећег четвртка"} + } + } + thu-narrow{ + relative{ + "-1"{"пр. чет."} + "0"{"овог чет."} + "1"{"сљ. чет."} + } + } + thu-short{ + relative{ + "-1"{"прошл. чет."} + "0"{"овог чет."} + "1"{"сљед. чет."} + } + } + tue{ + relative{ + "-1"{"прошлог уторка"} + "0"{"овог уторка"} + "1"{"сљедећег уторка"} + } + } + tue-narrow{ + relative{ + "-1"{"пр. уторка"} + "0"{"овог утор."} + "1"{"сљ. уторка"} + } + } + tue-short{ + relative{ + "-1"{"прошл. уторка"} + "0"{"овог утор."} + "1"{"сљед. уторка"} + } + } + wed{ + relative{ + "-1"{"прошле сриједе"} + "0"{"ове сриједе"} + "1"{"сљедеће сриједе"} + } + } + wed-narrow{ + relative{ + "-1"{"пр. сриједе"} + "0"{"ове сриј."} + "1"{"сљ. сриједе"} + } + } + wed-short{ + relative{ + "-1"{"прошл. сриједе"} + "0"{"ове сриједе"} + "1"{"сљед. сриједе"} + } + } week{ - dn{"недеља"} + dn{"седмица"} relative{ - "-1"{"Прошле недеље"} - "0"{"Ове недеље"} - "1"{"Следеће недеље"} + "-1"{"прошле седмице"} + "0"{"ове седмице"} + "1"{"сљедеће седмице"} } + relativePeriod{"седмица {0}"} relativeTime{ future{ - few{"за {0} недеље"} - one{"за {0} недељу"} - other{"за {0} недеља"} + few{"за {0} седмице"} + one{"за {0} седмицу"} + other{"за {0} седмица"} } past{ - few{"пре {0} недеље"} - one{"пре {0} недељу"} - other{"пре {0} недеља"} + few{"прије {0} седмице"} + one{"прије {0} седмицу"} + other{"прије {0} седмица"} } } } + week-narrow{ + dn{"седм."} + relative{ + "-1"{"прош. седм."} + "0"{"ове седм."} + "1"{"сљ. седм."} + } + relativePeriod{"седмица {0}"} + relativeTime{ + future{ + few{"за {0} седм."} + one{"за {0} седм."} + other{"за {0} седм."} + } + past{ + few{"прије {0} седм."} + one{"прије {0} седм."} + other{"прије {0} седм."} + } + } + } + week-short{ + dn{"седм."} + relative{ + "-1"{"прош. седм."} + "0"{"ове седм."} + "1"{"сљ. седм."} + } + relativePeriod{"седмица {0}"} + relativeTime{ + future{ + few{"за {0} седм."} + one{"за {0} седм."} + other{"за {0} седм."} + } + past{ + few{"прије {0} седм."} + one{"прије {0} седм."} + other{"прије {0} седм."} + } + } + } + weekOfMonth{ + dn{"седмица у мјесецу"} + } + weekOfMonth-narrow{ + dn{"седм. у мјес."} + } + weekOfMonth-short{ + dn{"седм. у мјесецу"} + } weekday{ - dn{"дан у недељи"} + dn{"дан у седмици"} + } + weekday-narrow{ + dn{"дан у седм."} + } + weekday-short{ + dn{"дан у седм."} + } + weekdayOfMonth{ + dn{"радни дан у мјесецу"} + } + weekdayOfMonth-narrow{ + dn{"рад. дан у мјес."} + } + weekdayOfMonth-short{ + dn{"рад. дан у мјесецу"} } year{ dn{"година"} relative{ - "-1"{"Прошле године"} - "0"{"Ове године"} - "1"{"Следеће године"} + "-1"{"прошле године"} + "0"{"ове године"} + "1"{"сљедеће године"} } relativeTime{ future{ @@ -1205,9 +1727,39 @@ bs_Cyrl{ other{"за {0} година"} } past{ - few{"пре {0} године"} - one{"пре {0} годину"} - other{"пре {0} година"} + few{"прије {0} године"} + one{"прије {0} годину"} + other{"прије {0} година"} + } + } + } + year-narrow{ + dn{"год."} + relative{ + "-1"{"прош. године"} + "0"{"ове год."} + "1"{"сљед. године"} + } + relativeTime{ + past{ + few{"прије {0} године"} + one{"прије {0} годину"} + other{"прије {0} година"} + } + } + } + year-short{ + dn{"год"} + relative{ + "-1"{"прош. године"} + "0"{"ове год."} + "1"{"сљед. године"} + } + relativeTime{ + past{ + few{"прије {0} године"} + one{"прије {0} годину"} + other{"прије {0} година"} } } } @@ -1224,6 +1776,6 @@ bs_Cyrl{ measurementSystemNames{ UK{"империјални"} US{"САД"} - metric{"Метрички"} + metric{"метрички"} } } diff --git a/source/data/locales/bs_Cyrl_BA.txt b/source/data/locales/bs_Cyrl_BA.txt index 66f1bc4..1c8db7c 100644 --- a/source/data/locales/bs_Cyrl_BA.txt +++ b/source/data/locales/bs_Cyrl_BA.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bs_Cyrl_BA{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/bs_Latn.txt b/source/data/locales/bs_Latn.txt index a464369..40dd443 100644 --- a/source/data/locales/bs_Latn.txt +++ b/source/data/locales/bs_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bs_Latn{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/bs_Latn_BA.txt b/source/data/locales/bs_Latn_BA.txt index 8a0d7a7..6c67b62 100644 --- a/source/data/locales/bs_Latn_BA.txt +++ b/source/data/locales/bs_Latn_BA.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bs_Latn_BA{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/ca.txt b/source/data/locales/ca.txt index 701732b..a5b7c23 100644 --- a/source/data/locales/ca.txt +++ b/source/data/locales/ca.txt @@ -12,9 +12,9 @@ ca{ } ExemplarCharacters{"[· a à b c ç d e é è f g h i í ï j k l m n o ó ò p q r s t u ú ü v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ¡ ? ¿ . … ' ‘ ’ \u0022 “ ” « » ( ) \\[ \\] § @ * / " + "[\\- ‐ ‑ – — , ; \\: ! ¡ ? ¿ . … ' ‘ ’ \u0022 “ ” « » ( ) \\[ \\] § @ * / " "\\\\ \\& # † ‡ ′ ″]" } MoreInformation{"?"} @@ -30,6 +30,7 @@ ca{ patterns{ accountingFormat{"#,##0.00 ¤;(#,##0.00 ¤)"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -193,9 +194,11 @@ ca{ group{"."} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -215,7 +218,7 @@ ca{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -417,7 +420,7 @@ ca{ } GyMEd{ G{"E, d/M/y GGGGG – E, d/M/y GGGGG"} - M{"E, d/M/y GGGGG – E, d/M/y GGGGG"} + M{"E, d/M/y – E, d/M/y GGGGG"} d{"E, d/M/y – E, d/M/y GGGGG"} y{"E, d/M/y – E, d/M/y GGGGG"} } @@ -803,18 +806,9 @@ ca{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} - y{"y – y G"} + y{"y–y G"} } GyM{ G{"M/y GGGGG – M/y GGGGG"} @@ -841,7 +835,7 @@ ca{ GyMMMd{ G{"d MMM, y G – d MMM, y G"} M{"d MMM – d MMM, y G"} - d{"d – d LLL, y G"} + d{"d–d LLL, y G"} y{"d MMM, y – d MMM, y G"} } GyMd{ @@ -1518,9 +1512,9 @@ ca{ month-narrow{ dn{"mes"} relative{ - "-1"{"mes passat"} + "-1"{"el mes passat"} "0"{"aquest mes"} - "1"{"mes vinent"} + "1"{"el mes que ve"} } relativeTime{ future{ @@ -1930,9 +1924,9 @@ ca{ week-narrow{ dn{"setm."} relative{ - "-1"{"setm. passada"} + "-1"{"la setm. passada"} "0"{"aquesta setm."} - "1"{"setm. vinent"} + "1"{"la setm. que ve"} } relativePeriod{"la setmana de: {0}"} relativeTime{ diff --git a/source/data/locales/ca_AD.txt b/source/data/locales/ca_AD.txt index 3cd93ba..fdbca10 100644 --- a/source/data/locales/ca_AD.txt +++ b/source/data/locales/ca_AD.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ca_AD{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/ca_ES.txt b/source/data/locales/ca_ES.txt index 0d3543b..78062b7 100644 --- a/source/data/locales/ca_ES.txt +++ b/source/data/locales/ca_ES.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ca_ES{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/ca_FR.txt b/source/data/locales/ca_FR.txt index 9b0f0e8..324eb5d 100644 --- a/source/data/locales/ca_FR.txt +++ b/source/data/locales/ca_FR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ca_FR{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/ca_IT.txt b/source/data/locales/ca_IT.txt index 2384c20..a491acd 100644 --- a/source/data/locales/ca_IT.txt +++ b/source/data/locales/ca_IT.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ca_IT{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/ccp.txt b/source/data/locales/ccp.txt index 9ed466f..3f84fb5 100644 --- a/source/data/locales/ccp.txt +++ b/source/data/locales/ccp.txt @@ -13,8 +13,8 @@ ccp{ "𑄜 𑄝 𑄞 𑄟 𑄠 𑄡 𑄢 𑄣 𑄤 𑄥 𑄦]" } ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? 𑅃 . … 𑅁 𑅂 𑅀 ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / " - "\\& # † ‡ ′ ″]" + "[\\- ‐ ‑ – — , ; \\: ! ? 𑅃 . … 𑅁 𑅂 𑅀 ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * " + "/ \\& # † ‡ ′ ″]" } NumberElements{ cakm{ @@ -83,7 +83,7 @@ ccp{ minimumGroupingDigits{"1"} native{"cakm"} } - Version{"2.1.48.88"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ccp_BD.txt b/source/data/locales/ccp_BD.txt index 21fe973..c01c197 100644 --- a/source/data/locales/ccp_BD.txt +++ b/source/data/locales/ccp_BD.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ccp_BD{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ccp_IN.txt b/source/data/locales/ccp_IN.txt index efbfee0..4f188e3 100644 --- a/source/data/locales/ccp_IN.txt +++ b/source/data/locales/ccp_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ccp_IN{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ce.txt b/source/data/locales/ce.txt index 4f16d71..4911de7 100644 --- a/source/data/locales/ce.txt +++ b/source/data/locales/ce.txt @@ -7,10 +7,10 @@ ce{ "ӏ} ц {цӏ} ч {чӏ} ш щ ъ ы ь э ю {юь} я {яь}]" } ExemplarCharactersIndex{"[А Б В Г Д Е Ё Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * / " - "\\& #]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * " + "/ \\& #]" } NumberElements{ latn{ @@ -193,7 +193,7 @@ ce{ } minimumGroupingDigits{"1"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ce_RU.txt b/source/data/locales/ce_RU.txt index 736db00..94a75e9 100644 --- a/source/data/locales/ce_RU.txt +++ b/source/data/locales/ce_RU.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ce_RU{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ceb.txt b/source/data/locales/ceb.txt index c174bc3..0ce0f9a 100644 --- a/source/data/locales/ceb.txt +++ b/source/data/locales/ceb.txt @@ -3,11 +3,15 @@ ceb{ AuxExemplarCharacters{"[c f j q v x z]"} ExemplarCharacters{"[a b d e g h i k l m n o p r s t u w y]"} - ExemplarCharactersIndex{"[a b d e g h i k l m n {ng} o p r s t u w y]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] @ * / \\& # ′ ″]"} + ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} + ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] @ * / \\& # ′ ″]"} NumberElements{ latn{ + miscPatterns{ + atLeast{"{0}+"} + } patterns{ + accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} decimalFormat{"#,##0.###"} percentFormat{"#,#0%"} @@ -21,8 +25,17 @@ ceb{ plusSign{"+"} } } + minimalPairs{ + ordinal{ + other{"Adto sa ika-{0} nga tuo."} + } + plural{ + one{"{0} ka adlaw"} + other{"{0} ka mga adlaw"} + } + } } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -40,8 +53,126 @@ ceb{ "{1}, {0}", "{1}, {0}", } + availableFormats{ + Ed{"d E"} + Ehm{"E h:mm a"} + Ehms{"E h:mm:ss a"} + Gy{"y G"} + GyMMM{"MMM y G"} + GyMMMEd{"E, MMM d, y G"} + GyMMMd{"MMM d, y G"} + MEd{"E, M/d"} + MMMEd{"E, MMM d"} + Md{"M/d"} + d{"d"} + y{"y G"} + yyyy{"y G"} + yyyyM{"M/y GGGGG"} + yyyyMEd{"E, M/d/y GGGGG"} + yyyyMMM{"MMM y G"} + yyyyMMMEd{"E, MMM d, y G"} + yyyyMMMM{"MMMM y G"} + yyyyMMMd{"MMM d, y G"} + yyyyMd{"M/d/y GGGGG"} + yyyyQQQ{"QQQ y G"} + yyyyQQQQ{"QQQQ y G"} + } intervalFormats{ + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"M/y GGGGG – M/y GGGGG"} + M{"M/y – M/y GGGGG"} + y{"M/y – M/y GGGGG"} + } + GyMEd{ + G{"E, M/d/y GGGGG – E, M/d/y GGGGG"} + M{"E, M/d/y – E, M/d/y GGGGG"} + d{"E, M/d/y – E, M/d/y GGGGG"} + y{"E, M/d/y – E, M/d/y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E, MMM d, y G – E, MMM d, y G"} + M{"E, MMM d – E, MMM d, y G"} + d{"E, MMM d – E, MMM d, y G"} + y{"E, MMM d, y – E, MMM d, y G"} + } + GyMMMd{ + G{"MMM d, y G – MMM d, y G"} + M{"MMM d – MMM d, y G"} + d{"MMM d – d, y G"} + y{"MMM d, y – MMM d, y G"} + } + GyMd{ + G{"M/d/y GGGGG – M/d/y GGGGG"} + M{"M/d/y – M/d/y GGGGG"} + d{"M/d/y – M/d/y GGGGG"} + y{"M/d/y – M/d/y GGGGG"} + } + M{ + M{"M – M"} + } + MEd{ + M{"E, M/d – E, M/d"} + d{"E, M/d – E, M/d"} + } + MMM{ + M{"MMM – MMM"} + } + MMMEd{ + M{"E, MMM d – E, MMM d"} + d{"E, MMM d – E, MMM d"} + } + MMMd{ + d{"MMM d – d"} + } + Md{ + M{"M/d – M/d"} + d{"M/d – M/d"} + } fallback{"{0} – {1}"} + y{ + y{"y – y G"} + } + yM{ + M{"M/y – M/y GGGGG"} + y{"M/y – M/y GGGGG"} + } + yMEd{ + M{"E, M/d/y – E, M/d/y GGGGG"} + d{"E, M/d/y – E, M/d/y GGGGG"} + y{"E, M/d/y – E, M/d/y GGGGG"} + } + yMMM{ + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + yMMMEd{ + M{"E, MMM d – E, MMM d, y G"} + d{"E, MMM d – E, MMM d, y G"} + y{"E, MMM d, y – E, MMM d, y G"} + } + yMMMM{ + M{"MMMM – MMMM y G"} + y{"MMMM y – MMMM y G"} + } + yMMMd{ + M{"MMM d – MMM d, y G"} + d{"MMM d – d, y G"} + y{"MMM d, y – MMM d, y G"} + } + yMd{ + M{"M/d/y – M/d/y GGGGG"} + d{"M/d/y – M/d/y GGGGG"} + y{"M/d/y – M/d/y GGGGG"} + } } } gregorian{ @@ -49,6 +180,10 @@ ceb{ "AM", "PM", } + AmPmMarkersNarrow{ + "a", + "p", + } DateTimePatterns{ "h:mm:ss a zzzz", "h:mm:ss a z", @@ -89,6 +224,10 @@ ceb{ MEd{"E, M/d"} MMM{"LLL"} MMMEd{"E, MMM d"} + MMMMW{ + one{"'semana' W 'sa' MMMM"} + other{"'semana' W 'sa' MMMM"} + } MMMMd{"MMMM d"} MMMd{"MMM d"} Md{"M/d"} @@ -109,6 +248,10 @@ ceb{ yMd{"M/d/y"} yQQQ{"QQQ y"} yQQQQ{"QQQQ y"} + yw{ + one{"'semana' w 'sa' Y"} + other{"'semana' w 'sa' Y"} + } } dayNames{ format{ @@ -130,6 +273,15 @@ ceb{ "B", "S", } + short{ + "Dom", + "Lun", + "Mar", + "Miy", + "Huw", + "Biy", + "Sab", + } wide{ "Domingo", "Lunes", @@ -161,9 +313,125 @@ ceb{ "WKP", "CE", } + wide%variant{ + "Sa Wala Pa ang Common Era", + "Common Era", + } } intervalFormats{ + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"M/y GGGGG – M/y GGGGG"} + M{"M/y – M/y GGGGG"} + y{"M/y – M/y GGGGG"} + } + GyMEd{ + G{"E, M/d/y GGGGG – E, M/d/y GGGGG"} + M{"E, M/d/y – E, M/d/y GGGGG"} + d{"E, M/d/y – E, M/d/y GGGGG"} + y{"E, M/d/y – E, M/d/y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E, MMM d, y G – E, MMM d, y G"} + M{"E, MMM d – E, MMM d, y G"} + d{"E, MMM d – E, MMM d, y G"} + y{"E, MMM d, y – E, MMM d, y G"} + } + GyMMMd{ + G{"MMM d, y G – MMM d, y G"} + M{"MMM d – MMM d, y G"} + d{"MMM d – d, y G"} + y{"MMM d, y – MMM d, y G"} + } + GyMd{ + G{"M/d/y GGGGG – M/d/y GGGGG"} + M{"M/d/y – M/d/y GGGGG"} + d{"M/d/y – M/d/y GGGGG"} + y{"M/d/y – M/d/y GGGGG"} + } + H{ + H{"HH – HH"} + } + Hm{ + H{"HH:mm – HH:mm"} + m{"HH:mm – HH:mm"} + } + Hmv{ + H{"HH:mm – HH:mm v"} + m{"HH:mm – HH:mm v"} + } + Hv{ + H{"HH – HH v"} + } + M{ + M{"M – M"} + } + MEd{ + M{"E, M/d – E, M/d"} + d{"E, M/d – E, M/d"} + } + MMM{ + M{"MMM – MMM"} + } + MMMEd{ + M{"E, MMM d – E, MMM d"} + d{"E, MMM d – E, MMM d"} + } + Md{ + M{"M/d – M/d"} + d{"M/d – M/d"} + } fallback{"{0} – {1}"} + hm{ + m{"h:mm – h:mm a"} + } + hmv{ + h{"h:mm – h:mm a v"} + m{"h:mm – h:mm a v"} + } + hv{ + h{"h – h a v"} + } + yM{ + M{"M/y – M/y"} + y{"M/y – M/y"} + } + yMEd{ + M{"E, M/d/y – E, M/d/y"} + d{"E, M/d/y – E, M/d/y"} + y{"E, M/d/y – E, M/d/y"} + } + yMMM{ + M{"MMM – MMM y"} + y{"MMM y – MMM y"} + } + yMMMEd{ + M{"E, MMM d – E, MMM d, y"} + d{"E, MMM d – E, MMM d, y"} + y{"E, MMM d, y – E, MMM d, y"} + } + yMMMM{ + M{"MMMM – MMMM y"} + y{"MMMM y – MMMM y"} + } + yMMMd{ + M{"MMM d – MMM d, y"} + d{"MMM d – d, y"} + y{"MMM d, y – MMM d, y"} + } + yMd{ + M{"M/d/y – M/d/y"} + d{"M/d/y – M/d/y"} + y{"M/d/y – M/d/y"} + } } monthNames{ format{ @@ -199,7 +467,7 @@ ceb{ "Enero", "Pebrero", "Marso", - "April", + "Abril", "Mayo", "Hunyo", "Hulyo", @@ -243,7 +511,7 @@ ceb{ "Enero", "Pebrero", "Marso", - "April", + "Abril", "Mayo", "Hunyo", "Hulyo", @@ -264,10 +532,10 @@ ceb{ "Q4", } wide{ - "Una sa matag-tulo ka bulan", - "Ikaduha sa matag-tulo ka bulan", - "Ikatulo sa matag-tulo ka bulan", - "Ikaupat sa matag-tulo ka bulan", + "unang quarter", + "ika-2 nga quarter", + "ika-3 nga quarter", + "ika-4 nga quarter", } } stand-alone{ @@ -277,6 +545,12 @@ ceb{ "Q3", "Q4", } + wide{ + "unang quarter", + "ika-2 nga quarter", + "ika-3 nga quarter", + "ika-4 nga quarter", + } } } } @@ -289,54 +563,149 @@ ceb{ } fields{ day{ - dn{"Adlaw"} + dn{"adlaw"} relative{ - "-1"{"Kagahapon"} - "0"{"Karon nga Adlaw"} - "1"{"Ugma"} + "-1"{"gahapon"} + "0"{"karong adlawa"} + "1"{"ugma"} } } day-narrow{ - dn{"Adlaw"} + dn{"adlaw"} + relative{ + "-1"{"gahapon"} + "0"{"karong adlawa"} + "1"{"ugma"} + } } day-short{ - dn{"Adlaw"} + dn{"adlaw"} + relative{ + "-1"{"gahapon"} + "0"{"karong adlawa"} + "1"{"ugma"} + } } dayperiod{ dn{"AM/PM"} } era{ - dn{"Panahon"} + dn{"era"} } hour{ - dn{"Oras"} + dn{"oras"} + } + hour-narrow{ + dn{"oras"} + } + hour-short{ + dn{"oras"} } minute{ - dn{"Minuto"} + dn{"minuto"} + } + minute-narrow{ + dn{"minuto"} + } + minute-short{ + dn{"minuto"} } month{ - dn{"Bulan"} + dn{"buwan"} + relative{ + "-1"{"miaging buwan"} + "0"{"karong buwana"} + "1"{"sunod nga buwan"} + } + } + month-narrow{ + dn{"buwan"} + relative{ + "-1"{"miaging buwan"} + "0"{"karong buwana"} + "1"{"sunod nga buwan"} + } } month-short{ - dn{"Bulan"} + dn{"buwan"} + relative{ + "-1"{"miaging buwan"} + "0"{"karong buwana"} + "1"{"sunod nga buwan"} + } } quarter{ - dn{"Ikaupat"} + dn{"quarter"} + } + quarter-narrow{ + dn{"qtr."} + } + quarter-short{ + dn{"qtr."} } second{ - dn{"Segundo"} + dn{"segundo"} + } + second-narrow{ + dn{"segundo"} + } + second-short{ + dn{"segundo"} } week{ - dn{"Semana"} + dn{"semana"} + relative{ + "-1"{"miaging semana"} + "0"{"karong semanaha"} + "1"{"sunod nga semana"} + } + relativePeriod{"ang semana sa {0}"} + } + week-narrow{ + dn{"semana"} + relative{ + "-1"{"miaging semana"} + "0"{"karong semanaha"} + "1"{"sunod nga semana"} + } + relativePeriod{"ang semana sa {0}"} + } + week-short{ + dn{"semana"} + relative{ + "-1"{"miaging semana"} + "0"{"karong semanaha"} + "1"{"sunod nga semana"} + } + relativePeriod{"ang semana sa {0}"} } weekday{ - dn{"Adlaw sa Semana"} + dn{"adlaw sa semana"} } year{ dn{"tuig"} + relative{ + "-1"{"miaging tuig"} + "0"{"karong tuiga"} + "1"{"sunod nga tuig"} + } + } + year-narrow{ + relative{ + "-1"{"miaging tuig"} + "0"{"karong tuiga"} + "1"{"sunod nga tuig"} + } + } + year-short{ + relative{ + "-1"{"miaging tuig"} + "0"{"karong tuiga"} + "1"{"sunod nga tuig"} + } } zone{ - dn{"Sona sa Panahon"} + dn{"time zone"} } } layout{ @@ -344,12 +713,46 @@ ceb{ lines{"top-to-bottom"} } listPattern{ + or{ + 2{"{0} o {1}"} + end{"{0}, o {1}"} + } + or-narrow{ + 2{"{0} o {1}"} + end{"{0}, o {1}"} + } + or-short{ + 2{"{0} o {1}"} + end{"{0}, o {1}"} + } standard{ 2{"{0} at {1}"} end{"{0}, at {1}"} middle{"{0}, {1}"} start{"{0}, {1}"} } + standard-narrow{ + 2{"{0}, {1}"} + end{"{0}, {1}"} + } + standard-short{ + 2{"{0} ug {1}"} + end{"{0}, ug {1}"} + } + unit{ + 2{"{0}, {1}"} + end{"{0}, {1}"} + } + unit-narrow{ + 2{"{0} {1}"} + end{"{0} {1}"} + middle{"{0} {1}"} + start{"{0} {1}"} + } + unit-short{ + 2{"{0}, {1}"} + end{"{0}, {1}"} + } } measurementSystemNames{ UK{"UK"} diff --git a/source/data/locales/ceb_PH.txt b/source/data/locales/ceb_PH.txt index 82fcff8..f73157e 100644 --- a/source/data/locales/ceb_PH.txt +++ b/source/data/locales/ceb_PH.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ceb_PH{ - Version{"2.1.48.67"} + Version{"36"} } diff --git a/source/data/locales/cgg.txt b/source/data/locales/cgg.txt index 9ff16aa..d7de222 100644 --- a/source/data/locales/cgg.txt +++ b/source/data/locales/cgg.txt @@ -10,7 +10,7 @@ cgg{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/cgg_UG.txt b/source/data/locales/cgg_UG.txt index d35f61f..4558368 100644 --- a/source/data/locales/cgg_UG.txt +++ b/source/data/locales/cgg_UG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License cgg_UG{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/chr.txt b/source/data/locales/chr.txt index ccd5ca9..0be777d 100644 --- a/source/data/locales/chr.txt +++ b/source/data/locales/chr.txt @@ -16,13 +16,14 @@ chr{ " ꮼ ꮽ ꮾ ꮿ ᏸ ᏹ ᏺ ᏻ ᏼ]" } ExemplarCharactersIndex{"[Ꭰ Ꭶ Ꭽ Ꮃ Ꮉ Ꮎ Ꮖ Ꮜ Ꮣ Ꮬ Ꮳ Ꮹ Ꮿ]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -203,6 +204,7 @@ chr{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -214,8 +216,10 @@ chr{ other{"{0} ᏏᎢᎦ"} } } + minimumGroupingDigits{"1"} + native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -1258,6 +1262,11 @@ chr{ } month-narrow{ dn{"ᎧᎸ."} + relative{ + "-1"{"ᎧᎸ. ᏥᎨᏒ"} + "0"{"ᎯᎠ ᎧᎸ."} + "1"{"ᏔᎵᏁ ᎧᎸ."} + } relativeTime{ future{ one{"ᎾᎿ {0} ᎧᎸ."} @@ -1271,6 +1280,11 @@ chr{ } month-short{ dn{"ᎧᎸ."} + relative{ + "-1"{"ᎧᎸ. ᏥᎨᏒ"} + "0"{"ᎯᎠ ᎧᎸ."} + "1"{"ᎯᎠ ᎧᎸ."} + } relativeTime{ future{ one{"ᎾᎿ {0} ᎧᎸ."} @@ -1644,6 +1658,11 @@ chr{ } week-narrow{ dn{"ᏒᎾ."} + relative{ + "-1"{"ᏥᏛᎵᏱᎵᏒᎢ."} + "0"{"ᎯᎠ ᎠᎵᎵᏌ."} + "1"{"ᏐᏆᎴᏅᎲ."} + } relativePeriod{"Ꮎ ᏒᎾᏙᏓᏆᏍᏗ ᎾᏍᎩ {0}"} relativeTime{ future{ @@ -1658,6 +1677,11 @@ chr{ } week-short{ dn{"ᏒᎾ."} + relative{ + "-1"{"ᏥᏛᎵᏱᎵᏒᎢ."} + "0"{"ᎯᎠ ᎠᎵᎵᏌ."} + "1"{"ᏐᏆᎴᏅᎲ."} + } relativePeriod{"Ꮎ ᏒᎾᏙᏓᏆᏍᏗ ᎾᏍᎩ {0}"} relativeTime{ future{ @@ -1717,6 +1741,11 @@ chr{ } year-narrow{ dn{"ᎤᏕ."} + relative{ + "-1"{"ᎡᏘ. ᏥᎨᏒ"} + "0"{"ᎯᎠ ᏧᏕᏘᏴᏒᏘ."} + "1"{"ᎡᏘᏴᎢ."} + } relativeTime{ future{ one{"ᎾᎿ {0} ᎤᏕ."} @@ -1730,6 +1759,11 @@ chr{ } year-short{ dn{"ᎤᏕ."} + relative{ + "-1"{"ᎡᏘ. ᏥᎨᏒ"} + "0"{"ᎯᎠ ᏧᏕᏘᏴᏒᏘ."} + "1"{"ᎡᏘᏴᎢ."} + } relativeTime{ future{ one{"ᎾᎿ {0} ᎤᏕ."} @@ -1766,15 +1800,10 @@ chr{ } standard-narrow{ 2{"{0}, {1}"} - end{"{0}, & {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} & {1}"} end{"{0}, & {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } unit{ 2{"{0}, {1}"} @@ -1826,6 +1855,10 @@ chr{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/chr_US.txt b/source/data/locales/chr_US.txt index 0c3560c..107a76a 100644 --- a/source/data/locales/chr_US.txt +++ b/source/data/locales/chr_US.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License chr_US{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ckb.txt b/source/data/locales/ckb.txt index 0d37805..e019b00 100644 --- a/source/data/locales/ckb.txt +++ b/source/data/locales/ckb.txt @@ -6,7 +6,7 @@ ckb{ "ؤ إ ة ث ذ ص ض ط ظ ك ه ى ي]" } ExemplarCharacters{"[ئ ا ب پ ت ج چ ح خ د ر ز ڕ ژ س ش ع غ ف ڤ ق ک گ ل ڵ م ن ھ ە و ۆ ی ێ]"} - ExemplarCharactersNumbers{"[\u200E\u200F \\- , ٫ ٬ . % ٪ ‰ ؉ + 0٠ 1١ 2٢ 3٣ 4٤ 5٥ 6٦ 7٧ 8٨ 9٩]"} + ExemplarCharactersNumbers{"[\u200E\u200F \\- ‑ , ٫ ٬ . % ٪ ‰ ؉ + 0٠ 1١ 2٢ 3٣ 4٤ 5٥ 6٦ 7٧ 8٨ 9٩]"} NumberElements{ arab{ patterns{ @@ -57,7 +57,7 @@ ckb{ minimumGroupingDigits{"1"} native{"arab"} } - Version{"2.1.47.72"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ckb_IQ.txt b/source/data/locales/ckb_IQ.txt index 249f51e..2212ce0 100644 --- a/source/data/locales/ckb_IQ.txt +++ b/source/data/locales/ckb_IQ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ckb_IQ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ckb_IR.txt b/source/data/locales/ckb_IR.txt index 65d06ee..7f1f64e 100644 --- a/source/data/locales/ckb_IR.txt +++ b/source/data/locales/ckb_IR.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ckb_IR{ - Version{"2.1.48.22"} + Version{"36"} calendar{ default{"persian"} gregorian{ diff --git a/source/data/locales/cs.txt b/source/data/locales/cs.txt index f31d92c..1e4d0a9 100644 --- a/source/data/locales/cs.txt +++ b/source/data/locales/cs.txt @@ -15,11 +15,131 @@ cs{ "w x y ý z ž]" } ExemplarCharactersIndex{"[A B C Č D E F G H {CH} I J K L M N O P Q R Ř S Š T U V W X Y Z Ž]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] § @ * / \\&]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] § @ * / \\&]"} MoreInformation{"?"} NumberElements{ + arab{ + symbols{ + decimal{"٫"} + exponential{"اس"} + group{"٬"} + infinity{"∞"} + list{"؛"} + minusSign{"؜-"} + nan{"NaN"} + perMille{"؉"} + percentSign{"٪؜"} + plusSign{"؜+"} + superscriptingExponent{"×"} + timeSeparator{":"} + } + } + arabext{ + symbols{ + timeSeparator{"٫"} + } + } + bali{ + symbols{ + timeSeparator{":"} + } + } + beng{ + symbols{ + timeSeparator{":"} + } + } + brah{ + symbols{ + timeSeparator{":"} + } + } + cakm{ + symbols{ + timeSeparator{":"} + } + } + cham{ + symbols{ + timeSeparator{":"} + } + } default{"latn"} + deva{ + symbols{ + timeSeparator{":"} + } + } + fullwide{ + symbols{ + timeSeparator{":"} + } + } + gonm{ + symbols{ + timeSeparator{":"} + } + } + gujr{ + symbols{ + timeSeparator{":"} + } + } + guru{ + symbols{ + timeSeparator{":"} + } + } + hanidec{ + symbols{ + timeSeparator{":"} + } + } + java{ + symbols{ + timeSeparator{":"} + } + } + kali{ + symbols{ + exponential{"E"} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} + } + } + khmr{ + symbols{ + timeSeparator{":"} + } + } + knda{ + symbols{ + timeSeparator{":"} + } + } + lana{ + symbols{ + timeSeparator{":"} + } + } + lanatham{ + symbols{ + timeSeparator{":"} + } + } + laoo{ + symbols{ + timeSeparator{":"} + } + } latn{ miscPatterns{ approximately{"~{0}"} @@ -30,6 +150,7 @@ cs{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -264,13 +385,26 @@ cs{ exponential{"E"} group{" "} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } } + lepc{ + symbols{ + timeSeparator{":"} + } + } + limb{ + symbols{ + timeSeparator{":"} + } + } minimalPairs{ ordinal{ other{"Na {0}. křižovatce odbočte vpravo."} @@ -283,9 +417,109 @@ cs{ } } minimumGroupingDigits{"1"} + mlym{ + symbols{ + timeSeparator{":"} + } + } + mong{ + symbols{ + timeSeparator{":"} + } + } + mtei{ + symbols{ + timeSeparator{":"} + } + } + mymr{ + symbols{ + timeSeparator{":"} + } + } + mymrshan{ + symbols{ + timeSeparator{":"} + } + } native{"latn"} + nkoo{ + symbols{ + timeSeparator{":"} + } + } + olck{ + symbols{ + timeSeparator{":"} + } + } + orya{ + symbols{ + timeSeparator{":"} + } + } + osma{ + symbols{ + timeSeparator{":"} + } + } + saur{ + symbols{ + timeSeparator{":"} + } + } + shrd{ + symbols{ + timeSeparator{":"} + } + } + sora{ + symbols{ + timeSeparator{":"} + } + } + sund{ + symbols{ + timeSeparator{":"} + } + } + takr{ + symbols{ + timeSeparator{":"} + } + } + talu{ + symbols{ + timeSeparator{":"} + } + } + tamldec{ + symbols{ + timeSeparator{":"} + } + } + telu{ + symbols{ + timeSeparator{":"} + } + } + thai{ + symbols{ + timeSeparator{":"} + } + } + tibt{ + symbols{ + timeSeparator{":"} + } + } + vaii{ + symbols{ + timeSeparator{":"} + } + } } - Version{"2.1.48.44"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -304,6 +538,7 @@ cs{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"LLLL y G"} @@ -311,7 +546,9 @@ cs{ GyMMMMEd{"E d. MMMM y G"} GyMMMMd{"d. MMMM y G"} GyMMMd{"d. M. y G"} + M{"L"} MEd{"E d. M."} + MMM{"LLL"} MMMEd{"E d. M."} MMMMEd{"E d. MMMM"} MMMMd{"d. MMMM"} @@ -383,6 +620,25 @@ cs{ d{ d{"d.–d."} } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -437,6 +693,622 @@ cs{ "{1} {0}", } cyclicNameSets{ + dayParts{ + format{ + abbreviated{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + narrow{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + wide{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + } + } + days{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } + months{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } + years{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } zodiacs{ format{ abbreviated{ @@ -484,6 +1356,40 @@ cs{ } } } + monthNames{ + format{ + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + } + stand-alone{ + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + } + } } coptic{ DateTimePatterns{ @@ -502,6 +1408,7 @@ cs{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"LLLL y G"} @@ -509,7 +1416,9 @@ cs{ GyMMMMEd{"E d. MMMM y G"} GyMMMMd{"d. MMMM y G"} GyMMMd{"d. M. y G"} + M{"L"} MEd{"E d. M."} + MMM{"LLL"} MMMEd{"E d. M."} MMMMEd{"E d. MMMM"} MMMMd{"d. MMMM"} @@ -530,6 +1439,20 @@ cs{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } intervalFormats{ H{ H{"H–H"} @@ -570,6 +1493,25 @@ cs{ d{ d{"d.–d."} } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -701,10 +1643,626 @@ cs{ "nasie", } } - } - } - dangi{ - cyclicNameSets{ + } + } + dangi{ + cyclicNameSets{ + dayParts{ + format{ + abbreviated{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + narrow{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + wide{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + } + } + days{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } + months{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } + years{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } zodiacs{ format{ abbreviated{ @@ -754,6 +2312,34 @@ cs{ } monthNames{ format{ + abbreviated{ + "M01", + "M02", + "M03", + "M04", + "M05", + "M06", + "M07", + "M08", + "M09", + "M10", + "M11", + "M12", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "První měsíc", "Druhý měsíc", @@ -770,6 +2356,34 @@ cs{ } } stand-alone{ + abbreviated{ + "M01", + "M02", + "M03", + "M04", + "M05", + "M06", + "M07", + "M08", + "M09", + "M10", + "M11", + "M12", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "První měsíc", "Druhý měsíc", @@ -786,6 +2400,35 @@ cs{ } } } + monthPatterns{ + format{ + abbreviated{ + leap{"{0}bis"} + } + narrow{ + leap{"{0}b"} + } + wide{ + leap{"{0}bis"} + } + } + numeric{ + all{ + leap{"{0}bis"} + } + } + stand-alone{ + abbreviated{ + leap{"{0}bis"} + } + narrow{ + leap{"{0}b"} + } + wide{ + leap{"{0}bis"} + } + } + } } ethiopic{ DateTimePatterns{ @@ -804,6 +2447,7 @@ cs{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"LLLL y G"} @@ -811,7 +2455,9 @@ cs{ GyMMMMEd{"E d. MMMM y G"} GyMMMMd{"d. MMMM y G"} GyMMMd{"d. M. y G"} + M{"L"} MEd{"E d. M."} + MMM{"LLL"} MMMEd{"E d. M."} MMMMEd{"E d. MMMM"} MMMMd{"d. MMMM"} @@ -886,6 +2532,25 @@ cs{ d{ d{"d.–d."} } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -1171,6 +2836,24 @@ cs{ d{"d.–d."} } fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -1451,6 +3134,10 @@ cs{ "př. n. l.", "n. l.", } + abbreviated%variant{ + "př. n. l.", + "n. l.", + } narrow{ "př.n.l.", "n.l.", @@ -1459,6 +3146,10 @@ cs{ "před naším letopočtem", "našeho letopočtu", } + wide%variant{ + "před naším letopočtem", + "našeho letopočtu", + } } intervalFormats{ Bh{ @@ -1618,6 +3309,20 @@ cs{ "lis", "pro", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ledna", "února", @@ -1648,6 +3353,20 @@ cs{ "lis", "pro", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "leden", "únor", @@ -1724,6 +3443,7 @@ cs{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"LLLL y G"} @@ -1731,7 +3451,9 @@ cs{ GyMMMMEd{"E d. MMMM y G"} GyMMMMd{"d. MMMM y G"} GyMMMd{"d. M. y G"} + M{"L"} MEd{"E d. M."} + MMM{"LLL"} MMMEd{"E d. M."} MMMMEd{"E d. MMMM"} MMMMd{"d. MMMM"} @@ -1803,6 +3525,25 @@ cs{ d{ d{"d.–d."} } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -1959,6 +3700,7 @@ cs{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"LLLL y G"} @@ -1966,7 +3708,9 @@ cs{ GyMMMMEd{"E d. MMMM y G"} GyMMMMd{"d. MMMM y G"} GyMMMd{"d. M. y G"} + M{"L"} MEd{"E d. M."} + MMM{"LLL"} MMMEd{"E d. M."} MMMMEd{"E d. MMMM"} MMMMd{"d. MMMM"} @@ -2038,6 +3782,25 @@ cs{ d{ d{"d.–d."} } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -2182,6 +3945,7 @@ cs{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"LLLL y G"} @@ -2189,7 +3953,9 @@ cs{ GyMMMMEd{"E d. MMMM y G"} GyMMMMd{"d. MMMM y G"} GyMMMd{"d. M. y G"} + M{"L"} MEd{"E d. M."} + MMM{"LLL"} MMMEd{"E d. M."} MMMMEd{"E d. MMMM"} MMMMd{"d. MMMM"} @@ -2261,6 +4027,25 @@ cs{ d{ d{"d.–d."} } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -2405,6 +4190,7 @@ cs{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"LLLL y G"} @@ -2412,7 +4198,9 @@ cs{ GyMMMMEd{"E d. MMMM y G"} GyMMMMd{"d. MMMM y G"} GyMMMd{"d. M. y G"} + M{"L"} MEd{"E d. M."} + MMM{"LLL"} MMMEd{"E d. M."} MMMMEd{"E d. MMMM"} MMMMd{"d. MMMM"} @@ -3192,6 +4980,25 @@ cs{ d{ d{"d.–d."} } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -3246,6 +5053,7 @@ cs{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"LLLL y G"} @@ -3253,7 +5061,9 @@ cs{ GyMMMMEd{"E d. MMMM y G"} GyMMMMd{"d. MMMM y G"} GyMMMd{"d. M. y G"} + M{"L"} MEd{"E d. M."} + MMM{"LLL"} MMMEd{"E d. M."} MMMMEd{"E d. MMMM"} MMMMd{"d. MMMM"} @@ -3325,6 +5135,25 @@ cs{ d{ d{"d.–d."} } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -4649,8 +6478,6 @@ cs{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} a {1}"} @@ -4708,6 +6535,10 @@ cs{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/cs_CZ.txt b/source/data/locales/cs_CZ.txt index 7393dd1..8d0f38a 100644 --- a/source/data/locales/cs_CZ.txt +++ b/source/data/locales/cs_CZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License cs_CZ{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/cy.txt b/source/data/locales/cy.txt index e0f48ea..e532972 100644 --- a/source/data/locales/cy.txt +++ b/source/data/locales/cy.txt @@ -18,10 +18,10 @@ cy{ "[A B C {CH} D {DD} E F {FF} G {NG} H I J K L {LL} M N O P {PH} Q R {RH} S T " "{TH} U V W X Y Z]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ @@ -46,6 +46,7 @@ cy{ plusSign{"‎+‎"} } } + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -56,6 +57,7 @@ cy{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -358,12 +360,16 @@ cy{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -387,8 +393,9 @@ cy{ } } minimumGroupingDigits{"1"} + native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -450,53 +457,6 @@ cy{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH – HH"} } @@ -600,10 +560,6 @@ cy{ "yb", "yh", } - AmPmMarkersAbbr{ - "yb", - "yh", - } AmPmMarkersNarrow{ "b", "h", @@ -794,30 +750,28 @@ cy{ stand-alone{ abbreviated{ afternoon1{"prynhawn"} - am{"yb"} + am{"AM"} evening1{"yr hwyr"} midnight{"canol nos"} morning1{"bore"} noon{"canol dydd"} - pm{"yh"} + pm{"PM"} } narrow{ afternoon1{"prynhawn"} - am{"yb"} + am{"AM"} evening1{"min nos"} midnight{"canol nos"} morning1{"bore"} noon{"canol dydd"} - pm{"yh"} + pm{"PM"} } wide{ afternoon1{"y prynhawn"} - am{"yb"} evening1{"yr hwyr"} midnight{"canol nos"} morning1{"y bore"} noon{"canol dydd"} - pm{"yh"} } } } @@ -844,53 +798,6 @@ cy{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH – HH"} } @@ -994,7 +901,7 @@ cy{ "Ion", "Chwef", "Maw", - "Ebrill", + "Ebr", "Mai", "Meh", "Gorff", @@ -2405,36 +2312,4 @@ cy{ US{"UDA"} metric{"Metrig"} } - parse{ - date{ - lenient{ - "[\\--/]", - "[\\:∶︓﹕:]", - } - } - general{ - lenient{ - "[.․。︒﹒.。]", - "['ʼ՚᾽᾿’']", - "[%٪﹪%]", - "[؉‰]", - "[\$﹩$]", - "[£₤£]", - "[¥¥]", - "[₩₩]", - "[₨₹{Rp}{Rs}]", - } - } - number{ - lenient{ - "[\\-‐‒–⁻₋−➖﹣-]", - "[,،٫、︐︑﹐﹑,、]", - "[+⁺₊➕﬩﹢+]", - } - stricter{ - "[,٫︐﹐,]", - "[.․﹒.。]", - } - } - } } diff --git a/source/data/locales/cy_GB.txt b/source/data/locales/cy_GB.txt index 84a7d3c..ee7438f 100644 --- a/source/data/locales/cy_GB.txt +++ b/source/data/locales/cy_GB.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License cy_GB{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/da.txt b/source/data/locales/da.txt index f0939a8..af19d48 100644 --- a/source/data/locales/da.txt +++ b/source/data/locales/da.txt @@ -12,8 +12,8 @@ da{ } ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z æ ø å]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ′ ″]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ′ ″]"} MoreInformation{"?"} NumberElements{ default{"latn"} @@ -27,6 +27,7 @@ da{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -190,9 +191,11 @@ da{ group{"."} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{"."} } @@ -209,8 +212,21 @@ da{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ + buddhist{ + eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } + wide{ + "BE", + } + } + } coptic{ eras{ abbreviated{ @@ -343,13 +359,48 @@ da{ } intervalFormats{ Bh{ - B{"h B – h B"} - h{"h – h B"} + B{"h B–h B"} } Bhm{ - B{"h.mm B – h.mm B"} - h{"h.mm – h.mm B"} - m{"h.mm – h.mm B"} + B{"h.mm B–h.mm B"} + } + Gy{ + G{"y G–y G"} + y{"y–y G"} + } + GyM{ + G{"M/y GGGGG–M/y GGGGG"} + M{"M/y–M/y GGGGG"} + y{"M/y–M/y GGGGG"} + } + GyMEd{ + G{"E 'den' d/M/y GGGGG–E 'den' d/M/y GGGGG"} + M{"E 'den' d/M/y–E 'den' d/M/y GGGGG"} + d{"E 'den' d/M/y–E 'den' d/M/y GGGGG"} + y{"E 'den' d/M/y–E 'den' d/M/y GGGGG"} + } + GyMMM{ + G{"MMM y G–MMM y G"} + M{"MMM–MMM y G"} + y{"MMM y–MMM y G"} + } + GyMMMEd{ + G{"E 'den' d. MMM y G–E 'den' d. MMM y G"} + M{"E 'den' d. MMM–E 'den' d. MMM y G"} + d{"E 'den' d. MMM–E 'den' d. MMM y G"} + y{"E 'den' d. MMM y–E 'den' d. MMM y G"} + } + GyMMMd{ + G{"d. MMM y G–d. MMM y G"} + M{"d. MMM–d. MMM y G"} + d{"d.–d. MMM y G"} + y{"d. MMM y–d. MMM y G"} + } + GyMd{ + G{"d/M/y GGGGG–d/M/y GGGGG"} + M{"d/M/y–d/M/y GGGGG"} + d{"d/M/y–d/M/y GGGGG"} + y{"d/M/y–d/M/y GGGGG"} } H{ H{"HH–HH"} @@ -719,42 +770,42 @@ da{ m{"h.mm–h.mm B"} } Gy{ - G{"G y–G y"} - y{"G y–y"} + G{"y G – y G"} + y{"y–y G"} } GyM{ - G{"GGGGG MM.y–GGGGG MM.y"} - M{"GGGGG MM.y–MM.y"} - y{"GGGGG MM.y–MM.y"} + G{"M/y GGGG–M/y GGGG"} + M{"M/y–M/y GGGGG"} + y{"M/y–M/y GGGGG"} } GyMEd{ - G{"GGGGG E dd.MM.y–GGGGG E dd.MM.y"} - M{"GGGGG E dd.MM.y–E dd.MM.y"} - d{"GGGGG E dd.MM.y–E dd.MM.y"} - y{"GGGGG E dd.MM.y–E dd.MM.y"} + G{"E, d/M/y GGGGG–E, d/M/y GGGGG"} + M{"E dd.MM.y–E dd.MM.y GGGGG"} + d{"E dd. MM. y–E dd. MM. y GGGGG"} + y{"E dd.MM.y–E dd.MM.y GGGGG"} } GyMMM{ - G{"G MMM y–G MMM y"} - M{"G MMM y–MMM"} - y{"G MMM y–MMM y"} + G{"MMM y G–MMM y G"} + M{"MMM–MMM y G"} + y{"MMM y–MMM y G"} } GyMMMEd{ - G{"G E d. MMM y–G E d. MMM y"} - M{"G E d. MMM y–E d. MMM"} - d{"G E d. MMM y–E d. MMM"} - y{"G E d. MMM y–E d. MMM y"} + G{"E d. MMM y G–E d. MMM y G"} + M{"E d. MMM–E d. MMM y G"} + d{"E d. MMM y–E d. MMM G"} + y{"E d. MMM y–E d. MMM y G"} } GyMMMd{ - G{"G d. MMM y–G d. MMM y"} - M{"G d. MMM y–d. MMM"} - d{"G d.–d. MMM y"} - y{"G d. MMM y–d. MMM y"} + G{"d. MMM y G–d. MMM y G"} + M{"d. MMM y–d. MMM G"} + d{"d.–d. MMM y G"} + y{"d. MMM y–d. MMM y G"} } GyMd{ - G{"GGGGG dd.MM.y–GGGGG dd.MM.y"} - M{"GGGGG dd.MM.y–dd.MM.y"} - d{"GGGGG dd.MM.y–dd.MM.y"} - y{"GGGGG dd.MM.y–dd.MM.y"} + G{"d/M/y GGGGG–d/M/y GGGGG"} + M{"dd.MM.y–dd.MM.y GGGGG"} + d{"d/M/y–d/M/y GGGGG"} + y{"dd.MM.y–dd.MM.y GGGGG"} } H{ H{"HH–HH"} @@ -984,6 +1035,17 @@ da{ } } hebrew{ + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } monthNames{ format{ wide{ @@ -1006,6 +1068,17 @@ da{ } } indian{ + eras{ + abbreviated{ + "Saka", + } + narrow{ + "Saka", + } + wide{ + "Saka", + } + } monthNames{ format{ wide{ @@ -1026,6 +1099,17 @@ da{ } } islamic{ + eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } + wide{ + "AH", + } + } monthNames{ format{ wide{ @@ -1063,6 +1147,17 @@ da{ } } persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } monthNames{ format{ wide{ @@ -2037,13 +2132,15 @@ da{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard{ - 2{"{0} og {1}"} - end{"{0} og {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} + or-narrow{ + 2{"{0} el. {1}"} + end{"{0} el. {1}"} + } + or-short{ + 2{"{0} el. {1}"} + end{"{0} el. {1}"} } - standard-narrow{ + standard{ 2{"{0} og {1}"} end{"{0} og {1}"} middle{"{0}, {1}"} @@ -2105,6 +2202,10 @@ da{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/da_DK.txt b/source/data/locales/da_DK.txt index 332fcac..6a27da8 100644 --- a/source/data/locales/da_DK.txt +++ b/source/data/locales/da_DK.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License da_DK{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/da_GL.txt b/source/data/locales/da_GL.txt index 09ded90..199dd1f 100644 --- a/source/data/locales/da_GL.txt +++ b/source/data/locales/da_GL.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License da_GL{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/dav.txt b/source/data/locales/dav.txt index 1f7d352..40d2a02 100644 --- a/source/data/locales/dav.txt +++ b/source/data/locales/dav.txt @@ -12,7 +12,7 @@ dav{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/dav_KE.txt b/source/data/locales/dav_KE.txt index a33c880..cc68fc1 100644 --- a/source/data/locales/dav_KE.txt +++ b/source/data/locales/dav_KE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dav_KE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/de.txt b/source/data/locales/de.txt index 678f13c..8aed05f 100644 --- a/source/data/locales/de.txt +++ b/source/data/locales/de.txt @@ -15,10 +15,10 @@ de{ } ExemplarCharacters{"[a ä b c d e f g h i j k l m n o ö p q r s ß t u ü v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * / " - "\\& #]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * " + "/ \\& #]" } MoreInformation{"?"} NumberElements{ @@ -33,6 +33,7 @@ de{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -196,9 +197,11 @@ de{ group{"."} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"·"} timeSeparator{":"} } @@ -215,10 +218,16 @@ de{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ buddhist{ eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } wide{ "B.E.", } @@ -295,6 +304,20 @@ de{ } } coptic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -363,6 +386,20 @@ de{ } } ethiopic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -490,15 +527,6 @@ de{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } H{ H{"HH–HH 'Uhr'"} } @@ -598,9 +626,13 @@ de{ } } gregorian{ - AmPmMarkersNarrow{ - "a", - "p", + AmPmMarkers{ + "AM", + "PM", + } + AmPmMarkersAbbr{ + "AM", + "PM", } DateTimePatterns{ "HH:mm:ss zzzz", @@ -802,13 +834,11 @@ de{ narrow{ afternoon1{"Mittag"} afternoon2{"Nachm."} - am{"a"} evening1{"Abend"} midnight{"Mitternacht"} morning1{"Morgen"} morning2{"Vorm."} night1{"Nacht"} - pm{"p"} } wide{ afternoon1{"Mittag"} @@ -1128,8 +1158,35 @@ de{ } } hebrew{ + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } monthNames{ format{ + abbreviated{ + "Tischri", + "Cheschwan", + "Kislew", + "Tevet", + "Schevat", + "Adar I", + "Adar", + "Nisan", + "Ijjar", + "Siwan", + "Tammus", + "Aw", + "Elul", + "Adar II", + } wide{ "Tischri", "Cheschwan", @@ -1148,6 +1205,22 @@ de{ } } stand-alone{ + abbreviated{ + "Tischri", + "Cheschwan", + "Kislew", + "Tevet", + "Schevat", + "Adar I", + "Adar", + "Nisan", + "Ijjar", + "Siwan", + "Tammus", + "Aw", + "Elul", + "Adar II", + } wide{ "Tischri", "Cheschwan", @@ -1168,6 +1241,17 @@ de{ } } indian{ + eras{ + abbreviated{ + "Saka", + } + narrow{ + "Saka", + } + wide{ + "Saka", + } + } monthNames{ format{ abbreviated{ @@ -1232,8 +1316,33 @@ de{ } } islamic{ + eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } + wide{ + "AH", + } + } monthNames{ format{ + abbreviated{ + "Muh.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dhuʻl-Q.", + "Dhuʻl-H.", + } wide{ "Muharram", "Safar", @@ -1250,6 +1359,20 @@ de{ } } stand-alone{ + abbreviated{ + "Muh.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dhuʻl-Q.", + "Dhuʻl-H.", + } wide{ "Muharram", "Safar", @@ -1283,8 +1406,260 @@ de{ "{1}, {0}", "{1}, {0}", } + eras{ + abbreviated{ + "Taika (645–650)", + "Hakuchi (650–671)", + "Hakuhō (672–686)", + "Shuchō (686–701)", + "Taihō (701–704)", + "Keiun (704–708)", + "Wadō (708–715)", + "Reiki (715–717)", + "Yōrō (717–724)", + "Jinki (724–729)", + "Tenpyō (729–749)", + "Tenpyō-kampō (749–749)", + "Tenpyō-shōhō (749–757)", + "Tenpyō-hōji (757–765)", + "Tenpyō-jingo (765–767)", + "Jingo-keiun (767–770)", + "Hōki (770–780)", + "Ten-ō (781–782)", + "Enryaku (782–806)", + "Daidō (806–810)", + "Kōnin (810–824)", + "Tenchō (824–834)", + "Jōwa (834–848)", + "Kajō (848–851)", + "Ninju (851–854)", + "Saikō (854–857)", + "Ten-an (857–859)", + "Jōgan (859–877)", + "Gangyō (877–885)", + "Ninna (885–889)", + "Kanpyō (889–898)", + "Shōtai (898–901)", + "Engi (901–923)", + "Enchō (923–931)", + "Jōhei (931–938)", + "Tengyō (938–947)", + "Tenryaku (947–957)", + "Tentoku (957–961)", + "Ōwa (961–964)", + "Kōhō (964–968)", + "Anna (968–970)", + "Tenroku (970–973)", + "Ten’en (973–976)", + "Jōgen (976–978)", + "Tengen (978–983)", + "Eikan (983–985)", + "Kanna (985–987)", + "Eien (987–989)", + "Eiso (989–990)", + "Shōryaku (990–995)", + "Chōtoku (995–999)", + "Chōhō (999–1004)", + "Kankō (1004–1012)", + "Chōwa (1012–1017)", + "Kannin (1017–1021)", + "Jian (1021–1024)", + "Manju (1024–1028)", + "Chōgen (1028–1037)", + "Chōryaku (1037–1040)", + "Chōkyū (1040–1044)", + "Kantoku (1044–1046)", + "Eishō (1046–1053)", + "Tengi (1053–1058)", + "Kōhei (1058–1065)", + "Jiryaku (1065–1069)", + "Enkyū (1069–1074)", + "Shōho (1074–1077)", + "Shōryaku (1077–1081)", + "Eihō (1081–1084)", + "Ōtoku (1084–1087)", + "Kanji (1087–1094)", + "Kahō (1094–1096)", + "Eichō (1096–1097)", + "Jōtoku (1097–1099)", + "Kōwa (1099–1104)", + "Chōji (1104–1106)", + "Kashō (1106–1108)", + "Tennin (1108–1110)", + "Ten-ei (1110–1113)", + "Eikyū (1113–1118)", + "Gen’ei (1118–1120)", + "Hōan (1120–1124)", + "Tenji (1124–1126)", + "Daiji (1126–1131)", + "Tenshō (1131–1132)", + "Chōshō (1132–1135)", + "Hōen (1135–1141)", + "Eiji (1141–1142)", + "Kōji (1142–1144)", + "Ten’yō (1144–1145)", + "Kyūan (1145–1151)", + "Ninpei (1151–1154)", + "Kyūju (1154–1156)", + "Hōgen (1156–1159)", + "Heiji (1159–1160)", + "Eiryaku (1160–1161)", + "Ōho (1161–1163)", + "Chōkan (1163–1165)", + "Eiman (1165–1166)", + "Nin’an (1166–1169)", + "Kaō (1169–1171)", + "Shōan (1171–1175)", + "Angen (1175–1177)", + "Jishō (1177–1181)", + "Yōwa (1181–1182)", + "Juei (1182–1184)", + "Genryaku (1184–1185)", + "Bunji (1185–1190)", + "Kenkyū (1190–1199)", + "Shōji (1199–1201)", + "Kennin (1201–1204)", + "Genkyū (1204–1206)", + "Ken’ei (1206–1207)", + "Jōgen (1207–1211)", + "Kenryaku (1211–1213)", + "Kenpō (1213–1219)", + "Jōkyū (1219–1222)", + "Jōō (1222–1224)", + "Gennin (1224–1225)", + "Karoku (1225–1227)", + "Antei (1227–1229)", + "Kanki (1229–1232)", + "Jōei (1232–1233)", + "Tenpuku (1233–1234)", + "Bunryaku (1234–1235)", + "Katei (1235–1238)", + "Ryakunin (1238–1239)", + "En’ō (1239–1240)", + "Ninji (1240–1243)", + "Kangen (1243–1247)", + "Hōji (1247–1249)", + "Kenchō (1249–1256)", + "Kōgen (1256–1257)", + "Shōka (1257–1259)", + "Shōgen (1259–1260)", + "Bun’ō (1260–1261)", + "Kōchō (1261–1264)", + "Bun’ei (1264–1275)", + "Kenji (1275–1278)", + "Kōan (1278–1288)", + "Shōō (1288–1293)", + "Einin (1293–1299)", + "Shōan (1299–1302)", + "Kengen (1302–1303)", + "Kagen (1303–1306)", + "Tokuji (1306–1308)", + "Enkyō (1308–1311)", + "Ōchō (1311–1312)", + "Shōwa (1312–1317)", + "Bunpō (1317–1319)", + "Genō (1319–1321)", + "Genkō (1321–1324)", + "Shōchū (1324–1326)", + "Karyaku (1326–1329)", + "Gentoku (1329–1331)", + "Genkō (1331–1334)", + "Kenmu (1334–1336)", + "Engen (1336–1340)", + "Kōkoku (1340–1346)", + "Shōhei (1346–1370)", + "Kentoku (1370–1372)", + "Bunchū (1372–1375)", + "Tenju (1375–1379)", + "Kōryaku (1379–1381)", + "Kōwa (1381–1384)", + "Genchū (1384–1392)", + "Meitoku (1384–1387)", + "Kakei (1387–1389)", + "Kōō (1389–1390)", + "Meitoku (1390–1394)", + "Ōei (1394–1428)", + "Shōchō (1428–1429)", + "Eikyō (1429–1441)", + "Kakitsu (1441–1444)", + "Bun’an (1444–1449)", + "Hōtoku (1449–1452)", + "Kyōtoku (1452–1455)", + "Kōshō (1455–1457)", + "Chōroku (1457–1460)", + "Kanshō (1460–1466)", + "Bunshō (1466–1467)", + "Ōnin (1467–1469)", + "Bunmei (1469–1487)", + "Chōkyō (1487–1489)", + "Entoku (1489–1492)", + "Meiō (1492–1501)", + "Bunki (1501–1504)", + "Eishō (1504–1521)", + "Taiei (1521–1528)", + "Kyōroku (1528–1532)", + "Tenbun (1532–1555)", + "Kōji (1555–1558)", + "Eiroku (1558–1570)", + "Genki (1570–1573)", + "Tenshō (1573–1592)", + "Bunroku (1592–1596)", + "Keichō (1596–1615)", + "Genna (1615–1624)", + "Kan’ei (1624–1644)", + "Shōho (1644–1648)", + "Keian (1648–1652)", + "Jōō (1652–1655)", + "Meireki (1655–1658)", + "Manji (1658–1661)", + "Kanbun (1661–1673)", + "Enpō (1673–1681)", + "Tenna (1681–1684)", + "Jōkyō (1684–1688)", + "Genroku (1688–1704)", + "Hōei (1704–1711)", + "Shōtoku (1711–1716)", + "Kyōhō (1716–1736)", + "Genbun (1736–1741)", + "Kanpō (1741–1744)", + "Enkyō (1744–1748)", + "Kan’en (1748–1751)", + "Hōreki (1751–1764)", + "Meiwa (1764–1772)", + "An’ei (1772–1781)", + "Tenmei (1781–1789)", + "Kansei (1789–1801)", + "Kyōwa (1801–1804)", + "Bunka (1804–1818)", + "Bunsei (1818–1830)", + "Tenpō (1830–1844)", + "Kōka (1844–1848)", + "Kaei (1848–1854)", + "Ansei (1854–1860)", + "Man’en (1860–1861)", + "Bunkyū (1861–1864)", + "Genji (1864–1865)", + "Keiō (1865–1868)", + "Meiji", + "Taishō", + "Shōwa", + "Heisei", + "Reiwa", + } + } } persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } monthNames{ format{ abbreviated{ @@ -2295,12 +2670,6 @@ de{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} und {1}"} - end{"{0} und {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} und {1}"} end{"{0} und {1}"} @@ -2341,7 +2710,7 @@ de{ general{ lenient{ "[.․。︒﹒.。]", - "['ʼ՚᾽᾿’']", + "['ʼ՚ߴ᾽᾿’']", "[%٪﹪%]", "[؉‰]", "[\$﹩$$]", @@ -2357,6 +2726,10 @@ de{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/de_AT.txt b/source/data/locales/de_AT.txt index 96dee78..7f2d79a 100644 --- a/source/data/locales/de_AT.txt +++ b/source/data/locales/de_AT.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License de_AT{ ExemplarCharactersIndex{"[A Ä B C D E F G H I J K L M N O Ö P Q R S T U Ü V W X Y Z]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -14,7 +14,7 @@ de_AT{ } } } - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ dayPeriod{ diff --git a/source/data/locales/de_BE.txt b/source/data/locales/de_BE.txt index b1b8702..6c4c28e 100644 --- a/source/data/locales/de_BE.txt +++ b/source/data/locales/de_BE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License de_BE{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/de_CH.txt b/source/data/locales/de_CH.txt index 9a0d432..e5f850c 100644 --- a/source/data/locales/de_CH.txt +++ b/source/data/locales/de_CH.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License de_CH{ ExemplarCharacters{"[a ä b c d e f g h i j k l m n o ö p q r s t u ü v w x y z]"} - ExemplarCharactersNumbers{"[\\- . ’ % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ . ’ % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -15,7 +15,7 @@ de_CH{ } } } - Version{"2.1.47.86"} + Version{"36"} calendar{ gregorian{ dayNames{ @@ -40,12 +40,6 @@ de_CH{ era-narrow{ dn{"Epoche"} } - quarter{ - relative{ - "-1"{"letztes Quartal"} - "0"{"dieses Quartal"} - } - } weekOfMonth{ dn{"Woche im Monat"} } diff --git a/source/data/locales/de_DE.txt b/source/data/locales/de_DE.txt index 9ee40a0..4c15e35 100644 --- a/source/data/locales/de_DE.txt +++ b/source/data/locales/de_DE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License de_DE{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/de_IT.txt b/source/data/locales/de_IT.txt index 6a5b5ff..228cb36 100644 --- a/source/data/locales/de_IT.txt +++ b/source/data/locales/de_IT.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License de_IT{ - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ monthNames{ diff --git a/source/data/locales/de_LI.txt b/source/data/locales/de_LI.txt index b360adb..ebe6ef8 100644 --- a/source/data/locales/de_LI.txt +++ b/source/data/locales/de_LI.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License de_LI{ - ExemplarCharactersNumbers{"[\\- . ’ % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ . ’ % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -14,7 +14,7 @@ de_LI{ } } } - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ dayPeriod{ diff --git a/source/data/locales/de_LU.txt b/source/data/locales/de_LU.txt index aa03ff0..a5c133f 100644 --- a/source/data/locales/de_LU.txt +++ b/source/data/locales/de_LU.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License de_LU{ - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ AmPmMarkersNarrow{ diff --git a/source/data/locales/dje.txt b/source/data/locales/dje.txt index f92f996..dcaec2d 100644 --- a/source/data/locales/dje.txt +++ b/source/data/locales/dje.txt @@ -4,7 +4,7 @@ dje{ AuxExemplarCharacters{"[v]"} ExemplarCharacters{"[a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N Ɲ Ŋ O P Q R S T U W X Y Z]"} - ExemplarCharactersNumbers{"[  \\- . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -18,7 +18,7 @@ dje{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/dje_NE.txt b/source/data/locales/dje_NE.txt index 459caa0..1363488 100644 --- a/source/data/locales/dje_NE.txt +++ b/source/data/locales/dje_NE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dje_NE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/dsb.txt b/source/data/locales/dsb.txt index ffe4182..affc4ed 100644 --- a/source/data/locales/dsb.txt +++ b/source/data/locales/dsb.txt @@ -10,10 +10,10 @@ dsb{ "ž ź]" } ExemplarCharactersIndex{"[A B C Č Ć D E F G H {Ch} I J K Ł L M N O P Q R S Š Ś T U V W X Y Z Ž Ź]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * " - "/ \\& #]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ " + "* / \\& #]" } NumberElements{ latn{ @@ -196,7 +196,7 @@ dsb{ } minimumGroupingDigits{"1"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/dsb_DE.txt b/source/data/locales/dsb_DE.txt index 4f18e1a..ede3984 100644 --- a/source/data/locales/dsb_DE.txt +++ b/source/data/locales/dsb_DE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dsb_DE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/dua.txt b/source/data/locales/dua.txt index de53d44..1e0eb5b 100644 --- a/source/data/locales/dua.txt +++ b/source/data/locales/dua.txt @@ -7,7 +7,7 @@ dua{ "s t u ú ū w y]" } ExemplarCharactersIndex{"[A B Ɓ C D Ɗ E Ɛ F G I J K L M N Ŋ O Ɔ P S T U W Y]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -21,7 +21,7 @@ dua{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/dua_CM.txt b/source/data/locales/dua_CM.txt index 826a1a8..974efe3 100644 --- a/source/data/locales/dua_CM.txt +++ b/source/data/locales/dua_CM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dua_CM{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/dyo.txt b/source/data/locales/dyo.txt index efdcb36..f3f08d6 100644 --- a/source/data/locales/dyo.txt +++ b/source/data/locales/dyo.txt @@ -4,7 +4,7 @@ dyo{ AuxExemplarCharacters{"[z]"} ExemplarCharacters{"[a á b c d e é f g h i í j k l m n ñ ŋ o ó p q r s t u ú v w x y]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N Ñ Ŋ O P Q R S T U V W X Y]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -18,7 +18,7 @@ dyo{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/dyo_SN.txt b/source/data/locales/dyo_SN.txt index 2d3fc83..2843a22 100644 --- a/source/data/locales/dyo_SN.txt +++ b/source/data/locales/dyo_SN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dyo_SN{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/dz.txt b/source/data/locales/dz.txt index 1da1265..5dfa7ef 100644 --- a/source/data/locales/dz.txt +++ b/source/data/locales/dz.txt @@ -17,10 +17,10 @@ dz{ "\u0FB1 \u0FB2 \u0FB3 \u0FB5 \u0FB6 \u0FB7]" } ExemplarCharactersIndex{"[ཀ ཁ ག ང ཅ ཆ ཇ ཉ ཏ ཐ ད ན པ ཕ བ མ ཙ ཚ ཛ ཝ ཞ ཟ འ ཡ ར ལ ཤ ས ཧ ཨ]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0༠ 1༡ 2༢ 3༣ 4༤ 5༥ 6༦ 7༧ 8༨ 9༩]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0༠ 1༡ 2༢ 3༣ 4༤ 5༥ 6༦ 7༧ 8༨ 9༩]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] ༼ ༽ § @ * / \\& # † " - "‡ ༄ ༅ ༆ ༈ ༉ ༊ ࿐ ࿑ ༒ ࿒ ࿓ ࿔ ༶ ྾ ྿ ༌ ། ༎ ༏ ༐ ༑ ༔ ༴]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] ༼ ༽ § @ * / \\& # " + "† ‡ ༄ ༅ ༆ ༈ ༉ ༊ ࿐ ࿑ ༒ ࿒ ࿓ ࿔ ༶ ྾ ྿ ༌ ། ༎ ༏ ༐ ༑ ༔ ༴]" } MoreInformation{"?"} NumberElements{ @@ -106,7 +106,7 @@ dz{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/dz_BT.txt b/source/data/locales/dz_BT.txt index c14fd80..a35c68c 100644 --- a/source/data/locales/dz_BT.txt +++ b/source/data/locales/dz_BT.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dz_BT{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ebu.txt b/source/data/locales/ebu.txt index 562149e..3d66fdb 100644 --- a/source/data/locales/ebu.txt +++ b/source/data/locales/ebu.txt @@ -11,7 +11,7 @@ ebu{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ebu_KE.txt b/source/data/locales/ebu_KE.txt index 901eac0..0cd49a6 100644 --- a/source/data/locales/ebu_KE.txt +++ b/source/data/locales/ebu_KE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ebu_KE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ee.txt b/source/data/locales/ee.txt index 1cd2ebf..a4c7a54 100644 --- a/source/data/locales/ee.txt +++ b/source/data/locales/ee.txt @@ -7,10 +7,10 @@ ee{ " l m n ŋ o ó ò õ ɔ {ɔ\u0301} {ɔ\u0300} {ɔ\u0303} p r s t u ú ù ũ v ʋ w y z]" } ExemplarCharactersIndex{"[A B D Ɖ E Ɛ F Ƒ G Ɣ H X I K L M N Ŋ O Ɔ P R S T U V Ʋ W Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\} § @ * / \\& " - "# † ‡ ′ ″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\} § @ * / " + "\\& # † ‡ ′ ″]" } MoreInformation{"..."} NumberElements{ @@ -200,7 +200,7 @@ ee{ } minimumGroupingDigits{"3"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ee_GH.txt b/source/data/locales/ee_GH.txt index ad13e06..398faba 100644 --- a/source/data/locales/ee_GH.txt +++ b/source/data/locales/ee_GH.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ee_GH{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ee_TG.txt b/source/data/locales/ee_TG.txt index 27bffaf..1d9af76 100644 --- a/source/data/locales/ee_TG.txt +++ b/source/data/locales/ee_TG.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ee_TG{ - Version{"2.1.47.82"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/el.txt b/source/data/locales/el.txt index 04b5188..7c0d747 100644 --- a/source/data/locales/el.txt +++ b/source/data/locales/el.txt @@ -15,10 +15,11 @@ el{ } ExemplarCharacters{"[α ά β γ δ ε έ ζ η ή θ ι ί ϊ ΐ κ λ μ ν ξ ο ό π ρ σ ς τ υ ύ ϋ ΰ φ χ ψ ω ώ]"} ExemplarCharactersIndex{"[Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! . … \u0022 « » ( ) \\[ \\] § @ * / \\\\ \\&]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! . … \u0022 « » ( ) \\[ \\] § @ * / \\\\ \\&]"} MoreInformation{";"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -29,6 +30,7 @@ el{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -192,9 +194,11 @@ el{ group{"."} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -209,9 +213,10 @@ el{ } } minimumGroupingDigits{"1"} + native{"latn"} traditional{"grek"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -230,17 +235,21 @@ el{ "{1}, {0}", } availableFormats{ + E{"ccc"} Ed{"E d"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E, d MMM y G"} GyMMMd{"d MMM y G"} + M{"L"} MEd{"E, d/M"} + MMM{"LLL"} MMMEd{"E, d MMM"} MMMMEd{"E, d MMMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d/M"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M/y GGGGG"} @@ -250,6 +259,8 @@ el{ yyyyMMMM{"MMMM y G"} yyyyMMMd{"d MMM y G"} yyyyMd{"d/M/y GGGGG"} + yyyyQQQ{"G y QQQ"} + yyyyQQQQ{"G y QQQQ"} } eras{ abbreviated{ @@ -263,6 +274,20 @@ el{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -285,7 +310,28 @@ el{ M{"dd/MM – dd/MM"} d{"dd/MM – dd/MM"} } + d{ + d{"d–d"} + } fallback{"{0} - {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -324,6 +370,20 @@ el{ } } coptic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -391,6 +451,88 @@ el{ } } } + ethiopic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } + monthNames{ + format{ + abbreviated{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } + wide{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } + } + stand-alone{ + abbreviated{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } + wide{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } + } + } + } generic{ DateTimePatterns{ "h:mm:ss a zzzz", @@ -773,10 +915,10 @@ el{ night1{"βράδυ"} } wide{ - afternoon1{"μεσημέρι"} - evening1{"απόγευμα"} - morning1{"πρωί"} - night1{"βράδυ"} + afternoon1{"το μεσημέρι"} + evening1{"το απόγευμα"} + morning1{"το πρωί"} + night1{"το βράδυ"} } } stand-alone{ @@ -1100,6 +1242,17 @@ el{ } } hebrew{ + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } monthNames{ format{ abbreviated{ @@ -1183,6 +1336,68 @@ el{ "Σάκα", } } + monthNames{ + format{ + abbreviated{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + wide{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + } + stand-alone{ + abbreviated{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + wide{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + } + } } islamic{ eras{ @@ -1196,6 +1411,68 @@ el{ "Ε.Ε.", } } + monthNames{ + format{ + abbreviated{ + "Muh.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dhuʻl-Q.", + "Dhuʻl-H.", + } + wide{ + "Muharram", + "Safar", + "Rabiʻ I", + "Rabiʻ II", + "Jumada I", + "Jumada II", + "Rajab", + "Shaʻban", + "Ramadan", + "Shawwal", + "Dhuʻl-Qiʻdah", + "Dhuʻl-Hijjah", + } + } + stand-alone{ + abbreviated{ + "Muh.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dhuʻl-Q.", + "Dhuʻl-H.", + } + wide{ + "Muharram", + "Safar", + "Rabiʻ I", + "Rabiʻ II", + "Jumada I", + "Jumada II", + "Rajab", + "Shaʻban", + "Ramadan", + "Shawwal", + "Dhuʻl-Qiʻdah", + "Dhuʻl-Hijjah", + } + } + } } japanese{ DateTimePatterns{ @@ -1472,6 +1749,81 @@ el{ } } } + persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } + monthNames{ + format{ + abbreviated{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + wide{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + } + stand-alone{ + abbreviated{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + wide{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + } + } + } roc{ eras{ abbreviated{ @@ -1879,6 +2231,11 @@ el{ } month-narrow{ dn{"μήν."} + relative{ + "-1"{"προηγ. μήνας"} + "0"{"τρέχ. μήνας"} + "1"{"επόμ. μήνας"} + } relativeTime{ future{ one{"σε {0} μ."} @@ -2275,6 +2632,11 @@ el{ } week-narrow{ dn{"εβδ."} + relative{ + "-1"{"προηγ. εβδ."} + "0"{"τρέχ. εβδ."} + "1"{"επόμ. εβδ."} + } relativePeriod{"την εβδ. {0}"} relativeTime{ future{ @@ -2289,6 +2651,11 @@ el{ } week-short{ dn{"εβδ."} + relative{ + "-1"{"προηγ. εβδομάδα"} + "0"{"τρέχ. εβδομάδα"} + "1"{"επόμ. εβδομάδα"} + } relativePeriod{"την εβδ. {0}"} relativeTime{ future{ @@ -2408,8 +2775,6 @@ el{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} και {1}"} @@ -2467,6 +2832,10 @@ el{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/el_CY.txt b/source/data/locales/el_CY.txt index 3914746..07b90c1 100644 --- a/source/data/locales/el_CY.txt +++ b/source/data/locales/el_CY.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License el_CY{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/el_GR.txt b/source/data/locales/el_GR.txt index 7371f49..bbdc60d 100644 --- a/source/data/locales/el_GR.txt +++ b/source/data/locales/el_GR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License el_GR{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en.txt b/source/data/locales/en.txt index cd11be2..889385b 100644 --- a/source/data/locales/en.txt +++ b/source/data/locales/en.txt @@ -7,10 +7,10 @@ en{ } ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } NumberElements{ latn{ @@ -205,7 +205,7 @@ en{ } } } - Version{"2.1.48.65"} + Version{"36"} calendar{ buddhist{ eras{ diff --git a/source/data/locales/en_001.txt b/source/data/locales/en_001.txt index 40462e6..501cbf8 100644 --- a/source/data/locales/en_001.txt +++ b/source/data/locales/en_001.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_001{ - Version{"2.1.47.69"} + Version{"36"} calendar{ chinese{ DateTimePatterns{ @@ -109,7 +109,7 @@ en_001{ GyMMMEd{"E, d MMM y G"} GyMMMd{"d MMM y G"} M{"LL"} - MEd{"E, d/M"} + MEd{"E, dd/MM"} MMMEd{"E, d MMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} @@ -121,6 +121,36 @@ en_001{ yyyyMd{"dd/MM/y GGGGG"} } intervalFormats{ + Gy{ + y{"y–y G"} + } + GyMEd{ + G{"E, dd/MM/y GGGGG – E, dd/MM/y GGGGG"} + M{"E, dd/MM/y – E, dd/MM/y GGGGG"} + d{"E, dd/MM/y – E, dd/MM/y GGGGG"} + y{"E, dd/MM/y – E, dd/MM/y GGGGG"} + } + GyMMMEd{ + G{"E, d MMM y G – E, d MMM y G"} + M{"E, d MMM – E, d MMM y G"} + d{"E, d MMM – E, d MMM y G"} + y{"E, d MMM y – E, d MMM y G"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d–d MMM y G"} + y{"d MMM y – d MMM y G"} + } + GyMd{ + G{"dd/MM/y GGGGG – dd/MM/y GGGGG"} + M{"dd/MM/y – dd/MM/y GGGGG"} + d{"dd/MM/y – dd/MM/y GGGGG"} + y{"dd/MM/y – dd/MM/y GGGGG"} + } + M{ + M{"M–M"} + } MEd{ M{"E dd/MM – E dd/MM"} d{"E dd/MM – E dd/MM"} @@ -131,12 +161,18 @@ en_001{ } MMMd{ M{"d MMM – d MMM"} - d{"d – d MMM"} + d{"d–d MMM"} } Md{ M{"dd/MM – dd/MM"} d{"dd/MM – dd/MM"} } + d{ + d{"d–d"} + } + y{ + y{"y–y G"} + } yM{ M{"MM/y – MM/y GGGGG"} y{"MM/y – MM/y GGGGG"} @@ -153,7 +189,7 @@ en_001{ } yMMMd{ M{"d MMM – d MMM y G"} - d{"d – d MMM y G"} + d{"d–d MMM y G"} y{"d MMM y – d MMM y G"} } yMd{ @@ -206,17 +242,6 @@ en_001{ yMd{"dd/MM/y"} } dayPeriod{ - format{ - abbreviated{ - noon{"noon"} - } - narrow{ - noon{"n"} - } - wide{ - noon{"noon"} - } - } stand-alone{ abbreviated{ am{"am"} @@ -232,6 +257,47 @@ en_001{ } } intervalFormats{ + GyMEd{ + G{"E, dd/MM/y GGGGG – E, dd/MM/y GGGGG"} + M{"E, dd/MM/y – E, dd/MM/y GGGGG"} + d{"E, dd/MM/y – E, dd/MM/y GGGGG"} + y{"E, dd/MM/y – E, dd/MM/y GGGGG"} + } + GyMMMEd{ + G{"E, d MMM y G – E, d MMM y G"} + M{"E, d MMM – E, d MMM y G"} + d{"E, d MMM – E, d MMM y G"} + y{"E, d MMM y – E, d MMM y G"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d – d MMM y G"} + y{"d MMM y – d MMM y G"} + } + GyMd{ + G{"dd/MM/y GGGGG – dd/MM/y GGGGG"} + M{"dd/MM/y – dd/MM/y GGGGG"} + d{"dd/MM/y – dd/MM/y GGGGG"} + y{"dd/MM/y – dd/MM/y GGGGG"} + } + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } + M{ + M{"M–M"} + } MEd{ M{"E dd/MM – E dd/MM"} d{"E dd/MM – E dd/MM"} @@ -242,12 +308,24 @@ en_001{ } MMMd{ M{"d MMM – d MMM"} - d{"d – d MMM"} + d{"d–d MMM"} } Md{ M{"dd/MM – dd/MM"} d{"dd/MM – dd/MM"} } + d{ + d{"d–d"} + } + h{ + h{"h–h a"} + } + hv{ + h{"h–h a v"} + } + y{ + y{"y–y"} + } yM{ M{"MM/y – MM/y"} y{"MM/y – MM/y"} @@ -264,7 +342,7 @@ en_001{ } yMMMd{ M{"d MMM – d MMM y"} - d{"d – d MMM y"} + d{"d–d MMM y"} y{"d MMM y – d MMM y"} } yMd{ @@ -274,6 +352,15 @@ en_001{ } } } + islamic{ + availableFormats{ + MEd{"E dd/MM"} + MMMEd{"E d MMM"} + } + } + } + characterLabel{ + math_symbols{"maths symbol"} } fields{ dayOfYear-narrow{ @@ -378,6 +465,11 @@ en_001{ } month-narrow{ dn{"mo"} + relative{ + "-1"{"last mo"} + "0"{"this mo"} + "1"{"next mo"} + } relativeTime{ future{ one{"in {0} mo"} @@ -391,6 +483,11 @@ en_001{ } month-short{ dn{"mo"} + relative{ + "-1"{"last mo"} + "0"{"this mo"} + "1"{"next mo"} + } relativeTime{ future{ one{"in {0} mo"} @@ -540,6 +637,11 @@ en_001{ } week-narrow{ dn{"wk"} + relative{ + "-1"{"last wk"} + "0"{"this wk"} + "1"{"next wk"} + } relativeTime{ future{ one{"in {0} wk"} @@ -553,6 +655,11 @@ en_001{ } week-short{ dn{"wk"} + relative{ + "-1"{"last wk"} + "0"{"this wk"} + "1"{"next wk"} + } relativeTime{ future{ one{"in {0} wk"} @@ -583,6 +690,11 @@ en_001{ dn{"wkday of mo"} } year-narrow{ + relative{ + "-1"{"last yr"} + "0"{"this yr"} + "1"{"next yr"} + } relativeTime{ future{ one{"in {0} yr"} @@ -596,6 +708,11 @@ en_001{ } year-short{ dn{"yr"} + relative{ + "-1"{"last yr"} + "0"{"this yr"} + "1"{"next yr"} + } relativeTime{ future{ one{"in {0} yr"} @@ -608,4 +725,22 @@ en_001{ } } } + listPattern{ + or{ + end{"{0} or {1}"} + } + or-narrow{ + end{"{0} or {1}"} + } + or-short{ + end{"{0} or {1}"} + } + standard{ + end{"{0} and {1}"} + } + standard-short{ + 2{"{0} and {1}"} + end{"{0} and {1}"} + } + } } diff --git a/source/data/locales/en_150.txt b/source/data/locales/en_150.txt index e1a92e1..097ca75 100644 --- a/source/data/locales/en_150.txt +++ b/source/data/locales/en_150.txt @@ -10,7 +10,7 @@ en_150{ } } } - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_AE.txt b/source/data/locales/en_AE.txt index e89f994..71ef2a6 100644 --- a/source/data/locales/en_AE.txt +++ b/source/data/locales/en_AE.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_AE{ - Version{"2.1.48.67"} + Version{"36"} calendar{ chinese{ DateTimePatterns{ diff --git a/source/data/locales/en_AG.txt b/source/data/locales/en_AG.txt index 752a3d7..a63a580 100644 --- a/source/data/locales/en_AG.txt +++ b/source/data/locales/en_AG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_AI.txt b/source/data/locales/en_AI.txt index 7c01dcf..8989bcc 100644 --- a/source/data/locales/en_AI.txt +++ b/source/data/locales/en_AI.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AI{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_AS.txt b/source/data/locales/en_AS.txt index 5c97b80..6c8d8d3 100644 --- a/source/data/locales/en_AS.txt +++ b/source/data/locales/en_AS.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_AS{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_AT.txt b/source/data/locales/en_AT.txt index e28a6fd..97050bf 100644 --- a/source/data/locales/en_AT.txt +++ b/source/data/locales/en_AT.txt @@ -16,5 +16,5 @@ en_AT{ } } } - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_AU.txt b/source/data/locales/en_AU.txt index 7983ebe..1468f5f 100644 --- a/source/data/locales/en_AU.txt +++ b/source/data/locales/en_AU.txt @@ -5,12 +5,15 @@ en_AU{ ExemplarCharactersNumbers{"[↑]"} NumberElements{ latn{ + miscPatterns{ + range{"{0}–{1}"} + } symbols{ exponential{"e"} } } } - Version{"2.1.48.43"} + Version{"36"} calendar{ chinese{ monthNames{ @@ -45,6 +48,20 @@ en_AU{ "Mo11", "Mo12", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "First Month", "Second Month", @@ -127,6 +144,15 @@ en_AU{ } } stand-alone{ + abbreviated{ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat", + } narrow{ "Su.", "M.", @@ -145,6 +171,15 @@ en_AU{ "Fri", "Sat", } + wide{ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + } } } dayPeriod{ @@ -179,14 +214,66 @@ en_AU{ noon{"midday"} } narrow{ + afternoon1{"afternoon"} + am{"am"} + evening1{"evening"} + midnight{"midnight"} + morning1{"morning"} + night1{"night"} noon{"midday"} + pm{"pm"} } wide{ noon{"midday"} } } } + intervalFormats{ + GyMEd{ + G{"E, d/M/y GGGGG – E, d/M/y GGGGG"} + M{"E, d/M/y – E, d/M/y GGGGG"} + d{"E, d/M/y – E, d/M/y GGGGG"} + y{"E, d/M/y – E, d/M/y GGGGG"} + } + GyMMMEd{ + G{"E, d MMM, y G – E, d MMM, y G"} + M{"E, d MMM – E, d MMM, y G"} + d{"E, d MMM – E, d MMM, y G"} + y{"E, d MMM, y – E, d MMM, y G"} + } + GyMMMd{ + G{"d MMM, y G – d MMM, y G"} + M{"d MMM – d MMM, y G"} + d{"d – d MMM, y G"} + y{"d MMM, y – d MMM, y G"} + } + GyMd{ + G{"d/M/y GGGGG – d/M/y GGGGG"} + M{"d/M/y – d/M/y GGGGG"} + d{"d/M/y – d/M/y GGGGG"} + y{"d/M/y – d/M/y GGGGG"} + } + MMMd{ + d{"d – d MMM"} + } + } monthNames{ + format{ + narrow{ + "J", + "F", + "M", + "A", + "M", + "J", + "J", + "A", + "S", + "O", + "N", + "D", + } + } stand-alone{ abbreviated{ "Jan", @@ -202,13 +289,272 @@ en_AU{ "Nov", "Dec", } + wide{ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December", + } + } + } + quarters{ + format{ + narrow{ + "1", + "2", + "3", + "4", + } + } + stand-alone{ + abbreviated{ + "Q1", + "Q2", + "Q3", + "Q4", + } + wide{ + "1st quarter", + "2nd quarter", + "3rd quarter", + "4th quarter", + } + } + } + } + indian{ + monthNames{ + format{ + abbreviated{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + } + stand-alone{ + abbreviated{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } } } } islamic{ + DateTimePatterns{ + "h:mm:ss a zzzz", + "h:mm:ss a z", + "h:mm:ss a", + "h:mm a", + "EEEE, d MMMM y G", + "d MMMM y G", + "d MMM y G", + "dd/MM/y GGGGG", + "{1}, {0}", + "{1} 'at' {0}", + "{1} 'at' {0}", + "{1}, {0}", + "{1}, {0}", + } availableFormats{ + E{"ccc"} + Ed{"E d"} + Gy{"y G"} + GyMMM{"MMM y G"} + GyMMMEd{"E, d MMM y G"} + GyMMMd{"d MMM y G"} + M{"LL"} + MMM{"LLL"} + MMMEd{"E, d MMM"} + MMMMd{"d MMMM"} + MMMd{"d MMM"} + Md{"dd/MM"} + d{"d"} + y{"y G"} yMEd{"E, dd/MM/y"} yMd{"dd/MM/y"} + yyyy{"y G"} + yyyyM{"MM/y GGGGG"} + yyyyMEd{"E, dd/MM/y GGGGG"} + yyyyMMM{"MMM y G"} + yyyyMMMEd{"E, d MMM y G"} + yyyyMMMM{"MMMM y G"} + yyyyMMMd{"d MMM y G"} + yyyyMd{"dd/MM/y GGGGG"} + yyyyQQQ{"QQQ y G"} + yyyyQQQQ{"QQQQ y G"} + } + monthNames{ + format{ + abbreviated{ + "Muh.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dhuʻl-Q.", + "Dhuʻl-H.", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Muharram", + "Safar", + "Rabiʻ I", + "Rabiʻ II", + "Jumada I", + "Jumada II", + "Rajab", + "Shaʻban", + "Ramadan", + "Shawwal", + "Dhuʻl-Qiʻdah", + "Dhuʻl-Hijjah", + } + } + stand-alone{ + abbreviated{ + "Muh.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dhuʻl-Q.", + "Dhuʻl-H.", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Muharram", + "Safar", + "Rabiʻ I", + "Rabiʻ II", + "Jumada I", + "Jumada II", + "Rajab", + "Shaʻban", + "Ramadan", + "Shawwal", + "Dhuʻl-Qiʻdah", + "Dhuʻl-Hijjah", + } + } } } } @@ -224,18 +570,16 @@ en_AU{ upwards_arrows{"upward arrows"} } fields{ - day{ - relative{ - "-1"{"yesterday"} - "0"{"today"} - "1"{"tomorrow"} - } - } day-narrow{ relativeTime{ future{ + one{"in {0} day"} other{"in {0} days"} } + past{ + one{"{0} day ago"} + other{"{0} days ago"} + } } } fri-short{ @@ -254,9 +598,11 @@ en_AU{ dn{"h"} relativeTime{ future{ + one{"in {0} hr"} other{"in {0} hrs"} } past{ + one{"{0} hr ago"} other{"{0} hrs ago"} } } @@ -265,9 +611,11 @@ en_AU{ dn{"h"} relativeTime{ future{ + one{"in {0} hr"} other{"in {0} hrs"} } past{ + one{"{0} hr ago"} other{"{0} hrs ago"} } } @@ -339,6 +687,7 @@ en_AU{ quarter-narrow{ relativeTime{ future{ + one{"in {0} qtr"} other{"in {0} qtrs"} } past{ @@ -350,6 +699,7 @@ en_AU{ quarter-short{ relativeTime{ future{ + one{"in {0} qtr"} other{"in {0} qtrs"} } past{ @@ -432,13 +782,6 @@ en_AU{ } } } - wed-narrow{ - relativeTime{ - past{ - one{"{0} W ago"} - } - } - } wed-short{ relativeTime{ future{ @@ -454,9 +797,11 @@ en_AU{ week-narrow{ relativeTime{ future{ + one{"in {0} wk"} other{"in {0} wks"} } past{ + one{"{0} wk ago"} other{"{0} wks ago"} } } @@ -464,9 +809,11 @@ en_AU{ week-short{ relativeTime{ future{ + one{"in {0} wk"} other{"in {0} wks"} } past{ + one{"{0} wk ago"} other{"{0} wks ago"} } } @@ -480,9 +827,11 @@ en_AU{ year-narrow{ relativeTime{ future{ + one{"in {0} yr"} other{"in {0} yrs"} } past{ + one{"{0} yr ago"} other{"{0} yrs ago"} } } @@ -490,23 +839,14 @@ en_AU{ year-short{ relativeTime{ future{ + one{"in {0} yr"} other{"in {0} yrs"} } past{ + one{"{0} yr ago"} other{"{0} yrs ago"} } } } } - listPattern{ - or{ - end{"{0} or {1}"} - } - standard{ - end{"{0} and {1}"} - } - standard-short{ - end{"{0} and {1}"} - } - } } diff --git a/source/data/locales/en_BB.txt b/source/data/locales/en_BB.txt index fbf9df7..fca6cbd 100644 --- a/source/data/locales/en_BB.txt +++ b/source/data/locales/en_BB.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BB{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_BE.txt b/source/data/locales/en_BE.txt index 8b93db9..645f107 100644 --- a/source/data/locales/en_BE.txt +++ b/source/data/locales/en_BE.txt @@ -10,7 +10,7 @@ en_BE{ } } } - Version{"2.1.47.86"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/en_BI.txt b/source/data/locales/en_BI.txt index 001ca6f..137181f 100644 --- a/source/data/locales/en_BI.txt +++ b/source/data/locales/en_BI.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_BI{ - Version{"2.1.48.22"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_BM.txt b/source/data/locales/en_BM.txt index 009afd0..b1f0c76 100644 --- a/source/data/locales/en_BM.txt +++ b/source/data/locales/en_BM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_BS.txt b/source/data/locales/en_BS.txt index 582cff3..dd37cc9 100644 --- a/source/data/locales/en_BS.txt +++ b/source/data/locales/en_BS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BS{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_BW.txt b/source/data/locales/en_BW.txt index d48cc32..44769c2 100644 --- a/source/data/locales/en_BW.txt +++ b/source/data/locales/en_BW.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BW{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/en_BZ.txt b/source/data/locales/en_BZ.txt index 6a82ff8..c50903b 100644 --- a/source/data/locales/en_BZ.txt +++ b/source/data/locales/en_BZ.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BZ{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/en_CA.txt b/source/data/locales/en_CA.txt index 48844f1..66c2b92 100644 --- a/source/data/locales/en_CA.txt +++ b/source/data/locales/en_CA.txt @@ -9,7 +9,7 @@ en_CA{ } } } - Version{"2.1.47.86"} + Version{"36"} calendar{ chinese{ DateTimePatterns{ @@ -225,6 +225,7 @@ en_CA{ midnight{"mid"} morning1{"mor"} night1{"night"} + noon{"n"} } } stand-alone{ @@ -238,6 +239,7 @@ en_CA{ evening1{"eve"} midnight{"mid"} morning1{"mor"} + night1{"night"} pm{"pm"} } wide{ @@ -342,6 +344,7 @@ en_CA{ leftwards_rightwards_arrows{"leftward rightward arrow"} letterlike_symbols{"letter-like symbol"} limited_use{"limited use"} + math_symbols{"math symbol"} nonspacing{"non-spacing"} rightwards_arrows{"rightward arrow"} upwards_arrows{"upward arrows"} @@ -504,9 +507,11 @@ en_CA{ sat-narrow{ relativeTime{ future{ + one{"in {0} Sa"} other{"in {0} Sa’s"} } past{ + one{"{0} Sa ago"} other{"{0} Sa’s ago"} } } @@ -552,9 +557,11 @@ en_CA{ sun-narrow{ relativeTime{ future{ + one{"in {0} Su"} other{"in {0} Su’s"} } past{ + one{"{0} Su ago"} other{"{0} Su’s ago"} } } @@ -574,9 +581,11 @@ en_CA{ thu-narrow{ relativeTime{ future{ + one{"in {0} Th"} other{"in {0} Th’s"} } past{ + one{"{0} Th ago"} other{"{0} Th’s ago"} } } @@ -596,9 +605,11 @@ en_CA{ tue-narrow{ relativeTime{ future{ + one{"in {0} Tu"} other{"in {0} Tu’s"} } past{ + one{"{0} Tu ago"} other{"{0} Tu’s ago"} } } @@ -705,7 +716,6 @@ en_CA{ end{"{0}, and {1}"} } standard-short{ - 2{"{0} and {1}"} end{"{0}, and {1}"} } } diff --git a/source/data/locales/en_CC.txt b/source/data/locales/en_CC.txt index 2de464b..1ca5f1c 100644 --- a/source/data/locales/en_CC.txt +++ b/source/data/locales/en_CC.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CC{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_CH.txt b/source/data/locales/en_CH.txt index 15895bd..f387acf 100644 --- a/source/data/locales/en_CH.txt +++ b/source/data/locales/en_CH.txt @@ -14,5 +14,5 @@ en_CH{ } } } - Version{"2.1.48.50"} + Version{"36"} } diff --git a/source/data/locales/en_CK.txt b/source/data/locales/en_CK.txt index 7a276f8..3362c3a 100644 --- a/source/data/locales/en_CK.txt +++ b/source/data/locales/en_CK.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CK{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_CM.txt b/source/data/locales/en_CM.txt index 655c7d6..a3e7497 100644 --- a/source/data/locales/en_CM.txt +++ b/source/data/locales/en_CM.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_CX.txt b/source/data/locales/en_CX.txt index 4ce4592..92919a3 100644 --- a/source/data/locales/en_CX.txt +++ b/source/data/locales/en_CX.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CX{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_CY.txt b/source/data/locales/en_CY.txt index c009b10..369d217 100644 --- a/source/data/locales/en_CY.txt +++ b/source/data/locales/en_CY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CY{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_DE.txt b/source/data/locales/en_DE.txt index c845a52..64239c1 100644 --- a/source/data/locales/en_DE.txt +++ b/source/data/locales/en_DE.txt @@ -14,5 +14,5 @@ en_DE{ } } } - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_DG.txt b/source/data/locales/en_DG.txt index 8832df4..1822c2b 100644 --- a/source/data/locales/en_DG.txt +++ b/source/data/locales/en_DG.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_DK.txt b/source/data/locales/en_DK.txt index 734ce91..56445e4 100644 --- a/source/data/locales/en_DK.txt +++ b/source/data/locales/en_DK.txt @@ -15,7 +15,7 @@ en_DK{ } } } - Version{"2.1.47.69"} + Version{"36"} calendar{ generic{ availableFormats{ diff --git a/source/data/locales/en_DM.txt b/source/data/locales/en_DM.txt index 4f886aa..f849ffe 100644 --- a/source/data/locales/en_DM.txt +++ b/source/data/locales/en_DM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_ER.txt b/source/data/locales/en_ER.txt index b9d9f93..e4a92d5 100644 --- a/source/data/locales/en_ER.txt +++ b/source/data/locales/en_ER.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ER{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_FI.txt b/source/data/locales/en_FI.txt index fe6b151..fc5c76c 100644 --- a/source/data/locales/en_FI.txt +++ b/source/data/locales/en_FI.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FI{ %%Parent{"en_150"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -15,7 +15,7 @@ en_FI{ } } } - Version{"2.1.47.69"} + Version{"36"} calendar{ generic{ availableFormats{ diff --git a/source/data/locales/en_FJ.txt b/source/data/locales/en_FJ.txt index 918bc8f..07db8bd 100644 --- a/source/data/locales/en_FJ.txt +++ b/source/data/locales/en_FJ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FJ{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_FK.txt b/source/data/locales/en_FK.txt index ce5f422..fb6c996 100644 --- a/source/data/locales/en_FK.txt +++ b/source/data/locales/en_FK.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FK{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_FM.txt b/source/data/locales/en_FM.txt index 877c94e..122264e 100644 --- a/source/data/locales/en_FM.txt +++ b/source/data/locales/en_FM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_GB.txt b/source/data/locales/en_GB.txt index 5aad8db..d918df1 100644 --- a/source/data/locales/en_GB.txt +++ b/source/data/locales/en_GB.txt @@ -2,7 +2,15 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GB{ %%Parent{"en_001"} - Version{"2.1.47.86"} + NumberElements{ + latn{ + miscPatterns{ + range{"{0}–{1}"} + } + } + minimumGroupingDigits{"1"} + } + Version{"36"} calendar{ generic{ availableFormats{ @@ -10,24 +18,15 @@ en_GB{ MMMEd{"E d MMM"} } intervalFormats{ - M{ - M{"M–M"} - } - MMMd{ - d{"d–d MMM"} + MMMEd{ + d{"E d MMM – E d MMM"} } Md{ M{"dd/MM–dd/MM"} d{"dd/MM–dd/MM"} } - d{ - d{"d–d"} - } - y{ - y{"y–y G"} - } - yMMMd{ - d{"d–d MMM y G"} + yMMMEd{ + d{"E, d MMM – E, d MMM y G"} } } } @@ -47,111 +46,163 @@ en_GB{ "{1}, {0}", "{1}, {0}", } - dayPeriod{ + availableFormats{ + EBhm{"E h:mm B"} + EBhms{"E h:mm:ss B"} + } + dayNames{ format{ + narrow{ + "S", + "M", + "T", + "W", + "T", + "F", + "S", + } + } + stand-alone{ abbreviated{ - noon{"noon"} + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat", } - narrow{ - noon{"n"} + short{ + "Su", + "Mo", + "Tu", + "We", + "Th", + "Fr", + "Sa", } wide{ - noon{"noon"} + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", } } + } + dayPeriod{ stand-alone{ narrow{ - pm{"pm"} + midnight{"midnight"} + noon{"noon"} } } } intervalFormats{ - H{ - H{"HH–HH"} - } - Hm{ - H{"HH:mm–HH:mm"} - m{"HH:mm–HH:mm"} - } - Hmv{ - H{"HH:mm–HH:mm v"} - m{"HH:mm–HH:mm v"} + MMMEd{ + d{"E d MMM – E d MMM"} } - Hv{ - H{"HH–HH v"} + yMMMEd{ + d{"E, d MMM – E, d MMM y"} } - M{ - M{"M–M"} - } - MMMd{ - d{"d–d MMM"} - } - d{ - d{"d–d"} - } - h{ - h{"h–h a"} + } + monthNames{ + format{ + narrow{ + "J", + "F", + "M", + "A", + "M", + "J", + "J", + "A", + "S", + "O", + "N", + "D", + } } - hv{ - h{"h–h a v"} + stand-alone{ + abbreviated{ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + } + wide{ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December", + } } - y{ - y{"y–y"} + } + quarters{ + format{ + narrow{ + "1", + "2", + "3", + "4", + } } - yMMMd{ - d{"d–d MMM y"} + stand-alone{ + abbreviated{ + "Q1", + "Q2", + "Q3", + "Q4", + } + wide{ + "1st quarter", + "2nd quarter", + "3rd quarter", + "4th quarter", + } } } } - islamic{ - availableFormats{ - MEd{"E dd/MM"} - MMMEd{"E d MMM"} - } - } - } - characterLabel{ - math_symbols{"maths symbol"} } fields{ - day{ - relative{ - "-1"{"yesterday"} - "0"{"today"} - "1"{"tomorrow"} - } - } day-narrow{ - relative{ - "-1"{"yesterday"} - "0"{"today"} - "1"{"tomorrow"} - } - } - day-short{ - relative{ - "-1"{"yesterday"} - } relativeTime{ future{ + one{"in {0} day"} other{"in {0} days"} } past{ + one{"{0} day ago"} other{"{0} days ago"} } } } - } - listPattern{ - or{ - end{"{0} or {1}"} + hour-narrow{ + dn{"hr"} } - standard{ - end{"{0} and {1}"} + second-narrow{ + dn{"sec"} } - standard-short{ - 2{"{0} and {1}"} - end{"{0} and {1}"} + year-narrow{ + dn{"yr"} } } } diff --git a/source/data/locales/en_GD.txt b/source/data/locales/en_GD.txt index afef775..cf5232c 100644 --- a/source/data/locales/en_GD.txt +++ b/source/data/locales/en_GD.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GD{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_GG.txt b/source/data/locales/en_GG.txt index b4756a3..e833c18 100644 --- a/source/data/locales/en_GG.txt +++ b/source/data/locales/en_GG.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_GH.txt b/source/data/locales/en_GH.txt index ff08937..5a9a0a1 100644 --- a/source/data/locales/en_GH.txt +++ b/source/data/locales/en_GH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GH{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_GI.txt b/source/data/locales/en_GI.txt index fe0604b..24e00ba 100644 --- a/source/data/locales/en_GI.txt +++ b/source/data/locales/en_GI.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GI{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_GM.txt b/source/data/locales/en_GM.txt index 5c15a1c..88c2aa4 100644 --- a/source/data/locales/en_GM.txt +++ b/source/data/locales/en_GM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_GU.txt b/source/data/locales/en_GU.txt index bd11013..839c88e 100644 --- a/source/data/locales/en_GU.txt +++ b/source/data/locales/en_GU.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_GU{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_GY.txt b/source/data/locales/en_GY.txt index 0afd13f..f023f89 100644 --- a/source/data/locales/en_GY.txt +++ b/source/data/locales/en_GY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GY{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_HK.txt b/source/data/locales/en_HK.txt index 93987f1..d28b82f 100644 --- a/source/data/locales/en_HK.txt +++ b/source/data/locales/en_HK.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_HK{ %%Parent{"en_001"} - Version{"2.1.47.86"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -108,11 +108,4 @@ en_HK{ } } } - fields{ - week{ - relative{ - "1"{"next week"} - } - } - } } diff --git a/source/data/locales/en_IE.txt b/source/data/locales/en_IE.txt index e54ed9c..069a422 100644 --- a/source/data/locales/en_IE.txt +++ b/source/data/locales/en_IE.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IE{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/en_IL.txt b/source/data/locales/en_IL.txt index e197e57..14668ea 100644 --- a/source/data/locales/en_IL.txt +++ b/source/data/locales/en_IL.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IL{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ generic{ availableFormats{ diff --git a/source/data/locales/en_IM.txt b/source/data/locales/en_IM.txt index 0d06611..a3ec854 100644 --- a/source/data/locales/en_IM.txt +++ b/source/data/locales/en_IM.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_IN.txt b/source/data/locales/en_IN.txt index 85d60df..10e7f75 100644 --- a/source/data/locales/en_IN.txt +++ b/source/data/locales/en_IN.txt @@ -4,8 +4,11 @@ en_IN{ %%Parent{"en_001"} NumberElements{ latn{ + miscPatterns{ + range{"{0}–{1}"} + } patterns{ - currencyFormat{"¤ #,##,##0.00"} + currencyFormat{"¤#,##,##0.00"} decimalFormat{"#,##,##0.###"} percentFormat{"#,##,##0%"} } @@ -63,7 +66,7 @@ en_IN{ } } } - Version{"2.1.49.14"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -85,6 +88,7 @@ en_IN{ GyMMM{"MMM, y G"} GyMMMEd{"E, d MMM, y G"} GyMMMd{"d MMM, y G"} + MEd{"E, d/M"} Md{"d/M"} yyyyM{"M/y GGGGG"} yyyyMEd{"E, d/M/y GGGGG"} @@ -184,6 +188,7 @@ en_IN{ GyMMM{"MMM, y G"} GyMMMEd{"E, d MMM, y G"} GyMMMd{"d MMM, y G"} + MEd{"E, d/M"} Md{"d/M"} yyyyM{"M/y GGGGG"} yyyyMEd{"E d/M/y G"} @@ -193,24 +198,6 @@ en_IN{ yyyyMMMd{"d MMM, y G"} yyyyMd{"d/M/y G"} } - monthNames{ - stand-alone{ - wide{ - "Muharram", - "Safar", - "Rabiʻ I", - "Rabiʻ II", - "Jumada I", - "Jumada II", - "Rajab", - "Shaʻban", - "Ramadan", - "Shawwal", - "Dhuʻl-Qiʻdah", - "Dhuʻl-Hijjah", - } - } - } } } fields{ diff --git a/source/data/locales/en_IO.txt b/source/data/locales/en_IO.txt index b269254..d5d144c 100644 --- a/source/data/locales/en_IO.txt +++ b/source/data/locales/en_IO.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IO{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_JE.txt b/source/data/locales/en_JE.txt index 011752a..d696a86 100644 --- a/source/data/locales/en_JE.txt +++ b/source/data/locales/en_JE.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_JE{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_JM.txt b/source/data/locales/en_JM.txt index b21c1a8..5ea01d1 100644 --- a/source/data/locales/en_JM.txt +++ b/source/data/locales/en_JM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_JM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_KE.txt b/source/data/locales/en_KE.txt index 06e290b..e978bef 100644 --- a/source/data/locales/en_KE.txt +++ b/source/data/locales/en_KE.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KE{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_KI.txt b/source/data/locales/en_KI.txt index 5154257..6c4a2fb 100644 --- a/source/data/locales/en_KI.txt +++ b/source/data/locales/en_KI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KI{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_KN.txt b/source/data/locales/en_KN.txt index 3812274..fb3f8ec 100644 --- a/source/data/locales/en_KN.txt +++ b/source/data/locales/en_KN.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KN{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_KY.txt b/source/data/locales/en_KY.txt index d78d462..be44abe 100644 --- a/source/data/locales/en_KY.txt +++ b/source/data/locales/en_KY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KY{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_LC.txt b/source/data/locales/en_LC.txt index ff73931..5dc4de3 100644 --- a/source/data/locales/en_LC.txt +++ b/source/data/locales/en_LC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_LC{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_LR.txt b/source/data/locales/en_LR.txt index 6ad4654..0fb3e94 100644 --- a/source/data/locales/en_LR.txt +++ b/source/data/locales/en_LR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_LR{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_LS.txt b/source/data/locales/en_LS.txt index 21b3f4c..6e5b29f 100644 --- a/source/data/locales/en_LS.txt +++ b/source/data/locales/en_LS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_LS{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_MG.txt b/source/data/locales/en_MG.txt index 82a62e9..02ea86f 100644 --- a/source/data/locales/en_MG.txt +++ b/source/data/locales/en_MG.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_MH.txt b/source/data/locales/en_MH.txt index ac8cba6..bde8212 100644 --- a/source/data/locales/en_MH.txt +++ b/source/data/locales/en_MH.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_MH{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_MO.txt b/source/data/locales/en_MO.txt index af3fa89..22f53f7 100644 --- a/source/data/locales/en_MO.txt +++ b/source/data/locales/en_MO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MO{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_MP.txt b/source/data/locales/en_MP.txt index 585e86f..bc3838d 100644 --- a/source/data/locales/en_MP.txt +++ b/source/data/locales/en_MP.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_MP{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_MS.txt b/source/data/locales/en_MS.txt index bbfbbf1..39dac15 100644 --- a/source/data/locales/en_MS.txt +++ b/source/data/locales/en_MS.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MS{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_MT.txt b/source/data/locales/en_MT.txt index 2df7aa9..da91ef7 100644 --- a/source/data/locales/en_MT.txt +++ b/source/data/locales/en_MT.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MT{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/en_MU.txt b/source/data/locales/en_MU.txt index d1eb559..72fcb23 100644 --- a/source/data/locales/en_MU.txt +++ b/source/data/locales/en_MU.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MU{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_MW.txt b/source/data/locales/en_MW.txt index 6dcad2e..f301bed 100644 --- a/source/data/locales/en_MW.txt +++ b/source/data/locales/en_MW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MW{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/locales/en_MY.txt b/source/data/locales/en_MY.txt index cdc4e22..8f49ecc 100644 --- a/source/data/locales/en_MY.txt +++ b/source/data/locales/en_MY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MY{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_NA.txt b/source/data/locales/en_NA.txt index 7df2865..6e0e148 100644 --- a/source/data/locales/en_NA.txt +++ b/source/data/locales/en_NA.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NA{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_NF.txt b/source/data/locales/en_NF.txt index e894943..e402214 100644 --- a/source/data/locales/en_NF.txt +++ b/source/data/locales/en_NF.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NF{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_NG.txt b/source/data/locales/en_NG.txt index 2ba4507..32b29fe 100644 --- a/source/data/locales/en_NG.txt +++ b/source/data/locales/en_NG.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NG{ %%Parent{"en_001"} - Version{"2.1.48.22"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_NL.txt b/source/data/locales/en_NL.txt index f555c02..86f73ee 100644 --- a/source/data/locales/en_NL.txt +++ b/source/data/locales/en_NL.txt @@ -14,5 +14,5 @@ en_NL{ } } } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_NR.txt b/source/data/locales/en_NR.txt index 0bd29e4..4528edf 100644 --- a/source/data/locales/en_NR.txt +++ b/source/data/locales/en_NR.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NR{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_NU.txt b/source/data/locales/en_NU.txt index 2b7ba56..c8e0d6b 100644 --- a/source/data/locales/en_NU.txt +++ b/source/data/locales/en_NU.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NU{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_NZ.txt b/source/data/locales/en_NZ.txt index 11cbef8..d50cf4c 100644 --- a/source/data/locales/en_NZ.txt +++ b/source/data/locales/en_NZ.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NZ{ %%Parent{"en_001"} - Version{"2.1.47.86"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/en_PG.txt b/source/data/locales/en_PG.txt index d23f260..e79232a 100644 --- a/source/data/locales/en_PG.txt +++ b/source/data/locales/en_PG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_PH.txt b/source/data/locales/en_PH.txt index 2f92678..ee1ba4a 100644 --- a/source/data/locales/en_PH.txt +++ b/source/data/locales/en_PH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PH{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_PK.txt b/source/data/locales/en_PK.txt index 54c8749..44c99e8 100644 --- a/source/data/locales/en_PK.txt +++ b/source/data/locales/en_PK.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PK{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/en_PN.txt b/source/data/locales/en_PN.txt index f3428a8..a965a1d 100644 --- a/source/data/locales/en_PN.txt +++ b/source/data/locales/en_PN.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PN{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_PR.txt b/source/data/locales/en_PR.txt index 5d2d661..302618a 100644 --- a/source/data/locales/en_PR.txt +++ b/source/data/locales/en_PR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_PR{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_PW.txt b/source/data/locales/en_PW.txt index 525f171..ee4cfe8 100644 --- a/source/data/locales/en_PW.txt +++ b/source/data/locales/en_PW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PW{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_RW.txt b/source/data/locales/en_RW.txt index 05a4eb7..c80ac11 100644 --- a/source/data/locales/en_RW.txt +++ b/source/data/locales/en_RW.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_RW{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_SB.txt b/source/data/locales/en_SB.txt index b6539ce..faca3e1 100644 --- a/source/data/locales/en_SB.txt +++ b/source/data/locales/en_SB.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SB{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_SC.txt b/source/data/locales/en_SC.txt index 93ee384..5d72c59 100644 --- a/source/data/locales/en_SC.txt +++ b/source/data/locales/en_SC.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SC{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_SD.txt b/source/data/locales/en_SD.txt index e3ff67d..c887a86 100644 --- a/source/data/locales/en_SD.txt +++ b/source/data/locales/en_SD.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SD{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_SE.txt b/source/data/locales/en_SE.txt index 3b72976..40605c3 100644 --- a/source/data/locales/en_SE.txt +++ b/source/data/locales/en_SE.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SE{ %%Parent{"en_150"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -15,7 +15,7 @@ en_SE{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/en_SG.txt b/source/data/locales/en_SG.txt index 17e3479..55295aa 100644 --- a/source/data/locales/en_SG.txt +++ b/source/data/locales/en_SG.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -124,19 +124,5 @@ en_SG{ } } } - week-short{ - relative{ - "-1"{"last wk"} - "0"{"this wk"} - "1"{"next wk"} - } - } - year-short{ - relative{ - "-1"{"last yr"} - "0"{"this yr"} - "1"{"next yr"} - } - } } } diff --git a/source/data/locales/en_SH.txt b/source/data/locales/en_SH.txt index 6186e3a..c835613 100644 --- a/source/data/locales/en_SH.txt +++ b/source/data/locales/en_SH.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SH{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_SI.txt b/source/data/locales/en_SI.txt index cf0f703..5100787 100644 --- a/source/data/locales/en_SI.txt +++ b/source/data/locales/en_SI.txt @@ -14,5 +14,5 @@ en_SI{ } } } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_SL.txt b/source/data/locales/en_SL.txt index 78a7f22..6764d97 100644 --- a/source/data/locales/en_SL.txt +++ b/source/data/locales/en_SL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SL{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_SS.txt b/source/data/locales/en_SS.txt index af2c30c..cb55162 100644 --- a/source/data/locales/en_SS.txt +++ b/source/data/locales/en_SS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SS{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_SX.txt b/source/data/locales/en_SX.txt index 2d945a5..f90fd73 100644 --- a/source/data/locales/en_SX.txt +++ b/source/data/locales/en_SX.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SX{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_SZ.txt b/source/data/locales/en_SZ.txt index e227a3e..9734bed 100644 --- a/source/data/locales/en_SZ.txt +++ b/source/data/locales/en_SZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SZ{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_TC.txt b/source/data/locales/en_TC.txt index 9d08e3a..96ba2bd 100644 --- a/source/data/locales/en_TC.txt +++ b/source/data/locales/en_TC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TC{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_TK.txt b/source/data/locales/en_TK.txt index bf8c610..218e81f 100644 --- a/source/data/locales/en_TK.txt +++ b/source/data/locales/en_TK.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TK{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_TO.txt b/source/data/locales/en_TO.txt index a60d593..24b603f 100644 --- a/source/data/locales/en_TO.txt +++ b/source/data/locales/en_TO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TO{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_TT.txt b/source/data/locales/en_TT.txt index 06d76b3..17a4163 100644 --- a/source/data/locales/en_TT.txt +++ b/source/data/locales/en_TT.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TT{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_TV.txt b/source/data/locales/en_TV.txt index 077c87d..733f8a5 100644 --- a/source/data/locales/en_TV.txt +++ b/source/data/locales/en_TV.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TV{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_TZ.txt b/source/data/locales/en_TZ.txt index a3721a8..bdadfae 100644 --- a/source/data/locales/en_TZ.txt +++ b/source/data/locales/en_TZ.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TZ{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_UG.txt b/source/data/locales/en_UG.txt index 663468e..bb9e411 100644 --- a/source/data/locales/en_UG.txt +++ b/source/data/locales/en_UG.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_UG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/en_UM.txt b/source/data/locales/en_UM.txt index 05c6060..2b4a962 100644 --- a/source/data/locales/en_UM.txt +++ b/source/data/locales/en_UM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_UM{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_US.txt b/source/data/locales/en_US.txt index 78df49c..d2e5cc6 100644 --- a/source/data/locales/en_US.txt +++ b/source/data/locales/en_US.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_US{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_US_POSIX.txt b/source/data/locales/en_US_POSIX.txt index 62f4b77..b050388 100644 --- a/source/data/locales/en_US_POSIX.txt +++ b/source/data/locales/en_US_POSIX.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_US_POSIX{ - ExemplarCharactersNumbers{"[\\- , . / % + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . / % + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -16,5 +16,5 @@ en_US_POSIX{ } } } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_VC.txt b/source/data/locales/en_VC.txt index 482ec20..bf44e8e 100644 --- a/source/data/locales/en_VC.txt +++ b/source/data/locales/en_VC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_VC{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_VG.txt b/source/data/locales/en_VG.txt index 8e90bec..6d0d305 100644 --- a/source/data/locales/en_VG.txt +++ b/source/data/locales/en_VG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_VG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_VI.txt b/source/data/locales/en_VI.txt index d31938f..28f4c34 100644 --- a/source/data/locales/en_VI.txt +++ b/source/data/locales/en_VI.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_VI{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_VU.txt b/source/data/locales/en_VU.txt index 069081e..f76028d 100644 --- a/source/data/locales/en_VU.txt +++ b/source/data/locales/en_VU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_VU{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_WS.txt b/source/data/locales/en_WS.txt index 07f56ef..eaa44ad 100644 --- a/source/data/locales/en_WS.txt +++ b/source/data/locales/en_WS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_WS{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_ZA.txt b/source/data/locales/en_ZA.txt index 52b6fd1..2106ef9 100644 --- a/source/data/locales/en_ZA.txt +++ b/source/data/locales/en_ZA.txt @@ -6,7 +6,7 @@ en_ZA{ "[á à ă â å ä ā æ ç ḓ é è ĕ ê ë ē í ì ĭ î ï ī ḽ ñ ṅ ṋ ó ò ŏ ô ö ø ō œ š ṱ ú ù" " ŭ û ü ū ÿ]" } - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ symbols{ @@ -15,7 +15,7 @@ en_ZA{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/en_ZM.txt b/source/data/locales/en_ZM.txt index 106aa70..7be977f 100644 --- a/source/data/locales/en_ZM.txt +++ b/source/data/locales/en_ZM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ZM{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/en_ZW.txt b/source/data/locales/en_ZW.txt index 93a97bd..14ff57e 100644 --- a/source/data/locales/en_ZW.txt +++ b/source/data/locales/en_ZW.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ZW{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/eo.txt b/source/data/locales/eo.txt index d94b107..0d85d5c 100644 --- a/source/data/locales/eo.txt +++ b/source/data/locales/eo.txt @@ -5,7 +5,7 @@ eo{ ExemplarCharacters{"[a b c ĉ d e f g ĝ h ĥ i j ĵ k l m n o p r s ŝ t u ŭ v z]"} ExemplarCharactersIndex{"[A B C Ĉ D E F G Ĝ H Ĥ I J Ĵ K L M N O P R S Ŝ T U Ŭ V Z]"} ExemplarCharactersNumbers{"[  , % ‰ + − 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\} /]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\} /]"} NumberElements{ latn{ symbols{ @@ -14,7 +14,7 @@ eo{ } } } - Version{"2.1.49.33"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/eo_001.txt b/source/data/locales/eo_001.txt index 48bfb44..e71747d 100644 --- a/source/data/locales/eo_001.txt +++ b/source/data/locales/eo_001.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License eo_001{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/es.txt b/source/data/locales/es.txt index 7cca344..20d9231 100644 --- a/source/data/locales/es.txt +++ b/source/data/locales/es.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License es{ - AuxExemplarCharacters{"[ª à ă â å ä ã ā æ ç è ĕ ê ë ē ì ĭ î ī º ò ŏ ô ö ø ō œ ù ŭ û ū ÿ]"} + AuxExemplarCharacters{"[ª à ă â å ä ã ā æ ç è ĕ ê ë ē ì ĭ î ï ī º ò ŏ ô ö ø ō œ ù ŭ û ū ý ÿ]"} Ellipsis{ final{"{0}…"} initial{"… {0}"} @@ -10,11 +10,11 @@ es{ word-initial{"… {0}"} word-medial{"{0}… {1}"} } - ExemplarCharacters{"[a á b c d e é f g h i í ï j k l m n ñ o ó p q r s t u ú ü v w x y ý z]"} + ExemplarCharacters{"[a á b c d e é f g h i í j k l m n ñ o ó p q r s t u ú ü v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ¡ ? ¿ . … ' ‘ ’ \u0022 “ ” « » ( ) \\[ \\] § @ * / " + "[\\- ‐ ‑ – — , ; \\: ! ¡ ? ¿ . … ' ‘ ’ \u0022 “ ” « » ( ) \\[ \\] § @ * / " "\\\\ \\& # † ‡ ′ ″]" } MoreInformation{"?"} @@ -30,6 +30,7 @@ es{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -193,9 +194,11 @@ es{ group{"."} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -212,8 +215,21 @@ es{ minimumGroupingDigits{"2"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ + buddhist{ + eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } + wide{ + "BE", + } + } + } chinese{ DateTimePatterns{ "H:mm:ss (zzzz)", @@ -264,6 +280,20 @@ es{ } } coptic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -281,6 +311,21 @@ es{ "mesra", "nasie", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "tout", "baba", @@ -313,6 +358,21 @@ es{ "mesra", "nasie", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "tout", "baba", @@ -332,6 +392,20 @@ es{ } } ethiopic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -349,6 +423,21 @@ es{ "nehasse", "pagumen", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "meskerem", "tekemt", @@ -381,6 +470,21 @@ es{ "nehasse", "pagumen", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "meskerem", "tekemt", @@ -465,15 +569,6 @@ es{ yyyyQQQQ{"QQQQ 'de' y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y – y G"} @@ -551,6 +646,7 @@ es{ fallback{"{0}–{1}"} h{ a{"h a – h a"} + h{"h–h a"} } hm{ a{"h:mm a – h:mm a"} @@ -564,6 +660,7 @@ es{ } hv{ a{"h a – h a v"} + h{"h–h a v"} } y{ y{"y–y G"} @@ -849,15 +946,6 @@ es{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y–y G"} @@ -1142,6 +1230,17 @@ es{ } } hebrew{ + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } monthNames{ format{ abbreviated{ @@ -1160,6 +1259,22 @@ es{ "elul", "adar II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "tishri", "heshvan", @@ -1194,6 +1309,22 @@ es{ "elul", "adar II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "tishri", "heshvan", @@ -1241,6 +1372,20 @@ es{ "magha", "phalguna", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "chaitra", "vaisakha", @@ -1271,6 +1416,20 @@ es{ "magha", "phalguna", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "chaitra", "vaisakha", @@ -1289,6 +1448,17 @@ es{ } } islamic{ + eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } + wide{ + "AH", + } + } monthNames{ format{ abbreviated{ @@ -1305,6 +1475,20 @@ es{ "dhuʻl-q.", "dhuʻl-h.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "muharram", "safar", @@ -1335,6 +1519,20 @@ es{ "dhuʻl-q.", "dhuʻl-h.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "muharram", "safar", @@ -1370,6 +1568,17 @@ es{ } } persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } monthNames{ format{ abbreviated{ @@ -1386,6 +1595,20 @@ es{ "bahman", "esfand", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "farvardin", "ordibehesht", @@ -1416,6 +1639,20 @@ es{ "bahman", "esfand", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "farvardin", "ordibehesht", @@ -2260,6 +2497,11 @@ es{ } week-narrow{ dn{"sem."} + relative{ + "-1"{"sem. ant."} + "0"{"esta sem."} + "1"{"próx. sem."} + } relativePeriod{"la sem. del {0}"} relativeTime{ future{ @@ -2274,6 +2516,11 @@ es{ } week-short{ dn{"sem."} + relative{ + "-1"{"sem. ant."} + "0"{"esta sem."} + "1"{"próx. sem."} + } relativePeriod{"la sem. del {0}"} relativeTime{ future{ @@ -2390,12 +2637,6 @@ es{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} y {1}"} - end{"{0} y {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} y {1}"} end{"{0} y {1}"} @@ -2452,6 +2693,10 @@ es{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/es_419.txt b/source/data/locales/es_419.txt index 34d8c84..72ccd16 100644 --- a/source/data/locales/es_419.txt +++ b/source/data/locales/es_419.txt @@ -6,7 +6,6 @@ es_419{ patterns{ accountingFormat{"¤#,##0.00"} currencyFormat{"¤#,##0.00"} - decimalFormat{"#,##0.###"} } patternsLong{ decimalFormat{ @@ -88,29 +87,15 @@ es_419{ one{"000 k"} other{"000 k"} } - 1000000000{ - one{"0k M"} - other{"0k M"} - } - 10000000000{ - one{"00k M"} - other{"00k M"} - } - 100000000000{ - one{"000k M"} - other{"000k M"} - } } } symbols{ decimal{"."} group{","} - minusSign{"-"} - plusSign{"+"} } } } - Version{"2.1.47.86"} + Version{"36"} calendar{ coptic{ monthNames{ @@ -276,8 +261,8 @@ es_419{ "d MMM y", "d/M/yy", "{1} {0}", - "{1}, {0}", - "{1}, {0}", + "{1} 'a' 'las' {0}", + "{1} 'a' 'las' {0}", "{1} {0}", "{1} {0}", } @@ -320,23 +305,13 @@ es_419{ } } dayPeriod{ - format{ - wide{ - noon{"del mediodía"} - } - } stand-alone{ abbreviated{ am{"a.m."} pm{"p.m."} } - narrow{ - am{"a.m."} - pm{"p.m."} - } wide{ am{"a.m."} - morning1{"madrugada"} pm{"p.m."} } } @@ -369,6 +344,7 @@ es_419{ G{"dd/MM/y GGGGG – dd/MM/y GGGGG"} M{"dd/MM/y – dd/MM/y GGGGG"} d{"dd/MM/y – dd/MM/y GGGGG"} + y{"dd/MM/y – dd/MM/y GGGGG"} } MEd{ M{"E, d/M–E, d/M"} @@ -707,7 +683,6 @@ es_419{ currency_symbols{"símbolos de monedas"} dash_connector{"Guión/conector"} digits{"dígitos"} - dingbats{"Símbolos y viñetas"} downwards_upwards_arrows{"Flechas hacia arriba y hacia abajo"} european_scripts{"Símbolos de escritura de Europa"} female{"femenino"} @@ -724,7 +699,6 @@ es_419{ hanzi_traditional{"Hanzi (tradicional)"} heart{"corazón"} historic_scripts{"Símbolos de escritura históricos"} - ideographic_desc_characters{"Caracteres descriptivos ideográficos"} japanese_kana{"Kana japonés"} keycap{"tecla mayus"} leftwards_rightwards_arrows{"Flechas hacia la derecha y hacia la izquierda"} @@ -765,14 +739,6 @@ es_419{ quotationStart{"“"} } fields{ - day{ - relative{ - "-1"{"ayer"} - "0"{"hoy"} - "1"{"mañana"} - "2"{"pasado mañana"} - } - } dayOfYear-narrow{ dn{"día del año"} } @@ -788,14 +754,6 @@ es_419{ dayperiod-short{ dn{"a.m./p.m."} } - fri{ - relativeTime{ - future{ - one{"dentro de {0} viernes"} - other{"en {0} viernes"} - } - } - } fri-narrow{ relativeTime{ past{ @@ -806,61 +764,14 @@ es_419{ } fri-short{ relativeTime{ - future{ - one{"dentro de {0} vie."} - other{"en {0} vie."} - } past{ one{"hace {0} viernes"} other{"hace {0} viernes"} } } } - mon{ - relativeTime{ - future{ - one{"en {0} lunes"} - other{"en {0} lunes"} - } - } - } - mon-narrow{ - relativeTime{ - future{ - one{"en {0} lunes"} - other{"en {0} lunes"} - } - past{ - one{"hace {0} lunes"} - other{"hace {0} lunes"} - } - } - } - mon-short{ - relativeTime{ - future{ - one{"en {0} lun."} - other{"dentro de {0} lun."} - } - past{ - one{"hace {0} lunes"} - other{"hace {0} lunes"} - } - } - } - sat{ - relativeTime{ - future{ - one{"en {0} sábado"} - other{"en {0} sábados"} - } - } - } sat-narrow{ relativeTime{ - future{ - one{"en {0} SA"} - } past{ one{"hace {0} sábados"} other{"hace {0} sábados"} @@ -875,34 +786,6 @@ es_419{ } } } - sun-narrow{ - relativeTime{ - future{ - one{"dentro de {0} DO"} - other{"en {0} DO"} - } - past{ - one{"hace {0} domingo"} - other{"hace {0} domingos"} - } - } - } - thu{ - relativeTime{ - future{ - one{"en {0} jueves"} - other{"dentro de {0} jueves"} - } - } - } - thu-narrow{ - relativeTime{ - future{ - one{"dentro de {0} JU"} - other{"en {0} JU"} - } - } - } tue{ relativeTime{ future{ @@ -911,53 +794,20 @@ es_419{ } } } - wed{ - relativeTime{ - future{ - one{"en {0} miércoles"} - other{"dentro de {0} miércoles"} - } - } - } - wed-narrow{ - relativeTime{ - future{ - one{"en {0} MI"} - other{"en {0} MI"} - } - past{ - one{"hace {0} miércoles"} - other{"hace {0} miércoles"} - } - } - } - wed-short{ - relativeTime{ - future{ - one{"en {0} mié."} - other{"en {0} mié."} - } - past{ - one{"hace {0} miércoles"} - other{"hace {0} miércoles"} - } - } - } - week{ + week-narrow{ relative{ - "-1"{"la semana pasada"} - "0"{"esta semana"} + "-1"{"sem. pas."} + "0"{"esta sem."} + "1"{"próx. sem."} } - } - week-narrow{ relativePeriod{"la semana del {0}"} - relativeTime{ - past{ - one{"hace {0} sem."} - } - } } week-short{ + relative{ + "-1"{"sem. pas."} + "0"{"esta sem."} + "1"{"próx. sem."} + } relativePeriod{"la semana del {0}"} } weekOfMonth-narrow{ @@ -975,14 +825,5 @@ es_419{ weekdayOfMonth-short{ dn{"día hábil del mes"} } - year{ - relative{ - "-1"{"el año pasado"} - "0"{"este año"} - } - } - } - measurementSystemNames{ - US{"anglosajón"} } } diff --git a/source/data/locales/es_AR.txt b/source/data/locales/es_AR.txt index e05c3ab..62d14a9 100644 --- a/source/data/locales/es_AR.txt +++ b/source/data/locales/es_AR.txt @@ -14,7 +14,7 @@ es_AR{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ generic{ availableFormats{ @@ -81,9 +81,7 @@ es_AR{ pm{"p. m."} } narrow{ - am{"a. m."} noon{"m."} - pm{"p. m."} } wide{ am{"a. m."} diff --git a/source/data/locales/es_BO.txt b/source/data/locales/es_BO.txt index fff2bed..50d687b 100644 --- a/source/data/locales/es_BO.txt +++ b/source/data/locales/es_BO.txt @@ -10,7 +10,7 @@ es_BO{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ AmPmMarkers{ @@ -31,8 +31,8 @@ es_BO{ "d MMM 'de' y", "d/M/yy", "{1} {0}", - "{1}, {0}", - "{1}, {0}", + "{1} 'a' 'las' {0}", + "{1} 'a' 'las' {0}", "{1} {0}", "{1} {0}", } @@ -42,10 +42,6 @@ es_BO{ am{"a. m."} pm{"p. m."} } - narrow{ - am{"a. m."} - pm{"p. m."} - } wide{ am{"a. m."} pm{"p. m."} diff --git a/source/data/locales/es_BR.txt b/source/data/locales/es_BR.txt index f992acf..8a9f8fd 100644 --- a/source/data/locales/es_BR.txt +++ b/source/data/locales/es_BR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_BR{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/es_BZ.txt b/source/data/locales/es_BZ.txt index f18a98f..26aab70 100644 --- a/source/data/locales/es_BZ.txt +++ b/source/data/locales/es_BZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_BZ{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/es_CL.txt b/source/data/locales/es_CL.txt index 72e9672..e7e5c48 100644 --- a/source/data/locales/es_CL.txt +++ b/source/data/locales/es_CL.txt @@ -13,7 +13,7 @@ es_CL{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -102,8 +102,8 @@ es_CL{ "dd-MM-y", "dd-MM-yy", "{1} {0}", - "{1}, {0}", - "{1}, {0}", + "{1} 'a' 'las' {0}", + "{1} 'a' 'las' {0}", "{1} {0}", "{1} {0}", } @@ -134,10 +134,6 @@ es_CL{ am{"a. m."} pm{"p. m."} } - narrow{ - am{"a. m."} - pm{"p. m."} - } wide{ am{"a. m."} pm{"p. m."} diff --git a/source/data/locales/es_CO.txt b/source/data/locales/es_CO.txt index d454612..91e2346 100644 --- a/source/data/locales/es_CO.txt +++ b/source/data/locales/es_CO.txt @@ -13,7 +13,7 @@ es_CO{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -117,8 +117,8 @@ es_CO{ "d/MM/y", "d/MM/yy", "{1}, {0}", - "{1}, {0}", - "{1}, {0}", + "{1} 'a' 'las' {0}", + "{1} 'a' 'las' {0}", "{1}, {0}", "{1}, {0}", } @@ -175,9 +175,7 @@ es_CO{ pm{"p. m."} } narrow{ - am{"a. m."} noon{"m."} - pm{"p. m."} } wide{ am{"a. m."} diff --git a/source/data/locales/es_CR.txt b/source/data/locales/es_CR.txt index e2249fc..bf67388 100644 --- a/source/data/locales/es_CR.txt +++ b/source/data/locales/es_CR.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_CR{ %%Parent{"es_419"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ symbols{ @@ -11,7 +11,7 @@ es_CR{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ AmPmMarkers{ @@ -28,10 +28,6 @@ es_CR{ am{"a. m."} pm{"p. m."} } - narrow{ - am{"a. m."} - pm{"p. m."} - } wide{ am{"a. m."} pm{"p. m."} @@ -41,15 +37,6 @@ es_CR{ } } fields{ - day{ - relative{ - "-1"{"ayer"} - "-2"{"anteayer"} - "0"{"hoy"} - "1"{"mañana"} - "2"{"pasado mañana"} - } - } dayperiod{ dn{"a. m./p. m."} } diff --git a/source/data/locales/es_CU.txt b/source/data/locales/es_CU.txt index 2224182..63dcde8 100644 --- a/source/data/locales/es_CU.txt +++ b/source/data/locales/es_CU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_CU{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/es_DO.txt b/source/data/locales/es_DO.txt index e1fa333..09b456f 100644 --- a/source/data/locales/es_DO.txt +++ b/source/data/locales/es_DO.txt @@ -9,7 +9,7 @@ es_DO{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -47,8 +47,8 @@ es_DO{ "d MMM y", "d/M/yy", "{1} {0}", - "{1}, {0}", - "{1}, {0}", + "{1} 'a' 'las' {0}", + "{1} 'a' 'las' {0}", "{1} {0}", "{1} {0}", } @@ -84,9 +84,7 @@ es_DO{ pm{"p. m."} } narrow{ - am{"a. m."} noon{"m."} - pm{"p. m."} } wide{ am{"a. m."} diff --git a/source/data/locales/es_EA.txt b/source/data/locales/es_EA.txt index 09c4c61..d0505b1 100644 --- a/source/data/locales/es_EA.txt +++ b/source/data/locales/es_EA.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License es_EA{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/es_EC.txt b/source/data/locales/es_EC.txt index 46c7d22..4d79467 100644 --- a/source/data/locales/es_EC.txt +++ b/source/data/locales/es_EC.txt @@ -13,7 +13,7 @@ es_EC{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ AmPmMarkers{ @@ -30,10 +30,6 @@ es_EC{ am{"a. m."} pm{"p. m."} } - narrow{ - am{"a. m."} - pm{"p. m."} - } wide{ am{"a. m."} pm{"p. m."} diff --git a/source/data/locales/es_ES.txt b/source/data/locales/es_ES.txt index 1b686d3..f751377 100644 --- a/source/data/locales/es_ES.txt +++ b/source/data/locales/es_ES.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License es_ES{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/es_GQ.txt b/source/data/locales/es_GQ.txt index 1c6fd51..635819f 100644 --- a/source/data/locales/es_GQ.txt +++ b/source/data/locales/es_GQ.txt @@ -8,5 +8,5 @@ es_GQ{ } } } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/es_GT.txt b/source/data/locales/es_GT.txt index f244a17..8888d8d 100644 --- a/source/data/locales/es_GT.txt +++ b/source/data/locales/es_GT.txt @@ -46,7 +46,7 @@ es_GT{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -130,8 +130,8 @@ es_GT{ "d/MM/y", "d/MM/yy", "{1} {0}", - "{1}, {0}", - "{1}, {0}", + "{1} 'a' 'las' {0}", + "{1} 'a' 'las' {0}", "{1} {0}", "{1} {0}", } @@ -141,10 +141,6 @@ es_GT{ am{"a. m."} pm{"p. m."} } - narrow{ - am{"a. m."} - pm{"p. m."} - } wide{ am{"a. m."} pm{"p. m."} @@ -204,15 +200,6 @@ es_GT{ } } fields{ - day{ - relative{ - "-1"{"ayer"} - "-2"{"anteayer"} - "0"{"hoy"} - "1"{"mañana"} - "2"{"pasado mañana"} - } - } dayperiod{ dn{"a. m./p. m."} } diff --git a/source/data/locales/es_HN.txt b/source/data/locales/es_HN.txt index 09bbced..38fc576 100644 --- a/source/data/locales/es_HN.txt +++ b/source/data/locales/es_HN.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_HN{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -40,8 +40,8 @@ es_HN{ "d MMM y", "d/M/yy", "{1} {0}", - "{1}, {0}", - "{1}, {0}", + "{1} 'a' 'las' {0}", + "{1} 'a' 'las' {0}", "{1} {0}", "{1} {0}", } @@ -51,10 +51,6 @@ es_HN{ am{"a. m."} pm{"p. m."} } - narrow{ - am{"a. m."} - pm{"p. m."} - } wide{ am{"a. m."} pm{"p. m."} @@ -63,15 +59,4 @@ es_HN{ } } } - fields{ - day{ - relative{ - "-1"{"ayer"} - "-2"{"anteayer"} - "0"{"hoy"} - "1"{"mañana"} - "2"{"pasado mañana"} - } - } - } } diff --git a/source/data/locales/es_IC.txt b/source/data/locales/es_IC.txt index a89c8a6..82eebe6 100644 --- a/source/data/locales/es_IC.txt +++ b/source/data/locales/es_IC.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License es_IC{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/es_MX.txt b/source/data/locales/es_MX.txt index 78fc27b..6444cf8 100644 --- a/source/data/locales/es_MX.txt +++ b/source/data/locales/es_MX.txt @@ -8,8 +8,17 @@ es_MX{ patternsLong{ decimalFormat{ 1000000000000{ + one{"0 billón"} other{"0 billones"} } + 10000000000000{ + one{"00 billones"} + other{"00 billones"} + } + 100000000000000{ + one{"000 billones"} + other{"000 billones"} + } } } patternsShort{ @@ -76,23 +85,11 @@ es_MX{ one{"000 k"} other{"000 k"} } - 1000000000{ - one{"0000 M"} - other{"0000 M"} - } - 10000000000{ - one{"00 mil M"} - other{"00 mil M"} - } - 100000000000{ - one{"000 mil M"} - other{"000 mil M"} - } } } } } - Version{"2.1.47.96"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -115,7 +112,6 @@ es_MX{ GyMMMEd{"E, d MMM y G"} GyMMMd{"d MMM y G"} MMMEd{"E d MMM"} - MMMMd{"d 'de' MMMM"} MMMd{"d MMM"} h{"hh a"} hm{"hh:mm a"} @@ -167,8 +163,8 @@ es_MX{ "d MMM y", "dd/MM/yy", "{1} {0}", - "{1}, {0}", - "{1}, {0}", + "{1} 'a' 'las' {0}", + "{1} 'a' 'las' {0}", "{1} {0}", "{1} {0}", } @@ -219,10 +215,6 @@ es_MX{ am{"a. m."} pm{"p. m."} } - narrow{ - am{"a. m."} - pm{"p. m."} - } wide{ am{"a. m."} pm{"p. m."} @@ -322,32 +314,14 @@ es_MX{ } quarters{ format{ - abbreviated{ - "1er. trim.", - "2º. trim.", - "3er. trim.", - "4º trim.", - } - narrow{ - "1T", - "2T", - "3T", - "4T", - } wide{ "1.er trimestre", - "2º. trimestre", + "2.º trimestre", "3.er trimestre", - "4o. trimestre", + "4.º trimestre", } } stand-alone{ - abbreviated{ - "1er. trim.", - "2º. trim.", - "3er. trim.", - "4º trim.", - } narrow{ "1T", "2T", @@ -356,9 +330,9 @@ es_MX{ } wide{ "1.er trimestre", - "2º. trimestre", + "2.º trimestre", "3.er trimestre", - "4º trimestre", + "4.º trimestre", } } } @@ -387,20 +361,11 @@ es_MX{ whitespace{"Espacio duro"} } fields{ - day{ - relative{ - "-1"{"ayer"} - "-2"{"anteayer"} - "0"{"hoy"} - "1"{"mañana"} - "2"{"pasado mañana"} - } - } day-narrow{ relativeTime{ future{ one{"+{0} día"} - other{"+{0} días"} + other{"en {0} días"} } } } @@ -433,11 +398,6 @@ es_MX{ "0"{"este viernes"} "1"{"el viernes próximo"} } - relativeTime{ - future{ - other{"dentro de {0} viernes"} - } - } } fri-narrow{ relativeTime{ @@ -454,9 +414,6 @@ es_MX{ "1"{"el próximo vier."} } relativeTime{ - future{ - other{"dentro de {0} vie."} - } past{ one{"hace {0} vie."} other{"hace {0} vie."} @@ -474,12 +431,8 @@ es_MX{ minute-narrow{ relativeTime{ future{ - one{"+{0} min"} - other{"+{0} min"} - } - past{ - one{"-{0} min"} - other{"-{0} min"} + one{"en {0} min"} + other{"en {0} min"} } } } @@ -497,38 +450,6 @@ es_MX{ "0"{"este lunes"} "1"{"el lunes próximo"} } - relativeTime{ - future{ - one{"dentro de {0} lunes"} - other{"dentro de {0} lunes"} - } - past{ - one{"hace {0} lunes"} - } - } - } - mon-narrow{ - relativeTime{ - future{ - one{"dentro de {0} LU"} - other{"dentro de {0} LU"} - } - past{ - one{"hace {0} LU"} - other{"hace {0} LU"} - } - } - } - mon-short{ - relativeTime{ - future{ - one{"dentro de {0} lun."} - } - past{ - one{"hace {0} lun."} - other{"hace {0} lun."} - } - } } month{ relative{ @@ -566,7 +487,7 @@ es_MX{ quarter{ relativeTime{ future{ - one{"dentro de {0} trimetre"} + one{"en {0} trimestre"} other{"dentro de {0} trimetres"} } } @@ -574,8 +495,8 @@ es_MX{ quarter-narrow{ relativeTime{ future{ - one{"+{0} T"} - other{"+{0} T"} + one{"en {0} trim."} + other{"en {0} trim."} } past{ one{"-{0} T"} @@ -597,18 +518,9 @@ es_MX{ "0"{"este sábado"} "1"{"el sábado próximo"} } - relativeTime{ - future{ - one{"dentro de {0} sábado"} - other{"dentro de {0} sábados"} - } - } } sat-narrow{ relativeTime{ - future{ - one{"dentro de {0} SA"} - } past{ one{"hace {0} SA"} other{"hace {0} SA"} @@ -644,35 +556,12 @@ es_MX{ } } } - sun-narrow{ - relativeTime{ - future{ - other{"dentro de {0} DO"} - } - past{ - one{"hace {0} DO"} - other{"hace {0} DO"} - } - } - } thu{ relative{ "-1"{"el jueves pasado"} "0"{"este jueves"} "1"{"el jueves próximo"} } - relativeTime{ - future{ - one{"dentro de {0} jueves"} - } - } - } - thu-narrow{ - relativeTime{ - future{ - other{"dentro de {0} JU"} - } - } } tue{ relative{ @@ -682,6 +571,7 @@ es_MX{ } relativeTime{ future{ + one{"dentro de {0} martes"} other{"dentro de {0} martes"} } } @@ -692,23 +582,6 @@ es_MX{ "0"{"este miércoles"} "1"{"el miércoles próximo"} } - relativeTime{ - future{ - one{"dentro de {0} miércoles"} - } - } - } - wed-narrow{ - relativeTime{ - future{ - one{"dentro de {0} MI"} - other{"dentro de {0} MI"} - } - past{ - one{"hace {0} MI"} - other{"hace {0} MI"} - } - } } wed-short{ relative{ @@ -716,16 +589,6 @@ es_MX{ "0"{"este miér."} "1"{"el próximo miér."} } - relativeTime{ - future{ - one{"dentro de {0} mié."} - other{"dentro de {0} mié."} - } - past{ - one{"hace {0} mié."} - other{"hace {0} mié."} - } - } } week{ relative{ @@ -778,6 +641,5 @@ es_MX{ } measurementSystemNames{ UK{"imperial"} - US{"estadounidense"} } } diff --git a/source/data/locales/es_NI.txt b/source/data/locales/es_NI.txt index 2226b70..b823f3d 100644 --- a/source/data/locales/es_NI.txt +++ b/source/data/locales/es_NI.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_NI{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ AmPmMarkers{ @@ -19,10 +19,6 @@ es_NI{ am{"a. m."} pm{"p. m."} } - narrow{ - am{"a. m."} - pm{"p. m."} - } wide{ am{"a. m."} pm{"p. m."} @@ -31,15 +27,4 @@ es_NI{ } } } - fields{ - day{ - relative{ - "-1"{"ayer"} - "-2"{"anteayer"} - "0"{"hoy"} - "1"{"mañana"} - "2"{"pasado mañana"} - } - } - } } diff --git a/source/data/locales/es_PA.txt b/source/data/locales/es_PA.txt index 5f2e508..f53e5dd 100644 --- a/source/data/locales/es_PA.txt +++ b/source/data/locales/es_PA.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_PA{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -74,8 +74,8 @@ es_PA{ "MM/dd/y", "MM/dd/yy", "{1} {0}", - "{1}, {0}", - "{1}, {0}", + "{1} 'a' 'las' {0}", + "{1} 'a' 'las' {0}", "{1} {0}", "{1} {0}", } @@ -110,10 +110,6 @@ es_PA{ am{"a. m."} pm{"p. m."} } - narrow{ - am{"a. m."} - pm{"p. m."} - } wide{ am{"a. m."} pm{"p. m."} @@ -165,15 +161,4 @@ es_PA{ } } } - fields{ - day{ - relative{ - "-1"{"ayer"} - "-2"{"anteayer"} - "0"{"hoy"} - "1"{"mañana"} - "2"{"pasado mañana"} - } - } - } } diff --git a/source/data/locales/es_PE.txt b/source/data/locales/es_PE.txt index 812590c..e5adce8 100644 --- a/source/data/locales/es_PE.txt +++ b/source/data/locales/es_PE.txt @@ -61,7 +61,7 @@ es_PE{ } } } - Version{"2.1.47.83"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -99,8 +99,8 @@ es_PE{ "d MMM y", "d/MM/yy", "{1} {0}", - "{1}, {0}", - "{1}, {0}", + "{1} 'a' 'las' {0}", + "{1} 'a' 'las' {0}", "{1} {0}", "{1} {0}", } @@ -110,10 +110,6 @@ es_PE{ am{"a. m."} pm{"p. m."} } - narrow{ - am{"a. m."} - pm{"p. m."} - } wide{ am{"a. m."} pm{"p. m."} diff --git a/source/data/locales/es_PH.txt b/source/data/locales/es_PH.txt index b34721a..f57c656 100644 --- a/source/data/locales/es_PH.txt +++ b/source/data/locales/es_PH.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License es_PH{ - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/es_PR.txt b/source/data/locales/es_PR.txt index 070d4d0..4f7720d 100644 --- a/source/data/locales/es_PR.txt +++ b/source/data/locales/es_PR.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_PR{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -47,8 +47,8 @@ es_PR{ "MM/dd/y", "MM/dd/yy", "{1} {0}", - "{1}, {0}", - "{1}, {0}", + "{1} 'a' 'las' {0}", + "{1} 'a' 'las' {0}", "{1} {0}", "{1} {0}", } @@ -65,10 +65,6 @@ es_PR{ am{"a. m."} pm{"p. m."} } - narrow{ - am{"a. m."} - pm{"p. m."} - } wide{ am{"a. m."} pm{"p. m."} diff --git a/source/data/locales/es_PY.txt b/source/data/locales/es_PY.txt index e736431..a39e396 100644 --- a/source/data/locales/es_PY.txt +++ b/source/data/locales/es_PY.txt @@ -13,7 +13,7 @@ es_PY{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ AmPmMarkers{ @@ -55,9 +55,7 @@ es_PY{ pm{"p. m."} } narrow{ - am{"a. m."} noon{"m."} - pm{"p. m."} } wide{ am{"a. m."} @@ -133,15 +131,6 @@ es_PY{ } } fields{ - day{ - relative{ - "-1"{"ayer"} - "-2"{"anteayer"} - "0"{"hoy"} - "1"{"mañana"} - "2"{"pasado mañana"} - } - } mon-narrow{ relative{ "-1"{"el lun. pasado"} diff --git a/source/data/locales/es_SV.txt b/source/data/locales/es_SV.txt index f5f51fd..b4803b3 100644 --- a/source/data/locales/es_SV.txt +++ b/source/data/locales/es_SV.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_SV{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ AmPmMarkers{ @@ -19,10 +19,6 @@ es_SV{ am{"a. m."} pm{"p. m."} } - narrow{ - am{"a. m."} - pm{"p. m."} - } wide{ am{"a. m."} pm{"p. m."} @@ -34,11 +30,7 @@ es_SV{ fields{ day{ relative{ - "-1"{"ayer"} "-2"{"antier"} - "0"{"hoy"} - "1"{"mañana"} - "2"{"pasado mañana"} } } dayperiod{ diff --git a/source/data/locales/es_US.txt b/source/data/locales/es_US.txt index a0c3b8c..0c1a72d 100644 --- a/source/data/locales/es_US.txt +++ b/source/data/locales/es_US.txt @@ -85,6 +85,10 @@ es_US{ } } decimalFormat{ + 1000{ + one{"0 K"} + other{"0 K"} + } 10000{ one{"00 K"} other{"00 K"} @@ -121,7 +125,7 @@ es_US{ } } } - Version{"2.1.47.86"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -141,11 +145,18 @@ es_US{ } availableFormats{ GyMMM{"MMM y G"} + GyMMMEd{"E, d MMM y G"} GyMMMd{"d MMM y G"} MMMEd{"E d MMM"} MMMd{"d MMM"} + h{"hh a"} + hm{"hh:mm a"} + hms{"hh:mm:ss a"} yyyyMEd{"E, d/M/y GGGGG"} yyyyMMM{"MMM y G"} + yyyyMMMEd{"EEE, d MMM y G"} + yyyyMMMd{"d MMM y G"} + yyyyQQQ{"QQQ y G"} } intervalFormats{ Md{ @@ -188,8 +199,8 @@ es_US{ "d MMM y", "d/M/y", "{1} {0}", - "{1}, {0}", - "{1}, {0}", + "{1} 'a' 'las' {0}", + "{1} 'a' 'las' {0}", "{1} {0}", "{1} {0}", } @@ -226,7 +237,11 @@ es_US{ dayPeriod{ format{ narrow{ + evening1{"de la tarde"} + morning1{"de la madrugada"} morning2{"mañana"} + night1{"de la noche"} + noon{"del mediodía"} } } stand-alone{ @@ -234,10 +249,6 @@ es_US{ am{"a. m."} pm{"p. m."} } - narrow{ - am{"a. m."} - pm{"p. m."} - } wide{ am{"a. m."} pm{"p. m."} @@ -270,6 +281,7 @@ es_US{ MMMd{ d{"d–d 'de' MMM"} } + fallback{"{0} – {1}"} h{ a{"h a – h a"} } @@ -299,39 +311,45 @@ es_US{ d{"d–d 'de' MMM 'de' y"} } } - monthNames{ + quarters{ format{ abbreviated{ - "ene.", - "feb.", - "mar.", - "abr.", - "may.", - "jun.", - "jul.", - "ago.", - "sep.", - "oct.", - "nov.", - "dic.", + "1er. trim.", + "2º. trim.", + "3er. trim.", + "4º trim.", + } + narrow{ + "1T", + "2T", + "3T", + "4T", } - } - } - quarters{ - format{ wide{ "1.er trimestre", - "2.º trimestre", + "2º. trimestre", "3.er trimestre", - "4.º trimestre", + "4o. trimestre", } } stand-alone{ + abbreviated{ + "1er. trim.", + "2º. trim.", + "3er. trim.", + "4º trim.", + } + narrow{ + "1T", + "2T", + "3T", + "4T", + } wide{ "1.er trimestre", - "2.º trimestre", + "2º. trimestre", "3.er trimestre", - "4.º trimestre", + "4º trimestre", } } } @@ -384,10 +402,10 @@ es_US{ dn{"a. m./p. m."} } fri{ - relativeTime{ - future{ - other{"dentro de {0} viernes"} - } + relative{ + "-1"{"el viernes pasado"} + "0"{"este viernes"} + "1"{"el viernes próximo"} } } fri-narrow{ @@ -399,61 +417,43 @@ es_US{ } } fri-short{ - relativeTime{ - future{ - other{"dentro de {0} vie."} - } + relative{ + "-1"{"el vier. pasado"} + "0"{"este vier."} + "1"{"el próximo vier."} } } mon{ - relativeTime{ - future{ - one{"dentro de {0} lunes"} - other{"dentro de {0} lunes"} - } - } - } - mon-narrow{ - relativeTime{ - future{ - one{"dentro de {0} LU"} - other{"dentro de {0} LU"} - } - past{ - one{"hace {0} LU"} - other{"hace {0} LU"} - } - } - } - mon-short{ - relativeTime{ - future{ - one{"dentro de {0} lun."} - } - past{ - one{"hace {0} lun."} - other{"hace {0} lun."} - } + relative{ + "-1"{"el lunes pasado"} + "0"{"este lunes"} + "1"{"el lunes próximo"} } } month{ relative{ + "-1"{"el mes pasado"} + "0"{"este mes"} "1"{"el mes próximo"} } } - sat{ + quarter{ relativeTime{ future{ - one{"dentro de {0} sábado"} - other{"dentro de {0} sábados"} + one{"dentro de {0} trimetre"} + other{"dentro de {0} trimetres"} } } } + sat{ + relative{ + "-1"{"el sábado pasado"} + "0"{"este sábado"} + "1"{"el sábado próximo"} + } + } sat-narrow{ relativeTime{ - future{ - one{"dentro de {0} SA"} - } past{ one{"hace {0} SA"} other{"hace {0} SA"} @@ -461,6 +461,11 @@ es_US{ } } sun{ + relative{ + "-1"{"el domingo pasado"} + "0"{"este domingo"} + "1"{"el domingo próximo"} + } relativeTime{ future{ one{"dentro de {0} domingo"} @@ -468,74 +473,44 @@ es_US{ } } } - sun-narrow{ - relativeTime{ - future{ - other{"dentro de {0} DO"} - } - past{ - one{"hace {0} DO"} - other{"hace {0} DO"} - } - } - } thu{ - relativeTime{ - future{ - one{"dentro de {0} jueves"} - } - } - } - thu-narrow{ - relativeTime{ - future{ - other{"dentro de {0} JU"} - } + relative{ + "-1"{"el jueves pasado"} + "0"{"este jueves"} + "1"{"el jueves próximo"} } } tue{ + relative{ + "-1"{"el martes pasado"} + "0"{"este martes"} + "1"{"el martes próximo"} + } relativeTime{ future{ + one{"dentro de {0} martes"} other{"dentro de {0} martes"} } } } wed{ - relativeTime{ - future{ - one{"dentro de {0} miércoles"} - } - } - } - wed-narrow{ - relativeTime{ - future{ - one{"dentro de {0} MI"} - other{"dentro de {0} MI"} - } - past{ - one{"hace {0} MI"} - other{"hace {0} MI"} - } + relative{ + "-1"{"el miércoles pasado"} + "0"{"este miércoles"} + "1"{"el miércoles próximo"} } } wed-short{ relative{ "-1"{"el mie. pasado"} - } - relativeTime{ - future{ - one{"dentro de {0} mié."} - other{"dentro de {0} mié."} - } - past{ - one{"hace {0} mié."} - other{"hace {0} mié."} - } + "0"{"este miér."} + "1"{"el próximo miér."} } } week{ relative{ + "-1"{"la semana pasada"} + "0"{"esta semana"} "1"{"la semana próxima"} } } @@ -556,11 +531,13 @@ es_US{ } year{ relative{ + "-1"{"el año pasado"} + "0"{"este año"} "1"{"el año próximo"} } } } measurementSystemNames{ - US{"estadounidense"} + UK{"imperial"} } } diff --git a/source/data/locales/es_UY.txt b/source/data/locales/es_UY.txt index b08260c..795cae7 100644 --- a/source/data/locales/es_UY.txt +++ b/source/data/locales/es_UY.txt @@ -14,7 +14,7 @@ es_UY{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ AmPmMarkers{ @@ -31,10 +31,6 @@ es_UY{ am{"a. m."} pm{"p. m."} } - narrow{ - am{"a. m."} - pm{"p. m."} - } wide{ am{"a. m."} pm{"p. m."} diff --git a/source/data/locales/es_VE.txt b/source/data/locales/es_VE.txt index 0640ef8..38bceab 100644 --- a/source/data/locales/es_VE.txt +++ b/source/data/locales/es_VE.txt @@ -13,7 +13,7 @@ es_VE{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ AmPmMarkers{ @@ -34,8 +34,8 @@ es_VE{ "d MMM y", "d/M/yy", "{1} {0}", - "{1}, {0}", - "{1}, {0}", + "{1} 'a' 'las' {0}", + "{1} 'a' 'las' {0}", "{1} {0}", "{1} {0}", } @@ -73,9 +73,7 @@ es_VE{ pm{"p. m."} } narrow{ - am{"a. m."} noon{"m."} - pm{"p. m."} } wide{ am{"a. m."} diff --git a/source/data/locales/et.txt b/source/data/locales/et.txt index d67589f..57374fd 100644 --- a/source/data/locales/et.txt +++ b/source/data/locales/et.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License et{ - AuxExemplarCharacters{"[á à â å ā æ ç é è ê ë ē í ì î ï ī ñ ó ò ŏ ô ø ō œ ú ù û ū]"} + AuxExemplarCharacters{"[á à â å ã ā æ ç é è ê ë ē í ì î ï ī ñ ó ò ŏ ô ø ō œ ú ù û ū]"} Ellipsis{ final{"{0}…"} initial{"…{0}"} @@ -11,9 +11,9 @@ et{ word-medial{"{0} … {1}"} } ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s š z ž t u v w õ ä ö ü x y]"} - ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S Š Z Ž T U V Õ Ä Ö Ü X Y]"} + ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S Š Z Ž T U V W Õ Ä Ö Ü X Y]"} ExemplarCharactersNumbers{"[  , % ‰ + − 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . “ „ ( ) \\[ \\] \\{ \\} @]"} + ExemplarCharactersPunctuation{"[\\- ‑ – , ; \\: ! ? . “ „ ( ) \\[ \\] \\{ \\} @]"} MoreInformation{"?"} NumberElements{ default{"latn"} @@ -27,6 +27,7 @@ et{ patterns{ accountingFormat{"#,##0.00 ¤;(#,##0.00 ¤)"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -121,16 +122,16 @@ et{ other{"000 mld ¤"} } 1000000000000{ - one{"0 trl ¤"} - other{"0 trl ¤"} + one{"0 trln ¤"} + other{"0 trln ¤"} } 10000000000000{ - one{"00 trl ¤"} - other{"00 trl ¤"} + one{"00 trln ¤"} + other{"00 trln ¤"} } 100000000000000{ - one{"000 trl ¤"} - other{"000 trl ¤"} + one{"000 trln ¤"} + other{"000 trln ¤"} } } decimalFormat{ @@ -193,7 +194,9 @@ et{ nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -208,7 +211,7 @@ et{ minimumGroupingDigits{"2"} native{"latn"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ buddhist{ eras{ @@ -339,30 +342,6 @@ et{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } GyMMM{ G{"MMM y G – MMM y G"} M{"MMM–MMM y G"} @@ -380,12 +359,6 @@ et{ d{"d.–d. MMM y G"} y{"d. MMM y G – d. MMM y"} } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -438,6 +411,9 @@ et{ h{"h:mm–h:mm a v"} m{"h:mm–h:mm a v"} } + hv{ + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -727,30 +703,10 @@ et{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y–y G"} } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } GyMMM{ G{"MMM y G – MMM y G"} M{"MMM–MMM y G"} @@ -768,12 +724,6 @@ et{ d{"d.–d. MMM y G"} y{"d. MMM y – d. MMM y G"} } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -1376,6 +1326,11 @@ et{ } month-narrow{ dn{"k"} + relative{ + "-1"{"eelm. k"} + "0"{"see k"} + "1"{"järgm. k"} + } relativeTime{ future{ one{"{0} k pärast"} @@ -1389,6 +1344,11 @@ et{ } month-short{ dn{"k"} + relative{ + "-1"{"eelm. kuu"} + "0"{"see kuu"} + "1"{"järgm. kuu"} + } relativeTime{ future{ one{"{0} kuu pärast"} @@ -1772,6 +1732,11 @@ et{ } week-narrow{ dn{"näd"} + relative{ + "-1"{"eelm. n"} + "0"{"see n"} + "1"{"järgm. n"} + } relativePeriod{"{0} nädal"} relativeTime{ future{ @@ -1786,6 +1751,11 @@ et{ } week-short{ dn{"näd"} + relative{ + "-1"{"eelm. näd"} + "0"{"see näd"} + "1"{"järgm. näd"} + } relativePeriod{"{0} näd"} relativeTime{ future{ @@ -1845,6 +1815,11 @@ et{ } year-narrow{ dn{"a"} + relative{ + "-1"{"eelm. a"} + "0"{"see a"} + "1"{"järgm. a"} + } relativeTime{ future{ one{"{0} a pärast"} @@ -1858,6 +1833,11 @@ et{ } year-short{ dn{"a"} + relative{ + "-1"{"eelmine a"} + "0"{"käesolev a"} + "1"{"järgmine a"} + } relativeTime{ future{ one{"{0} a pärast"} @@ -1895,8 +1875,6 @@ et{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} ja {1}"} diff --git a/source/data/locales/et_EE.txt b/source/data/locales/et_EE.txt index 8e61ec7..16405b3 100644 --- a/source/data/locales/et_EE.txt +++ b/source/data/locales/et_EE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License et_EE{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/eu.txt b/source/data/locales/eu.txt index b640ccb..35cab3a 100644 --- a/source/data/locales/eu.txt +++ b/source/data/locales/eu.txt @@ -14,8 +14,8 @@ eu{ ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} ExemplarCharactersNumbers{"[, . % ‰ + − 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ @@ -29,6 +29,7 @@ eu{ patterns{ accountingFormat{"#,##0.00 ¤;(#,##0.00 ¤)"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"% #,##0"} scientificFormat{"#E0"} } @@ -209,7 +210,7 @@ eu{ } } } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ eras{ @@ -228,18 +229,18 @@ eu{ "G. 'aroko' y. 'urteko' MMMM d", "G. 'aroko' y('e')'ko' MMM d", "GGGGG y-MM-dd", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", + "{1}, {0}", + "{1}, {0}", + "{1}, {0}", + "{1}, {0}", + "{1}, {0}", } availableFormats{ - Bh{"h B"} - Bhm{"h:mm B"} - Bhms{"h:mm:ss B"} + Bh{"B h('r')('a')'k'"} + Bhm{"B h:mm"} + Bhms{"B h:mm:s"} E{"ccc"} - EBhm{"E h:mm B"} + EBhm{"E B h:mm"} EBhms{"E h:mm:ss B"} EHm{"E HH:mm"} EHms{"E HH:mm:ss"} @@ -256,9 +257,9 @@ eu{ M{"L"} MEd{"MM/dd, EEEE"} MMM{"LLL"} - MMMEd{"MMM d, EEEE"} - MMMMd{"MMMM d"} - MMMd{"MMM d"} + MMMEd{"MMM'k' d, EEEE"} + MMMMd{"MMMM'k' d"} + MMMd{"MMM'k' d"} Md{"MM/dd"} d{"d"} h{"h a"} @@ -269,21 +270,21 @@ eu{ yM{"y/MM"} yMEd{"y/MM/dd, EEEE"} yMMM{"y('e')'ko' MMMM"} - yMMMEd{"y('e')'ko' MMMM d, EEEE"} - yMMMd{"y('e')'ko' MMMM d"} + yMMMEd{"y('e')'ko' MMMM'k' d, EEEE"} + yMMMd{"y('e')'ko' MMMM'k' d"} yMd{"y/MM/dd"} - yQQQ{"y QQQ"} + yQQQ{"y('e')'ko' QQQ"} yQQQQ{"y('e')'ko' QQQQ"} yyyy{"G y"} yyyyM{"G y/MM"} - yyyyMEd{"G y/MM/dd, EEEE"} - yyyyMMM{"G y MMM"} + yyyyMEd{"G('e')'ko' y/MM/dd, EEEE"} + yyyyMMM{"G, y('e')'ko' MMM"} yyyyMMMEd{"G y MMM d, EEEE"} yyyyMMMM{"G y('e')'ko' MMMM"} yyyyMMMMEd{"G y('e')'ko' MMMM d, EEEE"} yyyyMMMMd{"G y('e')'ko' MMMM d"} yyyyMMMd{"G y MMM d"} - yyyyMd{"G y/MM/dd"} + yyyyMd{"G('e')'ko' y/MM/dd"} yyyyQQQ{"G y QQQ"} yyyyQQQQ{"G y('e')'ko' QQQQ"} } @@ -297,21 +298,6 @@ eu{ h{"B h:mm–h:mm"} m{"B h:mm–h:mm"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } GyMMM{ G{"G y, MMM – G y, MMM"} M{"G y, MMM–MMM"} @@ -329,12 +315,6 @@ eu{ d{"G y, MMM d–d"} y{"G y, MMM d – G y, MMM d"} } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -360,11 +340,11 @@ eu{ M{"MMM – MMM"} } MMMEd{ - M{"MMMM d, EEEE – MMMM d, EEEE"} - d{"MMMM d, EEEE – MMMM d, EEEE"} + M{"MMM'k' d, EEEE – MMM'k' d, EEEE"} + d{"MMM'k' d, EEEE – MMM'k' d, EEEE"} } MMMd{ - M{"MMMM d – MMMM d"} + M{"MMM'k' d – MMMM'k' d"} d{"MMMM d–d"} } Md{ @@ -689,21 +669,6 @@ eu{ h{"B h:mm–h:mm"} m{"B h:mm–h:mm"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } GyMMM{ G{"G y, MMM – G y, MMM"} M{"G y, MMM–MMM"} @@ -721,12 +686,6 @@ eu{ d{"G y, MMM d–d"} y{"G y, MMM d – G y, MMM d"} } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -1853,6 +1812,10 @@ eu{ middle{"{0}, {1}"} start{"{0}, {1}"} } + standard-narrow{ + 2{"{0}, {1}"} + end{"{0}, {1}"} + } unit{ 2{"{0} eta {1}"} end{"{0} eta {1}"} diff --git a/source/data/locales/eu_ES.txt b/source/data/locales/eu_ES.txt index a05d3b1..b674991 100644 --- a/source/data/locales/eu_ES.txt +++ b/source/data/locales/eu_ES.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License eu_ES{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/ewo.txt b/source/data/locales/ewo.txt index 8e0df56..86fb27b 100644 --- a/source/data/locales/ewo.txt +++ b/source/data/locales/ewo.txt @@ -9,7 +9,7 @@ ewo{ "ù û ǔ v w y z]" } ExemplarCharactersIndex{"[A B D E Ə Ɛ F G H I K L M N Ŋ O Ɔ P R S T U V W Y Z]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -23,7 +23,7 @@ ewo{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ewo_CM.txt b/source/data/locales/ewo_CM.txt index 66aede6..53e1f51 100644 --- a/source/data/locales/ewo_CM.txt +++ b/source/data/locales/ewo_CM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ewo_CM{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/fa.txt b/source/data/locales/fa.txt index 43ca519..76d7874 100644 --- a/source/data/locales/fa.txt +++ b/source/data/locales/fa.txt @@ -11,7 +11,7 @@ fa{ } ExemplarCharactersIndex{"[آ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی]"} ExemplarCharactersNumbers{"[\u200E , ٫ ٬ . % ٪ ‰ ؉ + − 0۰ 1۱ 2۲ 3۳ 4۴ 5۵ 6۶ 7۷ 8۸ 9۹]"} - ExemplarCharactersPunctuation{"[\\- ‐ ، ٫ ٬ ؛ \\: ! ؟ . … ‹ › « » ( ) \\[ \\] * / \\\\]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ ، ٫ ٬ ؛ \\: ! ؟ . … ‹ › « » ( ) \\[ \\] * / \\\\]"} MoreInformation{"؟"} NumberElements{ arab{ @@ -37,7 +37,9 @@ fa{ scientificFormat{"#E0"} } symbols{ + decimal{"٫"} exponential{"×۱۰^"} + group{"٬"} infinity{"∞"} minusSign{"‎−"} nan{"ناعدد"} @@ -199,11 +201,11 @@ fa{ other{"00 م"} } 100000000000{ - one{"000 میلیارد"} + one{"000 ب"} other{"000 میلیارد"} } 1000000000000{ - one{"0 تریلیون"} + one{"0 ت"} other{"0 تریلیون"} } 10000000000000{ @@ -226,6 +228,7 @@ fa{ percentSign{"%"} plusSign{"‎+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -233,14 +236,14 @@ fa{ other{"در پیچ {0}ام سمت راست بپیچید."} } plural{ - one{"او {0} فیلم در هفته می‌بیند که کمدی است."} - other{"او {0} فیلم در هفته می‌بیند که کمدی‌اند."} + one{"{0} نفر در بازی شرکت کرد."} + other{"{0} نفر در بازی شرکت کردند."} } } minimumGroupingDigits{"1"} native{"arabext"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ eras{ @@ -451,7 +454,7 @@ fa{ "EEEE d MMMM y G", "d MMMM y G", "d MMM y G", - "y/M/d G", + "y/M/d GGGGG", "{1}،‏ {0}", "{1}، ساعت {0}", "{1}، ساعت {0}", @@ -469,9 +472,9 @@ fa{ E{"ccc"} EBhm{"E h:mm B"} EBhms{"E h:mm:ss B"} - EHm{"E HH:mm"} - EHms{"E HH:mm:ss"} - Ed{"E d"} + EHm{"E H:mm"} + EHms{"E H:mm:ss"} + Ed{"E dم"} Ehm{"E h:mm a"} Ehms{"E h:mm:ss a"} Gy{"y G"} @@ -494,17 +497,17 @@ fa{ h{"h a"} hm{"h:mm a"} hms{"h:mm:ss a"} - ms{"mm:ss"} + ms{"m:ss"} y{"y G"} yyyy{"y G"} - yyyyM{"y/M G"} - yyyyMEd{"E y/M/d G"} + yyyyM{"y/M GGGGG"} + yyyyMEd{"E y/M/d GGGGG"} yyyyMMM{"MMM y G"} yyyyMMMEd{"E d MMM y G"} yyyyMMMM{"y MMMM G"} yyyyMMMd{"d MMM y G"} - yyyyMd{"y/M/d G"} - yyyyQQQ{"QQQQ y G"} + yyyyMd{"y/M/d GGGGG"} + yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } intervalFormats{ @@ -518,42 +521,42 @@ fa{ m{"h:mm تا h:mm B"} } Gy{ - G{"G y – G y"} - y{"G y–y"} + G{"y G تا y G"} + y{"y تا y G"} } GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} + G{"y/M GGGGG تا y/M GGGGG"} + M{"y/M تا y/M GGGGG"} + y{"y/M تا y/M GGGGG"} } GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} + G{"E y/M/d GGGGG تا E y/M/d GGGGG"} + M{"E y/M/d تا E y/M/d GGGGG"} + d{"E y/M/d تا E y/M/d GGGGG"} + y{"E y/M/d تا E y/M/d GGGGG"} } GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} + G{"MMM y G تا MMM y G"} + M{"LLL تا MMM y G"} + y{"MMM y تا MMM y G"} } GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} + G{"E d MMM y G تا E d MMM y G"} + M{"E d LLL تا E d MMM y G"} + d{"E d LLL تا E d MMM y G"} + y{"E d MMM y تا E d MMM y G"} } GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} + G{"d MMM y G تا d MMM y G"} + M{"d LLL تا d MMM y G"} + d{"d تا d MMM y G"} + y{"d MMM y تا d MMM y G"} } GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + G{"y/M/d GGGGG تا y/M/d GGGGG"} + M{"y/M/d تا y/M/d GGGGG"} + d{"y/M/d تا y/M/d GGGGG"} + y{"y/M/d تا y/M/d GGGGG"} } H{ H{"H تا H"} @@ -577,7 +580,7 @@ fa{ d{"E M/d تا E M/d"} } MMM{ - M{"MMM تا MMM"} + M{"LLL تا LLL"} } MMMEd{ M{"E d LLL تا E d LLL"} @@ -617,13 +620,13 @@ fa{ y{"y تا y G"} } yM{ - M{"y/M تا y/M G"} - y{"y/M تا y/M G"} + M{"y/M تا y/M GGGGG"} + y{"y/M تا y/M GGGGG"} } yMEd{ - M{"E y/M/d تا E y/M/d G"} - d{"E y/M/d تا E y/M/d G"} - y{"E y/M/d تا E y/M/d G"} + M{"E y/M/d تا E y/M/d GGGGG"} + d{"E y/M/d تا E y/M/d GGGGG"} + y{"E y/M/d تا E y/M/d GGGGG"} } yMMM{ M{"LLL تا MMM y G"} @@ -644,9 +647,9 @@ fa{ y{"d MMM y تا d MMM y G"} } yMd{ - M{"y/M/d تا y/M/d G"} - d{"y/M/d تا y/M/d G"} - y{"y/M/d تا y/M/d G"} + M{"y/M/d تا y/M/d GGGGG"} + d{"y/M/d تا y/M/d GGGGG"} + y{"y/M/d تا y/M/d GGGGG"} } } } @@ -702,16 +705,16 @@ fa{ HHmmZ{"HH:mm (Z)"} Hm{"H:mm"} Hms{"H:mm:ss"} - Hmsv{"HH:mm:ss v"} - Hmv{"HH:mm v"} + Hmsv{"H:mm:ss v"} + Hmv{"H:mm v"} M{"L"} MEd{"E M/d"} MMM{"LLL"} MMMEd{"E d LLL"} MMMMEd{"E d LLLL"} MMMMW{ - one{"هفتۀ W از LLLL"} - other{"هفتۀ W از LLLL"} + one{"هفتهٔ Wم LLLL"} + other{"هفتهٔ Wم LLLL"} } MMMMd{"d LLLL"} MMMd{"d LLL"} @@ -723,7 +726,7 @@ fa{ hmsv{"h:mm:ss a v"} hmv{"h:mm a v"} mmss{"mm:ss"} - ms{"mm:ss"} + ms{"m:ss"} y{"y"} yM{"y/M"} yMEd{"E y/M/d"} @@ -736,8 +739,8 @@ fa{ yQQQ{"QQQQ y"} yQQQQ{"QQQQ y"} yw{ - one{"هفته w از Y"} - other{"هفته w از Y"} + one{"هفتهٔ wم Y"} + other{"هفتهٔ wم Y"} } } dayNames{ @@ -915,42 +918,42 @@ fa{ m{"h:mm تا h:mm B"} } Gy{ - G{"G y – G y"} - y{"G y–y"} + G{"y G تا y G"} + y{"y تا y G"} } GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} + G{"y/M GGGGG تا y/M GGGGG"} + M{"y/M تا y/M GGGGG"} + y{"y/M تا y/M GGGGG"} } GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} + G{"E y/M/d GGGGG تا E y/M/d GGGGG"} + M{"E y/M/d تا E y/M/d GGGGG"} + d{"E y/M/d تا E y/M/d GGGGG"} + y{"E y/M/d تا E y/M/d GGGGG"} } GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} + G{"MMM y G تا MMM y G"} + M{"LLL تا MMM y G"} + y{"MMM y تا MMM y G"} } GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} + G{"E d MMM y G تا E d MMM y G"} + M{"E d LLL تا E d MMM y G"} + d{"E d LLL تا E d MMM y G"} + y{"E d MMM y تا E d MMM y G"} } GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} + G{"d MMM y G تا d MMM y G"} + M{"d LLL تا d MMM y G"} + d{"d تا d MMM y G"} + y{"d MMM y تا d MMM y G"} } GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + G{"y/M/d GGGGG تا y/M/d GGGGG"} + M{"y/M/d تا y/M/d GGGGG"} + d{"y/M/d تا y/M/d GGGGG"} + y{"y/M/d تا y/M/d GGGGG"} } H{ H{"H تا H"} @@ -1387,7 +1390,7 @@ fa{ } availableFormats{ E{"ccc"} - Ed{"E d"} + Ed{"E dم"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E d MMM y G"} @@ -1418,13 +1421,13 @@ fa{ yQQQ{"QQQ y G"} yQQQQ{"QQQQ y G"} yyyy{"y G"} - yyyyM{"y/M G"} - yyyyMEd{"E y/M/d G"} + yyyyM{"y/M GGGGG"} + yyyyMEd{"E y/M/d GGGGG"} yyyyMMM{"MMM y G"} yyyyMMMEd{"E d MMM y G"} - yyyyMMMM{"y MMMM G"} + yyyyMMMM{"MMMM y G"} yyyyMMMd{"d MMM y G"} - yyyyMd{"y/M/d G"} + yyyyMd{"y/M/d GGGGG"} yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } @@ -1439,6 +1442,63 @@ fa{ "هجری قمری", } } + intervalFormats{ + Gy{ + G{"y G تا y G"} + y{"y تا y G"} + } + GyM{ + G{"y/M GGGGG تا y/M GGGGG"} + M{"y/M تا y/M GGGGG"} + y{"y/M تا y/M GGGGG"} + } + GyMEd{ + G{"E y/M/d GGGGG تا E y/M/d GGGGG"} + M{"E y/M/d تا E y/M/d GGGGG"} + d{"E y/M/d تا E y/M/d GGGGG"} + y{"E y/M/d تا E y/M/d GGGGG"} + } + GyMMM{ + G{"MMM y G تا MMM y G"} + M{"LLL تا MMM y G"} + y{"MMM y تا MMM y G"} + } + GyMMMEd{ + G{"E d MMM y G تا E d MMM y G"} + M{"E d LLL تا E d MMM y G"} + d{"E d LLL تا E d MMM y G"} + y{"E d MMM y تا E d MMM y G"} + } + GyMMMd{ + G{"d MMM y G تا d MMM y G"} + M{"d LLL تا d MMM y G"} + d{"d تا d MMM y G"} + y{"d MMM y تا d MMM y G"} + } + GyMd{ + G{"y/M/d GGGGG تا y/M/d GGGGG"} + M{"y/M/d تا y/M/d GGGGG"} + d{"y/M/d تا y/M/d GGGGG"} + y{"y/M/d تا y/M/d GGGGG"} + } + MMM{ + M{"LLL تا LLL"} + } + yM{ + M{"y/M تا y/M GGGGG"} + y{"y/M تا y/M GGGGG"} + } + yMEd{ + M{"E y/M/d تا E y/M/d GGGGG"} + d{"E y/M/d تا E y/M/d GGGGG"} + y{"E y/M/d تا E y/M/d GGGGG"} + } + yMd{ + M{"y/M/d تا y/M/d GGGGG"} + d{"y/M/d تا y/M/d GGGGG"} + y{"y/M/d تا y/M/d GGGGG"} + } + } monthNames{ format{ abbreviated{ @@ -1456,18 +1516,18 @@ fa{ "ذیحجهٔ", } narrow{ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", + "م", + "ص", + "ر", + "ر", + "ج", + "ج", + "ر", + "ش", + "ر", + "ش", + "ذ", + "ذ", } wide{ "محرم", @@ -1500,26 +1560,26 @@ fa{ "ذیحجه", } narrow{ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", + "م", + "ص", + "ر", + "ر", + "ج", + "ج", + "ر", + "ش", + "ر", + "ش", + "ذ", + "ذ", } wide{ "محرم", "صفر", "ربیع‌الاول", - "ربیع الثانی", - "جمادی الاول", - "جمادی الثانی", + "ربیع‌الثانی", + "جمادی‌الاول", + "جمادی‌الثانی", "رجب", "شعبان", "رمضان", @@ -1768,188 +1828,708 @@ fa{ "Meiji", "Taishō", "Shōwa", - "هیسه‌ای", + "هیسی", "ریوا", } - } - } - persian{ - DateTimePatterns{ - "H:mm:ss (zzzz)", - "H:mm:ss (z)", - "H:mm:ss", - "H:mm", - "y MMMM d, EEEE", - "d MMMM y", - "d MMM y", - "y/M/d", - "{1}،‏ {0}", - "{1}، ساعت {0}", - "{1}، ساعت {0}", - "{1}،‏ {0}", - "{1}،‏ {0}", - } - availableFormats{ - y{"y"} - yyyy{"y"} - yyyyM{"y/M"} - yyyyMEd{"E y/M/d"} - yyyyMMM{"MMM y"} - yyyyMMMEd{"E d MMM y"} - yyyyMMMM{"y MMMM"} - yyyyMMMd{"d MMM y"} - yyyyMd{"y/M/d"} - yyyyQQQ{"QQQQ y"} - yyyyQQQQ{"QQQQ y"} - } - eras{ - abbreviated{ - "ه‍.ش.", - } - narrow{ - "ه‍.ش.", - } - wide{ - "هجری شمسی", - } - } - intervalFormats{ - y{ - y{"y تا y"} - } - yM{ - M{"y/M تا y/M"} - y{"y/M تا y/M"} - } - yMEd{ - M{"E y/M/d تا E y/M/d"} - d{"E y/M/d تا E y/M/d"} - y{"E y/M/d تا E y/M/d"} - } - yMMM{ - M{"LLL تا MMM y"} - y{"MMM y تا MMM y"} - } - yMMMEd{ - M{"E d LLL تا E d MMM y"} - d{"E d LLL تا E d MMM y"} - y{"E d MMM y تا E d MMM y"} - } - yMMMM{ - M{"LLLL تا MMMM y"} - y{"MMMM y تا MMMM y"} - } - yMMMd{ - M{"d LLL تا d MMM y"} - d{"d تا d MMM y"} - y{"d MMM y تا d MMM y"} - } - yMd{ - M{"y/M/d تا y/M/d"} - d{"y/M/d تا y/M/d"} - y{"y/M/d تا y/M/d"} - } - } - monthNames{ - format{ - abbreviated{ - "فروردین", - "اردیبهشت", - "خرداد", - "تیر", - "مرداد", - "شهریور", - "مهر", - "آبان", - "آذر", - "دی", - "بهمن", - "اسفند", - } - narrow{ - "ف", - "ا", - "خ", - "ت", - "م", - "ش", - "م", - "آ", - "آ", - "د", - "ب", - "ا", - } - wide{ - "فروردین", - "اردیبهشت", - "خرداد", - "تیر", - "مرداد", - "شهریور", - "مهر", - "آبان", - "آذر", - "دی", - "بهمن", - "اسفند", - } - } - stand-alone{ - abbreviated{ - "فروردین", - "اردیبهشت", - "خرداد", - "تیر", - "مرداد", - "شهریور", - "مهر", - "آبان", - "آذر", - "دی", - "بهمن", - "اسفند", - } - narrow{ - "ف", - "ا", - "خ", - "ت", - "م", - "ش", - "م", - "آ", - "آ", - "د", - "ب", - "ا", - } - wide{ - "فروردین", - "اردیبهشت", - "خرداد", - "تیر", - "مرداد", - "شهریور", - "مهر", - "آبان", - "آذر", - "دی", - "بهمن", - "اسفند", - } - } - } - } - roc{ - eras{ - abbreviated{ - "قبل از R.O.C.", - "تقویم مینگو", - } narrow{ - "قبل از R.O.C.", - "تقویم مینگو", + "Taika (645–650)", + "Hakuchi (650–671)", + "Hakuhō (672–686)", + "Shuchō (686–701)", + "Taihō (701–704)", + "Keiun (704–708)", + "Wadō (708–715)", + "Reiki (715–717)", + "Yōrō (717–724)", + "Jinki (724–729)", + "Tenpyō (729–749)", + "Tenpyō-kampō (749–749)", + "Tenpyō-shōhō (749–757)", + "Tenpyō-hōji (757–765)", + "Tenpyō-jingo (765–767)", + "Jingo-keiun (767–770)", + "Hōki (770–780)", + "Ten-ō (781–782)", + "Enryaku (782–806)", + "Daidō (806–810)", + "Kōnin (810–824)", + "Tenchō (824–834)", + "Jōwa (834–848)", + "Kajō (848–851)", + "Ninju (851–854)", + "Saikō (854–857)", + "Ten-an (857–859)", + "Jōgan (859–877)", + "Gangyō (877–885)", + "Ninna (885–889)", + "Kanpyō (889–898)", + "Shōtai (898–901)", + "Engi (901–923)", + "Enchō (923–931)", + "Jōhei (931–938)", + "Tengyō (938–947)", + "Tenryaku (947–957)", + "Tentoku (957–961)", + "Ōwa (961–964)", + "Kōhō (964–968)", + "Anna (968–970)", + "Tenroku (970–973)", + "Ten’en (973–976)", + "Jōgen (976–978)", + "Tengen (978–983)", + "Eikan (983–985)", + "Kanna (985–987)", + "Eien (987–989)", + "Eiso (989–990)", + "Shōryaku (990–995)", + "Chōtoku (995–999)", + "Chōhō (999–1004)", + "Kankō (1004–1012)", + "Chōwa (1012–1017)", + "Kannin (1017–1021)", + "Jian (1021–1024)", + "Manju (1024–1028)", + "Chōgen (1028–1037)", + "Chōryaku (1037–1040)", + "Chōkyū (1040–1044)", + "Kantoku (1044–1046)", + "Eishō (1046–1053)", + "Tengi (1053–1058)", + "Kōhei (1058–1065)", + "Jiryaku (1065–1069)", + "Enkyū (1069–1074)", + "Shōho (1074–1077)", + "Shōryaku (1077–1081)", + "Eihō (1081–1084)", + "Ōtoku (1084–1087)", + "Kanji (1087–1094)", + "Kahō (1094–1096)", + "Eichō (1096–1097)", + "Jōtoku (1097–1099)", + "Kōwa (1099–1104)", + "Chōji (1104–1106)", + "Kashō (1106–1108)", + "Tennin (1108–1110)", + "Ten-ei (1110–1113)", + "Eikyū (1113–1118)", + "Gen’ei (1118–1120)", + "Hōan (1120–1124)", + "Tenji (1124–1126)", + "Daiji (1126–1131)", + "Tenshō (1131–1132)", + "Chōshō (1132–1135)", + "Hōen (1135–1141)", + "Eiji (1141–1142)", + "Kōji (1142–1144)", + "Ten’yō (1144–1145)", + "Kyūan (1145–1151)", + "Ninpei (1151–1154)", + "Kyūju (1154–1156)", + "Hōgen (1156–1159)", + "Heiji (1159–1160)", + "Eiryaku (1160–1161)", + "Ōho (1161–1163)", + "Chōkan (1163–1165)", + "Eiman (1165–1166)", + "Nin’an (1166–1169)", + "Kaō (1169–1171)", + "Shōan (1171–1175)", + "Angen (1175–1177)", + "Jishō (1177–1181)", + "Yōwa (1181–1182)", + "Juei (1182–1184)", + "Genryaku (1184–1185)", + "Bunji (1185–1190)", + "Kenkyū (1190–1199)", + "Shōji (1199–1201)", + "Kennin (1201–1204)", + "Genkyū (1204–1206)", + "Ken’ei (1206–1207)", + "Jōgen (1207–1211)", + "Kenryaku (1211–1213)", + "Kenpō (1213–1219)", + "Jōkyū (1219–1222)", + "Jōō (1222–1224)", + "Gennin (1224–1225)", + "Karoku (1225–1227)", + "Antei (1227–1229)", + "Kanki (1229–1232)", + "Jōei (1232–1233)", + "Tenpuku (1233–1234)", + "Bunryaku (1234–1235)", + "Katei (1235–1238)", + "Ryakunin (1238–1239)", + "En’ō (1239–1240)", + "Ninji (1240–1243)", + "Kangen (1243–1247)", + "Hōji (1247–1249)", + "Kenchō (1249–1256)", + "Kōgen (1256–1257)", + "Shōka (1257–1259)", + "Shōgen (1259–1260)", + "Bun’ō (1260–1261)", + "Kōchō (1261–1264)", + "Bun’ei (1264–1275)", + "Kenji (1275–1278)", + "Kōan (1278–1288)", + "Shōō (1288–1293)", + "Einin (1293–1299)", + "Shōan (1299–1302)", + "Kengen (1302–1303)", + "Kagen (1303–1306)", + "Tokuji (1306–1308)", + "Enkyō (1308–1311)", + "Ōchō (1311–1312)", + "Shōwa (1312–1317)", + "Bunpō (1317–1319)", + "Genō (1319–1321)", + "Genkō (1321–1324)", + "Shōchū (1324–1326)", + "Karyaku (1326–1329)", + "Gentoku (1329–1331)", + "Genkō (1331–1334)", + "Kenmu (1334–1336)", + "Engen (1336–1340)", + "Kōkoku (1340–1346)", + "Shōhei (1346–1370)", + "Kentoku (1370–1372)", + "Bunchū (1372–1375)", + "Tenju (1375–1379)", + "Kōryaku (1379–1381)", + "Kōwa (1381–1384)", + "Genchū (1384–1392)", + "Meitoku (1384–1387)", + "Kakei (1387–1389)", + "Kōō (1389–1390)", + "Meitoku (1390–1394)", + "Ōei (1394–1428)", + "Shōchō (1428–1429)", + "Eikyō (1429–1441)", + "Kakitsu (1441–1444)", + "Bun’an (1444–1449)", + "Hōtoku (1449–1452)", + "Kyōtoku (1452–1455)", + "Kōshō (1455–1457)", + "Chōroku (1457–1460)", + "Kanshō (1460–1466)", + "Bunshō (1466–1467)", + "Ōnin (1467–1469)", + "Bunmei (1469–1487)", + "Chōkyō (1487–1489)", + "Entoku (1489–1492)", + "Meiō (1492–1501)", + "Bunki (1501–1504)", + "Eishō (1504–1521)", + "Taiei (1521–1528)", + "Kyōroku (1528–1532)", + "Tenbun (1532–1555)", + "Kōji (1555–1558)", + "Eiroku (1558–1570)", + "Genki (1570–1573)", + "Tenshō (1573–1592)", + "Bunroku (1592–1596)", + "Keichō (1596–1615)", + "Genna (1615–1624)", + "Kan’ei (1624–1644)", + "Shōho (1644–1648)", + "Keian (1648–1652)", + "Jōō (1652–1655)", + "Meireki (1655–1658)", + "Manji (1658–1661)", + "Kanbun (1661–1673)", + "Enpō (1673–1681)", + "Tenna (1681–1684)", + "Jōkyō (1684–1688)", + "Genroku (1688–1704)", + "Hōei (1704–1711)", + "Shōtoku (1711–1716)", + "Kyōhō (1716–1736)", + "Genbun (1736–1741)", + "Kanpō (1741–1744)", + "Enkyō (1744–1748)", + "Kan’en (1748–1751)", + "Hōreki (1751–1764)", + "Meiwa (1764–1772)", + "An’ei (1772–1781)", + "Tenmei (1781–1789)", + "Kansei (1789–1801)", + "Kyōwa (1801–1804)", + "Bunka (1804–1818)", + "Bunsei (1818–1830)", + "Tenpō (1830–1844)", + "Kōka (1844–1848)", + "Kaei (1848–1854)", + "Ansei (1854–1860)", + "Man’en (1860–1861)", + "Bunkyū (1861–1864)", + "Genji (1864–1865)", + "Keiō (1865–1868)", + "M", + "T", + "S", + "ه‍", + "ر", + } + wide{ + "Taika (645–650)", + "Hakuchi (650–671)", + "Hakuhō (672–686)", + "Shuchō (686–701)", + "Taihō (701–704)", + "Keiun (704–708)", + "Wadō (708–715)", + "Reiki (715–717)", + "Yōrō (717–724)", + "Jinki (724–729)", + "Tenpyō (729–749)", + "Tenpyō-kampō (749–749)", + "Tenpyō-shōhō (749–757)", + "Tenpyō-hōji (757–765)", + "Tenpyō-jingo (765–767)", + "Jingo-keiun (767–770)", + "Hōki (770–780)", + "Ten-ō (781–782)", + "Enryaku (782–806)", + "Daidō (806–810)", + "Kōnin (810–824)", + "Tenchō (824–834)", + "Jōwa (834–848)", + "Kajō (848–851)", + "Ninju (851–854)", + "Saikō (854–857)", + "Ten-an (857–859)", + "Jōgan (859–877)", + "Gangyō (877–885)", + "Ninna (885–889)", + "Kanpyō (889–898)", + "Shōtai (898–901)", + "Engi (901–923)", + "Enchō (923–931)", + "Jōhei (931–938)", + "Tengyō (938–947)", + "Tenryaku (947–957)", + "Tentoku (957–961)", + "Ōwa (961–964)", + "Kōhō (964–968)", + "Anna (968–970)", + "Tenroku (970–973)", + "Ten’en (973–976)", + "Jōgen (976–978)", + "Tengen (978–983)", + "Eikan (983–985)", + "Kanna (985–987)", + "Eien (987–989)", + "Eiso (989–990)", + "Shōryaku (990–995)", + "Chōtoku (995–999)", + "Chōhō (999–1004)", + "Kankō (1004–1012)", + "Chōwa (1012–1017)", + "Kannin (1017–1021)", + "Jian (1021–1024)", + "Manju (1024–1028)", + "Chōgen (1028–1037)", + "Chōryaku (1037–1040)", + "Chōkyū (1040–1044)", + "Kantoku (1044–1046)", + "Eishō (1046–1053)", + "Tengi (1053–1058)", + "Kōhei (1058–1065)", + "Jiryaku (1065–1069)", + "Enkyū (1069–1074)", + "Shōho (1074–1077)", + "Shōryaku (1077–1081)", + "Eihō (1081–1084)", + "Ōtoku (1084–1087)", + "Kanji (1087–1094)", + "Kahō (1094–1096)", + "Eichō (1096–1097)", + "Jōtoku (1097–1099)", + "Kōwa (1099–1104)", + "Chōji (1104–1106)", + "Kashō (1106–1108)", + "Tennin (1108–1110)", + "Ten-ei (1110–1113)", + "Eikyū (1113–1118)", + "Gen’ei (1118–1120)", + "Hōan (1120–1124)", + "Tenji (1124–1126)", + "Daiji (1126–1131)", + "Tenshō (1131–1132)", + "Chōshō (1132–1135)", + "Hōen (1135–1141)", + "Eiji (1141–1142)", + "Kōji (1142–1144)", + "Ten’yō (1144–1145)", + "Kyūan (1145–1151)", + "Ninpei (1151–1154)", + "Kyūju (1154–1156)", + "Hōgen (1156–1159)", + "Heiji (1159–1160)", + "Eiryaku (1160–1161)", + "Ōho (1161–1163)", + "Chōkan (1163–1165)", + "Eiman (1165–1166)", + "Nin’an (1166–1169)", + "Kaō (1169–1171)", + "Shōan (1171–1175)", + "Angen (1175–1177)", + "Jishō (1177–1181)", + "Yōwa (1181–1182)", + "Juei (1182–1184)", + "Genryaku (1184–1185)", + "Bunji (1185–1190)", + "Kenkyū (1190–1199)", + "Shōji (1199–1201)", + "Kennin (1201–1204)", + "Genkyū (1204–1206)", + "Ken’ei (1206–1207)", + "Jōgen (1207–1211)", + "Kenryaku (1211–1213)", + "Kenpō (1213–1219)", + "Jōkyū (1219–1222)", + "Jōō (1222–1224)", + "Gennin (1224–1225)", + "Karoku (1225–1227)", + "Antei (1227–1229)", + "Kanki (1229–1232)", + "Jōei (1232–1233)", + "Tenpuku (1233–1234)", + "Bunryaku (1234–1235)", + "Katei (1235–1238)", + "Ryakunin (1238–1239)", + "En’ō (1239–1240)", + "Ninji (1240–1243)", + "Kangen (1243–1247)", + "Hōji (1247–1249)", + "Kenchō (1249–1256)", + "Kōgen (1256–1257)", + "Shōka (1257–1259)", + "Shōgen (1259–1260)", + "Bun’ō (1260–1261)", + "Kōchō (1261–1264)", + "Bun’ei (1264–1275)", + "Kenji (1275–1278)", + "Kōan (1278–1288)", + "Shōō (1288–1293)", + "Einin (1293–1299)", + "Shōan (1299–1302)", + "Kengen (1302–1303)", + "Kagen (1303–1306)", + "Tokuji (1306–1308)", + "Enkyō (1308–1311)", + "Ōchō (1311–1312)", + "Shōwa (1312–1317)", + "Bunpō (1317–1319)", + "Genō (1319–1321)", + "Genkō (1321–1324)", + "Shōchū (1324–1326)", + "Karyaku (1326–1329)", + "Gentoku (1329–1331)", + "Genkō (1331–1334)", + "Kenmu (1334–1336)", + "Engen (1336–1340)", + "Kōkoku (1340–1346)", + "Shōhei (1346–1370)", + "Kentoku (1370–1372)", + "Bunchū (1372–1375)", + "Tenju (1375–1379)", + "Kōryaku (1379–1381)", + "Kōwa (1381–1384)", + "Genchū (1384–1392)", + "Meitoku (1384–1387)", + "Kakei (1387–1389)", + "Kōō (1389–1390)", + "Meitoku (1390–1394)", + "Ōei (1394–1428)", + "Shōchō (1428–1429)", + "Eikyō (1429–1441)", + "Kakitsu (1441–1444)", + "Bun’an (1444–1449)", + "Hōtoku (1449–1452)", + "Kyōtoku (1452–1455)", + "Kōshō (1455–1457)", + "Chōroku (1457–1460)", + "Kanshō (1460–1466)", + "Bunshō (1466–1467)", + "Ōnin (1467–1469)", + "Bunmei (1469–1487)", + "Chōkyō (1487–1489)", + "Entoku (1489–1492)", + "Meiō (1492–1501)", + "Bunki (1501–1504)", + "Eishō (1504–1521)", + "Taiei (1521–1528)", + "Kyōroku (1528–1532)", + "Tenbun (1532–1555)", + "Kōji (1555–1558)", + "Eiroku (1558–1570)", + "Genki (1570–1573)", + "Tenshō (1573–1592)", + "Bunroku (1592–1596)", + "Keichō (1596–1615)", + "Genna (1615–1624)", + "Kan’ei (1624–1644)", + "Shōho (1644–1648)", + "Keian (1648–1652)", + "Jōō (1652–1655)", + "Meireki (1655–1658)", + "Manji (1658–1661)", + "Kanbun (1661–1673)", + "Enpō (1673–1681)", + "Tenna (1681–1684)", + "Jōkyō (1684–1688)", + "Genroku (1688–1704)", + "Hōei (1704–1711)", + "Shōtoku (1711–1716)", + "Kyōhō (1716–1736)", + "Genbun (1736–1741)", + "Kanpō (1741–1744)", + "Enkyō (1744–1748)", + "Kan’en (1748–1751)", + "Hōreki (1751–1764)", + "Meiwa (1764–1772)", + "An’ei (1772–1781)", + "Tenmei (1781–1789)", + "Kansei (1789–1801)", + "Kyōwa (1801–1804)", + "Bunka (1804–1818)", + "Bunsei (1818–1830)", + "Tenpō (1830–1844)", + "Kōka (1844–1848)", + "Kaei (1848–1854)", + "Ansei (1854–1860)", + "Man’en (1860–1861)", + "Bunkyū (1861–1864)", + "Genji (1864–1865)", + "Keiō (1865–1868)", + "Meiji", + "Taishō", + "Shōwa", + "هیسی", + "ریوا", + } + } + } + persian{ + DateTimePatterns{ + "H:mm:ss (zzzz)", + "H:mm:ss (z)", + "H:mm:ss", + "H:mm", + "y MMMM d, EEEE", + "d MMMM y", + "d MMM y", + "y/M/d", + "{1}،‏ {0}", + "{1}، ساعت {0}", + "{1}، ساعت {0}", + "{1}،‏ {0}", + "{1}،‏ {0}", + } + availableFormats{ + Ed{"E dم"} + y{"y"} + yyyy{"y"} + yyyyM{"y/M"} + yyyyMEd{"E y/M/d"} + yyyyMMM{"MMM y"} + yyyyMMMEd{"E d MMM y"} + yyyyMMMM{"y MMMM"} + yyyyMMMd{"d MMM y"} + yyyyMd{"y/M/d"} + yyyyQQQ{"QQQQ y"} + yyyyQQQQ{"QQQQ y"} + } + eras{ + abbreviated{ + "ه‍.ش.", + } + narrow{ + "ه‍.ش.", + } + wide{ + "هجری شمسی", + } + } + intervalFormats{ + Gy{ + G{"y G تا y G"} + y{"y تا y G"} + } + GyM{ + G{"y/M GGGGG تا y/M GGGGG"} + M{"y/M تا y/M GGGGG"} + y{"y/M تا y/M GGGGG"} + } + GyMEd{ + G{"E y/M/d GGGGG تا E y/M/d GGGGG"} + M{"E y/M/d تا E y/M/d GGGGG"} + d{"E y/M/d تا E y/M/d GGGGG"} + y{"E y/M/d تا E y/M/d GGGGG"} + } + GyMMM{ + G{"MMM y G تا MMM y G"} + M{"LLL تا MMM y G"} + y{"MMM y تا MMM y G"} + } + GyMMMEd{ + G{"E d MMM y G تا E d MMM y G"} + M{"E d LLL تا E d MMM y G"} + d{"E d LLL تا E d MMM y G"} + y{"E d MMM y تا E d MMM y G"} + } + GyMMMd{ + G{"d MMM y G تا d MMM y G"} + M{"d LLL تا d MMM y G"} + d{"d تا d MMM y G"} + y{"d MMM y تا d MMM y G"} + } + GyMd{ + G{"y/M/d GGGGG تا y/M/d GGGGG"} + M{"y/M/d تا y/M/d GGGGG"} + d{"y/M/d تا y/M/d GGGGG"} + y{"y/M/d تا y/M/d GGGGG"} + } + MMM{ + M{"LLL تا LLL"} + } + y{ + y{"y تا y"} + } + yM{ + M{"y/M تا y/M"} + y{"y/M تا y/M"} + } + yMEd{ + M{"E y/M/d تا E y/M/d"} + d{"E y/M/d تا E y/M/d"} + y{"E y/M/d تا E y/M/d"} + } + yMMM{ + M{"LLL تا MMM y"} + y{"MMM y تا MMM y"} + } + yMMMEd{ + M{"E d LLL تا E d MMM y"} + d{"E d LLL تا E d MMM y"} + y{"E d MMM y تا E d MMM y"} + } + yMMMM{ + M{"LLLL تا MMMM y"} + y{"MMMM y تا MMMM y"} + } + yMMMd{ + M{"d LLL تا d MMM y"} + d{"d تا d MMM y"} + y{"d MMM y تا d MMM y"} + } + yMd{ + M{"y/M/d تا y/M/d"} + d{"y/M/d تا y/M/d"} + y{"y/M/d تا y/M/d"} + } + } + monthNames{ + format{ + abbreviated{ + "فروردین", + "اردیبهشت", + "خرداد", + "تیر", + "مرداد", + "شهریور", + "مهر", + "آبان", + "آذر", + "دی", + "بهمن", + "اسفند", + } + narrow{ + "ف", + "ا", + "خ", + "ت", + "م", + "ش", + "م", + "آ", + "آ", + "د", + "ب", + "ا", + } + wide{ + "فروردین", + "اردیبهشت", + "خرداد", + "تیر", + "مرداد", + "شهریور", + "مهر", + "آبان", + "آذر", + "دی", + "بهمن", + "اسفند", + } + } + stand-alone{ + abbreviated{ + "فروردین", + "اردیبهشت", + "خرداد", + "تیر", + "مرداد", + "شهریور", + "مهر", + "آبان", + "آذر", + "دی", + "بهمن", + "اسفند", + } + narrow{ + "ف", + "ا", + "خ", + "ت", + "م", + "ش", + "م", + "آ", + "آ", + "د", + "ب", + "ا", + } + wide{ + "فروردین", + "اردیبهشت", + "خرداد", + "تیر", + "مرداد", + "شهریور", + "مهر", + "آبان", + "آذر", + "دی", + "بهمن", + "اسفند", + } + } + } + } + roc{ + eras{ + abbreviated{ + "قبل از R.O.C.", + "تقویم مینگو", + } + narrow{ + "قبل از R.O.C.", + "تقویم مینگو", } wide{ "قبل از R.O.C.", @@ -2042,7 +2622,7 @@ fa{ upwards_arrows{"پیکان‌های رو به بالا"} variant_forms{"گونه‌ها"} vocalic_jamo{"جاموی آوایی"} - weather{"هوا"} + weather{"آب‌وهوا"} western_asian_scripts{"دبیره‌های آسیای غربی"} whitespace{"فضای سفید"} } @@ -2359,7 +2939,7 @@ fa{ month-narrow{ dn{"ماه"} relative{ - "-1"{"ماه پیش"} + "-1"{"ماه گذشته"} "0"{"این ماه"} "1"{"ماه آینده"} } @@ -2377,7 +2957,7 @@ fa{ month-short{ dn{"ماه"} relative{ - "-1"{"ماه پیش"} + "-1"{"ماه گذشته"} "0"{"این ماه"} "1"{"ماه آینده"} } @@ -2904,8 +3484,16 @@ fa{ or{ 2{"{0} یا {1}"} end{"{0}، یا {1}"} - middle{"{0}، {1}"} - start{"{0}، {1}"} + middle{"{0}،‏ {1}"} + start{"{0}،‏ {1}"} + } + or-narrow{ + middle{"{0}،‏ {1}"} + start{"{0}،‏ {1}"} + } + or-short{ + middle{"{0}،‏ {1}"} + start{"{0}،‏ {1}"} } standard{ 2{"{0} و {1}"} @@ -2914,8 +3502,8 @@ fa{ start{"{0}،‏ {1}"} } standard-narrow{ - 2{"{0}، {1}"} - end{"{0}، و {1}"} + 2{"{0}،‏ {1}"} + end{"{0}،‏ {1}"} middle{"{0}،‏ {1}"} start{"{0}،‏ {1}"} } @@ -2950,31 +3538,16 @@ fa{ metric{"متریک"} } parse{ - date{ - lenient{ - "[\\--/]", - "[\\:∶]", - } - } - general{ - lenient{ - "[.․。︒﹒.。]", - "['ʼ՚᾽᾿’']", - "[%٪﹪%]", - "[؉‰]", - "[\$﹩$$]", - "[£₤]", - "[¥¥]", - "[₩₩]", - "[₨₹{Rp}{Rs}]", - } - } number{ lenient{ - "[\\-‒⁻₋−➖﹣-]", + "[\\-‐‒–⁻₋−➖﹣-]", "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/fa_AF.txt b/source/data/locales/fa_AF.txt index 3ca9505..7f1beb2 100644 --- a/source/data/locales/fa_AF.txt +++ b/source/data/locales/fa_AF.txt @@ -18,7 +18,7 @@ fa_AF{ } } } - Version{"2.1.47.86"} + Version{"36"} calendar{ gregorian{ appendItems{ @@ -51,6 +51,7 @@ fa_AF{ afternoon2{"بعدازچاشت"} morning1{"بامداد"} morning2{"صبح"} + night1{"شب"} night2{"نیمه‌شب"} } wide{ @@ -58,6 +59,7 @@ fa_AF{ afternoon2{"بعدازچاشت"} morning1{"بامداد"} morning2{"صبح"} + night1{"شب"} night2{"نیمه‌شب"} } } @@ -67,10 +69,13 @@ fa_AF{ afternoon2{"بعدازچاشت"} morning1{"بامداد"} morning2{"صبح"} + night1{"شب"} night2{"نیمه‌شب"} } narrow{ afternoon1{"بعد از چاشت"} + morning1{"ب"} + night1{"ش"} } wide{ afternoon1{"ظهر"} diff --git a/source/data/locales/fa_IR.txt b/source/data/locales/fa_IR.txt index d82f90b..457a57c 100644 --- a/source/data/locales/fa_IR.txt +++ b/source/data/locales/fa_IR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fa_IR{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/ff.txt b/source/data/locales/ff.txt index 2cd28c1..cbc3521 100644 --- a/source/data/locales/ff.txt +++ b/source/data/locales/ff.txt @@ -4,7 +4,7 @@ ff{ AuxExemplarCharacters{"[q v x z]"} ExemplarCharacters{"[a b ɓ c d ɗ e f g h i j k l m n ñ ŋ o p r s t u w y ƴ]"} ExemplarCharactersIndex{"[A B Ɓ C D Ɗ E F G H I J K L M N Ñ Ŋ O P R S T U W Y Ƴ]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -16,7 +16,7 @@ ff{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ff_Latn.txt b/source/data/locales/ff_Latn.txt index b0c2bc1..055ec0f 100644 --- a/source/data/locales/ff_Latn.txt +++ b/source/data/locales/ff_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ff_Latn_BF.txt b/source/data/locales/ff_Latn_BF.txt index df14b7a..e3eb04f 100644 --- a/source/data/locales/ff_Latn_BF.txt +++ b/source/data/locales/ff_Latn_BF.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn_BF{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ff_Latn_CM.txt b/source/data/locales/ff_Latn_CM.txt index 7dc4901..0c9820b 100644 --- a/source/data/locales/ff_Latn_CM.txt +++ b/source/data/locales/ff_Latn_CM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn_CM{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ff_Latn_GH.txt b/source/data/locales/ff_Latn_GH.txt index 5a71301..290a0a5 100644 --- a/source/data/locales/ff_Latn_GH.txt +++ b/source/data/locales/ff_Latn_GH.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn_GH{ - Version{"2.1.49.34"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/ff_Latn_GM.txt b/source/data/locales/ff_Latn_GM.txt index 37f784d..c5d4a04 100644 --- a/source/data/locales/ff_Latn_GM.txt +++ b/source/data/locales/ff_Latn_GM.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn_GM{ - Version{"2.1.49.34"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/ff_Latn_GN.txt b/source/data/locales/ff_Latn_GN.txt index 5cb6c63..dc4840d 100644 --- a/source/data/locales/ff_Latn_GN.txt +++ b/source/data/locales/ff_Latn_GN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn_GN{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ff_Latn_GW.txt b/source/data/locales/ff_Latn_GW.txt index 981f85b..939dbd3 100644 --- a/source/data/locales/ff_Latn_GW.txt +++ b/source/data/locales/ff_Latn_GW.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn_GW{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ff_Latn_LR.txt b/source/data/locales/ff_Latn_LR.txt index e611a41..8a73979 100644 --- a/source/data/locales/ff_Latn_LR.txt +++ b/source/data/locales/ff_Latn_LR.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn_LR{ - Version{"2.1.49.34"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/ff_Latn_MR.txt b/source/data/locales/ff_Latn_MR.txt index ef1229b..59be8af 100644 --- a/source/data/locales/ff_Latn_MR.txt +++ b/source/data/locales/ff_Latn_MR.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn_MR{ - Version{"2.1.47.82"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/ff_Latn_NE.txt b/source/data/locales/ff_Latn_NE.txt index cdbc15b..0fe9df0 100644 --- a/source/data/locales/ff_Latn_NE.txt +++ b/source/data/locales/ff_Latn_NE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn_NE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ff_Latn_NG.txt b/source/data/locales/ff_Latn_NG.txt index a758d18..7ff7ee7 100644 --- a/source/data/locales/ff_Latn_NG.txt +++ b/source/data/locales/ff_Latn_NG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn_NG{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ff_Latn_SL.txt b/source/data/locales/ff_Latn_SL.txt index 3c0d214..a35dd77 100644 --- a/source/data/locales/ff_Latn_SL.txt +++ b/source/data/locales/ff_Latn_SL.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn_SL{ - Version{"2.1.49.34"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/ff_Latn_SN.txt b/source/data/locales/ff_Latn_SN.txt index 8ac3521..616627a 100644 --- a/source/data/locales/ff_Latn_SN.txt +++ b/source/data/locales/ff_Latn_SN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn_SN{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/fi.txt b/source/data/locales/fi.txt index e77b109..624b030 100644 --- a/source/data/locales/fi.txt +++ b/source/data/locales/fi.txt @@ -17,9 +17,10 @@ fi{ ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s š t u v w x y z ž å ä ö]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å Ä Ö]"} ExemplarCharactersNumbers{"[  , % ‰ + − 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – , ; \\: ! ? . … ’ ” » ( ) \\[ \\] § @ * / \\\\ \\& #]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – , ; \\: ! ? . … ’ ” » ( ) \\[ \\] § @ * / \\\\ \\& #]"} MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -30,6 +31,7 @@ fi{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -192,10 +194,12 @@ fi{ exponential{"E"} group{" "} infinity{"∞"} + list{";"} minusSign{"−"} nan{"epäluku"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{"."} } @@ -209,8 +213,10 @@ fi{ other{"{0} päivää"} } } + minimumGroupingDigits{"1"} + native{"latn"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -492,10 +498,6 @@ fi{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } Bhm{ B{"h.mm B – h.mm B"} h{"h.mm–h.mm B"} @@ -517,21 +519,21 @@ fi{ y{"E d.M.y – E d.M.y GGGGG"} } GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM–MMM y G"} - y{"MMM y – MMM y G"} + G{"M.y G – M.y G"} + M{"M.–M.y G"} + y{"M.y–M.y G"} } GyMMMEd{ - G{"E d. MMM y – E d. MMM y G"} - M{"E d. MMM – E d. MMM y G"} - d{"E d. MMM – E d. MMM y G"} - y{"E d. MMM y – E d. MMM y G"} + G{"E d.M.y – E d.M.y G"} + M{"E d.M. – E d.M.y G"} + d{"E d.M. – E d.M.y G"} + y{"E d.M.y – E d.M.y G"} } GyMMMd{ - G{"d. MMM y G – d. MMM y G"} - M{"d. MMM – d. MMM y G"} - d{"d.–d. MMM, y G"} - y{"d. MMM y – d. MMM y G"} + G{"d.M.y G – d.M.y G"} + M{"d.M.–d.M.y G"} + d{"d.–d.M.y G"} + y{"d.M.y – d.M.y G"} } GyMd{ G{"d.M.y GGGGG – d.M.y GGGGG"} @@ -900,10 +902,6 @@ fi{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } Bhm{ B{"h.mm B – h.mm B"} h{"h.mm–h.mm B"} @@ -930,16 +928,16 @@ fi{ y{"MMM y – MMM y G"} } GyMMMEd{ - G{"E d. MMM y – E d. MMM y G"} - M{"E d. MMM – E d. MMM y G"} - d{"E d. MMM – E d. MMM y G"} - y{"E d. MMM y – E d. MMM y G"} + G{"E d.M.y – E d.M.y G"} + M{"E d.M. – E d.M.y G"} + d{"E d.M – E d.M.y G"} + y{"E d.M.y – E d.M.y G"} } GyMMMd{ - G{"d.–d. MMM, y G"} - M{"d. MMM – d. MMM y G"} - d{"d.–d. MMM, y G"} - y{"d. MMM y – d. MMM y G"} + G{"d.M.y. G – d.M.y G"} + M{"d.M–d.M.y G"} + d{"d.–d.M.y G"} + y{"d.M.y–d.M.y G"} } GyMd{ G{"d.M.y GGGGG – d.M.y GGGGG"} @@ -2467,12 +2465,6 @@ fi{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} ja {1}"} - end{"{0} ja {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} ja {1}"} end{"{0} ja {1}"} diff --git a/source/data/locales/fi_FI.txt b/source/data/locales/fi_FI.txt index 7074808..9e93632 100644 --- a/source/data/locales/fi_FI.txt +++ b/source/data/locales/fi_FI.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fi_FI{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fil.txt b/source/data/locales/fil.txt index 1dc80f7..f804dfc 100644 --- a/source/data/locales/fil.txt +++ b/source/data/locales/fil.txt @@ -12,8 +12,8 @@ fil{ } ExemplarCharacters{"[a b c d e f g h i j k l m n ñ {ng} o p q r s t u v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N Ñ {Ng} O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § * / \\& # ′ ″]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § * / \\& # ′ ″]"} MoreInformation{"?"} NumberElements{ default{"latn"} @@ -25,6 +25,7 @@ fil{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -183,11 +184,16 @@ fil{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -205,7 +211,7 @@ fil{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -224,15 +230,21 @@ fil{ "{1}, {0}", } availableFormats{ + E{"ccc"} Ed{"d E"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E, MMM d, y G"} GyMMMd{"MMM d, y G"} + M{"L"} MEd{"E, M/d"} + MMM{"LLL"} MMMEd{"E, MMM d"} MMMMEd{"E, MMMM d"} + MMMMd{"MMMM d"} + MMMd{"MMM d"} Md{"M/d"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M/y GGGGG"} @@ -246,7 +258,32 @@ fil{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } + eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } + wide{ + "BE", + } + } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -261,10 +298,36 @@ fil{ M{"E, MMM d – E, MMM d"} d{"E, MMM d – E, MMM d"} } + MMMd{ + M{"MMM d – MMM d"} + d{"MMM d–d"} + } Md{ M{"M/d – M/d"} d{"M/d – M/d"} } + d{ + d{"d–d"} + } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -319,15 +382,21 @@ fil{ "{1}, {0}", } availableFormats{ + E{"ccc"} Ed{"d E"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E, MMM d, y G"} GyMMMd{"MMM d, y G"} + M{"L"} MEd{"E, M/d"} + MMM{"LLL"} MMMEd{"E, MMM d"} MMMMEd{"E, MMMM d"} + MMMMd{"MMMM d"} + MMMd{"MMM d"} Md{"M/d"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M/y GGGGG"} @@ -341,7 +410,35 @@ fil{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -356,10 +453,36 @@ fil{ M{"E, MMM d – E, MMM d"} d{"E, MMM d – E, MMM d"} } + MMMd{ + M{"MMM d – MMM d"} + d{"MMM d–d"} + } Md{ M{"M/d – M/d"} d{"M/d – M/d"} } + d{ + d{"d–d"} + } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -396,6 +519,102 @@ fil{ y{"M/d/y – M/d/y GGGGG"} } } + monthNames{ + format{ + abbreviated{ + "Tout", + "Baba", + "Hator", + "Kiahk", + "Toba", + "Amshir", + "Baramhat", + "Baramouda", + "Bashans", + "Paona", + "Epep", + "Mesra", + "Nasie", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } + wide{ + "Tout", + "Baba", + "Hator", + "Kiahk", + "Toba", + "Amshir", + "Baramhat", + "Baramouda", + "Bashans", + "Paona", + "Epep", + "Mesra", + "Nasie", + } + } + stand-alone{ + abbreviated{ + "Tout", + "Baba", + "Hator", + "Kiahk", + "Toba", + "Amshir", + "Baramhat", + "Baramouda", + "Bashans", + "Paona", + "Epep", + "Mesra", + "Nasie", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } + wide{ + "Tout", + "Baba", + "Hator", + "Kiahk", + "Toba", + "Amshir", + "Baramhat", + "Baramouda", + "Bashans", + "Paona", + "Epep", + "Mesra", + "Nasie", + } + } + } } ethiopic{ DateTimePatterns{ @@ -414,15 +633,21 @@ fil{ "{1}, {0}", } availableFormats{ + E{"ccc"} Ed{"d E"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E, MMM d, y G"} GyMMMd{"MMM d, y G"} + M{"L"} MEd{"E, M/d"} + MMM{"LLL"} MMMEd{"E, MMM d"} MMMMEd{"E, MMMM d"} + MMMMd{"MMMM d"} + MMMd{"MMM d"} Md{"M/d"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M/y GGGGG"} @@ -436,7 +661,35 @@ fil{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -451,10 +704,36 @@ fil{ M{"E, MMM d – E, MMM d"} d{"E, MMM d – E, MMM d"} } + MMMd{ + M{"MMM d – MMM d"} + d{"MMM d–d"} + } Md{ M{"M/d – M/d"} d{"M/d – M/d"} } + d{ + d{"d–d"} + } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -491,6 +770,102 @@ fil{ y{"M/d/y – M/d/y GGGGG"} } } + monthNames{ + format{ + abbreviated{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } + wide{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } + } + stand-alone{ + abbreviated{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } + wide{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } + } + } } generic{ DateTimePatterns{ @@ -554,15 +929,6 @@ fil{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y – y G"} @@ -601,6 +967,20 @@ fil{ d{"M/d/y – M/d/y GGGGG"} y{"M/d/y – M/d/y GGGGG"} } + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -627,6 +1007,24 @@ fil{ d{"d–d"} } fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -914,15 +1312,6 @@ fil{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y – y G"} @@ -1205,15 +1594,21 @@ fil{ "{1}, {0}", } availableFormats{ + E{"ccc"} Ed{"d E"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E, MMM d, y G"} GyMMMd{"MMM d, y G"} + M{"L"} MEd{"E, MMM d"} + MMM{"LLL"} MMMEd{"E, MMM d"} MMMMEd{"E, MMMM d"} + MMMMd{"MMMM d"} + MMMd{"MMM d"} Md{"MMM d"} + d{"d"} y{"y"} yyyy{"y G"} yyyyM{"M/y GGGGG"} @@ -1227,7 +1622,32 @@ fil{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -1242,10 +1662,36 @@ fil{ M{"E, MMM d – E, MMM d"} d{"E, MMM d – E, MMM d"} } + MMMd{ + M{"MMM d – MMM d"} + d{"MMM d–d"} + } Md{ M{"MMM d – MMM d"} d{"M/d – M/d"} } + d{ + d{"d–d"} + } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -1282,6 +1728,108 @@ fil{ y{"MMM d y – MMM d y"} } } + monthNames{ + format{ + abbreviated{ + "Tishri", + "Heshvan", + "Kislev", + "Tevet", + "Shevat", + "Adar I", + "Adar", + "Nisan", + "Iyar", + "Sivan", + "Tamuz", + "Av", + "Elul", + "Adar II", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } + wide{ + "Tishri", + "Heshvan", + "Kislev", + "Tevet", + "Shevat", + "Adar I", + "Adar", + "Nisan", + "Iyar", + "Sivan", + "Tamuz", + "Av", + "Elul", + "Adar II", + } + } + stand-alone{ + abbreviated{ + "Tishri", + "Heshvan", + "Kislev", + "Tevet", + "Shevat", + "Adar I", + "Adar", + "Nisan", + "Iyar", + "Sivan", + "Tamuz", + "Av", + "Elul", + "Adar II", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } + wide{ + "Tishri", + "Heshvan", + "Kislev", + "Tevet", + "Shevat", + "Adar I", + "Adar", + "Nisan", + "Iyar", + "Sivan", + "Tamuz", + "Av", + "Elul", + "Adar II", + } + } + } } indian{ DateTimePatterns{ @@ -1300,15 +1848,21 @@ fil{ "{1}, {0}", } availableFormats{ + E{"ccc"} Ed{"d E"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E, MMM d, y G"} GyMMMd{"MMM d, y G"} + M{"L"} MEd{"E, M/d"} + MMM{"LLL"} MMMEd{"E, MMM d"} MMMMEd{"E, MMMM d"} + MMMMd{"MMMM d"} + MMMd{"MMM d"} Md{"M/d"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M/y GGGGG"} @@ -1322,7 +1876,32 @@ fil{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } + eras{ + abbreviated{ + "Saka", + } + narrow{ + "Saka", + } + wide{ + "Saka", + } + } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -1330,16 +1909,42 @@ fil{ M{"E, M/d – E, M/d"} d{"E, M/d – E, M/d"} } - MMM{ - M{"MMM–MMM"} + MMM{ + M{"MMM–MMM"} + } + MMMEd{ + M{"E, MMM d – E, MMM d"} + d{"E, MMM d – E, MMM d"} + } + MMMd{ + M{"MMM d – MMM d"} + d{"MMM d–d"} + } + Md{ + M{"M/d – M/d"} + d{"M/d – M/d"} + } + d{ + d{"d–d"} + } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} } - MMMEd{ - M{"E, MMM d – E, MMM d"} - d{"E, MMM d – E, MMM d"} + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} } - Md{ - M{"M/d – M/d"} - d{"M/d – M/d"} + hv{ + a{"h a – h a v"} + h{"h–h a v"} } y{ y{"y–y G"} @@ -1377,6 +1982,96 @@ fil{ y{"M/d/y – M/d/y GGGGG"} } } + monthNames{ + format{ + abbreviated{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + } + stand-alone{ + abbreviated{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + } + } } islamic{ DateTimePatterns{ @@ -1395,15 +2090,21 @@ fil{ "{1}, {0}", } availableFormats{ + E{"ccc"} Ed{"d E"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E, MMM d, y G"} GyMMMd{"MMM d, y G"} + M{"L"} MEd{"E, M/d"} + MMM{"LLL"} MMMEd{"E, MMM d"} MMMMEd{"E, MMMM d"} + MMMMd{"MMMM d"} + MMMd{"MMM d"} Md{"M/d"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M/y GGGGG"} @@ -1417,7 +2118,32 @@ fil{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } + eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } + wide{ + "AH", + } + } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -1432,10 +2158,36 @@ fil{ M{"E, MMM d – E, MMM d"} d{"E, MMM d – E, MMM d"} } + MMMd{ + M{"MMM d – MMM d"} + d{"MMM d–d"} + } Md{ M{"M/d – M/d"} d{"M/d – M/d"} } + d{ + d{"d–d"} + } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -1472,6 +2224,96 @@ fil{ y{"M/d/y – M/d/y GGGGG"} } } + monthNames{ + format{ + abbreviated{ + "Muh.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dhuʻl-Q.", + "Dhuʻl-H.", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Muharram", + "Safar", + "Rabiʻ I", + "Rabiʻ II", + "Jumada I", + "Jumada II", + "Rajab", + "Shaʻban", + "Ramadan", + "Shawwal", + "Dhuʻl-Qiʻdah", + "Dhuʻl-Hijjah", + } + } + stand-alone{ + abbreviated{ + "Muh.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dhuʻl-Q.", + "Dhuʻl-H.", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Muharram", + "Safar", + "Rabiʻ I", + "Rabiʻ II", + "Jumada I", + "Jumada II", + "Rajab", + "Shaʻban", + "Ramadan", + "Shawwal", + "Dhuʻl-Qiʻdah", + "Dhuʻl-Hijjah", + } + } + } } persian{ DateTimePatterns{ @@ -1490,15 +2332,21 @@ fil{ "{1}, {0}", } availableFormats{ + E{"ccc"} Ed{"d E"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E, MMM d, y G"} GyMMMd{"MMM d, y G"} + M{"L"} MEd{"E, M/d"} + MMM{"LLL"} MMMEd{"E, MMM d"} MMMMEd{"E, MMMM d"} + MMMMd{"MMMM d"} + MMMd{"MMM d"} Md{"M/d"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M/y GGGGG"} @@ -1512,7 +2360,32 @@ fil{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -1527,10 +2400,36 @@ fil{ M{"E, MMM d – E, MMM d"} d{"E, MMM d – E, MMM d"} } + MMMd{ + M{"MMM d – MMM d"} + d{"MMM d–d"} + } Md{ M{"M/d – M/d"} d{"M/d – M/d"} } + d{ + d{"d–d"} + } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -1567,6 +2466,96 @@ fil{ y{"M/d/y – M/d/y GGGGG"} } } + monthNames{ + format{ + abbreviated{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + } + stand-alone{ + abbreviated{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + } + } } roc{ DateTimePatterns{ @@ -1585,15 +2574,21 @@ fil{ "{1}, {0}", } availableFormats{ + E{"ccc"} Ed{"d E"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E, MMM d, y G"} GyMMMd{"MMM d, y G"} + M{"L"} MEd{"E, M/d"} + MMM{"LLL"} MMMEd{"E, MMM d"} MMMMEd{"E, MMMM d"} + MMMMd{"MMMM d"} + MMMd{"MMM d"} Md{"M/d"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M/y GGGGG"} @@ -1622,6 +2617,20 @@ fil{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -1636,10 +2645,36 @@ fil{ M{"E, MMM d – E, MMM d"} d{"E, MMM d – E, MMM d"} } + MMMd{ + M{"MMM d – MMM d"} + d{"MMM d–d"} + } Md{ M{"M/d – M/d"} d{"M/d – M/d"} } + d{ + d{"d–d"} + } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -1699,7 +2734,6 @@ fil{ downwards_arrows{"pababang arrow"} downwards_upwards_arrows{"pababa at pataas na arrow"} east_asian_scripts{"Script ng Silangang Asya"} - emoji{"Emoji"} european_scripts{"Script sa Europa"} female{"babae"} flag{"bandila"} @@ -1747,7 +2781,7 @@ fil{ punctuation{"bantas"} rightwards_arrows{"pakanang arrow"} sign_standard_symbols{"tanda o simbolo"} - small_form_variant{"maliliit na baryante"} + small_form_variant{"maliliit na variant"} smiley{"smiley"} smileys_people{"smiley o tao"} south_asian_scripts{"Script sa Timog-asya"} @@ -1760,7 +2794,7 @@ fil{ travel{"paglalakbay"} travel_places{"paglalakbay o lugar"} upwards_arrows{"mga pataas na arrow"} - variant_forms{"baryante"} + variant_forms{"variant"} vocalic_jamo{"vocalic jamo"} weather{"panahon"} western_asian_scripts{"Script sa Kanlurang Asya"} @@ -2615,14 +3649,10 @@ fil{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} at {1}"} end{"{0}, at {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } unit{ 2{"{0}, {1}"} @@ -2674,6 +3704,10 @@ fil{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/fil_PH.txt b/source/data/locales/fil_PH.txt index 6556990..3b92a5b 100644 --- a/source/data/locales/fil_PH.txt +++ b/source/data/locales/fil_PH.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fil_PH{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fo.txt b/source/data/locales/fo.txt index 41f0f28..aa0cea1 100644 --- a/source/data/locales/fo.txt +++ b/source/data/locales/fo.txt @@ -13,13 +13,14 @@ fo{ ExemplarCharacters{"[a á b d ð e f g h i í j k l m n o ó p r s t u ú v y ý æ ø]"} ExemplarCharactersIndex{"[A Á B C D Ð E F G H I Í J K L M N O Ó P Q R S T U Ú V W X Y Ý Z Æ Ø]"} ExemplarCharactersNumbers{"[, . % ‰ + − 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ′ ″]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ′ ″]"} MoreInformation{"?"} NumberElements{ default{"latn"} latn{ miscPatterns{ - atLeast{"{0} ella meira"} + approximately{"~{0}"} + atLeast{"{0}+"} range{"{0}–{1}"} } patterns{ @@ -210,7 +211,7 @@ fo{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.48.9"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -280,6 +281,53 @@ fo{ yyyyQQQQ{"QQQQ 'í' y G"} } intervalFormats{ + Bh{ + B{"h B – h B"} + h{"h–h B"} + } + Bhm{ + B{"h:mm B – h:mm B"} + h{"h:mm–h:mm B"} + m{"h:mm–h:mm B"} + } + Gy{ + G{"y G – y G"} + y{"y–y G"} + } + GyM{ + G{"MM.y GGGGG – MM.y GGGGG"} + M{"MM.y–MM.y GGGGG"} + y{"MM.y–MM.y GGGGG"} + } + GyMEd{ + G{"E, dd.MM.y GGGGG – E, dd.MM.y GGGGG"} + M{"E, dd.MM.y – E, dd.MM.y GGGGG"} + d{"E, dd.MM.y – E, dd.MM.y GGGGG"} + y{"E, dd.MM.y – E, dd.MM.y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM–MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E, d. MMM y G – E, d. MMM y G"} + M{"E, d. MMM – E, d. MMM y G"} + d{"E, d. MMM – E, d. MMM y G"} + y{"E, d. MMM y – E, d. MMM y G"} + } + GyMMMd{ + G{"d. MMM y G – d. MMM y G"} + M{"d. MMM – d. MMM y G"} + d{"d.–d. MMM y G"} + y{"d. MMM y – d. MMM y G"} + } + GyMd{ + G{"dd.MM.y GGGGG – dd.MM.y GGGGG"} + M{"dd.MM.y–dd.MM.y GGGGG"} + d{"dd.MM.y–dd.MM.y GGGGG"} + y{"dd.MM.y–dd.MM.y GGGGG"} + } H{ H{"HH–HH"} } @@ -581,6 +629,52 @@ fo{ } } intervalFormats{ + Bh{ + B{"h B – h B"} + } + Bhm{ + B{"h:mm B – h:mm B"} + h{"h:mm–h:mm B"} + m{"h:mm–h:mm B"} + } + Gy{ + G{"y G – y G"} + y{"y–y G"} + } + GyM{ + G{"MM.y GGGGG – MM.y GGGGG"} + M{"MM.y–MM.y GGGGG"} + y{"MM.y–MM.y GGGGG"} + } + GyMEd{ + G{"E, dd.MM.y GGGGG – E, dd.MM.y GGGGG"} + M{"E, dd.MM.y – E, dd.MM.y GGGGG"} + d{"E, dd.MM.y – E, dd.MM.y GGGGG"} + y{"E, dd.MM.y – E, dd.MM.y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM–MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E, d. MMM y G – E, d. MMM y G"} + M{"E, d. MMM – E, d. MMM y G"} + d{"E, d. MMM – E, d. MMM y G"} + y{"E, d. MMM y – E, d. MMM y G"} + } + GyMMMd{ + G{"d. MMM y G – d. MMM y G"} + M{"d. MMM – d. MMM y G"} + d{"d.–d. MMM y G"} + y{"d. MMM y – d. MMM y G"} + } + GyMd{ + G{"dd.MM.y GGGGG – dd.MM.y GGGGG"} + M{"dd.MM.y – dd.MM.y GGGGG"} + d{"dd.MM.y–dd.MM.y GGGGG"} + y{"dd.MM.y – dd.MM.y GGGGG"} + } H{ H{"HH–HH"} } @@ -1183,6 +1277,11 @@ fo{ } month-narrow{ dn{"mnð."} + relative{ + "-1"{"seinasta mnð."} + "0"{"henda mnð."} + "1"{"næsta mnð."} + } relativeTime{ future{ one{"um {0} mnð."} @@ -1196,6 +1295,11 @@ fo{ } month-short{ dn{"mnð."} + relative{ + "-1"{"seinasta mnð."} + "0"{"henda mnð."} + "1"{"næsta mnð."} + } relativeTime{ future{ one{"um {0} mnð."} @@ -1569,6 +1673,11 @@ fo{ } week-narrow{ dn{"v."} + relative{ + "-1"{"seinastu v."} + "0"{"hesu v."} + "1"{"næstu v."} + } relativePeriod{"vika nummar {0}"} relativeTime{ future{ @@ -1583,6 +1692,11 @@ fo{ } week-short{ dn{"vi."} + relative{ + "-1"{"seinastu vi."} + "0"{"hesu vi."} + "1"{"næstu vi."} + } relativePeriod{"vika nummar {0}"} relativeTime{ future{ diff --git a/source/data/locales/fo_DK.txt b/source/data/locales/fo_DK.txt index ce06a15..4318f09 100644 --- a/source/data/locales/fo_DK.txt +++ b/source/data/locales/fo_DK.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fo_DK{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/fo_FO.txt b/source/data/locales/fo_FO.txt index 56df712..bafbdf6 100644 --- a/source/data/locales/fo_FO.txt +++ b/source/data/locales/fo_FO.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fo_FO{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/fr.txt b/source/data/locales/fr.txt index 560f41a..2b0da58 100644 --- a/source/data/locales/fr.txt +++ b/source/data/locales/fr.txt @@ -15,8 +15,8 @@ fr{ " x y ÿ z]" } ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[  \\- , . % ‰ + − 0 1 2 ² 3 ³ 4 5 6 7 8 9 ᵈ ᵉ ʳ ˢ]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . … ’ \u0022 “ ” « » ( ) \\[ \\] § @ * / \\& # † ‡]"} + ExemplarCharactersNumbers{"[  \\- ‑ , . % ‰ + − 0 1 2 ² 3 ³ 4 5 6 7 8 9 ᵈ ᵉ ʳ ˢ]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ’ \u0022 “ ” « » ( ) \\[ \\] § @ * / \\& # † ‡]"} MoreInformation{"?"} NumberElements{ arab{ @@ -35,6 +35,7 @@ fr{ patterns{ accountingFormat{"#,##0.00 ¤;(#,##0.00 ¤)"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -198,9 +199,11 @@ fr{ group{" "} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -218,7 +221,7 @@ fr{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -395,6 +398,21 @@ fr{ "mis.", "al-n.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "tout", "bâbâ", @@ -427,6 +445,21 @@ fr{ "mis.", "al-n.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "tout", "bâbâ", @@ -556,6 +589,21 @@ fr{ "näh.", "pag.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "mäskäräm", "teqemt", @@ -588,6 +636,21 @@ fr{ "näh.", "pag.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "mäskäräm", "teqemt", @@ -1374,6 +1437,22 @@ fr{ "él.", "ad.II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "tichri", "hèchvan", @@ -1408,6 +1487,22 @@ fr{ "él.", "ad.II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "tichri", "hèchvan", @@ -1429,6 +1524,12 @@ fr{ } indian{ eras{ + abbreviated{ + "Saka", + } + narrow{ + "Saka", + } wide{ "ère Saka", } @@ -1449,6 +1550,20 @@ fr{ "māgh", "phāl.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "chaitra", "vaishākh", @@ -1479,6 +1594,20 @@ fr{ "māgh", "phāl.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "chaitra", "vaishākh", @@ -1709,6 +1838,20 @@ fr{ "bah.", "esf.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "farvardin", "ordibehešt", @@ -1739,6 +1882,20 @@ fr{ "bah.", "esf.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "farvardin", "ordibehešt", diff --git a/source/data/locales/fr_BE.txt b/source/data/locales/fr_BE.txt index 6e1b0a4..e03c832 100644 --- a/source/data/locales/fr_BE.txt +++ b/source/data/locales/fr_BE.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_BE{ - Version{"2.1.47.70"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/fr_BF.txt b/source/data/locales/fr_BF.txt index 7c2a796..5276eb6 100644 --- a/source/data/locales/fr_BF.txt +++ b/source/data/locales/fr_BF.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_BF{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_BI.txt b/source/data/locales/fr_BI.txt index f7aafff..43bfc13 100644 --- a/source/data/locales/fr_BI.txt +++ b/source/data/locales/fr_BI.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_BI{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_BJ.txt b/source/data/locales/fr_BJ.txt index b2f6c2c..b4a9f65 100644 --- a/source/data/locales/fr_BJ.txt +++ b/source/data/locales/fr_BJ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_BJ{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_BL.txt b/source/data/locales/fr_BL.txt index 38bad48..905173a 100644 --- a/source/data/locales/fr_BL.txt +++ b/source/data/locales/fr_BL.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_BL{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_CA.txt b/source/data/locales/fr_CA.txt index bd7fe32..0fd5c48 100644 --- a/source/data/locales/fr_CA.txt +++ b/source/data/locales/fr_CA.txt @@ -1,11 +1,9 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_CA{ + AuxExemplarCharacters{"[á å ä ã ā ē í ì ī ñ ó ò ö ø ú ǔ]"} NumberElements{ latn{ - patterns{ - decimalFormat{"#,##0.###"} - } patternsLong{ decimalFormat{ 1000{ @@ -13,22 +11,13 @@ fr_CA{ other{"0 mille"} } 10000{ + one{"00 mille"} other{"00 mille"} } 100000{ + one{"000 mille"} other{"000 mille"} } - 1000000{ - one{"0 million"} - other{"0 millions"} - } - 10000000{ - one{"00 million"} - other{"00 millions"} - } - 100000000{ - other{"000 millions"} - } } } patternsShort{ @@ -83,26 +72,6 @@ fr_CA{ } } decimalFormat{ - 1000{ - one{"0 k"} - other{"0 k"} - } - 10000{ - other{"00 k"} - } - 100000{ - other{"000 k"} - } - 1000000{ - one{"0 M"} - other{"0 M"} - } - 10000000{ - other{"00 M"} - } - 100000000{ - other{"000 M"} - } 1000000000{ one{"0 G"} other{"0 G"} @@ -131,12 +100,10 @@ fr_CA{ } symbols{ group{" "} - minusSign{"-"} - plusSign{"+"} } } } - Version{"2.1.47.86"} + Version{"36"} calendar{ coptic{ monthNames{ @@ -380,7 +347,7 @@ fr_CA{ "EEEE d MMMM y", "d MMMM y", "d MMM y", - "yy-MM-dd", + "y-MM-dd", "{1} {0}", "{1} 'à' {0}", "{1} 'à' {0}", @@ -452,6 +419,9 @@ fr_CA{ } narrow{ afternoon1{"après-midi"} + evening1{"soir"} + midnight{"minuit"} + morning1{"mat."} night1{"mat."} noon{"midi"} } @@ -460,13 +430,16 @@ fr_CA{ abbreviated{ afternoon1{"après-midi"} am{"a.m."} + evening1{"soir"} morning1{"mat."} + night1{"nuit"} pm{"p.m."} } narrow{ afternoon1{"après-midi"} am{"a.m."} evening1{"soir"} + morning1{"mat."} night1{"mat."} pm{"p.m."} } @@ -715,12 +688,6 @@ fr_CA{ } indian{ eras{ - abbreviated{ - "Saka", - } - narrow{ - "Saka", - } wide{ "Saka", } @@ -881,22 +848,6 @@ fr_CA{ alternateQuotationStart{"”"} } fields{ - day{ - relative{ - "-1"{"hier"} - "-2"{"avant-hier"} - "0"{"aujourd’hui"} - "1"{"demain"} - "2"{"après-demain"} - } - } - day-short{ - relativeTime{ - future{ - other{"dans {0} j"} - } - } - } dayOfYear{ dn{"jour de l’année"} } @@ -937,12 +888,14 @@ fr_CA{ quarter-narrow{ relative{ "-1"{"trim. dernier"} + "0"{"ce trim."} "1"{"trim.prochain"} } } quarter-short{ relative{ "-1"{"trim. dernier"} + "0"{"ce trim."} "1"{"trim. prochain"} } } @@ -1040,18 +993,6 @@ fr_CA{ weekdayOfMonth-short{ dn{"j du mois"} } - year{ - relativeTime{ - future{ - one{"Dans {0} an"} - other{"Dans {0} ans"} - } - past{ - one{"Il y a {0} an"} - other{"Il y a {0} ans"} - } - } - } year-short{ dn{"a"} } diff --git a/source/data/locales/fr_CD.txt b/source/data/locales/fr_CD.txt index b11282e..e61dbda 100644 --- a/source/data/locales/fr_CD.txt +++ b/source/data/locales/fr_CD.txt @@ -8,7 +8,7 @@ fr_CD{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ dayPeriod{ diff --git a/source/data/locales/fr_CF.txt b/source/data/locales/fr_CF.txt index 211f696..ad0c43f 100644 --- a/source/data/locales/fr_CF.txt +++ b/source/data/locales/fr_CF.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_CF{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_CG.txt b/source/data/locales/fr_CG.txt index 83176c2..e012679 100644 --- a/source/data/locales/fr_CG.txt +++ b/source/data/locales/fr_CG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_CG{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_CH.txt b/source/data/locales/fr_CH.txt index 3d78b8c..3d30884 100644 --- a/source/data/locales/fr_CH.txt +++ b/source/data/locales/fr_CH.txt @@ -4,7 +4,6 @@ fr_CH{ NumberElements{ latn{ patterns{ - currencyFormat{"#,##0.00 ¤"} percentFormat{"#,##0%"} } symbols{ @@ -12,7 +11,7 @@ fr_CH{ } } } - Version{"2.1.48.88"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/fr_CI.txt b/source/data/locales/fr_CI.txt index 5563c60..51810ed 100644 --- a/source/data/locales/fr_CI.txt +++ b/source/data/locales/fr_CI.txt @@ -8,5 +8,5 @@ fr_CI{ } } } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_CM.txt b/source/data/locales/fr_CM.txt index 34ab19a..df28b3a 100644 --- a/source/data/locales/fr_CM.txt +++ b/source/data/locales/fr_CM.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_CM{ - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ AmPmMarkers{ diff --git a/source/data/locales/fr_DJ.txt b/source/data/locales/fr_DJ.txt index 7caab33..a6dcdca 100644 --- a/source/data/locales/fr_DJ.txt +++ b/source/data/locales/fr_DJ.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_DJ{ - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/fr_DZ.txt b/source/data/locales/fr_DZ.txt index b9f95fa..245cf5e 100644 --- a/source/data/locales/fr_DZ.txt +++ b/source/data/locales/fr_DZ.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_DZ{ - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/fr_FR.txt b/source/data/locales/fr_FR.txt index cb6dc1b..19f9afd 100644 --- a/source/data/locales/fr_FR.txt +++ b/source/data/locales/fr_FR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_FR{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_GA.txt b/source/data/locales/fr_GA.txt index d88041f..b8bcc23 100644 --- a/source/data/locales/fr_GA.txt +++ b/source/data/locales/fr_GA.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_GA{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_GF.txt b/source/data/locales/fr_GF.txt index 4e70ddb..61a35cc 100644 --- a/source/data/locales/fr_GF.txt +++ b/source/data/locales/fr_GF.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_GF{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_GN.txt b/source/data/locales/fr_GN.txt index e72a210..bfc3184 100644 --- a/source/data/locales/fr_GN.txt +++ b/source/data/locales/fr_GN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_GN{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_GP.txt b/source/data/locales/fr_GP.txt index 52c6d98..112053b 100644 --- a/source/data/locales/fr_GP.txt +++ b/source/data/locales/fr_GP.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_GP{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_GQ.txt b/source/data/locales/fr_GQ.txt index 860108f..002e794 100644 --- a/source/data/locales/fr_GQ.txt +++ b/source/data/locales/fr_GQ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_GQ{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_HT.txt b/source/data/locales/fr_HT.txt index 59909a4..7848297 100644 --- a/source/data/locales/fr_HT.txt +++ b/source/data/locales/fr_HT.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_HT{ - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ dayPeriod{ diff --git a/source/data/locales/fr_KM.txt b/source/data/locales/fr_KM.txt index 0effd2c..3daa1fb 100644 --- a/source/data/locales/fr_KM.txt +++ b/source/data/locales/fr_KM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_KM{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_LU.txt b/source/data/locales/fr_LU.txt index 0df7845..6812804 100644 --- a/source/data/locales/fr_LU.txt +++ b/source/data/locales/fr_LU.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_LU{ - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ symbols{ @@ -9,5 +9,5 @@ fr_LU{ } } } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_MA.txt b/source/data/locales/fr_MA.txt index 842560d..e72bc7c 100644 --- a/source/data/locales/fr_MA.txt +++ b/source/data/locales/fr_MA.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_MA{ - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ symbols{ @@ -9,7 +9,7 @@ fr_MA{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ AmPmMarkers{ diff --git a/source/data/locales/fr_MC.txt b/source/data/locales/fr_MC.txt index 5f3d033..fe55d8c 100644 --- a/source/data/locales/fr_MC.txt +++ b/source/data/locales/fr_MC.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_MC{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_MF.txt b/source/data/locales/fr_MF.txt index 4d3af28..87d82eb 100644 --- a/source/data/locales/fr_MF.txt +++ b/source/data/locales/fr_MF.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_MF{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_MG.txt b/source/data/locales/fr_MG.txt index d12e4ba..da57825 100644 --- a/source/data/locales/fr_MG.txt +++ b/source/data/locales/fr_MG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_MG{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_ML.txt b/source/data/locales/fr_ML.txt index 65d31e0..78311e5 100644 --- a/source/data/locales/fr_ML.txt +++ b/source/data/locales/fr_ML.txt @@ -8,7 +8,7 @@ fr_ML{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/fr_MQ.txt b/source/data/locales/fr_MQ.txt index e88f313..7253fad 100644 --- a/source/data/locales/fr_MQ.txt +++ b/source/data/locales/fr_MQ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_MQ{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_MR.txt b/source/data/locales/fr_MR.txt index 61544d5..5496f21 100644 --- a/source/data/locales/fr_MR.txt +++ b/source/data/locales/fr_MR.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_MR{ - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/fr_MU.txt b/source/data/locales/fr_MU.txt index b09eb59..11bfde3 100644 --- a/source/data/locales/fr_MU.txt +++ b/source/data/locales/fr_MU.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_MU{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_NC.txt b/source/data/locales/fr_NC.txt index 413897d..cbbca57 100644 --- a/source/data/locales/fr_NC.txt +++ b/source/data/locales/fr_NC.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_NC{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_NE.txt b/source/data/locales/fr_NE.txt index 77633aa..1837608 100644 --- a/source/data/locales/fr_NE.txt +++ b/source/data/locales/fr_NE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_NE{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_PF.txt b/source/data/locales/fr_PF.txt index 5e488ce..139f2a9 100644 --- a/source/data/locales/fr_PF.txt +++ b/source/data/locales/fr_PF.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_PF{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_PM.txt b/source/data/locales/fr_PM.txt index 99940a7..3403ec8 100644 --- a/source/data/locales/fr_PM.txt +++ b/source/data/locales/fr_PM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_PM{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_RE.txt b/source/data/locales/fr_RE.txt index 62ac6f0..c057123 100644 --- a/source/data/locales/fr_RE.txt +++ b/source/data/locales/fr_RE.txt @@ -8,7 +8,7 @@ fr_RE{ } } } - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ dayPeriod{ diff --git a/source/data/locales/fr_RW.txt b/source/data/locales/fr_RW.txt index 601c8bd..f2b81bf 100644 --- a/source/data/locales/fr_RW.txt +++ b/source/data/locales/fr_RW.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_RW{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_SC.txt b/source/data/locales/fr_SC.txt index df4565e..b29d8ec 100644 --- a/source/data/locales/fr_SC.txt +++ b/source/data/locales/fr_SC.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_SC{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_SN.txt b/source/data/locales/fr_SN.txt index 966aaea..bcf3db6 100644 --- a/source/data/locales/fr_SN.txt +++ b/source/data/locales/fr_SN.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_SN{ - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ dayPeriod{ diff --git a/source/data/locales/fr_SY.txt b/source/data/locales/fr_SY.txt index 24a884c..fd4a4fe 100644 --- a/source/data/locales/fr_SY.txt +++ b/source/data/locales/fr_SY.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_SY{ - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/fr_TD.txt b/source/data/locales/fr_TD.txt index a6f9457..00c6d54 100644 --- a/source/data/locales/fr_TD.txt +++ b/source/data/locales/fr_TD.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_TD{ - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/fr_TG.txt b/source/data/locales/fr_TG.txt index 647b42a..869cb96 100644 --- a/source/data/locales/fr_TG.txt +++ b/source/data/locales/fr_TG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_TG{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_TN.txt b/source/data/locales/fr_TN.txt index e18f608..9ffa20e 100644 --- a/source/data/locales/fr_TN.txt +++ b/source/data/locales/fr_TN.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_TN{ - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/fr_VU.txt b/source/data/locales/fr_VU.txt index 2a3e4c5..7658253 100644 --- a/source/data/locales/fr_VU.txt +++ b/source/data/locales/fr_VU.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_VU{ - Version{"2.1.47.70"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/fr_WF.txt b/source/data/locales/fr_WF.txt index 9f741a2..256b9dd 100644 --- a/source/data/locales/fr_WF.txt +++ b/source/data/locales/fr_WF.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_WF{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fr_YT.txt b/source/data/locales/fr_YT.txt index 2471baa..3ecb709 100644 --- a/source/data/locales/fr_YT.txt +++ b/source/data/locales/fr_YT.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_YT{ - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/locales/fur.txt b/source/data/locales/fur.txt index da17e58..f128379 100644 --- a/source/data/locales/fur.txt +++ b/source/data/locales/fur.txt @@ -4,7 +4,7 @@ fur{ AuxExemplarCharacters{"[å č é ë ğ ï ñ ó š ü]"} ExemplarCharacters{"[a à â b c ç d e è ê f g h i ì î j k l m n o ò ô p q r s t u ù û v w x y z]"} ExemplarCharactersIndex{"[A B C Ç D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -27,7 +27,7 @@ fur{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/fur_IT.txt b/source/data/locales/fur_IT.txt index 78a8b51..1a0f24f 100644 --- a/source/data/locales/fur_IT.txt +++ b/source/data/locales/fur_IT.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fur_IT{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/fy.txt b/source/data/locales/fy.txt index b5e57d6..77bf164 100644 --- a/source/data/locales/fy.txt +++ b/source/data/locales/fy.txt @@ -15,10 +15,10 @@ fy{ " s t u ú û ü v w y ý z]" } ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P R S T U V W X Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ @@ -155,7 +155,7 @@ fy{ } minimumGroupingDigits{"1"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ diff --git a/source/data/locales/fy_NL.txt b/source/data/locales/fy_NL.txt index 1ef8055..33957ca 100644 --- a/source/data/locales/fy_NL.txt +++ b/source/data/locales/fy_NL.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fy_NL{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ga.txt b/source/data/locales/ga.txt index a1a124c..9ec4c11 100644 --- a/source/data/locales/ga.txt +++ b/source/data/locales/ga.txt @@ -2,21 +2,13 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ga{ AuxExemplarCharacters{"[å ḃ ċ ḋ ḟ ġ j k ṁ ṗ q ṡ ṫ v w x y z]"} - Ellipsis{ - final{"{0}…"} - initial{"…{0}"} - medial{"{0}…{1}"} - word-final{"{0} …"} - word-initial{"… {0}"} - word-medial{"{0} … {1}"} - } ExemplarCharacters{"[a á b c d e é f g h i í l m n o ó p r s t u ú]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } - MoreInformation{"?"} NumberElements{ default{"latn"} latn{ @@ -296,6 +288,7 @@ ga{ } symbols{ exponential{"E"} + group{","} infinity{"∞"} nan{"NaN"} perMille{"‰"} @@ -320,7 +313,7 @@ ga{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -541,44 +534,6 @@ ga{ h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH – HH"} } @@ -683,10 +638,6 @@ ga{ "r.n.", "i.n.", } - AmPmMarkersNarrow{ - "a", - "p", - } DateTimePatterns{ "HH:mm:ss zzzz", "HH:mm:ss z", @@ -845,17 +796,13 @@ ga{ } dayPeriod{ stand-alone{ - abbreviated{ - am{"a.m."} - pm{"p.m."} - } narrow{ - am{"a"} - pm{"p"} + am{"r.n."} + pm{"i.n."} } wide{ - am{"a.m."} - pm{"p.m."} + am{"r.n."} + pm{"i.n."} } } } @@ -895,9 +842,6 @@ ga{ h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } - Gy{ - G{"G y – G y"} - } H{ H{"HH – HH"} } @@ -1214,12 +1158,6 @@ ga{ western_asian_scripts{"Scripteanna na hÁise Thiar"} whitespace{"Spás Bán"} } - delimiters{ - alternateQuotationEnd{"’"} - alternateQuotationStart{"‘"} - quotationEnd{"”"} - quotationStart{"“"} - } fields{ day{ dn{"Lá"} @@ -2391,25 +2329,5 @@ ga{ "[\\:∶]", } } - general{ - lenient{ - "[.․。︒﹒.。]", - "['ʼ՚᾽᾿’']", - "[%٪﹪%]", - "[؉‰]", - "[\$﹩$$]", - "[£₤]", - "[¥¥]", - "[₩₩]", - "[₨₹{Rp}{Rs}]", - } - } - number{ - lenient{ - "[\\-‒⁻₋−➖﹣-]", - "[,،٫、︐︑﹐﹑,、]", - "[+⁺₊➕﬩﹢+]", - } - } } } diff --git a/source/data/locales/ga_GB.txt b/source/data/locales/ga_GB.txt new file mode 100644 index 0000000..797ffd5 --- /dev/null +++ b/source/data/locales/ga_GB.txt @@ -0,0 +1,5 @@ +// © 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License +ga_GB{ + Version{"36"} +} diff --git a/source/data/locales/ga_IE.txt b/source/data/locales/ga_IE.txt index d9beee6..bab15ef 100644 --- a/source/data/locales/ga_IE.txt +++ b/source/data/locales/ga_IE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ga_IE{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/gd.txt b/source/data/locales/gd.txt index 7d115cb..e495a98 100644 --- a/source/data/locales/gd.txt +++ b/source/data/locales/gd.txt @@ -15,10 +15,10 @@ gd{ } ExemplarCharacters{"[a à b c d e è f g h i ì l m n o ò p r s t u ù]"} ExemplarCharactersIndex{"[A B C D E F G H I L M N O P R S T U]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ¡ ? . … · ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\} § ¶ @ * " - "/ \\& ⁊ # % † ‡ ‧ ° © ® ™]" + "[\\- ‐ ‑ – — , ; \\: ! ¡ ? . … · ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\} § ¶ @ " + "* / \\& ⁊ # % † ‡ ‧ ° © ® ™]" } MoreInformation{"?"} NumberElements{ @@ -35,6 +35,7 @@ gd{ percentSign{"٪"} plusSign{"؜+"} superscriptingExponent{"×"} + timeSeparator{":"} } } arabext{ @@ -50,6 +51,7 @@ gd{ percentSign{"٪"} plusSign{"‎+‎"} superscriptingExponent{"×"} + timeSeparator{"٫"} } } bali{ @@ -65,6 +67,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } beng{ @@ -80,6 +83,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } brah{ @@ -95,6 +99,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } cakm{ @@ -110,6 +115,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } cham{ @@ -125,8 +131,10 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } + default{"latn"} deva{ symbols{ decimal{"."} @@ -140,6 +148,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } fullwide{ @@ -318,6 +327,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } gong{ @@ -333,6 +343,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } gonm{ @@ -348,6 +359,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } gujr{ @@ -363,6 +375,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } guru{ @@ -378,6 +391,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } hanidec{ @@ -393,6 +407,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } java{ @@ -408,6 +423,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } kali{ @@ -423,6 +439,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } khmr{ @@ -438,6 +455,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } knda{ @@ -453,6 +471,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } lana{ @@ -468,6 +487,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } lanatham{ @@ -483,6 +503,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } laoo{ @@ -498,11 +519,14 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } latn{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}–{1}"} } patterns{ @@ -750,6 +774,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } lepc{ @@ -765,6 +790,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } limb{ @@ -780,16 +806,18 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ plural{ - few{"{0} dealbhan, {0} mionaidean"} - one{"{0} dealbh, {0} mhionaid"} - other{"{0} dealbh, {0} mionaid"} - two{"{0} dhealbh, {0} mhionaid"} + few{"{0} brògan"} + one{"{0} bhròg"} + other{"{0} bròg"} + two{"{0}  bhròig"} } } + minimumGroupingDigits{"1"} mlym{ symbols{ decimal{"."} @@ -803,6 +831,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } mong{ @@ -818,6 +847,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } mtei{ @@ -833,6 +863,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } mymr{ @@ -848,6 +879,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } mymrshan{ @@ -863,8 +895,10 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } + native{"latn"} nkoo{ symbols{ decimal{"."} @@ -878,6 +912,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } olck{ @@ -893,6 +928,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } orya{ @@ -908,6 +944,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } osma{ @@ -923,6 +960,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } rohg{ @@ -938,6 +976,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } saur{ @@ -953,6 +992,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } shrd{ @@ -968,6 +1008,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } sora{ @@ -983,6 +1024,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } sund{ @@ -998,6 +1040,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } takr{ @@ -1013,6 +1056,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } talu{ @@ -1028,6 +1072,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } tamldec{ @@ -1043,6 +1088,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } telu{ @@ -1058,6 +1104,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } thai{ @@ -1073,6 +1120,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } tibt{ @@ -1088,6 +1136,7 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } vaii{ @@ -1103,10 +1152,11 @@ gd{ percentSign{"%"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -3957,6 +4007,8 @@ gd{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} } standard-short{ 2{"{0} ⁊ {1}"} @@ -4014,6 +4066,10 @@ gd{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/gd_GB.txt b/source/data/locales/gd_GB.txt index 16abf54..f8a4ce5 100644 --- a/source/data/locales/gd_GB.txt +++ b/source/data/locales/gd_GB.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gd_GB{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/gl.txt b/source/data/locales/gl.txt index 73f0132..f9350e2 100644 --- a/source/data/locales/gl.txt +++ b/source/data/locales/gl.txt @@ -12,13 +12,14 @@ gl{ } ExemplarCharacters{"[a á b c d e é f g h i í j k l m n ñ o ó p q r s t u ú ü v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -29,6 +30,7 @@ gl{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -192,10 +194,13 @@ gl{ group{"."} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -208,8 +213,9 @@ gl{ } } minimumGroupingDigits{"1"} + native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -217,7 +223,7 @@ gl{ "HH:mm:ss z", "HH:mm:ss", "HH:mm", - "cccc, d 'de' MMMM 'de' Y G", + "EEEE, d 'de' MMMM 'de' Y G", "d 'de' MMMM 'de' y G", "d 'de' MMM 'de' y G", "dd/MM/y GGGGG", @@ -241,8 +247,8 @@ gl{ Ehms{"E, h:mm:ss a"} Gy{"y G"} GyMMM{"MMM 'de' y G"} - GyMMMEd{"ccc, d 'de' MMM 'de' y G"} - GyMMMd{"d /MM/y G"} + GyMMMEd{"E, d 'de' MMM 'de' y G"} + GyMMMd{"d 'de' MMM 'de' y G"} H{"HH"} Hm{"HH:mm"} Hms{"HH:mm:ss"} @@ -273,12 +279,12 @@ gl{ yQQQQ{"QQQQ 'de' y"} yyyy{"y G"} yyyyM{"M/y GGGGG"} - yyyyMEd{"ccc, M/d/y GGGGG"} + yyyyMEd{"E, d/M/y GGGGG"} yyyyMMM{"MMM 'de' y G"} - yyyyMMMEd{"ccc, d 'de' MMMM 'de' y G"} + yyyyMMMEd{"E, d 'de' MMM 'de' y G"} yyyyMMMM{"MMMM 'de' y G"} - yyyyMMMd{"d 'de' MMMM 'de' y G"} - yyyyMd{"M/d/y GGGGG"} + yyyyMMMd{"d 'de' MMM 'de' y G"} + yyyyMd{"d/M/y GGGGG"} yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ 'de' y G"} } @@ -294,6 +300,7 @@ gl{ } Gy{ G{"y G – y G"} + y{"y–y G"} } GyM{ G{"MM/y GGGGG – MM/y GGGGG"} @@ -351,15 +358,15 @@ gl{ d{"E, d/M – E, d/M"} } MMM{ - M{"MMMM–MMMM"} + M{"MMM–MMM"} } MMMEd{ - M{"E, d 'de' MMMM – E, d 'de' MMMM"} - d{"E, d MMM – E, d MMM"} + M{"E, d 'de' MMM – E, d 'de' MMM"} + d{"E, d 'de' MMM – E, d 'de' MMM"} } MMMd{ - M{"d 'de' MMMM – d 'de' MMMM"} - d{"d–d 'de' MMMM"} + M{"d 'de' MMM – d 'de' MMM"} + d{"d–d 'de' MMM"} } Md{ M{"d/M – d/M"} @@ -388,7 +395,7 @@ gl{ h{"h–h a v"} } y{ - y{"y–y"} + y{"y–y G"} } yM{ M{"M/y – M/y GGGGG"} @@ -400,12 +407,12 @@ gl{ y{"E, dd/MM/y – E, dd/MM/y GGGGG"} } yMMM{ - M{"MMMM–MMMM 'de' y G"} + M{"MMM–MMM 'de' y G"} y{"MMM 'de' y – MMM 'de' y G"} } yMMMEd{ M{"E, d 'de' MMM – E, d 'de' MMM 'de' y G"} - d{"E, d MMM – E, d MMM y G"} + d{"E, d 'de' MMM – E, d 'de' MMM 'de' y G"} y{"E, d 'de' MMM 'de' y – E, d 'de' MMM 'de' y G"} } yMMMM{ @@ -413,7 +420,7 @@ gl{ y{"MMMM 'de' y – MMMM 'de' y G"} } yMMMd{ - M{"d MMM – d MMM y G"} + M{"d 'de' MMM – d 'de' MMM 'de' y G"} d{"d–d 'de' MMM 'de' y G"} y{"d 'de' MMM 'de' y – d 'de' MMM 'de' y G"} } @@ -470,7 +477,7 @@ gl{ Gy{"y G"} GyMMM{"MMM 'de' y G"} GyMMMEd{"E, d 'de' MMM 'de' y G"} - GyMMMd{"d 'de' MMMM 'de' y G"} + GyMMMd{"d 'de' MMM 'de' y G"} H{"HH"} Hm{"HH:mm"} Hms{"HH:mm:ss"} @@ -501,9 +508,9 @@ gl{ yMEd{"E, d/M/y"} yMM{"MM/y"} yMMM{"MMM 'de' y"} - yMMMEd{"EEE, d/MM/y"} + yMMMEd{"E, d 'de' MMM 'de' y"} yMMMM{"MMMM 'de' y"} - yMMMd{"d/MM/y"} + yMMMd{"d 'de' MMM 'de' y"} yMd{"d/M/y"} yQQQ{"QQQ y"} yQQQQ{"QQQQ 'de' y"} @@ -741,11 +748,11 @@ gl{ M{"MMM–MMM"} } MMMEd{ - M{"E, d MMM – E, d MMM"} + M{"E, d 'de' MMM – E, d 'de' MMM"} d{"E, d 'de' MMM – E, d 'de' MMM"} } MMMd{ - M{"d MMM – d MMM"} + M{"d 'de' MMM – d 'de' MMM"} d{"d–d 'de' MMM"} } Md{ @@ -800,9 +807,9 @@ gl{ y{"MMMM 'de' y – MMMM 'de' y"} } yMMMd{ - M{"d MMM – d MMM 'de' y"} + M{"d 'de' MMM – d 'de' MMM 'de' y"} d{"d–d 'de' MMMM 'de' y"} - y{"d MMM y – d MMM y"} + y{"d 'de' MMM 'de' y – d 'de' MMM 'de' y"} } yMd{ M{"d/M/y – d/M/y"} @@ -1318,6 +1325,11 @@ gl{ } month-narrow{ dn{"mes"} + relative{ + "-1"{"o mes pas."} + "0"{"este mes"} + "1"{"o próx. mes"} + } relativeTime{ future{ one{"en {0} mes"} @@ -1331,11 +1343,6 @@ gl{ } month-short{ dn{"mes"} - relative{ - "-1"{"m. pasado"} - "0"{"este m."} - "1"{"m. seguinte"} - } relativeTime{ future{ one{"en {0} mes"} @@ -1719,6 +1726,11 @@ gl{ } week-narrow{ dn{"sem."} + relative{ + "-1"{"a sem. pas."} + "0"{"esta sem."} + "1"{"a próx. sem."} + } relativePeriod{"a semana do {0}"} relativeTime{ future{ @@ -1734,9 +1746,9 @@ gl{ week-short{ dn{"sem."} relative{ - "-1"{"sem. pasada"} + "-1"{"a sem. pasada"} "0"{"esta sem."} - "1"{"sem. seguinte"} + "1"{"a próxima sem."} } relativePeriod{"a semana do {0}"} relativeTime{ @@ -1798,9 +1810,9 @@ gl{ year-narrow{ dn{"ano"} relative{ - "-1"{"ano pasado"} + "-1"{"o ano pas."} "0"{"este ano"} - "1"{"seguinte ano"} + "1"{"o próx. ano"} } relativeTime{ future{ @@ -1816,9 +1828,9 @@ gl{ year-short{ dn{"ano"} relative{ - "-1"{"ano pasado"} + "-1"{"o ano pasado"} "0"{"este ano"} - "1"{"seguinte ano"} + "1"{"o próximo ano"} } relativeTime{ future{ @@ -1854,6 +1866,10 @@ gl{ middle{"{0}, {1}"} start{"{0}, {1}"} } + standard-narrow{ + middle{"{0}, {1}"} + start{"{0}, {1}"} + } standard-short{ 2{"{0} e {1}"} end{"{0} e {1}"} @@ -1910,6 +1926,10 @@ gl{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/gl_ES.txt b/source/data/locales/gl_ES.txt index 16b091e..782b131 100644 --- a/source/data/locales/gl_ES.txt +++ b/source/data/locales/gl_ES.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gl_ES{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/gsw.txt b/source/data/locales/gsw.txt index 5bf4ab5..a647cc8 100644 --- a/source/data/locales/gsw.txt +++ b/source/data/locales/gsw.txt @@ -180,7 +180,7 @@ gsw{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ diff --git a/source/data/locales/gsw_CH.txt b/source/data/locales/gsw_CH.txt index 8225ea3..ac9b37c 100644 --- a/source/data/locales/gsw_CH.txt +++ b/source/data/locales/gsw_CH.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gsw_CH{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/gsw_FR.txt b/source/data/locales/gsw_FR.txt index 0a045ae..29116c6 100644 --- a/source/data/locales/gsw_FR.txt +++ b/source/data/locales/gsw_FR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gsw_FR{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/gsw_LI.txt b/source/data/locales/gsw_LI.txt index 7e4b3c6..704449f 100644 --- a/source/data/locales/gsw_LI.txt +++ b/source/data/locales/gsw_LI.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gsw_LI{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/gu.txt b/source/data/locales/gu.txt index 0f52ca8..fcc87ed 100644 --- a/source/data/locales/gu.txt +++ b/source/data/locales/gu.txt @@ -19,13 +19,19 @@ gu{ "[અ {અ\u0A82} {અઃ} આ ઇ ઈ ઉ ઊ ઋ ઍ એ ઐ ઑ ઓ ઔ ક {ક\u0ACDષ} ખ ગ ઘ ઙ ચ છ જ {જ" "\u0ACDઞ} ઝ ઞ ટ ઠ ડ ઢ ણ ત {ત\u0ACDર} થ દ ધ ન પ ફ બ ભ મ ય ર લ વ શ ષ સ હ ળ]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0૦ 1૧ 2૨ 3૩ 4૪ 5૫ 6૬ 7૭ 8૮ 9૯]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0૦ 1૧ 2૨ 3૩ 4૪ 5૫ 6૬ 7૭ 8૮ 9૯]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ + arab{ + symbols{ + decimal{"٫"} + } + } + default{"latn"} gujr{ patterns{ currencyFormat{"¤#,##0.00"} @@ -34,17 +40,24 @@ gu{ scientificFormat{"#E0"} } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } latn{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ @@ -209,11 +222,16 @@ gu{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -234,8 +252,21 @@ gu{ minimumGroupingDigits{"1"} native{"gujr"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ + buddhist{ + eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } + wide{ + "BE", + } + } + } coptic{ eras{ abbreviated{ @@ -268,6 +299,21 @@ gu{ "મેસ્રા", "નાસીઈ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "ટૉટ", "બાબા", @@ -300,6 +346,21 @@ gu{ "મેસ્રા", "નાસીઈ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "ટૉટ", "બાબા", @@ -350,6 +411,21 @@ gu{ "નેહાસ્સે", "પેગુમેન", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "મેસ્કેરેમ", "ટેકેમ્ટ", @@ -382,6 +458,21 @@ gu{ "નેહાસ્સે", "પેગુમેન", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "મેસ્કેરેમ", "ટેકેમ્ટ", @@ -462,21 +553,6 @@ gu{ yyyyQQQQ{"QQQQ G y"} } intervalFormats{ - Bh{ - B{"h B – h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } GyMEd{ G{"GGGGG y-dd-MM, E – GGGGG y-dd-MM, E"} M{"GGGGG y-dd-MM, E – y-dd-MM, E"} @@ -484,9 +560,7 @@ gu{ y{"GGGGG y-dd-MM, E – y-dd-MM, E"} } GyMMM{ - G{"G y MMM – G y MMM"} M{"G y MMM – MMM"} - y{"G y MMM – y MMM"} } GyMMMEd{ G{"G y d MMM, E – G y d MMM, E"} @@ -506,6 +580,13 @@ gu{ d{"GGGGG y-dd-MM – y-dd-MM"} y{"GGGGG y-dd-MM – y-dd-MM"} } + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } Hmv{ H{"HH:mm–HH:mm v"} m{"HH:mm–HH:mm v"} @@ -539,7 +620,18 @@ gu{ d{"d–d"} } fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} m{"h:mm–h:mm a v"} } hv{ @@ -640,8 +732,8 @@ gu{ MMM{"LLL"} MMMEd{"E, d MMM"} MMMMW{ - one{"MMMM ના W અઠવાડિયા"} - other{"MMMM ના W અઠવાડિયા"} + one{"MMMMના W અઠવાડિયા"} + other{"MMMMના W અઠવાડિયા"} } MMMMd{"d MMMM"} MMMd{"d MMM"} @@ -826,33 +918,16 @@ gu{ } intervalFormats{ Bh{ - B{"h B – h B"} h{"h – h B"} } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } GyMEd{ G{"GGGGG y-dd-MM, E – GGGGG y-dd-MM, E"} M{"GGGGG y-dd-MM, E – y-dd-MM, E"} d{"GGGGG y-dd-MM, E – y-dd-MM, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} } GyMMMEd{ G{"G y d MMM, E – G y d MMM, E"} @@ -1100,6 +1175,17 @@ gu{ } } hebrew{ + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } monthNames{ format{ abbreviated{ @@ -1118,6 +1204,22 @@ gu{ "ઈલુલ", "અદાર II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "તીશ્રી", "હેશવાન", @@ -1152,6 +1254,22 @@ gu{ "ઈલુલ", "અદાર II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "તીશ્રી", "હેશવાન", @@ -1207,6 +1325,20 @@ gu{ "મહા", "ફાલ્ગુન", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ચૈત્ર", "વૈશાખ", @@ -1237,6 +1369,20 @@ gu{ "મહા", "ફાલ્ગુન", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ચૈત્ર", "વૈશાખ", @@ -1255,6 +1401,17 @@ gu{ } } islamic{ + eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } + wide{ + "AH", + } + } monthNames{ format{ abbreviated{ @@ -1271,6 +1428,20 @@ gu{ "ધુʻલ-ક્યુ.", "ધુʻલ-એચ.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "મુહર્રમ", "સફર", @@ -1301,6 +1472,20 @@ gu{ "ધુʻલ-ક્યુ.", "ધુʻલ-એચ.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "મુહર્રમ", "સફર", @@ -1319,6 +1504,17 @@ gu{ } } persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } monthNames{ format{ abbreviated{ @@ -1335,6 +1531,20 @@ gu{ "બાહમેન", "એસ્ફાન્ડ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ફાર્વાર્દિન", "ઓરડીબેહેશ્ટ", @@ -1365,6 +1575,20 @@ gu{ "બાહમેન", "એસ્ફાન્ડ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ફાર્વાર્દિન", "ઓરડીબેહેશ્ટ", @@ -2317,6 +2541,9 @@ gu{ middle{"{0}, {1}"} start{"{0}, {1}"} } + or-short{ + end{"{0} અથવા {1}"} + } standard{ 2{"{0} અને {1}"} end{"{0} અને {1}"} @@ -2324,10 +2551,8 @@ gu{ start{"{0}, {1}"} } standard-narrow{ - 2{"{0} અને {1}"} - end{"{0} અને {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} + 2{"{0}, {1}"} + end{"{0}, {1}"} } standard-short{ 2{"{0} અને {1}"} @@ -2385,6 +2610,10 @@ gu{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/gu_IN.txt b/source/data/locales/gu_IN.txt index 0753e30..4ada899 100644 --- a/source/data/locales/gu_IN.txt +++ b/source/data/locales/gu_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gu_IN{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/guz.txt b/source/data/locales/guz.txt index 8ec4230..45da2bc 100644 --- a/source/data/locales/guz.txt +++ b/source/data/locales/guz.txt @@ -12,7 +12,7 @@ guz{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/guz_KE.txt b/source/data/locales/guz_KE.txt index 810090f..6a60256 100644 --- a/source/data/locales/guz_KE.txt +++ b/source/data/locales/guz_KE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License guz_KE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/gv.txt b/source/data/locales/gv.txt index b104964..a134553 100644 --- a/source/data/locales/gv.txt +++ b/source/data/locales/gv.txt @@ -4,8 +4,8 @@ gv{ ExemplarCharacters{"[a b c ç d e f g h i j k l m n o p q r s t u v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } NumberElements{ latn{ @@ -23,7 +23,7 @@ gv{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ gregorian{ AmPmMarkers{ diff --git a/source/data/locales/gv_IM.txt b/source/data/locales/gv_IM.txt index 5a35460..f56bd8a 100644 --- a/source/data/locales/gv_IM.txt +++ b/source/data/locales/gv_IM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gv_IM{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ha.txt b/source/data/locales/ha.txt index 86e9911..1434220 100644 --- a/source/data/locales/ha.txt +++ b/source/data/locales/ha.txt @@ -2,19 +2,11 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ha{ AuxExemplarCharacters{"[á à â é è ê í ì î ó ò ô p q {r\u0303} ú ù û v x]"} - ExemplarCharacters{"[a b ɓ c d ɗ e f g h i j k ƙ l m n o r s {sh} t {ts} u w y {ƴ} z ʼ]"} + ExemplarCharacters{"[a b ɓ c d ɗ e f g h i j k ƙ l m n o r s {sh} t {ts} u w y ƴ z ʼ]"} ExemplarCharactersIndex{"[A B Ɓ C D Ɗ E F G H I J K Ƙ L M N O R S T U W Y Ƴ Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\} ′ ″]"} + ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\} ′ ″]"} NumberElements{ - default{"latn"} latn{ - patterns{ - currencyFormat{"¤ #,##0.00"} - decimalFormat{"#,##0.###"} - percentFormat{"#,##0%"} - scientificFormat{"#E0"} - } patternsLong{ decimalFormat{ 1000{ @@ -169,17 +161,9 @@ ha{ } } } - symbols{ - decimal{"."} - group{","} - minusSign{"-"} - percentSign{"%"} - plusSign{"+"} - } } - native{"latn"} } - Version{"2.1.48.45"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -198,37 +182,10 @@ ha{ "{1} {0}", } availableFormats{ - Bh{"h B"} - Bhm{"h:mm B"} - Bhms{"h:mm:ss B"} - E{"ccc"} - EBhm{"E h:mm B"} - EBhms{"E h:mm:ss B"} - EHm{"E HH:mm"} - EHms{"E HH:mm:ss"} - Ed{"d, E"} - Ehm{"E h:mm a"} - Ehms{"E h:mm:ss a"} - Gy{"G y"} - GyMMM{"G y MMM"} - GyMMMEd{"G y MMM d, E"} - GyMMMd{"G y MMM d"} - H{"HH"} - Hm{"HH:mm"} - Hms{"HH:mm:ss"} - M{"L"} MEd{"E, M/d"} - MMM{"LLL"} MMMEd{"E, MMM d"} MMMMEd{"E, MMMM d"} - MMMMd{"MMMM d"} - MMMd{"MMM d"} Md{"M/d"} - d{"d"} - h{"h a"} - hm{"h:mm a"} - hms{"h:mm:ss a"} - ms{"mm:ss"} y{"y"} yM{"M/y"} yMEd{"E, M/d/y"} @@ -237,126 +194,6 @@ ha{ yMMMM{"MMMM y"} yQQQ{"QQQ y"} yQQQQ{"QQQQ y"} - yyyy{"G y"} - yyyyM{"GGGGG y-MM"} - yyyyMEd{"GGGGG y-MM-dd, E"} - yyyyMMM{"G y MMM"} - yyyyMMMEd{"G y MMM d, E"} - yyyyMMMM{"G y MMMM"} - yyyyMMMd{"G y MMM d"} - yyyyMd{"GGGGG y-MM-dd"} - yyyyQQQ{"G y QQQ"} - yyyyQQQQ{"G y QQQQ"} - } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } - M{ - M{"MM–MM"} - } - MEd{ - M{"MM-dd, E – MM-dd, E"} - d{"MM-dd, E – MM-dd, E"} - } - MMM{ - M{"LLL–LLL"} - } - MMMEd{ - M{"MMM d, E – MMM d, E"} - d{"MMM d, E – MMM d, E"} - } - MMMd{ - M{"MMM d – MMM d"} - d{"MMM d–d"} - } - Md{ - M{"MM-dd – MM-dd"} - d{"MM-dd – MM-dd"} - } - d{ - d{"d–d"} - } - fallback{"{0} – {1}"} - y{ - y{"G y–y"} - } - yM{ - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - yMEd{ - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - yMMM{ - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - yMMMEd{ - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - yMMMM{ - M{"G y MMMM–MMMM"} - y{"G y MMMM – y MMMM"} - } - yMMMd{ - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - yMd{ - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } } } gregorian{ @@ -368,10 +205,6 @@ ha{ "AM", "PM", } - AmPmMarkersNarrow{ - "AM", - "PM", - } DateTimePatterns{ "HH:mm:ss zzzz", "HH:mm:ss z", @@ -387,48 +220,21 @@ ha{ "{1} {0}", "{1} {0}", } - appendItems{ - Timezone{"{0} {1}"} - } availableFormats{ - Bh{"h B"} - Bhm{"h:mm B"} - Bhms{"h:mm:ss B"} - E{"ccc"} - EBhm{"E h:mm B"} - EBhms{"E h:mm:ss B"} - EHm{"E HH:mm"} - EHms{"E HH:mm:ss"} Ed{"E, d"} - Ehm{"E h:mm a"} - Ehms{"E h:mm:ss a"} - Gy{"G y"} - GyMMM{"G y MMM"} - GyMMMEd{"G y MMM d, E"} - GyMMMd{"G y MMM d"} - H{"HH"} Hm{"HH:mm"} Hms{"HH:mm:ss"} - Hmsv{"HH:mm:ss v"} - Hmv{"HH:mm v"} M{"L"} MEd{"E, M/d"} MMM{"LLL"} MMMEd{"E, MMM d"} MMMMEd{"E, MMMM d"} - MMMMW{ - one{"'week' W 'of' MMMM"} - other{"'week' W 'of' MMMM"} - } MMMMd{"MMMM d"} MMMd{"MMM d"} Md{"M/d"} d{"d"} - h{"h a"} hm{"h:mm a"} hms{"h:mm:ss a"} - hmsv{"h:mm:ss a v"} - hmv{"h:mm a v"} ms{"mm:ss"} y{"y"} yM{"M/y"} @@ -440,10 +246,6 @@ ha{ yMd{"y-MM-dd"} yQQQ{"QQQ y"} yQQQQ{"QQQQ y"} - yw{ - one{"'week' w 'of' Y"} - other{"'week' w 'of' Y"} - } } dayNames{ format{ @@ -558,53 +360,6 @@ ha{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -612,59 +367,14 @@ ha{ H{"HH:mm–HH:mm"} m{"HH:mm–HH:mm"} } - Hmv{ - H{"HH:mm–HH:mm v"} - m{"HH:mm–HH:mm v"} - } - Hv{ - H{"HH–HH v"} - } - M{ - M{"MM–MM"} - } MEd{ - M{"MM-dd, E – MM-dd, E"} d{"E, dd/M – E, dd/M"} } - MMM{ - M{"LLL–LLL"} - } - MMMEd{ - M{"MMM d, E – MMM d, E"} - d{"MMM d, E – MMM d, E"} - } - MMMd{ - M{"MMM d – MMM d"} - d{"MMM d–d"} - } - Md{ - M{"MM-dd – MM-dd"} - d{"MM-dd – MM-dd"} - } - d{ - d{"d–d"} - } - fallback{"{0} – {1}"} h{ a{"h a – h a"} - h{"h–h a"} } hm{ a{"h:mm a – h:mm a"} - h{"h:mm–h:mm a"} - m{"h:mm–h:mm a"} - } - hmv{ - a{"h:mm a – h:mm a v"} - h{"h:mm–h:mm a v"} - m{"h:mm–h:mm a v"} - } - hv{ - a{"h a – h a v"} - h{"h–h a v"} - } - y{ - y{"y–y"} } yM{ M{"MM/y – MM/y"} @@ -672,31 +382,23 @@ ha{ } yMEd{ M{"y-MM-dd, E – y-MM-dd, E"} - d{"y-MM-dd, E – y-MM-dd, E"} y{"y-MM-dd, E – y-MM-dd, E"} } yMMM{ - M{"y MMM–MMM"} y{"y MMM – y MMM"} } yMMMEd{ - M{"y MMM d, E – MMM d, E"} - d{"y MMM d, E – MMM d, E"} y{"y MMM d, E – y MMM d, E"} } yMMMM{ - M{"y MMMM–MMMM"} y{"y MMMM – y MMMM"} } yMMMd{ - M{"y MMM d – MMM d"} - d{"y MMM d–d"} y{"y MMM d – y MMM d"} } yMd{ M{"dd/MM/y – dd/MM/y"} d{"dd/MM/y – dd/MM/y"} - y{"y-MM-dd – y-MM-dd"} } } monthNames{ @@ -833,36 +535,23 @@ ha{ } } } - delimiters{ - alternateQuotationEnd{"’"} - alternateQuotationStart{"‘"} - quotationEnd{"”"} - quotationStart{"“"} - } fields{ day{ dn{"Kwana"} relative{ - "-1"{"Jiya"} - "0"{"Yau"} - "1"{"Gobe"} + "-1"{"jiya"} + "0"{"yau"} + "1"{"gobe"} } } - day-narrow{ - dn{"Kwana"} - relative{ - "-1"{"Jiya"} - "0"{"Yau"} - "1"{"Gobe"} - } + dayOfYear{ + dn{"Kwanan Shekara"} } - day-short{ - dn{"Kwana"} - relative{ - "-1"{"Jiya"} - "0"{"Yau"} - "1"{"Gobe"} - } + dayOfYear-narrow{ + dn{"Kwanan Shekara"} + } + dayOfYear-short{ + dn{"Kwanan Shekara"} } dayperiod{ dn{"Lokuttan rana"} @@ -870,82 +559,611 @@ ha{ era{ dn{"Zamani"} } + fri{ + relative{ + "-1"{"Jumaʼa da ta gabata"} + "0"{"wannan Jumaʼar"} + "1"{"Jumaʼa mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Jumaʼa"} + other{"cikin {0} Jumaʼa"} + } + past{ + one{"{0} Jumaʼa da ta wuce"} + other{"{0} Jumaʼa da ta wuce"} + } + } + } + fri-narrow{ + relative{ + "-1"{"Jumaʼa da ta gabata"} + "0"{"wannan Jumaʼar"} + "1"{"Jumaʼa mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Jumaʼa"} + other{"cikin {0} Jumaʼa"} + } + past{ + one{"{0} Jumaʼa da ta wuce"} + other{"{0} Jumaʼa da ta wuce"} + } + } + } + fri-short{ + relative{ + "-1"{"Jumaʼa da ta gabata"} + "0"{"wannan Jumaʼar"} + "1"{"Jumaʼa mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Jumaʼa"} + other{"cikin {0} Jumaʼa"} + } + past{ + one{"{0} Jumaʼa da ta wuce"} + other{"{0} Jumaʼa da ta wuce"} + } + } + } hour{ dn{"Awa"} + relative{ + "0"{"wannan awa"} + } + relativeTime{ + future{ + one{"cikin {0} awa"} + other{"cikin {0} awa"} + } + past{ + one{"{0} awa da ya gabata"} + other{"{0} awa da ya gabata"} + } + } } hour-narrow{ - dn{"Awa"} + relativeTime{ + future{ + one{"cikin {0} awa"} + other{"cikin {0} awa"} + } + past{ + one{"{0} awa da ya gabata"} + other{"{0} awa da ya gabata"} + } + } } hour-short{ - dn{"Awa"} + relativeTime{ + future{ + one{"cikin {0} awa"} + other{"cikin {0} awa"} + } + past{ + one{"{0} awa da ya gabata"} + other{"{0} awa da ya gabata"} + } + } } minute{ dn{"Minti"} + relative{ + "0"{"wannan mintin"} + } + relativeTime{ + future{ + one{"cikin {0} minti"} + other{"cikin {0} minti"} + } + past{ + one{"{0} minti da ya gabata"} + other{"{0} minti da ya gabata"} + } + } } minute-narrow{ - dn{"Minti"} + relativeTime{ + future{ + one{"cikin {0} minti"} + other{"cikin {0} minti"} + } + past{ + one{"{0} minti da ya gabata"} + other{"{0} minti da ya gabata"} + } + } } minute-short{ - dn{"Minti"} + relativeTime{ + future{ + one{"cikin {0} minti"} + other{"cikin {0} minti"} + } + past{ + one{"{0} minti da ya gabata"} + other{"{0} minti da ya gabata"} + } + } + } + mon{ + relative{ + "-1"{"Litinin din da ta gabata"} + "0"{"wannan Litinin din"} + "1"{"Litinin din da ya gabata"} + } + relativeTime{ + future{ + one{"cikin {0} Litinin"} + other{"cikin {0} Litinin"} + } + past{ + one{"{0} Litinin din da ta gabata"} + other{"{0} Litinin din da ta gabata"} + } + } + } + mon-narrow{ + relative{ + "-1"{"Litinin din da ta gabata"} + "0"{"wannan Litinin din"} + "1"{"Litinin din da ya gabata"} + } + relativeTime{ + future{ + one{"cikin {0} Litinin"} + other{"cikin {0} Litinin"} + } + past{ + one{"{0} Litinin din da ta"} + other{"{0} Litinin din da ta"} + } + } + } + mon-short{ + relative{ + "-1"{"Litinin din da ta gabata"} + "0"{"wannan Litinin din"} + "1"{"Litinin din da ya gabata"} + } + relativeTime{ + future{ + one{"cikin {0} Litinin"} + other{"cikin {0} Litinin"} + } + past{ + one{"{0} Litinin din da ta gabata"} + other{"{0} Litinin din da ta gabata"} + } + } } month{ dn{"Wata"} + relative{ + "-1"{"watan daya gabata"} + "0"{"wannan watan"} + "1"{"wata na gaba"} + } } month-narrow{ - dn{"Wata"} + relative{ + "-1"{"watan da ya gabata"} + "0"{"wannan watan"} + "1"{"wata na gaba"} + } } month-short{ - dn{"Wata"} + relative{ + "-1"{"watan da ya gabata"} + "0"{"wannan watan"} + "1"{"wata na gaba"} + } } quarter{ dn{"Kwata"} + relative{ + "-1"{"kwatan karshe"} + "0"{"wannan kwatan"} + "1"{"kwata na gaba"} + } } - quarter-narrow{ - dn{"Kwata"} + sat{ + relative{ + "-1"{"Asabar din da ya gabata"} + "0"{"wannan Asabar din"} + "1"{"Asabar mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Asabar"} + other{"cikin {0} Asabar"} + } + past{ + one{"{0} Asabar din da ya wuce"} + other{"{0} Asabar din da ya wuce"} + } + } } - quarter-short{ - dn{"Kwata"} + sat-narrow{ + relative{ + "-1"{"Asabar din da ya gabata"} + "0"{"wannan Asabar din"} + "1"{"Asabar mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Asabar"} + other{"cikin {0} Asabar"} + } + past{ + one{"{0} Asabar din da ya wuce"} + other{"{0} Asabar din da ya wuce"} + } + } + } + sat-short{ + relative{ + "-1"{"Asabar din da ya gabata"} + "0"{"wannan Asabar din"} + "1"{"Asabar mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Asabar"} + other{"cikin {0} Asabar"} + } + past{ + one{"{0} Asabar din da ya wuce"} + other{"{0} Asabar din da ya wuce"} + } + } } second{ dn{"Daƙiƙa"} + relative{ + "0"{"yanzu"} + } + relativeTime{ + future{ + one{"cikin {0} dakika"} + other{"cikin {0} dakika"} + } + past{ + one{"{0} dakika da ya gabata"} + other{"{0} dakika da ya gabata"} + } + } } second-narrow{ - dn{"Daƙiƙa"} + relativeTime{ + future{ + one{"cikin {0} dakika"} + other{"cikin {0} dakika"} + } + past{ + one{"{0} dakika da ya gabata"} + other{"{0} dakika da ya gabata"} + } + } } second-short{ - dn{"Daƙiƙa"} + relativeTime{ + future{ + one{"cikin {0} dakika"} + other{"cikin {0} dakika"} + } + past{ + one{"{0} dakika da ya gabata"} + other{"{0} dakika da ya gabata"} + } + } + } + sun{ + relative{ + "-1"{"Lahadin da ya gabata"} + "0"{"wanan Lahadi"} + "1"{"Lahadi mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Lahadi"} + other{"cikin {0} Lahadi"} + } + past{ + one{"{0} Lahadin da ta gabata"} + other{"{0} Lahadin da ta gabata"} + } + } + } + sun-narrow{ + relative{ + "-1"{"Lahadin da ya gabata"} + "0"{"wanan Lahadi"} + "1"{"Lahadi mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Lahadi"} + other{"cikin {0} Lahadi"} + } + past{ + one{"{0} Lahadin da ta gabata"} + other{"{0} Lahadin da ta gabata"} + } + } + } + sun-short{ + relative{ + "-1"{"Lahadin da ya gabata"} + "0"{"wanan Lahadi"} + "1"{"Lahadi mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Lahadi"} + other{"cikin {0} Lahadi"} + } + past{ + one{"{0} Lahadin da ta gabata"} + other{"{0} Lahadin da ta gabata"} + } + } + } + thu{ + relative{ + "-1"{"Alhamis din da ya Gabata"} + "0"{"wannan Alhamis din"} + "1"{"Alhamis din mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Alhamis"} + other{"cikin {0} Alhamis"} + } + past{ + one{"{0} Alhamis din da ya gabata"} + other{"{0} Alhamis din da ya gabata"} + } + } + } + thu-narrow{ + relative{ + "-1"{"Alhamis din da ya Gabata"} + "0"{"wannan Alhamis din"} + "1"{"Alhamis din mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Alhamis"} + other{"cikin {0} Alhamis"} + } + past{ + one{"{0} Alhamis din da ya gabata"} + other{"{0} Alhamis din da ya gabata"} + } + } + } + thu-short{ + relative{ + "-1"{"Alhamis din da ya Gabata"} + "0"{"wannan Alhamis din"} + "1"{"Alhamis din mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Alhamis"} + other{"cikin {0} Alhamis"} + } + past{ + one{"{0} Alhamis din da ya gabata"} + other{"{0} Alhamis din da ya gabata"} + } + } + } + tue{ + relative{ + "-1"{"Talata da ta gabata"} + "0"{"wannan Talata"} + "1"{"Talata mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Talata"} + other{"cikin {0} Talata"} + } + past{ + one{"{0} Talatar da ta gabata"} + other{"{0} Talatar da ta gabata"} + } + } + } + tue-narrow{ + relative{ + "-1"{"Talata da ta gabata"} + "0"{"wannan Talata"} + "1"{"Talata mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Talata"} + other{"cikin {0} Talata"} + } + past{ + one{"{0} Talatar da ta gabata"} + other{"{0} Talatar da ta gabata"} + } + } + } + tue-short{ + relative{ + "-1"{"Talata da ta gabata"} + "0"{"wannan Talata"} + "1"{"Talata mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Talata"} + other{"cikin {0} Talata"} + } + past{ + one{"{0} Talatar da ta gabata"} + other{"{0} Talatar da ta gabata"} + } + } + } + wed{ + relative{ + "-1"{"Laraba da ta gabata"} + "0"{"wannan Larabar"} + "1"{"Laraba mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Laraba"} + other{"cikin {0} Laraba"} + } + past{ + one{"{0} Laraba da ta gabata"} + other{"{0} Laraba da ta gabata"} + } + } + } + wed-narrow{ + relative{ + "-1"{"Laraba da ta gabata"} + "0"{"wannan Larabar"} + "1"{"Laraba mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Laraba"} + other{"cikin {0} Laraba"} + } + past{ + one{"{0} Laraba da ta gabata"} + other{"{0} Laraba da ta gabata"} + } + } + } + wed-short{ + relative{ + "-1"{"Laraba da ta gabata"} + "0"{"wannan Larabar"} + "1"{"Laraba mai zuwa"} + } + relativeTime{ + future{ + one{"cikin {0} Laraba"} + other{"cikin {0} Laraba"} + } + past{ + one{"{0} Laraba da ta gabata"} + other{"{0} Laraba da ta gabata"} + } + } } week{ dn{"Mako"} + relative{ + "-1"{"satin da ya gabata"} + "0"{"wannan satin"} + "1"{"sati na gaba"} + } } week-narrow{ - dn{"Mako"} + relative{ + "-1"{"satin da ya gabata"} + "0"{"wannan satin"} + "1"{"sati na gaba"} + } + relativePeriod{"sati na {0}"} } week-short{ - dn{"Mako"} + relative{ + "-1"{"satin da ya gabata"} + "0"{"wannan satin"} + "1"{"sati na gaba"} + } + } + weekOfMonth{ + dn{"Makon Wata"} + } + weekOfMonth-narrow{ + dn{"Makon Wata"} + } + weekOfMonth-short{ + dn{"Makon Wata"} } weekday{ dn{"Rana mako"} } + weekdayOfMonth{ + dn{"Ranar Aikin Wata"} + } + weekdayOfMonth-narrow{ + dn{"Ranar Aikin Wata"} + } + weekdayOfMonth-short{ + dn{"Ranar Aikin Wata"} + } year{ dn{"Shekara"} + relative{ + "-1"{"bara"} + "0"{"bana"} + "1"{"badi"} + } } year-narrow{ - dn{"Shekara"} + relative{ + "-1"{"bara"} + "0"{"bana"} + "1"{"badi"} + } } year-short{ - dn{"Shekara"} + relative{ + "-1"{"bara"} + "0"{"bana"} + "1"{"badi"} + } } zone{ dn{"Lokacin yanki"} } } listPattern{ + or{ + 2{"{0} ko {1}"} + end{"{0} ko {1}"} + } + or-narrow{ + 2{"{0} ko {1}"} + end{"{0} ko {1}"} + } + or-short{ + 2{"{0} ko {1}"} + end{"{0} ko {1}"} + } standard{ 2{"{0} da {1}"} end{"{0} da {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} + } + unit{ + 2{"{0}, {1}"} + end{"{0}, {1}"} + } + unit-narrow{ + 2{"{0}, {1}"} + end{"{0}, {1}"} + } + unit-short{ + 2{"{0}, {1}"} + end{"{0}, {1}"} } } measurementSystemNames{ diff --git a/source/data/locales/ha_GH.txt b/source/data/locales/ha_GH.txt index f62f548..a07fa2f 100644 --- a/source/data/locales/ha_GH.txt +++ b/source/data/locales/ha_GH.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ha_GH{ - Version{"2.1.48.22"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/ha_NE.txt b/source/data/locales/ha_NE.txt index ca74161..253980d 100644 --- a/source/data/locales/ha_NE.txt +++ b/source/data/locales/ha_NE.txt @@ -2,955 +2,6 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ha_NE{ AuxExemplarCharacters{"[á à â é è ê í ì î ó ò ô p q {r\u0303} ú ù û v x {ʼy}]"} - ExemplarCharacters{"[a b ɓ c d ɗ e f g h i j k ƙ l m n o r s {sh} t {ts} u w y ƴ z ʼ]"} ExemplarCharactersIndex{"[A B Ɓ C D Ɗ E F G H I J K Ƙ L M N O P Q R S T U V W X Y Ƴ Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\} ′ ″]"} - NumberElements{ - default{"latn"} - latn{ - patterns{ - currencyFormat{"¤ #,##0.00"} - decimalFormat{"#,##0.###"} - percentFormat{"#,##0%"} - scientificFormat{"#E0"} - } - patternsLong{ - decimalFormat{ - 1000{ - one{"Dubu 0"} - other{"Dubu 0"} - } - 10000{ - one{"Dubu 00"} - other{"Dubu 00"} - } - 100000{ - one{"Dubu 000"} - other{"Dubu 000"} - } - 1000000{ - one{"Miliyan 0"} - other{"Miliyan 0"} - } - 10000000{ - one{"Miliyan 00"} - other{"Miliyan 00"} - } - 100000000{ - one{"Miliyan 000"} - other{"Miliyan 000"} - } - 1000000000{ - one{"Biliyan 0"} - other{"Biliyan 0"} - } - 10000000000{ - one{"Biliyan 00"} - other{"Biliyan 00"} - } - 100000000000{ - one{"Biliyan 000"} - other{"Biliyan 000"} - } - 1000000000000{ - one{"Triliyan 0"} - other{"Triliyan 0"} - } - 10000000000000{ - one{"Triliyan 00"} - other{"Triliyan 00"} - } - 100000000000000{ - one{"Triliyan 000"} - other{"Triliyan 000"} - } - } - } - patternsShort{ - currencyFormat{ - 1000{ - one{"¤ 0D"} - other{"¤ 0D"} - } - 10000{ - one{"¤ 00D"} - other{"¤ 00D"} - } - 100000{ - one{"¤ 000K"} - other{"¤ 000D"} - } - 1000000{ - one{"¤ 0M"} - other{"¤ 0M"} - } - 10000000{ - one{"¤ 00M"} - other{"¤ 00M"} - } - 100000000{ - one{"¤ 000M"} - other{"¤ 000M"} - } - 1000000000{ - one{"¤0B"} - other{"¤0B"} - } - 10000000000{ - one{"¤00B"} - other{"¤00B"} - } - 100000000000{ - one{"¤000B"} - other{"¤000B"} - } - 1000000000000{ - one{"¤0T"} - other{"¤0T"} - } - 10000000000000{ - one{"¤00T"} - other{"¤00T"} - } - 100000000000000{ - one{"¤000T"} - other{"¤000T"} - } - } - decimalFormat{ - 1000{ - one{"0D"} - other{"0D"} - } - 10000{ - one{"00D"} - other{"00D"} - } - 100000{ - one{"000D"} - other{"000D"} - } - 1000000{ - one{"0M"} - other{"0M"} - } - 10000000{ - one{"00M"} - other{"00M"} - } - 100000000{ - one{"000M"} - other{"000M"} - } - 1000000000{ - one{"0B"} - other{"0B"} - } - 10000000000{ - one{"00B"} - other{"00B"} - } - 100000000000{ - one{"000B"} - other{"000B"} - } - 1000000000000{ - one{"0T"} - other{"0T"} - } - 10000000000000{ - one{"00T"} - other{"00T"} - } - 100000000000000{ - one{"000T"} - other{"000T"} - } - } - } - symbols{ - decimal{"."} - group{","} - minusSign{"-"} - percentSign{"%"} - plusSign{"+"} - } - } - native{"latn"} - } - Version{"2.1.48.77"} - calendar{ - generic{ - DateTimePatterns{ - "HH:mm:ss zzzz", - "HH:mm:ss z", - "HH:mm:ss", - "HH:mm", - "EEEE, d MMMM, y G", - "d MMMM, y G", - "d MMM, y G", - "d/M/yy GGGGG", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", - } - availableFormats{ - Bh{"h B"} - Bhm{"h:mm B"} - Bhms{"h:mm:ss B"} - E{"ccc"} - EBhm{"E h:mm B"} - EBhms{"E h:mm:ss B"} - EHm{"E HH:mm"} - EHms{"E HH:mm:ss"} - Ed{"d, E"} - Ehm{"E h:mm a"} - Ehms{"E h:mm:ss a"} - Gy{"G y"} - GyMMM{"G y MMM"} - GyMMMEd{"G y MMM d, E"} - GyMMMd{"G y MMM d"} - H{"HH"} - Hm{"HH:mm"} - Hms{"HH:mm:ss"} - M{"L"} - MEd{"E, M/d"} - MMM{"LLL"} - MMMEd{"E, MMM d"} - MMMMEd{"E, MMMM d"} - MMMMd{"MMMM d"} - MMMd{"MMM d"} - Md{"M/d"} - d{"d"} - h{"h a"} - hm{"h:mm a"} - hms{"h:mm:ss a"} - ms{"mm:ss"} - y{"y"} - yM{"M/y"} - yMEd{"E, M/d/y"} - yMMM{"MMM y"} - yMMMEd{"E, MMM d, y"} - yMMMM{"MMMM y"} - yQQQ{"QQQ y"} - yQQQQ{"QQQQ y"} - yyyy{"G y"} - yyyyM{"GGGGG y-MM"} - yyyyMEd{"GGGGG y-MM-dd, E"} - yyyyMMM{"G y MMM"} - yyyyMMMEd{"G y MMM d, E"} - yyyyMMMM{"G y MMMM"} - yyyyMMMd{"G y MMM d"} - yyyyMd{"GGGGG y-MM-dd"} - yyyyQQQ{"G y QQQ"} - yyyyQQQQ{"G y QQQQ"} - } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } - M{ - M{"MM–MM"} - } - MEd{ - M{"MM-dd, E – MM-dd, E"} - d{"MM-dd, E – MM-dd, E"} - } - MMM{ - M{"LLL–LLL"} - } - MMMEd{ - M{"MMM d, E – MMM d, E"} - d{"MMM d, E – MMM d, E"} - } - MMMd{ - M{"MMM d – MMM d"} - d{"MMM d–d"} - } - Md{ - M{"MM-dd – MM-dd"} - d{"MM-dd – MM-dd"} - } - d{ - d{"d–d"} - } - fallback{"{0} – {1}"} - y{ - y{"G y–y"} - } - yM{ - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - yMEd{ - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - yMMM{ - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - yMMMEd{ - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - yMMMM{ - M{"G y MMMM–MMMM"} - y{"G y MMMM – y MMMM"} - } - yMMMd{ - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - yMd{ - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } - } - } - gregorian{ - AmPmMarkers{ - "Safiya", - "Yamma", - } - AmPmMarkersAbbr{ - "AM", - "PM", - } - AmPmMarkersNarrow{ - "AM", - "PM", - } - DateTimePatterns{ - "HH:mm:ss zzzz", - "HH:mm:ss z", - "HH:mm:ss", - "HH:mm", - "EEEE d MMMM, y", - "d MMMM, y", - "d MMM, y", - "d/M/yy", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", - } - appendItems{ - Timezone{"{0} {1}"} - } - availableFormats{ - Bh{"h B"} - Bhm{"h:mm B"} - Bhms{"h:mm:ss B"} - E{"ccc"} - EBhm{"E h:mm B"} - EBhms{"E h:mm:ss B"} - EHm{"E HH:mm"} - EHms{"E HH:mm:ss"} - Ed{"E, d"} - Ehm{"E h:mm a"} - Ehms{"E h:mm:ss a"} - Gy{"G y"} - GyMMM{"G y MMM"} - GyMMMEd{"G y MMM d, E"} - GyMMMd{"G y MMM d"} - H{"HH"} - Hm{"HH:mm"} - Hms{"HH:mm:ss"} - Hmsv{"HH:mm:ss v"} - Hmv{"HH:mm v"} - M{"L"} - MEd{"E, M/d"} - MMM{"LLL"} - MMMEd{"E, MMM d"} - MMMMEd{"E, MMMM d"} - MMMMW{ - one{"'week' W 'of' MMMM"} - other{"'week' W 'of' MMMM"} - } - MMMMd{"MMMM d"} - MMMd{"MMM d"} - Md{"M/d"} - d{"d"} - h{"h a"} - hm{"h:mm a"} - hms{"h:mm:ss a"} - hmsv{"h:mm:ss a v"} - hmv{"h:mm a v"} - ms{"mm:ss"} - y{"y"} - yM{"M/y"} - yMEd{"E, M/d/y"} - yMMM{"MMM y"} - yMMMEd{"y MMM d, E"} - yMMMM{"MMMM y"} - yMMMd{"d MMM, y"} - yMd{"y-MM-dd"} - yQQQ{"QQQ y"} - yQQQQ{"QQQQ y"} - yw{ - one{"'week' w 'of' Y"} - other{"'week' w 'of' Y"} - } - } - dayNames{ - format{ - abbreviated{ - "Lah", - "Lit", - "Tal", - "Lar", - "Alh", - "Jum", - "Asa", - } - narrow{ - "L", - "L", - "T", - "L", - "A", - "J", - "A", - } - short{ - "Lh", - "Li", - "Ta", - "Lr", - "Al", - "Ju", - "As", - } - wide{ - "Lahadi", - "Litinin", - "Talata", - "Laraba", - "Alhamis", - "Jummaʼa", - "Asabar", - } - } - stand-alone{ - abbreviated{ - "Lah", - "Lit", - "Tal", - "Lar", - "Alh", - "Jum", - "Asa", - } - narrow{ - "L", - "L", - "T", - "L", - "A", - "J", - "A", - } - short{ - "Lh", - "Li", - "Ta", - "Lr", - "Al", - "Ju", - "As", - } - wide{ - "Lahadi", - "Litinin", - "Talata", - "Laraba", - "Alhamis", - "Jummaʼa", - "Asabar", - } - } - } - dayPeriod{ - stand-alone{ - abbreviated{ - am{"AM"} - pm{"PM"} - } - narrow{ - am{"AM"} - pm{"PM"} - } - wide{ - am{"AM"} - pm{"PM"} - } - } - } - eras{ - abbreviated{ - "K.H", - "BHAI", - } - abbreviated%variant{ - "K.H.Y", - "B.H.Y", - } - wide{ - "Kafin haihuwar annab", - "Bayan haihuwar annab", - } - wide%variant{ - "K.H.Y", - "sananne Zamani", - } - } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } - H{ - H{"HH–HH"} - } - Hm{ - H{"HH:mm–HH:mm"} - m{"HH:mm–HH:mm"} - } - Hmv{ - H{"HH:mm–HH:mm v"} - m{"HH:mm–HH:mm v"} - } - Hv{ - H{"HH–HH v"} - } - M{ - M{"MM–MM"} - } - MEd{ - M{"MM-dd, E – MM-dd, E"} - d{"E, dd/M – E, dd/M"} - } - MMM{ - M{"LLL–LLL"} - } - MMMEd{ - M{"MMM d, E – MMM d, E"} - d{"MMM d, E – MMM d, E"} - } - MMMd{ - M{"MMM d – MMM d"} - d{"MMM d–d"} - } - Md{ - M{"MM-dd – MM-dd"} - d{"MM-dd – MM-dd"} - } - d{ - d{"d–d"} - } - fallback{"{0} – {1}"} - h{ - a{"h a – h a"} - h{"h–h a"} - } - hm{ - a{"h:mm a – h:mm a"} - h{"h:mm–h:mm a"} - m{"h:mm–h:mm a"} - } - hmv{ - a{"h:mm a – h:mm a v"} - h{"h:mm–h:mm a v"} - m{"h:mm–h:mm a v"} - } - hv{ - a{"h a – h a v"} - h{"h–h a v"} - } - y{ - y{"y–y"} - } - yM{ - M{"MM/y – MM/y"} - y{"MM/y – MM/y"} - } - yMEd{ - M{"y-MM-dd, E – y-MM-dd, E"} - d{"y-MM-dd, E – y-MM-dd, E"} - y{"y-MM-dd, E – y-MM-dd, E"} - } - yMMM{ - M{"y MMM–MMM"} - y{"y MMM – y MMM"} - } - yMMMEd{ - M{"y MMM d, E – MMM d, E"} - d{"y MMM d, E – MMM d, E"} - y{"y MMM d, E – y MMM d, E"} - } - yMMMM{ - M{"y MMMM–MMMM"} - y{"y MMMM – y MMMM"} - } - yMMMd{ - M{"y MMM d – MMM d"} - d{"y MMM d–d"} - y{"y MMM d – y MMM d"} - } - yMd{ - M{"dd/MM/y – dd/MM/y"} - d{"dd/MM/y – dd/MM/y"} - y{"y-MM-dd – y-MM-dd"} - } - } - monthNames{ - format{ - abbreviated{ - "Jan", - "Fab", - "Mar", - "Afi", - "May", - "Yun", - "Yul", - "Agu", - "Sat", - "Okt", - "Nuw", - "Dis", - } - narrow{ - "J", - "F", - "M", - "A", - "M", - "Y", - "Y", - "A", - "S", - "O", - "N", - "D", - } - wide{ - "Janairu", - "Faburairu", - "Maris", - "Afirilu", - "Mayu", - "Yuni", - "Yuli", - "Agusta", - "Satumba", - "Oktoba", - "Nuwamba", - "Disamba", - } - } - stand-alone{ - abbreviated{ - "Jan", - "Fab", - "Mar", - "Afi", - "May", - "Yun", - "Yul", - "Agu", - "Sat", - "Okt", - "Nuw", - "Dis", - } - narrow{ - "J", - "F", - "M", - "A", - "M", - "Y", - "Y", - "A", - "S", - "O", - "N", - "D", - } - wide{ - "Janairu", - "Faburairu", - "Maris", - "Afirilu", - "Mayu", - "Yuni", - "Yuli", - "Agusta", - "Satumba", - "Oktoba", - "Nuwamba", - "Disamba", - } - } - } - quarters{ - format{ - abbreviated{ - "K1", - "K2", - "K3", - "K4", - } - narrow{ - "1", - "2", - "3", - "4", - } - wide{ - "Kwata na ɗaya", - "Kwata na biyu", - "Kwata na uku", - "Kwata na huɗu", - } - } - stand-alone{ - abbreviated{ - "K1", - "K2", - "K3", - "K4", - } - narrow{ - "1", - "2", - "3", - "4", - } - wide{ - "Kwata na ɗaya", - "Kwata na biyu", - "Kwata na uku", - "Kwata na huɗu", - } - } - } - } - } - delimiters{ - alternateQuotationEnd{"’"} - alternateQuotationStart{"‘"} - quotationEnd{"”"} - quotationStart{"“"} - } - fields{ - day{ - dn{"Kwana"} - relative{ - "-1"{"Jiya"} - "0"{"Yau"} - "1"{"Gobe"} - } - } - day-narrow{ - dn{"Kwana"} - relative{ - "-1"{"Jiya"} - "0"{"Yau"} - "1"{"Gobe"} - } - } - day-short{ - dn{"Kwana"} - relative{ - "-1"{"Jiya"} - "0"{"Yau"} - "1"{"Gobe"} - } - } - dayperiod{ - dn{"Lokuttan rana"} - } - era{ - dn{"Zamani"} - } - hour{ - dn{"Awa"} - } - hour-narrow{ - dn{"Awa"} - } - hour-short{ - dn{"Awa"} - } - minute{ - dn{"Minti"} - } - minute-narrow{ - dn{"Minti"} - } - minute-short{ - dn{"Minti"} - } - month{ - dn{"Wata"} - } - month-narrow{ - dn{"Wata"} - } - month-short{ - dn{"Wata"} - } - quarter{ - dn{"Kwata"} - } - quarter-narrow{ - dn{"Kwata"} - } - quarter-short{ - dn{"Kwata"} - } - second{ - dn{"Daƙiƙa"} - } - second-narrow{ - dn{"Daƙiƙa"} - } - second-short{ - dn{"Daƙiƙa"} - } - week{ - dn{"Mako"} - } - week-narrow{ - dn{"Mako"} - } - week-short{ - dn{"Mako"} - } - weekday{ - dn{"Rana mako"} - } - year{ - dn{"Shekara"} - } - year-narrow{ - dn{"Shekara"} - } - year-short{ - dn{"Shekara"} - } - zone{ - dn{"Lokacin yanki"} - } - } - listPattern{ - standard{ - 2{"{0} da {1}"} - end{"{0} da {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } - } - measurementSystemNames{ - UK{"Tsarin awo kasar Ingila"} - US{"Tsarin awo kasar Amirka"} - metric{"Tsarin awo"} - } + Version{"36"} } diff --git a/source/data/locales/ha_NG.txt b/source/data/locales/ha_NG.txt index 789764e..cb39e36 100644 --- a/source/data/locales/ha_NG.txt +++ b/source/data/locales/ha_NG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ha_NG{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/haw.txt b/source/data/locales/haw.txt index 66ee8b7..de5011a 100644 --- a/source/data/locales/haw.txt +++ b/source/data/locales/haw.txt @@ -3,7 +3,7 @@ haw{ AuxExemplarCharacters{"[b c d f g j q r s t v x y z]"} ExemplarCharacters{"[a ā e ē i ī o ō u ū h k l m n p w ʻ]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ miscPatterns{ @@ -32,7 +32,7 @@ haw{ } minimumGroupingDigits{"1"} } - Version{"2.1.48.4"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/haw_US.txt b/source/data/locales/haw_US.txt index 1f3637a..2a1efb0 100644 --- a/source/data/locales/haw_US.txt +++ b/source/data/locales/haw_US.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License haw_US{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/he.txt b/source/data/locales/he.txt index e432af6..97d1568 100644 --- a/source/data/locales/he.txt +++ b/source/data/locales/he.txt @@ -15,20 +15,33 @@ he{ } ExemplarCharacters{"[א ב ג ד ה ו ז ח ט י כ ך ל מ ם נ ן ס ע פ ף צ ץ ק ר ש ת]"} ExemplarCharactersIndex{"[א ב ג ד ה ו ז ח ט י כ ל מ נ ס ע פ צ ק ר ש ת]"} - ExemplarCharactersNumbers{"[\u200E \\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . ׳ ' \u0022 ( ) \\[ \\] / ״ ־]"} + ExemplarCharactersNumbers{"[\u200E \\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . ׳ ' \u0022 ( ) \\[ \\] / ״ ־]"} MoreInformation{"?"} NumberElements{ + cakm{ + symbols{ + infinity{"∞"} + } + } + cham{ + symbols{ + infinity{"∞"} + perMille{"‰"} + percentSign{"%"} + } + } + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} - atLeast{"≥{0}+"} atMost{"≤{0}"} range{"{0}–{1}"} } patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"‏#,##0.00 ¤;‏-#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -259,8 +272,11 @@ he{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + list{";"} minusSign{"‎-"} nan{"NaN"} perMille{"‰"} @@ -282,12 +298,19 @@ he{ } } minimumGroupingDigits{"1"} + native{"latn"} traditional{"hebr"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ buddhist{ eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } wide{ "הספירה הבודהיסטית", } @@ -295,6 +318,14 @@ he{ } coptic{ eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } wide{ "עידן 0", "עידן 1", @@ -317,6 +348,21 @@ he{ "מסרה", "נאסי", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "טאוט", "בבה", @@ -349,6 +395,21 @@ he{ "מסרה", "נאסי", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "טאוט", "בבה", @@ -369,6 +430,14 @@ he{ } ethiopic{ eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } wide{ "עידן 0", "עידן 1", @@ -391,6 +460,21 @@ he{ "נהסה", "פגומן", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "מסקרם", "טקמת", @@ -423,6 +507,21 @@ he{ "נהסה", "פגומן", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "מסקרם", "טקמת", @@ -502,52 +601,35 @@ he{ yyyyQQQQ{"G y QQQQ"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} + G{"y G – y G"} } GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} + G{"E, d.M.y GGGGG – E, d.M.y GGGGG"} + M{"E, d.M.y – E, d.M.y GGGGG"} + d{"E, d.M.y – E, d.M.y GGGGG"} + y{"E, d.M.y – E, d.M.y GGGGG"} } GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} } GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} + G{"E, d בMMM y G – E, d בMMM y G"} + M{"E, d בMMM – E, d בMMM y G"} + d{"E, d בMMM – E, d בMMM y G"} + y{"E, d בMMM y – E, d בMMM y G"} } GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} + G{"d בMMM y G – d בMMM y G"} + M{"d בMMM – d בMMM y G"} + d{"d – d בMMM y G"} + y{"d בMMM y – d בMMM y G"} } GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + M{"d.M.y – d.M.y GGGGG"} + y{"d.M.y – d.M.y GGGGG"} } H{ H{"H–H"} @@ -1060,6 +1142,20 @@ he{ "נוב׳", "דצמ׳", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ינואר", "פברואר", @@ -1217,6 +1313,9 @@ he{ abbreviated{ "AM", } + narrow{ + "AM", + } wide{ "לבריאת העולם", } @@ -1352,6 +1451,20 @@ he{ "מאגהה", "פלגונה", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "צ׳ייטרה", "וייסקהה", @@ -1382,6 +1495,20 @@ he{ "מאגהה", "פלגונה", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "צ׳ייטרה", "וייסקהה", @@ -1791,6 +1918,12 @@ he{ } persian{ eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } wide{ "הספירה הפרסית", } @@ -1811,6 +1944,20 @@ he{ "בהמן", "אספנד", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "פרורדין", "ארדיבהשת", @@ -1841,6 +1988,20 @@ he{ "בהמן", "אספנד", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "פרורדין", "ארדיבהשת", @@ -1886,7 +2047,7 @@ he{ box_drawing{"ציור תיבה"} braille{"ברייל"} building{"בניין"} - bullets_stars{"תבליטים/כוכבים"} + bullets_stars{"תבליטים או כוכבים"} consonantal_jamo{"ג׳אמו עיצורי"} currency_symbols{"סמלי מטבעות"} dash_connector{"קו מפריד/מחבר"} @@ -1895,7 +2056,7 @@ he{ divination_symbols{"סמלי חיזוי עתידות"} downwards_arrows{"חצים כלפי מטה"} downwards_upwards_arrows{"חצים כלפי מעלה ומטה"} - east_asian_scripts{"כתב של מזרח אסיה"} + east_asian_scripts{"כתב של שפות מזרח אסיה"} emoji{"אמוג׳י"} european_scripts{"כתב של שפות אירופיות"} female{"אישה"} @@ -1906,7 +2067,7 @@ he{ format_whitespace{"פורמט ורווחים לבנים"} full_width_form_variant{"משתנה ברוחב מלא"} geometric_shapes{"צורות גאומטריות"} - half_width_form_variant{"משתנים מבחינת רוחב"} + half_width_form_variant{"משתנה בחצי רוחב"} han_characters{"תווי האן"} han_radicals{"רדיקלים של האן"} hanja{"האנג׳ה"} @@ -1945,22 +2106,22 @@ he{ rightwards_arrows{"חצים ימינה"} sign_standard_symbols{"סימנים סטנדרטיים"} small_form_variant{"משתני צורות קטנות"} - smiley{"חיוך"} + smiley{"סמלי סמיילי"} smileys_people{"סמיילי או אנשים"} south_asian_scripts{"מערכות כתב דרום אסייתיות"} - southeast_asian_scripts{"מערכות כתב מזרח אסייתיות"} + southeast_asian_scripts{"מערכות כתב דרום מזרח אסיה"} spacing{"ריווח"} sport{"ספורט"} symbols{"סמלים"} technical_symbols{"סמלים טכניים"} tone_marks{"סימנים טונאליים"} - travel{"טיול"} + travel{"נסיעות"} travel_places{"נסיעות ומקומות"} upwards_arrows{"חצים כלפי מעלה"} variant_forms{"חלופות"} vocalic_jamo{"ג׳אמו ווקאלי"} weather{"מזג אוויר"} - western_asian_scripts{"מערכות כתב ממערב אסיה"} + western_asian_scripts{"מערכות כתב מערב אסיה"} whitespace{"רווח לבן"} } delimiters{ @@ -2114,7 +2275,7 @@ he{ relative{ "-1"{"יום ו׳ שעבר"} "0"{"יום ו׳"} - "1"{"ביום ו׳ הבא"} + "1"{"יום ו׳ הבא"} } relativeTime{ future{ @@ -2966,7 +3127,7 @@ he{ } } zone{ - dn{"אזור"} + dn{"אזור זמן"} } zone-narrow{ dn{"אזור"} @@ -2985,13 +3146,13 @@ he{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard{ - 2{"{0} ו{1}"} - end{"{0} ו{1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} + or-narrow{ + end{"{0} או {1}"} + } + or-short{ + end{"{0} או {1}"} } - standard-narrow{ + standard{ 2{"{0} ו{1}"} end{"{0} ו{1}"} middle{"{0}, {1}"} diff --git a/source/data/locales/he_IL.txt b/source/data/locales/he_IL.txt index d9f09a5..9cfd8ff 100644 --- a/source/data/locales/he_IL.txt +++ b/source/data/locales/he_IL.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License he_IL{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/hi.txt b/source/data/locales/hi.txt index 6872732..87e4a56 100644 --- a/source/data/locales/hi.txt +++ b/source/data/locales/hi.txt @@ -2,6 +2,14 @@ // License & terms of use: http://www.unicode.org/copyright.html#License hi{ AuxExemplarCharacters{"[\u200C\u200D]"} + Ellipsis{ + final{"{0}…"} + initial{"…{0}"} + medial{"{0}…{1}"} + word-final{"{0} …"} + word-initial{"… {0}"} + word-medial{"{0} … {1}"} + } ExemplarCharacters{ "[\u093C ॐ \u0902 \u0901 ः अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट " "ठ ड ढ ण त थ द ध न प फ ब भ म य र ल ळ व श ष स ह ऽ ा ि ी \u0941 \u0942 \u0943 " @@ -11,9 +19,11 @@ hi{ "[अ आ इ ई उ ऊ ऋ ए ऐ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र" " ल व श ष स ह]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0० 1१ 2२ 3३ 4४ 5५ 6६ 7७ 8८ 9९]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . ‘ ’ “ ” ( ) \\[ \\] \\{ \\} ॰]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0० 1१ 2२ 3३ 4४ 5५ 6६ 7७ 8८ 9९]"} + ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ‘ ’ “ ” ( ) \\[ \\] \\{ \\} ॰]"} + MoreInformation{"?"} NumberElements{ + default{"latn"} deva{ patterns{ currencyFormat{"¤#,##,##0.00"} @@ -22,7 +32,11 @@ hi{ scientificFormat{"[#E0]"} } symbols{ + decimal{"."} + group{","} + minusSign{"-"} percentSign{"%"} + plusSign{"+"} } } latn{ @@ -194,21 +208,25 @@ hi{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } } minimalPairs{ ordinal{ - few{"{0}था दाहिना मोड़ लें."} + few{"तीसरा दाहिना मोड़ लें."} many{"{0}ठा दाहिना मोड़ लें."} - one{"{0}ला दाहिना मोड़ लें."} + one{"पहला दाहिना मोड़ लें."} other{"{0}वां दाहिना मोड़ लें."} two{"{0}रा दाहिना मोड़ लें."} } @@ -220,7 +238,7 @@ hi{ minimumGroupingDigits{"1"} native{"deva"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ ethiopic{ monthNames{ @@ -314,44 +332,6 @@ hi{ h{"B h:mm–h:mm"} m{"B h:mm–h:mm"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -696,44 +676,6 @@ hi{ h{"B h:mm–h:mm"} m{"B h:mm–h:mm"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -1430,6 +1372,12 @@ hi{ western_asian_scripts{"पश्चिमी एशियाई लिपि"} whitespace{"श्वेतरिक्ति"} } + delimiters{ + alternateQuotationEnd{"’"} + alternateQuotationStart{"‘"} + quotationEnd{"”"} + quotationStart{"“"} + } fields{ day{ dn{"दिन"} @@ -1453,6 +1401,11 @@ hi{ } day-narrow{ dn{"दिन"} + relative{ + "-1"{"बीता कल"} + "0"{"आज"} + "1"{"आने वाला कल"} + } relativeTime{ future{ one{"{0} दिन में"} @@ -1466,6 +1419,11 @@ hi{ } day-short{ dn{"दिन"} + relative{ + "-1"{"बीता कल"} + "0"{"आज"} + "1"{"आने वाला कल"} + } relativeTime{ future{ one{"{0} दिन में"} @@ -2179,6 +2137,11 @@ hi{ } year-narrow{ dn{"वर्ष"} + relative{ + "-1"{"पिछले साल"} + "0"{"इस साल"} + "1"{"अगले साल"} + } relativeTime{ future{ one{"{0} वर्ष में"} @@ -2223,18 +2186,32 @@ hi{ standard{ 2{"{0} और {1}"} end{"{0}, और {1}"} - } - standard-narrow{ middle{"{0}, {1}"} start{"{0}, {1}"} } standard-short{ 2{"{0} और {1}"} end{"{0} और {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} } unit{ 2{"{0} और {1}"} end{"{0}, और {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} + } + unit-narrow{ + 2{"{0} {1}"} + end{"{0} {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} + } + unit-short{ + 2{"{0}, {1}"} + end{"{0}, {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} } } measurementSystemNames{ @@ -2268,6 +2245,10 @@ hi{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/hi_IN.txt b/source/data/locales/hi_IN.txt index 21682b7..4c2a256 100644 --- a/source/data/locales/hi_IN.txt +++ b/source/data/locales/hi_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hi_IN{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/hr.txt b/source/data/locales/hr.txt index 1db1a1a..28822b1 100644 --- a/source/data/locales/hr.txt +++ b/source/data/locales/hr.txt @@ -3,17 +3,23 @@ hr{ AuxExemplarCharacters{"[q w x y]"} Ellipsis{ + final{"{0}…"} + initial{"…{0}"} medial{"{0}… {1}"} word-final{"{0}…"} + word-initial{"… {0}"} + word-medial{"{0} … {1}"} } ExemplarCharacters{"[a b c č ć d {dž} đ e f g h i j k l {lj} m n {nj} o p r s š t u v z ž]"} ExemplarCharactersIndex{ "[A B C Č Ć D {DŽ} Đ E F G H I J K L {LJ} M N {NJ} O P Q R S Š T U V W X Y Z " "Ž]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{"[‐ – — , ; \\: ! ? . … ' ‘ ’ ‚ \u0022 “ ” „ ( ) \\[ \\] @ * / ′ ″]"} + MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -24,6 +30,7 @@ hr{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -223,9 +230,11 @@ hr{ group{"."} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -241,8 +250,9 @@ hr{ } } minimumGroupingDigits{"1"} + native{"latn"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ buddhist{ eras{ @@ -267,10 +277,107 @@ hr{ "{1} {0}", "{1} {0}", } + cyclicNameSets{ + dayParts{ + format{ + abbreviated{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + } + } + solarTerms{ + format{ + abbreviated{ + "spring begins", + "rain water", + "insects awaken", + "spring equinox", + "bright and clear", + "grain rain", + "summer begins", + "grain full", + "grain in ear", + "summer solstice", + "minor heat", + "major heat", + "autumn begins", + "end of heat", + "white dew", + "autumn equinox", + "cold dew", + "frost descends", + "winter begins", + "minor snow", + "major snow", + "winter solstice", + "minor cold", + "major cold", + } + } + } + } } ethiopic{ monthNames{ + format{ + abbreviated{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } + wide{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } + } stand-alone{ + abbreviated{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } narrow{ "1.", "2.", @@ -286,6 +393,21 @@ hr{ "12.", "13.", } + wide{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } } } } @@ -550,9 +672,9 @@ hr{ MMMEd{"E, d. MMM"} MMMMEd{"E, d. MMMM"} MMMMW{ - few{"W. 'tjedan' 'u' MMMM"} - one{"W. 'tjedan' 'u' MMMM"} - other{"W. 'tjedan' 'u' MMMM"} + few{"W. 'tjedan' MMMM"} + one{"W. 'tjedan' MMMM"} + other{"W. 'tjedan' MMMM"} } MMMMd{"d. MMMM"} MMMd{"d. MMM"} @@ -1025,8 +1147,57 @@ hr{ } } indian{ + eras{ + abbreviated{ + "Saka", + } + } monthNames{ + format{ + abbreviated{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + wide{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + } stand-alone{ + abbreviated{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } narrow{ "1.", "2.", @@ -1041,6 +1212,20 @@ hr{ "11.", "12.", } + wide{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } } } } @@ -1068,14 +1253,64 @@ hr{ GyMMMd{"d. MMM y. G"} M{"L."} MEd{"E, d. M."} + MMM{"LLL"} MMMEd{"E, d. MMM"} MMMMd{"d. MMMM"} MMMd{"d. MMM"} Md{"d. M."} d{"d."} } + eras{ + abbreviated{ + "AH", + } + } monthNames{ + format{ + abbreviated{ + "Muh.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dhuʻl-Q.", + "Dhuʻl-H.", + } + wide{ + "Muharram", + "Safar", + "Rabiʻ I", + "Rabiʻ II", + "Jumada I", + "Jumada II", + "Rajab", + "Shaʻban", + "Ramadan", + "Shawwal", + "Dhuʻl-Qiʻdah", + "Dhuʻl-Hijjah", + } + } stand-alone{ + abbreviated{ + "Muh.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dhuʻl-Q.", + "Dhuʻl-H.", + } narrow{ "1.", "2.", @@ -1090,6 +1325,20 @@ hr{ "11.", "12.", } + wide{ + "Muharram", + "Safar", + "Rabiʻ I", + "Rabiʻ II", + "Jumada I", + "Jumada II", + "Rajab", + "Shaʻban", + "Ramadan", + "Shawwal", + "Dhuʻl-Qiʻdah", + "Dhuʻl-Hijjah", + } } } } @@ -1117,6 +1366,7 @@ hr{ GyMMMd{"d. MMM y. G"} M{"L."} MEd{"E, d. M."} + MMM{"LLL"} MMMEd{"E, d. MMM"} MMMMEd{"E, d. MMMM"} MMMMd{"d. MMMM"} @@ -1385,8 +1635,57 @@ hr{ } } persian{ + eras{ + abbreviated{ + "AP", + } + } monthNames{ + format{ + abbreviated{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + wide{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + } stand-alone{ + abbreviated{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } narrow{ "1.", "2.", @@ -1401,12 +1700,27 @@ hr{ "11.", "12.", } + wide{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } } } } roc{ availableFormats{ M{"L."} + MMM{"LLL"} MMMEd{"E, d. MMM"} MMMd{"d. MMM"} d{"d."} @@ -2460,14 +2774,12 @@ hr{ or{ 2{"{0} ili {1}"} end{"{0} ili {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} } standard{ 2{"{0} i {1}"} end{"{0} i {1}"} - } - standard-narrow{ - 2{"{0} i {1}"} - end{"{0} i {1}"} middle{"{0}, {1}"} start{"{0}, {1}"} } @@ -2480,6 +2792,8 @@ hr{ unit{ 2{"{0} i {1}"} end{"{0} i {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} } unit-narrow{ 2{"{0} {1}"} @@ -2487,6 +2801,10 @@ hr{ middle{"{0} {1}"} start{"{0} {1}"} } + unit-short{ + middle{"{0}, {1}"} + start{"{0}, {1}"} + } } measurementSystemNames{ UK{"imperijalni sustav"} @@ -2519,6 +2837,10 @@ hr{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/hr_BA.txt b/source/data/locales/hr_BA.txt index b82a4a3..d0ea98d 100644 --- a/source/data/locales/hr_BA.txt +++ b/source/data/locales/hr_BA.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hr_BA{ - Version{"2.1.47.71"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/hr_HR.txt b/source/data/locales/hr_HR.txt index 6b8eb18..4bde463 100644 --- a/source/data/locales/hr_HR.txt +++ b/source/data/locales/hr_HR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hr_HR{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/hsb.txt b/source/data/locales/hsb.txt index 764d153..860f6ac 100644 --- a/source/data/locales/hsb.txt +++ b/source/data/locales/hsb.txt @@ -10,10 +10,10 @@ hsb{ " z ž]" } ExemplarCharactersIndex{"[A B C Č Ć D {DŹ} E F G H {CH} I J K Ł L M N O P Q R S Š T U V W X Y Z Ž]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * " - "/ \\& #]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ " + "* / \\& #]" } NumberElements{ latn{ @@ -196,7 +196,7 @@ hsb{ } minimumGroupingDigits{"1"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/hsb_DE.txt b/source/data/locales/hsb_DE.txt index 3b3ef54..7e31b8c 100644 --- a/source/data/locales/hsb_DE.txt +++ b/source/data/locales/hsb_DE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hsb_DE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/hu.txt b/source/data/locales/hu.txt index a7cb468..f3c2eb6 100644 --- a/source/data/locales/hu.txt +++ b/source/data/locales/hu.txt @@ -19,9 +19,9 @@ hu{ "[A Á B C {CS} D {DZ} {DZS} E É F G {GY} H I Í J K L {LY} M N {NY} O Ó Ö Ő P " "Q R S {SZ} T {TY} U Ú Ü Ű V W X Y Z {ZS}]" } - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- – , ; \\: ! ? . … ' ’ \u0022 ” „ « » ( ) \\[ \\] \\{ \\} ⟨ ⟩ § @ * / " + "[\\- ‑ – , ; \\: ! ? . … ' ’ \u0022 ” „ « » ( ) \\[ \\] \\{ \\} ⟨ ⟩ § @ * / " "\\& # ~ ⁒]" } MoreInformation{"?"} @@ -37,6 +37,7 @@ hu{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -200,10 +201,13 @@ hu{ group{" "} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -216,10 +220,10 @@ hu{ other{"A kosár tartalma: {0} X. Megveszi őket?"} } } - minimumGroupingDigits{"4"} + minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ buddhist{ eras{ @@ -299,6 +303,20 @@ hu{ } } coptic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -382,6 +400,20 @@ hu{ } } ethiopic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -509,36 +541,9 @@ hu{ yyyyQQQQ{"G y. QQQQ"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} m{"h:mm – h:mm B"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"H–H"} } @@ -893,36 +898,6 @@ hu{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"H–H"} } @@ -1740,7 +1715,7 @@ hu{ } } hour-narrow{ - dn{"óra"} + dn{"ó"} relativeTime{ future{ one{"{0} óra múlva"} @@ -1782,7 +1757,7 @@ hu{ } } minute-narrow{ - dn{"perc"} + dn{"p"} relativeTime{ future{ one{"{0} perc múlva"} @@ -2034,7 +2009,7 @@ hu{ } } second-narrow{ - dn{"másodperc"} + dn{"mp"} relativeTime{ future{ one{"{0} másodperc múlva"} @@ -2424,17 +2399,9 @@ hu{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} és {1}"} - end{"{0} és {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} és {1}"} end{"{0} és {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } unit{ 2{"{0} és {1}"} diff --git a/source/data/locales/hu_HU.txt b/source/data/locales/hu_HU.txt index 5e03f5e..f287fc0 100644 --- a/source/data/locales/hu_HU.txt +++ b/source/data/locales/hu_HU.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hu_HU{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/hy.txt b/source/data/locales/hy.txt index 520c2b0..3b20be5 100644 --- a/source/data/locales/hy.txt +++ b/source/data/locales/hy.txt @@ -1,6 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hy{ + AuxExemplarCharacters{"[և]"} Ellipsis{ final{"{0}…"} initial{"…{0}"} @@ -10,13 +11,18 @@ hy{ word-medial{"{0} … {1}"} } ExemplarCharacters{ - "[ա բ գ դ ե զ է ը թ ժ ի լ խ ծ կ հ ձ ղ ճ մ յ ն շ ո չ պ ջ ռ ս վ տ ր ց ւ փ ք և օ" - " ֆ]" + "[ա բ գ դ ե զ է ը թ ժ ի լ խ ծ կ հ ձ ղ ճ մ յ ն շ ո չ պ ջ ռ ս վ տ ր ց ւ փ ք օ ֆ" + "]" } - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersIndex{ + "[Ա Բ Գ Դ Ե Զ Է Ը Թ Ժ Ի Լ Խ Ծ Կ Հ Ձ Ղ Ճ Մ Յ Ն Շ Ո Չ Պ Ջ Ռ Ս Վ Տ Ր Ց Ւ Փ Ք Օ Ֆ" + "]" + } + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{"[֊ , ՝ \\: ՜ ՞ . « » ՚ ՛ ՟]"} - MoreInformation{"?"} + MoreInformation{"(՞)"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -27,6 +33,7 @@ hy{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -190,9 +197,11 @@ hy{ group{" "} infinity{"∞"} list{";"} + minusSign{"-"} nan{"ՈչԹ"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -208,9 +217,10 @@ hy{ } } minimumGroupingDigits{"1"} + native{"latn"} traditional{"armn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -281,44 +291,6 @@ hy{ h{"B h:mm – h:mm"} m{"B h:mm – h:mm"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"H–H"} } @@ -471,8 +443,8 @@ hy{ MMM{"LLL"} MMMEd{"d MMM, E"} MMMMW{ - one{"MMMM W շաբ"} - other{"MMMM W շաբ"} + one{"MMMM W-ին շաբաթ"} + other{"MMMM W-րդ շաբաթ"} } MMMMd{"MMMM d"} MMMd{"d MMM"} @@ -495,8 +467,8 @@ hy{ yQQQ{"y թ. QQQ"} yQQQQ{"y թ. QQQQ"} yw{ - one{"Y w շաբ"} - other{"Y w շաբ"} + one{"Y թ․ w-ին շաբաթ"} + other{"Y թ․ w-րդ շաբաթ"} } } dayNames{ @@ -596,11 +568,11 @@ hy{ noon{"կօ․"} } wide{ - afternoon1{"ցերեկը"} + afternoon1{"ցերեկվա"} evening1{"երեկոյան"} midnight{"կեսգիշերին"} morning1{"առավոտյան"} - night1{"գիշերը"} + night1{"գիշերվա"} noon{"կեսօրին"} } } @@ -674,10 +646,10 @@ hy{ y{"GGGGG MM.y – MM.y"} } GyMEd{ - G{"GGGGG ccc, dd.MM.y – GGGGG ccc, dd.MM.y"} - M{"GGGGG ccc, dd.MM.y – ccc, dd.MM.y"} - d{"GGGGG ccc, dd.MM.y – ccc, dd.MM.y"} - y{"GGGGG ccc, dd.MM.y – ccc, dd.MM.y"} + G{"GGGGG dd.MM.y ccc – GGGGG dd.MM.y ccc"} + M{"GGGGG dd.MM.y ccc – dd.MM.y ccc"} + d{"GGGGG dd.MM.y, ccc – dd.MM.y, ccc"} + y{"GGGGG dd.MM.y ccc – dd.MM.y ccc"} } GyMMM{ G{"G y MMM – G y MMM"} @@ -685,16 +657,16 @@ hy{ y{"G y MMM – y MMM"} } GyMMMEd{ - G{"G E, d MMM – G E, d MMM, y թ."} - M{"G E, d MMM y թ. – E, d MMM"} - d{"G E, d MMM – E, d MMM, y թ."} - y{"G E, d MMM y թ. – E, d MMM y թ."} + G{"G y թ. MMM d E – G MMM d E"} + M{"G y թ. MMM d E – MMM d E"} + d{"G y թ. MMM d E – MMM d E"} + y{"G y թ. MMM d E – y թ. MMM d E"} } GyMMMd{ - G{"G dd MMM, y թ․ – G dd MMM, y թ."} - M{"G dd MMM – dd MMM, y թ."} - d{"G dd–dd MMM, y թ."} - y{"G dd MMM, y թ․ – G dd MMM, y թ."} + G{"G y թ․ MMM dd – G y թ. MMM dd"} + M{"G y թ. MMM dd – MMM dd"} + d{"G y թ. MMM dd–dd"} + y{"G y թ․ MMM dd – G y թ. MMM dd"} } GyMd{ G{"GGGGG dd.MM.y – GGGGG dd.MM.y"} @@ -931,84 +903,84 @@ hy{ } } characterLabel{ - activities{"Զբաղմունքներ"} - african_scripts{"Աֆրիկյան գրեր"} - american_scripts{"Ամերիկյան գրեր"} + activities{"զբաղմունք"} + african_scripts{"աֆրիկյան գիր"} + american_scripts{"ամերիկյան գիր"} animal{"կենդանի"} - animals_nature{"Կենդանիներ և բնություն"} - arrows{"Սլաքներ"} + animals_nature{"կենդանիներ կամ բնություն"} + arrows{"սլաք"} body{"մարմին"} box_drawing{"Կեղծ գրաֆիկա"} - braille{"Բրեյլի գիր"} + braille{"բրայլ"} building{"շենք"} - bullets_stars{"Պարբերակներ/աստղանիշեր"} + bullets_stars{"պարբերակ կամ աստղանիշ"} consonantal_jamo{"Ջամո բաղաձայններ"} - currency_symbols{"Արժույթների նշաններ"} - dash_connector{"Միության/անջատման գծիկ"} - digits{"Թվանշաններ"} - dingbats{"Նշագիր"} - divination_symbols{"Գուշակության նշաններ"} - downwards_arrows{"Վար ուղղված սլաքներ"} - downwards_upwards_arrows{"Վար և վեր ուղղված սլաքներ"} + currency_symbols{"արժույթի նշան"} + dash_connector{"անջատման կամ միության գծիկ"} + digits{"թվանշան"} + dingbats{"նշագիր"} + divination_symbols{"գուշակության նշան"} + downwards_arrows{"վար ուղղված սլաք"} + downwards_upwards_arrows{"վար և վեր ուղղված սլաք"} east_asian_scripts{"Արևելաասիական գրեր"} emoji{"Էմոձի"} european_scripts{"Եվրոպական գրեր"} female{"կին"} flag{"դրոշ"} - flags{"Դրոշակներ"} - food_drink{"Ուտելիք և ըմպելիք"} - format{"Ձևաչափում"} - format_whitespace{"Ձևաչափում և բացատներ"} + flags{"դրոշներ"} + food_drink{"ուտելիք և ըմպելիք"} + format{"ձևաչափ"} + format_whitespace{"ձևաչափ և բացատ"} full_width_form_variant{"Ձևի ամբողջ լայնքով տարբերակներ"} - geometric_shapes{"Երկրաչափական պատկերներ"} - half_width_form_variant{"Ձևի կես լայնքով տարբերակներ"} - han_characters{"Չինական նշաններ"} + geometric_shapes{"երկրաչափական պատկեր"} + half_width_form_variant{"կիսալայն տարբերակ"} + han_characters{"խան գրանշան"} han_radicals{"Հիերոգլիֆային բանալիներ"} hanja{"Հանջա"} hanzi_simplified{"Չինարենի պարզեցված հիերոգլիֆներ"} hanzi_traditional{"Չինարենի ավանդական հիերոգլիֆներ"} heart{"սիրտ"} - historic_scripts{"Պատմական գրեր"} + historic_scripts{"պատմական գիր"} ideographic_desc_characters{"Հիերոգլիֆների նկարագրման նշաններ"} - japanese_kana{"Կանա"} + japanese_kana{"ճապոնական կանա"} kanbun{"Կամբուն"} kanji{"Կանձի"} keycap{"ստեղն"} leftwards_arrows{"Ձախ ուղղված սլաքներ"} leftwards_rightwards_arrows{"Ձախ և աջ ուղղված սլաքներ"} - letterlike_symbols{"Տառային նշաններ"} + letterlike_symbols{"տառակերպ նշան"} limited_use{"Սահմանափակ գործածում"} male{"տղամարդ"} math_symbols{"Մաթեմատիկական նշաններ"} middle_eastern_scripts{"Միջինարևելյան գրեր"} - miscellaneous{"Խառը"} - modern_scripts{"ժամանակակից գրեր"} - modifier{"Փոխակերպիչ"} - musical_symbols{"Երաժշտական գրեր"} + miscellaneous{"խառը"} + modern_scripts{"ժամանակակից գիր"} + modifier{"փոփոխիչ"} + musical_symbols{"երաժշտական նշան"} nature{"բնություն"} nonspacing{"Առանց բացատի"} - numbers{"Թվեր"} - objects{"Առարկաներ"} - other{"Այլ"} + numbers{"թվեր"} + objects{"առարկա"} + other{"այլ"} paired{"Զույգ նշաններ"} person{"անձ"} - phonetic_alphabet{"Հնչյունային այբուբեն"} - pictographs{"Պատկերագրեր"} + phonetic_alphabet{"հնչյունային այբուբեն"} + pictographs{"պատկերագիր"} place{"վայր"} plant{"բույս"} - punctuation{"Կետադրական նշաններ"} + punctuation{"կետադրություն"} rightwards_arrows{"Աջ ուղղված սլաքներ"} - sign_standard_symbols{"Ստանդարտ նշաններ"} - small_form_variant{"Ձևի փոքր տարբերակներ"} + sign_standard_symbols{"նիշ կամ նշան"} + small_form_variant{"փոքր տարբերակներ"} smiley{"զմայլիկ"} - smileys_people{"Զմայլիկներ և մարդիկ"} - south_asian_scripts{"Հարավասիական գրեր"} + smileys_people{"զմայլիկ կամ անձ"} + south_asian_scripts{"հարավասիական գիր"} southeast_asian_scripts{"Հարավարևելյան Ասիայի գրեր"} spacing{"Բացատներ"} sport{"սպորտ"} symbols{"Նշաններ"} - technical_symbols{"Տեխնիկական նշաններ"} - tone_marks{"Տոնի նշաններ"} + technical_symbols{"տեխնիկական նշան"} + tone_marks{"ձայներանգի նշան"} travel{"ճամփորդություն"} travel_places{"Ճամփորդություն և վայրեր"} upwards_arrows{"Վեր ուղղված սլաքներ"} @@ -1016,7 +988,7 @@ hy{ vocalic_jamo{"Ջամո ձայնավորներ"} weather{"եղանակ"} western_asian_scripts{"Արևմտաասիական գրեր"} - whitespace{"Բացատներ"} + whitespace{"բացատ"} } delimiters{ alternateQuotationEnd{"»"} @@ -1029,7 +1001,7 @@ hy{ dn{"օր"} relative{ "-1"{"երեկ"} - "-2"{"երեկ չէ առաջի օրը"} + "-2"{"նախանցյալ օրը"} "0"{"այսօր"} "1"{"վաղը"} "2"{"վաղը չէ մյուս օրը"} @@ -1319,7 +1291,7 @@ hy{ month-narrow{ dn{"ամս"} relative{ - "-1"{"անցյալ ամիս"} + "-1"{"նախորդ ամիս"} "0"{"այս ամիս"} "1"{"հաջորդ ամիս"} } @@ -1337,7 +1309,7 @@ hy{ month-short{ dn{"ամս"} relative{ - "-1"{"անցյալ ամիս"} + "-1"{"նախորդ ամիս"} "0"{"այս ամիս"} "1"{"հաջորդ ամիս"} } @@ -1835,10 +1807,8 @@ hy{ start{"{0}, {1}"} } standard-narrow{ - 2{"{0} և {1}"} - end{"{0} և {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} + 2{"{0}, {1}"} + end{"{0}, {1}"} } standard-short{ 2{"{0} և {1}"} diff --git a/source/data/locales/hy_AM.txt b/source/data/locales/hy_AM.txt index 0fe23b3..dfb36ba 100644 --- a/source/data/locales/hy_AM.txt +++ b/source/data/locales/hy_AM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hy_AM{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ia.txt b/source/data/locales/ia.txt index 9f9a80a..3f08544 100644 --- a/source/data/locales/ia.txt +++ b/source/data/locales/ia.txt @@ -12,7 +12,6 @@ ia{ ExemplarCharacters{"[a b c {ch} d e f g h i j k l m n o p {ph} q r s t u v w x y z]"} MoreInformation{"?"} NumberElements{ - default{"latn"} latn{ miscPatterns{ atLeast{"⩾{0}"} @@ -193,9 +192,8 @@ ia{ } } minimumGroupingDigits{"2"} - native{"latn"} } - Version{"2.1.48.36"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ia_001.txt b/source/data/locales/ia_001.txt index b8bf4af..d74531f 100644 --- a/source/data/locales/ia_001.txt +++ b/source/data/locales/ia_001.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ia_001{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/id.txt b/source/data/locales/id.txt index 7a07dc2..0d8aa21 100644 --- a/source/data/locales/id.txt +++ b/source/data/locales/id.txt @@ -12,8 +12,8 @@ id{ } ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ “ ” ( ) \\[ \\] /]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ “ ” ( ) \\[ \\] /]"} MoreInformation{"?"} NumberElements{ default{"latn"} @@ -27,6 +27,7 @@ id{ patterns{ accountingFormat{"¤#,##0.00"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -153,9 +154,12 @@ id{ exponential{"E"} group{"."} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{"."} } @@ -171,7 +175,7 @@ id{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -538,7 +542,6 @@ id{ } intervalFormats{ Bh{ - B{"h B – h B"} h{"h – h B"} } Bhm{ @@ -911,7 +914,6 @@ id{ } intervalFormats{ Bh{ - B{"h B – h B"} h{"h – h B"} } Bhm{ @@ -1345,60 +1347,60 @@ id{ abbreviated{ "Muh.", "Saf.", - "Rab. I", - "Rab. II", - "Jum. I", - "Jum. II", + "Rab. Awal", + "Rab. Akhir", + "Jum. Awal", + "Jum. Akhir", "Raj.", - "Sha.", + "Sya.", "Ram.", "Syaw.", - "Dhuʻl-Q.", - "Dhuʻl-H.", + "Zulka.", + "Zulhi.", } wide{ - "Muharram", + "Muharam", "Safar", - "Rabiʻ I", - "Rabiʻ II", - "Jumada I", - "Jumada II", + "Rabiulawal", + "Rabiulakhir", + "Jumadilawal", + "Jumadilakhir", "Rajab", - "Sya’ban", - "Ramadhan", + "Syakban", + "Ramadan", "Syawal", - "Dhuʻl-Qiʻdah", - "Dhuʻl-Hijjah", + "Zulkaidah", + "Zulhijah", } } stand-alone{ abbreviated{ "Muh.", "Saf.", - "Rab. I", - "Rab. II", - "Jum. I", - "Jum. II", + "Rab. Awal", + "Rab. Akhir", + "Jum. Awal", + "Jum. Akhir", "Raj.", - "Sha.", + "Sya.", "Ram.", "Syaw.", - "Dhuʻl-Q.", - "Dhuʻl-H.", + "Zulka.", + "Zulhi.", } wide{ - "Muharram", + "Muharam", "Safar", - "Rabiʻ I", - "Rabiʻ II", - "Jumada I", - "Jumada II", + "Rabiulawal", + "Rabiulakhir", + "Jumadilawal", + "Jumadilakhir", "Rajab", - "Sya’ban", - "Ramadhan", + "Syakban", + "Ramadan", "Syawal", - "Dhuʻl-Qiʻdah", - "Dhuʻl-Hijjah", + "Zulkaidah", + "Zulhijah", } } } @@ -1861,13 +1863,13 @@ id{ } } dayOfYear{ - dn{"Hari dalam Setahun"} + dn{"hari dalam setahun"} } dayOfYear-narrow{ - dn{"Hari dalam Setahun"} + dn{"hari dlm 1 thn"} } dayOfYear-short{ - dn{"Hari dalam Setahun"} + dn{"hari dlm setahun"} } dayperiod{ dn{"AM/PM"} @@ -2067,6 +2069,11 @@ id{ } month-narrow{ dn{"bln."} + relative{ + "-1"{"bln lalu"} + "0"{"bln ini"} + "1"{"bln berikutnya"} + } relativeTime{ future{ other{"dlm {0} bln"} @@ -2078,6 +2085,11 @@ id{ } month-short{ dn{"bln."} + relative{ + "-1"{"bln lalu"} + "0"{"bln ini"} + "1"{"bln berikutnya"} + } relativeTime{ future{ other{"dlm {0} bln"} @@ -2405,6 +2417,11 @@ id{ } week-narrow{ dn{"mgg."} + relative{ + "-1"{"mgg lalu"} + "0"{"mgg ini"} + "1"{"mgg depan"} + } relativePeriod{"mgg ke-{0}"} relativeTime{ future{ @@ -2417,6 +2434,11 @@ id{ } week-short{ dn{"mgg."} + relative{ + "-1"{"mgg lalu"} + "0"{"mgg ini"} + "1"{"mgg depan"} + } relativePeriod{"mgg ke-{0}"} relativeTime{ future{ @@ -2472,6 +2494,11 @@ id{ } year-narrow{ dn{"thn."} + relative{ + "-1"{"thn lalu"} + "0"{"thn ini"} + "1"{"thn depan"} + } relativeTime{ future{ other{"dlm {0} thn"} @@ -2483,6 +2510,11 @@ id{ } year-short{ dn{"thn."} + relative{ + "-1"{"thn lalu"} + "0"{"thn ini"} + "1"{"thn depan"} + } relativeTime{ future{ other{"dlm {0} thn"} @@ -2506,6 +2538,8 @@ id{ or{ 2{"{0} atau {1}"} end{"{0}, atau {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} } standard{ 2{"{0} dan {1}"} @@ -2516,8 +2550,6 @@ id{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} dan {1}"} @@ -2575,6 +2607,10 @@ id{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/id_ID.txt b/source/data/locales/id_ID.txt index bf94a4a..4404989 100644 --- a/source/data/locales/id_ID.txt +++ b/source/data/locales/id_ID.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License id_ID{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ig.txt b/source/data/locales/ig.txt index 525d626..32fcecd 100644 --- a/source/data/locales/ig.txt +++ b/source/data/locales/ig.txt @@ -1,14 +1,16 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ig{ - AuxExemplarCharacters{"[áàā c éèē íìī{ị́}{ị̀} ḿ{m̀} ńǹ óòō{ọ́}{ọ̀} q úùū{ụ́}{ụ̀} x]"} + AuxExemplarCharacters{ + "[á à ā c é è ē í ì ī {ị\u0301} {ị\u0300} ḿ {m\u0300} ń ǹ ó ò ō {ọ\u0301} {ọ" + "\u0300} q ú ù ū {ụ\u0301} {ụ\u0300} x]" + } ExemplarCharacters{ "[a b {ch} d e ẹ f g {gb} {gh} {gw} h i ị j k {kp} {kw} l m n ṅ {nw} {ny} o ọ" " p r s {sh} t u ụ v w y z]" } ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . ‘ ’ “ ” ( ) \\[ \\] \\{ \\}]"} + ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ‘ ’ “ ” ( ) \\[ \\] \\{ \\}]"} NumberElements{ arab{ patterns{ @@ -64,17 +66,15 @@ ig{ timeSeparator{":"} } } - default{"latn"} latn{ miscPatterns{ + atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}–{1}"} } patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} - decimalFormat{"#,##0.###"} - percentFormat{"#,##0%"} - scientificFormat{"#E0"} } symbols{ decimal{"."} @@ -91,10 +91,17 @@ ig{ timeSeparator{":"} } } + minimalPairs{ + ordinal{ + other{"Si uzo aka nri {0}"} + } + plural{ + other{"ubochi {0}"} + } + } minimumGroupingDigits{"1"} - native{"latn"} } - Version{"2.1.48.45"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -135,9 +142,6 @@ ig{ yQQQ{"QQQ y"} yQQQQ{"QQQQ y"} } - intervalFormats{ - fallback{"{0} – {1}"} - } } gregorian{ AmPmMarkers{ @@ -171,42 +175,18 @@ ig{ Timezone{"{0} {1}"} } availableFormats{ - Bh{"h B"} - Bhm{"h:mm B"} - Bhms{"h:mm:ss B"} - E{"ccc"} - EBhm{"E h:mm B"} - EBhms{"E h:mm:ss B"} - EHm{"E HH:mm"} - EHms{"E HH:mm:ss"} - Ed{"d, E"} - Ehm{"E h:mm a"} - Ehms{"E h:mm:ss a"} - Gy{"G y"} GyMMM{"MMM G y"} GyMMMEd{"E, d MMM, G y"} GyMMMd{"d MMM, G y"} - H{"HH"} - Hm{"HH:mm"} - Hms{"HH:mm:ss"} - Hmsv{"HH:mm:ss v"} - Hmv{"HH:mm v"} - M{"L"} MEd{"E, d/M"} - MMM{"LLL"} MMMEd{"E, d MMM"} MMMMEd{"E, d MMMM"} + MMMMW{ + other{"'Izu' W 'n'‘'ime' MMMM"} + } MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d/M"} - d{"d"} - h{"h a"} - hm{"h:mm a"} - hms{"h:mm:ss a"} - hmsv{"h:mm:ss a v"} - hmv{"h:mm a v"} - ms{"mm:ss"} - y{"y"} yM{"M/y"} yMEd{"E, d/M/y"} yMMM{"MMM y"} @@ -216,6 +196,9 @@ ig{ yMd{"d/M/y"} yQQQ{"QQQ y"} yQQQQ{"QQQQ y"} + yw{ + other{"'Izu' w 'n' 'ime' Y"} + } } dayNames{ format{ @@ -226,19 +209,10 @@ ig{ "Wen", "Tọọ", "Fraị", - "Satọdee", - } - narrow{ - "S", - "M", - "T", - "W", - "T", - "F", - "S", + "Sat", } short{ - "Ụka", + "Sọn", "Mọn", "Tiu", "Wen", @@ -247,7 +221,7 @@ ig{ "Sat", } wide{ - "Ụbọchị Ụka", + "Sọndee", "Mọnde", "Tiuzdee", "Wenezdee", @@ -264,19 +238,10 @@ ig{ "Wen", "Tọọ", "Fraị", - "Satọdee", - } - narrow{ - "S", - "M", - "T", - "W", - "T", - "F", - "S", + "Sat", } short{ - "Ụka", + "Sọn", "Mọn", "Tiu", "Wen", @@ -285,7 +250,7 @@ ig{ "Sat", } wide{ - "Ụbọchị Ụka", + "Sọndee", "Mọnde", "Tiuzdee", "Wenezdee", @@ -329,12 +294,12 @@ ig{ "CE", } wide{ - "Tupu Kristi", - "Afọ Kristi", + "Tupu Kraist", + "Afọ Kraịst", } wide%variant{ - "BCE", - "CE", + "Tupu Oge Afọ", + "Oge Afọ", } } intervalFormats{ @@ -377,7 +342,6 @@ ig{ d{ d{"d–d"} } - fallback{"{0} – {1}"} h{ a{"h a – h a"} h{"h–h a"} @@ -566,12 +530,6 @@ ig{ } } } - delimiters{ - alternateQuotationEnd{"’"} - alternateQuotationStart{"‘"} - quotationEnd{"”"} - quotationStart{"“"} - } fields{ day{ dn{"Ụbọchị"} @@ -582,17 +540,15 @@ ig{ } } day-narrow{ - dn{"Ụbọchị"} relative{ - "-1"{"Nnyaafụ"} + "-1"{"Ụnyaahụ"} "0"{"Taata"} "1"{"Echi"} } } day-short{ - dn{"Ụbọchị"} relative{ - "-1"{"Nnyaafụ"} + "-1"{"Ụnyaahụ"} "0"{"Taata"} "1"{"Echi"} } @@ -606,68 +562,98 @@ ig{ hour{ dn{"Elekere"} } - hour-narrow{ - dn{"Elekere"} - } - hour-short{ - dn{"Elekere"} - } minute{ dn{"Nkeji"} } - minute-narrow{ - dn{"Nkeji"} - } - minute-short{ - dn{"Nkeji"} - } month{ dn{"Ọnwa"} + relative{ + "-1"{"Ọnwa gara aga"} + "0"{"Ọnwa a"} + "1"{"Ọnwa ọzọ"} + } } month-narrow{ - dn{"Ọnwa"} + relative{ + "-1"{"Ọnwa gara aga"} + "0"{"Ọnwa a"} + "1"{"Ọnwa ọzọ"} + } } month-short{ - dn{"Ọnwa"} + relative{ + "-1"{"Ọnwa gara aga"} + "0"{"Ọnwa a"} + "1"{"Ọnwa ọzọ"} + } } quarter{ - dn{"Nkeji Afọ"} + dn{"Ọnwa atọ n’afọ"} } quarter-narrow{ - dn{"Nkeji Afọ"} + dn{"Ọnwa atọ n’afọ"} } quarter-short{ - dn{"Nkeji Afọ"} + dn{"Ọnwa atọ n’afọ"} } second{ - dn{"Sekọnd"} + dn{"Tịm kọm"} } second-narrow{ - dn{"Sekọnd"} + dn{"Tịm kọm"} } second-short{ - dn{"Sekọnd"} + dn{"Tịm kọm"} } week{ dn{"Izu"} + relative{ + "-1"{"Izu gara aga"} + "0"{"Izu a"} + "1"{"Izu na-esote"} + } + relativePeriod{"Izu nke{0}"} } week-narrow{ - dn{"Izu"} + relative{ + "-1"{"Izu gara aga"} + "0"{"Izu a"} + "1"{"Izu na-esote"} + } + relativePeriod{"Izu nke{0}"} } week-short{ - dn{"Izu"} + relative{ + "-1"{"Izu gara aga"} + "0"{"Izu a"} + "1"{"Izu na-esote"} + } + relativePeriod{"Izu nke{0}"} } weekday{ dn{"Ụbọchị izu"} } year{ dn{"Afọ"} + relative{ + "-1"{"Afọ gara aga"} + "0"{"Afọ a"} + "1"{"Afọ ọzọ"} + } } year-narrow{ - dn{"Afọ"} + relative{ + "-1"{"Afọ gara aga"} + "0"{"Afọ a"} + "1"{"Afọ ọzọ"} + } } year-short{ - dn{"Afọ"} + relative{ + "-1"{"Afọ gara aga"} + "0"{"Afọ a"} + "1"{"Afọ ọzọ"} + } } zone{ dn{"Mpaghara oge"} @@ -678,12 +664,12 @@ ig{ 2{"{0} na {1}"} end{"{0}, na {1}"} middle{"{0}, {1}"} - start{"{0}, {1}"} + } + standard-narrow{ + 2{"{0}, {1}"} } } measurementSystemNames{ - UK{"UK"} - US{"US"} metric{"Metriik"} } } diff --git a/source/data/locales/ig_NG.txt b/source/data/locales/ig_NG.txt index 237a902..e559543 100644 --- a/source/data/locales/ig_NG.txt +++ b/source/data/locales/ig_NG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ig_NG{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ii.txt b/source/data/locales/ii.txt index 40b42d0..fa6b871 100644 --- a/source/data/locales/ii.txt +++ b/source/data/locales/ii.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ii{ ExemplarCharacters{"[ꀀ-ꒌ]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -20,7 +20,7 @@ ii{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ gregorian{ AmPmMarkers{ diff --git a/source/data/locales/ii_CN.txt b/source/data/locales/ii_CN.txt index bd98c5e..d0ed37d 100644 --- a/source/data/locales/ii_CN.txt +++ b/source/data/locales/ii_CN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ii_CN{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/is.txt b/source/data/locales/is.txt index 59b5393..e1301dd 100644 --- a/source/data/locales/is.txt +++ b/source/data/locales/is.txt @@ -12,13 +12,20 @@ is{ } ExemplarCharacters{"[a á b d ð e é f g h i í j k l m n o ó p r s t u ú v x y ý þ æ ö]"} ExemplarCharactersIndex{"[A Á B C D Ð E É F G H I Í J K L M N O Ó P Q R S T U Ú V W X Y Ý Z Þ Æ Ö]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ + arab{ + symbols{ + minusSign{"؜-"} + plusSign{"؜+"} + } + } + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -29,6 +36,7 @@ is{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -192,9 +200,11 @@ is{ group{"."} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -209,8 +219,9 @@ is{ } } minimumGroupingDigits{"1"} + native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -946,15 +957,6 @@ is{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y–y G"} @@ -1342,14 +1344,43 @@ is{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} + Gy{ + G{"y G – y G"} + y{"y–y G"} } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} + GyM{ + G{"MM.y GGGGG – MM.y GGGGG"} + M{"MM.y – MM.y GGGGG"} + y{"MM.y – MM.y GGGGG"} + } + GyMEd{ + G{"E, dd.MM.y GGGGG – E, dd.MM.y GGGGG"} + M{"E, dd.MM.y – E, dd.MM.y GGGGG"} + d{"E, dd.MM.y – E, dd.MM.y GGGGG"} + y{"E, dd.MM.y – E, dd.MM.y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM–MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E, d. MMM y G – E, d. MMM y G"} + M{"E, d. MMM – E, d. MMM y G"} + d{"E, d. MMM – E, d. MMM y G"} + y{"E, d. MMM y – E, d. MMM y G"} + } + GyMMMd{ + G{"d. MMM y G – d. MMM y G"} + M{"d. MMM – d. MMM y G"} + d{"d.–d. MMM y G"} + y{"d. MMM y – d. MMM y G"} + } + GyMd{ + G{"dd.MM.y GGGGG – dd.MM.y GGGGG"} + M{"dd.MM.y – dd.MM.y GGGGG"} + d{"dd.MM.y – dd.MM.y GGGGG"} + y{"dd.MM.y – dd.MM.y GGGGG"} } H{ H{"HH–HH"} @@ -3825,7 +3856,6 @@ is{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} start{"{0}, {1}"} } standard-short{ diff --git a/source/data/locales/is_IS.txt b/source/data/locales/is_IS.txt index 3af123b..e1f6007 100644 --- a/source/data/locales/is_IS.txt +++ b/source/data/locales/is_IS.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License is_IS{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/it.txt b/source/data/locales/it.txt index ba42e71..c51eb33 100644 --- a/source/data/locales/it.txt +++ b/source/data/locales/it.txt @@ -12,8 +12,8 @@ it{ } ExemplarCharacters{"[a à b c d e é è f g h i ì j k l m n o ó ò p q r s t u ù v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- — , ; \\: ! ? . … ' ’ \u0022 “ ” « » ( ) \\[ \\] \\{ \\} @ /]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‑ — , ; \\: ! ? . … ' ’ \u0022 “ ” « » ( ) \\[ \\] \\{ \\} @ /]"} MoreInformation{"?"} NumberElements{ default{"latn"} @@ -27,6 +27,7 @@ it{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -189,9 +190,11 @@ it{ exponential{"E"} group{"."} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -209,7 +212,7 @@ it{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ buddhist{ eras{ @@ -304,7 +307,12 @@ it{ h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } + Gy{ + G{"G y – G y"} + y{"G y–y"} + } GyM{ + G{"GGGGG y-MM – GGGGG y-MM"} M{"M/y – M/y GGGGG"} y{"M/y – M/y GGGGG"} } @@ -598,7 +606,7 @@ it{ dayPeriod{ format{ abbreviated{ - afternoon1{"del pomeriggio"} + afternoon1{"di pomeriggio"} evening1{"di sera"} midnight{"mezzanotte"} morning1{"di mattina"} @@ -606,7 +614,7 @@ it{ noon{"mezzogiorno"} } narrow{ - afternoon1{"del pomeriggio"} + afternoon1{"di pomeriggio"} evening1{"di sera"} midnight{"mezzanotte"} morning1{"di mattina"} @@ -716,6 +724,7 @@ it{ GyMMMd{ G{"d MMM y G – d MMM y G"} M{"d MMM – d MMM y G"} + d{"d – d MMM y G"} y{"d MMM y – d MMM y G"} } GyMd{ @@ -1947,12 +1956,6 @@ it{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} e {1}"} - end{"{0} e {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} e {1}"} end{"{0} e {1}"} diff --git a/source/data/locales/it_CH.txt b/source/data/locales/it_CH.txt index d4f4c09..c0914f9 100644 --- a/source/data/locales/it_CH.txt +++ b/source/data/locales/it_CH.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License it_CH{ - ExemplarCharactersNumbers{"[\\- . ’ % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ . ’ % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -13,7 +13,7 @@ it_CH{ } } } - Version{"2.1.47.71"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/it_IT.txt b/source/data/locales/it_IT.txt index 6ddc338..dd1324c 100644 --- a/source/data/locales/it_IT.txt +++ b/source/data/locales/it_IT.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License it_IT{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/it_SM.txt b/source/data/locales/it_SM.txt index 10f5ffa..4606c88 100644 --- a/source/data/locales/it_SM.txt +++ b/source/data/locales/it_SM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License it_SM{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/it_VA.txt b/source/data/locales/it_VA.txt index a724b63..2b1cde2 100644 --- a/source/data/locales/it_VA.txt +++ b/source/data/locales/it_VA.txt @@ -1,5 +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.47.71"} + Version{"36"} } diff --git a/source/data/locales/ja.txt b/source/data/locales/ja.txt index ec459a3..c4d912f 100644 --- a/source/data/locales/ja.txt +++ b/source/data/locales/ja.txt @@ -66,14 +66,15 @@ ja{ "香 馬 駄-駆 駐 騎 騒 験 騰 驚 骨 髄 高 髪 鬼 魂 魅 魔 魚 鮮 鯨 鳥 鳴 鶏 鹿 麗 麦 麻 黄 黒 黙 鼓 鼻 齢]" } ExemplarCharactersIndex{"[あ か さ た な は ま や ら わ]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[‾ __ \\-- ‐ — ― 〜 ・ ・ ,, 、、 ;; \\:: !! ?? .. ‥ … 。。 ' ‘ ’ \u0022" “ ” (( ))" - " \\[[ \\]] \\{{ \\}} 〈 〉 《 》 「「 」」 『 』 【 】 〔 〕 ‖ § ¶ @@ ** // \\\\\ \\&& ## " - "%% ‰ † ‡ ′ ″ 〃 ※]" + "[‾ __ \\-- ‐ ‑ — ― 〜 ・ ・ ,, 、、 ;; \\:: !! ?? .. ‥ … 。。 ' ‘ ’ \u0022" “ ” (( " + ")) \\[[ \\]] \\{{ \\}} 〈 〉 《 》 「「 」」 『 』 【 】 〔 〕 ‖ § ¶ @@ ** // \\\\\ \\&& #" + "# %% ‰ † ‡ ′ ″ 〃 ※]" } MoreInformation{"?"} NumberElements{ + default{"latn"} finance{"jpanfin"} latn{ miscPatterns{ @@ -85,6 +86,7 @@ ja{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -207,11 +209,16 @@ ja{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -225,9 +232,10 @@ ja{ } } minimumGroupingDigits{"1"} + native{"latn"} traditional{"jpan"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -285,6 +293,12 @@ ja{ yyyyMd{"Gy/M/d"} } eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } wide{ "仏暦", } @@ -706,6 +720,20 @@ ja{ } } coptic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -723,6 +751,21 @@ ja{ "メスラ", "ナシエ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "トウト", "ババ", @@ -755,6 +798,21 @@ ja{ "メスラ", "ナシエ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "トウト", "ババ", @@ -985,6 +1043,20 @@ ja{ } } ethiopic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -1002,6 +1074,21 @@ ja{ "ネハッセ", "パグメン", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "メスケレム", "テケムト", @@ -1034,6 +1121,21 @@ ja{ "ネハッセ", "パグメン", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "メスケレム", "テケムト", @@ -1697,6 +1799,20 @@ ja{ "11月", "12月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "1月", "2月", @@ -1727,6 +1843,20 @@ ja{ "11月", "12月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "1月", "2月", @@ -1802,6 +1932,17 @@ ja{ "{1} {0}", "{1} {0}", } + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } monthNames{ format{ abbreviated{ @@ -1820,6 +1961,22 @@ ja{ "エルル", "アダル II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "ティスレ", "へシボン", @@ -1854,6 +2011,22 @@ ja{ "エルル", "アダル II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "ティスレ", "へシボン", @@ -1901,6 +2074,20 @@ ja{ "マーガ", "パルグナ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "カイトラ", "ヴァイサカ", @@ -1931,6 +2118,20 @@ ja{ "マーガ", "パルグナ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "カイトラ", "ヴァイサカ", @@ -1975,6 +2176,17 @@ ja{ d{"d日"} y{"Gy年"} } + eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } + wide{ + "AH", + } + } monthNames{ format{ abbreviated{ @@ -1991,6 +2203,20 @@ ja{ "ズル・カイダ", "ズル・ヒッジャ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ムハッラム", "サフアル", @@ -2021,6 +2247,20 @@ ja{ "ズル・カイダ", "ズル・ヒッジャ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ムハッラム", "サフアル", @@ -2586,6 +2826,17 @@ ja{ } } persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } monthNames{ format{ abbreviated{ @@ -2602,6 +2853,20 @@ ja{ "バフマン", "エスファンド", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ファルヴァルディーン", "オルディーベヘシュト", @@ -2632,6 +2897,20 @@ ja{ "バフマン", "エスファンド", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ファルヴァルディーン", "オルディーベヘシュト", @@ -3035,7 +3314,7 @@ ja{ relative{ "-1"{"先月"} "0"{"今月"} - "1"{"翌月"} + "1"{"来月"} } relativeTime{ future{ @@ -3051,7 +3330,7 @@ ja{ relative{ "-1"{"先月"} "0"{"今月"} - "1"{"翌月"} + "1"{"来月"} } relativeTime{ future{ @@ -3067,7 +3346,7 @@ ja{ relative{ "-1"{"先月"} "0"{"今月"} - "1"{"翌月"} + "1"{"来月"} } relativeTime{ future{ @@ -3392,7 +3671,7 @@ ja{ relative{ "-1"{"先週"} "0"{"今週"} - "1"{"翌週"} + "1"{"来週"} } relativePeriod{"{0} 日の週"} relativeTime{ @@ -3409,7 +3688,7 @@ ja{ relative{ "-1"{"先週"} "0"{"今週"} - "1"{"翌週"} + "1"{"来週"} } relativePeriod{"{0}日の週"} relativeTime{ @@ -3426,7 +3705,7 @@ ja{ relative{ "-1"{"先週"} "0"{"今週"} - "1"{"翌週"} + "1"{"来週"} } relativePeriod{"{0} 日の週"} relativeTime{ @@ -3470,7 +3749,7 @@ ja{ relative{ "-1"{"昨年"} "0"{"今年"} - "1"{"翌年"} + "1"{"来年"} } relativeTime{ future{ @@ -3486,7 +3765,7 @@ ja{ relative{ "-1"{"昨年"} "0"{"今年"} - "1"{"翌年"} + "1"{"来年"} } relativeTime{ future{ @@ -3502,7 +3781,7 @@ ja{ relative{ "-1"{"昨年"} "0"{"今年"} - "1"{"翌年"} + "1"{"来年"} } relativeTime{ future{ @@ -3536,12 +3815,6 @@ ja{ middle{"{0}、{1}"} start{"{0}、{1}"} } - standard-narrow{ - 2{"{0}、{1}"} - end{"{0}、{1}"} - middle{"{0}、{1}"} - start{"{0}、{1}"} - } standard-short{ 2{"{0}、{1}"} end{"{0}、{1}"} diff --git a/source/data/locales/ja_JP.txt b/source/data/locales/ja_JP.txt index ee1f2fa..f62ef24 100644 --- a/source/data/locales/ja_JP.txt +++ b/source/data/locales/ja_JP.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ja_JP{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/jgo.txt b/source/data/locales/jgo.txt index 5093d9c..d3bc063 100644 --- a/source/data/locales/jgo.txt +++ b/source/data/locales/jgo.txt @@ -12,8 +12,8 @@ jgo{ "[A B C D Ɛ F G H I J K L M N Ŋ Ɔ P {Pf} S {Sh} T {Ts} U Ʉ {Ʉ\u0308} V W Ẅ Y " "Z Ꞌ]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . ‹ › « »]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ‹ › « »]"} MoreInformation{"?"} NumberElements{ default{"latn"} @@ -39,7 +39,7 @@ jgo{ } native{"latn"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/jgo_CM.txt b/source/data/locales/jgo_CM.txt index a83fe46..6e952b3 100644 --- a/source/data/locales/jgo_CM.txt +++ b/source/data/locales/jgo_CM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License jgo_CM{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/jmc.txt b/source/data/locales/jmc.txt index 1620354..ab010d9 100644 --- a/source/data/locales/jmc.txt +++ b/source/data/locales/jmc.txt @@ -11,7 +11,7 @@ jmc{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/jmc_TZ.txt b/source/data/locales/jmc_TZ.txt index 40c0775..368cee1 100644 --- a/source/data/locales/jmc_TZ.txt +++ b/source/data/locales/jmc_TZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License jmc_TZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/jv.txt b/source/data/locales/jv.txt index 5a981db..7d68875 100644 --- a/source/data/locales/jv.txt +++ b/source/data/locales/jv.txt @@ -12,22 +12,17 @@ jv{ } ExemplarCharacters{"[a â å b c d e é è ê g h i ì j k l m n o ò p r s t u ù w y]"} ExemplarCharactersIndex{"[A  ŠB C D E É È Ê G H I Ì J K L M N O Ò P R S T U Ù W Y]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . ( ) \\[ \\] \\{ \\}]"} MoreInformation{"?"} NumberElements{ default{"latn"} latn{ miscPatterns{ - approximately{"~{0}"} atLeast{"⩾{0}"} - atMost{"≤{0}"} range{"{0} – {1}"} } patterns{ accountingFormat{"¤ #,##0.00"} currencyFormat{"¤ #,##0.00"} - decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -74,31 +69,31 @@ jv{ patternsShort{ currencyFormat{ 1000{ - other{"¤0K"} + other{"¤0È"} } 10000{ - other{"¤00K"} + other{"¤00È"} } 100000{ - other{"¤000K"} + other{"¤000È"} } 1000000{ - other{"¤0M"} + other{"¤0Y"} } 10000000{ - other{"¤00M"} + other{"¤00Y"} } 100000000{ - other{"¤000M"} + other{"¤000Y"} } 1000000000{ - other{"¤0B"} + other{"¤0M"} } 10000000000{ - other{"¤00B"} + other{"¤00M"} } 100000000000{ - other{"¤000B"} + other{"¤000M"} } 1000000000000{ other{"¤0T"} @@ -145,11 +140,9 @@ jv{ exponential{"E"} group{"."} infinity{"∞"} - minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} - plusSign{"+"} superscriptingExponent{"×"} } } @@ -161,10 +154,9 @@ jv{ other{"{0} dino"} } } - minimumGroupingDigits{"1"} native{"java"} } - Version{"2.1.48.44"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -183,12 +175,7 @@ jv{ "{1} {0}", } availableFormats{ - Bh{"h B"} - Bhm{"h:mm B"} - Bhms{"h:mm:ss B"} E{"ccc"} - EBhm{"E h:mm B"} - EBhms{"E h:mm:ss B"} EHm{"E HH:mm"} EHms{"E HH:mm:ss"} Ed{"E, d"} @@ -226,14 +213,43 @@ jv{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"M/y GGGGG – M/y GGGGG"} + M{"M/y – M/y GGGGG"} + y{"M/y – M/y GGGGG"} + } + GyMEd{ + G{"E, d/M/y GGGGG – E, d/M/y GGGGG"} + M{"E, d/M/y – E, d/M/y GGGGG"} + d{"E, d/M/y – E, d/M/y GGGGG"} + y{"E, d/M/y – E, d/M/y GGGGG"} } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E, d MMM, y G – E, d MMM, y G"} + M{"E, d MMM – E, d MMM, y G"} + d{"E, d MMM – E, d MMM, y G"} + y{"E, d MMM, y – E, d MMM, y G"} + } + GyMMMd{ + G{"d MMM, y G – d MMM, y G"} + M{"d MMM – d MMM, y G"} + d{"d – d MMM, y G"} + y{"d MMM, y – d MMM, y G"} + } + GyMd{ + G{"d/M/y GGGGG – d/M/y GGGGG"} + M{"d/M/y – d/M/y GGGGG"} + d{"d/M/y – d/M/y GGGGG"} + y{"d/M/y – d/M/y GGGGG"} } M{ M{"MM – MM"} @@ -330,12 +346,7 @@ jv{ Timezone{"{0} {1}"} } availableFormats{ - Bh{"h B"} - Bhm{"h:mm B"} - Bhms{"h:mm:ss B"} E{"ccc"} - EBhm{"E h:mm B"} - EBhms{"E h:mm:ss B"} EHm{"E HH:mm"} EHms{"E HH:mm:ss"} Ed{"E, d"} @@ -355,7 +366,7 @@ jv{ MMM{"LLL"} MMMEd{"E, d MMM"} MMMMW{ - other{"'pekan' W 'saka' MMMM"} + other{"'pekan' W 'ing' MMMM"} } MMMMd{"d MMMM"} MMMd{"d MMM"} @@ -378,13 +389,13 @@ jv{ yQQQ{"QQQ y"} yQQQQ{"QQQQ y"} yw{ - other{"'pekan' w 'saka' Y"} + other{"'pekan' w 'ing' Y"} } } dayNames{ format{ abbreviated{ - "Ahd", + "Ahad", "Sen", "Sel", "Rab", @@ -402,7 +413,7 @@ jv{ "S", } short{ - "Ahd", + "Ahad", "Sen", "Sel", "Rab", @@ -422,7 +433,7 @@ jv{ } stand-alone{ abbreviated{ - "Ahd", + "Ahad", "Sen", "Sel", "Rab", @@ -440,7 +451,7 @@ jv{ "S", } short{ - "Ahd", + "Ahad", "Sen", "Sel", "Rab", @@ -494,14 +505,43 @@ jv{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} + Gy{ + G{"y G– y G"} + y{"y–y G"} + } + GyM{ + G{"M/y GGGGG – M/y GGGGG"} + M{"M/y – M/y GGGGG"} + y{"M/y – M/y GGGGG"} + } + GyMEd{ + G{"E, d/M/y GGGGG – E, d/M/y GGGGG"} + M{"E, d/M/y – E, d/M/y GGGGG"} + d{"E, d/M/y – E, d/M/y GGGGG"} + y{"E, d/M/y – E, d/M/y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E, d MMM, y G – E, d MMM, y G"} + M{"E, d MMM – E, d MMM, y G"} + d{"E, d MMM – E, d MMM, y G"} + y{"E, d MMM y – E, d MMM y G"} + } + GyMMMd{ + G{"d MMM, y G – d MMM, y G"} + M{"d MMM – d MMM, y G"} + d{"d – d MMM, y G"} + y{"d MMM, y – d MMM, y G"} } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} + GyMd{ + G{"d/M/y GGGGG – d/M/y GGGGG"} + M{"d/M/y – d/M/y GGGGG"} + d{"d/M/y – d/M/y GGGGG"} + y{"d/M/y – d/M/y GGGGG"} } H{ H{"HH – HH"} @@ -761,7 +801,7 @@ jv{ half_width_form_variant{"varian amba setengah kebak"} han_characters{"karakter Han"} han_radicals{"radikal Han"} - hanzi_simplified{"Hanzi (prasaja)"} + hanzi_simplified{"Hanzi (ringkes)"} hanzi_traditional{"Hanzi (tradisional)"} heart{"ati"} historic_scripts{"skrip tradisional"} @@ -821,7 +861,7 @@ jv{ dn{"dino"} relative{ "-1"{"wingi"} - "0"{"saiki"} + "0"{"dino iki"} "1"{"sesuk"} } relativeTime{ @@ -837,15 +877,12 @@ jv{ dn{"dino"} relative{ "-1"{"wingi"} - "0"{"saiki"} + "0"{"dino iki"} "1"{"sesuk"} } relativeTime{ - future{ - other{"+{0} d"} - } past{ - other{"-{0} d"} + other{"{0} dino kepungkur"} } } } @@ -853,23 +890,18 @@ jv{ dn{"dino"} relative{ "-1"{"wingi"} - "0"{"saiki"} + "0"{"dino iki"} "1"{"sesuk"} } - relativeTime{ - past{ - other{"-{0} d"} - } - } } dayOfYear{ - dn{"dina jroning setaun"} + dn{"dina jroning taun"} } dayOfYear-narrow{ - dn{"dn ing taun"} + dn{"dina jroning taun"} } dayOfYear-short{ - dn{"dina ing taun"} + dn{"dina jroning taun"} } dayperiod{ dn{"isuk/wengi"} @@ -877,12 +909,6 @@ jv{ era{ dn{"era"} } - era-narrow{ - dn{"era"} - } - era-short{ - dn{"era"} - } fri{ relative{ "-1"{"Jemuwah wingi"} @@ -898,21 +924,6 @@ jv{ } } } - fri-narrow{ - relative{ - "-1"{"J wingi"} - "0"{"J iki"} - "1"{"J ngarep"} - } - relativeTime{ - future{ - other{"ing {0} J"} - } - past{ - other{"{0} J kepungkur"} - } - } - } fri-short{ relative{ "-1"{"Jem. wingi"} @@ -946,23 +957,15 @@ jv{ dn{"jam"} relativeTime{ future{ - other{"+{0} h"} + other{"ing {0} jam"} } past{ - other{"-{0} h"} + other{"{0} jam kepungkur"} } } } hour-short{ dn{"jam"} - relativeTime{ - future{ - other{"+{0} h"} - } - past{ - other{"-{0} h"} - } - } } minute{ dn{"menit"} @@ -971,10 +974,10 @@ jv{ } relativeTime{ future{ - other{"ing {0} mnt"} + other{"ing {0} menit"} } past{ - other{"{0} men. kepungkur"} + other{"{0} menit kepungkur"} } } } @@ -982,10 +985,10 @@ jv{ dn{"menit"} relativeTime{ future{ - other{"+{0} min"} + other{"ing {0} menit"} } past{ - other{"-{0} min"} + other{"{0} menit kepungkur"} } } } @@ -993,10 +996,10 @@ jv{ dn{"menit"} relativeTime{ future{ - other{"+{0} min"} + other{"ing {0} menit"} } past{ - other{"-{0} min"} + other{"{0} menit kepungkur"} } } } @@ -1033,7 +1036,7 @@ jv{ mon-short{ relative{ "-1"{"Sen. wingi"} - "0"{"Sen iki"} + "0"{"Sen. iki"} "1"{"Sen. ngarep"} } relativeTime{ @@ -1065,37 +1068,29 @@ jv{ dn{"sasi"} relativeTime{ future{ - other{"+{0} m"} + other{"ing {0} sasi"} } past{ - other{"-{0} m"} + other{"{0} sasi kepungkur"} } } } month-short{ dn{"sasi"} - relativeTime{ - future{ - other{"ing {0} s."} - } - past{ - other{"{0} s. kepungkur"} - } - } } quarter{ dn{"triwulan"} relative{ - "-1"{"kwartal wingi"} - "0"{"kwartal iki"} - "1"{"kwartal ngarep"} + "-1"{"triwulan wingi"} + "0"{"triwulan iki"} + "1"{"triwulan ngarep"} } relativeTime{ future{ - other{"ing {0} kwartal"} + other{"ing {0} triwulan"} } past{ - other{"{0} kwartal kepungkur"} + other{"{0} triwulan kepungkur"} } } } @@ -1103,10 +1098,10 @@ jv{ dn{"triwulan"} relativeTime{ future{ - other{"+{0} Q"} + other{"ing {0} triwulan"} } past{ - other{"-{0} Q"} + other{"{0} triwulan kepungkur"} } } } @@ -1114,10 +1109,10 @@ jv{ dn{"triwulan"} relativeTime{ future{ - other{"ing {0} kwrt."} + other{"ing {0} triwulan"} } past{ - other{"{0} kwrt. kepungkur"} + other{"{0} triwulan kepungkur"} } } } @@ -1165,6 +1160,9 @@ jv{ } second{ dn{"detik"} + relative{ + "0"{"saiki"} + } relativeTime{ future{ other{"ing {0} detik"} @@ -1178,23 +1176,15 @@ jv{ dn{"detik"} relativeTime{ future{ - other{"+{0} s"} + other{"ing {0} detik"} } past{ - other{"-{0} s"} + other{"{0} detik kepungkur"} } } } second-short{ dn{"detik"} - relativeTime{ - future{ - other{"ing {0} dtk"} - } - past{ - other{"{0} det. kepungkur"} - } - } } sun{ relative{ @@ -1211,21 +1201,6 @@ jv{ } } } - sun-narrow{ - relative{ - "-1"{"Ah wingi"} - "0"{"Ah iki"} - "1"{"Ah ngarep"} - } - relativeTime{ - future{ - other{"ing {0} Ah"} - } - past{ - other{"{0} Ah kepungkur"} - } - } - } sun-short{ relative{ "-1"{"Ahad wingi"} @@ -1256,21 +1231,6 @@ jv{ } } } - thu-narrow{ - relative{ - "-1"{"K wingi"} - "0"{"K iki"} - "1"{"K ngarep"} - } - relativeTime{ - future{ - other{"ing {0} K"} - } - past{ - other{"{0} K kepungkur"} - } - } - } thu-short{ relative{ "-1"{"Kms. wingi"} @@ -1301,21 +1261,6 @@ jv{ } } } - tue-narrow{ - relative{ - "-1"{"Sl wingi"} - "0"{"Sl iki"} - "1"{"Sl ngarep"} - } - relativeTime{ - future{ - other{"ing {0} Sl"} - } - past{ - other{"{0} Sl kepungkur"} - } - } - } tue-short{ relative{ "-1"{"Sel. wingi"} @@ -1346,21 +1291,6 @@ jv{ } } } - wed-narrow{ - relative{ - "-1"{"R wingi"} - "0"{"R iki"} - "1"{"R ngarep"} - } - relativeTime{ - future{ - other{"ing {0} R"} - } - past{ - other{"{0} R kepungkur"} - } - } - } wed-short{ relative{ "-1"{"Reb. wingi"} @@ -1386,27 +1316,22 @@ jv{ relativePeriod{"pekan kaping {0}"} relativeTime{ future{ - other{"ing {0} minggu"} + other{"ing {0} pekan"} } past{ - other{"{0} minggu kepungkur"} + other{"{0} pekan kepungkur"} } } } week-narrow{ dn{"pekan"} - relative{ - "-1"{"pekan wingi"} - "0"{"pekan iki"} - "1"{"pekan ngarep"} - } relativePeriod{"pekan kaping {0}"} relativeTime{ future{ - other{"+{0} w"} + other{"ing {0} pekan"} } past{ - other{"-{0} w"} + other{"{0} pekan kepungkur"} } } } @@ -1415,21 +1340,21 @@ jv{ relativePeriod{"pekan kaping {0}"} relativeTime{ future{ - other{"ing {0} mgg."} + other{"ing {0} pekan"} } past{ - other{"{0} mgg. kepungkur"} + other{"{0} pekan kepungkur"} } } } weekOfMonth{ - dn{"minggu jroning sesasi"} + dn{"pekan jroning sesasi"} } weekOfMonth-narrow{ - dn{"mgu ing sasi"} + dn{"pekan jroning sasi"} } weekOfMonth-short{ - dn{"mgu ing sasi"} + dn{"pekan jroning sasi"} } weekday{ dn{"dino sepekan"} @@ -1438,10 +1363,7 @@ jv{ dn{"dina jroning sasi"} } weekdayOfMonth-narrow{ - dn{"Weekday Of Month"} - } - weekdayOfMonth-short{ - dn{"dn jroning sasi"} + dn{"dino jroning sasi"} } year{ dn{"taun"} @@ -1461,30 +1383,17 @@ jv{ } year-narrow{ dn{"taun"} - relative{ - "-1"{"taun wingi"} - "0"{"taun iki"} - "1"{"taun ngarep"} - } relativeTime{ future{ - other{"+{0} y"} + other{"ing {0} taun"} } past{ - other{"-{0} y"} + other{"{0} taun kepungkur"} } } } year-short{ dn{"taun"} - relativeTime{ - future{ - other{"ing {0} tn"} - } - past{ - other{"{0} tn kepungkur"} - } - } } zone{ dn{"zona wektu"} @@ -1501,17 +1410,6 @@ jv{ middle{"{0}, {1}"} start{"{0}, {1}"} } - or-narrow{ - 2{"{0} utowo {1}"} - end{"{0}, utowo {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } - or-short{ - end{"{0}, utowo {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard{ 2{"{0} lan {1}"} end{"{0}, lan {1}"} @@ -1574,10 +1472,6 @@ jv{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } - stricter{ - "[,٫︐﹐,]", - "[.․﹒.。]", - } } } } diff --git a/source/data/locales/jv_ID.txt b/source/data/locales/jv_ID.txt index a7a1218..3e46c41 100644 --- a/source/data/locales/jv_ID.txt +++ b/source/data/locales/jv_ID.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License jv_ID{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ka.txt b/source/data/locales/ka.txt index d323775..3694a19 100644 --- a/source/data/locales/ka.txt +++ b/source/data/locales/ka.txt @@ -15,13 +15,14 @@ ka{ } ExemplarCharacters{"[ა ბ გ დ ე ვ ზ თ ი კ ლ მ ნ ო პ ჟ რ ს ტ უ ფ ქ ღ ყ შ ჩ ც ძ წ ჭ ხ ჯ ჰ]"} ExemplarCharactersIndex{"[ა ბ გ დ ე ვ ზ თ ი კ ლ მ ნ ო პ ჟ რ ს ტ უ ფ ქ ღ ყ შ ჩ ც ძ წ ჭ ხ ჯ ჰ]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ჻ ' ‘ ‚ “ „ « » ( ) \\[ \\] \\{ \\} § @ * / \\& #" - " † ‡ ′ ″ №]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ჻ ' ‘ ‚ “ „ « » ( ) \\[ \\] \\{ \\} § @ * / \\&" + " # † ‡ ′ ″ №]" } MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"≈{0}"} @@ -32,6 +33,7 @@ ka{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -195,9 +197,11 @@ ka{ group{" "} infinity{"∞"} list{";"} + minusSign{"-"} nan{"არ არის რიცხვი"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -214,9 +218,10 @@ ka{ } } minimumGroupingDigits{"2"} + native{"latn"} traditional{"geor"} } - Version{"2.1.48.17"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -296,35 +301,6 @@ ka{ M{"GGGGG y-MM – y-MM"} y{"GGGGG y-MM – y-MM"} } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -477,8 +453,8 @@ ka{ MMM{"LLL"} MMMEd{"E, d MMM"} MMMMW{ - one{"MMMM-ის კვირა W"} - other{"MMMM-ის კვირა W"} + one{"MMMMს კვირა W"} + other{"MMMMს კვირა W"} } MMMMd{"d MMMM"} MMMd{"d MMM"} @@ -639,7 +615,7 @@ ka{ morning1{"დილა"} night1{"ღამე"} noon{"შუადღე"} - pm{"შუადღ. შემდეგ"} + pm{"PM"} } } } @@ -675,40 +651,6 @@ ka{ G{"G y – G y"} y{"G y–y"} } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -1861,12 +1803,6 @@ ka{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} და {1}"} - end{"{0} და {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} და {1}"} end{"{0} და {1}"} diff --git a/source/data/locales/ka_GE.txt b/source/data/locales/ka_GE.txt index 33e91d9..c42db2c 100644 --- a/source/data/locales/ka_GE.txt +++ b/source/data/locales/ka_GE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ka_GE{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/kab.txt b/source/data/locales/kab.txt index b8463bb..7d04bee 100644 --- a/source/data/locales/kab.txt +++ b/source/data/locales/kab.txt @@ -4,7 +4,7 @@ kab{ AuxExemplarCharacters{"[o v]"} ExemplarCharacters{"[a b c č d ḍ e ɛ f g ǧ ɣ h ḥ i j k l m n p q r ṛ s ṣ t ṭ u w x y z ẓ]"} ExemplarCharactersIndex{"[A B C Č D Ḍ E Ɛ F G Ǧ Ɣ H Ḥ I J K L M N P Q R Ṛ S Ṣ T Ṭ U W X Y Z Ẓ]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -16,7 +16,7 @@ kab{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/kab_DZ.txt b/source/data/locales/kab_DZ.txt index b1d6fb0..dffb459 100644 --- a/source/data/locales/kab_DZ.txt +++ b/source/data/locales/kab_DZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kab_DZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/kam.txt b/source/data/locales/kam.txt index 00af2f5..d576df7 100644 --- a/source/data/locales/kam.txt +++ b/source/data/locales/kam.txt @@ -11,7 +11,7 @@ kam{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/kam_KE.txt b/source/data/locales/kam_KE.txt index 008bdaa..82a1a23 100644 --- a/source/data/locales/kam_KE.txt +++ b/source/data/locales/kam_KE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kam_KE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/kde.txt b/source/data/locales/kde.txt index b171574..1812f30 100644 --- a/source/data/locales/kde.txt +++ b/source/data/locales/kde.txt @@ -11,7 +11,7 @@ kde{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/kde_TZ.txt b/source/data/locales/kde_TZ.txt index 7ff932a..dbc140c 100644 --- a/source/data/locales/kde_TZ.txt +++ b/source/data/locales/kde_TZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kde_TZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/kea.txt b/source/data/locales/kea.txt index 1e5ee64..56df14d 100644 --- a/source/data/locales/kea.txt +++ b/source/data/locales/kea.txt @@ -15,10 +15,10 @@ kea{ } ExemplarCharacters{"[a b d {dj} e f g h i j k l {lh} m n ñ {nh} o p r s t {tx} u v x y z]"} ExemplarCharactersIndex{"[A B D E F G H I J K L M N O P R S T U V X Z]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” « » ( ) \\[ \\] § @ * / \\& # † " - "‡]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” « » ( ) \\[ \\] § @ * / \\& # " + "† ‡]" } MoreInformation{"?"} NumberElements{ @@ -26,7 +26,7 @@ kea{ latn{ miscPatterns{ atLeast{"+{0}"} - range{"{0}–{1}"} + range{"{0} – {1}"} } patterns{ accountingFormat{"#,##0.00 ¤;(#,##0.00 ¤)"} @@ -130,10 +130,18 @@ kea{ timeSeparator{":"} } } + minimalPairs{ + ordinal{ + other{"{0}º lugar"} + } + plural{ + other{"{0} dia"} + } + } minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.48.9"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -144,7 +152,7 @@ kea{ "EEEE, d 'di' MMMM 'di' y G", "d 'di' MMMM 'di' y G", "d MMM y G", - "d/M/y GGGGG", + "dd/MM/y GGGGG", "{1}, {0}", "{1}, {0}", "{1}, {0}", @@ -153,9 +161,13 @@ kea{ } availableFormats{ E{"ccc"} + EHm{"E, HH:mm"} + EHms{"E, HH:mm:ss"} Ed{"E, d"} + Ehm{"E, h:mm a"} + Ehms{"E, h:mm:ss a"} Gy{"y G"} - GyMMM{"MMM y G"} + GyMMM{"LLL y G"} GyMMMEd{"E, d MMM y G"} GyMMMd{"d MMM y G"} H{"HH"} @@ -177,28 +189,66 @@ kea{ mmss{"mm:ss"} ms{"mm:ss"} y{"y"} - yM{"MM/y"} + yM{"LL/y"} yMEd{"E, dd/MM/y"} yMM{"MM/y"} - yMMM{"MMM y"} + yMMM{"LLL y"} yMMMEd{"E, d MMM y"} - yMMMM{"MMMM 'di' y"} + yMMMM{"LLLL 'di' y"} yMMMd{"d MMM y"} yMd{"dd/MM/y"} yQQQ{"QQQ y"} yQQQQ{"QQQQ 'di' y"} yyyy{"y G"} - yyyyM{"MM/y GGGGG"} + yyyyM{"LL/y GGGGG"} yyyyMEd{"E, dd/MM/y GGGGG"} - yyyyMMM{"MMM y G"} + yyyyMMM{"LLL y G"} yyyyMMMEd{"E, d MMM y G"} - yyyyMMMM{"MMMM y G"} + yyyyMMMM{"LLLL y G"} yyyyMMMd{"d MMM y G"} yyyyMd{"dd/MM/y GGGGG"} yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ 'di' y G"} } intervalFormats{ + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"LL/y GGGGG – LL/y GGGGG"} + M{"LL/y – LL/y GGGGG"} + y{"LL/y – LL/y GGGGG"} + } + GyMEd{ + G{"E, dd/MM/y GGGGG – E, dd/MM/y GGGGG"} + M{"E, dd/MM/y – E, dd/MM/y GGGGG"} + d{"E, dd/MM/y – E, dd/MM/y GGGGG"} + y{"E, dd/MM/y – E, dd/MM/y GGGGG"} + } + GyMMM{ + G{"LLL y G – LLL y G"} + M{"LLL – LLL y G"} + y{"LLL y – LLL y G"} + } + GyMMMEd{ + G{"E, d MMM y G – E, d MMM y G"} + M{"E, d MMM – E, d MMM y G"} + d{"E, d MMM – E, d MMM y G"} + y{"E, d MMM y – E, d MMM y G"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d – d MMM y G"} + y{"d MMM y – d MMM y G"} + } + GyMd{ + G{"dd/MM/y GGGGG – dd/MM/y GGGGG"} + M{"dd/MM/y – dd/MM/y GGGGG"} + d{"dd/MM/y – dd/MM/y GGGGG"} + y{"dd/MM/y – dd/MM/y GGGGG"} + } H{ H{"HH–HH"} } @@ -214,14 +264,14 @@ kea{ H{"HH–HH v"} } M{ - M{"M – M"} + M{"L – L"} } MEd{ M{"E, dd/MM – E, dd/MM"} d{"E, dd/MM – E, dd/MM"} } MMM{ - M{"MMM – MMM"} + M{"LLL – LLL"} } MMMEd{ M{"E, d MMM – E, d MMM"} @@ -262,7 +312,7 @@ kea{ } yM{ M{"MM/y – MM/y"} - y{"MM/y – MM/y"} + y{"LL/y – LL/y"} } yMEd{ M{"E, dd/MM/y – E, dd/MM/y"} @@ -270,8 +320,8 @@ kea{ y{"E, dd/MM/y – E, dd/MM/y"} } yMMM{ - M{"MMM – MMM y"} - y{"MMM y – MMM y"} + M{"LLL – LLL y"} + y{"LLL y – LLL y"} } yMMMEd{ M{"E, d MMM – E, d MMM y"} @@ -279,8 +329,8 @@ kea{ y{"E, d MMM y – E, d MMM y"} } yMMMM{ - M{"MMMM – MMMM 'di' y G"} - y{"MMMM 'di' y – MMMM 'di' y G"} + M{"LLLL – LLLL 'di' y G"} + y{"LLLL 'di' y – LLLL 'di' y G"} } yMMMd{ M{"d MMM – d MMM y"} @@ -303,10 +353,6 @@ kea{ "am", "pm", } - AmPmMarkersNarrow{ - "a", - "p", - } DateTimePatterns{ "HH:mm:ss zzzz", "HH:mm:ss z", @@ -315,25 +361,27 @@ kea{ "EEEE, d 'di' MMMM 'di' y", "d 'di' MMMM 'di' y", "d MMM y", - "d/M/y", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", + "dd/MM/y", + "{1}, {0}", + "{1}, {0}", + "{1}, {0}", + "{1}, {0}", + "{1}, {0}", } appendItems{ Timezone{"{0} {1}"} } availableFormats{ E{"ccc"} + EBhm{"E, h:mm B"} + EBhms{"E, h:mm:ss B"} EHm{"E, HH:mm"} EHms{"E, HH:mm:ss"} Ed{"E, d"} Ehm{"E, h:mm a"} Ehms{"E, h:mm:ss a"} Gy{"y G"} - GyMMM{"MMM y G"} + GyMMM{"LLL y G"} GyMMMEd{"E, d MMM y G"} GyMMMd{"d MMM y G"} H{"HH"} @@ -343,9 +391,11 @@ kea{ Hmv{"HH:mm (v)"} M{"L"} MEd{"E, dd/MM"} - MMM{"LLL"} MMMEd{"E, d MMM"} MMMMEd{"E, d 'di' MMMM"} + MMMMW{ + other{"W'º' 'simana' 'di' MMMM"} + } MMMMd{"d 'di' MMMM"} MMMd{"d MMM"} MMdd{"dd/MM"} @@ -359,16 +409,19 @@ kea{ mmss{"mm:ss"} ms{"mm:ss"} y{"y"} - yM{"MM/y"} + yM{"LL/y"} yMEd{"E, dd/MM/y"} - yMM{"MM/y"} - yMMM{"MMM y"} + yMM{"LL/y"} + yMMM{"LLL y"} yMMMEd{"E, d MMM y"} - yMMMM{"MMMM 'di' y"} + yMMMM{"LLLL 'di' y"} yMMMd{"d MMM y"} yMd{"dd/MM/y"} yQQQ{"QQQ y"} yQQQQ{"QQQQ 'di' y"} + yw{ + other{"w'º' 'simana' 'di' Y"} + } } dayNames{ format{ @@ -458,15 +511,60 @@ kea{ "EK", } wide{ - "Antis di Kristu", - "Dispos di Kristu", + "antis di Kristu", + "dispos di Kristu", } wide%variant{ - "Antis di Era Kumun", + "antis di Era Kumun", "Era Kumun", } } intervalFormats{ + Bh{ + h{"h – h B"} + } + Bhm{ + h{"h:mm – h:mm B"} + m{"h:mm – h:mm B"} + } + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"LL/y GGGGG – LL/y GGGGG"} + M{"LL/y – LL/y GGGGG"} + y{"LL/y – LL/y GGGGG"} + } + GyMEd{ + G{"E, dd/MM/y GGGGG – E, dd/MM/y GGGGG"} + M{"E, dd/MM/y – E, dd/MM/y GGGGG"} + d{"E, dd/MM/y – E, dd/MM/y GGGGG"} + y{"E, dd/MM/y – E, dd/MM/y GGGGG"} + } + GyMMM{ + G{"LLL y G – LLL y G"} + M{"LLL – LLL y G"} + y{"LLL y – LLL y G"} + } + GyMMMEd{ + G{"E, d MMM y G – E, d MMM y G"} + M{"E, d MMM – E, d MMM y G"} + d{"E, d MMM – E, d MMM y G"} + y{"E, d MMM y – E, d MMM y G"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d – d MMM y G"} + y{"d MMM y – d MMM y G"} + } + GyMd{ + G{"dd/MM/y GGGGG – dd/MM/y GGGGG"} + M{"dd/MM/y – dd/MM/y GGGGG"} + d{"dd/MM/y – dd/MM/y GGGGG"} + y{"dd/MM/y – dd/MM/y GGGGG"} + } H{ H{"HH – HH"} } @@ -482,7 +580,7 @@ kea{ H{"HH – HH v"} } M{ - M{"M – M"} + M{"L – L"} } MEd{ M{"E, dd/MM – E, dd/MM"} @@ -529,8 +627,8 @@ kea{ y{"y – y"} } yM{ - M{"MM/y – MM/y"} - y{"MM/y – MM/y"} + M{"LL/y – LL/y"} + y{"LL/y – LL/y"} } yMEd{ M{"E, dd/MM/y – E, dd/MM/y"} @@ -538,8 +636,8 @@ kea{ y{"E, dd/MM/y – E, dd/MM/y"} } yMMM{ - M{"MMM – MMM y"} - y{"MMM y – MMM y"} + M{"LLL – LLL y"} + y{"LLL y – LLL y"} } yMMMEd{ M{"E, d MMM – E, d MMM y"} @@ -547,8 +645,8 @@ kea{ y{"E, d MMM y – E, d MMM y"} } yMMMM{ - M{"MMMM – MMMM 'di' y"} - y{"MMMM y – MMMM y"} + M{"LLLL – LLLL 'di' y"} + y{"LLLL y – LLLL y"} } yMMMd{ M{"d MMM – d MMM y"} @@ -703,11 +801,11 @@ kea{ } fields{ day{ - dn{"Dia"} + dn{"dia"} relative{ "-1"{"onti"} "0"{"oji"} - "1"{"manha"} + "1"{"manhan"} } relativeTime{ future{ @@ -720,6 +818,11 @@ kea{ } day-narrow{ dn{"dia"} + relative{ + "-1"{"onti"} + "0"{"oji"} + "1"{"manhan"} + } relativeTime{ future{ other{"di li {0} dia"} @@ -731,6 +834,11 @@ kea{ } day-short{ dn{"dia"} + relative{ + "-1"{"onti"} + "0"{"oji"} + "1"{"manhan"} + } relativeTime{ future{ other{"di li {0} dia"} @@ -740,11 +848,20 @@ kea{ } } } + dayOfYear{ + dn{"dia di anu"} + } + dayOfYear-narrow{ + dn{"dia di anu"} + } + dayOfYear-short{ + dn{"dia di anu"} + } dayperiod{ dn{"am/pm"} } era{ - dn{"Era"} + dn{"era"} } fri{ relative{ @@ -752,6 +869,14 @@ kea{ "0"{"es sesta-fera li"} "1"{"prósimu sesta-fera"} } + relativeTime{ + future{ + other{"di li {0} sesta-fera"} + } + past{ + other{"a ten {0} sesta-fera"} + } + } } fri-narrow{ relative{ @@ -759,6 +884,14 @@ kea{ "0"{"es ses. li"} "1"{"prósimu ses."} } + relativeTime{ + future{ + other{"di li {0} ses."} + } + past{ + other{"a ten {0} ses."} + } + } } fri-short{ relative{ @@ -766,9 +899,20 @@ kea{ "0"{"es ses. li"} "1"{"prósimu ses."} } + relativeTime{ + future{ + other{"di li {0} ses."} + } + past{ + other{"a ten {0} ses."} + } + } } hour{ - dn{"Ora"} + dn{"ora"} + relative{ + "0"{"es ora li"} + } relativeTime{ future{ other{"di li {0} ora"} @@ -801,7 +945,10 @@ kea{ } } minute{ - dn{"Minutu"} + dn{"minutu"} + relative{ + "0"{"es minutu li"} + } relativeTime{ future{ other{"di li {0} minutu"} @@ -839,6 +986,14 @@ kea{ "0"{"es sigunda-fera li"} "1"{"prósimu sigunda-fera"} } + relativeTime{ + future{ + other{"di li {0} sigunda-fera"} + } + past{ + other{"a ten {0} sigunda-fera"} + } + } } mon-narrow{ relative{ @@ -846,6 +1001,14 @@ kea{ "0"{"es sig. li"} "1"{"prósimu sig."} } + relativeTime{ + future{ + other{"di li {0} sig."} + } + past{ + other{"a ten {0} sig."} + } + } } mon-short{ relative{ @@ -853,9 +1016,17 @@ kea{ "0"{"es sig. li"} "1"{"prósimu sig."} } + relativeTime{ + future{ + other{"di li {0} sig."} + } + past{ + other{"a ten {0} sig."} + } + } } month{ - dn{"Mes"} + dn{"mes"} relative{ "-1"{"mes pasadu"} "0"{"es mes li"} @@ -893,7 +1064,12 @@ kea{ } } quarter{ - dn{"Trimestri"} + dn{"trimestri"} + relative{ + "-1"{"trimestri pasadu"} + "0"{"es trimestri li"} + "1"{"prósimu trimestri"} + } relativeTime{ future{ other{"di li {0} trimestri"} @@ -931,6 +1107,14 @@ kea{ "0"{"es sabadu li"} "1"{"prósimu sabadu"} } + relativeTime{ + future{ + other{"di li {0} sabadu"} + } + past{ + other{"a ten {0} sabadu"} + } + } } sat-narrow{ relative{ @@ -938,6 +1122,14 @@ kea{ "0"{"es sab. li"} "1"{"prósimu sab."} } + relativeTime{ + future{ + other{"di li {0} sab."} + } + past{ + other{"a ten {0} sab."} + } + } } sat-short{ relative{ @@ -945,9 +1137,20 @@ kea{ "0"{"es sab. li"} "1"{"prósimu sab."} } + relativeTime{ + future{ + other{"di li {0} sab."} + } + past{ + other{"a ten {0} sab."} + } + } } second{ - dn{"Sigundu"} + dn{"sigundu"} + relative{ + "0"{"agora"} + } relativeTime{ future{ other{"di li {0} sigundu"} @@ -985,6 +1188,14 @@ kea{ "0"{"es dumingu li"} "1"{"prósimu dumingu"} } + relativeTime{ + future{ + other{"di li {0} dumingu"} + } + past{ + other{"a ten {0} dumingu"} + } + } } sun-narrow{ relative{ @@ -992,6 +1203,14 @@ kea{ "0"{"es dum. li"} "1"{"prósimu dum."} } + relativeTime{ + future{ + other{"di li {0} dum."} + } + past{ + other{"a ten {0} dum."} + } + } } sun-short{ relative{ @@ -999,6 +1218,14 @@ kea{ "0"{"es dum. li"} "1"{"prósimu dum."} } + relativeTime{ + future{ + other{"di li {0} dum."} + } + past{ + other{"a ten {0} dum."} + } + } } thu{ relative{ @@ -1006,6 +1233,14 @@ kea{ "0"{"es kinta-fera li"} "1"{"prósimu kinta-fera"} } + relativeTime{ + future{ + other{"di li {0} kinta-fera"} + } + past{ + other{"a ten {0} kinta-fera"} + } + } } thu-narrow{ relative{ @@ -1013,6 +1248,14 @@ kea{ "0"{"es kin. li"} "1"{"prósimu kin."} } + relativeTime{ + future{ + other{"di li {0} kin."} + } + past{ + other{"a ten {0} kin."} + } + } } thu-short{ relative{ @@ -1020,6 +1263,14 @@ kea{ "0"{"es kin. li"} "1"{"prósimu kin."} } + relativeTime{ + future{ + other{"di li {0} kin."} + } + past{ + other{"a ten {0} kin."} + } + } } tue{ relative{ @@ -1027,6 +1278,14 @@ kea{ "0"{"es tersa-fera li"} "1"{"prósimu tersa-fera"} } + relativeTime{ + future{ + other{"di li {0} tersa-fera"} + } + past{ + other{"a ten {0} tersa-fera"} + } + } } tue-narrow{ relative{ @@ -1034,6 +1293,14 @@ kea{ "0"{"es ter. li"} "1"{"prósimu ter."} } + relativeTime{ + future{ + other{"di li {0} ter."} + } + past{ + other{"a ten {0} ter."} + } + } } tue-short{ relative{ @@ -1041,6 +1308,14 @@ kea{ "0"{"es ter. li"} "1"{"prósimu ter."} } + relativeTime{ + future{ + other{"di li {0} ter."} + } + past{ + other{"a ten {0} ter."} + } + } } wed{ relative{ @@ -1048,6 +1323,14 @@ kea{ "0"{"es kuarta-fera li"} "1"{"prósimu kuarta-fera"} } + relativeTime{ + future{ + other{"di li {0} kuarta-fera"} + } + past{ + other{"a ten {0} kuarta-fera"} + } + } } wed-narrow{ relative{ @@ -1055,6 +1338,14 @@ kea{ "0"{"es kua. li"} "1"{"prósimu kua."} } + relativeTime{ + future{ + other{"di li {0} kua."} + } + past{ + other{"a ten {0} kua."} + } + } } wed-short{ relative{ @@ -1062,14 +1353,23 @@ kea{ "0"{"es kua. li"} "1"{"prósimu kua."} } + relativeTime{ + future{ + other{"di li {0} kua."} + } + past{ + other{"a ten {0} kua."} + } + } } week{ - dn{"Simana"} + dn{"simana"} relative{ "-1"{"simana pasadu"} "0"{"es simana li"} "1"{"prósimu simana"} } + relativePeriod{"simana di {0}"} relativeTime{ future{ other{"di li {0} simana"} @@ -1081,6 +1381,7 @@ kea{ } week-narrow{ dn{"sim."} + relativePeriod{"sim. di {0}"} relativeTime{ future{ other{"di li {0} sim."} @@ -1092,6 +1393,7 @@ kea{ } week-short{ dn{"sim."} + relativePeriod{"sim. di {0}"} relativeTime{ future{ other{"di li {0} sim."} @@ -1101,11 +1403,32 @@ kea{ } } } + weekOfMonth{ + dn{"simana di mes"} + } + weekOfMonth-narrow{ + dn{"sim. di mes"} + } + weekOfMonth-short{ + dn{"sim. di mes"} + } weekday{ - dn{"Dia di simana"} + dn{"dia di simana"} + } + weekday-short{ + dn{"dia di sim."} + } + weekdayOfMonth{ + dn{"dia di simana di mes"} + } + weekdayOfMonth-narrow{ + dn{"dia di sim. di mes"} + } + weekdayOfMonth-short{ + dn{"dia di sim. di mes"} } year{ - dn{"Anu"} + dn{"anu"} relative{ "-1"{"anu pasadu"} "0"{"es anu li"} @@ -1143,10 +1466,22 @@ kea{ } } zone{ - dn{"Ora lokal"} + dn{"ora lokal"} } } listPattern{ + or{ + 2{"{0} o {1}"} + end{"{0} o {1}"} + } + or-narrow{ + 2{"{0} o {1}"} + end{"{0} o {1}"} + } + or-short{ + 2{"{0} o {1}"} + end{"{0} o {1}"} + } standard{ 2{"{0} i {1}"} end{"{0} i {1}"} @@ -1173,7 +1508,7 @@ kea{ } } measurementSystemNames{ - UK{"Ingles"} + UK{"Britániku"} US{"Merkanu"} metric{"Métriku"} } diff --git a/source/data/locales/kea_CV.txt b/source/data/locales/kea_CV.txt index aa6fdb0..78c96f6 100644 --- a/source/data/locales/kea_CV.txt +++ b/source/data/locales/kea_CV.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kea_CV{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/khq.txt b/source/data/locales/khq.txt index 8423e3c..0b11a24 100644 --- a/source/data/locales/khq.txt +++ b/source/data/locales/khq.txt @@ -4,7 +4,7 @@ khq{ AuxExemplarCharacters{"[v]"} ExemplarCharacters{"[a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž]"} ExemplarCharactersIndex{"[A à B C D E Ẽ F G H I J K L M N Ɲ Ŋ O Õ P Q R S Š T U W X Y Z Ž]"} - ExemplarCharactersNumbers{"[  \\- . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -15,7 +15,7 @@ khq{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/khq_ML.txt b/source/data/locales/khq_ML.txt index 4144f6d..d82d02d 100644 --- a/source/data/locales/khq_ML.txt +++ b/source/data/locales/khq_ML.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License khq_ML{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ki.txt b/source/data/locales/ki.txt index e2a3b17..b473f5f 100644 --- a/source/data/locales/ki.txt +++ b/source/data/locales/ki.txt @@ -12,7 +12,7 @@ ki{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ki_KE.txt b/source/data/locales/ki_KE.txt index 5fd23ac..a555c89 100644 --- a/source/data/locales/ki_KE.txt +++ b/source/data/locales/ki_KE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ki_KE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/kk.txt b/source/data/locales/kk.txt index 86bd325..d26f912 100644 --- a/source/data/locales/kk.txt +++ b/source/data/locales/kk.txt @@ -18,10 +18,10 @@ kk{ "[А Ә Б В Г Ғ Д Е Ё Ж З И Й К Қ Л М Н Ң О Ө П Р С Т У Ұ Ү Ф Х Һ Ц Ч Ш Щ Ъ Ы І" " Ь Э Ю Я]" } - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” « » ( ) \\[ \\] \\{ \\} § @ * / " - "\\& #]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” « » ( ) \\[ \\] \\{ \\} § @ * " + "/ \\& #]" } MoreInformation{"?"} NumberElements{ @@ -36,6 +36,7 @@ kk{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -198,10 +199,13 @@ kk{ exponential{"E"} group{" "} infinity{"∞"} + minusSign{"-"} nan{"сан емес"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -214,9 +218,10 @@ kk{ other{"Себетте {0} Х бар. Олар сіздікі ме?"} } } + minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -287,26 +292,6 @@ kk{ h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } GyMMMEd{ G{"G y 'ж'. d MMM, E – G y 'ж'. d MMM, E"} M{"G y 'ж'. d MMM, E – d MMM, E"} @@ -319,12 +304,6 @@ kk{ d{"G y 'ж'. d–d MMM"} y{"G y 'ж'. d MMM – y 'ж'. d MMM"} } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -644,6 +623,10 @@ kk{ "б.з.д.", "б.з.", } + abbreviated%variant{ + "BCE", + "CE", + } wide{ "Біздің заманымызға дейін", "біздің заманымыз", @@ -663,26 +646,6 @@ kk{ h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } GyMMMEd{ G{"G y 'ж'. d MMM, E – G y 'ж'. d MMM, E"} M{"G y 'ж'. d MMM, E – d MMM, E"} @@ -695,12 +658,6 @@ kk{ d{"G y 'ж'. d–d MMM"} y{"G y 'ж'. d MMM – y 'ж'. d MMM"} } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -1833,17 +1790,8 @@ kk{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} және {1}"} - end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} және {1}"} - end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } unit{ 2{"{0} {1}"} @@ -1869,36 +1817,4 @@ kk{ US{"Америкалық"} metric{"Метрлік"} } - parse{ - date{ - lenient{ - "[\\--/]", - "[\\:∶︓﹕:]", - } - } - general{ - lenient{ - "[.․。︒﹒.。]", - "['ʼ՚᾽᾿’']", - "[%٪﹪%]", - "[؉‰]", - "[\$﹩$]", - "[£₤£]", - "[¥¥]", - "[₩₩]", - "[₨₹{Rp}{Rs}]", - } - } - number{ - lenient{ - "[\\-‐‒–⁻₋−➖﹣-]", - "[,،٫、︐︑﹐﹑,、]", - "[+⁺₊➕﬩﹢+]", - } - stricter{ - "[,٫︐﹐,]", - "[.․﹒.。]", - } - } - } } diff --git a/source/data/locales/kk_KZ.txt b/source/data/locales/kk_KZ.txt index 59eaac0..6ff9a67 100644 --- a/source/data/locales/kk_KZ.txt +++ b/source/data/locales/kk_KZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kk_KZ{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/kkj.txt b/source/data/locales/kkj.txt index fffc0f4..3569522 100644 --- a/source/data/locales/kkj.txt +++ b/source/data/locales/kkj.txt @@ -12,7 +12,7 @@ kkj{ "[A B Ɓ C D Ɗ {Ɗy} E Ɛ F G {Gb} {Gw} H I {I\u0327} J K {Kp} {Kw} L M {Mb} N {" "Nd} Nj {Ny} Ŋ {Ŋg} {Ŋgb} {Ŋgw} O Ɔ {Ɔ\u0327} P R S T U {U\u0327} V W Y]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{"[, \\: ! ? . … ‘ ‹ › “ ” « » ( ) *]"} NumberElements{ default{"latn"} @@ -24,7 +24,7 @@ kkj{ } native{"latn"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/kkj_CM.txt b/source/data/locales/kkj_CM.txt index 7b8083d..779ea16 100644 --- a/source/data/locales/kkj_CM.txt +++ b/source/data/locales/kkj_CM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kkj_CM{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/kl.txt b/source/data/locales/kl.txt index a18aa4e..0eae6b5 100644 --- a/source/data/locales/kl.txt +++ b/source/data/locales/kl.txt @@ -1,11 +1,9 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kl{ - AuxExemplarCharacters{"[ĸ]"} - ExemplarCharacters{ - "[a á â ã b c d e é ê f g h i í î ĩ j k l m n o ô p q r s t u ú û ũ v w x y z" - " æ ø å]" - } + AuxExemplarCharacters{"[á â ã é ê ẽ í î ĩ ô õ ĸ ú û ũ]"} + ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z æ ø å]"} + ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å]"} ExemplarCharactersNumbers{"[, . % ‰ + − 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ @@ -25,7 +23,7 @@ kl{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ @@ -98,61 +96,61 @@ kl{ format{ abbreviated{ "jan", - "feb", + "febr", "mar", "apr", "maj", "jun", "jul", "aug", - "sep", + "sept", "okt", "nov", "dec", } wide{ - "januari", - "februari", - "martsi", - "aprili", - "maji", - "juni", - "juli", - "augustusi", - "septemberi", - "oktoberi", - "novemberi", - "decemberi", + "januaarip", + "februaarip", + "marsip", + "apriilip", + "maajip", + "juunip", + "juulip", + "aggustip", + "septembarip", + "oktobarip", + "novembarip", + "decembarip", } } stand-alone{ abbreviated{ "jan", - "feb", + "febr", "mar", "apr", "maj", "jun", "jul", "aug", - "sep", + "sept", "okt", "nov", "dec", } wide{ - "januari", - "februari", - "martsi", - "aprili", - "maji", - "juni", - "juli", - "augustusi", - "septemberi", - "oktoberi", - "novemberi", - "decemberi", + "januaari", + "februaari", + "marsi", + "apriili", + "maaji", + "juuni", + "juuli", + "aggusti", + "septembari", + "oktobari", + "novembari", + "decembari", } } } diff --git a/source/data/locales/kl_GL.txt b/source/data/locales/kl_GL.txt index 041344f..c9aabe8 100644 --- a/source/data/locales/kl_GL.txt +++ b/source/data/locales/kl_GL.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kl_GL{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/kln.txt b/source/data/locales/kln.txt index 6c249e4..1bfa9ae 100644 --- a/source/data/locales/kln.txt +++ b/source/data/locales/kln.txt @@ -12,7 +12,7 @@ kln{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/kln_KE.txt b/source/data/locales/kln_KE.txt index b3fbeab..6181758 100644 --- a/source/data/locales/kln_KE.txt +++ b/source/data/locales/kln_KE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kln_KE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/km.txt b/source/data/locales/km.txt index 2eefd80..a5809a7 100644 --- a/source/data/locales/km.txt +++ b/source/data/locales/km.txt @@ -15,8 +15,8 @@ km{ "ន ប ផ ព ភ ម យ រ ឫ ឬ ល ឭ ឮ វ ស ហ ឡ អ {អា} ឥ ឦ ឧ {ឧក} ឩ ឪ ឯ ឰ ឱ ឲ ឳ ា \u17B7 " "\u17B8 \u17B9 \u17BA \u17BB \u17BC \u17BD ើ ឿ ៀ េ ែ ៃ ោ ៅ \u17C6 ះ \u17D2]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- , ៖ ! ? . ។ ៕ ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\} ៙ ៚]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‑ , ៖ ! ? . ។ ៕ ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\} ៙ ៚]"} MoreInformation{"?"} NumberElements{ default{"latn"} @@ -30,6 +30,7 @@ km{ patterns{ accountingFormat{"#,##0.00¤;(#,##0.00¤)"} currencyFormat{"#,##0.00¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -157,9 +158,11 @@ km{ group{"."} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -172,9 +175,10 @@ km{ other{"{0} ថ្ងៃ"} } } + minimumGroupingDigits{"1"} native{"khmr"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -237,14 +241,50 @@ km{ } intervalFormats{ Bh{ - B{"h B – h B"} h{"h – h B"} } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"M/y GGGGG – M/y GGGGG"} + M{"M/y – M/y GGGGG"} + y{"M/y – M/y GGGGG"} + } + GyMEd{ + G{"E d/M/y GGGGG – E d/M/y GGGGG"} + M{"E d/M/y – E d/M/y GGGGG"} + d{"E d/M/y – E d/M/y GGGGG"} + y{"E d/M/y – E d/M/y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E d MMM y G – E d MMM y G"} + M{"E d MMM – E d MMM y G"} + d{"E d MMM – E d MMM y G"} + y{"E d MMM y – E d MMM y G"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d – d MMM y G"} + y{"d MMM y – d MMM y G"} + } + GyMd{ + G{"d/M/y GGGGG – d/M/y GGGGG"} + M{"d/M/y – d/M/y GGGGG"} + d{"d/M/y – d/M/y GGGGG"} + y{"d/M/y – d/M/y GGGGG"} + } H{ H{"H–H"} } @@ -329,7 +369,7 @@ km{ y{"MMMM y – MMMM y G"} } yMMMd{ - M{"MMM d – MMM d, y G"} + M{"d MMM – d MMM y G"} d{"d–d MMM y G"} y{"d MMM, y – d MMM, y G"} } @@ -581,14 +621,50 @@ km{ } intervalFormats{ Bh{ - B{"h B – h B"} h{"h – h B"} } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"M/y GGGGG – M/y GGGGG"} + M{"M/y – M/y GGGGG"} + y{"M/y – M/y GGGGG"} + } + GyMEd{ + G{"E d/M/y GGGGG – E d/M/y GGGGG"} + M{"E d/M/y – E d/M/y GGGGG"} + d{"E d/M/y – E d/M/y GGGGG"} + y{"E d/M/y – E d/M/y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E d MMM y G – E d MMM y G"} + M{"E d MMM – E d MMM y G"} + d{"E d MMM – E d MMM y G"} + y{"E d MMM y – E d MMM y G"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d – d MMM y G"} + y{"d MMM y – d MMM y G"} + } + GyMd{ + G{"d/M/y GGGGG – d/M/y GGGGG"} + M{"d/M/y – d/M/y GGGGG"} + d{"d/M/y – d/M/y GGGGG"} + y{"d/M/y – d/M/y GGGGG"} + } H{ H{"HH – HH"} } diff --git a/source/data/locales/km_KH.txt b/source/data/locales/km_KH.txt index 45176f4..01862e7 100644 --- a/source/data/locales/km_KH.txt +++ b/source/data/locales/km_KH.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License km_KH{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/kn.txt b/source/data/locales/kn.txt index 2494ae3..8815399 100644 --- a/source/data/locales/kn.txt +++ b/source/data/locales/kn.txt @@ -19,10 +19,11 @@ kn{ "[ಅ ಆ ಇ ಈ ಉ ಊ ಋ ೠ ಌ ೡ ಎ ಏ ಐ ಒ ಓ ಔ ಕ ಖ ಗ ಘ ಙ ಚ ಛ ಜ ಝ ಞ ಟ ಠ ಡ ಢ ಣ ತ ಥ ದ ಧ ನ ಪ ಫ" " ಬ ಭ ಮ ಯ ರ ಱ ಲ ವ ಶ ಷ ಸ ಹ ಳ ೞ]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0೦ 1೧ 2೨ 3೩ 4೪ 5೫ 6೬ 7೭ 8೮ 9೯]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] @ * / \\& # ′ ″]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0೦ 1೧ 2೨ 3೩ 4೪ 5೫ 6೬ 7೭ 8೮ 9೯]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] @ * / \\& # ′ ″]"} MoreInformation{"?"} NumberElements{ + default{"latn"} knda{ patterns{ currencyFormat{"¤#,##0.00"} @@ -46,12 +47,15 @@ kn{ } latn{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}–{1}"} } patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -210,11 +214,16 @@ kn{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -231,9 +240,36 @@ kn{ minimumGroupingDigits{"1"} native{"knda"} } - Version{"2.1.48.17"} + Version{"36"} calendar{ + buddhist{ + eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } + wide{ + "BE", + } + } + } coptic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -251,6 +287,21 @@ kn{ "ಮೆಸ್ರಾ", "ನಾಸಿ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "ಟೌಟ್", "ಬಾಬಾ", @@ -283,6 +334,21 @@ kn{ "ಮೆಸ್ರಾ", "ನಾಸಿ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "ಟೌಟ್", "ಬಾಬಾ", @@ -302,6 +368,20 @@ kn{ } } ethiopic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -319,6 +399,21 @@ kn{ "ನಿಹಾಸ್ಸೆ", "ಪೆಗ್ಯುಮೆನ್", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "ಮೆಸ್ಕರೆಮ್", "ಟೆಕೆಮ್ಟ್", @@ -351,6 +446,21 @@ kn{ "ನಿಹಾಸ್ಸೆ", "ಪೆಗ್ಯುಮೆನ್", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "ಮೆಸ್ಕರೆಮ್", "ಟೆಕೆಮ್ಟ್", @@ -431,52 +541,19 @@ kn{ yyyyQQQQ{"G y QQQQ"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} + H{ + H{"HH–HH"} } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + Hv{ + H{"HH–HH v"} } M{ M{"M–M"} @@ -504,6 +581,24 @@ kn{ d{"d–d"} } fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -597,6 +692,10 @@ kn{ MEd{"d/M, E"} MMM{"LLL"} MMMEd{"E, d MMM"} + MMMMW{ + one{"'week' W 'of' MMMM"} + other{"'week' W 'of' MMMM"} + } MMMMd{"d MMMM"} MMMd{"MMM d"} MMdd{"dd-MM"} @@ -619,6 +718,10 @@ kn{ yMd{"d/M/y"} yQQQ{"QQQ y"} yQQQQ{"QQQQ y"} + yw{ + one{"'week' w 'of' Y"} + other{"'week' w 'of' Y"} + } } dayNames{ format{ @@ -780,44 +883,6 @@ kn{ h{"h:mm–h:mm B"} m{"h:mm–h:mm B"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -1046,6 +1111,17 @@ kn{ } } hebrew{ + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } monthNames{ format{ abbreviated{ @@ -1064,6 +1140,22 @@ kn{ "ಎಲುಲ್", "ಅದಾರ್ II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "ಟಿಶ್ರಿ", "ಹೆಶ್‌ವಾನ್", @@ -1098,6 +1190,22 @@ kn{ "ಎಲುಲ್", "ಅದಾರ್ II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "ಟಿಶ್ರಿ", "ಹೆಶ್‌ವಾನ್", @@ -1145,6 +1253,20 @@ kn{ "ಮಾಘ", "ಫಾಲ್ಗುಣ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ಚೈತ್ರ", "ವೈಶಾಖ", @@ -1175,6 +1297,20 @@ kn{ "ಮಾಘ", "ಫಾಲ್ಗುಣ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ಚೈತ್ರ", "ವೈಶಾಖ", @@ -1193,6 +1329,17 @@ kn{ } } islamic{ + eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } + wide{ + "AH", + } + } monthNames{ format{ abbreviated{ @@ -1209,6 +1356,20 @@ kn{ "ಧು‘ಲ್-ಕಿ.", "ಧು‘ಲ್-ಹ.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ಮುಹರಮ್", "ಸಫಾರ್", @@ -1239,6 +1400,20 @@ kn{ "ಧು‘ಲ್-ಕಿ.", "ಧು‘ಲ್-ಹ.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ಮುಹರಮ್", "ಸಫಾರ್", @@ -1257,6 +1432,17 @@ kn{ } } persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } monthNames{ format{ abbreviated{ @@ -1273,6 +1459,20 @@ kn{ "ಬಹ್ಮನ್", "ಎಸ್ಫಾಂಡ್", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ಫರ್ವರ್ದಿನ್", "ಓರ್ದಿಬೆಹೆಶ್ಟ್", @@ -1303,6 +1503,20 @@ kn{ "ಬಹ್ಮನ್", "ಎಸ್ಫಾಂಡ್", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ಫರ್ವರ್ದಿನ್", "ಓರ್ದಿಬೆಹೆಶ್ಟ್", @@ -2271,6 +2485,10 @@ kn{ middle{"{0}, {1}"} start{"{0}, {1}"} } + standard-narrow{ + 2{"{0}, {1}"} + end{"{0}, {1}"} + } standard-short{ 2{"{0} ಮತ್ತು {1}"} end{"{0}, ಮತ್ತು {1}"} diff --git a/source/data/locales/kn_IN.txt b/source/data/locales/kn_IN.txt index 508fead..8661fc2 100644 --- a/source/data/locales/kn_IN.txt +++ b/source/data/locales/kn_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kn_IN{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ko.txt b/source/data/locales/ko.txt index 9f8f965..d3b8163 100644 --- a/source/data/locales/ko.txt +++ b/source/data/locales/ko.txt @@ -24,14 +24,23 @@ ko{ " 頸 顆 顧 飢 餃 館 饉 饋 饑 駒 駕 駱 騎 騏 騫 驅 驕 驚 驥 骨 高 鬼 魁 鮫 鯤 鯨 鱇 鳩 鵑 鵠 鷄 鷗 鸞 麒 麴 黔 鼓 龕" " 龜]" } + Ellipsis{ + final{"{0}…"} + initial{"…{0}"} + medial{"{0}…{1}"} + word-final{"{0} …"} + word-initial{"… {0}"} + word-medial{"{0} … {1}"} + } ExemplarCharacters{"[가-힣]"} ExemplarCharactersIndex{"[ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[‾ _ _ \\- - ‐ — ― 〜 ・ , , 、 ; ; \\: : ! ! ¡ ? ? ¿ . . ‥ … 。 · ' ‘ ’ \u0022 " - "" “ ” ( ( ) ) \\[ [ \\] ] \\{ { \\} } 〈 〉 《 》 「 」 『 』 【 】 〔 〕 § ¶ @ @ * * / " - "/ \\\\ \ \\& & # # % % ‰ † ‡ ′ ″ 〃 ※]" + "[‾ _ _ \\- - ‐ ‑ — ― 〜 ・ , , 、 ; ; \\: : ! ! ¡ ? ? ¿ . . ‥ … 。 · ' ‘ ’ " + "\u0022 " “ ” ( ( ) ) \\[ [ \\] ] \\{ { \\} } 〈 〉 《 》 「 」 『 』 【 】 〔 〕 § ¶ @ @" + " * * / / \\\\ \ \\& & # # % % ‰ † ‡ ′ ″ 〃 ※]" } + MoreInformation{"?"} NumberElements{ arab{ symbols{ @@ -39,6 +48,7 @@ ko{ plusSign{"‏+"} } } + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -49,6 +59,7 @@ ko{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -171,12 +182,16 @@ ko{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -190,8 +205,9 @@ ko{ } } minimumGroupingDigits{"1"} + native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ availableFormats{ @@ -1630,6 +1646,12 @@ ko{ } hebrew{ eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } wide{ "유대력", } @@ -1711,6 +1733,12 @@ ko{ yyyyMMMM{"G y년 MMMM"} } eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } wide{ "히즈라력", } @@ -2184,6 +2212,12 @@ ko{ western_asian_scripts{"동서양 문자"} whitespace{"공백"} } + delimiters{ + alternateQuotationEnd{"’"} + alternateQuotationStart{"‘"} + quotationEnd{"”"} + quotationStart{"“"} + } fields{ day{ dn{"일"} @@ -2871,14 +2905,10 @@ ko{ or{ 2{"{0} 또는 {1}"} end{"{0} 또는 {1}"} - } - standard{ - 2{"{0} 및 {1}"} - end{"{0} 및 {1}"} middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ + standard{ 2{"{0} 및 {1}"} end{"{0} 및 {1}"} middle{"{0}, {1}"} @@ -2940,6 +2970,10 @@ ko{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/ko_KP.txt b/source/data/locales/ko_KP.txt index 5db5a21..6d4c10c 100644 --- a/source/data/locales/ko_KP.txt +++ b/source/data/locales/ko_KP.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ko_KP{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ko_KR.txt b/source/data/locales/ko_KR.txt index 44132ee..0b82f84 100644 --- a/source/data/locales/ko_KR.txt +++ b/source/data/locales/ko_KR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ko_KR{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/kok.txt b/source/data/locales/kok.txt index 0fc6ba1..145d274 100644 --- a/source/data/locales/kok.txt +++ b/source/data/locales/kok.txt @@ -12,18 +12,18 @@ kok{ "[अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ" " म य र ल व श ष स ह ळ]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0० 1१ 2२ 3३ 4४ 5५ 6६ 7७ 8८ 9९]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0० 1१ 2२ 3३ 4४ 5५ 6६ 7७ 8८ 9९]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } NumberElements{ default{"latn"} deva{ patterns{ - currencyFormat{"¤ #,##,##0.00"} - decimalFormat{"#,##,##0.###"} - percentFormat{"#,##,##0%"} + currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} scientificFormat{"#E0"} } symbols{ @@ -36,93 +36,94 @@ kok{ } latn{ miscPatterns{ - atLeast{"≥{0}"} + atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}–{1}"} } patterns{ - accountingFormat{"¤ #,##,##0.00"} - currencyFormat{"¤ #,##,##0.00"} - decimalFormat{"#,##,##0.###"} - percentFormat{"#,##,##0%"} + accountingFormat{"¤#,##0.00;(¤#,##0.00)"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} scientificFormat{"#E0"} } patternsLong{ decimalFormat{ 1000{ - other{"0K"} + other{"0 हजार"} } 10000{ - other{"00K"} + other{"00 हजार"} } 100000{ - other{"000K"} + other{"000 हजार"} } 1000000{ - other{"0M"} + other{"0 दशलक्ष"} } 10000000{ - other{"00M"} + other{"00 दशलक्ष"} } 100000000{ - other{"000M"} + other{"000 दशलक्ष"} } 1000000000{ - other{"0G"} + other{"0 अब्ज"} } 10000000000{ - other{"00G"} + other{"00 अब्ज"} } 100000000000{ - other{"000G"} + other{"000 अब्ज"} } 1000000000000{ - other{"0T"} + other{"0 ट्रिलियन"} } 10000000000000{ - other{"00T"} + other{"00 ट्रिलियन"} } 100000000000000{ - other{"000T"} + other{"000 ट्रिलियन"} } } } patternsShort{ currencyFormat{ 1000{ - other{"¤ 0K"} + other{"¤0K"} } 10000{ - other{"¤ 00K"} + other{"¤00K"} } 100000{ - other{"¤ 000K"} + other{"¤000K"} } 1000000{ - other{"¤ 0M"} + other{"¤0M"} } 10000000{ - other{"¤ 00M"} + other{"¤00M"} } 100000000{ - other{"¤ 000M"} + other{"¤000M"} } 1000000000{ - other{"¤ 0G"} + other{"¤0B"} } 10000000000{ - other{"¤ 00G"} + other{"¤00B"} } 100000000000{ - other{"¤ 000G"} + other{"¤000B"} } 1000000000000{ - other{"¤ 0T"} + other{"¤0T"} } 10000000000000{ - other{"¤ 00T"} + other{"¤00T"} } 100000000000000{ - other{"¤ 000T"} + other{"¤000T"} } } decimalFormat{ @@ -145,13 +146,13 @@ kok{ other{"000M"} } 1000000000{ - other{"0G"} + other{"0B"} } 10000000000{ - other{"00G"} + other{"00B"} } 100000000000{ - other{"000G"} + other{"000B"} } 1000000000000{ other{"0T"} @@ -188,7 +189,7 @@ kok{ minimumGroupingDigits{"1"} native{"deva"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -250,6 +251,53 @@ kok{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ + Bh{ + B{"h B – h B"} + h{"h–h B"} + } + Bhm{ + B{"h:mm B – h:mm B"} + h{"h:mm–h:mm B"} + m{"h:mm–h:mm B"} + } + Gy{ + G{"YG – YG"} + y{"y–y G"} + } + GyM{ + G{"MM-yGGGG – MM-y GGGG"} + M{"MM-y GGGGG – MM y"} + y{"MM-y GGGGG – MM-y"} + } + GyMEd{ + G{"E, dd-MM-y GGGGG – E, dd-MM-y GGGGG"} + M{"E,dd-MM-y GGGGG – E, dd-MM-y"} + d{"E, dd-MM-Y GGGGG – E-dd-MM-y"} + y{"E,dd-MM-y GGGGG – E,dd-MM-y"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM y G–MMM"} + y{"MMM y G – MMM y"} + } + GyMMMEd{ + G{"E, d MMM y G – E, d MMM y G"} + M{"E, d MMM y G – E, d MMM"} + d{"e, d MMM y G – e, d MMM"} + y{"E, d MMM y G – E, d MMM y"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM y G –d MMM"} + d{"d-MMM y G–d"} + y{"d MMM y G – d MMM y"} + } + GyMd{ + G{"dd-MM-y GGGGG – dd-MM-Y GGGGG"} + M{"dd-MM-y GGGGG – dd-MM-y"} + d{"dd-MM-y GGGGG – dd-MM-y"} + y{"d-M-y – d-M-y GGGGG"} + } M{ M{"MM–MM"} } @@ -315,16 +363,16 @@ kok{ } gregorian{ AmPmMarkers{ - "म.पू.", - "म.नं.", + "AM", + "PM", } AmPmMarkersAbbr{ - "म.पू.", - "म.नं.", + "AM", + "PM", } AmPmMarkersNarrow{ - "म.पू.", - "म.नं.", + "a", + "p", } DateTimePatterns{ "h:mm:ss a zzzz", @@ -369,6 +417,9 @@ kok{ MEd{"MM-dd, E"} MMM{"LLL"} MMMEd{"MMM d, E"} + MMMMW{ + other{"'week' W 'of' MMMM"} + } MMMMd{"MMMM d"} MMMd{"MMM d"} Md{"MM-dd"} @@ -389,6 +440,9 @@ kok{ yMd{"y-MM-dd"} yQQQ{"y QQQ"} yQQQQ{"y QQQQ"} + yw{ + other{"'week' w 'of' Y"} + } } dayNames{ format{ @@ -471,16 +525,16 @@ kok{ dayPeriod{ stand-alone{ abbreviated{ - am{"म.पू."} - pm{"म.नं."} + am{"AM"} + pm{"PM"} } narrow{ - am{"म.पू."} - pm{"म.नं."} + am{"AM"} + pm{"PM"} } wide{ - am{"म.पू."} - pm{"म.नं."} + am{"AM"} + pm{"PM"} } } } @@ -503,6 +557,53 @@ kok{ } } intervalFormats{ + Bh{ + B{"h B – h B"} + h{"h–h B"} + } + Bhm{ + B{"h:mm B – h:mm B"} + h{"h:mm–h:mm B"} + m{"h:mm–h:mm B"} + } + Gy{ + G{"G y – G y"} + y{"G y–y"} + } + GyM{ + G{"GGGGG y-MM – GGGGG y-MM"} + M{"GGGGG y-MM – y-MM"} + y{"GGGGG y-MM – y-MM"} + } + GyMEd{ + G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} + M{"GGGGG y-MM-dd, E – y-MM-dd, E"} + d{"GGGGG y-MM-dd, E – y-MM-dd, E"} + y{"GGGGG y-MM-dd, E – y-MM-dd, E"} + } + GyMMM{ + G{"G y MMM – G y MMM"} + M{"G y MMM–MMM"} + y{"G y MMM – y MMM"} + } + GyMMMEd{ + G{"G y MMM d, E – G y MMM d, E"} + M{"G y MMM d, E – MMM d, E"} + d{"G y MMM d, E – MMM d, E"} + y{"G y MMM d, E – y MMM d, E"} + } + GyMMMd{ + G{"G y MMM d – G y MMM d"} + M{"G y MMM d – MMM d"} + d{"G y MMM d–d"} + y{"G y MMM d – y MMM d"} + } + GyMd{ + G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} + M{"GGGGG y-MM-dd – y-MM-dd"} + d{"GGGGG y-MM-dd – y-MM-dd"} + y{"GGGGG y-MM-dd – y-MM-dd"} + } H{ H{"HH–HH"} } @@ -702,10 +803,10 @@ kok{ "4", } wide{ - "Q1", - "Q2", - "Q3", - "Q4", + "1लें त्रैमासीक", + "2रें त्रैमासीक", + "3रें त्रैमासीक", + "4थें त्रैमासीक", } } stand-alone{ @@ -722,15 +823,102 @@ kok{ "4", } wide{ - "Q1", - "Q2", - "Q3", - "Q4", + "1लें त्रैमासीक", + "2रें त्रैमासीक", + "3रें त्रैमासीक", + "4थें त्रैमासीक", } } } } } + characterLabel{ + activities{"कृती"} + african_scripts{"आफ्रिकेची लिपी"} + american_scripts{"अमेरिकेची लिपी"} + animal{"जनावर"} + animals_nature{"जनावर वा सैम"} + arrows{"बाण"} + body{"कूड"} + box_drawing{"बॉक्स रेखाटण"} + braille{"ब्रेल"} + building{"इमारत"} + bullets_stars{"बुलेट वा नखेत्र"} + consonantal_jamo{"व्यंजन जामो"} + currency_symbols{"चलन चिन्न"} + dash_connector{"डॅश वा कनॅक्टर"} + digits{"अंक"} + dingbats{"डिंगबॅट"} + divination_symbols{"डिविनेशन चिन्न"} + downwards_arrows{"सकयल दर्शोवपी बाण"} + downwards_upwards_arrows{"सकयल वयर दर्शोवपी बाण"} + east_asian_scripts{"उदेंत आशियाई लिपी"} + european_scripts{"युरोपियन लिपी"} + female{"बायल"} + flag{"बावटो"} + flags{"बावटे"} + food_drink{"अन्न आनी पेय"} + format{"स्वरूप"} + format_whitespace{"स्वरूप आनी धवीसुवात"} + full_width_form_variant{"पूर्ण-रुंदी वेरीयंट"} + geometric_shapes{"भुमिती आकार"} + half_width_form_variant{"अर्द-रुंदी वेरीयंट"} + han_characters{"हॅन वर्ण"} + han_radicals{"हॅन रेडिकल"} + hanja{"हांजा"} + hanzi_simplified{"हांजी (सोंपी केल्लीझ"} + hanzi_traditional{"हांजी (पारंपारीक)"} + heart{"काळीज"} + historic_scripts{"इतिहासीक लिपी"} + ideographic_desc_characters{"आयडियोग्रॅफिक डिस्क. वर्ण"} + japanese_kana{"जपानी काना"} + kanbun{"कानबुन"} + kanji{"कांजी"} + keycap{"कीकॅप"} + leftwards_arrows{"दाव्यान दाखोवपी बाण"} + leftwards_rightwards_arrows{"दाव्यान उजव्यान दाखोवपी बाण"} + letterlike_symbols{"पत्रासारकें चिन्न"} + limited_use{"मर्यादीत-वापर"} + male{"दादलो"} + math_symbols{"गणीत चिन्न"} + middle_eastern_scripts{"मध्य उदेंत लिपी"} + miscellaneous{"तरेकवार"} + modern_scripts{"आधुनिक लिपी"} + modifier{"मॉडिफायर"} + musical_symbols{"संगिताचें चिन्न"} + nature{"सैम"} + nonspacing{"सुवातना"} + numbers{"आंकडे"} + objects{"ऑब्जॅक्ट"} + other{"हेर"} + paired{"जोडी लायिल्लें"} + person{"व्यक्ती"} + phonetic_alphabet{"फोनेटिक अक्षर"} + pictographs{"पिक्टोग्राफ"} + place{"सुवात"} + plant{"वनस्पत"} + punctuation{"विरामचिन्न"} + rightwards_arrows{"उजव्यान दाखोवपी बाण"} + sign_standard_symbols{"चिन्न वा कुरू"} + small_form_variant{"ल्हान वेरीयंट"} + smiley{"स्मायली"} + smileys_people{"स्मायली वा व्यक्ती"} + south_asian_scripts{"दक्षिण आशियाई लिपी"} + southeast_asian_scripts{"आग्नेय आशियाई लिपी"} + spacing{"सुवात घेवप"} + sport{"क्रिडा"} + symbols{"कुरू"} + technical_symbols{"तांत्रिक कुरू"} + tone_marks{"स्वर खूण"} + travel{"भोंवडी"} + travel_places{"भोंवडी वा सुवात"} + upwards_arrows{"वयर दर्शोवपी बाण"} + variant_forms{"वेरीयंट"} + vocalic_jamo{"स्वरयुक्त जामो"} + weather{"हवामान"} + western_asian_scripts{"अस्तंत आशियाई लिपी"} + whitespace{"धवीसुवात"} + } delimiters{ alternateQuotationEnd{"’"} alternateQuotationStart{"‘"} @@ -786,13 +974,13 @@ kok{ dn{"वर्साचो दीस"} } dayperiod{ - dn{"दिसाचोकालावधी"} + dn{"AM/PM"} } dayperiod-narrow{ - dn{"दिसाचोकालावधी"} + dn{"AM/PM"} } dayperiod-short{ - dn{"दिसाचोकालावधी"} + dn{"AM/PM"} } era{ dn{"शक"} @@ -1335,9 +1523,6 @@ kok{ dn{"सप्तक"} relativePeriod{"{0} चो सप्तक"} relativeTime{ - future{ - other{"{0} सप्त."} - } past{ other{"{0} सप्तकां आदीं"} } @@ -1409,7 +1594,7 @@ kok{ } } zone{ - dn{"झोन"} + dn{"वेळ झोन"} } zone-narrow{ dn{"झोन"} @@ -1419,16 +1604,38 @@ kok{ } } listPattern{ + or{ + 2{"{0} वा {1}"} + end{"{0}, वा {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} + } + or-narrow{ + 2{"{0} वा {1}"} + end{"{0}, वा {1}"} + } + or-short{ + 2{"{0} वा {1}"} + end{"{0}, वा {1}"} + } standard{ 2{"{0}, {1}"} end{"{0}, {1}"} middle{"{0}, {1}"} start{"{0}, {1}"} } + standard-short{ + 2{"{0} & {1}"} + } + unit-narrow{ + end{"{0} {1}"} + middle{"{0} {1}"} + start{"{0} {1}"} + } } measurementSystemNames{ - UK{"UK"} - US{"US"} - metric{"Metric"} + UK{"युके"} + US{"युएस"} + metric{"मॅट्रिक"} } } diff --git a/source/data/locales/kok_IN.txt b/source/data/locales/kok_IN.txt index 93edce5..87bc00c 100644 --- a/source/data/locales/kok_IN.txt +++ b/source/data/locales/kok_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kok_IN{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ks.txt b/source/data/locales/ks.txt index 0329f69..9c1c973 100644 --- a/source/data/locales/ks.txt +++ b/source/data/locales/ks.txt @@ -6,7 +6,7 @@ ks{ "[ء آ أ ٲ ؤ ا ب پ ت ث ٹ ج چ ح خ د ذ ڈ ر ز ڑ ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ں" " ھ ہ و ۄ ۆ ی ۍ ؠ ے]" } - ExemplarCharactersNumbers{"[\u200E \\- , . % ‰ + 0۰ 1۱ 2۲ 3۳ 4۴ 5۵ 6۶ 7۷ 8۸ 9۹]"} + ExemplarCharactersNumbers{"[\u200E \\- ‑ , . % ‰ + 0۰ 1۱ 2۲ 3۳ 4۴ 5۵ 6۶ 7۷ 8۸ 9۹]"} NumberElements{ arabext{ symbols{ @@ -36,7 +36,7 @@ ks{ } native{"arabext"} } - Version{"2.1.47.83"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ks_IN.txt b/source/data/locales/ks_IN.txt index 2b181a4..49411bf 100644 --- a/source/data/locales/ks_IN.txt +++ b/source/data/locales/ks_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ks_IN{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ksb.txt b/source/data/locales/ksb.txt index 41cf31c..16c8ee9 100644 --- a/source/data/locales/ksb.txt +++ b/source/data/locales/ksb.txt @@ -11,7 +11,7 @@ ksb{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ksb_TZ.txt b/source/data/locales/ksb_TZ.txt index 9bcb584..8e51da8 100644 --- a/source/data/locales/ksb_TZ.txt +++ b/source/data/locales/ksb_TZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ksb_TZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ksf.txt b/source/data/locales/ksf.txt index 1cae4c6..ef09962 100644 --- a/source/data/locales/ksf.txt +++ b/source/data/locales/ksf.txt @@ -7,7 +7,7 @@ ksf{ " p r s t u ú v w y z]" } ExemplarCharactersIndex{"[A B C D E Ǝ Ɛ F G H I J K L M N Ŋ O Ɔ P R S T U V W Y Z]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -20,7 +20,7 @@ ksf{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ksf_CM.txt b/source/data/locales/ksf_CM.txt index ca6f51f..fdeec51 100644 --- a/source/data/locales/ksf_CM.txt +++ b/source/data/locales/ksf_CM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ksf_CM{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ksh.txt b/source/data/locales/ksh.txt index 975438d..59ae5ac 100644 --- a/source/data/locales/ksh.txt +++ b/source/data/locales/ksh.txt @@ -161,7 +161,7 @@ ksh{ } native{"latn"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ diff --git a/source/data/locales/ksh_DE.txt b/source/data/locales/ksh_DE.txt index 1320396..ae0c053 100644 --- a/source/data/locales/ksh_DE.txt +++ b/source/data/locales/ksh_DE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ksh_DE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ku.txt b/source/data/locales/ku.txt index b46f261..ae3a89f 100644 --- a/source/data/locales/ku.txt +++ b/source/data/locales/ku.txt @@ -13,12 +13,11 @@ ku{ ExemplarCharacters{"[a b c ç d e ê f g h i î j k l m n o p q r s ş t u û v w x y z]"} ExemplarCharactersIndex{"[A B C Ç D E Ê F G H I Î J K L M N O P Q R S Ş T U Û V W X Y Z]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ - default{"latn"} latn{ miscPatterns{ atLeast{"⩾{0}"} @@ -50,10 +49,8 @@ ku{ other{"{0} roj"} } } - minimumGroupingDigits{"1"} - native{"latn"} } - Version{"2.1.47.83"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -77,6 +74,14 @@ ku{ } } gregorian{ + AmPmMarkers{ + "BN", + "PN", + } + AmPmMarkersAbbr{ + "BN", + "PN", + } dayNames{ format{ abbreviated{ @@ -160,10 +165,18 @@ ku{ "BZ", "PZ", } + abbreviated%variant{ + "BZ", + "PZ", + } wide{ "berî zayînê", "piştî zayînê", } + wide%variant{ + "berî zayînê", + "piştî zayînê", + } } intervalFormats{ H{ @@ -286,6 +299,12 @@ ku{ "3", "4", } + wide{ + "Çarêka 1em", + "Çarêka 2em", + "Çarêka 3em", + "Çarêka 4em", + } } stand-alone{ abbreviated{ @@ -300,6 +319,12 @@ ku{ "3", "4", } + wide{ + "Çarêka 1em", + "Çarêka 2em", + "Çarêka 3em", + "Çarêka 4em", + } } } } @@ -329,6 +354,24 @@ ku{ day-short{ dn{"r."} } + dayOfYear{ + dn{"roja salê"} + } + dayOfYear-narrow{ + dn{"roja salê"} + } + dayOfYear-short{ + dn{"roja salê"} + } + dayperiod{ + dn{"BN/PN"} + } + dayperiod-narrow{ + dn{"BN/PN"} + } + dayperiod-short{ + dn{"BN/PN"} + } era{ dn{"serdem"} } @@ -352,12 +395,27 @@ ku{ } month{ dn{"meh"} + relative{ + "-1"{"meha borî"} + "0"{"vê mehê"} + "1"{"meha were"} + } } month-narrow{ dn{"m."} + relative{ + "-1"{"meha br."} + "0"{"vê mehê"} + "1"{"meha bê"} + } } month-short{ dn{"m."} + relative{ + "-1"{"meha br."} + "0"{"vê mehê"} + "1"{"meha bê"} + } } quarter{ dn{"çarêk"} @@ -379,12 +437,51 @@ ku{ } week{ dn{"hefte"} + relative{ + "-1"{"hefteya borî"} + "0"{"vê hefteyê"} + "1"{"hefteya were"} + } + relativePeriod{"hefteya {0}"} } week-narrow{ dn{"hf."} + relative{ + "-1"{"hft. borî"} + "0"{"vê hft."} + "1"{"hft. bê"} + } + relativePeriod{"hft. {0}"} } week-short{ dn{"hf."} + relative{ + "-1"{"hft. borî"} + "0"{"vê hft."} + "1"{"hft. bê"} + } + relativePeriod{"hft. {0}"} + } + weekOfMonth{ + dn{"hefteya mehê"} + } + weekday{ + dn{"roja hefteyê"} + } + weekday-narrow{ + dn{"roja hefteyê"} + } + weekday-short{ + dn{"roja hefteyê"} + } + weekdayOfMonth{ + dn{"roja mehê"} + } + weekdayOfMonth-narrow{ + dn{"roja mehê"} + } + weekdayOfMonth-short{ + dn{"roja mehê"} } year{ dn{"sal"} @@ -393,12 +490,61 @@ ku{ "0"{"îsal"} "1"{"sala piştî"} } + relativeTime{ + future{ + one{"di salekê de"} + other{"di {0} salan de"} + } + past{ + one{"berî {0} salê"} + other{"berî {0} salan"} + } + } } year-narrow{ dn{"sl"} + relative{ + "-1"{"par"} + "0"{"îsal"} + "1"{"sala bê"} + } + relativeTime{ + future{ + one{"piştî salekê"} + other{"piştî {0} salan"} + } + past{ + one{"berî salekê"} + other{"berî {0} salan"} + } + } } year-short{ dn{"sal"} + relative{ + "-1"{"par"} + "0"{"îsal"} + "1"{"sala bê"} + } + relativeTime{ + future{ + one{"piştî salekê"} + other{"piştî {0} salan"} + } + past{ + one{"berî salekê"} + other{"berî {0} salan"} + } + } + } + zone{ + dn{"qada demê"} + } + zone-narrow{ + dn{"qad"} + } + zone-short{ + dn{"qad"} } } listPattern{ @@ -465,10 +611,6 @@ ku{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } - stricter{ - "[,٫︐﹐,]", - "[.․﹒.。]", - } } } } diff --git a/source/data/locales/ku_TR.txt b/source/data/locales/ku_TR.txt index 173e1bf..2a14f02 100644 --- a/source/data/locales/ku_TR.txt +++ b/source/data/locales/ku_TR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ku_TR{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/kw.txt b/source/data/locales/kw.txt index 1146a5c..86d0fa1 100644 --- a/source/data/locales/kw.txt +++ b/source/data/locales/kw.txt @@ -9,7 +9,7 @@ kw{ } } } - Version{"2.1.48.56"} + Version{"36"} calendar{ gregorian{ AmPmMarkers{ diff --git a/source/data/locales/kw_GB.txt b/source/data/locales/kw_GB.txt index a76c959..1f9c195 100644 --- a/source/data/locales/kw_GB.txt +++ b/source/data/locales/kw_GB.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kw_GB{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ky.txt b/source/data/locales/ky.txt index 9565832..be3b19f 100644 --- a/source/data/locales/ky.txt +++ b/source/data/locales/ky.txt @@ -12,10 +12,10 @@ ky{ } ExemplarCharacters{"[а б г д е ё ж з и й к л м н ң о ө п р с т у ү х ч ш ъ ы э ю я]"} ExemplarCharactersIndex{"[А Б В Г Д Е Ё Ж З И Й К Л М Н Ң О Ө П Р С Т У Ү Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * / " - "\\& #]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * " + "/ \\& #]" } MoreInformation{"?"} NumberElements{ @@ -214,7 +214,7 @@ ky{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -593,13 +593,17 @@ ky{ "б.з.ч.", "б.з.", } + abbreviated%variant{ + "б.з.ч.", + "б.з.", + } wide{ "биздин заманга чейин", "биздин заман", } wide%variant{ "б.з.ч.", - "CE", + "б.з.", } } intervalFormats{ @@ -1774,12 +1778,6 @@ ky{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} жана {1}"} - end{"{0} жана {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} жана {1}"} end{"{0} жана {1}"} diff --git a/source/data/locales/ky_KG.txt b/source/data/locales/ky_KG.txt index 3af9916..a2d762b 100644 --- a/source/data/locales/ky_KG.txt +++ b/source/data/locales/ky_KG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ky_KG{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/lag.txt b/source/data/locales/lag.txt index ace1f5e..96cf62f 100644 --- a/source/data/locales/lag.txt +++ b/source/data/locales/lag.txt @@ -3,7 +3,7 @@ lag{ ExemplarCharacters{"[a á b c d e é f g h i í ɨ j k l m n o ó p q r s t u ú ʉ v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I Ɨ J K L M N O P Q R S T U Ʉ V W X Y Z]"} - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/lag_TZ.txt b/source/data/locales/lag_TZ.txt index 0122b9b..f5eff51 100644 --- a/source/data/locales/lag_TZ.txt +++ b/source/data/locales/lag_TZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lag_TZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/lb.txt b/source/data/locales/lb.txt index e2a618d..e6adc3b 100644 --- a/source/data/locales/lb.txt +++ b/source/data/locales/lb.txt @@ -15,10 +15,10 @@ lb{ } ExemplarCharacters{"[a ä b c d e é ë f g h i j k l m n o p q r s t u v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * / " - "\\& #]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * " + "/ \\& #]" } MoreInformation{"?"} NumberElements{ @@ -156,7 +156,7 @@ lb{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ eras{ @@ -250,6 +250,7 @@ lb{ MEd{"E, d.M."} MMM{"LLL"} MMMEd{"E, d. MMM"} + MMMMd{"d. MMMM"} MMMd{"d. MMM"} Md{"d.M."} d{"d"} @@ -259,6 +260,7 @@ lb{ yyyyMEd{"E, d.M.y GGGGG"} yyyyMMM{"MMM y G"} yyyyMMMEd{"E, d. MMM y G"} + yyyyMMMM{"MMMM y G"} yyyyMMMd{"d. MMM y G"} yyyyMd{"d.M.y GGGGG"} yyyyQQQ{"QQQ y G"} @@ -377,6 +379,7 @@ lb{ MEd{"E, d.M."} MMM{"LLL"} MMMEd{"E, d. MMM"} + MMMMd{"d. MMMM"} MMMd{"d. MMM"} Md{"d.M."} d{"d"} @@ -389,6 +392,7 @@ lb{ yMEd{"E, d.M.y"} yMMM{"MMM y"} yMMMEd{"E, d. MMM y"} + yMMMM{"MMMM y"} yMMMd{"d. MMM y"} yMd{"d.M.y"} yQQQ{"QQQ y"} diff --git a/source/data/locales/lb_LU.txt b/source/data/locales/lb_LU.txt index 837a882..e66800a 100644 --- a/source/data/locales/lb_LU.txt +++ b/source/data/locales/lb_LU.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lb_LU{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/lg.txt b/source/data/locales/lg.txt index 93be97b..5f0bd8a 100644 --- a/source/data/locales/lg.txt +++ b/source/data/locales/lg.txt @@ -11,7 +11,7 @@ lg{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/lg_UG.txt b/source/data/locales/lg_UG.txt index 17a84fe..35bc800 100644 --- a/source/data/locales/lg_UG.txt +++ b/source/data/locales/lg_UG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lg_UG{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/lkt.txt b/source/data/locales/lkt.txt index ed0a647..5fb292e 100644 --- a/source/data/locales/lkt.txt +++ b/source/data/locales/lkt.txt @@ -7,9 +7,9 @@ lkt{ "{ph} {pȟ} {pʼ} s š t {th} {tȟ} {tʼ} u ú {uŋ} w y z ž ʼ]" } ExemplarCharactersIndex{"[A B Č E G Ǧ H Ȟ I K L M N Ŋ O P S Š T U W Y Z Ž]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . \u0022 “ ” ( ) \\[ \\] @ * / \\& #]"} - Version{"2.1.48.22"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . \u0022 “ ” ( ) \\[ \\] @ * / \\& #]"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/lkt_US.txt b/source/data/locales/lkt_US.txt index 7369bcf..c8431f8 100644 --- a/source/data/locales/lkt_US.txt +++ b/source/data/locales/lkt_US.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lkt_US{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ln.txt b/source/data/locales/ln.txt index fb34323..696265d 100644 --- a/source/data/locales/ln.txt +++ b/source/data/locales/ln.txt @@ -11,7 +11,7 @@ ln{ "[A B C D E Ɛ F G {Gb} H I K L M {Mb} {Mp} N {Nd} {Ng} {Nk} {Ns} {Nt} {Ny} {N" "z} O Ɔ P R S T U V W Y Z]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -24,7 +24,7 @@ ln{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ln_AO.txt b/source/data/locales/ln_AO.txt index 91e4bfe..3ac8b64 100644 --- a/source/data/locales/ln_AO.txt +++ b/source/data/locales/ln_AO.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ln_AO{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ln_CD.txt b/source/data/locales/ln_CD.txt index 78615ea..d4287c8 100644 --- a/source/data/locales/ln_CD.txt +++ b/source/data/locales/ln_CD.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ln_CD{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ln_CF.txt b/source/data/locales/ln_CF.txt index cffa2e6..e21daa4 100644 --- a/source/data/locales/ln_CF.txt +++ b/source/data/locales/ln_CF.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ln_CF{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ln_CG.txt b/source/data/locales/ln_CG.txt index add24b5..87ac84f 100644 --- a/source/data/locales/ln_CG.txt +++ b/source/data/locales/ln_CG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ln_CG{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/lo.txt b/source/data/locales/lo.txt index 5c0a4eb..7553a1f 100644 --- a/source/data/locales/lo.txt +++ b/source/data/locales/lo.txt @@ -19,10 +19,10 @@ lo{ "[ກ ຂ ຄ ງ ຈ ສ ຊ ຍ ດ ຕ ຖ ທ ນ ບ ປ ຜ ຝ ພ ຟ ມ ຢ ຣ ລ ວ ຫ {ຫງ} {ຫຍ} {ຫນ} {ຫມ} {ຫລ} " "{ຫວ} ອ ຮ]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ @@ -263,7 +263,7 @@ lo{ } native{"laoo"} } - Version{"2.1.48.17"} + Version{"36"} calendar{ chinese{ DateTimePatterns{ @@ -732,19 +732,6 @@ lo{ yyyyQQQQ{"G y QQQQ"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } GyM{ G{"GGGGG M/y – GGGGG M/y"} M{"GGGGG M/y – M/y"} @@ -860,10 +847,6 @@ lo{ "ກ່ອນທ່ຽງ", "ຫຼັງທ່ຽງ", } - AmPmMarkersNarrow{ - "ກທ", - "ຫຼທ", - } DateTimePatterns{ "H ໂມງ m ນາທີ ss ວິນາທີ zzzz", "H ໂມງ m ນາທີ ss ວິນາທີ z", @@ -1025,10 +1008,10 @@ lo{ narrow{ afternoon1{"ຕອນທ່ຽງ"} evening1{"ຕອນແລງ"} - midnight{"ທຄ"} + midnight{"ທ່ຽງຄືນ"} morning1{"ຕອນເຊົ້າ"} night1{"ກາງຄືນ"} - noon{"ທ"} + noon{"ຕອນທ່ຽງ"} } wide{ afternoon1{"ຕອນບ່າຍ"} @@ -1052,13 +1035,10 @@ lo{ } narrow{ afternoon1{"ສ"} - am{"ກທ"} - evening1{"ລ"} - midnight{"ທຄ"} - morning1{"ຊ"} - night1{"ກຄ"} + evening1{"ແລງ"} + morning1{"​ເຊົ້າ"} + night1{"​ກາງ​ຄືນ"} noon{"ຕອນທ່ຽງ"} - pm{"ຫຼທ"} } wide{ afternoon1{"ສວຍ"} @@ -1091,15 +1071,6 @@ lo{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"G y – G y"} y{"G y–y"} @@ -2028,7 +1999,7 @@ lo{ african_scripts{"ແບບຂຽນອາຟຣິກັນ"} american_scripts{"ແບບຂຽນອາເມຣິກັນ"} animal{"ສັດ"} - animals_nature{"ສັດ ແລະ ທຳມະຊາດ"} + animals_nature{"ສັດ ຫຼື ທຳມະຊາດ"} arrows{"ລູກສອນ"} body{"ຮ່າງກາຍ"} box_drawing{"ການແຕ້ມກ່ອງ"} @@ -2081,7 +2052,7 @@ lo{ nature{"ທຳມະຊາດ"} nonspacing{"ບໍ່ມີຍະຫວ່າງ"} numbers{"ຕົວເລກ"} - objects{"ອອບເຈັກ"} + objects{"ວັດຖຸ"} other{"ອື່ນໆ"} paired{"ຈັບຄູ່ແລ້ວ"} person{"ຄົນ"} @@ -2100,7 +2071,7 @@ lo{ spacing{"ຊ່ອງຫວ່າງ"} sport{"ກິລາ"} symbols{"ສັນຍາລັກ"} - technical_symbols{"ສັນຍາລັກທາງເທັກນິກ"} + technical_symbols{"ສັນຍາລັກທາງເຕັກນິກ"} tone_marks{"ັວັນນະຍຸດ"} travel{"ທ່ອງທ່ຽວ"} travel_places{"ທ່ອງທ່ຽວ ແລະ ສະຖານທີ່ຕ່າງໆ"} @@ -2215,11 +2186,6 @@ lo{ } } fri-narrow{ - relative{ - "-1"{"ສຸ. ແລ້ວ"} - "0"{"ສຸ. ນີ້"} - "1"{"ສຸ. ໜ້າ"} - } relativeTime{ future{ other{"ໃນອີກ {0} ວັນສຸກ"} @@ -2287,7 +2253,7 @@ lo{ } relativeTime{ future{ - other{"{0} ໃນອີກ 0 ນາທີ"} + other{"ໃນອີກ {0} ນາທີ"} } past{ other{"{0} ນາທີກ່ອນ"} @@ -2332,11 +2298,6 @@ lo{ } } mon-narrow{ - relative{ - "-1"{"ຈ. ແລ້ວ"} - "0"{"ຈ. ນີ້"} - "1"{"ຈ. ໜ້າ"} - } relativeTime{ future{ other{"ໃນ {0} ວັນຈັນ"} @@ -2421,9 +2382,6 @@ lo{ future{ other{"ໃນ {0} ຕມ."} } - past{ - other{"{0} ຕມ. ກ່ອນ"} - } } } quarter-short{ @@ -2453,11 +2411,6 @@ lo{ } } sat-narrow{ - relative{ - "-1"{"ສ. ແລ້ວ"} - "0"{"ສ. ນີ້"} - "1"{"ສ. ໜ້າ"} - } relativeTime{ future{ other{"ໃນ {0} ວັນເສົາ"} @@ -2534,11 +2487,6 @@ lo{ } } sun-narrow{ - relative{ - "-1"{"ອາ. ແລ້ວ"} - "0"{"ອາ. ນີ້"} - "1"{"ອາ. ໜ້າ"} - } relativeTime{ future{ other{"ໃນ {0} ວັນອາທິດ"} @@ -2579,11 +2527,6 @@ lo{ } } thu-narrow{ - relative{ - "-1"{"ພຫ. ແລ້ວ"} - "0"{"ພຫ. ນີ້"} - "1"{"ພຫ. ໜ້າ"} - } relativeTime{ future{ other{"ໃນ {0} ວັນພະຫັດ"} @@ -2669,11 +2612,6 @@ lo{ } } wed-narrow{ - relative{ - "-1"{"ພຸ. ແລ້ວ"} - "0"{"ພຸ. ນີ້"} - "1"{"ພຸ. ໜ້າ"} - } relativeTime{ future{ other{"ໃນ {0} ວັນພຸດ"} @@ -2824,7 +2762,6 @@ lo{ standard{ 2{"{0} ແລະ {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} start{"{0}, {1}"} } standard-short{ @@ -2853,8 +2790,8 @@ lo{ } } measurementSystemNames{ - UK{"ອັງກິດ"} - US{"ອາເມຣິກາ"} + UK{"ສະຫະລາດຊະອານາຈັກອັງກິດ"} + US{"ສະຫະລັດອາເມລິກາ"} metric{"ເມທຣິກ"} } } diff --git a/source/data/locales/lo_LA.txt b/source/data/locales/lo_LA.txt index 357b8a7..8cb96c0 100644 --- a/source/data/locales/lo_LA.txt +++ b/source/data/locales/lo_LA.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lo_LA{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/lrc.txt b/source/data/locales/lrc.txt index 9432622..578ca26 100644 --- a/source/data/locales/lrc.txt +++ b/source/data/locales/lrc.txt @@ -10,8 +10,8 @@ lrc{ " ل م ن ھ ە و ۉ ۊ ی ؽ]" } ExemplarCharactersIndex{"[آ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ھ و ی]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ ، ٫ ٬ ؛ \\: ! ؟ . … ‹ › « » ( ) \\[ \\] * / \\\\]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ ، ٫ ٬ ؛ \\: ! ؟ . … ‹ › « » ( ) \\[ \\] * / \\\\]"} NumberElements{ arabext{ symbols{ @@ -36,7 +36,7 @@ lrc{ } native{"arabext"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ default{"persian"} generic{ @@ -148,6 +148,10 @@ lrc{ "BCE", "CE", } + abbreviated%variant{ + "BCE", + "CE", + } } intervalFormats{ fallback{"{0} – {1}"} diff --git a/source/data/locales/lrc_IQ.txt b/source/data/locales/lrc_IQ.txt index 5bbe148..01b8383 100644 --- a/source/data/locales/lrc_IQ.txt +++ b/source/data/locales/lrc_IQ.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lrc_IQ{ - Version{"2.1.47.82"} + Version{"36"} calendar{ default{"gregorian"} gregorian{ diff --git a/source/data/locales/lrc_IR.txt b/source/data/locales/lrc_IR.txt index b9810ce..570840f 100644 --- a/source/data/locales/lrc_IR.txt +++ b/source/data/locales/lrc_IR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lrc_IR{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/lt.txt b/source/data/locales/lt.txt index 45c2e9a..cecccda 100644 --- a/source/data/locales/lt.txt +++ b/source/data/locales/lt.txt @@ -19,9 +19,10 @@ lt{ ExemplarCharacters{"[a ą b c č d e ę ė f g h i į y j k l m n o p r s š t u ų ū v z ž]"} ExemplarCharactersIndex{"[A Ą B C Č D E Ę Ė F G H I Į Y J K L M N O P R S Š T U Ų Ū V Z Ž]"} ExemplarCharactersNumbers{"[  , % ‰ + − 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . … “ „ ( ) \\[ \\] \\{ \\}]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … “ „ ( ) \\[ \\] \\{ \\}]"} MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -32,6 +33,7 @@ lt{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -266,10 +268,12 @@ lt{ exponential{"×10^"} group{" "} infinity{"∞"} + list{";"} minusSign{"−"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -288,7 +292,7 @@ lt{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ buddhist{ eras{ @@ -320,10 +324,18 @@ lt{ "{1} {0}", } availableFormats{ + Ed{"d, E"} Gy{"U"} GyMMM{"U MMM"} GyMMMEd{"U MMM d, E"} GyMMMd{"U MMM d"} + M{"L"} + MEd{"MM-dd, E"} + MMM{"LLL"} + MMMEd{"MMM d, E"} + MMMd{"MMM d"} + Md{"MM-dd"} + d{"d"} y{"U"} yMd{"y-MM-dd"} yyyy{"U"} @@ -337,6 +349,24 @@ lt{ yyyyQQQQ{"U QQQQ"} } cyclicNameSets{ + dayParts{ + format{ + abbreviated{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + } + } solarTerms{ format{ abbreviated{ @@ -367,6 +397,72 @@ lt{ } } } + years{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } zodiacs{ format{ abbreviated{ @@ -387,21 +483,34 @@ lt{ } } intervalFormats{ + M{ + M{"MM–MM"} + } MEd{ M{"MM-dd, E–MM-dd, E"} d{"MM-dd, E–MM-dd, E"} } + MMM{ + M{"LLL–LLL"} + } MMMEd{ M{"MMM d, E–MMM d, E"} d{"MMM d, E–MMM d, E"} } MMMd{ M{"MMM d–MMM d"} + d{"MMM d–d"} } Md{ M{"MM-dd–MM-dd"} d{"MM-dd–MM-dd"} } + d{ + d{"d–d"} + } + y{ + y{"U–U"} + } yM{ M{"y-MM–y-MM"} y{"y-MM–y-MM"} @@ -412,6 +521,7 @@ lt{ y{"y-MM-dd, E–y-MM-dd, E"} } yMMM{ + M{"U MMM–MMM"} y{"U MMM–U MMM"} } yMMMEd{ @@ -420,10 +530,12 @@ lt{ y{"U MMM d, E–U MMM d, E"} } yMMMM{ + M{"U MMMM–MMMM"} y{"U MMMM–U MMMM"} } yMMMd{ M{"U MMM d–MMM d"} + d{"U MMM d–d"} y{"U MMM d–U MMM d"} } yMd{ @@ -522,6 +634,23 @@ lt{ } } } + monthPatterns{ + format{ + wide{ + leap{"{0}bis"} + } + } + numeric{ + all{ + leap{"{0}bis"} + } + } + stand-alone{ + narrow{ + leap{"{0}b"} + } + } + } } coptic{ eras{ @@ -652,10 +781,18 @@ lt{ "{1} {0}", } availableFormats{ + Ed{"d, E"} Gy{"U"} GyMMM{"U MMM"} GyMMMEd{"U MMM d, E"} GyMMMd{"U MMM d"} + M{"L"} + MEd{"MM-dd, E"} + MMM{"LLL"} + MMMEd{"MMM d, E"} + MMMd{"MMM d"} + Md{"MM-dd"} + d{"d"} y{"U"} yMd{"y-MM-dd"} yyyy{"U"} @@ -669,6 +806,24 @@ lt{ yyyyQQQQ{"U QQQQ"} } cyclicNameSets{ + dayParts{ + format{ + abbreviated{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + } + } solarTerms{ format{ abbreviated{ @@ -699,6 +854,72 @@ lt{ } } } + years{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } zodiacs{ format{ abbreviated{ @@ -719,21 +940,34 @@ lt{ } } intervalFormats{ + M{ + M{"MM–MM"} + } MEd{ M{"MM-dd, E–MM-dd, E"} d{"MM-dd, E–MM-dd, E"} } + MMM{ + M{"LLL–LLL"} + } MMMEd{ M{"MMM d, E–MMM d, E"} d{"MMM d, E–MMM d, E"} } MMMd{ M{"MMM d–MMM d"} + d{"MMM d–d"} } Md{ M{"MM-dd–MM-dd"} d{"MM-dd–MM-dd"} } + d{ + d{"d–d"} + } + y{ + y{"U–U"} + } yM{ M{"y-MM–y-MM"} y{"y-MM–y-MM"} @@ -744,6 +978,7 @@ lt{ y{"y-MM-dd, E–y-MM-dd, E"} } yMMM{ + M{"U MMM–MMM"} y{"U MMM–U MMM"} } yMMMEd{ @@ -752,10 +987,12 @@ lt{ y{"U MMM d, E–U MMM d, E"} } yMMMM{ + M{"U MMMM–MMMM"} y{"U MMMM–U MMMM"} } yMMMd{ M{"U MMM d–MMM d"} + d{"U MMM d–d"} y{"U MMM d–U MMM d"} } yMd{ @@ -780,6 +1017,20 @@ lt{ "11", "12", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "1", "2", @@ -810,6 +1061,20 @@ lt{ "11", "12", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "1", "2", @@ -826,6 +1091,23 @@ lt{ } } } + monthPatterns{ + format{ + wide{ + leap{"{0}bis"} + } + } + numeric{ + all{ + leap{"{0}bis"} + } + } + stand-alone{ + narrow{ + leap{"{0}b"} + } + } + } } ethiopic{ eras{ @@ -939,6 +1221,16 @@ lt{ } } } + ethiopic-amete-alem{ + eras{ + abbreviated{ + "ERA0", + } + wide{ + "ERA0", + } + } + } generic{ DateTimePatterns{ "HH:mm:ss zzzz", @@ -1000,52 +1292,19 @@ lt{ yyyyQQQQ{"y G QQQQ"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} + H{ + H{"HH–HH"} } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + Hv{ + H{"HH–HH v"} } M{ M{"M–M"} @@ -1075,15 +1334,21 @@ lt{ fallback{"{0} – {1}"} h{ a{"h a–h a"} + h{"h–h a"} } hm{ a{"hh:mm a–hh:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} } hmv{ a{"hh:mm a–hh:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} } hv{ a{"h a–h a v"} + h{"h–h a v"} } y{ y{"y–y G"} @@ -3478,12 +3743,6 @@ lt{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} ir {1}"} - end{"{0} ir {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} ir {1}"} end{"{0} ir {1}"} diff --git a/source/data/locales/lt_LT.txt b/source/data/locales/lt_LT.txt index 796f46b..9c96e94 100644 --- a/source/data/locales/lt_LT.txt +++ b/source/data/locales/lt_LT.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lt_LT{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/lu.txt b/source/data/locales/lu.txt index 4733387..64ea0db 100644 --- a/source/data/locales/lu.txt +++ b/source/data/locales/lu.txt @@ -7,7 +7,7 @@ lu{ " ɔ {ɔ\u0301} {ɔ\u0300} p {ph} q s {shi} t u ú ù v w y z]" } ExemplarCharactersIndex{"[A B C D E F H I J K L M N O P Q S T U V W Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -20,7 +20,7 @@ lu{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/lu_CD.txt b/source/data/locales/lu_CD.txt index 7a5a07a..05d212e 100644 --- a/source/data/locales/lu_CD.txt +++ b/source/data/locales/lu_CD.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lu_CD{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/luo.txt b/source/data/locales/luo.txt index 9f06ab9..d918337 100644 --- a/source/data/locales/luo.txt +++ b/source/data/locales/luo.txt @@ -11,7 +11,7 @@ luo{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/luo_KE.txt b/source/data/locales/luo_KE.txt index 5c8719e..1b2bf0c 100644 --- a/source/data/locales/luo_KE.txt +++ b/source/data/locales/luo_KE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License luo_KE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/luy.txt b/source/data/locales/luy.txt index 2487a89..ca5d90f 100644 --- a/source/data/locales/luy.txt +++ b/source/data/locales/luy.txt @@ -10,7 +10,7 @@ luy{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/luy_KE.txt b/source/data/locales/luy_KE.txt index bfbcb91..edc5a27 100644 --- a/source/data/locales/luy_KE.txt +++ b/source/data/locales/luy_KE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License luy_KE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/lv.txt b/source/data/locales/lv.txt index 9838d00..3e8d548 100644 --- a/source/data/locales/lv.txt +++ b/source/data/locales/lv.txt @@ -12,10 +12,10 @@ lv{ } ExemplarCharacters{"[a ā b c č d e ē f g ģ h i ī j k ķ l ļ m n ņ o p r s š t u ū v z ž]"} ExemplarCharactersIndex{"[A Ā B C Č D E Ē F G Ģ H I Ī Y J K Ķ L Ļ M N Ņ O P Q R S Š T U Ū V W X Z Ž]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ ‚ \u0022 “ ” „ ( ) \\[ \\] § @ * / \\& # † " - "‡ ′ ″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ ‚ \u0022 “ ” „ ( ) \\[ \\] § @ * / \\& # " + "† ‡ ′ ″]" } MoreInformation{"?"} NumberElements{ @@ -30,6 +30,7 @@ lv{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -228,9 +229,11 @@ lv{ exponential{"E"} group{" "} infinity{"∞"} + minusSign{"-"} nan{"NS"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -248,7 +251,7 @@ lv{ minimumGroupingDigits{"2"} native{"latn"} } - Version{"2.1.48.43"} + Version{"36"} calendar{ buddhist{ eras{ @@ -488,35 +491,22 @@ lv{ yyyyQQQQ{"y. 'gada' QQQQ G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + GyMMM{ + G{"G y. 'gada' MMM – G y 'gada' MMM"} + M{"G y. 'gada' MMM–MMM"} + y{"G y. 'gada' MMM – y. 'gada' MMM"} + } + GyMMMEd{ + G{"G y. 'gada' d. MMM, E – G y. 'gada' d. MMM, E"} + M{"G y. 'gada' d. MMM, E – d. MMM, E"} + d{"G y. 'gada' d. MMM, E – d. MMM, E"} + y{"G y. 'gada' d. MMM, E – y. 'gada' d. MMM, E"} + } + GyMMMd{ + G{"G y. 'gada' d. MMM – G y. 'gada' d. MMM"} + M{"G y. 'gada' d. MMM – d. MMM"} + d{"G y. 'gada' d.–d. MMM"} + y{"G y. 'gada' d. MMM – y. 'gada' d. MMM"} } M{ M{"MM–MM"} @@ -639,9 +629,9 @@ lv{ MMMEd{"E, d. MMM"} MMMMEd{"E, d. MMMM"} MMMMW{ - one{"MMMM W. 'nedēļa'"} - other{"MMMM W. 'nedēļa'"} - zero{"MMMM W. 'nedēļa'"} + one{"MMMM, W. 'nedēļa'"} + other{"MMMM, W. 'nedēļa'"} + zero{"MMMM, W. 'nedēļa'"} } MMMMd{"d. MMMM"} MMMd{"d. MMM"} @@ -813,6 +803,10 @@ lv{ "p.m.ē.", "m.ē.", } + abbreviated%variant{ + "p.m.ē.", + "m.ē.", + } narrow{ "p.m.ē.", "m.ē.", @@ -821,37 +815,28 @@ lv{ "pirms mūsu ēras", "mūsu ērā", } + wide%variant{ + "pirms mūsu ēras", + "mūsu ērā", + } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + GyMMM{ + G{"G y. 'gada' MMM – G y. 'gada' MMM"} + M{"G y. 'gada' MMM–MMM"} + y{"G y. 'gada' MMM – y. 'gada' MMM"} + } + GyMMMEd{ + G{"G y. 'gada' d. MMM, E – G y. 'gada' d. MMM, E"} + M{"G y. 'gada' d. MMM, E – d. MMM, E"} + d{"G y. 'gada' d. MMM, E – d. MMM, E"} + y{"G y. 'gada' d. MMM, E – y. 'gada' d. MMM, E"} + } + GyMMMd{ + G{"G y. 'gada' d. MMM – G y. 'gada' d. MMM"} + M{"G y. 'gada' d. MMM – d. MMM"} + d{"G y. 'gada' d.–d. MMM"} + y{"G y. 'gada' d. MMM – y. 'gada' d. MMM"} } H{ H{"HH–HH"} @@ -1373,7 +1358,7 @@ lv{ dingbats{"drukas ornamenti"} divination_symbols{"okultie simboli"} downwards_arrows{"lejupvērstās bultiņas"} - downwards_upwards_arrows{"augšupvērstās bultiņas"} + downwards_upwards_arrows{"lejupvērstās un augšupvērstās bultiņas"} east_asian_scripts{"Austrumāzijas rakstības"} emoji{"emocijzīmes"} european_scripts{"Eiropas rakstības"} @@ -1394,8 +1379,7 @@ lv{ heart{"sirds"} historic_scripts{"vēsturiskās rakstības"} ideographic_desc_characters{"hieroglifus aprakstošie simboli"} - japanese_kana{"japāņu hana"} - kanbun{"kambuns"} + japanese_kana{"japāņu kana"} kanji{"kandži"} keycap{"taustiņš"} leftwards_arrows{"pa kreisi vērstās bultiņas"} @@ -1437,7 +1421,7 @@ lv{ travel_places{"ceļojumi un vietas"} upwards_arrows{"augšupvērstās bultiņas"} variant_forms{"variantu formas"} - vocalic_jamo{"skanīgie džamo"} + vocalic_jamo{"vokāliskie džamo"} weather{"laikapstākļi"} western_asian_scripts{"Rietumāzijas rakstības"} whitespace{"nedrukājama rakstzīme"} @@ -1760,6 +1744,11 @@ lv{ } month-narrow{ dn{"mēn."} + relative{ + "-1"{"pag. mēn."} + "0"{"šajā mēn."} + "1"{"nāk. mēn."} + } relativeTime{ future{ one{"pēc {0} mēn."} @@ -1775,6 +1764,11 @@ lv{ } month-short{ dn{"mēn."} + relative{ + "-1"{"pag. mēn."} + "0"{"šajā mēn."} + "1"{"nāk. mēn."} + } relativeTime{ future{ one{"pēc {0} mēn."} @@ -2194,6 +2188,11 @@ lv{ } week-narrow{ dn{"ned."} + relative{ + "-1"{"pag. ned."} + "0"{"šajā ned."} + "1"{"nāk. ned."} + } relativePeriod{"{0}. ned."} relativeTime{ future{ @@ -2210,6 +2209,11 @@ lv{ } week-short{ dn{"ned."} + relative{ + "-1"{"pag. ned."} + "0"{"šajā ned."} + "1"{"nāk. ned."} + } relativePeriod{"{0}. ned."} relativeTime{ future{ @@ -2273,6 +2277,11 @@ lv{ } year-narrow{ dn{"g."} + relative{ + "-1"{"pag. gadā"} + "0"{"šajā g."} + "1"{"nāk. gadā"} + } relativeTime{ future{ one{"pēc {0} g."} @@ -2288,6 +2297,11 @@ lv{ } year-short{ dn{"g."} + relative{ + "-1"{"pag. gadā"} + "0"{"šajā g."} + "1"{"nāk. gadā"} + } relativeTime{ future{ one{"pēc {0} g."} @@ -2324,12 +2338,6 @@ lv{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} un {1}"} - end{"{0} un {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} un {1}"} end{"{0} un {1}"} @@ -2386,6 +2394,10 @@ lv{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/lv_LV.txt b/source/data/locales/lv_LV.txt index 6e254b8..ae8037e 100644 --- a/source/data/locales/lv_LV.txt +++ b/source/data/locales/lv_LV.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lv_LV{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/mas.txt b/source/data/locales/mas.txt index 599f6bd..2d99737 100644 --- a/source/data/locales/mas.txt +++ b/source/data/locales/mas.txt @@ -15,7 +15,7 @@ mas{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/mas_KE.txt b/source/data/locales/mas_KE.txt index fd03fe6..2a537e4 100644 --- a/source/data/locales/mas_KE.txt +++ b/source/data/locales/mas_KE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mas_KE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/mas_TZ.txt b/source/data/locales/mas_TZ.txt index 04f8bd1..0ba6b96 100644 --- a/source/data/locales/mas_TZ.txt +++ b/source/data/locales/mas_TZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mas_TZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/mer.txt b/source/data/locales/mer.txt index 916ebf2..a5fc704 100644 --- a/source/data/locales/mer.txt +++ b/source/data/locales/mer.txt @@ -11,7 +11,7 @@ mer{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/mer_KE.txt b/source/data/locales/mer_KE.txt index 55cb7da..66ffd83 100644 --- a/source/data/locales/mer_KE.txt +++ b/source/data/locales/mer_KE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mer_KE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/mfe.txt b/source/data/locales/mfe.txt index d66f064..2440ff9 100644 --- a/source/data/locales/mfe.txt +++ b/source/data/locales/mfe.txt @@ -3,7 +3,7 @@ mfe{ ExemplarCharacters{"[a b c d e f g h i j k l m n o p r s t u v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[  \\- . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ symbols{ @@ -11,7 +11,7 @@ mfe{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/mfe_MU.txt b/source/data/locales/mfe_MU.txt index e90f5c6..9f90674 100644 --- a/source/data/locales/mfe_MU.txt +++ b/source/data/locales/mfe_MU.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mfe_MU{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/mg.txt b/source/data/locales/mg.txt index 811f45a..3f6760c 100644 --- a/source/data/locales/mg.txt +++ b/source/data/locales/mg.txt @@ -4,7 +4,7 @@ mg{ AuxExemplarCharacters{"[c q u w x]"} ExemplarCharacters{"[a à â b d e é è ê ë f g h i ì î ï j k l m n ñ o ô p r s t v y z]"} ExemplarCharactersIndex{"[A B D E F G H I J K L M N O P R S T V Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ miscPatterns{ @@ -33,7 +33,7 @@ mg{ } minimumGroupingDigits{"1"} } - Version{"2.1.48.4"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/mg_MG.txt b/source/data/locales/mg_MG.txt index 10cd3f0..bec4450 100644 --- a/source/data/locales/mg_MG.txt +++ b/source/data/locales/mg_MG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mg_MG{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/mgh.txt b/source/data/locales/mgh.txt index 63169ae..652d435 100644 --- a/source/data/locales/mgh.txt +++ b/source/data/locales/mgh.txt @@ -4,7 +4,7 @@ mgh{ AuxExemplarCharacters{"[q x]"} ExemplarCharacters{"[a b c d e f g h i j k l m n o p r s t u v w y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P R S T U V W Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ symbols{ @@ -13,7 +13,7 @@ mgh{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/mgh_MZ.txt b/source/data/locales/mgh_MZ.txt index 65bd965..76107c5 100644 --- a/source/data/locales/mgh_MZ.txt +++ b/source/data/locales/mgh_MZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mgh_MZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/mgo.txt b/source/data/locales/mgo.txt index 9ccdf36..149a93c 100644 --- a/source/data/locales/mgo.txt +++ b/source/data/locales/mgo.txt @@ -12,7 +12,7 @@ mgo{ " u ù w y z ʼ]" } ExemplarCharactersIndex{"[A B {CH} D E Ə F G {GH} I J K M N Ŋ O Ɔ P R S T U W Y Z ʼ]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{"[, ; \\: ! ? . ' ‘ ’ \u0022 “ ”]"} MoreInformation{"?"} NumberElements{ @@ -39,7 +39,7 @@ mgo{ } native{"latn"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/mgo_CM.txt b/source/data/locales/mgo_CM.txt index c804f54..7dc64a1 100644 --- a/source/data/locales/mgo_CM.txt +++ b/source/data/locales/mgo_CM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mgo_CM{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/mi.txt b/source/data/locales/mi.txt index 845f757..e0105c2 100644 --- a/source/data/locales/mi.txt +++ b/source/data/locales/mi.txt @@ -5,7 +5,6 @@ mi{ ExemplarCharacters{"[a ā e ē h i ī k m n {ng} o ō p r t u ū w {wh}]"} ExemplarCharactersIndex{"[A E H I K M N O P R T U W]"} NumberElements{ - default{"latn"} latn{ miscPatterns{ atLeast{"⩾{0}"} @@ -149,21 +148,19 @@ mi{ superscriptingExponent{"×"} } } - minimumGroupingDigits{"1"} - native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ "h:mm:ss a zzzz", "h:mm:ss a z", - "h:mm:ss", - "h:mm", - "G y MMMM d, EEEE", - "G y MMMM d", - "G y MMM d", - "GGGGG y-MM-dd", + "h:mm:ss a", + "h:mm a", + "EEEE, d MMMM y G", + "d MMMM y G", + "d MMM y G", + "dd-MM-y GGGGG", "{1} {0}", "{1} {0}", "{1} {0}", @@ -250,18 +247,62 @@ mi{ DateTimePatterns{ "h:mm:ss a zzzz", "h:mm:ss a z", - "h:mm:ss", - "h:mm", - "y MMMM d, EEEE", - "y MMMM d", - "y MMM d", - "y-MM-dd", + "h:mm:ss a", + "h:mm a", + "EEEE, d MMMM y", + "d MMMM y", + "d MMM y", + "dd-MM-y", "{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}", } + availableFormats{ + Bh{"h B"} + Bhm{"h:mm B"} + Bhms{"h:mm:ss B"} + E{"ccc"} + EBhm{"E h:mm B"} + EBhms{"E h:mm:ss B"} + Ed{"E, d"} + Ehm{"E h:mm a"} + Ehms{"E h:mm:ss a"} + Gy{"y G"} + GyMMM{"MMM y G"} + GyMMMEd{"E, d MMM y G"} + GyMMMd{"d MMM y G"} + M{"L"} + MEd{"E, dd-MM"} + MMM{"LLL"} + MMMEd{"E, d MMM"} + MMMMW{ + other{"'wiki' W 'o' MMMM"} + } + MMMMd{"d MMMM"} + MMMd{"d MMM"} + Md{"dd-MM"} + d{"d"} + h{"h a"} + hm{"h:mm a"} + hms{"h:mm:ss a"} + hmsv{"h:mm:ss a v"} + hmv{"h:mm a v"} + y{"y"} + yM{"MM-y"} + yMEd{"E, dd-MM-y"} + yMMM{"MMM y"} + yMMMEd{"E, d MMM y"} + yMMMM{"MMMM y"} + yMMMd{"d MMM y"} + yMd{"dd-MM-y"} + yQQQ{"QQQ y"} + yQQQQ{"QQQQ y"} + yw{ + other{"'wiki' w 'o' Y"} + } + } dayNames{ format{ abbreviated{ @@ -361,10 +402,18 @@ mi{ "BCE", "CE", } + abbreviated%variant{ + "BCE", + "CE", + } wide{ "BCE", "CE", } + wide%variant{ + "BCE", + "CE", + } } intervalFormats{ fallback{"{0} ki te {1}"} diff --git a/source/data/locales/mi_NZ.txt b/source/data/locales/mi_NZ.txt index 308b3ea..c5d6445 100644 --- a/source/data/locales/mi_NZ.txt +++ b/source/data/locales/mi_NZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mi_NZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/mk.txt b/source/data/locales/mk.txt index 82244e2..9e7f33d 100644 --- a/source/data/locales/mk.txt +++ b/source/data/locales/mk.txt @@ -12,8 +12,8 @@ mk{ } ExemplarCharacters{"[а б в г д ѓ е ж з ѕ и ј к л љ м н њ о п р с т ќ у ф х ц ч џ ш]"} ExemplarCharactersIndex{"[А Б В Г Д Ѓ Е Ж З Ѕ И Ј К Л Љ М Н Њ О П Р С Т Ќ У Ф Х Ц Ч Џ Ш]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\}]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\}]"} MoreInformation{"?"} NumberElements{ default{"latn"} @@ -27,7 +27,8 @@ mk{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} - percentFormat{"#,##0%"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0 %"} scientificFormat{"#E0"} } patternsLong{ @@ -189,9 +190,11 @@ mk{ exponential{"E"} group{"."} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -211,7 +214,7 @@ mk{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.48.27"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -721,10 +724,10 @@ mk{ "HH:mm:ss z", "HH:mm:ss", "HH:mm", - "EEEE, dd MMMM y", - "dd MMMM y", - "dd.M.y", - "dd.M.yy", + "EEEE, d MMMM y", + "d MMMM y", + "d.M.y", + "d.M.yy", "{1} {0}", "{1} {0}", "{1} {0}", @@ -748,8 +751,8 @@ mk{ Ehms{"E h:mm:ss a"} Gy{"y G"} GyMMM{"MMM y G"} - GyMMMEd{"E, dd MMM y G"} - GyMMMd{"dd MMM y G"} + GyMMMEd{"E, d MMM y G"} + GyMMMd{"d MMM y G"} H{"HH"} Hm{"HH:mm"} Hms{"HH:mm:ss"} @@ -761,13 +764,13 @@ mk{ MMMEd{"E, d MMM"} MMMMEd{"E, d MMMM"} MMMMW{ - one{"W 'седмица' 'од' MMMM"} - other{"W 'седмица' 'од' MMMM"} + one{"W. 'седмица' 'од' MMMM"} + other{"W. 'седмица' 'од' MMMM"} } MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d.M"} - Mdd{"dd.M"} + Mdd{"d.M"} d{"d"} h{"h a"} hm{"h:mm a"} @@ -941,7 +944,7 @@ mk{ } abbreviated%variant{ "п.н.е.", - "CE", + "н.е.", } narrow{ "пр.н.е.", @@ -958,7 +961,6 @@ mk{ } intervalFormats{ Bh{ - B{"h B – h B"} h{"h – h B"} } Bhm{ @@ -2621,9 +2623,9 @@ mk{ year-narrow{ dn{"год."} relative{ - "-1"{"минатата година"} - "0"{"оваа година"} - "1"{"следната година"} + "-1"{"минатата год."} + "0"{"оваа год."} + "1"{"следната год."} } relativeTime{ future{ @@ -2639,9 +2641,9 @@ mk{ year-short{ dn{"год."} relative{ - "-1"{"минатата година"} - "0"{"оваа година"} - "1"{"следната година"} + "-1"{"минатата год."} + "0"{"оваа год."} + "1"{"следната год."} } relativeTime{ future{ @@ -2679,9 +2681,6 @@ mk{ } standard-narrow{ 2{"{0} и {1}"} - end{"{0} и {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} и {1}"} diff --git a/source/data/locales/mk_MK.txt b/source/data/locales/mk_MK.txt index 5e34020..018fd97 100644 --- a/source/data/locales/mk_MK.txt +++ b/source/data/locales/mk_MK.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mk_MK{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ml.txt b/source/data/locales/ml.txt index 177de5a..83ad9f0 100644 --- a/source/data/locales/ml.txt +++ b/source/data/locales/ml.txt @@ -19,13 +19,16 @@ ml{ "[അ ആ ഇ ഈ ഉ ഊ ഋ എ ഏ ഐ ഒ ഓ ഔ ക ഖ ഗ ഘ ങ ച ഛ ജ ഝ ഞ ട ഠ ഡ ഢ ണ ത ഥ ദ ധ ന പ ഫ ബ ഭ മ" " യ ര ല വ ശ ഷ സ ഹ ള ഴ റ]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0൦ 1൧ 2൨ 3൩ 4൪ 5൫ 6൬ 7൭ 8൮ 9൯]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\}]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0൦ 1൧ 2൨ 3൩ 4൪ 5൫ 6൬ 7൭ 8൮ 9൯]"} + ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\}]"} MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ @@ -190,11 +193,16 @@ ml{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -217,20 +225,37 @@ ml{ scientificFormat{"#E0"} } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } } native{"mlym"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ + buddhist{ + eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } + wide{ + "BE", + } + } + } coptic{ eras{ abbreviated{ @@ -518,52 +543,19 @@ ml{ yyyyQQQQ{"G y QQQQ"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} + H{ + H{"HH–HH"} } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + Hv{ + H{"HH–HH v"} } M{ M{"M – M"} @@ -595,17 +587,21 @@ ml{ } fallback{"{0} – {1}"} h{ + a{"h a – h a"} h{"h–h a"} } hm{ + a{"h:mm a – h:mm a"} h{"h:mm–h:mm a"} m{"h:mm–h:mm a"} } hmv{ + a{"h:mm a – h:mm a v"} h{"h:mm–h:mm a v"} m{"h:mm–h:mm a v"} } hv{ + a{"h a – h a v"} h{"h–h a v"} } y{ @@ -916,53 +912,6 @@ ml{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH – HH"} } @@ -1194,6 +1143,17 @@ ml{ } } hebrew{ + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } monthNames{ format{ abbreviated{ @@ -1504,6 +1464,17 @@ ml{ } } persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } monthNames{ format{ abbreviated{ @@ -2559,7 +2530,7 @@ ml{ start{"{0}, {1}"} } unit-narrow{ - 2{"{0} കൂടാതെ {1}"} + 2{"{0}, {1}"} end{"{0} {1}"} middle{"{0} {1}"} start{"{0} {1}"} diff --git a/source/data/locales/ml_IN.txt b/source/data/locales/ml_IN.txt index 83ae24c..7b7dca1 100644 --- a/source/data/locales/ml_IN.txt +++ b/source/data/locales/ml_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ml_IN{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/mn.txt b/source/data/locales/mn.txt index 5492bc3..6e30360 100644 --- a/source/data/locales/mn.txt +++ b/source/data/locales/mn.txt @@ -11,10 +11,11 @@ mn{ word-medial{"{0} … {1}"} } ExemplarCharacters{"[а б в г д е ё ж з и й к л м н о ө п р с т у ү ф х ц ч ш щ ъ ы ь э ю я]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersIndex{"[А Б В Г Д Е Ж З И Й К Л М Н О Ө П Р С Т У Ү Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ @@ -29,6 +30,7 @@ mn{ patterns{ accountingFormat{"¤ #,##0.00"} currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -187,12 +189,16 @@ mn{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -206,9 +212,10 @@ mn{ other{"Картанд {0} Х байна. Тэднийг авах уу?"} } } + minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.48.17"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -270,53 +277,6 @@ mn{ yyyyQQQQ{"G y 'оны' QQQQ"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -430,8 +390,8 @@ mn{ "HH:mm:ss (z)", "HH:mm:ss", "HH:mm", - "y.MM.dd, EEEE", - "y.MM.dd", + "y 'оны' MMMM'ын' d, EEEE 'гараг'", + "y 'оны' MMMM'ын' d", "y 'оны' MMM'ын' d", "y.MM.dd", "{1} {0}", @@ -658,52 +618,8 @@ mn{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } GyMMM{ - G{"G y MMM – G y MMM"} M{"G y MMM – MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} } H{ H{"HH – HH 'ц'"} @@ -1693,6 +1609,11 @@ mn{ } week-narrow{ dn{"7 хоног"} + relative{ + "-1"{"өнгөрсөн 7 хоног"} + "0"{"энэ 7 хоног"} + "1"{"ирэх 7 хоног"} + } relativePeriod{"{0}-н 7 хоног"} relativeTime{ future{ @@ -1707,6 +1628,11 @@ mn{ } week-short{ dn{"7 хоног"} + relative{ + "-1"{"өнгөрсөн 7 хоног"} + "0"{"энэ 7 хоног"} + "1"{"ирэх 7 хоног"} + } relativePeriod{"{0}-н 7 хоног"} relativeTime{ future{ @@ -1803,10 +1729,16 @@ mn{ listPattern{ or{ 2{"{0} эсвэл {1}"} - end{"{0}, эсвэл {1}"} + end{"{0}, {1} зэргийн аль нэг"} middle{"{0}, {1}"} start{"{0}, {1}"} } + or-narrow{ + end{"{0}, {1} зэргийн аль нэг"} + } + or-short{ + end{"{0}, {1} зэргийн аль нэг"} + } standard{ 2{"{0}, {1}"} end{"{0}, {1}"} @@ -1816,37 +1748,29 @@ mn{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } - standard-short{ - 2{"{0} & {1}"} - end{"{0}, & {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } unit{ - 2{"{0}, {1}"} - end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} + 2{"{0} {1}"} + end{"{0} {1}"} + middle{"{0} {1}"} + start{"{0} {1}"} } unit-narrow{ - 2{"{0}, {1}"} - end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} + 2{"{0} {1}"} + end{"{0} {1}"} + middle{"{0} {1}"} + start{"{0} {1}"} } unit-short{ - 2{"{0}, {1}"} - end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} + 2{"{0} {1}"} + end{"{0} {1}"} + middle{"{0} {1}"} + start{"{0} {1}"} } } measurementSystemNames{ UK{"ИБ"} US{"АНУ"} - metric{"метрийн"} + metric{"метрийн систем"} } } diff --git a/source/data/locales/mn_MN.txt b/source/data/locales/mn_MN.txt index 9802548..c88585a 100644 --- a/source/data/locales/mn_MN.txt +++ b/source/data/locales/mn_MN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mn_MN{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/mr.txt b/source/data/locales/mr.txt index 3be82d9..563be21 100644 --- a/source/data/locales/mr.txt +++ b/source/data/locales/mr.txt @@ -19,8 +19,8 @@ mr{ "[\u200D ॐ \u0902 ः अ आ इ ई उ ऊ ऋ ऌ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त" " थ द ध न प फ ब भ म य र ल व श ष स ह ळ ऽ \u0945 \u094D]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0० 1१ 2२ 3३ 4४ 5५ 6६ 7७ 8८ 9९]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] @ * / \\& # ′ ″]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0० 1१ 2२ 3३ 4४ 5५ 6६ 7७ 8८ 9९]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] @ * / \\& # ′ ″]"} MoreInformation{"?"} NumberElements{ default{"deva"} @@ -32,17 +32,24 @@ mr{ scientificFormat{"[#E0]"} } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } latn{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}–{1}"} } patterns{ @@ -207,13 +214,18 @@ mr{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -231,7 +243,7 @@ mr{ minimumGroupingDigits{"1"} native{"deva"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ buddhist{ eras{ @@ -532,53 +544,6 @@ mr{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -930,53 +895,6 @@ mr{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH – HH"} } @@ -1206,6 +1124,12 @@ mr{ } hebrew{ eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } wide{ "ऍन्नो मुंडी", } @@ -1520,6 +1444,17 @@ mr{ } } persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } monthNames{ format{ abbreviated{ @@ -2546,12 +2481,6 @@ mr{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} आणि {1}"} - end{"{0} आणि {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} आणि {1}"} end{"{0} आणि {1}"} diff --git a/source/data/locales/mr_IN.txt b/source/data/locales/mr_IN.txt index 853c73a..3835b0f 100644 --- a/source/data/locales/mr_IN.txt +++ b/source/data/locales/mr_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mr_IN{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ms.txt b/source/data/locales/ms.txt index 637c1cd..0afeb7a 100644 --- a/source/data/locales/ms.txt +++ b/source/data/locales/ms.txt @@ -1,6 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ms{ + AuxExemplarCharacters{"[]"} Ellipsis{ final{"{0}…"} initial{"…{0}"} @@ -14,10 +15,10 @@ ms{ "sy} t {ts} u {ua} v w x y z]" } ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ @@ -32,6 +33,7 @@ ms{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -154,12 +156,18 @@ ms{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -174,8 +182,21 @@ ms{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.2"} + Version{"36"} calendar{ + buddhist{ + eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } + wide{ + "BE", + } + } + } chinese{ DateTimePatterns{ "h:mm:ss a zzzz", @@ -283,6 +304,243 @@ ms{ } } } + coptic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } + monthNames{ + format{ + abbreviated{ + "Tout", + "Baba", + "Hator", + "Kiahk", + "Toba", + "Amshir", + "Baramhat", + "Baramouda", + "Bashans", + "Paona", + "Epep", + "Mesra", + "Nasie", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } + wide{ + "Tout", + "Baba", + "Hator", + "Kiahk", + "Toba", + "Amshir", + "Baramhat", + "Baramouda", + "Bashans", + "Paona", + "Epep", + "Mesra", + "Nasie", + } + } + stand-alone{ + abbreviated{ + "Tout", + "Baba", + "Hator", + "Kiahk", + "Toba", + "Amshir", + "Baramhat", + "Baramouda", + "Bashans", + "Paona", + "Epep", + "Mesra", + "Nasie", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } + wide{ + "Tout", + "Baba", + "Hator", + "Kiahk", + "Toba", + "Amshir", + "Baramhat", + "Baramouda", + "Bashans", + "Paona", + "Epep", + "Mesra", + "Nasie", + } + } + } + } + ethiopic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } + monthNames{ + format{ + abbreviated{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } + wide{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } + } + stand-alone{ + abbreviated{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } + wide{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } + } + } + } + ethiopic-amete-alem{ + eras{ + abbreviated{ + "ERA0", + } + narrow{ + "ERA0", + } + wide{ + "ERA0", + } + } + } generic{ DateTimePatterns{ "h:mm:ss a zzzz", @@ -343,52 +601,43 @@ ms{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ - G{"G y – G y"} - y{"G y–y"} + G{"y G – y G"} + y{"y–y G"} } GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} + G{"M/y GGGGG – M/y GGGGG"} + M{"M/y – M/y GGGGG"} + y{"M/y – M/y GGGGG"} } GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} + G{"E, d/M/y GGGGG – E, d/M/y GGGGG"} + M{"E, d/M/y – E, d/M/y GGGGG"} + d{"E, d/M/y – E, d/M/y GGGGG"} + y{"E, d/M/y – E, d/M/y GGGGG"} } GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} } GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} + G{"E, d MMM, y G – E, d MMM, y G"} + M{"E, d MMM – E, d MMM, y G"} + d{"E, d MMM – E, d MMM, y G"} + y{"E, d MMM, y – E, d MMM, y G"} } GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} + G{"d MMM, y G – d MMM, y G"} + M{"d MMM – d MMM, y G"} + d{"d–d MMM, y G"} + y{"d MMM, y – d MMM, y G"} } GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + G{"d/M/y GGGGG – d/M/y GGGG"} + M{"d/M/y – d/M/y GGGGG"} + d{"d/M/y – d/M/y GGGGG"} + y{"d/M/y – d/M/y GGGGG"} } H{ H{"HH–HH"} @@ -562,6 +811,9 @@ ms{ yMd{"d/M/y"} yQQQ{"QQQ y"} yQQQQ{"QQQQ y"} + yw{ + other{"'week' w 'of' Y"} + } } dayNames{ format{ @@ -700,10 +952,6 @@ ms{ "S.M.", "TM", } - abbreviated%variant{ - "BCE", - "CE", - } narrow{ "S.M.", "TM", @@ -712,21 +960,8 @@ ms{ "S.M.", "TM", } - wide%variant{ - "BCE", - "CE", - } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y–y G"} @@ -1009,16 +1244,20 @@ ms{ "{1}, {0}", } availableFormats{ + E{"ccc"} Ed{"E, d"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E, d MMM y G"} GyMMMd{"d MMM y G"} + M{"L"} MEd{"E, d/M"} + MMM{"LLL"} MMMEd{"E, d MMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d/M"} + d{"d"} y{"y"} yyyy{"y G"} yyyyM{"M/y G"} @@ -1031,7 +1270,32 @@ ms{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -1054,6 +1318,28 @@ ms{ M{"d/M – d/M"} d{"d/M – d/M"} } + d{ + d{"d–d"} + } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -1090,6 +1376,300 @@ ms{ y{"d/M/y – d/M/y G"} } } + monthNames{ + format{ + abbreviated{ + "Tishri", + "Heshvan", + "Kislev", + "Tevet", + "Shevat", + "Adar I", + "Adar", + "Nisan", + "Iyar", + "Sivan", + "Tamuz", + "Av", + "Elul", + "Adar II", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } + wide{ + "Tishri", + "Heshvan", + "Kislev", + "Tevet", + "Shevat", + "Adar I", + "Adar", + "Nisan", + "Iyar", + "Sivan", + "Tamuz", + "Av", + "Elul", + "Adar II", + } + } + stand-alone{ + abbreviated{ + "Tishri", + "Heshvan", + "Kislev", + "Tevet", + "Shevat", + "Adar I", + "Adar", + "Nisan", + "Iyar", + "Sivan", + "Tamuz", + "Av", + "Elul", + "Adar II", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } + wide{ + "Tishri", + "Heshvan", + "Kislev", + "Tevet", + "Shevat", + "Adar I", + "Adar", + "Nisan", + "Iyar", + "Sivan", + "Tamuz", + "Av", + "Elul", + "Adar II", + } + } + } + } + indian{ + eras{ + abbreviated{ + "Saka", + } + narrow{ + "Saka", + } + wide{ + "Saka", + } + } + monthNames{ + format{ + abbreviated{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + } + stand-alone{ + abbreviated{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + } + } + } + islamic{ + eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } + wide{ + "AH", + } + } + monthNames{ + format{ + abbreviated{ + "Muh.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dhuʻl-Q.", + "Dhuʻl-H.", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + } + stand-alone{ + abbreviated{ + "Muh.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dhuʻl-Q.", + "Dhuʻl-H.", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Muharram", + "Safar", + "Rabiʻ I", + "Rabiʻ II", + "Jumada I", + "Jumada II", + "Rajab", + "Shaʻban", + "Ramadan", + "Shawwal", + "Dhuʻl-Qiʻdah", + "Dhuʻl-Hijjah", + } + } + } } japanese{ DateTimePatterns{ @@ -1108,6 +1688,109 @@ ms{ "{1} {0}", } } + persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } + monthNames{ + format{ + abbreviated{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + } + stand-alone{ + abbreviated{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + } + } + } roc{ eras{ abbreviated{ @@ -1210,7 +1893,7 @@ ms{ variant_forms{"Bentuk Varian"} vocalic_jamo{"Jamo Vokal"} weather{"cuaca"} - western_asian_scripts{"Tiulisan Asia Barat"} + western_asian_scripts{"Skrip Asia Barat"} whitespace{"Ruang putih"} } delimiters{ @@ -1259,7 +1942,7 @@ ms{ day-short{ dn{"hari"} relative{ - "-1"{"semlm"} + "-1"{"semalam"} "-2"{"kelmarin"} "0"{"hari ini"} "1"{"esok"} @@ -1852,9 +2535,9 @@ ms{ week-narrow{ dn{"mgu"} relative{ - "-1"{"mng lepas"} - "0"{"mng ini"} - "1"{"mng depan"} + "-1"{"mgu lepas"} + "0"{"mgu ini"} + "1"{"mgu depan"} } relativePeriod{"minggu ke-{0}"} relativeTime{ @@ -1869,9 +2552,9 @@ ms{ week-short{ dn{"mgu"} relative{ - "-1"{"mng lepas"} - "0"{"mng ini"} - "1"{"mng depan"} + "-1"{"mgu lepas"} + "0"{"mgu ini"} + "1"{"mgu depan"} } relativePeriod{"minggu ke-{0}"} relativeTime{ @@ -1984,8 +2667,6 @@ ms{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} dan {1}"} diff --git a/source/data/locales/ms_BN.txt b/source/data/locales/ms_BN.txt index 662e967..4608b53 100644 --- a/source/data/locales/ms_BN.txt +++ b/source/data/locales/ms_BN.txt @@ -12,7 +12,7 @@ ms_BN{ } } } - Version{"2.1.47.71"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ms_MY.txt b/source/data/locales/ms_MY.txt index 006ba29..42f9f3a 100644 --- a/source/data/locales/ms_MY.txt +++ b/source/data/locales/ms_MY.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ms_MY{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ms_SG.txt b/source/data/locales/ms_SG.txt index d185d29..ab7dc5b 100644 --- a/source/data/locales/ms_SG.txt +++ b/source/data/locales/ms_SG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ms_SG{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/mt.txt b/source/data/locales/mt.txt index cfbe2f0..d2cde1a 100644 --- a/source/data/locales/mt.txt +++ b/source/data/locales/mt.txt @@ -12,8 +12,8 @@ mt{ } ExemplarCharacters{"[a à b ċ d e è f ġ g {għ} h ħ i ì j k l m n o ò p q r s t u ù v w x ż z]"} ExemplarCharactersIndex{"[A B Ċ C D E F Ġ G {GĦ} H Ħ I {IE*} J K L M N O P Q R S T U V W X Y Ż Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\}]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\}]"} MoreInformation{"?"} NumberElements{ default{"latn"} @@ -48,7 +48,7 @@ mt{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/mt_MT.txt b/source/data/locales/mt_MT.txt index 8e7fff5..b16dac8 100644 --- a/source/data/locales/mt_MT.txt +++ b/source/data/locales/mt_MT.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mt_MT{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/mua.txt b/source/data/locales/mua.txt index 3ea0ad1..4067cc0 100644 --- a/source/data/locales/mua.txt +++ b/source/data/locales/mua.txt @@ -4,7 +4,7 @@ mua{ AuxExemplarCharacters{"[q x]"} ExemplarCharacters{"[a ã b ɓ c d ɗ e ë ǝ f g h i ĩ j k l m n ŋ o õ p r s t u v ṽ w y z]"} ExemplarCharactersIndex{"[A B Ɓ C D Ɗ E Ǝ F G H I J K L M N Ŋ O P R S T U V W Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -19,7 +19,7 @@ mua{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/mua_CM.txt b/source/data/locales/mua_CM.txt index 6e44994..6a913c8 100644 --- a/source/data/locales/mua_CM.txt +++ b/source/data/locales/mua_CM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mua_CM{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/my.txt b/source/data/locales/my.txt index dcbc821..9d49df3 100644 --- a/source/data/locales/my.txt +++ b/source/data/locales/my.txt @@ -19,7 +19,7 @@ my{ "\u103E \u1039 \u103A \u1037 း]" } ExemplarCharactersIndex{"[က ခ ဂ ဃ င စ ဆ ဇ ဈ ဉ ည ဋ ဌ ဍ ဎ ဏ တ ထ ဒ ဓ န ပ ဖ ဗ ဘ မ ယ ရ လ ဝ သ ဟ ဠ အ]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0၀ 1၁ 2၂ 3၃ 4၄ 5၅ 6၆ 7၇ 8၈ 9၉]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0၀ 1၁ 2၂ 3၃ 4၄ 5၅ 6၆ 7၇ 8၈ 9၉]"} ExemplarCharactersPunctuation{"[၊ ။ ‘ ’ “ ”]"} MoreInformation{"?"} NumberElements{ @@ -34,6 +34,7 @@ my{ patterns{ accountingFormat{"¤ #,##0.00"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -156,12 +157,16 @@ my{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} list{";"} + minusSign{"-"} nan{"ဂဏန်းမဟုတ်သော"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -198,7 +203,7 @@ my{ } native{"mymr"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -1675,13 +1680,10 @@ my{ middle{"{0} {1}"} start{"{0} {1}"} } - standard{ - 2{"{0}နှင့် {1}"} - end{"{0}နှင့် {1}"} - middle{"{0} {1}"} - start{"{0} {1}"} + or-short{ + start{"{0} ၊ {1}"} } - standard-narrow{ + standard{ 2{"{0}နှင့် {1}"} end{"{0}နှင့် {1}"} middle{"{0} {1}"} @@ -1743,6 +1745,10 @@ my{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/my_MM.txt b/source/data/locales/my_MM.txt index a503665..34394a9 100644 --- a/source/data/locales/my_MM.txt +++ b/source/data/locales/my_MM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License my_MM{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/mzn.txt b/source/data/locales/mzn.txt index 7fd45dc..71d2bff 100644 --- a/source/data/locales/mzn.txt +++ b/source/data/locales/mzn.txt @@ -15,7 +15,7 @@ mzn{ "س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ه و ی]" } ExemplarCharactersIndex{"[آ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ه و ی]"} - ExemplarCharactersPunctuation{"[\\- ‐ ، ٫ ٬ ؛ \\: ! ؟ . … ‹ › « » ( ) \\[ \\] * / \\\\]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ ، ٫ ٬ ؛ \\: ! ؟ . … ‹ › « » ( ) \\[ \\] * / \\\\]"} MoreInformation{"؟"} NumberElements{ arabext{ @@ -26,7 +26,7 @@ mzn{ default{"arabext"} native{"arabext"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ default{"persian"} gregorian{ diff --git a/source/data/locales/mzn_IR.txt b/source/data/locales/mzn_IR.txt index 83e2673..b9f95a9 100644 --- a/source/data/locales/mzn_IR.txt +++ b/source/data/locales/mzn_IR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mzn_IR{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/naq.txt b/source/data/locales/naq.txt index e45b3c9..312ef14 100644 --- a/source/data/locales/naq.txt +++ b/source/data/locales/naq.txt @@ -11,7 +11,7 @@ naq{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/naq_NA.txt b/source/data/locales/naq_NA.txt index 31cb72d..28f8377 100644 --- a/source/data/locales/naq_NA.txt +++ b/source/data/locales/naq_NA.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License naq_NA{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/nb.txt b/source/data/locales/nb.txt index b7631b1..435f01d 100644 --- a/source/data/locales/nb.txt +++ b/source/data/locales/nb.txt @@ -13,273 +13,517 @@ nb{ ExemplarCharacters{"[a à b c d e é f g h i j k l m n o ó ò ô p q r s t u v w x y z æ ø å]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å]"} ExemplarCharactersNumbers{"[  , % ‰ + − 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- – , ; \\: ! ? . ' \u0022 « » ( ) \\[ \\] \\{ \\} § @ * / \\\\]"} + ExemplarCharactersPunctuation{"[\\- ‑ – , ; \\: ! ? . ' \u0022 « » ( ) \\[ \\] \\{ \\} § @ * / \\\\]"} MoreInformation{"?"} NumberElements{ arab{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ accountingFormat{"¤ #,##0.00"} currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ + decimal{"٫"} + exponential{"اس"} group{" "} + infinity{"∞"} + list{"؛"} minusSign{"؜−"} + nan{"NaN"} + perMille{"؉"} percentSign{"٪؜"} plusSign{"؜+"} + superscriptingExponent{"×"} timeSeparator{"."} } } arabext{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"×۱۰^"} group{" "} + infinity{"∞"} + list{"؛"} minusSign{"‎−‎"} + nan{"NaN"} + perMille{"؉"} + percentSign{"٪"} plusSign{"‎+‎"} + superscriptingExponent{"×"} timeSeparator{"."} } } bali{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } beng{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } brah{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } cakm{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } cham{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } default{"latn"} deva{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } fullwide{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } gujr{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } guru{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } hanidec{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } java{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } kali{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } khmr{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } knda{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } lana{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } lanatham{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } laoo{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } latn{ miscPatterns{ - approximately{"~{0}"} - atLeast{"≥{0}"} - atMost{"≤{0}"} + approximately{"ca. {0}"} + atLeast{"≥ {0}"} + atMost{"≤ {0}"} range{"{0}–{1}"} } patterns{ accountingFormat{"¤ #,##0.00"} currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -442,10 +686,12 @@ nb{ exponential{"E"} group{" "} infinity{"∞"} + list{";"} minusSign{"−"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -453,27 +699,53 @@ nb{ lepc{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } limb{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } minimalPairs{ @@ -489,266 +761,526 @@ nb{ mlym{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } mong{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } mtei{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } mymr{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } mymrshan{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } native{"latn"} nkoo{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } olck{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } orya{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } osma{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } saur{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } shrd{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } sora{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } sund{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } takr{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } talu{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } tamldec{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } telu{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } thai{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } tibt{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } vaii{ miscPatterns{ atLeast{"≥{0}"} + range{"{0}–{1}"} } patterns{ + accountingFormat{"¤ #,##0.00"} + currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{" "} + infinity{"∞"} + list{";"} minusSign{"−"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} } } } - Version{"2.1.48.42"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -767,6 +1299,7 @@ nb{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"MMM y G"} @@ -774,6 +1307,7 @@ nb{ GyMMMd{"d. MMM y G"} M{"L."} MEd{"E d.M"} + MMM{"LLL"} MMMEd{"E d. MMM"} MMMMd{"d. MMMM"} MMMd{"d. MMM"} @@ -805,6 +1339,12 @@ nb{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M.–M."} } @@ -833,9 +1373,11 @@ nb{ fallback{"{0}–{1}"} h{ a{"h a–h a"} + h{"h–h a"} } hv{ a{"h a–h a v"} + h{"h–h a v"} } y{ y{"y–y G"} @@ -891,13 +1433,16 @@ nb{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"r(U)"} GyMMM{"MMM r(U)"} GyMMMEd{"E d. MMM r(U)"} GyMMMd{"d. MMM r"} + H{"HH"} M{"L."} MEd{"E dd.MM."} + MMM{"LLL"} MMMEd{"E d. MMM"} MMMMd{"d. MMMM"} MMMd{"d. MMM"} @@ -907,7 +1452,10 @@ nb{ UMMMd{"d. MMM U"} UMd{"d.MM. U"} d{"d."} + h{"h a"} + y{"r(U)"} yMd{"dd.MM.r"} + yyyy{"r(U)"} yyyyM{"MM.r"} yyyyMEd{"E dd.MM.r"} yyyyMMM{"MMM r(U)"} @@ -919,6 +1467,432 @@ nb{ yyyyQQQQ{"QQQQ r(U)"} } cyclicNameSets{ + dayParts{ + format{ + abbreviated{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + narrow{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + wide{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + } + } + days{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } + months{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } solarTerms{ format{ abbreviated{ @@ -1001,8 +1975,247 @@ nb{ } } } + years{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } + zodiacs{ + format{ + abbreviated{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + narrow{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + wide{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + } + } } intervalFormats{ + H{ + H{"HH–HH"} + } Hm{ H{"HH:mm–HH:mm"} m{"HH:mm–HH:mm"} @@ -1011,6 +2224,9 @@ nb{ H{"HH:mm–HH:mm v"} m{"HH:mm–HH:mm v"} } + Hv{ + H{"HH–HH v"} + } M{ M{"MM.–MM."} } @@ -1018,6 +2234,9 @@ nb{ M{"dd.MM.E–dd.MM.E"} d{"dd.MM.E–dd.MM.E"} } + MMM{ + M{"LLL–LLL"} + } MMMEd{ M{"E d. MMM–E d. MMM"} d{"E d. MMM–E d. MMM"} @@ -1036,6 +2255,7 @@ nb{ fallback{"{0}–{1}"} h{ a{"h a–h a"} + h{"h–h a"} } hm{ a{"h:mm a–h:mm a"} @@ -1049,6 +2269,10 @@ nb{ } hv{ a{"h a–h a v"} + h{"h–h a v"} + } + y{ + y{"U–U"} } yM{ M{"MM.y–MM.y"} @@ -1083,6 +2307,125 @@ nb{ y{"dd.MM.y–dd.MM.y"} } } + monthNames{ + format{ + abbreviated{ + "M01", + "M02", + "M03", + "M04", + "M05", + "M06", + "M07", + "M08", + "M09", + "M10", + "M11", + "M12", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "M01", + "M02", + "M03", + "M04", + "M05", + "M06", + "M07", + "M08", + "M09", + "M10", + "M11", + "M12", + } + } + stand-alone{ + abbreviated{ + "M01", + "M02", + "M03", + "M04", + "M05", + "M06", + "M07", + "M08", + "M09", + "M10", + "M11", + "M12", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "M01", + "M02", + "M03", + "M04", + "M05", + "M06", + "M07", + "M08", + "M09", + "M10", + "M11", + "M12", + } + } + } + monthPatterns{ + format{ + abbreviated{ + leap{"{0}bis"} + } + narrow{ + leap{"{0}b"} + } + wide{ + leap{"{0}bis"} + } + } + numeric{ + all{ + leap{"{0}bis"} + } + } + stand-alone{ + abbreviated{ + leap{"{0}bis"} + } + narrow{ + leap{"{0}b"} + } + wide{ + leap{"{0}bis"} + } + } + } } coptic{ DateTimePatterns{ @@ -1101,6 +2444,7 @@ nb{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"MMM y G"} @@ -1108,6 +2452,7 @@ nb{ GyMMMd{"d. MMM y G"} M{"L."} MEd{"E d.M"} + MMM{"LLL"} MMMEd{"E d. MMM"} MMMMd{"d. MMMM"} MMMd{"d. MMM"} @@ -1142,6 +2487,12 @@ nb{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M.–M."} } @@ -1170,9 +2521,11 @@ nb{ fallback{"{0}–{1}"} h{ a{"h a–h a"} + h{"h–h a"} } hv{ a{"h a–h a v"} + h{"h–h a v"} } y{ y{"y–y G"} @@ -1324,6 +2677,7 @@ nb{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"r(U)"} GyMMM{"MMM r(U)"} @@ -1331,6 +2685,7 @@ nb{ GyMMMd{"d. MMM r"} M{"L."} MEd{"E dd.MM."} + MMM{"LLL"} MMMEd{"E d. MMM"} MMMMd{"d. MMMM"} MMMd{"d. MMM"} @@ -1340,7 +2695,9 @@ nb{ UMMMd{"d. MMM U"} UMd{"d.MM. U"} d{"d."} + y{"r(U)"} yMd{"dd.MM.r"} + yyyy{"r(U)"} yyyyM{"MM.r"} yyyyMEd{"E dd.MM.r"} yyyyMMM{"MMM r(U)"} @@ -1352,6 +2709,432 @@ nb{ yyyyQQQQ{"QQQQ r(U)"} } cyclicNameSets{ + dayParts{ + format{ + abbreviated{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + narrow{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + wide{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + } + } + days{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } + months{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } solarTerms{ format{ abbreviated{ @@ -1434,8 +3217,250 @@ nb{ } } } + years{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } + zodiacs{ + format{ + abbreviated{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + narrow{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + wide{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + } + } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"MM.–MM."} } @@ -1443,6 +3468,9 @@ nb{ M{"dd.MM.E–dd.MM.E"} d{"dd.MM.E–dd.MM.E"} } + MMM{ + M{"LLL–LLL"} + } MMMEd{ M{"E d. MMM–E d. MMM"} d{"E d. MMM–E d. MMM"} @@ -1461,9 +3489,14 @@ nb{ fallback{"{0}–{1}"} h{ a{"h a–h a"} + h{"h–h a"} } hv{ a{"h a–h a v"} + h{"h–h a v"} + } + y{ + y{"U–U"} } yM{ M{"MM.y–MM.y"} @@ -1498,6 +3531,125 @@ nb{ y{"dd.MM.y–dd.MM.y"} } } + monthNames{ + format{ + abbreviated{ + "M01", + "M02", + "M03", + "M04", + "M05", + "M06", + "M07", + "M08", + "M09", + "M10", + "M11", + "M12", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "M01", + "M02", + "M03", + "M04", + "M05", + "M06", + "M07", + "M08", + "M09", + "M10", + "M11", + "M12", + } + } + stand-alone{ + abbreviated{ + "M01", + "M02", + "M03", + "M04", + "M05", + "M06", + "M07", + "M08", + "M09", + "M10", + "M11", + "M12", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "M01", + "M02", + "M03", + "M04", + "M05", + "M06", + "M07", + "M08", + "M09", + "M10", + "M11", + "M12", + } + } + } + monthPatterns{ + format{ + abbreviated{ + leap{"{0}bis"} + } + narrow{ + leap{"{0}b"} + } + wide{ + leap{"{0}bis"} + } + } + numeric{ + all{ + leap{"{0}bis"} + } + } + stand-alone{ + abbreviated{ + leap{"{0}bis"} + } + narrow{ + leap{"{0}b"} + } + wide{ + leap{"{0}bis"} + } + } + } } ethiopic{ DateTimePatterns{ @@ -1516,6 +3668,7 @@ nb{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"MMM y G"} @@ -1523,6 +3676,7 @@ nb{ GyMMMd{"d. MMM y G"} M{"L."} MEd{"E d.M"} + MMM{"LLL"} MMMEd{"E d. MMM"} MMMMd{"d. MMMM"} MMMd{"d. MMM"} @@ -1557,6 +3711,12 @@ nb{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M.–M."} } @@ -1585,9 +3745,11 @@ nb{ fallback{"{0}–{1}"} h{ a{"h a–h a"} + h{"h–h a"} } hv{ a{"h a–h a v"} + h{"h–h a v"} } y{ y{"y–y G"} @@ -1799,12 +3961,9 @@ nb{ intervalFormats{ Bh{ B{"h B–h B"} - h{"h–h B"} } Bhm{ B{"h:mm B–h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} } Gy{ G{"y G–y G"} @@ -1844,6 +4003,9 @@ nb{ d{"dd.MM.y–dd.MM.y GGGGG"} y{"dd.MM.y–dd.MM.y GGGGG"} } + H{ + H{"HH–HH"} + } Hm{ H{"HH:mm–HH:mm"} m{"HH:mm–HH:mm"} @@ -1852,6 +4014,9 @@ nb{ H{"HH:mm–HH:mm v"} m{"HH:mm–HH:mm v"} } + Hv{ + H{"HH–HH v"} + } M{ M{"M.–M."} } @@ -1880,6 +4045,7 @@ nb{ fallback{"{0}–{1}"} h{ a{"h a – h a"} + h{"h–h a"} } hm{ a{"h:mm a – h:mm a"} @@ -1893,6 +4059,7 @@ nb{ } hv{ a{"h a – h a v"} + h{"h–h a v"} } y{ y{"y–y G"} @@ -2185,12 +4352,9 @@ nb{ intervalFormats{ Bh{ B{"h B–h B"} - h{"h–h B"} } Bhm{ B{"h:mm B–h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} } Gy{ G{"y G–y G"} @@ -2474,6 +4638,7 @@ nb{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"MMM y G"} @@ -2481,6 +4646,7 @@ nb{ GyMMMd{"d. MMM y G"} M{"L."} MEd{"E d.M"} + MMM{"LLL"} MMMEd{"E d. MMM"} MMMMd{"d. MMMM"} MMMd{"d. MMM"} @@ -2512,6 +4678,12 @@ nb{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M.–M."} } @@ -2540,9 +4712,11 @@ nb{ fallback{"{0}–{1}"} h{ a{"h a–h a"} + h{"h–h a"} } hv{ a{"h a–h a v"} + h{"h–h a v"} } y{ y{"y–y G"} @@ -2700,6 +4874,7 @@ nb{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"MMM y G"} @@ -2707,6 +4882,7 @@ nb{ GyMMMd{"d. MMM y G"} M{"L."} MEd{"E d.M"} + MMM{"LLL"} MMMEd{"E d. MMM"} MMMMd{"d. MMMM"} MMMd{"d. MMM"} @@ -2738,6 +4914,12 @@ nb{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M.–M."} } @@ -2766,9 +4948,11 @@ nb{ fallback{"{0}–{1}"} h{ a{"h a–h a"} + h{"h–h a"} } hv{ a{"h a–h a v"} + h{"h–h a v"} } y{ y{"y–y G"} @@ -2914,6 +5098,7 @@ nb{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"MMM y G"} @@ -2921,6 +5106,7 @@ nb{ GyMMMd{"d. MMM y G"} M{"L."} MEd{"E d.M"} + MMM{"LLL"} MMMEd{"E d. MMM"} MMMMd{"d. MMMM"} MMMd{"d. MMM"} @@ -2952,6 +5138,12 @@ nb{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M.–M."} } @@ -2980,9 +5172,11 @@ nb{ fallback{"{0}–{1}"} h{ a{"h a–h a"} + h{"h–h a"} } hv{ a{"h a–h a v"} + h{"h–h a v"} } y{ y{"y–y G"} @@ -3109,53 +5303,294 @@ nb{ "dhuʻl-hijjah", } } - } - } - japanese{ - DateTimePatterns{ - "HH:mm:ss zzzz", - "HH:mm:ss z", - "HH:mm:ss", - "HH:mm", - "EEEE d. MMMM y G", - "d. MMMM y G", - "d. MMM y G", - "d.M y G", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", - } - availableFormats{ - Ed{"E d."} - Gy{"y G"} - GyMMM{"MMM y G"} - GyMMMEd{"E d. MMM y G"} - GyMMMd{"d. MMM y G"} - M{"L."} - MEd{"E d.M"} - MMMEd{"E d. MMM"} - MMMMd{"d. MMMM"} - MMMd{"d. MMM"} - MMdd{"d.M."} - Md{"d.M."} - d{"d."} - y{"y G"} - yyyy{"y G"} - yyyyM{"M.y G"} - yyyyMEd{"E d.M.y G"} - yyyyMM{"MM.y G"} - yyyyMMM{"MMM y G"} - yyyyMMMEd{"E d. MMM y G"} - yyyyMMMM{"MMMM y G"} - yyyyMMMd{"d. MMM y G"} - yyyyMd{"d.M.y G"} - yyyyQQQ{"QQQ y G"} - yyyyQQQQ{"QQQQ y G"} - } - eras{ - abbreviated{ + } + } + japanese{ + DateTimePatterns{ + "HH:mm:ss zzzz", + "HH:mm:ss z", + "HH:mm:ss", + "HH:mm", + "EEEE d. MMMM y G", + "d. MMMM y G", + "d. MMM y G", + "d.M y G", + "{1} {0}", + "{1} {0}", + "{1} {0}", + "{1} {0}", + "{1} {0}", + } + availableFormats{ + E{"ccc"} + Ed{"E d."} + Gy{"y G"} + GyMMM{"MMM y G"} + GyMMMEd{"E d. MMM y G"} + GyMMMd{"d. MMM y G"} + M{"L."} + MEd{"E d.M"} + MMM{"LLL"} + MMMEd{"E d. MMM"} + MMMMd{"d. MMMM"} + MMMd{"d. MMM"} + MMdd{"d.M."} + Md{"d.M."} + d{"d."} + y{"y G"} + yyyy{"y G"} + yyyyM{"M.y G"} + yyyyMEd{"E d.M.y G"} + yyyyMM{"MM.y G"} + yyyyMMM{"MMM y G"} + yyyyMMMEd{"E d. MMM y G"} + yyyyMMMM{"MMMM y G"} + yyyyMMMd{"d. MMM y G"} + yyyyMd{"d.M.y G"} + yyyyQQQ{"QQQ y G"} + yyyyQQQQ{"QQQQ y G"} + } + eras{ + abbreviated{ + "Taika (645–650)", + "Hakuchi (650–671)", + "Hakuhō (672–686)", + "Shuchō (686–701)", + "Taihō (701–704)", + "Keiun (704–708)", + "Wadō (708–715)", + "Reiki (715–717)", + "Yōrō (717–724)", + "Jinki (724–729)", + "Tenpyō (729–749)", + "Tenpyō-kampō (749-749)", + "Tenpyō-shōhō (749-757)", + "Tenpyō-hōji (757-765)", + "Tenpyō-jingo (765-767)", + "Jingo-keiun (767-770)", + "Hōki (770–780)", + "Ten-ō (781-782)", + "Enryaku (782–806)", + "Daidō (806–810)", + "Kōnin (810–824)", + "Tenchō (824–834)", + "Jōwa (834–848)", + "Kajō (848–851)", + "Ninju (851–854)", + "Saikō (854–857)", + "Ten-an (857-859)", + "Jōgan (859–877)", + "Gangyō (877–885)", + "Ninna (885–889)", + "Kanpyō (889–898)", + "Shōtai (898–901)", + "Engi (901–923)", + "Enchō (923–931)", + "Jōhei (931–938)", + "Tengyō (938–947)", + "Tenryaku (947–957)", + "Tentoku (957–961)", + "Ōwa (961–964)", + "Kōhō (964–968)", + "Anna (968–970)", + "Tenroku (970–973)", + "Ten’en (973–976)", + "Jōgen (976–978)", + "Tengen (978–983)", + "Eikan (983–985)", + "Kanna (985–987)", + "Eien (987–989)", + "Eiso (989–990)", + "Shōryaku (990–995)", + "Chōtoku (995–999)", + "Chōhō (999–1004)", + "Kankō (1004–1012)", + "Chōwa (1012–1017)", + "Kannin (1017–1021)", + "Jian (1021–1024)", + "Manju (1024–1028)", + "Chōgen (1028–1037)", + "Chōryaku (1037–1040)", + "Chōkyū (1040–1044)", + "Kantoku (1044–1046)", + "Eishō (1046–1053)", + "Tengi (1053–1058)", + "Kōhei (1058–1065)", + "Jiryaku (1065–1069)", + "Enkyū (1069–1074)", + "Shōho (1074–1077)", + "Shōryaku (1077–1081)", + "Eihō (1081–1084)", + "Ōtoku (1084–1087)", + "Kanji (1087–1094)", + "Kahō (1094–1096)", + "Eichō (1096–1097)", + "Jōtoku (1097–1099)", + "Kōwa (1099–1104)", + "Chōji (1104–1106)", + "Kashō (1106–1108)", + "Tennin (1108–1110)", + "Ten-ei (1110-1113)", + "Eikyū (1113–1118)", + "Gen’ei (1118–1120)", + "Hōan (1120–1124)", + "Tenji (1124–1126)", + "Daiji (1126–1131)", + "Tenshō (1131–1132)", + "Chōshō (1132–1135)", + "Hōen (1135–1141)", + "Eiji (1141–1142)", + "Kōji (1142–1144)", + "Ten’yō (1144–1145)", + "Kyūan (1145–1151)", + "Ninpei (1151–1154)", + "Kyūju (1154–1156)", + "Hōgen (1156–1159)", + "Heiji (1159–1160)", + "Eiryaku (1160–1161)", + "Ōho (1161–1163)", + "Chōkan (1163–1165)", + "Eiman (1165–1166)", + "Nin’an (1166–1169)", + "Kaō (1169–1171)", + "Shōan (1171–1175)", + "Angen (1175–1177)", + "Jishō (1177–1181)", + "Yōwa (1181–1182)", + "Juei (1182–1184)", + "Genryaku (1184–1185)", + "Bunji (1185–1190)", + "Kenkyū (1190–1199)", + "Shōji (1199–1201)", + "Kennin (1201–1204)", + "Genkyū (1204–1206)", + "Ken’ei (1206–1207)", + "Jōgen (1207–1211)", + "Kenryaku (1211–1213)", + "Kenpō (1213–1219)", + "Jōkyū (1219–1222)", + "Jōō (1222–1224)", + "Gennin (1224–1225)", + "Karoku (1225–1227)", + "Antei (1227–1229)", + "Kanki (1229–1232)", + "Jōei (1232–1233)", + "Tenpuku (1233–1234)", + "Bunryaku (1234–1235)", + "Katei (1235–1238)", + "Ryakunin (1238–1239)", + "En’ō (1239–1240)", + "Ninji (1240–1243)", + "Kangen (1243–1247)", + "Hōji (1247–1249)", + "Kenchō (1249–1256)", + "Kōgen (1256–1257)", + "Shōka (1257–1259)", + "Shōgen (1259–1260)", + "Bun’ō (1260–1261)", + "Kōchō (1261–1264)", + "Bun’ei (1264–1275)", + "Kenji (1275–1278)", + "Kōan (1278–1288)", + "Shōō (1288–1293)", + "Einin (1293–1299)", + "Shōan (1299–1302)", + "Kengen (1302–1303)", + "Kagen (1303–1306)", + "Tokuji (1306–1308)", + "Enkyō (1308–1311)", + "Ōchō (1311–1312)", + "Shōwa (1312–1317)", + "Bunpō (1317–1319)", + "Genō (1319–1321)", + "Genkō (1321–1324)", + "Shōchū (1324–1326)", + "Karyaku (1326–1329)", + "Gentoku (1329–1331)", + "Genkō (1331–1334)", + "Kenmu (1334–1336)", + "Engen (1336–1340)", + "Kōkoku (1340–1346)", + "Shōhei (1346–1370)", + "Kentoku (1370–1372)", + "Bunchū (1372–1375)", + "Tenju (1375–1379)", + "Kōryaku (1379–1381)", + "Kōwa (1381–1384)", + "Genchū (1384–1392)", + "Meitoku (1384–1387)", + "Kakei (1387–1389)", + "Kōō (1389–1390)", + "Meitoku (1390–1394)", + "Ōei (1394–1428)", + "Shōchō (1428–1429)", + "Eikyō (1429–1441)", + "Kakitsu (1441–1444)", + "Bun’an (1444–1449)", + "Hōtoku (1449–1452)", + "Kyōtoku (1452–1455)", + "Kōshō (1455–1457)", + "Chōroku (1457–1460)", + "Kanshō (1460–1466)", + "Bunshō (1466–1467)", + "Ōnin (1467–1469)", + "Bunmei (1469–1487)", + "Chōkyō (1487–1489)", + "Entoku (1489–1492)", + "Meiō (1492–1501)", + "Bunki (1501–1504)", + "Eishō (1504–1521)", + "Taiei (1521–1528)", + "Kyōroku (1528–1532)", + "Tenbun (1532–1555)", + "Kōji (1555–1558)", + "Eiroku (1558–1570)", + "Genki (1570–1573)", + "Tenshō (1573–1592)", + "Bunroku (1592–1596)", + "Keichō (1596–1615)", + "Genna (1615–1624)", + "Kan’ei (1624–1644)", + "Shōho (1644–1648)", + "Keian (1648–1652)", + "Jōō (1652–1655)", + "Meireki (1655–1658)", + "Manji (1658–1661)", + "Kanbun (1661–1673)", + "Enpō (1673–1681)", + "Tenna (1681–1684)", + "Jōkyō (1684–1688)", + "Genroku (1688–1704)", + "Hōei (1704–1711)", + "Shōtoku (1711–1716)", + "Kyōhō (1716–1736)", + "Genbun (1736–1741)", + "Kanpō (1741–1744)", + "Enkyō (1744–1748)", + "Kan’en (1748–1751)", + "Hōreki (1751–1764)", + "Meiwa (1764–1772)", + "An’ei (1772–1781)", + "Tenmei (1781–1789)", + "Kansei (1789–1801)", + "Kyōwa (1801–1804)", + "Bunka (1804–1818)", + "Bunsei (1818–1830)", + "Tenpō (1830–1844)", + "Kōka (1844–1848)", + "Kaei (1848–1854)", + "Ansei (1854–1860)", + "Man’en (1860–1861)", + "Bunkyū (1861–1864)", + "Genji (1864–1865)", + "Keiō (1865–1868)", + "Meiji", + "Taishō", + "Shōwa", + "Heisei", + "Reiwa", + } + narrow{ "Taika (645–650)", "Hakuchi (650–671)", "Hakuhō (672–686)", @@ -3167,13 +5602,13 @@ nb{ "Yōrō (717–724)", "Jinki (724–729)", "Tenpyō (729–749)", - "Tenpyō-kampō (749-749)", - "Tenpyō-shōhō (749-757)", - "Tenpyō-hōji (757-765)", - "Tenpyō-jingo (765-767)", - "Jingo-keiun (767-770)", + "Tenpyō-kampō (749–749)", + "Tenpyō-shōhō (749–757)", + "Tenpyō-hōji (757–765)", + "Tenpyō-jingo (765–767)", + "Jingo-keiun (767–770)", "Hōki (770–780)", - "Ten-ō (781-782)", + "Ten-ō (781–782)", "Enryaku (782–806)", "Daidō (806–810)", "Kōnin (810–824)", @@ -3182,7 +5617,7 @@ nb{ "Kajō (848–851)", "Ninju (851–854)", "Saikō (854–857)", - "Ten-an (857-859)", + "Ten-an (857–859)", "Jōgan (859–877)", "Gangyō (877–885)", "Ninna (885–889)", @@ -3234,7 +5669,7 @@ nb{ "Chōji (1104–1106)", "Kashō (1106–1108)", "Tennin (1108–1110)", - "Ten-ei (1110-1113)", + "Ten-ei (1110–1113)", "Eikyū (1113–1118)", "Gen’ei (1118–1120)", "Hōan (1120–1124)", @@ -3388,11 +5823,11 @@ nb{ "Bunkyū (1861–1864)", "Genji (1864–1865)", "Keiō (1865–1868)", - "Meiji", - "Taishō", - "Shōwa", - "Heisei", - "Reiwa", + "M", + "T", + "S", + "H", + "R", } wide{ "Taika (645–650)", @@ -3635,6 +6070,12 @@ nb{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M.–M."} } @@ -3663,9 +6104,11 @@ nb{ fallback{"{0}–{1}"} h{ a{"h a–h a"} + h{"h–h a"} } hv{ a{"h a–h a v"} + h{"h–h a v"} } y{ y{"y–y G"} @@ -3721,6 +6164,7 @@ nb{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"MMM y G"} @@ -3728,6 +6172,7 @@ nb{ GyMMMd{"d. MMM y G"} M{"L."} MEd{"E d.M"} + MMM{"LLL"} MMMEd{"E d. MMM"} MMMMd{"d. MMMM"} MMMd{"d. MMM"} @@ -3759,6 +6204,12 @@ nb{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M.–M."} } @@ -3787,9 +6238,11 @@ nb{ fallback{"{0}–{1}"} h{ a{"h a–h a"} + h{"h–h a"} } hv{ a{"h a–h a v"} + h{"h–h a v"} } y{ y{"y–y G"} @@ -3935,6 +6388,7 @@ nb{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d."} Gy{"y G"} GyMMM{"MMM y G"} @@ -3942,6 +6396,7 @@ nb{ GyMMMd{"d. MMM y G"} M{"L."} MEd{"E d.M"} + MMM{"LLL"} MMMEd{"E d. MMM"} MMMMd{"d. MMMM"} MMMd{"d. MMM"} @@ -3976,6 +6431,12 @@ nb{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M.–M."} } @@ -4004,9 +6465,11 @@ nb{ fallback{"{0}–{1}"} h{ a{"h a–h a"} + h{"h–h a"} } hv{ a{"h a–h a v"} + h{"h–h a v"} } y{ y{"y–y G"} @@ -4996,17 +7459,9 @@ nb{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} og {1}"} - end{"{0} og {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} og {1}"} end{"{0} og {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } unit{ 2{"{0} og {1}"} diff --git a/source/data/locales/nb_NO.txt b/source/data/locales/nb_NO.txt index ef6996d..25968d5 100644 --- a/source/data/locales/nb_NO.txt +++ b/source/data/locales/nb_NO.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nb_NO{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/nb_SJ.txt b/source/data/locales/nb_SJ.txt index 45e7b48..cb7d682 100644 --- a/source/data/locales/nb_SJ.txt +++ b/source/data/locales/nb_SJ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nb_SJ{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/nd.txt b/source/data/locales/nd.txt index b152ad0..2b9f1e4 100644 --- a/source/data/locales/nd.txt +++ b/source/data/locales/nd.txt @@ -12,7 +12,7 @@ nd{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/nd_ZW.txt b/source/data/locales/nd_ZW.txt index 4f14317..ac82b67 100644 --- a/source/data/locales/nd_ZW.txt +++ b/source/data/locales/nd_ZW.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nd_ZW{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/nds.txt b/source/data/locales/nds.txt index 210aa72..fb77bb6 100644 --- a/source/data/locales/nds.txt +++ b/source/data/locales/nds.txt @@ -2,10 +2,10 @@ // License & terms of use: http://www.unicode.org/copyright.html#License nds{ ExemplarCharacters{"[a å ä b c d e f g h i j k l m n o ö p q r s t u ü v w x y z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * / " - "\\& #]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * " + "/ \\& #]" } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/nds_DE.txt b/source/data/locales/nds_DE.txt index ac033f5..8a043fe 100644 --- a/source/data/locales/nds_DE.txt +++ b/source/data/locales/nds_DE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nds_DE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/nds_NL.txt b/source/data/locales/nds_NL.txt index e84270c..95af004 100644 --- a/source/data/locales/nds_NL.txt +++ b/source/data/locales/nds_NL.txt @@ -5,8 +5,8 @@ nds_NL{ ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ne.txt b/source/data/locales/ne.txt index 4944259..5a1a8ee 100644 --- a/source/data/locales/ne.txt +++ b/source/data/locales/ne.txt @@ -15,24 +15,34 @@ ne{ "ठ ड ढ ण त थ द ध न प फ ब भ म य र ल ळ व श ष स ह ऽ ा ि ी \u0941 \u0942 \u0943 " "\u0944 \u0945 \u0947 \u0948 ॉ ो ौ \u094D]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0० 1१ 2२ 3३ 4४ 5५ 6६ 7७ 8८ 9९]"} - ExemplarCharactersPunctuation{"[\\- — , ; ! ? । ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\}]"} + ExemplarCharactersIndex{ + "[अ आ इ ई उ ऊ ऋ ए ऐ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र" + " ल व श ष स ह]" + } + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0० 1१ 2२ 3३ 4४ 5५ 6६ 7७ 8८ 9९]"} + ExemplarCharactersPunctuation{"[\\- ‑ — , ; ! ? । ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\}]"} MoreInformation{"?"} NumberElements{ default{"deva"} deva{ patterns{ currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } latn{ @@ -45,6 +55,7 @@ ne{ patterns{ accountingFormat{"¤ #,##0.00"} currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -203,13 +214,18 @@ ne{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -222,9 +238,10 @@ ne{ other{"तपाईँसँग {0} निम्ता छन््"} } } + minimumGroupingDigits{"1"} native{"deva"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -286,53 +303,6 @@ ne{ yyyyQQQQ{"G y QQQQ"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } M{ M{"MM–MM"} } @@ -644,53 +614,6 @@ ne{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -1313,6 +1236,11 @@ ne{ } month-narrow{ dn{"महिना"} + relative{ + "-1"{"गत महिना"} + "0"{"यो महिना"} + "1"{"आगामी महिना"} + } relativeTime{ future{ one{"{0} महिनामा"} @@ -1326,6 +1254,11 @@ ne{ } month-short{ dn{"महिना"} + relative{ + "-1"{"गत महिना"} + "0"{"यो महिना"} + "1"{"आगामी महिना"} + } relativeTime{ future{ one{"{0} महिनामा"} @@ -1699,6 +1632,11 @@ ne{ } week-narrow{ dn{"हप्ता"} + relative{ + "-1"{"गत हप्ता"} + "0"{"यो हप्ता"} + "1"{"आगामी हप्ता"} + } relativePeriod{"{0} को हप्ता"} relativeTime{ future{ @@ -1713,6 +1651,11 @@ ne{ } week-short{ dn{"हप्ता"} + relative{ + "-1"{"गत हप्ता"} + "0"{"यो हप्ता"} + "1"{"आगामी हप्ता"} + } relativePeriod{"{0} को हप्ता"} relativeTime{ future{ @@ -1819,6 +1762,11 @@ ne{ middle{"{0}, {1}"} start{"{0},{1}"} } + standard-narrow{ + 2{"{0}, {1}"} + end{"{0}, {1}"} + middle{"{0}, {1}"} + } standard-short{ 2{"{0} र {1}"} end{"{0} र {1}"} diff --git a/source/data/locales/ne_IN.txt b/source/data/locales/ne_IN.txt index 7b8500f..2e6fc41 100644 --- a/source/data/locales/ne_IN.txt +++ b/source/data/locales/ne_IN.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ne_IN{ - Version{"2.1.47.71"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/ne_NP.txt b/source/data/locales/ne_NP.txt index 550278e..2123ffc 100644 --- a/source/data/locales/ne_NP.txt +++ b/source/data/locales/ne_NP.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ne_NP{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/nl.txt b/source/data/locales/nl.txt index 81d3dd3..2e0d389 100644 --- a/source/data/locales/nl.txt +++ b/source/data/locales/nl.txt @@ -7,295 +7,620 @@ nl{ " ü v w x y z]" } ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } NumberElements{ arab{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ + accountingFormat{"#,##0.00 ¤"} + currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} + scientificFormat{"#E0"} + } + symbols{ + decimal{"٫"} + exponential{"اس"} + group{"٬"} + infinity{"∞"} + list{"؛"} + minusSign{"؜-"} + nan{"NaN"} + perMille{"؉"} + percentSign{"٪؜"} + plusSign{"؜+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } arabext{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} + } + symbols{ + decimal{"٫"} + exponential{"×۱۰^"} + group{"٬"} + infinity{"∞"} + list{"؛"} + minusSign{"‎-‎"} + nan{"NaN"} + perMille{"؉"} + percentSign{"٪"} + plusSign{"‎+‎"} + superscriptingExponent{"×"} + timeSeparator{"٫"} } } bali{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } beng{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } brah{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } cakm{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } cham{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } + default{"latn"} deva{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } fullwide{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } gong{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } gonm{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } gujr{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } guru{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } hanidec{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } java{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } kali{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } khmr{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } knda{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } lana{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } lanatham{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } laoo{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } latn{ @@ -308,6 +633,7 @@ nl{ patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -470,39 +796,72 @@ nl{ exponential{"E"} group{"."} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } } lepc{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } limb{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -517,300 +876,616 @@ nl{ minimumGroupingDigits{"1"} mlym{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} - } - } + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} + } + } mong{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } mtei{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } mymr{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } mymrshan{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } + native{"latn"} nkoo{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } olck{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } orya{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } osma{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } rohg{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } saur{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } shrd{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } sora{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } sund{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } takr{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } talu{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } tamldec{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } telu{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } thai{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } tibt{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } vaii{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤ #,##0.00;(¤ #,##0.00)"} currencyFormat{"¤ #,##0.00;¤ -#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ decimal{","} + exponential{"E"} group{"."} + infinity{"∞"} + list{";"} + minusSign{"-"} + nan{"NaN"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -829,16 +1504,20 @@ nl{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E d MMM y G"} GyMMMd{"d MMM y G"} + M{"L"} MEd{"E d-M"} + MMM{"LLL"} MMMEd{"E d MMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d-M"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M-y GGGGG"} @@ -851,53 +1530,31 @@ nl{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} - } - GyM{ - G{"M-y GGGGG – M-y GGGGG"} - M{"M-y – M-y GGGGG"} - y{"M-y – M-y GGGGG"} + eras{ + abbreviated{ + "BE", } - GyMEd{ - G{"E d-M-y GGGGG – E d-M-y GGGGG"} - M{"E d-M-y – E d-M-y GGGGG"} - d{"E d-M-y – E d-M-y GGGGG"} - y{"E d-M-y – E d-M-y GGGGG"} + narrow{ + "BE", } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} + wide{ + "BE", } - GyMMMEd{ - G{"E d MMM y G – E d MMM y G"} - M{"E d MMM – E d MMM y G"} - d{"E d MMM – E d MMM y G"} - y{"E d MMM y – E d MMM y G"} + } + intervalFormats{ + H{ + H{"HH–HH"} } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d–d MMM y G"} - y{"d MMM y – d MMM y G"} + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} } - GyMd{ - G{"d-M-y GGGGG – d-M-y GGGGG"} - M{"d-M-y – d-M-y GGGGG"} - d{"d-M-y – d-M-y GGGGG"} - y{"d-M-y – d-M-y GGGGG"} + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} } M{ M{"M–M"} @@ -924,7 +1581,28 @@ nl{ M{"dd-MM – dd-MM"} d{"dd-MM – dd-MM"} } + d{ + d{"d–d"} + } fallback{"{0} - {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -979,16 +1657,36 @@ nl{ "{1} {0}", } availableFormats{ + Bh{"h B"} + Bhm{"h:mm B"} + Bhms{"h:mm:ss B"} + E{"ccc"} + EBhm{"E h:mm B"} + EBhms{"E h:mm:ss B"} Ed{"E d"} Gy{"U"} GyMMM{"MMM U"} GyMMMEd{"E d MMM U"} GyMMMd{"d MMM U"} + H{"HH"} + Hm{"HH:mm"} + Hms{"HH:mm:ss"} + M{"L"} MEd{"E d-M"} + MMM{"LLL"} MMMEd{"E d MMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d-M"} + UM{"U MM"} + UMMM{"U MMM"} + UMMMd{"U MMM d"} + UMd{"U MM-d"} + d{"d"} + h{"h a"} + hm{"h:mm a"} + hms{"h:mm:ss a"} + ms{"mm:ss"} y{"U"} yMd{"y-MM-dd"} yyyy{"U"} @@ -1003,6 +1701,432 @@ nl{ yyyyQQQQ{"QQQQ U"} } cyclicNameSets{ + dayParts{ + format{ + abbreviated{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + narrow{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + wide{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + } + } + days{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } + months{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } solarTerms{ format{ abbreviated{ @@ -1085,6 +2209,196 @@ nl{ } } } + years{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } zodiacs{ format{ abbreviated{ @@ -1133,14 +2447,98 @@ nl{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } + M{ + M{"MM–MM"} + } + MEd{ + M{"MM-dd, E – MM-dd, E"} + d{"MM-dd, E – MM-dd, E"} + } + MMM{ + M{"LLL–LLL"} + } + MMMEd{ + M{"MMM d, E – MMM d, E"} + d{"MMM d, E – MMM d, E"} + } + MMMd{ + M{"MMM d – MMM d"} + d{"MMM d–d"} + } + Md{ + M{"MM-dd – MM-dd"} + d{"MM-dd – MM-dd"} + } + d{ + d{"d–d"} + } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } + y{ + y{"U–U"} + } + yM{ + M{"y-MM – y-MM"} + y{"y-MM – y-MM"} + } + yMEd{ + M{"y-MM-dd, E – y-MM-dd, E"} + d{"y-MM-dd, E – y-MM-dd, E"} + y{"y-MM-dd, E – y-MM-dd, E"} + } + yMMM{ + M{"U MMM–MMM"} + y{"U MMM – U MMM"} + } + yMMMEd{ + M{"U MMM d, E – MMM d, E"} + d{"U MMM d, E – MMM d, E"} + y{"U MMM d, E – U MMM d, E"} + } + yMMMM{ + M{"U MMMM–MMMM"} + y{"U MMMM – U MMMM"} + } + yMMMd{ + M{"U MMM d – MMM d"} + d{"U MMM d–d"} + y{"U MMM d – U MMM d"} } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} + yMd{ + M{"y-MM-dd – y-MM-dd"} + d{"y-MM-dd – y-MM-dd"} + y{"y-MM-dd – y-MM-dd"} } } monthNames{ @@ -1159,6 +2557,20 @@ nl{ "mnd 11", "mnd 12", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "maand 1", "maand 2", @@ -1189,6 +2601,20 @@ nl{ "mnd 11", "mnd 12", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "maand 1", "maand 2", @@ -1205,6 +2631,35 @@ nl{ } } } + monthPatterns{ + format{ + abbreviated{ + leap{"{0}bis"} + } + narrow{ + leap{"{0}b"} + } + wide{ + leap{"{0}bis"} + } + } + numeric{ + all{ + leap{"{0}bis"} + } + } + stand-alone{ + abbreviated{ + leap{"{0}bis"} + } + narrow{ + leap{"{0}b"} + } + wide{ + leap{"{0}bis"} + } + } + } } coptic{ DateTimePatterns{ @@ -1223,16 +2678,20 @@ nl{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E d MMM y G"} GyMMMd{"d MMM y G"} + M{"L"} MEd{"E d-M"} + MMM{"LLL"} MMMEd{"E d MMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d-M"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M-y GGGGG"} @@ -1245,53 +2704,34 @@ nl{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} + eras{ + abbreviated{ + "ERA0", + "ERA1", } - GyM{ - G{"M-y GGGGG – M-y GGGGG"} - M{"M-y – M-y GGGGG"} - y{"M-y – M-y GGGGG"} + narrow{ + "ERA0", + "ERA1", } - GyMEd{ - G{"E d-M-y GGGGG – E d-M-y GGGGG"} - M{"E d-M-y – E d-M-y GGGGG"} - d{"E d-M-y – E d-M-y GGGGG"} - y{"E d-M-y – E d-M-y GGGGG"} + wide{ + "ERA0", + "ERA1", } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} + } + intervalFormats{ + H{ + H{"HH–HH"} } - GyMMMEd{ - G{"E d MMM y G – E d MMM y G"} - M{"E d MMM – E d MMM y G"} - d{"E d MMM – E d MMM y G"} - y{"E d MMM y – E d MMM y G"} + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d–d MMM y G"} - y{"d MMM y – d MMM y G"} + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} } - GyMd{ - G{"d-M-y GGGGG – d-M-y GGGGG"} - M{"d-M-y – d-M-y GGGGG"} - d{"d-M-y – d-M-y GGGGG"} - y{"d-M-y – d-M-y GGGGG"} + Hv{ + H{"HH–HH v"} } M{ M{"M–M"} @@ -1318,7 +2758,28 @@ nl{ M{"dd-MM – dd-MM"} d{"dd-MM – dd-MM"} } + d{ + d{"d–d"} + } fallback{"{0} - {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -1372,6 +2833,21 @@ nl{ "Misra", "Nasi", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "Tut", "Babah", @@ -1404,6 +2880,21 @@ nl{ "Misra", "Nasi", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "Tut", "Babah", @@ -1439,12 +2930,15 @@ nl{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d"} Gy{"r (U)"} GyMMM{"MMM r (U)"} GyMMMEd{"E d MMM r (U)"} GyMMMd{"d MMM r"} + M{"L"} MEd{"E d-M"} + MMM{"LLL"} MMMEd{"E d MMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} @@ -1453,6 +2947,7 @@ nl{ UMMM{"MMM U"} UMMMd{"d MMM U"} UMd{"d-MM U"} + d{"d"} y{"r (U)"} yMd{"d-M-r"} yyyy{"r (U)"} @@ -1467,6 +2962,432 @@ nl{ yyyyQQQQ{"QQQQ r (U)"} } cyclicNameSets{ + dayParts{ + format{ + abbreviated{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + narrow{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + wide{ + "zi", + "chou", + "yin", + "mao", + "chen", + "si", + "wu", + "wei", + "shen", + "you", + "xu", + "hai", + } + } + } + days{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } + months{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } solarTerms{ format{ abbreviated{ @@ -1549,6 +3470,196 @@ nl{ } } } + years{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + narrow{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + wide{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } zodiacs{ format{ abbreviated{ @@ -1597,14 +3708,98 @@ nl{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } + M{ + M{"MM–MM"} + } + MEd{ + M{"MM-dd, E – MM-dd, E"} + d{"MM-dd, E – MM-dd, E"} } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} + MMM{ + M{"LLL–LLL"} + } + MMMEd{ + M{"MMM d, E – MMM d, E"} + d{"MMM d, E – MMM d, E"} + } + MMMd{ + M{"MMM d – MMM d"} + d{"MMM d–d"} + } + Md{ + M{"MM-dd – MM-dd"} + d{"MM-dd – MM-dd"} + } + d{ + d{"d–d"} + } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } + y{ + y{"U–U"} + } + yM{ + M{"y-MM – y-MM"} + y{"y-MM – y-MM"} + } + yMEd{ + M{"y-MM-dd, E – y-MM-dd, E"} + d{"y-MM-dd, E – y-MM-dd, E"} + y{"y-MM-dd, E – y-MM-dd, E"} + } + yMMM{ + M{"U MMM–MMM"} + y{"U MMM – U MMM"} + } + yMMMEd{ + M{"U MMM d, E – MMM d, E"} + d{"U MMM d, E – MMM d, E"} + y{"U MMM d, E – U MMM d, E"} + } + yMMMM{ + M{"U MMMM–MMMM"} + y{"U MMMM – U MMMM"} + } + yMMMd{ + M{"U MMM d – MMM d"} + d{"U MMM d–d"} + y{"U MMM d – U MMM d"} + } + yMd{ + M{"y-MM-dd – y-MM-dd"} + d{"y-MM-dd – y-MM-dd"} + y{"y-MM-dd – y-MM-dd"} } } monthNames{ @@ -1623,6 +3818,20 @@ nl{ "mnd 11", "mnd 12", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "maand 1", "maand 2", @@ -1653,6 +3862,20 @@ nl{ "mnd 11", "mnd 12", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "maand 1", "maand 2", @@ -1669,6 +3892,35 @@ nl{ } } } + monthPatterns{ + format{ + abbreviated{ + leap{"{0}bis"} + } + narrow{ + leap{"{0}b"} + } + wide{ + leap{"{0}bis"} + } + } + numeric{ + all{ + leap{"{0}bis"} + } + } + stand-alone{ + abbreviated{ + leap{"{0}bis"} + } + narrow{ + leap{"{0}b"} + } + wide{ + leap{"{0}bis"} + } + } + } } ethiopic{ DateTimePatterns{ @@ -1687,16 +3939,20 @@ nl{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E d MMM y G"} GyMMMd{"d MMM y G"} + M{"L"} MEd{"E d-M"} + MMM{"LLL"} MMMEd{"E d MMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d-M"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M-y GGGGG"} @@ -1724,52 +3980,19 @@ nl{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} - } - GyM{ - G{"M-y GGGGG – M-y GGGGG"} - M{"M-y – M-y GGGGG"} - y{"M-y – M-y GGGGG"} - } - GyMEd{ - G{"E d-M-y GGGGG – E d-M-y GGGGG"} - M{"E d-M-y – E d-M-y GGGGG"} - d{"E d-M-y – E d-M-y GGGGG"} - y{"E d-M-y – E d-M-y GGGGG"} - } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} + H{ + H{"HH–HH"} } - GyMMMEd{ - G{"E d MMM y G – E d MMM y G"} - M{"E d MMM – E d MMM y G"} - d{"E d MMM – E d MMM y G"} - y{"E d MMM y – E d MMM y G"} + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d–d MMM y G"} - y{"d MMM y – d MMM y G"} + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} } - GyMd{ - G{"d-M-y GGGGG – d-M-y GGGGG"} - M{"d-M-y – d-M-y GGGGG"} - d{"d-M-y – d-M-y GGGGG"} - y{"d-M-y – d-M-y GGGGG"} + Hv{ + H{"HH–HH v"} } M{ M{"M–M"} @@ -1796,7 +4019,28 @@ nl{ M{"dd-MM – dd-MM"} d{"dd-MM – dd-MM"} } + d{ + d{"d–d"} + } fallback{"{0} - {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -1850,6 +4094,21 @@ nl{ "Nähase", "Pagumän", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "Mäskäräm", "Teqemt", @@ -1882,6 +4141,21 @@ nl{ "Nähase", "Pagumän", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "Mäskäräm", "Teqemt", @@ -1973,15 +4247,6 @@ nl{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y – y G"} @@ -2020,6 +4285,20 @@ nl{ d{"d-M-y – d-M-y GGGGG"} y{"d-M-y – d-M-y GGGGG"} } + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -2049,6 +4328,24 @@ nl{ d{"d–d"} } fallback{"{0} - {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -2330,15 +4627,6 @@ nl{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y – y G"} @@ -2624,16 +4912,20 @@ nl{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E d MMM y G"} GyMMMd{"d MMM y G"} + M{"L"} MEd{"E d MMM"} + MMM{"LLL"} MMMEd{"E d MMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d MMM"} + d{"d"} y{"y"} yyyy{"y G"} yyyyM{"M-y GGGGG"} @@ -2646,53 +4938,31 @@ nl{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} + eras{ + abbreviated{ + "AM", } - GyM{ - G{"M-y GGGGG – M-y GGGGG"} - M{"M-y – M-y GGGGG"} - y{"M-y – M-y GGGGG"} + narrow{ + "AM", } - GyMEd{ - G{"E d-M-y GGGGG – E d-M-y GGGGG"} - M{"E d-M-y – E d-M-y GGGGG"} - d{"E d-M-y – E d-M-y GGGGG"} - y{"E d-M-y – E d-M-y GGGGG"} + wide{ + "AM", } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} + } + intervalFormats{ + H{ + H{"HH–HH"} } - GyMMMEd{ - G{"E d MMM y G – E d MMM y G"} - M{"E d MMM – E d MMM y G"} - d{"E d MMM – E d MMM y G"} - y{"E d MMM y – E d MMM y G"} + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d–d MMM y G"} - y{"d MMM y – d MMM y G"} + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} } - GyMd{ - G{"d-M-y GGGGG – d-M-y GGGGG"} - M{"d-M-y – d-M-y GGGGG"} - d{"d-M-y – d-M-y GGGGG"} - y{"d-M-y – d-M-y GGGGG"} + Hv{ + H{"HH–HH v"} } M{ M{"M–M"} @@ -2719,7 +4989,28 @@ nl{ M{"dd-MM – dd-MM"} d{"dd-MM – dd-MM"} } + d{ + d{"d–d"} + } fallback{"{0} - {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -2774,6 +5065,22 @@ nl{ "Elloel", "Adar B", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "Tisjrie", "Chesjwan", @@ -2808,6 +5115,22 @@ nl{ "Elloel", "Adar B", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "Tisjrie", "Chesjwan", @@ -2844,16 +5167,20 @@ nl{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E d MMM y G"} GyMMMd{"d MMM y G"} + M{"L"} MEd{"E d-M"} + MMM{"LLL"} MMMEd{"E d MMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d-M"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M-y GGGGG"} @@ -2866,53 +5193,31 @@ nl{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} + eras{ + abbreviated{ + "Saka", } - GyM{ - G{"M-y GGGGG – M-y GGGGG"} - M{"M-y – M-y GGGGG"} - y{"M-y – M-y GGGGG"} + narrow{ + "Saka", } - GyMEd{ - G{"E d-M-y GGGGG – E d-M-y GGGGG"} - M{"E d-M-y – E d-M-y GGGGG"} - d{"E d-M-y – E d-M-y GGGGG"} - y{"E d-M-y – E d-M-y GGGGG"} + wide{ + "Saka", } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} + } + intervalFormats{ + H{ + H{"HH–HH"} } - GyMMMEd{ - G{"E d MMM y G – E d MMM y G"} - M{"E d MMM – E d MMM y G"} - d{"E d MMM – E d MMM y G"} - y{"E d MMM y – E d MMM y G"} + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d–d MMM y G"} - y{"d MMM y – d MMM y G"} + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} } - GyMd{ - G{"d-M-y GGGGG – d-M-y GGGGG"} - M{"d-M-y – d-M-y GGGGG"} - d{"d-M-y – d-M-y GGGGG"} - y{"d-M-y – d-M-y GGGGG"} + Hv{ + H{"HH–HH v"} } M{ M{"M–M"} @@ -2939,7 +5244,28 @@ nl{ M{"dd-MM – dd-MM"} d{"dd-MM – dd-MM"} } + d{ + d{"d–d"} + } fallback{"{0} - {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -2992,6 +5318,20 @@ nl{ "Maagha", "Phaalguna", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "Chaitra", "Vaishakha", @@ -3022,6 +5362,20 @@ nl{ "Maagha", "Phaalguna", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "Chaitra", "Vaishakha", @@ -3056,16 +5410,20 @@ nl{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E d MMM y G"} GyMMMd{"d MMM y G"} + M{"L"} MEd{"E d-M"} + MMM{"LLL"} MMMEd{"E d MMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d-M"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M-y GGGGG"} @@ -3079,57 +5437,30 @@ nl{ yyyyQQQQ{"QQQQ y G"} } eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } wide{ "Saʻna Hizjria", } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} - } - GyM{ - G{"M-y GGGGG – M-y GGGGG"} - M{"M-y – M-y GGGGG"} - y{"M-y – M-y GGGGG"} - } - GyMEd{ - G{"E d-M-y GGGGG – E d-M-y GGGGG"} - M{"E d-M-y – E d-M-y GGGGG"} - d{"E d-M-y – E d-M-y GGGGG"} - y{"E d-M-y – E d-M-y GGGGG"} - } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} + H{ + H{"HH–HH"} } - GyMMMEd{ - G{"E d MMM y G – E d MMM y G"} - M{"E d MMM – E d MMM y G"} - d{"E d MMM – E d MMM y G"} - y{"E d MMM y – E d MMM y G"} + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d–d MMM y G"} - y{"d MMM y – d MMM y G"} + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} } - GyMd{ - G{"d-M-y GGGGG – d-M-y GGGGG"} - M{"d-M-y – d-M-y GGGGG"} - d{"d-M-y – d-M-y GGGGG"} - y{"d-M-y – d-M-y GGGGG"} + Hv{ + H{"HH–HH v"} } M{ M{"M–M"} @@ -3156,7 +5487,28 @@ nl{ M{"dd-MM – dd-MM"} d{"dd-MM – dd-MM"} } + d{ + d{"d–d"} + } fallback{"{0} - {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -3209,6 +5561,20 @@ nl{ "Doe al k.", "Doe al h.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "Moeharram", "Safar", @@ -3239,6 +5605,20 @@ nl{ "Doe al k.", "Doe al h.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "Moeharram", "Safar", @@ -3273,16 +5653,20 @@ nl{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E d MMM y G"} GyMMMd{"d MMM y G"} + M{"L"} MEd{"E d-M"} + MMM{"LLL"} MMMEd{"E d MMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d-M"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M-y GGGGG"} @@ -4015,52 +6399,19 @@ nl{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} - } - GyM{ - G{"M-y GGGGG – M-y GGGGG"} - M{"M-y – M-y GGGGG"} - y{"M-y – M-y GGGGG"} - } - GyMEd{ - G{"E d-M-y GGGGG – E d-M-y GGGGG"} - M{"E d-M-y – E d-M-y GGGGG"} - d{"E d-M-y – E d-M-y GGGGG"} - y{"E d-M-y – E d-M-y GGGGG"} - } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} + H{ + H{"HH–HH"} } - GyMMMEd{ - G{"E d MMM y G – E d MMM y G"} - M{"E d MMM – E d MMM y G"} - d{"E d MMM – E d MMM y G"} - y{"E d MMM y – E d MMM y G"} + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d–d MMM y G"} - y{"d MMM y – d MMM y G"} + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} } - GyMd{ - G{"d-M-y GGGGG – d-M-y GGGGG"} - M{"d-M-y – d-M-y GGGGG"} - d{"d-M-y – d-M-y GGGGG"} - y{"d-M-y – d-M-y GGGGG"} + Hv{ + H{"HH–HH v"} } M{ M{"M–M"} @@ -4087,7 +6438,28 @@ nl{ M{"dd-MM – dd-MM"} d{"dd-MM – dd-MM"} } + d{ + d{"d–d"} + } fallback{"{0} - {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -4142,16 +6514,20 @@ nl{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E d MMM y G"} GyMMMd{"d MMM y G"} + M{"L"} MEd{"E d-M"} + MMM{"LLL"} MMMEd{"E d MMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d-M"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M-y GGGGG"} @@ -4164,53 +6540,31 @@ nl{ yyyyQQQ{"QQQ y G"} yyyyQQQQ{"QQQQ y G"} } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} + eras{ + abbreviated{ + "AP", } - GyM{ - G{"M-y GGGGG – M-y GGGGG"} - M{"M-y – M-y GGGGG"} - y{"M-y – M-y GGGGG"} + narrow{ + "AP", } - GyMEd{ - G{"E d-M-y GGGGG – E d-M-y GGGGG"} - M{"E d-M-y – E d-M-y GGGGG"} - d{"E d-M-y – E d-M-y GGGGG"} - y{"E d-M-y – E d-M-y GGGGG"} + wide{ + "AP", } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} + } + intervalFormats{ + H{ + H{"HH–HH"} } - GyMMMEd{ - G{"E d MMM y G – E d MMM y G"} - M{"E d MMM – E d MMM y G"} - d{"E d MMM – E d MMM y G"} - y{"E d MMM y – E d MMM y G"} + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d–d MMM y G"} - y{"d MMM y – d MMM y G"} + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} } - GyMd{ - G{"d-M-y GGGGG – d-M-y GGGGG"} - M{"d-M-y – d-M-y GGGGG"} - d{"d-M-y – d-M-y GGGGG"} - y{"d-M-y – d-M-y GGGGG"} + Hv{ + H{"HH–HH v"} } M{ M{"M–M"} @@ -4237,7 +6591,28 @@ nl{ M{"dd-MM – dd-MM"} d{"dd-MM – dd-MM"} } + d{ + d{"d–d"} + } fallback{"{0} - {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -4274,6 +6649,96 @@ nl{ y{"dd-MM-y – dd-MM-y G"} } } + monthNames{ + format{ + abbreviated{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + } + stand-alone{ + abbreviated{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Farvardin", + "Ordibehesht", + "Khordad", + "Tir", + "Mordad", + "Shahrivar", + "Mehr", + "Aban", + "Azar", + "Dey", + "Bahman", + "Esfand", + } + } + } } roc{ DateTimePatterns{ @@ -4292,16 +6757,20 @@ nl{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"E d"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E d MMM y G"} GyMMMd{"d MMM y G"} + M{"L"} MEd{"E d-M"} + MMM{"LLL"} MMMEd{"E d MMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d-M"} + d{"d"} y{"y G"} yyyy{"y G"} yyyyM{"M-y GGGGG"} @@ -4329,52 +6798,19 @@ nl{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} - } - GyM{ - G{"M-y GGGGG – M-y GGGGG"} - M{"M-y – M-y GGGGG"} - y{"M-y – M-y GGGGG"} - } - GyMEd{ - G{"E d-M-y GGGGG – E d-M-y GGGGG"} - M{"E d-M-y – E d-M-y GGGGG"} - d{"E d-M-y – E d-M-y GGGGG"} - y{"E d-M-y – E d-M-y GGGGG"} - } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} + H{ + H{"HH–HH"} } - GyMMMEd{ - G{"E d MMM y G – E d MMM y G"} - M{"E d MMM – E d MMM y G"} - d{"E d MMM – E d MMM y G"} - y{"E d MMM y – E d MMM y G"} + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d–d MMM y G"} - y{"d MMM y – d MMM y G"} + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} } - GyMd{ - G{"d-M-y GGGGG – d-M-y GGGGG"} - M{"d-M-y – d-M-y GGGGG"} - d{"d-M-y – d-M-y GGGGG"} - y{"d-M-y – d-M-y GGGGG"} + Hv{ + H{"HH–HH v"} } M{ M{"M–M"} @@ -4401,7 +6837,28 @@ nl{ M{"dd-MM – dd-MM"} d{"dd-MM – dd-MM"} } + d{ + d{"d–d"} + } fallback{"{0} - {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -4716,7 +7173,7 @@ nl{ } } hour-narrow{ - dn{"uur"} + dn{"u"} relative{ "0"{"binnen een uur"} } @@ -5418,12 +7875,6 @@ nl{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} en {1}"} - end{"{0} en {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} en {1}"} end{"{0} en {1}"} diff --git a/source/data/locales/nl_AW.txt b/source/data/locales/nl_AW.txt index 8e31dce..8c7d5a7 100644 --- a/source/data/locales/nl_AW.txt +++ b/source/data/locales/nl_AW.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nl_AW{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/nl_BE.txt b/source/data/locales/nl_BE.txt index 9c77062..1e07fcf 100644 --- a/source/data/locales/nl_BE.txt +++ b/source/data/locales/nl_BE.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nl_BE{ - Version{"2.1.47.71"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/nl_BQ.txt b/source/data/locales/nl_BQ.txt index 18631ff..fdedb07 100644 --- a/source/data/locales/nl_BQ.txt +++ b/source/data/locales/nl_BQ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nl_BQ{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/nl_CW.txt b/source/data/locales/nl_CW.txt index 1d2cdaf..2b6526b 100644 --- a/source/data/locales/nl_CW.txt +++ b/source/data/locales/nl_CW.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nl_CW{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/nl_NL.txt b/source/data/locales/nl_NL.txt index 65e36ea..158f3b0 100644 --- a/source/data/locales/nl_NL.txt +++ b/source/data/locales/nl_NL.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nl_NL{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/nl_SR.txt b/source/data/locales/nl_SR.txt index c2ce6d7..17e7e83 100644 --- a/source/data/locales/nl_SR.txt +++ b/source/data/locales/nl_SR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nl_SR{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/nl_SX.txt b/source/data/locales/nl_SX.txt index dbddb1e..bf286f3 100644 --- a/source/data/locales/nl_SX.txt +++ b/source/data/locales/nl_SX.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nl_SX{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/nmg.txt b/source/data/locales/nmg.txt index 9adba08..149fad1 100644 --- a/source/data/locales/nmg.txt +++ b/source/data/locales/nmg.txt @@ -8,7 +8,7 @@ nmg{ " ǒ ö ō ɔ {ɔ\u0301} {ɔ\u0302} {ɔ\u030C} {ɔ\u0304} p r ŕ s t u ú û ǔ ū v w y]" } ExemplarCharactersIndex{"[A B Ɓ C D E Ǝ Ɛ F G H I J K L M N Ŋ O Ɔ P R S T U V W Y]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -22,7 +22,7 @@ nmg{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/nmg_CM.txt b/source/data/locales/nmg_CM.txt index 25295c7..dece25d 100644 --- a/source/data/locales/nmg_CM.txt +++ b/source/data/locales/nmg_CM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nmg_CM{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/nn.txt b/source/data/locales/nn.txt index b6fd9f0..6fe95c7 100644 --- a/source/data/locales/nn.txt +++ b/source/data/locales/nn.txt @@ -98,7 +98,7 @@ nn{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/nn_NO.txt b/source/data/locales/nn_NO.txt index ec5d1ff..9ec5e2d 100644 --- a/source/data/locales/nn_NO.txt +++ b/source/data/locales/nn_NO.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nn_NO{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/nnh.txt b/source/data/locales/nnh.txt index a2e041f..0c21426 100644 --- a/source/data/locales/nnh.txt +++ b/source/data/locales/nnh.txt @@ -12,7 +12,7 @@ nnh{ "[A B C D E Ɛ F G H I J K L M N Ŋ O Ɔ P {Pf} R S {Sh} T {Ts} U Ʉ V W Ẅ Y Ÿ Z " "ʼ]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{"[, ; \\: ! ? . ' ‘ ’ « »]"} NumberElements{ latn{ @@ -28,7 +28,7 @@ nnh{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/nnh_CM.txt b/source/data/locales/nnh_CM.txt index a7220ce..4b59db7 100644 --- a/source/data/locales/nnh_CM.txt +++ b/source/data/locales/nnh_CM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nnh_CM{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/nus.txt b/source/data/locales/nus.txt index 1e5a62e..b93c00d 100644 --- a/source/data/locales/nus.txt +++ b/source/data/locales/nus.txt @@ -7,7 +7,7 @@ nus{ " u v w x y z]" } ExemplarCharactersIndex{"[A B C D E Ɛ F G Ɣ H I J K L M N Ŋ O Ɔ P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -22,7 +22,7 @@ nus{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/nus_SS.txt b/source/data/locales/nus_SS.txt index cdd785c..bc25fde 100644 --- a/source/data/locales/nus_SS.txt +++ b/source/data/locales/nus_SS.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nus_SS{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/nyn.txt b/source/data/locales/nyn.txt index 6d7a326..73779d6 100644 --- a/source/data/locales/nyn.txt +++ b/source/data/locales/nyn.txt @@ -10,7 +10,7 @@ nyn{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/nyn_UG.txt b/source/data/locales/nyn_UG.txt index 01ddf80..08c0142 100644 --- a/source/data/locales/nyn_UG.txt +++ b/source/data/locales/nyn_UG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nyn_UG{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/om.txt b/source/data/locales/om.txt index 885114d..77415de 100644 --- a/source/data/locales/om.txt +++ b/source/data/locales/om.txt @@ -3,7 +3,7 @@ om{ ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ default{"latn"} latn{ @@ -35,7 +35,7 @@ om{ native{"latn"} traditional{"ethi"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/om_ET.txt b/source/data/locales/om_ET.txt index 5e149c8..02a94d3 100644 --- a/source/data/locales/om_ET.txt +++ b/source/data/locales/om_ET.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License om_ET{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/om_KE.txt b/source/data/locales/om_KE.txt index b1f6077..b57337b 100644 --- a/source/data/locales/om_KE.txt +++ b/source/data/locales/om_KE.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License om_KE{ - Version{"2.1.47.82"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/or.txt b/source/data/locales/or.txt index 6b66af1..b5ddcff 100644 --- a/source/data/locales/or.txt +++ b/source/data/locales/or.txt @@ -19,10 +19,10 @@ or{ "[ଅ ଆ ଇ ଈ ଉ ଊ ଋ ଏ ଐ ଓ ଔ କ ଖ ଗ ଘ ଙ ଚ ଛ ଜ ଝ ଞ ଟ ଠ ଡ ଢ ଣ ତ ଥ ଦ ଧ ନ ପ ଫ ବ ଭ ମ ଯ ର" " ଲ ଳ ଶ ଷ ସ ହ {କ\u0B4Dଷ}]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0୦ 1୧ 2୨ 3୩ 4୪ 5୫ 6୬ 7୭ 8୮ 9୯]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0୦ 1୧ 2୨ 3୩ 4୪ 5୫ 6୬ 7୭ 8୮ 9୯]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ @@ -196,11 +196,15 @@ or{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} } } @@ -213,6 +217,7 @@ or{ other{"{0} ଦିନଗୁଡ଼ିକ"} } } + minimumGroupingDigits{"1"} native{"orya"} orya{ patterns{ @@ -222,16 +227,20 @@ or{ scientificFormat{"#E0"} } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} } } } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -299,50 +308,6 @@ or{ intervalFormats{ Bh{ B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} } M{ M{"M – M"} @@ -607,53 +572,6 @@ or{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -1760,17 +1678,8 @@ or{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} ଓ {1}"} - end{"{0}, ଓ {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ - 2{"{0} ଓ {1}"} end{"{0}, ଓ {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } unit{ 2{"{0}, {1}"} diff --git a/source/data/locales/or_IN.txt b/source/data/locales/or_IN.txt index faa836c..7fda3ea 100644 --- a/source/data/locales/or_IN.txt +++ b/source/data/locales/or_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License or_IN{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/os.txt b/source/data/locales/os.txt index 5ff640b..68584e8 100644 --- a/source/data/locales/os.txt +++ b/source/data/locales/os.txt @@ -15,10 +15,10 @@ os{ "[А Ӕ Б В Г {Гъ} Д {Дж} {Дз} Е Ё Ж З И Й К {Къ} Л М Н О П {Пъ} Р С Т {Тъ} У Ф" " Х {Хъ} Ц {Цъ} Ч {Чъ} Ш Щ Ы Э Ю Я]" } - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * / " - "\\& #]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * " + "/ \\& #]" } MoreInformation{"?"} NumberElements{ @@ -44,7 +44,7 @@ os{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/os_GE.txt b/source/data/locales/os_GE.txt index 0489a57..7e92eb8 100644 --- a/source/data/locales/os_GE.txt +++ b/source/data/locales/os_GE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License os_GE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/os_RU.txt b/source/data/locales/os_RU.txt index 2b6cb43..cd36730 100644 --- a/source/data/locales/os_RU.txt +++ b/source/data/locales/os_RU.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License os_RU{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/pa.txt b/source/data/locales/pa.txt index 4eb6a17..a5c84fc 100644 --- a/source/data/locales/pa.txt +++ b/source/data/locales/pa.txt @@ -2,14 +2,24 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pa{ AuxExemplarCharacters{"[\u200C\u200D ਃ \u0A02 \u0A01 {ਲ\u0A3C}]"} + Ellipsis{ + final{"{0}…"} + initial{"…{0}"} + medial{"{0}…{1}"} + word-final{"{0} …"} + word-initial{"… {0}"} + word-medial{"{0} … {1}"} + } ExemplarCharacters{ "[\u0A71 \u0A70 \u0A3C ੦ ੧ ੨ ੩ ੪ ੫ ੬ ੭ ੮ ੯ ੴ ੳ ਉ ਊ ਓ ਅ ਆ ਐ ਔ ੲ ਇ ਈ ਏ ਸ {ਸ" "\u0A3C} ਹ ਕ ਖ {ਖ\u0A3C} ਗ {ਗ\u0A3C} ਘ ਙ ਚ ਛ ਜ {ਜ\u0A3C} ਝ ਞ ਟ ਠ ਡ ਢ ਣ ਤ ਥ ਦ " "ਧ ਨ ਪ ਫ {ਫ\u0A3C} ਬ ਭ ਮ ਯ ਰ ਲ ਵ ੜ \u0A4D ਾ ਿ ੀ \u0A41 \u0A42 \u0A47 \u0A48 " "\u0A4B \u0A4C]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0੦ 1੧ 2੨ 3੩ 4੪ 5੫ 6੬ 7੭ 8੮ 9੯]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . ' ‘ ’ \u0022 “ ” ( ) \\[ \\] / \\& ′ ″]"} + ExemplarCharactersIndex{"[ੳ ਅ ੲ ਸ ਹ ਕ ਖ ਗ ਘ ਙ ਚ ਛ ਜ ਝ ਞ ਟ ਠ ਡ ਢ ਣ ਤ ਥ ਦ ਧ ਨ ਪ ਫ ਬ ਭ ਮ ਯ ਰ ਲ ਵ ੜ]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0੦ 1੧ 2੨ 3੩ 4੪ 5੫ 6੬ 7੭ 8੮ 9੯]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . ' ‘ ’ \u0022 “ ” ( ) \\[ \\] / \\& ′ ″]"} + MoreInformation{"?"} NumberElements{ arabext{ patterns{ @@ -19,6 +29,7 @@ pa{ scientificFormat{"[#E0]"} } symbols{ + decimal{"٫"} exponential{"×۱۰^"} group{","} infinity{"∞"} @@ -28,8 +39,10 @@ pa{ percentSign{"٪"} plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{"٫"} } } + default{"latn"} guru{ patterns{ currencyFormat{"¤ #,##,##0.00"} @@ -38,17 +51,23 @@ pa{ scientificFormat{"[#E0]"} } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} } } latn{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}–{1}"} } patterns{ @@ -213,12 +232,17 @@ pa{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -233,7 +257,7 @@ pa{ minimumGroupingDigits{"1"} native{"guru"} } - Version{"2.1.48.20"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -262,6 +286,9 @@ pa{ "ਈਸਵੀ ਪੂਰਵ", } } + intervalFormats{ + fallback{"{0} – {1}"} + } } coptic{ eras{ @@ -295,6 +322,21 @@ pa{ "ਮੈਸਰਾ", "ਨੇਜ਼ੀ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "ਟੋਉਟ", "ਬਾਬਾ", @@ -327,6 +369,21 @@ pa{ "ਮੈਸਰਾ", "ਨੇਜ਼ੀ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "ਟੋਉਟ", "ਬਾਬਾ", @@ -377,6 +434,21 @@ pa{ "ਨੇਹਾਸੇ", "ਪਾਗੂਮੇਨ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "ਮੇਸਕੇਰੇਮ", "ਟੇਕੇਮਟ", @@ -409,6 +481,21 @@ pa{ "ਨੇਹਾਸੇ", "ਪਾਗੂਮੇਨ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "ਮੇਸਕੇਰੇਮ", "ਟੇਕੇਮਟ", @@ -427,6 +514,19 @@ pa{ } } } + ethiopic-amete-alem{ + eras{ + abbreviated{ + "ERA0", + } + narrow{ + "ERA0", + } + wide{ + "ERA0", + } + } + } generic{ DateTimePatterns{ "h:mm:ss a zzzz", @@ -489,52 +589,19 @@ pa{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} } M{ M{"MM–MM"} @@ -562,6 +629,24 @@ pa{ d{"d – d"} } fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y – y G"} } @@ -844,53 +929,6 @@ pa{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -1119,6 +1157,17 @@ pa{ } } hebrew{ + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } monthNames{ format{ abbreviated{ @@ -1137,6 +1186,22 @@ pa{ "ਏਲੁਲ", "ਅਦਰ II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "ਤਿਸ਼ਰੀ", "ਹੇਸ਼ਵਨ", @@ -1171,6 +1236,22 @@ pa{ "ਏਲੁਲ", "ਅਦਰ II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "ਤਿਸ਼ਰੀ", "ਹੇਸ਼ਵਨ", @@ -1294,6 +1375,20 @@ pa{ } } islamic{ + eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } + wide{ + "AH", + } + } + intervalFormats{ + fallback{"{0} – {1}"} + } monthNames{ format{ abbreviated{ @@ -1310,6 +1405,20 @@ pa{ "ਦੂ-ਅਲ-ਕੀ.", "ਦੂ-ਅਲ-ਹਿ.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ਮੁਹੱਰਮ", "ਸਫਰ", @@ -1340,6 +1449,20 @@ pa{ "ਦੂ-ਅਲ-ਕੀ.", "ਦੂ-ਅਲ-ਹਿ.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ਮੁਹੱਰਮ", "ਸਫਰ", @@ -1358,6 +1481,17 @@ pa{ } } persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } monthNames{ format{ abbreviated{ @@ -1374,6 +1508,20 @@ pa{ "ਬਾਹਮਨ", "ਐਸਫੰਡ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ਫਾਰਵਰਡੀਨ", "ਔਰਡਾਈਬਹੈਸ਼ਟ", @@ -1404,6 +1552,20 @@ pa{ "ਬਾਹਮਨ", "ਐਸਫੰਡ", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ਫਾਰਵਰਡੀਨ", "ਔਰਡਾਈਬਹੈਸ਼ਟ", @@ -1526,6 +1688,12 @@ pa{ western_asian_scripts{"ਪੱਛਮੀ ਏਸ਼ੀਆਈ ਲਿਪੀ"} whitespace{"ਵ੍ਹਾਈਟ ਸਪੇਸ"} } + delimiters{ + alternateQuotationEnd{"’"} + alternateQuotationStart{"‘"} + quotationEnd{"”"} + quotationStart{"“"} + } fields{ day{ dn{"ਦਿਨ"} @@ -2372,6 +2540,12 @@ pa{ middle{"{0}, {1}"} start{"{0}, {1}"} } + or-narrow{ + end{"{0}, ਜਾਂ {1}"} + } + or-short{ + end{"{0}, ਜਾਂ {1}"} + } standard{ 2{"{0} ਅਤੇ {1}"} end{"{0} ਅਤੇ {1}"} @@ -2379,8 +2553,8 @@ pa{ start{"{0}, {1}"} } standard-narrow{ - 2{"{0} ਅਤੇ {1}"} - end{"{0} ਅਤੇ {1}"} + 2{"{0}, {1}"} + end{"{0}, {1}"} middle{"{0}, {1}"} start{"{0}, {1}"} } @@ -2397,10 +2571,10 @@ pa{ start{"{0}, {1}"} } unit-narrow{ - 2{"{0}, {1}"} - end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} + 2{"{0} {1}"} + end{"{0} {1}"} + middle{"{0} {1}"} + start{"{0} {1}"} } unit-short{ 2{"{0}, {1}"} @@ -2411,7 +2585,7 @@ pa{ } measurementSystemNames{ UK{"ਯੂ. ਕੇ."} - US{"ਯੂ. ਐਸ."} + US{"ਯੂ. ਐੱਸ."} metric{"ਮੀਟਰਿਕ"} } parse{ @@ -2440,6 +2614,10 @@ pa{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/pa_Arab.txt b/source/data/locales/pa_Arab.txt index 5bf0a4f..dfdb336 100644 --- a/source/data/locales/pa_Arab.txt +++ b/source/data/locales/pa_Arab.txt @@ -7,7 +7,7 @@ pa_Arab{ "[\u064F ء آ ؤ ئ ا ب پ ت ث ٹ ج چ ح خ د ذ ڈ ر ز ڑ ژ س ش ص ض ط ظ ع غ ف ق ک گ ل " "م ن ں ه ھ ہ و ی ے]" } - ExemplarCharactersNumbers{"[\u200E \\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\u200E \\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ arabext{ symbols{ @@ -23,7 +23,7 @@ pa_Arab{ } native{"arabext"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/pa_Arab_PK.txt b/source/data/locales/pa_Arab_PK.txt index e6f5f20..df06b2a 100644 --- a/source/data/locales/pa_Arab_PK.txt +++ b/source/data/locales/pa_Arab_PK.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pa_Arab_PK{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/pa_Guru.txt b/source/data/locales/pa_Guru.txt index 650b3ed..fb27b98 100644 --- a/source/data/locales/pa_Guru.txt +++ b/source/data/locales/pa_Guru.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pa_Guru{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/pa_Guru_IN.txt b/source/data/locales/pa_Guru_IN.txt index 99f0867..2711da0 100644 --- a/source/data/locales/pa_Guru_IN.txt +++ b/source/data/locales/pa_Guru_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pa_Guru_IN{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/pl.txt b/source/data/locales/pl.txt index 3269544..700fc88 100644 --- a/source/data/locales/pl.txt +++ b/source/data/locales/pl.txt @@ -8,10 +8,10 @@ pl{ } ExemplarCharacters{"[a ą b c ć d e ę f g h i j k l ł m n ń o ó p r s ś t u w y z ź ż]"} ExemplarCharactersIndex{"[A Ą B C Ć D E Ę F G H I J K L Ł M N Ń O Ó P Q R S Ś T U V W X Y Z Ź Ż]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' \u0022 ” „ « » ( ) \\[ \\] \\{ \\} § @ * / \\& " - "# % † ‡ ′ ″ ° ~]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' \u0022 ” „ « » ( ) \\[ \\] \\{ \\} § @ * / " + "\\& # % † ‡ ′ ″ ° ~]" } NumberElements{ latn{ @@ -24,6 +24,7 @@ pl{ patterns{ accountingFormat{"#,##0.00 ¤;(#,##0.00 ¤)"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -259,9 +260,11 @@ pl{ group{" "} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -279,7 +282,7 @@ pl{ } minimumGroupingDigits{"2"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ buddhist{ eras{ @@ -653,10 +656,10 @@ pl{ MMMEd{"E, d MMM"} MMMMEd{"E, d MMMM"} MMMMW{ - few{"MMMM, 'tydz'. W"} - many{"MMMM, 'tydz'. W"} - one{"MMMM, 'tydz'. W"} - other{"MMMM, 'tydz'. W"} + few{"LLLL, 'tydz'. W"} + many{"LLLL, 'tydz'. W"} + one{"LLLL, 'tydz'. W"} + other{"LLLL, 'tydz'. W"} } MMMMd{"d MMMM"} MMMd{"d MMM"} @@ -1627,9 +1630,12 @@ pl{ } } day-narrow{ - dn{"dzień"} + dn{"d."} relative{ + "-1"{"wcz."} "-2"{"przedwczoraj"} + "0"{"dziś"} + "1"{"jutro"} "2"{"pojutrze"} } relativeTime{ @@ -1648,7 +1654,7 @@ pl{ } } day-short{ - dn{"dzień"} + dn{"dz."} relative{ "-2"{"przedwczoraj"} "2"{"pojutrze"} @@ -1954,9 +1960,9 @@ pl{ month-narrow{ dn{"mc"} relative{ - "-1"{"w zeszłym miesiącu"} - "0"{"w tym miesiącu"} - "1"{"w przyszłym miesiącu"} + "-1"{"w zeszłym mies."} + "0"{"w tym mies."} + "1"{"w przyszłym mies."} } relativeTime{ future{ @@ -1976,9 +1982,9 @@ pl{ month-short{ dn{"mies."} relative{ - "-1"{"w zeszłym miesiącu"} - "0"{"w tym miesiącu"} - "1"{"w przyszłym miesiącu"} + "-1"{"w zeszłym mies."} + "0"{"w tym mies."} + "1"{"w przyszłym mies."} } relativeTime{ future{ @@ -2456,9 +2462,9 @@ pl{ week-narrow{ dn{"tydz."} relative{ - "-1"{"w zeszłym tygodniu"} - "0"{"w tym tygodniu"} - "1"{"w przyszłym tygodniu"} + "-1"{"w zeszłym tyg."} + "0"{"w tym tyg."} + "1"{"w przyszłym tyg."} } relativePeriod{"tydzień {0}"} relativeTime{ @@ -2479,9 +2485,9 @@ pl{ week-short{ dn{"tydz."} relative{ - "-1"{"w zeszłym tygodniu"} - "0"{"w tym tygodniu"} - "1"{"w przyszłym tygodniu"} + "-1"{"w zeszłym tyg."} + "0"{"w tym tyg."} + "1"{"w przyszłym tyg."} } relativePeriod{"tydzień {0}"} relativeTime{ @@ -2512,7 +2518,7 @@ pl{ dn{"dzień tygodnia"} } weekday-narrow{ - dn{"dzień tyg."} + dn{"dz. tyg."} } weekday-short{ dn{"dzień tyg."} @@ -2521,7 +2527,7 @@ pl{ dn{"dzień miesiąca"} } weekdayOfMonth-narrow{ - dn{"dzień mies."} + dn{"dz. mies."} } weekdayOfMonth-short{ dn{"dzień mies."} diff --git a/source/data/locales/pl_PL.txt b/source/data/locales/pl_PL.txt index 46d416d..8cdeece 100644 --- a/source/data/locales/pl_PL.txt +++ b/source/data/locales/pl_PL.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pl_PL{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ps.txt b/source/data/locales/ps.txt index 8ad6805..a712384 100644 --- a/source/data/locales/ps.txt +++ b/source/data/locales/ps.txt @@ -6,9 +6,6 @@ ps{ final{"{0}…"} initial{"…{0}"} medial{"{0}…{1}"} - word-final{"{0} …"} - word-initial{"… {0}"} - word-medial{"{0} … {1}"} } ExemplarCharacters{ "[\u064E \u0650 \u064F \u064B \u064D \u064C \u0651 \u0652 \u0654 \u0670 آ ا أ" @@ -19,9 +16,8 @@ ps{ "[آ ا ء ب پ ت ټ ث ج ځ چ څ ح خ د ډ ذ ر ړ ز ژ ږ س ش ښ ص ض ط ظ ع غ ف ق ک ګ ل م ن" " ڼ ه و ی]" } - ExemplarCharactersNumbers{"[\u200E \\- , ٫ ٬ . % ٪ ‰ ؉ + − 0۰ 1۱ 2۲ 3۳ 4۴ 5۵ 6۶ 7۷ 8۸ 9۹]"} + ExemplarCharactersNumbers{"[\u200E \\- ‑ , ٫ ٬ . % ٪ ‰ ؉ + − 0۰ 1۱ 2۲ 3۳ 4۴ 5۵ 6۶ 7۷ 8۸ 9۹]"} ExemplarCharactersPunctuation{"[، ; \\: ! ۔ ' ‘ ( ) \\[ \\] \\{ \\} /]"} - MoreInformation{"?"} NumberElements{ arabext{ patterns{ @@ -43,15 +39,13 @@ ps{ latn{ miscPatterns{ approximately{"~{0}"} - atLeast{"≥{0}"} + atLeast{"{0}+"} atMost{"≤{0}"} - range{"{0}–{1}"} } patterns{ - accountingFormat{"#,##0.00 ¤"} + accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"#,##0.00 ¤"} percentFormat{"#,##0%"} - scientificFormat{"#E0"} } patternsLong{ decimalFormat{ @@ -137,11 +131,11 @@ ps{ } 10000000000{ one{"00G ¤"} - other{"00G ¤"} + other{"¤00B"} } 100000000000{ - one{"000G ¤"} - other{"000G ¤"} + one{"¤000B"} + other{"¤000B"} } 1000000000000{ one{"0T ¤"} @@ -225,14 +219,14 @@ ps{ other{"{0} کور کیڼ اړخ ته دی"} } plural{ - one{"{0} قلمونه"} - other{"{0}?"} + one{"{0} ورځ"} + other{"{0} ورځې"} } } minimumGroupingDigits{"1"} native{"arabext"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ default{"persian"} generic{ @@ -297,14 +291,43 @@ ps{ yyyyQQQQ{"G y QQQQ"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"M/y GGGGG – M/y GGGGG"} + M{"M/y – M/y GGGGG"} + y{"M/y – M/y GGGGG"} + } + GyMEd{ + G{"E, M/d/y GGGGG – E, M/d/y GGGGG"} + M{"E, M/d/y – E, M/d/y GGGGG"} + d{"E, M/d/y – E, M/d/y GGGGG"} + y{"E, M/d/y – E, M/d/y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E, MMM d, y G – E, MMM d, y G"} + M{"E, MMM d – E, MMM d, y G"} + d{"E, MMM d – E, MMM d, y G"} + y{"E, MMM d, y – E, MMM d, y G"} } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} + GyMMMd{ + G{"MMM d, y G – MMM d, y G"} + M{"MMM d – MMM d, y G"} + d{"MMM d – d, y G"} + y{"MMM d, y – MMM d, y G"} + } + GyMd{ + G{"M/d/y GGGGG – M/d/y GGGGG"} + M{"M/d/y – M/d/y GGGGG"} + d{"M/d/y – M/d/y GGGGG"} + y{"M/d/y – M/d/y GGGGG"} } M{ M{"MM–MM"} @@ -329,7 +352,7 @@ ps{ d{"MM-dd – MM-dd"} } d{ - d{"d–d"} + d{"d – d"} } fallback{"{0} – {1}"} y{ @@ -404,7 +427,6 @@ ps{ Bh{"h B"} Bhm{"h:mm B"} Bhms{"h:mm:ss B"} - E{"ccc"} EBhm{"E h:mm B"} EBhms{"E h:mm:ss B"} EHm{"E HH:mm"} @@ -424,15 +446,14 @@ ps{ M{"L"} MEd{"MM-dd, E"} MMM{"LLL"} - MMMEd{"MMM d, E"} + MMMEd{"E, MMM d"} MMMMW{ - one{"اونۍ W د MMMM"} + one{"اونۍ‘ W د MMMM‘"} other{"اونۍ W د MMMM"} } MMMMd{"MMMM d"} MMMd{"MMM d"} Md{"MM-dd"} - d{"d"} h{"h a"} hm{"h:mm a"} hms{"h:mm:ss a"} @@ -567,57 +588,10 @@ ps{ } wide%variant{ "له عام پېر دمخه", - "CE", + "عام پېر", } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -690,7 +664,7 @@ ps{ } yMMM{ M{"y MMM–MMM"} - y{"y MMM – y MMM"} + y{"MMM y – MMM y"} } yMMMEd{ M{"y MMM d, E – MMM d, E"} @@ -704,7 +678,7 @@ ps{ yMMMd{ M{"y MMM d – MMM d"} d{"y MMM d–d"} - y{"y MMM d – y MMM d"} + y{"MMM d, y – MMM d, y"} } yMd{ M{"y-MM-dd – y-MM-dd"} @@ -722,7 +696,7 @@ ps{ "مۍ", "جون", "جولای", - "اگست", + "اګست", "سېپتمبر", "اکتوبر", "نومبر", @@ -750,7 +724,7 @@ ps{ "مۍ", "جون", "جولای", - "اگست", + "اګست", "سېپتمبر", "اکتوبر", "نومبر", @@ -766,7 +740,7 @@ ps{ "مۍ", "جون", "جولای", - "اگست", + "اګست", "سپتمبر", "اکتوبر", "نومبر", @@ -794,7 +768,7 @@ ps{ "مۍ", "جون", "جولای", - "اگست", + "اګست", "سپتمبر", "اکتوبر", "نومبر", @@ -1002,17 +976,17 @@ ps{ format{ abbreviated{ "محرم", - "صفره", + "صفر", "ربيع", "ربيع II", - "جماعه", - "جموما II", - "راجاب", + "جماد ۱", + "جماد ۲", + "رجب", "شعبان", "رمضان", "شوال", "دالقاعده", - "حلال حج", + "ذي الحج", } narrow{ "1", @@ -1030,33 +1004,33 @@ ps{ } wide{ "محرم", - "د صفرې د", + "صفر", "ربيع", "ربيع II", "جماعه", "جموما II", - "راجاب", + "رجب", "شعبان", "رمضان", "شوال", - "دالقاعده", - "حلال حج", + "ذي القعده", + "ذي الحج", } } stand-alone{ abbreviated{ "محرم", - "صفره", + "صفر", "ربيع", "ربيع II", "جماعه", - "جموما II", - "راجاب", + "جمادي ۲", + "رجب", "شعبان", "رمضان", "شوال", "دالقاعده", - "حلال حج", + "ذي الحج", } narrow{ "1", @@ -1074,17 +1048,17 @@ ps{ } wide{ "محرم", - "د صفرې د", + "صفر", "ربيع", "ربيع II", "جماعه", "جموما II", - "راجاب", + "رجب", "شعبان", "رمضان", "شوال", "دالقاعده", - "حلال حج", + "ذي الحج", } } } @@ -1112,18 +1086,18 @@ ps{ "کب", } narrow{ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", + "۱", + "۲", + "۳", + "۴", + "۵", + "۶", + "۷", + "۸", + "۹", + "۱۰", + "۱۱", + "۱۲", } wide{ "وری", @@ -1156,18 +1130,18 @@ ps{ "کب", } narrow{ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", + "۱", + "۲", + "۳", + "۴", + "۵", + "۶", + "۷", + "۸", + "۹", + "۱۰", + "۱۱", + "۱۲", } wide{ "وری", @@ -1199,11 +1173,11 @@ ps{ braille{"بریل"} building{"ودانۍ"} bullets_stars{"ګولۍ یا ستوری"} - consonantal_jamo{"کنسینټل جامو"} + consonantal_jamo{"کانسو نینټل جامو"} currency_symbols{"د پېسو سمبول"} dash_connector{"ډش یا نښلونکی"} digits{"عدد"} - dingbats{"ڈنگبت"} + dingbats{"ډینګبټ"} divination_symbols{"د اټکل سمبول"} downwards_arrows{"ښکته غشی"} downwards_upwards_arrows{"ښکته پورته غشی"} @@ -1219,22 +1193,22 @@ ps{ full_width_form_variant{"د بشپړ پراختيا بله بڼه"} geometric_shapes{"جيوميتريکي شکل"} half_width_form_variant{"د نيمايي پراختيا بله بڼه"} - han_characters{"د حني کرکټر"} + han_characters{"د حني کریکټر"} han_radicals{"د حني سخت دريځه"} hanja{"هانجا"} - hanzi_simplified{"حنيزي (ساده)"} - hanzi_traditional{"حنيزي (روايتي)"} + hanzi_simplified{"هانزي (ساده)"} + hanzi_traditional{"هانزي (روایتي)"} heart{"زړه"} historic_scripts{"تاريخي سکرېپټ"} - ideographic_desc_characters{"د اډیګرافیک ډيسک کرکټر"} + ideographic_desc_characters{"د اډیوګرافیک ډيسک کرکټر"} japanese_kana{"جاپاني کانا"} kanbun{"کنبن"} kanji{"کانجی"} - keycap{"کیکاپ"} - leftwards_arrows{"کڼ اړخ ته غشی"} - leftwards_rightwards_arrows{"کڼ اړخ او ښۍ اړخ ته غشی"} + keycap{"کیکیپ"} + leftwards_arrows{"کیڼ اړخ ته غشی"} + leftwards_rightwards_arrows{"کیڼ اړخ او ښۍ اړخ ته غشی"} letterlike_symbols{"د توري په څېر سمبول"} - limited_use{"د محدود استعمال"} + limited_use{"محدود استعمال"} male{"نارینه"} math_symbols{"ریاضی سمبول"} middle_eastern_scripts{"د منځني ختیځ سکرېپټ"} @@ -1270,26 +1244,65 @@ ps{ travel_places{"سفر یا ځای"} upwards_arrows{"پورته غشي"} variant_forms{"بله بڼه"} - vocalic_jamo{"غږ جامو"} + vocalic_jamo{"وکيليک جامو"} weather{"موسم"} western_asian_scripts{"لويديځ آسيايي سکريپټ"} whitespace{"سپين ځای"} } - delimiters{ - alternateQuotationEnd{"’"} - alternateQuotationStart{"‘"} - quotationEnd{"”"} - quotationStart{"“"} - } fields{ day{ dn{"ورځ"} + relative{ + "-1"{"پرون"} + "0"{"نن"} + "1"{"سبا"} + } + relativeTime{ + future{ + one{"په {0} ورځ کې"} + other{"په {0} ورځو کې"} + } + past{ + one{"{0} ورځ مخکې"} + other{"{0} ورځې مخکې"} + } + } } day-narrow{ dn{"ورځ"} + relative{ + "-1"{"پرون"} + "0"{"نن"} + "1"{"سبا"} + } + relativeTime{ + future{ + one{"په {0} ورځ کې"} + other{"په {0} ورځو کې"} + } + past{ + one{"{0} ورځ مخکې"} + other{"{0} ورځې مخکې"} + } + } } day-short{ dn{"ورځ"} + relative{ + "-1"{"پرون"} + "0"{"نن"} + "1"{"سبا"} + } + relativeTime{ + future{ + one{"په {0} ورځ کې"} + other{"په {0} ورځو کې"} + } + past{ + one{"{0} ورځ مخکې"} + other{"{0} ورځې مخکې"} + } + } } dayOfYear{ dn{"د کال ورځ"} @@ -1318,50 +1331,643 @@ ps{ era-short{ dn{"پېر"} } + fri{ + relative{ + "-1"{"تېره جمعه"} + "0"{"دا جمعه"} + "1"{"راتلونکې جمعه"} + } + relativeTime{ + future{ + one{"په {0} جمعه کې"} + other{"په {0} جمعو کې"} + } + past{ + one{"{0} جمعه مخکې"} + other{"{0} جمعې مخکې"} + } + } + } + fri-narrow{ + relative{ + "-1"{"تېره جمعه"} + "0"{"دا جمعه"} + "1"{"راتلونکې جمعه"} + } + relativeTime{ + future{ + one{"په {0} جمعه کې"} + other{"په {0} جمعه کې"} + } + past{ + one{"{0} جمعه مخکې"} + other{"{0} جمعه مخکې"} + } + } + } + fri-short{ + relative{ + "-1"{"تېره جمعه"} + "0"{"دا جمعه"} + "1"{"راتلونکې جمعه"} + } + relativeTime{ + future{ + one{"په {0} جمعه کې"} + other{"په {0} جمعه کې"} + } + past{ + one{"{0} جمعه مخکې"} + other{"{0} جمعه مخکې"} + } + } + } hour{ dn{"ساعت"} + relative{ + "0"{"دا ساعت"} + } + relativeTime{ + future{ + one{"په {0} ساعت کې"} + other{"په {0} ساعتو کې"} + } + past{ + one{"{0} ساعت مخکې"} + other{"{0} ساعتونه مخکې"} + } + } } hour-narrow{ dn{"ساعت"} + relativeTime{ + future{ + one{"په {0} ساعت کې"} + other{"په {0} ساعت کې"} + } + past{ + one{"{0} ساعت مخکې"} + other{"{0} ساعت مخکې"} + } + } } hour-short{ dn{"ساعت"} + relativeTime{ + future{ + one{"په {0} ساعت کې"} + other{"په {0} ساعت کې"} + } + past{ + one{"{0} ساعت مخکې"} + other{"{0} ساعت مخکې"} + } + } } minute{ dn{"دقيقه"} + relative{ + "0"{"دا دقيقه"} + } + relativeTime{ + future{ + one{"په {0} دقيقه کې"} + other{"په {0} دقيقو کې"} + } + past{ + one{"{0} دقيقه مخکې"} + other{"{0} دقيقې مخکې"} + } + } } minute-narrow{ dn{"دقيقه"} + relativeTime{ + future{ + one{"په {0} دقيقه کې"} + other{"په {0} دقيقه کې"} + } + past{ + one{"{0} دقيقه مخکې"} + other{"{0} دقيقه مخکې"} + } + } } minute-short{ dn{"دقيقه"} + relativeTime{ + future{ + one{"په {0} دقيقه کې"} + other{"په {0} دقيقه کې"} + } + past{ + one{"{0} دقيقه مخکې"} + other{"{0} دقيقه مخکې"} + } + } + } + mon{ + relative{ + "-1"{"تېره دوشنبه"} + "0"{"دا دوشنبه"} + "1"{"راتلونکې دوشنبه"} + } + relativeTime{ + future{ + one{"په {0} دوشنبه کې"} + other{"په {0} دوشنبو کې"} + } + past{ + one{"{0} دوشنبه مخکې"} + other{"{0} دوشنبې مخکې"} + } + } + } + mon-narrow{ + relative{ + "-1"{"تېره دوشنبه"} + "0"{"دا دوشنبه"} + "1"{"راتلونکې دوشنبه"} + } + relativeTime{ + future{ + one{"په {0} دوشنبه کې"} + other{"په {0} دوشنبه کې"} + } + past{ + one{"{0} دوشنبه مخکې"} + other{"{0} دوشنبه مخکې"} + } + } + } + mon-short{ + relative{ + "-1"{"تېره دوشنبه"} + "0"{"دا دوشنبه"} + "1"{"راتلونکې دوشنبه"} + } + relativeTime{ + future{ + one{"په {0} دوشنبه کې"} + other{"په {0} دوشنبه کې"} + } + past{ + one{"{0} دوشنبه مخکې"} + other{"{0} دوشنبه مخکې"} + } + } } month{ dn{"مياشت"} + relative{ + "-1"{"تېره مياشت"} + "0"{"دا مياشت"} + "1"{"راتلونکې مياشت"} + } + relativeTime{ + future{ + one{"په {0} مياشت کې"} + other{"په {0} مياشتو کې"} + } + past{ + one{"{0} مياشت مخکې"} + other{"{0} مياشتې مخکې"} + } + } } month-narrow{ dn{"مياشت"} + relative{ + "-1"{"تېره مياشت"} + "0"{"دا مياشت"} + "1"{"راتلونکې مياشت"} + } + relativeTime{ + future{ + one{"په {0} مياشت کې"} + other{"په {0} مياشت کې"} + } + past{ + one{"{0} مياشت مخکې"} + other{"{0} مياشت مخکې"} + } + } } month-short{ dn{"مياشت"} + relative{ + "-1"{"تېره مياشت"} + "0"{"دا مياشت"} + "1"{"راتلونکې مياشت"} + } + relativeTime{ + future{ + one{"په {0} مياشت کې"} + other{"په {0} مياشت کې"} + } + past{ + one{"{0} مياشت مخکې"} + other{"{0} مياشت مخکې"} + } + } + } + quarter{ + dn{"څلورمه برخه"} + relative{ + "-1"{"ورستۍ ربع"} + "0"{"دا ربع"} + "1"{"راتلونکې ربع"} + } + relativeTime{ + future{ + one{"په {0} ربع کې"} + other{"په {0} ربعو کې"} + } + past{ + one{"{0} ربع مخکې"} + other{"{0} ربعې مخکې"} + } + } + } + quarter-narrow{ + dn{"څلورمه برخه"} + relativeTime{ + future{ + one{"په {0} ربع کې"} + other{"په {0} ربعو کې"} + } + past{ + one{"{0} ربع مخکې"} + other{"{0} ربعې مخکې"} + } + } + } + quarter-short{ + dn{"څلورمه برخه"} + relativeTime{ + future{ + one{"په {0} ربع کې"} + other{"په {0} ربعو کې"} + } + past{ + one{"{0} ربع مخکې"} + other{"{0} ربعې مخکې"} + } + } + } + sat{ + relative{ + "-1"{"تېره شنبه"} + "0"{"دا شنبه"} + "1"{"راتلونکې شنبه"} + } + relativeTime{ + future{ + one{"په {0} شنبه کې"} + other{"په {0} شنبو کې"} + } + past{ + one{"{0} شنبه مخکې"} + other{"{0} شنبې مخکې"} + } + } + } + sat-narrow{ + relative{ + "-1"{"تېره شنبه"} + "0"{"دا شنبه"} + "1"{"راتلونکې شنبه"} + } + relativeTime{ + future{ + one{"په {0} شنبه کې"} + other{"په {0} شنبه کې"} + } + past{ + one{"{0} شنبه مخکې"} + other{"{0} شنبه مخکې"} + } + } + } + sat-short{ + relative{ + "-1"{"تېره شنبه"} + "0"{"دا شنبه"} + "1"{"راتلونکې شنبه"} + } + relativeTime{ + future{ + one{"په {0} شنبه کې"} + other{"په {0} شنبه کې"} + } + past{ + one{"{0} شنبه مخکې"} + other{"{0} شنبه مخکې"} + } + } } second{ dn{"ثانيه"} + relative{ + "0"{"اوس"} + } + relativeTime{ + future{ + one{"په {0} ثانيه کې"} + other{"په {0} ثانيو کې"} + } + past{ + one{"{0} ثانيه مخکې"} + other{"{0} ثانيې مخکې"} + } + } } second-narrow{ dn{"ثانيه"} + relativeTime{ + future{ + one{"په {0} ثانيه کې"} + other{"په {0} ثانيه کې"} + } + past{ + one{"{0} ثانيه کې"} + other{"{0} ثانيه کې"} + } + } } second-short{ dn{"ثانيه"} + relativeTime{ + future{ + one{"په {0} ثانيه کې"} + other{"په {0} ثانيه کې"} + } + past{ + one{"{0} ثانيه مخکې"} + other{"{0} ثانيه مخکې"} + } + } + } + sun{ + relative{ + "-1"{"تېره يکشنبه"} + "0"{"دا يکشنبه"} + "1"{"راتلونکې يکشنبه"} + } + relativeTime{ + future{ + one{"په {0} يکشنبه کې"} + other{"په {0} يکشنبو کې"} + } + past{ + one{"{0} يکشنبه مخکې"} + other{"{0} يکشنبې مخکې"} + } + } + } + sun-narrow{ + relative{ + "-1"{"تېره يکشنبه"} + "0"{"دا يکشنبه"} + "1"{"راتلونکې يکشنبه"} + } + relativeTime{ + future{ + one{"په {0} يکشنبه کې"} + other{"په {0} يکشنبه کې"} + } + past{ + one{"{0} يکشنبه مخکې"} + other{"{0} يکشنبه مخکې"} + } + } + } + sun-short{ + relative{ + "-1"{"تېره يکشنبه"} + "0"{"دا يکشنبه"} + "1"{"راتلونکې يکشنبه"} + } + relativeTime{ + future{ + one{"په {0} يکشنبه کې"} + other{"په {0} يکشنبه کې"} + } + past{ + one{"{0} يکشنبه مخکې"} + other{"{0} يکشنبه مخکې"} + } + } + } + thu{ + relative{ + "-1"{"تېره پنجشنبه"} + "0"{"دا پنجشنبه"} + "1"{"راتلونکې پنجشنبه"} + } + relativeTime{ + future{ + one{"په {0} پنجشنبه کې"} + other{"په {0} پنجشنبو کې"} + } + past{ + one{"{0} پنجشنبه مخکې"} + other{"{0} پنجشنبې مخکې"} + } + } + } + thu-narrow{ + relative{ + "-1"{"تېره پنجشنبه"} + "0"{"دا پنجشنبه"} + "1"{"راتلونکې پنجشنبه"} + } + relativeTime{ + future{ + one{"په {0} پنجشنبه کې"} + other{"په {0} پنجشنبه کې"} + } + past{ + one{"{0} پنجشنبه مخکې"} + other{"{0} پنجشنبه مخکې"} + } + } + } + thu-short{ + relative{ + "-1"{"تېره پنجشنبه"} + "0"{"دا پنجشنبه"} + "1"{"راتلونکې پنجشنبه"} + } + relativeTime{ + future{ + one{"په {0} پنجشنبه کې"} + other{"په {0} پنجشنبه کې"} + } + past{ + one{"{0} پنجشنبه مخکې"} + other{"{0} پنجشنبه مخکې"} + } + } + } + tue{ + relative{ + "-1"{"تيره سه شنبه"} + "0"{"دا سه شنبه"} + "1"{"راتلونکې سه شنبه"} + } + relativeTime{ + future{ + one{"په {0} سه شنبه کې"} + other{"په {0} سه شنبو کې"} + } + past{ + one{"{0} سه شنبه مخکې"} + other{"{0} سه شنبې مخکې"} + } + } + } + tue-narrow{ + relative{ + "-1"{"تيره سه شنبه"} + "0"{"دا سه شنبه"} + "1"{"راتلونکې سه شنبه"} + } + relativeTime{ + future{ + one{"په {0} سه شنبه کې"} + other{"په {0} سه شنبه کې"} + } + past{ + one{"{0} سه شنبه مخکې"} + other{"{0} سه شنبه مخکې"} + } + } + } + tue-short{ + relative{ + "-1"{"تېره سه شنبه"} + "0"{"دا سه شنبه"} + "1"{"راتلونکې سه شنبه"} + } + relativeTime{ + future{ + one{"په {0} سه شنبه کې"} + other{"په {0} سه شنبه کې"} + } + past{ + one{"{0} سه شنبه مخکې"} + other{"{0} سه شنبه مخکې"} + } + } + } + wed{ + relative{ + "-1"{"تېره چارشنبه"} + "0"{"دا چارشنبه"} + "1"{"راتلونکې چارشنبه"} + } + relativeTime{ + future{ + one{"په {0} چارشنبه کې"} + other{"په {0} چارشنبو کې"} + } + past{ + one{"{0} چارشنبه مخکې"} + other{"{0} چارشنبې مخکې"} + } + } + } + wed-narrow{ + relative{ + "-1"{"تېره چارشنبه"} + "0"{"دا چارشنبه"} + "1"{"راتلونکې چارشنبه"} + } + relativeTime{ + future{ + one{"په {0} چارشنبه کې"} + other{"په {0} چارشنبه کې"} + } + past{ + one{"{0} چارشنبه مخکې"} + other{"{0} چارشنبه مخکې"} + } + } + } + wed-short{ + relative{ + "-1"{"تېره چارشنبه"} + "0"{"دا چارشنبه"} + "1"{"راتلونکې چارشنبه"} + } + relativeTime{ + future{ + one{"په {0} چارشنبه کې"} + other{"په {0} چارشنبه کې"} + } + past{ + one{"{0} چارشنبه مخکې"} + other{"{0} چارشنبه مخکې"} + } + } } week{ dn{"اونۍ"} + relative{ + "-1"{"تيره اونۍ"} + "0"{"دا اونۍ"} + "1"{"راتلونکې اونۍ"} + } + relativePeriod{"اونۍ د {0}"} + relativeTime{ + future{ + one{"په {0} اونۍ کې"} + other{"په {0} اونيو کې"} + } + past{ + one{"{0} اونۍ مخکې"} + other{"{0} اونۍ مخکې"} + } + } } week-narrow{ dn{"اونۍ"} + relative{ + "-1"{"تېره اونۍ"} + "0"{"دا اونۍ"} + "1"{"راتلونکې اونۍ"} + } + relativePeriod{"اونۍ د {0}"} + relativeTime{ + future{ + one{"په {0} اونۍ کې"} + other{"په {0} اونۍ کې"} + } + past{ + one{"{0} اونۍ مخکې"} + other{"{0} اونۍ مخکې"} + } + } } week-short{ dn{"اونۍ"} + relative{ + "-1"{"تېره اونۍ"} + "0"{"دا اونۍ"} + "1"{"راتلونکې اونۍ"} + } + relativePeriod{"اونۍ د {0}"} + relativeTime{ + future{ + one{"په {0} اونۍ کې"} + other{"په {0} اونۍ کې"} + } + past{ + one{"{0} اونۍ مخکې"} + other{"{0} اونۍ مخکې"} + } + } } weekOfMonth{ dn{"د مياشتې اونۍ"} @@ -1395,7 +2001,7 @@ ps{ relative{ "-1"{"پروسږکال"} "0"{"سږکال"} - "1"{"بل کال"} + "1"{"راتلونکی کال"} } relativeTime{ future{ @@ -1411,9 +2017,9 @@ ps{ year-narrow{ dn{"کال"} relative{ - "-1"{"پروسږکال"} - "0"{"سږکال"} - "1"{"بل کال"} + "-1"{"تير کال"} + "0"{"سږ کال"} + "1"{"راتلونکی کال"} } relativeTime{ future{ @@ -1429,9 +2035,9 @@ ps{ year-short{ dn{"کال"} relative{ - "-1"{"پروسږکال"} - "0"{"سږکال"} - "1"{"بل کال"} + "-1"{"تېر کال"} + "0"{"سږ کال"} + "1"{"روتلونکی کال"} } relativeTime{ future{ @@ -1466,15 +2072,9 @@ ps{ } standard-narrow{ 2{"{0}، {1}"} - end{"{0}, {1}"} - middle{"{0}، {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} او {1}"} - end{"{0}، او {1}"} - middle{"{0}، {1}"} - start{"{0}, {1}"} } unit{ 2{"{0} او {1}"} @@ -1497,7 +2097,7 @@ ps{ } measurementSystemNames{ UK{"بريتاني"} - US{"امريکايي"} + US{"متحده ايالات"} metric{"مېټرک"} } parse{ diff --git a/source/data/locales/ps_AF.txt b/source/data/locales/ps_AF.txt index ad3fb51..72411f5 100644 --- a/source/data/locales/ps_AF.txt +++ b/source/data/locales/ps_AF.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ps_AF{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ps_PK.txt b/source/data/locales/ps_PK.txt index 7ab6908..2ca4d06 100644 --- a/source/data/locales/ps_PK.txt +++ b/source/data/locales/ps_PK.txt @@ -7,7 +7,7 @@ ps_PK{ " ء ب پ ت ټ ث ج ځ چ څ ح خ د ډ ذ ر ړ ز ژ ږ س ش ښ ص ض ط ظ ع غ ف ق ک ګ گ ل م ن ڼ" " ه ة و ؤ ی ے ي ې ۍ ئ]" } - Version{"2.1.49.34"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ @@ -36,12 +36,12 @@ ps_PK{ "ربيع II", "جماعه", "جموما II", - "راجاب", + "رجب", "شعبان", "رمضان", "شوال", - "دالقاعده", - "حلال حج", + "ذي القعده", + "ذي الحج", } } stand-alone{ @@ -52,12 +52,12 @@ ps_PK{ "ربيع II", "جماعه", "جموما II", - "راجاب", + "رجب", "شعبان", "رمضان", "شوال", "دالقاعده", - "حلال حج", + "ذي الحج", } } } diff --git a/source/data/locales/pt.txt b/source/data/locales/pt.txt index f9b43f2..4893e59 100644 --- a/source/data/locales/pt.txt +++ b/source/data/locales/pt.txt @@ -11,10 +11,10 @@ pt{ " z]" } ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } NumberElements{ latn{ @@ -27,6 +27,7 @@ pt{ patterns{ accountingFormat{"¤ #,##0.00"} currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -190,9 +191,11 @@ pt{ group{"."} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -208,7 +211,7 @@ pt{ } minimumGroupingDigits{"1"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ buddhist{ eras{ @@ -393,52 +396,8 @@ pt{ yyyyQQQQ{"G y QQQQ"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + h{"h:mm – h:mm B"} } H{ H{"HH'h' - HH'h'"} @@ -628,13 +587,13 @@ pt{ dayNames{ format{ abbreviated{ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb", + "dom.", + "seg.", + "ter.", + "qua.", + "qui.", + "sex.", + "sáb.", } narrow{ "D", @@ -645,15 +604,6 @@ pt{ "S", "S", } - short{ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb", - } wide{ "domingo", "segunda-feira", @@ -665,15 +615,6 @@ pt{ } } stand-alone{ - abbreviated{ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb", - } narrow{ "D", "S", @@ -683,15 +624,6 @@ pt{ "S", "S", } - short{ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb", - } wide{ "domingo", "segunda-feira", @@ -926,18 +858,18 @@ pt{ monthNames{ format{ abbreviated{ - "jan", - "fev", - "mar", - "abr", - "mai", - "jun", - "jul", - "ago", - "set", - "out", - "nov", - "dez", + "jan.", + "fev.", + "mar.", + "abr.", + "mai.", + "jun.", + "jul.", + "ago.", + "set.", + "out.", + "nov.", + "dez.", } narrow{ "J", @@ -969,20 +901,6 @@ pt{ } } stand-alone{ - abbreviated{ - "jan", - "fev", - "mar", - "abr", - "mai", - "jun", - "jul", - "ago", - "set", - "out", - "nov", - "dez", - } narrow{ "J", "F", @@ -1430,7 +1348,7 @@ pt{ } past{ one{"há {0} segunda-feira"} - other{"{0} segundas-feiras atrás"} + other{"há {0} segundas-feiras"} } } } @@ -1572,7 +1490,7 @@ pt{ } past{ one{"há {0} trim."} - other{"{0} trim. atrás"} + other{"há {0} trim."} } } } @@ -1834,7 +1752,7 @@ pt{ other{"em {0} quartas-feiras"} } past{ - one{"há {0} quartas-feiras"} + one{"há {0} quarta-feira"} other{"há {0} quartas-feiras"} } } @@ -1989,7 +1907,7 @@ pt{ } past{ one{"há {0} ano"} - other{"{0} anos atrás"} + other{"há {0} anos"} } } } @@ -2033,8 +1951,6 @@ pt{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} e {1}"} @@ -2047,8 +1963,10 @@ pt{ end{"{0} e {1}"} } unit-narrow{ - 2{"{0} e {1}"} - end{"{0} e {1}"} + 2{"{0} {1}"} + end{"{0} {1}"} + middle{"{0} {1}"} + start{"{0} {1}"} } unit-short{ 2{"{0} e {1}"} @@ -2056,8 +1974,8 @@ pt{ } } measurementSystemNames{ - UK{"inglês"} - US{"americano"} + UK{"Reino Unido"} + US{"Estados Unidos"} metric{"métrico"} } parse{ diff --git a/source/data/locales/pt_AO.txt b/source/data/locales/pt_AO.txt index 7f4078f..5d89083 100644 --- a/source/data/locales/pt_AO.txt +++ b/source/data/locales/pt_AO.txt @@ -5,5 +5,5 @@ pt_AO{ NumberElements{ minimumGroupingDigits{"1"} } - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/pt_BR.txt b/source/data/locales/pt_BR.txt index be174b7..62fbc04 100644 --- a/source/data/locales/pt_BR.txt +++ b/source/data/locales/pt_BR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pt_BR{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/pt_CH.txt b/source/data/locales/pt_CH.txt index 623220c..55f6857 100644 --- a/source/data/locales/pt_CH.txt +++ b/source/data/locales/pt_CH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_CH{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/pt_CV.txt b/source/data/locales/pt_CV.txt index 10dcb7a..aa31686 100644 --- a/source/data/locales/pt_CV.txt +++ b/source/data/locales/pt_CV.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_CV{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/pt_GQ.txt b/source/data/locales/pt_GQ.txt index 00f271d..1ba7e1f 100644 --- a/source/data/locales/pt_GQ.txt +++ b/source/data/locales/pt_GQ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_GQ{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/pt_GW.txt b/source/data/locales/pt_GW.txt index 60f99bb..f1125a1 100644 --- a/source/data/locales/pt_GW.txt +++ b/source/data/locales/pt_GW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_GW{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/pt_LU.txt b/source/data/locales/pt_LU.txt index c20ea4b..19ca221 100644 --- a/source/data/locales/pt_LU.txt +++ b/source/data/locales/pt_LU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_LU{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/pt_MO.txt b/source/data/locales/pt_MO.txt index 46a2e8e..d7880fa 100644 --- a/source/data/locales/pt_MO.txt +++ b/source/data/locales/pt_MO.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_MO{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/pt_MZ.txt b/source/data/locales/pt_MZ.txt index 8a51997..c189063 100644 --- a/source/data/locales/pt_MZ.txt +++ b/source/data/locales/pt_MZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_MZ{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/pt_PT.txt b/source/data/locales/pt_PT.txt index e0f0425..0f3c405 100644 --- a/source/data/locales/pt_PT.txt +++ b/source/data/locales/pt_PT.txt @@ -8,10 +8,10 @@ pt_PT{ word-initial{"… {0}"} word-medial{"{0} … {1}"} } - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' \u0022 “ ” « » ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' \u0022 “ ” « » ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ @@ -28,7 +28,6 @@ pt_PT{ patterns{ accountingFormat{"#,##0.00 ¤;(#,##0.00 ¤)"} currencyFormat{"#,##0.00 ¤"} - decimalFormat{"#,##0.###"} } patternsLong{ decimalFormat{ @@ -162,8 +161,6 @@ pt_PT{ } symbols{ group{" "} - minusSign{"-"} - plusSign{"+"} } } minimalPairs{ @@ -174,7 +171,7 @@ pt_PT{ minimumGroupingDigits{"2"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -406,9 +403,6 @@ pt_PT{ } dayPeriod{ format{ - abbreviated{ - noon{"meio-dia"} - } narrow{ afternoon1{"tarde"} evening1{"noite"} @@ -417,12 +411,6 @@ pt_PT{ night1{"madrugada"} noon{"meio-dia"} } - wide{ - afternoon1{"da tarde"} - evening1{"da noite"} - morning1{"da manhã"} - noon{"meio-dia"} - } } stand-alone{ abbreviated{ @@ -446,6 +434,44 @@ pt_PT{ } } intervalFormats{ + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"M/y GGGGG – M/y GGGGG"} + M{"M/y – M/y GGGGG"} + y{"M/y – M/y GGGGG"} + } + GyMEd{ + G{"E, d/M/y GGGGG – E, d/M/y GGGGG"} + M{"E, d/M/y – E, d/M/y GGGGG"} + d{"E, d/M/y – E, d/M/y GGGGG"} + y{"E, d/M/y – E, d/M/y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E, d MMM y G – E, d MMM y G"} + M{"E, d MMM – E, d MMM y G"} + d{"E, d MMM – E, d MMM y G"} + y{"E, d MMM y – E, d MMM y G"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d – d MMM y G"} + y{"d MMM y – d MMM y G"} + } + GyMd{ + G{"d/M/y GGGGG – d/M/y GGGGG"} + M{"d/M/y – d/M/y GGGGG"} + d{"d/M/y – d/M/y GGGGG"} + y{"d/M/y – d/M/y GGGGG"} + } H{ H{"HH–HH"} } @@ -502,24 +528,6 @@ pt_PT{ d{"d–d 'de' MMM 'de' y"} } } - monthNames{ - format{ - wide{ - "janeiro", - "fevereiro", - "março", - "abril", - "maio", - "junho", - "julho", - "agosto", - "setembro", - "outubro", - "novembro", - "dezembro", - } - } - } quarters{ format{ wide{ @@ -646,13 +654,6 @@ pt_PT{ } fields{ day{ - relative{ - "-1"{"ontem"} - "-2"{"anteontem"} - "0"{"hoje"} - "1"{"amanhã"} - "2"{"depois de amanhã"} - } relativeTime{ future{ one{"dentro de {0} dia"} @@ -662,9 +663,9 @@ pt_PT{ } day-narrow{ relative{ - "-2"{"anteontem"} + "-1"{"ontem"} "0"{"hoje"} - "2"{"depois de amanhã"} + "1"{"amanhã"} } relativeTime{ future{ @@ -679,9 +680,9 @@ pt_PT{ } day-short{ relative{ - "-2"{"anteontem"} + "-1"{"ontem"} "0"{"hoje"} - "2"{"depois de amanhã"} + "1"{"amanhã"} } relativeTime{ future{ @@ -896,10 +897,6 @@ pt_PT{ one{"dentro de {0} trim."} other{"dentro de {0} trim."} } - past{ - one{"há {0} trim."} - other{"há {0} trim."} - } } } sat{ @@ -1074,10 +1071,6 @@ pt_PT{ one{"dentro de {0} quarta-feira"} other{"dentro de {0} quartas-feiras"} } - past{ - one{"há {0} quarta-feira"} - other{"há {0} quartas-feiras"} - } } } wed-narrow{ @@ -1185,6 +1178,8 @@ pt_PT{ start{"{0}, {1}"} } unit-narrow{ + 2{"{0} e {1}"} + end{"{0} e {1}"} middle{"{0}, {1}"} start{"{0}, {1}"} } diff --git a/source/data/locales/pt_ST.txt b/source/data/locales/pt_ST.txt index 83f08a8..a05804b 100644 --- a/source/data/locales/pt_ST.txt +++ b/source/data/locales/pt_ST.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_ST{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/pt_TL.txt b/source/data/locales/pt_TL.txt index dcee0a3..d6937ec 100644 --- a/source/data/locales/pt_TL.txt +++ b/source/data/locales/pt_TL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_TL{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/qu.txt b/source/data/locales/qu.txt index ac65385..34c6be7 100644 --- a/source/data/locales/qu.txt +++ b/source/data/locales/qu.txt @@ -7,7 +7,7 @@ qu{ } ExemplarCharacters{"[a {ch} {chʼ} h i k {kʼ} l {ll} m n ñ p {pʼ} q {qʼ} s t {tʼ} u w y]"} ExemplarCharactersIndex{"[A {Ch} H I K L {Ll} M N Ñ P Q S T U W Y]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ miscPatterns{ @@ -156,7 +156,7 @@ qu{ } minimumGroupingDigits{"1"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -218,6 +218,44 @@ qu{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"MM-y GGGGG – MM-y GGGGG"} + M{"MM-y GGGGG – MM-y GGGGG"} + y{"MM-y – MM-y GGGGG"} + } + GyMEd{ + G{"E, d-MM-y GGGG – E, d-MM-y GGGGG"} + M{"E, d-MM-y – E, d-MM-y GGGGG"} + d{"E, d-MM-y – E, d-MM-y GGGGG"} + y{"E, d-MM-y – E, d-MM-y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E, d MMM y G – E, d MMM y G"} + M{"E, d MMM – E, d MMM y G"} + d{"E, d MMM – E, d MMM y G"} + y{"E, d MMM y – E, d MMM y G"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d – d MMM y G"} + y{"d MMM y – d MMM y G"} + } + GyMd{ + G{"d-MM-y GGGG – d-MM-y GGGGG"} + M{"d-MM-y – d-MM-y GGGGG"} + d{"d-MM-y – d–MM-y GGGGG"} + y{"d-MM-y – d-MM-y GGGGG"} + } M{ M{"MM–MM"} } @@ -481,6 +519,44 @@ qu{ } } intervalFormats{ + Gy{ + G{"y G – y G"} + y{"y–y G"} + } + GyM{ + G{"MM-y GGGGG – MM-y GGGGG"} + M{"MM-y – MM-y GGGGG"} + y{"MM-y – MM-y GGGGG"} + } + GyMEd{ + G{"E, dd-MM-y GGGG – E, dd-MM-y GGGGG"} + M{"E, dd-MM-y – E, dd-MM-y GGGGG"} + d{"E, dd-MM-y – E, dd-MM-y GGGGG"} + y{"E, dd-MM-y – E, dd-MM-y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM y – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E, d MMM y G – E, d MMM y G"} + M{"E, d MMM d – E, d MMM y G"} + d{"E, d MMM – E, d MMM y G"} + y{"E, d MMM y – E, d MMM y G"} + } + GyMMMd{ + G{"d, MMM y G – d, MMM y G"} + M{"d, MMM – d, MMM y G"} + d{"d – d, MMM y G"} + y{"d, MMM y – d, MMM y G"} + } + GyMd{ + G{"dd-MM-y GGGGG – dd-MM-y GGGGG"} + M{"dd-MM-y – dd-MM-y GGGGG"} + d{"dd-MM-y – dd-MM-y GGGGG"} + y{"dd-MM-y – dd-MM-y GGGGG"} + } H{ H{"HH–HH"} } @@ -1394,4 +1470,19 @@ qu{ characters{"left-to-right"} lines{"top-to-bottom"} } + listPattern{ + or{ + 2{"{0} utaq {1}"} + end{"{0}, utaq {1}"} + start{"{0}, {1}"} + } + or-narrow{ + 2{"{0} utaq {1}"} + end{"{0}, utaq {1}"} + } + or-short{ + 2{"{0} utaq {1}"} + end{"{0}, utaq {1}"} + } + } } diff --git a/source/data/locales/qu_BO.txt b/source/data/locales/qu_BO.txt index 458780f..a4832b7 100644 --- a/source/data/locales/qu_BO.txt +++ b/source/data/locales/qu_BO.txt @@ -9,5 +9,5 @@ qu_BO{ } } } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/qu_EC.txt b/source/data/locales/qu_EC.txt index 18d8858..fc9b76a 100644 --- a/source/data/locales/qu_EC.txt +++ b/source/data/locales/qu_EC.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License qu_EC{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/qu_PE.txt b/source/data/locales/qu_PE.txt index 3dde3d6..78b7dad 100644 --- a/source/data/locales/qu_PE.txt +++ b/source/data/locales/qu_PE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License qu_PE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/rm.txt b/source/data/locales/rm.txt index ed09a85..b6c8d50 100644 --- a/source/data/locales/rm.txt +++ b/source/data/locales/rm.txt @@ -35,7 +35,7 @@ rm{ } minimumGroupingDigits{"1"} } - Version{"2.1.48.4"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -43,10 +43,10 @@ rm{ "HH:mm:ss z", "HH:mm:ss", "HH:mm", - "EEEE, 'ils' d 'da' MMMM y G", - "d 'da' MMMM y G", + "EEEE, 'ils' d MMMM y G", + "d MMMM y G", "dd-MM-y G", - "dd-MM-yy GGGGG", + "dd-MM-y GGGGG", "{1} {0}", "{1} {0}", "{1} {0}", @@ -54,57 +54,94 @@ rm{ "{1} {0}", } availableFormats{ + E{"ccc"} + EHm{"E HH:mm"} + EHms{"E HH:mm:ss"} Ed{"E d."} - H{"H"} - HHmm{"HH:mm"} - HHmmss{"HH:mm:ss"} - Hm{"H:mm"} + Ehm{"E h:mm a"} + Ehms{"E h:mm:ss a"} + Gy{"y G"} + GyMMM{"LLL y G"} + GyMMMEd{"E, dd-MM-y GGGGG"} + GyMMMMEd{"E, d MMMM y G"} + GyMMMMd{"d MMMM y G"} + GyMMMd{"dd-MM-y GGGGG"} + H{"HH"} + Hm{"HH:mm"} + Hms{"HH:mm:ss"} + Hmsv{"HH:mm:ss v"} + Hmv{"HH:mm v"} M{"L"} - MEd{"E, d.M."} + MEd{"E, dd-MM"} MMM{"LLL"} - MMMEd{"E d. MMM"} - MMMMEd{"E d. MMMM"} - MMMMd{"d. MMMM"} - MMMd{"d. MMM"} - MMd{"d.MM."} - MMdd{"dd.MM."} - Md{"d.M."} + MMMEd{"E, dd-MM"} + MMMMEd{"E, d MMMM"} + MMMMd{"d MMMM"} + MMMd{"dd-MM"} + Md{"dd-MM"} d{"d"} - mmss{"mm:ss"} + h{"h a"} + hm{"h:mm a"} + hms{"h:mm:ss a"} + hmsv{"h:mm:ss a v"} + hmv{"h:mm a v"} ms{"mm:ss"} - y{"y"} - yM{"y-M"} - yMEd{"E, y-M-d"} - yMM{"MM.y"} - yMMM{"MMM y"} - yMMMEd{"E, d. MMM y"} - yMMMM{"MMMM y"} - yMMdd{"dd.MM.y"} - yQQQ{"QQQ y"} - yQQQQ{"QQQQ y"} + y{"y G"} + yM{"MM-y GGGGG"} + yMEd{"E, dd-MM-y GGGGG"} + yMMM{"LLL y G"} + yMMMEd{"E, dd-MM-y GGGGG"} + yMMMM{"LLLL y G"} + yMMMMEd{"E, d MMMM y G"} + yMMMMd{"d MMMM y G"} + yMMMd{"dd-MM-y GGGGG"} + yQQQ{"QQQ y G"} + yQQQQ{"QQQQ y G"} } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ - M{"M.–M."} + M{"LL–LL"} } MEd{ - M{"E, dd.MM. – E, dd.MM."} - d{"E, dd.MM. – E, dd.MM."} + M{"E, dd-MM – E, dd-MM"} + d{"E, dd-MM – E, dd-MM"} } MMM{ - M{"MMM–MMM"} + M{"LLL–LLL"} } MMMEd{ - M{"E, d. MMM – E, d. MMM"} - d{"E, d. – E, d. MMM"} + M{"E, dd-MM – E, dd-MM"} + d{"E, dd-MM – E, dd-MM"} + } + MMMMEd{ + M{"E, d MMMM – E, d MMMM"} + d{"E, d. – E, d MMMM"} + } + MMMMd{ + M{"d MMMM – d MMMM"} + d{"d.–d MMMM"} } MMMd{ - M{"d. MMM – d. MMM"} - d{"d.–d. MMM"} + M{"dd-MM – dd-MM"} + d{"dd-MM – dd-MM"} } Md{ - M{"dd.MM. – dd.MM."} - d{"dd.MM. – dd.MM."} + M{"dd-MM – dd-MM"} + d{"dd-MM – dd-MM"} } d{ d{"d.–d."} @@ -129,39 +166,49 @@ rm{ h{"h–h a v"} } y{ - y{"y–y"} + y{"y–y G"} } yM{ - M{"MM.y – MM.y"} - y{"MM.y – MM.y"} + M{"LL-y – LL-y GGGGG"} + y{"LL-y – LL-y GGGGG"} } yMEd{ - M{"E, dd.MM.y – E, dd.MM.y"} - d{"E, dd.MM.y – E, dd.MM.y"} - y{"E, dd.MM.y – E, dd.MM.y"} + M{"E, dd-MM-y – E, dd-MM-y GGGGG"} + d{"E, dd-MM-y – E, dd-MM-y GGGGG"} + y{"E, dd-MM-y – E, dd-MM-y GGGGG"} } yMMM{ - M{"MMM–MMM y"} - y{"MMM y – MMM y"} + M{"LLL–LLL y G"} + y{"LLL y – LLL y G"} } yMMMEd{ - M{"E, d. MMM – E, d. MMM y"} - d{"E, d. – E, d. MMM y"} - y{"E, d. MMM y – E, d. MMM y"} + M{"E, dd-MM-y – E, dd-MM-y GGGGG"} + d{"E, dd-MM-y – E, dd-MM-y GGGGG"} + y{"E, dd-MM-y – E, dd-MM-y GGGGG"} } yMMMM{ - M{"MM – MM.y"} - y{"MM.y – MM.y"} + M{"LLLL–LLLL y G"} + y{"LLLL y – LLLL y G"} + } + yMMMMEd{ + M{"E, d MMMM – E, d MMMM y G"} + d{"E, d. – E, d MMMM y G"} + y{"E, d MMMM y – E, d MMMM y G"} + } + yMMMMd{ + M{"d MMMM – d MMMM y G"} + d{"d.–d MMMM y G"} + y{"d MMMM y – d MMMM y G"} } yMMMd{ - M{"d. MMM – d. MMM y"} - d{"d.–d. MMM y"} - y{"d. MMM y – d. MMM y"} + M{"dd-MM-y – dd-MM-y GGGGG"} + d{"dd-MM-y – dd-MM-y GGGGG"} + y{"dd-MM-y – dd-MM-y GGGGG"} } yMd{ - M{"dd.MM.y – dd.MM.y"} - d{"dd.MM.y – dd.MM.y"} - y{"dd.MM.y – dd.MM.y"} + M{"dd-MM-y – dd-MM-y GGGGG"} + d{"dd-MM-y – dd-MM-y GGGGG"} + y{"dd-MM-y – dd-MM-y GGGGG"} } } } @@ -183,8 +230,8 @@ rm{ "HH:mm:ss z", "HH:mm:ss", "HH:mm", - "EEEE, 'ils' d 'da' MMMM y", - "d 'da' MMMM y", + "EEEE, 'ils' d MMMM y", + "d MMMM y", "dd-MM-y", "dd-MM-yy", "{1} {0}", @@ -203,47 +250,44 @@ rm{ Ed{"E d."} Ehm{"E h:mm a"} Ehms{"E h:mm:ss a"} - Gy{"G y"} - GyMMM{"G y MMM"} - GyMMMEd{"G y MMM d, E"} - GyMMMd{"G y MMM d"} + Gy{"y G"} + GyMMM{"LLL y G"} + GyMMMEd{"E, dd-MM-y GGGGG"} + GyMMMMEd{"E, d MMMM y G"} + GyMMMMd{"d MMMM y G"} + GyMMMd{"dd-MM-y GGGGG"} H{"HH"} - HHmm{"HH:mm"} - HHmmss{"HH:mm:ss"} Hm{"HH:mm"} Hms{"HH:mm:ss"} Hmsv{"HH:mm:ss v"} Hmv{"HH:mm v"} M{"L"} - MEd{"E, d.M."} + MEd{"E, dd-MM"} MMM{"LLL"} - MMMEd{"E d. MMM"} - MMMMEd{"E d. MMMM"} - MMMMd{"d. MMMM"} - MMMd{"d. MMM"} - MMd{"d.MM."} - MMdd{"dd.MM."} - Md{"d.M."} + MMMEd{"E, dd-MM"} + MMMMEd{"E, d MMMM"} + MMMMd{"d MMMM"} + MMMd{"dd-MM"} + Md{"dd-MM"} d{"d"} h{"h a"} hm{"h:mm a"} hms{"h:mm:ss a"} hmsv{"h:mm:ss a v"} hmv{"h:mm a v"} - mmss{"mm:ss"} ms{"mm:ss"} y{"y"} - yM{"y-M"} - yMEd{"E, y-M-d"} - yMM{"MM.y"} - yMMM{"MMM y"} - yMMMEd{"y MMM d, E"} - yMMMM{"y MMMM"} - yMMMd{"y MMM d"} - yMMdd{"dd.MM.y"} - yMd{"y-MM-dd"} - yQQQ{"y QQQ"} - yQQQQ{"y QQQQ"} + yM{"LL-y"} + yMEd{"E, dd-MM-y"} + yMMM{"LLL y"} + yMMMEd{"E, dd-MM-y"} + yMMMM{"LLLL y"} + yMMMMEd{"E, d MMMM y"} + yMMMMd{"d MMMM y"} + yMMMd{"dd-MM-y"} + yMd{"dd-MM-y"} + yQQQ{"QQQ y"} + yQQQQ{"QQQQ y"} } dayNames{ format{ @@ -373,26 +417,34 @@ rm{ H{"HH–HH v"} } M{ - M{"MM–MM"} + M{"LL–LL"} } MEd{ - M{"MM-dd, E – MM-dd, E"} - d{"MM-dd, E – MM-dd, E"} + M{"E, dd-MM – E, dd-MM"} + d{"E, dd-MM – E, dd-MM"} } MMM{ M{"LLL–LLL"} } MMMEd{ - M{"MMM d, E – MMM d, E"} - d{"MMM d, E – MMM d, E"} + M{"E, dd-MM – E, dd-MM"} + d{"E, dd-MM – E, dd-MM"} + } + MMMMEd{ + M{"E, d MMMM – E, d MMMM"} + d{"E, d. – E, d MMMM"} + } + MMMMd{ + M{"d MMMM – d MMMM"} + d{"d.–d MMMM"} } MMMd{ - M{"MMM d – MMM d"} - d{"MMM d–d"} + M{"dd-MM – dd-MM"} + d{"dd-MM – dd-MM"} } Md{ - M{"MM-dd – MM-dd"} - d{"MM-dd – MM-dd"} + M{"dd-MM – dd-MM"} + d{"dd-MM – dd-MM"} } d{ d{"d–d"} @@ -420,36 +472,46 @@ rm{ y{"y–y"} } yM{ - M{"y-MM – y-MM"} - y{"y-MM – y-MM"} + M{"LL-y – LL-y"} + y{"LL-y – LL-y"} } yMEd{ - M{"y-MM-dd, E – y-MM-dd, E"} - d{"y-MM-dd, E – y-MM-dd, E"} - y{"y-MM-dd, E – y-MM-dd, E"} + M{"E, dd-MM-y – E, dd-MM-y"} + d{"E, dd-MM-y – E, dd-MM-y"} + y{"E, dd-MM-y – E, dd-MM-y"} } yMMM{ - M{"y MMM–MMM"} - y{"y MMM – y MMM"} + M{"LLL–LLL y"} + y{"LLL y – LLL y"} } yMMMEd{ - M{"y MMM d, E – MMM d, E"} - d{"y MMM d, E – MMM d, E"} - y{"y MMM d, E – y MMM d, E"} + M{"E, dd-MM-y – E, dd-MM-y"} + d{"E, dd-MM-y – E, dd-MM-y"} + y{"E, dd-MM-y – E, dd-MM-y"} } yMMMM{ - M{"y MMMM–MMMM"} - y{"y MMMM – y MMMM"} + M{"LLLL–LLLL y"} + y{"LLLL y – LLLL y"} + } + yMMMMEd{ + M{"E, d MMMM – E, d MMMM y"} + d{"E, d. – E, d MMMM y"} + y{"E, d MMMM y – E, d MMMM y"} + } + yMMMMd{ + M{"d MMMM – d MMMM y"} + d{"d.–d MMMM y"} + y{"d MMMM y – d MMMM y"} } yMMMd{ - M{"y MMM d – MMM d"} - d{"y MMM d–d"} - y{"y MMM d – y MMM d"} + M{"dd-MM-y – dd-MM-y"} + d{"dd-MM-y – dd-MM-y"} + y{"dd-MM-y – dd-MM-y"} } yMd{ - M{"y-MM-dd – y-MM-dd"} - d{"y-MM-dd – y-MM-dd"} - y{"y-MM-dd – y-MM-dd"} + M{"dd-MM-y – dd-MM-y"} + d{"dd-MM-y – dd-MM-y"} + y{"dd-MM-y – dd-MM-y"} } } monthNames{ @@ -483,18 +545,18 @@ rm{ "D", } wide{ - "schaner", - "favrer", - "mars", - "avrigl", - "matg", - "zercladur", - "fanadur", - "avust", - "settember", - "october", - "november", - "december", + "da schaner", + "da favrer", + "da mars", + "d’avrigl", + "da matg", + "da zercladur", + "da fanadur", + "d’avust", + "da settember", + "d’october", + "da november", + "da december", } } stand-alone{ diff --git a/source/data/locales/rm_CH.txt b/source/data/locales/rm_CH.txt index 38d1d6a..f63d3f3 100644 --- a/source/data/locales/rm_CH.txt +++ b/source/data/locales/rm_CH.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License rm_CH{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/rn.txt b/source/data/locales/rn.txt index d01794b..ca62d06 100644 --- a/source/data/locales/rn.txt +++ b/source/data/locales/rn.txt @@ -3,7 +3,7 @@ rn{ ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -17,7 +17,7 @@ rn{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/rn_BI.txt b/source/data/locales/rn_BI.txt index 15c2b16..fadf521 100644 --- a/source/data/locales/rn_BI.txt +++ b/source/data/locales/rn_BI.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License rn_BI{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ro.txt b/source/data/locales/ro.txt index c84d1b4..86f8098 100644 --- a/source/data/locales/ro.txt +++ b/source/data/locales/ro.txt @@ -12,19 +12,22 @@ ro{ } ExemplarCharacters{"[a ă â b c d e f g h i î j k l m n o p r s ș t ț u v w x y z]"} ExemplarCharactersIndex{"[A Ă Â B C D E F G H I Î J K L M N O P Q R S Ș T Ț U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . … ' ‘ \u0022 “ ” „ « » ( ) \\[ \\] @ * /]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ \u0022 “ ” „ « » ( ) \\[ \\] @ * /]"} MoreInformation{"..."} NumberElements{ default{"latn"} latn{ miscPatterns{ + approximately{"~{0}"} atLeast{"≥{0}"} + atMost{"≤{0}"} range{"{0} - {1}"} } patterns{ accountingFormat{"#,##0.00 ¤;(#,##0.00 ¤)"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -224,9 +227,11 @@ ro{ group{"."} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -245,7 +250,7 @@ ro{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -264,17 +269,21 @@ ro{ "{1}, {0}", } availableFormats{ + E{"ccc"} Ed{"E d"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E, d MMM y G"} GyMMMd{"d MMM y G"} + M{"L"} MEd{"E, dd.MM"} + MMM{"LLL"} MMMEd{"E, d MMM"} MMMMEd{"E, d MMMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"dd.MM"} + d{"d"} y{"y"} yyyy{"y G"} yyyyM{"MM.y G"} @@ -299,6 +308,20 @@ ro{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -321,6 +344,28 @@ ro{ M{"dd.MM – dd.MM"} d{"dd.MM – dd.MM"} } + d{ + d{"d–d"} + } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -454,6 +499,21 @@ ro{ "Mesori", "Pi Kogi Enavot", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "Thout", "Paopi", @@ -486,6 +546,21 @@ ro{ "Mesori", "Pi Kogi Enavot", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "Thout", "Paopi", @@ -536,6 +611,21 @@ ro{ "nehase", "pagumen", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "meskerem", "taqemt", @@ -568,6 +658,21 @@ ro{ "nehase", "pagumen", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "meskerem", "taqemt", @@ -647,15 +752,6 @@ ro{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y – y G"} @@ -694,6 +790,20 @@ ro{ d{"dd.MM.y – dd.MM.y GGGGG"} y{"dd.MM.y – dd.MM.y GGGGG"} } + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -720,6 +830,24 @@ ro{ d{"d–d"} } fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -1012,14 +1140,9 @@ ro{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} + Gy{ + G{"y G – y G"} + y{"y – y G"} } GyM{ G{"MM.y GGGGG – MM.y GGGGG"} @@ -1309,6 +1432,22 @@ ro{ "Elul", "Adar II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "Tișrei", "Heșvan", @@ -1343,6 +1482,22 @@ ro{ "Elul", "Adar II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "Tișrei", "Heșvan", @@ -1363,6 +1518,17 @@ ro{ } } indian{ + eras{ + abbreviated{ + "Saka", + } + narrow{ + "Saka", + } + wide{ + "Saka", + } + } monthNames{ format{ abbreviated{ @@ -1379,6 +1545,20 @@ ro{ "Magh", "Phalguna", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "Chaitra", "Vaisakha", @@ -1409,6 +1589,20 @@ ro{ "Magh", "Phalguna", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "Chaitra", "Vaisakha", @@ -1431,10 +1625,103 @@ ro{ abbreviated{ "AH", } + narrow{ + "AH", + } wide{ "A.H.", } } + monthNames{ + format{ + abbreviated{ + "Muh.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dhuʻl-Q.", + "Dhuʻl-H.", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Muharram", + "Safar", + "Rabiʻ I", + "Rabiʻ II", + "Jumada I", + "Jumada II", + "Rajab", + "Shaʻban", + "Ramadan", + "Shawwal", + "Dhuʻl-Qiʻdah", + "Dhuʻl-Hijjah", + } + } + stand-alone{ + abbreviated{ + "Muh.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dhuʻl-Q.", + "Dhuʻl-H.", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Muharram", + "Safar", + "Rabiʻ I", + "Rabiʻ II", + "Jumada I", + "Jumada II", + "Rajab", + "Shaʻban", + "Ramadan", + "Shawwal", + "Dhuʻl-Qiʻdah", + "Dhuʻl-Hijjah", + } + } + } } persian{ eras{ @@ -1464,6 +1751,20 @@ ro{ "Bahman", "Esfand", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "Farvardin", "Ordibehesht", @@ -1494,6 +1795,20 @@ ro{ "Bahman", "Esfand", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "Farvardin", "Ordibehesht", @@ -2428,7 +2743,7 @@ ro{ dn{"săpt."} relative{ "-1"{"săpt. trecută"} - "0"{"săptămâna aceasta"} + "0"{"săpt. aceasta"} "1"{"săpt. viitoare"} } relativePeriod{"săpt. cu {0}"} @@ -2567,6 +2882,8 @@ ro{ or{ 2{"{0} sau {1}"} end{"{0} sau {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} } standard{ 2{"{0} și {1}"} @@ -2577,8 +2894,6 @@ ro{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} și {1}"} @@ -2636,6 +2951,10 @@ ro{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/ro_MD.txt b/source/data/locales/ro_MD.txt index d885379..3fd1693 100644 --- a/source/data/locales/ro_MD.txt +++ b/source/data/locales/ro_MD.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ro_MD{ - Version{"2.1.48.43"} + Version{"36"} calendar{ gregorian{ dayNames{ diff --git a/source/data/locales/ro_RO.txt b/source/data/locales/ro_RO.txt index 03fcf71..e93891b 100644 --- a/source/data/locales/ro_RO.txt +++ b/source/data/locales/ro_RO.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ro_RO{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/rof.txt b/source/data/locales/rof.txt index cd3d972..6389091 100644 --- a/source/data/locales/rof.txt +++ b/source/data/locales/rof.txt @@ -11,7 +11,7 @@ rof{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/rof_TZ.txt b/source/data/locales/rof_TZ.txt index b5a18f7..d5aece1 100644 --- a/source/data/locales/rof_TZ.txt +++ b/source/data/locales/rof_TZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License rof_TZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/root.txt b/source/data/locales/root.txt index 15dfbbc..e1ad400 100644 --- a/source/data/locales/root.txt +++ b/source/data/locales/root.txt @@ -14,8 +14,8 @@ root{ word-medial{"{0} … {1}"} } ExemplarCharacters{"[]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . ( ) \\[ \\] \\{ \\}]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ( ) \\[ \\] \\{ \\}]"} MoreInformation{"?"} NumberElements{ arab{ @@ -174,7 +174,7 @@ root{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ AmPmMarkers:alias{"/LOCALE/calendar/gregorian/AmPmMarkers"} diff --git a/source/data/locales/ru.txt b/source/data/locales/ru.txt index 9b83f52..5b9a96c 100644 --- a/source/data/locales/ru.txt +++ b/source/data/locales/ru.txt @@ -15,10 +15,10 @@ ru{ } ExemplarCharacters{"[а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я]"} ExemplarCharactersIndex{"[А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * / " - "\\& #]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * " + "/ \\& #]" } MoreInformation{"?"} NumberElements{ @@ -33,6 +33,7 @@ ru{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -291,7 +292,7 @@ ru{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ eras{ @@ -450,6 +451,21 @@ ru{ "мисра", "наси", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "тот", "бабэ", @@ -482,6 +498,21 @@ ru{ "мисра", "наси", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "тот", "бабэ", @@ -532,6 +563,21 @@ ru{ "нахасэ", "эпагомен", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "мескерем", "текемт", @@ -564,6 +610,21 @@ ru{ "нахасэ", "эпагомен", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "мескерем", "текемт", @@ -642,12 +703,7 @@ ru{ yyyyQQQQ{"QQQQ y 'г'. G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } @@ -1022,7 +1078,7 @@ ru{ "н. э.", } abbreviated%variant{ - "BCE", + "до н. э.", "н. э.", } narrow{ @@ -1030,7 +1086,7 @@ ru{ "н.э.", } narrow%variant{ - "BCE", + "до н. э.", "н. э.", } wide{ @@ -1043,12 +1099,7 @@ ru{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } @@ -1322,6 +1373,12 @@ ru{ } hebrew{ eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } wide{ "от сотворения мира", } @@ -1344,6 +1401,22 @@ ru{ "элул", "адар II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "тишрей", "хешван", @@ -1378,6 +1451,22 @@ ru{ "элул", "адар II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "тишрей", "хешван", @@ -1425,6 +1514,20 @@ ru{ "магха", "пхалгуна", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "чайтра", "ваисакха", @@ -1455,6 +1558,20 @@ ru{ "магха", "пхалгуна", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "чайтра", "ваисакха", @@ -1474,6 +1591,12 @@ ru{ } islamic{ eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } wide{ "после хиджры", } @@ -1494,6 +1617,20 @@ ru{ "зуль-к.", "зуль-х.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "мухаррам", "сафар", @@ -1524,6 +1661,20 @@ ru{ "зуль-к.", "зуль-х.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "мухаррам", "сафар", @@ -1812,6 +1963,20 @@ ru{ "бахман", "эсфанд", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "фарвардин", "ордибехешт", @@ -1842,6 +2007,20 @@ ru{ "бахман", "эсфанд", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "фарвардин", "ордибехешт", @@ -2048,7 +2227,10 @@ ru{ day-narrow{ dn{"дн."} relative{ + "-1"{"вчера"} "-2"{"позавчера"} + "0"{"сегодня"} + "1"{"завтра"} "2"{"послезавтра"} } relativeTime{ @@ -2069,7 +2251,10 @@ ru{ day-short{ dn{"дн."} relative{ + "-1"{"вчера"} "-2"{"позавчера"} + "0"{"сегодня"} + "1"{"завтра"} "2"{"послезавтра"} } relativeTime{ @@ -2204,16 +2389,16 @@ ru{ } relativeTime{ future{ - few{"+{0} ч."} - many{"+{0} ч."} - one{"+{0} ч."} - other{"+{0} ч."} + few{"+{0} ч"} + many{"+{0} ч"} + one{"+{0} ч"} + other{"+{0} ч"} } past{ - few{"-{0} ч."} - many{"-{0} ч."} - one{"-{0} ч."} - other{"-{0} ч."} + few{"-{0} ч"} + many{"-{0} ч"} + one{"-{0} ч"} + other{"-{0} ч"} } } } @@ -2221,16 +2406,16 @@ ru{ dn{"ч"} relativeTime{ future{ - few{"через {0} ч."} - many{"через {0} ч."} - one{"через {0} ч."} - other{"через {0} ч."} + few{"через {0} ч"} + many{"через {0} ч"} + one{"через {0} ч"} + other{"через {0} ч"} } past{ - few{"{0} ч. назад"} - many{"{0} ч. назад"} - one{"{0} ч. назад"} - other{"{0} ч. назад"} + few{"{0} ч назад"} + many{"{0} ч назад"} + one{"{0} ч назад"} + other{"{0} ч назад"} } } } @@ -2258,16 +2443,16 @@ ru{ dn{"мин"} relativeTime{ future{ - few{"+{0} мин."} - many{"+{0} мин."} - one{"+{0} мин."} - other{"+{0} мин."} + few{"+{0} мин"} + many{"+{0} мин"} + one{"+{0} мин"} + other{"+{0} мин"} } past{ - few{"-{0} мин."} - many{"-{0} мин."} - one{"-{0} мин."} - other{"-{0} мин."} + few{"-{0} мин"} + many{"-{0} мин"} + one{"-{0} мин"} + other{"-{0} мин"} } } } @@ -2880,7 +3065,7 @@ ru{ relative{ "-1"{"на пр. нед."} "0"{"на эт. нед."} - "1"{"на след. неделе"} + "1"{"на след. нед."} } relativePeriod{"на нед. {0}"} relativeTime{ @@ -3040,8 +3225,6 @@ ru{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} и {1}"} diff --git a/source/data/locales/ru_BY.txt b/source/data/locales/ru_BY.txt index 362c31c..1e27d84 100644 --- a/source/data/locales/ru_BY.txt +++ b/source/data/locales/ru_BY.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ru_BY{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ru_KG.txt b/source/data/locales/ru_KG.txt index 0d0fd06..556d6c4 100644 --- a/source/data/locales/ru_KG.txt +++ b/source/data/locales/ru_KG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ru_KG{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ru_KZ.txt b/source/data/locales/ru_KZ.txt index edb2674..3027bb1 100644 --- a/source/data/locales/ru_KZ.txt +++ b/source/data/locales/ru_KZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ru_KZ{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ru_MD.txt b/source/data/locales/ru_MD.txt index 14242b0..7910a0c 100644 --- a/source/data/locales/ru_MD.txt +++ b/source/data/locales/ru_MD.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ru_MD{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ru_RU.txt b/source/data/locales/ru_RU.txt index fe19382..31bcfa5 100644 --- a/source/data/locales/ru_RU.txt +++ b/source/data/locales/ru_RU.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ru_RU{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ru_UA.txt b/source/data/locales/ru_UA.txt index 3da070e..380bd47 100644 --- a/source/data/locales/ru_UA.txt +++ b/source/data/locales/ru_UA.txt @@ -4,7 +4,7 @@ ru_UA{ NumberElements{ minimumGroupingDigits{"2"} } - Version{"2.1.47.71"} + Version{"36"} calendar{ gregorian{ availableFormats{ diff --git a/source/data/locales/rw.txt b/source/data/locales/rw.txt index 748c618..e93fb7d 100644 --- a/source/data/locales/rw.txt +++ b/source/data/locales/rw.txt @@ -3,7 +3,7 @@ rw{ ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ miscPatterns{ @@ -32,7 +32,7 @@ rw{ } minimumGroupingDigits{"1"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/rw_RW.txt b/source/data/locales/rw_RW.txt index 4a3589f..d0a088e 100644 --- a/source/data/locales/rw_RW.txt +++ b/source/data/locales/rw_RW.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License rw_RW{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/rwk.txt b/source/data/locales/rwk.txt index e58c165..609cb13 100644 --- a/source/data/locales/rwk.txt +++ b/source/data/locales/rwk.txt @@ -11,7 +11,7 @@ rwk{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/rwk_TZ.txt b/source/data/locales/rwk_TZ.txt index 3bf5557..46af695 100644 --- a/source/data/locales/rwk_TZ.txt +++ b/source/data/locales/rwk_TZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License rwk_TZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/sah.txt b/source/data/locales/sah.txt index 10ac568..c08a509 100644 --- a/source/data/locales/sah.txt +++ b/source/data/locales/sah.txt @@ -12,7 +12,7 @@ sah{ } ExemplarCharacters{"[а б г ҕ д {дь} и й к л м н {нь} ҥ о ө п р с т у ү х һ ч ы э]"} ExemplarCharactersIndex{"[А Б Г Ҕ Д {Дь} И Й К Л М Н {Нь} Ҥ О Ө П Р С Т У Ү Х Һ Ч Ы Э]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{"[\\:]"} MoreInformation{"?"} NumberElements{ @@ -164,7 +164,7 @@ sah{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/sah_RU.txt b/source/data/locales/sah_RU.txt index 17a739e..aee6b55 100644 --- a/source/data/locales/sah_RU.txt +++ b/source/data/locales/sah_RU.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sah_RU{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/saq.txt b/source/data/locales/saq.txt index bb71af9..6b07978 100644 --- a/source/data/locales/saq.txt +++ b/source/data/locales/saq.txt @@ -12,7 +12,7 @@ saq{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/saq_KE.txt b/source/data/locales/saq_KE.txt index db9d2b4..6d54560 100644 --- a/source/data/locales/saq_KE.txt +++ b/source/data/locales/saq_KE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License saq_KE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/sbp.txt b/source/data/locales/sbp.txt index 9c7382a..13710f8 100644 --- a/source/data/locales/sbp.txt +++ b/source/data/locales/sbp.txt @@ -4,7 +4,7 @@ sbp{ AuxExemplarCharacters{"[q r x z]"} ExemplarCharacters{"[a b c d e f g h i j k l m n o p s t u v w y]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P S T U V W Y]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -18,7 +18,7 @@ sbp{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/sbp_TZ.txt b/source/data/locales/sbp_TZ.txt index 45ea268..e511d4b 100644 --- a/source/data/locales/sbp_TZ.txt +++ b/source/data/locales/sbp_TZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sbp_TZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/sd.txt b/source/data/locales/sd.txt index 5ddf472..d2f608e 100644 --- a/source/data/locales/sd.txt +++ b/source/data/locales/sd.txt @@ -18,9 +18,8 @@ sd{ "[ا ب ٻ پ ڀ ت ث ٺ ٽ ٿ ج {جھ} ڃ ڄ چ ڇ ح خ د ذ ڊ ڌ ڍ ڏ ر ز ڙ س ش ص ض ط ظ ع غ ف " "ڦ ق ک ڪ گ {گھ} ڱ ڳ ل م ن ڻ ه ھ و ي]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{"[⹁ ⁏ \\: ! ۔ ‘ ( ) \\[ \\] \\{ \\} /]"} - MoreInformation{"?"} NumberElements{ default{"arab"} latn{ @@ -33,6 +32,7 @@ sd{ patterns{ accountingFormat{"¤ #,##0.00"} currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -44,47 +44,47 @@ sd{ } 10000{ one{"00 ھزار"} - other{"00K"} + other{"00 هزار"} } 100000{ - one{"000K"} - other{"000K"} + one{"000 هزار"} + other{"000 هزار"} } 1000000{ - one{"0M"} - other{"0M"} + one{"0 ملين"} + other{"0 ملين"} } 10000000{ - one{"00M"} - other{"00M"} + one{"00 ملين"} + other{"00 ملين"} } 100000000{ - one{"000M"} - other{"000M"} + one{"000 ملين"} + other{"000 ملين"} } 1000000000{ - one{"0G"} - other{"0G"} + one{"0 بلين"} + other{"0 بلين"} } 10000000000{ - one{"00G"} - other{"00G"} + one{"00 بلين"} + other{"00 بلين"} } 100000000000{ - one{"000G"} - other{"000G"} + one{"000 بلين"} + other{"000 بلين"} } 1000000000000{ - one{"0T"} - other{"0T"} + one{"0 ٽرلين"} + other{"0 ٽرلين"} } 10000000000000{ - one{"00T"} - other{"00T"} + one{"00 ٽرلين"} + other{"00 ٽرلين"} } 100000000000000{ - one{"000T"} - other{"000T"} + one{"000 ٽرلين"} + other{"000 ٽرلين"} } } } @@ -165,16 +165,16 @@ sd{ other{"000M"} } 1000000000{ - one{"0G"} - other{"0G"} + one{"0B"} + other{"0B"} } 10000000000{ - one{"00G"} - other{"00G"} + one{"00B"} + other{"00B"} } 100000000000{ - one{"000G"} - other{"000G"} + one{"000B"} + other{"000B"} } 1000000000000{ one{"0T"} @@ -191,11 +191,15 @@ sd{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} } } @@ -208,9 +212,10 @@ sd{ other{"{0} ڪتابون"} } } + minimumGroupingDigits{"1"} native{"arab"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -281,44 +286,6 @@ sd{ h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } M{ M{"MM–MM"} } @@ -945,7 +912,6 @@ sd{ } delimiters{ alternateQuotationEnd{"’"} - alternateQuotationStart{"‘"} quotationEnd{"”"} quotationStart{"“"} } @@ -1686,6 +1652,11 @@ sd{ } year-narrow{ dn{"سال"} + relative{ + "-1"{"پوئين سال"} + "0"{"هن سال"} + "1"{"اڳيئن سال"} + } relativeTime{ future{ one{"{0} سالن ۾"} @@ -1740,11 +1711,8 @@ sd{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ - 2{"{0} ۽ {1}"} - end{"{0}، ۽ {1}"} middle{"{0}, {1}"} start{"{0}, {1}"} } @@ -1773,12 +1741,6 @@ sd{ metric{"ميٽرڪ"} } parse{ - date{ - lenient{ - "[\\--/]", - "[\\:∶]", - } - } general{ lenient{ "[.․。︒﹒.。]", @@ -1798,6 +1760,10 @@ sd{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/sd_PK.txt b/source/data/locales/sd_PK.txt index b3705c4..c381bd4 100644 --- a/source/data/locales/sd_PK.txt +++ b/source/data/locales/sd_PK.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sd_PK{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/se.txt b/source/data/locales/se.txt index d3f78c6..5b0e20a 100644 --- a/source/data/locales/se.txt +++ b/source/data/locales/se.txt @@ -166,7 +166,7 @@ se{ } minimumGroupingDigits{"1"} } - Version{"2.1.48.4"} + Version{"36"} calendar{ gregorian{ AmPmMarkers{ diff --git a/source/data/locales/se_FI.txt b/source/data/locales/se_FI.txt index 01f50ca..0838e01 100644 --- a/source/data/locales/se_FI.txt +++ b/source/data/locales/se_FI.txt @@ -62,7 +62,7 @@ se_FI{ } } } - Version{"2.1.47.83"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -450,10 +450,7 @@ se_FI{ fields{ day{ relative{ - "-1"{"ikte"} "-2"{"ovddet beaivvi"} - "0"{"odne"} - "1"{"ihttin"} "2"{"don beaivve"} } relativeTime{ diff --git a/source/data/locales/se_NO.txt b/source/data/locales/se_NO.txt index a6c3c15..56e7e37 100644 --- a/source/data/locales/se_NO.txt +++ b/source/data/locales/se_NO.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License se_NO{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/se_SE.txt b/source/data/locales/se_SE.txt index dd6b47a..529b060 100644 --- a/source/data/locales/se_SE.txt +++ b/source/data/locales/se_SE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License se_SE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/seh.txt b/source/data/locales/seh.txt index 45c4bd3..4f1c5b1 100644 --- a/source/data/locales/seh.txt +++ b/source/data/locales/seh.txt @@ -6,7 +6,7 @@ seh{ " z]" } ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -18,7 +18,7 @@ seh{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/seh_MZ.txt b/source/data/locales/seh_MZ.txt index ccec024..3de814d 100644 --- a/source/data/locales/seh_MZ.txt +++ b/source/data/locales/seh_MZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License seh_MZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ses.txt b/source/data/locales/ses.txt index 529289e..356f606 100644 --- a/source/data/locales/ses.txt +++ b/source/data/locales/ses.txt @@ -4,7 +4,7 @@ ses{ AuxExemplarCharacters{"[v]"} ExemplarCharacters{"[a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž]"} ExemplarCharactersIndex{"[A à B C D E Ẽ F G H I J K L M N Ɲ Ŋ O Õ P Q R S Š T U W X Y Z Ž]"} - ExemplarCharactersNumbers{"[  \\- . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -15,7 +15,7 @@ ses{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ses_ML.txt b/source/data/locales/ses_ML.txt index 75126b5..865c9e6 100644 --- a/source/data/locales/ses_ML.txt +++ b/source/data/locales/ses_ML.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ses_ML{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/sg.txt b/source/data/locales/sg.txt index 40eecea..1de4b54 100644 --- a/source/data/locales/sg.txt +++ b/source/data/locales/sg.txt @@ -4,7 +4,7 @@ sg{ AuxExemplarCharacters{"[c q x]"} ExemplarCharacters{"[a â ä b d e ê ë f g h i î ï j k l m n o ô ö p r s t u ù û ü v w y z]"} ExemplarCharactersIndex{"[A B D E F G H I J K L M N O P R S T U V W Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -16,7 +16,7 @@ sg{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/sg_CF.txt b/source/data/locales/sg_CF.txt index 9acd392..e6bed63 100644 --- a/source/data/locales/sg_CF.txt +++ b/source/data/locales/sg_CF.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sg_CF{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/shi.txt b/source/data/locales/shi.txt index 5e62f1a..a7f6775 100644 --- a/source/data/locales/shi.txt +++ b/source/data/locales/shi.txt @@ -3,7 +3,7 @@ shi{ ExemplarCharacters{"[ⴰ ⴱ ⴳ {ⴳⵯ} ⴷ ⴹ ⴻ ⴼ ⴽ {ⴽⵯ} ⵀ ⵃ ⵄ ⵅ ⵇ ⵉ ⵊ ⵍ ⵎ ⵏ ⵓ ⵔ ⵕ ⵖ ⵙ ⵚ ⵛ ⵜ ⵟ ⵡ ⵢ ⵣ ⵥ]"} ExemplarCharactersIndex{"[ⴰ ⴱ ⴳ ⴷ ⴹ ⴻ ⴼ ⴽ ⵀ ⵃ ⵄ ⵅ ⵇ ⵉ ⵊ ⵍ ⵎ ⵏ ⵓ ⵔ ⵕ ⵖ ⵙ ⵚ ⵛ ⵜ ⵟ ⵡ ⵢ ⵣ ⵥ]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -15,7 +15,7 @@ shi{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/shi_Latn.txt b/source/data/locales/shi_Latn.txt index 50db9c4..7a109e5 100644 --- a/source/data/locales/shi_Latn.txt +++ b/source/data/locales/shi_Latn.txt @@ -5,7 +5,7 @@ shi_Latn{ AuxExemplarCharacters{"[o p v]"} ExemplarCharacters{"[a b c d ḍ e ɛ f g {gʷ} ɣ h ḥ i j k {kʷ} l m n q r ṛ s ṣ t ṭ u w x y z]"} ExemplarCharactersIndex{"[A B C D Ḍ E Ɛ F G {Gʷ} Ɣ H Ḥ I J K {Kʷ} L M N Q R Ṛ S Ṣ T Ṭ U W X Y Z]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -17,7 +17,7 @@ shi_Latn{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/shi_Latn_MA.txt b/source/data/locales/shi_Latn_MA.txt index 6d11c12..7b72cd7 100644 --- a/source/data/locales/shi_Latn_MA.txt +++ b/source/data/locales/shi_Latn_MA.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License shi_Latn_MA{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/shi_Tfng.txt b/source/data/locales/shi_Tfng.txt index 2e3827e..ea72d32 100644 --- a/source/data/locales/shi_Tfng.txt +++ b/source/data/locales/shi_Tfng.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License shi_Tfng{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/shi_Tfng_MA.txt b/source/data/locales/shi_Tfng_MA.txt index 6eec796..6547a75 100644 --- a/source/data/locales/shi_Tfng_MA.txt +++ b/source/data/locales/shi_Tfng_MA.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License shi_Tfng_MA{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/si.txt b/source/data/locales/si.txt index f605aab..6ecca15 100644 --- a/source/data/locales/si.txt +++ b/source/data/locales/si.txt @@ -19,13 +19,14 @@ si{ "[අ ආ ඇ ඈ ඉ ඊ උ ඌ ඍ එ ඒ ඓ ඔ ඕ ඖ ක ඛ ග ඝ ඞ ඟ ච ඡ ජ ඣ ඥ ඤ ට ඨ ඩ ඪ ණ ඬ ත ථ ද ධ න" " ඳ ප ඵ බ භ ම ඹ ය ර ල ව ශ ෂ ස හ ළ ෆ]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -36,6 +37,7 @@ si{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#"} } @@ -194,11 +196,15 @@ si{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{"."} } @@ -212,8 +218,10 @@ si{ other{"පොත් {0}ක් ඇත. ඒවා කියවීමි."} } } + minimumGroupingDigits{"1"} + native{"latn"} } - Version{"2.1.48.17"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -951,7 +959,7 @@ si{ african_scripts{"අප්රිකානු සිද්ධි මාලා"} american_scripts{"ඇමරිකානු සිද්ධි මාලා"} animal{"සතා"} - animals_nature{"සත්වයින් සහ ස්වභාවදර්මය"} + animals_nature{"සත්වයින් හෝ ස්වභාවදර්මය"} arrows{"ඊතල"} body{"ශරීරය"} box_drawing{"පෙට්ටි ඇදීම"} @@ -1866,12 +1874,6 @@ si{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} සහ {1}"} - end{"{0}, සහ {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} සහ {1}"} end{"{0}, සහ {1}"} diff --git a/source/data/locales/si_LK.txt b/source/data/locales/si_LK.txt index c6c2c2f..295d9ec 100644 --- a/source/data/locales/si_LK.txt +++ b/source/data/locales/si_LK.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License si_LK{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/sk.txt b/source/data/locales/sk.txt index ec1cc6c..373004d 100644 --- a/source/data/locales/sk.txt +++ b/source/data/locales/sk.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sk{ - AuxExemplarCharacters{"[à ă â å ā æ ç è ĕ ê ë ē ì ĭ î ï ī ñ ò ŏ ö ø ō œ ř ù ŭ û ü ū ÿ]"} + AuxExemplarCharacters{"[à ă â å ā æ ç è ĕ ê ë ē ì ĭ î ï ī ñ ò ŏ ö ő ø ō œ ř ù ŭ û ü ű ū ÿ]"} Ellipsis{ final{"{0}…"} initial{"…{0}"} @@ -11,12 +11,12 @@ sk{ word-medial{"{0} … {1}"} } ExemplarCharacters{ - "[a á ä b c č d ď e é f g h {ch} i í j k l ĺ ľ m n ň o ó ô p q r ŕ s š t ť u " - "ú v w x y ý z ž]" + "[a á ä b c č d ď {dz} {dž} e é f g h {ch} i í j k l ĺ ľ m n ň o ó ô p q r ŕ " + "s š t ť u ú v w x y ý z ž]" } ExemplarCharactersIndex{"[A Ä B C Č D Ď E F G H {CH} I J K L Ľ M N O Ô P Q R S Š T Ť U V W X Y Z Ž]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] § @ * / \\&]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] § @ * / \\&]"} MoreInformation{"?"} NumberElements{ default{"latn"} @@ -30,6 +30,7 @@ sk{ patterns{ accountingFormat{"#,##0.00 ¤;(#,##0.00 ¤)"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -265,9 +266,11 @@ sk{ group{" "} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -286,9 +289,36 @@ sk{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ + buddhist{ + eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } + wide{ + "BE", + } + } + } coptic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -357,6 +387,20 @@ sk{ } } ethiopic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -489,11 +533,9 @@ sk{ } intervalFormats{ Bh{ - B{"h B – h B"} h{"h – h B"} } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } @@ -593,6 +635,7 @@ sk{ m{"h:mm – h:mm a v"} } hv{ + a{"h a – h a v"} h{"h – h a v"} } y{ @@ -633,6 +676,18 @@ sk{ } } gregorian{ + AmPmMarkers{ + "AM", + "PM", + } + AmPmMarkersAbbr{ + "AM", + "PM", + } + AmPmMarkersNarrow{ + "AM", + "PM", + } DateTimePatterns{ "H:mm:ss zzzz", "H:mm:ss z", @@ -679,10 +734,10 @@ sk{ MMMEd{"E d. M."} MMMMEd{"E d. MMMM"} MMMMW{ - few{"W. 'týždeň' 'v' MMMM"} - many{"W. 'týždeň' 'v' MMMM"} - one{"W. 'týždeň' 'v' MMMM"} - other{"W. 'týždeň' 'v' MMMM"} + few{"W. 'týždeň' MMMM"} + many{"W. 'týždeň' MMMM"} + one{"W. 'týždeň' MMMM"} + other{"W. 'týždeň' MMMM"} } MMMMd{"d. MMMM"} MMMd{"d. M."} @@ -877,11 +932,9 @@ sk{ } intervalFormats{ Bh{ - B{"h B – h B"} h{"h – h B"} } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } @@ -1154,6 +1207,17 @@ sk{ } } hebrew{ + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } monthNames{ format{ abbreviated{ @@ -1301,6 +1365,17 @@ sk{ } } islamic{ + eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } + wide{ + "AH", + } + } monthNames{ format{ abbreviated{ @@ -1365,6 +1440,17 @@ sk{ } } persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } monthNames{ format{ abbreviated{ @@ -2571,12 +2657,6 @@ sk{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} a {1}"} - end{"{0} a {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} a {1}"} end{"{0} a {1}"} @@ -2633,6 +2713,10 @@ sk{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/sk_SK.txt b/source/data/locales/sk_SK.txt index 70e228e..6bb5686 100644 --- a/source/data/locales/sk_SK.txt +++ b/source/data/locales/sk_SK.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sk_SK{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/sl.txt b/source/data/locales/sl.txt index dd330f3..2609bd1 100644 --- a/source/data/locales/sl.txt +++ b/source/data/locales/sl.txt @@ -16,18 +16,21 @@ sl{ ExemplarCharacters{"[a b c č d e f g h i j k l m n o p r s š t u v z ž]"} ExemplarCharactersIndex{"[A B C Č Ć D Đ E F G H I J K L M N O P Q R S Š T U V W X Y Z Ž]"} ExemplarCharactersNumbers{"[, . % ‰ + − 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- – , ; \\: ! ? . … ' \u0022 „ ‟ « » ( ) \\[ \\] \\{ \\} @ *]"} + ExemplarCharactersPunctuation{"[\\- ‑ – , ; \\: ! ? . … ' \u0022 „ ‟ « » ( ) \\[ \\] \\{ \\} @ *]"} MoreInformation{"?"} NumberElements{ default{"latn"} latn{ miscPatterns{ - atLeast{"≥{0}"} + approximately{"~ {0}"} + atLeast{"≥ {0}"} + atMost{"≤ {0}"} range{"{0}–{1}"} } patterns{ accountingFormat{"#,##0.00 ¤;(#,##0.00 ¤)"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -268,6 +271,7 @@ sl{ perMille{"‰"} percentSign{"%"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -284,7 +288,7 @@ sl{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ buddhist{ eras{ @@ -362,50 +366,47 @@ sl{ intervalFormats{ Bh{ B{"h B–h B"} - h{"h–h B"} } Bhm{ B{"h:mm B–h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} } Gy{ - G{"G y – G y"} - y{"G y–y"} + G{"y G–y G"} + y{"y–y G"} } GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} + G{"M y GGGGG–M y GGGGG"} + M{"M y–M y GGGGG"} + y{"M y–M y GGGGG"} } GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} + G{"E, d. M y GGGGG–E, d. M y GGGGG"} + M{"E, d. M y–E, d. M y GGGGG"} + d{"E, d. M y–E, d. M y GGGGG"} + y{"E, d. M y–E, d. M y GGGGG"} } GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} + G{"MMM y G–MMM y G"} + M{"MMM–MMM y G"} + y{"MMM y–MMM y G"} } GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} + G{"E, d. MMM y G–E, d. MMM y G"} + M{"E, d. MMM–E, d. MMM y G"} + d{"E, d. MMM–E, d. MMM y G"} + y{"E, d. MMM y–E, d. MMM y G"} } GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} + G{"d. MMM y G–d. MMM y G"} + M{"d. MMM–d. MMM y G"} + d{"d.–d. MMM y G"} + y{"d. MMM y–d. MMM y G"} } GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + G{"d. M y GGGGG–d. M y GGGGG"} + M{"d. M y–d. M y GGGGG"} + d{"d. M y–d. M y GGGGG"} + y{"d. M y–d. M y GGGGG"} } H{ H{"HH–HH"} @@ -470,35 +471,35 @@ sl{ } yM{ M{"M.–M. y"} - y{"M. y – M. y"} + y{"M. y–M. y"} } yMEd{ - M{"E, d. M. – E, d. M. y"} - d{"E, d. – E, d. M. y"} - y{"E, d. M. y – E, d. M. y"} + M{"E, d. M.–E, d. M. y"} + d{"E, d.–E, d. M. y"} + y{"E, d. M. y–E, d. M. y"} } yMMM{ - M{"MMM – MMM y"} - y{"MMM y – MMM y"} + M{"MMM–MMM y"} + y{"MMM y–MMM y"} } yMMMEd{ - M{"E, d. MMM – E, d. MMM y"} - d{"E, d. MMM – E, d. MMM y"} - y{"E, d. MMM y – E, d. MMM y"} + M{"E, d. MMM–E, d. MMM y"} + d{"E, d. MMM–E, d. MMM y"} + y{"E, d. MMM y–E, d. MMM y"} } yMMMM{ M{"MMMM–MMMM y"} - y{"MMMM y – MMMM y"} + y{"MMMM y–MMMM y"} } yMMMd{ - M{"d. MMM – d. MMM y"} + M{"d. MMM–d. MMM y"} d{"d.–d. MMM y"} - y{"d. MMM y – d. MMM y"} + y{"d. MMM y–d. MMM y"} } yMd{ - M{"d. M. – d. M. y"} - d{"d. M. y – d. M. y"} - y{"d. M. y – d. M. y"} + M{"d. M.–d. M. y"} + d{"d. M. y–d. M. y"} + y{"d. M. y–d. M. y"} } } } @@ -560,10 +561,10 @@ sl{ MMM{"LLL"} MMMEd{"E, d. MMM"} MMMMW{ - few{"W. 'teden' 'v' MMMM"} - one{"W. 'teden' 'v' MMMM"} - other{"W. 'teden' 'v' MMMM"} - two{"W. 'teden' 'v' MMMM"} + few{"MMMM: W. 'teden'"} + one{"MMMM: W. 'teden'"} + other{"MMMM: W. 'teden'"} + two{"MMMM: W. 'teden'"} } MMMMd{"d. MMMM"} MMMd{"d. MMM"} @@ -586,10 +587,10 @@ sl{ yQQQ{"QQQ y"} yQQQQ{"QQQQ y"} yw{ - few{"w. 'teden' 'v' Y"} - one{"w. 'teden' 'v' Y"} - other{"w. 'teden' 'v' Y"} - two{"w. 'teden' 'v' Y"} + few{"w. 'teden' 'leta' Y"} + one{"w. 'teden' 'leta' Y"} + other{"w. 'teden' 'leta' Y"} + two{"w. 'teden' 'leta' Y"} } } dayNames{ @@ -765,42 +766,42 @@ sl{ m{"h.mm–h.mm B"} } Gy{ - G{"G y – G y"} - y{"G y–y"} + G{"y G–y G"} + y{"y–y G"} } GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} + G{"MM. y GGGGG–MM. y GGGGG"} + M{"MM. y–MM. y GGGGG"} + y{"MM. y–MM. y GGGGG"} } GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} + G{"E, d. MM. y GGGGG–E, d. MM. y GGGGG"} + M{"E, d. MM. y–E, d. MM. y GGGGG"} + d{"E, d. MM. y–E, d. MM. y GGGGG"} + y{"E, d. MM. y–E, d. MM. y GGGGG"} } GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} + G{"MMM y G–MMM y G"} + M{"MMM–MMM y G"} + y{"MMM y–MMM y G"} } GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} + G{"E, d. MMM y G–E, d. MMM y G"} + M{"E, d. MMM–E, d. MMM y G"} + d{"E, d. MMM–E, d. MMM y G"} + y{"E, d. MMM y–E, d. MMM y G"} } GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} + G{"d. MMM y G–d. MMM y G"} + M{"d. MMM–d. MMM y G"} + d{"d.–d. MMM y G"} + y{"d. MMM y–d. MMM y G"} } GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + G{"d. MM. y GGGGG–d. MM. y GGGGG"} + M{"d. MM. y–d. MM. y GGGGG"} + d{"d. MM. y–d. MM. y GGGGG"} + y{"d. MM. y–d. MM. y GGGGG"} } H{ H{"HH–HH"} @@ -868,9 +869,9 @@ sl{ y{"M. y–M. y"} } yMEd{ - M{"E, d. M. – E, d. M. y"} - d{"E, d. – E, d. M. y"} - y{"E, d. M. y – E, d. M. y"} + M{"E, d. M.–E, d. M. y"} + d{"E, d.–E, d. M. y"} + y{"E, d. M. y–E, d. M. y"} } yMMM{ M{"MMM–MMM y"} @@ -1731,7 +1732,7 @@ sl{ } relativeTime{ future{ - few{"čez {0} nedelj"} + few{"čez {0} nedelje"} one{"čez {0} nedeljo"} other{"čez {0} nedelj"} two{"čez {0} nedelji"} @@ -2160,17 +2161,9 @@ sl{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} in {1}"} - end{"{0} in {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} in {1}"} end{"{0} in {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } unit{ 2{"{0} in {1}"} diff --git a/source/data/locales/sl_SI.txt b/source/data/locales/sl_SI.txt index 7e2d1e9..17ab953 100644 --- a/source/data/locales/sl_SI.txt +++ b/source/data/locales/sl_SI.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sl_SI{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/smn.txt b/source/data/locales/smn.txt index c9f5d74..b66c53c 100644 --- a/source/data/locales/smn.txt +++ b/source/data/locales/smn.txt @@ -4,7 +4,7 @@ smn{ AuxExemplarCharacters{"[à ç é è í ñ ń ó ò q ú ü w x æ ø å ã ö]"} ExemplarCharacters{"[a â b c č d đ e f g h i j k l m n ŋ o p r s š t u v y z ž ä á]"} ExemplarCharactersIndex{"[A  B C Č D Đ E F G H I J K L M N Ŋ O P R S Š T U V Y Z Ž Ä Á]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ miscPatterns{ @@ -98,7 +98,7 @@ smn{ } minimumGroupingDigits{"1"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/smn_FI.txt b/source/data/locales/smn_FI.txt index b490ca5..9e9313e 100644 --- a/source/data/locales/smn_FI.txt +++ b/source/data/locales/smn_FI.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License smn_FI{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/sn.txt b/source/data/locales/sn.txt index b43bc6c..b84db46 100644 --- a/source/data/locales/sn.txt +++ b/source/data/locales/sn.txt @@ -4,7 +4,7 @@ sn{ AuxExemplarCharacters{"[q x]"} ExemplarCharacters{"[a b c d e f g h i j k l m n o p r s t u v w y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P R S T U V W Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ miscPatterns{ @@ -33,7 +33,7 @@ sn{ } minimumGroupingDigits{"1"} } - Version{"2.1.48.4"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/sn_ZW.txt b/source/data/locales/sn_ZW.txt index 3ce9897..02698ba 100644 --- a/source/data/locales/sn_ZW.txt +++ b/source/data/locales/sn_ZW.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sn_ZW{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/so.txt b/source/data/locales/so.txt index 594e0c5..395ba15 100644 --- a/source/data/locales/so.txt +++ b/source/data/locales/so.txt @@ -1,38 +1,17 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License so{ - AuxExemplarCharacters{"[]"} - Ellipsis{ - final{"{0}…"} - initial{"…{0}"} - medial{"{0}…{1}"} - word-final{"{0} …"} - word-initial{"… {0}"} - word-medial{"{0} … {1}"} - } ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"} ExemplarCharactersIndex{"[B C D F G H J K L M N Q R S T W X Y]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } - MoreInformation{"?"} NumberElements{ - default{"latn"} latn{ - miscPatterns{ - approximately{"~{0}"} - atLeast{"≥{0}"} - atMost{"≤{0}"} - range{"{0}–{1}"} - } patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} - decimalFormat{"#,##0.###"} - percentFormat{"#,##0%"} - scientificFormat{"#E0"} } patternsLong{ decimalFormat{ @@ -138,30 +117,6 @@ so{ } } decimalFormat{ - 1000{ - one{"0K"} - other{"0K"} - } - 10000{ - one{"00K"} - other{"00K"} - } - 100000{ - one{"000K"} - other{"000K"} - } - 1000000{ - one{"0M"} - other{"0M"} - } - 10000000{ - one{"00M"} - other{"00M"} - } - 100000000{ - one{"000M"} - other{"000M"} - } 1000000000{ one{"0B"} other{"0B"} @@ -174,31 +129,10 @@ so{ one{"000B"} other{"000B"} } - 1000000000000{ - one{"0T"} - other{"0T"} - } - 10000000000000{ - one{"00T"} - other{"00T"} - } - 100000000000000{ - one{"000T"} - other{"000T"} - } } } symbols{ - decimal{"."} - exponential{"E"} - group{","} - infinity{"∞"} - minusSign{"-"} nan{"MaL"} - perMille{"‰"} - percentSign{"%"} - plusSign{"+"} - superscriptingExponent{"×"} } } minimalPairs{ @@ -210,10 +144,8 @@ so{ other{"{0} maalmood"} } } - minimumGroupingDigits{"1"} - native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -232,37 +164,15 @@ so{ "{1} {0}", } availableFormats{ - Bh{"h B"} - Bhm{"h:mm B"} - Bhms{"h:mm:ss B"} - E{"ccc"} - EBhm{"E h:mm B"} - EBhms{"E h:mm:ss B"} - EHm{"E HH:mm"} - EHms{"E HH:mm:ss"} - Ed{"d, E"} - Ehm{"E h:mm a"} - Ehms{"E h:mm:ss a"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E, MMM d, y G"} GyMMMd{"MMM d, y G"} - H{"HH"} - Hm{"HH:mm"} - Hms{"HH:mm:ss"} - M{"L"} MEd{"E, M/d"} - MMM{"LLL"} MMMEd{"E, MMM d"} MMMMEd{"E, MMMM d"} - MMMMd{"MMMM d"} MMMd{"MMM d"} Md{"M/d"} - d{"d"} - h{"h a"} - hm{"h:mm a"} - hms{"h:mm:ss a"} - ms{"mm:ss"} y{"y"} yM{"M/y"} yMEd{"E, M/d/y"} @@ -283,15 +193,6 @@ so{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y – y G"} @@ -352,10 +253,6 @@ so{ M{"M/d – M/d"} d{"M/d – M/d"} } - d{ - d{"d–d"} - } - fallback{"{0} – {1}"} y{ y{"y – y G"} } @@ -421,50 +318,20 @@ so{ "{1} {0}", "{1} {0}", } - appendItems{ - Timezone{"{0} {1}"} - } availableFormats{ - Bh{"h B"} - Bhm{"h:mm B"} - Bhms{"h:mm:ss B"} - E{"ccc"} - EBhm{"E h:mm B"} - EBhms{"E h:mm:ss B"} - EHm{"E HH:mm"} - EHms{"E HH:mm:ss"} - Ed{"d, E"} - Ehm{"E h:mm a"} - Ehms{"E h:mm:ss a"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E, MMM d, y G"} GyMMMd{"MMM d, y G"} - H{"HH"} - Hm{"HH:mm"} - Hms{"HH:mm:ss"} - Hmsv{"HH:mm:ss v"} - Hmv{"HH:mm v"} - M{"L"} MEd{"E, M/d"} - MMM{"LLL"} MMMEd{"E, MMM d"} MMMMEd{"E, MMMM d"} MMMMW{ one{"'toddobaadka' W 'ee' MMMM"} other{"'toddobaadka' W 'ee' MMMM"} } - MMMMd{"MMMM d"} - MMMd{"MMM d"} Md{"M/d"} - d{"d"} - h{"h a"} - hm{"h:mm a"} - hms{"h:mm:ss a"} hmsv{"h:mm:ss a v"} - hmv{"h:mm a v"} - ms{"mm:ss"} - y{"y"} yM{"M/y"} yMEd{"E, M/d/y"} yMMM{"MMM y"} @@ -484,7 +351,7 @@ so{ abbreviated{ "Axd", "Isn", - "Slsa", + "Tldo", "Arbc", "Khms", "Jmc", @@ -493,7 +360,7 @@ so{ narrow{ "A", "I", - "S", + "T", "A", "Kh", "J", @@ -502,7 +369,7 @@ so{ short{ "Axd", "Isn", - "Slsa", + "Tldo", "Arbc", "Khms", "Jmc", @@ -511,10 +378,10 @@ so{ wide{ "Axad", "Isniin", - "Salaasa", - "Arbaca", + "Talaado", + "Arbaco", "Khamiis", - "Jimce", + "Jimco", "Sabti", } } @@ -522,7 +389,7 @@ so{ abbreviated{ "Axd", "Isn", - "Slsa", + "Tldo", "Arbc", "Khms", "Jmc", @@ -531,7 +398,7 @@ so{ narrow{ "A", "I", - "S", + "T", "A", "Kh", "J", @@ -540,7 +407,7 @@ so{ short{ "Axd", "Isn", - "Slsa", + "Tldo", "Arbc", "Khms", "Jmc", @@ -549,10 +416,10 @@ so{ wide{ "Axad", "Isniin", - "Salaasa", - "Arbaca", + "Talaado", + "Arbaco", "Khamiis", - "Jimce", + "Jimco", "Sabti", } } @@ -563,10 +430,6 @@ so{ am{"GH"} pm{"GD"} } - narrow{ - am{"GH"} - pm{"GD"} - } wide{ am{"GH"} pm{"GD"} @@ -592,15 +455,6 @@ so{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y – y G"} @@ -639,20 +493,6 @@ so{ d{"M/d/y – M/d/y GGGGG"} y{"M/d/y – M/d/y GGGGG"} } - H{ - H{"HH–HH"} - } - Hm{ - H{"HH:mm–HH:mm"} - m{"HH:mm–HH:mm"} - } - Hmv{ - H{"HH:mm–HH:mm v"} - m{"HH:mm–HH:mm v"} - } - Hv{ - H{"HH–HH v"} - } M{ M{"M–M"} } @@ -675,31 +515,7 @@ so{ M{"dd/MM – dd/MM"} d{"dd/MM – dd/MM"} } - d{ - d{"d–d"} - } fallback{"{0} - {1}"} - h{ - a{"h a – h a"} - h{"h–h a"} - } - hm{ - a{"h:mm a – h:mm a"} - h{"h:mm–h:mm a"} - m{"h:mm–h:mm a"} - } - hmv{ - a{"h:mm a – h:mm a v"} - h{"h:mm–h:mm a v"} - m{"h:mm–h:mm a v"} - } - hv{ - a{"h a – h a v"} - h{"h–h a v"} - } - y{ - y{"y–y"} - } yM{ M{"MM/y – MM/y"} y{"MM/y – MM/y"} @@ -831,12 +647,6 @@ so{ "R3", "R4", } - narrow{ - "1", - "2", - "3", - "4", - } wide{ "Rubaca 1aad", "Rubaca 2aad", @@ -851,12 +661,6 @@ so{ "R3", "R4", } - narrow{ - "1", - "2", - "3", - "4", - } wide{ "Rubaca 1aad", "Rubaca 2aad", @@ -866,6 +670,75 @@ so{ } } } + islamic{ + eras{ + abbreviated{ + "HD", + } + } + monthNames{ + format{ + abbreviated{ + "Mux.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dhuʻl-Q.", + "Dhuʻl-H.", + } + wide{ + "Muxarram", + "Safar", + "Rabic al-awwal", + "Rabic al-thani", + "Jumada al-awwal", + "jumada al-thani", + "Rajab", + "Shacban", + "Ramadan", + "Shawwal", + "Dul al-qacda", + "Dul xijjah", + } + } + stand-alone{ + abbreviated{ + "Mux.", + "Saf.", + "Rab. I", + "Rab. II", + "Jum. I", + "Jum. II", + "Raj.", + "Sha.", + "Ram.", + "Shaw.", + "Dul-Q.", + "Dul-X.", + } + wide{ + "Muxarram", + "Safar", + "Rabic al-awwal", + "Rabic al-thani", + "Jumada al-awwal", + "jumada al-thani", + "Rajab", + "Shacban", + "Ramadan", + "Shawwal", + "Dul al-qacdah", + "Dul xijjah", + } + } + } + } } characterLabel{ activities{"Waxqabad"} @@ -955,12 +828,6 @@ so{ western_asian_scripts{"qoraalka galbeedka Asian"} whitespace{"meesha cad banaan"} } - delimiters{ - alternateQuotationEnd{"’"} - alternateQuotationStart{"‘"} - quotationEnd{"”"} - quotationStart{"“"} - } fields{ day{ dn{"maalin"} @@ -982,29 +849,9 @@ so{ } day-narrow{ dn{"mln"} - relative{ - "-1"{"Shalay"} - "0"{"Maanta"} - "1"{"Berri"} - } - relativeTime{ - future{ - one{"{0} mln"} - other{"{0} mlmd"} - } - past{ - one{"{0} mln khr"} - other{"{0} mlmd khr"} - } - } } day-short{ dn{"mln"} - relative{ - "-1"{"Shalay"} - "0"{"Maanta"} - "1"{"Berri"} - } relativeTime{ future{ one{"{0} mln"} @@ -1019,9 +866,6 @@ so{ dayOfYear{ dn{"maalinta sannadka"} } - dayOfYear-narrow{ - dn{"mlnta sndka"} - } dayOfYear-short{ dn{"mlnta sndka"} } @@ -1060,23 +904,6 @@ so{ } } } - fri-narrow{ - relative{ - "-1"{"Jmchi hre"} - "0"{"Jmchn"} - "1"{"Jmcha dbe"} - } - relativeTime{ - future{ - one{"{0} Jmc"} - other{"{0} Jmc"} - } - past{ - one{"{0} Jmc khr"} - other{"{0} jmc khr"} - } - } - } fri-short{ relative{ "-1"{"Jmchi hre"} @@ -1112,16 +939,6 @@ so{ } hour-narrow{ dn{"scd"} - relativeTime{ - future{ - one{"{0} scd"} - other{"{0} scd"} - } - past{ - one{"{0} scd khr"} - other{"{0} scd khr"} - } - } } hour-short{ dn{"scd"} @@ -1152,19 +969,6 @@ so{ } } } - minute-narrow{ - dn{"dqqd"} - relativeTime{ - future{ - one{"{0} dqqd"} - other{"{0} dqqd"} - } - past{ - one{"{0} dqqd khr"} - other{"{0} dqqd khr"} - } - } - } minute-short{ dn{"dqqd"} relativeTime{ @@ -1174,7 +978,7 @@ so{ } past{ one{"{0} dqqd khr"} - other{"{0} dqqd khr"} + other{"{0} daqiiqadood kahor"} } } } @@ -1201,16 +1005,6 @@ so{ "0"{"Isntn"} "1"{"Isnta dbe"} } - relativeTime{ - future{ - one{"{0} Isn"} - other{"{0} Isn"} - } - past{ - one{"{0} Isn khr"} - other{"{0} Isn khr"} - } - } } mon-short{ relative{ @@ -1248,30 +1042,9 @@ so{ } } month-narrow{ - dn{"Bil-gaaban"} - relative{ - "-1"{"Bishii hore"} - "0"{"Bishan"} - "1"{"Bisha danbe"} - } - relativeTime{ - future{ - one{"{0} bil"} - other{"{0} bil"} - } - past{ - one{"{0} bil khr"} - other{"{0} bil khr"} - } - } + dn{"bil"} } month-short{ - dn{"Bil-gaaban"} - relative{ - "-1"{"Bishii hore"} - "0"{"Bishan"} - "1"{"Bisha danbe"} - } relativeTime{ future{ one{"{0} bil"} @@ -1303,16 +1076,6 @@ so{ } quarter-narrow{ dn{"rbc"} - relativeTime{ - future{ - one{"{0} rbc"} - other{"{0} rbc"} - } - past{ - one{"{0} rbc khr"} - other{"{0} rbc khr"} - } - } } quarter-short{ dn{"rbc"} @@ -1344,23 +1107,6 @@ so{ } } } - sat-narrow{ - relative{ - "-1"{"Sbtdi hre"} - "0"{"Sbtdn"} - "1"{"Sbtda dbe"} - } - relativeTime{ - future{ - one{"{0} Sbti"} - other{"{0} Sbti"} - } - past{ - one{"{0} Sbti khr"} - other{"{0} Sbti khr"} - } - } - } sat-short{ relative{ "-1"{"Sbtdi hre"} @@ -1394,19 +1140,6 @@ so{ } } } - second-narrow{ - dn{"ilbrqsi"} - relativeTime{ - future{ - one{"{0} ilbrqsi"} - other{"{0} ilbrqsi"} - } - past{ - one{"{0} ilbrqsi khr"} - other{"{0} ilbrqsi khr"} - } - } - } second-short{ dn{"ilbrqsi"} relativeTime{ @@ -1439,36 +1172,9 @@ so{ } sun-narrow{ relative{ - "-1"{"Axdi hre"} - "0"{"Axdn"} - "1"{"Axda dbe"} - } - relativeTime{ - future{ - one{"{0} Axd"} - other{"{0} Axd"} - } - past{ - one{"{0} Axd khr"} - other{"{0} axd khr"} - } - } - } - sun-short{ - relative{ - "-1"{"Axdi hre"} - "0"{"Axdn"} - "1"{"Axda dbe"} - } - relativeTime{ - future{ - one{"{0} Axd"} - other{"{0} Axd"} - } - past{ - one{"{0} Axd khr"} - other{"{0} axd khr"} - } + "-1"{"axadii hore"} + "0"{"axadan"} + "1"{"axada xigta"} } } thu{ @@ -1488,23 +1194,6 @@ so{ } } } - thu-narrow{ - relative{ - "-1"{"Khmsti hre"} - "0"{"Khmstn"} - "1"{"Khmsta dbe"} - } - relativeTime{ - future{ - one{"{0} khms"} - other{"{0} khms"} - } - past{ - one{"{0} khms khr"} - other{"{0} khms khr"} - } - } - } thu-short{ relative{ "-1"{"Khmsti hre"} @@ -1524,52 +1213,52 @@ so{ } tue{ relative{ - "-1"{"Salaasadii hore"} - "0"{"Salaasadan"} - "1"{"Salaasada danbe"} + "-1"{"Talaadadii hore"} + "0"{"Talaadadan"} + "1"{"Talaadada xigta"} } relativeTime{ future{ - one{"{0} Salaasa"} - other{"{0} Salaasood"} + one{"{0} Talaado"} + other{"{0} Talaadood"} } past{ - one{"{0} Salaasa kahor"} - other{"{0} Salaasood kahor"} + one{"{0} Talaado kahor"} + other{"{0} Talaadood kahor"} } } } tue-narrow{ relative{ - "-1"{"Slsdi hre"} - "0"{"Slsdn"} - "1"{"Slsda dbe"} + "-1"{"Tlddi hre"} + "0"{"Tlddn"} + "1"{"Tldda xgta"} } relativeTime{ future{ - one{"{0} Slsa"} - other{"{0} Slsa"} + one{"{0} Tldo"} + other{"{0} Tldo"} } past{ - one{"{0} Slsa khr"} - other{"{0} Slsa khr"} + one{"{0} Tldo khr"} + other{"{0} Tldod khr"} } } } tue-short{ relative{ - "-1"{"Slsdi hre"} - "0"{"Slsdn"} - "1"{"Slsda dbe"} + "-1"{"Tlddi hre"} + "0"{"Tlddn"} + "1"{"Tldda xgta"} } relativeTime{ future{ - one{"{0} Slsa"} - other{"{0} Slsa"} + one{"{0} Tldo"} + other{"{0} Tldo"} } past{ - one{"{0} Slsa khr"} - other{"{0} Slsa khr"} + one{"{0} Tldo khr"} + other{"{0} Tldod khr"} } } } @@ -1590,23 +1279,6 @@ so{ } } } - wed-narrow{ - relative{ - "-1"{"Arbcdi hre"} - "0"{"Arbcdn"} - "1"{"Arbcda dbe"} - } - relativeTime{ - future{ - one{"{0} Arbc"} - other{"{0} Arbc"} - } - past{ - one{"{0} Arbc khr"} - other{"{0} Arbc khr"} - } - } - } wed-short{ relative{ "-1"{"Arbcdi hre"} @@ -1647,28 +1319,13 @@ so{ dn{"tdbd"} relative{ "-1"{"Toddobaadkii hore"} - "0"{"Usbuucan"} + "0"{"Toddobaadkan"} "1"{"Toddobaadka danbe"} } relativePeriod{"Tdbdka {0}"} - relativeTime{ - future{ - one{"{0} tdbd"} - other{"{0} tdbd"} - } - past{ - one{"{0} tdbd khr"} - other{"{0} tdbd khr"} - } - } } week-short{ dn{"tdbd"} - relative{ - "-1"{"Toddobaadkii hore"} - "0"{"Usbuucan"} - "1"{"Toddobaadka danbe"} - } relativePeriod{"Tdbdka {0}"} relativeTime{ future{ @@ -1684,12 +1341,6 @@ so{ weekOfMonth{ dn{"Toddobaadka Bisha"} } - weekOfMonth-narrow{ - dn{"tdbdka bsha"} - } - weekOfMonth-short{ - dn{"tdbdka bsha"} - } weekday{ dn{"maalinta toddobaadka"} } @@ -1733,24 +1384,9 @@ so{ "0"{"Sannadkan"} "1"{"Sannadka xiga"} } - relativeTime{ - future{ - one{"{0} snd"} - other{"{0} snd"} - } - past{ - one{"{0} snd khr"} - other{"{0} Snd khr"} - } - } } year-short{ dn{"snd"} - relative{ - "-1"{"Sannadkii hore"} - "0"{"Sannadkan"} - "1"{"Sannadka danbe"} - } relativeTime{ future{ one{"{0} snd"} @@ -1776,26 +1412,10 @@ so{ or{ 2{"{0} ama {1}"} end{"{0} ama {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } - or-narrow{ - 2{"{0} ama {1}"} - end{"{0} ama {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } - or-short{ - 2{"{0} ama {1}"} - end{"{0} ama {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard{ 2{"{0} iyo {1}"} end{"{0} iyo {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-narrow{ 2{"{0}, {1}"} @@ -1807,30 +1427,17 @@ so{ 2{"{0} & {1}"} end{"{0} & {1}"} middle{"{0}, {1}"} - start{"{0}, {1}"} } unit{ 2{"{0} iyo {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } - unit-narrow{ - 2{"{0}, {1}"} - end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } unit-short{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } } measurementSystemNames{ - UK{"UK"} - US{"US"} metric{"Metrik"} } parse{ @@ -1859,10 +1466,6 @@ so{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } - stricter{ - "[,٫︐﹐,]", - "[.․﹒.。]", - } } } } diff --git a/source/data/locales/so_DJ.txt b/source/data/locales/so_DJ.txt index 15ff142..ad373f7 100644 --- a/source/data/locales/so_DJ.txt +++ b/source/data/locales/so_DJ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License so_DJ{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/so_ET.txt b/source/data/locales/so_ET.txt index 0bd9f89..bb8f759 100644 --- a/source/data/locales/so_ET.txt +++ b/source/data/locales/so_ET.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License so_ET{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/so_KE.txt b/source/data/locales/so_KE.txt index 244e3e1..01c6f05 100644 --- a/source/data/locales/so_KE.txt +++ b/source/data/locales/so_KE.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License so_KE{ - Version{"2.1.47.71"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/so_SO.txt b/source/data/locales/so_SO.txt index 0d427ea..c9beee6 100644 --- a/source/data/locales/so_SO.txt +++ b/source/data/locales/so_SO.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License so_SO{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/sq.txt b/source/data/locales/sq.txt index 9a2a2e2..fd87b80 100644 --- a/source/data/locales/sq.txt +++ b/source/data/locales/sq.txt @@ -18,10 +18,10 @@ sq{ "[A B C Ç D {DH} E Ë F G {GJ} H I J K L {LL} M N {NJ} O P Q R {RR} S {SH} T {" "TH} U V X {XH} Y Z {ZH}]" } - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” « » ( ) \\[ \\] § @ * / \\& # ′ " - "″ ~]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” « » ( ) \\[ \\] § @ * / \\& # " + "′ ″ ~]" } MoreInformation{"?"} NumberElements{ @@ -36,6 +36,7 @@ sq{ patterns{ accountingFormat{"#,##0.00 ¤;(#,##0.00 ¤)"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -198,9 +199,11 @@ sq{ exponential{"E"} group{" "} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -219,7 +222,7 @@ sq{ minimumGroupingDigits{"2"} native{"latn"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -1857,12 +1860,6 @@ sq{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} dhe {1}"} - end{"{0} dhe {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} dhe {1}"} end{"{0} dhe {1}"} @@ -1893,32 +1890,4 @@ sq{ US{"amerikan"} metric{"metrik"} } - parse{ - date{ - lenient{ - "[\\--/]", - "[\\:∶]", - } - } - general{ - lenient{ - "[.․。︒﹒.。]", - "['ʼ՚᾽᾿’']", - "[%٪﹪%]", - "[؉‰]", - "[\$﹩$$]", - "[£₤]", - "[¥¥]", - "[₩₩]", - "[₨₹{Rp}{Rs}]", - } - } - number{ - lenient{ - "[\\-‒⁻₋−➖﹣-]", - "[,،٫、︐︑﹐﹑,、]", - "[+⁺₊➕﬩﹢+]", - } - } - } } diff --git a/source/data/locales/sq_AL.txt b/source/data/locales/sq_AL.txt index 9a46734..bbe8cc5 100644 --- a/source/data/locales/sq_AL.txt +++ b/source/data/locales/sq_AL.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sq_AL{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/sq_MK.txt b/source/data/locales/sq_MK.txt index a16ff94..3db65db 100644 --- a/source/data/locales/sq_MK.txt +++ b/source/data/locales/sq_MK.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sq_MK{ - Version{"2.1.47.71"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/sq_XK.txt b/source/data/locales/sq_XK.txt index ed3c4c2..04ce494 100644 --- a/source/data/locales/sq_XK.txt +++ b/source/data/locales/sq_XK.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sq_XK{ - Version{"2.1.47.71"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/sr.txt b/source/data/locales/sr.txt index a42d069..9c17576 100644 --- a/source/data/locales/sr.txt +++ b/source/data/locales/sr.txt @@ -12,19 +12,22 @@ sr{ } ExemplarCharacters{"[а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш]"} ExemplarCharactersIndex{"[А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]"} MoreInformation{"?"} NumberElements{ default{"latn"} latn{ miscPatterns{ + approximately{"~{0}"} atLeast{"≥{0}"} + atMost{"≤{0}"} range{"{0}–{1}"} } patterns{ accountingFormat{"#,##0.00 ¤;(#,##0.00 ¤)"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -223,10 +226,14 @@ sr{ exponential{"E"} group{"."} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -242,7 +249,7 @@ sr{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ eras{ @@ -358,52 +365,12 @@ sr{ yyyyQQQQ{"QQQQ y. G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} } Hmv{ H{"HH:mm–HH:mm v"} @@ -438,6 +405,15 @@ sr{ d{"d–d"} } fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } hmv{ a{"h:mm a – h:mm a v"} h{"h:mm–h:mm a v"} @@ -720,8 +696,8 @@ sr{ "н. е.", } abbreviated%variant{ - "BCE", - "CE", + "п. н. е.", + "н. е.", } narrow{ "п.н.е.", @@ -731,59 +707,8 @@ sr{ "пре нове ере", "нове ере", } - wide%variant{ - "BCE", - "CE", - } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -2394,12 +2319,6 @@ sr{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} и {1}"} - end{"{0} и {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} и {1}"} end{"{0} и {1}"} diff --git a/source/data/locales/sr_Cyrl.txt b/source/data/locales/sr_Cyrl.txt index 8a82c60..8ccf74b 100644 --- a/source/data/locales/sr_Cyrl.txt +++ b/source/data/locales/sr_Cyrl.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sr_Cyrl{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/sr_Cyrl_BA.txt b/source/data/locales/sr_Cyrl_BA.txt index e4ee203..2205e28 100644 --- a/source/data/locales/sr_Cyrl_BA.txt +++ b/source/data/locales/sr_Cyrl_BA.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sr_Cyrl_BA{ - Version{"2.1.47.86"} + Version{"36"} calendar{ generic{ intervalFormats{ @@ -82,18 +82,24 @@ sr_Cyrl_BA{ abbreviated{ afternoon1{"по под."} evening1{"вече"} + midnight{"поноћ"} morning1{"јутро"} + night1{"ноћу"} + noon{"подне"} } narrow{ afternoon1{"по под."} evening1{"вече"} + midnight{"поноћ"} morning1{"јутро"} night1{"ноћ"} + noon{"подне"} } } stand-alone{ abbreviated{ am{"прије подне"} + pm{"по подне"} } narrow{ am{"а"} @@ -101,6 +107,7 @@ sr_Cyrl_BA{ } wide{ am{"прије подне"} + pm{"по подне"} } } } @@ -110,7 +117,7 @@ sr_Cyrl_BA{ "нове ере", } wide%variant{ - "BCE", + "п. н. е.", "нове ере", } } @@ -138,24 +145,6 @@ sr_Cyrl_BA{ y{"y-MM-dd – y-MM-dd"} } } - monthNames{ - stand-alone{ - abbreviated{ - "јан", - "феб", - "март", - "апр", - "мај", - "јун", - "јул", - "авг", - "септ", - "окт", - "нов", - "дец", - } - } - } } } fields{ diff --git a/source/data/locales/sr_Cyrl_ME.txt b/source/data/locales/sr_Cyrl_ME.txt index 40761c0..f755752 100644 --- a/source/data/locales/sr_Cyrl_ME.txt +++ b/source/data/locales/sr_Cyrl_ME.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sr_Cyrl_ME{ - Version{"2.1.47.71"} + Version{"36"} calendar{ generic{ intervalFormats{ diff --git a/source/data/locales/sr_Cyrl_RS.txt b/source/data/locales/sr_Cyrl_RS.txt index 78ad2fe..2955be1 100644 --- a/source/data/locales/sr_Cyrl_RS.txt +++ b/source/data/locales/sr_Cyrl_RS.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sr_Cyrl_RS{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/sr_Cyrl_XK.txt b/source/data/locales/sr_Cyrl_XK.txt index e703f04..def32f0 100644 --- a/source/data/locales/sr_Cyrl_XK.txt +++ b/source/data/locales/sr_Cyrl_XK.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sr_Cyrl_XK{ - Version{"2.1.47.71"} + Version{"36"} calendar{ generic{ intervalFormats{ diff --git a/source/data/locales/sr_Latn.txt b/source/data/locales/sr_Latn.txt index d9a4a15..41d6f46 100644 --- a/source/data/locales/sr_Latn.txt +++ b/source/data/locales/sr_Latn.txt @@ -13,19 +13,22 @@ sr_Latn{ } ExemplarCharacters{"[a b c č ć d {dž} đ e f g h i j k l {lj} m n {nj} o p r s š t u v z ž]"} ExemplarCharactersIndex{"[A B C Č Ć D {DŽ} E F G H I J K L {LJ} M N {NJ} O P Q R S Š T U V W X Y Z Ž]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]"} MoreInformation{"?"} NumberElements{ default{"latn"} latn{ miscPatterns{ + approximately{"~{0}"} atLeast{"≥{0}"} + atMost{"≤{0}"} range{"{0}–{1}"} } patterns{ accountingFormat{"#,##0.00 ¤;(#,##0.00 ¤)"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -224,10 +227,14 @@ sr_Latn{ exponential{"E"} group{"."} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -243,7 +250,7 @@ sr_Latn{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ eras{ @@ -359,52 +366,12 @@ sr_Latn{ yyyyQQQQ{"QQQQ y. G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} } Hmv{ H{"HH:mm–HH:mm v"} @@ -439,6 +406,15 @@ sr_Latn{ d{"d–d"} } fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } hmv{ a{"h:mm a – h:mm a v"} h{"h:mm–h:mm a v"} @@ -721,8 +697,8 @@ sr_Latn{ "n. e.", } abbreviated%variant{ - "BCE", - "CE", + "p. n. e.", + "n. e.", } narrow{ "p.n.e.", @@ -732,59 +708,8 @@ sr_Latn{ "pre nove ere", "nove ere", } - wide%variant{ - "BCE", - "CE", - } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -2015,9 +1940,7 @@ sr_Latn{ } sun-narrow{ relative{ - "-1"{"pr. ned."} "0"{"u ned"} - "1"{"sl. ned."} } relativeTime{ future{ @@ -2395,12 +2318,6 @@ sr_Latn{ middle{"{0}, {1}"} start{"{0}, {1}"} } - standard-narrow{ - 2{"{0} i {1}"} - end{"{0} i {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } standard-short{ 2{"{0} i {1}"} end{"{0} i {1}"} diff --git a/source/data/locales/sr_Latn_BA.txt b/source/data/locales/sr_Latn_BA.txt index 4ef1636..a06657a 100644 --- a/source/data/locales/sr_Latn_BA.txt +++ b/source/data/locales/sr_Latn_BA.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sr_Latn_BA{ - Version{"2.1.48.77"} + Version{"36"} calendar{ generic{ intervalFormats{ @@ -84,7 +84,6 @@ sr_Latn_BA{ evening1{"veče"} midnight{"ponoć"} morning1{"jutro"} - night1{"noću"} noon{"podne"} } narrow{ @@ -117,7 +116,7 @@ sr_Latn_BA{ "nove ere", } wide%variant{ - "BCE", + "p. n. e.", "nove ere", } } @@ -145,24 +144,6 @@ sr_Latn_BA{ y{"y-MM-dd – y-MM-dd"} } } - monthNames{ - stand-alone{ - abbreviated{ - "jan", - "feb", - "mart", - "apr", - "maj", - "jun", - "jul", - "avg", - "sept", - "okt", - "nov", - "dec", - } - } - } } } fields{ diff --git a/source/data/locales/sr_Latn_ME.txt b/source/data/locales/sr_Latn_ME.txt index 6ab5927..b3493ed 100644 --- a/source/data/locales/sr_Latn_ME.txt +++ b/source/data/locales/sr_Latn_ME.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sr_Latn_ME{ - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ intervalFormats{ @@ -34,15 +34,6 @@ sr_Latn_ME{ } dayNames{ format{ - abbreviated{ - "ned.", - "pon.", - "ut.", - "sr.", - "čet.", - "pet.", - "sub.", - } wide{ "nedjelja", "ponedeljak", @@ -54,15 +45,6 @@ sr_Latn_ME{ } } stand-alone{ - abbreviated{ - "ned.", - "pon.", - "ut.", - "sr.", - "čet.", - "pet.", - "sub.", - } wide{ "nedjelja", "ponedeljak", @@ -117,34 +99,34 @@ sr_Latn_ME{ monthNames{ format{ abbreviated{ - "jan.", - "feb.", + "jan", + "feb", "mart", - "apr.", + "apr", "maj", "jun", "jul", - "avg.", - "sept.", - "okt.", - "nov.", - "dec.", + "avg", + "sept", + "okt", + "nov", + "dec", } } stand-alone{ abbreviated{ - "jan.", - "feb.", + "jan", + "feb", "mart", - "apr.", + "apr", "maj", "jun", "jul", - "avg.", - "sept.", - "okt.", - "nov.", - "dec.", + "avg", + "sept", + "okt", + "nov", + "dec", } } } diff --git a/source/data/locales/sr_Latn_RS.txt b/source/data/locales/sr_Latn_RS.txt index a144038..6195747 100644 --- a/source/data/locales/sr_Latn_RS.txt +++ b/source/data/locales/sr_Latn_RS.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sr_Latn_RS{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/sr_Latn_XK.txt b/source/data/locales/sr_Latn_XK.txt index 6ef3601..c3a538b 100644 --- a/source/data/locales/sr_Latn_XK.txt +++ b/source/data/locales/sr_Latn_XK.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sr_Latn_XK{ - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ intervalFormats{ @@ -12,30 +12,6 @@ sr_Latn_XK{ } } gregorian{ - dayNames{ - format{ - abbreviated{ - "ned.", - "pon.", - "ut.", - "sr.", - "čet.", - "pet.", - "sub.", - } - } - stand-alone{ - abbreviated{ - "ned.", - "pon.", - "ut.", - "sr.", - "čet.", - "pet.", - "sub.", - } - } - } dayPeriod{ format{ abbreviated{ @@ -65,34 +41,34 @@ sr_Latn_XK{ monthNames{ format{ abbreviated{ - "jan.", - "feb.", + "jan", + "feb", "mart", - "apr.", + "apr", "maj", "jun", "jul", - "avg.", - "sept.", - "okt.", - "nov.", - "dec.", + "avg", + "sept", + "okt", + "nov", + "dec", } } stand-alone{ abbreviated{ - "jan.", - "feb.", + "jan", + "feb", "mart", - "apr.", + "apr", "maj", "jun", "jul", - "avg.", - "sept.", - "okt.", - "nov.", - "dec.", + "avg", + "sept", + "okt", + "nov", + "dec", } } } diff --git a/source/data/locales/sv.txt b/source/data/locales/sv.txt index af89415..4ad6418 100644 --- a/source/data/locales/sv.txt +++ b/source/data/locales/sv.txt @@ -14,24 +14,38 @@ sv{ ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å Ä Ö]"} ExemplarCharactersNumbers{"[  , % ‰ + − 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ arab{ symbols{ + decimal{"٫"} exponential{"×۱۰^"} group{" "} + infinity{"∞"} + list{"؛"} minusSign{"؜−"} perMille{"؉‏"} + percentSign{"٪؜"} + plusSign{"؜+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } arabext{ symbols{ decimal{","} + exponential{"×۱۰^"} group{" "} + infinity{"∞"} + list{"؛"} minusSign{"‎−‎"} + perMille{"؉"} + percentSign{"٪"} + plusSign{"‎+‎"} + superscriptingExponent{"×"} timeSeparator{":"} } } @@ -44,13 +58,14 @@ sv{ latn{ miscPatterns{ approximately{"~{0}"} - atLeast{"≥{0}"} + atLeast{"⩾{0}"} atMost{"≤{0}"} range{"{0}‒{1}"} } patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -213,10 +228,12 @@ sv{ exponential{"×10^"} group{" "} infinity{"∞"} + list{";"} minusSign{"−"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -234,26 +251,26 @@ sv{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.48.90"} + Version{"36"} calendar{ buddhist{ availableFormats{ yyyyMMMM{"MMMM y G"} } eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } wide{ "Buddhistisk era", } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h – h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm – h:mm B"} - m{"h:mm – h:mm B"} + hmv{ + h{"h:mm–h:mm a v"} } } } @@ -278,11 +295,6 @@ sv{ } } coptic{ - intervalFormats{ - Bh{ - B{"h B – h B"} - } - } monthNames{ format{ abbreviated{ @@ -350,6 +362,76 @@ sv{ } } } + dangi{ + cyclicNameSets{ + years{ + format{ + abbreviated{ + "jia-zi", + "yi-chou", + "bing-yin", + "ding-mao", + "wu-chen", + "ji-si", + "geng-wu", + "xin-wei", + "ren-shen", + "gui-you", + "jia-xu", + "yi-hai", + "bing-zi", + "ding-chou", + "wu-yin", + "ji-mao", + "geng-chen", + "xin-si", + "ren-wu", + "gui-wei", + "jia-shen", + "yi-you", + "bing-xu", + "ding-hai", + "wu-zi", + "ji-chou", + "geng-yin", + "xin-mao", + "ren-chen", + "gui-si", + "jia-wu", + "yi-wei", + "bing-shen", + "ding-you", + "wu-xu", + "ji-hai", + "geng-zi", + "xin-chou", + "ren-yin", + "gui-mao", + "jia-chen", + "yi-si", + "bing-wu", + "ding-wei", + "wu-shen", + "ji-you", + "geng-xu", + "xin-hai", + "ren-zi", + "gui-chou", + "jia-yin", + "yi-mao", + "bing-chen", + "ding-si", + "wu-wu", + "ji-wei", + "geng-shen", + "xin-you", + "ren-xu", + "gui-hai", + } + } + } + } + } ethiopic{ monthNames{ format{ @@ -483,14 +565,26 @@ sv{ } intervalFormats{ Bh{ - B{"h B – h B"} h{"h – h B"} } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y G – MMM y"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d–d MMM y G"} + y{"d MMM y G – d MMM d y"} + } + H{ + H{"HH–HH"} + } Hm{ H{"HH:mm – HH:mm"} m{"HH:mm – HH:mm"} @@ -499,6 +593,9 @@ sv{ H{"HH:mm – HH:mm v"} m{"HH:mm – HH:mm v"} } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -525,6 +622,24 @@ sv{ d{"d–d"} } fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y G"} } @@ -817,51 +932,32 @@ sv{ } intervalFormats{ Bh{ - B{"h B – h B"} h{"h – h B"} } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} + G{"y G – y G"} + y{"y–y G"} } GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} } GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} + G{"d MMM y G, E – d MMM y G, E"} + M{"d MMM y G, E – d MMM, E"} + d{"d MMM y G, E – d MMM, E"} + y{"d MMM y G, E – d MMM y, E"} } GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d–d MMM y G"} + y{"d MMM y G – d MMM y"} } H{ H{"HH–HH"} @@ -1092,17 +1188,21 @@ sv{ } hebrew{ eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } wide{ "Anno Mundi", } } intervalFormats{ Bh{ - B{"h B – h B"} h{"h – h B"} } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } @@ -1255,18 +1355,14 @@ sv{ } islamic{ eras{ - wide{ - "efter Hirja", + abbreviated{ + "AH", } - } - intervalFormats{ - Bh{ - h{"h – h B"} + narrow{ + "AH", } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm – h:mm B"} - m{"h:mm – h:mm B"} + wide{ + "efter Hirja", } } monthNames{ @@ -1305,6 +1401,21 @@ sv{ } } japanese{ + DateTimePatterns{ + "'kl'. HH:mm:ss zzzz", + "HH:mm:ss z", + "HH:mm:ss", + "HH:mm", + "EEEE d MMMM y G", + "d MMMM y G", + "d MMM y G", + "G y-MM-dd", + "{1} {0}", + "{1} {0}", + "{1} {0}", + "{1} {0}", + "{1} {0}", + } eras{ abbreviated{ "Taika (645–650)", @@ -1546,33 +1657,17 @@ sv{ "Reiwa", } } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h – h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm – h:mm B"} - m{"h:mm – h:mm B"} - } - } } persian{ eras{ - wide{ - "Anno Persarum", + abbreviated{ + "AP", } - } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h – h B"} + narrow{ + "AP", } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm – h:mm B"} - m{"h:mm – h:mm B"} + wide{ + "Anno Persarum", } } monthNames{ @@ -2016,11 +2111,6 @@ sv{ } } mon-narrow{ - relative{ - "-1"{"mån. förra veckan"} - "0"{"mån. denna vecka"} - "1"{"mån. nästa vecka"} - } relativeTime{ future{ one{"+{0} må."} @@ -2665,18 +2755,11 @@ sv{ "[%٪﹪%]", "[؉‰]", "[\$﹩$$]", - "[£₤]", + "[£₤£]", "[¥¥]", "[₩₩]", "[₨₹{Rp}{Rs}]", } } - number{ - lenient{ - "[\\-‒⁻₋−➖﹣-]", - "[,،٫、︐︑﹐﹑,、]", - "[+⁺₊➕﬩﹢+]", - } - } } } diff --git a/source/data/locales/sv_AX.txt b/source/data/locales/sv_AX.txt index 6c9aff9..1b4edb6 100644 --- a/source/data/locales/sv_AX.txt +++ b/source/data/locales/sv_AX.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sv_AX{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/sv_FI.txt b/source/data/locales/sv_FI.txt index 41bdf49..cc99e06 100644 --- a/source/data/locales/sv_FI.txt +++ b/source/data/locales/sv_FI.txt @@ -1,23 +1,38 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sv_FI{ - Version{"2.1.47.71"} + NumberElements{ + latn{ + symbols{ + timeSeparator{"."} + } + } + } + Version{"36"} calendar{ gregorian{ - DateTimePatterns{ - "'kl'. HH:mm:ss zzzz", - "HH:mm:ss z", - "HH:mm:ss", - "HH:mm", - "EEEE d MMMM y", - "d MMMM y", - "d MMM y", - "dd-MM-y", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", + availableFormats{ + Bhm{"h.mm B"} + Bhms{"h.mm.ss B"} + EBhm{"E h.mm B"} + EBhms{"E h.mm.ss B"} + EHm{"E HH.mm"} + EHms{"E HH.mm.ss"} + Ehm{"E h.mm a"} + Ehms{"E h.mm.ss a"} + Hm{"HH.mm"} + Hms{"HH.mm.ss"} + Hmsv{"HH.mm.ss v"} + Hmv{"HH.mm v"} + MEd{"E d.M"} + MMd{"d.M"} + MMdd{"dd.MM"} + Md{"d.M"} + hm{"h.mm a"} + hms{"h.mm.ss a"} + hmsv{"h.mm.ss a v"} + hmv{"h.mm a v"} + ms{"mm.ss"} } quarters{ format{ diff --git a/source/data/locales/sv_SE.txt b/source/data/locales/sv_SE.txt index cf51bba..8b60c4c 100644 --- a/source/data/locales/sv_SE.txt +++ b/source/data/locales/sv_SE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sv_SE{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/sw.txt b/source/data/locales/sw.txt index 48080e5..2af05e7 100644 --- a/source/data/locales/sw.txt +++ b/source/data/locales/sw.txt @@ -12,10 +12,11 @@ sw{ } ExemplarCharacters{"[a b {ch} d e f g h i j k l m n o p r s t u v w y z]"} ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P R S T U V W Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . ' \u0022 ( ) \\[ \\] \\{ \\}]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ' \u0022 ( ) \\[ \\] \\{ \\}]"} MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -26,6 +27,7 @@ sw{ patterns{ accountingFormat{"¤ #,##0.00"} currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -184,13 +186,18 @@ sw{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -202,8 +209,10 @@ sw{ other{"siku {0} zilizopita"} } } + minimumGroupingDigits{"1"} + native{"latn"} } - Version{"2.1.48.17"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -266,15 +275,6 @@ sw{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y – y G"} @@ -296,16 +296,16 @@ sw{ y{"MMM y – MMM y G"} } GyMMMEd{ - G{"E, d MMM, y G – E, d MMM, y G"} - M{"E, d MMM – E, d MMM, y G"} - d{"E, d MMM – E, d MMM, y G"} - y{"E, d MMM, y – E, d MMM, y G"} + G{"E, MMM d, y G – E, MMM d, y G"} + M{"E, MMM d – E, MMM d, y G"} + d{"E, MMM d – E, MMM d, y G"} + y{"E, MMM d, y – E, MMM d, y G"} } GyMMMd{ - G{"d MMM, y G – d MMM, y G"} - M{"d MMM – d MMM, y G"} - d{"d – d MMM, y G"} - y{"d MMM, y – d MMM, y G"} + G{"MMM d, y G – MMM d, y G"} + M{"MMM d – MMM d, y G"} + d{"MMM d – d, y G"} + y{"MMM d, y – MMM d, y G"} } GyMd{ G{"d/M/y GGGGG – d/M/y GGGGG"} @@ -453,7 +453,7 @@ sw{ Ehms{"E h:mm:ss a"} Gy{"y G"} GyMMM{"MMM y G"} - GyMMMEd{"E, MMM d, y G"} + GyMMMEd{"E, d MMM y G"} GyMMMd{"d MMM y G"} H{"HH"} Hm{"HH:mm"} @@ -483,7 +483,7 @@ sw{ yM{"M/y"} yMEd{"E, d/M/y"} yMMM{"MMM y"} - yMMMEd{"E, MMM d, y"} + yMMMEd{"E, d MMM y"} yMMMM{"MMMM y"} yMMMd{"d MMM y"} yMd{"d/M/y"} @@ -581,7 +581,7 @@ sw{ morning1{"alfajiri"} morning2{"asubuhi"} night1{"usiku"} - noon{"saa sita za mchana"} + noon{"adhuhuri"} } narrow{ afternoon1{"mchana"} @@ -611,7 +611,7 @@ sw{ morning1{"alfajiri"} morning2{"asubuhi"} night1{"usiku"} - noon{"saa sita za mchana"} + noon{"adhuhuri"} pm{"PM"} } narrow{ @@ -657,15 +657,6 @@ sw{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } Gy{ G{"y G – y G"} y{"y – y G"} @@ -689,14 +680,14 @@ sw{ GyMMMEd{ G{"E, MMM d, y G – E, MMM d, y G"} M{"E, MMM d – E, MMM d, y G"} - d{"E, MMM d – E, MMM d, y G"} + d{"E, d MMM – E, d MMM y G"} y{"E, MMM d, y – E, MMM d, y G"} } GyMMMd{ - G{"MMM d, y G – MMM d, y G"} - M{"MMM d – MMM d, y G"} - d{"MMM d – d, y G"} - y{"MMM d, y – MMM d, y G"} + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d – d MMM y G"} + y{"d MMM y – d MMM y G"} } GyMd{ G{"d/M/y GGGGG – d/M/y GGGGG"} @@ -1820,6 +1811,17 @@ sw{ middle{"{0}, {1}"} start{"{0}, {1}"} } + or-narrow{ + 2{"{0} au {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} + } + or-short{ + 2{"{0} au {1}"} + end{"{0}, au {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} + } standard{ 2{"{0} na {1}"} end{"{0} na {1}"} @@ -1828,9 +1830,6 @@ sw{ } standard-narrow{ 2{"{0}, {1}"} - end{"{0} na {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} na {1}"} @@ -1888,6 +1887,10 @@ sw{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/sw_CD.txt b/source/data/locales/sw_CD.txt index f76ec62..7fa30ba 100644 --- a/source/data/locales/sw_CD.txt +++ b/source/data/locales/sw_CD.txt @@ -11,7 +11,7 @@ sw_CD{ } } } - Version{"2.1.47.71"} + Version{"36"} calendar{ generic{ availableFormats{ diff --git a/source/data/locales/sw_KE.txt b/source/data/locales/sw_KE.txt index 5e1a048..0f9dc0f 100644 --- a/source/data/locales/sw_KE.txt +++ b/source/data/locales/sw_KE.txt @@ -1,7 +1,154 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sw_KE{ - Version{"2.1.47.71"} + ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"} + NumberElements{ + latn{ + patternsLong{ + decimalFormat{ + 1000{ + one{"elfu 0;elfu -0"} + other{"elfu 0;elfu -0"} + } + 10000{ + one{"elfu 00;elfu -00"} + other{"elfu 00"} + } + 100000{ + one{"elfu 000"} + other{"elfu 000"} + } + 1000000{ + one{"milioni 0"} + other{"milioni 0"} + } + 10000000{ + one{"milioni 00"} + other{"milioni 00"} + } + 100000000{ + one{"milioni 000"} + other{"milioni 000"} + } + 1000000000{ + one{"bilioni 0"} + other{"bilioni 0"} + } + 10000000000{ + one{"bilioni 00"} + other{"bilioni 00"} + } + 100000000000{ + one{"bilioni 000"} + other{"bilioni 000"} + } + 1000000000000{ + one{"trilioni 0"} + other{"trilioni 0"} + } + 10000000000000{ + one{"trilioni 00"} + other{"trilioni 00"} + } + 100000000000000{ + one{"trilioni 000"} + other{"trilioni 000"} + } + } + } + patternsShort{ + currencyFormat{ + 1000000{ + one{"¤ M0;¤-M0"} + other{"¤ M0"} + } + 10000000{ + one{"¤ M00;¤M-M00"} + other{"¤ M00;¤-M00"} + } + 100000000{ + one{"¤ M000;¤M-000"} + other{"¤ M000"} + } + 1000000000{ + one{"¤ B0;¤-B0"} + other{"¤ B0;¤-B0"} + } + 10000000000{ + one{"¤ B00;¤-B00"} + other{"¤ B00;¤-B00"} + } + 100000000000{ + one{"¤ B000;¤-B000"} + other{"¤ B000;¤-B000"} + } + 1000000000000{ + one{"¤ T0;¤-T0"} + other{"¤ T0"} + } + 10000000000000{ + one{"¤ T00;¤-T00"} + other{"¤ T00"} + } + 100000000000000{ + one{"¤ T000;¤-T000"} + other{"¤ T000;¤-T000"} + } + } + decimalFormat{ + 1000{ + one{"elfu 0"} + other{"elfu 0"} + } + 10000{ + one{"elfu 00"} + other{"elfu 00"} + } + 100000{ + one{"elfu 000"} + other{"elfu 000"} + } + 1000000{ + one{"M0"} + other{"M0"} + } + 10000000{ + one{"M00"} + other{"M00"} + } + 100000000{ + one{"M000"} + other{"M000"} + } + 1000000000{ + one{"B0"} + other{"B0"} + } + 10000000000{ + one{"B00"} + other{"B00"} + } + 100000000000{ + one{"B000"} + other{"B000"} + } + 1000000000000{ + one{"T0"} + other{"T0"} + } + 10000000000000{ + one{"T00"} + other{"T00"} + } + 100000000000000{ + one{"T000"} + other{"T000"} + } + } + } + } + } + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -20,26 +167,11 @@ sw_KE{ "{1}, {0}", } } - gregorian{ - AmPmMarkers{ - "AM", - "PM", - } - DateTimePatterns{ - "HH:mm:ss zzzz", - "HH:mm:ss z", - "HH:mm:ss", - "HH:mm", - "EEEE, d MMMM y", - "d MMMM y", - "d MMM y", - "dd/MM/y", - "{1}, {0}", - "{1} 'saa' {0}", - "{1} 'saa' {0}", - "{1}, {0}", - "{1}, {0}", - } - } + } + characterLabel{ + middle_eastern_scripts{"hati za Mashariki ya Kati"} + } + measurementSystemNames{ + metric{"Kipimo"} } } diff --git a/source/data/locales/sw_TZ.txt b/source/data/locales/sw_TZ.txt index 547d29b..f50dca6 100644 --- a/source/data/locales/sw_TZ.txt +++ b/source/data/locales/sw_TZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sw_TZ{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/sw_UG.txt b/source/data/locales/sw_UG.txt index 85aaf2f..15c1843 100644 --- a/source/data/locales/sw_UG.txt +++ b/source/data/locales/sw_UG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sw_UG{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ta.txt b/source/data/locales/ta.txt index 11adbbf..686f434 100644 --- a/source/data/locales/ta.txt +++ b/source/data/locales/ta.txt @@ -2,6 +2,14 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ta{ AuxExemplarCharacters{"[\u200C\u200D]"} + Ellipsis{ + final{"{0}…"} + initial{"…{0}"} + medial{"{0}…{1}"} + word-final{"{0} …"} + word-initial{"… {0}"} + word-medial{"{0} … {1}"} + } ExemplarCharacters{ "[அ ஆ இ ஈ உ ஊ எ ஏ ஐ ஒ ஓ ஔ ஃ க ங ச ஞ ட ண த ந ப ம ய ர ல வ ழ ள ற ன ஜ ஷ ஸ ஹ ா ி " "\u0BC0 ு ூ ெ ே ை ொ ோ ௌ \u0BCD]" @@ -10,8 +18,14 @@ ta{ "[அ ஆ இ ஈ உ ஊ எ ஏ ஐ ஒ ஓ ஔ க ங ச ஞ ட ண த ந ப ம ய ர ல வ ழ ள ற ன ஜ ஶ ஷ ஸ ஹ {க" "\u0BCDஷ}]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0௦ 1௧ 2௨ 3௩ 4௪ 5௫ 6௬ 7௭ 8௮ 9௯]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0௦ 1௧ 2௨ 3௩ 4௪ 5௫ 6௬ 7௭ 8௮ 9௯]"} + ExemplarCharactersPunctuation{ + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" + } + MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -181,13 +195,18 @@ ta{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -209,18 +228,35 @@ ta{ scientificFormat{"#E0"} } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} } } traditional{"taml"} } - Version{"2.1.48.17"} + Version{"36"} calendar{ + buddhist{ + eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } + wide{ + "BE", + } + } + } chinese{ DateTimePatterns{ "a h:mm:ss zzzz", @@ -253,6 +289,20 @@ ta{ "மா11", "மா12", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "மாதம்1", "மாதம்2", @@ -283,6 +333,20 @@ ta{ "மா11", "மா12", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "மாதம்1", "மாதம்2", @@ -301,6 +365,20 @@ ta{ } } coptic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -369,6 +447,20 @@ ta{ } } ethiopic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -498,53 +590,6 @@ ta{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -902,53 +947,6 @@ ta{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH – HH"} } @@ -1177,6 +1175,17 @@ ta{ } } hebrew{ + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } monthNames{ format{ abbreviated{ @@ -1324,6 +1333,17 @@ ta{ } } islamic{ + eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } + wide{ + "AH", + } + } monthNames{ format{ abbreviated{ @@ -1388,6 +1408,17 @@ ta{ } } persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } monthNames{ format{ abbreviated{ @@ -1556,6 +1587,12 @@ ta{ western_asian_scripts{"மேற்காசிய ஸ்கிரிப்டுகள்"} whitespace{"வெள்ளை இடைவெளி"} } + delimiters{ + alternateQuotationEnd{"’"} + alternateQuotationStart{"‘"} + quotationEnd{"”"} + quotationStart{"“"} + } fields{ day{ dn{"நாள்"} @@ -2387,10 +2424,14 @@ ta{ or{ 2{"{0} அல்லது {1}"} end{"{0} அல்லது {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} } standard{ 2{"{0} மற்றும் {1}"} end{"{0} மற்றும் {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} } standard-narrow{ 2{"{0} மற்றும் {1}"} @@ -2404,12 +2445,20 @@ ta{ middle{"{0}, {1}"} start{"{0}, {1}"} } + unit{ + middle{"{0}, {1}"} + start{"{0}, {1}"} + } unit-narrow{ 2{"{0} {1}"} end{"{0} {1}"} middle{"{0} {1}"} start{"{0} {1}"} } + unit-short{ + middle{"{0}, {1}"} + start{"{0}, {1}"} + } } measurementSystemNames{ UK{"யூகே"} @@ -2442,6 +2491,10 @@ ta{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/ta_IN.txt b/source/data/locales/ta_IN.txt index df8238c..c36b73e 100644 --- a/source/data/locales/ta_IN.txt +++ b/source/data/locales/ta_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ta_IN{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ta_LK.txt b/source/data/locales/ta_LK.txt index a81ecb9..98e0c60 100644 --- a/source/data/locales/ta_LK.txt +++ b/source/data/locales/ta_LK.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ta_LK{ - Version{"2.1.47.71"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/ta_MY.txt b/source/data/locales/ta_MY.txt index 06c0f50..df8ed2d 100644 --- a/source/data/locales/ta_MY.txt +++ b/source/data/locales/ta_MY.txt @@ -10,5 +10,5 @@ ta_MY{ } } } - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ta_SG.txt b/source/data/locales/ta_SG.txt index 5ad9d52..31976c0 100644 --- a/source/data/locales/ta_SG.txt +++ b/source/data/locales/ta_SG.txt @@ -10,5 +10,5 @@ ta_SG{ } } } - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/te.txt b/source/data/locales/te.txt index 7b4e24c..ce8dbcf 100644 --- a/source/data/locales/te.txt +++ b/source/data/locales/te.txt @@ -19,17 +19,20 @@ te{ "[అ ఆ ఇ ఈ ఉ ఊ ఋ ౠ ఎ ఏ ఐ ఒ ఓ ఔ క ఖ గ ఘ ఙ చ ఛ జ ఝ ఞ ట ఠ డ ఢ ణ త థ ద ధ న ప ఫ బ భ" " మ య ర ఱ ల వ శ ష స హ ళ]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0౦ 1౧ 2౨ 3౩ 4౪ 5౫ 6౬ 7౭ 8౮ 9౯]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\}]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0౦ 1౧ 2౨ 3౩ 4౪ 5౫ 6౬ 7౭ 8౮ 9౯]"} + ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\}]"} MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}–{1}"} } patterns{ - accountingFormat{"¤#,##,##0.00;(¤#,##,##0.00)"} + accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##,##0.00"} decimalFormat{"#,##,##0.###"} percentFormat{"#,##0%"} @@ -190,11 +193,16 @@ te{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -213,23 +221,55 @@ te{ telu{ patterns{ currencyFormat{"¤#,##,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } } } - Version{"2.1.48.17"} + Version{"36"} calendar{ + buddhist{ + eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } + wide{ + "BE", + } + } + } coptic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -247,6 +287,21 @@ te{ "మెస్రా", "నైసే", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "టౌట్", "బాబా", @@ -279,6 +334,21 @@ te{ "మెస్రా", "నైసే", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "టౌట్", "బాబా", @@ -298,6 +368,20 @@ te{ } } ethiopic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -315,6 +399,21 @@ te{ "నెహస్సె", "పగుమెన్", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "మెస్క్‌రమ్", "టెకెమట్", @@ -347,6 +446,21 @@ te{ "నెహస్సె", "పగుమెన్", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "మెస్క్‌రమ్", "టెకెమట్", @@ -436,44 +550,6 @@ te{ h{"B h:mm – h:mm"} m{"B h:mm – h:mm"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -816,10 +892,6 @@ te{ h{"B h:mm – h:mm"} m{"B h:mm – h:mm"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } GyM{ G{"GGGGG M/y – GGGGG M/y"} M{"GGGGG M/y – M/y"} @@ -1082,6 +1154,17 @@ te{ } } hebrew{ + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } monthNames{ format{ abbreviated{ @@ -1100,6 +1183,22 @@ te{ "ఇలుల్", "అదర్ II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "టిశ్రీ", "హేష్‌వాన్", @@ -1134,6 +1233,22 @@ te{ "ఇలుల్", "అదర్ II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "టిశ్రీ", "హేష్‌వాన్", @@ -1181,6 +1296,20 @@ te{ "మాఘం", "ఫల్గుణం", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "చైత్రం", "వైశాఖం", @@ -1211,6 +1340,20 @@ te{ "మాఘం", "ఫల్గుణం", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "చైత్రం", "వైశాఖం", @@ -1229,6 +1372,17 @@ te{ } } islamic{ + eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } + wide{ + "AH", + } + } monthNames{ format{ abbreviated{ @@ -1245,6 +1399,20 @@ te{ "ధుల్-కి.", "ధుల్-హి.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "Muharram", "Safar", @@ -1275,6 +1443,20 @@ te{ "ధుల్-కి.", "ధుల్-హి.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ముహర్రం", "సఫర్", @@ -1293,6 +1475,17 @@ te{ } } persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } monthNames{ format{ abbreviated{ @@ -1309,6 +1502,20 @@ te{ "బాహ్‌మాన్", "ఎస్‌ఫాండ్", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ఫావర్డిన్", "ఊడాబహష్ట్", @@ -1339,6 +1546,20 @@ te{ "బాహ్‌మాన్", "ఎస్‌ఫాండ్", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ఫావర్డిన్", "ఊడాబహష్ట్", @@ -1446,7 +1667,7 @@ te{ smiley{"స్మైలీ"} smileys_people{"స్మైలీ లేదా వ్యక్తి"} south_asian_scripts{"దక్షిణ ఆసియా స్క్రిప్ట్"} - southeast_asian_scripts{"నైరుతి ఆసియా స్క్రిప్ట్"} + southeast_asian_scripts{"ఆగ్నేయ ఆసియా స్క్రిప్ట్"} spacing{"అంతరం"} sport{"క్రీడ"} symbols{"చిహ్నం"} @@ -1665,7 +1886,6 @@ te{ } } minute-narrow{ - dn{"ని"} relativeTime{ future{ one{"{0} నిమి.లో"} @@ -2162,7 +2382,7 @@ te{ "0"{"ఈ వారం"} "1"{"తదుపరి వారం"} } - relativePeriod{"{0}లో వారం"} + relativePeriod{"{0} వారం"} relativeTime{ future{ one{"{0} వారంలో"} @@ -2181,7 +2401,6 @@ te{ "0"{"ఈ వారం"} "1"{"తదుపరి వారం"} } - relativePeriod{"{0}లో వారం"} relativeTime{ future{ one{"{0} వారంలో"} @@ -2240,6 +2459,11 @@ te{ } year-narrow{ dn{"సం."} + relative{ + "-1"{"గత సం."} + "0"{"ఈ సం."} + "1"{"తదుపరి సం."} + } relativeTime{ future{ one{"{0} సం.లో"} @@ -2253,6 +2477,11 @@ te{ } year-short{ dn{"సం."} + relative{ + "-1"{"గత సంవ."} + "0"{"ఈ సంవ."} + "1"{"తదుపరి సంవ."} + } relativeTime{ future{ one{"{0} సం.లో"} @@ -2281,6 +2510,9 @@ te{ middle{"{0}, {1}"} start{"{0}, {1}"} } + or-short{ + middle{"{0}, {1}"} + } standard{ 2{"{0} మరియు {1}"} end{"{0} మరియు {1}"} @@ -2290,8 +2522,6 @@ te{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} మరియు {1}"} @@ -2324,12 +2554,6 @@ te{ metric{"దశాంశం"} } parse{ - date{ - lenient{ - "[\\--/]", - "[\\:∶]", - } - } general{ lenient{ "[.․。︒﹒.。]", @@ -2349,6 +2573,10 @@ te{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/te_IN.txt b/source/data/locales/te_IN.txt index 0c7d357..a3e9ccc 100644 --- a/source/data/locales/te_IN.txt +++ b/source/data/locales/te_IN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License te_IN{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/teo.txt b/source/data/locales/teo.txt index 1c03576..b8c954f 100644 --- a/source/data/locales/teo.txt +++ b/source/data/locales/teo.txt @@ -12,7 +12,7 @@ teo{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/teo_KE.txt b/source/data/locales/teo_KE.txt index 622f5a8..ef02edf 100644 --- a/source/data/locales/teo_KE.txt +++ b/source/data/locales/teo_KE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License teo_KE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/teo_UG.txt b/source/data/locales/teo_UG.txt index 8c63d94..22ff4f7 100644 --- a/source/data/locales/teo_UG.txt +++ b/source/data/locales/teo_UG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License teo_UG{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/tg.txt b/source/data/locales/tg.txt index 9dadc22..b8ca2d3 100644 --- a/source/data/locales/tg.txt +++ b/source/data/locales/tg.txt @@ -3,6 +3,12 @@ tg{ AuxExemplarCharacters{"[ц щ ы ь]"} ExemplarCharacters{"[а б в г ғ д е ё ж з и ӣ й к қ л м н о п р с т у ӯ ф х ҳ ч ҷ ш ъ э ю я]"} + ExemplarCharactersIndex{"[А Б В Г Ғ Д Е Ё Ж З И Ӣ Й К Қ Л М Н О П Р С Т У Ӯ Ф Х Ҳ Ч Ҷ Ш Ъ Э Ю Я]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{ + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" + } NumberElements{ default{"latn"} latn{ @@ -17,6 +23,124 @@ tg{ percentFormat{"#,##0%"} scientificFormat{"#E0"} } + patternsLong{ + decimalFormat{ + 1000{ + other{"0 ҳазор"} + } + 10000{ + other{"00 ҳазор"} + } + 100000{ + other{"000 ҳазор"} + } + 1000000{ + other{"0 миллион"} + } + 10000000{ + other{"00 миллион"} + } + 100000000{ + other{"000 миллион"} + } + 1000000000{ + other{"0 миллиард"} + } + 10000000000{ + other{"00 миллиард"} + } + 100000000000{ + other{"000 миллиард"} + } + 1000000000000{ + other{"0 триллион"} + } + 10000000000000{ + other{"00 триллион"} + } + 100000000000000{ + other{"000 триллион"} + } + } + } + patternsShort{ + currencyFormat{ + 1000{ + other{"0 ҳзр'.' ¤"} + } + 10000{ + other{"00 ҳзр'.' ¤"} + } + 100000{ + other{"000 ҳзр'.' ¤"} + } + 1000000{ + other{"0 млн'.' ¤"} + } + 10000000{ + other{"00 млн'.' ¤"} + } + 100000000{ + other{"000 млн'.' ¤"} + } + 1000000000{ + other{"0 млрд'.' ¤"} + } + 10000000000{ + other{"00 млрд'.' ¤"} + } + 100000000000{ + other{"000 млрд'.' ¤"} + } + 1000000000000{ + other{"0 трлн'.' ¤"} + } + 10000000000000{ + other{"00 трлн'.' ¤"} + } + 100000000000000{ + other{"000 трлн'.' ¤"} + } + } + decimalFormat{ + 1000{ + other{"0 ҳзр'.'"} + } + 10000{ + other{"00 ҳзр'.'"} + } + 100000{ + other{"000 ҳзр'.'"} + } + 1000000{ + other{"0 млн'.'"} + } + 10000000{ + other{"00 млн'.'"} + } + 100000000{ + other{"000 млн'.'"} + } + 1000000000{ + other{"0 млрд'.'"} + } + 10000000000{ + other{"00 млрд'.'"} + } + 100000000000{ + other{"000 млрд'.'"} + } + 1000000000000{ + other{"0 трлн'.'"} + } + 10000000000000{ + other{"00 трлн'.'"} + } + 100000000000000{ + other{"000 трлн'.'"} + } + } + } symbols{ decimal{","} exponential{"E"} @@ -33,7 +157,7 @@ tg{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -80,12 +204,16 @@ tg{ } intervalFormats{ fallback{"{0} – {1}"} + yMMMM{ + M{"MMMM – MMMM'и' y G"} + y{"MMMM'и' y – MMMM'и' y G"} + } } } gregorian{ AmPmMarkers{ - "пе. чо.", - "па. чо.", + "AM", + "PM", } DateTimePatterns{ "HH:mm:ss zzzz", @@ -106,10 +234,17 @@ tg{ Timezone{"{0} {1}"} } availableFormats{ + Bh{"h B"} + Bhm{"h:mm B"} + Bhms{"h:mm:ss B"} E{"ccc"} + EBhm{"E h:mm B"} + EBhms{"E h:mm:ss B"} EHm{"E HH:mm"} EHms{"E HH:mm:ss"} Ed{"d, E"} + Ehm{"E h:mm a"} + Ehms{"E h:mm:ss a"} Gy{"y G"} GyMMM{"MMM y G"} GyMMMEd{"E, d MMM, y G"} @@ -130,6 +265,11 @@ tg{ MMMd{"d MMM"} Md{"dd-MM"} d{"d"} + h{"h a"} + hm{"h:mm a"} + hms{"h:mm:ss a"} + hmsv{"h:mm:ss a v"} + hmv{"h:mm a v"} ms{"mm:ss"} y{"y"} yM{"MM-y"} @@ -243,6 +383,10 @@ tg{ } intervalFormats{ fallback{"{0} – {1}"} + yMMMM{ + M{"MMMM – MMMM'и' y"} + y{"MMMM'и' y – MMMM'и' y"} + } } monthNames{ format{ @@ -377,12 +521,117 @@ tg{ } } } - } - delimiters{ - alternateQuotationEnd{"»"} - alternateQuotationStart{"«"} - quotationEnd{"»"} - quotationStart{"«"} + islamic{ + DateTimePatterns{ + "HH:mm:ss zzzz", + "HH:mm:ss z", + "HH:mm:ss", + "HH:mm", + "EEEE, d MMMM'и' y G", + "d MMMM'и' y G", + "d MMM y G", + "dd/MM/yy GGGGG", + "{1} {0}", + "{1} {0}", + "{1} {0}", + "{1} {0}", + "{1} {0}", + } + availableFormats{ + MMMMd{"d MMMM"} + yyyyMMMM{"MMMM'и' y G"} + } + eras{ + abbreviated{ + "САНА", + } + } + monthNames{ + format{ + abbreviated{ + "Муҳ.", + "Саф.", + "Раб. I", + "Раб. II", + "Ҷум. I", + "Ҷум. II", + "Раҷ.", + "Ша.", + "Рам.", + "Шав.", + "Дхул-Қ.", + "Дхул-Ҳ.", + } + } + stand-alone{ + abbreviated{ + "Муҳ.", + "Саф.", + "Раб. I", + "Раб. II", + "Ҷум. I", + "Ҷум. II", + "Раҷ.", + "Ша.", + "Рам.", + "Шав.", + "Дхул-Қ.", + "Дхул-Ҳ.", + } + } + } + } + persian{ + DateTimePatterns{ + "HH:mm:ss zzzz", + "HH:mm:ss z", + "HH:mm:ss", + "HH:mm", + "EEEE, d MMMM'и' y G", + "d MMMM'и' y G", + "dd MMM y G", + "dd/MM/yy GGGGG", + "{1} {0}", + "{1} {0}", + "{1} {0}", + "{1} {0}", + "{1} {0}", + } + monthNames{ + format{ + wide{ + "фарвардин", + "урдибиҳишт", + "хурдод", + "тир", + "мурдод", + "шаҳривар", + "меҳр", + "обон", + "озар", + "дей", + "баҳман", + "исфанд", + } + } + stand-alone{ + wide{ + "фарвардин", + "урдибиҳишт", + "хурдод", + "тир", + "мурдод", + "шаҳривар", + "меҳр", + "обон", + "озар", + "дей", + "баҳман", + "исфанд", + } + } + } + } } fields{ day{ @@ -400,7 +649,7 @@ tg{ dn{"рӯз"} } dayperiod{ - dn{"пе. чо./па. чо."} + dn{"AM/PM"} } era{ dn{"мабдаи таърих"} diff --git a/source/data/locales/tg_TJ.txt b/source/data/locales/tg_TJ.txt index 2f03f0e..774441e 100644 --- a/source/data/locales/tg_TJ.txt +++ b/source/data/locales/tg_TJ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tg_TJ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/th.txt b/source/data/locales/th.txt index 4267008..d45f86b 100644 --- a/source/data/locales/th.txt +++ b/source/data/locales/th.txt @@ -20,18 +20,22 @@ th{ "[ก ข ฃ ค ฅ ฆ ง จ ฉ ช ซ ฌ ญ ฎ ฏ ฐ ฑ ฒ ณ ด ต ถ ท ธ น บ ป ผ ฝ พ ฟ ภ ม ย ร ฤ ล ฦ" " ว ศ ษ ส ห ฬ อ ฮ]" } - ExemplarCharactersNumbers{"[% , \\- . ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[! \u0022 # ' ( ) * , \\- . / \\: @ \\[ \\] ‐ – — ‘ ’ “ ” … ′ ″]"} + ExemplarCharactersNumbers{"[% , \\- . ‑ ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[! \u0022 # ' ( ) * , \\- . / \\: @ \\[ \\] ‐ ‑ – — ‘ ’ “ ” … ′ ″]"} MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ + approximately{"~{0}"} atLeast{"{0}+"} + atMost{"≤{0}"} range{"{0}-{1}"} } patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -154,12 +158,18 @@ th{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -173,7 +183,7 @@ th{ minimumGroupingDigits{"1"} native{"thai"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -509,6 +519,20 @@ th{ "11", "12", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "1", "2", @@ -539,6 +563,20 @@ th{ "11", "12", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "1", "2", @@ -574,6 +612,21 @@ th{ "เมสรา", "นาซี", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "เทาท์", "บาบา", @@ -606,6 +659,21 @@ th{ "เมสรา", "นาซี", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "เทาท์", "บาบา", @@ -760,6 +828,20 @@ th{ "11", "12", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "1", "2", @@ -790,6 +872,20 @@ th{ "11", "12", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "1", "2", @@ -826,6 +922,21 @@ th{ "เนแฮซ", "พากูเมน", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "เมสเคอเรม", "เตเกมท", @@ -858,6 +969,21 @@ th{ "เนแฮซ", "พากูเมน", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "เมสเคอเรม", "เตเกมท", @@ -896,6 +1022,7 @@ th{ Bh{"h B"} Bhm{"h:mm B"} Bhms{"h:mm:ss B"} + E{"ccc"} EBhm{"E h:mm B"} EBhms{"E h:mm:ss B"} EHm{"E HH:mm"} @@ -903,16 +1030,29 @@ th{ Ed{"E d"} Ehm{"E h:mm a"} Ehms{"E h:mm:ss a"} + Gy{"G y"} GyMMM{"MMM G y"} GyMMMEEEEd{"EEEEที่ d MMM G y"} GyMMMEd{"E d MMM G y"} GyMMMd{"d MMM G y"} + H{"HH"} + Hm{"HH:mm"} + Hms{"HH:mm:ss"} + M{"L"} MEd{"E d/M"} + MMM{"LLL"} MMMEEEEd{"EEEEที่ d MMM"} MMMEd{"E d MMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d/M"} + d{"d"} + h{"h a"} + hm{"h:mm a"} + hms{"h:mm:ss a"} + ms{"mm:ss"} + y{"G y"} + yyyy{"G y"} yyyyM{"M/y G"} yyyyMEd{"E d/M/y GGGGG"} yyyyMMM{"MMM G y"} @@ -926,17 +1066,53 @@ th{ } intervalFormats{ Bh{ - B{"h B – h B"} h{"h – h B"} } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } + GyM{ + G{"MM/GGGGG y – MM/GGGGG y"} + M{"M/y – M/y G"} + y{"M/y – M/y G"} + } + GyMEd{ + G{"E d/MM/GGGGG y – E d/MM/GGGGG y"} + M{"E d/M/y – E d/M/y G"} + d{"E d/M/y – E d/M/y G"} + y{"E d/M/y – E d/M/y G"} + } + GyMMM{ + G{"MMM G y – MMM G y"} + M{"MMM – MMM G y"} + y{"MMM G y – MMM y"} + } + GyMMMEd{ + G{"E d MMM G y – E d MMM G y"} + M{"E d MMM – E d MMM G y"} + d{"E d MMM – E d MMM G y"} + y{"E d MMM G y – E d MMM y"} + } + GyMMMd{ + G{"d MMM G y – d MMM G y"} + M{"d MMM – d MMM G y"} + d{"d – d MMM G y"} + y{"d MMM G y – d MMM y"} + } + GyMd{ + G{"d/MM/GGGGG y – d/MM/GGGGG y"} + M{"d/M/y – d/M/y G"} + d{"d/M/y – d/M/y G"} + y{"d/M/y – d/M/y G"} + } H{ H{"H–H"} } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } Hmv{ H{"H:mm–H:mm v"} m{"H:mm–H:mm v"} @@ -951,6 +1127,9 @@ th{ M{"E d/M – E d/M"} d{"E d/M – E d/M"} } + MMM{ + M{"LLL–LLL"} + } MMMEEEEd{ M{"EEEEที่ d MMM – EEEEที่ d MMM"} d{"EEEEที่ d – EEEEที่ d MMM"} @@ -967,7 +1146,31 @@ th{ M{"d/M – d/M"} d{"d/M – d/M"} } + d{ + d{"d–d"} + } fallback{"{0} - {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } + y{ + y{"G y–y"} + } yM{ M{"M/y – M/y G"} y{"M/y – M/y G"} @@ -1255,7 +1458,7 @@ th{ "ค.ศ.", } abbreviated%variant{ - "ก.ส.ศ.", + "ก่อน ส.ศ.", "ส.ศ.", } narrow{ @@ -1277,50 +1480,45 @@ th{ } intervalFormats{ Bh{ - B{"h B – h B"} h{"h – h B"} } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} + G{"MM/GGGGG y – MM/GGGGG y"} + M{"M/y – M/y"} + y{"M/y – M/y"} } GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} + G{"E d/MM/GGGGG y – E d/MM/GGGGG y"} + M{"E d/M/y – E d/M/y"} + d{"E d/M/y – E d/M/y"} + y{"E d/M/y – E d/M/y"} } GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} + G{"MMM G y – MMM G y"} + M{"MMM – MMM G y"} + y{"MMM G y – MMM G y"} } GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} + G{"E d MMM G y – E d MMM G y"} + M{"E d MMM – E d MMM G y"} + d{"E d MMM – E d MMM G y"} + y{"E d MMM y – E d MMM y"} } GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} + G{"d MMM G y – d MMM G y"} + M{"d MMM – d MMM G y"} + d{"d – d MMM G y"} + y{"d MMM G y – d MMM y"} } GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + G{"d/MM/GGGGG y – d/MM/GGGGG y"} + M{"d/M/y – d/M/y"} + d{"d/M/y – d/M/y"} + y{"d/M/y – d/M/y"} } H{ H{"HH–HH"} @@ -1612,6 +1810,22 @@ th{ "เอลอุล", "อาดาร์ II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "ทิชรี", "เฮวาน", @@ -1646,6 +1860,22 @@ th{ "เอลอุล", "อาดาร์ II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "ทิชรี", "เฮวาน", @@ -1687,6 +1917,20 @@ th{ "มาฆะ", "ผลคุณี", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "จิตรา", "วิสาขา", @@ -1717,6 +1961,20 @@ th{ "มาฆะ", "ผลคุณี", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "จิตรา", "วิสาขา", @@ -1752,13 +2010,19 @@ th{ } availableFormats{ Ed{"E d"} + Gy{"G y"} GyMMM{"MMM G y"} GyMMMEd{"E d MMM G y"} GyMMMd{"d MMM G y"} + M{"L"} MEd{"E, d/M"} + MMM{"LLL"} MMMEd{"E d MMM"} MMMd{"d MMM"} Md{"d/M"} + d{"d"} + y{"G y"} + yyyy{"G y"} yyyyM{"M/y G"} yyyyMEd{"E d/M/y GGGGG"} yyyyMMM{"MMM G y"} @@ -1792,6 +2056,20 @@ th{ "ซุลกิอฺ.", "ซุลหิจ.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "มุฮะร์รอม", "ซอฟาร์", @@ -1822,6 +2100,20 @@ th{ "ซุลกิอฺ.", "ซุลหิจ.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "มุฮะร์รอม", "ซอฟาร์", @@ -1857,20 +2149,26 @@ th{ } availableFormats{ Ed{"E d"} + Gy{"G y"} GyMMM{"MMM G y"} GyMMMEd{"E d MMM G y"} GyMMMd{"d MMM G y"} H{"HH"} Hm{"HH:mm"} Hms{"HH:mm:ss"} + M{"L"} MEd{"E, d/M"} + MMM{"LLL"} MMMEd{"E d MMM"} MMMd{"d MMM"} Md{"d/M"} + d{"d"} h{"h a"} hm{"h:mm a"} hms{"h:mm:ss a"} ms{"mm:ss"} + y{"G y"} + yyyy{"G y"} yyyyM{"M/GGGGG y"} yyyyMEd{"E d/M/GGGGG y"} yyyyMMM{"MMM G y"} @@ -2144,6 +2442,20 @@ th{ "บาฮ์มาน", "เอสฟานด์", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ฟาร์วาร์ดิน", "ออร์ดิเบเฮชต์", @@ -2174,6 +2486,20 @@ th{ "บาฮ์มาน", "เอสฟานด์", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "ฟาร์วาร์ดิน", "ออร์ดิเบเฮชต์", @@ -2216,10 +2542,13 @@ th{ H{"HH"} Hm{"HH:mm"} Hms{"HH:mm:ss"} + M{"L"} MEd{"E, d/M"} + MMM{"LLL"} MMMEd{"E d MMM"} MMMd{"d MMM"} Md{"d/M"} + d{"d"} h{"h a"} hm{"h:mm a"} hms{"h:mm:ss a"} @@ -2514,7 +2843,7 @@ th{ } } minute-narrow{ - dn{"น."} + dn{"นาที"} relativeTime{ future{ other{"ใน {0} นาที"} @@ -2525,7 +2854,6 @@ th{ } } minute-short{ - dn{"น."} relativeTime{ future{ other{"ใน {0} นาที"} @@ -3080,6 +3408,12 @@ th{ middle{"{0}, {1}"} start{"{0}, {1}"} } + or-narrow{ + 2{"{0}หรือ{1}"} + } + or-short{ + 2{"{0}หรือ{1}"} + } standard{ 2{"{0}และ{1}"} end{"{0} และ{1}"} @@ -3088,12 +3422,8 @@ th{ } standard-narrow{ 2{"{0}และ{1}"} - end{"{0} และ{1}"} - middle{"{0} {1}"} - start{"{0} {1}"} } standard-short{ - 2{"{0}และ{1}"} end{"{0} และ{1}"} middle{"{0} {1}"} start{"{0} {1}"} diff --git a/source/data/locales/th_TH.txt b/source/data/locales/th_TH.txt index a24fffb..6b48437 100644 --- a/source/data/locales/th_TH.txt +++ b/source/data/locales/th_TH.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License th_TH{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ti.txt b/source/data/locales/ti.txt index dac678f..34ddcfe 100644 --- a/source/data/locales/ti.txt +++ b/source/data/locales/ti.txt @@ -15,7 +15,7 @@ ti{ "[ሀ ለ ሐ መ ሠ ረ ሰ ሸ ቀ ቈ ቐ ቘ በ ቨ ተ ቸ ኀ ኈ ነ ኘ አ ከ ኰ ኸ ዀ ወ ዐ ዘ ዠ የ ደ ጀ ገ ጐ ጠ ጨ ጰ ጸ" " ፀ ፈ ፐ]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ default{"latn"} latn{ @@ -202,7 +202,7 @@ ti{ native{"latn"} traditional{"ethi"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ti_ER.txt b/source/data/locales/ti_ER.txt index ad960e7..01deb2a 100644 --- a/source/data/locales/ti_ER.txt +++ b/source/data/locales/ti_ER.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ti_ER{ - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/ti_ET.txt b/source/data/locales/ti_ET.txt index ad30025..f9ca2a6 100644 --- a/source/data/locales/ti_ET.txt +++ b/source/data/locales/ti_ET.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ti_ET{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/tk.txt b/source/data/locales/tk.txt index badb957..9d1813f 100644 --- a/source/data/locales/tk.txt +++ b/source/data/locales/tk.txt @@ -12,8 +12,8 @@ tk{ } ExemplarCharacters{"[a b ç d e ä f g h i j ž k l m n ň o ö p r s ş t u ü w y ý z]"} ExemplarCharactersIndex{"[A B Ç D E Ä F G H I J Ž K L M N Ň O Ö P R S Ş T U Ü W Y Ý Z]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- – — , ; \\: ! ? . … \u0022 “ ” ( ) \\[ \\] \\{ \\} § @ * #]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‑ – — , ; \\: ! ? . … \u0022 “ ” ( ) \\[ \\] \\{ \\} § @ * #]"} MoreInformation{"?"} NumberElements{ default{"latn"} @@ -27,6 +27,7 @@ tk{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0 %"} scientificFormat{"#E0"} } @@ -190,9 +191,11 @@ tk{ group{" "} infinity{"∞"} list{";"} + minusSign{"-"} nan{"san däl"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} } } @@ -208,7 +211,7 @@ tk{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -287,44 +290,6 @@ tk{ h{"h:mm–h:mm B"} m{"h:mm–h:mm B"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } M{ M{"MM – MM"} } @@ -597,10 +562,6 @@ tk{ h{"h:mm – h:mm B"} m{"h:mm–h:mm B"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } GyM{ G{"GGGGG M/y – GGGGG M/y"} M{"GGGGG M/y – M/y"} @@ -1406,7 +1367,7 @@ tk{ relative{ "-1"{"geçen ýekşenbe"} "0"{"şu ýekşenbe"} - "1"{"indiki çekşenbe"} + "1"{"indiki ýekşenbe"} } relativeTime{ future{ @@ -1750,7 +1711,6 @@ tk{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} start{"{0}, {1}"} } standard-short{ @@ -1760,7 +1720,6 @@ tk{ start{"{0}, {1}"} } unit{ - 2{"{0} we {1}"} end{"{0}, {1}"} middle{"{0}, {1}"} start{"{0}, {1}"} @@ -1809,6 +1768,10 @@ tk{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/tk_TM.txt b/source/data/locales/tk_TM.txt index 47d0114..8482a76 100644 --- a/source/data/locales/tk_TM.txt +++ b/source/data/locales/tk_TM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tk_TM{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/to.txt b/source/data/locales/to.txt index cd77a65..236154c 100644 --- a/source/data/locales/to.txt +++ b/source/data/locales/to.txt @@ -15,10 +15,10 @@ to{ } ExemplarCharacters{"[a á ā e é ē f h i í ī k l m n {ng} o ó ō p s t u ú ū v ʻ]"} ExemplarCharactersIndex{"[A E F H I K L M N {NG} O P S T U V ʻ]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ @@ -91,6 +91,15 @@ to{ 100000{ other{"¤ 0k"} } + 1000000{ + other{"¤ 0M"} + } + 10000000{ + other{"¤ 00M"} + } + 100000000{ + other{"¤ 000M"} + } 1000000000{ other{"¤ 0P"} } @@ -100,6 +109,15 @@ to{ 100000000000{ other{"¤ 000P"} } + 1000000000000{ + other{"¤ 0T"} + } + 10000000000000{ + other{"¤ 00T"} + } + 100000000000000{ + other{"¤ 000T"} + } } decimalFormat{ 1000{ @@ -162,7 +180,7 @@ to{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -196,6 +214,7 @@ to{ GyMMM{"MMM y G"} GyMMMEd{"E d MMM y G"} GyMMMd{"d MMM y G"} + H{"HH"} Hm{"H:mm"} Hms{"H:mm:ss"} M{"L"} @@ -207,6 +226,7 @@ to{ MMMd{"d MMM"} Md{"d/M"} d{"d"} + h{"h a"} hm{"h:mm a"} hms{"h:mm:ss a"} ms{"mm:ss"} @@ -233,6 +253,44 @@ to{ yyyyQQQQ{"y QQQQ G"} } intervalFormats{ + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"M/y GGGGG – M/y GGGGG"} + M{"M/y – M/y GGGGG"} + y{"M/y – M/y GGGGG"} + } + GyMEd{ + G{"E d/M/y GGGGG – E d/M/y GGGGG"} + M{"E d/M/y – E d/M/y GGGGG"} + d{"E d/M/y – E d/M/y GGGGG"} + y{"E d/M/y – E d/M/y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E d MMM y G – E d MMM y G"} + M{"E d MMM – E d MMM y G"} + d{"E d MMM – E d MMM y G"} + y{"E d MMM y – E d MMM y G"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d – d MMM y G"} + y{"d MMM y – d MMM y G"} + } + GyMd{ + G{"d/M/y GGGGG – d/M/y GGGGG"} + M{"d/M/y – d/M/y GGGGG"} + d{"d/M/y – d/M/y GGGGG"} + y{"d/M/y – d/M/y GGGGG"} + } M{ M{"M – M"} } @@ -346,7 +404,12 @@ to{ Timezone{"{0} {1}"} } availableFormats{ + Bh{"h B"} + Bhm{"h:mm B"} + Bhms{"h:mm:ss B"} E{"ccc"} + EBhm{"E h:mm B"} + EBhms{"E h:mm:ss B"} EHm{"E HH:mm"} EHms{"E HH:mm:ss"} Ed{"E d"} @@ -366,6 +429,9 @@ to{ MMM{"LLL"} MMMEd{"E d MMM"} MMMMEd{"E d MMMM"} + MMMMW{ + other{"'uike' 'hono' W ʻ'o' MMMM"} + } MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"d/M"} @@ -387,6 +453,9 @@ to{ yMd{"d/M/y"} yQQQ{"y QQQ"} yQQQQ{"y QQQQ"} + yw{ + other{"'uike' 'hono' w ʻ'o' Y"} + } } dayNames{ format{ @@ -497,6 +566,44 @@ to{ } } intervalFormats{ + Gy{ + G{"y G – y G"} + y{"y – y G"} + } + GyM{ + G{"M/y GGGGG – M/y GGGGG"} + M{"M/y – M/y GGGGG"} + y{"M/y – M/y GGGGG"} + } + GyMEd{ + G{"E d/M/y GGGGG – E d/M/y GGGGG"} + M{"E d/M/y – E d/M/y GGGGG"} + d{"E d/M/y – E d/M/y GGGGG"} + y{"E d/M/y– E d/M/y GGGGG"} + } + GyMMM{ + G{"MMM y G – MMM y G"} + M{"MMM – MMM y G"} + y{"MMM y – MMM y G"} + } + GyMMMEd{ + G{"E d MMM y G – E d MMM y G"} + M{"E d MMM – E d MMM y G"} + d{"E d MMM – E d MMM y G"} + y{"E d MMM y – E d MMM y G"} + } + GyMMMd{ + G{"d MMM y G – d MMM y G"} + M{"d MMM – d MMM y G"} + d{"d – d MMM y G"} + y{"d MMM y – d MMM y G"} + } + GyMd{ + G{"d/M/y GGGGG – d/M/y GGGGG"} + M{"d/M/y – d/M/y GGGGG"} + d{"d/M/y – d/M/y GGGGG"} + y{"d/M/y – d/M/y GGGGG"} + } H{ H{"HH – HH"} } @@ -726,23 +833,92 @@ to{ } } characterLabel{ + activities{"vaʻinga"} + african_scripts{"tohinima fakaʻafilika"} + american_scripts{"tohinima fakaʻamelika"} animal{"manu"} + animals_nature{"manu & natula"} + arrows{"ngahau"} body{"sino"} + box_drawing{"tā puha"} + braille{"mataʻitohi maʻae kakai kui"} building{"fale"} + bullets_stars{"pulu & fetuʻu"} + consonantal_jamo{"samo fakakonisinanite"} + currency_symbols{"fakaʻilonga paʻanga"} + dash_connector{"kohi"} + digits{"mataʻifika"} + dingbats{"nikonikoʻi"} + divination_symbols{"fakaʻilonga tongafisi"} + downwards_arrows{"ngahau hifo"} + downwards_upwards_arrows{"ngahau hake-hifo"} + east_asian_scripts{"tohinima fakaʻēsia-hahake"} + emoji{"ngaahi ongo"} + european_scripts{"tohinima fakaʻeulope"} female{"fakafefine"} flag{"fuka"} flags{"ngaahi fuka"} + food_drink{"inu & kai"} + format{"anga"} + format_whitespace{"anga & vā hinehina"} + full_width_form_variant{"fuo faikeheʻi fakalaulahiloa"} + geometric_shapes{"fuo fakasiomita"} + half_width_form_variant{"fuo faikeheʻi fakalaulahi"} + han_characters{"mataʻitohi hana"} + han_radicals{"ʻelitoʻi hana"} + hanja{"hanisa"} + hanzi_simplified{"hanisī fakafaingofua"} + hanzi_traditional{"hanisī tukufakaholo"} heart{"mafu"} + historic_scripts{"tohinima fakatupuʻanga"} + ideographic_desc_characters{"fakaʻilonga fakakaukau"} + japanese_kana{"kana fakasiapani"} + kanbun{"kanipuni"} + kanji{"kanisī"} keycap{"tatā foʻi kī"} + leftwards_arrows{"ngahau hema"} + leftwards_rightwards_arrows{"ngahau hema-mataʻu"} + letterlike_symbols{"fakaʻilonga vāofi mataʻitohi"} + limited_use{"ngāueʻaki fakangatangata"} male{"fakatangata"} + math_symbols{"fakaʻilonga matematika"} + middle_eastern_scripts{"tohinima fakahahake-lotoloto"} + miscellaneous{"kehekehe"} + modern_scripts{"tohinima fakaonopooni"} + modifier{"fakaliliu"} + musical_symbols{"fakaʻilonga fasi"} nature{"natula"} + nonspacing{"taʻevā"} + numbers{"fika"} + objects{"foʻi meʻa"} + other{"kehe"} + paired{"tauhoa"} person{"kakai"} + phonetic_alphabet{"motuʻalea fakafonētiki"} + pictographs{"foʻi ʻata"} place{"feituʻu"} plant{"ʻakau"} + punctuation{"fakaʻilonga mālōlō"} + rightwards_arrows{"ngahau mataʻu"} + sign_standard_symbols{"fakaʻilonga sīpinga"} + small_form_variant{"fuo faikeheʻi iiki"} smiley{"malimali"} + smileys_people{"malimali & kakai"} + south_asian_scripts{"tohinima fakaʻēsia-tonga"} + southeast_asian_scripts{"tohinima fakaʻēsia-tongahahake"} + spacing{"vā"} sport{"vāʻinga"} + symbols{"fakaʻilonga"} + technical_symbols{"fakaʻilonga tekinikale"} + tone_marks{"fakaʻilonga fasiʻalea"} travel{"folau"} + travel_places{"folau & feituʻu"} + upwards_arrows{"ngahau hake"} + variant_forms{"fuo faikeheʻi"} + vocalic_jamo{"samo fakavauele"} weather{"ʻea"} + western_asian_scripts{"tohinima fakaʻēsia-hihifo"} + whitespace{"vā hinehina"} } delimiters{ alternateQuotationEnd{"’"} @@ -820,12 +996,26 @@ to{ era{ dn{"kuonga"} } + era-narrow{ + dn{"kuonga"} + } + era-short{ + dn{"kuonga"} + } fri{ relative{ "-1"{"Falaite kuoʻosi"} "0"{"Falaité ni"} "1"{"Falaite kahaʻu"} } + relativeTime{ + future{ + other{"Ngaahi Falaite ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Ngaahi Falaite ʻe {0} ʻi he kuohili"} + } + } } fri-narrow{ relative{ @@ -833,6 +1023,14 @@ to{ "0"{"Falaité ni"} "1"{"Falaite kahaʻu"} } + relativeTime{ + future{ + other{"Falaite ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Falaite ʻe {0} ʻi he kuohili"} + } + } } fri-short{ relative{ @@ -840,9 +1038,20 @@ to{ "0"{"Falaité ni"} "1"{"Falaite kahaʻu"} } + relativeTime{ + future{ + other{"Falaite ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Falaite ʻe {0} ʻi he kuohili"} + } + } } hour{ dn{"houa"} + relative{ + "0"{"ko e houa ʻeni"} + } relativeTime{ future{ other{"ʻi he houa ʻe {0}"} @@ -876,6 +1085,9 @@ to{ } minute{ dn{"miniti"} + relative{ + "0"{"ko e miniti ʻeni"} + } relativeTime{ future{ other{"ʻi he miniti ʻe {0}"} @@ -913,6 +1125,14 @@ to{ "0"{"Mōnité ni"} "1"{"Mōnite kahaʻu"} } + relativeTime{ + future{ + other{"Ngaahi Mōnite ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Ngaahi Mōnite ʻe {0} ʻi he kuohili"} + } + } } mon-narrow{ relative{ @@ -920,6 +1140,14 @@ to{ "0"{"Mōnité ni"} "1"{"Mōnite kahaʻu"} } + relativeTime{ + future{ + other{"Mōnite ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Mōnite ʻe {0} ʻi he kuohili"} + } + } } mon-short{ relative{ @@ -927,6 +1155,14 @@ to{ "0"{"Mōnité ni"} "1"{"Mōnite kahaʻu"} } + relativeTime{ + future{ + other{"Mōnite ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Mōnite ʻe {0} ʻi he kuohili"} + } + } } month{ dn{"māhina"} @@ -1030,6 +1266,14 @@ to{ "0"{"Tokonakí ni"} "1"{"Tokonaki kahaʻu"} } + relativeTime{ + future{ + other{"Ngaahi Tokonaki ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Ngaahi Tokonaki ʻe {0} ʻi he kuohili"} + } + } } sat-narrow{ relative{ @@ -1037,6 +1281,14 @@ to{ "0"{"Tokonakí ni"} "1"{"Tokonaki kahaʻu"} } + relativeTime{ + future{ + other{"Tokonaki ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Tokonaki ʻe {0} ʻi he kuohili"} + } + } } sat-short{ relative{ @@ -1044,6 +1296,14 @@ to{ "0"{"Tokonakí ni"} "1"{"Tokonaki kahaʻu"} } + relativeTime{ + future{ + other{"Tokonaki ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Tokonaki ʻe {0} ʻi he kuohili"} + } + } } second{ dn{"sekoni"} @@ -1087,6 +1347,14 @@ to{ "0"{"Sāpaté ni"} "1"{"Sāpate kahaʻu"} } + relativeTime{ + future{ + other{"Ngaahi Sāpate ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Ngaahi Sāpate ʻe {0} ʻi he kuohili"} + } + } } sun-narrow{ relative{ @@ -1094,6 +1362,14 @@ to{ "0"{"Sāpaté ni"} "1"{"Sāpate kahaʻu"} } + relativeTime{ + future{ + other{"Sāpate ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Sāpate ʻe {0} ʻi he kuohili"} + } + } } sun-short{ relative{ @@ -1101,6 +1377,14 @@ to{ "0"{"Sāpaté ni"} "1"{"Sāpate kahaʻu"} } + relativeTime{ + future{ + other{"Sāpate ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Sāpate ʻe {0} ʻi he kuohili"} + } + } } thu{ relative{ @@ -1108,6 +1392,14 @@ to{ "0"{"Tuʻapulelulú ni"} "1"{"Tuʻapulelulu kahaʻu"} } + relativeTime{ + future{ + other{"Ngaahi Tuʻapulelulu ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Ngaahi Tuʻapulelulu ʻe {0} ʻi he kuohili"} + } + } } thu-narrow{ relative{ @@ -1115,6 +1407,14 @@ to{ "0"{"Tuʻapulelulú ni"} "1"{"Tuʻapulelulu kahaʻu"} } + relativeTime{ + future{ + other{"Tuʻapulelulu ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Tuʻapulelulu ʻe {0} ʻi he kuohili"} + } + } } thu-short{ relative{ @@ -1122,6 +1422,14 @@ to{ "0"{"Tuʻapulelulú ni"} "1"{"Tuʻapulelulu kahaʻu"} } + relativeTime{ + future{ + other{"Tuʻapulelulu ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Tuʻapulelulu ʻe {0} ʻi he kuohili"} + } + } } tue{ relative{ @@ -1129,6 +1437,14 @@ to{ "0"{"Tūsité ni"} "1"{"Tūsite kahaʻu"} } + relativeTime{ + future{ + other{"Ngaahi Tūsite ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Ngaahi Tūsite ʻe {0} ʻi he kuohili"} + } + } } tue-narrow{ relative{ @@ -1136,6 +1452,14 @@ to{ "0"{"Tūsité ni"} "1"{"Tūsite kahaʻu"} } + relativeTime{ + future{ + other{"Tūsite ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Tūsite ʻe {0} ʻi he kuohili"} + } + } } tue-short{ relative{ @@ -1143,6 +1467,14 @@ to{ "0"{"Tūsité ni"} "1"{"Tūsite kahaʻu"} } + relativeTime{ + future{ + other{"Tūsite ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Tūsite ʻe {0} ʻi he kuohili"} + } + } } wed{ relative{ @@ -1150,6 +1482,14 @@ to{ "0"{"Pulelulú ni"} "1"{"Pulelulu kahaʻu"} } + relativeTime{ + future{ + other{"Ngaahi Pulelulu ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Ngaahi Pulelulu ʻe {0} ʻi he kuohili"} + } + } } wed-narrow{ relative{ @@ -1157,6 +1497,14 @@ to{ "0"{"Pulelulú ni"} "1"{"Pulelulu kahaʻu"} } + relativeTime{ + future{ + other{"Pulelulu ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Pulelulu ʻe {0} ʻi he kuohili"} + } + } } wed-short{ relative{ @@ -1164,6 +1512,14 @@ to{ "0"{"Pulelulú ni"} "1"{"Pulelulu kahaʻu"} } + relativeTime{ + future{ + other{"Pulelulu ʻe {0} ʻi he kahaʻu"} + } + past{ + other{"Pulelulu ʻe {0} ʻi he kuohili"} + } + } } week{ dn{"uike"} @@ -1172,6 +1528,7 @@ to{ "0"{"uiké ni"} "1"{"uike kahaʻu"} } + relativePeriod{"ʻi he uike ʻo e {0}"} relativeTime{ future{ other{"ʻi he uike ʻe {0}"} @@ -1188,6 +1545,7 @@ to{ "0"{"uiké ni"} "1"{"uike kahaʻu"} } + relativePeriod{"ʻi he uike ʻo e {0}"} relativeTime{ future{ other{"ʻi he uike ʻe {0}"} @@ -1204,6 +1562,7 @@ to{ "0"{"uiké ni"} "1"{"uike kahaʻu"} } + relativePeriod{"ʻi he uike ʻo e {0}"} relativeTime{ future{ other{"ʻi he uike ʻe {0}"} @@ -1291,11 +1650,19 @@ to{ zone{ dn{"taimi fakavahe"} } + zone-narrow{ + dn{"taimi fakavahe"} + } + zone-short{ + dn{"taimi fakavahe"} + } } listPattern{ or{ 2{"{0} pē {1}"} end{"{0}, pē {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} } standard{ 2{"{0} mo {1}"} @@ -1333,4 +1700,36 @@ to{ US{"fakaʻamelika"} metric{"fakamita"} } + parse{ + date{ + lenient{ + "[\\--/]", + "[\\:∶]", + } + } + general{ + lenient{ + "[.․。︒﹒.。]", + "['ʼ՚᾽᾿’']", + "[%٪﹪%]", + "[؉‰]", + "[\$﹩$$]", + "[£₤]", + "[¥¥]", + "[₩₩]", + "[₨₹{Rp}{Rs}]", + } + } + number{ + lenient{ + "[\\-‒⁻₋−➖﹣-]", + "[,،٫、︐︑﹐﹑,、]", + "[+⁺₊➕﬩﹢+]", + } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } + } + } } diff --git a/source/data/locales/to_TO.txt b/source/data/locales/to_TO.txt index 9899a7a..6da4747 100644 --- a/source/data/locales/to_TO.txt +++ b/source/data/locales/to_TO.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License to_TO{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/tr.txt b/source/data/locales/tr.txt index 6ccf735..b0fc6ad 100644 --- a/source/data/locales/tr.txt +++ b/source/data/locales/tr.txt @@ -15,10 +15,10 @@ tr{ } ExemplarCharacters{"[a b c ç d e f g ğ h ı i İ j k l m n o ö p r s ş t u ü v y z]"} ExemplarCharactersIndex{"[A B C Ç D E F G H I İ J K L M N O Ö P Q R S Ş T U Ü V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } MoreInformation{"?"} NumberElements{ @@ -33,6 +33,7 @@ tr{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"%#,##0"} scientificFormat{"#E0"} } @@ -196,9 +197,11 @@ tr{ group{"."} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -215,9 +218,36 @@ tr{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.48.42"} + Version{"36"} calendar{ + buddhist{ + eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } + wide{ + "BE", + } + } + } coptic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -235,6 +265,21 @@ tr{ "Mısrî", "Nesî", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "Tût", "Bâbe", @@ -267,6 +312,21 @@ tr{ "Mısrî", "Nesî", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "Tût", "Bâbe", @@ -286,6 +346,20 @@ tr{ } } ethiopic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ wide{ @@ -395,10 +469,6 @@ tr{ h{"B h:mm–h:mm"} m{"B h:mm–h:mm"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } GyM{ G{"GGGGG MM.y – GGGGG MM.y"} M{"GGGGG MM.y – MM.y"} @@ -433,6 +503,20 @@ tr{ d{"GGGGG dd.MM.y – dd.MM.y"} y{"GGGGG dd.MM.y – dd.MM.y"} } + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"MM–MM"} } @@ -780,10 +864,6 @@ tr{ h{"B h:mm–h:mm"} m{"B h:mm–h:mm"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } GyM{ G{"GGGGG MM.y – GGGGG MM.y"} M{"GGGGG MM.y – MM.y"} @@ -1046,6 +1126,17 @@ tr{ } } hebrew{ + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } monthNames{ format{ abbreviated{ @@ -1117,6 +1208,37 @@ tr{ } } } + indian{ + eras{ + abbreviated{ + "Saka", + } + narrow{ + "Saka", + } + wide{ + "Saka", + } + } + monthNames{ + format{ + wide{ + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", + } + } + } + } islamic{ eras{ abbreviated{ @@ -1145,6 +1267,20 @@ tr{ "Zilkade", "Zilhicce", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "Muharrem", "Safer", @@ -1175,6 +1311,20 @@ tr{ "Zilkade", "Zilhicce", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "Muharrem", "Safer", @@ -1210,6 +1360,17 @@ tr{ } } persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } monthNames{ format{ wide{ @@ -1694,6 +1855,11 @@ tr{ } quarter-narrow{ dn{"çyr."} + relative{ + "-1"{"geçen çyr."} + "0"{"bu çyr."} + "1"{"gelecek çyr."} + } relativeTime{ future{ one{"{0} çyr. sonra"} @@ -1707,6 +1873,11 @@ tr{ } quarter-short{ dn{"çyr."} + relative{ + "-1"{"geçen çyr."} + "0"{"bu çyr."} + "1"{"gelecek çyr."} + } relativeTime{ future{ one{"{0} çyr. sonra"} @@ -2036,6 +2207,11 @@ tr{ } week-narrow{ dn{"hf."} + relative{ + "-1"{"geçen hf."} + "0"{"bu hf."} + "1"{"gelecek hf."} + } relativePeriod{"{0} haftası"} relativeTime{ future{ @@ -2050,6 +2226,11 @@ tr{ } week-short{ dn{"hf."} + relative{ + "-1"{"geçen hf."} + "0"{"bu hf."} + "1"{"gelecek hf."} + } relativePeriod{"{0} haftası"} relativeTime{ future{ @@ -2169,8 +2350,6 @@ tr{ standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} ve {1}"} diff --git a/source/data/locales/tr_CY.txt b/source/data/locales/tr_CY.txt index 3edeab6..317dccc 100644 --- a/source/data/locales/tr_CY.txt +++ b/source/data/locales/tr_CY.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tr_CY{ - Version{"2.1.47.71"} + Version{"36"} calendar{ gregorian{ DateTimePatterns{ diff --git a/source/data/locales/tr_TR.txt b/source/data/locales/tr_TR.txt index bb52b17..a7964e8 100644 --- a/source/data/locales/tr_TR.txt +++ b/source/data/locales/tr_TR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tr_TR{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/tt.txt b/source/data/locales/tt.txt index 3e53dfa..51b239b 100644 --- a/source/data/locales/tt.txt +++ b/source/data/locales/tt.txt @@ -1,10 +1,16 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tt{ + AuxExemplarCharacters{"[ғ қ]"} ExemplarCharacters{ - "[а ә б в г д е ё ж җ з и й к л м н о ө п р с т у ү ф х һ ц ч ш щ ъ ы ь э ю я" - "]" + "[а ә б в г д е ё ж җ з и й к л м н ң о ө п р с т у ү ф х һ ц ч ш щ ъ ы ь э ю" + " я]" } + ExemplarCharactersIndex{ + "[А Ә Б В Г Д Е Ё Ж Җ З И Й К Л М Н Ң О Ө П Р С Т У Ү Ф Х Һ Ц Ч Ш Щ Ъ Ы Ь Э Ю" + " Я]" + } + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # ′ ″]"} NumberElements{ default{"latn"} latn{ @@ -35,7 +41,7 @@ tt{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -230,6 +236,10 @@ tt{ eras{ abbreviated{ "б.э.к.", + "милади", + } + abbreviated%variant{ + "б.э.к.", "б.э.", } wide{ diff --git a/source/data/locales/tt_RU.txt b/source/data/locales/tt_RU.txt index 84b1fe0..46d96fc 100644 --- a/source/data/locales/tt_RU.txt +++ b/source/data/locales/tt_RU.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tt_RU{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/twq.txt b/source/data/locales/twq.txt index 65284bd..add3684 100644 --- a/source/data/locales/twq.txt +++ b/source/data/locales/twq.txt @@ -3,7 +3,7 @@ twq{ AuxExemplarCharacters{"[v]"} ExemplarCharacters{"[a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž]"} - ExemplarCharactersNumbers{"[  \\- . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -17,7 +17,7 @@ twq{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/twq_NE.txt b/source/data/locales/twq_NE.txt index 29ad37d..7ac62c7 100644 --- a/source/data/locales/twq_NE.txt +++ b/source/data/locales/twq_NE.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License twq_NE{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/tzm.txt b/source/data/locales/tzm.txt index 1479661..5a488fc 100644 --- a/source/data/locales/tzm.txt +++ b/source/data/locales/tzm.txt @@ -4,7 +4,7 @@ tzm{ AuxExemplarCharacters{"[o p v]"} ExemplarCharacters{"[a b c d ḍ e ɛ f g {gʷ} ɣ h ḥ i j k {kʷ} l m n q r ṛ s ṣ t ṭ u w x y z]"} ExemplarCharactersIndex{"[A B C D Ḍ E Ɛ F G Ɣ H Ḥ I J K L M N Q R Ṛ S Ṣ T Ṭ U W X Y Z]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -16,7 +16,7 @@ tzm{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/tzm_MA.txt b/source/data/locales/tzm_MA.txt index 59c053e..ab6f830 100644 --- a/source/data/locales/tzm_MA.txt +++ b/source/data/locales/tzm_MA.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tzm_MA{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/ug.txt b/source/data/locales/ug.txt index 93c50dd..78249d2 100644 --- a/source/data/locales/ug.txt +++ b/source/data/locales/ug.txt @@ -10,7 +10,7 @@ ug{ "[{ئا} {ئه} {ئو} {ئۇ} {ئۆ} {ئۈ} {ئې} {ئى} ا ە ب پ ت ج چ خ د ر ز ژ س ش غ ف ق ك" " گ ڭ ل م ن ھ و ۇ ۆ ۈ ۋ ې ى ي]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ miscPatterns{ @@ -149,7 +149,7 @@ ug{ } native{"arabext"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ eras{ diff --git a/source/data/locales/ug_CN.txt b/source/data/locales/ug_CN.txt index 358b08d..ef1e7cb 100644 --- a/source/data/locales/ug_CN.txt +++ b/source/data/locales/ug_CN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ug_CN{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/uk.txt b/source/data/locales/uk.txt index c92e03f..bf791b1 100644 --- a/source/data/locales/uk.txt +++ b/source/data/locales/uk.txt @@ -6,15 +6,23 @@ uk{ "\u0301} ъ ы э {ю\u0301} {я\u0301}]" } Ellipsis{ + final{"{0}…"} + initial{"…{0}"} + medial{"{0}…{1}"} word-final{"{0}…"} word-initial{"…{0}"} word-medial{"{0}…{1}"} } ExemplarCharacters{"[а б в г ґ д е є ж з и і ї й к л м н о п р с т у ф х ц ч ш щ ь ю я ʼ]"} ExemplarCharactersIndex{"[А Б В Г Ґ Д Е Є Ж З И І Ї Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ю Я]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- – , ; \\: ! ? . ' ’ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * / \\\\ №]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{ + "[\\- ‑ – , ; \\: ! ? . ' ’ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * / \\\\ №" + "]" + } + MoreInformation{"?"} NumberElements{ + default{"latn"} latn{ miscPatterns{ approximately{"~{0}"} @@ -25,6 +33,7 @@ uk{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -260,10 +269,13 @@ uk{ group{" "} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -279,8 +291,9 @@ uk{ } } minimumGroupingDigits{"1"} + native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ eras{ @@ -296,6 +309,20 @@ uk{ } } coptic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -364,6 +391,20 @@ uk{ } } ethiopic{ + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } monthNames{ format{ abbreviated{ @@ -478,17 +519,37 @@ uk{ "{1} {0}", } availableFormats{ + Bh{"h B"} + Bhm{"h:mm B"} + Bhms{"h:mm:ss B"} + E{"ccc"} + EBhm{"E h:mm B"} + EBhms{"E h:mm:ss B"} + EHm{"E HH:mm"} + EHms{"E HH:mm:ss"} Ed{"E, d"} + Ehm{"E h:mm a"} + Ehms{"E h:mm:ss a"} Gy{"y G"} GyMMM{"LLL y G"} GyMMMEd{"E, d MMM y G"} GyMMMd{"d MMM y G"} + H{"HH"} + Hm{"HH:mm"} + Hms{"HH:mm:ss"} + M{"L"} MEd{"E, dd.MM"} + MMM{"LLL"} MMMEd{"E, d MMM"} MMMMEd{"E, d MMMM"} MMMMd{"d MMMM"} MMMd{"d MMM"} Md{"dd.MM"} + d{"d"} + h{"h a"} + hm{"h:mm a"} + hms{"h:mm:ss a"} + ms{"mm:ss"} y{"y G"} yyyy{"y G"} yyyyM{"MM.y G"} @@ -549,6 +610,20 @@ uk{ d{"dd.MM.y – dd.MM.y G"} y{"dd.MM.y – dd.MM.y G"} } + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } + Hmv{ + H{"HH:mm–HH:mm v"} + m{"HH:mm–HH:mm v"} + } + Hv{ + H{"HH–HH v"} + } M{ M{"M–M"} } @@ -556,6 +631,9 @@ uk{ M{"E, dd.MM – E, dd.MM"} d{"E, dd.MM – E, dd.MM"} } + MMM{ + M{"LLL–LLL"} + } MMMEd{ M{"E, d MMM – E, d MMM"} d{"E, d – E, d MMM"} @@ -568,6 +646,28 @@ uk{ M{"dd.MM – dd.MM"} d{"dd.MM – dd.MM"} } + d{ + d{"d–d"} + } + fallback{"{0} – {1}"} + h{ + a{"h a – h a"} + h{"h–h a"} + } + hm{ + a{"h:mm a – h:mm a"} + h{"h:mm–h:mm a"} + m{"h:mm–h:mm a"} + } + hmv{ + a{"h:mm a – h:mm a v"} + h{"h:mm–h:mm a v"} + m{"h:mm–h:mm a v"} + } + hv{ + a{"h a – h a v"} + h{"h–h a v"} + } y{ y{"y–y"} } @@ -838,6 +938,10 @@ uk{ "до н. е.", "н. е.", } + abbreviated%variant{ + "до н. е.", + "н. е.", + } narrow{ "до н.е.", "н.е.", @@ -861,8 +965,14 @@ uk{ h{"h:mm–h:mm B"} m{"h:mm–h:mm B"} } + Gy{ + G{"y 'р'. G – y 'р'. G"} + y{"y–y 'рр'. G"} + } GyM{ G{"MM.y G – MM.y G"} + M{"MM.y – MM.y G"} + y{"MM.y – MM.y G"} } GyMEd{ G{"ccc, dd.MM.y G – ccc, dd.MM.y G"} @@ -870,8 +980,28 @@ uk{ d{"ccc, dd.MM.y – ccc, dd.MM.y G"} y{"ccc, dd.MM.y – ccc, dd.MM.y G"} } + GyMMM{ + G{"LLL y 'р'. G – LLL y 'р'. G"} + M{"LLL – LLL y 'р'. G"} + y{"LLL y – LLL y 'рр'. G"} + } + GyMMMEd{ + G{"ccc, d MMM y 'р'. G – ccc, d MMM y 'р'. G"} + M{"ccc, d MMM – ccc, d MMM y 'р'. G"} + d{"ccc, d MMM – ccc, d MMM y 'р'. G"} + y{"ccc, d MMM y – ccc, d MMM y 'рр'. G"} + } + GyMMMd{ + G{"d MMM y 'р'. G – d MMM y 'р'. G"} + M{"d MMM – d MMM y 'р'. G"} + d{"d–d MMM y 'р'. G"} + y{"d MMM y – d MMM y 'рр'. G"} + } GyMd{ G{"dd.MM.y G – dd.MM.y G"} + M{"dd.MM.y – dd.MM.y G"} + d{"dd.MM.y – dd.MM.y G"} + y{"dd.MM.y – dd.MM.y G"} } H{ H{"HH–HH"} @@ -1101,6 +1231,17 @@ uk{ } } hebrew{ + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } monthNames{ format{ abbreviated{ @@ -1119,6 +1260,22 @@ uk{ "елул", "адар II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "тішри", "марчешван", @@ -1136,9 +1293,38 @@ uk{ "адар II", } } + stand-alone{ + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } + } } } indian{ + eras{ + abbreviated{ + "Saka", + } + narrow{ + "Saka", + } + wide{ + "Saka", + } + } monthNames{ format{ abbreviated{ @@ -1155,6 +1341,20 @@ uk{ "маг.", "фаль.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "чайтра", "вайсакха", @@ -1185,6 +1385,20 @@ uk{ "маг.", "фаль.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "чайтра", "вайсакха", @@ -1203,6 +1417,17 @@ uk{ } } islamic{ + eras{ + abbreviated{ + "AH", + } + narrow{ + "AH", + } + wide{ + "AH", + } + } monthNames{ format{ abbreviated{ @@ -1219,6 +1444,20 @@ uk{ "зу-ль-к.", "зу-ль-х.", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "мухаррам", "сафар", @@ -1249,6 +1488,20 @@ uk{ "зу-ль-к", "зу-ль-х", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "мухаррам", "сафар", @@ -1531,7 +1784,7 @@ uk{ } } characterLabel{ - activities{"Заняття"} + activities{"активність"} african_scripts{"африканське письмо"} american_scripts{"американське письмо"} animal{"тварина"} @@ -1546,7 +1799,7 @@ uk{ currency_symbols{"символ валюти"} dash_connector{"тире чи сполучний знак"} digits{"цифра"} - dingbats{"Дінгбати"} + dingbats{"дінгбати"} divination_symbols{"символ віщування"} downwards_arrows{"стрілка вниз"} downwards_upwards_arrows{"стрілка вниз-вгору"} @@ -1597,7 +1850,7 @@ uk{ place{"місце"} plant{"рослина"} punctuation{"пунктуація"} - rightwards_arrows{"Стрілки вправо"} + rightwards_arrows{"стрілки вправо"} sign_standard_symbols{"знак чи символ"} small_form_variant{"малі варіанти"} smiley{"смайлик"} @@ -1613,7 +1866,7 @@ uk{ travel_places{"подорож чи місце"} upwards_arrows{"стрілки вгору"} variant_forms{"варіант"} - vocalic_jamo{"Корейські голосні"} + vocalic_jamo{"корейські голосні"} weather{"погода"} western_asian_scripts{"західноазійське письмо"} whitespace{"пробіл"} @@ -2025,9 +2278,9 @@ uk{ month-narrow{ dn{"м"} relative{ - "-1"{"минулого місяця"} - "0"{"цього місяця"} - "1"{"наступного місяця"} + "-1"{"мин. міс."} + "0"{"цього міс."} + "1"{"наст. міс."} } relativeTime{ future{ @@ -2089,7 +2342,7 @@ uk{ } } quarter-narrow{ - dn{"кв."} + dn{"кв"} relative{ "-1"{"минулого кв."} "0"{"цього кв."} @@ -2556,9 +2809,9 @@ uk{ week-short{ dn{"тиж."} relative{ - "-1"{"минулого тижня"} + "-1"{"мин. тижня"} "0"{"цього тижня"} - "1"{"наступного тижня"} + "1"{"наст. тижня"} } relativePeriod{"тиждень з {0}"} relativeTime{ @@ -2606,7 +2859,7 @@ uk{ year{ dn{"рік"} relative{ - "-1"{"торік"} + "-1"{"минулого року"} "0"{"цього року"} "1"{"наступного року"} } @@ -2630,7 +2883,7 @@ uk{ relative{ "-1"{"торік"} "0"{"цього року"} - "1"{"наступного року"} + "1"{"наст. р."} } relativeTime{ future{ @@ -2651,8 +2904,8 @@ uk{ dn{"р."} relative{ "-1"{"торік"} - "0"{"цього року"} - "1"{"наступного року"} + "0"{"цьогоріч"} + "1"{"наст. року"} } relativeTime{ future{ @@ -2683,16 +2936,18 @@ uk{ or{ 2{"{0} або {1}"} end{"{0} або {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} } standard{ 2{"{0} і {1}"} end{"{0} і {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} } standard-narrow{ 2{"{0}, {1}"} end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } standard-short{ 2{"{0} і {1}"} @@ -2703,6 +2958,16 @@ uk{ unit{ 2{"{0} і {1}"} end{"{0} і {1}"} + middle{"{0}, {1}"} + start{"{0}, {1}"} + } + unit-narrow{ + middle{"{0}, {1}"} + start{"{0}, {1}"} + } + unit-short{ + middle{"{0}, {1}"} + start{"{0}, {1}"} } } measurementSystemNames{ @@ -2736,6 +3001,10 @@ uk{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/uk_UA.txt b/source/data/locales/uk_UA.txt index fa19c0b..296992e 100644 --- a/source/data/locales/uk_UA.txt +++ b/source/data/locales/uk_UA.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License uk_UA{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/ur.txt b/source/data/locales/ur.txt index 073f1ec..bc6e9d3 100644 --- a/source/data/locales/ur.txt +++ b/source/data/locales/ur.txt @@ -21,34 +21,43 @@ ur{ "[ا ب پ ت ٹ ث ج چ ح خ د ڈ ذ ر ڑ ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ہ ھ ء ی ے" "]" } - ExemplarCharactersNumbers{"[\u200E \\- , ٫ ٬ . % ‰ + 0۰ 1۱ 2۲ 3۳ 4۴ 5۵ 6۶ 7۷ 8۸ 9۹]"} + ExemplarCharactersNumbers{"[\u200E \\- ‑ , ٫ ٬ . % ‰ + 0۰ 1۱ 2۲ 3۳ 4۴ 5۵ 6۶ 7۷ 8۸ 9۹]"} ExemplarCharactersPunctuation{"[، ؍ ٫ ٬ ؛ \\: ؟ . ۔ ( ) \\[ \\]]"} MoreInformation{"؟"} NumberElements{ arabext{ patterns{ currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } symbols{ + decimal{"٫"} exponential{"×۱۰^"} + group{"٬"} infinity{"∞"} list{";"} + minusSign{"‎-‎"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"‎+‎"} superscriptingExponent{"×"} } } + default{"latn"} latn{ miscPatterns{ + approximately{"~{0}"} atLeast{"≥{0}"} + atMost{"≤{0}"} range{"{0}–{1}"} } patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤ #,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -207,8 +216,11 @@ ur{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + list{";"} minusSign{"‎-"} nan{"NaN"} perMille{"‰"} @@ -230,8 +242,21 @@ ur{ minimumGroupingDigits{"1"} native{"arabext"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ + buddhist{ + eras{ + abbreviated{ + "BE", + } + narrow{ + "BE", + } + wide{ + "BE", + } + } + } coptic{ eras{ abbreviated{ @@ -1115,6 +1140,17 @@ ur{ } } hebrew{ + eras{ + abbreviated{ + "AM", + } + narrow{ + "AM", + } + wide{ + "AM", + } + } monthNames{ format{ abbreviated{ @@ -1337,6 +1373,17 @@ ur{ } } persian{ + eras{ + abbreviated{ + "AP", + } + narrow{ + "AP", + } + wide{ + "AP", + } + } monthNames{ format{ abbreviated{ @@ -1568,7 +1615,7 @@ ur{ } past{ one{"{0} دن پہلے"} - other{"{0} دنوں پہلے"} + other{"{0} دن پہلے"} } } } @@ -1788,8 +1835,8 @@ ur{ month{ dn{"مہینہ"} relative{ - "-1"{"پچھلا مہینہ"} - "0"{"اس مہینہ"} + "-1"{"گزشتہ ماہ"} + "0"{"اس ماہ"} "1"{"اگلا مہینہ"} } relativeTime{ @@ -1805,6 +1852,11 @@ ur{ } month-narrow{ dn{"ماہ"} + relative{ + "-1"{"گزشتہ ماہ"} + "0"{"اس ماہ"} + "1"{"اگلے ماہ"} + } relativeTime{ future{ one{"{0} ماہ میں"} @@ -2178,9 +2230,9 @@ ur{ week{ dn{"ہفتہ"} relative{ - "-1"{"پچھلے ہفتہ"} + "-1"{"گزشتہ ہفتے"} "0"{"اس ہفتہ"} - "1"{"اگلے ہفتہ"} + "1"{"اگلے ہفتے"} } relativePeriod{"{0} کے ہفتے"} relativeTime{ @@ -2339,6 +2391,10 @@ ur{ middle{"{0}، {1}"} start{"{0}، {1}"} } + standard-narrow{ + 2{"{0}، {1}"} + end{"{0}، {1}"} + } standard-short{ 2{"{0} اور {1}"} end{"{0}، اور {1}"} @@ -2346,7 +2402,7 @@ ur{ start{"{0}، {1}"} } unit{ - 2{"{0} اور {1}"} + 2{"{0}، {1}"} end{"{0}، اور {1}"} middle{"{0}, {1}"} start{"{0}, {1}"} @@ -2365,8 +2421,8 @@ ur{ } } measurementSystemNames{ - UK{"سلطنت متحدہ"} - US{"ریاستہائے متحدہ"} + UK{"برطانیہ"} + US{"ریاست ہائے متحدہ امریکہ"} metric{"میٹرک"} } parse{ diff --git a/source/data/locales/ur_IN.txt b/source/data/locales/ur_IN.txt index cf52965..ea01f0e 100644 --- a/source/data/locales/ur_IN.txt +++ b/source/data/locales/ur_IN.txt @@ -14,7 +14,7 @@ ur_IN{ } } } - Version{"2.1.47.71"} + Version{"36"} fields{ day-narrow{ relativeTime{ diff --git a/source/data/locales/ur_PK.txt b/source/data/locales/ur_PK.txt index 89fc382..da3e57b 100644 --- a/source/data/locales/ur_PK.txt +++ b/source/data/locales/ur_PK.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ur_PK{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/uz.txt b/source/data/locales/uz.txt index a2eee46..6108cb1 100644 --- a/source/data/locales/uz.txt +++ b/source/data/locales/uz.txt @@ -12,21 +12,24 @@ uz{ } ExemplarCharacters{"[a b d e f g h i j k l m n o p q r s t u v x y z {oʻ} {gʻ} {sh} {ch} ʼ]"} ExemplarCharactersIndex{"[A B D E F G H I J K L M N O P Q R S T U V X Y Z {Oʻ} {Gʻ} {Sh} {Ch}]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” „ « » ( ) \\[ \\] \\{ \\} § @ * " - "/ \\& # ′ ″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” „ « » ( ) \\[ \\] \\{ \\} § @ " + "* / \\& # ′ ″]" } MoreInformation{"?"} NumberElements{ arabext{ patterns{ currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } symbols{ + decimal{"٫"} exponential{"×۱۰^"} + group{"٬"} infinity{"∞"} minusSign{"-"} nan{"son emas"} @@ -48,6 +51,7 @@ uz{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -210,9 +214,11 @@ uz{ exponential{"E"} group{" "} infinity{"∞"} + minusSign{"-"} nan{"son emas"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -229,7 +235,7 @@ uz{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -918,20 +924,90 @@ uz{ } } islamic{ + availableFormats{ + yyyyMMM{"MMM, y (G)"} + yyyyMMMM{"MMMM, y G"} + yyyyMMMd{"d-MMM, y G"} + yyyyQQQ{"QQQ, y (G)"} + yyyyQQQQ{"QQQQ, y (G)"} + } + eras{ + abbreviated{ + "Hijriy yil", + } + } monthNames{ format{ + abbreviated{ + "Muh.", + "Saf.", + "Rob. avv.", + "Rob. ox.", + "Jum. avv.", + "Jum. ox.", + "Raj.", + "Sha.", + "Ram.", + "Shav.", + "Zul-q.", + "Zul-h.", + } wide{ "Muharram", "Safar", - "Robiʼ ul-avval", - "Robiʼ ul-oxir", + "Robi’ ul-avval", + "Robi’ ul-oxir", "Jumad ul-avval", "Jumad ul-oxir", "Rajab", - "Shaʼbon", + "Sha’bon", "Ramazon", "Shavvol", - "Zul-qaʼda", + "Zul-qa’da", + "Zul-hijja", + } + } + stand-alone{ + abbreviated{ + "Muh.", + "Saf.", + "Rob. avv.", + "Rob. ox.", + "Jum. avv.", + "Jum. ox.", + "Raj.", + "Sha.", + "Ram.", + "Shav.", + "Zul-q.", + "Zul-h.", + } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "Muharram", + "Safar", + "Robi’ ul-avval", + "Robi’ ul-oxir", + "Jumad ul-avval", + "Jumad ul-oxir", + "Rajab", + "Sha’bon", + "Ramazon", + "Shavvol", + "Zul-qa’da", "Zul-hijja", } } @@ -1310,6 +1386,11 @@ uz{ } month-narrow{ dn{"oy"} + relative{ + "-1"{"o‘tgan oy"} + "0"{"bu oy"} + "1"{"keyingi oy"} + } relativeTime{ future{ one{"{0} oydan keyin"} @@ -1323,6 +1404,11 @@ uz{ } month-short{ dn{"oy"} + relative{ + "-1"{"o‘tgan oy"} + "0"{"bu oy"} + "1"{"keyingi oy"} + } relativeTime{ future{ one{"{0} oydan keyin"} @@ -1696,6 +1782,11 @@ uz{ } week-narrow{ dn{"hafta"} + relative{ + "-1"{"o‘tgan hafta"} + "0"{"bu hafta"} + "1"{"keyingi hafta"} + } relativePeriod{"{0}-hafta"} relativeTime{ future{ @@ -1710,6 +1801,11 @@ uz{ } week-short{ dn{"hafta"} + relative{ + "-1"{"o‘tgan hafta"} + "0"{"bu hafta"} + "1"{"keyingi hafta"} + } relativePeriod{"{0}-hafta"} relativeTime{ future{ @@ -1770,7 +1866,7 @@ uz{ year-narrow{ dn{"yil"} relative{ - "-1"{"oʻtgan yil"} + "-1"{"o‘tgan yil"} "0"{"bu yil"} "1"{"keyingi yil"} } @@ -1788,7 +1884,7 @@ uz{ year-short{ dn{"yil"} relative{ - "-1"{"oʻtgan yil"} + "-1"{"o‘ʻtgan yil"} "0"{"bu yil"} "1"{"keyingi yil"} } diff --git a/source/data/locales/uz_Arab.txt b/source/data/locales/uz_Arab.txt index c4741d4..9cd4ae7 100644 --- a/source/data/locales/uz_Arab.txt +++ b/source/data/locales/uz_Arab.txt @@ -7,7 +7,7 @@ uz_Arab{ "[\u064B \u064C \u064D \u064E \u064F \u0650 \u0651 \u0652 \u0654 \u0670 ء آ أ" " ؤ ئ ا ب پ ة ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ه و ۇ ۉ ی]" } - ExemplarCharactersNumbers{"[\u200E \\- , ٫ ٬ . % ٪ ‰ ؉ + − 0۰ 1۱ 2۲ 3۳ 4۴ 5۵ 6۶ 7۷ 8۸ 9۹]"} + ExemplarCharactersNumbers{"[\u200E \\- ‑ , ٫ ٬ . % ٪ ‰ ؉ + − 0۰ 1۱ 2۲ 3۳ 4۴ 5۵ 6۶ 7۷ 8۸ 9۹]"} NumberElements{ arabext{ symbols{ @@ -29,7 +29,7 @@ uz_Arab{ } native{"arabext"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ gregorian{ dayNames{ diff --git a/source/data/locales/uz_Arab_AF.txt b/source/data/locales/uz_Arab_AF.txt index 533b393..90abe70 100644 --- a/source/data/locales/uz_Arab_AF.txt +++ b/source/data/locales/uz_Arab_AF.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License uz_Arab_AF{ - Version{"2.1.47.82"} + Version{"36"} calendar{ default{"persian"} } diff --git a/source/data/locales/uz_Cyrl.txt b/source/data/locales/uz_Cyrl.txt index c9ccb28..f0d69e7 100644 --- a/source/data/locales/uz_Cyrl.txt +++ b/source/data/locales/uz_Cyrl.txt @@ -12,7 +12,7 @@ uz_Cyrl{ word-medial{"{0} … {1}"} } ExemplarCharacters{"[а б в г ғ д е ё ж з и й к қ л м н о п р с т у ў ф х ҳ ч ш ъ э ю я]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} MoreInformation{"?"} NumberElements{ arabext{ @@ -165,7 +165,7 @@ uz_Cyrl{ } } } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/uz_Cyrl_UZ.txt b/source/data/locales/uz_Cyrl_UZ.txt index 4555d0d..5f356f5 100644 --- a/source/data/locales/uz_Cyrl_UZ.txt +++ b/source/data/locales/uz_Cyrl_UZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License uz_Cyrl_UZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/uz_Latn.txt b/source/data/locales/uz_Latn.txt index 14301e9..bc68300 100644 --- a/source/data/locales/uz_Latn.txt +++ b/source/data/locales/uz_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License uz_Latn{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/uz_Latn_UZ.txt b/source/data/locales/uz_Latn_UZ.txt index 155c6ec..f72a227 100644 --- a/source/data/locales/uz_Latn_UZ.txt +++ b/source/data/locales/uz_Latn_UZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License uz_Latn_UZ{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/vai.txt b/source/data/locales/vai.txt index 27e9f72..f4e6a8c 100644 --- a/source/data/locales/vai.txt +++ b/source/data/locales/vai.txt @@ -12,7 +12,7 @@ vai{ " ꗟ ꗠ ꗡ ꗢ ꗣ ꗤ ꗥ ꗦ ꗧ ꗨ ꗩ ꗪ ꗫ ꗬ ꗭ ꗮ ꗯ ꗰ ꗱ ꗲ ꗳ ꗴ ꗵ ꗶ ꗷ ꗸ ꗹ ꗺ ꗻ ꗼ ꗽ ꗾ ꗿ ꘀ ꘁ ꘂ ꘃ ꘄ" " ꘅ ꘆ ꘇ ꘈ ꘉ ꘊ ꘋ ꘌ]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ default{"latn"} latn{ @@ -28,7 +28,7 @@ vai{ } native{"vaii"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/vai_Latn.txt b/source/data/locales/vai_Latn.txt index 45ece42..cc83f3f 100644 --- a/source/data/locales/vai_Latn.txt +++ b/source/data/locales/vai_Latn.txt @@ -7,7 +7,7 @@ vai_Latn{ " {ɔ\u0301} {ɔ\u0303} p q r s t u ú ũ v w x y z]" } ExemplarCharactersIndex{"[A B Ɓ C D Ɗ E Ɛ F G H I J K L M N Ŋ O Ɔ P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ default{"latn"} latn{ @@ -23,7 +23,7 @@ vai_Latn{ } native{"vaii"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/vai_Latn_LR.txt b/source/data/locales/vai_Latn_LR.txt index 964821e..d34e708 100644 --- a/source/data/locales/vai_Latn_LR.txt +++ b/source/data/locales/vai_Latn_LR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License vai_Latn_LR{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/vai_Vaii.txt b/source/data/locales/vai_Vaii.txt index d602abb..5390da9 100644 --- a/source/data/locales/vai_Vaii.txt +++ b/source/data/locales/vai_Vaii.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License vai_Vaii{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/vai_Vaii_LR.txt b/source/data/locales/vai_Vaii_LR.txt index 7521595..14548f6 100644 --- a/source/data/locales/vai_Vaii_LR.txt +++ b/source/data/locales/vai_Vaii_LR.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License vai_Vaii_LR{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/vi.txt b/source/data/locales/vi.txt index 1383d13..98f922b 100644 --- a/source/data/locales/vi.txt +++ b/source/data/locales/vi.txt @@ -7,49 +7,12 @@ vi{ " ụ ư ừ ử ữ ứ ự v w x y ỳ ỷ ỹ ý ỵ z]" } ExemplarCharactersIndex{"[A Ă Â B C D Đ E Ê F G H I J K L M N O Ô Ơ P Q R S T U Ư V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} ExemplarCharactersPunctuation{ - "[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ ′ " - "″]" + "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ " + "′ ″]" } NumberElements{ - arab{ - patterns{ - accountingFormat{"#,##0.00 ¤"} - currencyFormat{"#,##0.00 ¤"} - percentFormat{"#,##0%"} - } - symbols{ - decimal{"٫"} - exponential{"اس"} - group{"٬"} - infinity{"∞"} - list{"؛"} - minusSign{"؜-"} - nan{"NaN"} - perMille{"؉"} - percentSign{"٪؜"} - plusSign{"؜+"} - superscriptingExponent{"×"} - timeSeparator{":"} - } - } - arabext{ - symbols{ - decimal{"٫"} - exponential{"×۱۰^"} - group{"٬"} - infinity{"∞"} - list{"؛"} - minusSign{"‎-‎"} - nan{"NaN"} - perMille{"؉"} - percentSign{"٪"} - plusSign{"‎+‎"} - superscriptingExponent{"×"} - timeSeparator{"٫"} - } - } latn{ miscPatterns{ approximately{"~{0}"} @@ -60,6 +23,7 @@ vi{ patterns{ accountingFormat{"#,##0.00 ¤"} currencyFormat{"#,##0.00 ¤"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -187,9 +151,11 @@ vi{ group{"."} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} } } @@ -205,7 +171,7 @@ vi{ } minimumGroupingDigits{"1"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -234,55 +200,6 @@ vi{ "BE", } } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h – h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm – h:mm B"} - m{"h:mm – h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} - } - GyM{ - G{"M/y GGGGG – M/y GGGGG"} - M{"M/y – M/y GGGGG"} - y{"M/y – M/y GGGGG"} - } - GyMEd{ - G{"E, dd-MM-y GGGGG – E, dd-MM-y GGGGG"} - M{"E, dd-MM-y – E, dd-MM-y GGGGG"} - d{"E, dd-MM-y – E, dd-MM-y GGGGG"} - y{"E, dd-MM-y – E, dd-MM-y GGGGG"} - } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} - } - GyMMMEd{ - G{"E, d MMM y G – E, d MMM y G"} - M{"E, d MMM – E, d MMM y G"} - d{"E, d MMM – E, d MMM y G"} - y{"E, d MMM y – E, d MMM y G"} - } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d – d MMM y G"} - y{"d MMM y – d MMM y G"} - } - GyMd{ - G{"dd-MM-y GGGGG – dd-MM-y GGGGG"} - M{"dd-MM-y – dd-MM-y GGGGG"} - d{"dd-MM-y – dd-MM-y GGGGG"} - y{"dd-MM-y – dd-MM-y GGGGG"} - } - } } chinese{ DateTimePatterns{ @@ -479,12 +396,7 @@ vi{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } @@ -505,82 +417,26 @@ vi{ M{ M{"M – M"} } - MEd{ - M{"MM-dd, E – MM-dd, E"} - d{"MM-dd, E – MM-dd, E"} - } MMM{ M{"MMM – MMM"} } - MMMEd{ - M{"MMM d, E – MMM d, E"} - d{"MMM d, E – MMM d, E"} - } - MMMd{ - M{"MMM d – MMM d"} - d{"MMM d–d"} - } - Md{ - M{"MM-dd – MM-dd"} - d{"MM-dd – MM-dd"} - } d{ d{"d – d"} } - fallback{"{0} – {1}"} h{ - a{"h a – h a"} h{"h – h a"} } hm{ - a{"h:mm a – h:mm a"} h{"h:mm – h:mm a"} m{"h:mm – h:mm a"} } hmv{ - a{"h:mm a – h:mm a v"} h{"h:mm – h:mm a v"} m{"h:mm – h:mm a v"} } - hv{ - a{"h a – h a v"} - h{"h–h a v"} - } y{ y{"U – U"} } - yM{ - M{"y-MM – y-MM"} - y{"y-MM – y-MM"} - } - yMEd{ - M{"y-MM-dd, E – y-MM-dd, E"} - d{"y-MM-dd, E – y-MM-dd, E"} - y{"y-MM-dd, E – y-MM-dd, E"} - } - yMMM{ - M{"U MMM–MMM"} - y{"U MMM – U MMM"} - } - yMMMEd{ - M{"U MMM d, E – MMM d, E"} - d{"U MMM d, E – MMM d, E"} - y{"U MMM d, E – U MMM d, E"} - } - yMMMM{ - M{"U MMMM–MMMM"} - y{"U MMMM – U MMMM"} - } - yMMMd{ - M{"U MMM d – MMM d"} - d{"U MMM d–d"} - y{"U MMM d – U MMM d"} - } - yMd{ - M{"y-MM-dd – y-MM-dd"} - d{"y-MM-dd – y-MM-dd"} - y{"y-MM-dd – y-MM-dd"} - } } monthNames{ format{ @@ -663,69 +519,6 @@ vi{ } } coptic{ - eras{ - abbreviated{ - "ERA0", - "ERA1", - } - narrow{ - "ERA0", - "ERA1", - } - wide{ - "ERA0", - "ERA1", - } - } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h – h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm – h:mm B"} - m{"h:mm – h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} - } - GyM{ - G{"M/y GGGGG – M/y GGGGG"} - M{"M/y – M/y GGGGG"} - y{"M/y – M/y GGGGG"} - } - GyMEd{ - G{"E, dd-MM-y GGGGG – E, dd-MM-y GGGGG"} - M{"E, dd-MM-y – E, dd-MM-y GGGGG"} - d{"E, dd-MM-y – E, dd-MM-y GGGGG"} - y{"E, dd-MM-y – E, dd-MM-y GGGGG"} - } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} - } - GyMMMEd{ - G{"E, d MMM y G – E, d MMM y G"} - M{"E, d MMM – E, d MMM y G"} - d{"E, d MMM – E, d MMM y G"} - y{"E, d MMM y – E, d MMM y G"} - } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d – d MMM y G"} - y{"d MMM y – d MMM y G"} - } - GyMd{ - G{"dd-MM-y GGGGG – dd-MM-y GGGGG"} - M{"dd-MM-y – dd-MM-y GGGGG"} - d{"dd-MM-y – dd-MM-y GGGGG"} - y{"dd-MM-y – dd-MM-y GGGGG"} - } - } monthNames{ format{ abbreviated{ @@ -758,7 +551,9 @@ vi{ "12", "13", } - wide{ + } + stand-alone{ + abbreviated{ "Tout", "Baba", "Hator", @@ -773,9 +568,7 @@ vi{ "Mesra", "Nasie", } - } - stand-alone{ - abbreviated{ + wide{ "Tout", "Baba", "Hator", @@ -790,6 +583,34 @@ vi{ "Mesra", "Nasie", } + } + } + } + dangi{ + intervalFormats{ + Bh{ + h{"h – h B"} + } + } + } + ethiopic{ + monthNames{ + format{ + abbreviated{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } narrow{ "1", "2", @@ -805,332 +626,54 @@ vi{ "12", "13", } + } + stand-alone{ + abbreviated{ + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", + } wide{ - "Tout", - "Baba", - "Hator", - "Kiahk", - "Toba", - "Amshir", - "Baramhat", - "Baramouda", - "Bashans", - "Paona", - "Epep", - "Mesra", - "Nasie", + "Meskerem", + "Tekemt", + "Hedar", + "Tahsas", + "Ter", + "Yekatit", + "Megabit", + "Miazia", + "Genbot", + "Sene", + "Hamle", + "Nehasse", + "Pagumen", } } } } - dangi{ + generic{ DateTimePatterns{ "HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm", - "EEEE, 'ngày' dd MMMM 'năm' U", - "'Ngày' dd 'tháng' M 'năm' U", - "dd-MM U", - "dd/MM/y", - "{1} {0}", - "{1} {0}", + "EEEE, 'ngày' dd 'tháng' MM 'năm' y G", + "'Ngày' dd 'tháng' M 'năm' y G", + "dd-MM-y G", + "dd/MM/y GGGGG", "{1} {0}", - "{1} {0}", - "{1} {0}", - } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h – h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm – h:mm B"} - m{"h:mm – h:mm B"} - } - H{ - H{"HH – HH"} - } - Hm{ - H{"HH:mm – HH:mm"} - m{"HH:mm – HH:mm"} - } - Hmv{ - H{"HH:mm – HH:mm v"} - m{"HH:mm – HH:mm v"} - } - Hv{ - H{"HH – HH v"} - } - M{ - M{"M – M"} - } - MEd{ - M{"MM-dd, E – MM-dd, E"} - d{"MM-dd, E – MM-dd, E"} - } - MMM{ - M{"MMM – MMM"} - } - MMMEd{ - M{"MMM d, E – MMM d, E"} - d{"MMM d, E – MMM d, E"} - } - MMMd{ - M{"MMM d – MMM d"} - d{"MMM d–d"} - } - Md{ - M{"MM-dd – MM-dd"} - d{"MM-dd – MM-dd"} - } - d{ - d{"d – d"} - } - fallback{"{0} – {1}"} - h{ - a{"h a – h a"} - h{"h – h a"} - } - hm{ - a{"h:mm a – h:mm a"} - h{"h:mm – h:mm a"} - m{"h:mm – h:mm a"} - } - hmv{ - a{"h:mm a – h:mm a v"} - h{"h:mm – h:mm a v"} - m{"h:mm – h:mm a v"} - } - hv{ - a{"h a – h a v"} - h{"h–h a v"} - } - y{ - y{"U – U"} - } - yM{ - M{"y-MM – y-MM"} - y{"y-MM – y-MM"} - } - yMEd{ - M{"y-MM-dd, E – y-MM-dd, E"} - d{"y-MM-dd, E – y-MM-dd, E"} - y{"y-MM-dd, E – y-MM-dd, E"} - } - yMMM{ - M{"U MMM–MMM"} - y{"U MMM – U MMM"} - } - yMMMEd{ - M{"U MMM d, E – MMM d, E"} - d{"U MMM d, E – MMM d, E"} - y{"U MMM d, E – U MMM d, E"} - } - yMMMM{ - M{"U MMMM–MMMM"} - y{"U MMMM – U MMMM"} - } - yMMMd{ - M{"U MMM d – MMM d"} - d{"U MMM d–d"} - y{"U MMM d – U MMM d"} - } - yMd{ - M{"y-MM-dd – y-MM-dd"} - d{"y-MM-dd – y-MM-dd"} - y{"y-MM-dd – y-MM-dd"} - } - } - } - ethiopic{ - eras{ - abbreviated{ - "ERA0", - "ERA1", - } - narrow{ - "ERA0", - "ERA1", - } - wide{ - "ERA0", - "ERA1", - } - } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h – h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm – h:mm B"} - m{"h:mm – h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} - } - GyM{ - G{"M/y GGGGG – M/y GGGGG"} - M{"M/y – M/y GGGGG"} - y{"M/y – M/y GGGGG"} - } - GyMEd{ - G{"E, dd-MM-y GGGGG – E, dd-MM-y GGGGG"} - M{"E, dd-MM-y – E, dd-MM-y GGGGG"} - d{"E, dd-MM-y – E, dd-MM-y GGGGG"} - y{"E, dd-MM-y – E, dd-MM-y GGGGG"} - } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} - } - GyMMMEd{ - G{"E, d MMM y G – E, d MMM y G"} - M{"E, d MMM – E, d MMM y G"} - d{"E, d MMM – E, d MMM y G"} - y{"E, d MMM y – E, d MMM y G"} - } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d – d MMM y G"} - y{"d MMM y – d MMM y G"} - } - GyMd{ - G{"dd-MM-y GGGGG – dd-MM-y GGGGG"} - M{"dd-MM-y – dd-MM-y GGGGG"} - d{"dd-MM-y – dd-MM-y GGGGG"} - y{"dd-MM-y – dd-MM-y GGGGG"} - } - } - monthNames{ - format{ - abbreviated{ - "Meskerem", - "Tekemt", - "Hedar", - "Tahsas", - "Ter", - "Yekatit", - "Megabit", - "Miazia", - "Genbot", - "Sene", - "Hamle", - "Nehasse", - "Pagumen", - } - narrow{ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", - "13", - } - wide{ - "Meskerem", - "Tekemt", - "Hedar", - "Tahsas", - "Ter", - "Yekatit", - "Megabit", - "Miazia", - "Genbot", - "Sene", - "Hamle", - "Nehasse", - "Pagumen", - } - } - stand-alone{ - abbreviated{ - "Meskerem", - "Tekemt", - "Hedar", - "Tahsas", - "Ter", - "Yekatit", - "Megabit", - "Miazia", - "Genbot", - "Sene", - "Hamle", - "Nehasse", - "Pagumen", - } - narrow{ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", - "13", - } - wide{ - "Meskerem", - "Tekemt", - "Hedar", - "Tahsas", - "Ter", - "Yekatit", - "Megabit", - "Miazia", - "Genbot", - "Sene", - "Hamle", - "Nehasse", - "Pagumen", - } - } - } - } - ethiopic-amete-alem{ - eras{ - abbreviated{ - "ERA0", - } - narrow{ - "ERA0", - } - wide{ - "ERA0", - } - } - } - generic{ - DateTimePatterns{ - "HH:mm:ss zzzz", - "HH:mm:ss z", - "HH:mm:ss", - "HH:mm", - "EEEE, 'ngày' dd 'tháng' MM 'năm' y G", - "'Ngày' dd 'tháng' M 'năm' y G", - "dd-MM-y G", - "dd/MM/y GGGGG", - "{1} {0}", - "{1} 'lúc' {0}", - "{1} 'lúc' {0}", + "{1} 'lúc' {0}", + "{1} 'lúc' {0}", "{1} {0}", "{1} {0}", } @@ -1572,11 +1115,9 @@ vi{ } intervalFormats{ Bh{ - B{"h B – h B"} h{"h – h B"} } Bhm{ - B{"h:mm B – h:mm B"} h{"h:mm – h:mm B"} m{"h:mm – h:mm B"} } @@ -1728,9 +1269,23 @@ vi{ "thg 11", "thg 12", } - wide{ - "tháng 1", - "tháng 2", + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } + wide{ + "tháng 1", + "tháng 2", "tháng 3", "tháng 4", "tháng 5", @@ -1758,6 +1313,20 @@ vi{ "Thg 11", "Thg 12", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "Tháng 1", "Tháng 2", @@ -1818,66 +1387,6 @@ vi{ } } hebrew{ - eras{ - abbreviated{ - "AM", - } - narrow{ - "AM", - } - wide{ - "AM", - } - } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h – h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm – h:mm B"} - m{"h:mm – h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} - } - GyM{ - G{"M/y GGGGG – M/y GGGGG"} - M{"M/y – M/y GGGGG"} - y{"M/y – M/y GGGGG"} - } - GyMEd{ - G{"E, dd-MM-y GGGGG – E, dd-MM-y GGGGG"} - M{"E, dd-MM-y – E, dd-MM-y GGGGG"} - d{"E, dd-MM-y – E, dd-MM-y GGGGG"} - y{"E, dd-MM-y – E, dd-MM-y GGGGG"} - } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} - } - GyMMMEd{ - G{"E, d MMM y G – E, d MMM y G"} - M{"E, d MMM – E, d MMM y G"} - d{"E, d MMM – E, d MMM y G"} - y{"E, d MMM y – E, d MMM y G"} - } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d – d MMM y G"} - y{"d MMM y – d MMM y G"} - } - GyMd{ - G{"dd-MM-y GGGGG – dd-MM-y GGGGG"} - M{"dd-MM-y – dd-MM-y GGGGG"} - d{"dd-MM-y – dd-MM-y GGGGG"} - y{"dd-MM-y – dd-MM-y GGGGG"} - } - } monthNames{ format{ abbreviated{ @@ -1896,38 +1405,6 @@ vi{ "Elul", "Adar II", } - narrow{ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", - "13", - "7", - } - wide{ - "Tishri", - "Heshvan", - "Kislev", - "Tevet", - "Shevat", - "Adar I", - "Adar", - "Nisan", - "Iyar", - "Sivan", - "Tamuz", - "Av", - "Elul", - "Adar II", - } } stand-alone{ abbreviated{ @@ -1946,22 +1423,6 @@ vi{ "Elul", "Adar II", } - narrow{ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", - "13", - "7", - } wide{ "Tishri", "Heshvan", @@ -1977,232 +1438,26 @@ vi{ "Av", "Elul", "Adar II", - } - } - } - } - indian{ - eras{ - abbreviated{ - "Saka", - } - narrow{ - "Saka", - } - wide{ - "Saka", - } - } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h – h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm – h:mm B"} - m{"h:mm – h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} - } - GyM{ - G{"M/y GGGGG – M/y GGGGG"} - M{"M/y – M/y GGGGG"} - y{"M/y – M/y GGGGG"} - } - GyMEd{ - G{"E, dd-MM-y GGGGG – E, dd-MM-y GGGGG"} - M{"E, dd-MM-y – E, dd-MM-y GGGGG"} - d{"E, dd-MM-y – E, dd-MM-y GGGGG"} - y{"E, dd-MM-y – E, dd-MM-y GGGGG"} - } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} - } - GyMMMEd{ - G{"E, d MMM y G – E, d MMM y G"} - M{"E, d MMM – E, d MMM y G"} - d{"E, d MMM – E, d MMM y G"} - y{"E, d MMM y – E, d MMM y G"} - } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d – d MMM y G"} - y{"d MMM y – d MMM y G"} - } - GyMd{ - G{"dd-MM-y GGGGG – dd-MM-y GGGGG"} - M{"dd-MM-y – dd-MM-y GGGGG"} - d{"dd-MM-y – dd-MM-y GGGGG"} - y{"dd-MM-y – dd-MM-y GGGGG"} - } - } - monthNames{ - format{ - abbreviated{ - "Chaitra", - "Vaisakha", - "Jyaistha", - "Asadha", - "Sravana", - "Bhadra", - "Asvina", - "Kartika", - "Agrahayana", - "Pausa", - "Magha", - "Phalguna", - } - narrow{ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", - } - wide{ - "Chaitra", - "Vaisakha", - "Jyaistha", - "Asadha", - "Sravana", - "Bhadra", - "Asvina", - "Kartika", - "Agrahayana", - "Pausa", - "Magha", - "Phalguna", - } - } - stand-alone{ - abbreviated{ - "Chaitra", - "Vaisakha", - "Jyaistha", - "Asadha", - "Sravana", - "Bhadra", - "Asvina", - "Kartika", - "Agrahayana", - "Pausa", - "Magha", - "Phalguna", - } - narrow{ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", - } - wide{ - "Chaitra", - "Vaisakha", - "Jyaistha", - "Asadha", - "Sravana", - "Bhadra", - "Asvina", - "Kartika", - "Agrahayana", - "Pausa", - "Magha", - "Phalguna", - } - } - } - } - islamic{ - eras{ - abbreviated{ - "AH", - } - } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h – h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm – h:mm B"} - m{"h:mm – h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} - } - GyM{ - G{"M/y GGGGG – M/y GGGGG"} - M{"M/y – M/y GGGGG"} - y{"M/y – M/y GGGGG"} - } - GyMEd{ - G{"E, dd-MM-y GGGGG – E, dd-MM-y GGGGG"} - M{"E, dd-MM-y – E, dd-MM-y GGGGG"} - d{"E, dd-MM-y – E, dd-MM-y GGGGG"} - y{"E, dd-MM-y – E, dd-MM-y GGGGG"} - } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} - } - GyMMMEd{ - G{"E, d MMM y G – E, d MMM y G"} - M{"E, d MMM – E, d MMM y G"} - d{"E, d MMM – E, d MMM y G"} - y{"E, d MMM y – E, d MMM y G"} - } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d – d MMM y G"} - y{"d MMM y – d MMM y G"} - } - GyMd{ - G{"dd-MM-y GGGGG – dd-MM-y GGGGG"} - M{"dd-MM-y – dd-MM-y GGGGG"} - d{"dd-MM-y – dd-MM-y GGGGG"} - y{"dd-MM-y – dd-MM-y GGGGG"} + } } } + } + indian{ monthNames{ format{ abbreviated{ - "Muh.", - "Saf.", - "Rab. I", - "Rab. II", - "Jum. I", - "Jum. II", - "Raj.", - "Sha.", - "Ram.", - "Shaw.", - "Dhuʻl-Q.", - "Dhuʻl-H.", + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", } narrow{ "1", @@ -2218,67 +1473,46 @@ vi{ "11", "12", } - wide{ - "Muharram", - "Safar", - "Rabiʻ I", - "Rabiʻ II", - "Jumada I", - "Jumada II", - "Rajab", - "Shaʻban", - "Ramadan", - "Shawwal", - "Dhuʻl-Qiʻdah", - "Dhuʻl-Hijjah", - } } stand-alone{ abbreviated{ - "Muh.", - "Saf.", - "Rab. I", - "Rab. II", - "Jum. I", - "Jum. II", - "Raj.", - "Sha.", - "Ram.", - "Shaw.", - "Dhuʻl-Q.", - "Dhuʻl-H.", - } - narrow{ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", } wide{ - "Muharram", - "Safar", - "Rabiʻ I", - "Rabiʻ II", - "Jumada I", - "Jumada II", - "Rajab", - "Shaʻban", - "Ramadan", - "Shawwal", - "Dhuʻl-Qiʻdah", - "Dhuʻl-Hijjah", + "Chaitra", + "Vaisakha", + "Jyaistha", + "Asadha", + "Sravana", + "Bhadra", + "Asvina", + "Kartika", + "Agrahayana", + "Pausa", + "Magha", + "Phalguna", } } } } + islamic{ + eras{ + abbreviated{ + "AH", + } + } + } japanese{ DateTimePatterns{ "HH:mm:ss zzzz", @@ -2295,836 +1529,8 @@ vi{ "{1} {0}", "{1} {0}", } - eras{ - abbreviated{ - "Taika (645–650)", - "Hakuchi (650–671)", - "Hakuhō (672–686)", - "Shuchō (686–701)", - "Taihō (701–704)", - "Keiun (704–708)", - "Wadō (708–715)", - "Reiki (715–717)", - "Yōrō (717–724)", - "Jinki (724–729)", - "Tenpyō (729–749)", - "Tenpyō-kampō (749–749)", - "Tenpyō-shōhō (749–757)", - "Tenpyō-hōji (757–765)", - "Tenpyō-jingo (765–767)", - "Jingo-keiun (767–770)", - "Hōki (770–780)", - "Ten-ō (781–782)", - "Enryaku (782–806)", - "Daidō (806–810)", - "Kōnin (810–824)", - "Tenchō (824–834)", - "Jōwa (834–848)", - "Kajō (848–851)", - "Ninju (851–854)", - "Saikō (854–857)", - "Ten-an (857–859)", - "Jōgan (859–877)", - "Gangyō (877–885)", - "Ninna (885–889)", - "Kanpyō (889–898)", - "Shōtai (898–901)", - "Engi (901–923)", - "Enchō (923–931)", - "Jōhei (931–938)", - "Tengyō (938–947)", - "Tenryaku (947–957)", - "Tentoku (957–961)", - "Ōwa (961–964)", - "Kōhō (964–968)", - "Anna (968–970)", - "Tenroku (970–973)", - "Ten’en (973–976)", - "Jōgen (976–978)", - "Tengen (978–983)", - "Eikan (983–985)", - "Kanna (985–987)", - "Eien (987–989)", - "Eiso (989–990)", - "Shōryaku (990–995)", - "Chōtoku (995–999)", - "Chōhō (999–1004)", - "Kankō (1004–1012)", - "Chōwa (1012–1017)", - "Kannin (1017–1021)", - "Jian (1021–1024)", - "Manju (1024–1028)", - "Chōgen (1028–1037)", - "Chōryaku (1037–1040)", - "Chōkyū (1040–1044)", - "Kantoku (1044–1046)", - "Eishō (1046–1053)", - "Tengi (1053–1058)", - "Kōhei (1058–1065)", - "Jiryaku (1065–1069)", - "Enkyū (1069–1074)", - "Shōho (1074–1077)", - "Shōryaku (1077–1081)", - "Eihō (1081–1084)", - "Ōtoku (1084–1087)", - "Kanji (1087–1094)", - "Kahō (1094–1096)", - "Eichō (1096–1097)", - "Jōtoku (1097–1099)", - "Kōwa (1099–1104)", - "Chōji (1104–1106)", - "Kashō (1106–1108)", - "Tennin (1108–1110)", - "Ten-ei (1110–1113)", - "Eikyū (1113–1118)", - "Gen’ei (1118–1120)", - "Hōan (1120–1124)", - "Tenji (1124–1126)", - "Daiji (1126–1131)", - "Tenshō (1131–1132)", - "Chōshō (1132–1135)", - "Hōen (1135–1141)", - "Eiji (1141–1142)", - "Kōji (1142–1144)", - "Ten’yō (1144–1145)", - "Kyūan (1145–1151)", - "Ninpei (1151–1154)", - "Kyūju (1154–1156)", - "Hōgen (1156–1159)", - "Heiji (1159–1160)", - "Eiryaku (1160–1161)", - "Ōho (1161–1163)", - "Chōkan (1163–1165)", - "Eiman (1165–1166)", - "Nin’an (1166–1169)", - "Kaō (1169–1171)", - "Shōan (1171–1175)", - "Angen (1175–1177)", - "Jishō (1177–1181)", - "Yōwa (1181–1182)", - "Juei (1182–1184)", - "Genryaku (1184–1185)", - "Bunji (1185–1190)", - "Kenkyū (1190–1199)", - "Shōji (1199–1201)", - "Kennin (1201–1204)", - "Genkyū (1204–1206)", - "Ken’ei (1206–1207)", - "Jōgen (1207–1211)", - "Kenryaku (1211–1213)", - "Kenpō (1213–1219)", - "Jōkyū (1219–1222)", - "Jōō (1222–1224)", - "Gennin (1224–1225)", - "Karoku (1225–1227)", - "Antei (1227–1229)", - "Kanki (1229–1232)", - "Jōei (1232–1233)", - "Tenpuku (1233–1234)", - "Bunryaku (1234–1235)", - "Katei (1235–1238)", - "Ryakunin (1238–1239)", - "En’ō (1239–1240)", - "Ninji (1240–1243)", - "Kangen (1243–1247)", - "Hōji (1247–1249)", - "Kenchō (1249–1256)", - "Kōgen (1256–1257)", - "Shōka (1257–1259)", - "Shōgen (1259–1260)", - "Bun’ō (1260–1261)", - "Kōchō (1261–1264)", - "Bun’ei (1264–1275)", - "Kenji (1275–1278)", - "Kōan (1278–1288)", - "Shōō (1288–1293)", - "Einin (1293–1299)", - "Shōan (1299–1302)", - "Kengen (1302–1303)", - "Kagen (1303–1306)", - "Tokuji (1306–1308)", - "Enkyō (1308–1311)", - "Ōchō (1311–1312)", - "Shōwa (1312–1317)", - "Bunpō (1317–1319)", - "Genō (1319–1321)", - "Genkō (1321–1324)", - "Shōchū (1324–1326)", - "Karyaku (1326–1329)", - "Gentoku (1329–1331)", - "Genkō (1331–1334)", - "Kenmu (1334–1336)", - "Engen (1336–1340)", - "Kōkoku (1340–1346)", - "Shōhei (1346–1370)", - "Kentoku (1370–1372)", - "Bunchū (1372–1375)", - "Tenju (1375–1379)", - "Kōryaku (1379–1381)", - "Kōwa (1381–1384)", - "Genchū (1384–1392)", - "Meitoku (1384–1387)", - "Kakei (1387–1389)", - "Kōō (1389–1390)", - "Meitoku (1390–1394)", - "Ōei (1394–1428)", - "Shōchō (1428–1429)", - "Eikyō (1429–1441)", - "Kakitsu (1441–1444)", - "Bun’an (1444–1449)", - "Hōtoku (1449–1452)", - "Kyōtoku (1452–1455)", - "Kōshō (1455–1457)", - "Chōroku (1457–1460)", - "Kanshō (1460–1466)", - "Bunshō (1466–1467)", - "Ōnin (1467–1469)", - "Bunmei (1469–1487)", - "Chōkyō (1487–1489)", - "Entoku (1489–1492)", - "Meiō (1492–1501)", - "Bunki (1501–1504)", - "Eishō (1504–1521)", - "Taiei (1521–1528)", - "Kyōroku (1528–1532)", - "Tenbun (1532–1555)", - "Kōji (1555–1558)", - "Eiroku (1558–1570)", - "Genki (1570–1573)", - "Tenshō (1573–1592)", - "Bunroku (1592–1596)", - "Keichō (1596–1615)", - "Genna (1615–1624)", - "Kan’ei (1624–1644)", - "Shōho (1644–1648)", - "Keian (1648–1652)", - "Jōō (1652–1655)", - "Meireki (1655–1658)", - "Manji (1658–1661)", - "Kanbun (1661–1673)", - "Enpō (1673–1681)", - "Tenna (1681–1684)", - "Jōkyō (1684–1688)", - "Genroku (1688–1704)", - "Hōei (1704–1711)", - "Shōtoku (1711–1716)", - "Kyōhō (1716–1736)", - "Genbun (1736–1741)", - "Kanpō (1741–1744)", - "Enkyō (1744–1748)", - "Kan’en (1748–1751)", - "Hōreki (1751–1764)", - "Meiwa (1764–1772)", - "An’ei (1772–1781)", - "Tenmei (1781–1789)", - "Kansei (1789–1801)", - "Kyōwa (1801–1804)", - "Bunka (1804–1818)", - "Bunsei (1818–1830)", - "Tenpō (1830–1844)", - "Kōka (1844–1848)", - "Kaei (1848–1854)", - "Ansei (1854–1860)", - "Man’en (1860–1861)", - "Bunkyū (1861–1864)", - "Genji (1864–1865)", - "Keiō (1865–1868)", - "Meiji", - "Taishō", - "Shōwa", - "Heisei", - "Reiwa", - } - narrow{ - "Taika (645–650)", - "Hakuchi (650–671)", - "Hakuhō (672–686)", - "Shuchō (686–701)", - "Taihō (701–704)", - "Keiun (704–708)", - "Wadō (708–715)", - "Reiki (715–717)", - "Yōrō (717–724)", - "Jinki (724–729)", - "Tenpyō (729–749)", - "Tenpyō-kampō (749–749)", - "Tenpyō-shōhō (749–757)", - "Tenpyō-hōji (757–765)", - "Tenpyō-jingo (765–767)", - "Jingo-keiun (767–770)", - "Hōki (770–780)", - "Ten-ō (781–782)", - "Enryaku (782–806)", - "Daidō (806–810)", - "Kōnin (810–824)", - "Tenchō (824–834)", - "Jōwa (834–848)", - "Kajō (848–851)", - "Ninju (851–854)", - "Saikō (854–857)", - "Ten-an (857–859)", - "Jōgan (859–877)", - "Gangyō (877–885)", - "Ninna (885–889)", - "Kanpyō (889–898)", - "Shōtai (898–901)", - "Engi (901–923)", - "Enchō (923–931)", - "Jōhei (931–938)", - "Tengyō (938–947)", - "Tenryaku (947–957)", - "Tentoku (957–961)", - "Ōwa (961–964)", - "Kōhō (964–968)", - "Anna (968–970)", - "Tenroku (970–973)", - "Ten’en (973–976)", - "Jōgen (976–978)", - "Tengen (978–983)", - "Eikan (983–985)", - "Kanna (985–987)", - "Eien (987–989)", - "Eiso (989–990)", - "Shōryaku (990–995)", - "Chōtoku (995–999)", - "Chōhō (999–1004)", - "Kankō (1004–1012)", - "Chōwa (1012–1017)", - "Kannin (1017–1021)", - "Jian (1021–1024)", - "Manju (1024–1028)", - "Chōgen (1028–1037)", - "Chōryaku (1037–1040)", - "Chōkyū (1040–1044)", - "Kantoku (1044–1046)", - "Eishō (1046–1053)", - "Tengi (1053–1058)", - "Kōhei (1058–1065)", - "Jiryaku (1065–1069)", - "Enkyū (1069–1074)", - "Shōho (1074–1077)", - "Shōryaku (1077–1081)", - "Eihō (1081–1084)", - "Ōtoku (1084–1087)", - "Kanji (1087–1094)", - "Kahō (1094–1096)", - "Eichō (1096–1097)", - "Jōtoku (1097–1099)", - "Kōwa (1099–1104)", - "Chōji (1104–1106)", - "Kashō (1106–1108)", - "Tennin (1108–1110)", - "Ten-ei (1110–1113)", - "Eikyū (1113–1118)", - "Gen’ei (1118–1120)", - "Hōan (1120–1124)", - "Tenji (1124–1126)", - "Daiji (1126–1131)", - "Tenshō (1131–1132)", - "Chōshō (1132–1135)", - "Hōen (1135–1141)", - "Eiji (1141–1142)", - "Kōji (1142–1144)", - "Ten’yō (1144–1145)", - "Kyūan (1145–1151)", - "Ninpei (1151–1154)", - "Kyūju (1154–1156)", - "Hōgen (1156–1159)", - "Heiji (1159–1160)", - "Eiryaku (1160–1161)", - "Ōho (1161–1163)", - "Chōkan (1163–1165)", - "Eiman (1165–1166)", - "Nin’an (1166–1169)", - "Kaō (1169–1171)", - "Shōan (1171–1175)", - "Angen (1175–1177)", - "Jishō (1177–1181)", - "Yōwa (1181–1182)", - "Juei (1182–1184)", - "Genryaku (1184–1185)", - "Bunji (1185–1190)", - "Kenkyū (1190–1199)", - "Shōji (1199–1201)", - "Kennin (1201–1204)", - "Genkyū (1204–1206)", - "Ken’ei (1206–1207)", - "Jōgen (1207–1211)", - "Kenryaku (1211–1213)", - "Kenpō (1213–1219)", - "Jōkyū (1219–1222)", - "Jōō (1222–1224)", - "Gennin (1224–1225)", - "Karoku (1225–1227)", - "Antei (1227–1229)", - "Kanki (1229–1232)", - "Jōei (1232–1233)", - "Tenpuku (1233–1234)", - "Bunryaku (1234–1235)", - "Katei (1235–1238)", - "Ryakunin (1238–1239)", - "En’ō (1239–1240)", - "Ninji (1240–1243)", - "Kangen (1243–1247)", - "Hōji (1247–1249)", - "Kenchō (1249–1256)", - "Kōgen (1256–1257)", - "Shōka (1257–1259)", - "Shōgen (1259–1260)", - "Bun’ō (1260–1261)", - "Kōchō (1261–1264)", - "Bun’ei (1264–1275)", - "Kenji (1275–1278)", - "Kōan (1278–1288)", - "Shōō (1288–1293)", - "Einin (1293–1299)", - "Shōan (1299–1302)", - "Kengen (1302–1303)", - "Kagen (1303–1306)", - "Tokuji (1306–1308)", - "Enkyō (1308–1311)", - "Ōchō (1311–1312)", - "Shōwa (1312–1317)", - "Bunpō (1317–1319)", - "Genō (1319–1321)", - "Genkō (1321–1324)", - "Shōchū (1324–1326)", - "Karyaku (1326–1329)", - "Gentoku (1329–1331)", - "Genkō (1331–1334)", - "Kenmu (1334–1336)", - "Engen (1336–1340)", - "Kōkoku (1340–1346)", - "Shōhei (1346–1370)", - "Kentoku (1370–1372)", - "Bunchū (1372–1375)", - "Tenju (1375–1379)", - "Kōryaku (1379–1381)", - "Kōwa (1381–1384)", - "Genchū (1384–1392)", - "Meitoku (1384–1387)", - "Kakei (1387–1389)", - "Kōō (1389–1390)", - "Meitoku (1390–1394)", - "Ōei (1394–1428)", - "Shōchō (1428–1429)", - "Eikyō (1429–1441)", - "Kakitsu (1441–1444)", - "Bun’an (1444–1449)", - "Hōtoku (1449–1452)", - "Kyōtoku (1452–1455)", - "Kōshō (1455–1457)", - "Chōroku (1457–1460)", - "Kanshō (1460–1466)", - "Bunshō (1466–1467)", - "Ōnin (1467–1469)", - "Bunmei (1469–1487)", - "Chōkyō (1487–1489)", - "Entoku (1489–1492)", - "Meiō (1492–1501)", - "Bunki (1501–1504)", - "Eishō (1504–1521)", - "Taiei (1521–1528)", - "Kyōroku (1528–1532)", - "Tenbun (1532–1555)", - "Kōji (1555–1558)", - "Eiroku (1558–1570)", - "Genki (1570–1573)", - "Tenshō (1573–1592)", - "Bunroku (1592–1596)", - "Keichō (1596–1615)", - "Genna (1615–1624)", - "Kan’ei (1624–1644)", - "Shōho (1644–1648)", - "Keian (1648–1652)", - "Jōō (1652–1655)", - "Meireki (1655–1658)", - "Manji (1658–1661)", - "Kanbun (1661–1673)", - "Enpō (1673–1681)", - "Tenna (1681–1684)", - "Jōkyō (1684–1688)", - "Genroku (1688–1704)", - "Hōei (1704–1711)", - "Shōtoku (1711–1716)", - "Kyōhō (1716–1736)", - "Genbun (1736–1741)", - "Kanpō (1741–1744)", - "Enkyō (1744–1748)", - "Kan’en (1748–1751)", - "Hōreki (1751–1764)", - "Meiwa (1764–1772)", - "An’ei (1772–1781)", - "Tenmei (1781–1789)", - "Kansei (1789–1801)", - "Kyōwa (1801–1804)", - "Bunka (1804–1818)", - "Bunsei (1818–1830)", - "Tenpō (1830–1844)", - "Kōka (1844–1848)", - "Kaei (1848–1854)", - "Ansei (1854–1860)", - "Man’en (1860–1861)", - "Bunkyū (1861–1864)", - "Genji (1864–1865)", - "Keiō (1865–1868)", - "M", - "T", - "S", - "H", - "R", - } - wide{ - "Taika (645–650)", - "Hakuchi (650–671)", - "Hakuhō (672–686)", - "Shuchō (686–701)", - "Taihō (701–704)", - "Keiun (704–708)", - "Wadō (708–715)", - "Reiki (715–717)", - "Yōrō (717–724)", - "Jinki (724–729)", - "Tenpyō (729–749)", - "Tenpyō-kampō (749–749)", - "Tenpyō-shōhō (749–757)", - "Tenpyō-hōji (757–765)", - "Tenpyō-jingo (765–767)", - "Jingo-keiun (767–770)", - "Hōki (770–780)", - "Ten-ō (781–782)", - "Enryaku (782–806)", - "Daidō (806–810)", - "Kōnin (810–824)", - "Tenchō (824–834)", - "Jōwa (834–848)", - "Kajō (848–851)", - "Ninju (851–854)", - "Saikō (854–857)", - "Ten-an (857–859)", - "Jōgan (859–877)", - "Gangyō (877–885)", - "Ninna (885–889)", - "Kanpyō (889–898)", - "Shōtai (898–901)", - "Engi (901–923)", - "Enchō (923–931)", - "Jōhei (931–938)", - "Tengyō (938–947)", - "Tenryaku (947–957)", - "Tentoku (957–961)", - "Ōwa (961–964)", - "Kōhō (964–968)", - "Anna (968–970)", - "Tenroku (970–973)", - "Ten’en (973–976)", - "Jōgen (976–978)", - "Tengen (978–983)", - "Eikan (983–985)", - "Kanna (985–987)", - "Eien (987–989)", - "Eiso (989–990)", - "Shōryaku (990–995)", - "Chōtoku (995–999)", - "Chōhō (999–1004)", - "Kankō (1004–1012)", - "Chōwa (1012–1017)", - "Kannin (1017–1021)", - "Jian (1021–1024)", - "Manju (1024–1028)", - "Chōgen (1028–1037)", - "Chōryaku (1037–1040)", - "Chōkyū (1040–1044)", - "Kantoku (1044–1046)", - "Eishō (1046–1053)", - "Tengi (1053–1058)", - "Kōhei (1058–1065)", - "Jiryaku (1065–1069)", - "Enkyū (1069–1074)", - "Shōho (1074–1077)", - "Shōryaku (1077–1081)", - "Eihō (1081–1084)", - "Ōtoku (1084–1087)", - "Kanji (1087–1094)", - "Kahō (1094–1096)", - "Eichō (1096–1097)", - "Jōtoku (1097–1099)", - "Kōwa (1099–1104)", - "Chōji (1104–1106)", - "Kashō (1106–1108)", - "Tennin (1108–1110)", - "Ten-ei (1110–1113)", - "Eikyū (1113–1118)", - "Gen’ei (1118–1120)", - "Hōan (1120–1124)", - "Tenji (1124–1126)", - "Daiji (1126–1131)", - "Tenshō (1131–1132)", - "Chōshō (1132–1135)", - "Hōen (1135–1141)", - "Eiji (1141–1142)", - "Kōji (1142–1144)", - "Ten’yō (1144–1145)", - "Kyūan (1145–1151)", - "Ninpei (1151–1154)", - "Kyūju (1154–1156)", - "Hōgen (1156–1159)", - "Heiji (1159–1160)", - "Eiryaku (1160–1161)", - "Ōho (1161–1163)", - "Chōkan (1163–1165)", - "Eiman (1165–1166)", - "Nin’an (1166–1169)", - "Kaō (1169–1171)", - "Shōan (1171–1175)", - "Angen (1175–1177)", - "Jishō (1177–1181)", - "Yōwa (1181–1182)", - "Juei (1182–1184)", - "Genryaku (1184–1185)", - "Bunji (1185–1190)", - "Kenkyū (1190–1199)", - "Shōji (1199–1201)", - "Kennin (1201–1204)", - "Genkyū (1204–1206)", - "Ken’ei (1206–1207)", - "Jōgen (1207–1211)", - "Kenryaku (1211–1213)", - "Kenpō (1213–1219)", - "Jōkyū (1219–1222)", - "Jōō (1222–1224)", - "Gennin (1224–1225)", - "Karoku (1225–1227)", - "Antei (1227–1229)", - "Kanki (1229–1232)", - "Jōei (1232–1233)", - "Tenpuku (1233–1234)", - "Bunryaku (1234–1235)", - "Katei (1235–1238)", - "Ryakunin (1238–1239)", - "En’ō (1239–1240)", - "Ninji (1240–1243)", - "Kangen (1243–1247)", - "Hōji (1247–1249)", - "Kenchō (1249–1256)", - "Kōgen (1256–1257)", - "Shōka (1257–1259)", - "Shōgen (1259–1260)", - "Bun’ō (1260–1261)", - "Kōchō (1261–1264)", - "Bun’ei (1264–1275)", - "Kenji (1275–1278)", - "Kōan (1278–1288)", - "Shōō (1288–1293)", - "Einin (1293–1299)", - "Shōan (1299–1302)", - "Kengen (1302–1303)", - "Kagen (1303–1306)", - "Tokuji (1306–1308)", - "Enkyō (1308–1311)", - "Ōchō (1311–1312)", - "Shōwa (1312–1317)", - "Bunpō (1317–1319)", - "Genō (1319–1321)", - "Genkō (1321–1324)", - "Shōchū (1324–1326)", - "Karyaku (1326–1329)", - "Gentoku (1329–1331)", - "Genkō (1331–1334)", - "Kenmu (1334–1336)", - "Engen (1336–1340)", - "Kōkoku (1340–1346)", - "Shōhei (1346–1370)", - "Kentoku (1370–1372)", - "Bunchū (1372–1375)", - "Tenju (1375–1379)", - "Kōryaku (1379–1381)", - "Kōwa (1381–1384)", - "Genchū (1384–1392)", - "Meitoku (1384–1387)", - "Kakei (1387–1389)", - "Kōō (1389–1390)", - "Meitoku (1390–1394)", - "Ōei (1394–1428)", - "Shōchō (1428–1429)", - "Eikyō (1429–1441)", - "Kakitsu (1441–1444)", - "Bun’an (1444–1449)", - "Hōtoku (1449–1452)", - "Kyōtoku (1452–1455)", - "Kōshō (1455–1457)", - "Chōroku (1457–1460)", - "Kanshō (1460–1466)", - "Bunshō (1466–1467)", - "Ōnin (1467–1469)", - "Bunmei (1469–1487)", - "Chōkyō (1487–1489)", - "Entoku (1489–1492)", - "Meiō (1492–1501)", - "Bunki (1501–1504)", - "Eishō (1504–1521)", - "Taiei (1521–1528)", - "Kyōroku (1528–1532)", - "Tenbun (1532–1555)", - "Kōji (1555–1558)", - "Eiroku (1558–1570)", - "Genki (1570–1573)", - "Tenshō (1573–1592)", - "Bunroku (1592–1596)", - "Keichō (1596–1615)", - "Genna (1615–1624)", - "Kan’ei (1624–1644)", - "Shōho (1644–1648)", - "Keian (1648–1652)", - "Jōō (1652–1655)", - "Meireki (1655–1658)", - "Manji (1658–1661)", - "Kanbun (1661–1673)", - "Enpō (1673–1681)", - "Tenna (1681–1684)", - "Jōkyō (1684–1688)", - "Genroku (1688–1704)", - "Hōei (1704–1711)", - "Shōtoku (1711–1716)", - "Kyōhō (1716–1736)", - "Genbun (1736–1741)", - "Kanpō (1741–1744)", - "Enkyō (1744–1748)", - "Kan’en (1748–1751)", - "Hōreki (1751–1764)", - "Meiwa (1764–1772)", - "An’ei (1772–1781)", - "Tenmei (1781–1789)", - "Kansei (1789–1801)", - "Kyōwa (1801–1804)", - "Bunka (1804–1818)", - "Bunsei (1818–1830)", - "Tenpō (1830–1844)", - "Kōka (1844–1848)", - "Kaei (1848–1854)", - "Ansei (1854–1860)", - "Man’en (1860–1861)", - "Bunkyū (1861–1864)", - "Genji (1864–1865)", - "Keiō (1865–1868)", - "Meiji", - "Taishō", - "Shōwa", - "Heisei", - "Reiwa", - } - } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h – h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm – h:mm B"} - m{"h:mm – h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} - } - GyM{ - G{"M/y GGGGG – M/y GGGGG"} - M{"M/y – M/y GGGGG"} - y{"M/y – M/y GGGGG"} - } - GyMEd{ - G{"E, dd-MM-y GGGGG – E, dd-MM-y GGGGG"} - M{"E, dd-MM-y – E, dd-MM-y GGGGG"} - d{"E, dd-MM-y – E, dd-MM-y GGGGG"} - y{"E, dd-MM-y – E, dd-MM-y GGGGG"} - } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} - } - GyMMMEd{ - G{"E, d MMM y G – E, d MMM y G"} - M{"E, d MMM – E, d MMM y G"} - d{"E, d MMM – E, d MMM y G"} - y{"E, d MMM y – E, d MMM y G"} - } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d – d MMM y G"} - y{"d MMM y – d MMM y G"} - } - GyMd{ - G{"dd-MM-y GGGGG – dd-MM-y GGGGG"} - M{"dd-MM-y – dd-MM-y GGGGG"} - d{"dd-MM-y – dd-MM-y GGGGG"} - y{"dd-MM-y – dd-MM-y GGGGG"} - } - } } persian{ - eras{ - abbreviated{ - "AP", - } - narrow{ - "AP", - } - wide{ - "AP", - } - } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h – h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm – h:mm B"} - m{"h:mm – h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} - } - GyM{ - G{"M/y GGGGG – M/y GGGGG"} - M{"M/y – M/y GGGGG"} - y{"M/y – M/y GGGGG"} - } - GyMEd{ - G{"E, dd-MM-y GGGGG – E, dd-MM-y GGGGG"} - M{"E, dd-MM-y – E, dd-MM-y GGGGG"} - d{"E, dd-MM-y – E, dd-MM-y GGGGG"} - y{"E, dd-MM-y – E, dd-MM-y GGGGG"} - } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} - } - GyMMMEd{ - G{"E, d MMM y G – E, d MMM y G"} - M{"E, d MMM – E, d MMM y G"} - d{"E, d MMM – E, d MMM y G"} - y{"E, d MMM y – E, d MMM y G"} - } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d – d MMM y G"} - y{"d MMM y – d MMM y G"} - } - GyMd{ - G{"dd-MM-y GGGGG – dd-MM-y GGGGG"} - M{"dd-MM-y – dd-MM-y GGGGG"} - d{"dd-MM-y – dd-MM-y GGGGG"} - y{"dd-MM-y – dd-MM-y GGGGG"} - } - } monthNames{ format{ abbreviated{ @@ -3155,20 +1561,6 @@ vi{ "11", "12", } - wide{ - "Farvardin", - "Ordibehesht", - "Khordad", - "Tir", - "Mordad", - "Shahrivar", - "Mehr", - "Aban", - "Azar", - "Dey", - "Bahman", - "Esfand", - } } stand-alone{ abbreviated{ @@ -3185,20 +1577,6 @@ vi{ "Bahman", "Esfand", } - narrow{ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", - } wide{ "Farvardin", "Ordibehesht", @@ -3244,55 +1622,6 @@ vi{ "R.O.C.", } } - intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h – h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm – h:mm B"} - m{"h:mm – h:mm B"} - } - Gy{ - G{"y G – y G"} - y{"y – y G"} - } - GyM{ - G{"M/y GGGGG – M/y GGGGG"} - M{"M/y – M/y GGGGG"} - y{"M/y – M/y GGGGG"} - } - GyMEd{ - G{"E, dd-MM-y GGGGG – E, dd-MM-y GGGGG"} - M{"E, dd-MM-y – E, dd-MM-y GGGGG"} - d{"E, dd-MM-y – E, dd-MM-y GGGGG"} - y{"E, dd-MM-y – E, dd-MM-y GGGGG"} - } - GyMMM{ - G{"MMM y G – MMM y G"} - M{"MMM – MMM y G"} - y{"MMM y – MMM y G"} - } - GyMMMEd{ - G{"E, d MMM y G – E, d MMM y G"} - M{"E, d MMM – E, d MMM y G"} - d{"E, d MMM – E, d MMM y G"} - y{"E, d MMM y – E, d MMM y G"} - } - GyMMMd{ - G{"d MMM y G – d MMM y G"} - M{"d MMM – d MMM y G"} - d{"d – d MMM y G"} - y{"d MMM y – d MMM y G"} - } - GyMd{ - G{"dd-MM-y GGGGG – dd-MM-y GGGGG"} - M{"dd-MM-y – dd-MM-y GGGGG"} - d{"dd-MM-y – dd-MM-y GGGGG"} - y{"dd-MM-y – dd-MM-y GGGGG"} - } - } } } characterLabel{ @@ -3389,6 +1718,12 @@ vi{ 1, } } + delimiters{ + alternateQuotationEnd{"’"} + alternateQuotationStart{"‘"} + quotationEnd{"”"} + quotationStart{"“"} + } fields{ day{ dn{"Ngày"} @@ -4140,8 +2475,6 @@ vi{ standard-short{ 2{"{0} và {1}"} end{"{0} và {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} } unit-narrow{ 2{"{0} {1}"} diff --git a/source/data/locales/vi_VN.txt b/source/data/locales/vi_VN.txt index c24ba7a..e97bba8 100644 --- a/source/data/locales/vi_VN.txt +++ b/source/data/locales/vi_VN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License vi_VN{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/vun.txt b/source/data/locales/vun.txt index 443d4da..d14c0b1 100644 --- a/source/data/locales/vun.txt +++ b/source/data/locales/vun.txt @@ -11,7 +11,7 @@ vun{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/vun_TZ.txt b/source/data/locales/vun_TZ.txt index 99d2056..e49a1e5 100644 --- a/source/data/locales/vun_TZ.txt +++ b/source/data/locales/vun_TZ.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License vun_TZ{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/wae.txt b/source/data/locales/wae.txt index def1a3f..dd0dc12 100644 --- a/source/data/locales/wae.txt +++ b/source/data/locales/wae.txt @@ -7,7 +7,7 @@ wae{ " z]" } ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , ’ % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[\\- ‑ , ’ % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ symbols{ @@ -16,7 +16,7 @@ wae{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/wae_CH.txt b/source/data/locales/wae_CH.txt index 30ace23..91787bf 100644 --- a/source/data/locales/wae_CH.txt +++ b/source/data/locales/wae_CH.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License wae_CH{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/wo.txt b/source/data/locales/wo.txt index 62cfa1f..d1731b1 100644 --- a/source/data/locales/wo.txt +++ b/source/data/locales/wo.txt @@ -34,7 +34,7 @@ wo{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/wo_SN.txt b/source/data/locales/wo_SN.txt index 26e3153..c794c78 100644 --- a/source/data/locales/wo_SN.txt +++ b/source/data/locales/wo_SN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License wo_SN{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/xh.txt b/source/data/locales/xh.txt index e90e448..cb8a75d 100644 --- a/source/data/locales/xh.txt +++ b/source/data/locales/xh.txt @@ -20,7 +20,7 @@ xh{ } } } - Version{"2.1.49.82"} + Version{"36"} calendar{ gregorian{ AmPmMarkers{ diff --git a/source/data/locales/xh_ZA.txt b/source/data/locales/xh_ZA.txt index 9f5ce9d..b023425 100644 --- a/source/data/locales/xh_ZA.txt +++ b/source/data/locales/xh_ZA.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License xh_ZA{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/xog.txt b/source/data/locales/xog.txt index 02772e5..83dc814 100644 --- a/source/data/locales/xog.txt +++ b/source/data/locales/xog.txt @@ -10,7 +10,7 @@ xog{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/xog_UG.txt b/source/data/locales/xog_UG.txt index 53b84f7..3a06847 100644 --- a/source/data/locales/xog_UG.txt +++ b/source/data/locales/xog_UG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License xog_UG{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/yav.txt b/source/data/locales/yav.txt index 33f8158..a039175 100644 --- a/source/data/locales/yav.txt +++ b/source/data/locales/yav.txt @@ -7,7 +7,7 @@ yav{ "y} ŋ {ŋg} o ó ò ô ǒ ō ɔ {ɔ\u0301} {ɔ\u0300} p s t u ú ù û ǔ ū v w y]" } ExemplarCharactersIndex{"[A B C D E Ɛ F H I K L M N Ŋ O Ɔ P S T U V W Y]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ patterns{ @@ -22,7 +22,7 @@ yav{ } } } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/yav_CM.txt b/source/data/locales/yav_CM.txt index 2f547d6..632b2fd 100644 --- a/source/data/locales/yav_CM.txt +++ b/source/data/locales/yav_CM.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yav_CM{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/yi.txt b/source/data/locales/yi.txt index 8aa2733..d77b3da 100644 --- a/source/data/locales/yi.txt +++ b/source/data/locales/yi.txt @@ -8,8 +8,8 @@ yi{ "\u05BF} ף צ ץ ק ר ש {ש\u05C2} {ת\u05BC} ת]" } ExemplarCharactersIndex{"[\u05C2 \u05BC \u05BF א ב ג ד ה ו ז ח ט י כ ל מ נ ס ע פ צ ק ר ש ת]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . ׳ ' \u0022 ( ) \\[ \\] / ״ ־]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . ׳ ' \u0022 ( ) \\[ \\] / ״ ־]"} NumberElements{ default{"latn"} latn{ @@ -29,7 +29,7 @@ yi{ native{"latn"} traditional{"hebr"} } - Version{"2.1.47.82"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/yi_001.txt b/source/data/locales/yi_001.txt index 0822d94..a58c2bd 100644 --- a/source/data/locales/yi_001.txt +++ b/source/data/locales/yi_001.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yi_001{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/yo.txt b/source/data/locales/yo.txt index a25c2b8..26b7f7e 100644 --- a/source/data/locales/yo.txt +++ b/source/data/locales/yo.txt @@ -7,10 +7,8 @@ yo{ "\u0301} {ọ\u0300} p r s ṣ t u ú ù w y]" } ExemplarCharactersIndex{"[A B D E F G H I J K L M N O P R S T U W Y]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) @ * / \\& # † ‡ ′ ″]"} + ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) @ * / \\& # † ‡ ′ ″]"} NumberElements{ - default{"latn"} latn{ miscPatterns{ atLeast{"≥{0}"} @@ -36,10 +34,17 @@ yo{ superscriptingExponent{"×"} } } + minimalPairs{ + ordinal{ + other{"Mú {0} apá ọ̀tún"} + } + plural{ + other{"Àwọn ọjọ́ {0}"} + } + } minimumGroupingDigits{"1"} - native{"latn"} } - Version{"2.1.48.17"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -52,8 +57,8 @@ yo{ "d MM y G", "dd/MM/y G", "{1} {0}", - "{1} {0}", - "{1} {0}", + "{1} 'ní' {0}", + "{1} 'ní' {0}", "{1} {0}", "{1} {0}", } @@ -116,12 +121,7 @@ yo{ Timezone{"{0} {1}"} } availableFormats{ - Bh{"h B"} - Bhm{"h:mm B"} - Bhms{"h:mm:ss B"} E{"ccc"} - EBhm{"E h:mm B"} - EBhms{"E h:mm:ss B"} EHm{"E HH:mm"} EHms{"E HH:mm:ss"} Ed{"E, d"} @@ -202,15 +202,6 @@ yo{ } } stand-alone{ - abbreviated{ - "Àìk", - "Aj", - "Ìsẹ́g", - "Ọjọ́r", - "Ọjọ́b", - "Ẹt", - "Àbám", - } narrow{ "À", "A", @@ -259,6 +250,10 @@ yo{ eras{ abbreviated{ "BCE", + "AD", + } + abbreviated%variant{ + "BCE", "CE", } wide{ @@ -457,12 +452,6 @@ yo{ } quarters{ format{ - abbreviated{ - "Ìdámẹ́rin kíní", - "Ìdámẹ́rin Kejì", - "Ìdámẹ́rin Kẹta", - "Ìdámẹ́rin Kẹrin", - } narrow{ "kíní", "Kejì", @@ -477,12 +466,6 @@ yo{ } } stand-alone{ - abbreviated{ - "Ìdámẹ́rin kíní", - "Ìdámẹ́rin Kejì", - "Ìdámẹ́rin Kẹta", - "Ìdámẹ́rin Kẹrin", - } narrow{ "kí", "Ke", @@ -516,22 +499,6 @@ yo{ "2"{"òtúùnla"} } } - day-narrow{ - dn{"Ọjọ́"} - relative{ - "-1"{"Àná"} - "0"{"Òní"} - "1"{"Ọ̀la"} - } - } - day-short{ - dn{"Ọjọ́"} - relative{ - "-1"{"Àná"} - "0"{"Òní"} - "1"{"Ọ̀la"} - } - } dayperiod{ dn{"Àárọ̀/ọ̀sán"} } @@ -541,21 +508,9 @@ yo{ hour{ dn{"Wákàtí"} } - hour-narrow{ - dn{"Wákàtí"} - } - hour-short{ - dn{"Wákàtí"} - } minute{ dn{"Ìsẹ́jú"} } - minute-narrow{ - dn{"Ìsẹ́jú"} - } - minute-short{ - dn{"Ìsẹ́jú"} - } month{ dn{"Osù"} relative{ @@ -565,10 +520,7 @@ yo{ } } month-narrow{ - dn{"Osù"} - } - month-short{ - dn{"Osù"} + dn{"Oṣù"} } quarter{ dn{"Ìdá mẹ́rin"} @@ -576,9 +528,6 @@ yo{ quarter-narrow{ dn{"Ìdá mẹ́rin"} } - quarter-short{ - dn{"Ìdá mẹ́rin"} - } second{ dn{"Ìsẹ́jú Ààyá"} } @@ -603,11 +552,8 @@ yo{ "1"{"ọ́sẹ̀ tó ń bọ̀"} } } - week-narrow{ - dn{"Ọ̀sẹ̀"} - } week-short{ - dn{"Ọ̀sẹ̀"} + relativePeriod{"ọ̀ṣẹ̀ {0}"} } weekday{ dn{"Ọjọ́ tó wà láàárín ọ̀sẹ̀"} @@ -615,17 +561,11 @@ yo{ year{ dn{"Ọdún"} relative{ - "-1"{"ọ́dún tó kọjá"} - "0"{"ọ́dún yìí"} - "1"{"ọ́dún tó ń bọ̀"} + "-1"{"Èṣín"} + "0"{"Ọdúnǹí"} + "1"{"Àmọ́dún"} } } - year-narrow{ - dn{"Ọdún"} - } - year-short{ - dn{"Ọdún"} - } zone{ dn{"Agbègbè àkókò"} } diff --git a/source/data/locales/yo_BJ.txt b/source/data/locales/yo_BJ.txt index 3aefebc..7c424c7 100644 --- a/source/data/locales/yo_BJ.txt +++ b/source/data/locales/yo_BJ.txt @@ -1,89 +1,22 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yo_BJ{ - AuxExemplarCharacters{"[c q v x z]"} ExemplarCharacters{ "[a á à b d e é è ɛ {ɛ\u0301} {ɛ\u0300} f g {gb} h i í ì j k l m n o ó ò ɔ {ɔ" "\u0301} {ɔ\u0300} p r s {sh} t u ú ù w y]" } - ExemplarCharactersIndex{"[A B D E F G H I J K L M N O P R S T U W Y]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- ‐ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) @ * / \\& # † ‡ ′ ″]"} NumberElements{ - default{"latn"} - latn{ - miscPatterns{ - atLeast{"≥{0}"} - range{"{0}–{1}"} + minimalPairs{ + ordinal{ + other{"Mú {0} apá ɔ̀tún"} } - patterns{ - accountingFormat{"¤#,##0.00;(¤#,##0.00)"} - currencyFormat{"¤#,##0.00"} - decimalFormat{"#,##0.###"} - percentFormat{"#,##0%"} - scientificFormat{"#E0"} - } - symbols{ - decimal{"."} - exponential{"E"} - group{","} - infinity{"∞"} - minusSign{"-"} - nan{"NaN"} - perMille{"‰"} - percentSign{"%"} - plusSign{"+"} - superscriptingExponent{"×"} + plural{ + other{"Àwɔn ɔjɔ́ {0}"} } } - minimumGroupingDigits{"1"} - native{"latn"} } - Version{"2.1.48.77"} + Version{"36"} calendar{ - generic{ - DateTimePatterns{ - "HH:mm:ss zzzz", - "H:mm:ss z", - "H:m:s", - "H:m", - "EEEE, d MM y G", - "d MM y G", - "d MM y G", - "dd/MM/y G", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", - } - availableFormats{ - Hm{"HH:mm"} - Hms{"HH:mm:ss"} - M{"L"} - MEd{"E, M/d"} - MMM{"LLL"} - MMMEd{"E, MMM d"} - MMMMEd{"E, MMMM d"} - MMMMd{"MMMM d"} - MMMd{"MMM d"} - Md{"M/d"} - d{"d"} - hm{"h:mm a"} - ms{"mm:ss"} - y{"y"} - yM{"M/y"} - yMEd{"E, M/d/y"} - yMMM{"MMM y"} - yMMMEd{"E, MMM d, y"} - yMMMM{"MMMM y"} - yQQQ{"QQQ y"} - yQQQQ{"QQQQ y"} - } - intervalFormats{ - fallback{"{0} – {1}"} - } - } gregorian{ AmPmMarkers{ "Àárɔ̀", @@ -97,71 +30,6 @@ yo_BJ{ "Àárɔ̀", "Ɔ̀sán", } - DateTimePatterns{ - "HH:mm:ss zzzz", - "H:mm:ss z", - "H:m:s", - "H:m", - "EEEE, d MMM y", - "d MMM y", - "d MM y", - "d/M/y", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", - } - appendItems{ - Timezone{"{0} {1}"} - } - availableFormats{ - Bh{"h B"} - Bhm{"h:mm B"} - Bhms{"h:mm:ss B"} - E{"ccc"} - EBhm{"E h:mm B"} - EBhms{"E h:mm:ss B"} - EHm{"E HH:mm"} - EHms{"E HH:mm:ss"} - Ed{"E, d"} - Ehm{"E h:mm a"} - Ehms{"E h:mm:ss a"} - Gy{"G y"} - GyMMM{"G y MMM"} - GyMMMEd{"G y MMM d, E"} - GyMMMd{"G y MMM d"} - H{"HH"} - Hm{"HH:mm"} - Hms{"HH:mm:ss"} - Hmsv{"HH:mm:ss v"} - Hmv{"HH:mm v"} - M{"L"} - MEd{"E, d/M"} - MMM{"LLL"} - MMMEd{"d MMM, E"} - MMMMEd{"d, MMMM E"} - MMMMd{"d MMMM"} - MMMd{"d MMM"} - Md{"d/M"} - d{"d"} - h{"h a"} - hm{"h:mm a"} - hms{"h:mm:ss a"} - hmsv{"h:mm:ss a v"} - hmv{"h:mm a v"} - ms{"mm:ss"} - y{"y"} - yM{"M/y"} - yMEd{"d/M/y, E"} - yMMM{"MMM y"} - yMMMEd{"E, d MMM , y"} - yMMMM{"MMMM y"} - yMMMd{"d MMM y"} - yMd{"d/M/y"} - yQQQ{"QQQ y"} - yQQQQ{"QQQQ y"} - } dayNames{ format{ abbreviated{ @@ -202,15 +70,6 @@ yo_BJ{ } } stand-alone{ - abbreviated{ - "Àìk", - "Aj", - "Ìsɛ́g", - "Ɔjɔ́r", - "Ɔjɔ́b", - "Ɛt", - "Àbám", - } narrow{ "À", "A", @@ -256,115 +115,6 @@ yo_BJ{ } } } - eras{ - abbreviated{ - "BCE", - "CE", - } - wide{ - "Saju Kristi", - "Lehin Kristi", - } - wide%variant{ - "BCE", - "CE", - } - } - intervalFormats{ - H{ - H{"HH–HH"} - } - Hm{ - H{"HH:mm–HH:mm"} - m{"HH:mm–HH:mm"} - } - Hmv{ - H{"HH:mm–HH:mm v"} - m{"HH:mm–HH:mm v"} - } - Hv{ - H{"HH–HH v"} - } - M{ - M{"MM–MM"} - } - MEd{ - M{"MM-dd, E – MM-dd, E"} - d{"MM-dd, E – MM-dd, E"} - } - MMM{ - M{"LLL–LLL"} - } - MMMEd{ - M{"MMM d, E – MMM d, E"} - d{"MMM d, E – MMM d, E"} - } - MMMd{ - M{"MMM d – MMM d"} - d{"MMM d–d"} - } - Md{ - M{"MM-dd – MM-dd"} - d{"MM-dd – MM-dd"} - } - d{ - d{"d–d"} - } - fallback{"{0} – {1}"} - h{ - a{"h a – h a"} - h{"h–h a"} - } - hm{ - a{"h:mm a – h:mm a"} - h{"h:mm–h:mm a"} - m{"h:mm–h:mm a"} - } - hmv{ - a{"h:mm a – h:mm a v"} - h{"h:mm–h:mm a v"} - m{"h:mm–h:mm a v"} - } - hv{ - a{"h a – h a v"} - h{"h–h a v"} - } - y{ - y{"y–y"} - } - yM{ - M{"MM-y – MM-y"} - y{"y-MM – y-MM"} - } - yMEd{ - M{"y-MM-dd, E – y-MM-dd, E"} - d{"E, dd-MM-y – E dd-MM-y, E"} - y{"y-MM-dd, E – y-MM-dd, E"} - } - yMMM{ - M{"y MMM–MMM"} - y{"y MMM – y MMM"} - } - yMMMEd{ - M{"MMM d, E – MMM d, E y"} - d{"MMM d, E – MMM d, E y"} - y{"y MMM d y, E – MMM d, E y"} - } - yMMMM{ - M{"MMMM–MMMM y"} - y{"MMMM – y MMMM y"} - } - yMMMd{ - M{"MMM d – MMM d y"} - d{"MMM d–d y"} - y{"y MMM d – y MMM d"} - } - yMd{ - M{"y-MM-dd – y-MM-dd"} - d{"y-MM-dd – y-MM-dd"} - y{"y-MM-dd – y-MM-dd"} - } - } monthNames{ format{ abbreviated{ @@ -457,12 +207,6 @@ yo_BJ{ } quarters{ format{ - abbreviated{ - "Ìdámɛ́rin kíní", - "Ìdámɛ́rin Kejì", - "Ìdámɛ́rin Kɛta", - "Ìdámɛ́rin Kɛrin", - } narrow{ "kíní", "Kejì", @@ -477,12 +221,6 @@ yo_BJ{ } } stand-alone{ - abbreviated{ - "Ìdámɛ́rin kíní", - "Ìdámɛ́rin Kejì", - "Ìdámɛ́rin Kɛta", - "Ìdámɛ́rin Kɛrin", - } narrow{ "kí", "Ke", @@ -490,21 +228,15 @@ yo_BJ{ "Kɛr", } wide{ - "Ìdámɛ́rin kíní", - "Ìdámɛ́rin Kejì", + "Ìdámẹ́rin kíní", + "Ìdámẹ́rin Kejì", "Ìdámɛ́rin Kɛta", - "Ìdámɛ́rin Kɛrin", + "Ìdámẹ́rin Kẹrin", } } } } } - delimiters{ - alternateQuotationEnd{"’"} - alternateQuotationStart{"‘"} - quotationEnd{"”"} - quotationStart{"“"} - } fields{ day{ dn{"Ɔjɔ́"} @@ -513,51 +245,15 @@ yo_BJ{ "-2"{"íjɛta"} "0"{"Òní"} "1"{"Ɔ̀la"} - "2"{"òtúùnla"} - } - } - day-narrow{ - dn{"Ɔjɔ́"} - relative{ - "-1"{"Àná"} - "0"{"Òní"} - "1"{"Ɔ̀la"} - } - } - day-short{ - dn{"Ɔjɔ́"} - relative{ - "-1"{"Àná"} - "0"{"Òní"} - "1"{"Ɔ̀la"} } } dayperiod{ dn{"Àárɔ̀/ɔ̀sán"} } - era{ - dn{"Ìgbà"} - } - hour{ - dn{"Wákàtí"} - } - hour-narrow{ - dn{"Wákàtí"} - } - hour-short{ - dn{"Wákàtí"} - } minute{ dn{"Ìsɛ́jú"} } - minute-narrow{ - dn{"Ìsɛ́jú"} - } - minute-short{ - dn{"Ìsɛ́jú"} - } month{ - dn{"Osù"} relative{ "-1"{"óshù tó kɔjá"} "0"{"oshù yìí"} @@ -565,10 +261,7 @@ yo_BJ{ } } month-narrow{ - dn{"Osù"} - } - month-short{ - dn{"Osù"} + dn{"Oshù"} } quarter{ dn{"Ìdá mɛ́rin"} @@ -576,9 +269,6 @@ yo_BJ{ quarter-narrow{ dn{"Ìdá mɛ́rin"} } - quarter-short{ - dn{"Ìdá mɛ́rin"} - } second{ dn{"Ìsɛ́jú Ààyá"} } @@ -603,11 +293,8 @@ yo_BJ{ "1"{"ɔ́sɛ̀ tó ń bɔ̀"} } } - week-narrow{ - dn{"Ɔ̀sɛ̀"} - } week-short{ - dn{"Ɔ̀sɛ̀"} + relativePeriod{"ɔ̀shɛ̀ {0}"} } weekday{ dn{"Ɔjɔ́ tó wà láàárín ɔ̀sɛ̀"} @@ -615,28 +302,11 @@ yo_BJ{ year{ dn{"Ɔdún"} relative{ - "-1"{"ɔ́dún tó kɔjá"} - "0"{"ɔ́dún yìí"} - "1"{"ɔ́dún tó ń bɔ̀"} + "-1"{"Èshín"} + "0"{"Ɔdúnǹí"} + "1"{"Àmɔ́dún"} } } - year-narrow{ - dn{"Ɔdún"} - } - year-short{ - dn{"Ɔdún"} - } - zone{ - dn{"Agbègbè àkókò"} - } - } - listPattern{ - standard{ - 2{"{0}, {1}"} - end{"{0}, {1}"} - middle{"{0}, {1}"} - start{"{0}, {1}"} - } } measurementSystemNames{ UK{"Ilɛ̀ Gɛ̀ɛ́sì"} diff --git a/source/data/locales/yo_NG.txt b/source/data/locales/yo_NG.txt index 75be872..ad335b0 100644 --- a/source/data/locales/yo_NG.txt +++ b/source/data/locales/yo_NG.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yo_NG{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/yue.txt b/source/data/locales/yue.txt index 93bd135..23d7d08 100644 --- a/source/data/locales/yue.txt +++ b/source/data/locales/yue.txt @@ -72,28 +72,34 @@ yue{ "]" } ExemplarCharactersIndex{"[一 丁 丈 不 且 丞 並 串 乘 乾 亂 亭 傀 僎 僵 儐 償 儳 儷 儻 叢 嚴 囌 囑 廳]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9 〇 一 七 三 九 二 五 八 六 四]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9 〇 一 七 三 九 二 五 八 六 四]"} ExemplarCharactersPunctuation{ - "[‾ ﹉﹊﹋﹌ _ _ ﹍﹎﹏ ︳︴ \\- - ﹣ ‐ – ︲ — ﹘ ︱ , , ﹐ 、 ﹑ ; ; ﹔ \\: : ﹕ ! ! ﹗ ? ? ﹖ ." - " . ﹒ ‥ ︰ … 。 · ' ‘ ’ \u0022 " “ ” 〝 〞 ( ( ﹙ ︵ ) ) ﹚ ︶ \\[ [ \\] ] \\{ { ﹛ ︷ " - "\\} } ﹜ ︸ 〈 ︿ 〉 ﹀ 《 ︽ 》 ︾ 「 ﹁ 」 ﹂ 『 ﹃ 』 ﹄ 【 ︻ 】 ︼ 〔 ﹝ ︹ 〕 ﹞ ︺ § @ @ ﹫ * * ﹡ " - "/ / \\\\ \ ﹨ \\& & ﹠ # # ﹟ % % ﹪ ‰ † ‡ ‧ ′ ″ ‵ 〃 ※]" + "[‾ ﹉﹊﹋﹌ _ _ ﹍﹎﹏ ︳︴ \\- - ﹣ ‐ ‑ – ︲ — ﹘ ︱ , , ﹐ 、 ﹑ ; ; ﹔ \\: : ﹕ ! ! ﹗ ? ? ﹖" + " . . ﹒ ‥ ︰ … 。 · ' ‘ ’ \u0022 " “ ” 〝 〞 ( ( ﹙ ︵ ) ) ﹚ ︶ \\[ [ \\] ] \\{ { ﹛ " + "︷ \\} } ﹜ ︸ 〈 ︿ 〉 ﹀ 《 ︽ 》 ︾ 「 ﹁ 」 ﹂ 『 ﹃ 』 ﹄ 【 ︻ 】 ︼ 〔 ﹝ ︹ 〕 ﹞ ︺ § @ @ ﹫ * * " + "﹡ / / \\\\ \ ﹨ \\& & ﹠ # # ﹟ % % ﹪ ‰ † ‡ ‧ ′ ″ ‵ 〃 ※]" } MoreInformation{"?"} NumberElements{ + default{"latn"} finance{"hantfin"} hanidec{ patterns{ currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"非數值"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} } } @@ -107,6 +113,7 @@ yue{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -229,12 +236,16 @@ yue{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} list{";"} + minusSign{"-"} nan{"非數值"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -247,10 +258,11 @@ yue{ other{"{0} 本書"} } } + minimumGroupingDigits{"1"} native{"hanidec"} traditional{"hant"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -1564,6 +1576,44 @@ yue{ h{"Bh:mm至h:mm"} m{"Bh:mm至h:mm"} } + Gy{ + G{"Gy年至Gy年"} + y{"Gy年至y年"} + } + GyM{ + G{"GGGGGy年M月至y年M月"} + M{"GGGGGy年M月至y年M月"} + y{"GGGGGy年M月至y年M月"} + } + GyMEd{ + G{"GGGGGy年M月dd日E至GGGGGy年M月dd日E"} + M{"GGGGGy年M月dd日E至y年M月dd日E"} + d{"GGGGGy年M月dd日E至y年M月dd日E"} + y{"GGGGGy年M月dd日E至y年M月dd日E"} + } + GyMMM{ + G{"Gy年MMM至Gy年MMM"} + M{"G y年MMM至MMM"} + y{"Gy年MMM至y年MMM"} + } + GyMMMEd{ + G{"Gy 年MMMd日E至Gy年MMMd日E"} + M{"Gy年MMMd日E至MMMd日E"} + d{"Gy年MMMd日E至MMMd日E"} + y{"Gy年MMMd日E至y年MMMd日E"} + } + GyMMMd{ + G{"Gy年MMMd日至Gy年MMMd日"} + M{"Gy年MMMd日至MMMd日"} + d{"Gy年MMMd至d日"} + y{"Gy年MMMd日至y年MMMd日"} + } + GyMd{ + G{"GGGGGy年M月dd日y年M月dd日"} + M{"GGGGGy年M月dd日至y年M月dd日"} + d{"GGGGGy年M月dd日至y年M月dd日"} + y{"GGGGGy年M月dd日至y年M月dd日"} + } H{ H{"HH–HH"} } @@ -3395,12 +3445,6 @@ yue{ middle{"{0}、{1}"} start{"{0}、{1}"} } - standard-narrow{ - 2{"{0}同{1}"} - end{"{0}同{1}"} - middle{"{0}、{1}"} - start{"{0}、{1}"} - } standard-short{ 2{"{0}同{1}"} end{"{0}同{1}"} @@ -3431,36 +3475,4 @@ yue{ US{"美制"} metric{"公制"} } - parse{ - date{ - lenient{ - "[\\--/]", - "[\\:∶︓﹕:]", - } - } - general{ - lenient{ - "[.․。︒﹒.。]", - "['ʼ՚᾽᾿’']", - "[%٪﹪%]", - "[؉‰]", - "[\$﹩$]", - "[£₤£]", - "[¥¥]", - "[₩₩]", - "[₨₹{Rp}{Rs}]", - } - } - number{ - lenient{ - "[\\-‐‒–⁻₋−➖﹣-]", - "[,،٫、︐︑﹐﹑,、]", - "[+⁺₊➕﬩﹢+]", - } - stricter{ - "[,٫︐﹐,]", - "[.․﹒.。]", - } - } - } } diff --git a/source/data/locales/yue_Hans.txt b/source/data/locales/yue_Hans.txt index 5dc378d..1c015e7 100644 --- a/source/data/locales/yue_Hans.txt +++ b/source/data/locales/yue_Hans.txt @@ -70,28 +70,34 @@ yue_Hans{ " 黄 黎 黑 默 鼓 鼠 鼻 齐 齿 龄 龙 龟]" } ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9 〇 一 七 三 九 二 五 八 六 四]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9 〇 一 七 三 九 二 五 八 六 四]"} ExemplarCharactersPunctuation{ - "[﹉﹊﹋﹌ _ _ ﹍﹎﹏ ︳︴ \\- - ﹣ ‐ – — ︱ ― , , ﹐ 、 ﹑ ; ; ﹔ \\: : ﹕ ! ! ﹗ ? ? ﹖ . . ﹒" - " ‥ ︰ … 。 · ' ‘ ’ \u0022 " “ ” 〝 〞 ( ( ﹙ ︵ ) ) ﹚ ︶ \\[ [ \\] ] \\{ { ﹛ ︷ \\} " - "} ﹜ ︸ 〈 ︿ 〉 ﹀ 《 ︽ 》 ︾ 「 ﹁ 」 ﹂ 『 ﹃ 』 ﹄ 【 ︻ 】 ︼ 〔 ﹝ ︹ 〕 ﹞ ︺ 〖 〗 ‖ § @ @ ﹫ * * " - "﹡ / / \\\\ \ ﹨ \\& & ﹠ # # ﹟ % % ﹪ ‰ ′ ″ ‵ 〃 ※]" + "[﹉﹊﹋﹌ _ _ ﹍﹎﹏ ︳︴ \\- - ﹣ ‐ ‑ – — ︱ ― , , ﹐ 、 ﹑ ; ; ﹔ \\: : ﹕ ! ! ﹗ ? ? ﹖ . ." + " ﹒ ‥ ︰ … 。 · ' ‘ ’ \u0022 " “ ” 〝 〞 ( ( ﹙ ︵ ) ) ﹚ ︶ \\[ [ \\] ] \\{ { ﹛ ︷ " + "\\} } ﹜ ︸ 〈 ︿ 〉 ﹀ 《 ︽ 》 ︾ 「 ﹁ 」 ﹂ 『 ﹃ 』 ﹄ 【 ︻ 】 ︼ 〔 ﹝ ︹ 〕 ﹞ ︺ 〖 〗 ‖ § @ @ ﹫ " + "* * ﹡ / / \\\\ \ ﹨ \\& & ﹠ # # ﹟ % % ﹪ ‰ ′ ″ ‵ 〃 ※]" } MoreInformation{"?"} NumberElements{ + default{"latn"} finance{"hansfin"} hanidec{ patterns{ currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"非数值"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} } } @@ -105,6 +111,7 @@ yue_Hans{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -227,12 +234,16 @@ yue_Hans{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} list{";"} + minusSign{"-"} nan{"非数值"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -245,10 +256,11 @@ yue_Hans{ other{"{0} 本书"} } } + minimumGroupingDigits{"1"} native{"hanidec"} traditional{"hans"} } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -1562,6 +1574,44 @@ yue_Hans{ h{"Bh:mm至h:mm"} m{"Bh:mm至h:mm"} } + Gy{ + G{"Gy年至Gy年"} + y{"Gy年至y年"} + } + GyM{ + G{"GGGGGy年M月至y年M月"} + M{"GGGGGy年M月至y年M月"} + y{"GGGGGy年M月至y年M月"} + } + GyMEd{ + G{"GGGGGy年M月dd日E至GGGGGy年M月dd日E"} + M{"GGGGGy年M月dd日E至y年M月dd日E"} + d{"GGGGGy年M月dd日E至y年M月dd日E"} + y{"GGGGGy年M月dd日E至y年M月dd日E"} + } + GyMMM{ + G{"Gy年MMM至Gy年MMM"} + M{"G y年MMM至MMM"} + y{"Gy年MMM至y年MMM"} + } + GyMMMEd{ + G{"Gy 年MMMd日E至Gy年MMMd日E"} + M{"Gy年MMMd日E至MMMd日E"} + d{"Gy年MMMd日E至MMMd日E"} + y{"Gy年MMMd日E至y年MMMd日E"} + } + GyMMMd{ + G{"Gy年MMMd日至Gy年MMMd日"} + M{"Gy年MMMd日至MMMd日"} + d{"Gy年MMMd至d日"} + y{"Gy年MMMd日至y年MMMd日"} + } + GyMd{ + G{"GGGGGy年M月dd日y年M月dd日"} + M{"GGGGGy年M月dd日至y年M月dd日"} + d{"GGGGGy年M月dd日至y年M月dd日"} + y{"GGGGGy年M月dd日至y年M月dd日"} + } H{ H{"HH–HH"} } @@ -3393,12 +3443,6 @@ yue_Hans{ middle{"{0}、{1}"} start{"{0}、{1}"} } - standard-narrow{ - 2{"{0}同{1}"} - end{"{0}同{1}"} - middle{"{0}、{1}"} - start{"{0}、{1}"} - } standard-short{ 2{"{0}同{1}"} end{"{0}同{1}"} @@ -3429,36 +3473,4 @@ yue_Hans{ US{"美制"} metric{"公制"} } - parse{ - date{ - lenient{ - "[\\--/]", - "[\\:∶︓﹕:]", - } - } - general{ - lenient{ - "[.․。︒﹒.。]", - "['ʼ՚᾽᾿’']", - "[%٪﹪%]", - "[؉‰]", - "[\$﹩$]", - "[£₤£]", - "[¥¥]", - "[₩₩]", - "[₨₹{Rp}{Rs}]", - } - } - number{ - lenient{ - "[\\-‐‒–⁻₋−➖﹣-]", - "[,،٫、︐︑﹐﹑,、]", - "[+⁺₊➕﬩﹢+]", - } - stricter{ - "[,٫︐﹐,]", - "[.․﹒.。]", - } - } - } } diff --git a/source/data/locales/yue_Hans_CN.txt b/source/data/locales/yue_Hans_CN.txt index fa60f80..cf412b3 100644 --- a/source/data/locales/yue_Hans_CN.txt +++ b/source/data/locales/yue_Hans_CN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yue_Hans_CN{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/yue_Hant.txt b/source/data/locales/yue_Hant.txt index 1aaa640..a4fe9d6 100644 --- a/source/data/locales/yue_Hant.txt +++ b/source/data/locales/yue_Hant.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yue_Hant{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/yue_Hant_HK.txt b/source/data/locales/yue_Hant_HK.txt index 3ac9503..3e7b8d5 100644 --- a/source/data/locales/yue_Hant_HK.txt +++ b/source/data/locales/yue_Hant_HK.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yue_Hant_HK{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/zgh.txt b/source/data/locales/zgh.txt index a017120..72b7195 100644 --- a/source/data/locales/zgh.txt +++ b/source/data/locales/zgh.txt @@ -3,7 +3,7 @@ zgh{ ExemplarCharacters{"[ⴰ ⴱ ⴳ {ⴳⵯ} ⴷ ⴹ ⴻ ⴼ ⴽ {ⴽⵯ} ⵀ ⵃ ⵄ ⵅ ⵇ ⵉ ⵊ ⵍ ⵎ ⵏ ⵓ ⵔ ⵕ ⵖ ⵙ ⵚ ⵛ ⵜ ⵟ ⵡ ⵢ ⵣ ⵥ]"} ExemplarCharactersIndex{"[ⴰ ⴱ ⴳ ⴷ ⴹ ⴻ ⴼ ⴽ ⵀ ⵃ ⵄ ⵅ ⵇ ⵉ ⵊ ⵍ ⵎ ⵏ ⵓ ⵔ ⵕ ⵖ ⵙ ⵚ ⵛ ⵜ ⵟ ⵡ ⵢ ⵣ ⵥ]"} - ExemplarCharactersNumbers{"[  \\- , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"} NumberElements{ latn{ miscPatterns{ @@ -32,7 +32,7 @@ zgh{ } minimumGroupingDigits{"1"} } - Version{"2.1.48.4"} + Version{"36"} calendar{ generic{ DateTimePatterns{ diff --git a/source/data/locales/zgh_MA.txt b/source/data/locales/zgh_MA.txt index a97997d..992f700 100644 --- a/source/data/locales/zgh_MA.txt +++ b/source/data/locales/zgh_MA.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zgh_MA{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/locales/zh.txt b/source/data/locales/zh.txt index 160f905..bc346c4 100644 --- a/source/data/locales/zh.txt +++ b/source/data/locales/zh.txt @@ -74,12 +74,12 @@ zh{ " 齐 齿 龄 龙 龟]" } ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9 〇 一 七 三 九 二 五 八 六 四]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9 〇 一 七 三 九 二 五 八 六 四]"} ExemplarCharactersPunctuation{ - "[﹉﹊﹋﹌ _ _ ﹍﹎﹏ ︳︴ \\- - ﹣ ‐ – — ︱ ― , , ﹐ 、 ﹑ ; ; ﹔ \\: : ﹕ ! ! ﹗ ? ? ﹖ . . ﹒" - " ‥ ︰ … 。 · ' ‘ ’ \u0022 " “ ” 〝 〞 ( ( ﹙ ︵ ) ) ﹚ ︶ \\[ [ \\] ] \\{ { ﹛ ︷ \\} " - "} ﹜ ︸ 〈 ︿ 〉 ﹀ 《 ︽ 》 ︾ 「 ﹁ 」 ﹂ 『 ﹃ 』 ﹄ 【 ︻ 】 ︼ 〔 ﹝ ︹ 〕 ﹞ ︺ 〖 〗 ‖ § @ @ ﹫ * * " - "﹡ / / \\\\ \ ﹨ \\& & ﹠ # # ﹟ % % ﹪ ‰ ′ ″ ‵ 〃 ※]" + "[﹉﹊﹋﹌ _ _ ﹍﹎﹏ ︳︴ \\- - ﹣ ‐ ‑ – — ︱ ― , , ﹐ 、 ﹑ ; ; ﹔ \\: : ﹕ ! ! ﹗ ? ? ﹖ . ." + " ﹒ ‥ ︰ … 。 · ' ‘ ’ \u0022 " “ ” 〝 〞 ( ( ﹙ ︵ ) ) ﹚ ︶ \\[ [ \\] ] \\{ { ﹛ ︷ " + "\\} } ﹜ ︸ 〈 ︿ 〉 ﹀ 《 ︽ 》 ︾ 「 ﹁ 」 ﹂ 『 ﹃ 』 ﹄ 【 ︻ 】 ︼ 〔 ﹝ ︹ 〕 ﹞ ︺ 〖 〗 ‖ § @ @ ﹫ " + "* * ﹡ / / \\\\ \ ﹨ \\& & ﹠ # # ﹟ % % ﹪ ‰ ′ ″ ‵ 〃 ※]" } MoreInformation{"?"} NumberElements{ @@ -94,9 +94,15 @@ zh{ percentFormat{"#,##0%"} } symbols{ - minusSign{"؜-"} - percentSign{"٪؜"} - plusSign{"؜+"} + decimal{"٫"} + exponential{"اس"} + group{"٬"} + infinity{"∞"} + list{"؛"} + nan{"NaN"} + perMille{"؉"} + superscriptingExponent{"×"} + timeSeparator{":"} } } arabext{ @@ -108,6 +114,20 @@ zh{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} } + symbols{ + decimal{"٫"} + exponential{"×۱۰^"} + group{"٬"} + infinity{"∞"} + list{"؛"} + minusSign{"‎-‎"} + nan{"NaN"} + perMille{"؉"} + percentSign{"٪"} + plusSign{"‎+‎"} + superscriptingExponent{"×"} + timeSeparator{"٫"} + } } bali{ miscPatterns{ @@ -159,6 +179,7 @@ zh{ currencyFormat{"¤#,##0.00"} } } + default{"latn"} deva{ miscPatterns{ atLeast{"{0}+"} @@ -218,15 +239,20 @@ zh{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} } } @@ -310,6 +336,7 @@ zh{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -343,13 +370,13 @@ zh{ other{"0000亿"} } 1000000000000{ - other{"0兆"} + other{"0万亿"} } 10000000000000{ - other{"00兆"} + other{"00万亿"} } 100000000000000{ - other{"000兆"} + other{"000万亿"} } } } @@ -383,13 +410,13 @@ zh{ other{"¤0000亿"} } 1000000000000{ - other{"¤0兆"} + other{"¤0万亿"} } 10000000000000{ - other{"¤00兆"} + other{"¤00万亿"} } 100000000000000{ - other{"¤000兆"} + other{"¤000万亿"} } } decimalFormat{ @@ -421,24 +448,29 @@ zh{ other{"0000亿"} } 1000000000000{ - other{"0兆"} + other{"0万亿"} } 10000000000000{ - other{"00兆"} + other{"00万亿"} } 100000000000000{ - other{"000兆"} + other{"000万亿"} } } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } lepc{ @@ -673,7 +705,7 @@ zh{ } } } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -737,44 +769,6 @@ zh{ h{"Bh:mm至h:mm"} m{"Bh:mm至h:mm"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } Hmv{ H{"v HH:mm – HH:mm"} m{"v HH:mm – HH:mm"} @@ -1304,55 +1298,6 @@ zh{ "科普特历", } } - intervalFormats{ - Bh{ - B{"Bh时至Bh时"} - h{"Bh时至h时"} - } - Bhm{ - B{"Bh:mm至Bh:mm"} - h{"Bh:mm至h:mm"} - m{"Bh:mm至h:mm"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } - } monthNames{ format{ abbreviated{ @@ -1451,30 +1396,6 @@ zh{ } } dangi{ - DateTimePatterns{ - "zzzz ah:mm:ss", - "z ah:mm:ss", - "ah:mm:ss", - "ah:mm", - { - "rU年MMMdEEEE", - "d=hanidays", - } - { - "rU年MMMd", - "d=hanidays", - } - { - "r年MMMd", - "d=hanidays", - } - "r/M/d", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", - "{1} {0}", - } cyclicNameSets{ dayParts{ format{ @@ -1713,17 +1634,6 @@ zh{ } } } - intervalFormats{ - Bh{ - B{"Bh至Bh时"} - h{"Bh至h时"} - } - Bhm{ - B{"Bh:mm至Bh:mm"} - h{"Bh:mm至h:mm"} - m{"Bh:mm至h:mm"} - } - } } ethiopic{ DateTimePatterns{ @@ -1742,6 +1652,14 @@ zh{ "{1} {0}", } eras{ + abbreviated{ + "埃历前", + "埃历", + } + narrow{ + "埃历前", + "埃历", + } wide{ "埃塞俄比亚历前", "埃塞俄比亚历", @@ -1920,44 +1838,6 @@ zh{ h{"Bh:mm至h:mm"} m{"Bh:mm至h:mm"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } Hmv{ H{"v HH:mm – HH:mm"} m{"v HH:mm – HH:mm"} @@ -2277,26 +2157,14 @@ zh{ "公元前", "公元", } - abbreviated%variant{ - "BCE", - "CE", - } narrow{ "公元前", "公元", } - narrow%variant{ - "BCE", - "CE", - } wide{ "公元前", "公元", } - wide%variant{ - "BCE", - "CE", - } } intervalFormats{ Bh{ @@ -2308,44 +2176,6 @@ zh{ h{"Bh:mm至h:mm"} m{"Bh:mm至h:mm"} } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -2456,6 +2286,20 @@ zh{ "11月", "12月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "一月", "二月", @@ -2486,6 +2330,20 @@ zh{ "11月", "12月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "一月", "二月", @@ -3875,55 +3733,6 @@ zh{ "令和", } } - intervalFormats{ - Bh{ - B{"Bh时至Bh时"} - h{"Bh时至h时"} - } - Bhm{ - B{"Bh:mm至Bh:mm"} - h{"Bh:mm至h:mm"} - m{"Bh:mm至h:mm"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } - } } persian{ eras{ @@ -3937,48 +3746,6 @@ zh{ "波斯历", } } - intervalFormats{ - Bh{ - B{"Bh时至Bh时"} - h{"Bh时至h时"} - } - Bhm{ - B{"Bh:mm至Bh:mm"} - h{"Bh:mm至h:mm"} - m{"Bh:mm至h:mm"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } - } monthNames{ format{ abbreviated{ @@ -5084,12 +4851,6 @@ zh{ middle{"{0}、{1}"} start{"{0}、{1}"} } - standard-narrow{ - 2{"{0}和{1}"} - end{"{0}和{1}"} - middle{"{0}、{1}"} - start{"{0}、{1}"} - } standard-short{ 2{"{0}和{1}"} end{"{0}和{1}"} diff --git a/source/data/locales/zh_Hans.txt b/source/data/locales/zh_Hans.txt index 2e93fd9..5a74156 100644 --- a/source/data/locales/zh_Hans.txt +++ b/source/data/locales/zh_Hans.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hans{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/zh_Hans_CN.txt b/source/data/locales/zh_Hans_CN.txt index cef1b7c..72ae3ff 100644 --- a/source/data/locales/zh_Hans_CN.txt +++ b/source/data/locales/zh_Hans_CN.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hans_CN{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/zh_Hans_HK.txt b/source/data/locales/zh_Hans_HK.txt index be5c613..bfcc4d7 100644 --- a/source/data/locales/zh_Hans_HK.txt +++ b/source/data/locales/zh_Hans_HK.txt @@ -1,37 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hans_HK{ - NumberElements{ - latn{ - patternsLong{ - decimalFormat{ - 1000000000000{ - other{"0万亿"} - } - 10000000000000{ - other{"00万亿"} - } - 100000000000000{ - other{"000万亿"} - } - } - } - patternsShort{ - decimalFormat{ - 1000000000000{ - other{"0万亿"} - } - 10000000000000{ - other{"00万亿"} - } - 100000000000000{ - other{"000万亿"} - } - } - } - } - } - Version{"2.1.47.71"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ diff --git a/source/data/locales/zh_Hans_MO.txt b/source/data/locales/zh_Hans_MO.txt index 3f6c944..19fff08 100644 --- a/source/data/locales/zh_Hans_MO.txt +++ b/source/data/locales/zh_Hans_MO.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hans_MO{ - Version{"2.1.47.71"} + Version{"36"} calendar{ chinese{ DateTimePatterns{ diff --git a/source/data/locales/zh_Hans_SG.txt b/source/data/locales/zh_Hans_SG.txt index 7f8cdf0..9cbfc3b 100644 --- a/source/data/locales/zh_Hans_SG.txt +++ b/source/data/locales/zh_Hans_SG.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hans_SG{ - Version{"2.1.47.71"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ diff --git a/source/data/locales/zh_Hant.txt b/source/data/locales/zh_Hant.txt index 09860ea..fbc6ee6 100644 --- a/source/data/locales/zh_Hant.txt +++ b/source/data/locales/zh_Hant.txt @@ -8,6 +8,14 @@ zh_Hant{ " 羯 聳 肖 艇 芒 苗 茨 蓬 虹 蚩 蛛 蜀 蜘 蝴 蝸 蠟 裘 裙 謬 豚 躬 酋 釘 鈔 鈕 鉛 鎚 鎬 鐺 鑰 鑽 隴 霄 鞠 骰 骷 髏 鯉" " 鳶]" } + Ellipsis{ + final{"{0}…"} + initial{"…{0}"} + medial{"{0}…{1}"} + word-final{"{0} …"} + word-initial{"… {0}"} + word-medial{"{0} … {1}"} + } ExemplarCharacters{ "[一 丁 七 丈-不 丑 且 世 丘 丙 丟 並 中 串 丸 丹 主 乃 久 么 之 乎 乏 乖 乘 乙 九 也 乾 亂 了 予 事 二 于 云 互 五" " 井 些 亞 亡 交-亦 亨 享 京 亮 人 什 仁 仇 今 介 仍 仔 他 付 仙 代-以 仰 仲 件 任 份 企 伊 伍 伐 休 伙 伯 估 伴 伸" @@ -67,12 +75,12 @@ zh_Hant{ "]" } ExemplarCharactersIndex{"[一 丁 丈 不 且 丞 並 串 乘 乾 亂 亭 傀 僎 僵 儐 償 儳 儷 儻 叢 嚴 囌 囑 廳]"} - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9 〇 一 七 三 九 二 五 八 六 四]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9 〇 一 七 三 九 二 五 八 六 四]"} ExemplarCharactersPunctuation{ - "[‾ ﹉﹊﹋﹌ _ _ ﹍﹎﹏ ︳︴ \\- - ﹣ ‐ – ︲ — ﹘ ︱ , , ﹐ 、 ﹑ ; ; ﹔ \\: : ﹕ ! ! ﹗ ? ? ﹖ ." - " . ﹒ ‥ ︰ … 。 · ' ‘ ’ \u0022 " “ ” 〝 〞 ( ( ﹙ ︵ ) ) ﹚ ︶ \\[ [ \\] ] \\{ { ﹛ ︷ " - "\\} } ﹜ ︸ 〈 ︿ 〉 ﹀ 《 ︽ 》 ︾ 「 ﹁ 」 ﹂ 『 ﹃ 』 ﹄ 【 ︻ 】 ︼ 〔 ﹝ ︹ 〕 ﹞ ︺ § @ @ ﹫ * * ﹡ " - "/ / \\\\ \ ﹨ \\& & ﹠ # # ﹟ % % ﹪ ‰ † ‡ ‧ ′ ″ ‵ 〃 ※]" + "[‾ ﹉﹊﹋﹌ _ _ ﹍﹎﹏ ︳︴ \\- - ﹣ ‐ ‑ – ︲ — ﹘ ︱ , , ﹐ 、 ﹑ ; ; ﹔ \\: : ﹕ ! ! ﹗ ? ? ﹖" + " . . ﹒ ‥ ︰ … 。 · ' ‘ ’ \u0022 " “ ” 〝 〞 ( ( ﹙ ︵ ) ) ﹚ ︶ \\[ [ \\] ] \\{ { ﹛ " + "︷ \\} } ﹜ ︸ 〈 ︿ 〉 ﹀ 《 ︽ 》 ︾ 「 ﹁ 」 ﹂ 『 ﹃ 』 ﹄ 【 ︻ 】 ︼ 〔 ﹝ ︹ 〕 ﹞ ︺ § @ @ ﹫ * * " + "﹡ / / \\\\ \ ﹨ \\& & ﹠ # # ﹟ % % ﹪ ‰ † ‡ ‧ ′ ″ ‵ 〃 ※]" } MoreInformation{"?"} NumberElements{ @@ -82,13 +90,22 @@ zh_Hant{ range{"{0}-{1}"} } patterns{ - accountingFormat{"#,##0.00 ¤"} - currencyFormat{"#,##0.00 ¤"} - percentFormat{"#,##0%"} + decimalFormat{"#,##0.###"} + scientificFormat{"#E0"} } symbols{ + decimal{"٫"} + exponential{"اس"} + group{"٬"} + infinity{"∞"} + list{"؛"} minusSign{"-"} nan{"非數值"} + perMille{"؉"} + percentSign{"٪؜"} + plusSign{"؜+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } arabext{ @@ -99,10 +116,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"٫"} + exponential{"×۱۰^"} + group{"٬"} + infinity{"∞"} + list{"؛"} + minusSign{"‎-‎"} nan{"非數值"} + perMille{"؉"} + percentSign{"٪"} plusSign{"+‎"} + superscriptingExponent{"×"} + timeSeparator{"٫"} } } bali{ @@ -113,9 +143,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } beng{ @@ -126,9 +170,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } brah{ @@ -139,9 +197,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } cakm{ @@ -152,9 +224,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } cham{ @@ -165,11 +251,26 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } + default{"latn"} deva{ miscPatterns{ atLeast{"{0}+"} @@ -178,9 +279,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } finance{"hantfin"} @@ -192,9 +307,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } gonm{ @@ -205,9 +334,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } gujr{ @@ -218,9 +361,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } guru{ @@ -231,9 +388,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } hanidec{ @@ -244,15 +415,21 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -265,9 +442,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } kali{ @@ -278,9 +469,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } khmr{ @@ -291,9 +496,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } knda{ @@ -304,9 +523,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } lana{ @@ -317,9 +550,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } lanatham{ @@ -330,9 +577,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } laoo{ @@ -343,9 +604,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } latn{ @@ -358,6 +633,7 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -480,11 +756,16 @@ zh_Hant{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} timeSeparator{":"} } @@ -497,9 +778,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } limb{ @@ -510,9 +805,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -532,9 +841,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } mong{ @@ -545,9 +868,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } mtei{ @@ -558,9 +895,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } mymr{ @@ -571,9 +922,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } mymrshan{ @@ -584,9 +949,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } native{"hanidec"} @@ -598,9 +977,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } olck{ @@ -611,9 +1004,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } orya{ @@ -624,9 +1031,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } osma{ @@ -637,9 +1058,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } saur{ @@ -650,9 +1085,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } shrd{ @@ -663,9 +1112,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } sora{ @@ -676,9 +1139,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } sund{ @@ -689,9 +1166,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } takr{ @@ -702,9 +1193,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } talu{ @@ -715,9 +1220,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } tamldec{ @@ -728,9 +1247,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } telu{ @@ -741,9 +1274,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } thai{ @@ -754,9 +1301,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } tibt{ @@ -767,9 +1328,23 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } traditional{"hant"} @@ -781,13 +1356,27 @@ zh_Hant{ patterns{ accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} + percentFormat{"#,##0%"} + scientificFormat{"#E0"} } symbols{ + decimal{"."} + exponential{"E"} + group{","} + infinity{"∞"} + list{";"} + minusSign{"-"} nan{"非數值"} + perMille{"‰"} + percentSign{"%"} + plusSign{"+"} + superscriptingExponent{"×"} + timeSeparator{":"} } } } - Version{"2.1.49.82"} + Version{"36"} calendar{ buddhist{ DateTimePatterns{ @@ -806,6 +1395,7 @@ zh_Hant{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"d日(E)"} Gy{"Gy年"} GyMMM{"Gy年M月"} @@ -813,6 +1403,7 @@ zh_Hant{ GyMMMd{"Gy年M月d日"} M{"M月"} MEd{"M/d(E)"} + MMM{"LLL"} MMMEd{"M月d日E"} MMMMd{"M月d日"} MMMd{"M月d日"} @@ -842,6 +1433,13 @@ zh_Hant{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } Hmv{ H{"HH:mm–HH:mm [v]"} m{"HH:mm–HH:mm [v]"} @@ -877,7 +1475,6 @@ zh_Hant{ d{ d{"d日至d日"} } - fallback{"{0} – {1}"} h{ a{"ah時至ah時"} h{"ah時至h時"} @@ -1983,6 +2580,7 @@ zh_Hant{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"d E"} Gy{"G y年"} GyMMM{"G y年M月"} @@ -1990,6 +2588,7 @@ zh_Hant{ GyMMMd{"G y年M月d日"} M{"M月"} MEd{"M/d(E)"} + MMM{"LLL"} MMMEd{"M月d日 E"} MMMMd{"M月d日"} MMMd{"M月d日"} @@ -2007,7 +2606,28 @@ zh_Hant{ yyyyQQQ{"G y年QQQ"} yyyyQQQQ{"G y年QQQQ"} } + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } Hmv{ H{"HH:mm–HH:mm [v]"} m{"HH:mm–HH:mm [v]"} @@ -2043,7 +2663,6 @@ zh_Hant{ d{ d{"d日至d日"} } - fallback{"{0} – {1}"} h{ a{"ah時至ah時"} h{"ah時至h時"} @@ -2115,6 +2734,21 @@ zh_Hant{ "12月", "13月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "1月", "2月", @@ -2147,6 +2781,21 @@ zh_Hant{ "12月", "13月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "1月", "2月", @@ -2182,7 +2831,6 @@ zh_Hant{ "{1} {0}", } availableFormats{ - E{"ccc"} Ed{"d日E"} Gy{"rU年"} GyMMM{"rU年MMM"} @@ -2190,7 +2838,6 @@ zh_Hant{ GyMMMd{"r年MMMd"} M{"MMM"} MEd{"M/dE"} - MMM{"LLL"} MMMEd{"MMMd日E"} MMMMd{"MMMMd日"} MMMd{"MMMd日"} @@ -2960,13 +3607,6 @@ zh_Hant{ } } intervalFormats{ - H{ - H{"HH至HH"} - } - Hm{ - H{"HH:mm至HH:mm"} - m{"HH:mm至HH:mm"} - } Hmv{ H{"HH:mm–HH:mm [v]"} m{"HH:mm–HH:mm [v]"} @@ -3194,6 +3834,7 @@ zh_Hant{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"d E"} Gy{"G y年"} GyMMM{"G y年M月"} @@ -3201,6 +3842,7 @@ zh_Hant{ GyMMMd{"G y年M月d日"} M{"M月"} MEd{"M/d(E)"} + MMM{"LLL"} MMMEd{"M月d日 E"} MMMMd{"M月d日"} MMMd{"M月d日"} @@ -3218,7 +3860,28 @@ zh_Hant{ yyyyQQQ{"G y年QQQ"} yyyyQQQQ{"G y年QQQQ"} } + eras{ + abbreviated{ + "ERA0", + "ERA1", + } + narrow{ + "ERA0", + "ERA1", + } + wide{ + "ERA0", + "ERA1", + } + } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } Hmv{ H{"HH:mm–HH:mm [v]"} m{"HH:mm–HH:mm [v]"} @@ -3254,7 +3917,6 @@ zh_Hant{ d{ d{"d日至d日"} } - fallback{"{0} – {1}"} h{ a{"ah時至ah時"} h{"ah時至h時"} @@ -3326,6 +3988,21 @@ zh_Hant{ "12月", "13月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "1月", "2月", @@ -3358,6 +4035,21 @@ zh_Hant{ "12月", "13月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + } wide{ "1月", "2月", @@ -3376,6 +4068,19 @@ zh_Hant{ } } } + ethiopic-amete-alem{ + eras{ + abbreviated{ + "ERA0", + } + narrow{ + "ERA0", + } + wide{ + "ERA0", + } + } + } generic{ DateTimePatterns{ "ah:mm:ss [zzzz]", @@ -3436,52 +4141,12 @@ zh_Hant{ yyyyQQQQ{"G y年QQQQ"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} } Hmv{ H{"HH:mm–HH:mm [v]"} @@ -3518,7 +4183,6 @@ zh_Hant{ d{ d{"d日至d日"} } - fallback{"{0} – {1}"} h{ a{"ah時至ah時"} h{"ah時至h時"} @@ -3830,53 +4494,6 @@ zh_Hant{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH – HH"} } @@ -3919,7 +4536,6 @@ zh_Hant{ d{ d{"d日至d日"} } - fallback{"{0} – {1}"} h{ a{"ah時至ah時"} h{"ah時至h時"} @@ -3990,6 +4606,20 @@ zh_Hant{ "11月", "12月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "1月", "2月", @@ -4020,6 +4650,20 @@ zh_Hant{ "11月", "12月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "1月", "2月", @@ -4038,12 +4682,6 @@ zh_Hant{ } quarters{ format{ - abbreviated{ - "第1季", - "第2季", - "第3季", - "第4季", - } narrow{ "1", "2", @@ -4096,6 +4734,7 @@ zh_Hant{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"d E"} Gy{"G y年"} GyMMM{"G y年M月"} @@ -4103,6 +4742,7 @@ zh_Hant{ GyMMMd{"G y年M月d日"} M{"M月"} MEd{"M/d(E)"} + MMM{"LLL"} MMMEd{"M月d日 E"} MMMMd{"M月d日"} MMMd{"M月d日"} @@ -4132,6 +4772,13 @@ zh_Hant{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } Hmv{ H{"HH:mm–HH:mm [v]"} m{"HH:mm–HH:mm [v]"} @@ -4167,7 +4814,6 @@ zh_Hant{ d{ d{"d日至d日"} } - fallback{"{0} – {1}"} h{ a{"ah時至ah時"} h{"ah時至h時"} @@ -4240,6 +4886,22 @@ zh_Hant{ "以祿月", "亞達月 II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "提斯利月", "瑪西班月", @@ -4274,6 +4936,22 @@ zh_Hant{ "以祿月", "亞達月 II", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "7", + } wide{ "提斯利月", "瑪西班月", @@ -4310,6 +4988,7 @@ zh_Hant{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"d E"} Gy{"G y年"} GyMMM{"G y年M月"} @@ -4317,6 +4996,7 @@ zh_Hant{ GyMMMd{"G y年M月d日"} M{"M月"} MEd{"M/d(E)"} + MMM{"LLL"} MMMEd{"M月d日 E"} MMMMd{"M月d日"} MMMd{"M月d日"} @@ -4346,6 +5026,13 @@ zh_Hant{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } Hmv{ H{"HH:mm–HH:mm [v]"} m{"HH:mm–HH:mm [v]"} @@ -4381,7 +5068,6 @@ zh_Hant{ d{ d{"d日至d日"} } - fallback{"{0} – {1}"} h{ a{"ah時至ah時"} h{"ah時至h時"} @@ -4452,6 +5138,20 @@ zh_Hant{ "磨祛月", "頗勒窶拏月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "制檀邏月", "吠舍佉月", @@ -4482,6 +5182,20 @@ zh_Hant{ "磨祛月", "頗勒窶拏月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "制檀邏月", "吠舍佉月", @@ -4516,6 +5230,7 @@ zh_Hant{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"d日(E)"} Gy{"Gy年"} GyMMM{"Gy年M月"} @@ -4523,6 +5238,7 @@ zh_Hant{ GyMMMd{"Gy年M月d日"} M{"M月"} MEd{"M/d(E)"} + MMM{"LLL"} MMMEd{"M月d日E"} MMMMd{"M月d日"} MMMd{"M月d日"} @@ -4552,6 +5268,13 @@ zh_Hant{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } Hmv{ H{"HH:mm–HH:mm [v]"} m{"HH:mm–HH:mm [v]"} @@ -4587,7 +5310,6 @@ zh_Hant{ d{ d{"d日至d日"} } - fallback{"{0} – {1}"} h{ a{"ah時至ah時"} h{"ah時至h時"} @@ -4658,6 +5380,20 @@ zh_Hant{ "都爾喀爾德月", "都爾黑哲月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "穆哈蘭姆月", "色法爾月", @@ -4688,6 +5424,20 @@ zh_Hant{ "都爾喀爾德月", "都爾黑哲月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "穆哈蘭姆月", "色法爾月", @@ -4722,6 +5472,7 @@ zh_Hant{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"d日(E)"} Gy{"Gy年"} GyMMM{"Gy年M月"} @@ -4732,6 +5483,7 @@ zh_Hant{ Hms{"HH:mm:ss"} M{"M月"} MEd{"M/d(E)"} + MMM{"LLL"} MMMEd{"M月d日E"} Md{"M/d"} d{"d日"} @@ -5471,6 +6223,13 @@ zh_Hant{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } Hmv{ H{"HH:mm–HH:mm [v]"} m{"HH:mm–HH:mm [v]"} @@ -5506,7 +6265,6 @@ zh_Hant{ d{ d{"d日至d日"} } - fallback{"{0} – {1}"} h{ a{"ah時至ah時"} h{"ah時至h時"} @@ -5579,6 +6337,7 @@ zh_Hant{ "{1} {0}", } availableFormats{ + E{"ccc"} Ed{"d E"} Gy{"G y年"} GyMMM{"G y年M月"} @@ -5586,6 +6345,7 @@ zh_Hant{ GyMMMd{"G y年M月d日"} M{"M月"} MEd{"M/d(E)"} + MMM{"LLL"} MMMEd{"M月d日 E"} MMMMd{"M月d日"} MMMd{"M月d日"} @@ -5615,6 +6375,13 @@ zh_Hant{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } Hmv{ H{"HH:mm–HH:mm [v]"} m{"HH:mm–HH:mm [v]"} @@ -5650,7 +6417,6 @@ zh_Hant{ d{ d{"d日至d日"} } - fallback{"{0} – {1}"} h{ a{"ah時至ah時"} h{"ah時至h時"} @@ -5721,6 +6487,20 @@ zh_Hant{ "11月", "12月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "1月", "2月", @@ -5751,6 +6531,20 @@ zh_Hant{ "11月", "12月", } + narrow{ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + } wide{ "1月", "2月", @@ -5826,6 +6620,13 @@ zh_Hant{ } } intervalFormats{ + H{ + H{"HH–HH"} + } + Hm{ + H{"HH:mm–HH:mm"} + m{"HH:mm–HH:mm"} + } Hmv{ H{"HH:mm–HH:mm [v]"} m{"HH:mm–HH:mm [v]"} @@ -5861,7 +6662,6 @@ zh_Hant{ d{ d{"d日至d日"} } - fallback{"{0} – {1}"} h{ a{"ah時至ah時"} h{"ah時至h時"} @@ -6780,12 +7580,6 @@ zh_Hant{ middle{"{0}、{1}"} start{"{0}、{1}"} } - standard-narrow{ - 2{"{0}和{1}"} - end{"{0}和{1}"} - middle{"{0}、{1}"} - start{"{0}、{1}"} - } standard-short{ 2{"{0}和{1}"} end{"{0}和{1}"} @@ -6816,36 +7610,4 @@ zh_Hant{ US{"美制"} metric{"公制"} } - parse{ - date{ - lenient{ - "[\\--/]", - "[\\:∶︓﹕:]", - } - } - general{ - lenient{ - "[.․。︒﹒.。]", - "['ʼ՚᾽᾿’']", - "[%٪﹪%]", - "[؉‰]", - "[\$﹩$]", - "[£₤£]", - "[¥¥]", - "[₩₩]", - "[₨₹{Rp}{Rs}]", - } - } - number{ - lenient{ - "[\\-‐‒–⁻₋−➖﹣-]", - "[,،٫、︐︑﹐﹑,、]", - "[+⁺₊➕﬩﹢+]", - } - stricter{ - "[,٫︐﹐,]", - "[.․﹒.。]", - } - } - } } diff --git a/source/data/locales/zh_Hant_HK.txt b/source/data/locales/zh_Hant_HK.txt index 890be45..70d6ca8 100644 --- a/source/data/locales/zh_Hant_HK.txt +++ b/source/data/locales/zh_Hant_HK.txt @@ -91,7 +91,7 @@ zh_Hant_HK{ } } } - Version{"2.1.47.86"} + Version{"36"} calendar{ buddhist{ availableFormats{ @@ -310,7 +310,6 @@ zh_Hant_HK{ "{1} {0}", } availableFormats{ - Ed{"d日E"} GyMMMEd{"Gy年M月d日E"} MEd{"d/M(E)"} MMMEd{"M月d日E"} @@ -336,6 +335,7 @@ zh_Hant_HK{ evening1{"晚上"} midnight{"午夜"} morning1{"早上"} + morning2{"上午"} night1{"凌晨"} } narrow{ @@ -344,6 +344,7 @@ zh_Hant_HK{ evening1{"晚上"} midnight{"午夜"} morning1{"早上"} + morning2{"上午"} night1{"凌晨"} } wide{ @@ -352,6 +353,7 @@ zh_Hant_HK{ evening1{"晚上"} midnight{"午夜"} morning1{"早上"} + morning2{"上午"} night1{"凌晨"} } } @@ -361,6 +363,7 @@ zh_Hant_HK{ afternoon2{"下午"} evening1{"晚上"} morning1{"早上"} + morning2{"上午"} night1{"凌晨"} } narrow{ @@ -368,6 +371,7 @@ zh_Hant_HK{ afternoon2{"下午"} evening1{"晚上"} morning1{"早上"} + morning2{"上午"} night1{"凌晨"} } wide{ @@ -375,6 +379,7 @@ zh_Hant_HK{ afternoon2{"下午"} evening1{"晚上"} morning1{"早上"} + morning2{"上午"} night1{"凌晨"} } } diff --git a/source/data/locales/zh_Hant_MO.txt b/source/data/locales/zh_Hant_MO.txt index a0fc4d8..707fe99 100644 --- a/source/data/locales/zh_Hant_MO.txt +++ b/source/data/locales/zh_Hant_MO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hant_MO{ %%Parent{"zh_Hant_HK"} - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/locales/zh_Hant_TW.txt b/source/data/locales/zh_Hant_TW.txt index 199c34f..21a680f 100644 --- a/source/data/locales/zh_Hant_TW.txt +++ b/source/data/locales/zh_Hant_TW.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hant_TW{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/locales/zu.txt b/source/data/locales/zu.txt index 9f6c000..d9f4b5b 100644 --- a/source/data/locales/zu.txt +++ b/source/data/locales/zu.txt @@ -19,8 +19,9 @@ zu{ " {nx} {ny} o p {ph} q {qh} r {rh} s {sh} t {th} {tl} {ts} {tsh} u v w x {xh}" " y z]" } - ExemplarCharactersNumbers{"[\\- , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} - ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . ( ) \\[ \\] \\{ \\}]"} + ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"} + ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"} + ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ( ) \\[ \\] \\{ \\}]"} MoreInformation{"?"} NumberElements{ default{"latn"} @@ -32,8 +33,9 @@ zu{ range{"{0}–{1}"} } patterns{ - accountingFormat{"¤#,##0.00"} + accountingFormat{"¤#,##0.00;(¤#,##0.00)"} currencyFormat{"¤#,##0.00"} + decimalFormat{"#,##0.###"} percentFormat{"#,##0%"} scientificFormat{"#E0"} } @@ -192,13 +194,18 @@ zu{ } } symbols{ + decimal{"."} exponential{"E"} + group{","} infinity{"∞"} list{";"} + minusSign{"-"} nan{"NaN"} perMille{"‰"} percentSign{"%"} + plusSign{"+"} superscriptingExponent{"×"} + timeSeparator{":"} } } minimalPairs{ @@ -213,7 +220,7 @@ zu{ minimumGroupingDigits{"1"} native{"latn"} } - Version{"2.1.48.17"} + Version{"36"} calendar{ generic{ DateTimePatterns{ @@ -283,53 +290,6 @@ zu{ yyyyQQQQ{"QQQQ y G"} } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH–HH"} } @@ -481,6 +441,10 @@ zu{ MEd{"MM-dd, E"} MMM{"LLL"} MMMEd{"E, MMM d"} + MMMMW{ + one{"'week' W 'of' MMMM"} + other{"'week' W 'of' MMMM"} + } MMMMd{"MMMM d"} MMMd{"MMM d"} Md{"MM-dd"} @@ -501,6 +465,10 @@ zu{ yMd{"y-MM-dd"} yQQQ{"QQQ y"} yQQQQ{"QQQQ y"} + yw{ + one{"'week' w 'of' Y"} + other{"'week' w 'of' Y"} + } } dayNames{ format{ @@ -653,53 +621,6 @@ zu{ } } intervalFormats{ - Bh{ - B{"h B – h B"} - h{"h–h B"} - } - Bhm{ - B{"h:mm B – h:mm B"} - h{"h:mm–h:mm B"} - m{"h:mm–h:mm B"} - } - Gy{ - G{"G y – G y"} - y{"G y–y"} - } - GyM{ - G{"GGGGG y-MM – GGGGG y-MM"} - M{"GGGGG y-MM – y-MM"} - y{"GGGGG y-MM – y-MM"} - } - GyMEd{ - G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"} - M{"GGGGG y-MM-dd, E – y-MM-dd, E"} - d{"GGGGG y-MM-dd, E – y-MM-dd, E"} - y{"GGGGG y-MM-dd, E – y-MM-dd, E"} - } - GyMMM{ - G{"G y MMM – G y MMM"} - M{"G y MMM–MMM"} - y{"G y MMM – y MMM"} - } - GyMMMEd{ - G{"G y MMM d, E – G y MMM d, E"} - M{"G y MMM d, E – MMM d, E"} - d{"G y MMM d, E – MMM d, E"} - y{"G y MMM d, E – y MMM d, E"} - } - GyMMMd{ - G{"G y MMM d – G y MMM d"} - M{"G y MMM d – MMM d"} - d{"G y MMM d–d"} - y{"G y MMM d – y MMM d"} - } - GyMd{ - G{"GGGGG y-MM-dd – GGGGG y-MM-dd"} - M{"GGGGG y-MM-dd – y-MM-dd"} - d{"GGGGG y-MM-dd – y-MM-dd"} - y{"GGGGG y-MM-dd – y-MM-dd"} - } H{ H{"HH – HH"} } @@ -1818,6 +1739,11 @@ zu{ middle{"{0}, {1}"} start{"{0}, {1}"} } + standard-narrow{ + 2{"{0}, {1}"} + end{"{0}, {1}"} + middle{"{0}, {1}"} + } standard-short{ 2{"{0} ne-{1}"} end{"{0}, ne-{1}"} @@ -1874,6 +1800,10 @@ zu{ "[,،٫、︐︑﹐﹑,、]", "[+⁺₊➕﬩﹢+]", } + stricter{ + "[,٫︐﹐,]", + "[.․﹒.。]", + } } } } diff --git a/source/data/locales/zu_ZA.txt b/source/data/locales/zu_ZA.txt index 87ba85a..a0c8d12 100644 --- a/source/data/locales/zu_ZA.txt +++ b/source/data/locales/zu_ZA.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zu_ZA{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/makedata.mak b/source/data/makedata.mak index 95964c8..ebd359d 100644 --- a/source/data/makedata.mak +++ b/source/data/makedata.mak @@ -12,11 +12,11 @@ ############################################################################## # Keep the following in sync with the version - see common/unicode/uvernum.h -U_ICUDATA_NAME=icudt64 +U_ICUDATA_NAME=icudt65 ############################################################################## !IF "$(UWP)" == "UWP" # Optionally change the name of the data file for the UWP version. -U_ICUDATA_NAME=icudt64 +U_ICUDATA_NAME=icudt65 !ENDIF U_ICUDATA_ENDIAN_SUFFIX=l UNICODE_VERSION=12.1 @@ -71,6 +71,7 @@ ICUSRCDATA_RELATIVE_PATH=..\..\.. # Timestamp files to keep track of current build state TOOLS_TS=$(ICUTMP)\tools.timestamp COREDATA_TS=$(ICUTMP)\coredata.timestamp +ARM_CROSSBUILD_TS= # ICUCOL # The directory that contains colfiles.mk files along with *.txt collation data files @@ -106,6 +107,8 @@ ICUDATA=$(ICUP)\source\data # !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" DLL_OUTPUT=$(ICUP)\binARM$(UWP) +!ELSE IF "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" +DLL_OUTPUT=$(ICUP)\binARM64$(UWP) !ELSE IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug" DLL_OUTPUT=$(ICUP)\bin64$(UWP) !ELSE IF "$(UWP)" == "UWP" @@ -113,6 +116,7 @@ DLL_OUTPUT=$(ICUP)\bin32$(UWP) !ELSE DLL_OUTPUT=$(ICUP)\bin$(UWP) !ENDIF +!MESSAGE ICU data DLL_OUTPUT path is $(DLL_OUTPUT) # # TESTDATA @@ -126,7 +130,7 @@ TESTDATAOUT=$(ICUP)\source\test\testdata\out # # TESTDATABLD -# The build directory for test data intermidiate files +# The build directory for test data intermediate files # (Tests are NOT run from this makefile, # only the data is put in place.) TESTDATABLD=$(ICUP)\source\test\testdata\out\build @@ -138,20 +142,39 @@ TESTDATABLD=$(ICUP)\source\test\testdata\out\build ICUTOOLS=$(ICUP)\source\tools !MESSAGE ICU tools path is $(ICUTOOLS) +# ARM_CROSS_BUILD +# In order to support cross-compiling for ARM/ARM64 using the x64 tools +# we need to know if we're building the ARM/ARM64 data DLL, otherwise +# the existence of the x64 bits will cause us to think we are already done. +# Note: This is only for the "regular" builds, the UWP builds have a separate project file entirely. +ARM_CROSS_BUILD= +!IF "$(UWP)" == "" +!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" +ARM_CROSS_BUILD=ARM +ARM_CROSSBUILD_TS=$(ICUTMP)\$(ARM_CROSS_BUILD).timestamp +!ELSE IF "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" +ARM_CROSS_BUILD=ARM64 +ARM_CROSSBUILD_TS=$(ICUTMP)\$(ARM_CROSS_BUILD).timestamp +!ENDIF +!ENDIF + # # TOOLS CFG PATH -# ARM needs to use one of the other tools, so make sure to get an usable cfg path +# Generally the tools want to run on the same architecture as is being built. +# Thus ARM and ARM64 need to use another build of the other tools, so make sure to get an usable cfg path. # Since tools, particularly pkggen, have architecture built-in, we made x64 on # Windows be machine-independent and use those tools. # +!IF "$(ARM_CROSS_BUILD)" == "" CFGTOOLS=$(CFG) -!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" +!ELSE CFGTOOLS=x64\Release !ENDIF !MESSAGE ICU tools CFG subpath is $(CFGTOOLS) + # The current ICU tools need to be in the path first. -# x86 uses x86, x64 and arm use x64 +# x86 uses x86; x64, arm, and arm64 use x64 !IF "$(CFG)" == "x86\Release" || "$(CFG)" == "x86\Debug" PATH = $(ICUP)\bin;$(PATH) ICUPBIN=$(ICUP)\bin @@ -190,9 +213,12 @@ COMMON_ICUDATA_DEPENDENCIES="$(ICUPBIN)\pkgdata.exe" "$(ICUTMP)\icudata.res" "$( COMMON_ICUDATA_ARGUMENTS=-f -e $(U_ICUDATA_NAME) -v $(ICU_PACKAGE_MODE) -c -p $(ICUPKG) -T "$(ICUTMP)" -L $(U_ICUDATA_NAME) -d "$(ICUBLD_PKG)" -s . !IF "$(UWP)" == "UWP" COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -u +!ENDIF !IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" -COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a +COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a ARM !ENDIF +!IF "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" +COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a ARM64 !ENDIF ############################################################################# @@ -204,6 +230,7 @@ COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a # Building the common dll in $(ICUBLD_PKG) unconditionally copies it to $(DLL_OUTPUT) too. # ############################################################################# +!IF "$(ARM_CROSS_BUILD)" == "" ALL : GODATA "$(ICU_LIB_TARGET)" "$(TESTDATAOUT)\testdata.dat" @echo All targets are up to date @@ -212,6 +239,11 @@ ALL : GODATA "$(ICU_LIB_TARGET)" "$(TESTDATAOUT)\testdata.dat" copy "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat" "$(ICUMAKE)\..\..\commondata\" !ENDIF +!ELSE +ALL : GODATA "$(ICU_LIB_TARGET)" "$(TESTDATAOUT)\testdata.dat" $(ARM_CROSSBUILD_TS) + @echo All targets are up to date + +!ENDIF # Three main targets: tools, core data, and test data. # Keep track of whether they are built via timestamp files. @@ -233,15 +265,16 @@ $(TOOLS_TS): "$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb.exe" "$(ICUTOOLS)\gencnval\$(C $(COREDATA_TS): @cd "$(ICUSRCDATA)" - py -3 -B -m buildtool \ + set PYTHONPATH=$(ICUP)\source\python;%PYTHONPATH% + py -3 -B -m icutools.databuilder \ --mode windows-exec \ --src_dir "$(ICUSRCDATA)" \ --tool_dir "$(ICUTOOLS)" \ --tool_cfg "$(CFG)" \ --out_dir "$(ICUBLD_PKG)" \ - --tmp_dir "$(ICUTMP)" + --tmp_dir "$(ICUTMP)" \ --filter_file "$(ICU_DATA_FILTER_FILE)" \ - $(ICU_DATA_BUILDTOOL_OPTS) \ + $(ICU_DATA_BUILDTOOL_OPTS) @echo "timestamp" > $(COREDATA_TS) @@ -378,6 +411,18 @@ icu4j-data-install : -@erase "$(ICUTMP)\$(ICUPKG).dat" !ENDIF +"$(ARM_CROSSBUILD_TS)" : $(COMMON_ICUDATA_DEPENDENCIES) "$(ICU_LIB_TARGET)" + @echo Building ICU data for "$(ARM_CROSS_BUILD)" from x64 + cd "$(ICUBLD_PKG)" + "$(ICUPBIN)\pkgdata" $(COMMON_ICUDATA_ARGUMENTS) $(ICUTMP)\icudata.lst + -@erase "$(ICU_LIB_TARGET)" + @if not exist "$(DLL_OUTPUT)" mkdir "$(DLL_OUTPUT)" + copy "$(U_ICUDATA_NAME).dll" "$(ICU_LIB_TARGET)" + -@erase "$(U_ICUDATA_NAME).dll" + copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat" + -@erase "$(ICUTMP)\$(ICUPKG).dat" + @echo "timestamp" > $(ARM_CROSSBUILD_TS) + # utility target to create missing directories # Most directories are made by Python, but still create ICUTMP # so it works in the source archive @@ -386,6 +431,7 @@ CREATE_DIRS : @if not exist "$(ICUTMP)\$(NULL)" mkdir "$(ICUTMP)" @if not exist "$(ICUOUT)\build\$(NULL)" mkdir "$(ICUOUT)\build" @if not exist "$(ICUBLD_PKG)\$(NULL)" mkdir "$(ICUBLD_PKG)" + @if not exist "$(TESTDATAOUT)" mkdir "$(TESTDATAOUT)" # utility target to send us to the right dir GODATA : CREATE_DIRS @@ -394,60 +440,11 @@ GODATA : CREATE_DIRS # This is to remove all the data files CLEAN : GODATA @echo Cleaning up the data files. - @cd "$(ICUBLD_PKG)" - -@erase "*.cnv" - -@erase "*.exp" - -@erase "*.icu" - -@erase "*.lib" - -@erase "*.nrm" - -@erase "*.res" - -@erase "*.spp" - -@erase "*.txt" - -@erase "*.cfu" - -@erase "curr\*.res" - -@erase "curr\*.txt" - -@erase "lang\*.res" - -@erase "lang\*.txt" - -@erase "region\*.res" - -@erase "region\*.txt" - -@erase "zone\*.res" - -@erase "zone\*.txt" - @cd "$(ICUBLD_PKG)\$(ICUBRK)" - -@erase "*.brk" - -@erase "*.res" - -@erase "*.txt" - -@erase "*.dict" - @cd "$(ICUBLD_PKG)\$(ICUCOL)" - -@erase "*.res" - -@erase "*.txt" - @cd "$(ICUBLD_PKG)\$(ICURBNF)" - -@erase "*.res" - -@erase "*.txt" - @cd "$(ICUBLD_PKG)\$(ICUTRNS)" - -@erase "*.res" @cd "$(ICUOUT)" - -@erase "*.dat" - @cd "$(ICUTMP)" - -@erase "*.html" - -@erase "*.lst" - -@erase "*.mak" - -@erase "*.obj" - -@erase "*.res" - -@erase "*.timestamp" - @cd "$(TESTDATABLD)" - -@erase "*.cnv" - -@erase "*.icu" - -@erase "*.mak" - -@erase "*.nrm" - -@erase "*.res" - -@erase "*.spp" - -@erase "*.txt" - @cd "$(TESTDATAOUT)" - -@erase "*.dat" - @cd "$(TESTDATAOUT)\testdata" - -@erase "*.typ" - @cd "$(ICUBLD_PKG)" - + -@erase "$(ICUOUT)\*.dat" + @rmdir $(ICUBLD) /s /q + @rmdir $(ICUTMP) /s /q + @rmdir $(TESTDATAOUT) /s /q # DLL version information # If you modify this, modify winmode.c in pkgdata. diff --git a/source/data/makedata.vcxproj b/source/data/makedata.vcxproj index b67c86f..ff44121 100644 --- a/source/data/makedata.vcxproj +++ b/source/data/makedata.vcxproj @@ -19,69 +19,26 @@ <_ProjectFileVersion>10.0.30319.1 - .\data\tmp\x86\ - .\data\build\ - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release clean all - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release clean - - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - .\data\tmp\x86\ - .\data\build\ - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug clean all - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug clean - - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - .\data\tmp\x64\ - .\data\build\ - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release clean all - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release clean - - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) - .\data\tmp\x64\ - .\data\build\ - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug clean all - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug clean - - $(NMakePreprocessorDefinitions) - $(NMakeIncludeSearchPath) - $(NMakeForcedIncludes) - $(NMakeAssemblySearchPath) - $(NMakeForcedUsingAssemblies) + .\data\tmp\$(Platform)\ + .\data\build\ + $(Platform)\$(Configuration) + + .\data\tmp\x86\ + x86\$(Configuration) + + NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=$(MakeCFG) + NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=$(MakeCFG) clean all + NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=$(MakeCFG) clean + + $(NMakePreprocessorDefinitions) + $(NMakeIncludeSearchPath) + $(NMakeForcedIncludes) + $(NMakeAssemblySearchPath) + $(NMakeForcedUsingAssemblies) - + - .\out\tmp\x86\ReleaseBuildLog.html - - - - - .\out\tmp\x86\DebugBuildLog.html - - - - - .\out\tmp\x64\ReleaseBuildLog.html - - - - - .\out\tmp\x64\DebugBuildLog.html + .\data\log\$(Platform)\$(Configuration)BuildLog.html @@ -93,7 +50,6 @@ - @@ -199,4 +155,4 @@ - \ No newline at end of file + diff --git a/source/data/makedata.vcxproj.filters b/source/data/makedata.vcxproj.filters index 4d3dae6..9623fd3 100644 --- a/source/data/makedata.vcxproj.filters +++ b/source/data/makedata.vcxproj.filters @@ -35,9 +35,6 @@ Make Files - - Make Files - Make Files diff --git a/source/data/makedata_uwp.vcxproj b/source/data/makedata_uwp.vcxproj index d8dbf20..ef51076 100644 --- a/source/data/makedata_uwp.vcxproj +++ b/source/data/makedata_uwp.vcxproj @@ -13,6 +13,10 @@ Debug ARM + + Debug + ARM64 + Release Win32 @@ -25,6 +29,10 @@ Release ARM + + Release + ARM64 + {B1D53358-37BD-48BC-B27C-68BAF1E78508} @@ -46,65 +54,20 @@ <_ProjectFileVersion>10.0.30319.1 - .\data\tmp\x86\ - .\data\tmp\x86\ - .\data\tmp\x64\ - .\data\tmp\x64\ - .\data\tmp\arm\ - .\data\tmp\arm\ - .\data\build\ - .\data\build\ - .\data\build\ - .\data\build\ - .\data\build\ - .\data\build\ - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release UWP=UWP - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release UWP=UWP clean all - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release UWP=UWP clean - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug UWP=UWP - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug UWP=UWP clean all - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug UWP=UWP clean - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release UWP=UWP - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release UWP=UWP clean all - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release UWP=UWP clean - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug UWP=UWP - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug UWP=UWP clean all - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug UWP=UWP clean - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Release UWP=UWP - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Release UWP=UWP clean all - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Release UWP=UWP clean - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Debug UWP=UWP - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Debug UWP=UWP clean all - NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Debug UWP=UWP clean + .\data\tmp\$(Platform)\ + .\data\build\ + $(Platform)\$(Configuration) + + .\data\tmp\x86\ + x86\$(Configuration) + + NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=$(MakeCFG) UWP=UWP + NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=$(MakeCFG) UWP=UWP clean all + NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=$(MakeCFG) UWP=UWP clean - - - .\out\tmp\x86\ReleaseUWPBuildLog.html - - - - - .\out\tmp\x86\DebugUWPBuildLog.html - - - - - .\out\tmp\x64\ReleaseUWPBuildLog.html - - - - - .\out\tmp\x64\DebugUWPBuildLog.html - - - - - .\out\tmp\arm\ReleaseUWPBuildLog.html - - - + - .\out\tmp\arm\DebugUWPBuildLog.html + $(OutDir)$(Configuration)UWPBuildLog.html @@ -116,7 +79,6 @@ - diff --git a/source/data/misc/icuver.txt b/source/data/misc/icuver.txt index 50ddd3a..2447a48 100644 --- a/source/data/misc/icuver.txt +++ b/source/data/misc/icuver.txt @@ -8,6 +8,6 @@ // *************************************************************************** icuver:table(nofallback){ - DataVersion { "64.2.0.0" } - ICUVersion { "64.2.0.0" } + DataVersion { "65.1.0.0" } + ICUVersion { "65.1.0.0" } } diff --git a/source/data/misc/langInfo.txt b/source/data/misc/langInfo.txt new file mode 100644 index 0000000..b13bedf --- /dev/null +++ b/source/data/misc/langInfo.txt @@ -0,0 +1,2691 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License +// Generated by ICU4J LocaleDistanceBuilder. +langInfo:table(nofallback){ + likely{ + languageAliases{ // 169 + "aam","aas", + "adp","dz", + "aju","jrb", + "alb","sq", + "als","sq", + "arb","ar", + "arm","hy", + "asd","snz", + "aue","ktz", + "ayr","ay", + "ayx","nun", + "azj","az", + "baq","eu", + "bcc","bal", + "bcl","bik", + "bgm","bcg", + "bh","bho", + "bjd","drl", + "bur","my", + "bxk","luy", + "bxr","bua", + "ccq","rki", + "chi","zh", + "cjr","mom", + "cka","cmr", + "cld","syr", + "cmk","xch", + "cmn","zh", + "coy","pij", + "cqu","quh", + "cwd","cr", + "cze","cs", + "dgo","doi", + "dhd","mwr", + "dik","din", + "diq","zza", + "dit","dif", + "drh","mn", + "dut","nl", + "ekk","et", + "emk","man", + "esk","ik", + "fat","ak", + "fre","fr", + "fuc","ff", + "gav","dev", + "gaz","om", + "gbo","grb", + "geo","ka", + "ger","de", + "gfx","vaj", + "ggn","gvr", + "gno","gon", + "gre","el", + "gti","nyc", + "gug","gn", + "guv","duz", + "gya","gba", + "hdn","hai", + "hea","hmn", + "him","srx", + "hrr","jal", + "ibi","opa", + "ice","is", + "ike","iu", + "ilw","gal", + "in","id", + "iw","he", + "jeg","oyb", + "ji","yi", + "jw","jv", + "kgc","tdf", + "kgh","kml", + "khk","mn", + "kmr","ku", + "knc","kr", + "kng","kg", + "knn","kok", + "koj","kwv", + "kpv","kv", + "krm","bmf", + "ktr","dtp", + "kvs","gdj", + "kwq","yam", + "kxe","tvd", + "kzj","dtp", + "kzt","dtp", + "lbk","bnc", + "lii","raq", + "llo","ngt", + "lmm","rmx", + "lvs","lv", + "mac","mk", + "mao","mi", + "may","ms", + "meg","cir", + "mhr","chm", + "mnk","man", + "mo","ro", + "mst","mry", + "mup","raj", + "mwj","vaj", + "myd","aog", + "myt","mry", + "nad","xny", + "ncp","kdz", + "nns","nbr", + "nnx","ngv", + "no","nb", + "npi","ne", + "nts","pij", + "ojg","oj", + "ory","or", + "oun","vaj", + "pbu","ps", + "pcr","adx", + "per","fa", + "pes","fa", + "plt","mg", + "pmc","huw", + "pmu","phr", + "pnb","lah", + "ppa","bfy", + "ppr","lcq", + "pry","prt", + "puz","pub", + "quz","qu", + "rmy","rom", + "rum","ro", + "sca","hle", + "scc","sr", + "scr","hr", + "skk","oyb", + "slo","sk", + "spy","kln", + "src","sc", + "swh","sw", + "tdu","dtp", + "thc","tpo", + "thx","oyb", + "tib","bo", + "tie","ras", + "tkk","twm", + "tl","fil", + "tlw","weo", + "tmp","tyj", + "tne","kak", + "tsf","taj", + "ttq","tmh", + "tw","ak", + "umu","del", + "uok","ema", + "uzn","uz", + "wel","cy", + "xba","cax", + "xia","acn", + "xkh","waw", + "xpe","kpe", + "xsj","suj", + "xsl","den", + "ybd","rki", + "ydd","yi", + "yma","lrr", + "ymt","mtm", + "yos","zom", + "yuu","yug", + "zai","zap", + "zsm","ms", + "zyb","za", + } // languageAliases + regionAliases{ // 38 + "062","034", + "172","RU", + "200","CZ", + "230","ET", + "280","DE", + "532","CW", + "582","FM", + "736","SD", + "830","JE", + "886","YE", + "890","RS", + "AN","CW", + "BU","MM", + "CS","RS", + "CT","KI", + "DD","DE", + "DY","BJ", + "FQ","AQ", + "FX","FR", + "HV","BF", + "JT","UM", + "MI","UM", + "NH","VU", + "NQ","AQ", + "NT","SA", + "PC","FM", + "PU","UM", + "PZ","PA", + "QU","EU", + "RH","ZW", + "SU","RU", + "TP","TL", + "UK","GB", + "VD","VN", + "WK","UM", + "YD","YE", + "YU","RS", + "ZR","CD", + } // regionAliases + trie:bin{ // BytesTrie: 9793 bytes +001a6dcc0b74c4e677c26077a2b378a4 +4e79a4bb7a0e6d7f7a5b7a30e1ad93e8 +2ef5af3710e1a539022a3c42cafd4811 +616e01e2a3fdf4a3f80b4d24540e54ca +a4552a5610cea3fb10d3a3fa4dcaad50 +2a5310d2a3f602c1a3f5c6a3f3c8a3f4 +47d4ba473248d81dff4910c4a3f001c2 +a3f9c6a3ee6d326e36733a7910e2ad93 +10e9af3510e5af3610ed22022aa90b43 +b4fd4910c4a90d671767326836693a6c +10edaf3410e8adc010f8adb010e1af33 +612e64326510e1af3210e7af3010eaaf +3100126d46741b743475387742e1ade4 +efadfb10edaf0001f5af01f6af0210e1 +af036d3c6e406f50725a7301e7ad80eb +adff10efadf702e3adf8e9adf9f5adfa +01e2adfcf3adfd10f3adfe6726673668 +3a693e6a4e6c10f3adf610e9adef10e7 +adf002e2adf1f5adf2f6adf301e1adf4 +e9adf56138625463646501eca520f2ad +ee04e5ade5eaade6ecade7eeade8f2ad +e902f0adeaf1adebf2adec10e9aded0c +6e3d7221722e7332774ee8af0710e2af +0d04e1adb8e9af0eeca52fedaf0ff2af +1010e5af116e346f3e7001e5a78cf2ad +b501e1adaef2af0a01e7af0beeaf0c65 +1d653a6c3e6d02e6af09eeada4f2ada7 +10f3af0602e1af08e3ada0e4ada1612e +62326310f2ad7010f6af0410e9af050d +6d49733073307534e9a733efaf2410f3 +af2904e1af2ae532eaaf2df4af2ef7af +2f012a2e4812616ef3af2c012aaf2b43 +10ceaf2c6d3a6f3e7202e2af26e5af27 +ecaf2810ecaf2310eeaf256520653e67 +426b4c6c02e5af20e7af21ecaf2210f2 +af1c01f2af1df7af1e10efaf1f612e62 +606410e4a73307f40cf4af15f6af16f9 +af17faaf18eda7b5efaf12f0af13f3af +1402e1af19e2af1af9af1b74a25275a4 +d0760a6f1fe509e5add7e9ad5eefaddf +6f3472387501eeade2f4ade310f4ade0 +10efade1613c654c69566c606d01e6ad +ddf7adde02e7add5e9adc5eeadd601e3 +add8f0add901e3addaf6addb10f3addc +00267576e91ff20ef2abc4f3abc8f4ab +cef767f9abdee9aba9ebabb0ecabb4ee +abbaefabbc7a247a36e1ab88e5ab9ae7 +2ee8aba510edabe1012a2e41127261e2 +aba1012aaba05010cbaba1753e765477 +6478ccce7901e1abdff6abe003e8abd5 +ecabd6edabd7f1abd802e4a7b8ecabd9 +f5abda01e8abdbf1abdc6b7d7049705e +716e727273827406f10cf1abb8f2abd2 +f3abd3f4abd4e4abcfe5abd0eaabd102 +e9abc0edabc1faabc210efabc302f5ab +c5f6abc6f7abc704e4abc9e6abcae7ab +cbeaabccf7abcd6b426c526d626e6c6f +02e6abbde7abbef1abbf02ecabb1f2ab +b2f4abb302e6abb5f8abb6f9abb701e8 +abb8f9abb910e8abbb6546655e667467 +7868886906eb0cebabacedabadefabae +f6abafe2a3b1e6abaae7abab03e4ab9b +edab9cefab9df4ab9e10e9ab9f02e3ab +a2efaba3f5aba402ecaba6f1aba7f2ab +a86144625a63866403e4ab96e7ab97e8 +ab98f5ab9903eaab89ecab8aeeab8bf1 +ab8c06e70ce7ab90efab91f7ab92faab +93e3ab8de4ab8ee6ab8f01e9ab94f9ab +950f735fe72ce742ebabe8f2ad46fa01 +2a8641127261e2add3012a2e43127972 +ecabe5022aabe44b2a4d10ceabe610da +abe57360746476687a10ee012a2e4112 +7261e2add3022aabf3412a4310ceadd4 +10c6add310e1adcf10f2add001e8add1 +ecadd26d326d3e6e426f707202e9adcc +f4adcdf7adce10e2abea01f226f8adca +012a2e44126576e1adc9012aadc84e10 +d0adc910ebadcb62326436673a6c10e9 +abe910f5abe210edabe310e1abe770c3 +9570a4f971a6d772a6e47300287884ec +39f229f509f5ab77f6ab7df7ab7ef22c +f3ab70f4ab7422032aab2a4da4bf522a +5410d2ab2e01cfab2dd5ab2becab52ed +ab57eeab5eefab64f16de429e438e5ab +3ae7ab3fe9ab48ebab4e032aab344432 +4b3a5312696ee4ab37126576e1ab3512 +686feaab367834793e7a48e1ab1ee3ab +2901eeab84f7ab8501ecab86f2a50c10 +ecab876cad724f725873747484758e77 +05e809e8ab7ef0ab82f6ab83e2ab7fe3 +ab80e7ab8104e2ab6de3ab29eeab6ef2 +ab6ff8a5f102e4ab71e7ab72f9ab7301 +ebab75f1ab7604e1ab78e5ab79ebab7a +f2ab7bf3ab7c6c4a6d666e8c6fa24370 +03e4ab6aecab6bf3ab6cf9a77404e4ab +53e9ab54ecab55efab4ef9ab5605f009 +f0ab5bf1ab5cf3ab5de1ab58eaab59ee +ab5a04e3ab5febab60f0ab61f8ab62f9 +ab6304e7ab65ebab66f1ab67f5ab68f9 +ab69673e67426858696e6a846b02e3ab +4ff2ab50f3ab5103e1ab40f3ab41f7ab +42faab4303e9ab44ebab45eeab46f5ab +4703e4ab49e7ab4aecab4bedab4c10f2 +ab4d614a6276638664a26b6503e6ab3b +e8ab3ce9ab3df3ab3e06f30cf3ab22f4 +ab23f6ab24faab25e6ab1fe8ab20f1ab +2102e1ab26e5ab27f0ab2806ee0ceeab +31efab32f2a5fff3ab33e32cebab2fec +ab3022055211522e53325410d2ab2e10 +cfab2d10d5ab2b2aab2a312a4d10c5ab +2c1137b2ab2b01e3ab38e8ab3900166e +63752bec09eca9e9f3a9daf4a9f6754c +7750e1012a2e41127261e2a9d2012aa9 +d15010cba9d210f5a9f810e1a9f97217 +722e733e7410f0a9f702e1a9f2e4a9f3 +e7a9f410f3a9f56e346f4a7001e1a9f0 +efa9f103e2a7c9e7a9eceea9edf4a9ee +10eea9ef66306b176b2e6c386d10f3a9 +eb01e1a9e7efa9e801e1a9eaf4a92c66 +3468386901eca9e5f0a9e610eca9e201 +eca9e3eea9e4614e627e638864926504 +e4a9dfefa9e0f2a570f3a570f8a9e104 +e7a9d3ec32eda9d6f0a9d7f5a9d8012a +a9d45012686cf0a9d501e9a9d9f5a9da +01e4a9dbeda9dc01e3a9ddf4a9de0175 +26f5a9fa02e3a9fbe7a9fcfaa9fa0014 +6f457917ef09efa949f5ab17f7ab1a79 +2cedab0aeeab0f10f5ab1d6f3c724c74 +5075547701ebab1befab1c02e2ab12e6 +ab13efab1410efab1510edab1602e5ab +18e7ab19eda9496934693c6a566b5a6d +5e6e01e1ab10e7ab1101e1ab05e62201 +2aab064e10ccab0710f3ab0810f4ab09 +03e6ab0befab0cf4ab0df5ab0e613663 +46654a675a6810e7ab0402e9a9fdeaa9 +5eefa9fe10e6a9ff02eaab00ecab01f3 +ab0210eeab036da2576ea6446f0b741d +ed09eda5a1f2a9c9f3a9cc742a7a34e3 +a9c101e1a9ceeba9cf10eda9d0701770 +2e72327310e1a9cd10eda9c802efa9ca +f5a9cbf9a9c9673a6b3e6e02e7a9c5ee +a9c6f3a9c710e3a9c201f2a9c3f6a9c4 +0022749fe926ef0fefa949f2a954f3a4 +92f4a958f9a3cee9a908eba902eca93e +ee012abab24d126f6ee7a540783d7834 +793e7a64e7a92ce8a93201e3a967eda9 +6805f709f7a96cf8a96dfaa96eeba969 +eda96af6a96b05f009f0a972f7a973fa +a974eba96feda970eea9717444755a76 +707703eba964f2a537f6a965f7a96603 +e3a959e6a95ae9a95bf2a95c03e1a95d +f0a95ef2a95ff3a96002e1a961eea962 +f9a96369856e446e426f5e707a719072 +02e4a955eaa956efa95704e1a945e6a9 +46e9a947ebb603f7a94804e1a94ae5a9 +4be8a94cf3a94df8a94e03f0a94ff3a9 +50f4a951f8a95210eca953693e6b686c +7e6d02efa942f5a943f8a94403e6a935 +eea936f326f7a939012aa9374d126564 +e6a93803e9a93aeca93bf0a93cf7a93d +02e5a93ff0a940f3a9416549653e666a +67866802e9a933eca934f2a3ff06ee0c +eea923f2a924f4a925f5a926e4a920e5 +a921eba92204e1a927e5a928eea929ef +a92af1a92b04e8a92deca92eefa92ff0 +a930f9a931615e62a25663a2636406e8 +0ce8a91ceaa91df2a91ef8a91fe1a919 +e5a91ae6a91b0bee23f718f7a90af926 +faa90e22022aa90b432a4910c4a90d10 +c3a90ceeb414efa908f3a909e709e7a9 +05e9a906eba907e3a902e4a903e6a904 +04e8a90fefa910f1a911f5a912f7a913 +04e9a914f0a915f1a916f2a917f5a918 +0021745fe41dee0feea99fefa9a5f2a9 +acf6a9b9f9a9bde4a984e5a987e7a98c +eca54c791579307a3ae1a975e2a97d01 +eda9beeea9bf10e9a9c074387542775e +7801f1a9bbf2a9bc01eda9b2f2a9b304 +e9a9b4f0a9b5f3a9b6f6a9b7f8a9b810 +e2a9ba6a5d6f326f4870647168726c73 +03eba9aeeea9afefa9b0f3a9b104e4a9 +a6e5a9a7eea9a8f0a9a9f5a9aa10e9a9 +8710efa9ab10e2a9ad6a4a6b4e6d586e +04e6a9a0e8a9a1eba9a2eda9a3f0a9a4 +10efa99a01e7a99befa99c01e7a99dfa +a99e6637665a675e686e6906ee0ceea9 +96f5a997f9a998faa999e6a993e9a994 +eaa99510f2a98b02e1a98de2a98eeca9 +8f02e2a990e5a991f7a992613e636a64 +906502e2a988f7a989f8a98a06ee0cee +a979f0a97af1a97bf3a97ce3a976e6a9 +77eba97805e809e8a981efa982f5a983 +e1a97ee5a97fe6a98001e3a985f3a986 +66c73c69c48269a4166aa4c46ba60e6c +001b744ae717ef0cefa7f0f4a7f8f5a7 +faf6a7fee7a7dae9a7dceea7ed771577 +307a34e1a7c5e2a7cc10eca7ff01e8a9 +00faa901742e75327610f3a7fe10e7a7 +f903e1a7fbefa7fcf9a3d5faa7fd6a4a +6d316d326e426f4c7210e3a7f702eea7 +eaefa7ebf0a7ec01f3a7eef5a7ef05f2 +09f2a7f4f3a7f5faa7f6eaa7f1eba7f2 +eca7f36a346b386c01e5a7e8eea7e910 +f0a7e501e9a7e6f4a7e76448646c6570 +679c6906e70ce7a7e1e8a7e2eaa7e3f3 +a7e4e1a7dde4a7dee6012aa7df4c1269 +6de2a7e010e2a7d206f00cf0a7d6f1a7 +d7f5a7d8faa7d9e4a7d3e5a7d4eda7d5 +10e7a7db6134625a6301eda7d0f0a7d1 +05e809e8a7c9eaa7caf3a7cbe2a7c6e4 +a7c7e7a7c802e5a7cdf5a7cef7a7cf00 +197739eb17f30cf3a70df4a725f5a719 +f7a726eba568eea720efa722e409e4a7 +0fe7a714e9a717772a7a34e1a70601ed +a727f3a72801e8a729e9a72a6a366d17 +6d326e366f3a7210e9a72410efa71f10 +e8a72110f5a7236a2e6b326c10efa71e +10eaa71804e5a719eba71af4a71bf7a7 +1cf8a71d641a643466446701e2a715e5 +a71602e4a710e9a711f5a71210e5a713 +613a62446302e1a70ce5a70de8a70e01 +eea707f2a70802e1a709e2a70af9a70b +0b721ae909e9a733f6a739f7a73a722a +752ee1a72b10e1a73710f4a738671767 +34693e6d01e3a735eca73601eba731ef +a73210e2a734612e62386510eea73001 +e2a72ceda72d01efa72ef5a72f002875 +c0e4eb71f23cf628f6a790f7a7b2f902 +2a32414c4c126174eea7bf022aa7bd43 +2a5410d2a7bf10cea7be127261e2a7be +f2a783f3a79cf5012aa45941127261e2 +a77eeb38eca773eda778eea782efa787 +012a2e41127261e2a76e042aa76c4132 +4336493a4d10cea77010c6a76d10cea7 +6e10d2a76f7a187a38e1a5b0e7a757e9 +a763eaa76702eaa7c2f2a7c3f4a7c475 +3c766e777e788e7901e5a7c0f8a7c107 +ed0ceda7abeea7acf0a7adf3a7aee2a7 +a7e4a7a8e5a7a9eaa7aa02e7a7aff2a7 +b0f8a7b102eaa7b3efa7b4f1a7b506ed +0ceda7b9f0a7baf7a7bbfaa7bce1a7b6 +e3a7b7e5a7b86bc0cd7063704a717072 +8673a2457403e2a7a3eda7a4efa7a5f2 +a7a605f209f2a78ff6a790f8a791e5a7 +8ce6a78defa78e03e2a792e6a793f3a7 +94f9a79505ec09eca799f3a79af5a79b +e3a796e9a797eaa79805e809e8a7a0ea +a7a1f2a7a2e2a79de4a79ee6a79f6b50 +6c5a6d706ea24f6f04e9a788eba785ec +a789f3a78afaa78b01e3a771eaa77203 +eea774f1a775f4a776f8a77706f21ef2 +32f3a77ff5a780f7a781012a2e411272 +61e2a77e012aa77c4c10c2a77de2a779 +e8a77aefa77b04e3a783e6a784e7a757 +eea785f0a786665266486758686869a0 +6a03e4a768e7a769f3a76af9a76b02ef +a754f2a755f9a75602e5a758e6a759f0 +a75a08f10ff1a75ef3a75ff4a760f7a7 +61faa762e1a75be2a75cebac80eea75d +02eaa764f5a765f7a76661446276639c +64a2486502e1a751eea752faa75307e9 +0ce9a73feaa740eda741efa742e1a73b +e2a73ce3a73de4a73e05f109f1a746f8 +a747f9a748e4a743eda744f0a74503e7 +a749eba74aeca74bf4a74c03e5a74de8 +a74eeca74ff4a75066a2b567a46a6800 +137539f20ff2a5fff4a702f5a703f9a3 +42faa7057536e13ae5a5e9e9a5ebefa5 +fb10e9a70422032aa5df372e43345310 +c4a5e01133b6a5e010cda5e16c386c3c +6d466e506f6c7301e2a700eea70101e1 +a5f2f5a5f301e4a5f4f4a5f504e4a5f6 +e5a5f7eaa5f8eea5f9efa5fa02e3a5fc +eaa5fdf4a5fe615862746478687c6905 +e809e8a5efeca5f0eda5f1e1a5ece6a5 +ede7a5ee04e7a5e2eba5e3eda5e4f7a5 +e5faa5e610e2a5e710f9a5e810f9a5ea +00117553e90fe9a57aeaa57eefa581f2 +a587f9a59675427694e1a570e6012aa5 +764112646ceda57709e80fe8a590f1a5 +91f2a592f6a593f9a594e2a58ce332e4 +a58de5a58ee6a58f012aa5764112646c +eda57710f2a5956d2f6d4e6f52706271 +667204e3a588e5a587f0a589f2a58af3 +a58b10f0a58002e4a582eea583f2a584 +10e5a58510f3a5866132665669606c10 +f2a57f05e908e9a574eea575f467e1a5 +71e2a572e7a57301e9a578eda57902e1 +a57beca57cf4a57d001a6e9f791dec0c +eca5bceea5c0f5a5d0f6a5d8792ce1a5 +97e4a5a901e1a5a2e9a5de733a733e75 +4276747702e3a5dbe9a5dcf4a5dd10f7 +a5cf07f20cf2a5d4f7a5d5f8a5d6faa5 +d7e2a5d1e3a5d2e4a5d3e7a5c002e6a5 +d9f2a5b3f3a5da6e5a6f6a7204e2a5a5 +e332e5a55bf4a5cdf7a5ce012aa5cb4c +12696ee2a5cc02e4a5c1e7a5c2efa5c3 +07ee0ceea5c3f2a5c8f3a5c9f4a5cae4 +a5c4e6a5c5e9a5c6eda5c767396a236a +386b486c526d01eda5bef6a5bf02eba5 +b7eea5b8f5a5b901eea5baf0a5bb10eb +a5bd673468386901eca5b5eda5b610ee +a5b310f3a5b46428642e653e6610eba5 +b202e5a5aaeea5abf2a5ac05ef09efa5 +b0f2a52dfaa5b1e2a5adeaa5aeeca5af +612e626c6310f2a5a809ed0feda59dee +a59ef7a59ff9a5a0faa5a1e1a598e6a5 +99e7a59ae8a59beaa59c05ef09efa5a5 +f9a5a6faa5a7e1a5a2e6a5a3eda5a463 +c2ef63a29d64a4f9650011772dee19ee +38efa564f3a566f4a559f5a366012aa5 +6053126861f7a56177307834e5a554ec +a55b10efa56e10f4a56f6d466d486e7a +728473887403f2a56af4a56bf5a56cf8 +a56d02e1a55ce9a55deb012a2e4e126b +6fefa55f012aa55e4710cea55f01eea5 +62f1a56310e9a56502e7a567eba568f5 +a569623e664267466b02e1a558eba559 +f9a55a10f5a55310e9a55501eca556f9 +a557001b725ce821f316f3a519f52cf6 +a51ff9a520012aa51d47126c61e7a51e +e8a3eaefa50ff2a512771277307a34e1 +a3e1e5a3e610e4a51210e5a519722e73 +547410e4a51c05ec09eca516eda517f3 +a518e8a513eaa514eba51501e2a51af7 +a51b69526c306c326d3c6f6c7010f3a5 +1101e1a50be4a50c02e5a50de7a50eee +022aa26342a2b44811616e01e2a3fdf4 +a3f810f0a51069406a446b03e2a507ec +a508efa509f9a50a10e3a50302e1a504 +eda505f6a506659565a28666a28767a2 +886805ef09efa500f0a501f2a502e92c +eba3feeda3ff022a3c42a25f4811616e +01e2a3fdf4a3f80b4d335417542e5538 +5610c4a3fb01c8a3f7d7a3f801cba3f9 +d3a3fa4d2e50385310d2a3f601cfa3f1 +d9a3f202c6a3f3c8a3f4daa3f5470e47 +3048b4544910c4a3f010c6a3ee2aa3eb +412a4210cea3ed10d5a3ec126f70efa3 +fc10e2a3e710e1a3e810e7a3e9613462 +386301e8a3e4f0a3e510eea3e210eaa3 +e30016726f791ce508e5a52df6a54dfa +45792a7a34e1a52101efa550f5a55110 +e7a552751d752e764a7710f7a54f04e1 +a548e3a549e4a54ae7a54bf4a54c10e1 +a54e724073747403eda544f0a545f3a5 +46f9a54702e82ce9a541f3a542012a2e +4d126f6ee7a540012aa53f4310cea540 +10e2a54367446a1a6a406e446f03e2a5 +3ce9a534f0a53df7a53e10e5a53a10ea +a53b673468606901e1a538f1a53906ec +0ceca533efa534f2a535faa536e1a530 +e8a531e9a53210e4a537613c62686372 +64766501e4a52eeea52f06e80ce8a525 +eba526f2a527f6a528e4a522e6a523e7 +a52401e4a529f1a52a10e3a52b10eea5 +2c2aa4f761be8062002373a5e51ded0f +eda3a8eea3adefa3b1f2a3baf3a3bfe5 +a37ce7a389e8a38de9a3937741773278 +3c794c7a72e1a36201e4a3d2f2a3d302 +e8a3d4eba3d5f2a3c705f309f3a3d9f6 +a3daf8a3dbe5a3d6eea3d7f2a3d804e1 +a3dce5a3dde6a3dee8a3dff7a3e07332 +744875587610e2a3d103eaa3c0f1a3c1 +f3a3c2f4a3c302efa3c4f4a3c5f6a3c6 +09ed0feda3ccefa3cdf2a3cef3a3cff5 +a3d0e1a3c7e3a3c8e4a3c9e7a3caeba3 +cb6a7d6e3b6e486f587068716c7203e1 +a3bbe8a3bcf8a3bdfaa3be02e7a3aeed +a3aff0a3b002eaa3b2eda3b3eea3b410 +f9a3b503e3a3b6e9a3b7f0a3b8f6a3b9 +6a466b786ca4a36d03e8a3a9eba3aaf1 +a3abf5a3ac07ef0cefa39ef2a39ff4a3 +a0faa3a1e8a39ae9a39beaa39ceea39d +04e3a3a2eda3a3f1a3a4f5a3a5f6a3a6 +656a6562669467a24468a24b6906ed0c +eda396eea397efa398f1a399e2a394e7 +a395eba37507f40cf4a381f7a382f8a3 +83faa384e6a37de8a37eeaa37feda380 +03e4a385f1a386f4a387f9a38802e3a3 +8aeea38bf8a38c05ec09eca391efa38d +f9a392e2a38ee7a38fe9a39061326264 +63906410e4a37b07f20cf2a367f3a368 +f6a369f8a36aeca363eea364f0a365f1 +a36606e40ce4a36eeaa36ff0a370f2a3 +71e1a36be2a36ce3a36d09ed0feda376 +eea377efa378f1a379f5a37ae3a363e6 +a372e8a373e9a374eca37500184dc25d +54c0c2572e5736584e59645a12616ee2 +adc701612c631168efa9a41172e1adc6 +01702a731175f8691165efa9e0126969 +e9a717543455a28756126169e9adc505 +6746674a68506901622a7210e8adc410 +f4012aa3b14210d445116ce7adc11061 +01e158e9042aaba543324b364c3a5410 +c8aba510cea7d110c8adc210c1adc301 +2aa54d4d10d6a54d6130657c66116ee7 +adc0056d116d2e6e327610f4a3a710ec +ab8810e7abdd67346b386c01e5ab96f5 +a75c10e2adbe10f2adbf116cf5ab9a12 +6761f2abe750c0c350a27252a2a85306 +694369426f6a759079016c2a7210e3a5 +0c10efadbd01643e6e01e4ab37e8012a +ab484c10cbab4810e4adba02672e7238 +7910efa50e01e4ab65efadbb10e1ab6d +116ee4adbc613e675e6801612a7210e4 +adb910f7a561026d2e72327510f2ab25 +10f2ab5b10e2adb8116ef7a34b046138 +654a68506c76721174e9adb5016c2a75 +10e3a51c10eda11172edadb302612e6c +326e10f8a9e410e7adb401e9a9d4f0a9 +d51172e4a5f4026a306f3675116ef2a9 +a8116ee7adb61168e7adb74d7c4ea2a4 +4f0367426c48724e7301672a6d10e1ad +b210e5a9cd1161edab401163ebadb101 +6b2a7910e1a9c910e8a9cf07722e725a +7460756679116df2032aa3ce492e4d32 +5410c8adac10cea76010cda3ce116fef +a9571165e9adaa116cf4adab61426574 +6c9a6f01642a6e10e7a54010e9ada903 +68326b366e3a7210e3ada510eaada210 +e1ada301e4a96ee9ada40264346e3872 +01e3ada7efada810e6a93810e4ada611 +79eda93e046138624c65506b56731168 +f5adb0016e2a7210e2adae10e4adad11 +61f49f1177e1adaf116fefa55f47c40d +4ac3214aa6ba4ba6d34c03614665a696 +69a6987901632a6410e9ada110e9ada0 +026ea6736fa6747410ee001a4bc13954 +5b571457ac5458ac5859305a01c1abef +d7ab5e10d4ad62544055825603c1ad5d +c5ad5fcead5ed5a3930bce14d609d6ab +d9d7abc6daab7ecead9ecfabbcd2abc4 +cbc5b8cbabb1ccad59cdabb004c1ad9f +c7ad5bd3a560d9ad5cdaabf34e824e8a +50a24a52a26d530cce17d40cd4ad53d5 +a799d6ad54d9ad9dcead51cfab64d2ad +52ca09caad4fcbab4ecdad50c3ad4ec5 +ab7dc9ab5206c70cc7abebc9ad41cca5 +4ccfa97dc1ad3ec3ad3fc5ad400acc14 +d409d4ad4ad7a9d8d9a5c0cca9e9cdad +47d2ad48c1ad43c5ad44c6ad45c7abc0 +c8a57c03c5ad4dcfa949d5a799d7ab1a +4b9e4ca2434d0010cd1dd40fd4a958d5 +a928d8abedd9a90bdaad3dcda73dcfad +9bd1ad3bd2ad9cc60cc6ad3ac7a92ccb +ad9acca3a8c1ad99c3ad38c4ad39c5ab +2c01c5ad2dcdad9804c9ad33d3ad34d4 +a7f8d5ad35d6a7fe43bd465f464c475c +48a2484904c3ad2ac4a70fd2ad97d3a7 +0dd4a72502c9a57acfa581d2a5870cce +17d30cd3ad25d4ad26d5abf2d7ad27ce +ad22d0ad23d1ad24c608c6ad21c867cc +a773c1ad20c2abf5c5ad9604cdad28ce +ad29d2a5ffd4a702d5a703435244a242 +4505d309d3a566d4ad90daad1fc1ad1b +c3ad1cc5a5590fcf1ad60cd6ad16d7ab +f7d9ad94daa519cfad13d0ad14d2ad15 +d5abf0c9c676c9ad10ccad11cdad12ce +ad9305cb09cba521cfad19daad95c5a5 +2dc7ad4ccaad18345e34ae714178420b +ce14d209d2a9f6d5a73dd6ad0ccead09 +cfad0ad1ad0bc909c9ab0fcaad07ccad +08c1a3bfc5ad04c6ad050cd217d50cd5 +abecd7ad02d8ad03daa35ed2abffd3ad +00d4ad01cd09cdad92cfabfdd1abfec4 +abfac6ad91cc6d2aa560312c321133b0 +ad901137b2a79910e1a9a610ef012aa7 +f04c10c1a7f01170e3a7d6026d2e6e32 +7310f5a7e410e2a7e001e1a7c6e2a5cc +01613a701161ee012aa72b4a10d0a72b +016d2a7610e1ad8d10efad8c04613868 +4c6e7a6f80741168e9ad8f016c2a6e10 +e1ad8e10e9a55a02612e6d326f10eaab +3610f2a9f210f2012aa7784b10c8a778 +1164e1a7821172e5012aa7874b01d0ad +2fd2a787473448a25c49127461eca56b +0465466c5a6f60727a75016a2a7210f5 +a9d110f2a5d0116ff2012aa5b04710c5 +a5b01161e7a51e016e2a7410e8a5ca01 +e7ad80eda5670161506510eb032aa55b +432e47325410d2a38c10d9ad1710d2a5 +5b10eead81056c186c306d3675116ee7 +ad8b1175f7a5f3106e01e7a5f8f0a966 +6130659c691172e1ad8a016e2a7410f2 +a93705ef24efad84f34cf4032aa3f848 +2e4d325410d7a3f810cba3ef10cfa3f1 +012aa3eb4310cea3ebe2a3fde7ad82e9 +ad831162f2054917493a533e5502c1ad +88cbad86d3ad8910cca5e910c5ad872a +a5e9432a4710c2ad8610c1ad8543c0f9 +437044a2b9450267406c46741168e901 +2a754501d2ad1ed4751179f0a5570162 +2a7910edad7f10e1ad7e0461a26868a2 +776fa28070a282791172ec0a4d335414 +542e55385810cbad7801caaba0d2ad77 +10c1abe84d2e523e5310cbad7602c4ad +74cba902cea53f02cfad75d3ab2ad5ab +172aab174138423c474c4b01c7a7bdda +ad3110ccad7102c1ad72c7a389d9a37c +01c52dd2ad73026b2e6e327210e9ad70 +10eda3e510f3a51201612a6510f2a502 +10eda5051170f4a5101172f4a5cb0265 +306f82751170ecad7d1176e106491749 +324d364e3a5010cba3c610cea5eb10d5 +ad7b10d0a9872aa5eb422a4610caad7a +10d4ad791167f2ad7c2aa25441aa3142 +056f1f6f3e72447501672a6810e4ad6f +10e9ad6e1170efa3fc106101e8a9e7e9 +ad6d6130655c68116bf3ad6c036c326d +36733a7410ebad6b10e9ad6a10f5a36a +10f3a3c1116ee7012aa3ad4210c4a3ad +00214ac1c052c0cc5638563c57585862 +59665a01d2abeed7ab5e04c1ad5dc4ad +5ec5ad5fcead5ed5a39301c6ad60d3ab +5710cbad6103c4abf9c5abf9d4ad62d5 +ab2a5246536c54a2575503c1abe8c7ad +5bd9ad5cdaabf305d309d3ab2ad5ab17 +d7ab1ac5ad4dc8ab5ecfa9490ecd1ad4 +0cd4ad53d5ab17d6ad54d9ad55cdad50 +cead51cfab64d2ad52c50cc5ab7dc9ab +52caad4fcbab4ec1abf4c3ad4ec4abf8 +0ecd1ad20cd2abc4d6abd9d7a3f8daab +7ecdabb0cead5acfabbcd0ad59c80cc8 +aba5caaba0cbabb1ccad59c4ad56c6ad +57c7ad584e644e404fa89650785102c1 +ad4bcfad4cd5abf509cc0fcca54ccfa9 +7dd0a987d1abfed4abf4c1ad3ec3ad3f +c5ad40c8a393c9ad410dcd17d40cd4ad +4ad7a9d8d9a5c0daad43cdad47d2ad48 +d3ad49c70cc7abc0c8a57ccbad46cca9 +e9c1ad43c5ad44c6ad454aa2484ba24c +4ca2644d0012ce20d50fd5a928d6a54d +d8abedd9a90bdaad3dcea53fcfa3f1d1 +ad3bd2ad3cd4a958c60fc6ad3ac7a92c +cba902cca3a8cda3cec1ad37c3ad38c4 +ad39c5ab2c01cfad2cd0a72b07d00cd0 +ad2fd2a787d7ad30daad31c5ad2dc7a7 +bdc8a778cdad2e08d30fd3ad34d4a7f8 +d5ad35d6a7fed9ad36c1a7f0c2ad32c9 +ad33cbab4841c1604598456a46a24147 +a24e48a2754907d10cd1ad2bd2a570d3 +a70dd4a725c3ad2ac4a70fcca5e9cea5 +eb09d20ed2ad1ed3a566d475d5abf5da +ad1fc1ad1bc3ad1cc5a559c79bc8ad1d +04c9a57acfa581d1abfed2a587d8a587 +0bd014d309d3ad25d4ad26d7ad27d0ad +23d1ad24d2a55bc808c867cca773cead +22c1ad20c5a5b0c6ad2106d20cd2a5ff +d4a702d5a703d6ad05cba3efcdad28ce +ad29415e42a24c43a2834406cb0ccba5 +21cfad19d9ad07daad1ac4a52dc5a52d +caad180dd117d40cd4ad01d7ad02d8ad +03daa35ed1abfed2abffd3ad00cc0bcc +6dcda342ceabf7cfabfdc4abfac5abfb +c6abfc0010cc1cd20ed2a9f6d445d5a3 +ced6ad0cd9a37cccad08cead09cfad0a +d1ad0bc70cc7a389c8ad06c9ab0fcaad +07c1a3bfc4a3adc5ad04c6ad050010cf +1dd50fd5abf0d6ad16d7abf7d9ad17da +a519cfad13d0ad14d2ad15d3ab2ac90c +c9ad10ccad11cdad12cea3ebc4abeec6 +ad0dc7ad0ec8ad0f342234423548374e +3801382a3910b0ab2a10b6abf91131b9 +abf61133b2abf71133b6abf82aa56030 +5031a26b3202302e33383810b0a52d01 +b0a519b2abeb10b0750533233334354a +3601b1ab57b2a5eb03b0a3ebb4a5ebb5 +a70fb9a72502b3abecb4abf1b7abf230 +34314a3201b1a560b9abf003b2abebb3 +a560b5a9f6b9abec06b50bb59bb7abee +b8abefb9a560b1abebb3abedb4ab7e02 +342e353e3710b2ab1702b2a3ebb3abf3 +b5abf403b0ab17b1ab17b4abf5b5a52d +046436673c68427246761173f44b116c +eda5771168e2ad63116fed6301613c6d +01e99dee012aa3424110cda34210e200 +134c625131513c53405450556a5901c5 +abf9d4ab7f10c1ad4b02c1abf4c4abf8 +d9ad5504c791c8a927caad68cead5ad2 +ad6910cbad644c3c4d464e624f665001 +cbad46d3ad4901c2ad32d9ad3604c1ad +37cdab04cea770d2ad3cd5ad6610c7ad +6710cdad42452e4542474a494e4a644b +02c8a504cdad2ed7ad3001c79bc8ad1d +10c2ad6403c4a90dcead65d1ad2bd2a5 +7010cfad2c2a9b4132423c43464410da +ad1a01c5abfbc6abfc01c8ad06d5ab04 +01c3a90cceabe400217588e62bf221f2 +9bf3a349f6a353f9a35cfa012a2e4112 +7261e2a360022aa35e498a5210d5a361 +e651eb67ed75ee7f7a2d7a2ce125e22d +e54b10ea012a2e41127261e2a360032a +a35e312e49345310d5a3611137b2a361 +01d1a35fd2a3607538763c77527901e2 +a35df2a35c10f9a35203eca354eea355 +f4a356f5a35703e1a358e2a359efa35a +f8a35b6b966f696f44704e726873a250 +7402e1a34fe7a350eaa35102ea89ed8b +fa8d05f206f295f397fa99e38fe491e5 +9309ef0fefa344f1a345f3a346f9a347 +faa348e29be332e8a341eda342eea343 +022a9d4e2c5012616ceda1126261f49f +04e1a34ae5a34be7a34cefa34df4a34e +6b3c6c3e6d586e03e381eb83ee85f987 +10eb6905ee06ee71f36df473e16be26d +e96f03ed77ee79ef7bf07d6525653067 +3668506a10e76501e24df94f05ed06ed +59ef5bf15de353e455e75702e15fec61 +ef636148625263646405f006f045f947 +fa49e13fe541ea4302e927eb29f52b04 +e92ff131f233f435f93702e439e53be8 +3d + } // trie + lsrs{ // 1592 + "","","", + "skip","script","", + "aa","Latn","ET", + "aai","Latn","ZZ", + "aak","Latn","ZZ", + "aau","Latn","ZZ", + "ab","Cyrl","GE", + "abi","Latn","ZZ", + "abq","Cyrl","ZZ", + "abr","Latn","GH", + "abt","Latn","ZZ", + "aby","Latn","ZZ", + "acd","Latn","ZZ", + "ace","Latn","ID", + "ach","Latn","UG", + "ada","Latn","GH", + "ade","Latn","ZZ", + "adj","Latn","ZZ", + "dz","Tibt","BT", + "ady","Cyrl","RU", + "adz","Latn","ZZ", + "ae","Avst","IR", + "aeb","Arab","TN", + "aey","Latn","ZZ", + "af","Latn","ZA", + "agc","Latn","ZZ", + "agd","Latn","ZZ", + "agg","Latn","ZZ", + "agm","Latn","ZZ", + "ago","Latn","ZZ", + "agq","Latn","CM", + "aha","Latn","ZZ", + "ahl","Latn","ZZ", + "aho","Ahom","IN", + "ajg","Latn","ZZ", + "ak","Latn","GH", + "akk","Xsux","IQ", + "ala","Latn","ZZ", + "sq","Latn","AL", + "ali","Latn","ZZ", + "aln","Latn","XK", + "alt","Cyrl","RU", + "am","Ethi","ET", + "amm","Latn","ZZ", + "amn","Latn","ZZ", + "amo","Latn","NG", + "amp","Latn","ZZ", + "an","Latn","ES", + "anc","Latn","ZZ", + "ank","Latn","ZZ", + "ann","Latn","ZZ", + "any","Latn","ZZ", + "aoj","Latn","ZZ", + "aom","Latn","ZZ", + "aoz","Latn","ID", + "apc","Arab","ZZ", + "apd","Arab","TG", + "ape","Latn","ZZ", + "apr","Latn","ZZ", + "aps","Latn","ZZ", + "apz","Latn","ZZ", + "ar","Arab","EG", + "arc","Armi","IR", + "arc","Nbat","JO", + "arc","Palm","SY", + "arh","Latn","ZZ", + "hy","Armn","AM", + "arn","Latn","CL", + "aro","Latn","BO", + "arq","Arab","DZ", + "ars","Arab","SA", + "ary","Arab","MA", + "arz","Arab","EG", + "as","Beng","IN", + "asa","Latn","TZ", + "ase","Sgnw","US", + "asg","Latn","ZZ", + "aso","Latn","ZZ", + "ast","Latn","ES", + "ata","Latn","ZZ", + "atg","Latn","ZZ", + "atj","Latn","CA", + "auy","Latn","ZZ", + "av","Cyrl","RU", + "avl","Arab","ZZ", + "avn","Latn","ZZ", + "avt","Latn","ZZ", + "avu","Latn","ZZ", + "awa","Deva","IN", + "awb","Latn","ZZ", + "awo","Latn","ZZ", + "awx","Latn","ZZ", + "ay","Latn","BO", + "ayb","Latn","ZZ", + "az","Latn","AZ", + "az","Arab","IQ", + "az","Arab","IR", + "az","Cyrl","RU", + "ba","Cyrl","RU", + "bal","Arab","PK", + "ban","Latn","ID", + "bap","Deva","NP", + "eu","Latn","ES", + "bar","Latn","AT", + "bas","Latn","CM", + "bav","Latn","ZZ", + "bax","Bamu","CM", + "bba","Latn","ZZ", + "bbb","Latn","ZZ", + "bbc","Latn","ID", + "bbd","Latn","ZZ", + "bbj","Latn","CM", + "bbp","Latn","ZZ", + "bbr","Latn","ZZ", + "bcf","Latn","ZZ", + "bch","Latn","ZZ", + "bci","Latn","CI", + "bik","Latn","PH", + "bcm","Latn","ZZ", + "bcn","Latn","ZZ", + "bco","Latn","ZZ", + "bcq","Ethi","ZZ", + "bcu","Latn","ZZ", + "bdd","Latn","ZZ", + "be","Cyrl","BY", + "bef","Latn","ZZ", + "beh","Latn","ZZ", + "bej","Arab","SD", + "bem","Latn","ZM", + "bet","Latn","ZZ", + "bew","Latn","ID", + "bex","Latn","ZZ", + "bez","Latn","TZ", + "bfd","Latn","CM", + "bfq","Taml","IN", + "bft","Arab","PK", + "bfy","Deva","IN", + "bg","Cyrl","BG", + "bgc","Deva","IN", + "bgn","Arab","PK", + "bgx","Grek","TR", + "bho","Deva","IN", + "bhb","Deva","IN", + "bhg","Latn","ZZ", + "bhi","Deva","IN", + "bhl","Latn","ZZ", + "bhy","Latn","ZZ", + "bi","Latn","VU", + "bib","Latn","ZZ", + "big","Latn","ZZ", + "bim","Latn","ZZ", + "bin","Latn","NG", + "bio","Latn","ZZ", + "biq","Latn","ZZ", + "bjh","Latn","ZZ", + "bji","Ethi","ZZ", + "bjj","Deva","IN", + "bjn","Latn","ID", + "bjo","Latn","ZZ", + "bjr","Latn","ZZ", + "bjt","Latn","SN", + "bjz","Latn","ZZ", + "bkc","Latn","ZZ", + "bkm","Latn","CM", + "bkq","Latn","ZZ", + "bku","Latn","PH", + "bkv","Latn","ZZ", + "blt","Tavt","VN", + "bm","Latn","ML", + "bmh","Latn","ZZ", + "bmk","Latn","ZZ", + "bmq","Latn","ML", + "bmu","Latn","ZZ", + "bn","Beng","BD", + "bng","Latn","ZZ", + "bnm","Latn","ZZ", + "bnp","Latn","ZZ", + "bo","Tibt","CN", + "boj","Latn","ZZ", + "bom","Latn","ZZ", + "bon","Latn","ZZ", + "bpy","Beng","IN", + "bqc","Latn","ZZ", + "bqi","Arab","IR", + "bqp","Latn","ZZ", + "bqv","Latn","CI", + "br","Latn","FR", + "bra","Deva","IN", + "brh","Arab","PK", + "brx","Deva","IN", + "brz","Latn","ZZ", + "bs","Latn","BA", + "bsj","Latn","ZZ", + "bsq","Bass","LR", + "bss","Latn","CM", + "bst","Ethi","ZZ", + "bto","Latn","PH", + "btt","Latn","ZZ", + "btv","Deva","PK", + "bua","Cyrl","RU", + "buc","Latn","YT", + "bud","Latn","ZZ", + "bug","Latn","ID", + "buk","Latn","ZZ", + "bum","Latn","CM", + "buo","Latn","ZZ", + "my","Mymr","MM", + "bus","Latn","ZZ", + "buu","Latn","ZZ", + "bvb","Latn","GQ", + "bwd","Latn","ZZ", + "bwr","Latn","ZZ", + "bxh","Latn","ZZ", + "luy","Latn","KE", + "bye","Latn","ZZ", + "byn","Ethi","ER", + "byr","Latn","ZZ", + "bys","Latn","ZZ", + "byv","Latn","CM", + "byx","Latn","ZZ", + "bza","Latn","ZZ", + "bze","Latn","ML", + "bzf","Latn","ZZ", + "bzh","Latn","ZZ", + "bzw","Latn","ZZ", + "ca","Latn","ES", + "can","Latn","ZZ", + "cbj","Latn","ZZ", + "cch","Latn","NG", + "ccp","Cakm","BD", + "ce","Cyrl","RU", + "ceb","Latn","PH", + "cfa","Latn","ZZ", + "cgg","Latn","UG", + "ch","Latn","GU", + "zh","Hans","CN", + "zh","Hant","AU", + "zh","Hant","BN", + "zh","Hant","GF", + "zh","Hant","HK", + "zh","Hant","ID", + "zh","Hant","MO", + "zh","Hant","MY", + "zh","Hant","PF", + "zh","Hant","PH", + "zh","Hant","PA", + "zh","Hant","SR", + "zh","Hant","TH", + "zh","Hant","TW", + "zh","Hant","GB", + "zh","Hant","US", + "zh","Hant","VN", + "zh","Bopo","TW", + "zh","Hanb","TW", + "chk","Latn","FM", + "chm","Cyrl","RU", + "cho","Latn","US", + "chp","Latn","CA", + "chr","Cher","US", + "cic","Latn","US", + "cja","Arab","KH", + "cjm","Cham","VN", + "cjv","Latn","ZZ", + "ckb","Arab","IQ", + "ckl","Latn","ZZ", + "cko","Latn","ZZ", + "cky","Latn","ZZ", + "cla","Latn","ZZ", + "syr","Syrc","IQ", + "cme","Latn","ZZ", + "cmg","Soyo","MN", + "co","Latn","FR", + "cop","Copt","EG", + "cps","Latn","PH", + "cr","Cans","CA", + "crh","Cyrl","UA", + "crj","Cans","CA", + "crk","Cans","CA", + "crl","Cans","CA", + "crm","Cans","CA", + "crs","Latn","SC", + "cs","Latn","CZ", + "csb","Latn","PL", + "csw","Cans","CA", + "ctd","Pauc","MM", + "cu","Cyrl","RU", + "cu","Glag","BG", + "cv","Cyrl","RU", + "cy","Latn","GB", + "da","Latn","DK", + "dad","Latn","ZZ", + "daf","Latn","ZZ", + "dag","Latn","ZZ", + "dah","Latn","ZZ", + "dak","Latn","US", + "dar","Cyrl","RU", + "dav","Latn","KE", + "dbd","Latn","ZZ", + "dbq","Latn","ZZ", + "dcc","Arab","IN", + "ddn","Latn","ZZ", + "de","Latn","DE", + "ded","Latn","ZZ", + "den","Latn","CA", + "dga","Latn","ZZ", + "dgh","Latn","ZZ", + "dgi","Latn","ZZ", + "dgl","Arab","ZZ", + "doi","Arab","IN", + "dgr","Latn","CA", + "dgz","Latn","ZZ", + "mwr","Deva","IN", + "dia","Latn","ZZ", + "zza","Latn","TR", + "dje","Latn","NE", + "dnj","Latn","CI", + "dob","Latn","ZZ", + "dop","Latn","ZZ", + "dow","Latn","ZZ", + "mn","Cyrl","MN", + "mn","Mong","CN", + "dri","Latn","ZZ", + "drs","Ethi","ZZ", + "dsb","Latn","DE", + "dtm","Latn","ML", + "dtp","Latn","MY", + "dts","Latn","ZZ", + "dty","Deva","NP", + "dua","Latn","CM", + "duc","Latn","ZZ", + "dud","Latn","ZZ", + "dug","Latn","ZZ", + "nl","Latn","NL", + "dv","Thaa","MV", + "dva","Latn","ZZ", + "dww","Latn","ZZ", + "dyo","Latn","SN", + "dyu","Latn","BF", + "dzg","Latn","ZZ", + "ebu","Latn","KE", + "ee","Latn","GH", + "efi","Latn","NG", + "egl","Latn","IT", + "egy","Egyp","EG", + "eka","Latn","ZZ", + "et","Latn","EE", + "eky","Kali","MM", + "el","Grek","GR", + "ema","Latn","ZZ", + "emi","Latn","ZZ", + "man","Latn","GM", + "man","Nkoo","GN", + "en","Latn","US", + "en","Shaw","GB", + "enn","Latn","ZZ", + "enq","Latn","ZZ", + "eo","Latn","001", + "eri","Latn","ZZ", + "es","Latn","ES", + "esg","Gonm","IN", + "ik","Latn","US", + "esu","Latn","US", + "etr","Latn","ZZ", + "ett","Ital","IT", + "etu","Latn","ZZ", + "etx","Latn","ZZ", + "ewo","Latn","CM", + "ext","Latn","ES", + "fa","Arab","IR", + "faa","Latn","ZZ", + "fab","Latn","ZZ", + "fag","Latn","ZZ", + "fai","Latn","ZZ", + "fan","Latn","GQ", + "ff","Latn","SN", + "ff","Adlm","GN", + "ffi","Latn","ZZ", + "ffm","Latn","ML", + "fi","Latn","FI", + "fia","Arab","SD", + "fil","Latn","PH", + "fit","Latn","SE", + "fj","Latn","FJ", + "flr","Latn","ZZ", + "fmp","Latn","ZZ", + "fo","Latn","FO", + "fod","Latn","ZZ", + "fon","Latn","BJ", + "for","Latn","ZZ", + "fpe","Latn","ZZ", + "fqs","Latn","ZZ", + "fr","Latn","FR", + "frc","Latn","US", + "frp","Latn","FR", + "frr","Latn","DE", + "frs","Latn","DE", + "fub","Arab","CM", + "fud","Latn","WF", + "fue","Latn","ZZ", + "fuf","Latn","GN", + "fuh","Latn","ZZ", + "fuq","Latn","NE", + "fur","Latn","IT", + "fuv","Latn","NG", + "fuy","Latn","ZZ", + "fvr","Latn","SD", + "fy","Latn","NL", + "ga","Latn","IE", + "gaa","Latn","GH", + "gaf","Latn","ZZ", + "gag","Latn","MD", + "gah","Latn","ZZ", + "gaj","Latn","ZZ", + "gam","Latn","ZZ", + "gan","Hans","CN", + "gaw","Latn","ZZ", + "gay","Latn","ID", + "om","Latn","ET", + "gba","Latn","ZZ", + "gbf","Latn","ZZ", + "gbm","Deva","IN", + "grb","Latn","ZZ", + "gby","Latn","ZZ", + "gbz","Arab","IR", + "gcr","Latn","GF", + "gd","Latn","GB", + "gde","Latn","ZZ", + "gdn","Latn","ZZ", + "gdr","Latn","ZZ", + "geb","Latn","ZZ", + "gej","Latn","ZZ", + "gel","Latn","ZZ", + "ka","Geor","GE", + "gez","Ethi","ET", + "gfk","Latn","ZZ", + "gvr","Deva","NP", + "ghs","Latn","ZZ", + "gil","Latn","KI", + "gim","Latn","ZZ", + "gjk","Arab","PK", + "gjn","Latn","ZZ", + "gju","Arab","PK", + "gkn","Latn","ZZ", + "gkp","Latn","ZZ", + "gl","Latn","ES", + "glk","Arab","IR", + "gmm","Latn","ZZ", + "gmv","Ethi","ZZ", + "gn","Latn","PY", + "gnd","Latn","ZZ", + "gng","Latn","ZZ", + "gon","Telu","IN", + "god","Latn","ZZ", + "gof","Ethi","ZZ", + "goi","Latn","ZZ", + "gom","Deva","IN", + "gor","Latn","ID", + "gos","Latn","NL", + "got","Goth","UA", + "grc","Cprt","CY", + "grc","Linb","GR", + "grt","Beng","IN", + "grw","Latn","ZZ", + "gsw","Latn","CH", + "gu","Gujr","IN", + "gub","Latn","BR", + "guc","Latn","CO", + "gud","Latn","ZZ", + "gur","Latn","GH", + "guw","Latn","ZZ", + "gux","Latn","ZZ", + "guz","Latn","KE", + "gv","Latn","IM", + "gvf","Latn","ZZ", + "gvs","Latn","ZZ", + "gwc","Arab","ZZ", + "gwi","Latn","CA", + "gwt","Arab","ZZ", + "gyi","Latn","ZZ", + "ha","Latn","NG", + "ha","Arab","SD", + "ha","Arab","CM", + "hag","Latn","ZZ", + "hak","Hans","CN", + "ham","Latn","ZZ", + "haw","Latn","US", + "haz","Arab","AF", + "hbb","Latn","ZZ", + "hdy","Ethi","ZZ", + "he","Hebr","IL", + "hhy","Latn","ZZ", + "hi","Deva","IN", + "hia","Latn","ZZ", + "hif","Latn","FJ", + "hig","Latn","ZZ", + "hih","Latn","ZZ", + "hil","Latn","PH", + "srx","Deva","IN", + "hla","Latn","ZZ", + "hlu","Hluw","TR", + "hmd","Plrd","CN", + "hmt","Latn","ZZ", + "hnd","Arab","PK", + "hne","Deva","IN", + "hnj","Hmng","LA", + "hnn","Latn","PH", + "hno","Arab","PK", + "ho","Latn","PG", + "hoc","Deva","IN", + "hoj","Deva","IN", + "hot","Latn","ZZ", + "hr","Latn","HR", + "hsb","Latn","DE", + "hsn","Hans","CN", + "ht","Latn","HT", + "hu","Latn","HU", + "hui","Latn","ZZ", + "hz","Latn","NA", + "ia","Latn","001", + "ian","Latn","ZZ", + "iar","Latn","ZZ", + "iba","Latn","MY", + "ibb","Latn","NG", + "iby","Latn","ZZ", + "ica","Latn","ZZ", + "is","Latn","IS", + "ich","Latn","ZZ", + "id","Latn","ID", + "idd","Latn","ZZ", + "idi","Latn","ZZ", + "idu","Latn","ZZ", + "ife","Latn","TG", + "ig","Latn","NG", + "igb","Latn","ZZ", + "ige","Latn","ZZ", + "ii","Yiii","CN", + "ijj","Latn","ZZ", + "iu","Cans","CA", + "ikk","Latn","ZZ", + "ikt","Latn","CA", + "ikw","Latn","ZZ", + "ikx","Latn","ZZ", + "ilo","Latn","PH", + "imo","Latn","ZZ", + "in","Latn","ID", + "inh","Cyrl","RU", + "io","Latn","001", + "iou","Latn","ZZ", + "iri","Latn","ZZ", + "it","Latn","IT", + "iw","Hebr","IL", + "iwm","Latn","ZZ", + "iws","Latn","ZZ", + "izh","Latn","RU", + "izi","Latn","ZZ", + "ja","Jpan","JP", + "jab","Latn","ZZ", + "jam","Latn","JM", + "jbo","Latn","001", + "jbu","Latn","ZZ", + "jen","Latn","ZZ", + "jgk","Latn","ZZ", + "jgo","Latn","CM", + "yi","Hebr","001", + "jib","Latn","ZZ", + "jmc","Latn","TZ", + "jml","Deva","NP", + "jra","Latn","ZZ", + "jut","Latn","DK", + "jv","Latn","ID", + "jw","Latn","ID", + "kaa","Cyrl","UZ", + "kab","Latn","DZ", + "kac","Latn","MM", + "kad","Latn","ZZ", + "kai","Latn","ZZ", + "kaj","Latn","NG", + "kam","Latn","KE", + "kao","Latn","ML", + "kbd","Cyrl","RU", + "kbm","Latn","ZZ", + "kbp","Latn","ZZ", + "kbq","Latn","ZZ", + "kbx","Latn","ZZ", + "kby","Arab","NE", + "kcg","Latn","NG", + "kck","Latn","ZW", + "kcl","Latn","ZZ", + "kct","Latn","ZZ", + "kde","Latn","TZ", + "kdh","Arab","TG", + "kdl","Latn","ZZ", + "kdt","Thai","TH", + "kea","Latn","CV", + "ken","Latn","CM", + "kez","Latn","ZZ", + "kfo","Latn","CI", + "kfr","Deva","IN", + "kfy","Deva","IN", + "kg","Latn","CD", + "kge","Latn","ID", + "kgf","Latn","ZZ", + "kgp","Latn","BR", + "kha","Latn","IN", + "khb","Talu","CN", + "khn","Deva","IN", + "khq","Latn","ML", + "khs","Latn","ZZ", + "kht","Mymr","IN", + "khw","Arab","PK", + "khz","Latn","ZZ", + "ki","Latn","KE", + "kij","Latn","ZZ", + "kiu","Latn","TR", + "kiw","Latn","ZZ", + "kj","Latn","NA", + "kjd","Latn","ZZ", + "kjg","Laoo","LA", + "kjs","Latn","ZZ", + "kjy","Latn","ZZ", + "kk","Cyrl","KZ", + "kk","Arab","AF", + "kk","Arab","CN", + "kk","Arab","IR", + "kk","Arab","MN", + "kkc","Latn","ZZ", + "kkj","Latn","CM", + "kl","Latn","GL", + "kln","Latn","KE", + "klq","Latn","ZZ", + "klt","Latn","ZZ", + "klx","Latn","ZZ", + "km","Khmr","KH", + "kmb","Latn","AO", + "kmh","Latn","ZZ", + "kmo","Latn","ZZ", + "ku","Latn","TR", + "ku","Arab","LB", + "ku","Arab","IQ", + "kms","Latn","ZZ", + "kmu","Latn","ZZ", + "kmw","Latn","ZZ", + "kn","Knda","IN", + "kr","Latn","ZZ", + "knf","Latn","GW", + "kok","Deva","IN", + "knp","Latn","ZZ", + "ko","Kore","KR", + "koi","Cyrl","RU", + "kol","Latn","ZZ", + "kos","Latn","FM", + "koz","Latn","ZZ", + "kpe","Latn","LR", + "kpf","Latn","ZZ", + "kpo","Latn","ZZ", + "kpr","Latn","ZZ", + "kv","Cyrl","RU", + "kpx","Latn","ZZ", + "kqb","Latn","ZZ", + "kqf","Latn","ZZ", + "kqs","Latn","ZZ", + "kqy","Ethi","ZZ", + "krc","Cyrl","RU", + "kri","Latn","SL", + "krj","Latn","PH", + "krl","Latn","RU", + "krs","Latn","ZZ", + "kru","Deva","IN", + "ks","Arab","IN", + "ksb","Latn","TZ", + "ksd","Latn","ZZ", + "ksf","Latn","CM", + "ksh","Latn","DE", + "ksj","Latn","ZZ", + "ksr","Latn","ZZ", + "ktb","Ethi","ZZ", + "ktm","Latn","ZZ", + "kto","Latn","ZZ", + "ktr","Latn","MY", + "kub","Latn","ZZ", + "kud","Latn","ZZ", + "kue","Latn","ZZ", + "kuj","Latn","ZZ", + "kum","Cyrl","RU", + "kun","Latn","ZZ", + "kup","Latn","ZZ", + "kus","Latn","ZZ", + "kvg","Latn","ZZ", + "kvr","Latn","ID", + "kvx","Arab","PK", + "kw","Latn","GB", + "kwj","Latn","ZZ", + "kwo","Latn","ZZ", + "yam","Latn","ZZ", + "kxa","Latn","ZZ", + "kxc","Ethi","ZZ", + "tvd","Latn","ZZ", + "kxm","Thai","TH", + "kxp","Arab","PK", + "kxw","Latn","ZZ", + "kxz","Latn","ZZ", + "ky","Cyrl","KG", + "ky","Arab","CN", + "ky","Latn","TR", + "kye","Latn","ZZ", + "kyx","Latn","ZZ", + "kzj","Latn","MY", + "kzr","Latn","ZZ", + "kzt","Latn","MY", + "la","Latn","VA", + "lab","Lina","GR", + "lad","Hebr","IL", + "lag","Latn","TZ", + "lah","Arab","PK", + "laj","Latn","UG", + "las","Latn","ZZ", + "lb","Latn","LU", + "lbe","Cyrl","RU", + "lbu","Latn","ZZ", + "lbw","Latn","ID", + "lcm","Latn","ZZ", + "lcp","Thai","CN", + "ldb","Latn","ZZ", + "led","Latn","ZZ", + "lee","Latn","ZZ", + "lem","Latn","ZZ", + "lep","Lepc","IN", + "leq","Latn","ZZ", + "leu","Latn","ZZ", + "lez","Cyrl","RU", + "lg","Latn","UG", + "lgg","Latn","ZZ", + "li","Latn","NL", + "lia","Latn","ZZ", + "lid","Latn","ZZ", + "lif","Deva","NP", + "lif","Limb","IN", + "lig","Latn","ZZ", + "lih","Latn","ZZ", + "lij","Latn","IT", + "lis","Lisu","CN", + "ljp","Latn","ID", + "lki","Arab","IR", + "lkt","Latn","US", + "lle","Latn","ZZ", + "lln","Latn","ZZ", + "lmn","Telu","IN", + "lmo","Latn","IT", + "lmp","Latn","ZZ", + "ln","Latn","CD", + "lns","Latn","ZZ", + "lnu","Latn","ZZ", + "lo","Laoo","LA", + "loj","Latn","ZZ", + "lok","Latn","ZZ", + "lol","Latn","CD", + "lor","Latn","ZZ", + "los","Latn","ZZ", + "loz","Latn","ZM", + "lrc","Arab","IR", + "lt","Latn","LT", + "ltg","Latn","LV", + "lu","Latn","CD", + "lua","Latn","CD", + "luo","Latn","KE", + "luz","Arab","IR", + "lv","Latn","LV", + "lwl","Thai","TH", + "lzh","Hans","CN", + "lzz","Latn","TR", + "mk","Cyrl","MK", + "mad","Latn","ID", + "maf","Latn","CM", + "mag","Deva","IN", + "mai","Deva","IN", + "mak","Latn","ID", + "mi","Latn","NZ", + "mas","Latn","KE", + "maw","Latn","ZZ", + "ms","Latn","MY", + "ms","Arab","CC", + "ms","Arab","ID", + "maz","Latn","MX", + "mbh","Latn","ZZ", + "mbo","Latn","ZZ", + "mbq","Latn","ZZ", + "mbu","Latn","ZZ", + "mbw","Latn","ZZ", + "mci","Latn","ZZ", + "mcp","Latn","ZZ", + "mcq","Latn","ZZ", + "mcr","Latn","ZZ", + "mcu","Latn","ZZ", + "mda","Latn","ZZ", + "mde","Arab","ZZ", + "mdf","Cyrl","RU", + "mdh","Latn","PH", + "mdj","Latn","ZZ", + "mdr","Latn","ID", + "mdx","Ethi","ZZ", + "med","Latn","ZZ", + "mee","Latn","ZZ", + "mek","Latn","ZZ", + "men","Latn","SL", + "mer","Latn","KE", + "met","Latn","ZZ", + "meu","Latn","ZZ", + "mfa","Arab","TH", + "mfe","Latn","MU", + "mfn","Latn","ZZ", + "mfo","Latn","ZZ", + "mfq","Latn","ZZ", + "mg","Latn","MG", + "mgh","Latn","MZ", + "mgl","Latn","ZZ", + "mgo","Latn","CM", + "mgp","Deva","NP", + "mgy","Latn","TZ", + "mh","Latn","MH", + "mhi","Latn","ZZ", + "mhl","Latn","ZZ", + "mif","Latn","ZZ", + "min","Latn","ID", + "mis","Hatr","IQ", + "mis","Medf","NG", + "miw","Latn","ZZ", + "mki","Arab","ZZ", + "mkl","Latn","ZZ", + "mkp","Latn","ZZ", + "mkw","Latn","ZZ", + "ml","Mlym","IN", + "mle","Latn","ZZ", + "mlp","Latn","ZZ", + "mls","Latn","SD", + "mmo","Latn","ZZ", + "mmu","Latn","ZZ", + "mmx","Latn","ZZ", + "mna","Latn","ZZ", + "mnf","Latn","ZZ", + "mni","Beng","IN", + "mnw","Mymr","MM", + "ro","Latn","RO", + "moa","Latn","ZZ", + "moe","Latn","CA", + "moh","Latn","CA", + "mos","Latn","BF", + "mox","Latn","ZZ", + "mpp","Latn","ZZ", + "mps","Latn","ZZ", + "mpt","Latn","ZZ", + "mpx","Latn","ZZ", + "mql","Latn","ZZ", + "mr","Deva","IN", + "mrd","Deva","NP", + "mrj","Cyrl","RU", + "mro","Mroo","BD", + "mt","Latn","MT", + "mtc","Latn","ZZ", + "mtf","Latn","ZZ", + "mti","Latn","ZZ", + "mtr","Deva","IN", + "mua","Latn","CM", + "raj","Deva","IN", + "mur","Latn","ZZ", + "mus","Latn","US", + "mva","Latn","ZZ", + "mvn","Latn","ZZ", + "mvy","Arab","PK", + "mwk","Latn","ML", + "mwv","Latn","ID", + "mww","Hmnp","US", + "mxc","Latn","ZW", + "mxm","Latn","ZZ", + "myk","Latn","ZZ", + "mym","Ethi","ZZ", + "myv","Cyrl","RU", + "myw","Latn","ZZ", + "myx","Latn","UG", + "myz","Mand","IR", + "mzk","Latn","ZZ", + "mzm","Latn","ZZ", + "mzn","Arab","IR", + "mzp","Latn","ZZ", + "mzw","Latn","ZZ", + "mzz","Latn","ZZ", + "na","Latn","NR", + "nac","Latn","ZZ", + "naf","Latn","ZZ", + "nak","Latn","ZZ", + "nan","Hans","CN", + "nap","Latn","IT", + "naq","Latn","NA", + "nas","Latn","ZZ", + "nb","Latn","NO", + "nca","Latn","ZZ", + "nce","Latn","ZZ", + "ncf","Latn","ZZ", + "nch","Latn","MX", + "nco","Latn","ZZ", + "ncu","Latn","ZZ", + "nd","Latn","ZW", + "ndc","Latn","MZ", + "nds","Latn","DE", + "ne","Deva","NP", + "neb","Latn","ZZ", + "new","Deva","NP", + "nex","Latn","ZZ", + "nfr","Latn","ZZ", + "ng","Latn","NA", + "nga","Latn","ZZ", + "ngb","Latn","ZZ", + "ngl","Latn","MZ", + "nhb","Latn","ZZ", + "nhe","Latn","MX", + "nhw","Latn","MX", + "nif","Latn","ZZ", + "nii","Latn","ZZ", + "nij","Latn","ID", + "nin","Latn","ZZ", + "niu","Latn","NU", + "niy","Latn","ZZ", + "niz","Latn","ZZ", + "njo","Latn","IN", + "nkg","Latn","ZZ", + "nko","Latn","ZZ", + "nmg","Latn","CM", + "nmz","Latn","ZZ", + "nn","Latn","NO", + "nnf","Latn","ZZ", + "nnh","Latn","CM", + "nnk","Latn","ZZ", + "nnm","Latn","ZZ", + "nnp","Wcho","IN", + "no","Latn","NO", + "nod","Lana","TH", + "noe","Deva","IN", + "non","Runr","SE", + "nop","Latn","ZZ", + "nou","Latn","ZZ", + "nqo","Nkoo","GN", + "nr","Latn","ZA", + "nrb","Latn","ZZ", + "nsk","Cans","CA", + "nsn","Latn","ZZ", + "nso","Latn","ZA", + "nss","Latn","ZZ", + "ntm","Latn","ZZ", + "ntr","Latn","ZZ", + "nui","Latn","ZZ", + "nup","Latn","ZZ", + "nus","Latn","SS", + "nuv","Latn","ZZ", + "nux","Latn","ZZ", + "nv","Latn","US", + "nwb","Latn","ZZ", + "nxq","Latn","CN", + "nxr","Latn","ZZ", + "ny","Latn","MW", + "nym","Latn","TZ", + "nyn","Latn","UG", + "nzi","Latn","GH", + "oc","Latn","FR", + "ogc","Latn","ZZ", + "okr","Latn","ZZ", + "okv","Latn","ZZ", + "ong","Latn","ZZ", + "onn","Latn","ZZ", + "ons","Latn","ZZ", + "opm","Latn","ZZ", + "or","Orya","IN", + "oro","Latn","ZZ", + "oru","Arab","ZZ", + "os","Cyrl","GE", + "osa","Osge","US", + "ota","Arab","ZZ", + "otk","Orkh","MN", + "ozm","Latn","ZZ", + "pa","Guru","IN", + "pa","Arab","PK", + "pag","Latn","PH", + "pal","Phli","IR", + "pal","Phlp","CN", + "pam","Latn","PH", + "pap","Latn","AW", + "pau","Latn","PW", + "pbi","Latn","ZZ", + "ps","Arab","AF", + "pcd","Latn","FR", + "pcm","Latn","NG", + "pdc","Latn","US", + "pdt","Latn","CA", + "ped","Latn","ZZ", + "peo","Xpeo","IR", + "pex","Latn","ZZ", + "pfl","Latn","DE", + "phl","Arab","ZZ", + "phn","Phnx","LB", + "pil","Latn","ZZ", + "pip","Latn","ZZ", + "pka","Brah","IN", + "pko","Latn","KE", + "pl","Latn","PL", + "pla","Latn","ZZ", + "pms","Latn","IT", + "png","Latn","ZZ", + "pnn","Latn","ZZ", + "pnt","Grek","GR", + "pon","Latn","FM", + "ppa","Deva","IN", + "ppo","Latn","ZZ", + "pra","Khar","PK", + "prd","Arab","IR", + "prg","Latn","001", + "pss","Latn","ZZ", + "pt","Latn","BR", + "ptp","Latn","ZZ", + "puu","Latn","GA", + "pwa","Latn","ZZ", + "qu","Latn","PE", + "quc","Latn","GT", + "qug","Latn","EC", + "rai","Latn","ZZ", + "rao","Latn","ZZ", + "rcf","Latn","RE", + "rej","Latn","ID", + "rel","Latn","ZZ", + "res","Latn","ZZ", + "rgn","Latn","IT", + "rhg","Arab","MM", + "ria","Latn","IN", + "rif","Tfng","MA", + "rif","Latn","NL", + "rjs","Deva","NP", + "rkt","Beng","BD", + "rm","Latn","CH", + "rmf","Latn","FI", + "rmo","Latn","CH", + "rmt","Arab","IR", + "rmu","Latn","SE", + "rn","Latn","BI", + "rna","Latn","ZZ", + "rng","Latn","MZ", + "rob","Latn","ID", + "rof","Latn","TZ", + "roo","Latn","ZZ", + "rro","Latn","ZZ", + "rtm","Latn","FJ", + "ru","Cyrl","RU", + "rue","Cyrl","UA", + "rug","Latn","SB", + "rw","Latn","RW", + "rwk","Latn","TZ", + "rwo","Latn","ZZ", + "ryu","Kana","JP", + "sa","Deva","IN", + "saf","Latn","GH", + "sah","Cyrl","RU", + "saq","Latn","KE", + "sas","Latn","ID", + "sat","Latn","IN", + "sav","Latn","SN", + "saz","Saur","IN", + "sba","Latn","ZZ", + "sbe","Latn","ZZ", + "sbp","Latn","TZ", + "sc","Latn","IT", + "sr","Cyrl","RS", + "sr","Latn","RU", + "sr","Latn","ME", + "sr","Latn","RO", + "sr","Latn","TR", + "sck","Deva","IN", + "scl","Arab","ZZ", + "scn","Latn","IT", + "sco","Latn","GB", + "scs","Latn","CA", + "sd","Arab","PK", + "sd","Deva","IN", + "sd","Khoj","IN", + "sd","Sind","IN", + "sdc","Latn","IT", + "sdh","Arab","IR", + "se","Latn","NO", + "sef","Latn","CI", + "seh","Latn","MZ", + "sei","Latn","MX", + "ses","Latn","ML", + "sg","Latn","CF", + "sga","Ogam","IE", + "sgs","Latn","LT", + "sgw","Ethi","ZZ", + "sgz","Latn","ZZ", + "shi","Tfng","MA", + "shk","Latn","ZZ", + "shn","Mymr","MM", + "shu","Arab","ZZ", + "si","Sinh","LK", + "sid","Latn","ET", + "sig","Latn","ZZ", + "sil","Latn","ZZ", + "sim","Latn","ZZ", + "sjr","Latn","ZZ", + "sk","Latn","SK", + "skc","Latn","ZZ", + "skr","Arab","PK", + "sks","Latn","ZZ", + "sl","Latn","SI", + "sld","Latn","ZZ", + "sli","Latn","PL", + "sll","Latn","ZZ", + "sly","Latn","ID", + "sm","Latn","WS", + "sma","Latn","SE", + "smj","Latn","SE", + "smn","Latn","FI", + "smp","Samr","IL", + "smq","Latn","ZZ", + "sms","Latn","FI", + "sn","Latn","ZW", + "snc","Latn","ZZ", + "snk","Latn","ML", + "snp","Latn","ZZ", + "snx","Latn","ZZ", + "sny","Latn","ZZ", + "so","Latn","SO", + "sog","Sogd","UZ", + "sok","Latn","ZZ", + "soq","Latn","ZZ", + "sou","Thai","TH", + "soy","Latn","ZZ", + "spd","Latn","ZZ", + "spl","Latn","ZZ", + "sps","Latn","ZZ", + "srb","Sora","IN", + "srn","Latn","SR", + "srr","Latn","SN", + "ss","Latn","ZA", + "ssd","Latn","ZZ", + "ssg","Latn","ZZ", + "ssy","Latn","ER", + "st","Latn","ZA", + "stk","Latn","ZZ", + "stq","Latn","DE", + "su","Latn","ID", + "sua","Latn","ZZ", + "sue","Latn","ZZ", + "suk","Latn","TZ", + "sur","Latn","ZZ", + "sus","Latn","GN", + "sv","Latn","SE", + "sw","Latn","TZ", + "swb","Arab","YT", + "swc","Latn","CD", + "swg","Latn","DE", + "swp","Latn","ZZ", + "swv","Deva","IN", + "sxn","Latn","ID", + "sxw","Latn","ZZ", + "syl","Beng","BD", + "szl","Latn","PL", + "ta","Taml","IN", + "taj","Deva","NP", + "tal","Latn","ZZ", + "tan","Latn","ZZ", + "taq","Latn","ZZ", + "tbc","Latn","ZZ", + "tbd","Latn","ZZ", + "tbf","Latn","ZZ", + "tbg","Latn","ZZ", + "tbo","Latn","ZZ", + "tbw","Latn","PH", + "tbz","Latn","ZZ", + "tci","Latn","ZZ", + "tcy","Knda","IN", + "tdd","Tale","CN", + "tdg","Deva","NP", + "tdh","Deva","NP", + "tdu","Latn","MY", + "te","Telu","IN", + "ted","Latn","ZZ", + "tem","Latn","SL", + "teo","Latn","UG", + "tet","Latn","TL", + "tfi","Latn","ZZ", + "tg","Cyrl","TJ", + "tg","Arab","PK", + "tgc","Latn","ZZ", + "tgo","Latn","ZZ", + "tgu","Latn","ZZ", + "th","Thai","TH", + "thl","Deva","NP", + "thq","Deva","NP", + "thr","Deva","NP", + "ti","Ethi","ET", + "tif","Latn","ZZ", + "tig","Ethi","ER", + "tik","Latn","ZZ", + "tim","Latn","ZZ", + "tio","Latn","ZZ", + "tiv","Latn","NG", + "tk","Latn","TM", + "tkl","Latn","TK", + "tkr","Latn","AZ", + "tkt","Deva","NP", + "tl","Latn","PH", + "tlf","Latn","ZZ", + "tlx","Latn","ZZ", + "tly","Latn","AZ", + "tmh","Latn","NE", + "tmy","Latn","ZZ", + "tn","Latn","ZA", + "tnh","Latn","ZZ", + "to","Latn","TO", + "tof","Latn","ZZ", + "tog","Latn","MW", + "toq","Latn","ZZ", + "tpi","Latn","PG", + "tpm","Latn","ZZ", + "tpz","Latn","ZZ", + "tqo","Latn","ZZ", + "tr","Latn","TR", + "tru","Latn","TR", + "trv","Latn","TW", + "trw","Arab","ZZ", + "ts","Latn","ZA", + "tsd","Grek","GR", + "tsf","Deva","NP", + "tsg","Latn","PH", + "tsj","Tibt","BT", + "tsw","Latn","ZZ", + "tt","Cyrl","RU", + "ttd","Latn","ZZ", + "tte","Latn","ZZ", + "ttj","Latn","UG", + "ttr","Latn","ZZ", + "tts","Thai","TH", + "ttt","Latn","AZ", + "tuh","Latn","ZZ", + "tul","Latn","ZZ", + "tum","Latn","MW", + "tuq","Latn","ZZ", + "tvl","Latn","TV", + "tvu","Latn","ZZ", + "twh","Latn","ZZ", + "twq","Latn","NE", + "txg","Tang","CN", + "ty","Latn","PF", + "tya","Latn","ZZ", + "tyv","Cyrl","RU", + "tzm","Latn","MA", + "ubu","Latn","ZZ", + "udm","Cyrl","RU", + "ug","Arab","CN", + "ug","Cyrl","KZ", + "ug","Cyrl","MN", + "uga","Ugar","SY", + "uk","Cyrl","UA", + "uli","Latn","FM", + "umb","Latn","AO", + "en","Latn","NG", + "en","Latn","AU", + "es","Latn","MX", + "sw","Latn","CD", + "en","Latn","ZA", + "es","Latn","CU", + "en","Latn","PG", + "en","Latn","GU", + "uz","Latn","UZ", + "ar","Arab","SA", + "en","Latn","GB", + "es","Latn","419", + "pap","Latn","CW", + "ar","Arab","SD", + "ar","Arab","YE", + "ca","Latn","AD", + "ar","Arab","AE", + "fa","Arab","AF", + "pt","Latn","AO", + "und","Latn","AQ", + "es","Latn","AR", + "sm","Latn","AS", + "de","Latn","AT", + "nl","Latn","AW", + "sv","Latn","AX", + "nl","Latn","BE", + "fr","Latn","BF", + "ar","Arab","BH", + "fr","Latn","BJ", + "fr","Latn","BL", + "ms","Latn","BN", + "es","Latn","BO", + "pap","Latn","BQ", + "und","Latn","BV", + "fr","Latn","CF", + "fr","Latn","CG", + "de","Latn","CH", + "fr","Latn","CI", + "es","Latn","CL", + "fr","Latn","CM", + "es","Latn","CO", + "und","Latn","CP", + "es","Latn","CR", + "pt","Latn","CV", + "el","Grek","CY", + "aa","Latn","DJ", + "es","Latn","DO", + "ar","Arab","DZ", + "es","Latn","EA", + "es","Latn","EC", + "ar","Arab","EH", + "ti","Ethi","ER", + "de","Latn","EZ", + "fr","Latn","GA", + "fr","Latn","GF", + "fr","Latn","GN", + "fr","Latn","GP", + "es","Latn","GQ", + "und","Latn","GS", + "es","Latn","GT", + "pt","Latn","GW", + "und","Latn","HM", + "es","Latn","HN", + "es","Latn","IC", + "ar","Arab","IQ", + "ar","Arab","JO", + "sw","Latn","KE", + "ar","Arab","KM", + "ko","Kore","KP", + "ar","Arab","KW", + "ru","Cyrl","KZ", + "ar","Arab","LB", + "de","Latn","LI", + "st","Latn","LS", + "fr","Latn","LU", + "ar","Arab","LY", + "ar","Arab","MA", + "fr","Latn","MC", + "ro","Latn","MD", + "fr","Latn","MF", + "fr","Latn","MQ", + "ar","Arab","MR", + "pt","Latn","MZ", + "af","Latn","NA", + "fr","Latn","NC", + "ha","Latn","NE", + "es","Latn","NI", + "ar","Arab","OM", + "es","Latn","PA", + "es","Latn","PE", + "fr","Latn","PF", + "ur","Arab","PK", + "fr","Latn","PM", + "es","Latn","PR", + "ar","Arab","PS", + "pt","Latn","PT", + "ar","Arab","QA", + "en","Latn","DG", + "fr","Latn","RE", + "fr","Latn","SC", + "nb","Latn","SJ", + "it","Latn","SM", + "fr","Latn","SN", + "nl","Latn","SR", + "pt","Latn","ST", + "es","Latn","SV", + "ar","Arab","SY", + "fr","Latn","TD", + "fr","Latn","TF", + "fr","Latn","TG", + "pt","Latn","TL", + "ar","Arab","TN", + "sw","Latn","UG", + "es","Latn","UY", + "it","Latn","VA", + "vi","Latn","VN", + "es","Latn","VE", + "fr","Latn","WF", + "sq","Latn","XK", + "fr","Latn","YT", + "lez","Aghb","RU", + "ks","Arab","GB", + "ur","Arab","IN", + "ur","Arab","MU", + "ha","Arab","NG", + "fa","Arab","TJ", + "az","Arab","TR", + "ban","Bali","ID", + "bbc","Batk","ID", + "sa","Bhks","IN", + "fr","Brai","FR", + "bug","Bugi","ID", + "bku","Buhd","PH", + "xcr","Cari","TR", + "mk","Cyrl","AL", + "sr","Cyrl","BA", + "mk","Cyrl","GR", + "uk","Cyrl","MD", + "bg","Cyrl","RO", + "uk","Cyrl","SK", + "kbd","Cyrl","TR", + "sr","Cyrl","XK", + "ne","Deva","BT", + "hif","Deva","FJ", + "bho","Deva","MU", + "doi","Dogr","IN", + "fr","Dupl","FR", + "sq","Elba","AL", + "arc","Elym","IR", + "wsg","Gong","IN", + "sa","Gran","IN", + "ko","Hang","KR", + "zh","Hani","CN", + "hnn","Hano","PH", + "yi","Hebr","CA", + "yi","Hebr","GB", + "yi","Hebr","SE", + "yi","Hebr","UA", + "yi","Hebr","US", + "ja","Hira","JP", + "hu","Hung","HU", + "ko","Jamo","KR", + "jv","Java","ID", + "ja","Kana","JP", + "bho","Kthi","IN", + "en","Latn","ET", + "tk","Latn","AF", + "ku","Latn","AM", + "za","Latn","CN", + "tr","Latn","CY", + "fr","Latn","DZ", + "ku","Latn","GE", + "tk","Latn","IR", + "fr","Latn","KM", + "fr","Latn","MA", + "sq","Latn","MK", + "pt","Latn","MO", + "fr","Latn","MR", + "fr","Latn","SY", + "fr","Latn","TN", + "pl","Latn","UA", + "xlc","Lyci","TR", + "xld","Lydi","TR", + "hi","Mahj","IN", + "mak","Maka","ID", + "xmn","Mani","CN", + "bo","Marc","CN", + "men","Mend","SL", + "xmr","Merc","SD", + "xmr","Mero","SD", + "mr","Modi","IN", + "mni","Mtei","IN", + "skr","Mult","PK", + "mnw","Mymr","TH", + "sa","Nand","IN", + "xna","Narb","SA", + "new","Newa","NP", + "zhx","Nshu","CN", + "sat","Olck","IN", + "so","Osma","SO", + "kv","Perm","RU", + "lzh","Phag","CN", + "xpr","Prti","IR", + "rej","Rjng","ID", + "rhg","Rohg","MM", + "xsa","Sarb","YE", + "sa","Shrd","IN", + "sa","Sidd","IN", + "sog","Sogo","UZ", + "su","Sund","ID", + "syl","Sylo","BD", + "tbw","Tagb","PH", + "doi","Takr","IN", + "zgh","Tfng","MA", + "fil","Tglg","PH", + "kdt","Thai","KH", + "kdt","Thai","LA", + "mai","Tirh","IN", + "vai","Vaii","LR", + "hoc","Wara","IN", + "cmg","Zanb","MN", + "unr","Beng","IN", + "unr","Deva","NP", + "unx","Beng","IN", + "uok","Latn","ZZ", + "uri","Latn","ZZ", + "urt","Latn","ZZ", + "urw","Latn","ZZ", + "usa","Latn","ZZ", + "utr","Latn","ZZ", + "uvh","Latn","ZZ", + "uvl","Latn","ZZ", + "uz","Arab","AF", + "uz","Cyrl","CN", + "vag","Latn","ZZ", + "van","Latn","ZZ", + "ve","Latn","ZA", + "vec","Latn","IT", + "vep","Latn","RU", + "vic","Latn","SX", + "viv","Latn","ZZ", + "vls","Latn","BE", + "vmf","Latn","DE", + "vmw","Latn","MZ", + "vo","Latn","001", + "vot","Latn","RU", + "vro","Latn","EE", + "vun","Latn","TZ", + "vut","Latn","ZZ", + "wa","Latn","BE", + "wae","Latn","CH", + "waj","Latn","ZZ", + "wal","Ethi","ET", + "wan","Latn","ZZ", + "war","Latn","PH", + "wbp","Latn","AU", + "wbq","Telu","IN", + "wbr","Deva","IN", + "wci","Latn","ZZ", + "wer","Latn","ZZ", + "wgi","Latn","ZZ", + "whg","Latn","ZZ", + "wib","Latn","ZZ", + "wiu","Latn","ZZ", + "wiv","Latn","ZZ", + "wja","Latn","ZZ", + "wji","Latn","ZZ", + "wls","Latn","WF", + "wmo","Latn","ZZ", + "wnc","Latn","ZZ", + "wni","Arab","KM", + "wnu","Latn","ZZ", + "wo","Latn","SN", + "wob","Latn","ZZ", + "wos","Latn","ZZ", + "wrs","Latn","ZZ", + "wsk","Latn","ZZ", + "wtm","Deva","IN", + "wuu","Hans","CN", + "wuv","Latn","ZZ", + "wwa","Latn","ZZ", + "xav","Latn","BR", + "xbi","Latn","ZZ", + "xes","Latn","ZZ", + "xh","Latn","ZA", + "xla","Latn","ZZ", + "xmf","Geor","GE", + "xnr","Deva","IN", + "xog","Latn","UG", + "xon","Latn","ZZ", + "xrb","Latn","ZZ", + "xsi","Latn","ZZ", + "xsm","Latn","ZZ", + "xsr","Deva","NP", + "xwe","Latn","ZZ", + "yao","Latn","MZ", + "yap","Latn","FM", + "yas","Latn","ZZ", + "yat","Latn","ZZ", + "yav","Latn","CM", + "yay","Latn","ZZ", + "yaz","Latn","ZZ", + "yba","Latn","ZZ", + "ybb","Latn","CM", + "yby","Latn","ZZ", + "yer","Latn","ZZ", + "ygr","Latn","ZZ", + "ygw","Latn","ZZ", + "yko","Latn","ZZ", + "yle","Latn","ZZ", + "ylg","Latn","ZZ", + "yll","Latn","ZZ", + "yml","Latn","ZZ", + "yo","Latn","NG", + "yon","Latn","ZZ", + "yrb","Latn","ZZ", + "yre","Latn","ZZ", + "yrl","Latn","BR", + "yss","Latn","ZZ", + "yua","Latn","MX", + "yue","Hant","HK", + "yue","Hans","CN", + "yuj","Latn","ZZ", + "yut","Latn","ZZ", + "yuw","Latn","ZZ", + "zag","Latn","SD", + "zdj","Arab","KM", + "zea","Latn","NL", + "zia","Latn","ZZ", + "zlm","Latn","TG", + "zmi","Latn","MY", + "zne","Latn","ZZ", + "zu","Latn","ZA", + } // lsrs + } // likely + match{ + trie:bin{ // BytesTrie: 2283 bytes +00196ec3d974c16f77b377a26978a273 +79a2837a036c346dae0ee834f51165ee +3512ed6df335117ae820012a85481161 +6e01f398f41248616e01f347f42007b3 +14b32ab426b536b605b3c770b329b429 +b62910b5292a2bb026b122b205b3c75c +b329b429b62905b3c752b329b429b629 +1348616ef43f01752aef1166f23512f5 +7ae835016d2ae81165ee3502eda241f6 +22f7116de7350369327538e93eef1165 +ee3512e879e93512e57ae8351165ee34 +012a8548166562f24c6174ee35744a75 +a28e76016b2c7212ef65f43501eb22f4 +116df3350ee14beb0eeba280eea2b2ef +a2aff41172f535e14ee56ce7a8a2e911 +65ee34012a8545167468e94c6174ee35 +1165ee34012a855416616dec4c6174ee +351165ee34012a855416656cf54c6174 +ee356c1c6c366daa4875367812f96de7 +3512e865ee3501eda257f9126b6cee35 +643265a2d96b12e76de73512f86de735 +0472547a5ae7acd2f2a28bfa1172f534 +012a854c166174ee437972ec3512eb6d +f33512f375fa3571c16171a2ac72a449 +730011e855f12df130f234f428f5a6e8 +f71165ee35107301e829f220022a8543 +344c166174ee437972ec2b167972ec4c +6174ee2be832e942ee22ef1165ee3502 +62aa4968227310f2291165ee34012a85 +5316696ee84c6174ee35702e70527258 +735ee1a8c4e41165ee34012a85411672 +61e24c6174ee3512f66ff23512ef73e3 +3501e8acebf91161e129643467406848 +6b12e76de73501e322ee1173e33513e3 +6b6cee3512f561f23504753a769077a2 +6478a26df51165f3350cec16f30bf32a +f726f822f91171f535ec26f022f21171 +f535e709e726e822eb1171f535e226e4 +22e61171f5350ded16f00bf02af326f7 +22fa1171f535ed26ee22ef1171f535e8 +0be82ae926ea22ec1171f535e126e322 +e51171f53503e12ae326e822f31171f5 +350aef14f409f426f522f71171f535ef +26f022f21171f535e12ee32ae826ec22 +ee1171f5351171f5350361a650ed30ee +a281f71166f2351164e5356ea26b6fa2 +cf70086b4d6baa22735ae168f386f411 +70f4a28007b3c3a8b3a8acb4a8a9b5a8 +a6b601b129b62901e5a2cff41170f335 +1165ee34012a8547167572f54c6174ee +351165ee34012a8541167261e24c6174 +ee35623663acaf65366712e161f23512 +f470f33512ec6df3350a7944ee17ee2e +ef38f91165ee35106e01e235ef350164 +786e10e2237948e256e51165ee34012a +8544166576e14c6174ee3501e4a4b8ee +1165ee3501642c6e01ee35ef2310e131 +61a6816834693a6c427312ef65ee3512 +e467ee3513f16b6cee3513e56c75f935 +046b54725ce3a40beda2b5f21165ee34 +012a854f167279e14c6174ee3513e96b +6cee3502e3a4fdee22f3116df33567c2 +4c6ac1926aa28d6ba29a6ca2fd6d0011 +e73eee1eeea299f2a4aff3a27bf4a270 +f91165ee34012a854d16796df24c6174 +ee35e7a2aee9a258eb44ec1165ee3401 +2a854d166c79ed4c6174ee351162e735 +6e226e3a7140734675a4ed7612e66dee +3512f07ae83512e76df33501e8aa7be9 +116df3356134653a66406912ee6df335 +12f86df33512ef6df33502e146e242e5 +1165ee3501612af61169e43501eb22f8 +116df33509eb33eb2eed32ee50f56ef9 +1172f5351165ee34012a854b16686df2 +4c6174ee351165ee34012a854b166e64 +e14c6174ee351174f2357236763c7848 +e14ee71166f23512e965ee3501e222f2 +116df33512e46df3351165ee34012a85 +4716656ff24c6174ee350e753be21ee2 +50e7a291eea8a9ef1165ee34012a854c +16616fef4c6174ee351164e529753277 +387a40e11169f43512e166f23513e76c +75f93512e87ae8356f2a6f48724e735c +7402e730ef22f3126c75f935116cf635 +12fa65ee3501e922ed126c75f93513ed +6c75f935634669526b02e226ef22f312 +6c75f935126c75f93501e522e6116df3 +3512f76df335676a68a26e6905e40ae4 +a82fe722f31165ee35642e6b36e11165 +ee3513e16c75f93512f469f5350a751e +ec0beca2e3eea2e0f51168e935752ee1 +22e41165ee3501e922ee1167ee356138 +6b4c6e546f5a7312f764e52902e1a250 +eea457f8116fed3513f06b70e53512f7 +67ee3513ed6b6feb3506e123e184f24a +f4a6adf91172f534012a854116726dee +437972ec350162287310e82910f32961 +306a4a7312ee7ae83502e530eba40bf7 +1165ee35116fed3512e96df33564c0e0 +648865a248660366327538ef6af9116e +ec3512ed66e63506e80be82ae926f122 +f61166e635e226e522e61166e6351166 +e6351164e135027434753ae1106e01e2 +31ef3112f96ee53512f06df33507ef46 +efa29ff32ef496f51165f3351165f3a2 +8007b30cb342b43eb53ab601b129b629 +2a2bb026b14eb204b029b229b329b429 +b52904b029b229b329b429b52901b129 +b6291166e9356e9879a0e5a255ee1165 +eea28007b317b362b430b55ab601b229 +b62904b027b127b327b427b5272a2bb0 +30b12cb201b229b62904b029b129b329 +b427b52913e26b6cee3513ef6b6cee35 +61a25662a45f630a6f2c7a167a30efa4 +7ff91165ee3501e822ef117ae835117a +e8356f3070367212f366f23512e16df3 +3512f87ae8356438653e68466a4c6b12 +e261f23512ef7ae83513e26669ec3512 +f265ee3512f97ae8350015758ce265f2 +55f24af9a24cfa1172f534012a854c16 +6174ee437972ec351161f2a28007b313 +b33cb426b522b605b422b429b529b629 +10b3292a2bb026b122b205b40fb429b5 +29b62905b406b429b529b629b029b129 +b2291165f335e2a2e0e62aeb1165ee35 +116eec3575a40a7634793a7a4ee11273 +73f92912ec61f23503e82aec26ee22f0 +1161f23512e261fa3566356c1e6c3e70 +447203f12af326f922fa1161f23512ee +73f13501e322e41161f235663069366a +12f061f23512e261f23513e97379f235 +613e624e635a64906501e222e31161f2 +3502e526ef32f41173f13501e822f611 +61f23505f709f726f822f91161f235e8 +2eed22f11161f2351165ee351161f235 +12e661f2350c7642e82ae83eee42f260 +f30168287310e82910f2291168e93511 +65ee34012a854216656ee74c6174ee35 +1166f235762e7a3ae51172f53501e522 +f5116df33512e36de7356a1b6a306d44 +7412ea6df33501ee2af1116de735116d +f33512ed6de735623065366812f26de7 +3512fa61f23512ed65ee35 + } // trie + regionToPartitions:bin{ // 1677 bytes +000008090a00020000000b0009000201 +090001010a000a000000000000000a0c +00000001010000000100000000000000 +000000000000010100000b0000000b00 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +0000000000000000000000000000000c +010001000000000d0100000d01000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000900000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +000000000a0000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000000000000 +00000000000000000000000101010102 +00020000010102010001020301010002 +01000101020001010101010101000202 +01020002020201010201000102020001 +01000101010100010201010201000201 +00020102010101000000010100010000 +01010002000200000000000000000000 +04010002000100010400000000000000 +00000101010d00000000010000000000 +00000001010200010001000001000000 +00000100000105000201020101010000 +02010100020101020203000100020000 +00000000000000000006000102000000 +01000201000000000000000101010000 +00000000010101010001010101000000 +00000000000000010000000000000002 +00010100000000000000000000000000 +00010001010100000001020001000100 +00000001000201010102000000000001 +00010000000000000101010101000004 +00040001010102010300000101010106 +03020402010101010201010100010001 +01010002000001000001010001000101 +00000000010000000000000000000000 +00010000000000000000000000000002 +00000002010101000001010201000000 +07010100000100020001000000000000 +00000000000000010000000000010000 +00000000000000010000000000000000 +00010000000100010001000000010101 +01010001010101010101010100000201 +01010200020101010002010001010100 +01010101040101000100020001010000 +01010000000000010000000000030e00 +00000007000000000002010100020002 +00020007000000000100000000000001 +00000000000000000000010000000000 +00000000000000010000000000000000 +00000000000000000001000000000000 +00000000000000000000000001010000 +00000000000000000000000001010000 +00000001000000000000000000000001 +00000000010000000001000000 + } // regionToPartitions + partitions{".","0","1","2","3","4","5","6","0123456","03","16","02","05","04","012346"} + paradigms{ + "es","Latn","ES", + "pt","Latn","BR", + "es","Latn","419", + "en","Latn","GB", + "pt","Latn","PT", + "en","Latn","US", + } + distances:intvector{80,50,4,3} + } // match +} diff --git a/source/data/misc/likelySubtags.txt b/source/data/misc/likelySubtags.txt index c409f6c..f2cfd46 100644 --- a/source/data/misc/likelySubtags.txt +++ b/source/data/misc/likelySubtags.txt @@ -17,6 +17,7 @@ likelySubtags:table(nofallback){ ada{"ada_Latn_GH"} ade{"ade_Latn_ZZ"} adj{"adj_Latn_ZZ"} + adp{"adp_Tibt_BT"} ady{"ady_Cyrl_RU"} adz{"adz_Latn_ZZ"} ae{"ae_Avst_IR"} @@ -44,6 +45,7 @@ likelySubtags:table(nofallback){ amn{"amn_Latn_ZZ"} amo{"amo_Latn_NG"} amp{"amp_Latn_ZZ"} + an{"an_Latn_ES"} anc{"anc_Latn_ZZ"} ank{"ank_Latn_ZZ"} ann{"ann_Latn_ZZ"} @@ -65,6 +67,7 @@ likelySubtags:table(nofallback){ arn{"arn_Latn_CL"} aro{"aro_Latn_BO"} arq{"arq_Arab_DZ"} + ars{"ars_Arab_SA"} ary{"ary_Arab_MA"} arz{"arz_Arab_EG"} as{"as_Beng_IN"} @@ -137,7 +140,6 @@ likelySubtags:table(nofallback){ bhb{"bhb_Deva_IN"} bhg{"bhg_Latn_ZZ"} bhi{"bhi_Deva_IN"} - bhk{"bhk_Latn_PH"} bhl{"bhl_Latn_ZZ"} bho{"bho_Deva_IN"} bhy{"bhy_Latn_ZZ"} @@ -233,6 +235,7 @@ likelySubtags:table(nofallback){ cho{"cho_Latn_US"} chp{"chp_Latn_CA"} chr{"chr_Cher_US"} + cic{"cic_Latn_US"} cja{"cja_Arab_KH"} cjm{"cjm_Cham_VN"} cjv{"cjv_Latn_ZZ"} @@ -289,6 +292,7 @@ likelySubtags:table(nofallback){ doi{"doi_Arab_IN"} dop{"dop_Latn_ZZ"} dow{"dow_Latn_ZZ"} + drh{"drh_Mong_CN"} dri{"dri_Latn_ZZ"} drs{"drs_Ethi_ZZ"} dsb{"dsb_Latn_DE"} @@ -642,6 +646,7 @@ likelySubtags:table(nofallback){ ktb{"ktb_Ethi_ZZ"} ktm{"ktm_Latn_ZZ"} kto{"kto_Latn_ZZ"} + ktr{"ktr_Latn_MY"} ku{"ku_Latn_TR"} ku_Arab{"ku_Arab_IQ"} ku_LB{"ku_Arab_LB"} @@ -660,8 +665,10 @@ likelySubtags:table(nofallback){ kw{"kw_Latn_GB"} kwj{"kwj_Latn_ZZ"} kwo{"kwo_Latn_ZZ"} + kwq{"kwq_Latn_ZZ"} kxa{"kxa_Latn_ZZ"} kxc{"kxc_Ethi_ZZ"} + kxe{"kxe_Latn_ZZ"} kxm{"kxm_Thai_TH"} kxp{"kxp_Arab_PK"} kxw{"kxw_Latn_ZZ"} @@ -673,7 +680,9 @@ likelySubtags:table(nofallback){ ky_TR{"ky_Latn_TR"} kye{"kye_Latn_ZZ"} kyx{"kyx_Latn_ZZ"} + kzj{"kzj_Latn_MY"} kzr{"kzr_Latn_ZZ"} + kzt{"kzt_Latn_MY"} la{"la_Latn_VA"} lab{"lab_Lina_GR"} lad{"lad_Hebr_IL"} @@ -810,6 +819,7 @@ likelySubtags:table(nofallback){ mnf{"mnf_Latn_ZZ"} mni{"mni_Beng_IN"} mnw{"mnw_Mymr_MM"} + mo{"mo_Latn_RO"} moa{"moa_Latn_ZZ"} moe{"moe_Latn_CA"} moh{"moh_Latn_CA"} @@ -982,6 +992,7 @@ likelySubtags:table(nofallback){ pnn{"pnn_Latn_ZZ"} pnt{"pnt_Grek_GR"} pon{"pon_Latn_FM"} + ppa{"ppa_Deva_IN"} ppo{"ppo_Latn_ZZ"} pra{"pra_Khar_PK"} prd{"prd_Arab_IR"} @@ -1156,6 +1167,7 @@ likelySubtags:table(nofallback){ tdd{"tdd_Tale_CN"} tdg{"tdg_Deva_NP"} tdh{"tdh_Deva_NP"} + tdu{"tdu_Latn_MY"} te{"te_Telu_IN"} ted{"ted_Latn_ZZ"} tem{"tem_Latn_SL"} @@ -1685,6 +1697,7 @@ likelySubtags:table(nofallback){ unr_Deva{"unr_Deva_NP"} unr_NP{"unr_Deva_NP"} unx{"unx_Beng_IN"} + uok{"uok_Latn_ZZ"} ur{"ur_Arab_PK"} uri{"uri_Latn_ZZ"} urt{"urt_Latn_ZZ"} diff --git a/source/data/misc/metaZones.txt b/source/data/misc/metaZones.txt index 39d0139..3bf806e 100644 --- a/source/data/misc/metaZones.txt +++ b/source/data/misc/metaZones.txt @@ -3647,11 +3647,11 @@ metaZones:table(nofallback){ { "Europe_Eastern", "1970-01-01 00:00", - "1978-10-14 21:00", + "1978-06-28 21:00", } { "Turkey", - "1978-10-14 21:00", + "1978-06-28 21:00", "1985-04-19 21:00", } { diff --git a/source/data/misc/metadata.txt b/source/data/misc/metadata.txt index a2ba72c..3d13ef2 100644 --- a/source/data/misc/metadata.txt +++ b/source/data/misc/metadata.txt @@ -67,6 +67,10 @@ metadata:table(nofallback){ reason{"deprecated"} replacement{"jbo"} } + asd{ + reason{"deprecated"} + replacement{"snz"} + } asm{ reason{"overlong"} replacement{"as"} @@ -303,6 +307,10 @@ metadata:table(nofallback){ reason{"macrolanguage"} replacement{"zza"} } + dit{ + reason{"deprecated"} + replacement{"dif"} + } div{ reason{"overlong"} replacement{"dv"} @@ -847,6 +855,10 @@ metadata:table(nofallback){ reason{"overlong"} replacement{"lt"} } + llo{ + reason{"deprecated"} + replacement{"ngt"} + } lmm{ reason{"deprecated"} replacement{"rmx"} @@ -967,6 +979,10 @@ metadata:table(nofallback){ reason{"overlong"} replacement{"my"} } + myd{ + reason{"deprecated"} + replacement{"aog"} + } myt{ reason{"deprecated"} replacement{"mry"} @@ -1011,6 +1027,10 @@ metadata:table(nofallback){ reason{"overlong"} replacement{"nn"} } + nns{ + reason{"deprecated"} + replacement{"nbr"} + } nnx{ reason{"deprecated"} replacement{"ngv"} @@ -2111,6 +2131,10 @@ metadata:table(nofallback){ reason{"overlong"} replacement{"SX"} } + no23{ + reason{"deprecated"} + replacement{"no50"} + } nzn{ reason{"deprecated"} replacement{"nzauk nzbop nzgis nzhkb nzmwt nzntl nztki nzwgn nzwko"} @@ -4843,6 +4867,7 @@ metadata:table(nofallback){ "agq_CM", "ak_GH", "am_ET", + "an_ES", "ar_001", "arn_CL", "as_IN", @@ -4878,6 +4903,7 @@ metadata:table(nofallback){ "ceb_PH", "cgg_UG", "chr_US", + "cic_US", "ckb_IQ", "co_FR", "cs_CZ", @@ -5003,6 +5029,7 @@ metadata:table(nofallback){ "ms_MY", "mt_MT", "mua_CM", + "mus_US", "my_MM", "myv_RU", "mzn_IR", @@ -5025,6 +5052,7 @@ metadata:table(nofallback){ "om_ET", "or_IN", "os_GE", + "osa_US", "pa_Arab_PK", "pa_Guru", "pa_Guru_IN", @@ -5073,9 +5101,12 @@ metadata:table(nofallback){ "ss_ZA", "ssy_ER", "st_ZA", + "su_Latn", + "su_Latn_ID", "sv_SE", "sw_TZ", "syr_IQ", + "szl_PL", "ta_IN", "te_IN", "teo_UG", diff --git a/source/data/misc/pluralRanges.txt b/source/data/misc/pluralRanges.txt index 4f68ce5..6b100a7 100644 --- a/source/data/misc/pluralRanges.txt +++ b/source/data/misc/pluralRanges.txt @@ -2,89 +2,90 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pluralRanges:table(nofallback){ locales{ - af{"set05"} - ak{"set02"} + af{"set04"} + ak{"set07"} am{"set01"} + an{"set04"} ar{"set18"} as{"set01"} - az{"set04"} + az{"set03"} be{"set15"} - bg{"set05"} + bg{"set04"} bn{"set01"} bs{"set11"} - ca{"set05"} + ca{"set04"} cs{"set14"} cy{"set17"} - da{"set06"} - de{"set04"} - el{"set04"} - en{"set05"} - es{"set05"} - et{"set05"} - eu{"set05"} - fa{"set02"} - fi{"set05"} - fil{"set06"} + da{"set05"} + de{"set03"} + el{"set03"} + en{"set04"} + es{"set04"} + et{"set04"} + eu{"set04"} + fa{"set07"} + fi{"set04"} + fil{"set05"} fr{"set01"} ga{"set16"} - gl{"set04"} - gsw{"set04"} + gl{"set03"} + gsw{"set03"} gu{"set01"} he{"set13"} hi{"set01"} hr{"set11"} - hu{"set04"} + hu{"set03"} hy{"set01"} - ia{"set05"} + ia{"set04"} id{"set00"} - io{"set05"} - is{"set06"} - it{"set04"} + io{"set04"} + is{"set05"} + it{"set03"} ja{"set00"} - ka{"set03"} - kk{"set04"} + ka{"set02"} + kk{"set03"} km{"set00"} kn{"set01"} ko{"set00"} - ky{"set04"} + ky{"set03"} lo{"set00"} lt{"set15"} lv{"set09"} mk{"set08"} - ml{"set04"} - mn{"set04"} + ml{"set03"} + mn{"set03"} mr{"set01"} ms{"set00"} my{"set00"} - nb{"set05"} - ne{"set04"} - nl{"set04"} - or{"set02"} - pa{"set06"} + nb{"set04"} + ne{"set03"} + nl{"set03"} + or{"set07"} + pa{"set05"} pl{"set14"} ps{"set01"} pt{"set01"} ro{"set10"} ru{"set15"} - sc{"set04"} - scn{"set04"} - sd{"set02"} - si{"set07"} + sc{"set03"} + scn{"set03"} + sd{"set07"} + si{"set06"} sk{"set14"} sl{"set12"} - sq{"set04"} + sq{"set03"} sr{"set11"} - sv{"set05"} - sw{"set04"} - ta{"set04"} - te{"set04"} + sv{"set04"} + sw{"set03"} + ta{"set03"} + te{"set03"} th{"set00"} - tk{"set04"} - tr{"set04"} - ug{"set04"} + tk{"set03"} + tr{"set03"} + ug{"set03"} uk{"set15"} - ur{"set05"} - uz{"set04"} + ur{"set04"} + uz{"set03"} vi{"set00"} yue{"set00"} zh{"set00"} @@ -118,18 +119,13 @@ pluralRanges:table(nofallback){ set02{ { "one", - "one", "other", - } - { "one", - "other", - "other", } { "other", "one", - "one", + "other", } { "other", @@ -141,12 +137,12 @@ pluralRanges:table(nofallback){ { "one", "other", - "one", + "other", } { "other", "one", - "other", + "one", } { "other", @@ -163,7 +159,7 @@ pluralRanges:table(nofallback){ { "other", "one", - "one", + "other", } { "other", @@ -174,13 +170,18 @@ pluralRanges:table(nofallback){ set05{ { "one", + "one", + "one", + } + { + "one", "other", "other", } { "other", "one", - "other", + "one", } { "other", @@ -202,7 +203,7 @@ pluralRanges:table(nofallback){ { "other", "one", - "one", + "other", } { "other", @@ -214,7 +215,7 @@ pluralRanges:table(nofallback){ { "one", "one", - "one", + "other", } { "one", @@ -224,7 +225,7 @@ pluralRanges:table(nofallback){ { "other", "one", - "other", + "one", } { "other", diff --git a/source/data/misc/plurals.txt b/source/data/misc/plurals.txt index b7cfd6b..cfa9e90 100644 --- a/source/data/misc/plurals.txt +++ b/source/data/misc/plurals.txt @@ -5,8 +5,9 @@ plurals:table(nofallback){ af{"set8"} ak{"set6"} am{"set1"} - ar{"set33"} - ars{"set33"} + an{"set8"} + ar{"set34"} + ars{"set34"} as{"set1"} asa{"set8"} ast{"set4"} @@ -15,7 +16,7 @@ plurals:table(nofallback){ bem{"set8"} bez{"set8"} bg{"set8"} - bh{"set6"} + bho{"set6"} bm{"set0"} bn{"set1"} bo{"set0"} @@ -29,7 +30,7 @@ plurals:table(nofallback){ chr{"set8"} ckb{"set8"} cs{"set24"} - cy{"set34"} + cy{"set35"} da{"set9"} de{"set4"} dsb{"set22"} @@ -98,7 +99,7 @@ plurals:table(nofallback){ ksb{"set8"} ksh{"set15"} ku{"set8"} - kw{"set35"} + kw{"set33"} ky{"set8"} lag{"set14"} lb{"set8"} @@ -136,6 +137,7 @@ plurals:table(nofallback){ om{"set8"} or{"set8"} os{"set8"} + osa{"set0"} pa{"set6"} pap{"set8"} pl{"set25"} @@ -176,6 +178,7 @@ plurals:table(nofallback){ ss{"set8"} ssy{"set8"} st{"set8"} + su{"set0"} sv{"set4"} sw{"set4"} syr{"set8"} @@ -214,6 +217,7 @@ plurals:table(nofallback){ locales_ordinals{ af{"set36"} am{"set36"} + an{"set36"} ar{"set36"} as{"set56"} az{"set54"} @@ -680,6 +684,31 @@ plurals:table(nofallback){ } set33{ few{ + "n % 100 = 3,23,43,63,83 @integer 3, 23, 43, 63, 83, 103, 123, 143, 1" + "003, … @decimal 3.0, 23.0, 43.0, 63.0, 83.0, 103.0, 123.0, 143.0, 10" + "03.0, …" + } + many{ + "n != 1 and n % 100 = 1,21,41,61,81 @integer 21, 41, 61, 81, 101, 121" + ", 141, 161, 1001, … @decimal 21.0, 41.0, 61.0, 81.0, 101.0, 121.0, 1" + "41.0, 161.0, 1001.0, …" + } + one{"n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000"} + other{ + " @integer 4~19, 100, 1004, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10." + "0, 100.0, 1000.1, 1000000.0, …" + } + two{ + "n % 100 = 2,22,42,62,82 or n % 1000 = 0 and n % 100000 = 1000..20000" + ",40000,60000,80000 or n != 0 and n % 1000000 = 100000 @integer 2, 22" + ", 42, 62, 82, 102, 122, 142, 1000, 10000, 100000, … @decimal 2.0, 22" + ".0, 42.0, 62.0, 82.0, 102.0, 122.0, 142.0, 1000.0, 10000.0, 100000.0" + ", …" + } + zero{"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000"} + } + set34{ + few{ "n % 100 = 3..10 @integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5" ".0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …" } @@ -696,7 +725,7 @@ plurals:table(nofallback){ two{"n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000"} zero{"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000"} } - set34{ + set35{ few{"n = 3 @integer 3 @decimal 3.0, 3.00, 3.000, 3.0000"} many{"n = 6 @integer 6 @decimal 6.0, 6.00, 6.000, 6.0000"} one{"n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000"} @@ -708,30 +737,6 @@ plurals:table(nofallback){ two{"n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000"} zero{"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000"} } - set35{ - few{ - "n % 100 = 3,23,43,63,83 @integer 3, 23, 43, 63, 83, 103, 123, 143, 1" - "003, … @decimal 3.0, 23.0, 43.0, 63.0, 83.0, 103.0, 123.0, 143.0, 10" - "03.0, …" - } - many{ - "n != 1 and n % 100 = 1,21,41,61,81 @integer 21, 41, 61, 81, 101, 121" - ", 141, 161, 1001, … @decimal 21.0, 41.0, 61.0, 81.0, 101.0, 121.0, 1" - "41.0, 161.0, 1001.0, …" - } - one{"n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000"} - other{ - " @integer 4~19, 100, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100" - ".0, 1000.0, 10000.0, 100000.0, 1000000.0, …" - } - two{ - "n % 100 = 2,22,42,62,82 or n%1000 = 0 and n%100000=1000..20000,40000" - ",60000,80000 or n!=0 and n%1000000=100000@integer 2, 22, 42, 62, 82," - " 102, 122, 142, 1002, … @decimal 2.0, 22.0, 42.0, 62.0, 82.0, 102.0," - " 122.0, 142.0, 1002.0, …" - } - zero{"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000"} - } set36{ other{" @integer 0~15, 100, 1000, 10000, 100000, 1000000, …"} } diff --git a/source/data/misc/supplementalData.txt b/source/data/misc/supplementalData.txt index 96dde68..e172c5c 100644 --- a/source/data/misc/supplementalData.txt +++ b/source/data/misc/supplementalData.txt @@ -2104,7 +2104,7 @@ supplementalData:table(nofallback){ "islamic-tbla", } } - cldrVersion{"35.1"} + cldrVersion{"36"} codeMappings{ { "AA", @@ -4658,9 +4658,11 @@ supplementalData:table(nofallback){ "aam", "adp", "agp", + "ais", "aju", "als", "arb", + "asd", "aue", "ayr", "ayx", @@ -4701,10 +4703,12 @@ supplementalData:table(nofallback){ "dhd", "dik", "diq", + "dit", "djl", "dkl", "drh", "drw", + "dud", "duj", "dwl", "dzd", @@ -4766,9 +4770,11 @@ supplementalData:table(nofallback){ "kzh", "kzj", "kzt", + "lba", "lbk", "leg", "lii", + "llo", "lmm", "lsg", "lvs", @@ -4787,6 +4793,8 @@ supplementalData:table(nofallback){ "mwd", "mwj", "mwx~y", + "myd", + "myi", "myq", "myt", "nad", @@ -4795,6 +4803,7 @@ supplementalData:table(nofallback){ "ncp", "nln", "nlr", + "nns", "nnx", "no", "noo", @@ -4943,7 +4952,8 @@ supplementalData:table(nofallback){ "ahg~i", "ahk~p", "ahr~t", - "aia~t", + "aia~r", + "ait", "aiw~y", "aja", "ajg", @@ -4983,7 +4993,8 @@ supplementalData:table(nofallback){ "arh~l", "arn~z", "as", - "asa~l", + "asa~c", + "ase~l", "asn~z", "ata~e", "atg~z", @@ -5120,6 +5131,7 @@ supplementalData:table(nofallback){ "cek~l", "cen", "cet", + "cey", "cfa", "cfd", "cfg", @@ -5266,7 +5278,8 @@ supplementalData:table(nofallback){ "dia~d", "dif~j", "dil~p", - "dir~u", + "dir~s", + "diu", "diw~z", "dja~f", "dji~k", @@ -5321,7 +5334,8 @@ supplementalData:table(nofallback){ "dtm~p", "dtr~u", "dty", - "dua~i", + "dua~c", + "due~i", "duk~s", "duu~z", "dv", @@ -5999,7 +6013,7 @@ supplementalData:table(nofallback){ "lau", "law~z", "lb", - "lba~c", + "lbb~c", "lbe~g", "lbi~j", "lbl~o", @@ -6044,7 +6058,8 @@ supplementalData:table(nofallback){ "lkl~o", "lkr~u", "lky", - "lla~q", + "lla~n", + "llp~q", "lls", "llu", "llx", @@ -6080,9 +6095,9 @@ supplementalData:table(nofallback){ "lsa", "lsd~e", "lsh~i", - "lsl~m", - "lso~p", + "lsl~p", "lsr~t", + "lsv", "lsy", "lt", "ltc", @@ -6097,6 +6112,7 @@ supplementalData:table(nofallback){ "luy~z", "lv", "lva", + "lvi", "lvk", "lvu", "lwa", @@ -6189,7 +6205,9 @@ supplementalData:table(nofallback){ "mwz", "mxa~z", "my", - "myb~p", + "myb~c", + "mye~h", + "myj~p", "myr~s", "myu~z", "mza~e", @@ -6249,7 +6267,8 @@ supplementalData:table(nofallback){ "nma~z", "nn", "nna~n", - "nnp~w", + "nnp~r", + "nnt~w", "nny~z", "noa", "noc~n", @@ -6484,8 +6503,7 @@ supplementalData:table(nofallback){ "pmq~t", "pmw~z", "pna", - "pnc", - "pne", + "pnc~e", "png~z", "poc", "poe~i", @@ -6782,6 +6800,7 @@ supplementalData:table(nofallback){ "szp", "szs", "szv~w", + "szy", "ta", "taa~g", "tai~l", @@ -6821,8 +6840,8 @@ supplementalData:table(nofallback){ "tis~z", "tja", "tjg", - "tji", - "tjl~o", + "tji~j", + "tjl~p", "tjs", "tju", "tjw", @@ -6874,8 +6893,7 @@ supplementalData:table(nofallback){ "tvd~e", "tvk~o", "tvs~u", - "tvw", - "tvy", + "tvw~y", "twa~h", "twl~r", "twt~u", @@ -6967,9 +6985,11 @@ supplementalData:table(nofallback){ "ush~i", "usk", "usp", + "uss", "usu", "uta", "ute", + "uth", "utp", "utr", "utu", @@ -7071,6 +7091,7 @@ supplementalData:table(nofallback){ "wka~b", "wkd", "wkl", + "wkr", "wku", "wkw", "wky", @@ -11255,6 +11276,7 @@ supplementalData:table(nofallback){ "digital-terabit", "digital-terabyte", "duration-century", + "duration-decade", "duration-day", "duration-day-person", "duration-hour", @@ -11280,6 +11302,7 @@ supplementalData:table(nofallback){ "energy-kilojoule", "energy-kilowatt-hour", "energy-electronvolt", + "energy-therm-us", "energy-british-thermal-unit", "force-pound-force", "force-newton", @@ -11287,6 +11310,13 @@ supplementalData:table(nofallback){ "frequency-hertz", "frequency-kilohertz", "frequency-megahertz", + "graphics-dot-per-centimeter", + "graphics-dot-per-inch", + "graphics-em", + "graphics-megapixel", + "graphics-pixel", + "graphics-pixel-per-centimeter", + "graphics-pixel-per-inch", "length-astronomical-unit", "length-centimeter", "length-decimeter", @@ -11333,9 +11363,11 @@ supplementalData:table(nofallback){ "pressure-atmosphere", "pressure-hectopascal", "pressure-inch-hg", + "pressure-bar", "pressure-millibar", "pressure-millimeter-of-mercury", "pressure-pound-per-square-inch", + "pressure-pascal", "pressure-kilopascal", "pressure-megapascal", "speed-kilometer-per-hour", @@ -11407,6 +11439,7 @@ supplementalData:table(nofallback){ "biske", "bohoric", "boont", + "bornholm", "cisaup", "colb1945", "cornu", @@ -11728,6 +11761,11 @@ supplementalData:table(nofallback){ territories{"DZ"} } } + ars{ + primary{ + scripts{"Arab"} + } + } arw{ secondary{ scripts{"Latn"} @@ -11999,9 +12037,6 @@ supplementalData:table(nofallback){ } } bhk{ - primary{ - scripts{"Latn"} - } secondary{ territories{"PH"} } @@ -12354,6 +12389,11 @@ supplementalData:table(nofallback){ scripts{"Latn"} } } + cic{ + primary{ + scripts{"Latn"} + } + } cja{ primary{ scripts{"Arab"} @@ -13000,12 +13040,10 @@ supplementalData:table(nofallback){ } ff{ primary{ - scripts{ - "Latn", - "Adlm", - } + scripts{"Latn"} } secondary{ + scripts{"Adlm"} territories{ "GN", "SN", @@ -13451,9 +13489,6 @@ supplementalData:table(nofallback){ primary{ scripts{"Deva"} } - secondary{ - scripts{"Latn"} - } } gwi{ primary{ @@ -14806,14 +14841,14 @@ supplementalData:table(nofallback){ } mn{ primary{ - scripts{ - "Cyrl", - "Mong", - } + scripts{"Cyrl"} territories{"MN"} } secondary{ - scripts{"Phag"} + scripts{ + "Mong", + "Phag", + } territories{"CN"} } } @@ -15307,6 +15342,9 @@ supplementalData:table(nofallback){ } osa{ primary{ + scripts{"Osge"} + } + secondary{ scripts{"Latn"} } } @@ -18110,720 +18148,1836 @@ supplementalData:table(nofallback){ "0", } { - "*_*", - "*_*", - "60", - "0", + "*_*", + "*_*", + "60", + "0", + } + { + "*_*_*", + "*_*_*", + "96", + "0", + } + } + } + languageMatchingInfo{ + written{ + matchVariable{ + americas{"019"} + cnsar{"HK+MO"} + enUS{"AS+GU+MH+MP+PR+UM+US+VI"} + maghreb{"MA+DZ+TN+LY+MR+EH"} + } + paradigmLocales{ + "en", + "en_GB", + "es", + "es_419", + "pt_BR", + "pt_PT", + } + } + } + languageMatchingNew{ + written{ + { + "no", + "nb", + "1", + "0", + } + { + "hr", + "bs", + "4", + "0", + } + { + "sh", + "bs", + "4", + "0", + } + { + "sh", + "hr", + "4", + "0", + } + { + "sh", + "sr", + "4", + "0", + } + { + "ssy", + "aa", + "4", + "0", + } + { + "gsw", + "de", + "4", + "1", + } + { + "lb", + "de", + "4", + "1", + } + { + "da", + "no", + "8", + "0", + } + { + "da", + "nb", + "8", + "0", + } + { + "ab", + "ru", + "10", + "1", + } + { + "ach", + "en", + "10", + "1", + } + { + "af", + "nl", + "10", + "1", + } + { + "ak", + "en", + "10", + "1", + } + { + "ay", + "es", + "10", + "1", + } + { + "az", + "ru", + "10", + "1", + } + { + "be", + "ru", + "10", + "1", + } + { + "bem", + "en", + "10", + "1", + } + { + "bh", + "hi", + "10", + "1", + } + { + "bn", + "en", + "10", + "1", + } + { + "br", + "fr", + "10", + "1", + } + { + "ceb", + "fil", + "10", + "1", + } + { + "chr", + "en", + "10", + "1", + } + { + "ckb", + "ar", + "10", + "1", + } + { + "co", + "fr", + "10", + "1", + } + { + "crs", + "fr", + "10", + "1", + } + { + "cy", + "en", + "10", + "1", + } + { + "ee", + "en", + "10", + "1", + } + { + "eo", + "en", + "10", + "1", + } + { + "et", + "fi", + "10", + "1", + } + { + "eu", + "es", + "10", + "1", + } + { + "fo", + "da", + "10", + "1", + } + { + "fy", + "nl", + "10", + "1", + } + { + "ga", + "en", + "10", + "1", + } + { + "gaa", + "en", + "10", + "1", + } + { + "gd", + "en", + "10", + "1", + } + { + "gl", + "es", + "10", + "1", + } + { + "gn", + "es", + "10", + "1", + } + { + "gu", + "hi", + "10", + "1", + } + { + "ha", + "en", + "10", + "1", + } + { + "haw", + "en", + "10", + "1", + } + { + "ht", + "fr", + "10", + "1", + } + { + "hy", + "ru", + "10", + "1", + } + { + "ia", + "en", + "10", + "1", + } + { + "ig", + "en", + "10", + "1", + } + { + "is", + "en", + "10", + "1", + } + { + "jv", + "id", + "10", + "1", + } + { + "ka", + "en", + "10", + "1", + } + { + "kg", + "fr", + "10", + "1", + } + { + "kk", + "ru", + "10", + "1", + } + { + "km", + "en", + "10", + "1", + } + { + "kn", + "en", + "10", + "1", + } + { + "kri", + "en", + "10", + "1", + } + { + "ku", + "tr", + "10", + "1", + } + { + "ky", + "ru", + "10", + "1", + } + { + "la", + "it", + "10", + "1", + } + { + "lg", + "en", + "10", + "1", + } + { + "ln", + "fr", + "10", + "1", + } + { + "lo", + "en", + "10", + "1", + } + { + "loz", + "en", + "10", + "1", + } + { + "lua", + "fr", + "10", + "1", + } + { + "mfe", + "en", + "10", + "1", + } + { + "mg", + "fr", + "10", + "1", + } + { + "mi", + "en", + "10", + "1", + } + { + "mk", + "bg", + "10", + "1", + } + { + "ml", + "en", + "10", + "1", + } + { + "mn", + "ru", + "10", + "1", + } + { + "mr", + "hi", + "10", + "1", + } + { + "ms", + "id", + "10", + "1", + } + { + "mt", + "en", + "10", + "1", + } + { + "my", + "en", + "10", + "1", + } + { + "ne", + "en", + "10", + "1", + } + { + "nn", + "nb", + "10", + "0", + } + { + "nn", + "no", + "10", + "1", + } + { + "nso", + "en", + "10", + "1", + } + { + "ny", + "en", + "10", + "1", + } + { + "nyn", + "en", + "10", + "1", + } + { + "oc", + "fr", + "10", + "1", + } + { + "om", + "en", + "10", + "1", + } + { + "or", + "en", + "10", + "1", + } + { + "pa", + "en", + "10", + "1", + } + { + "pcm", + "en", + "10", + "1", + } + { + "ps", + "en", + "10", + "1", + } + { + "qu", + "es", + "10", + "1", + } + { + "rm", + "de", + "10", + "1", + } + { + "rn", + "en", + "10", + "1", + } + { + "rw", + "fr", + "10", + "1", + } + { + "sa", + "hi", + "10", + "1", + } + { + "sd", + "en", + "10", + "1", + } + { + "si", + "en", + "10", + "1", + } + { + "sn", + "en", + "10", + "1", + } + { + "so", + "en", + "10", + "1", + } + { + "sq", + "en", + "10", + "1", + } + { + "st", + "en", + "10", + "1", + } + { + "su", + "id", + "10", + "1", + } + { + "sw", + "en", + "10", + "1", + } + { + "ta", + "en", + "10", + "1", + } + { + "te", + "en", + "10", + "1", + } + { + "tg", + "ru", + "10", + "1", + } + { + "ti", + "en", + "10", + "1", + } + { + "tk", + "ru", + "10", + "1", + } + { + "tlh", + "en", + "10", + "1", + } + { + "tn", + "en", + "10", + "1", + } + { + "to", + "en", + "10", + "1", + } + { + "tt", + "ru", + "10", + "1", + } + { + "tum", + "en", + "10", + "1", + } + { + "ug", + "zh", + "10", + "1", + } + { + "ur", + "en", + "10", + "1", + } + { + "uz", + "ru", + "10", + "1", + } + { + "wo", + "fr", + "10", + "1", + } + { + "xh", + "en", + "10", + "1", + } + { + "yi", + "en", + "10", + "1", + } + { + "yo", + "en", + "10", + "1", + } + { + "zu", + "en", + "10", + "1", + } + { + "aao", + "ar", + "10", + "1", + } + { + "abh", + "ar", + "10", + "1", + } + { + "abv", + "ar", + "10", + "1", + } + { + "acm", + "ar", + "10", + "1", + } + { + "acq", + "ar", + "10", + "1", + } + { + "acw", + "ar", + "10", + "1", + } + { + "acx", + "ar", + "10", + "1", + } + { + "acy", + "ar", + "10", + "1", + } + { + "adf", + "ar", + "10", + "1", + } + { + "aeb", + "ar", + "10", + "1", + } + { + "aec", + "ar", + "10", + "1", + } + { + "afb", + "ar", + "10", + "1", + } + { + "ajp", + "ar", + "10", + "1", + } + { + "apc", + "ar", + "10", + "1", + } + { + "apd", + "ar", + "10", + "1", + } + { + "arq", + "ar", + "10", + "1", + } + { + "ars", + "ar", + "10", + "1", + } + { + "ary", + "ar", + "10", + "1", + } + { + "arz", + "ar", + "10", + "1", + } + { + "auz", + "ar", + "10", + "1", + } + { + "avl", + "ar", + "10", + "1", + } + { + "ayh", + "ar", + "10", + "1", + } + { + "ayl", + "ar", + "10", + "1", + } + { + "ayn", + "ar", + "10", + "1", + } + { + "ayp", + "ar", + "10", + "1", + } + { + "bbz", + "ar", + "10", + "1", + } + { + "pga", + "ar", + "10", + "1", + } + { + "shu", + "ar", + "10", + "1", + } + { + "ssh", + "ar", + "10", + "1", + } + { + "azb", + "az", + "10", + "1", + } + { + "vro", + "et", + "10", + "1", + } + { + "ffm", + "ff", + "10", + "1", + } + { + "fub", + "ff", + "10", + "1", + } + { + "fue", + "ff", + "10", + "1", + } + { + "fuf", + "ff", + "10", + "1", + } + { + "fuh", + "ff", + "10", + "1", + } + { + "fui", + "ff", + "10", + "1", + } + { + "fuq", + "ff", + "10", + "1", + } + { + "fuv", + "ff", + "10", + "1", + } + { + "gnw", + "gn", + "10", + "1", + } + { + "gui", + "gn", + "10", + "1", + } + { + "gun", + "gn", + "10", + "1", + } + { + "nhd", + "gn", + "10", + "1", + } + { + "ikt", + "iu", + "10", + "1", + } + { + "enb", + "kln", + "10", + "1", + } + { + "eyo", + "kln", + "10", + "1", + } + { + "niq", + "kln", + "10", + "1", + } + { + "oki", + "kln", + "10", + "1", + } + { + "pko", + "kln", + "10", + "1", + } + { + "sgc", + "kln", + "10", + "1", + } + { + "tec", + "kln", + "10", + "1", + } + { + "tuy", + "kln", + "10", + "1", + } + { + "gom", + "kok", + "10", + "1", + } + { + "gkp", + "kpe", + "10", + "1", + } + { + "ida", + "luy", + "10", + "1", + } + { + "lkb", + "luy", + "10", + "1", + } + { + "lko", + "luy", + "10", + "1", + } + { + "lks", + "luy", + "10", + "1", + } + { + "lri", + "luy", + "10", + "1", + } + { + "lrm", + "luy", + "10", + "1", + } + { + "lsm", + "luy", + "10", + "1", + } + { + "lto", + "luy", + "10", + "1", + } + { + "lts", + "luy", + "10", + "1", + } + { + "lwg", + "luy", + "10", + "1", + } + { + "nle", + "luy", + "10", + "1", + } + { + "nyd", + "luy", + "10", + "1", + } + { + "rag", + "luy", + "10", + "1", + } + { + "ltg", + "lv", + "10", + "1", + } + { + "bhr", + "mg", + "10", + "1", } { - "*_*_*", - "*_*_*", - "96", - "0", + "bjq", + "mg", + "10", + "1", } - } - } - languageMatchingInfo{ - written{ - matchVariable{ - americas{"019"} - cnsar{"HK+MO"} - enUS{"AS+GU+MH+MP+PR+UM+US+VI"} - maghreb{"MA+DZ+TN+LY+MR+EH"} + { + "bmm", + "mg", + "10", + "1", } - paradigmLocales{ - "en", - "en_GB", - "es", - "es_419", - "pt_BR", - "pt_PT", + { + "bzc", + "mg", + "10", + "1", } - } - } - languageMatchingNew{ - written{ { - "no", - "nb", + "msh", + "mg", + "10", "1", - "0", } { - "hr", - "bs", - "4", - "0", + "skg", + "mg", + "10", + "1", } { - "sh", - "bs", - "4", - "0", + "tdx", + "mg", + "10", + "1", } { - "sh", - "hr", - "4", - "0", + "tkg", + "mg", + "10", + "1", } { - "sh", - "sr", - "4", - "0", + "txy", + "mg", + "10", + "1", } { - "ssy", - "aa", - "4", - "0", + "xmv", + "mg", + "10", + "1", } { - "gsw", - "de", - "4", + "xmw", + "mg", + "10", "1", } { - "lb", - "de", - "4", + "mvf", + "mn", + "10", "1", } { - "da", - "no", - "8", - "0", + "bjn", + "ms", + "10", + "1", } { - "da", - "nb", - "8", - "0", + "btj", + "ms", + "10", + "1", } { - "ab", - "ru", + "bve", + "ms", "10", "1", } { - "ach", - "en", + "bvu", + "ms", "10", "1", } { - "af", - "nl", + "coa", + "ms", "10", "1", } { - "ak", - "en", + "dup", + "ms", "10", "1", } { - "ay", - "es", + "hji", + "ms", "10", "1", } { - "az", - "ru", + "id", + "ms", "10", "1", } { - "be", - "ru", + "jak", + "ms", "10", "1", } { - "bem", - "en", + "jax", + "ms", "10", "1", } { - "bh", - "hi", + "kvb", + "ms", "10", "1", } { - "bn", - "en", + "kvr", + "ms", "10", "1", } { - "br", - "fr", + "kxd", + "ms", "10", "1", } { - "ceb", - "fil", + "lce", + "ms", "10", "1", } { - "chr", - "en", + "lcf", + "ms", "10", "1", } { - "ckb", - "ar", + "liw", + "ms", "10", "1", } { - "co", - "fr", + "max", + "ms", "10", "1", } { - "crs", - "fr", + "meo", + "ms", "10", "1", } { - "cy", - "en", + "mfa", + "ms", "10", "1", } { - "ee", - "en", + "mfb", + "ms", "10", "1", } { - "eo", - "en", + "min", + "ms", "10", "1", } { - "et", - "fi", + "mqg", + "ms", "10", "1", } { - "eu", - "es", + "msi", + "ms", "10", "1", } { - "fo", - "da", + "mui", + "ms", "10", "1", } { - "fy", - "nl", + "orn", + "ms", "10", "1", } { - "ga", - "en", + "ors", + "ms", "10", "1", } { - "gaa", - "en", + "pel", + "ms", "10", "1", } { - "gd", - "en", + "pse", + "ms", "10", "1", } { - "gl", - "es", + "tmw", + "ms", "10", "1", } { - "gn", - "es", + "urk", + "ms", "10", "1", } { - "gu", - "hi", + "vkk", + "ms", "10", "1", } { - "ha", - "en", + "vkt", + "ms", "10", "1", } { - "haw", - "en", + "xmm", + "ms", "10", "1", } { - "ht", - "fr", + "zlm", + "ms", "10", "1", } { - "hy", - "ru", + "zmi", + "ms", "10", "1", } { - "ia", - "en", + "dty", + "ne", "10", "1", } { - "ig", - "en", + "gax", + "om", "10", "1", } { - "is", - "en", + "hae", + "om", "10", "1", } { - "jv", - "id", + "orc", + "om", "10", "1", } { - "ka", - "en", + "spv", + "or", "10", "1", } { - "kg", - "fr", + "pbt", + "ps", "10", "1", } { - "kk", - "ru", + "pst", + "ps", "10", "1", } { - "km", - "en", + "qub", + "qu", "10", "1", } { - "kn", - "en", + "qud", + "qu", "10", "1", } { - "kri", - "en", + "quf", + "qu", "10", "1", } { - "ku", - "tr", + "qug", + "qu", "10", "1", } { - "ky", - "ru", + "quh", + "qu", "10", "1", } { - "la", - "it", + "quk", + "qu", "10", "1", } { - "lg", - "en", + "qul", + "qu", "10", "1", } { - "ln", - "fr", + "qup", + "qu", "10", "1", } { - "lo", - "en", + "qur", + "qu", "10", "1", } { - "loz", - "en", + "qus", + "qu", "10", "1", } { - "lua", - "fr", + "quw", + "qu", "10", "1", } { - "mfe", - "en", + "qux", + "qu", "10", "1", } { - "mg", - "fr", + "quy", + "qu", "10", "1", } { - "mi", - "en", + "qva", + "qu", "10", "1", } { - "mk", - "bg", + "qvc", + "qu", "10", "1", } { - "ml", - "en", + "qve", + "qu", "10", "1", } { - "mn", - "ru", + "qvh", + "qu", "10", "1", } { - "mr", - "hi", + "qvi", + "qu", "10", "1", } { - "ms", - "id", + "qvj", + "qu", "10", "1", } { - "mt", - "en", + "qvl", + "qu", "10", "1", } { - "my", - "en", + "qvm", + "qu", "10", "1", } { - "ne", - "en", + "qvn", + "qu", "10", "1", } { - "nn", - "nb", + "qvo", + "qu", "10", - "0", + "1", } { - "nn", - "no", + "qvp", + "qu", "10", "1", } { - "nso", - "en", + "qvs", + "qu", "10", "1", } { - "ny", - "en", + "qvw", + "qu", "10", "1", } { - "nyn", - "en", + "qvz", + "qu", "10", "1", } { - "oc", - "fr", + "qwa", + "qu", "10", "1", } { - "om", - "en", + "qwc", + "qu", "10", "1", } { - "or", - "en", + "qwh", + "qu", "10", "1", } { - "pa", - "en", + "qws", + "qu", "10", "1", } { - "pcm", - "en", + "qxa", + "qu", "10", "1", } { - "ps", - "en", + "qxc", + "qu", "10", "1", } { + "qxh", "qu", - "es", "10", "1", } { - "rm", - "de", + "qxl", + "qu", "10", "1", } { - "rn", - "en", + "qxn", + "qu", "10", "1", } { - "rw", - "fr", + "qxo", + "qu", "10", "1", } { - "sa", - "hi", + "qxp", + "qu", "10", "1", } { - "sd", - "en", + "qxr", + "qu", "10", "1", } { - "si", - "en", + "qxt", + "qu", "10", "1", } { - "sn", - "en", + "qxu", + "qu", "10", "1", } { - "so", - "en", + "qxw", + "qu", "10", "1", } { - "sq", - "en", + "sdc", + "sc", "10", "1", } { - "st", - "en", + "sdn", + "sc", "10", "1", } { - "su", - "id", + "sro", + "sc", "10", "1", } { - "sw", - "en", + "aae", + "sq", "10", "1", } { - "ta", - "en", + "aat", + "sq", "10", "1", } { - "te", - "en", + "aln", + "sq", "10", "1", } { - "tg", - "ru", + "aii", + "syr", "10", "1", } { - "ti", - "en", + "uzs", + "uz", "10", "1", } { - "tk", - "ru", + "yih", + "yi", "10", "1", } { - "tlh", - "en", + "cdo", + "zh", "10", "1", } { - "tn", - "en", + "cjy", + "zh", "10", "1", } { - "to", - "en", + "cpx", + "zh", "10", "1", } { - "tt", - "ru", + "czh", + "zh", "10", "1", } { - "tum", - "en", + "czo", + "zh", "10", "1", } { - "ug", + "gan", "zh", "10", "1", } { - "ur", - "en", + "hak", + "zh", "10", "1", } { - "uz", - "ru", + "hsn", + "zh", "10", "1", } { - "wo", - "fr", + "lzh", + "zh", "10", "1", } { - "xh", - "en", + "mnp", + "zh", "10", "1", } { - "yi", - "en", + "nan", + "zh", "10", "1", } { - "yo", - "en", + "wuu", + "zh", "10", "1", } { - "zu", - "en", + "yue", + "zh", "10", "1", } @@ -21966,7 +23120,7 @@ supplementalData:table(nofallback){ "no20", "no21", "no22", - "no23", + "no50", } NP{ "np1", @@ -24499,12 +25653,6 @@ supplementalData:table(nofallback){ "itvi", "itvr", } - it36{ - "itgo", - "itpn", - "itts", - "itud", - } it42{ "itge", "itim", @@ -24601,13 +25749,10 @@ supplementalData:table(nofallback){ } it88{ "itca", - "itci", "itnu", - "itog", "itor", - "itot", + "itsd", "itss", - "itvs", } knk{ "kn01", @@ -24707,6 +25852,7 @@ supplementalData:table(nofallback){ "manou", "marab", "masal", + "masik", "masil", "maskh", } @@ -24720,12 +25866,13 @@ supplementalData:table(nofallback){ ma06{ "mabes", "mabrr", + "macas", "macht", "majdi", "mamed", "mamoh", + "maset", "masib", - "masik", } ma07{ "machi", @@ -24738,11 +25885,9 @@ supplementalData:table(nofallback){ "mayus", } ma08{ - "macas", "maerr", "mamid", "maoua", - "maset", "matin", "mazag", } @@ -25952,7 +27097,7 @@ supplementalData:table(nofallback){ } AR{ cy{ - populationShareF:int{46650000} + populationShareF:int{46660000} } en{ populationShareF:int{48700000} @@ -26005,7 +27150,7 @@ supplementalData:table(nofallback){ } hu{ officialStatus{"official_regional"} - populationShareF:int{47270000} + populationShareF:int{47260000} } it{ populationShareF:int{48900000} @@ -26394,7 +27539,7 @@ supplementalData:table(nofallback){ populationShareF:int{48800000} } es{ - populationShareF:int{46370000} + populationShareF:int{46360000} } gub{ populationShareF:int{45840000} @@ -26918,7 +28063,7 @@ supplementalData:table(nofallback){ populationShareF:int{46190000} } kk_Arab{ - populationShareF:int{46860000} + populationShareF:int{46850000} } ko{ officialStatus{"official_regional"} @@ -27439,6 +28584,9 @@ supplementalData:table(nofallback){ } } ES{ + an{ + populationShareF:int{46520000} + } ast{ officialStatus{"official_regional"} populationShareF:int{48130000} @@ -27701,7 +28849,7 @@ supplementalData:table(nofallback){ populationShareF:int{48600000} } el{ - populationShareF:int{47340000} + populationShareF:int{47330000} } en{ officialStatus{"official"} @@ -27720,7 +28868,7 @@ supplementalData:table(nofallback){ writingShareF:int{48500000} } it{ - populationShareF:int{47340000} + populationShareF:int{47330000} } ks{ populationShareF:int{47190000} @@ -27739,7 +28887,7 @@ supplementalData:table(nofallback){ writingShareF:int{48500000} } syl{ - populationShareF:int{47500000} + populationShareF:int{47510000} } territoryF:intvector{ 62292500, @@ -27856,7 +29004,7 @@ supplementalData:table(nofallback){ populationShareF:int{48350000} } ha{ - populationShareF:int{47870000} + populationShareF:int{47860000} } nzi{ populationShareF:int{48100000} @@ -28194,7 +29342,7 @@ supplementalData:table(nofallback){ populationShareF:int{47990000} } sk{ - populationShareF:int{47110000} + populationShareF:int{47120000} } sl{ populationShareF:int{46510000} @@ -28401,7 +29549,7 @@ supplementalData:table(nofallback){ populationShareF:int{48130000} } awa{ - populationShareF:int{48180000} + populationShareF:int{48190000} writingShareF:int{48500000} } bfq{ @@ -28454,7 +29602,7 @@ supplementalData:table(nofallback){ populationShareF:int{46280000} } dcc{ - populationShareF:int{48100000} + populationShareF:int{47990000} } doi{ populationShareF:int{47200000} @@ -28493,7 +29641,7 @@ supplementalData:table(nofallback){ populationShareF:int{48110000} } hoc{ - populationShareF:int{47100000} + populationShareF:int{46990000} } hoj{ populationShareF:int{46820000} @@ -28562,7 +29710,7 @@ supplementalData:table(nofallback){ populationShareF:int{48700000} } mtr{ - populationShareF:int{46980000} + populationShareF:int{46970000} } mwr{ populationShareF:int{48120000} @@ -28593,7 +29741,7 @@ supplementalData:table(nofallback){ } rkt{ literacyShareF:int{49200000} - populationShareF:int{47440000} + populationShareF:int{47430000} } sa{ officialStatus{"official_regional"} @@ -28972,7 +30120,7 @@ supplementalData:table(nofallback){ } pko{ literacyShareF:int{48100000} - populationShareF:int{47700000} + populationShareF:int{47690000} } saq{ literacyShareF:int{48100000} @@ -29278,7 +30426,7 @@ supplementalData:table(nofallback){ 56196246, } xh{ - populationShareF:int{48100000} + populationShareF:int{47990000} } zu{ populationShareF:int{49140000} @@ -29516,9 +30664,9 @@ supplementalData:table(nofallback){ populationShareF:int{49250000} } territoryF:intvector{ - 60310300, - 49974000, - 56211895, + 60305900, + 49970000, + 56208296, } tr{ populationShareF:int{48350000} @@ -29526,7 +30674,7 @@ supplementalData:table(nofallback){ } ML{ ar{ - populationShareF:int{47890000} + populationShareF:int{47900000} } bm{ populationShareF:int{49460000} @@ -29538,7 +30686,7 @@ supplementalData:table(nofallback){ populationShareF:int{47860000} } bze{ - populationShareF:int{47840000} + populationShareF:int{47850000} } dtm{ populationShareF:int{48110000} @@ -29991,7 +31139,7 @@ supplementalData:table(nofallback){ } NG{ amo{ - populationShareF:int{45880000} + populationShareF:int{45870000} } ar{ populationShareF:int{46710000} @@ -30159,7 +31307,7 @@ supplementalData:table(nofallback){ populationShareF:int{48300000} } gvr{ - populationShareF:int{47710000} + populationShareF:int{47290000} } hi{ populationShareF:int{47420000} @@ -30194,7 +31342,7 @@ supplementalData:table(nofallback){ populationShareF:int{47440000} } taj{ - populationShareF:int{48343000} + populationShareF:int{47430000} } tdg{ populationShareF:int{48130000} @@ -30488,7 +31636,7 @@ supplementalData:table(nofallback){ populationShareF:int{47160000} } kxp{ - populationShareF:int{47120000} + populationShareF:int{47110000} } lah{ populationShareF:int{49400000} @@ -30760,7 +31908,7 @@ supplementalData:table(nofallback){ } sk{ officialStatus{"official_regional"} - populationShareF:int{47860000} + populationShareF:int{47850000} } sq{ populationShareF:int{49190000} @@ -30944,6 +32092,10 @@ supplementalData:table(nofallback){ officialStatus{"official"} populationShareF:int{50100000} } + ars{ + populationShareF:int{48300000} + writingShareF:int{48500000} + } territoryF:intvector{ 62177500, 49872000, @@ -31594,7 +32746,7 @@ supplementalData:table(nofallback){ } TM{ ku{ - populationShareF:int{47410000} + populationShareF:int{47400000} } ru{ populationShareF:int{49120000} @@ -31778,10 +32930,10 @@ supplementalData:table(nofallback){ populationShareF:int{49690000} } jmc{ - populationShareF:int{47750000} + populationShareF:int{47740000} } kde{ - populationShareF:int{48240000} + populationShareF:int{48250000} } ksb{ populationShareF:int{48170000} @@ -31800,7 +32952,7 @@ supplementalData:table(nofallback){ populationShareF:int{48330000} } rof{ - populationShareF:int{47750000} + populationShareF:int{47740000} } rwk{ populationShareF:int{47220000} @@ -31822,7 +32974,7 @@ supplementalData:table(nofallback){ 57554513, } vun{ - populationShareF:int{47750000} + populationShareF:int{47740000} } } UA{ @@ -31937,6 +33089,9 @@ supplementalData:table(nofallback){ populationShareF:int{45770000} writingShareF:int{48500000} } + cic{ + populationShareF:int{0} + } dak{ populationShareF:int{45590000} } @@ -31952,7 +33107,7 @@ supplementalData:table(nofallback){ populationShareF:int{48960000} } esu{ - populationShareF:int{45620000} + populationShareF:int{45630000} } fil{ populationShareF:int{47420000} @@ -31961,7 +33116,7 @@ supplementalData:table(nofallback){ populationShareF:int{47560000} } frc{ - populationShareF:int{45850000} + populationShareF:int{45840000} } haw{ officialStatus{"official_regional"} @@ -31984,7 +33139,10 @@ supplementalData:table(nofallback){ populationShareF:int{45120000} } nv{ - populationShareF:int{46510000} + populationShareF:int{46500000} + } + osa{ + populationShareF:int{0} } pdc{ populationShareF:int{46390000} @@ -34903,7 +36061,7 @@ supplementalData:table(nofallback){ 86400000, } AR:intvector{ - 1, + 2, 1, 7, 0, @@ -35966,6 +37124,14 @@ supplementalData:table(nofallback){ 1, 86400000, } + UG:intvector{ + 2, + 1, + 1, + 0, + 1, + 86400000, + } UM:intvector{ 1, 1, diff --git a/source/data/misc/windowsZones.txt b/source/data/misc/windowsZones.txt index cad028c..ce51516 100644 --- a/source/data/misc/windowsZones.txt +++ b/source/data/misc/windowsZones.txt @@ -17,8 +17,8 @@ windowsZones:table(nofallback){ "Alaskan Standard Time"{ 001{"America/Anchorage"} US{ - "America/Anchorage America/Juneau America/Nome America/Sitka America/" - "Yakutat" + "America/Anchorage America/Juneau America/Metlakatla America/Nome Ame" + "rica/Sitka America/Yakutat" } } "Aleutian Standard Time"{ @@ -287,7 +287,7 @@ windowsZones:table(nofallback){ } "GTB Standard Time"{ 001{"Europe/Bucharest"} - CY{"Asia/Famagusta Asia/Nicosia"} + CY{"Asia/Nicosia Asia/Famagusta"} GR{"Europe/Athens"} RO{"Europe/Bucharest"} } @@ -371,7 +371,6 @@ windowsZones:table(nofallback){ } "Magallanes Standard Time"{ 001{"America/Punta_Arenas"} - AQ{"Antarctica/Palmer"} CL{"America/Punta_Arenas"} } "Marquesas Standard Time"{ @@ -468,7 +467,7 @@ windowsZones:table(nofallback){ "Pacific Standard Time"{ 001{"America/Los_Angeles"} CA{"America/Vancouver America/Dawson America/Whitehorse"} - US{"America/Los_Angeles America/Metlakatla"} + US{"America/Los_Angeles"} ZZ{"PST8PDT"} } "Pakistan Standard Time"{ @@ -479,6 +478,10 @@ windowsZones:table(nofallback){ 001{"America/Asuncion"} PY{"America/Asuncion"} } + "Qyzylorda Standard Time"{ + 001{"Asia/Qyzylorda"} + KZ{"Asia/Qyzylorda"} + } "Romance Standard Time"{ 001{"Europe/Paris"} BE{"Europe/Brussels"} @@ -500,12 +503,12 @@ windowsZones:table(nofallback){ } "Russian Standard Time"{ 001{"Europe/Moscow"} - RU{"Europe/Moscow Europe/Kirov Europe/Volgograd"} + RU{"Europe/Moscow Europe/Kirov"} UA{"Europe/Simferopol"} } "SA Eastern Standard Time"{ 001{"America/Cayenne"} - AQ{"Antarctica/Rothera"} + AQ{"Antarctica/Rothera Antarctica/Palmer"} BR{ "America/Fortaleza America/Belem America/Maceio America/Recife Americ" "a/Santarem" @@ -590,6 +593,7 @@ windowsZones:table(nofallback){ } "Singapore Standard Time"{ 001{"Asia/Singapore"} + AQ{"Antarctica/Casey"} BN{"Asia/Brunei"} ID{"Asia/Makassar"} MY{"Asia/Kuala_Lumpur Asia/Kuching"} @@ -731,9 +735,12 @@ windowsZones:table(nofallback){ 001{"Asia/Vladivostok"} RU{"Asia/Vladivostok Asia/Ust-Nera"} } + "Volgograd Standard Time"{ + 001{"Europe/Volgograd"} + RU{"Europe/Volgograd"} + } "W. Australia Standard Time"{ 001{"Australia/Perth"} - AQ{"Antarctica/Casey"} AU{"Australia/Perth"} } "W. Central Africa Standard Time"{ @@ -779,7 +786,7 @@ windowsZones:table(nofallback){ "West Asia Standard Time"{ 001{"Asia/Tashkent"} AQ{"Antarctica/Mawson"} - KZ{"Asia/Oral Asia/Aqtau Asia/Aqtobe Asia/Atyrau Asia/Qyzylorda"} + KZ{"Asia/Oral Asia/Aqtau Asia/Aqtobe Asia/Atyrau"} MV{"Indian/Maldives"} TF{"Indian/Kerguelen"} TJ{"Asia/Dushanbe"} diff --git a/source/data/misc/zoneinfo64.txt b/source/data/misc/zoneinfo64.txt index 2277daf..d359a16 100644 --- a/source/data/misc/zoneinfo64.txt +++ b/source/data/misc/zoneinfo64.txt @@ -3,17 +3,17 @@ // License & terms of use: http://www.unicode.org/copyright.html#License //--------------------------------------------------------- // Build tool: tz2icu -// Build date: Tue Mar 26 16:57:59 2019 +// Build date: Fri Sep 13 17:31:25 2019 // tz database: ftp://ftp.iana.org/tz/ -// tz version: 2019a -// ICU version: 64.1 +// tz version: 2019c +// ICU version: 65.1 //--------------------------------------------------------- // >> !!! >> THIS IS A MACHINE-GENERATED FILE << !!! << // >> !!! >>> DO NOT EDIT <<< !!! << //--------------------------------------------------------- zoneinfo64:table(nofallback) { - TZVersion { "2019a" } + TZVersion { "2019c" } Zones:array { /* ACT */ :int { 355 } //Z#0 /* AET */ :int { 367 } //Z#1 @@ -60,8 +60,9 @@ zoneinfo64:table(nofallback) { } //Z#18 /* Africa/Casablanca */ :table { trans:intvector { -1773012580, -956361600, -950490000, -942019200, -761187600, -617241600, -605149200, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 504918000, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1557021600, 1560045600, 1587261600, 1590285600, 1618106400, 1621130400, 1648346400, 1651975200, 1679191200, 1682215200, 1710036000, 1713060000, 1740276000, 1743904800, 1771120800, 1774144800, 1801965600, 1804989600, 1832205600, 1835229600, 1863050400, 1866074400, 1893290400, 1896919200, 1924135200, 1927159200, 1954980000, 1958004000, 1985220000, 1988848800, 2016064800, 2019088800, 2046304800, 2049933600, 2077149600, 2080173600, 2107994400, 2111018400, 2138234400, 2141863200 } + transPost32:intvector { 0, -2125888096, 0, -2122864096, 0, -2095043296, 0, -2092019296, 0, -2064803296, 0, -2061174496, 0, -2033958496, 0, -2030934496, 0, -2003718496, 0, -2000089696, 0, -1972873696, 0, -1969849696, 0, -1942028896, 0, -1939004896, 0, -1911788896, 0, -1908160096, 0, -1880944096, 0, -1877920096, 0, -1850099296, 0, -1847075296, 0, -1819859296, 0, -1816230496, 0, -1789014496, 0, -1785990496, 0, -1758774496, 0, -1755145696, 0, -1727929696, 0, -1724905696, 0, -1697084896, 0, -1694060896, 0, -1666844896, 0, -1663216096, 0, -1636000096, 0, -1632976096, 0, -1605155296, 0, -1602131296, 0, -1574915296, 0, -1571286496, 0, -1544070496, 0, -1541046496, 0, -1513830496, 0, -1510201696, 0, -1482985696, 0, -1479961696, 0, -1452140896, 0, -1449116896, 0, -1421900896, 0, -1418272096, 0, -1391056096, 0, -1388032096, 0, -1360211296, 0, -1357187296, 0, -1329971296, 0, -1326947296, 0, -1299126496, 0, -1296102496, 0, -1268886496, 0, -1265257696, 0, -1238041696, 0, -1235017696, 0, -1207196896, 0, -1204172896, 0, -1176956896, 0, -1173328096, 0, -1146112096, 0, -1143088096, 0, -1115267296, 0, -1112243296, 0, -1085027296, 0, -1082003296, 0, -1054182496, 0, -1051158496, 0, -1023942496, 0, -1020313696, 0, -993097696, 0, -990073696, 0, -962252896, 0, -959228896, 0, -932012896, 0, -928384096, 0, -901168096, 0, -898144096, 0, -870323296, 0, -867299296, 0, -840083296, 0, -837059296, 0, -809238496, 0, -806214496, 0, -778998496, 0, -775369696, 0, -748153696, 0, -745129696, 0, -717308896, 0, -714284896, 0, -687068896, 0, -683440096, 0, -656224096, 0, -653200096, 0, -625379296, 0, -622355296, 0, -595139296, 0, -592115296 } typeOffsets:intvector { -1820, 0, 0, 0, 0, 3600, 3600, 0 } - typeMap:bin { "01020102010201020102010201020102010301020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" } + typeMap:bin { "01020102010201020102010201020102010301020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" } } //Z#19 /* Africa/Ceuta */ :table { transPre32:intvector { -1, 2117514496 } @@ -79,8 +80,9 @@ zoneinfo64:table(nofallback) { /* Africa/Douala */ :int { 36 } //Z#25 /* Africa/El_Aaiun */ :table { trans:intvector { -1136070432, 198291600, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1557021600, 1560045600, 1587261600, 1590285600, 1618106400, 1621130400, 1648346400, 1651975200, 1679191200, 1682215200, 1710036000, 1713060000, 1740276000, 1743904800, 1771120800, 1774144800, 1801965600, 1804989600, 1832205600, 1835229600, 1863050400, 1866074400, 1893290400, 1896919200, 1924135200, 1927159200, 1954980000, 1958004000, 1985220000, 1988848800, 2016064800, 2019088800, 2046304800, 2049933600, 2077149600, 2080173600, 2107994400, 2111018400, 2138234400, 2141863200 } + transPost32:intvector { 0, -2125888096, 0, -2122864096, 0, -2095043296, 0, -2092019296, 0, -2064803296, 0, -2061174496, 0, -2033958496, 0, -2030934496, 0, -2003718496, 0, -2000089696, 0, -1972873696, 0, -1969849696, 0, -1942028896, 0, -1939004896, 0, -1911788896, 0, -1908160096, 0, -1880944096, 0, -1877920096, 0, -1850099296, 0, -1847075296, 0, -1819859296, 0, -1816230496, 0, -1789014496, 0, -1785990496, 0, -1758774496, 0, -1755145696, 0, -1727929696, 0, -1724905696, 0, -1697084896, 0, -1694060896, 0, -1666844896, 0, -1663216096, 0, -1636000096, 0, -1632976096, 0, -1605155296, 0, -1602131296, 0, -1574915296, 0, -1571286496, 0, -1544070496, 0, -1541046496, 0, -1513830496, 0, -1510201696, 0, -1482985696, 0, -1479961696, 0, -1452140896, 0, -1449116896, 0, -1421900896, 0, -1418272096, 0, -1391056096, 0, -1388032096, 0, -1360211296, 0, -1357187296, 0, -1329971296, 0, -1326947296, 0, -1299126496, 0, -1296102496, 0, -1268886496, 0, -1265257696, 0, -1238041696, 0, -1235017696, 0, -1207196896, 0, -1204172896, 0, -1176956896, 0, -1173328096, 0, -1146112096, 0, -1143088096, 0, -1115267296, 0, -1112243296, 0, -1085027296, 0, -1082003296, 0, -1054182496, 0, -1051158496, 0, -1023942496, 0, -1020313696, 0, -993097696, 0, -990073696, 0, -962252896, 0, -959228896, 0, -932012896, 0, -928384096, 0, -901168096, 0, -898144096, 0, -870323296, 0, -867299296, 0, -840083296, 0, -837059296, 0, -809238496, 0, -806214496, 0, -778998496, 0, -775369696, 0, -748153696, 0, -745129696, 0, -717308896, 0, -714284896, 0, -687068896, 0, -683440096, 0, -656224096, 0, -653200096, 0, -625379296, 0, -622355296, 0, -595139296, 0, -592115296 } typeOffsets:intvector { -3168, 0, -3600, 0, 0, 0, 0, 3600 } - typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203" } + typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203" } } //Z#26 /* Africa/Freetown */ :int { 5 } //Z#27 /* Africa/Gaborone */ :int { 43 } //Z#28 @@ -355,13 +357,9 @@ zoneinfo64:table(nofallback) { finalYear:int { 2008 } } //Z#91 /* America/Campo_Grande */ :table { - trans:intvector { -1767212492, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1066536000, 1076814000, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1541304000, 1550372400, 1572753600, 1581822000, 1604203200, 1613876400, 1636257600, 1645326000, 1667707200, 1677380400, 1699156800, 1708225200, 1730606400, 1739674800, 1762056000, 1771729200, 1793505600, 1803178800, 1825560000, 1834628400, 1857009600, 1866078000, 1888459200, 1897527600, 1919908800, 1928977200, 1951358400, 1960426800, 1983412800, 1992481200, 2014862400, 2024535600, 2046312000, 2055380400, 2077761600, 2086830000, 2109211200, 2118884400, 2140660800 } - transPost32:intvector { 0, -2144633296, 0, -2122252096 } + trans:intvector { -1767212492, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1066536000, 1076814000, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1541304000, 1550372400 } typeOffsets:intvector { -13108, 0, -14400, 0, -14400, 3600 } - typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" } - finalRule { "Brazil" } - finalRaw:int { -14400 } - finalYear:int { 2039 } + typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } } //Z#92 /* America/Cancun */ :table { trans:intvector { -1514743200, 377935200, 828860400, 846396000, 860310000, 877845600, 891759600, 902037600, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1175414400, 1193554800, 1207468800, 1225004400, 1238918400, 1256454000, 1270368000, 1288508400, 1301817600, 1319958000, 1333267200, 1351407600, 1365321600, 1382857200, 1396771200, 1414306800, 1422777600 } @@ -413,13 +411,9 @@ zoneinfo64:table(nofallback) { typeMap:bin { "020102" } } //Z#103 /* America/Cuiaba */ :table { - trans:intvector { -1767212140, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1541304000, 1550372400, 1572753600, 1581822000, 1604203200, 1613876400, 1636257600, 1645326000, 1667707200, 1677380400, 1699156800, 1708225200, 1730606400, 1739674800, 1762056000, 1771729200, 1793505600, 1803178800, 1825560000, 1834628400, 1857009600, 1866078000, 1888459200, 1897527600, 1919908800, 1928977200, 1951358400, 1960426800, 1983412800, 1992481200, 2014862400, 2024535600, 2046312000, 2055380400, 2077761600, 2086830000, 2109211200, 2118884400, 2140660800 } - transPost32:intvector { 0, -2144633296, 0, -2122252096 } + trans:intvector { -1767212140, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1541304000, 1550372400 } typeOffsets:intvector { -13460, 0, -14400, 0, -14400, 3600 } - typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" } - finalRule { "Brazil" } - finalRaw:int { -14400 } - finalYear:int { 2039 } + typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } } //Z#104 /* America/Curacao */ :table { trans:intvector { -1826738653, -157750200 } @@ -458,9 +452,9 @@ zoneinfo64:table(nofallback) { links:intvector { 109, 204, 544, 624 } } //Z#109 /* America/Detroit */ :table { - trans:intvector { -2051202469, -1724083200, -880218000, -765396000, -684349200, -671047200, 104914800, 120636000, 126687600, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } + trans:intvector { -2051202469, -1724083200, -880218000, -765396000, -684349200, -671047200, -80506740, -68666400, -52938000, -37216800, 104914800, 120636000, 126687600, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } typeOffsets:intvector { -19931, 0, -21600, 0, -18000, 0, -18000, 3600 } - typeMap:bin { "01020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" } + typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" } finalRule { "US" } finalRaw:int { -18000 } finalYear:int { 2008 } @@ -468,9 +462,9 @@ zoneinfo64:table(nofallback) { } //Z#110 /* America/Dominica */ :int { 186 } //Z#111 /* America/Edmonton */ :table { - trans:intvector { -1998663968, -1632063600, -1615132800, -1600614000, -1596816000, -1567954800, -1551628800, -1536505200, -1523203200, -1504450800, -1491753600, -1473001200, -1459699200, -880210800, -765388800, -715791600, -702489600, -84380400, -68659200, -21481200, -5760000, 73472400, 89193600, 104922000, 120643200, 136371600, 152092800, 167821200, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 } + trans:intvector { -1998663968, -1632063600, -1615132800, -1600614000, -1596816000, -1567954800, -1551628800, -1536505200, -1523203200, -1504450800, -1491753600, -1473001200, -1459699200, -880210800, -765388800, -715791600, -702489600, 73472400, 89193600, 104922000, 120643200, 136371600, 152092800, 167821200, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 } typeOffsets:intvector { -27232, 0, -25200, 0, -25200, 3600 } - typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } + typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } finalRule { "Canada" } finalRaw:int { -25200 } finalYear:int { 2008 } @@ -615,9 +609,9 @@ zoneinfo64:table(nofallback) { } //Z#134 /* America/Indiana/Tell_City */ :table { transPre32:intvector { -1, 1577320096 } - trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -747244800, -733942800, -526492800, -513190800, -495043200, -481741200, -462996000, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -289414800, -273686400, -260989200, -242236800, -226515600, -210787200, -195066000, -179337600, -21488400, -5767200, 9961200, 25682400, 1143961200, 1162105200, 1173600000, 1194159600 } + trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -462996000, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -292438800, -273686400, -257965200, -242236800, -226515600, -210787200, -195066000, -179337600, -68662800, -52934400, -37213200, -21484800, -5767200, 9961200, 25682400, 1143961200, 1162105200, 1173600000, 1194159600 } typeOffsets:intvector { -20823, 0, -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 } - typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201030403040302010201" } + typeMap:bin { "01020102010201020102010201020102010201020102010201030102010403040302010201" } finalRule { "US" } finalRaw:int { -21600 } finalYear:int { 2008 } @@ -684,7 +678,7 @@ zoneinfo64:table(nofallback) { } //Z#144 /* America/Kentucky/Louisville */ :table { transPre32:intvector { -1, 1577320096 } - trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -1535904000, -1525280400, -905097600, -891795600, -880214400, -765392400, -757360800, -744224400, -715795200, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -450291600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -266432400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152089200, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } + trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -1535904000, -1525280400, -905097600, -891795600, -880214400, -765392400, -747251940, -744224400, -620841600, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -450291600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -266432400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152089200, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } typeOffsets:intvector { -20582, 0, -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 } typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102030403040304030403040304030203040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" } finalRule { "US" } @@ -1037,13 +1031,9 @@ zoneinfo64:table(nofallback) { typeMap:bin { "0401030102010201020102010201050105" } } //Z#201 /* America/Sao_Paulo */ :table { - trans:intvector { -1767214412, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -195426000, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1066532400, 1076810400, 1099364400, 1108864800, 1129431600, 1140314400, 1162695600, 1172368800, 1192330800, 1203213600, 1224385200, 1234663200, 1255834800, 1266717600, 1287284400, 1298167200, 1318734000, 1330221600, 1350788400, 1361066400, 1382238000, 1392516000, 1413687600, 1424570400, 1445137200, 1456020000, 1476586800, 1487469600, 1508036400, 1518919200, 1541300400, 1550368800, 1572750000, 1581818400, 1604199600, 1613872800, 1636254000, 1645322400, 1667703600, 1677376800, 1699153200, 1708221600, 1730602800, 1739671200, 1762052400, 1771725600, 1793502000, 1803175200, 1825556400, 1834624800, 1857006000, 1866074400, 1888455600, 1897524000, 1919905200, 1928973600, 1951354800, 1960423200, 1983409200, 1992477600, 2014858800, 2024532000, 2046308400, 2055376800, 2077758000, 2086826400, 2109207600, 2118880800, 2140657200 } - transPost32:intvector { 0, -2144636896, 0, -2122255696 } + trans:intvector { -1767214412, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -195426000, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1066532400, 1076810400, 1099364400, 1108864800, 1129431600, 1140314400, 1162695600, 1172368800, 1192330800, 1203213600, 1224385200, 1234663200, 1255834800, 1266717600, 1287284400, 1298167200, 1318734000, 1330221600, 1350788400, 1361066400, 1382238000, 1392516000, 1413687600, 1424570400, 1445137200, 1456020000, 1476586800, 1487469600, 1508036400, 1518919200, 1541300400, 1550368800 } typeOffsets:intvector { -11188, 0, -10800, 0, -10800, 3600 } - typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" } - finalRule { "Brazil" } - finalRaw:int { -10800 } - finalYear:int { 2039 } + typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } links:intvector { 202, 372, 376 } } //Z#202 /* America/Scoresbysund */ :table { @@ -1127,7 +1117,7 @@ zoneinfo64:table(nofallback) { /* America/Tortola */ :int { 186 } //Z#218 /* America/Vancouver */ :table { transPre32:intvector { -1, 1581086444 } - trans:intvector { -1632060000, -1615129200, -880207200, -765385200, -747237600, -732726000, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 136375200, 152096400, 167824800, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 } + trans:intvector { -1632060000, -1615129200, -880207200, -765385200, -747237600, -733935600, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 136375200, 152096400, 167824800, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 } typeOffsets:intvector { -29548, 0, -28800, 0, -28800, 3600 } typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } finalRule { "Canada" } @@ -1374,22 +1364,22 @@ zoneinfo64:table(nofallback) { } //Z#267 /* Asia/Gaza */ :table { transPre32:intvector { -1, 2109557424 } - trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334015200, 337644000, 452556000, 462232800, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000 } + trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334015200, 337644000, 452556000, 462232800, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572040800 } typeOffsets:intvector { 8272, 0, 7200, 0, 7200, 3600 } - typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } + typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } finalRule { "Palestine" } finalRaw:int { 7200 } - finalYear:int { 2017 } + finalYear:int { 2020 } } //Z#268 /* Asia/Harbin */ :int { 314 } //Z#269 /* Asia/Hebron */ :table { transPre32:intvector { -1, 2109557273 } - trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334015200, 337644000, 452556000, 462232800, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000 } + trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334015200, 337644000, 452556000, 462232800, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572040800 } typeOffsets:intvector { 8423, 0, 7200, 0, 7200, 3600 } - typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } + typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } finalRule { "Palestine" } finalRaw:int { 7200 } - finalYear:int { 2017 } + finalYear:int { 2020 } } //Z#270 /* Asia/Ho_Chi_Minh */ :table { trans:intvector { -2004073600, -1851577590, -852105600, -782643600, -767869200, -718095600, -457776000, -315648000, 171820800 } @@ -1398,9 +1388,9 @@ zoneinfo64:table(nofallback) { links:intvector { 271, 310, 630 } } //Z#271 /* Asia/Hong_Kong */ :table { - trans:intvector { -2056690800, -900909000, -891579600, -884248200, -766659600, -747981000, -728544600, -717049800, -694503000, -683785800, -668064600, -654755400, -636615000, -623305800, -605165400, -591856200, -573715800, -559801800, -541661400, -528352200, -510211800, -498112200, -478762200, -466662600, -446707800, -435213000, -415258200, -403158600, -383808600, -371709000, -352359000, -340259400, -320909400, -308809800, -288855000, -277360200, -257405400, -245910600, -225955800, -213856200, -194506200, -182406600, -163056600, -148537800, -132816600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72214200, 88540200, 104268600, 119989800, 126041400, 151439400, 167167800, 182889000, 198617400, 214338600, 295385400, 309292200 } - typeOffsets:intvector { 27402, 0, 28800, 0, 28800, 3600, 30600, 0, 32400, 0 } - typeMap:bin { "010203040102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } + trans:intvector { -2056690800, -900910800, -891579600, -884248200, -761209200, -747907200, -728541000, -717049800, -697091400, -683785800, -668061000, -654755400, -636611400, -623305800, -605161800, -591856200, -573712200, -559801800, -541657800, -528352200, -510211800, -498112200, -478762200, -466662600, -446707800, -435213000, -415258200, -403158600, -383808600, -371709000, -352359000, -340259400, -320909400, -308809800, -288855000, -277360200, -257405400, -245910600, -225955800, -213856200, -194506200, -182406600, -163056600, -148537800, -132816600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72214200, 88540200, 104268600, 119989800, 126041400, 151439400, 167167800, 182889000, 198617400, 214338600, 295385400, 309292200 } + typeOffsets:intvector { 27402, 0, 28800, 0, 28800, 1800, 28800, 3600, 32400, 0 } + typeMap:bin { "010302040103010301030103010301030103010301030103010301030103010301030103010301030103010301030103010301030103010301030103010301030103010301" } links:intvector { 272, 511 } } //Z#272 /* Asia/Hovd */ :table { @@ -1588,9 +1578,9 @@ zoneinfo64:table(nofallback) { typeMap:bin { "010203040302030203020302030203020302030203020302" } } //Z#312 /* Asia/Seoul */ :table { - trans:intvector { -1948782472, -1830414600, -498128400, -462702600, -451733400, -429784200, -418296600, -399544200, -387451800, -368094600, -356002200, -336645000, -324552600, -305195400, -293103000, -264933000, 547578000, 560883600, 579027600, 592333200 } + trans:intvector { -1948782472, -1830414600, -681210000, -672228000, -654771600, -640864800, -623408400, -609415200, -588848400, -577965600, -498128400, -462702600, -451733400, -429784200, -418296600, -399544200, -387451800, -368094600, -356002200, -336645000, -324552600, -305195400, -293103000, -264933000, 547578000, 560883600, 579027600, 592333200 } typeOffsets:intvector { 30472, 0, 30600, 0, 30600, 3600, 32400, 0, 32400, 3600 } - typeMap:bin { "0103010201020102010201020102010304030403" } + typeMap:bin { "01030403040304030403010201020102010201020102010304030403" } links:intvector { 313, 597 } } //Z#313 /* Asia/Shanghai */ :table { @@ -2093,7 +2083,7 @@ zoneinfo64:table(nofallback) { } //Z#445 /* Europe/Bratislava */ :int { 477 } //Z#446 /* Europe/Brussels */ :table { - transPre32:intvector { -1, 1844014246 } + transPre32:intvector { -1, 1843972096 } trans:intvector { -1740355200, -1693702800, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1613826000, -1604278800, -1585530000, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1473642000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1191189600, -1175464800, -1160344800, -1143410400, -1127685600, -1111960800, -1096840800, -1080511200, -1063576800, -1049061600, -1033336800, -1017612000, -1002492000, -986162400, -969228000, -950479200, -942012000, -934668000, -857257200, -844556400, -828226800, -812502000, -798073200, -781052400, -766623600, -745455600, -733273200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { 1050, 0, 0, 0, 0, 3600, 3600, 0, 3600, 3600 } typeMap:bin { "010304030403040301020102010201020102010201020102010201020102010201020102010201020102010201020102010201020403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" } @@ -2170,17 +2160,17 @@ zoneinfo64:table(nofallback) { /* Europe/Isle_of_Man */ :int { 465 } //Z#457 /* Europe/Istanbul */ :table { transPre32:intvector { -1, 1454819544 } - trans:intvector { -1869875816, -1693706400, -1680490800, -1570413600, -1552186800, -1538359200, -1522551600, -1507514400, -1490583600, -1440208800, -1428030000, -1409709600, -1396494000, -931140000, -922762800, -917834400, -892436400, -875844000, -857358000, -781063200, -764737200, -744343200, -733806000, -716436000, -701924400, -684986400, -670474800, -654141600, -639025200, -621828000, -606970800, -590032800, -575434800, -235620000, -228279600, -177732000, -165726000, 10533600, 23835600, 41983200, 55285200, 74037600, 87339600, 107910000, 121219200, 133920000, 152676000, 165362400, 183502800, 202428000, 215557200, 228866400, 245797200, 260316000, 277246800, 308779200, 323827200, 340228800, 354672000, 371678400, 386121600, 403128000, 428446800, 433886400, 482792400, 496702800, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686098800, 701823600, 717548400, 733273200, 748998000, 764118000, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301274000, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396227600, 1414285200, 1427590800, 1446944400, 1459040400, 1473195600 } + trans:intvector { -1869875816, -1693706400, -1680490800, -1570413600, -1552186800, -1538359200, -1522551600, -1507514400, -1490583600, -1440208800, -1428030000, -1409709600, -1396494000, -931053600, -922676400, -917834400, -892436400, -875844000, -764737200, -744343200, -733806000, -716436000, -701924400, -684986400, -670474800, -654141600, -639025200, -622087200, -606970800, -590032800, -575521200, -235620000, -194842800, -177732000, -165726000, 107910000, 121215600, 133920000, 152665200, 164678400, 184114800, 196214400, 215564400, 228873600, 245804400, 260323200, 267915600, 428454000, 433893600, 468111600, 482799600, 496710000, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686098800, 701823600, 717548400, 733273200, 748998000, 764118000, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301274000, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396227600, 1414285200, 1427590800, 1446944400, 1459040400, 1473195600 } typeOffsets:intvector { 6952, 0, 7016, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 } - typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030504050405040504050403020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020304" } + typeMap:bin { "01020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030405040203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020304" } links:intvector { 275, 458, 613 } } //Z#458 /* Europe/Jersey */ :int { 465 } //Z#459 /* Europe/Kaliningrad */ :table { transPre32:intvector { -1, 1872911176 } - trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -788922000, -778730400, -762663600, -757389600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891129600, 909273600, 922579200, 941328000, 954028800, 972777600, 985478400, 1004227200, 1017532800, 1035676800, 1048982400, 1067126400, 1080432000, 1099180800, 1111881600, 1130630400, 1143331200, 1162080000, 1174780800, 1193529600, 1206835200, 1224979200, 1238284800, 1256428800, 1269734400, 1288483200, 1301184000, 1414278000 } + trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -780372000, -778730400, -762663600, -749095200, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891129600, 909273600, 922579200, 941328000, 954028800, 972777600, 985478400, 1004227200, 1017532800, 1035676800, 1048982400, 1067126400, 1080432000, 1099180800, 1111881600, 1130630400, 1143331200, 1162080000, 1174780800, 1193529600, 1206835200, 1224979200, 1238284800, 1256428800, 1269734400, 1288483200, 1301184000, 1414278000 } typeOffsets:intvector { 4920, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 } - typeMap:bin { "01020102010201020102010201030403050605060506050605060506050605060504030403040304030403040304030403040304030403040304030403040304030403040304030403040304030503" } + typeMap:bin { "0102010201020102010201020102030403050605060506050605060506050605060504030403040304030403040304030403040304030403040304030403040304030403040304030403040304030503" } } //Z#460 /* Europe/Kiev */ :table { trans:intvector { -1441159324, -1247536800, -892522800, -857257200, -844556400, -828226800, -825382800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 646783200, 686102400, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400, 828234000, 846378000 } @@ -2384,7 +2374,7 @@ zoneinfo64:table(nofallback) { /* Europe/Vatican */ :int { 479 } //Z#494 /* Europe/Vienna */ :table { transPre32:intvector { -1, 1872912175 } - trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1569711600, -1555801200, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -780188400, -748479600, -733359600, -717634800, -701910000, -684975600, -670460400, 323823600, 338940000, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } + trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1569711600, -1555801200, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -780188400, -748479600, -733273200, -717634800, -701910000, -684975600, -670460400, 323823600, 338940000, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { 3921, 0, 3600, 0, 3600, 3600 } typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } finalRule { "EU" } @@ -2612,12 +2602,12 @@ zoneinfo64:table(nofallback) { typeMap:bin { "0102" } } //Z#559 /* Pacific/Fiji */ :table { - trans:intvector { -1709985344, 909842400, 920124000, 941896800, 951573600, 1259416800, 1269698400, 1287842400, 1299333600, 1319292000, 1327154400, 1350741600, 1358604000, 1382796000, 1390050000, 1414850400, 1421503200, 1446300000 } + trans:intvector { -1709985344, 909842400, 920124000, 941896800, 951573600, 1259416800, 1269698400, 1287842400, 1299333600, 1319292000, 1327154400, 1350741600, 1358604000, 1382796000, 1390050000, 1414850400, 1421503200, 1446300000, 1452952800, 1478354400, 1484402400, 1509804000, 1515852000, 1541253600, 1547301600, 1573308000 } typeOffsets:intvector { 42944, 0, 43200, 0, 43200, 3600 } - typeMap:bin { "010201020102010201020102010201020102" } + typeMap:bin { "0102010201020102010201020102010201020102010201020102" } finalRule { "Fiji" } finalRaw:int { 43200 } - finalYear:int { 2016 } + finalYear:int { 2020 } } //Z#560 /* Pacific/Funafuti */ :table { transPre32:intvector { -1, 2117471484 } @@ -2699,9 +2689,12 @@ zoneinfo64:table(nofallback) { } //Z#575 /* Pacific/Norfolk */ :table { transPre32:intvector { -1, 2117474184 } - trans:intvector { -599656320, 152029800, 162912600, 1443882600 } - typeOffsets:intvector { 40312, 0, 39600, 0, 40320, 0, 41400, 0, 41400, 3600 } - typeMap:bin { "0203040301" } + trans:intvector { -599656320, 152029800, 162916200, 1443882600, 1570287600, 1586012400, 1601737200 } + typeOffsets:intvector { 40312, 0, 39600, 0, 39600, 3600, 40320, 0, 41400, 0, 41400, 3600 } + typeMap:bin { "0304050401020102" } + finalRule { "AN" } + finalRaw:int { 39600 } + finalYear:int { 2021 } } //Z#576 /* Pacific/Noumea */ :table { trans:intvector { -1829387148, 250002000, 257342400, 281451600, 288878400, 849366000, 857228400 } @@ -3086,84 +3079,81 @@ zoneinfo64:table(nofallback) { AV:intvector { 9, 1, -1, 7200, 1, 3, 1, -1, 7200, 1, 3600 } //_#3 - Brazil:intvector { - 10, 1, -1, 0, 0, 1, 15, -1, 0, 0, 3600 - } //_#4 C-Eur:intvector { 2, -31, -1, 7200, 1, 9, -31, -1, 7200, 1, 3600 - } //_#5 + } //_#4 Canada:intvector { 2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600 - } //_#6 + } //_#5 Chatham:intvector { 8, -30, -1, 9900, 1, 3, 1, -1, 9900, 1, 3600 - } //_#7 + } //_#6 Chile:intvector { 8, 2, -1, 14400, 2, 3, 2, -1, 10800, 2, 3600 - } //_#8 + } //_#7 Cuba:intvector { 2, 8, -1, 0, 1, 10, 1, -1, 0, 1, 3600 - } //_#9 + } //_#8 EU:intvector { 2, -31, -1, 3600, 2, 9, -31, -1, 3600, 2, 3600 - } //_#10 + } //_#9 EUAsia:intvector { 2, -31, -1, 3600, 2, 9, -31, -1, 3600, 2, 3600 - } //_#11 + } //_#10 Fiji:intvector { - 10, 1, -1, 7200, 0, 0, 13, -1, 10800, 0, 3600 - } //_#12 + 10, 8, -1, 7200, 0, 0, 12, -1, 10800, 0, 3600 + } //_#11 Haiti:intvector { 2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600 - } //_#13 + } //_#12 Iran:intvector { 2, 20, 0, 86400, 0, 8, 20, 0, 86400, 0, 3600 - } //_#14 + } //_#13 Jordan:intvector { 2, -31, -5, 86400, 0, 9, -31, -6, 0, 1, 3600 - } //_#15 + } //_#14 LH:intvector { 9, 1, -1, 7200, 0, 3, 1, -1, 7200, 0, 1800 - } //_#16 + } //_#15 Lebanon:intvector { 2, -31, -1, 0, 0, 9, -31, -1, 0, 0, 3600 - } //_#17 + } //_#16 Mexico:intvector { 3, 1, -1, 7200, 0, 9, -31, -1, 7200, 0, 3600 - } //_#18 + } //_#17 Moldova:intvector { 2, -31, -1, 7200, 0, 9, -31, -1, 10800, 0, 3600 - } //_#19 + } //_#18 NZ:intvector { 8, -30, -1, 7200, 1, 3, 1, -1, 7200, 1, 3600 - } //_#20 + } //_#19 Palestine:intvector { - 2, 24, -7, 3600, 0, 9, -31, -7, 3600, 0, 3600 - } //_#21 + 2, -31, -6, 0, 0, 9, -31, -7, 3600, 0, 3600 + } //_#20 Para:intvector { 9, 1, -1, 0, 0, 2, 22, -1, 0, 0, 3600 - } //_#22 + } //_#21 Syria:intvector { 2, -31, -6, 0, 0, 9, -31, -6, 0, 0, 3600 - } //_#23 + } //_#22 SystemV:intvector { 3, -30, -1, 7200, 0, 9, -31, -1, 7200, 0, 3600 - } //_#24 + } //_#23 Thule:intvector { 2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600 - } //_#25 + } //_#24 Troll:intvector { 2, -31, -1, 3600, 2, 9, -31, -1, 3600, 2, 7200 - } //_#26 + } //_#25 US:intvector { 2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600 - } //_#27 + } //_#26 WS:intvector { 8, -30, -1, 10800, 0, 3, 1, -1, 14400, 0, 3600 - } //_#28 + } //_#27 Zion:intvector { 2, 23, -6, 7200, 0, 9, -31, -1, 7200, 0, 3600 - } //_#29 + } //_#28 } Regions:array { "AU", //Z#0 ACT diff --git a/source/data/rbnf/af.txt b/source/data/rbnf/af.txt index 81e2195..2176456 100644 --- a/source/data/rbnf/af.txt +++ b/source/data/rbnf/af.txt @@ -89,5 +89,5 @@ af{ "1000000000000000000: =#,##0=.;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/ak.txt b/source/data/rbnf/ak.txt index 5eac331..3a8f23f 100644 --- a/source/data/rbnf/ak.txt +++ b/source/data/rbnf/ak.txt @@ -57,5 +57,5 @@ ak{ "2: a-\u025B-t\u0254-so-=%spellout-cardinal=;", } } - Version{"2.1.36.80"} + Version{"36"} } diff --git a/source/data/rbnf/am.txt b/source/data/rbnf/am.txt index 5d3fc8a..0981c76 100644 --- a/source/data/rbnf/am.txt +++ b/source/data/rbnf/am.txt @@ -47,5 +47,5 @@ am{ "0: =%spellout-numbering=\u129B;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/ar.txt b/source/data/rbnf/ar.txt index 0d9cfb5..b976777 100644 --- a/source/data/rbnf/ar.txt +++ b/source/data/rbnf/ar.txt @@ -281,5 +281,5 @@ ar{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.41.99"} + Version{"36"} } diff --git a/source/data/rbnf/az.txt b/source/data/rbnf/az.txt index 0b67ee1..f1c3544 100644 --- a/source/data/rbnf/az.txt +++ b/source/data/rbnf/az.txt @@ -90,5 +90,5 @@ az{ "1000000000000000000: =#,##0='inci;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/be.txt b/source/data/rbnf/be.txt index 6d90b12..9a9aa07 100644 --- a/source/data/rbnf/be.txt +++ b/source/data/rbnf/be.txt @@ -397,5 +397,5 @@ be{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/bg.txt b/source/data/rbnf/bg.txt index 74e7c85..c98b4ba 100644 --- a/source/data/rbnf/bg.txt +++ b/source/data/rbnf/bg.txt @@ -101,5 +101,5 @@ bg{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/bs.txt b/source/data/rbnf/bs.txt index a24b8c3..25c03a8 100644 --- a/source/data/rbnf/bs.txt +++ b/source/data/rbnf/bs.txt @@ -116,5 +116,5 @@ bs{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/ca.txt b/source/data/rbnf/ca.txt index 3b0f055..dd38bd1 100644 --- a/source/data/rbnf/ca.txt +++ b/source/data/rbnf/ca.txt @@ -258,5 +258,5 @@ ca{ "1000000000000000000: =#,##0=ena;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/ccp.txt b/source/data/rbnf/ccp.txt index 454cbd9..b1cfc6b 100644 --- a/source/data/rbnf/ccp.txt +++ b/source/data/rbnf/ccp.txt @@ -51,5 +51,5 @@ ccp{ "0: =%spellout-numbering= \U0001111B\U00011133\U00011106\U00011118\U00011133\U00011120\U0001112C;", } } - Version{"2.1.38.68"} + Version{"36"} } diff --git a/source/data/rbnf/chr.txt b/source/data/rbnf/chr.txt index 558edf9..a5f26ae 100644 --- a/source/data/rbnf/chr.txt +++ b/source/data/rbnf/chr.txt @@ -53,5 +53,5 @@ chr{ "1: ' =%spellout-numbering=;", } } - Version{"2.1.36.80"} + Version{"36"} } diff --git a/source/data/rbnf/cs.txt b/source/data/rbnf/cs.txt index 3f560bf..a3e2c86 100644 --- a/source/data/rbnf/cs.txt +++ b/source/data/rbnf/cs.txt @@ -125,5 +125,5 @@ cs{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/cy.txt b/source/data/rbnf/cy.txt index 88a5300..190bbd6 100644 --- a/source/data/rbnf/cy.txt +++ b/source/data/rbnf/cy.txt @@ -107,5 +107,5 @@ cy{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/da.txt b/source/data/rbnf/da.txt index cc2fcc2..6e8e017 100644 --- a/source/data/rbnf/da.txt +++ b/source/data/rbnf/da.txt @@ -15,7 +15,7 @@ da{ "1100/100: <<\u00ADhundrede[ og >>];", "10000: =%spellout-numbering=;", "%spellout-numbering:", - "0: =%spellout-cardinal-common=;", + "0: =%spellout-cardinal-neuter=;", "%spellout-cardinal-common:", "-x: minus >>;", "x.x: << komma >>;", @@ -171,5 +171,5 @@ da{ "1: er =%spellout-ordinal-neuter=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/de.txt b/source/data/rbnf/de.txt index 9c003c4..fd196e7 100644 --- a/source/data/rbnf/de.txt +++ b/source/data/rbnf/de.txt @@ -185,5 +185,5 @@ de{ "0: =%spellout-ordinal=s;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/de_CH.txt b/source/data/rbnf/de_CH.txt index dfc3d44..8a26bd5 100644 --- a/source/data/rbnf/de_CH.txt +++ b/source/data/rbnf/de_CH.txt @@ -180,5 +180,5 @@ de_CH{ "0: =%spellout-ordinal=s;", } } - Version{"2.1.44.50"} + Version{"36"} } diff --git a/source/data/rbnf/ee.txt b/source/data/rbnf/ee.txt index 30bad1c..8e7fcf2 100644 --- a/source/data/rbnf/ee.txt +++ b/source/data/rbnf/ee.txt @@ -83,5 +83,5 @@ ee{ "2: =%spellout-cardinal=lia;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/el.txt b/source/data/rbnf/el.txt index 5e51782..c07eaa8 100644 --- a/source/data/rbnf/el.txt +++ b/source/data/rbnf/el.txt @@ -294,5 +294,5 @@ el{ "1000000000000000000: =#,##0=.;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/en.txt b/source/data/rbnf/en.txt index e24d764..0641ebc 100644 --- a/source/data/rbnf/en.txt +++ b/source/data/rbnf/en.txt @@ -209,5 +209,5 @@ en{ "1000000000000000000: =#,##0=.;", } } - Version{"2.1.21.55"} + Version{"36"} } diff --git a/source/data/rbnf/en_001.txt b/source/data/rbnf/en_001.txt index 4587178..6fd94e4 100644 --- a/source/data/rbnf/en_001.txt +++ b/source/data/rbnf/en_001.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_001{ - Version{"2.1.36.80"} + Version{"36"} } diff --git a/source/data/rbnf/en_IN.txt b/source/data/rbnf/en_IN.txt index 6e5fd16..b65fedf 100644 --- a/source/data/rbnf/en_IN.txt +++ b/source/data/rbnf/en_IN.txt @@ -179,5 +179,5 @@ en_IN{ "1000000000000000000: =#,##0=.;", } } - Version{"2.1.35.13"} + Version{"36"} } diff --git a/source/data/rbnf/eo.txt b/source/data/rbnf/eo.txt index 5b572e0..8dd1ae7 100644 --- a/source/data/rbnf/eo.txt +++ b/source/data/rbnf/eo.txt @@ -40,5 +40,5 @@ eo{ "0: =%spellout-cardinal=a;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/es.txt b/source/data/rbnf/es.txt index a6cd5a6..3b54f04 100644 --- a/source/data/rbnf/es.txt +++ b/source/data/rbnf/es.txt @@ -288,5 +288,5 @@ es{ "1000000000000000000: =#,##0=\u00AA;", } } - Version{"2.1.27.33"} + Version{"36"} } diff --git a/source/data/rbnf/es_419.txt b/source/data/rbnf/es_419.txt index 1cb6f7c..c02fe7b 100644 --- a/source/data/rbnf/es_419.txt +++ b/source/data/rbnf/es_419.txt @@ -24,5 +24,5 @@ es_419{ "0: =%digits-ordinal-masculine=;", } } - Version{"2.1.21.54"} + Version{"36"} } diff --git a/source/data/rbnf/et.txt b/source/data/rbnf/et.txt index c2e98ba..13a30d9 100644 --- a/source/data/rbnf/et.txt +++ b/source/data/rbnf/et.txt @@ -40,5 +40,5 @@ et{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/fa.txt b/source/data/rbnf/fa.txt index 1c3ffa3..ff0f566 100644 --- a/source/data/rbnf/fa.txt +++ b/source/data/rbnf/fa.txt @@ -55,5 +55,5 @@ fa{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/fa_AF.txt b/source/data/rbnf/fa_AF.txt index 6227bb6..97adf4e 100644 --- a/source/data/rbnf/fa_AF.txt +++ b/source/data/rbnf/fa_AF.txt @@ -51,5 +51,5 @@ fa_AF{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/ff.txt b/source/data/rbnf/ff.txt index 60dc972..0c9cd4f 100644 --- a/source/data/rbnf/ff.txt +++ b/source/data/rbnf/ff.txt @@ -85,5 +85,5 @@ ff{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.38.68"} + Version{"36"} } diff --git a/source/data/rbnf/fi.txt b/source/data/rbnf/fi.txt index fb89074..5d27de6 100644 --- a/source/data/rbnf/fi.txt +++ b/source/data/rbnf/fi.txt @@ -1271,5 +1271,5 @@ fi{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.45.51"} + Version{"36"} } diff --git a/source/data/rbnf/fil.txt b/source/data/rbnf/fil.txt index d7ba73e..a51658a 100644 --- a/source/data/rbnf/fil.txt +++ b/source/data/rbnf/fil.txt @@ -56,5 +56,5 @@ fil{ "0: ika =%spellout-cardinal=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/fo.txt b/source/data/rbnf/fo.txt index c4bbd6e..ca0cc5a 100644 --- a/source/data/rbnf/fo.txt +++ b/source/data/rbnf/fo.txt @@ -116,5 +116,5 @@ fo{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/fr.txt b/source/data/rbnf/fr.txt index 333c4ae..5a11864 100644 --- a/source/data/rbnf/fr.txt +++ b/source/data/rbnf/fr.txt @@ -201,5 +201,5 @@ fr{ "2: =%%spellout-ordinal=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/fr_BE.txt b/source/data/rbnf/fr_BE.txt index 817c3f9..7cce622 100644 --- a/source/data/rbnf/fr_BE.txt +++ b/source/data/rbnf/fr_BE.txt @@ -180,5 +180,5 @@ fr_BE{ "2: =%%spellout-ordinal=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/fr_CH.txt b/source/data/rbnf/fr_CH.txt index 097b8bf..34086cb 100644 --- a/source/data/rbnf/fr_CH.txt +++ b/source/data/rbnf/fr_CH.txt @@ -181,5 +181,5 @@ fr_CH{ "2: =%%spellout-ordinal=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/ga.txt b/source/data/rbnf/ga.txt index e4410f4..543beff 100644 --- a/source/data/rbnf/ga.txt +++ b/source/data/rbnf/ga.txt @@ -245,5 +245,5 @@ ga{ "20: =%%is= =%%quadrillions=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/he.txt b/source/data/rbnf/he.txt index a3d060e..de08dc5 100644 --- a/source/data/rbnf/he.txt +++ b/source/data/rbnf/he.txt @@ -312,5 +312,5 @@ he{ "11: =%spellout-numbering=;", } } - Version{"2.1.38.34"} + Version{"36"} } diff --git a/source/data/rbnf/hi.txt b/source/data/rbnf/hi.txt index 6b98a85..606b520 100644 --- a/source/data/rbnf/hi.txt +++ b/source/data/rbnf/hi.txt @@ -176,5 +176,5 @@ hi{ "7: =%spellout-cardinal=\u0935\u0940;", } } - Version{"2.1.33.36"} + Version{"36"} } diff --git a/source/data/rbnf/hr.txt b/source/data/rbnf/hr.txt index 47f208c..2812c02 100644 --- a/source/data/rbnf/hr.txt +++ b/source/data/rbnf/hr.txt @@ -202,5 +202,5 @@ hr{ "0: =%%spellout-ordinal-base=a;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/hu.txt b/source/data/rbnf/hu.txt index d0d1879..501625d 100644 --- a/source/data/rbnf/hu.txt +++ b/source/data/rbnf/hu.txt @@ -122,5 +122,5 @@ hu{ "1000000000: =#,##0=.;", } } - Version{"2.1.41.98"} + Version{"36"} } diff --git a/source/data/rbnf/hy.txt b/source/data/rbnf/hy.txt index 558d46d..c5ec938 100644 --- a/source/data/rbnf/hy.txt +++ b/source/data/rbnf/hy.txt @@ -39,5 +39,5 @@ hy{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/id.txt b/source/data/rbnf/id.txt index 0215fe6..f19881f 100644 --- a/source/data/rbnf/id.txt +++ b/source/data/rbnf/id.txt @@ -45,5 +45,5 @@ id{ "0: ke=%spellout-cardinal=;", } } - Version{"2.1.32.38"} + Version{"36"} } diff --git a/source/data/rbnf/is.txt b/source/data/rbnf/is.txt index d2ff8f7..50c0731 100644 --- a/source/data/rbnf/is.txt +++ b/source/data/rbnf/is.txt @@ -116,5 +116,5 @@ is{ "1000000000000000000: =#,##0.#=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/it.txt b/source/data/rbnf/it.txt index 77559c2..55a535b 100644 --- a/source/data/rbnf/it.txt +++ b/source/data/rbnf/it.txt @@ -388,5 +388,5 @@ it{ "10: o\u00AD=%spellout-ordinal-feminine=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/ja.txt b/source/data/rbnf/ja.txt index 95815af..28ad950 100644 --- a/source/data/rbnf/ja.txt +++ b/source/data/rbnf/ja.txt @@ -78,5 +78,5 @@ ja{ "0: \u7B2C=%spellout-numbering=;", } } - Version{"2.1.48.72"} + Version{"36"} } diff --git a/source/data/rbnf/ka.txt b/source/data/rbnf/ka.txt index 8534565..9498473 100644 --- a/source/data/rbnf/ka.txt +++ b/source/data/rbnf/ka.txt @@ -63,5 +63,5 @@ ka{ "1: ' =%spellout-cardinal=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/kl.txt b/source/data/rbnf/kl.txt index 59ed9f4..a92a4d4 100644 --- a/source/data/rbnf/kl.txt +++ b/source/data/rbnf/kl.txt @@ -70,5 +70,5 @@ kl{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/km.txt b/source/data/rbnf/km.txt index 744f26b..8ca105d 100644 --- a/source/data/rbnf/km.txt +++ b/source/data/rbnf/km.txt @@ -47,5 +47,5 @@ km{ "0: \u1791\u17B8=%spellout-cardinal=;", } } - Version{"2.1.19.14"} + Version{"36"} } diff --git a/source/data/rbnf/ko.txt b/source/data/rbnf/ko.txt index 4249909..dcb7fae 100644 --- a/source/data/rbnf/ko.txt +++ b/source/data/rbnf/ko.txt @@ -246,5 +246,5 @@ ko{ "3: =%%spellout-ordinal-native-smaller=;", } } - Version{"2.1.34.84"} + Version{"36"} } diff --git a/source/data/rbnf/ky.txt b/source/data/rbnf/ky.txt index bc8faeb..79a7c37 100644 --- a/source/data/rbnf/ky.txt +++ b/source/data/rbnf/ky.txt @@ -165,5 +165,5 @@ ky{ "1000000000000: 0* <#,##0<<;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/lb.txt b/source/data/rbnf/lb.txt index 6d1c269..d421596 100644 --- a/source/data/rbnf/lb.txt +++ b/source/data/rbnf/lb.txt @@ -201,5 +201,5 @@ lb{ "1: ' =%spellout-ordinal-neuter=;", } } - Version{"2.1.38.68"} + Version{"36"} } diff --git a/source/data/rbnf/lo.txt b/source/data/rbnf/lo.txt index 905736e..b61789d 100644 --- a/source/data/rbnf/lo.txt +++ b/source/data/rbnf/lo.txt @@ -43,5 +43,5 @@ lo{ "0: \u0E17\u0E35\u0E48\u200B=%spellout-cardinal=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/lrc.txt b/source/data/rbnf/lrc.txt index be37ce3..5a244d2 100644 --- a/source/data/rbnf/lrc.txt +++ b/source/data/rbnf/lrc.txt @@ -55,5 +55,5 @@ lrc{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.36.80"} + Version{"36"} } diff --git a/source/data/rbnf/lt.txt b/source/data/rbnf/lt.txt index a2cd9ac..1d951b0 100644 --- a/source/data/rbnf/lt.txt +++ b/source/data/rbnf/lt.txt @@ -106,5 +106,5 @@ lt{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/lv.txt b/source/data/rbnf/lv.txt index 51082a7..5f1d31d 100644 --- a/source/data/rbnf/lv.txt +++ b/source/data/rbnf/lv.txt @@ -81,5 +81,5 @@ lv{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/mk.txt b/source/data/rbnf/mk.txt index 7b830c8..c3e0649 100644 --- a/source/data/rbnf/mk.txt +++ b/source/data/rbnf/mk.txt @@ -97,5 +97,5 @@ mk{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/ms.txt b/source/data/rbnf/ms.txt index db246be..2adf549 100644 --- a/source/data/rbnf/ms.txt +++ b/source/data/rbnf/ms.txt @@ -50,5 +50,5 @@ ms{ "2: ke=%spellout-cardinal=;", } } - Version{"2.1.49.24"} + Version{"36"} } diff --git a/source/data/rbnf/mt.txt b/source/data/rbnf/mt.txt index 2aed0a5..638f38e 100644 --- a/source/data/rbnf/mt.txt +++ b/source/data/rbnf/mt.txt @@ -268,5 +268,5 @@ mt{ "10: g\u0127axart;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/my.txt b/source/data/rbnf/my.txt index a7d0fcd..c365c49 100644 --- a/source/data/rbnf/my.txt +++ b/source/data/rbnf/my.txt @@ -51,5 +51,5 @@ my{ "11: =%spellout-cardinal=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/nb.txt b/source/data/rbnf/nb.txt index b891455..d3fac32 100644 --- a/source/data/rbnf/nb.txt +++ b/source/data/rbnf/nb.txt @@ -311,5 +311,5 @@ nb{ "1: er =%spellout-ordinal-plural=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/nl.txt b/source/data/rbnf/nl.txt index b909d31..bfb59c5 100644 --- a/source/data/rbnf/nl.txt +++ b/source/data/rbnf/nl.txt @@ -106,5 +106,5 @@ nl{ "1000000000000000000: =#,##0=.;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/nn.txt b/source/data/rbnf/nn.txt index b8996b5..772cb60 100644 --- a/source/data/rbnf/nn.txt +++ b/source/data/rbnf/nn.txt @@ -70,5 +70,5 @@ nn{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/pl.txt b/source/data/rbnf/pl.txt index eb3038e..a35907d 100644 --- a/source/data/rbnf/pl.txt +++ b/source/data/rbnf/pl.txt @@ -394,5 +394,5 @@ pl{ "10: << >>;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/pt.txt b/source/data/rbnf/pt.txt index d780e51..f927432 100644 --- a/source/data/rbnf/pt.txt +++ b/source/data/rbnf/pt.txt @@ -194,5 +194,5 @@ pt{ "1000000000000000000: =#,##0=\u00AA;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/pt_PT.txt b/source/data/rbnf/pt_PT.txt index 885691f..7c679bd 100644 --- a/source/data/rbnf/pt_PT.txt +++ b/source/data/rbnf/pt_PT.txt @@ -184,5 +184,5 @@ pt_PT{ "1000000000000000000: =#,##0=\u00AA;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/qu.txt b/source/data/rbnf/qu.txt index 5046ae1..7be483a 100644 --- a/source/data/rbnf/qu.txt +++ b/source/data/rbnf/qu.txt @@ -42,5 +42,5 @@ qu{ "0: =%spellout-cardinal=-\u00F1iqin;", } } - Version{"2.1.38.68"} + Version{"36"} } diff --git a/source/data/rbnf/ro.txt b/source/data/rbnf/ro.txt index b3f0091..8e91ac2 100644 --- a/source/data/rbnf/ro.txt +++ b/source/data/rbnf/ro.txt @@ -87,5 +87,5 @@ ro{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/root.txt b/source/data/rbnf/root.txt index 0033c2a..ec92233 100644 --- a/source/data/rbnf/root.txt +++ b/source/data/rbnf/root.txt @@ -658,5 +658,5 @@ root{ "0: =#,##0.#=.;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/ru.txt b/source/data/rbnf/ru.txt index 3fbad65..41aa742 100644 --- a/source/data/rbnf/ru.txt +++ b/source/data/rbnf/ru.txt @@ -1386,5 +1386,5 @@ ru{ "21001: =0=.;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/se.txt b/source/data/rbnf/se.txt index 8d0b776..a2dab38 100644 --- a/source/data/rbnf/se.txt +++ b/source/data/rbnf/se.txt @@ -36,5 +36,5 @@ se{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/sk.txt b/source/data/rbnf/sk.txt index d6056a2..422c4c7 100644 --- a/source/data/rbnf/sk.txt +++ b/source/data/rbnf/sk.txt @@ -80,5 +80,5 @@ sk{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.34.98"} + Version{"36"} } diff --git a/source/data/rbnf/sl.txt b/source/data/rbnf/sl.txt index 5850381..abaff81 100644 --- a/source/data/rbnf/sl.txt +++ b/source/data/rbnf/sl.txt @@ -128,5 +128,5 @@ sl{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/sq.txt b/source/data/rbnf/sq.txt index 263860e..fb8a23f 100644 --- a/source/data/rbnf/sq.txt +++ b/source/data/rbnf/sq.txt @@ -63,5 +63,5 @@ sq{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/sr.txt b/source/data/rbnf/sr.txt index da14730..c4139e7 100644 --- a/source/data/rbnf/sr.txt +++ b/source/data/rbnf/sr.txt @@ -150,5 +150,5 @@ sr{ "400: <%spellout-cardinal-feminine<\u0441\u0442\u043E>%%ordti>;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/sr_Latn.txt b/source/data/rbnf/sr_Latn.txt index 464fbda..4ab37b3 100644 --- a/source/data/rbnf/sr_Latn.txt +++ b/source/data/rbnf/sr_Latn.txt @@ -146,5 +146,5 @@ sr_Latn{ "400: <%spellout-cardinal-feminine%%ordti>;", } } - Version{"2.1.44.50"} + Version{"36"} } diff --git a/source/data/rbnf/sv.txt b/source/data/rbnf/sv.txt index 38732ac..56c285b 100644 --- a/source/data/rbnf/sv.txt +++ b/source/data/rbnf/sv.txt @@ -221,5 +221,5 @@ sv{ "0: =%spellout-ordinal-neuter=;", } } - Version{"2.1.34.81"} + Version{"36"} } diff --git a/source/data/rbnf/sw.txt b/source/data/rbnf/sw.txt index b41363b..511c74c 100644 --- a/source/data/rbnf/sw.txt +++ b/source/data/rbnf/sw.txt @@ -48,5 +48,5 @@ sw{ "3: wa =%spellout-cardinal=;", } } - Version{"2.1.38.68"} + Version{"36"} } diff --git a/source/data/rbnf/ta.txt b/source/data/rbnf/ta.txt index 36ed249..2bdb3ea 100644 --- a/source/data/rbnf/ta.txt +++ b/source/data/rbnf/ta.txt @@ -84,5 +84,5 @@ ta{ "21: =#,##,##0=\u0BBE\u0BB5\u0BA4\u0BC1;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/th.txt b/source/data/rbnf/th.txt index e521656..e993d14 100644 --- a/source/data/rbnf/th.txt +++ b/source/data/rbnf/th.txt @@ -43,5 +43,5 @@ th{ "0: \u0E17\u0E35\u0E48\u200B=%spellout-cardinal=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/tr.txt b/source/data/rbnf/tr.txt index ba3a7e6..d9ac668 100644 --- a/source/data/rbnf/tr.txt +++ b/source/data/rbnf/tr.txt @@ -87,5 +87,5 @@ tr{ "1000000000000000000: =#,##0='inci;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/uk.txt b/source/data/rbnf/uk.txt index 3df423e..f6b67a1 100644 --- a/source/data/rbnf/uk.txt +++ b/source/data/rbnf/uk.txt @@ -121,5 +121,5 @@ uk{ "1000000000000000000: =#,##0=;", } } - Version{"2.1.30.62"} + Version{"36"} } diff --git a/source/data/rbnf/vi.txt b/source/data/rbnf/vi.txt index 8c5a121..dfa17c0 100644 --- a/source/data/rbnf/vi.txt +++ b/source/data/rbnf/vi.txt @@ -59,5 +59,5 @@ vi{ "5: th\u1EE9 =%spellout-cardinal=;", } } - Version{"2.1.27.23"} + Version{"36"} } diff --git a/source/data/rbnf/yue.txt b/source/data/rbnf/yue.txt index bf66ac2..d804409 100644 --- a/source/data/rbnf/yue.txt +++ b/source/data/rbnf/yue.txt @@ -149,23 +149,7 @@ yue{ "0: \u96F6;", "1: \u4E00;", "2: \u5169;", - "3: \u4E09;", - "4: \u56DB;", - "5: \u4E94;", - "6: \u516D;", - "7: \u4E03;", - "8: \u516B;", - "9: \u4E5D;", - "10: <%%cardinal-twenties<\u5341[>%spellout-numbering>];", - "21: \u5EFF[>%spellout-numbering>];", - "30: <%spellout-numbering<\u5341[>>];", - "100: <%spellout-numbering<\u767E[>%%number2>];", - "1000: <%spellout-numbering<\u5343[>%%number3>];", - "10000: <%spellout-numbering<\u842C[>%%number4>];", - "100000000: <%spellout-numbering<\u5104[>%%number5>];", - "1000000000000: <%spellout-numbering<\u5146[>%%number8>];", - "10000000000000000: <%spellout-numbering<\u4EAC[>%%number13>];", - "1000000000000000000: =#,##0=;", + "3: =%spellout-cardinal=;", "%%cardinal-twenties:", "1: ;", "2: \u4E8C;", @@ -174,5 +158,5 @@ yue{ "0: \u7B2C=%spellout-numbering=;", } } - Version{"2.1.46.24"} + Version{"36"} } diff --git a/source/data/rbnf/yue_Hans.txt b/source/data/rbnf/yue_Hans.txt index 4da06f5..6aad531 100644 --- a/source/data/rbnf/yue_Hans.txt +++ b/source/data/rbnf/yue_Hans.txt @@ -150,23 +150,7 @@ yue_Hans{ "0: \u96F6;", "1: \u4E00;", "2: \u4E24;", - "3: \u4E09;", - "4: \u56DB;", - "5: \u4E94;", - "6: \u516D;", - "7: \u4E03;", - "8: \u516B;", - "9: \u4E5D;", - "10: <%%cardinal-twenties<\u5341[>%spellout-numbering>];", - "21: \u5EFF[>%spellout-numbering>];", - "30: <%spellout-numbering<\u5341[>>];", - "100: <%spellout-numbering<\u767E[>%%number2>];", - "1000: <%spellout-numbering<\u5343[>%%number3>];", - "10000: <%spellout-numbering<\u4E07[>%%number4>];", - "100000000: <%spellout-numbering<\u4EBF[>%%number5>];", - "1000000000000: <%spellout-numbering<\u5146[>%%number8>];", - "10000000000000000: <%spellout-numbering<\u4EAC[>%%number13>];", - "1000000000000000000: =#,##0=;", + "3: =%spellout-cardinal=;", "%%cardinal-twenties:", "1: ;", "2: \u4E8C;", @@ -175,5 +159,5 @@ yue_Hans{ "0: \u7B2C=%spellout-numbering=;", } } - Version{"2.1.48.77"} + Version{"36"} } diff --git a/source/data/rbnf/zh.txt b/source/data/rbnf/zh.txt index db6a45a..144b8f6 100644 --- a/source/data/rbnf/zh.txt +++ b/source/data/rbnf/zh.txt @@ -240,5 +240,5 @@ zh{ "0: \u7B2C=%spellout-numbering=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/rbnf/zh_Hant.txt b/source/data/rbnf/zh_Hant.txt index 7ed0c93..08f3c41 100644 --- a/source/data/rbnf/zh_Hant.txt +++ b/source/data/rbnf/zh_Hant.txt @@ -214,5 +214,5 @@ zh_Hant{ "0: \u7B2C=%spellout-numbering=;", } } - Version{"2.1.27.22"} + Version{"36"} } diff --git a/source/data/region/af.txt b/source/data/region/af.txt index 2d08a40..d211849 100644 --- a/source/data/region/af.txt +++ b/source/data/region/af.txt @@ -183,7 +183,7 @@ af{ MF{"Sint Martin"} MG{"Madagaskar"} MH{"Marshalleilande"} - MK{"Macedonië"} + MK{"Noord-Macedonië"} ML{"Mali"} MM{"Mianmar (Birma)"} MN{"Mongolië"} @@ -253,7 +253,7 @@ af{ SV{"El Salvador"} SX{"Sint Maarten"} SY{"Sirië"} - SZ{"Swaziland"} + SZ{"Eswatini"} TA{"Tristan da Cunha"} TC{"Turks- en Caicoseilande"} TD{"Tsjad"} @@ -287,6 +287,8 @@ af{ VU{"Vanuatu"} WF{"Wallis en Futuna"} WS{"Samoa"} + XA{"Pseudoaksente"} + XB{"Pseudotweerigting"} XK{"Kosovo"} YE{"Jemen"} YT{"Mayotte"} @@ -306,9 +308,11 @@ af{ Countries%variant{ CD{"Kongo (DRK)"} CG{"Kongo (Republiek die)"} + CI{"Cote d’Ivoire"} CZ{"Tsjeggiese Republiek"} FK{"Falklandeilande (Malvinas)"} - MK{"Macedonië (VJRM)"} + SZ{"Eswatini"} + TL{"Oos-Timor"} } - Version{"2.1.48.17"} + Version{"36"} } diff --git a/source/data/region/agq.txt b/source/data/region/agq.txt index 925ff9a..a70c37d 100644 --- a/source/data/region/agq.txt +++ b/source/data/region/agq.txt @@ -127,7 +127,6 @@ agq{ MD{"Mòodovà"} MG{"Màdàgasɨkà"} MH{"Chwɨlà fɨ Mashà"} - MK{"Mɨ̀sɨ̀donyìa"} ML{"Malè"} MM{"Mǐanmà"} MN{"Mùŋgolìa"} @@ -227,5 +226,5 @@ agq{ ZM{"Zambìa"} ZW{"Zìmbagbɛ̀"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ak.txt b/source/data/region/ak.txt index 25c6485..c2b7a63 100644 --- a/source/data/region/ak.txt +++ b/source/data/region/ak.txt @@ -127,7 +127,6 @@ ak{ MD{"Mɔldova"} MG{"Madagaska"} MH{"Marshall Islands"} - MK{"Masedonia"} ML{"Mali"} MM{"Miyanma"} MN{"Mɔngolia"} @@ -227,5 +226,5 @@ ak{ ZM{"Zambia"} ZW{"Zembabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/am.txt b/source/data/region/am.txt index ddab049..f37e156 100644 --- a/source/data/region/am.txt +++ b/source/data/region/am.txt @@ -74,7 +74,7 @@ am{ CA{"ካናዳ"} CC{"ኮኮስ(ኬሊንግ) ደሴቶች"} CD{"ኮንጎ-ኪንሻሳ"} - CF{"የመካከለኛው አፍሪካ ሪፐብሊክ"} + CF{"ማዕከላዊ አፍሪካ ሪፑብሊክ"} CG{"ኮንጎ ብራዛቪል"} CH{"ስዊዘርላንድ"} CI{"ኮት ዲቯር"} @@ -287,6 +287,8 @@ am{ VU{"ቫኑአቱ"} WF{"ዋሊስ እና ፉቱና ደሴቶች"} WS{"ሳሞአ"} + XA{"የሀሰት ትእምርት"} + XB{"የሀሰት ባለሁለት አቅጣጫ"} XK{"ኮሶቮ"} YE{"የመን"} YT{"ሜይኦቴ"} @@ -312,5 +314,5 @@ am{ SZ{"ስዋዚላንድ"} TL{"ምስራቅ ቲሞር"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/ar.txt b/source/data/region/ar.txt index 8f3ebfe..ae4583d 100644 --- a/source/data/region/ar.txt +++ b/source/data/region/ar.txt @@ -65,7 +65,7 @@ ar{ BO{"بوليفيا"} BQ{"هولندا الكاريبية"} BR{"البرازيل"} - BS{"البهاما"} + BS{"جزر البهاما"} BT{"بوتان"} BV{"جزيرة بوفيه"} BW{"بوتسوانا"} @@ -187,7 +187,7 @@ ar{ ML{"مالي"} MM{"ميانمار (بورما)"} MN{"منغوليا"} - MO{"مكاو الصينية (منطقة إدارية خاصة)"} + MO{"منطقة ماكاو الإدارية الخاصة"} MP{"جزر ماريانا الشمالية"} MQ{"جزر المارتينيك"} MR{"موريتانيا"} @@ -287,7 +287,6 @@ ar{ VU{"فانواتو"} WF{"جزر والس وفوتونا"} WS{"ساموا"} - XA{"XA"} XK{"كوسوفو"} YE{"اليمن"} YT{"مايوت"} @@ -310,7 +309,8 @@ ar{ CI{"كوت ديفوار"} CZ{"جمهورية التشيك"} FK{"جزر فوكلاند - جزر مالفيناس"} + SZ{"سوازيلاند"} TL{"تيمور الشرقية"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/ar_AE.txt b/source/data/region/ar_AE.txt index 66f7a47..0ee2ba7 100644 --- a/source/data/region/ar_AE.txt +++ b/source/data/region/ar_AE.txt @@ -5,5 +5,5 @@ ar_AE{ CI{"ساحل العاج"} TL{"التيمور الشرقية"} } - Version{"2.1.49.36"} + Version{"36"} } diff --git a/source/data/region/ar_LY.txt b/source/data/region/ar_LY.txt index 33c7300..b25b742 100644 --- a/source/data/region/ar_LY.txt +++ b/source/data/region/ar_LY.txt @@ -6,5 +6,5 @@ ar_LY{ MS{"مونتيسيرات"} UY{"أوروغواي"} } - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/ar_SA.txt b/source/data/region/ar_SA.txt index 2c4d2f8..cf49743 100644 --- a/source/data/region/ar_SA.txt +++ b/source/data/region/ar_SA.txt @@ -3,7 +3,6 @@ ar_SA{ Countries{ AC{"جزيرة أسينشين"} - BS{"جزر البهاما"} EA{"سبتة ومليلية"} MO{"ماكاو الصينية (منطقة إدارية خاصة)"} MS{"مونتيسيرات"} @@ -15,5 +14,5 @@ ar_SA{ Countries%variant{ CZ{"التشيك"} } - Version{"2.1.49.36"} + Version{"36"} } diff --git a/source/data/region/as.txt b/source/data/region/as.txt index fe125b5..0b5d8fe 100644 --- a/source/data/region/as.txt +++ b/source/data/region/as.txt @@ -4,7 +4,7 @@ as{ Countries{ 001{"বিশ্ব"} 002{"আফ্ৰিকা"} - 003{"উদীচ্য আমেৰিকা"} + 003{"উত্তৰ আমেৰিকা"} 005{"দক্ষিণ আমেৰিকা"} 009{"অ’চেনীয়া"} 011{"পাশ্চাত্য আফ্ৰিকা"} @@ -14,7 +14,7 @@ as{ 017{"মধ্য আফ্ৰিকা"} 018{"দাক্ষিণাত্য আফ্ৰিকা"} 019{"আমেৰিকাছ্"} - 021{"উত্তৰীয় আমেৰিকা"} + 021{"উদীচ্য আমেৰিকা"} 029{"কেৰিবিয়ান"} 030{"প্ৰাচ্য এছিয়া"} 034{"দাক্ষিণাত্য এছিয়া"} @@ -183,11 +183,11 @@ as{ MF{"ছেইণ্ট মাৰ্টিন"} MG{"মাদাগাস্কাৰ"} MH{"মাৰ্শ্বাল দ্বীপপুঞ্জ"} - MK{"মেচিডোনীয়া"} + MK{"উত্তৰ মেচিডোনীয়া"} ML{"মালি"} MM{"ম্যানমাৰ (বাৰ্মা)"} MN{"মঙ্গোলিয়া"} - MO{"মাকাউ এছ. এ. আৰ. চীন"} + MO{"মাকাও এছ. এ. আৰ. চীন"} MP{"উত্তৰ মাৰিয়ানা দ্বীপপুঞ্জ"} MQ{"মাৰ্টিনিক"} MR{"মাউৰিটানিয়া"} @@ -300,7 +300,7 @@ as{ Countries%short{ GB{"ইউ. কে."} HK{"হং কং"} - MO{"মাকাউ"} + MO{"মাকাও"} PS{"ফিলিস্তিন"} US{"মা. যু."} } @@ -310,9 +310,8 @@ as{ CI{"আইভৰী কোষ্ট"} CZ{"চেক প্রজাতন্ত্র"} FK{"ফকলেণ্ড দ্বীপপুঞ্জ (আইলেছ মালভিনাছ)"} - MK{"মেচিডোনীয়া (FYROM)"} SZ{"স্বাজিলেণ্ড"} TL{"পূৱ টিমোৰ"} } - Version{"2.1.48.17"} + Version{"36"} } diff --git a/source/data/region/asa.txt b/source/data/region/asa.txt index 444a87d..d66c088 100644 --- a/source/data/region/asa.txt +++ b/source/data/region/asa.txt @@ -126,7 +126,6 @@ asa{ MD{"Moldova"} MG{"Bukini"} MH{"Vithiwa vya Marshal"} - MK{"Mathedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -225,5 +224,5 @@ asa{ ZM{"Dhambia"} ZW{"Dhimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ast.txt b/source/data/region/ast.txt index d1c28fe..d59ffd5 100644 --- a/source/data/region/ast.txt +++ b/source/data/region/ast.txt @@ -182,7 +182,6 @@ ast{ MF{"Saint Martin"} MG{"Madagascar"} MH{"Islles Marshall"} - MK{"Macedonia"} ML{"Malí"} MM{"Myanmar (Birmania)"} MN{"Mongolia"} @@ -307,8 +306,7 @@ ast{ CI{"Costa del Marfil"} CZ{"República Checa"} FK{"Islles Malvines (Falkland Islands)"} - MK{"Macedonia (ARYDM)"} TL{"Timor Este"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/az.txt b/source/data/region/az.txt index 1ea8504..570a779 100644 --- a/source/data/region/az.txt +++ b/source/data/region/az.txt @@ -133,7 +133,7 @@ az{ GU{"Quam"} GW{"Qvineya-Bisau"} GY{"Qayana"} - HK{"Honq Konq Xüsusi İnzibati Ərazi Çin"} + HK{"Honq Konq Xüsusi İnzibati Rayonu Çin"} HM{"Herd və Makdonald adaları"} HN{"Honduras"} HR{"Xorvatiya"} @@ -187,7 +187,7 @@ az{ ML{"Mali"} MM{"Myanma"} MN{"Monqolustan"} - MO{"Makao Xüsusi İnzibati Ərazi Çin"} + MO{"Makao XİR Çin"} MP{"Şimali Marian adaları"} MQ{"Martinik"} MR{"Mavritaniya"} @@ -312,7 +312,7 @@ az{ CZ{"Çex Respublikası"} FK{"Folklend adaları (Malvin adaları)"} SZ{"Svazilend"} - TL{"Doğu Timor"} + TL{"Şərqi Timor"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/az_Cyrl.txt b/source/data/region/az_Cyrl.txt index 28fe92a..a4f555a 100644 --- a/source/data/region/az_Cyrl.txt +++ b/source/data/region/az_Cyrl.txt @@ -300,7 +300,6 @@ az_Cyrl{ CG{"Конго (Республика)"} CZ{"Чех Республикасы"} FK{"Фолкленд адалары (Малвин адалары)"} - MK{"Македонија (КЈРМ)"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/az_Latn.txt b/source/data/region/az_Latn.txt index 9c120f3..5247644 100644 --- a/source/data/region/az_Latn.txt +++ b/source/data/region/az_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License az_Latn{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/bas.txt b/source/data/region/bas.txt index e44d9cc..c16614c 100644 --- a/source/data/region/bas.txt +++ b/source/data/region/bas.txt @@ -124,7 +124,6 @@ bas{ MD{"Moldavìà"} MG{"Màdàgàskâr"} MH{"Bìòn bi Marcàl"} - MK{"Màsèdonìà"} ML{"Màli"} MM{"Myànmâr"} MN{"Mòŋgolìà"} @@ -224,5 +223,5 @@ bas{ ZM{"Zàmbià"} ZW{"Zìmbàbwê"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/be.txt b/source/data/region/be.txt index a197d30..bb9e7ae 100644 --- a/source/data/region/be.txt +++ b/source/data/region/be.txt @@ -11,11 +11,11 @@ be{ 013{"Цэнтральная Амерыка"} 014{"Усходняя Афрыка"} 015{"Паўночная Афрыка"} - 017{"Цэнтральная Афрыка"} + 017{"Сярэдняя Афрыка"} 018{"Паўднёвая Афрыка"} 019{"Паўночная і Паўднёвая Амерыкі"} 021{"Паўночнаамерыканскі рэгіён"} - 029{"Карыбскія астравы"} + 029{"Карыбскі рэгіён"} 030{"Усходняя Азія"} 034{"Паўднёвая Азія"} 035{"Паўднёва-Усходняя Азія"} @@ -83,7 +83,7 @@ be{ CM{"Камерун"} CN{"Кітай"} CO{"Калумбія"} - CP{"Востраў Кліпертон"} + CP{"Востраў Кліпертан"} CR{"Коста-Рыка"} CU{"Куба"} CV{"Каба-Вердэ"} @@ -98,7 +98,7 @@ be{ DM{"Дамініка"} DO{"Дамініканская Рэспубліка"} DZ{"Алжыр"} - EA{"Сеўта і Мелілья"} + EA{"Сеута і Мелілья"} EC{"Эквадор"} EE{"Эстонія"} EG{"Егіпет"} @@ -128,7 +128,7 @@ be{ GP{"Гвадэлупа"} GQ{"Экватарыяльная Гвінея"} GR{"Грэцыя"} - GS{"Паўднёвая Джорджыя і Паўднёвыя Сандвічавы астравы"} + GS{"Паўднёвая Георгія і Паўднёвыя Сандвічавы астравы"} GT{"Гватэмала"} GU{"Гуам"} GW{"Гвінея-Бісау"} @@ -227,7 +227,7 @@ be{ PW{"Палау"} PY{"Парагвай"} QA{"Катар"} - QO{"Знешняя Акіянія"} + QO{"Аддаленыя тэрыторыі Акіяніі"} RE{"Рэюньён"} RO{"Румынія"} RS{"Сербія"} @@ -253,7 +253,7 @@ be{ SV{"Сальвадор"} SX{"Сінт-Мартэн"} SY{"Сірыя"} - SZ{"Свазіленд"} + SZ{"Эсватыні"} TA{"Трыстан-да-Кунья"} TC{"Астравы Цёркс і Кайкас"} TD{"Чад"} @@ -274,8 +274,8 @@ be{ UA{"Украіна"} UG{"Уганда"} UM{"Малыя Аддаленыя астравы ЗША"} - UN{"ААН"} - US{"Злучаныя Штаты Амерыкі"} + UN{"Арганізацыя Аб’яднаных Нацый"} + US{"Злучаныя Штаты"} UY{"Уругвай"} UZ{"Узбекістан"} VA{"Ватыкан"} @@ -287,6 +287,8 @@ be{ VU{"Вануату"} WF{"Уоліс і Футуна"} WS{"Самоа"} + XA{"Псеўдаакцэнты"} + XB{"Псеўда-Bidi"} XK{"Косава"} YE{"Емен"} YT{"Маёта"} @@ -308,8 +310,8 @@ be{ CI{"Бераг Слановай Косці"} CZ{"Чэшская Рэспубліка"} FK{"Фалклендскія (Мальвінскія) астравы"} - SZ{"Каралеўства Свазіленд"} + SZ{"Свазіленд"} TL{"Усходні Тымор"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/bem.txt b/source/data/region/bem.txt index 0d977f2..dffff62 100644 --- a/source/data/region/bem.txt +++ b/source/data/region/bem.txt @@ -4,5 +4,5 @@ bem{ Countries{ ZM{"Zambia"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/bez.txt b/source/data/region/bez.txt index e8ea30e..c5960bc 100644 --- a/source/data/region/bez.txt +++ b/source/data/region/bez.txt @@ -127,7 +127,6 @@ bez{ MD{"Humoldova"} MG{"Hubukini"} MH{"Ifisima fya Marshal"} - MK{"Humasedonia"} ML{"Humali"} MM{"Humyama"} MN{"Humongolia"} @@ -227,5 +226,5 @@ bez{ ZM{"Huzambia"} ZW{"Huzimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/bg.txt b/source/data/region/bg.txt index 4b59357..e79113a 100644 --- a/source/data/region/bg.txt +++ b/source/data/region/bg.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License bg{ Countries{ - 001{"Свят"} + 001{"свят"} 002{"Африка"} 003{"Северноамерикански континент"} 005{"Южна Америка"} @@ -107,7 +107,7 @@ bg{ ES{"Испания"} ET{"Етиопия"} EU{"Европейски съюз"} - EZ{"Еврозона"} + EZ{"еврозона"} FI{"Финландия"} FJ{"Фиджи"} FK{"Фолкландски острови"} @@ -253,7 +253,7 @@ bg{ SV{"Салвадор"} SX{"Синт Мартен"} SY{"Сирия"} - SZ{"Свазиленд"} + SZ{"Есватини"} TA{"Тристан да Куня"} TC{"острови Търкс и Кайкос"} TD{"Чад"} @@ -287,6 +287,8 @@ bg{ VU{"Вануату"} WF{"Уолис и Футуна"} WS{"Самоа"} + XA{"Псевдоакценти"} + XB{"Псевдодвупосочни"} XK{"Косово"} YE{"Йемен"} YT{"Майот"} @@ -305,8 +307,11 @@ bg{ Countries%variant{ CD{"Конго (ДРК)"} CG{"Конго (Република)"} + CI{"Кот д’Ивоар"} CZ{"Чешка република"} FK{"Фолкландски острови (Малвински острови)"} + SZ{"Свазиленд"} + TL{"Източен Тимор"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/bm.txt b/source/data/region/bm.txt index e5317df..de93e69 100644 --- a/source/data/region/bm.txt +++ b/source/data/region/bm.txt @@ -127,7 +127,6 @@ bm{ MD{"Molidavi"} MG{"Madagasikari"} MH{"Marisali Gun"} - MK{"Macedɔni"} ML{"Mali"} MM{"Myanimari"} MN{"Moŋoli"} @@ -227,5 +226,5 @@ bm{ ZM{"Zanbi"} ZW{"Zimbabuwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/bn.txt b/source/data/region/bn.txt index 2d6e307..e21c273 100644 --- a/source/data/region/bn.txt +++ b/source/data/region/bn.txt @@ -183,7 +183,7 @@ bn{ MF{"সেন্ট মার্টিন"} MG{"মাদাগাস্কার"} MH{"মার্শাল দ্বীপপুঞ্জ"} - MK{"ম্যাসাডোনিয়া"} + MK{"উত্তর ম্যাসেডোনিয়া"} ML{"মালি"} MM{"মায়ানমার (বার্মা)"} MN{"মঙ্গোলিয়া"} @@ -287,6 +287,8 @@ bn{ VU{"ভানুয়াটু"} WF{"ওয়ালিস ও ফুটুনা"} WS{"সামোয়া"} + XA{"সিউডো-অ্যাকসেন্ট"} + XB{"সিউডো-বিডি"} XK{"কসোভো"} YE{"ইয়েমেন"} YT{"মায়োত্তে"} @@ -309,9 +311,8 @@ bn{ CI{"আইভরি কোস্ট"} CZ{"চেক প্রজাতন্ত্র"} FK{"ফকল্যান্ড আইল্যান্ড ( ইসল্যাস মাসভেনিস)"} - MK{"ম্যাসিডোনিয়া (FYROM)"} SZ{"সোয়াজিল্যান্ড"} TL{"পূর্ব তিমুর"} } - Version{"2.1.48.36"} + Version{"36"} } diff --git a/source/data/region/bn_IN.txt b/source/data/region/bn_IN.txt index ca7a190..7d1af84 100644 --- a/source/data/region/bn_IN.txt +++ b/source/data/region/bn_IN.txt @@ -7,5 +7,5 @@ bn_IN{ Countries%variant{ CD{"কঙ্গো (DRC)"} } - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/bo.txt b/source/data/region/bo.txt index ccb509c..ee1d4d7 100644 --- a/source/data/region/bo.txt +++ b/source/data/region/bo.txt @@ -15,5 +15,5 @@ bo{ US{"ཨ་མེ་རི་ཀ།"} ZZ{"མིའི་ཤེས་རྟོགས་མ་བྱུང་བའི་ཁོར་ཡུག"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/bo_IN.txt b/source/data/region/bo_IN.txt index d810e98..a9a413f 100644 --- a/source/data/region/bo_IN.txt +++ b/source/data/region/bo_IN.txt @@ -4,5 +4,5 @@ bo_IN{ Countries{ 009{"ཨོཤི་ཡཱན་ན།"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/br.txt b/source/data/region/br.txt index 2a4009d..03aebfc 100644 --- a/source/data/region/br.txt +++ b/source/data/region/br.txt @@ -183,7 +183,7 @@ br{ MF{"Saint Martin"} MG{"Madagaskar"} MH{"Inizi Marshall"} - MK{"Makedonia"} + MK{"Makedonia an Norzh"} ML{"Mali"} MM{"Myanmar (Birmania)"} MN{"Mongolia"} @@ -253,7 +253,7 @@ br{ SV{"Salvador"} SX{"Sint Maarten"} SY{"Siria"} - SZ{"Swaziland"} + SZ{"Eswatini"} TA{"Tristan da Cunha"} TC{"Inizi Turks ha Caicos"} TD{"Tchad"} @@ -287,6 +287,8 @@ br{ VU{"Vanuatu"} WF{"Wallis ha Futuna"} WS{"Samoa"} + XA{"pouez-mouezh gaou"} + XB{"BiDi gaou"} XK{"Kosovo"} YE{"Yemen"} YT{"Mayotte"} @@ -308,8 +310,8 @@ br{ CI{"Aod Olifant"} CZ{"Republik Tchek"} FK{"Inizi Falkland (Inizi Maloù)"} - MK{"Makedonia (RYKM)"} + SZ{"Swaziland"} TL{"Timor ar Reter"} } - Version{"2.1.48.86"} + Version{"36"} } diff --git a/source/data/region/brx.txt b/source/data/region/brx.txt index 7cd94b1..cdfe0ed 100644 --- a/source/data/region/brx.txt +++ b/source/data/region/brx.txt @@ -174,7 +174,6 @@ brx{ MF{"सेँ मार्टेँ"} MG{"मदागास्कर"} MH{"मार्शल द्वीप"} - MK{"मैसेडोनिया"} ML{"माली"} MM{"म्यानमार"} MN{"मंगोलिया"} @@ -281,5 +280,5 @@ brx{ ZW{"ज़ीम्बाब्वे"} ZZ{"अज्ञात या अवैध प्रदेश"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/bs.txt b/source/data/region/bs.txt index b37ae97..50c7f48 100644 --- a/source/data/region/bs.txt +++ b/source/data/region/bs.txt @@ -115,7 +115,7 @@ bs{ FO{"Farska ostrva"} FR{"Francuska"} GA{"Gabon"} - GB{"Velika Britanija"} + GB{"Ujedinjeno Kraljevstvo"} GD{"Grenada"} GE{"Gruzija"} GF{"Francuska Gvajana"} @@ -253,7 +253,7 @@ bs{ SV{"Salvador"} SX{"Sint Marten"} SY{"Sirija"} - SZ{"Svazilend"} + SZ{"Esvatini"} TA{"Tristan da Cunha"} TC{"Ostrva Turks i Kaikos"} TD{"Čad"} @@ -275,7 +275,7 @@ bs{ UG{"Uganda"} UM{"Američka Vanjska Ostrva"} UN{"Ujedinjene Nacije"} - US{"Sjedinjene Američke Države"} + US{"Sjedinjene Države"} UY{"Urugvaj"} UZ{"Uzbekistan"} VA{"Vatikan"} @@ -309,8 +309,7 @@ bs{ CI{"Obala Bjelokosti"} CZ{"Češka Republika"} FK{"Folklandska (Malvinska) ostrva"} - SZ{"Svazi"} - TL{"TL"} + SZ{"Svazilend"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/bs_Cyrl.txt b/source/data/region/bs_Cyrl.txt index 9243b47..566514b 100644 --- a/source/data/region/bs_Cyrl.txt +++ b/source/data/region/bs_Cyrl.txt @@ -5,7 +5,7 @@ bs_Cyrl{ Countries{ 001{"Свијет"} 002{"Африка"} - 003{"Северноамерички континент"} + 003{"Сјеверноамерички континент"} 005{"Јужна Америка"} 009{"Океанија"} 011{"Западна Африка"} @@ -14,8 +14,8 @@ bs_Cyrl{ 015{"Сјеверна Африка"} 017{"Централна Африка"} 018{"Јужна Африка"} - 019{"Америке"} - 021{"Северна Америка"} + 019{"Сјеверна и Јужна Америка"} + 021{"Сјеверна Америка"} 029{"Кариби"} 030{"Источна Азија"} 034{"Јужна Азија"} @@ -32,6 +32,7 @@ bs_Cyrl{ 151{"Источна Европа"} 154{"Сјеверна Европа"} 155{"Западна Европа"} + 202{"Подсахарска Африка"} 419{"Латинска Америка"} AC{"Острво Асенсион"} AD{"Андора"} @@ -40,7 +41,7 @@ bs_Cyrl{ AG{"Антигва и Барбуда"} AI{"Ангвила"} AL{"Албанија"} - AM{"Ерменија"} + AM{"Арменија"} AO{"Ангола"} AQ{"Антарктик"} AR{"Аргентина"} @@ -70,14 +71,14 @@ bs_Cyrl{ BV{"Острво Буве"} BW{"Боцвана"} BY{"Бјелорусија"} - BZ{"Белиз"} + BZ{"Белизе"} CA{"Канада"} CC{"Кокос (Келинг) Острва"} CD{"Демократска Република Конго"} - CF{"Средњоафричка Република"} + CF{"Централноафричка Република"} CG{"Конго"} CH{"Швицарска"} - CI{"Обала Слоноваче"} + CI{"Обала Слоноваче (Кот д’Ивоар)"} CK{"Кукова Острва"} CL{"Чиле"} CM{"Камерун"} @@ -110,7 +111,7 @@ bs_Cyrl{ EZ{"Еурозона"} FI{"Финска"} FJ{"Фиџи"} - FK{"Фокландска острва"} + FK{"Фокландска Острва"} FM{"Микронезија"} FO{"Фарска острва"} FR{"Француска"} @@ -126,14 +127,14 @@ bs_Cyrl{ GM{"Гамбија"} GN{"Гвинеја"} GP{"Гваделупе"} - GQ{"Екваторска Гвинеја"} + GQ{"Екваторијална Гвинеја"} GR{"Грчка"} - GS{"Јужна Џорџија и Јужна Сендвич Острва"} + GS{"Јужна Џорџија и Јужна Сендвичка Острва"} GT{"Гватемала"} GU{"Гуам"} GW{"Гвинеја-Бисау"} GY{"Гвајана"} - HK{"Хонг Конг (САР Кина)"} + HK{"Хонг Конг С. А. Р."} HM{"Херд и Мекдоналд Острва"} HN{"Хондурас"} HR{"Хрватска"} @@ -159,7 +160,7 @@ bs_Cyrl{ KH{"Камбоџа"} KI{"Кирибати"} KM{"Комори"} - KN{"Свети Кристофор и Невис"} + KN{"Свети Китс и Невис"} KP{"Сјеверна Кореја"} KR{"Јужна Кореја"} KW{"Кувајт"} @@ -187,8 +188,8 @@ bs_Cyrl{ ML{"Мали"} MM{"Мјанмар"} MN{"Монголија"} - MO{"Макао (САР Кина)"} - MP{"Сјеверна Маријанска острва"} + MO{"Макао С. А. Р."} + MP{"Сјеверна Маријанска Острва"} MQ{"Мартиник"} MR{"Мауританија"} MS{"Монсерат"} @@ -249,10 +250,11 @@ bs_Cyrl{ SO{"Сомалија"} SR{"Суринам"} SS{"Јужни Судан"} - ST{"Свети Тома и Принцип"} + ST{"Сао Томе и Принципе"} SV{"Салвадор"} + SX{"Свети Мартин (Холандија)"} SY{"Сирија"} - SZ{"Свази"} + SZ{"Есватини"} TA{"Тристан да Куња"} TC{"Туркс и Кајкос Острва"} TD{"Чад"} @@ -261,7 +263,7 @@ bs_Cyrl{ TH{"Тајланд"} TJ{"Таџикистан"} TK{"Токелау"} - TL{"Источни Тимор"} + TL{"Тимор-Лесте"} TM{"Туркменистан"} TN{"Тунис"} TO{"Тонга"} @@ -286,6 +288,8 @@ bs_Cyrl{ VU{"Вануату"} WF{"Валис и Футуна"} WS{"Самоа"} + XA{"псеудо акценти"} + XB{"псеудо двосмјерно"} XK{"Косово"} YE{"Јемен"} YT{"Мајоте"} @@ -298,14 +302,17 @@ bs_Cyrl{ GB{"УК"} HK{"Хонг Конг"} MO{"Макао"} + PS{"Палестина"} US{"САД"} } Countries%variant{ CD{"ДР Конго"} CG{"Република Конго"} - CI{"Обала Бјелокости"} + CI{"Обала Слоноваче"} CZ{"Чешка Република"} - FK{"Фокландска (Малвинска) острва"} + FK{"Фокландска Острва (Малвинска)"} + SZ{"Есватини"} + TL{"Тимор-Лесте (Источни Тимор)"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/bs_Latn.txt b/source/data/region/bs_Latn.txt index a464369..40dd443 100644 --- a/source/data/region/bs_Latn.txt +++ b/source/data/region/bs_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bs_Latn{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/ca.txt b/source/data/region/ca.txt index 2cec6ce..629996b 100644 --- a/source/data/region/ca.txt +++ b/source/data/region/ca.txt @@ -52,7 +52,7 @@ ca{ AZ{"Azerbaidjan"} BA{"Bòsnia i Hercegovina"} BB{"Barbados"} - BD{"Bangla Desh"} + BD{"Bangladesh"} BE{"Bèlgica"} BF{"Burkina Faso"} BG{"Bulgària"} @@ -77,7 +77,7 @@ ca{ CF{"República Centreafricana"} CG{"Congo - Brazzaville"} CH{"Suïssa"} - CI{"Costa d’Ivori"} + CI{"Côte d’Ivoire"} CK{"Illes Cook"} CL{"Xile"} CM{"Camerun"} @@ -122,7 +122,7 @@ ca{ GG{"Guernsey"} GH{"Ghana"} GI{"Gibraltar"} - GL{"Grenlàndia"} + GL{"Groenlàndia"} GM{"Gàmbia"} GN{"Guinea"} GP{"Guadeloupe"} @@ -222,7 +222,7 @@ ca{ PM{"Saint-Pierre-et-Miquelon"} PN{"Illes Pitcairn"} PR{"Puerto Rico"} - PS{"territoris palestins"} + PS{"Territoris palestins"} PT{"Portugal"} PW{"Palau"} PY{"Paraguai"} @@ -254,7 +254,7 @@ ca{ SX{"Sint Maarten"} SY{"Síria"} SZ{"eSwatini"} - TA{"Tristão da Cunha"} + TA{"Tristan da Cunha"} TC{"Illes Turks i Caicos"} TD{"Txad"} TF{"Territoris Australs Francesos"} @@ -287,15 +287,15 @@ ca{ VU{"Vanuatu"} WF{"Wallis i Futuna"} WS{"Samoa"} - XA{"Pseudo-Accents"} - XB{"Pseudo-Bidi"} + XA{"pseudoaccents"} + XB{"pseudobidi"} XK{"Kosovo"} YE{"Iemen"} YT{"Mayotte"} ZA{"República de Sud-àfrica"} ZM{"Zàmbia"} ZW{"Zimbàbue"} - ZZ{"Regió desconeguda"} + ZZ{"regió desconeguda"} } Countries%short{ GB{"RU"} @@ -306,11 +306,13 @@ ca{ US{"EUA"} } Countries%variant{ - CD{"Congo (República Democràtica del Congo)"} + CD{"Congo (RDC)"} CG{"Congo (República del Congo)"} + CI{"Costa d’Ivori"} CZ{"República Txeca"} FK{"Illes Malvines (Illes Falkland)"} SZ{"Swazilàndia"} + TL{"Timor Oriental"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/ccp.txt b/source/data/region/ccp.txt index df53062..6666cac 100644 --- a/source/data/region/ccp.txt +++ b/source/data/region/ccp.txt @@ -318,8 +318,7 @@ ccp{ "𑄜𑄧𑄇𑄴𑄣𑄳𑄠𑄚𑄴𑄓𑄴 𑄃𑄭𑄣𑄳𑄠𑄚𑄴𑄓𑄴 (𑄄𑄥𑄴𑄣𑄳𑄠𑄌𑄴 " "𑄟𑄥𑄴𑄞𑄬𑄚𑄨𑄌𑄴)" } - MK{"𑄟𑄬𑄥𑄨𑄓𑄮𑄚𑄠(FYROM)"} TL{"𑄛𑄪𑄉𑄮 𑄖𑄨𑄟𑄪𑄢𑄴"} } - Version{"2.1.48.88"} + Version{"36"} } diff --git a/source/data/region/ce.txt b/source/data/region/ce.txt index 54acfc6..74428d5 100644 --- a/source/data/region/ce.txt +++ b/source/data/region/ce.txt @@ -182,7 +182,6 @@ ce{ MF{"Сен-Мартен"} MG{"Мадагаскар"} MH{"Маршаллан гӀайренаш"} - MK{"Македони"} ML{"Мали"} MM{"Мьянма (Бирма)"} MN{"Монголи"} @@ -308,5 +307,5 @@ ce{ FK{"Фолклендан гӀайренаш (Мальвинаш)"} TL{"Тимор-Лесте"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ceb.txt b/source/data/region/ceb.txt index f59f34e..097ad9e 100644 --- a/source/data/region/ceb.txt +++ b/source/data/region/ceb.txt @@ -2,19 +2,315 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ceb{ Countries{ + 001{"Kalibutan"} + 002{"Africa"} + 003{"North America"} + 005{"South America"} + 009{"Oceania"} + 011{"Western Africa"} + 013{"Central America"} + 014{"Eastern Africa"} + 015{"Northern Africa"} + 017{"Middle Africa"} + 018{"Southern Africa"} + 019{"Americas"} + 021{"Northern America"} + 029{"Caribbean"} + 030{"Eastern Asia"} + 034{"Southern Asia"} + 035{"Southeast Asia"} + 039{"Southern Europe"} + 053{"Australasia"} + 054{"Melanesia"} + 057{"Micronesian Region"} + 061{"Polynesia"} + 142{"Asya"} + 143{"Central Asia"} + 145{"Western Asia"} + 150{"Europe"} + 151{"Eastern Europe"} + 154{"Northern Europe"} + 155{"Western Europe"} + 202{"Sub-Saharan Africa"} + 419{"Latin America"} + AC{"Ascension Island"} + AD{"Andorra"} + AE{"United Arab Emirates"} + AF{"Afghanistan"} + AG{"Antigua & Barbuda"} + AI{"Anguilla"} + AL{"Albania"} + AM{"Armenia"} + AO{"Angola"} + AQ{"Antarctica"} + AR{"Argentina"} + AS{"American Samoa"} + AT{"Austria"} + AU{"Australia"} + AW{"Aruba"} + AX{"Aland Islands"} + AZ{"Azerbaijan"} + BA{"Bosnia & Herzegovina"} + BB{"Barbados"} + BD{"Bangladesh"} + BE{"Belgium"} + BF{"Burkina Faso"} + BG{"Bulgaria"} + BH{"Bahrain"} + BI{"Burundi"} + BJ{"Benin"} + BL{"St. Barthelemy"} + BM{"Bermuda"} + BN{"Brunei"} + BO{"Bolivia"} + BQ{"Caribbean Netherlands"} BR{"Brazil"} + BS{"Bahamas"} + BT{"Bhutan"} + BV{"Bouvet Island"} + BW{"Botswana"} + BY{"Belarus"} + BZ{"Belize"} + CA{"Canada"} + CC{"Cocos (Keeling) Islands"} + CD{"Congo - Kinshasa"} + CF{"Central African Republic"} + CG{"Congo - Brazzaville"} + CH{"Switzerland"} + CI{"Cote d’Ivoire"} + CK{"Cook Islands"} + CL{"Chile"} + CM{"Cameroon"} CN{"Tsina"} + CO{"Colombia"} + CP{"Clipperton Island"} + CR{"Costa Rica"} + CU{"Cuba"} + CV{"Cape Verde"} + CW{"Curacao"} + CX{"Christmas Island"} + CY{"Cyprus"} + CZ{"Czechia"} DE{"Alemanya"} + DG{"Diego Garcia"} + DJ{"Djibouti"} + DK{"Denmark"} + DM{"Dominica"} + DO{"Dominican Republic"} + DZ{"Algeria"} + EA{"Ceuta & Melilla"} + EC{"Ecuador"} + EE{"Estonia"} + EG{"Egypt"} + EH{"Western Sahara"} + ER{"Eritrea"} + ES{"Spain"} + ET{"Ethiopia"} + EU{"European Union"} + EZ{"Eurozone"} + FI{"Finland"} + FJ{"Fiji"} + FK{"Falkland Islands"} + FM{"Micronesia"} + FO{"Faroe Islands"} FR{"Pransiya"} + GA{"Gabon"} GB{"Hiniusang Gingharian"} + GD{"Grenada"} + GE{"Georgia"} + GF{"French Guiana"} + GG{"Guernsey"} + GH{"Ghana"} + GI{"Gibraltar"} + GL{"Greenland"} + GM{"Gambia"} + GN{"Guinea"} + GP{"Guadeloupe"} + GQ{"Equatorial Guinea"} + GR{"Greece"} + GS{"South Georgia & South Sandwich Islands"} + GT{"Guatemala"} + GU{"Guam"} + GW{"Guinea-Bissau"} + GY{"Guyana"} + HK{"Hong Kong SAR China"} + HM{"Heard & McDonald Islands"} + HN{"Honduras"} + HR{"Croatia"} + HT{"Haiti"} + HU{"Hungary"} + IC{"Canary Islands"} + ID{"Indonesia"} + IE{"Ireland"} + IL{"Israel"} + IM{"Isle of Man"} IN{"India"} + IO{"British Indian Ocean Territory"} + IQ{"Iraq"} + IR{"Iran"} + IS{"Iceland"} IT{"Italya"} + JE{"Jersey"} + JM{"Jamaica"} + JO{"Jordan"} JP{"Hapon"} - MK{"Amihanang Macedonia"} + KE{"Kenya"} + KG{"Kyrgyzstan"} + KH{"Cambodia"} + KI{"Kiribati"} + KM{"Comoros"} + KN{"St. Kitts & Nevis"} + KP{"North Korea"} + KR{"South Korea"} + KW{"Kuwait"} + KY{"Cayman Islands"} + KZ{"Kazakhstan"} + LA{"Laos"} + LB{"Lebanon"} + LC{"St. Lucia"} + LI{"Liechtenstein"} + LK{"Sri Lanka"} + LR{"Liberia"} + LS{"Lesotho"} + LT{"Lithuania"} + LU{"Luxembourg"} + LV{"Latvia"} + LY{"Libya"} + MA{"Morocco"} + MC{"Monaco"} + MD{"Moldova"} + ME{"Montenegro"} + MF{"St. Martin"} + MG{"Madagascar"} + MH{"Marshall Islands"} + MK{"North Macedonia"} + ML{"Mali"} + MM{"Myanmar (Burma)"} + MN{"Mongolia"} + MO{"Macao SAR China"} + MP{"Northern Mariana Islands"} + MQ{"Martinique"} + MR{"Mauritania"} + MS{"Montserrat"} + MT{"Malta"} + MU{"Mauritius"} + MV{"Maldives"} + MW{"Malawi"} + MX{"Mexico"} + MY{"Malaysia"} + MZ{"Mozambique"} + NA{"Namibia"} + NC{"New Caledonia"} + NE{"Niger"} + NF{"Norfolk Island"} + NG{"Nigeria"} + NI{"Nicaragua"} + NL{"Netherlands"} + NO{"Norway"} + NP{"Nepal"} + NR{"Nauru"} + NU{"Niue"} + NZ{"New Zealand"} + OM{"Oman"} + PA{"Panama"} + PE{"Peru"} + PF{"French Polynesia"} + PG{"Papua New Guinea"} PH{"Pilipinas"} + PK{"Pakistan"} + PL{"Poland"} + PM{"St. Pierre & Miquelon"} + PN{"Pitcairn Islands"} + PR{"Puerto Rico"} + PS{"Palestinian Territories"} + PT{"Portugal"} + PW{"Palau"} + PY{"Paraguay"} + QA{"Qatar"} + QO{"Outlying Oceania"} + RE{"Reunion"} + RO{"Romania"} + RS{"Serbia"} RU{"Russia"} + RW{"Rwanda"} + SA{"Saudi Arabia"} + SB{"Solomon Islands"} + SC{"Seychelles"} + SD{"Sudan"} + SE{"Sweden"} + SG{"Singapore"} + SH{"St. Helena"} + SI{"Slovenia"} + SJ{"Svalbard & Jan Mayen"} + SK{"Slovakia"} + SL{"Sierra Leone"} + SM{"San Marino"} + SN{"Senegal"} + SO{"Somalia"} + SR{"Suriname"} + SS{"South Sudan"} + ST{"Sao Tome & Principe"} + SV{"El Salvador"} + SX{"Sint Maarten"} + SY{"Syria"} + SZ{"Eswatini"} + TA{"Tristan da Cunha"} + TC{"Turks & Caicos Islands"} + TD{"Chad"} + TF{"French Southern Territories"} + TG{"Togo"} + TH{"Thailand"} + TJ{"Tajikistan"} + TK{"Tokelau"} + TL{"Timor-Leste"} + TM{"Turkmenistan"} + TN{"Tunisia"} + TO{"Tonga"} + TR{"Turkey"} + TT{"Trinidad & Tobago"} + TV{"Tuvalu"} + TW{"Taiwan"} + TZ{"Tanzania"} + UA{"Ukraine"} + UG{"Uganda"} + UM{"U.S. Outlying Islands"} + UN{"United Nations"} US{"Estados Unidos"} + UY{"Uruguay"} + UZ{"Uzbekistan"} + VA{"Vatican City"} + VC{"St. Vincent & Grenadines"} + VE{"Venezuela"} + VG{"British Virgin Islands"} + VI{"U.S. Virgin Islands"} + VN{"Vietnam"} + VU{"Vanuatu"} + WF{"Wallis & Futuna"} + WS{"Samoa"} + XA{"Pseudo-Accents"} + XB{"Pseudo-Bidi"} + XK{"Kosovo"} + YE{"Yemen"} + YT{"Mayotte"} + ZA{"South Africa"} + ZM{"Zambia"} + ZW{"Zimbabwe"} ZZ{"Wala-mailhing Rehiyon"} } - Version{"2.1.49.82"} + Countries%short{ + GB{"UK"} + HK{"Hong Kong"} + MO{"Macao"} + PS{"Palestine"} + } + Countries%variant{ + CD{"Congo (DRC)"} + CG{"Congo (Republic)"} + CI{"Ivory Coast"} + CZ{"Czech Republic"} + FK{"Falkland Islands (Islas Malvinas)"} + SZ{"Swaziland"} + TL{"East Timor"} + } + Version{"36"} } diff --git a/source/data/region/cgg.txt b/source/data/region/cgg.txt index 9f0b1c5..3069f91 100644 --- a/source/data/region/cgg.txt +++ b/source/data/region/cgg.txt @@ -126,7 +126,6 @@ cgg{ MD{"Moridova"} MG{"Madagasika"} MH{"Ebizinga bya Marshaa"} - MK{"Masedoonia"} ML{"Mari"} MM{"Myanamar"} MN{"Mongoria"} @@ -225,5 +224,5 @@ cgg{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/chr.txt b/source/data/region/chr.txt index 7c08692..811c89c 100644 --- a/source/data/region/chr.txt +++ b/source/data/region/chr.txt @@ -50,7 +50,7 @@ chr{ AW{"ᎠᎷᏆ"} AX{"ᎣᎴᏅᏓ ᏚᎦᏚᏛᎢ"} AZ{"ᎠᏎᏆᏣᏂ"} - BA{"ᏉᏏᏂᎠ & ᎲᏤᎪᏫ"} + BA{"ᏉᏏᏂᎠ & ᎲᏤᎪᏫᎾ"} BB{"ᏆᏇᏙᏍ"} BD{"ᏆᏂᎦᎵᏕᏍ"} BE{"ᏇᎵᏥᎥᎻ"} @@ -313,5 +313,5 @@ chr{ SZ{"ᎠᏂᏍᏩᏏᎢ"} TL{"ᏗᎧᎸᎬᎢ ᏘᎼᎵ"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/ckb.txt b/source/data/region/ckb.txt index bb23fe6..c80a1ed 100644 --- a/source/data/region/ckb.txt +++ b/source/data/region/ckb.txt @@ -110,7 +110,7 @@ ckb{ EZ{"ناوچەی یۆرۆ"} FI{"فینلاند"} FJ{"فیجی"} - FK{"دوورگەکانی مالڤیناس"} + FK{"دوورگەکانی مالڤیناس (دوورگەکانی فاڵکلاند)"} FM{"مایکرۆنیزیا"} FO{"دوورگەکانی فارەو"} FR{"فەڕەنسا"} @@ -155,7 +155,7 @@ ckb{ JO{"ئوردن"} JP{"ژاپۆن"} KE{"کینیا"} - KG{"قرغیزستان"} + KG{"کرگیزستان"} KH{"کەمبۆدیا"} KI{"کیریباس"} KM{"دوورگەکانی کۆمۆر"} @@ -183,7 +183,7 @@ ckb{ MF{"سەن مارتین"} MG{"ماداگاسکار"} MH{"دوورگەکانی مارشاڵ"} - MK{"ماکەدۆنیا"} + MK{"مەکدۆنیای باکوور"} ML{"مالی"} MM{"میانمار"} MN{"مەنگۆلیا"} @@ -303,8 +303,8 @@ ckb{ US{"ویلایەتە یەکگرتووەکان"} } Countries%variant{ - CD{"کۆماری دیموکراتیکی کۆنگۆ"} + CD{"کۆماری دیموکراتیی کۆنگۆ"} CG{"کۆماری کۆنگۆ"} } - Version{"2.1.47.72"} + Version{"36"} } diff --git a/source/data/region/cs.txt b/source/data/region/cs.txt index 1b4c823..55edba6 100644 --- a/source/data/region/cs.txt +++ b/source/data/region/cs.txt @@ -311,6 +311,8 @@ cs{ CI{"Côte d’Ivoire"} CZ{"Česká republika"} FK{"Falklandské ostrovy (Malvíny)"} + SZ{"Eswatini"} + TL{"Timor-Leste"} } - Version{"2.1.48.44"} + Version{"36"} } diff --git a/source/data/region/cy.txt b/source/data/region/cy.txt index 6982121..519effa 100644 --- a/source/data/region/cy.txt +++ b/source/data/region/cy.txt @@ -50,7 +50,7 @@ cy{ AW{"Aruba"} AX{"Ynysoedd Åland"} AZ{"Azerbaijan"} - BA{"Bosnia & Herzegovina"} + BA{"Bosnia a Herzegovina"} BB{"Barbados"} BD{"Bangladesh"} BE{"Gwlad Belg"} @@ -314,5 +314,5 @@ cy{ SZ{"Gwlad Swazi"} TL{"Dwyrain Timor"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/da.txt b/source/data/region/da.txt index fbd6f57..18ec5a7 100644 --- a/source/data/region/da.txt +++ b/source/data/region/da.txt @@ -145,7 +145,7 @@ da{ IL{"Israel"} IM{"Isle of Man"} IN{"Indien"} - IO{"Det britiske territorium i Det Indiske Ocean"} + IO{"Det Britiske Territorium i Det Indiske Ocean"} IQ{"Irak"} IR{"Iran"} IS{"Island"} @@ -257,7 +257,7 @@ da{ TA{"Tristan da Cunha"} TC{"Turks- og Caicosøerne"} TD{"Tchad"} - TF{"De Franske Besiddelser i Det Sydlige Indiske Ocean"} + TF{"De Franske Besiddelser i Det Sydlige Indiske Ocean og Antarktis"} TG{"Togo"} TH{"Thailand"} TJ{"Tadsjikistan"} @@ -287,6 +287,8 @@ da{ VU{"Vanuatu"} WF{"Wallis og Futuna"} WS{"Samoa"} + XA{"pseudo-accenter"} + XB{"pseudo-bidi"} XK{"Kosovo"} YE{"Yemen"} YT{"Mayotte"} @@ -306,10 +308,11 @@ da{ Countries%variant{ CD{"Den Demokratiske Republik Congo (DRC)"} CG{"Republikken Congo"} + CI{"Elfenbenskysten"} CZ{"Den Tjekkiske Republik"} FK{"Falklandsøerne (Islas Malvinas)"} SZ{"Swaziland"} TL{"Østtimor"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/dav.txt b/source/data/region/dav.txt index 1cae341..f4481ba 100644 --- a/source/data/region/dav.txt +++ b/source/data/region/dav.txt @@ -127,7 +127,6 @@ dav{ MD{"Moldova"} MG{"Bukini"} MH{"Visiwa vya Marshal"} - MK{"Masedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -227,5 +226,5 @@ dav{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/de.txt b/source/data/region/de.txt index 00eab86..4234d95 100644 --- a/source/data/region/de.txt +++ b/source/data/region/de.txt @@ -253,7 +253,7 @@ de{ SV{"El Salvador"} SX{"Sint Maarten"} SY{"Syrien"} - SZ{"Swasiland"} + SZ{"Eswatini"} TA{"Tristan da Cunha"} TC{"Turks- und Caicosinseln"} TD{"Tschad"} @@ -287,6 +287,8 @@ de{ VU{"Vanuatu"} WF{"Wallis und Futuna"} WS{"Samoa"} + XA{"Pseudo-Akzente"} + XB{"Pseudo-Bidi"} XK{"Kosovo"} YE{"Jemen"} YT{"Mayotte"} @@ -309,8 +311,8 @@ de{ CI{"Elfenbeinküste"} CZ{"Tschechische Republik"} FK{"Falklandinseln (Malwinen)"} - SZ{"Eswatini"} + SZ{"Swasiland"} TL{"Osttimor"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/de_AT.txt b/source/data/region/de_AT.txt index 256c299..1e11a34 100644 --- a/source/data/region/de_AT.txt +++ b/source/data/region/de_AT.txt @@ -4,5 +4,5 @@ de_AT{ Countries{ SJ{"Svalbard und Jan Mayen"} } - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/de_CH.txt b/source/data/region/de_CH.txt index ec29f05..fd5ae86 100644 --- a/source/data/region/de_CH.txt +++ b/source/data/region/de_CH.txt @@ -12,5 +12,5 @@ de_CH{ TL{"Osttimor"} ZW{"Zimbabwe"} } - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/region/dje.txt b/source/data/region/dje.txt index b1e4bda..3eb56e5 100644 --- a/source/data/region/dje.txt +++ b/source/data/region/dje.txt @@ -126,7 +126,6 @@ dje{ MD{"Moldovi"} MG{"Madagascar"} MH{"Maršal gungey"} - MK{"Maacedooni"} ML{"Maali"} MM{"Maynamar"} MN{"Mongooli"} @@ -226,5 +225,5 @@ dje{ ZM{"Zambi"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/dsb.txt b/source/data/region/dsb.txt index a04b268..75bede0 100644 --- a/source/data/region/dsb.txt +++ b/source/data/region/dsb.txt @@ -181,7 +181,6 @@ dsb{ MF{"St. Martin"} MG{"Madagaskar"} MH{"Marshallowe kupy"} - MK{"Makedońska"} ML{"Mali"} MM{"Myanmar"} MN{"Mongolska"} @@ -304,8 +303,7 @@ dsb{ CG{"Kongo (Republika)"} CI{"Słonowokósćowy pśibrjog"} FK{"Falklandske kupy (Malwiny)"} - MK{"Makedońska (PRJ)"} TL{"Pódzajtšny Timor"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/dua.txt b/source/data/region/dua.txt index 75d83a6..32b35d2 100644 --- a/source/data/region/dua.txt +++ b/source/data/region/dua.txt @@ -4,5 +4,5 @@ dua{ Countries{ CM{"Cameroun"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/dyo.txt b/source/data/region/dyo.txt index 610749f..b5c366f 100644 --- a/source/data/region/dyo.txt +++ b/source/data/region/dyo.txt @@ -111,5 +111,5 @@ dyo{ TG{"Togo"} TH{"Tailand"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/dz.txt b/source/data/region/dz.txt index f17b389..7867bf3 100644 --- a/source/data/region/dz.txt +++ b/source/data/region/dz.txt @@ -181,7 +181,6 @@ dz{ MF{"སེནཊ་ མཱར་ཊིན"} MG{"མ་དཱ་གེས་ཀར"} MH{"མར་ཤེལ་གླིང་ཚོམ"} - MK{"མ་སེ་ཌོ་ནི་ཡ"} ML{"མཱ་ལི"} MM{"མི་ཡཱན་མར་ (བྷར་མ)"} MN{"སོག་པོ་ཡུལ"} @@ -300,8 +299,7 @@ dz{ CG{"རི་པབ་ལིཀ་ ཨོཕ་ ཀོང་གྷོ"} CI{"ཨི་ཝོ་རི་ཀོསཊ"} FK{"ཕལྐ་ལནྜ་གླིང་ཚོམ (ཨིས་ལཱས་མལ་བི་ཎཱས)"} - MK{"མ་སེ་ཌོ་ནི་ཡ་ (ཡུ་གོ་སླཱ་བི་ཡ)"} TL{"ཤར་ཕྱོགས་ཏི་་མོར"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ebu.txt b/source/data/region/ebu.txt index 498e124..f26b427 100644 --- a/source/data/region/ebu.txt +++ b/source/data/region/ebu.txt @@ -127,7 +127,6 @@ ebu{ MD{"Moldova"} MG{"Bukini"} MH{"Visiwa vya Marshal"} - MK{"Masedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -227,5 +226,5 @@ ebu{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ee.txt b/source/data/region/ee.txt index 4ac4d4f..68e6735 100644 --- a/source/data/region/ee.txt +++ b/source/data/region/ee.txt @@ -179,7 +179,6 @@ ee{ MF{"Saint Martin nutome"} MG{"Madagaska nutome"} MH{"Marshal ƒudomekpowo nutome"} - MK{"Makedonia nutome"} ML{"Mali nutome"} MM{"Myanmar (Burma) nutome"} MN{"Mongolia nutome"} @@ -295,8 +294,7 @@ ee{ CG{"Kongo repɔblik nutome"} CI{"Ivory Kost nutome"} FK{"Falkland ƒudomekpowo (Islas Malvinas) nutome"} - MK{"Makedonia (FYROM) nutome"} TL{"Ɣedzeƒe Timɔ nutome"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/el.txt b/source/data/region/el.txt index 9bcaa7d..a0f1cdf 100644 --- a/source/data/region/el.txt +++ b/source/data/region/el.txt @@ -308,9 +308,11 @@ el{ Countries%variant{ CD{"Κονγκό (ΛΔΚ)"} CG{"Κονγκό (Δημοκρατία)"} + CI{"Ακτή Ελεφαντοστού"} CZ{"Τσεχική Δημοκρατία"} FK{"Νήσοι Φόκλαντ (Νήσοι Μαλβίνας)"} + SZ{"Σουαζιλάνδη"} TL{"Ανατολικό Τιμόρ"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/en.txt b/source/data/region/en.txt index 69a0f70..4b6de60 100644 --- a/source/data/region/en.txt +++ b/source/data/region/en.txt @@ -316,5 +316,5 @@ en{ SZ{"Swaziland"} TL{"East Timor"} } - Version{"2.1.48.65"} + Version{"36"} } diff --git a/source/data/region/en_001.txt b/source/data/region/en_001.txt new file mode 100644 index 0000000..dffe70e --- /dev/null +++ b/source/data/region/en_001.txt @@ -0,0 +1,16 @@ +// © 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License +en_001{ + Countries{ + BL{"St Barthélemy"} + KN{"St Kitts & Nevis"} + LC{"St Lucia"} + MF{"St Martin"} + PM{"St Pierre & Miquelon"} + SH{"St Helena"} + UM{"US Outlying Islands"} + VC{"St Vincent & Grenadines"} + VI{"US Virgin Islands"} + } + Version{"36"} +} diff --git a/source/data/region/en_150.txt b/source/data/region/en_150.txt index 8d02750..d709e7f 100644 --- a/source/data/region/en_150.txt +++ b/source/data/region/en_150.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_150{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_AG.txt b/source/data/region/en_AG.txt index 752a3d7..a63a580 100644 --- a/source/data/region/en_AG.txt +++ b/source/data/region/en_AG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_AI.txt b/source/data/region/en_AI.txt index 9c02925..4d398f9 100644 --- a/source/data/region/en_AI.txt +++ b/source/data/region/en_AI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AI{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_AT.txt b/source/data/region/en_AT.txt index 753d6cf..bd5afac 100644 --- a/source/data/region/en_AT.txt +++ b/source/data/region/en_AT.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AT{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_AU.txt b/source/data/region/en_AU.txt index 980da48..646ed4d 100644 --- a/source/data/region/en_AU.txt +++ b/source/data/region/en_AU.txt @@ -2,5 +2,12 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AU{ %%Parent{"en_001"} - Version{"2.1.48.43"} + Countries{ + BL{"St. Barthélemy"} + KN{"St. Kitts & Nevis"} + LC{"St. Lucia"} + MF{"St. Martin"} + VC{"St. Vincent & Grenadines"} + } + Version{"36"} } diff --git a/source/data/region/en_BB.txt b/source/data/region/en_BB.txt index fbf9df7..fca6cbd 100644 --- a/source/data/region/en_BB.txt +++ b/source/data/region/en_BB.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BB{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_BE.txt b/source/data/region/en_BE.txt index 511a8be..be2dff5 100644 --- a/source/data/region/en_BE.txt +++ b/source/data/region/en_BE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BE{ %%Parent{"en_150"} - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/region/en_BM.txt b/source/data/region/en_BM.txt index 009afd0..b1f0c76 100644 --- a/source/data/region/en_BM.txt +++ b/source/data/region/en_BM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_BS.txt b/source/data/region/en_BS.txt index 582cff3..dd37cc9 100644 --- a/source/data/region/en_BS.txt +++ b/source/data/region/en_BS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BS{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_BW.txt b/source/data/region/en_BW.txt index 2ae5fdb..472bb0c 100644 --- a/source/data/region/en_BW.txt +++ b/source/data/region/en_BW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BW{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_BZ.txt b/source/data/region/en_BZ.txt index b964726..5a047a0 100644 --- a/source/data/region/en_BZ.txt +++ b/source/data/region/en_BZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BZ{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_CA.txt b/source/data/region/en_CA.txt index b13ea2e..3223eec 100644 --- a/source/data/region/en_CA.txt +++ b/source/data/region/en_CA.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CA{ %%Parent{"en_001"} - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/region/en_CC.txt b/source/data/region/en_CC.txt index 1c8588b..6066465 100644 --- a/source/data/region/en_CC.txt +++ b/source/data/region/en_CC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CC{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_CH.txt b/source/data/region/en_CH.txt index ae65071..8a72c4c 100644 --- a/source/data/region/en_CH.txt +++ b/source/data/region/en_CH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CH{ %%Parent{"en_150"} - Version{"2.1.48.50"} + Version{"36"} } diff --git a/source/data/region/en_CK.txt b/source/data/region/en_CK.txt index 4276b47..1b5afe5 100644 --- a/source/data/region/en_CK.txt +++ b/source/data/region/en_CK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CK{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_CM.txt b/source/data/region/en_CM.txt index 3926c38..a78b9f9 100644 --- a/source/data/region/en_CM.txt +++ b/source/data/region/en_CM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_CX.txt b/source/data/region/en_CX.txt index 6e70c69..750c035 100644 --- a/source/data/region/en_CX.txt +++ b/source/data/region/en_CX.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CX{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_CY.txt b/source/data/region/en_CY.txt index c009b10..369d217 100644 --- a/source/data/region/en_CY.txt +++ b/source/data/region/en_CY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CY{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_DE.txt b/source/data/region/en_DE.txt index 9ae118e..b2b71ff 100644 --- a/source/data/region/en_DE.txt +++ b/source/data/region/en_DE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DE{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_DG.txt b/source/data/region/en_DG.txt index a6f3076..41b307a 100644 --- a/source/data/region/en_DG.txt +++ b/source/data/region/en_DG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_DK.txt b/source/data/region/en_DK.txt index 494fee3..5b3228b 100644 --- a/source/data/region/en_DK.txt +++ b/source/data/region/en_DK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DK{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_DM.txt b/source/data/region/en_DM.txt index 4f886aa..f849ffe 100644 --- a/source/data/region/en_DM.txt +++ b/source/data/region/en_DM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_ER.txt b/source/data/region/en_ER.txt index b9d9f93..e4a92d5 100644 --- a/source/data/region/en_ER.txt +++ b/source/data/region/en_ER.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ER{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_FI.txt b/source/data/region/en_FI.txt index 3ca4f54..b8fbbfe 100644 --- a/source/data/region/en_FI.txt +++ b/source/data/region/en_FI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FI{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_FJ.txt b/source/data/region/en_FJ.txt index 918bc8f..07db8bd 100644 --- a/source/data/region/en_FJ.txt +++ b/source/data/region/en_FJ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FJ{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_FK.txt b/source/data/region/en_FK.txt index 4a8a67b..7178b9d 100644 --- a/source/data/region/en_FK.txt +++ b/source/data/region/en_FK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FK{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_FM.txt b/source/data/region/en_FM.txt index 877c94e..122264e 100644 --- a/source/data/region/en_FM.txt +++ b/source/data/region/en_FM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_GB.txt b/source/data/region/en_GB.txt index 62e6942..a23519e 100644 --- a/source/data/region/en_GB.txt +++ b/source/data/region/en_GB.txt @@ -2,19 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GB{ %%Parent{"en_001"} - Countries{ - BL{"St Barthélemy"} - KN{"St Kitts & Nevis"} - LC{"St Lucia"} - MF{"St Martin"} - PM{"St Pierre & Miquelon"} - SH{"St Helena"} - UM{"US Outlying Islands"} - VC{"St Vincent & Grenadines"} - VI{"US Virgin Islands"} - } - Countries%short{ - US{"US"} - } - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/region/en_GD.txt b/source/data/region/en_GD.txt index afef775..cf5232c 100644 --- a/source/data/region/en_GD.txt +++ b/source/data/region/en_GD.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GD{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_GG.txt b/source/data/region/en_GG.txt index 6e4ba39..b763399 100644 --- a/source/data/region/en_GG.txt +++ b/source/data/region/en_GG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_GH.txt b/source/data/region/en_GH.txt index ff08937..5a9a0a1 100644 --- a/source/data/region/en_GH.txt +++ b/source/data/region/en_GH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GH{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_GI.txt b/source/data/region/en_GI.txt index 1f237f7..40711a6 100644 --- a/source/data/region/en_GI.txt +++ b/source/data/region/en_GI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GI{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_GM.txt b/source/data/region/en_GM.txt index 5c15a1c..88c2aa4 100644 --- a/source/data/region/en_GM.txt +++ b/source/data/region/en_GM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_GY.txt b/source/data/region/en_GY.txt index 0afd13f..f023f89 100644 --- a/source/data/region/en_GY.txt +++ b/source/data/region/en_GY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GY{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_HK.txt b/source/data/region/en_HK.txt index 5ce84a6..930481d 100644 --- a/source/data/region/en_HK.txt +++ b/source/data/region/en_HK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_HK{ %%Parent{"en_001"} - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/region/en_IE.txt b/source/data/region/en_IE.txt index bc4d1b3..4f886d0 100644 --- a/source/data/region/en_IE.txt +++ b/source/data/region/en_IE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IE{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_IL.txt b/source/data/region/en_IL.txt index 4f6fead..598b76d 100644 --- a/source/data/region/en_IL.txt +++ b/source/data/region/en_IL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IL{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_IM.txt b/source/data/region/en_IM.txt index f109428..8c69f46 100644 --- a/source/data/region/en_IM.txt +++ b/source/data/region/en_IM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_IN.txt b/source/data/region/en_IN.txt index b9f41be..a0d81bb 100644 --- a/source/data/region/en_IN.txt +++ b/source/data/region/en_IN.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IN{ %%Parent{"en_001"} - Version{"2.1.49.14"} + Version{"36"} } diff --git a/source/data/region/en_IO.txt b/source/data/region/en_IO.txt index ae46d46..c161608 100644 --- a/source/data/region/en_IO.txt +++ b/source/data/region/en_IO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IO{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_JE.txt b/source/data/region/en_JE.txt index b1fe588..f665bf2 100644 --- a/source/data/region/en_JE.txt +++ b/source/data/region/en_JE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_JE{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_JM.txt b/source/data/region/en_JM.txt index b21c1a8..5ea01d1 100644 --- a/source/data/region/en_JM.txt +++ b/source/data/region/en_JM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_JM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_KE.txt b/source/data/region/en_KE.txt index 3ba47c4..ac26682 100644 --- a/source/data/region/en_KE.txt +++ b/source/data/region/en_KE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KE{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_KI.txt b/source/data/region/en_KI.txt index 5154257..6c4a2fb 100644 --- a/source/data/region/en_KI.txt +++ b/source/data/region/en_KI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KI{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_KN.txt b/source/data/region/en_KN.txt index 3812274..fb3f8ec 100644 --- a/source/data/region/en_KN.txt +++ b/source/data/region/en_KN.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KN{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_KY.txt b/source/data/region/en_KY.txt index d78d462..be44abe 100644 --- a/source/data/region/en_KY.txt +++ b/source/data/region/en_KY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KY{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_LC.txt b/source/data/region/en_LC.txt index ff73931..5dc4de3 100644 --- a/source/data/region/en_LC.txt +++ b/source/data/region/en_LC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_LC{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_LR.txt b/source/data/region/en_LR.txt index 6ad4654..0fb3e94 100644 --- a/source/data/region/en_LR.txt +++ b/source/data/region/en_LR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_LR{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_LS.txt b/source/data/region/en_LS.txt index 21b3f4c..6e5b29f 100644 --- a/source/data/region/en_LS.txt +++ b/source/data/region/en_LS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_LS{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_MG.txt b/source/data/region/en_MG.txt index 28412fc..b045963 100644 --- a/source/data/region/en_MG.txt +++ b/source/data/region/en_MG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_MO.txt b/source/data/region/en_MO.txt index af3fa89..22f53f7 100644 --- a/source/data/region/en_MO.txt +++ b/source/data/region/en_MO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MO{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_MS.txt b/source/data/region/en_MS.txt index c74d938..1730089 100644 --- a/source/data/region/en_MS.txt +++ b/source/data/region/en_MS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MS{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_MT.txt b/source/data/region/en_MT.txt index 3a56120..2d36498 100644 --- a/source/data/region/en_MT.txt +++ b/source/data/region/en_MT.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MT{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_MU.txt b/source/data/region/en_MU.txt index 020e010..f36fea5 100644 --- a/source/data/region/en_MU.txt +++ b/source/data/region/en_MU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MU{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_MW.txt b/source/data/region/en_MW.txt index 6dcad2e..f301bed 100644 --- a/source/data/region/en_MW.txt +++ b/source/data/region/en_MW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MW{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/region/en_MY.txt b/source/data/region/en_MY.txt index cdc4e22..8f49ecc 100644 --- a/source/data/region/en_MY.txt +++ b/source/data/region/en_MY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MY{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_NA.txt b/source/data/region/en_NA.txt index 7df2865..6e0e148 100644 --- a/source/data/region/en_NA.txt +++ b/source/data/region/en_NA.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NA{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_NF.txt b/source/data/region/en_NF.txt index e4a866f..7442ce7 100644 --- a/source/data/region/en_NF.txt +++ b/source/data/region/en_NF.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NF{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_NG.txt b/source/data/region/en_NG.txt index 77b61a7..1bd97f9 100644 --- a/source/data/region/en_NG.txt +++ b/source/data/region/en_NG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NG{ %%Parent{"en_001"} - Version{"2.1.48.22"} + Version{"36"} } diff --git a/source/data/region/en_NL.txt b/source/data/region/en_NL.txt index d804c44..d1a3ce6 100644 --- a/source/data/region/en_NL.txt +++ b/source/data/region/en_NL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NL{ %%Parent{"en_150"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_NR.txt b/source/data/region/en_NR.txt index 11f0346..4f75cd9 100644 --- a/source/data/region/en_NR.txt +++ b/source/data/region/en_NR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NR{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_NU.txt b/source/data/region/en_NU.txt index 0601e0c..3386104 100644 --- a/source/data/region/en_NU.txt +++ b/source/data/region/en_NU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NU{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_NZ.txt b/source/data/region/en_NZ.txt index 029dc21..6bc4cbe 100644 --- a/source/data/region/en_NZ.txt +++ b/source/data/region/en_NZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NZ{ %%Parent{"en_001"} - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/region/en_PG.txt b/source/data/region/en_PG.txt index d23f260..e79232a 100644 --- a/source/data/region/en_PG.txt +++ b/source/data/region/en_PG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_PH.txt b/source/data/region/en_PH.txt index 2f92678..ee1ba4a 100644 --- a/source/data/region/en_PH.txt +++ b/source/data/region/en_PH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PH{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_PK.txt b/source/data/region/en_PK.txt index 5a18ead..e123870 100644 --- a/source/data/region/en_PK.txt +++ b/source/data/region/en_PK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PK{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_PN.txt b/source/data/region/en_PN.txt index 63c9656..dcd8c7a 100644 --- a/source/data/region/en_PN.txt +++ b/source/data/region/en_PN.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PN{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_PW.txt b/source/data/region/en_PW.txt index 525f171..ee4cfe8 100644 --- a/source/data/region/en_PW.txt +++ b/source/data/region/en_PW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PW{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_RW.txt b/source/data/region/en_RW.txt index 16bff2e..bd8ed84 100644 --- a/source/data/region/en_RW.txt +++ b/source/data/region/en_RW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_RW{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_SB.txt b/source/data/region/en_SB.txt index b6539ce..faca3e1 100644 --- a/source/data/region/en_SB.txt +++ b/source/data/region/en_SB.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SB{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_SC.txt b/source/data/region/en_SC.txt index c81672e..4c8930d 100644 --- a/source/data/region/en_SC.txt +++ b/source/data/region/en_SC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SC{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_SD.txt b/source/data/region/en_SD.txt index e3ff67d..c887a86 100644 --- a/source/data/region/en_SD.txt +++ b/source/data/region/en_SD.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SD{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_SE.txt b/source/data/region/en_SE.txt index c2ac2a0..0c9af16 100644 --- a/source/data/region/en_SE.txt +++ b/source/data/region/en_SE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SE{ %%Parent{"en_150"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_SG.txt b/source/data/region/en_SG.txt index 27428d0..26803b3 100644 --- a/source/data/region/en_SG.txt +++ b/source/data/region/en_SG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_SH.txt b/source/data/region/en_SH.txt index ec801da..a51cad9 100644 --- a/source/data/region/en_SH.txt +++ b/source/data/region/en_SH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SH{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_SI.txt b/source/data/region/en_SI.txt index 385b87b..aa1b540 100644 --- a/source/data/region/en_SI.txt +++ b/source/data/region/en_SI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SI{ %%Parent{"en_150"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_SL.txt b/source/data/region/en_SL.txt index 78a7f22..6764d97 100644 --- a/source/data/region/en_SL.txt +++ b/source/data/region/en_SL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SL{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_SS.txt b/source/data/region/en_SS.txt index af2c30c..cb55162 100644 --- a/source/data/region/en_SS.txt +++ b/source/data/region/en_SS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SS{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_SX.txt b/source/data/region/en_SX.txt index aef37fe..7b0bd2a 100644 --- a/source/data/region/en_SX.txt +++ b/source/data/region/en_SX.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SX{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_SZ.txt b/source/data/region/en_SZ.txt index e227a3e..9734bed 100644 --- a/source/data/region/en_SZ.txt +++ b/source/data/region/en_SZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SZ{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_TC.txt b/source/data/region/en_TC.txt index 9d08e3a..96ba2bd 100644 --- a/source/data/region/en_TC.txt +++ b/source/data/region/en_TC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TC{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_TK.txt b/source/data/region/en_TK.txt index 0d507ae..828cda3 100644 --- a/source/data/region/en_TK.txt +++ b/source/data/region/en_TK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TK{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_TO.txt b/source/data/region/en_TO.txt index a60d593..24b603f 100644 --- a/source/data/region/en_TO.txt +++ b/source/data/region/en_TO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TO{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_TT.txt b/source/data/region/en_TT.txt index 06d76b3..17a4163 100644 --- a/source/data/region/en_TT.txt +++ b/source/data/region/en_TT.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TT{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_TV.txt b/source/data/region/en_TV.txt index 7397675..898ad44 100644 --- a/source/data/region/en_TV.txt +++ b/source/data/region/en_TV.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TV{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_TZ.txt b/source/data/region/en_TZ.txt index 5775c53..56e6a79 100644 --- a/source/data/region/en_TZ.txt +++ b/source/data/region/en_TZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TZ{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_UG.txt b/source/data/region/en_UG.txt index 302faff..02c501e 100644 --- a/source/data/region/en_UG.txt +++ b/source/data/region/en_UG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_UG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_VC.txt b/source/data/region/en_VC.txt index 482ec20..bf44e8e 100644 --- a/source/data/region/en_VC.txt +++ b/source/data/region/en_VC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_VC{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_VG.txt b/source/data/region/en_VG.txt index 8e90bec..6d0d305 100644 --- a/source/data/region/en_VG.txt +++ b/source/data/region/en_VG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_VG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_VU.txt b/source/data/region/en_VU.txt index 069081e..f76028d 100644 --- a/source/data/region/en_VU.txt +++ b/source/data/region/en_VU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_VU{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_WS.txt b/source/data/region/en_WS.txt index 07f56ef..eaa44ad 100644 --- a/source/data/region/en_WS.txt +++ b/source/data/region/en_WS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_WS{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_ZA.txt b/source/data/region/en_ZA.txt index d91f0dc..4119726 100644 --- a/source/data/region/en_ZA.txt +++ b/source/data/region/en_ZA.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ZA{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_ZM.txt b/source/data/region/en_ZM.txt index 106aa70..7be977f 100644 --- a/source/data/region/en_ZM.txt +++ b/source/data/region/en_ZM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ZM{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/en_ZW.txt b/source/data/region/en_ZW.txt index 1ff6458..ff7afc9 100644 --- a/source/data/region/en_ZW.txt +++ b/source/data/region/en_ZW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ZW{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/eo.txt b/source/data/region/eo.txt index 60ea166..80534e4 100644 --- a/source/data/region/eo.txt +++ b/source/data/region/eo.txt @@ -130,7 +130,6 @@ eo{ MD{"Moldavujo"} MG{"Madagaskaro"} MH{"Marŝaloj"} - MK{"Makedonujo"} ML{"Malio"} MM{"Mjanmao"} MN{"Mongolujo"} @@ -227,5 +226,5 @@ eo{ ZM{"Zambio"} ZW{"Zimbabvo"} } - Version{"2.1.49.33"} + Version{"36"} } diff --git a/source/data/region/es.txt b/source/data/region/es.txt index fdf4592..6598f98 100644 --- a/source/data/region/es.txt +++ b/source/data/region/es.txt @@ -287,6 +287,8 @@ es{ VU{"Vanuatu"} WF{"Wallis y Futuna"} WS{"Samoa"} + XA{"Pseudoacentos"} + XB{"Pseudobidi"} XK{"Kosovo"} YE{"Yemen"} YT{"Mayotte"} @@ -311,5 +313,5 @@ es{ SZ{"Suazilandia"} TL{"Timor Oriental"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/es_419.txt b/source/data/region/es_419.txt index 1024fd5..f75b56c 100644 --- a/source/data/region/es_419.txt +++ b/source/data/region/es_419.txt @@ -10,7 +10,6 @@ es_419{ 034{"Asia del Sur"} 035{"Asia sudoriental"} 039{"Europa del Sur"} - 057{"región de Micronesia"} 145{"Asia del Oeste"} 151{"Europa del Este"} 154{"Europa del Norte"} @@ -23,11 +22,8 @@ es_419{ GG{"Guernesey"} IC{"Islas Canarias"} QO{"Islas Ultramarinas"} - SZ{"Suazilandia"} TA{"Tristán da Cunha"} - TL{"Timor Oriental"} UM{"Islas Ultramarinas de EE.UU."} - VI{"Islas Vírgenes de los Estados Unidos"} } Countries%short{ GB{"R. U."} @@ -35,5 +31,5 @@ es_419{ Countries%variant{ CD{"Congo (República Democrática del Congo)"} } - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/region/es_AR.txt b/source/data/region/es_AR.txt index 673cb13..7363ec8 100644 --- a/source/data/region/es_AR.txt +++ b/source/data/region/es_AR.txt @@ -5,12 +5,10 @@ es_AR{ Countries{ BA{"Bosnia y Herzegovina"} TA{"Tristán de Acuña"} - TL{"Timor-Leste"} UM{"Islas menores alejadas de EE. UU."} - VI{"Islas Vírgenes de EE. UU."} } Countries%short{ GB{"RU"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_BO.txt b/source/data/region/es_BO.txt index ed8f7a7..6f0f6d0 100644 --- a/source/data/region/es_BO.txt +++ b/source/data/region/es_BO.txt @@ -5,11 +5,10 @@ es_BO{ Countries{ BA{"Bosnia y Herzegovina"} TA{"Tristán de Acuña"} - TL{"Timor-Leste"} UM{"Islas menores alejadas de EE. UU."} } Countries%short{ GB{"RU"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_BR.txt b/source/data/region/es_BR.txt index f992acf..8a9f8fd 100644 --- a/source/data/region/es_BR.txt +++ b/source/data/region/es_BR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_BR{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_BZ.txt b/source/data/region/es_BZ.txt index f18a98f..26aab70 100644 --- a/source/data/region/es_BZ.txt +++ b/source/data/region/es_BZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_BZ{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_CL.txt b/source/data/region/es_CL.txt index 359996f..d411a62 100644 --- a/source/data/region/es_CL.txt +++ b/source/data/region/es_CL.txt @@ -6,11 +6,10 @@ es_CL{ BA{"Bosnia y Herzegovina"} EH{"Sahara Occidental"} TA{"Tristán de Acuña"} - TL{"Timor-Leste"} UM{"Islas menores alejadas de EE. UU."} } Countries%short{ GB{"RU"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_CO.txt b/source/data/region/es_CO.txt index c58d3e2..0cbcbd8 100644 --- a/source/data/region/es_CO.txt +++ b/source/data/region/es_CO.txt @@ -5,12 +5,10 @@ es_CO{ Countries{ BA{"Bosnia y Herzegovina"} TA{"Tristán de Acuña"} - TL{"Timor-Leste"} UM{"Islas menores alejadas de EE. UU."} - VI{"Islas Vírgenes de EE. UU."} } Countries%short{ GB{"RU"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_CR.txt b/source/data/region/es_CR.txt index e83b28c..828b89c 100644 --- a/source/data/region/es_CR.txt +++ b/source/data/region/es_CR.txt @@ -5,11 +5,10 @@ es_CR{ Countries{ BA{"Bosnia y Herzegovina"} TA{"Tristán de Acuña"} - TL{"Timor-Leste"} UM{"Islas menores alejadas de EE. UU."} } Countries%short{ GB{"RU"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_CU.txt b/source/data/region/es_CU.txt index 2224182..63dcde8 100644 --- a/source/data/region/es_CU.txt +++ b/source/data/region/es_CU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_CU{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_DO.txt b/source/data/region/es_DO.txt index 876c6e7..d6a3f1e 100644 --- a/source/data/region/es_DO.txt +++ b/source/data/region/es_DO.txt @@ -5,11 +5,10 @@ es_DO{ Countries{ BA{"Bosnia y Herzegovina"} TA{"Tristán de Acuña"} - TL{"Timor-Leste"} UM{"Islas menores alejadas de EE. UU."} } Countries%short{ GB{"RU"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_EC.txt b/source/data/region/es_EC.txt index dc5b904..c29f8b3 100644 --- a/source/data/region/es_EC.txt +++ b/source/data/region/es_EC.txt @@ -5,11 +5,10 @@ es_EC{ Countries{ BA{"Bosnia y Herzegovina"} TA{"Tristán de Acuña"} - TL{"Timor-Leste"} UM{"Islas menores alejadas de EE. UU."} } Countries%short{ GB{"RU"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_GT.txt b/source/data/region/es_GT.txt index 11acf5f..b14cf1b 100644 --- a/source/data/region/es_GT.txt +++ b/source/data/region/es_GT.txt @@ -5,11 +5,10 @@ es_GT{ Countries{ BA{"Bosnia y Herzegovina"} TA{"Tristán de Acuña"} - TL{"Timor-Leste"} UM{"Islas menores alejadas de EE. UU."} } Countries%short{ GB{"RU"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_HN.txt b/source/data/region/es_HN.txt index cb94a85..da1abd1 100644 --- a/source/data/region/es_HN.txt +++ b/source/data/region/es_HN.txt @@ -5,11 +5,10 @@ es_HN{ Countries{ BA{"Bosnia y Herzegovina"} TA{"Tristán de Acuña"} - TL{"Timor-Leste"} UM{"Islas menores alejadas de EE. UU."} } Countries%short{ GB{"RU"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_MX.txt b/source/data/region/es_MX.txt index a1bb5ef..606364e 100644 --- a/source/data/region/es_MX.txt +++ b/source/data/region/es_MX.txt @@ -11,7 +11,6 @@ es_MX{ 034{"Asia meridional"} 035{"Sudeste Asiático"} 039{"Europa meridional"} - 057{"Región de Micronesia"} 145{"Asia Occidental"} 151{"Europa Oriental"} 154{"Europa septentrional"} @@ -20,16 +19,15 @@ es_MX{ CI{"Côte d’Ivoire"} EZ{"zona euro"} GG{"Guernsey"} + RO{"Rumania"} SA{"Arabia Saudita"} SZ{"Eswatini"} TA{"Tristán de Acuña"} - TL{"Timor-Leste"} UM{"Islas menores alejadas de EE. UU."} - UN{"UN"} - VI{"Islas Vírgenes de EE. UU."} + UN{"ONU"} } Countries%short{ GB{"RU"} } - Version{"2.1.47.96"} + Version{"36"} } diff --git a/source/data/region/es_NI.txt b/source/data/region/es_NI.txt index 337794d..4e16c7c 100644 --- a/source/data/region/es_NI.txt +++ b/source/data/region/es_NI.txt @@ -5,11 +5,10 @@ es_NI{ Countries{ BA{"Bosnia y Herzegovina"} TA{"Tristán de Acuña"} - TL{"Timor-Leste"} UM{"Islas menores alejadas de EE. UU."} } Countries%short{ GB{"RU"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_PA.txt b/source/data/region/es_PA.txt index 8728a45..f4efc9b 100644 --- a/source/data/region/es_PA.txt +++ b/source/data/region/es_PA.txt @@ -5,11 +5,10 @@ es_PA{ Countries{ BA{"Bosnia y Herzegovina"} TA{"Tristán de Acuña"} - TL{"Timor-Leste"} UM{"Islas menores alejadas de EE. UU."} } Countries%short{ GB{"RU"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_PE.txt b/source/data/region/es_PE.txt index c5837e2..af07d77 100644 --- a/source/data/region/es_PE.txt +++ b/source/data/region/es_PE.txt @@ -5,11 +5,10 @@ es_PE{ Countries{ BA{"Bosnia y Herzegovina"} TA{"Tristán de Acuña"} - TL{"Timor-Leste"} UM{"Islas menores alejadas de EE. UU."} } Countries%short{ GB{"RU"} } - Version{"2.1.47.83"} + Version{"36"} } diff --git a/source/data/region/es_PR.txt b/source/data/region/es_PR.txt index 819481a..b54f99f 100644 --- a/source/data/region/es_PR.txt +++ b/source/data/region/es_PR.txt @@ -5,5 +5,5 @@ es_PR{ Countries{ UM{"Islas menores alejadas de EE. UU."} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_PY.txt b/source/data/region/es_PY.txt index ea2762a..02f05ed 100644 --- a/source/data/region/es_PY.txt +++ b/source/data/region/es_PY.txt @@ -5,11 +5,10 @@ es_PY{ Countries{ BA{"Bosnia y Herzegovina"} TA{"Tristán de Acuña"} - TL{"Timor-Leste"} UM{"Islas menores alejadas de EE. UU."} } Countries%short{ GB{"RU"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_SV.txt b/source/data/region/es_SV.txt index ac2dd7a..74e537d 100644 --- a/source/data/region/es_SV.txt +++ b/source/data/region/es_SV.txt @@ -5,5 +5,5 @@ es_SV{ Countries{ UM{"Islas menores alejadas de EE. UU."} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_US.txt b/source/data/region/es_US.txt index 7541e61..64c926b 100644 --- a/source/data/region/es_US.txt +++ b/source/data/region/es_US.txt @@ -11,7 +11,6 @@ es_US{ 034{"Asia meridional"} 035{"Sudeste asiático"} 039{"Europa meridional"} - 057{"Región de Micronesia"} 145{"Asia occidental"} 151{"Europa oriental"} 154{"Europa septentrional"} @@ -22,9 +21,9 @@ es_US{ EZ{"zona euro"} GG{"Guernsey"} QO{"Territorios alejados de Oceanía"} - TL{"Timor-Leste"} + TA{"Tristán de Acuña"} UM{"Islas menores alejadas de EE. UU."} - VI{"Islas Vírgenes de EE. UU."} + UN{"UN"} } Countries%short{ GB{"RU"} @@ -33,5 +32,5 @@ es_US{ CI{"CI"} TL{"TL"} } - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/region/es_UY.txt b/source/data/region/es_UY.txt index 4e6692c..7b0799c 100644 --- a/source/data/region/es_UY.txt +++ b/source/data/region/es_UY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_UY{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/es_VE.txt b/source/data/region/es_VE.txt index bda6dc0..cc22420 100644 --- a/source/data/region/es_VE.txt +++ b/source/data/region/es_VE.txt @@ -5,11 +5,10 @@ es_VE{ Countries{ BA{"Bosnia y Herzegovina"} TA{"Tristán de Acuña"} - TL{"Timor-Leste"} UM{"Islas menores alejadas de EE. UU."} } Countries%short{ GB{"RU"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/et.txt b/source/data/region/et.txt index 05aaf9a..0d1b384 100644 --- a/source/data/region/et.txt +++ b/source/data/region/et.txt @@ -274,7 +274,7 @@ et{ UA{"Ukraina"} UG{"Uganda"} UM{"Ühendriikide hajasaared"} - UN{"Ühendatud Rahvaste Organisatsioon"} + UN{"Ühinenud Rahvaste Organisatsioon"} US{"Ameerika Ühendriigid"} UY{"Uruguay"} UZ{"Usbekistan"} @@ -295,7 +295,7 @@ et{ ZA{"Lõuna-Aafrika Vabariik"} ZM{"Sambia"} ZW{"Zimbabwe"} - ZZ{"Tundmatu piirkond"} + ZZ{"tundmatu piirkond"} } Countries%short{ GB{"ÜK"} @@ -314,5 +314,5 @@ et{ SZ{"eSwatini"} TL{"Timor-Leste"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/eu.txt b/source/data/region/eu.txt index 4f8b5c0..259869a 100644 --- a/source/data/region/eu.txt +++ b/source/data/region/eu.txt @@ -287,6 +287,7 @@ eu{ VU{"Vanuatu"} WF{"Wallis eta Futuna"} WS{"Samoa"} + XA{"Sasiazentuak"} XK{"Kosovo"} YE{"Yemen"} YT{"Mayotte"} @@ -310,5 +311,5 @@ eu{ FK{"Falklandak (Malvinak)"} TL{"TL"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/ewo.txt b/source/data/region/ewo.txt index 438e8a4..b8beb22 100644 --- a/source/data/region/ewo.txt +++ b/source/data/region/ewo.txt @@ -127,7 +127,6 @@ ewo{ MD{"Molədaví"} MG{"Madagasəkárə"} MH{"Minlán Mí Maresál"} - MK{"Masedónia"} ML{"Malí"} MM{"Mianəmár"} MN{"Mɔngɔ́lia"} @@ -227,5 +226,5 @@ ewo{ ZM{"Zambí"} ZW{"Zimbabwé"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/fa.txt b/source/data/region/fa.txt index 259bbb1..e85c090 100644 --- a/source/data/region/fa.txt +++ b/source/data/region/fa.txt @@ -31,7 +31,7 @@ fa{ 151{"شرق اروپا"} 154{"شمال اروپا"} 155{"غرب اروپا"} - 202{"افریقای سیاه"} + 202{"افریقای جنوب صحرا"} 419{"امریکای لاتین"} AC{"جزایر آسنسیون"} AD{"آندورا"} @@ -90,7 +90,7 @@ fa{ CW{"کوراسائو"} CX{"جزیرهٔ کریسمس"} CY{"قبرس"} - CZ{"جمهوری چک"} + CZ{"چک"} DE{"آلمان"} DG{"دیه‌گو گارسیا"} DJ{"جیبوتی"} @@ -107,7 +107,7 @@ fa{ ES{"اسپانیا"} ET{"اتیوپی"} EU{"اتحادیهٔ اروپا"} - EZ{"منطقه یورو"} + EZ{"منطقهٔ یورو"} FI{"فنلاند"} FJ{"فیجی"} FK{"جزایر فالکلند"} @@ -128,13 +128,13 @@ fa{ GP{"گوادلوپ"} GQ{"گینهٔ استوایی"} GR{"یونان"} - GS{"جزایر جورجیای جنوبی و ساندویچ جنوبی"} + GS{"جورجیای جنوبی و جزایر ساندویچ جنوبی"} GT{"گواتمالا"} GU{"گوام"} GW{"گینهٔ بیسائو"} GY{"گویان"} - HK{"هنگ‌کنگ، منطقۀ ویژۀ اداری چین"} - HM{"جزیرهٔ هرد و جزایر مک‌دونالد"} + HK{"هنگ‌کنگ، منطقهٔ ویژهٔ اداری چین"} + HM{"هرد و جزایر مک‌دونالد"} HN{"هندوراس"} HR{"کرواسی"} HT{"هائیتی"} @@ -187,7 +187,7 @@ fa{ ML{"مالی"} MM{"میانمار (برمه)"} MN{"مغولستان"} - MO{"ماکائو، منطقۀ ویژۀ اداری چین"} + MO{"ماکائو، منطقهٔ ویژهٔ اداری چین"} MP{"جزایر ماریانای شمالی"} MQ{"مارتینیک"} MR{"موریتانی"} @@ -241,7 +241,7 @@ fa{ SG{"سنگاپور"} SH{"سنت هلن"} SI{"اسلوونی"} - SJ{"اسوالبارد و جان‌ماین"} + SJ{"سوالبارد و یان ماین"} SK{"اسلواکی"} SL{"سیرالئون"} SM{"سان‌مارینو"} @@ -287,6 +287,7 @@ fa{ VU{"وانواتو"} WF{"والیس و فوتونا"} WS{"ساموآ"} + XB{"مجازی - دوجهته"} XK{"کوزوو"} YE{"یمن"} YT{"مایوت"} @@ -307,10 +308,10 @@ fa{ Countries%variant{ CD{"کنگو (جمهوری دموکراتیک)"} CG{"کنگو (جمهوری)"} - CI{"ساحل‌عاج"} + CZ{"جمهوری چک"} FK{"جزایر فالکلند (ایسلاس مالویناس)"} SZ{"سوازیلند"} TL{"تیمور شرقی"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/fa_AF.txt b/source/data/region/fa_AF.txt index 0326e17..f028b3c 100644 --- a/source/data/region/fa_AF.txt +++ b/source/data/region/fa_AF.txt @@ -23,7 +23,6 @@ fa_AF{ CO{"کولمبیا"} CR{"کاستریکا"} CU{"کیوبا"} - CZ{"چک"} DK{"دنمارک"} EA{"سئوتا و ملیلا"} EE{"استونیا"} @@ -96,8 +95,5 @@ fa_AF{ Countries%short{ HK{"هانگ کانگ"} } - Countries%variant{ - CZ{"جمهوری چک"} - } - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/region/ff.txt b/source/data/region/ff.txt index 17020db..992373f 100644 --- a/source/data/region/ff.txt +++ b/source/data/region/ff.txt @@ -127,7 +127,6 @@ ff{ MD{"Moldawii"} MG{"Madagaskaar"} MH{"Duuɗe Marsaal"} - MK{"Meceduwaan"} ML{"Maali"} MM{"Miyamaar"} MN{"Monngolii"} @@ -227,5 +226,5 @@ ff{ ZM{"Sammbi"} ZW{"Simbaabuwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ff_Latn.txt b/source/data/region/ff_Latn.txt index b0c2bc1..055ec0f 100644 --- a/source/data/region/ff_Latn.txt +++ b/source/data/region/ff_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/fi.txt b/source/data/region/fi.txt index 81666c3..727b861 100644 --- a/source/data/region/fi.txt +++ b/source/data/region/fi.txt @@ -309,7 +309,8 @@ fi{ CI{"Côte d’Ivoire"} CZ{"Tšekin tasavalta"} FK{"Falklandinsaaret (Malvinassaaret)"} + SZ{"Eswatini"} TL{"Timor-Leste"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/fil.txt b/source/data/region/fil.txt index 7ab5179..3083d05 100644 --- a/source/data/region/fil.txt +++ b/source/data/region/fil.txt @@ -311,7 +311,8 @@ fil{ CI{"Ivory Coast"} CZ{"Czech Republic"} FK{"Falkland Islands (Islas Malvinas)"} + SZ{"Swaziland"} TL{"East Timor"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/fo.txt b/source/data/region/fo.txt index c96fb74..dbebe16 100644 --- a/source/data/region/fo.txt +++ b/source/data/region/fo.txt @@ -183,7 +183,6 @@ fo{ MF{"St-Martin"} MG{"Madagaskar"} MH{"Marshalloyggjar"} - MK{"Makedónia"} ML{"Mali"} MM{"Myanmar (Burma)"} MN{"Mongolia"} @@ -253,7 +252,7 @@ fo{ SV{"El Salvador"} SX{"Sint Maarten"} SY{"Sýria"} - SZ{"Svasiland"} + SZ{"Esvatini"} TA{"Tristan da Cunha"} TC{"Turks- og Caicosoyggjar"} TD{"Kjad"} @@ -287,6 +286,8 @@ fo{ VU{"Vanuatu"} WF{"Wallis- og Futunaoyggjar"} WS{"Samoa"} + XA{"óekta tónalag"} + XB{"óektaður BIDI tekstur"} XK{"Kosovo"} YE{"Jemen"} YT{"Mayotte"} @@ -303,8 +304,13 @@ fo{ US{"USA"} } Countries%variant{ + CD{"Kongo, Dem. Lýðveldið"} + CG{"Kongo"} + CI{"Fílabeinsstrondin"} + CZ{"Kekkia"} FK{"Falklandsoyggjar (Islas Malvinas)"} - MK{"Makedónia (FJM)"} + SZ{"Svasiland"} + TL{"Eysturtimor"} } - Version{"2.1.48.9"} + Version{"36"} } diff --git a/source/data/region/fr.txt b/source/data/region/fr.txt index d7220f3..f5e6326 100644 --- a/source/data/region/fr.txt +++ b/source/data/region/fr.txt @@ -314,5 +314,5 @@ fr{ SZ{"Swaziland"} TL{"Timor-Oriental"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/fr_BE.txt b/source/data/region/fr_BE.txt index f36c02d..6263d3b 100644 --- a/source/data/region/fr_BE.txt +++ b/source/data/region/fr_BE.txt @@ -5,5 +5,5 @@ fr_BE{ BN{"Brunei"} GS{"Îles Géorgie du Sud et Sandwich du Sud"} } - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/region/fr_CA.txt b/source/data/region/fr_CA.txt index 6b132dd..e983d8f 100644 --- a/source/data/region/fr_CA.txt +++ b/source/data/region/fr_CA.txt @@ -43,5 +43,5 @@ fr_CA{ FK{"îles Falkland (Malouines)"} TL{"Timor oriental"} } - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/region/fur.txt b/source/data/region/fur.txt index 3ab583a..bc36fc3 100644 --- a/source/data/region/fur.txt +++ b/source/data/region/fur.txt @@ -178,7 +178,6 @@ fur{ MF{"Sant Martin"} MG{"Madagascar"} MH{"Isulis Marshall"} - MK{"Macedonie"} ML{"Mali"} MM{"Birmanie"} MN{"Mongolie"} @@ -294,7 +293,6 @@ fur{ CD{"Congo (RDC)"} CG{"Congo (Republiche)"} FK{"Isulis Falkland (Isulis Malvinas)"} - MK{"Macedonie (FYROM)"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/fy.txt b/source/data/region/fy.txt index a408d0a..6a82ddb 100644 --- a/source/data/region/fy.txt +++ b/source/data/region/fy.txt @@ -181,7 +181,6 @@ fy{ MF{"Saint-Martin"} MG{"Madeiaskar"} MH{"Marshalleilannen"} - MK{"Macedonië"} ML{"Mali"} MM{"Myanmar (Birma)"} MN{"Mongolië"} @@ -303,7 +302,6 @@ fy{ CD{"Congo (DRC)"} CG{"Congo (Republyk)"} FK{"Falklâneilannen (Islas Malvinas)"} - MK{"Macedonië (FYROM)"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ga.txt b/source/data/region/ga.txt index 5896a89..5402e7b 100644 --- a/source/data/region/ga.txt +++ b/source/data/region/ga.txt @@ -253,7 +253,7 @@ ga{ SV{"an tSalvadóir"} SX{"Sint Maarten"} SY{"an tSiria"} - SZ{"an tSuasalainn"} + SZ{"eSuaitíní"} TA{"Tristan da Cunha"} TC{"Oileáin na dTurcach agus Caicos"} TD{"Sead"} @@ -274,7 +274,7 @@ ga{ UA{"an Úcráin"} UG{"Uganda"} UM{"Oileáin Imeallacha S.A.M."} - UN{"na Náisiúin Aontaiteh"} + UN{"na Náisiúin Aontaithe"} US{"Stáit Aontaithe Mheiriceá"} UY{"Uragua"} UZ{"an Úisbéiceastáin"} @@ -287,8 +287,8 @@ ga{ VU{"Vanuatú"} WF{"Vailís agus Futúna"} WS{"Samó"} - XA{"XA"} - XB{"XB"} + XA{"Bréagdhiaicriticí"} + XB{"Bréag-Bidi"} XK{"an Chosaiv"} YE{"Éimin"} YT{"Mayotte"} @@ -311,8 +311,8 @@ ga{ CI{"Côte d’Ivoire"} CZ{"Poblacht na Seice"} FK{"Oileáin Fháclainne (Islas Malvinas)"} - SZ{"Ríocht na Suasalainne"} + SZ{"an tSuasalainn"} TL{"TL"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/gd.txt b/source/data/region/gd.txt index a6b7ab3..f94c375 100644 --- a/source/data/region/gd.txt +++ b/source/data/region/gd.txt @@ -253,7 +253,7 @@ gd{ SV{"An Salbhador"} SX{"Sint Maarten"} SY{"Siridhea"} - SZ{"Dùthaich nan Suasaidh"} + SZ{"eSwatini"} TA{"Tristan da Cunha"} TC{"Na h-Eileanan Turcach is Caiceo"} TD{"An t-Seàd"} @@ -287,6 +287,8 @@ gd{ VU{"Vanuatu"} WF{"Uallas agus Futuna"} WS{"Samotha"} + XA{"Sràcan fuadain"} + XB{"Dà-chomhaireach fuadain"} XK{"A’ Chosobho"} YE{"An Eaman"} YT{"Mayotte"} @@ -308,7 +310,8 @@ gd{ CI{"An Costa Ìbhri"} CZ{"Poblachd na Seice"} FK{"Na h-Eileanan Fàclannach (Islas Malvinas)"} + SZ{"Dùthaich nan Suasaidh"} TL{"Tìomor an Ear"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/gl.txt b/source/data/region/gl.txt index b50dcc3..b1daa72 100644 --- a/source/data/region/gl.txt +++ b/source/data/region/gl.txt @@ -4,8 +4,8 @@ gl{ Countries{ 001{"Mundo"} 002{"África"} - 003{"Norteamérica"} - 005{"Suramérica"} + 003{"América do Norte"} + 005{"América do Sur"} 009{"Oceanía"} 011{"África Occidental"} 013{"América Central"} @@ -14,7 +14,7 @@ gl{ 017{"África Central"} 018{"África Meridional"} 019{"América"} - 021{"América do Norte"} + 021{"América Setentrional"} 029{"Caribe"} 030{"Asia Oriental"} 034{"Asia Meridional"} @@ -22,7 +22,7 @@ gl{ 039{"Europa Meridional"} 053{"Australasia"} 054{"Melanesia"} - 057{"Rexión da Micronesia"} + 057{"Rexión de Micronesia"} 061{"Polinesia"} 142{"Asia"} 143{"Asia Central"} @@ -77,7 +77,7 @@ gl{ CF{"República Centroafricana"} CG{"República do Congo"} CH{"Suíza"} - CI{"Costa do Marfil"} + CI{"Côte d’Ivoire"} CK{"Illas Cook"} CL{"Chile"} CM{"Camerún"} @@ -164,7 +164,7 @@ gl{ KR{"Corea do Sur"} KW{"Kuwait"} KY{"Illas Caimán"} - KZ{"Casaquistán"} + KZ{"Kazakistán"} LA{"Laos"} LB{"O Líbano"} LC{"Santa Lucía"} @@ -253,7 +253,7 @@ gl{ SV{"O Salvador"} SX{"Sint Maarten"} SY{"Siria"} - SZ{"Suazilandia"} + SZ{"Eswatini"} TA{"Tristán da Cunha"} TC{"Illas Turks e Caicos"} TD{"Chad"} @@ -277,7 +277,7 @@ gl{ UN{"Nacións Unidas"} US{"Os Estados Unidos"} UY{"O Uruguai"} - UZ{"Uzbequistán"} + UZ{"Uzbekistán"} VA{"Cidade do Vaticano"} VC{"San Vicente e As Granadinas"} VE{"Venezuela"} @@ -287,6 +287,8 @@ gl{ VU{"Vanuatu"} WF{"Wallis e Futuna"} WS{"Samoa"} + XA{"Pseudoacentos"} + XB{"Pseudobidireccional"} XK{"Kosovo"} YE{"O Iemen"} YT{"Mayotte"} @@ -306,11 +308,11 @@ gl{ Countries%variant{ CD{"Congo (RDC)"} CG{"Congo (RC)"} - CI{"CI"} + CI{"Costa do Marfil"} CZ{"República Checa"} FK{"Illas Malvinas (Falkland)"} SZ{"Suacilandia"} TL{"TL"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/gsw.txt b/source/data/region/gsw.txt index caee58c..ed1192a 100644 --- a/source/data/region/gsw.txt +++ b/source/data/region/gsw.txt @@ -174,7 +174,6 @@ gsw{ MF{"St. Martin"} MG{"Madagaschkar"} MH{"Marshallinsle"} - MK{"Mazedoonie"} ML{"Maali"} MM{"Myanmar (Burma)"} MN{"Mongolei"} @@ -285,8 +284,5 @@ gsw{ HK{"Hongkong"} MO{"Macao"} } - Countries%variant{ - MK{"Mazedoonie (EJRM)"} - } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/gu.txt b/source/data/region/gu.txt index 80d6147..c2d5d5a 100644 --- a/source/data/region/gu.txt +++ b/source/data/region/gu.txt @@ -253,7 +253,7 @@ gu{ SV{"એલ સેલ્વાડોર"} SX{"સિંટ માર્ટેન"} SY{"સીરિયા"} - SZ{"સ્વાઝિલેન્ડ"} + SZ{"એસ્વાટીની"} TA{"ત્રિસ્તાન દા કુન્હા"} TC{"તુર્ક્સ અને કેકોઝ આઇલેન્ડ્સ"} TD{"ચાડ"} @@ -287,6 +287,8 @@ gu{ VU{"વાનુઆતુ"} WF{"વૉલિસ અને ફ્યુચુના"} WS{"સમોઆ"} + XA{"સ્યુડો-ઍક્સન્ટ"} + XB{"સ્યુડો-દ્વિદિશ"} XK{"કોસોવો"} YE{"યમન"} YT{"મેયોટ"} @@ -312,5 +314,5 @@ gu{ SZ{"સ્વાઝીલેન્ડ"} TL{"પૂર્વ તિમોર"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/guz.txt b/source/data/region/guz.txt index 6111cef..631ef13 100644 --- a/source/data/region/guz.txt +++ b/source/data/region/guz.txt @@ -127,7 +127,6 @@ guz{ MD{"Moldova"} MG{"Bukini"} MH{"Visiwa vya Marshal"} - MK{"Masedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -227,5 +226,5 @@ guz{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/gv.txt b/source/data/region/gv.txt index 1931dff..f735d0c 100644 --- a/source/data/region/gv.txt +++ b/source/data/region/gv.txt @@ -5,5 +5,5 @@ gv{ GB{"Rywvaneth Unys"} IM{"Ellan Vannin"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ha.txt b/source/data/region/ha.txt index 4060a64..55dae6c 100644 --- a/source/data/region/ha.txt +++ b/source/data/region/ha.txt @@ -2,6 +2,33 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ha{ Countries{ + 001{"Duniya"} + 002{"Afirka"} + 003{"North America"} + 005{"South America"} + 009{"Oceania"} + 011{"Afirka ta Yamma"} + 013{"Central America"} + 014{"Afirka ta Gabas"} + 015{"Arewacin Africa"} + 017{"Afirka ta Tsakiya"} + 018{"Kudancin Afirka"} + 019{"nahiyoyin Amurka"} + 021{"Arewacin Amurka"} + 029{"Caribbean"} + 030{"Gabashin Asiya"} + 034{"kudancin Asiya"} + 035{"Kudu Maso Gabashin Asiya"} + 039{"Kudancin Turai"} + 142{"Asiya"} + 143{"Asiya ta Tsakiya"} + 145{"Yammacin Asiya"} + 150{"Turai"} + 151{"Gabashin Turai"} + 154{"Arewacin Turai"} + 155{"Yammacin Turai"} + 202{"Sub-Saharan Africa"} + 419{"Latin America"} AD{"Andora"} AE{"Haɗaɗɗiyar Daular Larabawa"} AF{"Afaganistan"} @@ -10,6 +37,7 @@ ha{ AL{"Albaniya"} AM{"Armeniya"} AO{"Angola"} + AQ{"Antatika"} AR{"Arjantiniya"} AS{"Samowa Ta Amurka"} AT{"Ostiriya"} @@ -25,9 +53,11 @@ ha{ BH{"Baharan"} BI{"Burundi"} BJ{"Binin"} + BL{"St. Barthélemy"} BM{"Barmuda"} BN{"Burune"} BO{"Bolibiya"} + BQ{"Caribbean Netherlands"} BR{"Birazil"} BS{"Bahamas"} BT{"Butan"} @@ -35,6 +65,7 @@ ha{ BY{"Belarus"} BZ{"Beliz"} CA{"Kanada"} + CC{"Tsibirai Cocos (Keeling)"} CD{"Jamhuriyar Dimokuraɗiyyar Kongo"} CF{"Jamhuriyar Afirka Ta Tsakiya"} CG{"Kongo"} @@ -43,11 +74,13 @@ ha{ CK{"Tsibiran Kuku"} CL{"Cayile"} CM{"Kamaru"} - CN{"Caina, Sin"} + CN{"Sin"} CO{"Kolambiya"} CR{"Kwasta Rika"} CU{"Kyuba"} CV{"Tsibiran Kap Barde"} + CW{"Kasar Curaçao"} + CX{"Tsibirin Kirsmati"} CY{"Sifurus"} CZ{"Jamhuriyar Cak"} DE{"Jamus"} @@ -62,6 +95,8 @@ ha{ ER{"Eritireya"} ES{"Sipen"} ET{"Habasha"} + EU{"Tarayyar Turai"} + EZ{"Sashin Turai"} FI{"Finlan"} FJ{"Fiji"} FK{"Tsibiran Falkilan"} @@ -106,8 +141,8 @@ ha{ KI{"Kiribati"} KM{"Kwamoras"} KN{"San Kiti Da Nebis"} - KP{"Koreya Ta Arewa"} - KR{"Koreya Ta Kudu"} + KP{"Koriya Ta Arewa"} + KR{"Koriya Ta Kudu"} KW{"Kwiyat"} KY{"Tsibiran Kaiman"} KZ{"Kazakistan"} @@ -125,9 +160,11 @@ ha{ MA{"Maroko"} MC{"Monako"} MD{"Maldoba"} + ME{"Mantanegara"} + MF{"St. Martin"} MG{"Madagaskar"} MH{"Tsibiran Marshal"} - MK{"Masedoniya"} + MK{"Macedonia ta Arewa"} ML{"Mali"} MM{"Burma, Miyamar"} MN{"Mangoliya"} @@ -156,7 +193,7 @@ ha{ NZ{"Nuzilan"} OM{"Oman"} PA{"Panama"} - PE{"Peru"} + PE{"Feru"} PF{"Folinesiya Ta Faransa"} PG{"Papuwa Nugini"} PH{"Filipin"} @@ -168,15 +205,16 @@ ha{ PS{"Palasɗinu"} PT{"Portugal"} PW{"Palau"} - PY{"Paragai"} - QA{"Kwatar"} + PY{"Faragwai"} + QA{"Katar"} RE{"Rawuniyan"} RO{"Romaniya"} + RS{"Sabiya"} RU{"Rasha"} RW{"Ruwanda"} - SA{"Ƙasar Makka"} + SA{"Saudiyya"} SB{"Tsibiran Salaman"} - SC{"Saishal"} + SC{"Seychelles"} SD{"Sudan"} SE{"Suwedan"} SG{"Singapur"} @@ -185,15 +223,19 @@ ha{ SK{"Sulobakiya"} SL{"Salewo"} SM{"San Marino"} - SN{"Sinigal"} + SN{"Sanigal"} SO{"Somaliya"} SR{"Suriname"} + SS{"Sudan ta kudu"} ST{"Sawo Tome Da Paransip"} SV{"El Salbador"} + SX{"Sint Maarten"} SY{"Sham, Siriya"} - SZ{"Suwazilan"} + SZ{"Eswatini"} + TA{"Tritan da Kunha"} TC{"Turkis Da Tsibiran Kaikwas"} TD{"Cadi"} + TF{"Yankin Faransi ta Kudu"} TG{"Togo"} TH{"Tailan"} TJ{"Tajikistan"} @@ -201,7 +243,7 @@ ha{ TL{"Timor Ta Gabas"} TM{"Turkumenistan"} TN{"Tunisiya"} - TO{"Tanga"} + TO{"Tonga"} TR{"Turkiyya"} TT{"Tirinidad Da Tobago"} TV{"Tubalu"} @@ -209,8 +251,9 @@ ha{ TZ{"Tanzaniya"} UA{"Yukaran"} UG{"Yuganda"} - US{"Amirka"} - UY{"Yurugai"} + UN{"Majalisar Dinkin Duniya"} + US{"Amurka"} + UY{"Yurigwai"} UZ{"Uzubekistan"} VA{"Batikan"} VC{"San Binsan Da Girnadin"} @@ -220,7 +263,7 @@ ha{ VN{"Biyetinam"} VU{"Banuwatu"} WF{"Walis Da Futuna"} - WS{"Samowa"} + WS{"Samoa"} YE{"Yamal"} YT{"Mayoti"} ZA{"Afirka Ta Kudu"} @@ -228,5 +271,13 @@ ha{ ZW{"Zimbabuwe"} ZZ{"Yanki da ba a sani ba"} } - Version{"2.1.48.45"} + Countries%short{ + PS{"Palasɗinu"} + } + Countries%variant{ + CD{"Kongo (DRC)"} + CG{"Jamhuriyar Kongo"} + CI{"Aibari Kwas"} + } + Version{"36"} } diff --git a/source/data/region/ha_NE.txt b/source/data/region/ha_NE.txt deleted file mode 100644 index c57972a..0000000 --- a/source/data/region/ha_NE.txt +++ /dev/null @@ -1,232 +0,0 @@ -// © 2016 and later: Unicode, Inc. and others. -// License & terms of use: http://www.unicode.org/copyright.html#License -ha_NE{ - Countries{ - AD{"Andora"} - AE{"Haɗaɗɗiyar Daular Larabawa"} - AF{"Afaganistan"} - AG{"Antigwa da Barbuba"} - AI{"Angila"} - AL{"Albaniya"} - AM{"Armeniya"} - AO{"Angola"} - AR{"Arjantiniya"} - AS{"Samowa Ta Amurka"} - AT{"Ostiriya"} - AU{"Ostareliya"} - AW{"Aruba"} - AZ{"Azarbaijan"} - BA{"Bosniya Harzagobina"} - BB{"Barbadas"} - BD{"Bangiladas"} - BE{"Belgiyom"} - BF{"Burkina Faso"} - BG{"Bulgariya"} - BH{"Baharan"} - BI{"Burundi"} - BJ{"Binin"} - BM{"Barmuda"} - BN{"Burune"} - BO{"Bolibiya"} - BR{"Birazil"} - BS{"Bahamas"} - BT{"Butan"} - BW{"Baswana"} - BY{"Belarus"} - BZ{"Beliz"} - CA{"Kanada"} - CD{"Jamhuriyar Dimokuraɗiyyar Kongo"} - CF{"Jamhuriyar Afirka Ta Tsakiya"} - CG{"Kongo"} - CH{"Suwizalan"} - CI{"Aibari Kwas"} - CK{"Tsibiran Kuku"} - CL{"Cayile"} - CM{"Kamaru"} - CN{"Caina, Sin"} - CO{"Kolambiya"} - CR{"Kwasta Rika"} - CU{"Kyuba"} - CV{"Tsibiran Kap Barde"} - CY{"Sifurus"} - CZ{"Jamhuriyar Cak"} - DE{"Jamus"} - DJ{"Jibuti"} - DK{"Danmark"} - DM{"Dominika"} - DO{"Jamhuriyar Dominika"} - DZ{"Aljeriya"} - EC{"Ekwador"} - EE{"Estoniya"} - EG{"Misira"} - ER{"Eritireya"} - ES{"Sipen"} - ET{"Habasha"} - FI{"Finlan"} - FJ{"Fiji"} - FK{"Tsibiran Falkilan"} - FM{"Mikuronesiya"} - FR{"Faransa"} - GA{"Gabon"} - GB{"Biritaniya"} - GD{"Girnada"} - GE{"Jiwarjiya"} - GF{"Gini Ta Faransa"} - GH{"Gana"} - GI{"Jibaraltar"} - GL{"Grinlan"} - GM{"Gambiya"} - GN{"Gini"} - GP{"Gwadaluf"} - GQ{"Gini Ta Ikwaita"} - GR{"Girka"} - GT{"Gwatamala"} - GU{"Gwam"} - GW{"Gini Bisau"} - GY{"Guyana"} - HN{"Honduras"} - HR{"Kurowaishiya"} - HT{"Haiti"} - HU{"Hungari"} - ID{"Indunusiya"} - IE{"Ayalan"} - IL{"Iziraʼila"} - IN{"Indiya"} - IO{"Yankin Birtaniya Na Tekun Indiya"} - IQ{"Iraƙi"} - IR{"Iran"} - IS{"Aisalan"} - IT{"Italiya"} - JM{"Jamaika"} - JO{"Jordan"} - JP{"Jàpân"} - KE{"Kenya"} - KG{"Kirgizistan"} - KH{"Kambodiya"} - KI{"Kiribati"} - KM{"Kwamoras"} - KN{"San Kiti Da Nebis"} - KP{"Koreya Ta Arewa"} - KR{"Koreya Ta Kudu"} - KW{"Kwiyat"} - KY{"Tsibiran Kaiman"} - KZ{"Kazakistan"} - LA{"Lawas"} - LB{"Labanan"} - LC{"San Lusiya"} - LI{"Licansitan"} - LK{"Siri Lanka"} - LR{"Laberiya"} - LS{"Lesoto"} - LT{"Lituweniya"} - LU{"Lukusambur"} - LV{"latibiya"} - LY{"Libiya"} - MA{"Maroko"} - MC{"Monako"} - MD{"Maldoba"} - MG{"Madagaskar"} - MH{"Tsibiran Marshal"} - MK{"Masedoniya"} - ML{"Mali"} - MM{"Burma, Miyamar"} - MN{"Mangoliya"} - MP{"Tsibiran Mariyana Na Arewa"} - MQ{"Martinik"} - MR{"Moritaniya"} - MS{"Manserati"} - MT{"Malta"} - MU{"Moritus"} - MV{"Maldibi"} - MW{"Malawi"} - MX{"Makasiko"} - MY{"Malaisiya"} - MZ{"Mozambik"} - NA{"Namibiya"} - NC{"Kaledoniya Sabuwa"} - NE{"Nijar"} - NF{"Tsibirin Narfalk"} - NG{"Najeriya"} - NI{"Nikaraguwa"} - NL{"Holan"} - NO{"Norwe"} - NP{"Nefal"} - NR{"Nauru"} - NU{"Niyu"} - NZ{"Nuzilan"} - OM{"Oman"} - PA{"Panama"} - PE{"Peru"} - PF{"Folinesiya Ta Faransa"} - PG{"Papuwa Nugini"} - PH{"Filipin"} - PK{"Pakistan"} - PL{"Polan"} - PM{"San Piyar Da Mikelan"} - PN{"Pitakarin"} - PR{"Porto Riko"} - PS{"Palasɗinu"} - PT{"Portugal"} - PW{"Palau"} - PY{"Paragai"} - QA{"Kwatar"} - RE{"Rawuniyan"} - RO{"Romaniya"} - RU{"Rasha"} - RW{"Ruwanda"} - SA{"Ƙasar Makka"} - SB{"Tsibiran Salaman"} - SC{"Saishal"} - SD{"Sudan"} - SE{"Suwedan"} - SG{"Singapur"} - SH{"San Helena"} - SI{"Sulobeniya"} - SK{"Sulobakiya"} - SL{"Salewo"} - SM{"San Marino"} - SN{"Sinigal"} - SO{"Somaliya"} - SR{"Suriname"} - ST{"Sawo Tome Da Paransip"} - SV{"El Salbador"} - SY{"Sham, Siriya"} - SZ{"Suwazilan"} - TC{"Turkis Da Tsibiran Kaikwas"} - TD{"Cadi"} - TG{"Togo"} - TH{"Tailan"} - TJ{"Tajikistan"} - TK{"Takelau"} - TL{"Timor Ta Gabas"} - TM{"Turkumenistan"} - TN{"Tunisiya"} - TO{"Tanga"} - TR{"Turkiyya"} - TT{"Tirinidad Da Tobago"} - TV{"Tubalu"} - TW{"Taiwan"} - TZ{"Tanzaniya"} - UA{"Yukaran"} - UG{"Yuganda"} - US{"Amirka"} - UY{"Yurugai"} - UZ{"Uzubekistan"} - VA{"Batikan"} - VC{"San Binsan Da Girnadin"} - VE{"Benezuwela"} - VG{"Tsibirin Birjin Na Birtaniya"} - VI{"Tsibiran Birjin Ta Amurka"} - VN{"Biyetinam"} - VU{"Banuwatu"} - WF{"Walis Da Futuna"} - WS{"Samowa"} - YE{"Yamal"} - YT{"Mayoti"} - ZA{"Afirka Ta Kudu"} - ZM{"Zambiya"} - ZW{"Zimbabuwe"} - ZZ{"Yanki da ba a sani ba"} - } - Version{"2.1.48.77"} -} diff --git a/source/data/region/haw.txt b/source/data/region/haw.txt index 92beb70..4d353ed 100644 --- a/source/data/region/haw.txt +++ b/source/data/region/haw.txt @@ -23,5 +23,5 @@ haw{ RU{"Lūkia"} US{"ʻAmelika Hui Pū ʻIa"} } - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/region/he.txt b/source/data/region/he.txt index 5f5f2b0..4bf0ec6 100644 --- a/source/data/region/he.txt +++ b/source/data/region/he.txt @@ -287,6 +287,8 @@ he{ VU{"ונואטו"} WF{"איי ווליס ופוטונה"} WS{"סמואה"} + XA{"מבטאים חלקיים"} + XB{"דו-כיווני חלקי"} XK{"קוסובו"} YE{"תימן"} YT{"מאיוט"} @@ -311,5 +313,5 @@ he{ SZ{"סווזילנד"} TL{"מזרח טימור"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/hi.txt b/source/data/region/hi.txt index 963eaae..2123b01 100644 --- a/source/data/region/hi.txt +++ b/source/data/region/hi.txt @@ -183,7 +183,7 @@ hi{ MF{"सेंट मार्टिन"} MG{"मेडागास्कर"} MH{"मार्शल द्वीपसमूह"} - MK{"मकदूनिया"} + MK{"उत्तरी मकदूनिया"} ML{"माली"} MM{"म्यांमार (बर्मा)"} MN{"मंगोलिया"} @@ -287,6 +287,8 @@ hi{ VU{"वनुआतू"} WF{"वालिस और फ़्यूचूना"} WS{"समोआ"} + XA{"सूडो-एक्सेंट"} + XB{"सूडो-बायडायरेक्शनल"} XK{"कोसोवो"} YE{"यमन"} YT{"मायोते"} @@ -309,9 +311,8 @@ hi{ CI{"आइवरी कोस्ट"} CZ{"चेक गणराज्य"} FK{"फ़ॉकलैंड द्वीपसमूह (इज़्लास माल्विनास)"} - MK{"मकदूनिया (FYROM)"} - SZ{"स्वाज़िलैंड"} + SZ{"स्वाज़ीलैंड"} TL{"पूर्वी तिमोर"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/hr.txt b/source/data/region/hr.txt index 6f31b3b..3954137 100644 --- a/source/data/region/hr.txt +++ b/source/data/region/hr.txt @@ -219,7 +219,7 @@ hr{ PH{"Filipini"} PK{"Pakistan"} PL{"Poljska"} - PM{"Sveti Petar i Mikelon"} + PM{"Saint-Pierre-et-Miquelon"} PN{"Otoci Pitcairn"} PR{"Portoriko"} PS{"Palestinsko područje"} @@ -253,7 +253,7 @@ hr{ SV{"Salvador"} SX{"Sint Maarten"} SY{"Sirija"} - SZ{"Svazi"} + SZ{"Esvatini"} TA{"Tristan da Cunha"} TC{"Otoci Turks i Caicos"} TD{"Čad"} @@ -306,12 +306,13 @@ hr{ US{"SAD"} } Countries%variant{ - CD{"Kongo (DRK)"} + CD{"Kongo (DR)"} CG{"Kongo (RK)"} CI{"Bjelokosna Obala"} CZ{"Češka Republika"} FK{"Falklandski otoci (Malvini)"} + SZ{"Svazi"} TL{"Istočni Timor"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/hsb.txt b/source/data/region/hsb.txt index d926fbc..eaf480b 100644 --- a/source/data/region/hsb.txt +++ b/source/data/region/hsb.txt @@ -181,7 +181,6 @@ hsb{ MF{"St. Martin"} MG{"Madagaskar"} MH{"Marshallowe kupy"} - MK{"Makedonska"} ML{"Mali"} MM{"Myanmar"} MN{"Mongolska"} @@ -304,8 +303,7 @@ hsb{ CG{"Kongo (Republika)"} CI{"Słonowinowy pobrjóh"} FK{"Falklandske kupy (Malwiny)"} - MK{"Makedonska (FYROM)"} TL{"Wuchodny Timor"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/hu.txt b/source/data/region/hu.txt index 2dabff7..d8c8a32 100644 --- a/source/data/region/hu.txt +++ b/source/data/region/hu.txt @@ -185,7 +185,7 @@ hu{ MH{"Marshall-szigetek"} MK{"Észak-Macedónia"} ML{"Mali"} - MM{"Mianmar (Burma)"} + MM{"Mianmar"} MN{"Mongólia"} MO{"Makaó KKT"} MP{"Északi Mariana-szigetek"} @@ -308,10 +308,10 @@ hu{ Countries%variant{ CD{"Kongó (KDK)"} CG{"Kongó (Köztársaság)"} - CI{"CI"} CZ{"Cseh Köztársaság"} FK{"Falkland-szigetek (Malvin-szigetek)"} + SZ{"Eswatini"} TL{"Timor-Leste"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/hy.txt b/source/data/region/hy.txt index 6349f9b..ec7cfdb 100644 --- a/source/data/region/hy.txt +++ b/source/data/region/hy.txt @@ -77,7 +77,7 @@ hy{ CF{"Կենտրոնական Աֆրիկյան Հանրապետություն"} CG{"Կոնգո - Բրազավիլ"} CH{"Շվեյցարիա"} - CI{"Կոտ դ’Իվուար"} + CI{"Կոտ դ՚Իվուար"} CK{"Կուկի կղզիներ"} CL{"Չիլի"} CM{"Կամերուն"} @@ -287,6 +287,8 @@ hy{ VU{"Վանուատու"} WF{"Ուոլիս և Ֆուտունա"} WS{"Սամոա"} + XA{"կեղծ տարբերիչներ"} + XB{"կեղծ երկուղղված"} XK{"Կոսովո"} YE{"Եմեն"} YT{"Մայոտ"} @@ -312,5 +314,5 @@ hy{ SZ{"Սվազիլենդ"} TL{"Արևելյան Թիմոր"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/ia.txt b/source/data/region/ia.txt index ca4c313..448351b 100644 --- a/source/data/region/ia.txt +++ b/source/data/region/ia.txt @@ -242,7 +242,6 @@ ia{ } Countries%variant{ CZ{"Republica Chec"} - MK{"Macedonia (ARYM)"} } - Version{"2.1.48.36"} + Version{"36"} } diff --git a/source/data/region/id.txt b/source/data/region/id.txt index 53a27c0..c17d0e0 100644 --- a/source/data/region/id.txt +++ b/source/data/region/id.txt @@ -42,7 +42,7 @@ id{ AL{"Albania"} AM{"Armenia"} AO{"Angola"} - AQ{"Antartika"} + AQ{"Antarktika"} AR{"Argentina"} AS{"Samoa Amerika"} AT{"Austria"} @@ -77,7 +77,7 @@ id{ CF{"Republik Afrika Tengah"} CG{"Kongo - Brazzaville"} CH{"Swiss"} - CI{"Pantai Gading"} + CI{"Côte d’Ivoire"} CK{"Kepulauan Cook"} CL{"Cile"} CM{"Kamerun"} @@ -88,7 +88,7 @@ id{ CU{"Kuba"} CV{"Tanjung Verde"} CW{"Curaçao"} - CX{"Pulau Christmas"} + CX{"Pulau Natal"} CY{"Siprus"} CZ{"Ceko"} DE{"Jerman"} @@ -110,7 +110,7 @@ id{ EZ{"Zona Euro"} FI{"Finlandia"} FJ{"Fiji"} - FK{"Kepulauan Malvinas"} + FK{"Kepulauan Falkland"} FM{"Mikronesia"} FO{"Kepulauan Faroe"} FR{"Prancis"} @@ -133,13 +133,13 @@ id{ GU{"Guam"} GW{"Guinea-Bissau"} GY{"Guyana"} - HK{"Hong Kong SAR Tiongkok"} + HK{"Hong Kong DAK Tiongkok"} HM{"Pulau Heard dan Kepulauan McDonald"} HN{"Honduras"} HR{"Kroasia"} HT{"Haiti"} HU{"Hungaria"} - IC{"Kepulauan Canary"} + IC{"Kepulauan Canaria"} ID{"Indonesia"} IE{"Irlandia"} IL{"Israel"} @@ -187,7 +187,7 @@ id{ ML{"Mali"} MM{"Myanmar (Burma)"} MN{"Mongolia"} - MO{"Makau SAR Tiongkok"} + MO{"Makau DAK Tiongkok"} MP{"Kepulauan Mariana Utara"} MQ{"Martinik"} MR{"Mauritania"} @@ -257,7 +257,7 @@ id{ TA{"Tristan da Cunha"} TC{"Kepulauan Turks dan Caicos"} TD{"Cad"} - TF{"Wilayah Kutub Selatan Prancis"} + TF{"Wilayah Selatan Perancis"} TG{"Togo"} TH{"Thailand"} TJ{"Tajikistan"} @@ -279,10 +279,10 @@ id{ UY{"Uruguay"} UZ{"Uzbekistan"} VA{"Vatikan"} - VC{"Saint Vincent dan Grenadines"} + VC{"Saint Vincent dan Grenadine"} VE{"Venezuela"} - VG{"Kepulauan Virgin Inggris"} - VI{"Kepulauan Virgin A.S."} + VG{"Kepulauan Virgin Britania Raya"} + VI{"Kepulauan Virgin Amerika Serikat"} VN{"Vietnam"} VU{"Vanuatu"} WF{"Kepulauan Wallis dan Futuna"} @@ -308,11 +308,11 @@ id{ Countries%variant{ CD{"Kongo (RDK)"} CG{"Kongo (Republik)"} - CI{"Pantai Gading (Ivory Coast)"} + CI{"Côte d’Ivoire"} CZ{"Republik Ceko"} - FK{"Kepulauan Malvinas (Falkland)"} + FK{"Kepulauan Falkland (Malvinas)"} SZ{"Swaziland"} - TL{"TL"} + TL{"Timor Timur"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/ig.txt b/source/data/region/ig.txt index 80253be..c99acd9 100644 --- a/source/data/region/ig.txt +++ b/source/data/region/ig.txt @@ -2,24 +2,268 @@ // License & terms of use: http://www.unicode.org/copyright.html#License ig{ Countries{ + 001{"Uwa"} + 002{"Afrika"} + 003{"Mpaghara Ugwu Amerịka"} + 005{"Mpaghara Mgbada Ugwu America"} + 009{"Oceania"} + 011{"Mpaghara Ọdịda Anyanwụ Afrịka"} + 013{"Etiti America"} + 014{"Mpaghara Ọwụwa Anyanwụ Afrịka"} + 015{"Mpaghara Ugwu Afrịka"} + 017{"Etiti Afrịka"} + 018{"Mpaghara Mgbada Ugwu Afrịka"} + 019{"Amerịka"} + 021{"Mpaghara Ugwu America"} + 029{"Onye Carrabean"} + 030{"Mpaghara Ọwụwa Anyanwụ Asia"} + 034{"Mpaghara Mgbada Ugwu Asia"} + 035{"Mpaghara Mgbada Ugwu Asia dị na Ọwụwa Anyanwụ"} + 039{"Mpaghara Mgbada Ugwu Europe"} + 053{"Australasia"} + 054{"Melanesia"} + 057{"Mpaghara Micronesian"} + 061{"Polynesia"} + 142{"Asia"} + 143{"Etiti Asia"} + 145{"Mpaghara Ọdịda Anyanwụ Asia"} + 150{"Europe"} + 151{"Mpaghara Ọwụwa Anyanwụ Europe"} + 154{"Mpaghara Ugwu Europe"} + 155{"Mpaghara Ọdịda Anyanwụ Europe"} + 202{"Sub-Saharan Afrịka"} + 419{"Latin America"} + AC{"Ascension Island"} + AD{"Andorra"} + AG{"Antigua & Barbuda"} + AI{"Anguilla"} + AL{"Albania"} + AO{"Angola"} + AQ{"Antarctica"} + AR{"Argentina"} + AS{"American Samoa"} + AT{"Austria"} + AU{"Australia"} + AW{"Aruba"} + AX{"Agwaetiti Aland"} + BA{"Bosnia & Herzegovina"} + BB{"Barbados"} + BE{"Belgium"} + BF{"Burkina Faso"} + BG{"Bulgaria"} + BI{"Burundi"} BJ{"Binin"} + BL{"St. Barthélemy"} BM{"Bemuda"} + BO{"Bolivia"} + BQ{"Caribbean Netherlands"} BR{"Mba Brazil"} + BS{"Bahamas"} + BV{"Agwaetiti Bouvet"} + BW{"Botswana"} + BY{"Belarus"} + BZ{"Belize"} + CA{"Kanada"} + CC{"Agwaetiti Cocos (Keeling)"} + CD{"Congo - Kinshasa"} + CF{"Central African Republik"} + CG{"Congo"} + CH{"Switzerland"} + CI{"Côte d’Ivoire"} + CK{"Agwaetiti Cook"} + CL{"Chile"} + CM{"Cameroon"} CN{"Mba China"} + CO{"Colombia"} + CP{"Agwaetiti Clipperton"} + CR{"Kosta Rika"} + CU{"Cuba"} + CV{"Cape Verde"} + CW{"Kurakao"} + CX{"Agwaetiti Christmas"} + CZ{"Czechia"} DE{"Mba Germany"} + DG{"Diego Garcia"} + DJ{"Djibouti"} + DK{"Denmark"} + DM{"Dominika"} + DO{"Dominican Republik"} + DZ{"Algeria"} + EA{"Ceuta & Melilla"} + EC{"Ecuador"} + EE{"Estonia"} + EG{"Egypt"} + EH{"Ọdịda Anyanwụ Sahara"} + ER{"Eritrea"} + ES{"Spain"} + ET{"Ethiopia"} + FI{"Finland"} + FJ{"Fiji"} + FK{"Agwaetiti Falkland"} + FM{"Micronesia"} + FO{"Agwaetiti Faroe"} FR{"Mba France"} + GA{"Gabon"} GB{"Mba United Kingdom"} + GD{"Grenada"} + GF{"Frenchi Guiana"} + GG{"Guernsey"} + GH{"Ghana"} + GI{"Gibraltar"} + GL{"Greenland"} + GM{"Gambia"} + GN{"Guinea"} + GP{"Guadeloupe"} + GQ{"Equatorial Guinea"} + GR{"Greece"} + GS{"South Georgia na Agwaetiti South Sandwich"} + GT{"Guatemala"} + GU{"Guam"} + GW{"Guinea-Bissau"} + GY{"Guyana"} + HM{"Agwaetiti Heard na Agwaetiti McDonald"} + HN{"Honduras"} + HR{"Croatia"} HT{"Hati"} + HU{"Hungary"} + IC{"Agwaetiti Kanarị"} + IE{"Ireland"} + IM{"Isle of Man"} IN{"Mba India"} + IO{"British Indian Ocean Territory"} + IS{"Iceland"} IT{"Mba Italy"} + JE{"Jersey"} + JM{"Jamaika"} JP{"Mba Japan"} + KE{"Kenya"} + KI{"Kiribati"} KM{"Comorosu"} + KN{"St. Kitts & Nevis"} + KY{"Agwaetiti Cayman"} + LC{"St. Lucia"} + LI{"Liechtenstein"} + LR{"Liberia"} + LS{"Lesotho"} + LT{"Lithuania"} + LU{"Luxembourg"} + LV{"Latvia"} LY{"Libyia"} + MA{"Morocco"} + MC{"Monaco"} + MD{"Moldova"} + ME{"Montenegro"} + MF{"St. Martin"} + MG{"Madagaskar"} + MH{"Agwaetiti Marshall"} + MK{"North Macedonia"} + ML{"Mali"} + MP{"Agwaetiti Northern Mariana"} + MQ{"Martinique"} + MR{"Mauritania"} + MS{"Montserrat"} + MT{"Malta"} + MU{"Mauritius"} MV{"Maldivesa"} + MW{"Malawi"} + MX{"Mexico"} + MZ{"Mozambik"} + NA{"Namibia"} + NC{"New Caledonia"} + NE{"Niger"} + NF{"Agwaetiti Norfolk"} NG{"Naịjịrịa"} + NI{"Nicaragua"} + NL{"Netherlands"} + NO{"Norway"} + NR{"Nauru"} + NU{"Niue"} + NZ{"New Zealand"} + PA{"Panama"} + PE{"Peru"} + PF{"Frenchi Polynesia"} + PG{"Papua New Guinea"} + PH{"Philippines"} + PL{"Poland"} + PM{"St. Pierre & Miquelon"} + PN{"Agwaetiti Pitcairn"} + PR{"Puerto Rico"} + PT{"Portugal"} + PW{"Palau"} + PY{"Paraguay"} + QO{"Outlying Oceania"} + RE{"Réunion"} + RO{"Romania"} + RS{"Serbia"} RU{"Mba Russia"} + RW{"Rwanda"} + SB{"Agwaetiti Solomon"} + SC{"Seychelles"} + SD{"Sudan"} + SE{"Sweden"} + SG{"Singapore"} + SH{"St. Helena"} + SI{"Slovenia"} + SJ{"Svalbard & Jan Mayen"} + SK{"Slovakia"} + SL{"Sierra Leone"} + SM{"San Marino"} + SN{"Senegal"} + SO{"Somalia"} + SR{"Suriname"} + SS{"South Sudan"} + ST{"São Tomé & Príncipe"} + SV{"El Salvador"} + SX{"Sint Maarten"} + SZ{"Eswatini"} + TA{"Tristan da Cunha"} + TC{"Agwaetiti Turks na Caicos"} + TD{"Chad"} + TF{"Ụmụ ngalaba Frenchi Southern"} + TG{"Togo"} + TH{"Thailand"} + TK{"Tokelau"} + TL{"Timor-Leste"} + TN{"Tunisia"} + TO{"Tonga"} + TT{"Trinidad & Tobago"} + TV{"Tuvalu"} + TZ{"Tanzania"} + UA{"Ukraine"} + UG{"Uganda"} + UM{"Obere Agwaetiti Dị Na Mpụga U.S"} + UN{"Mba Ụwa Jikọrọ Ọnụ"} US{"Mba United States"} + UY{"Uruguay"} + VA{"Vatican City"} + VC{"St. Vincent & Grenadines"} + VE{"Venezuela"} + VG{"Agwaetiti British Virgin"} + VI{"Agwaetiti Virgin nke US"} + VN{"Vietnam"} + VU{"Vanuatu"} + WF{"Wallis & Futuna"} + WS{"Samoa"} + XA{"Pseudo-Accents"} + XB{"Pseudo-Bidi"} + XK{"Kosovo"} + YT{"Mayotte"} + ZA{"South Africa"} + ZM{"Zambia"} + ZW{"Zimbabwe"} ZZ{"Mpaghara Amaghị"} } - Version{"2.1.48.45"} + Countries%short{ + GB{"UK"} + } + Countries%variant{ + CD{"Congo (DRC)"} + CG{"Congo (Republik)"} + CI{"Ivory Coast"} + CZ{"Czech Republik"} + FK{"Agwaetiti Falkland"} + SZ{"Swaziland"} + TL{"East Timor"} + } + Version{"36"} } diff --git a/source/data/region/ii.txt b/source/data/region/ii.txt index 91bf193..0eb066b 100644 --- a/source/data/region/ii.txt +++ b/source/data/region/ii.txt @@ -14,5 +14,5 @@ ii{ US{"ꂰꇩ"} ZZ{"ꃅꄷꅉꀋꐚꌠ"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/is.txt b/source/data/region/is.txt index af06054..70edce8 100644 --- a/source/data/region/is.txt +++ b/source/data/region/is.txt @@ -180,7 +180,7 @@ is{ MC{"Mónakó"} MD{"Moldóva"} ME{"Svartfjallaland"} - MF{"St. Martin"} + MF{"Saint-Martin"} MG{"Madagaskar"} MH{"Marshalleyjar"} MK{"Norður-Makedónía"} @@ -287,6 +287,8 @@ is{ VU{"Vanúatú"} WF{"Wallis- og Fútúnaeyjar"} WS{"Samóa"} + XA{"gervihreimur"} + XB{"gervistaður"} XK{"Kósóvó"} YE{"Jemen"} YT{"Mayotte"} @@ -306,8 +308,11 @@ is{ Countries%variant{ CD{"Kongó (Lýðstjórnarlýðveldið)"} CG{"Kongó (Lýðveldið)"} + CI{"Fílabeinsströndin"} + CZ{"Tékkland"} FK{"Falklandseyjar (Malvinas)"} + SZ{"Svasíland"} TL{"Austur-Tímor"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/it.txt b/source/data/region/it.txt index b904827..3b52a47 100644 --- a/source/data/region/it.txt +++ b/source/data/region/it.txt @@ -287,8 +287,8 @@ it{ VU{"Vanuatu"} WF{"Wallis e Futuna"} WS{"Samoa"} - XA{"pseudo-accenti"} - XB{"pseudo-bidi"} + XA{"Pseudo-accenti"} + XB{"Pseudo-bidi"} XK{"Kosovo"} YE{"Yemen"} YT{"Mayotte"} @@ -312,6 +312,7 @@ it{ CZ{"Repubblica Ceca"} FK{"Isole Falkland (Isole Malvine)"} SZ{"Regno di eSwatini"} + TL{"Timor Est"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/ja.txt b/source/data/region/ja.txt index 2b683cb..7d3a4ce 100644 --- a/source/data/region/ja.txt +++ b/source/data/region/ja.txt @@ -287,6 +287,8 @@ ja{ VU{"バヌアツ"} WF{"ウォリス・フツナ"} WS{"サモア"} + XA{"疑似アクセント"} + XB{"疑似 BIDI"} XK{"コソボ"} YE{"イエメン"} YT{"マヨット"} @@ -312,5 +314,5 @@ ja{ SZ{"スワジランド"} TL{"東チモール"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/jgo.txt b/source/data/region/jgo.txt index c3aa67a..a1f2754 100644 --- a/source/data/region/jgo.txt +++ b/source/data/region/jgo.txt @@ -85,5 +85,5 @@ jgo{ ZW{"Zimbámbwɛ"} ZZ{"ŋgɔŋ yi pɛ́ ká kɛ́ jʉɔ"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/jmc.txt b/source/data/region/jmc.txt index e7c45a7..50b6079 100644 --- a/source/data/region/jmc.txt +++ b/source/data/region/jmc.txt @@ -127,7 +127,6 @@ jmc{ MD{"Moldova"} MG{"Bukini"} MH{"Visiwa vya Marshal"} - MK{"Masedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -227,5 +226,5 @@ jmc{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/jv.txt b/source/data/region/jv.txt index 7064c1e..d104b7a 100644 --- a/source/data/region/jv.txt +++ b/source/data/region/jv.txt @@ -56,6 +56,7 @@ jv{ BH{"Bahrain"} BI{"Burundi"} BJ{"Bénin"} + BL{"Saint Barthélémi"} BM{"Bermuda"} BN{"Brunéi"} BO{"Bolivia"} @@ -107,6 +108,7 @@ jv{ FI{"Finlan"} FJ{"Fiji"} FK{"Kapuloan Falkland"} + FM{"Féderasi Mikronésia"} FO{"Kapuloan Faro"} FR{"Prancis"} GA{"Gabon"} @@ -121,6 +123,8 @@ jv{ GM{"Gambia"} GN{"Guinea"} GP{"Guadélup"} + GQ{"Guinéa Katulistiwa"} + GR{"Grikenlan"} GS{"Georgia Kidul lan Kapuloan Sandwich Kidul"} GT{"Guatémala"} GU{"Guam"} @@ -151,6 +155,7 @@ jv{ KH{"Kamboja"} KI{"Kiribati"} KM{"Komoro"} + KN{"Saint Kits lan Nèvis"} KR{"Koréa Kidul"} KW{"Kuwait"} KY{"Kapuloan Kéman"} @@ -207,6 +212,7 @@ jv{ PH{"Pilipina"} PK{"Pakistan"} PL{"Polen"} + PM{"Saint Pièr lan Mikuélon"} PN{"Kapuloan Pitcairn"} PR{"Puèrto Riko"} PS{"Tlatah Palèstina"} @@ -217,6 +223,7 @@ jv{ QO{"Oseania Paling Njaba"} RE{"Réunion"} RO{"Ruméni"} + RS{"Sèrbi"} RU{"Rusia"} RW{"Rwanda"} SA{"Arab Saudi"} @@ -225,6 +232,7 @@ jv{ SD{"Sudan"} SE{"Swèdhen"} SG{"Singapura"} + SH{"Saint Héléna"} SI{"Slovénia"} SJ{"Svalbard lan Jan Mayen"} SK{"Slowak"} @@ -264,6 +272,7 @@ jv{ UY{"Uruguay"} UZ{"Usbèkistan"} VA{"Kutha Vatikan"} + VC{"Saint Vinsen lan Grénadin"} VE{"Vénésuéla"} VG{"Kapuloan Virgin Britania"} VI{"Kapuloan Virgin Amérika"} @@ -271,6 +280,8 @@ jv{ VU{"Vanuatu"} WF{"Wallis lan Futuna"} WS{"Samoa"} + XA{"Logat Semu"} + XB{"Rong Arah Semu"} XK{"Kosovo"} YE{"Yaman"} YT{"Mayotte"} @@ -282,6 +293,7 @@ jv{ Countries%short{ GB{"KM"} HK{"Hong Kong"} + MO{"Macau"} PS{"Palèstina"} US{"AS"} } @@ -290,7 +302,8 @@ jv{ CG{"Républik Kongo"} CZ{"Républik Céko"} FK{"Kapuloan Falkland (Islas Malvinas)"} + SZ{"(Swasiland)"} TL{"Timor Wétan"} } - Version{"2.1.48.44"} + Version{"36"} } diff --git a/source/data/region/ka.txt b/source/data/region/ka.txt index f9d6351..9b18c30 100644 --- a/source/data/region/ka.txt +++ b/source/data/region/ka.txt @@ -183,7 +183,7 @@ ka{ MF{"სენ-მარტენი"} MG{"მადაგასკარი"} MH{"მარშალის კუნძულები"} - MK{"მაკედონია"} + MK{"ჩრდილოეთ მაკედონია"} ML{"მალი"} MM{"მიანმარი (ბირმა)"} MN{"მონღოლეთი"} @@ -287,6 +287,8 @@ ka{ VU{"ვანუატუ"} WF{"უოლისი და ფუტუნა"} WS{"სამოა"} + XA{"ფსევდო-აქცენტები"} + XB{"ფსევდო-ორმიმართულებიანი"} XK{"კოსოვო"} YE{"იემენი"} YT{"მაიოტა"} @@ -309,9 +311,8 @@ ka{ CI{"სპილოს ძვლის სანაპირო"} CZ{"ჩეხეთის რესპუბლიკა"} FK{"ფოლკლენდის კუნძულები (მალვინის კუნძულები)"} - MK{"მაკედონია (ყოფილი იუგოსლავიის რესპუბლიკა მაკედონია)"} SZ{"სვაზილანდი"} TL{"აღმოსავლეთ ტიმორი"} } - Version{"2.1.48.17"} + Version{"36"} } diff --git a/source/data/region/kab.txt b/source/data/region/kab.txt index fda7e1d..a53314f 100644 --- a/source/data/region/kab.txt +++ b/source/data/region/kab.txt @@ -127,7 +127,6 @@ kab{ MD{"Muldabi"} MG{"Madaɣecqer"} MH{"Tigzirin n Marcal"} - MK{"Masidwan"} ML{"Mali"} MM{"Myanmar"} MN{"Mungulya"} @@ -227,5 +226,5 @@ kab{ ZM{"Zambya"} ZW{"Zimbabwi"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/kam.txt b/source/data/region/kam.txt index 424fffe..98ab5f7 100644 --- a/source/data/region/kam.txt +++ b/source/data/region/kam.txt @@ -127,7 +127,6 @@ kam{ MD{"Moldova"} MG{"Bukini"} MH{"Visiwa vya Marshal"} - MK{"Masedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -227,5 +226,5 @@ kam{ ZM{"Nzambia"} ZW{"Nzimbambwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/kde.txt b/source/data/region/kde.txt index 247c389..3d466ef 100644 --- a/source/data/region/kde.txt +++ b/source/data/region/kde.txt @@ -127,7 +127,6 @@ kde{ MD{"Moldova"} MG{"Bukini"} MH{"Chisiwa cha Malushal"} - MK{"Masedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -227,5 +226,5 @@ kde{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/kea.txt b/source/data/region/kea.txt index f3b7f0c..542afa2 100644 --- a/source/data/region/kea.txt +++ b/source/data/region/kea.txt @@ -22,7 +22,7 @@ kea{ 039{"Europa di Sul"} 053{"Australázia"} 054{"Melanézia"} - 057{"Rejiãu di Mikronézia"} + 057{"Rejion di Mikronézia"} 061{"Polinézia"} 142{"Ázia"} 143{"Ázia Sentral"} @@ -31,8 +31,9 @@ kea{ 151{"Europa Oriental"} 154{"Europa di Norti"} 155{"Europa Osidental"} + 202{"Áfrika Subisariana"} 419{"Merka Latinu"} - AC{"Ilha di Asensãu"} + AC{"Ilha di Asenson"} AD{"Andora"} AE{"Emiradus Árabi Unidu"} AF{"Afeganistãu"} @@ -48,7 +49,7 @@ kea{ AU{"Austrália"} AW{"Aruba"} AX{"Ilhas Åland"} - AZ{"Azerbaijãu"} + AZ{"Azerbaidjan"} BA{"Bósnia i Erzegovina"} BB{"Barbadus"} BD{"Bangladexi"} @@ -58,15 +59,15 @@ kea{ BH{"Barain"} BI{"Burundi"} BJ{"Benin"} - BL{"Sãu Bartolomeu"} + BL{"San Bartolomeu"} BM{"Bermudas"} BN{"Brunei"} BO{"Bolívia"} BQ{"Karaibas Olandezas"} BR{"Brazil"} BS{"Baamas"} - BT{"Butãu"} - BV{"Ilha Buve"} + BT{"Butan"} + BV{"Ilha Buvê"} BW{"Botsuana"} BY{"Belarus"} BZ{"Belizi"} @@ -79,7 +80,7 @@ kea{ CI{"Kosta di Marfin"} CK{"Ilhas Kuk"} CL{"Xili"} - CM{"Kamarõis"} + CM{"Kamarons"} CN{"Xina"} CO{"Kolômbia"} CP{"Ilha Kliperton"} @@ -105,14 +106,15 @@ kea{ ER{"Iritreia"} ES{"Spanha"} ET{"Etiópia"} - EU{"Uniãu Europeia"} + EU{"Union Europeia"} + EZ{"Eurozona"} FI{"Finlándia"} FJ{"Fidji"} FK{"Ilhas Malvinas"} FM{"Mikronézia"} FO{"Ilhas Faroe"} FR{"Fransa"} - GA{"Gabãu"} + GA{"Gabon"} GB{"Reinu Unidu"} GD{"Granada"} GE{"Jiórjia"} @@ -131,7 +133,7 @@ kea{ GU{"Guam"} GW{"Gine-Bisau"} GY{"Giana"} - HK{"Rejiãu Administrativu Spesial di Hong Kong"} + HK{"Hong Kong, Rejion Administrativu Spesial di Xina"} HM{"Ilhas Heard i McDonald"} HN{"Onduras"} HR{"Kroásia"} @@ -151,18 +153,18 @@ kea{ JE{"Jersi"} JM{"Jamaika"} JO{"Jordánia"} - JP{"Japãu"} + JP{"Japon"} KE{"Kénia"} - KG{"Kirgistãu"} + KG{"Kirgistan"} KH{"Kambodja"} KI{"Kiribati"} KM{"Kamoris"} - KN{"Sãu Kristovãu i Nevis"} + KN{"San Kristovan i Nevis"} KP{"Koreia di Norti"} KR{"Koreia di Sul"} KW{"Kueiti"} - KY{"Ilhas Kaimãu"} - KZ{"Kazakistãu"} + KY{"Ilhas Kaimon"} + KZ{"Kazakistan"} LA{"Laus"} LB{"Líbanu"} LC{"Santa Lúsia"} @@ -178,14 +180,14 @@ kea{ MC{"Mónaku"} MD{"Moldávia"} ME{"Montenegru"} - MF{"Sãu Martinhu di Fransa"} + MF{"San Martinhu (Fransa)"} MG{"Madagaskar"} MH{"Ilhas Marxal"} - MK{"Masidónia"} + MK{"Masidónia di Norti"} ML{"Mali"} MM{"Mianmar (Birmánia)"} MN{"Mongólia"} - MO{"Rejiãu Administrativu Spesial di Makau"} + MO{"Makau, Rejion Administrativu Spesial di Xina"} MP{"Ilhas Marianas di Norti"} MQ{"Martinika"} MR{"Mauritánia"} @@ -215,18 +217,18 @@ kea{ PF{"Polinézia Franseza"} PG{"Papua-Nova Gine"} PH{"Filipinas"} - PK{"Pakistãu"} + PK{"Pakistan"} PL{"Pulónia"} PM{"San Piere i Mikelon"} - PN{"Pirkairn"} + PN{"Ilhas Pitkairn"} PR{"Portu Riku"} - PS{"Palistina"} + PS{"Tiritóriu palistinianu"} PT{"Purtugal"} PW{"Palau"} PY{"Paraguai"} QA{"Katar"} QO{"Ilhas di Oseania"} - RE{"Runiãu"} + RE{"Runion"} RO{"Ruménia"} RS{"Sérvia"} RU{"Rúsia"} @@ -234,7 +236,7 @@ kea{ SA{"Arábia Saudita"} SB{"Ilhas Salumãu"} SC{"Seixelis"} - SD{"Sudãu"} + SD{"Sudon"} SE{"Suésia"} SG{"Singapura"} SH{"Santa Ilena"} @@ -246,22 +248,22 @@ kea{ SN{"Senegal"} SO{"Sumália"} SR{"Surinami"} - SS{"Sudãu di Sul"} - ST{"Sãu Tume i Prínsipi"} + SS{"Sudon di Sul"} + ST{"San Tume i Prínsipi"} SV{"El Salvador"} - SX{"Sãu Martinhu di Olanda"} + SX{"San Martinhu (Olanda)"} SY{"Síria"} - SZ{"Suazilándia"} + SZ{"Eswatini"} TA{"Tristan da Kunha"} TC{"Ilhas Turkas i Kaikus"} TD{"Txadi"} TF{"Terras Franses di Sul"} TG{"Togu"} TH{"Tailándia"} - TJ{"Tadjikistãu"} + TJ{"Tadjikistan"} TK{"Tokelau"} TL{"Timor Lesti"} - TM{"Turkumenistãu"} + TM{"Turkumenistan"} TN{"Tunízia"} TO{"Tonga"} TR{"Turkia"} @@ -272,11 +274,12 @@ kea{ UA{"Ukránia"} UG{"Uganda"} UM{"Ilhas Minoris Distantis de Stadus Unidus"} + UN{"Nasons Unidas"} US{"Stadus Unidos di Merka"} UY{"Uruguai"} - UZ{"Uzbekistãu"} + UZ{"Uzbekistan"} VA{"Vatikanu"} - VC{"Sãu Bisenti i Granadinas"} + VC{"San Bisenti i Granadinas"} VE{"Vinizuela"} VG{"Ilhas Virjens Británikas"} VI{"Ilhas Virjens Merkanas"} @@ -284,18 +287,21 @@ kea{ VU{"Vanuatu"} WF{"Ualis i Futuna"} WS{"Samoa"} + XA{"Pseudo-sotakis"} + XB{"Pseudo-bidiresional"} XK{"Kozovu"} YE{"Iémen"} YT{"Maiote"} ZA{"Áfrika di Sul"} ZM{"Zámbia"} ZW{"Zimbábui"} - ZZ{"Rejiãu Diskonxedu"} + ZZ{"Rejion Diskonxedu"} } Countries%short{ GB{"R.U."} HK{"Hong Kong"} MO{"Makau"} + PS{"Palistina"} US{"S.U."} } Countries%variant{ @@ -304,7 +310,8 @@ kea{ CI{"Kosta di Marfin (Côte d’Ivoire)"} CZ{"Repúblika Txeka"} FK{"Ilhas Falkland (Ilhas Malvinas)"} - MK{"Masidónia (FYROM)"} + SZ{"Suazilándia"} + TL{"Timor-Leste"} } - Version{"2.1.48.9"} + Version{"36"} } diff --git a/source/data/region/khq.txt b/source/data/region/khq.txt index 57d16b8..90fc745 100644 --- a/source/data/region/khq.txt +++ b/source/data/region/khq.txt @@ -127,7 +127,6 @@ khq{ MD{"Moldovi"} MG{"Madagascar"} MH{"Maršal gungey"} - MK{"Maacedooni"} ML{"Maali"} MM{"Maynamar"} MN{"Mongooli"} @@ -227,5 +226,5 @@ khq{ ZM{"Zambi"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ki.txt b/source/data/region/ki.txt index 422bf79..768737f 100644 --- a/source/data/region/ki.txt +++ b/source/data/region/ki.txt @@ -127,7 +127,6 @@ ki{ MD{"Moldova"} MG{"Bukini"} MH{"Visiwa vya Marshal"} - MK{"Masedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -227,5 +226,5 @@ ki{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/kk.txt b/source/data/region/kk.txt index 6420839..0f98139 100644 --- a/source/data/region/kk.txt +++ b/source/data/region/kk.txt @@ -308,9 +308,11 @@ kk{ Countries%variant{ CD{"Конго Демократиялық Республикасы"} CG{"Конго Республикасы"} + CI{"Кот-д’Ивуар"} CZ{"Чех Республикасы"} FK{"Фолкленд аралдары (Мальвин аралдары)"} + SZ{"Свазиленд"} TL{"Шығыс Тимор"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/kkj.txt b/source/data/region/kkj.txt index ce97110..7c736b8 100644 --- a/source/data/region/kkj.txt +++ b/source/data/region/kkj.txt @@ -4,5 +4,5 @@ kkj{ Countries{ CM{"Kamɛrun"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/kl.txt b/source/data/region/kl.txt index b8f8b47..32f4c7a 100644 --- a/source/data/region/kl.txt +++ b/source/data/region/kl.txt @@ -4,5 +4,5 @@ kl{ Countries{ GL{"Kalaallit Nunaat"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/kln.txt b/source/data/region/kln.txt index 5a71936..cc25da5 100644 --- a/source/data/region/kln.txt +++ b/source/data/region/kln.txt @@ -127,7 +127,6 @@ kln{ MD{"Emetab Moldova"} MG{"Emetab Madagascar"} MH{"Ikwembeiyotab Marshall"} - MK{"Emetab Macedonia"} ML{"Emetab Mali"} MM{"Emetab Myanmar"} MN{"Emetab Mongolia"} @@ -227,5 +226,5 @@ kln{ ZM{"Emetab Zambia"} ZW{"Emetab Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/km.txt b/source/data/region/km.txt index 527aab7..e0286ef 100644 --- a/source/data/region/km.txt +++ b/source/data/region/km.txt @@ -262,7 +262,7 @@ km{ TH{"ថៃ"} TJ{"តាហ្ស៊ីគីស្ថាន"} TK{"តូខេឡៅ"} - TL{"ទីម័រលីស"} + TL{"ទីម័រលេស្តេ"} TM{"តួកម៉េនីស្ថាន"} TN{"ទុយនីស៊ី"} TO{"តុងហ្គា"} @@ -287,6 +287,8 @@ km{ VU{"វ៉ានូទូ"} WF{"វ៉ាលីស និង​ហ្វូទូណា"} WS{"សាម័រ"} + XA{"Pseudo-Accents"} + XB{"Pseudo-Bidi"} XK{"កូសូវ៉ូ"} YE{"យេម៉ែន"} YT{"ម៉ាយុត"} @@ -300,7 +302,7 @@ km{ HK{"ហុងកុង តំបន់រដ្ឋបាលពិសេសចិន"} MO{"ម៉ាកាវ"} PS{"ប៉ាលេស្ទីន"} - UN{"អង្គការ"} + UN{"UN"} US{"ស.រ.អ"} } Countries%variant{ @@ -308,8 +310,9 @@ km{ CG{"កុងហ្គោ (សធារណរដ្ឋ)"} CI{"អាយវ៉ូរី ខូសថ៍"} CZ{"សាធារណរដ្ឋឆេក"} - FK{"កោះ​ហ្វក់ឡែន (Islas Malvinas)"} + FK{"កោះ​ហ្វក់ឡែន (ម៉ាវីណាស)"} + SZ{"ស្វាស៊ីឡង់"} TL{"ទីម័រ​ខាង​កើត"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/kn.txt b/source/data/region/kn.txt index b78e049..5a4e2ac 100644 --- a/source/data/region/kn.txt +++ b/source/data/region/kn.txt @@ -115,7 +115,7 @@ kn{ FO{"ಫರೋ ದ್ವೀಪಗಳು"} FR{"ಫ್ರಾನ್ಸ್"} GA{"ಗೆಬೊನ್"} - GB{"ಬ್ರಿಟನ್/ಇಂಗ್ಲೆಂಡ್"} + GB{"ಯುನೈಟೆಡ್ ಕಿಂಗ್‌ಡಮ್"} GD{"ಗ್ರೆನೆಡಾ"} GE{"ಜಾರ್ಜಿಯಾ"} GF{"ಫ್ರೆಂಚ್ ಗಯಾನಾ"} @@ -183,7 +183,7 @@ kn{ MF{"ಸೇಂಟ್ ಮಾರ್ಟಿನ್"} MG{"ಮಡಗಾಸ್ಕರ್"} MH{"ಮಾರ್ಷಲ್ ದ್ವೀಪಗಳು"} - MK{"ಮ್ಯಾಸಿಡೋನಿಯಾ"} + MK{"ಉತ್ತರ ಮ್ಯಾಸಿಡೋನಿಯಾ"} ML{"ಮಾಲಿ"} MM{"ಮಯನ್ಮಾರ್ (ಬರ್ಮಾ)"} MN{"ಮಂಗೋಲಿಯಾ"} @@ -253,7 +253,7 @@ kn{ SV{"ಎಲ್ ಸಾಲ್ವೇಡಾರ್"} SX{"ಸಿಂಟ್ ಮಾರ್ಟೆನ್"} SY{"ಸಿರಿಯಾ"} - SZ{"ಸ್ವಾಜಿಲ್ಯಾಂಡ್"} + SZ{"ಸ್ವಾತಿನಿ"} TA{"ಟ್ರಿಸ್ತನ್ ಡಾ ಕುನ್ಹಾ"} TC{"ಟರ್ಕ್ಸ್ ಮತ್ತು ಕೈಕೋಸ್ ದ್ವೀಪಗಳು"} TD{"ಚಾದ್"} @@ -287,6 +287,8 @@ kn{ VU{"ವನೌಟು"} WF{"ವಾಲಿಸ್ ಮತ್ತು ಫುಟುನಾ"} WS{"ಸಮೋವಾ"} + XA{"ಸ್ಯುಡೊ ಉಚ್ಛಾರಣೆಗಳು"} + XB{"ಸ್ಯುಡೊ-ಬಿಡಿ"} XK{"ಕೊಸೊವೊ"} YE{"ಯೆಮನ್"} YT{"ಮಯೊಟ್ಟೆ"} @@ -309,9 +311,8 @@ kn{ CI{"ಐವರಿ ಕೋಸ್ಟ್"} CZ{"ಜೆಕ್ ಗಣರಾಜ್ಯ"} FK{"ಫಾಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳು (ಇಸ್ಲಾಸ್ ಮಾಲ್ವಿನಸ್)"} - MK{"ಮ್ಯಾಸಿಡೋನಿಯಾ (FYROM)"} SZ{"ಸ್ವಾಜಿಲ್ಯಾಂಡ್‌"} TL{"ಪೂರ್ವ ಟಿಮೋರ್"} } - Version{"2.1.48.17"} + Version{"36"} } diff --git a/source/data/region/ko.txt b/source/data/region/ko.txt index 6563c8d..7824318 100644 --- a/source/data/region/ko.txt +++ b/source/data/region/ko.txt @@ -314,5 +314,5 @@ ko{ SZ{"스와질란드"} TL{"티모르레스테"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/ko_KP.txt b/source/data/region/ko_KP.txt index c872ba9..8394839 100644 --- a/source/data/region/ko_KP.txt +++ b/source/data/region/ko_KP.txt @@ -4,5 +4,5 @@ ko_KP{ Countries{ KP{"조선민주주의인민공화국"} } - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/kok.txt b/source/data/region/kok.txt index b5e4f5e..e5f5c61 100644 --- a/source/data/region/kok.txt +++ b/source/data/region/kok.txt @@ -75,7 +75,7 @@ kok{ CC{"कोकोस (कीलिंग) आयलँड"} CD{"कोंगो - किंशासा"} CF{"मध्य अफ्रीकी लोकसत्तकराज्य"} - CG{"कोंगो - ब्राझाविला"} + CG{"काँगो - ब्राझाविला"} CH{"स्विट्ज़रलैंड"} CI{"कोत द’ईवोआर"} CK{"कुक आयलँड्स"} @@ -249,11 +249,11 @@ kok{ SO{"सोमालिया"} SR{"सुरीनाम"} SS{"दक्षिण सुडान"} - ST{"सावो टोमे आनी प्रिंसिपल"} + ST{"साओ टोम आनी प्रिन्सिप"} SV{"एल साल्वाडोर"} SX{"सिंट मार्टेन"} SY{"सिरिया"} - SZ{"स्वाजीलँड"} + SZ{"इस्वातिनी"} TA{"त्रिस्तान दा कुन्हा"} TC{"तुर्क्स आनी कॅकोज आयलँड्स"} TD{"चाड"} @@ -287,6 +287,8 @@ kok{ VU{"वनातू"} WF{"वालिस आनी फ्यूचूना"} WS{"सामोआ"} + XA{"स्युडो-ऍक्सेंट"} + XB{"स्युडो-बिडी"} XK{"कोसोवो"} YE{"येमेन"} YT{"मेयोट"} @@ -303,12 +305,13 @@ kok{ US{"युएस"} } Countries%variant{ - CD{"कोंगो (डीआरसी)"} + CD{"काँगो (डीआरसी)"} CG{"कोंगो (प्रजासत्ताक)"} CI{"आयवोरी कोस्ट"} CZ{"चेक लोकसत्ताक"} FK{"फ़ॉकलैंड आइलैंड्स (इलास मालविनास)"} + SZ{"स्वाझिलँड"} TL{"ईस्ट तिमूर"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/ks.txt b/source/data/region/ks.txt index 6b7bec8..a267acb 100644 --- a/source/data/region/ks.txt +++ b/source/data/region/ks.txt @@ -171,7 +171,6 @@ ks{ MF{"سینٹ مارٹِن"} MG{"میڑاگاسکار"} MH{"مارشَل جٔزیٖرٕ"} - MK{"مؠسوڑونِیا"} ML{"مالی"} MM{"مَیَنما بٔرما"} MN{"مَنگولِیا"} @@ -278,5 +277,5 @@ ks{ ZW{"زِمبابے"} ZZ{"نامعلوٗم تہٕ نالَگہار عَلاقہٕ"} } - Version{"2.1.47.83"} + Version{"36"} } diff --git a/source/data/region/ksb.txt b/source/data/region/ksb.txt index b2367cd..f860a7a 100644 --- a/source/data/region/ksb.txt +++ b/source/data/region/ksb.txt @@ -126,7 +126,6 @@ ksb{ MD{"Moldova"} MG{"Bukini"} MH{"Visiwa vya Mashal"} - MK{"Masedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -226,5 +225,5 @@ ksb{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ksf.txt b/source/data/region/ksf.txt index e873ca2..8972e95 100644 --- a/source/data/region/ksf.txt +++ b/source/data/region/ksf.txt @@ -127,7 +127,6 @@ ksf{ MD{"mɔldaví"} MG{"madagaska"} MH{"zǝ i marcál"} - MK{"másǝdwán"} ML{"mali"} MM{"myanmár"} MN{"mɔŋolí"} @@ -227,5 +226,5 @@ ksf{ ZM{"zambí"} ZW{"zimbabwɛ́"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ksh.txt b/source/data/region/ksh.txt index 9a81b8a..e944d90 100644 --- a/source/data/region/ksh.txt +++ b/source/data/region/ksh.txt @@ -181,7 +181,6 @@ ksh{ MF{"de Zint-Määtes-Ensel"} MG{"Maddajaska"} MH{"de Machschall-Enselle"} - MK{"Mazedoonije"} ML{"Maali"} MM{"Birma"} MN{"Mongjolei"} @@ -303,7 +302,6 @@ ksh{ CG{"de Republik Konggo"} CI{"de Älfebeijnköß"} FK{"de malleviinesche Enselle"} - MK{"de vörmaals ens jugoßlaawesch jewääse Republik Mazedoonije"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ku.txt b/source/data/region/ku.txt index 36255f1..43db7fe 100644 --- a/source/data/region/ku.txt +++ b/source/data/region/ku.txt @@ -263,8 +263,7 @@ ku{ CG{"Kongo (Komar)"} CZ{"Komara Çekî"} FK{"Giravên Falkland"} - MK{"MK"} TL{"Tîmora Rojhilat"} } - Version{"2.1.47.83"} + Version{"36"} } diff --git a/source/data/region/kw.txt b/source/data/region/kw.txt index f7e7fd0..eb33e55 100644 --- a/source/data/region/kw.txt +++ b/source/data/region/kw.txt @@ -4,5 +4,5 @@ kw{ Countries{ GB{"Rywvaneth Unys"} } - Version{"2.1.48.56"} + Version{"36"} } diff --git a/source/data/region/ky.txt b/source/data/region/ky.txt index b19774a..ad89a5a 100644 --- a/source/data/region/ky.txt +++ b/source/data/region/ky.txt @@ -287,6 +287,8 @@ ky{ VU{"Вануату"} WF{"Уоллис жана Футуна"} WS{"Самоа"} + XA{"Жасалма- Акцент"} + XB{"Жасалма - эки тараптуу"} XK{"Косово"} YE{"Йемен"} YT{"Майотта"} @@ -308,8 +310,7 @@ ky{ CI{"Пил сөөктүү жээк"} CZ{"Чех Республикасы"} FK{"Фолкленд (Мальвина) аралдары"} - SZ{"SZ"} TL{"Чыгыш Тимор"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/lag.txt b/source/data/region/lag.txt index 6e35a6c..dd098d2 100644 --- a/source/data/region/lag.txt +++ b/source/data/region/lag.txt @@ -127,7 +127,6 @@ lag{ MD{"Molidóova"} MG{"Bukíini"} MH{"Visíiwa vya Marisháali"} - MK{"Masedónia"} ML{"Máali"} MM{"Miáama"} MN{"Mongólia"} @@ -227,5 +226,5 @@ lag{ ZM{"Sámbia"} ZW{"Simbáabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/lb.txt b/source/data/region/lb.txt index ed6077d..a51354e 100644 --- a/source/data/region/lb.txt +++ b/source/data/region/lb.txt @@ -304,5 +304,5 @@ lb{ CG{"Kongo (Republik)"} CI{"Elfebeeküst"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/lg.txt b/source/data/region/lg.txt index 0f549bb..9a6ddb5 100644 --- a/source/data/region/lg.txt +++ b/source/data/region/lg.txt @@ -127,7 +127,6 @@ lg{ MD{"Molodova"} MG{"Madagasika"} MH{"Bizinga bya Mariso"} - MK{"Masedoniya"} ML{"Mali"} MM{"Myanima"} MN{"Mongoliya"} @@ -227,5 +226,5 @@ lg{ ZM{"Zambya"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/lkt.txt b/source/data/region/lkt.txt index d69dc62..c728db8 100644 --- a/source/data/region/lkt.txt +++ b/source/data/region/lkt.txt @@ -15,5 +15,5 @@ lkt{ MX{"Spayóla Makȟóčhe"} US{"Mílahaŋska Tȟamákȟočhe"} } - Version{"2.1.48.22"} + Version{"36"} } diff --git a/source/data/region/ln.txt b/source/data/region/ln.txt index 658a590..b3b1402 100644 --- a/source/data/region/ln.txt +++ b/source/data/region/ln.txt @@ -132,7 +132,6 @@ ln{ ME{"Monténégro"} MG{"Madagasikari"} MH{"Bisanga bya Marishalɛ"} - MK{"Masedwanɛ"} ML{"Malí"} MM{"Birmanie"} MN{"Mongolí"} @@ -237,5 +236,5 @@ ln{ Countries%variant{ CZ{"Repibiki Tsekɛ"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/lo.txt b/source/data/region/lo.txt index 76d9cb2..f07146b 100644 --- a/source/data/region/lo.txt +++ b/source/data/region/lo.txt @@ -98,7 +98,7 @@ lo{ DM{"ໂດມີນິຄາ"} DO{"ສາທາລະນະລັດ ໂດມິນິກັນ"} DZ{"ອັລຈິເຣຍ"} - EA{"ເຊວຕາ ແລະເມລິນລາ"} + EA{"ເຊວຕາ & ເມລິນລາ"} EC{"ເອກວາດໍ"} EE{"ເອສໂຕເນຍ"} EG{"ອີຢິບ"} @@ -183,7 +183,7 @@ lo{ MF{"ເຊນ ມາທິນ"} MG{"ມາດາກາສະກາ"} MH{"ຫມູ່ເກາະມາແຊວ"} - MK{"ແມຊິໂດເນຍ"} + MK{"ແມຊິໂດເນຍເໜືອ"} ML{"ມາລີ"} MM{"ມຽນມາ (ເບີມາ)"} MN{"ມອງໂກເລຍ"} @@ -309,9 +309,8 @@ lo{ CI{"ໄອໂວຣີ ໂຄທ"} CZ{"ສາທາລະນະລັດເຊັກ"} FK{"ໝູ່ເກາະຟອກແລນ (ອິສລາສ ມາວິນນາສ)"} - MK{"ແມຊິໂດເນຍ (FYROM)"} SZ{"ສະ​ວາ​ຊິ​ແລນ"} TL{"ທິມໍ ຕາເວັນອອກ"} } - Version{"2.1.48.17"} + Version{"36"} } diff --git a/source/data/region/lrc.txt b/source/data/region/lrc.txt index 1b19ada..3029ac0 100644 --- a/source/data/region/lrc.txt +++ b/source/data/region/lrc.txt @@ -26,5 +26,5 @@ lrc{ US{"ڤولاتیا یأکاگئرتە"} ZZ{"راساگە نادیار"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/lt.txt b/source/data/region/lt.txt index a529cb7..e049c9e 100644 --- a/source/data/region/lt.txt +++ b/source/data/region/lt.txt @@ -287,8 +287,6 @@ lt{ VU{"Vanuatu"} WF{"Volisas ir Futūna"} WS{"Samoa"} - XA{"XA"} - XB{"XB"} XK{"Kosovas"} YE{"Jemenas"} YT{"Majotas"} @@ -311,7 +309,7 @@ lt{ CI{"Dramblio Kaulo Kranto Respublika"} CZ{"Čekijos Respublika"} FK{"Folklando (Malvinų) Salos"} - TL{"TL"} + SZ{"Svazilandas"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/lu.txt b/source/data/region/lu.txt index ea98238..47e5071 100644 --- a/source/data/region/lu.txt +++ b/source/data/region/lu.txt @@ -127,7 +127,6 @@ lu{ MD{"Molidavi"} MG{"Madagasikari"} MH{"Lutanda lua Marishale"} - MK{"Masedwane"} ML{"Mali"} MM{"Myamare"} MN{"Mongoli"} @@ -227,5 +226,5 @@ lu{ ZM{"Zambi"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/luo.txt b/source/data/region/luo.txt index a17c9ef..b96bfec 100644 --- a/source/data/region/luo.txt +++ b/source/data/region/luo.txt @@ -127,7 +127,6 @@ luo{ MD{"Moldova"} MG{"Madagascar"} MH{"Chuia mar Marshall"} - MK{"Macedonia"} ML{"Mali"} MM{"Myanmar"} MN{"Mongolia"} @@ -227,5 +226,5 @@ luo{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/luy.txt b/source/data/region/luy.txt index 21be19c..fad4eef 100644 --- a/source/data/region/luy.txt +++ b/source/data/region/luy.txt @@ -127,7 +127,6 @@ luy{ MD{"Moldova"} MG{"Bukini"} MH{"Visiwa vya Marshal"} - MK{"Masedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -227,5 +226,5 @@ luy{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/lv.txt b/source/data/region/lv.txt index 38caded..90584d5 100644 --- a/source/data/region/lv.txt +++ b/source/data/region/lv.txt @@ -187,7 +187,7 @@ lv{ ML{"Mali"} MM{"Mjanma (Birma)"} MN{"Mongolija"} - MO{"Ķīnas īpašās pārvaldes apgabals Makao"} + MO{"ĶTR īpašais administratīvais reģions Makao"} MP{"Ziemeļu Marianas salas"} MQ{"Martinika"} MR{"Mauritānija"} @@ -253,7 +253,7 @@ lv{ SV{"Salvadora"} SX{"Sintmārtena"} SY{"Sīrija"} - SZ{"Svazilenda"} + SZ{"Svatini"} TA{"Tristana da Kuņas salas"} TC{"Tērksas un Kaikosas salas"} TD{"Čada"} @@ -288,7 +288,7 @@ lv{ WF{"Volisa un Futunas salas"} WS{"Samoa"} XA{"pseidoakcenti"} - XB{"pseido-Bidi"} + XB{"pseidodivvirzienu"} XK{"Kosova"} YE{"Jemena"} YT{"Majota"} @@ -311,6 +311,8 @@ lv{ CI{"Ziloņkaula krasts"} CZ{"Čehijas Republika"} FK{"Folklenda (Malvinu) salas"} + SZ{"Svazilenda"} + TL{"Austrumtimora"} } - Version{"2.1.48.43"} + Version{"36"} } diff --git a/source/data/region/mas.txt b/source/data/region/mas.txt index e091140..42883ab 100644 --- a/source/data/region/mas.txt +++ b/source/data/region/mas.txt @@ -127,7 +127,6 @@ mas{ MD{"Moldova"} MG{"Bukini"} MH{"Visiwa vya Marshal"} - MK{"Masedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -227,5 +226,5 @@ mas{ ZM{"Sambia"} ZW{"Simbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/mer.txt b/source/data/region/mer.txt index d3e5bc6..2b5f586 100644 --- a/source/data/region/mer.txt +++ b/source/data/region/mer.txt @@ -127,7 +127,6 @@ mer{ MD{"Moldova"} MG{"Madagasika"} MH{"Aĩrandi cia Marshal"} - MK{"Macedonia"} ML{"Mali"} MM{"Myanima"} MN{"Mongolia"} @@ -227,5 +226,5 @@ mer{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/mfe.txt b/source/data/region/mfe.txt index a73b6d1..3a070a9 100644 --- a/source/data/region/mfe.txt +++ b/source/data/region/mfe.txt @@ -127,7 +127,6 @@ mfe{ MD{"Moldavi"} MG{"Madagaskar"} MH{"Zil Marshall"} - MK{"Masedwann"} ML{"Mali"} MM{"Myanmar"} MN{"Mongoli"} @@ -227,5 +226,5 @@ mfe{ ZM{"Zambi"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/mg.txt b/source/data/region/mg.txt index 2dfafeb..5b92309 100644 --- a/source/data/region/mg.txt +++ b/source/data/region/mg.txt @@ -127,7 +127,6 @@ mg{ MD{"Môldavia"} MG{"Madagasikara"} MH{"Nosy Marshall"} - MK{"Makedonia"} ML{"Mali"} MM{"Myanmar"} MN{"Môngôlia"} @@ -227,5 +226,5 @@ mg{ ZM{"Zambia"} ZW{"Zimbaboe"} } - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/region/mgh.txt b/source/data/region/mgh.txt index 29d4491..4b4a152 100644 --- a/source/data/region/mgh.txt +++ b/source/data/region/mgh.txt @@ -76,7 +76,6 @@ mgh{ LY{"Ulibya"} ME{"Umantegro"} MG{"Ubukini"} - MK{"Umasedonia"} MW{"Umalawi"} MZ{"Umozambiki"} NE{"Unijeri"} @@ -140,5 +139,5 @@ mgh{ ZM{"Uzambia"} ZW{"Uzimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/mgo.txt b/source/data/region/mgo.txt index fb3e87f..fd26e6e 100644 --- a/source/data/region/mgo.txt +++ b/source/data/region/mgo.txt @@ -5,5 +5,5 @@ mgo{ CM{"Kamalun"} ZZ{"aba aben tisɔ̀"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/mi.txt b/source/data/region/mi.txt index d5be867..9eb3e03 100644 --- a/source/data/region/mi.txt +++ b/source/data/region/mi.txt @@ -16,5 +16,5 @@ mi{ US{"Hononga o Amerika"} ZZ{"Rohe Tē Mōhiotia"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/mk.txt b/source/data/region/mk.txt index 0211d85..d5bad7c 100644 --- a/source/data/region/mk.txt +++ b/source/data/region/mk.txt @@ -311,7 +311,8 @@ mk{ CI{"Брег на Слоновата Коска"} CZ{"Република Чешка"} FK{"Фолкландски Острови (Малвински Острови)"} + SZ{"Свазиленд"} TL{"Источен Тимор"} } - Version{"2.1.48.27"} + Version{"36"} } diff --git a/source/data/region/ml.txt b/source/data/region/ml.txt index 94b0bf2..ccb2863 100644 --- a/source/data/region/ml.txt +++ b/source/data/region/ml.txt @@ -219,7 +219,7 @@ ml{ PH{"ഫിലിപ്പീൻസ്"} PK{"പാക്കിസ്ഥാൻ"} PL{"പോളണ്ട്"} - PM{"സെന്റ് പിയറിയും മിക്കലണും"} + PM{"സെന്റ് പിയറി ആൻഡ് മിക്വലൻ"} PN{"പിറ്റ്‌കെയ്‌ൻ ദ്വീപുകൾ"} PR{"പോർട്ടോ റിക്കോ"} PS{"പാലസ്‌തീൻ പ്രദേശങ്ങൾ"} @@ -254,7 +254,7 @@ ml{ SX{"സിന്റ് മാർട്ടെൻ"} SY{"സിറിയ"} SZ{"സ്വാസിലാന്റ്"} - TA{"ട്രസ്റ്റൻ ഡ കൂന"} + TA{"ട്രിസ്റ്റൻ ഡ കൂന"} TC{"ടർക്ക്‌സും കെയ്‌ക്കോ ദ്വീപുകളും"} TD{"ഛാഡ്"} TF{"ഫ്രഞ്ച് ദക്ഷിണ ഭൂപ്രദേശം"} @@ -287,6 +287,7 @@ ml{ VU{"വന്വാതു"} WF{"വാലിസ് ആന്റ് ഫ്യൂച്യുന"} WS{"സമോവ"} + XA{"കൃത്രിമ ഉച്ചാരണം"} XK{"കൊസോവൊ"} YE{"യെമൻ"} YT{"മയോട്ടി"} @@ -312,5 +313,5 @@ ml{ SZ{"സ്വിറ്റ്സർലൻഡ്"} TL{"കിഴക്കൻ തിമോർ"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/mn.txt b/source/data/region/mn.txt index dc7a06d..849e3c5 100644 --- a/source/data/region/mn.txt +++ b/source/data/region/mn.txt @@ -178,12 +178,12 @@ mn{ LY{"Ливи"} MA{"Морокко"} MC{"Монако"} - MD{"Молдав"} + MD{"Молдова"} ME{"Монтенегро"} MF{"Сент-Мартин"} MG{"Мадагаскар"} MH{"Маршаллын арлууд"} - MK{"Македон"} + MK{"Хойд Македон"} ML{"Мали"} MM{"Мьянмар"} MN{"Монгол"} @@ -253,7 +253,7 @@ mn{ SV{"Эль Сальвадор"} SX{"Синт Мартен"} SY{"Сири"} - SZ{"Свазиланд"} + SZ{"Эсватини"} TA{"Тристан да Кунъя"} TC{"Турк ба Кайкосын Арлууд"} TD{"Чад"} @@ -287,6 +287,8 @@ mn{ VU{"Вануату"} WF{"Уоллис ба Футуна"} WS{"Самоа"} + XA{"хуурмаг аялга"} + XB{"хуурмаг хоёр чиглэлт"} XK{"Косово"} YE{"Йемен"} YT{"Майотта"} @@ -309,8 +311,8 @@ mn{ CI{"Зааны ясан эрэг"} CZ{"Бүгд Найрамдах Чех Улс"} FK{"Фолклендийн арлууд (Мальвины арлууд)"} - MK{"Македон (Хуучин ЮБНМУ)"} + SZ{"Свазиланд"} TL{"Зүүн Тимор"} } - Version{"2.1.48.17"} + Version{"36"} } diff --git a/source/data/region/mr.txt b/source/data/region/mr.txt index 8dad126..b25603f 100644 --- a/source/data/region/mr.txt +++ b/source/data/region/mr.txt @@ -24,7 +24,7 @@ mr{ 054{"मेलानेशिया"} 057{"मायक्रोनेशियन प्रदेश"} 061{"पॉलिनेशिया"} - 142{"अशिया"} + 142{"आशिया"} 143{"मध्य आशिया"} 145{"पश्चिम आशिया"} 150{"युरोप"} @@ -253,7 +253,7 @@ mr{ SV{"अल साल्वाडोर"} SX{"सिंट मार्टेन"} SY{"सीरिया"} - SZ{"स्वाझिलँड"} + SZ{"इस्वातिनी"} TA{"ट्रिस्टन दा कुन्हा"} TC{"टर्क्स आणि कैकोस बेटे"} TD{"चाड"} @@ -287,6 +287,8 @@ mr{ VU{"वानुआतु"} WF{"वालिस आणि फ्यूचूना"} WS{"सामोआ"} + XA{"नकली-उच्चारणे"} + XB{"नकली-बीडी"} XK{"कोसोव्हो"} YE{"येमेन"} YT{"मायोट्टे"} @@ -308,7 +310,8 @@ mr{ CG{"काँगो (प्रजासत्ताक)"} CZ{"झेक प्रजासत्ताक"} FK{"फॉकलंड बेटे (इस्लास मालविनास)"} + SZ{"स्वाझिलँड"} TL{"पूर्व तिमोर"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/ms.txt b/source/data/region/ms.txt index b3d9658..1a7661d 100644 --- a/source/data/region/ms.txt +++ b/source/data/region/ms.txt @@ -287,8 +287,6 @@ ms{ VU{"Vanuatu"} WF{"Wallis dan Futuna"} WS{"Samoa"} - XA{"XA"} - XB{"XB"} XK{"Kosovo"} YE{"Yaman"} YT{"Mayotte"} @@ -311,7 +309,8 @@ ms{ CI{"Ivory Coast"} CZ{"Republik Czech"} FK{"Kepulauan Falkland (Islas Malvinas)"} + SZ{"Swaziland"} TL{"Timor Timur"} } - Version{"2.1.49.2"} + Version{"36"} } diff --git a/source/data/region/mt.txt b/source/data/region/mt.txt index 455919c..bcad675 100644 --- a/source/data/region/mt.txt +++ b/source/data/region/mt.txt @@ -309,5 +309,5 @@ mt{ FK{"Il-Gżejjer Falkland (il-Gżejjer Malvinas)"} TL{"Timor tal-Lvant"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/mua.txt b/source/data/region/mua.txt index 279b72b..e83bfd5 100644 --- a/source/data/region/mua.txt +++ b/source/data/region/mua.txt @@ -127,7 +127,6 @@ mua{ MD{"Moldoviya"} MG{"Madagaskar"} MH{"Sǝr Marshall ma laŋne"} - MK{"Macedoniya"} ML{"Sǝr Mali"} MM{"Sǝr Myanmar"} MN{"Mongoliya"} @@ -227,5 +226,5 @@ mua{ ZM{"Zambiya"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/my.txt b/source/data/region/my.txt index b6a7668..c49868f 100644 --- a/source/data/region/my.txt +++ b/source/data/region/my.txt @@ -309,6 +309,8 @@ my{ CI{"အိုင်ဗရီကို့စ်"} CZ{"ချက် ပြည်ထောင်စု"} FK{"ဖော့ကလန် ကျွန်းစု (အီလားစ် မောလ်ဗီနာစ်)"} + SZ{"ဆွာဇီလန်"} + TL{"အရှေ့တီမော"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/mzn.txt b/source/data/region/mzn.txt index 32e5b1a..e199f59 100644 --- a/source/data/region/mzn.txt +++ b/source/data/region/mzn.txt @@ -181,7 +181,6 @@ mzn{ MF{"سنت مارتین"} MG{"ماداگاسکار"} MH{"مارشال جزایر"} - MK{"مقدونیه"} ML{"مالی"} MM{"میانمار"} MN{"مغولستون"} @@ -304,8 +303,7 @@ mzn{ CG{"کنگو (جمهوری)"} CI{"عاج ساحل"} FK{"فالکلند (مالویناس)"} - MK{"مقدونیه جمهوری"} TL{"شرقی تیمور"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/naq.txt b/source/data/region/naq.txt index beb132a..e1b104b 100644 --- a/source/data/region/naq.txt +++ b/source/data/region/naq.txt @@ -127,7 +127,6 @@ naq{ MD{"Moldova"} MG{"Madagascari"} MH{"Marshall Islands"} - MK{"Macedoniab"} ML{"Malib"} MM{"Myanmar"} MN{"Mongolia"} @@ -227,5 +226,5 @@ naq{ ZM{"Zambiab"} ZW{"Zimbabweb"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/nb.txt b/source/data/region/nb.txt index 9344458..57e205b 100644 --- a/source/data/region/nb.txt +++ b/source/data/region/nb.txt @@ -287,6 +287,8 @@ nb{ VU{"Vanuatu"} WF{"Wallis og Futuna"} WS{"Samoa"} + XA{"pseudospråk – aksenter"} + XB{"pseudospråk – RTL"} XK{"Kosovo"} YE{"Jemen"} YT{"Mayotte"} @@ -306,9 +308,11 @@ nb{ Countries%variant{ CD{"Den demokratiske republikken Kongo"} CG{"Republikken Kongo"} + CI{"Elfenbenskysten"} CZ{"Den tsjekkiske republikk"} FK{"Falklandsøyene (Islas Malvinas)"} SZ{"Swaziland"} + TL{"Timor-Leste"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/nd.txt b/source/data/region/nd.txt index 4be8290..7e276eb 100644 --- a/source/data/region/nd.txt +++ b/source/data/region/nd.txt @@ -127,7 +127,6 @@ nd{ MD{"Moldova"} MG{"Madagaska"} MH{"Marshall Islands"} - MK{"Macedonia"} ML{"Mali"} MM{"Myanmar"} MN{"Mongolia"} @@ -227,5 +226,5 @@ nd{ ZM{"Zambiya"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/nds.txt b/source/data/region/nds.txt index f032c1f..2ff31d1 100644 --- a/source/data/region/nds.txt +++ b/source/data/region/nds.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nds{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ne.txt b/source/data/region/ne.txt index ef20ccc..9c8f4c3 100644 --- a/source/data/region/ne.txt +++ b/source/data/region/ne.txt @@ -103,7 +103,7 @@ ne{ EE{"इस्टोनिया"} EG{"इजिप्ट"} EH{"पश्चिमी साहारा"} - ER{"एरित्रिया"} + ER{"एरिट्रीया"} ES{"स्पेन"} ET{"इथियोपिया"} EU{"युरोपियन युनियन"} @@ -119,7 +119,7 @@ ne{ GD{"ग्रेनाडा"} GE{"जर्जिया"} GF{"फ्रान्सेली गायना"} - GG{"गुएर्नसे"} + GG{"ग्यूर्न्सी"} GH{"घाना"} GI{"जिब्राल्टार"} GL{"ग्रिनल्याण्ड"} @@ -149,7 +149,7 @@ ne{ IQ{"इराक"} IR{"इरान"} IS{"आइस्ल्याण्ड"} - IT{"इटाली"} + IT{"इटली"} JE{"जर्सी"} JM{"जमैका"} JO{"जोर्डन"} @@ -234,7 +234,7 @@ ne{ RU{"रूस"} RW{"रवाण्डा"} SA{"साउदी अरब"} - SB{"सोलोमोन टापुहरु"} + SB{"सोलोमन टापुहरू"} SC{"सेचेलेस"} SD{"सुडान"} SE{"स्विडेन"} @@ -257,7 +257,7 @@ ne{ TA{"ट्रिस्टान डा कुन्हा"} TC{"तुर्क र काइकोस टापु"} TD{"चाड"} - TF{"फ्रान्सेली दक्षिणी क्षेत्रहरु"} + TF{"फ्रेन्च दक्षिणी राज्यहरू"} TG{"टोगो"} TH{"थाइल्याण्ड"} TJ{"ताजिकिस्तान"} @@ -287,6 +287,7 @@ ne{ VU{"भानुआतु"} WF{"वालिस र फुटुना"} WS{"सामोआ"} + XB{"सिउडो-बिडी"} XK{"कोसोभो"} YE{"येमेन"} YT{"मायोट्ट"} @@ -296,6 +297,7 @@ ne{ ZZ{"अज्ञात क्षेत्र"} } Countries%short{ + GB{"युके"} HK{"हङकङ"} MO{"मकाउ"} PS{"प्यालेसटाइन"} @@ -308,8 +310,8 @@ ne{ CI{"आइभोरी कोस्ट"} CZ{"चेक गणतन्त्र"} FK{"फक्ल्याण्ड टापुहरू (इज्लास माल्भिनास)"} - SZ{"SZ"} + SZ{"स्वाजिल्याण्ड"} TL{"पृर्वी टीमोर"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/nl.txt b/source/data/region/nl.txt index dbce7cf..0350b21 100644 --- a/source/data/region/nl.txt +++ b/source/data/region/nl.txt @@ -314,5 +314,5 @@ nl{ SZ{"Swaziland"} TL{"Democratische Republiek Oost-Timor"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/nmg.txt b/source/data/region/nmg.txt index 1dfba2e..9862179 100644 --- a/source/data/region/nmg.txt +++ b/source/data/region/nmg.txt @@ -127,7 +127,6 @@ nmg{ MD{"Mɔldavia"} MG{"Madagaskar"} MH{"Maŋ́ má Marshall"} - MK{"Macedonia"} ML{"Mali"} MM{"Myanmar"} MN{"Mɔngolia"} @@ -227,5 +226,5 @@ nmg{ ZM{"Zambia"} ZW{"Zimbabwǝ"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/nn.txt b/source/data/region/nn.txt index c309937..f301da3 100644 --- a/source/data/region/nn.txt +++ b/source/data/region/nn.txt @@ -307,5 +307,5 @@ nn{ FK{"Falklandsøyane (Islas Malvinas)"} TL{"Aust-Timor"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/nnh.txt b/source/data/region/nnh.txt index 4b71c2e..1c36c11 100644 --- a/source/data/region/nnh.txt +++ b/source/data/region/nnh.txt @@ -4,5 +4,5 @@ nnh{ Countries{ CM{"Kàmalûm"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/nus.txt b/source/data/region/nus.txt index d2c2547..7d19bfd 100644 --- a/source/data/region/nus.txt +++ b/source/data/region/nus.txt @@ -54,5 +54,5 @@ nus{ TD{"Ca̱d"} VG{"Burutic dhuɔ̱ɔ̱l be̱rgin"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/nyn.txt b/source/data/region/nyn.txt index 9c74db7..b29646c 100644 --- a/source/data/region/nyn.txt +++ b/source/data/region/nyn.txt @@ -127,7 +127,6 @@ nyn{ MD{"Moridova"} MG{"Madagasika"} MH{"Ebizinga bya Marshaa"} - MK{"Masedoonia"} ML{"Mari"} MM{"Myanamar"} MN{"Mongoria"} @@ -227,5 +226,5 @@ nyn{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/om.txt b/source/data/region/om.txt index 87af688..f1969fd 100644 --- a/source/data/region/om.txt +++ b/source/data/region/om.txt @@ -15,5 +15,5 @@ om{ RU{"Russia"} US{"United States"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/or.txt b/source/data/region/or.txt index ef90d50..657ca2d 100644 --- a/source/data/region/or.txt +++ b/source/data/region/or.txt @@ -73,7 +73,7 @@ or{ BZ{"ବେଲିଜ୍"} CA{"କାନାଡା"} CC{"କୋକୋସ୍ (କୀଲିଂ) ଦ୍ଵୀପପୁଞ୍ଜ"} - CD{"କଙ୍ଗୋ-କିନସାସା"} + CD{"କଙ୍ଗୋ (ଡିଆରସି)"} CF{"ମଧ୍ୟ ଆଫ୍ରିକୀୟ ସାଧାରଣତନ୍ତ୍ର"} CG{"କଙ୍ଗୋ-ବ୍ରାଜିଭିଲ୍ଲେ"} CH{"ସ୍ୱିଜରଲ୍ୟାଣ୍ଡ"} @@ -313,5 +313,5 @@ or{ SZ{"ସ୍ୱାଜିଲ୍ୟାଣ୍ଡ"} TL{"ପୂର୍ବ ତିମୋର୍‌"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/os.txt b/source/data/region/os.txt index e6e704b..62d49c3 100644 --- a/source/data/region/os.txt +++ b/source/data/region/os.txt @@ -21,5 +21,5 @@ os{ US{"АИШ"} ZZ{"Нӕзонгӕ бӕстӕ"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/pa.txt b/source/data/region/pa.txt index b17460d..bf5f987 100644 --- a/source/data/region/pa.txt +++ b/source/data/region/pa.txt @@ -183,7 +183,7 @@ pa{ MF{"ਸੇਂਟ ਮਾਰਟਿਨ"} MG{"ਮੈਡਾਗਾਸਕਰ"} MH{"ਮਾਰਸ਼ਲ ਟਾਪੂ"} - MK{"ਮੈਕਡੋਨੀਆ"} + MK{"ਉੱਤਰੀ ਮੈਕਡੋਨੀਆ"} ML{"ਮਾਲੀ"} MM{"ਮਿਆਂਮਾਰ (ਬਰਮਾ)"} MN{"ਮੰਗੋਲੀਆ"} @@ -287,6 +287,8 @@ pa{ VU{"ਵਾਨੂਆਟੂ"} WF{"ਵਾਲਿਸ ਅਤੇ ਫੂਟੂਨਾ"} WS{"ਸਾਮੋਆ"} + XA{"ਗਲਤ-ਉਚਾਰਨ"} + XB{"ਲਿਖਤ ਦੀ ਗਲਤ ਦਿਸ਼ਾ"} XK{"ਕੋਸੋਵੋ"} YE{"ਯਮਨ"} YT{"ਮਾਯੋਟੀ"} @@ -309,9 +311,8 @@ pa{ CI{"ਆਇਵਰੀ ਕੋਸਟ"} CZ{"ਚੈੱਕ ਗਣਰਾਜ"} FK{"ਫ਼ਾਕਲੈਂਡ ਟਾਪੂ (ਆਈਲਾਸ ਮਾਲਵਿਨਾਸ)"} - MK{"ਮੈਕਡੋਨੀਆ (ਪੂਰਵ ਯੂਗੋਸਲਾਵ ਮੈਕਡੋਨੀਆਈ ਗਣਰਾਜ)"} SZ{"ਸਵਾਜ਼ੀਲੈਂਡ"} TL{"ਪੂਰਬ ਤਿਮੋਰ"} } - Version{"2.1.48.20"} + Version{"36"} } diff --git a/source/data/region/pa_Arab.txt b/source/data/region/pa_Arab.txt index 49d576d..7cc8023 100644 --- a/source/data/region/pa_Arab.txt +++ b/source/data/region/pa_Arab.txt @@ -5,5 +5,5 @@ pa_Arab{ Countries{ PK{"پاکستان"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/pa_Guru.txt b/source/data/region/pa_Guru.txt index 650b3ed..fb27b98 100644 --- a/source/data/region/pa_Guru.txt +++ b/source/data/region/pa_Guru.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pa_Guru{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/pl.txt b/source/data/region/pl.txt index 8b0f18a..8d4d35c 100644 --- a/source/data/region/pl.txt +++ b/source/data/region/pl.txt @@ -314,5 +314,5 @@ pl{ SZ{"Suazi"} TL{"Timor-Leste"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/ps.txt b/source/data/region/ps.txt index 668c86c..538e7bc 100644 --- a/source/data/region/ps.txt +++ b/source/data/region/ps.txt @@ -6,7 +6,7 @@ ps{ 002{"افريقا"} 003{"شمالی امریکا"} 005{"سويلي امريکا"} - 009{"سمندريه"} + 009{"اوقيانوسيه"} 011{"لویدیځ افریقا"} 013{"منخنۍ امريکا"} 014{"ختیځ افریقا"} @@ -28,9 +28,9 @@ ps{ 143{"منځنۍ آسيا"} 145{"لویدیځ آسیا"} 150{"اروپا"} - 151{"ختيځه اروپا"} + 151{"ختيځ اروپا"} 154{"شمالي اروپا"} - 155{"لویدیځه اروپا"} + 155{"لوېديځ اروپا"} 202{"سب سهارن افريقا"} 419{"لاتیني امریکا"} AC{"اسينشان ټاپو"} @@ -141,7 +141,7 @@ ps{ HU{"مجارستان"} IC{"د کناري ټاپوګان"} ID{"اندونیزیا"} - IE{"ایرلینډ"} + IE{"آيرلېنډ"} IL{"اسراييل"} IM{"د آئل آف مین"} IN{"هند"} @@ -162,7 +162,7 @@ ps{ KN{"سینټ کټس او نیویس"} KP{"شمالی کوریا"} KR{"سویلي کوریا"} - KW{"کویټ"} + KW{"کويت"} KY{"کیمان ټاپوګان"} KZ{"قزاقستان"} LA{"لاوس"} @@ -170,7 +170,7 @@ ps{ LC{"سینټ لوسیا"} LI{"لیختن اشتاین"} LK{"سريلنکا"} - LR{"لایبریا"} + LR{"لايبيريا"} LS{"لسوتو"} LT{"لیتوانیا"} LU{"لوګزامبورګ"} @@ -181,18 +181,18 @@ ps{ MD{"مولدوا"} ME{"مونټینیګرو"} MF{"سینټ مارټن"} - MG{"مدګاسکار"} + MG{"مدغاسکر"} MH{"مارشل ټاپوګان"} MK{"شمالي مقدونيه"} ML{"مالي"} MM{"ميانمار (برما)"} - MN{"مغولستان"} + MN{"منګوليا"} MO{"مکاو سار چین"} MP{"شمالي ماريانا ټاپوګان"} MQ{"مارټینیک"} MR{"موریتانیا"} MS{"مانټیسیرت"} - MT{"مالتا"} + MT{"مالټا"} MU{"موریشیس"} MV{"مالديپ"} MW{"مالاوي"} @@ -313,5 +313,5 @@ ps{ SZ{"سوازيلېنډ"} TL{"ختيځ تيمور"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/ps_PK.txt b/source/data/region/ps_PK.txt index 352e660..fa6ef9d 100644 --- a/source/data/region/ps_PK.txt +++ b/source/data/region/ps_PK.txt @@ -7,5 +7,5 @@ ps_PK{ TC{"د ترکیے او کیکاسو ټاپو"} TF{"د فرانسے جنوبي سیمے"} } - Version{"2.1.49.34"} + Version{"36"} } diff --git a/source/data/region/pt.txt b/source/data/region/pt.txt index 9bd2c4d..5be81d8 100644 --- a/source/data/region/pt.txt +++ b/source/data/region/pt.txt @@ -253,7 +253,7 @@ pt{ SV{"El Salvador"} SX{"Sint Maarten"} SY{"Síria"} - SZ{"Suazilândia"} + SZ{"Essuatíni"} TA{"Tristão da Cunha"} TC{"Ilhas Turcas e Caicos"} TD{"Chade"} @@ -288,7 +288,7 @@ pt{ WF{"Wallis e Futuna"} WS{"Samoa"} XA{"Pseudossotaques"} - XB{"Pseudobidi"} + XB{"Pseudobidirecional"} XK{"Kosovo"} YE{"Iêmen"} YT{"Mayotte"} @@ -310,8 +310,9 @@ pt{ CG{"Congo"} CI{"Côte d’Ivoire"} CZ{"República Tcheca"} - FK{"Ilhas Falkland (Ilhas Malvinas)"} + FK{"Ilhas Malvinas (Ilhas Falkland)"} + SZ{"Suazilândia"} TL{"República Democrática de Timor-Leste"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/pt_AO.txt b/source/data/region/pt_AO.txt index 747a081..78a8a40 100644 --- a/source/data/region/pt_AO.txt +++ b/source/data/region/pt_AO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_AO{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/pt_CH.txt b/source/data/region/pt_CH.txt index 623220c..55f6857 100644 --- a/source/data/region/pt_CH.txt +++ b/source/data/region/pt_CH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_CH{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/pt_CV.txt b/source/data/region/pt_CV.txt index 10dcb7a..aa31686 100644 --- a/source/data/region/pt_CV.txt +++ b/source/data/region/pt_CV.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_CV{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/pt_GQ.txt b/source/data/region/pt_GQ.txt index 00f271d..1ba7e1f 100644 --- a/source/data/region/pt_GQ.txt +++ b/source/data/region/pt_GQ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_GQ{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/pt_GW.txt b/source/data/region/pt_GW.txt index 60f99bb..f1125a1 100644 --- a/source/data/region/pt_GW.txt +++ b/source/data/region/pt_GW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_GW{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/pt_LU.txt b/source/data/region/pt_LU.txt index c20ea4b..19ca221 100644 --- a/source/data/region/pt_LU.txt +++ b/source/data/region/pt_LU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_LU{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/pt_MO.txt b/source/data/region/pt_MO.txt index 52f866b..0edb56c 100644 --- a/source/data/region/pt_MO.txt +++ b/source/data/region/pt_MO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_MO{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/pt_MZ.txt b/source/data/region/pt_MZ.txt index 8a51997..c189063 100644 --- a/source/data/region/pt_MZ.txt +++ b/source/data/region/pt_MZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_MZ{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/pt_PT.txt b/source/data/region/pt_PT.txt index c4e772d..b39ae8a 100644 --- a/source/data/region/pt_PT.txt +++ b/source/data/region/pt_PT.txt @@ -60,7 +60,7 @@ pt_PT{ SM{"São Marinho"} SV{"Salvador"} SX{"São Martinho (Sint Maarten)"} - SZ{"Essuatíni"} + TF{"Territórios Austrais Franceses"} TJ{"Tajiquistão"} TK{"Toquelau"} TM{"Turquemenistão"} @@ -69,6 +69,8 @@ pt_PT{ UZ{"Usbequistão"} VI{"Ilhas Virgens dos EUA"} VN{"Vietname"} + XA{"pseudoacentos"} + XB{"pseudobidirecional"} YE{"Iémen"} YT{"Maiote"} ZW{"Zimbabué"} @@ -82,5 +84,5 @@ pt_PT{ CZ{"República Checa"} FK{"Ilhas Falkland (Malvinas)"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/pt_ST.txt b/source/data/region/pt_ST.txt index 83f08a8..a05804b 100644 --- a/source/data/region/pt_ST.txt +++ b/source/data/region/pt_ST.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_ST{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/pt_TL.txt b/source/data/region/pt_TL.txt index dcee0a3..d6937ec 100644 --- a/source/data/region/pt_TL.txt +++ b/source/data/region/pt_TL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_TL{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/qu.txt b/source/data/region/qu.txt index 2cec7b1..afa3444 100644 --- a/source/data/region/qu.txt +++ b/source/data/region/qu.txt @@ -2,67 +2,100 @@ // License & terms of use: http://www.unicode.org/copyright.html#License qu{ Countries{ + AC{"Islas Ascensión"} AD{"Andorra"} + AE{"Emiratos Árabes Unidos"} AF{"Afganistán"} + AG{"Antigua y Barbuda"} + AI{"Anguila"} AL{"Albania"} AM{"Armenia"} AO{"Angola"} + AQ{"Antártida"} AR{"Argentina"} AS{"Samoa Americana"} AT{"Austria"} AU{"Australia"} + AW{"Aruba"} + AX{"Islas Åland"} AZ{"Azerbaiyán"} + BA{"Bosnia y Herzegovina"} + BB{"Barbados"} BD{"Bangladesh"} BE{"Bélgica"} + BF{"Burkina Faso"} BG{"Bulgaria"} BH{"Baréin"} BI{"Burundi"} BJ{"Benín"} + BL{"San Bartolomé"} + BM{"Bermudas"} BN{"Brunéi"} BO{"Bolivia"} BQ{"Bonaire"} BR{"Brasil"} BS{"Bahamas"} BT{"Bután"} + BV{"Isla Bouvet"} BW{"Botsuana"} BY{"Belarús"} + BZ{"Belice"} + CA{"Canadá"} CC{"Islas Cocos"} CD{"Congo (RDC)"} + CF{"República Centroafricana"} CG{"Congo"} CH{"Suiza"} CI{"Côte d’Ivoire"} + CK{"Islas Cook"} CL{"Chile"} CM{"Camerún"} CN{"China"} CO{"Colombia"} + CP{"Isla Clipperton"} CR{"Costa Rica"} CU{"Cuba"} + CV{"Cabo Verde"} CW{"Curazao"} CX{"Isla Christmas"} CY{"Chipre"} + CZ{"Chequia"} DE{"Alemania"} + DG{"Diego García"} DJ{"Yibuti"} DK{"Dinamarca"} DM{"Dominica"} + DO{"República Dominicana"} DZ{"Argelia"} + EA{"Ceuta y Melilla"} EC{"Ecuador"} EE{"Estonia"} EG{"Egipto"} + EH{"Sahara Occidental"} ER{"Eritrea"} ES{"España"} ET{"Etiopía"} FI{"Finlandia"} FJ{"Fiyi"} + FK{"Islas Malvinas"} FM{"Micronesia"} + FO{"Islas Feroe"} FR{"Francia"} GA{"Gabón"} GB{"Reino Unido"} + GD{"Granada"} + GE{"Georgia"} + GF{"Guayana Francesa"} GG{"Guernesey"} GH{"Ghana"} + GI{"Gibraltar"} + GL{"Groenlandia"} GM{"Gambia"} GN{"Guinea"} + GP{"Guadalupe"} GQ{"Guinea Ecuatorial"} GR{"Grecia"} + GS{"Georgia del Sur e Islas Sandwich del Sur"} GT{"Guatemala"} GU{"Guam"} GW{"Guinea-Bisáu"} @@ -72,15 +105,22 @@ qu{ HN{"Honduras"} HR{"Croacia"} HT{"Haití"} + HU{"Hungría"} + IC{"Islas Canarias"} ID{"Indonesia"} + IE{"Irlanda"} IL{"Israel"} + IM{"Isla de Man"} IN{"India"} + IO{"Territorio Británico del Océano Índico"} IQ{"Irak"} IR{"Irán"} IS{"Islandia"} IT{"Italia"} JE{"Jersey"} + JM{"Jamaica"} JO{"Jordania"} + JP{"Japón"} KE{"Kenia"} KG{"Kirguistán"} KH{"Camboya"} @@ -90,9 +130,11 @@ qu{ KP{"Corea del Norte"} KR{"Corea del Sur"} KW{"Kuwait"} + KY{"Islas Caimán"} KZ{"Kazajistán"} LA{"Laos"} LB{"Líbano"} + LC{"Santa Lucia"} LI{"Liechtenstein"} LK{"Sri Lanka"} LR{"Liberia"} @@ -100,23 +142,29 @@ qu{ LT{"Lituania"} LU{"Luxemburgo"} LV{"Letonia"} + LY{"Libia"} MA{"Marruecos"} MC{"Mónaco"} MD{"Moldova"} + ME{"Montenegro"} MF{"San Martín"} MG{"Madagascar"} MH{"Islas Marshall"} MK{"Macedonia del Norte"} ML{"Malí"} MM{"Myanmar"} + MN{"Mongolia"} MO{"Macao RAE"} MP{"Islas Marianas del Norte"} + MQ{"Martinica"} MR{"Mauritania"} + MS{"Montserrat"} MT{"Malta"} MU{"Mauricio"} MV{"Maldivas"} MW{"Malawi"} MX{"México"} + MY{"Malasia"} MZ{"Mozambique"} NA{"Namibia"} NC{"Nueva Caledonia"} @@ -128,6 +176,8 @@ qu{ NO{"Noruega"} NP{"Nepal"} NR{"Nauru"} + NU{"Niue"} + NZ{"Nueva Zelanda"} OM{"Omán"} PA{"Panamá"} PE{"Perú"} @@ -144,15 +194,20 @@ qu{ PW{"Palaos"} PY{"Paraguay"} QA{"Qatar"} + RE{"Reunión"} + RO{"Rumania"} RS{"Serbia"} RU{"Rusia"} RW{"Ruanda"} SA{"Arabia Saudí"} + SB{"Islas Salomón"} SC{"Seychelles"} SD{"Sudán"} SE{"Suecia"} SG{"Singapur"} + SH{"Santa Elena"} SI{"Eslovenia"} + SJ{"Svalbard y Jan Mayen"} SK{"Eslovaquia"} SL{"Sierra Leona"} SM{"San Marino"} @@ -165,33 +220,57 @@ qu{ SX{"Sint Maarten"} SY{"Siria"} SZ{"Suazilandia"} + TA{"Tristán de Acuña"} + TC{"Islas Turcas y Caicos"} TD{"Chad"} TF{"Territorios Australes Franceses"} TG{"Togo"} TH{"Tailandia"} TJ{"Tayikistán"} + TK{"Tokelau"} TL{"Timor-Leste"} + TM{"Turkmenistán"} TN{"Túnez"} TO{"Tonga"} TR{"Turquía"} TT{"Trinidad y Tobago"} + TV{"Tuvalu"} + TW{"Taiwán"} TZ{"Tanzania"} + UA{"Ucrania"} UG{"Uganda"} UM{"Islas menores alejadas de los EE.UU."} US{"Estados Unidos"} UY{"Uruguay"} UZ{"Uzbekistán"} VA{"Santa Sede (Ciudad del Vaticano)"} + VC{"San Vicente y las Granadinas"} VE{"Venezuela"} + VG{"Islas Vírgenes Británicas"} VI{"EE.UU. Islas Vírgenes"} VN{"Vietnam"} VU{"Vanuatu"} WF{"Wallis y Futuna"} WS{"Samoa"} + XK{"Kosovo"} YE{"Yemen"} + YT{"Mayotte"} ZA{"Sudáfrica"} ZM{"Zambia"} ZW{"Zimbabue"} } - Version{"2.1.49.82"} + Countries%short{ + GB{"Reino Unido"} + US{"Estados Unidos"} + } + Countries%variant{ + CD{"Congo (RDC)"} + CG{"Congo"} + CI{"Côte d’Ivoire"} + CZ{"República Checa"} + FK{"Islas Malvinas"} + SZ{"Suazilandia"} + TL{"Timor-Leste"} + } + Version{"36"} } diff --git a/source/data/region/rm.txt b/source/data/region/rm.txt index 7e0ab1f..0f9495b 100644 --- a/source/data/region/rm.txt +++ b/source/data/region/rm.txt @@ -173,7 +173,6 @@ rm{ MF{"Saint Martin"} MG{"Madagascar"} MH{"Inslas da Marshall"} - MK{"Macedonia"} ML{"Mali"} MM{"Myanmar"} MN{"Mongolia"} @@ -280,5 +279,5 @@ rm{ ZW{"Simbabwe"} ZZ{"Regiun betg encouschenta u nunvalaivla"} } - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/region/rn.txt b/source/data/region/rn.txt index cd2359c..f2c08ce 100644 --- a/source/data/region/rn.txt +++ b/source/data/region/rn.txt @@ -127,7 +127,6 @@ rn{ MD{"Moludavi"} MG{"Madagasikari"} MH{"Izinga rya Marishari"} - MK{"Masedoniya"} ML{"Mali"} MM{"Birimaniya"} MN{"Mongoliya"} @@ -227,5 +226,5 @@ rn{ ZM{"Zambiya"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ro.txt b/source/data/region/ro.txt index f5d9e51..01b0cb6 100644 --- a/source/data/region/ro.txt +++ b/source/data/region/ro.txt @@ -249,7 +249,7 @@ ro{ SO{"Somalia"} SR{"Suriname"} SS{"Sudanul de Sud"} - ST{"Sao Tome și Principe"} + ST{"São Tomé și Príncipe"} SV{"El Salvador"} SX{"Sint-Maarten"} SY{"Siria"} @@ -314,5 +314,5 @@ ro{ SZ{"Swaziland"} TL{"Timorul de Est"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/ro_MD.txt b/source/data/region/ro_MD.txt index b748e6f..0ddf4ca 100644 --- a/source/data/region/ro_MD.txt +++ b/source/data/region/ro_MD.txt @@ -4,5 +4,5 @@ ro_MD{ Countries{ MM{"Myanmar"} } - Version{"2.1.48.43"} + Version{"36"} } diff --git a/source/data/region/rof.txt b/source/data/region/rof.txt index 769fa39..39adef4 100644 --- a/source/data/region/rof.txt +++ b/source/data/region/rof.txt @@ -127,7 +127,6 @@ rof{ MD{"Moldova"} MG{"Bukini"} MH{"Visiwa vya Marshal"} - MK{"Masedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -227,5 +226,5 @@ rof{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/root.txt b/source/data/region/root.txt index 9d6d564..da1256a 100644 --- a/source/data/region/root.txt +++ b/source/data/region/root.txt @@ -4,5 +4,5 @@ * ICU source: /common/main/root.xml */ root{ - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/ru.txt b/source/data/region/ru.txt index 96ea53b..c3e0b7c 100644 --- a/source/data/region/ru.txt +++ b/source/data/region/ru.txt @@ -308,11 +308,10 @@ ru{ Countries%variant{ CD{"Конго (ДРК)"} CG{"Республика Конго"} - CI{"Берег Слоновой Кости"} CZ{"Чешская Республика"} FK{"Фолклендские (Мальвинские) о-ва"} SZ{"Свазиленд"} TL{"Тимор-Лесте"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/ru_UA.txt b/source/data/region/ru_UA.txt index 101e2a4..e1e9a51 100644 --- a/source/data/region/ru_UA.txt +++ b/source/data/region/ru_UA.txt @@ -13,5 +13,5 @@ ru_UA{ TL{"Тимор-Лесте"} UM{"Малые Тихоокеанские Отдаленные Острова США"} } - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/rw.txt b/source/data/region/rw.txt index 7be2174..82183b5 100644 --- a/source/data/region/rw.txt +++ b/source/data/region/rw.txt @@ -2,9 +2,9 @@ // License & terms of use: http://www.unicode.org/copyright.html#License rw{ Countries{ - MK{"Masedoniya y'Amajyaruguru"} + MK{"Masedoniya y’Amajyaruguru"} RW{"U Rwanda"} TO{"Tonga"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/rwk.txt b/source/data/region/rwk.txt index 08561c6..738bab0 100644 --- a/source/data/region/rwk.txt +++ b/source/data/region/rwk.txt @@ -127,7 +127,6 @@ rwk{ MD{"Moldova"} MG{"Bukini"} MH{"Visiwa vya Marshal"} - MK{"Masedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -227,5 +226,5 @@ rwk{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/sah.txt b/source/data/region/sah.txt index 5dc323e..43ccac5 100644 --- a/source/data/region/sah.txt +++ b/source/data/region/sah.txt @@ -31,5 +31,5 @@ sah{ Countries%short{ US{"АХШ"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/saq.txt b/source/data/region/saq.txt index aa1f7a3..606944f 100644 --- a/source/data/region/saq.txt +++ b/source/data/region/saq.txt @@ -127,7 +127,6 @@ saq{ MD{"Moldova"} MG{"Bukini"} MH{"Visiwa vya Marshal"} - MK{"Masedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -227,5 +226,5 @@ saq{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/sbp.txt b/source/data/region/sbp.txt index bfcc40a..d0bf51a 100644 --- a/source/data/region/sbp.txt +++ b/source/data/region/sbp.txt @@ -127,7 +127,6 @@ sbp{ MD{"Molidova"} MG{"Bukini"} MH{"Figunguli ifya Malishali"} - MK{"Masedoniya"} ML{"Mali"} MM{"Muyama"} MN{"Mongoliya"} @@ -227,5 +226,5 @@ sbp{ ZM{"Sambiya"} ZW{"Simbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/sd.txt b/source/data/region/sd.txt index 18c1770..02b1fb8 100644 --- a/source/data/region/sd.txt +++ b/source/data/region/sd.txt @@ -183,7 +183,7 @@ sd{ MF{"سينٽ مارٽن"} MG{"مداگيسڪر"} MH{"مارشل ڀيٽ"} - MK{"ميسي ڊونيا"} + MK{"شمالي مقدونيا"} ML{"مالي"} MM{"ميانمار (برما)"} MN{"منگوليا"} @@ -233,7 +233,7 @@ sd{ RS{"سربيا"} RU{"روس"} RW{"روانڊا"} - SA{"سعودی عرب"} + SA{"سعودي عرب"} SB{"سولومون ٻيٽَ"} SC{"شي شلز"} SD{"سوڊان"} @@ -310,9 +310,8 @@ sd{ CI{"آئيوري ڪوسٽ"} CZ{"چيڪ جهموريو"} FK{"فلڪ لينڊ ٻيٽ"} - MK{"ميڪدونيا"} SZ{"سوازيلينڊ"} TL{"اوڀر تيمور"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/se.txt b/source/data/region/se.txt index 6ca3493..9fd6ebd 100644 --- a/source/data/region/se.txt +++ b/source/data/region/se.txt @@ -179,7 +179,6 @@ se{ MF{"Frankriikka Saint Martin"} MG{"Madagaskar"} MH{"Marshallsullot"} - MK{"Makedonia"} ML{"Mali"} MM{"Burma"} MN{"Mongolia"} @@ -294,5 +293,5 @@ se{ PS{"Palestina"} US{"USA"} } - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/region/se_FI.txt b/source/data/region/se_FI.txt index 348bd0b..6e5bedc 100644 --- a/source/data/region/se_FI.txt +++ b/source/data/region/se_FI.txt @@ -26,5 +26,5 @@ se_FI{ Countries%variant{ CI{"Côte d’Ivoire"} } - Version{"2.1.47.83"} + Version{"36"} } diff --git a/source/data/region/seh.txt b/source/data/region/seh.txt index a9527b5..4649985 100644 --- a/source/data/region/seh.txt +++ b/source/data/region/seh.txt @@ -127,7 +127,6 @@ seh{ MD{"Moldávia"} MG{"Madagascar"} MH{"Ilhas Marshall"} - MK{"Macedônia"} ML{"Mali"} MM{"Mianmar"} MN{"Mongólia"} @@ -226,5 +225,5 @@ seh{ ZM{"Zâmbia"} ZW{"Zimbábue"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ses.txt b/source/data/region/ses.txt index 83ac255..cfb7174 100644 --- a/source/data/region/ses.txt +++ b/source/data/region/ses.txt @@ -127,7 +127,6 @@ ses{ MD{"Moldovi"} MG{"Madagascar"} MH{"Maršal gungey"} - MK{"Maacedooni"} ML{"Maali"} MM{"Maynamar"} MN{"Mongooli"} @@ -227,5 +226,5 @@ ses{ ZM{"Zambi"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/sg.txt b/source/data/region/sg.txt index b318f0d..76bbc3a 100644 --- a/source/data/region/sg.txt +++ b/source/data/region/sg.txt @@ -127,7 +127,6 @@ sg{ MD{"Moldavùii"} MG{"Madagaskära"} MH{"Âzûâ Märshâl"} - MK{"Maseduäni"} ML{"Malïi"} MM{"Myämâra"} MN{"Mongolïi"} @@ -227,5 +226,5 @@ sg{ ZM{"Zambïi"} ZW{"Zimbäbwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/shi.txt b/source/data/region/shi.txt index d149697..17c3d78 100644 --- a/source/data/region/shi.txt +++ b/source/data/region/shi.txt @@ -127,7 +127,6 @@ shi{ MD{"ⵎⵓⵍⴷⵓⴼⵢⴰ"} MG{"ⵎⴰⴷⴰⵖⴰⵛⵇⴰⵔ"} MH{"ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵛⴰⵍ"} - MK{"ⵎⴰⵙⵉⴷⵓⵏⵢⴰ"} ML{"ⵎⴰⵍⵉ"} MM{"ⵎⵢⴰⵏⵎⴰⵔ"} MN{"ⵎⵏⵖⵓⵍⵢⴰ"} @@ -227,5 +226,5 @@ shi{ ZM{"ⵣⴰⵎⴱⵢⴰ"} ZW{"ⵣⵉⵎⴱⴰⴱⵡⵉ"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/shi_Latn.txt b/source/data/region/shi_Latn.txt index 21fa3e7..1a51072 100644 --- a/source/data/region/shi_Latn.txt +++ b/source/data/region/shi_Latn.txt @@ -128,7 +128,6 @@ shi_Latn{ MD{"muldufya"} MG{"madaɣacqar"} MH{"tigzirin n marcal"} - MK{"masidunya"} ML{"mali"} MM{"myanmar"} MN{"mnɣulya"} @@ -228,5 +227,5 @@ shi_Latn{ ZM{"zambya"} ZW{"zimbabwi"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/shi_Tfng.txt b/source/data/region/shi_Tfng.txt index 2e3827e..ea72d32 100644 --- a/source/data/region/shi_Tfng.txt +++ b/source/data/region/shi_Tfng.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License shi_Tfng{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/si.txt b/source/data/region/si.txt index 3486254..8e3612e 100644 --- a/source/data/region/si.txt +++ b/source/data/region/si.txt @@ -73,7 +73,7 @@ si{ BZ{"බෙලීස්"} CA{"කැනඩාව"} CC{"කොකෝස් දූපත්"} - CD{"කොංගො - කින්ශාසා"} + CD{"කොංගෝව (ඩීආර්සී)"} CF{"මධ්‍යම අප්‍රිකානු ජනරජය"} CG{"කොංගො - බ්‍රසාවිල්"} CH{"ස්විස්ටර්ලන්තය"} @@ -183,11 +183,11 @@ si{ MF{"ශාන්ත මාර්ටින්"} MG{"මැඩගස්කරය"} MH{"මාෂල් දූපත්"} - MK{"මැසිඩෝනියාව"} + MK{"උතුරු මැසිඩෝනියාව"} ML{"මාලි"} MM{"මියන්මාරය (බුරුමය)"} MN{"මොන්ගෝලියාව"} - MO{"මකාවු චීන විශේෂ පරිපාලන කලාපය"} + MO{"මකාවු එස්ඒආර්"} MP{"උතුරු මරියානා දූපත්"} MQ{"මර්ටිනික්"} MR{"මොරිටේනියාව"} @@ -253,7 +253,7 @@ si{ SV{"එල් සැල්වදෝරය"} SX{"ශාන්ත මාර්ටෙන්"} SY{"සිරියාව"} - SZ{"ස්වාසිලන්තය"} + SZ{"එස්වාටිනි"} TA{"ට්‍රිස්ටන් ද කුන්හා"} TC{"ටර්ක්ස් සහ කයිකොස් දූපත්"} TD{"චැච්"} @@ -287,6 +287,8 @@ si{ VU{"වනුවාටු"} WF{"වැලිස් සහ ෆුටුනා"} WS{"සැමෝවා"} + XA{"ව්‍යාජ-උච්චාරණ"} + XB{"ව්‍යාජ-බිඩි"} XK{"කොසෝවෝ"} YE{"යේමනය"} YT{"මයෝට්"} @@ -304,13 +306,13 @@ si{ US{"එ.ජ"} } Countries%variant{ - CD{"කොංගෝව"} + CD{"කොංගෝව (ඩීආර්සී)"} CG{"කොංගෝ (ජනරජය)"} CI{"අයිවරි කෝස්ට්"} CZ{"චෙක් ජනරජය"} FK{"ෆෝක්ලන්ත දූපත් (අයිලස් මල්වියනාස්)"} - MK{"මැසිඩෝනියාව (FYROM)"} + SZ{"ස්වාසිලන්තය"} TL{"නැගෙනහිර ටිමෝරය"} } - Version{"2.1.48.17"} + Version{"36"} } diff --git a/source/data/region/sk.txt b/source/data/region/sk.txt index 6874f45..059fa44 100644 --- a/source/data/region/sk.txt +++ b/source/data/region/sk.txt @@ -253,7 +253,7 @@ sk{ SV{"Salvádor"} SX{"Svätý Martin (hol.)"} SY{"Sýria"} - SZ{"Svazijsko"} + SZ{"Eswatini"} TA{"Tristan da Cunha"} TC{"Turks a Caicos"} TD{"Čad"} @@ -287,6 +287,8 @@ sk{ VU{"Vanuatu"} WF{"Wallis a Futuna"} WS{"Samoa"} + XA{"falošná diakritika"} + XB{"obrátenie sprava doľava"} XK{"Kosovo"} YE{"Jemen"} YT{"Mayotte"} @@ -304,8 +306,11 @@ sk{ US{"USA"} } Countries%variant{ + CD{"Kongo (DRK)"} + CG{"Kongo (republika)"} CZ{"Česká republika"} FK{"Falklandy (Malvíny)"} + SZ{"Svazijsko"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/sl.txt b/source/data/region/sl.txt index 7d335e5..a0fb128 100644 --- a/source/data/region/sl.txt +++ b/source/data/region/sl.txt @@ -253,7 +253,7 @@ sl{ SV{"Salvador"} SX{"Sint Maarten"} SY{"Sirija"} - SZ{"Svazi"} + SZ{"Esvatini"} TA{"Tristan da Cunha"} TC{"Otoki Turks in Caicos"} TD{"Čad"} @@ -311,7 +311,8 @@ sl{ CI{"Côte d’Ivoire"} CZ{"Češka republika"} FK{"Falklandski otoki (Malvini)"} + SZ{"Svazi"} TL{"Vzhodni Timor"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/smn.txt b/source/data/region/smn.txt index 72db039..10e1855 100644 --- a/source/data/region/smn.txt +++ b/source/data/region/smn.txt @@ -263,7 +263,6 @@ smn{ CD{"Kongo demokraattisâš täsiväldi"} CG{"Kongo täsiväldi"} FK{"Falklandsuolluuh (Malvinassuolluuh)"} - MK{"OJT Makedonia"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/sn.txt b/source/data/region/sn.txt index c938077..f9abfed 100644 --- a/source/data/region/sn.txt +++ b/source/data/region/sn.txt @@ -127,7 +127,6 @@ sn{ MD{"Moldova"} MG{"Madagascar"} MH{"Zvitsuwa zveMarshall"} - MK{"Macedonia"} ML{"Mali"} MM{"Myanmar"} MN{"Mongolia"} @@ -226,5 +225,5 @@ sn{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/region/so.txt b/source/data/region/so.txt index 293b53b..0eca835 100644 --- a/source/data/region/so.txt +++ b/source/data/region/so.txt @@ -82,7 +82,6 @@ so{ CL{"Jili"} CM{"Kaameruun"} CN{"Shiinaha"} - CO{"Kolombiya"} CP{"Jasiiradda Kilibarton"} CR{"Kosta Riika"} CU{"Kuuba"} @@ -132,7 +131,6 @@ so{ GT{"Guwaatamaala"} GU{"Guaam"} GW{"Gini-Bisaaw"} - GY{"Guyana"} HK{"Hong Kong"} HM{"Jasiiradda Haad & MakDonald"} HN{"Honduras"} @@ -287,8 +285,6 @@ so{ VU{"Fanuaatu"} WF{"Walis & Futuna"} WS{"Samoowa"} - XA{"XA"} - XB{"XB"} XK{"Koosofo"} YE{"Yaman"} YT{"Mayotte"} @@ -302,7 +298,6 @@ so{ HK{"Hong Kong"} MO{"Makaaw"} PS{"Falastiin"} - US{"US"} } Countries%variant{ CD{"Jamhuuriyadda Dimuqaadiga Kongo"} @@ -313,5 +308,5 @@ so{ SZ{"Iswaasilaan"} TL{"Timoor Bari"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/sq.txt b/source/data/region/sq.txt index 442e1ed..31d73c0 100644 --- a/source/data/region/sq.txt +++ b/source/data/region/sq.txt @@ -314,5 +314,5 @@ sq{ SZ{"Suazilend"} TL{"Timori Lindor"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/sr.txt b/source/data/region/sr.txt index 8b4611b..69465eb 100644 --- a/source/data/region/sr.txt +++ b/source/data/region/sr.txt @@ -31,7 +31,7 @@ sr{ 151{"Источна Европа"} 154{"Северна Европа"} 155{"Западна Европа"} - 202{"Африка јужно од Сахаре"} + 202{"Подсахарска Африка"} 419{"Латинска Америка"} AC{"Острво Асенсион"} AD{"Андора"} @@ -106,7 +106,7 @@ sr{ ER{"Еритреја"} ES{"Шпанија"} ET{"Етиопија"} - EU{"Европска Унија"} + EU{"Европска унија"} EZ{"Еврозона"} FI{"Финска"} FJ{"Фиџи"} @@ -287,8 +287,6 @@ sr{ VU{"Вануату"} WF{"Валис и Футуна"} WS{"Самоа"} - XA{"XA"} - XB{"XB"} XK{"Косово"} YE{"Јемен"} YT{"Мајот"} @@ -311,7 +309,8 @@ sr{ CI{"Обала Слоноваче"} CZ{"Чешка Република"} FK{"Фокландска (Малвинска) острва"} + SZ{"Свазиленд"} TL{"Источни Тимор"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/sr_Cyrl.txt b/source/data/region/sr_Cyrl.txt index 8a82c60..8ccf74b 100644 --- a/source/data/region/sr_Cyrl.txt +++ b/source/data/region/sr_Cyrl.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sr_Cyrl{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/sr_Cyrl_BA.txt b/source/data/region/sr_Cyrl_BA.txt index c936ad7..09731f1 100644 --- a/source/data/region/sr_Cyrl_BA.txt +++ b/source/data/region/sr_Cyrl_BA.txt @@ -16,8 +16,5 @@ sr_Cyrl_BA{ VG{"Британска Дјевичанска Острва"} VI{"Америчка Дјевичанска Острва"} } - Countries%variant{ - MK{"БЈР Македонија"} - } - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/region/sr_Cyrl_ME.txt b/source/data/region/sr_Cyrl_ME.txt index de72d6b..e107e00 100644 --- a/source/data/region/sr_Cyrl_ME.txt +++ b/source/data/region/sr_Cyrl_ME.txt @@ -14,8 +14,5 @@ sr_Cyrl_ME{ VG{"Британска Дјевичанска Острва"} VI{"Америчка Дјевичанска Острва"} } - Countries%variant{ - MK{"БЈР Македонија"} - } - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/sr_Cyrl_XK.txt b/source/data/region/sr_Cyrl_XK.txt index d2c392d..51a7491 100644 --- a/source/data/region/sr_Cyrl_XK.txt +++ b/source/data/region/sr_Cyrl_XK.txt @@ -13,8 +13,5 @@ sr_Cyrl_XK{ UM{"Мања удаљена острва САД"} VC{"Свети Винсент и Гренадини"} } - Countries%variant{ - MK{"БЈР Македонија"} - } - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/sr_Latn.txt b/source/data/region/sr_Latn.txt index 2084d83..b9bc46c 100644 --- a/source/data/region/sr_Latn.txt +++ b/source/data/region/sr_Latn.txt @@ -32,7 +32,7 @@ sr_Latn{ 151{"Istočna Evropa"} 154{"Severna Evropa"} 155{"Zapadna Evropa"} - 202{"Afrika južno od Sahare"} + 202{"Podsaharska Afrika"} 419{"Latinska Amerika"} AC{"Ostrvo Asension"} AD{"Andora"} @@ -107,7 +107,7 @@ sr_Latn{ ER{"Eritreja"} ES{"Španija"} ET{"Etiopija"} - EU{"Evropska Unija"} + EU{"Evropska unija"} EZ{"Evrozona"} FI{"Finska"} FJ{"Fidži"} @@ -288,8 +288,6 @@ sr_Latn{ VU{"Vanuatu"} WF{"Valis i Futuna"} WS{"Samoa"} - XA{"XA"} - XB{"XB"} XK{"Kosovo"} YE{"Jemen"} YT{"Majot"} @@ -312,7 +310,8 @@ sr_Latn{ CI{"Obala Slonovače"} CZ{"Češka Republika"} FK{"Foklandska (Malvinska) ostrva"} + SZ{"Svazilend"} TL{"Istočni Timor"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/sr_Latn_BA.txt b/source/data/region/sr_Latn_BA.txt index 024db93..c97f663 100644 --- a/source/data/region/sr_Latn_BA.txt +++ b/source/data/region/sr_Latn_BA.txt @@ -16,8 +16,5 @@ sr_Latn_BA{ VG{"Britanska Djevičanska Ostrva"} VI{"Američka Djevičanska Ostrva"} } - Countries%variant{ - MK{"BJR Makedonija"} - } - Version{"2.1.48.77"} + Version{"36"} } diff --git a/source/data/region/sr_Latn_ME.txt b/source/data/region/sr_Latn_ME.txt index d7826c5..55f17f0 100644 --- a/source/data/region/sr_Latn_ME.txt +++ b/source/data/region/sr_Latn_ME.txt @@ -14,8 +14,5 @@ sr_Latn_ME{ VG{"Britanska Djevičanska Ostrva"} VI{"Američka Djevičanska Ostrva"} } - Countries%variant{ - MK{"BJR Makedonija"} - } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/sr_Latn_XK.txt b/source/data/region/sr_Latn_XK.txt index a718572..e4b9b99 100644 --- a/source/data/region/sr_Latn_XK.txt +++ b/source/data/region/sr_Latn_XK.txt @@ -13,8 +13,5 @@ sr_Latn_XK{ UM{"Manja udaljena ostrva SAD"} VC{"Sveti Vinsent i Grenadini"} } - Countries%variant{ - MK{"BJR Makedonija"} - } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/sv.txt b/source/data/region/sv.txt index 238c160..aaf27c5 100644 --- a/source/data/region/sv.txt +++ b/source/data/region/sv.txt @@ -77,7 +77,7 @@ sv{ CF{"Centralafrikanska republiken"} CG{"Kongo-Brazzaville"} CH{"Schweiz"} - CI{"Elfenbenskusten"} + CI{"Côte d’Ivoire"} CK{"Cooköarna"} CL{"Chile"} CM{"Kamerun"} @@ -309,7 +309,10 @@ sv{ CD{"Demokratiska republiken Kongo"} CG{"Republiken Kongo"} CI{"Côte d’Ivoire"} + CZ{"Tjeckien"} + FK{"Falklandsöarna"} + SZ{"Eswatini"} TL{"Timor-Leste"} } - Version{"2.1.48.90"} + Version{"36"} } diff --git a/source/data/region/sw.txt b/source/data/region/sw.txt index 6fefbc0..e74ac79 100644 --- a/source/data/region/sw.txt +++ b/source/data/region/sw.txt @@ -31,7 +31,7 @@ sw{ 151{"Ulaya ya Mashariki"} 154{"Ulaya ya Kaskazini"} 155{"Ulaya ya Magharibi"} - 202{"Afrika Kusine mwa Jangwa la Sahara"} + 202{"Afrika Kusini mwa Jangwa la Sahara"} 419{"Amerika ya Kilatini"} AC{"Kisiwa cha Ascension"} AD{"Andorra"} @@ -183,11 +183,11 @@ sw{ MF{"St. Martin"} MG{"Madagaska"} MH{"Visiwa vya Marshall"} - MK{"Macedonia"} + MK{"Masedonia ya Kaskazini"} ML{"Mali"} MM{"Myanmar (Burma)"} MN{"Mongolia"} - MO{"Macau SAR China"} + MO{"Makau SAR China"} MP{"Visiwa vya Mariana vya Kaskazini"} MQ{"Martinique"} MR{"Moritania"} @@ -287,6 +287,8 @@ sw{ VU{"Vanuatu"} WF{"Wallis na Futuna"} WS{"Samoa"} + XA{"Lafudhi Bandia"} + XB{"Lafudhi Bidi"} XK{"Kosovo"} YE{"Yemeni"} YT{"Mayotte"} @@ -298,7 +300,7 @@ sw{ Countries%short{ GB{"Ufalme wa Muungano"} HK{"Hong Kong"} - MO{"Macau"} + MO{"Makau"} PS{"Palestina"} UN{"Umoja wa Mataifa"} US{"US"} @@ -309,9 +311,8 @@ sw{ CI{"Ivory Coast"} CZ{"Jamhuri ya Cheki"} FK{"Visiwa vya Falkland (Islas Malvinas)"} - MK{"Macedonia (FYROM)"} - SZ{"SZ"} + SZ{"Uswazi"} TL{"Timor ya Mashariki"} } - Version{"2.1.48.17"} + Version{"36"} } diff --git a/source/data/region/sw_CD.txt b/source/data/region/sw_CD.txt index eec645e..853e7ad 100644 --- a/source/data/region/sw_CD.txt +++ b/source/data/region/sw_CD.txt @@ -32,5 +32,5 @@ sw_CD{ TL{"Timori ya Mashariki"} VN{"Vietnamu"} } - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/sw_KE.txt b/source/data/region/sw_KE.txt index bcb5d30..205a23f 100644 --- a/source/data/region/sw_KE.txt +++ b/source/data/region/sw_KE.txt @@ -2,6 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License sw_KE{ Countries{ + 202{"Kusini mwa Jangwa la Sahara"} AF{"Afghanistani"} AI{"Anguila"} AQ{"Antaktika"} @@ -12,6 +13,7 @@ sw_KE{ CC{"Visiwa vya Kokos (Keeling)"} CD{"Kongo - Kinshasa"} CI{"Ivorikosti"} + CV{"Kepuvede"} CY{"Saiprasi"} DK{"Denmaki"} EA{"Keuta na Melilla"} @@ -36,7 +38,6 @@ sw_KE{ MC{"Monako"} MK{"Masedonia"} MM{"Myama (Burma)"} - MO{"Makau SAR China"} MQ{"Martiniki"} MS{"Montserati"} MV{"Maldivi"} @@ -66,13 +67,9 @@ sw_KE{ VG{"Visiwa vya Virgin vya Uingereza"} VI{"Visiwa vya Virgin vya Marekani"} VN{"Vietnamu"} + XA{"Kiinitoni cha kigeni"} + XB{"Pseudo-Bidi"} YT{"Mayote"} } - Countries%short{ - MO{"Makau"} - } - Countries%variant{ - MK{"Masedonia (FYROM)"} - } - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/ta.txt b/source/data/region/ta.txt index 484e6cc..4999941 100644 --- a/source/data/region/ta.txt +++ b/source/data/region/ta.txt @@ -51,7 +51,7 @@ ta{ AX{"ஆலந்து தீவுகள்"} AZ{"அசர்பைஜான்"} BA{"போஸ்னியா & ஹெர்ஸகோவினா"} - BB{"பார்படோஸ்"} + BB{"பார்படாஸ்"} BD{"பங்களாதேஷ்"} BE{"பெல்ஜியம்"} BF{"புர்கினா ஃபாஸோ"} @@ -67,7 +67,7 @@ ta{ BR{"பிரேசில்"} BS{"பஹாமாஸ்"} BT{"பூடான்"} - BV{"பொவேட் தீவுகள்"} + BV{"பொவேட் தீவு"} BW{"போட்ஸ்வானா"} BY{"பெலாரஸ்"} BZ{"பெலிஸ்"} @@ -136,7 +136,7 @@ ta{ HK{"ஹாங்காங் எஸ்ஏஆர் சீனா"} HM{"ஹேர்ட் மற்றும் மெக்டொனால்டு தீவுகள்"} HN{"ஹோண்டூராஸ்"} - HR{"குரேஷியா"} + HR{"குரோஷியா"} HT{"ஹைட்டி"} HU{"ஹங்கேரி"} IC{"கேனரி தீவுகள்"} @@ -183,7 +183,7 @@ ta{ MF{"செயின்ட் மார்ட்டீன்"} MG{"மடகாஸ்கர்"} MH{"மார்ஷல் தீவுகள்"} - MK{"மாசிடோனியா"} + MK{"வடக்கு மாசிடோனியா"} ML{"மாலி"} MM{"மியான்மார் (பர்மா)"} MN{"மங்கோலியா"} @@ -253,7 +253,7 @@ ta{ SV{"எல் சால்வடார்"} SX{"சின்ட் மார்டென்"} SY{"சிரியா"} - SZ{"ஸ்வாஸிலாந்து"} + SZ{"எஸ்வாட்டீனி"} TA{"டிரிஸ்டன் டா குன்ஹா"} TC{"டர்க்ஸ் & கைகோஸ் தீவுகள்"} TD{"சாட்"} @@ -262,7 +262,7 @@ ta{ TH{"தாய்லாந்து"} TJ{"தஜிகிஸ்தான்"} TK{"டோகேலோ"} - TL{"தைமூர்-லெஸ்தே"} + TL{"திமோர்-லெஸ்தே"} TM{"துர்க்மெனிஸ்தான்"} TN{"டுனிசியா"} TO{"டோங்கா"} @@ -287,6 +287,8 @@ ta{ VU{"வனுவாட்டு"} WF{"வாலிஸ் மற்றும் ஃபுடுனா"} WS{"சமோவா"} + XA{"போலி உச்சரிப்புகள்"} + XB{"போலி பீடி"} XK{"கொசோவோ"} YE{"ஏமன்"} YT{"மயோட்"} @@ -309,9 +311,8 @@ ta{ CI{"ஐவரி கோஸ்ட்"} CZ{"செக் குடியரசு"} FK{"ஃபாக்லாந்து தீவுகள் (இஸ்லாஸ் மால்வினஸ்)"} - MK{"மாசிடோனியா (ஃபைரோம்)"} - SZ{"SZ"} + SZ{"எஸ்வாட்டீனி"} TL{"கிழக்கு தைமூர்"} } - Version{"2.1.48.17"} + Version{"36"} } diff --git a/source/data/region/te.txt b/source/data/region/te.txt index 0761d21..1905dc0 100644 --- a/source/data/region/te.txt +++ b/source/data/region/te.txt @@ -18,7 +18,7 @@ te{ 029{"కరిబ్బియన్"} 030{"తూర్పు ఆసియా"} 034{"దక్షిణ ఆసియా"} - 035{"నైరుతి ఆసియా"} + 035{"ఆగ్నేయ ఆసియా"} 039{"దక్షిణ యూరోప్"} 053{"ఆస్ట్రేలేసియా"} 054{"మెలనేశియ"} @@ -26,7 +26,7 @@ te{ 061{"పాలినేషియా"} 142{"ఆసియా"} 143{"మధ్య ఆసియా"} - 145{"పడమటి ఆసియా"} + 145{"పశ్చిమ ఆసియా"} 150{"యూరోప్"} 151{"తూర్పు యూరోప్"} 154{"ఉత్తర యూరోప్"} @@ -133,7 +133,7 @@ te{ GU{"గ్వామ్"} GW{"గినియా-బిస్సావ్"} GY{"గయానా"} - HK{"హాంకాంగ్ ఎస్ఏఆర్"} + HK{"హాంకాంగ్ ఎస్ఏఆర్ చైనా"} HM{"హెర్డ్ దీవి మరియు మెక్‌డొనాల్డ్ దీవులు"} HN{"హోండురాస్"} HR{"క్రొయేషియా"} @@ -145,7 +145,7 @@ te{ IL{"ఇజ్రాయెల్"} IM{"ఐల్ ఆఫ్ మాన్"} IN{"భారతదేశం"} - IO{"బ్రిటీష్ హిందూ మహాసముద్ర ప్రాంతం"} + IO{"బ్రిటిష్ హిందూ మహాసముద్ర ప్రాంతం"} IQ{"ఇరాక్"} IR{"ఇరాన్"} IS{"ఐస్లాండ్"} @@ -183,7 +183,7 @@ te{ MF{"సెయింట్ మార్టిన్"} MG{"మడగాస్కర్"} MH{"మార్షల్ దీవులు"} - MK{"మేసిడోనియా"} + MK{"ఉత్తర మాసిడోనియా"} ML{"మాలి"} MM{"మయన్మార్"} MN{"మంగోలియా"} @@ -253,7 +253,7 @@ te{ SV{"ఎల్ సాల్వడోర్"} SX{"సింట్ మార్టెన్"} SY{"సిరియా"} - SZ{"స్వాజిల్యాండ్"} + SZ{"ఈస్వాటిని"} TA{"ట్రిస్టన్ డ కన్హా"} TC{"టర్క్స్ మరియు కైకోస్ దీవులు"} TD{"చాద్"} @@ -287,6 +287,8 @@ te{ VU{"వనాటు"} WF{"వాల్లిస్ మరియు ఫుటునా"} WS{"సమోవా"} + XA{"సూడో యాక్సెంట్స్"} + XB{"సూడో-బిడి"} XK{"కొసోవో"} YE{"యెమెన్"} YT{"మాయొట్"} @@ -309,9 +311,8 @@ te{ CI{"ఐవరీ కోస్ట్"} CZ{"చెక్ రిపబ్లిక్"} FK{"ఫాక్‌ల్యాండ్ దీవులు (ఇస్లాస్ మాల్వినాస్)"} - MK{"పూర్వ రిపబ్లిక్ యుగోస్లావ్ మేసిడోనియా"} - SZ{"SZ"} + SZ{"స్వాజిల్యాండ్"} TL{"తూర్పు టిమోర్"} } - Version{"2.1.48.17"} + Version{"36"} } diff --git a/source/data/region/teo.txt b/source/data/region/teo.txt index 03ac89a..419952c 100644 --- a/source/data/region/teo.txt +++ b/source/data/region/teo.txt @@ -127,7 +127,6 @@ teo{ MD{"Moldova"} MG{"Bukini"} MH{"Visiwa vya Marshal"} - MK{"Masedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -227,5 +226,5 @@ teo{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/tg.txt b/source/data/region/tg.txt index ac9cc02..9c75fad 100644 --- a/source/data/region/tg.txt +++ b/source/data/region/tg.txt @@ -73,7 +73,7 @@ tg{ FK{"Ҷазираҳои Фолкленд"} FM{"Штатҳои Федеративии Микронезия"} FO{"Ҷазираҳои Фарер"} - FR{"Франсия"} + FR{"Фаронса"} GA{"Габон"} GB{"Шоҳигарии Муттаҳида"} GD{"Гренада"} @@ -259,5 +259,5 @@ tg{ CD{"Конго (ҶДК)"} CG{"Конго"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/th.txt b/source/data/region/th.txt index c83e6c1..5917b53 100644 --- a/source/data/region/th.txt +++ b/source/data/region/th.txt @@ -67,7 +67,7 @@ th{ BR{"บราซิล"} BS{"บาฮามาส"} BT{"ภูฏาน"} - BV{"เกาะบูเวต"} + BV{"เกาะบูเว"} BW{"บอตสวานา"} BY{"เบลารุส"} BZ{"เบลีซ"} @@ -287,6 +287,8 @@ th{ VU{"วานูอาตู"} WF{"วาลลิสและฟุตูนา"} WS{"ซามัว"} + XA{"สำเนียงไม่จริง"} + XB{"Bidi ไม่จริง"} XK{"โคโซโว"} YE{"เยเมน"} YT{"มายอต"} @@ -312,5 +314,5 @@ th{ SZ{"สวาซิแลนด์"} TL{"ติมอร์ตะวันออก"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/ti.txt b/source/data/region/ti.txt index 5e0d873..9c0d43c 100644 --- a/source/data/region/ti.txt +++ b/source/data/region/ti.txt @@ -270,5 +270,5 @@ ti{ CI{"አይቮሪ ኮስት"} CZ{"CZ"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/tk.txt b/source/data/region/tk.txt index 4ee54b8..e476296 100644 --- a/source/data/region/tk.txt +++ b/source/data/region/tk.txt @@ -253,7 +253,7 @@ tk{ SV{"Salwador"} SX{"Sint-Marten"} SY{"Siriýa"} - SZ{"Swazilend"} + SZ{"Eswatini"} TA{"Tristan-da-Kunýa"} TC{"Terks we Kaýkos adalary"} TD{"Çad"} @@ -300,7 +300,7 @@ tk{ Countries%short{ GB{"Birleşen Patyşalyk"} HK{"Gonkong"} - MO{"Makau"} + MO{"Makao"} PS{"Palestina"} US{"ABŞ"} } @@ -310,7 +310,8 @@ tk{ CI{"Şirmaýy kenar"} CZ{"Çeh Respublikasy"} FK{"Folklend (Malwina) adalary"} + SZ{"Swazilend"} TL{"Gündogar Timor"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/to.txt b/source/data/region/to.txt index 8457a36..9ca93c4 100644 --- a/source/data/region/to.txt +++ b/source/data/region/to.txt @@ -31,6 +31,7 @@ to{ 151{"ʻEulope fakahahake"} 154{"ʻEulope fakatokelau"} 155{"ʻEulope fakahihifo"} + 202{"ʻAfilika fakasahala-tonga"} 419{"ʻAmelika fakalatina"} AC{"Motu ʻAsenisini"} AD{"ʻAnitola"} @@ -182,7 +183,7 @@ to{ MF{"Sā Mātini (fakafalanisē)"} MG{"Matakasika"} MH{"ʻOtumotu Māsolo"} - MK{"Masetōnia"} + MK{"Masetōnia fakatokelau"} ML{"Māli"} MM{"Mianimā (Pema)"} MN{"Mongokōlia"} @@ -252,7 +253,7 @@ to{ SV{"ʻEle Salavatoa"} SX{"Sā Mātini (fakahōlani)"} SY{"Sīlia"} - SZ{"Suasilani"} + SZ{"ʻEsuatini"} TA{"Tulisitani ta Kunuha"} TC{"ʻOtumotu Tuki mo Kaikosi"} TD{"Sāti"} @@ -261,7 +262,7 @@ to{ TH{"Tailani"} TJ{"Tasikitani"} TK{"Tokelau"} - TL{"Timoa hahake"} + TL{"Timoa fakahahake"} TM{"Tūkimenisitani"} TN{"Tunīsia"} TO{"Tonga"} @@ -286,6 +287,8 @@ to{ VU{"Vanuatu"} WF{"ʻUvea mo Futuna"} WS{"Haʻamoa"} + XA{"fasiʻalea loi"} + XB{"fua-ua loi"} XK{"Kōsovo"} YE{"Iemeni"} YT{"Maiote"} @@ -304,8 +307,11 @@ to{ Countries%variant{ CD{"Kongo (LTK)"} CG{"Kongo (Lepupelika)"} + CI{"Matafonua ʻAivolī"} CZ{"Lepupelika Seki"} - MK{"Masetōnia (FYROM)"} + FK{"ʻOtumotu Malivina"} + SZ{"Suasilani"} + TL{"Timoa fakahahake"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/tr.txt b/source/data/region/tr.txt index 734171e..39db11a 100644 --- a/source/data/region/tr.txt +++ b/source/data/region/tr.txt @@ -77,7 +77,7 @@ tr{ CF{"Orta Afrika Cumhuriyeti"} CG{"Kongo - Brazavil"} CH{"İsviçre"} - CI{"Fildişi Sahili"} + CI{"Côte d’Ivoire"} CK{"Cook Adaları"} CL{"Şili"} CM{"Kamerun"} @@ -228,7 +228,7 @@ tr{ PY{"Paraguay"} QA{"Katar"} QO{"Uzak Okyanusya"} - RE{"Réunion"} + RE{"Reunion"} RO{"Romanya"} RS{"Sırbistan"} RU{"Rusya"} @@ -249,7 +249,7 @@ tr{ SO{"Somali"} SR{"Surinam"} SS{"Güney Sudan"} - ST{"São Tomé ve Príncipe"} + ST{"Sao Tome ve Principe"} SV{"El Salvador"} SX{"Sint Maarten"} SY{"Suriye"} @@ -287,6 +287,8 @@ tr{ VU{"Vanuatu"} WF{"Wallis ve Futuna"} WS{"Samoa"} + XA{"Psödo Aksanlar"} + XB{"Psödo Bidi"} XK{"Kosova"} YE{"Yemen"} YT{"Mayotte"} @@ -306,10 +308,11 @@ tr{ Countries%variant{ CD{"Kongo Demokratik Cumhuriyeti"} CG{"Kongo Cumhuriyeti"} + CI{"Fildişi Sahili"} CZ{"Çek Cumhuriyeti"} FK{"Falkland Adaları (Malvinas Adaları)"} SZ{"Svaziland"} TL{"Doğu Timor"} } - Version{"2.1.48.42"} + Version{"36"} } diff --git a/source/data/region/tt.txt b/source/data/region/tt.txt index bb003cc..b6fff9b 100644 --- a/source/data/region/tt.txt +++ b/source/data/region/tt.txt @@ -74,7 +74,7 @@ tt{ FO{"Фарер утраулары"} FR{"Франция"} GA{"Габон"} - GB{"Бөекбритания"} + GB{"Берләшкән Корольлек"} GD{"Гренада"} GE{"Грузия"} GF{"Француз Гвианасы"} @@ -252,5 +252,5 @@ tt{ Countries%variant{ CD{"Конго (КДР)"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/twq.txt b/source/data/region/twq.txt index f3b7d3b..387e08e 100644 --- a/source/data/region/twq.txt +++ b/source/data/region/twq.txt @@ -127,7 +127,6 @@ twq{ MD{"Moldovi"} MG{"Madagascar"} MH{"Maršal gungey"} - MK{"Maacedooni"} ML{"Maali"} MM{"Maynamar"} MN{"Mongooli"} @@ -227,5 +226,5 @@ twq{ ZM{"Zambi"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/tzm.txt b/source/data/region/tzm.txt index 2af4315..ffed2f0 100644 --- a/source/data/region/tzm.txt +++ b/source/data/region/tzm.txt @@ -127,7 +127,6 @@ tzm{ MD{"Mulḍavya"} MG{"Madaɣacqar"} MH{"Tigzirin n Marcal"} - MK{"Maqdunya"} ML{"Mali"} MM{"Myanmar"} MN{"Manɣulya"} @@ -227,5 +226,5 @@ tzm{ ZM{"Zambya"} ZW{"Zimbabwi"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/ug.txt b/source/data/region/ug.txt index 8f574b2..e6e7cee 100644 --- a/source/data/region/ug.txt +++ b/source/data/region/ug.txt @@ -305,5 +305,5 @@ ug{ CI{"پىل چىشى قىرغىقى"} FK{"فالكلاند ئاراللىرى (ئىسلاس مالۋىناس)"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/uk.txt b/source/data/region/uk.txt index 4bad2a8..a8a4b78 100644 --- a/source/data/region/uk.txt +++ b/source/data/region/uk.txt @@ -12,9 +12,9 @@ uk{ 014{"Східна Африка"} 015{"Північна Африка"} 017{"Центральна Африка"} - 018{"Південний регіон Африки"} + 018{"Південноафриканський регіон"} 019{"Америка"} - 021{"Північна Америка (регіон)"} + 021{"Північноамериканський регіон"} 029{"Карибський басейн"} 030{"Східна Азія"} 034{"Південна Азія"} @@ -315,5 +315,5 @@ uk{ SZ{"Свазіленд"} TL{"Східний Тимор"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/ur.txt b/source/data/region/ur.txt index d99336d..6c6312a 100644 --- a/source/data/region/ur.txt +++ b/source/data/region/ur.txt @@ -249,13 +249,13 @@ ur{ SO{"صومالیہ"} SR{"سورینام"} SS{"جنوبی سوڈان"} - ST{"ساؤ ٹوم اور پرنسپے"} + ST{"ساؤ ٹومے اور پرنسپے"} SV{"ال سلواڈور"} SX{"سنٹ مارٹن"} SY{"شام"} SZ{"سواتنی"} TA{"ٹرسٹن ڈا کیونہا"} - TC{"ترکس اور کیکاؤس جزائر"} + TC{"ٹرکس اور کیکوس جزائر"} TD{"چاڈ"} TF{"فرانسیسی جنوبی خطے"} TG{"ٹوگو"} @@ -275,7 +275,7 @@ ur{ UG{"یوگنڈا"} UM{"امریکہ سے باہر کے چھوٹے جزائز"} UN{"اقوام متحدہ"} - US{"ریاستہائے متحدہ"} + US{"ریاست ہائے متحدہ امریکہ"} UY{"یوروگوئے"} UZ{"ازبکستان"} VA{"ویٹیکن سٹی"} @@ -314,5 +314,5 @@ ur{ SZ{"سوازی لینڈ"} TL{"مشرقی تیمور"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/ur_IN.txt b/source/data/region/ur_IN.txt index a7031c6..2ae9ddf 100644 --- a/source/data/region/ur_IN.txt +++ b/source/data/region/ur_IN.txt @@ -29,5 +29,5 @@ ur_IN{ Countries%variant{ FK{"جزائر فاکلینڈ (اسلاس مالویناس)"} } - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/uz.txt b/source/data/region/uz.txt index 6f5b210..118cc26 100644 --- a/source/data/region/uz.txt +++ b/source/data/region/uz.txt @@ -287,6 +287,8 @@ uz{ VU{"Vanuatu"} WF{"Uollis va Futuna"} WS{"Samoa"} + XA{"Qalbaki urg‘u"} + XB{"Qalbaki Bidi"} XK{"Kosovo"} YE{"Yaman"} YT{"Mayotta"} @@ -309,7 +311,8 @@ uz{ CI{"Fil suyagi qirg‘og‘i"} CZ{"Chexiya Respublikasi"} FK{"Folklend (Malvin) orollari"} + SZ{"Svazilend"} TL{"Sharqiy Timor"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/uz_Arab.txt b/source/data/region/uz_Arab.txt index 90ceca5..0af94d0 100644 --- a/source/data/region/uz_Arab.txt +++ b/source/data/region/uz_Arab.txt @@ -5,5 +5,5 @@ uz_Arab{ Countries{ AF{"افغانستان"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/uz_Cyrl.txt b/source/data/region/uz_Cyrl.txt index a4e9b46..1947f9b 100644 --- a/source/data/region/uz_Cyrl.txt +++ b/source/data/region/uz_Cyrl.txt @@ -308,5 +308,5 @@ uz_Cyrl{ FK{"Фолкленд (Малвин) ороллари"} TL{"Шарқий Тимор"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/uz_Latn.txt b/source/data/region/uz_Latn.txt index 14301e9..bc68300 100644 --- a/source/data/region/uz_Latn.txt +++ b/source/data/region/uz_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License uz_Latn{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/vai.txt b/source/data/region/vai.txt index be05a29..7d5bf5c 100644 --- a/source/data/region/vai.txt +++ b/source/data/region/vai.txt @@ -149,7 +149,6 @@ vai{ MF{"ꕪꘋꕓ ꗞꗢ ꕮꕊꔳꘋ"} MG{"ꕮꕜꕭꔻꕪ"} MH{"ꕮꕊꕣ ꔳꘋꗣ"} - MK{"ꕮꔖꖁꕇꕰ"} ML{"ꕮꔷ"} MM{"ꕆꕩꘋꕮ"} MN{"ꗞꖐꔷꕩ"} @@ -260,5 +259,5 @@ vai{ Countries%short{ MO{"ꕮꗛꖺ"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/vai_Latn.txt b/source/data/region/vai_Latn.txt index be05c5b..c59b139 100644 --- a/source/data/region/vai_Latn.txt +++ b/source/data/region/vai_Latn.txt @@ -127,7 +127,6 @@ vai_Latn{ MD{"Mɔlidova"} MG{"Madagasita"} MH{"Masha Tiŋŋɛ"} - MK{"Masedoninya"} ML{"Mali"} MM{"Miyamaha"} MN{"Mɔngoliya"} @@ -227,5 +226,5 @@ vai_Latn{ ZM{"Zambiya"} ZW{"Zimbabhuwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/vai_Vaii.txt b/source/data/region/vai_Vaii.txt index d602abb..5390da9 100644 --- a/source/data/region/vai_Vaii.txt +++ b/source/data/region/vai_Vaii.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License vai_Vaii{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/vi.txt b/source/data/region/vi.txt index c8b839d..0d7ee33 100644 --- a/source/data/region/vi.txt +++ b/source/data/region/vi.txt @@ -20,9 +20,9 @@ vi{ 034{"Nam Á"} 035{"Đông Nam Á"} 039{"Nam Âu"} - 053{"Úc và New Zealand"} + 053{"Australasia"} 054{"Melanesia"} - 057{"Vùng Micronesian"} + 057{"Vùng Micronesia"} 061{"Polynesia"} 142{"Châu Á"} 143{"Trung Á"} @@ -117,7 +117,7 @@ vi{ GA{"Gabon"} GB{"Vương quốc Anh"} GD{"Grenada"} - GE{"Gruzia"} + GE{"Georgia"} GF{"Guiana thuộc Pháp"} GG{"Guernsey"} GH{"Ghana"} @@ -287,8 +287,8 @@ vi{ VU{"Vanuatu"} WF{"Wallis và Futuna"} WS{"Samoa"} - XA{"XA"} - XB{"XB"} + XA{"Pseudo-Accents"} + XB{"Pseudo-Bidi"} XK{"Kosovo"} YE{"Yemen"} YT{"Mayotte"} @@ -311,7 +311,8 @@ vi{ CI{"Bờ Biển Ngà"} CZ{"Cộng hòa Séc"} FK{"Quần đảo Falkland (Islas Malvinas)"} + SZ{"Eswatini"} TL{"Đông Timor"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/vun.txt b/source/data/region/vun.txt index a66ab57..b416105 100644 --- a/source/data/region/vun.txt +++ b/source/data/region/vun.txt @@ -127,7 +127,6 @@ vun{ MD{"Moldova"} MG{"Bukini"} MH{"Visiwa vya Marshal"} - MK{"Masedonia"} ML{"Mali"} MM{"Myama"} MN{"Mongolia"} @@ -227,5 +226,5 @@ vun{ ZM{"Zambia"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/wae.txt b/source/data/region/wae.txt index 9da33ea..16d9c2d 100644 --- a/source/data/region/wae.txt +++ b/source/data/region/wae.txt @@ -179,7 +179,6 @@ wae{ MF{"St. Martin"} MG{"Madagaskar"} MH{"Maršalinslä"} - MK{"Mazedonie"} ML{"Mali"} MM{"Burma"} MN{"Mongolei"} @@ -296,8 +295,7 @@ wae{ CG{"Kongo (Rebublik)"} CI{"Côte d’Ivoire"} FK{"Falklandinslä (Malwine)"} - MK{"Mazedonie (EJR)"} TL{"Wešttimor"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/wo.txt b/source/data/region/wo.txt index 7734bdc..fb25358 100644 --- a/source/data/region/wo.txt +++ b/source/data/region/wo.txt @@ -42,7 +42,7 @@ wo{ CC{"Duni Koko (Kilin)"} CF{"Repiblik Sàntar Afrik"} CH{"Siwis"} - CI{"Kodiwaar (Côte d’Ivoire)"} + CI{"Kodiwaar"} CK{"Duni Kuuk"} CL{"Sili"} CM{"Kamerun"} @@ -254,5 +254,5 @@ wo{ CD{"Kongo (R K D)"} CG{"Réewum Kongo"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/xh.txt b/source/data/region/xh.txt index 995ee02..0ef7583 100644 --- a/source/data/region/xh.txt +++ b/source/data/region/xh.txt @@ -5,5 +5,5 @@ xh{ MK{"uMntla Macedonia"} ZA{"eMzantsi Afrika"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/xog.txt b/source/data/region/xog.txt index 77942d9..f96c074 100644 --- a/source/data/region/xog.txt +++ b/source/data/region/xog.txt @@ -127,7 +127,6 @@ xog{ MD{"Molodova"} MG{"Madagasika"} MH{"Bizinga bya Mariso"} - MK{"Masedoniya"} ML{"Mali"} MM{"Myanima"} MN{"Mongoliya"} @@ -226,5 +225,5 @@ xog{ ZM{"Zambya"} ZW{"Zimbabwe"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/yav.txt b/source/data/region/yav.txt index dc8c737..ba373b6 100644 --- a/source/data/region/yav.txt +++ b/source/data/region/yav.txt @@ -127,7 +127,6 @@ yav{ MD{"moltafí"} MG{"matakaskáal"} MH{"ílmalasáal"} - MK{"masetuán"} ML{"malí"} MM{"miaŋmáal"} MN{"mongolí"} @@ -226,5 +225,5 @@ yav{ ZM{"saambíi"} ZW{"simbapuwé"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/yi.txt b/source/data/region/yi.txt index 68a36e3..4227ca5 100644 --- a/source/data/region/yi.txt +++ b/source/data/region/yi.txt @@ -139,7 +139,6 @@ yi{ ME{"מאנטענעגרא"} MG{"מאַדאַגאַסקאַר"} MH{"מאַרשאַל אינזלען"} - MK{"מאַקעדאניע"} ML{"מאַלי"} MM{"מיאַנמאַר"} MN{"מאנגאליי"} @@ -231,5 +230,5 @@ yi{ Countries%variant{ TL{"מזרח טימאר"} } - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/region/yo.txt b/source/data/region/yo.txt index 53073a7..463f964 100644 --- a/source/data/region/yo.txt +++ b/source/data/region/yo.txt @@ -2,6 +2,29 @@ // License & terms of use: http://www.unicode.org/copyright.html#License yo{ Countries{ + 003{"Àríwá Amẹ́ríkà"} + 005{"Gúúṣù Amẹ́ríkà"} + 011{"Ìwọ̀ oorùn Afíríkà"} + 013{"Ààrin Gbùgbùn Àmẹ́ríkà"} + 014{"Ìlà Oorùn Áfíríkà"} + 017{"Ààrín gbùngbùn Afíríkà"} + 018{"Apágúúsù Áfíríkà"} + 021{"Apáàríwá Amẹ́ríkà"} + 029{"Káríbíànù"} + 030{"Ìlà Òòrùn Eṣíà"} + 034{"Gúúṣù Eṣíà"} + 035{"Gúúṣù ìlà òòrùn Éṣíà"} + 039{"Gúúṣù Yúróòpù"} + 053{"Ọṣirélaṣíà"} + 054{"Mẹlanéṣíà"} + 057{"Agbègbè Maikironéṣíà"} + 061{"Polineṣíà"} + 143{"Ààrin Gbùngbùn Éṣíà"} + 145{"Ìwọ̀ Òòrùn Eṣíà"} + 151{"Ìlà Òrùn Yúrópù"} + 154{"Northern Europe"} + 155{"Ìwọ̀ Òòrùn Yúrópù"} + 419{"Látín Amẹ́ríkà"} AD{"Orílẹ́ède Ààndórà"} AE{"Orílẹ́ède Ẹmirate ti Awọn Arabu"} AF{"Orílẹ́ède Àfùgànístánì"} @@ -59,9 +82,11 @@ yo{ EC{"Orílẹ́ède Ekuádò"} EE{"Orílẹ́ède Esitonia"} EG{"Orílẹ́ède Égípítì"} + EH{"Ìwọ̀òòrùn Sàhárà"} ER{"Orílẹ́ède Eritira"} ES{"Orílẹ́ède Sipani"} ET{"Orílẹ́ède Etopia"} + EU{"Ìṣọ̀kan Yúròpù"} FI{"Orílẹ́ède Filandi"} FJ{"Orílẹ́ède Fiji"} FK{"Orílẹ́ède Etikun Fakalandi"} @@ -127,7 +152,7 @@ yo{ MD{"Orílẹ́ède Modofia"} MG{"Orílẹ́ède Madasika"} MH{"Orílẹ́ède Etikun Máṣali"} - MK{"Orílẹ́ède Masidonia"} + MK{"Àríwá Macedonia"} ML{"Orílẹ́ède Mali"} MM{"Orílẹ́ède Manamari"} MN{"Orílẹ́ède Mogolia"} @@ -165,8 +190,8 @@ yo{ PM{"Orílẹ́ède Pẹẹri ati mikuloni"} PN{"Orílẹ́ède Pikarini"} PR{"Orílẹ́ède Pọto Riko"} - PS{"Orílẹ́ède Iwọorun Pakisitian ati Gaṣa"} - PT{"Orílẹ́ède Pọtugi"} + PS{"Agbègbè Palẹsítíànù"} + PT{"Orílẹ́ède Pọ́túgà"} PW{"Orílẹ́ède Paalu"} PY{"Orílẹ́ède Paraguye"} QA{"Orílẹ́ède Kota"} @@ -188,12 +213,14 @@ yo{ SN{"Orílẹ́ède Sẹnẹga"} SO{"Orílẹ́ède Somalia"} SR{"Orílẹ́ède Surinami"} + SS{"Gúúsù Sudan"} ST{"Orílẹ́ède Sao tomi ati piriiṣipi"} SV{"Orílẹ́ède Ẹẹsáfádò"} SY{"Orílẹ́ède Siria"} SZ{"Orílẹ́ède Saṣiland"} TC{"Orílẹ́ède Tọọki ati Etikun Kakọsi"} TD{"Orílẹ́ède ṣààdì"} + TF{"Agbègbè Gúúsù Faranṣé"} TG{"Orílẹ́ède Togo"} TH{"Orílẹ́ède Tailandi"} TJ{"Orílẹ́ède Takisitani"} @@ -206,9 +233,10 @@ yo{ TT{"Orílẹ́ède Tirinida ati Tobaga"} TV{"Orílẹ́ède Tufalu"} TW{"Orílẹ́ède Taiwani"} - TZ{"Orílẹ́ède Tanṣania"} + TZ{"Orílẹ́ède Tàǹsáníà"} UA{"Orílẹ́ède Ukarini"} UG{"Orílẹ́ède Uganda"} + UN{"Ìṣọ̀kan àgbáyé"} US{"Orílẹ̀-èdè Amẹrikà"} UY{"Orílẹ́ède Nruguayi"} UZ{"Orílẹ́ède Nṣibẹkisitani"} @@ -221,12 +249,21 @@ yo{ VU{"Orílẹ́ède Faniatu"} WF{"Orílẹ́ède Wali ati futuna"} WS{"Orílẹ́ède Samọ"} + XK{"Kòsófò"} YE{"Orílẹ́ède yemeni"} YT{"Orílẹ́ède Mayote"} - ZA{"Orílẹ́ède Ariwa Afirika"} + ZA{"Gúúṣù Áfíríkà"} ZM{"Orílẹ́ède ṣamibia"} ZW{"Orílẹ́ède ṣimibabe"} ZZ{"Àgbègbè àìmọ̀"} } - Version{"2.1.48.17"} + Countries%short{ + MO{"Màkáò"} + PS{"Palẹsitín"} + } + Countries%variant{ + SZ{"Síwásìlandì"} + TL{"Ìlà Òòrùn Tímọ̀"} + } + Version{"36"} } diff --git a/source/data/region/yo_BJ.txt b/source/data/region/yo_BJ.txt index 22ffa44..bb2f291 100644 --- a/source/data/region/yo_BJ.txt +++ b/source/data/region/yo_BJ.txt @@ -2,6 +2,23 @@ // License & terms of use: http://www.unicode.org/copyright.html#License yo_BJ{ Countries{ + 003{"Àríwá Amɛ́ríkà"} + 005{"Gúúshù Amɛ́ríkà"} + 011{"Ìwɔ̀ oorùn Afíríkà"} + 013{"Ààrin Gbùgbùn Àmɛ́ríkà"} + 021{"Apáàríwá Amɛ́ríkà"} + 030{"Ìlà Òòrùn Eshíà"} + 034{"Gúúshù Eshíà"} + 035{"Gúúshù ìlà òòrùn Éshíà"} + 039{"Gúúshù Yúróòpù"} + 053{"Ɔshirélashíà"} + 054{"Mɛlanéshíà"} + 057{"Agbègbè Maikironéshíà"} + 061{"Polineshíà"} + 143{"Ààrin Gbùngbùn Éshíà"} + 145{"Ìwɔ̀ Òòrùn Eshíà"} + 155{"Ìwɔ̀ Òòrùn Yúrópù"} + 419{"Látín Amɛ́ríkà"} AD{"Orílɛ́ède Ààndórà"} AE{"Orílɛ́ède Ɛmirate ti Awɔn Arabu"} AF{"Orílɛ́ède Àfùgànístánì"} @@ -59,9 +76,11 @@ yo_BJ{ EC{"Orílɛ́ède Ekuádò"} EE{"Orílɛ́ède Esitonia"} EG{"Orílɛ́ède Égípítì"} + EH{"Ìwɔ̀òòrùn Sàhárà"} ER{"Orílɛ́ède Eritira"} ES{"Orílɛ́ède Sipani"} ET{"Orílɛ́ède Etopia"} + EU{"Ìshɔ̀kan Yúròpù"} FI{"Orílɛ́ède Filandi"} FJ{"Orílɛ́ède Fiji"} FK{"Orílɛ́ède Etikun Fakalandi"} @@ -127,7 +146,6 @@ yo_BJ{ MD{"Orílɛ́ède Modofia"} MG{"Orílɛ́ède Madasika"} MH{"Orílɛ́ède Etikun Máshali"} - MK{"Orílɛ́ède Masidonia"} ML{"Orílɛ́ède Mali"} MM{"Orílɛ́ède Manamari"} MN{"Orílɛ́ède Mogolia"} @@ -165,8 +183,8 @@ yo_BJ{ PM{"Orílɛ́ède Pɛɛri ati mikuloni"} PN{"Orílɛ́ède Pikarini"} PR{"Orílɛ́ède Pɔto Riko"} - PS{"Orílɛ́ède Iwɔorun Pakisitian ati Gasha"} - PT{"Orílɛ́ède Pɔtugi"} + PS{"Agbègbè Palɛsítíànù"} + PT{"Orílɛ́ède Pɔ́túgà"} PW{"Orílɛ́ède Paalu"} PY{"Orílɛ́ède Paraguye"} QA{"Orílɛ́ède Kota"} @@ -194,6 +212,7 @@ yo_BJ{ SZ{"Orílɛ́ède Sashiland"} TC{"Orílɛ́ède Tɔɔki ati Etikun Kakɔsi"} TD{"Orílɛ́ède shààdì"} + TF{"Agbègbè Gúúsù Faranshé"} TG{"Orílɛ́ède Togo"} TH{"Orílɛ́ède Tailandi"} TJ{"Orílɛ́ède Takisitani"} @@ -206,13 +225,13 @@ yo_BJ{ TT{"Orílɛ́ède Tirinida ati Tobaga"} TV{"Orílɛ́ède Tufalu"} TW{"Orílɛ́ède Taiwani"} - TZ{"Orílɛ́ède Tanshania"} + TZ{"Orílɛ́ède Tàǹsáníà"} UA{"Orílɛ́ède Ukarini"} UG{"Orílɛ́ède Uganda"} + UN{"Ìshɔ̀kan àgbáyé"} US{"Orílɛ̀-èdè Amɛrikà"} UY{"Orílɛ́ède Nruguayi"} UZ{"Orílɛ́ède Nshibɛkisitani"} - VA{"Ìlú Vatican"} VC{"Orílɛ́ède Fisɛnnti ati Genadina"} VE{"Orílɛ́ède Fɛnɛshuɛla"} VG{"Orílɛ́ède Etíkun Fágínì ti ìlú Bírítísì"} @@ -223,10 +242,16 @@ yo_BJ{ WS{"Orílɛ́ède Samɔ"} YE{"Orílɛ́ède yemeni"} YT{"Orílɛ́ède Mayote"} - ZA{"Orílɛ́ède Ariwa Afirika"} + ZA{"Gúúshù Áfíríkà"} ZM{"Orílɛ́ède shamibia"} ZW{"Orílɛ́ède shimibabe"} ZZ{"Àgbègbè àìmɔ̀"} } - Version{"2.1.48.77"} + Countries%short{ + PS{"Palɛsitín"} + } + Countries%variant{ + TL{"Ìlà Òòrùn Tímɔ̀"} + } + Version{"36"} } diff --git a/source/data/region/yue.txt b/source/data/region/yue.txt index d265b1b..fe333dd 100644 --- a/source/data/region/yue.txt +++ b/source/data/region/yue.txt @@ -288,6 +288,7 @@ yue{ WF{"瓦利斯同富圖納群島"} WS{"薩摩亞"} XA{"偽口音"} + XB{"偽 Bidi"} XK{"科索沃"} YE{"葉門"} YT{"馬約特"} @@ -306,8 +307,11 @@ yue{ Countries%variant{ CD{"剛果民主共和國"} CG{"剛果共和國"} + CI{"象牙海岸"} CZ{"捷克共和國"} FK{"福克蘭群島 (馬爾維納斯群島)"} + SZ{"斯威士蘭"} + TL{"東帝汶"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/yue_Hans.txt b/source/data/region/yue_Hans.txt index 7dccc14..e5f5010 100644 --- a/source/data/region/yue_Hans.txt +++ b/source/data/region/yue_Hans.txt @@ -289,6 +289,7 @@ yue_Hans{ WF{"瓦利斯同富图纳群岛"} WS{"萨摩亚"} XA{"伪口音"} + XB{"伪 Bidi"} XK{"科索沃"} YE{"叶门"} YT{"马约特"} @@ -307,8 +308,11 @@ yue_Hans{ Countries%variant{ CD{"刚果民主共和国"} CG{"刚果共和国"} + CI{"象牙海岸"} CZ{"捷克共和国"} FK{"福克兰群岛 (马尔维纳斯群岛)"} + SZ{"斯威士兰"} + TL{"东帝汶"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/yue_Hant.txt b/source/data/region/yue_Hant.txt index 1aaa640..a4fe9d6 100644 --- a/source/data/region/yue_Hant.txt +++ b/source/data/region/yue_Hant.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yue_Hant{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/zgh.txt b/source/data/region/zgh.txt index e6fb6da..3b99fd9 100644 --- a/source/data/region/zgh.txt +++ b/source/data/region/zgh.txt @@ -128,7 +128,6 @@ zgh{ ME{"ⵎⵓⵏⵜⵉⵏⵉⴳⵔⵓ"} MG{"ⵎⴰⴷⴰⵖⴰⵛⵇⴰⵔ"} MH{"ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵛⴰⵍ"} - MK{"ⵎⴰⵙⵉⴷⵓⵏⵢⴰ"} ML{"ⵎⴰⵍⵉ"} MM{"ⵎⵢⴰⵏⵎⴰⵔ"} MN{"ⵎⵏⵖⵓⵍⵢⴰ"} @@ -230,5 +229,5 @@ zgh{ ZM{"ⵣⴰⵎⴱⵢⴰ"} ZW{"ⵣⵉⵎⴱⴰⴱⵡⵉ"} } - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/region/zh.txt b/source/data/region/zh.txt index b84cafd..c2ba8f4 100644 --- a/source/data/region/zh.txt +++ b/source/data/region/zh.txt @@ -311,7 +311,6 @@ zh{ CI{"象牙海岸"} CZ{"捷克共和国"} FK{"福克兰群岛(马尔维纳斯群岛)"} - TL{"TL"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/zh_Hans.txt b/source/data/region/zh_Hans.txt index 2e93fd9..5a74156 100644 --- a/source/data/region/zh_Hans.txt +++ b/source/data/region/zh_Hans.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hans{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/region/zh_Hant.txt b/source/data/region/zh_Hant.txt index 8928dc5..c640cd0 100644 --- a/source/data/region/zh_Hant.txt +++ b/source/data/region/zh_Hant.txt @@ -254,7 +254,7 @@ zh_Hant{ SV{"薩爾瓦多"} SX{"荷屬聖馬丁"} SY{"敘利亞"} - SZ{"史瓦濟蘭"} + SZ{"史瓦帝尼"} TA{"特里斯坦達庫尼亞群島"} TC{"土克斯及開科斯群島"} TD{"查德"} @@ -309,8 +309,11 @@ zh_Hant{ Countries%variant{ CD{"剛果民主共和國"} CG{"剛果共和國"} + CI{"象牙海岸"} CZ{"捷克共和國"} FK{"福克蘭群島(馬爾維納斯群島)"} + SZ{"史瓦濟蘭"} + TL{"東帝汶"} } - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/region/zh_Hant_HK.txt b/source/data/region/zh_Hant_HK.txt index 5d71993..90de4bb 100644 --- a/source/data/region/zh_Hant_HK.txt +++ b/source/data/region/zh_Hant_HK.txt @@ -95,8 +95,5 @@ zh_Hant_HK{ ZM{"贊比亞"} ZW{"津巴布韋"} } - Countries%variant{ - CI{"象牙海岸"} - } - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/region/zh_Hant_MO.txt b/source/data/region/zh_Hant_MO.txt index a0fc4d8..707fe99 100644 --- a/source/data/region/zh_Hant_MO.txt +++ b/source/data/region/zh_Hant_MO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hant_MO{ %%Parent{"zh_Hant_HK"} - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/region/zu.txt b/source/data/region/zu.txt index d75e679..23c3d72 100644 --- a/source/data/region/zu.txt +++ b/source/data/region/zu.txt @@ -134,7 +134,7 @@ zu{ GW{"i-Guinea-Bissau"} GY{"i-Guyana"} HK{"i-Hong Kong SAR China"} - HM{"i-Heard Island ne-McDonald Islands"} + HM{"I-Heard & McDonald Island"} HN{"i-Honduras"} HR{"i-Croatia"} HT{"i-Haiti"} @@ -183,7 +183,7 @@ zu{ MF{"i-Saint Martin"} MG{"i-Madagascar"} MH{"i-Marshall Islands"} - MK{"i-Macedonia"} + MK{"i-North Macedonia"} ML{"iMali"} MM{"i-Myanmar (Burma)"} MN{"i-Mongolia"} @@ -273,7 +273,7 @@ zu{ TZ{"i-Tanzania"} UA{"i-Ukraine"} UG{"i-Uganda"} - UM{"i-U.S. Minor Outlying Islands"} + UM{"I-U.S. Outlying Islands"} UN{"I-United Nations"} US{"i-United States"} UY{"i-Uruguay"} @@ -311,9 +311,7 @@ zu{ CI{"i-Ivory Coast"} CZ{"i-Czech Republic"} FK{"i-Falkland Islands (Islas Malvinas)"} - MK{"i-Macedonia (FYROM)"} - SZ{"SZ"} TL{"i-East Timor"} } - Version{"2.1.48.17"} + Version{"36"} } diff --git a/source/data/translit/Hira_Kana.txt b/source/data/translit/Hira_Kana.txt index 076e276..a9020ca 100644 --- a/source/data/translit/Hira_Kana.txt +++ b/source/data/translit/Hira_Kana.txt @@ -6,8 +6,8 @@ # # note: a global filter is more efficient, but MUST include all source chars -:: [\u0000-\u007E 、。 \u3099-゜ ァ-ー 。-゚ー[:Hiragana:] [:Katakana:] [:nonspacing mark:]] ; -:: NFKC (); +:: [[\u0000-\u007E 、。 \u3099-゜ ァ-ー 。-゚ー[:Hiragana:] [:Katakana:] [:nonspacing mark:]]-[\u309B \u309C]]; +:: NFKC (NFC); # Hiragana-Katakana # This is largely a one-to-one mapping, but it has a # few kinks: @@ -178,8 +178,8 @@ $xo = [ \ う ← $xu {ー}; え ← $xe {ー}; お ← $xo {ー}; -:: (NFKC) ; +:: NFC (NFKC) ; # note: a global filter is more efficient, but MUST include all source chars!! -:: ([\u0000-\u007E 、。 \u3099-゜ ァ-ー 。-゚ー[:Hiragana:] [:Katakana:] [:nonspacing mark:]]); +:: ([[\u0000-\u007E 、。 \u3099-゜ ァ-ー 。-゚ー[:Hiragana:] [:Katakana:] [:nonspacing mark:]]-[\u309B \u309C]]); # eof diff --git a/source/data/translit/Latin_ASCII.txt b/source/data/translit/Latin_ASCII.txt index 96d75b8..917b983 100644 --- a/source/data/translit/Latin_ASCII.txt +++ b/source/data/translit/Latin_ASCII.txt @@ -235,6 +235,105 @@ ỽ → v ; # 1EFD;LATIN SMALL LETTER MIDDLE-WELSH V Ỿ → Y ; # 1EFE;LATIN CAPITAL LETTER Y WITH LOOP ỿ → y ; # 1EFF;LATIN SMALL LETTER Y WITH LOOP +# Latin extended C and D (later addition) +Ⱡ → L ; # 2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR +ⱡ → l ; # 2C61;LATIN SMALL LETTER L WITH DOUBLE BAR +Ɫ → L ; # 2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE +Ᵽ → P ; # 2C63;LATIN CAPITAL LETTER P WITH STROKE +Ɽ → R ; # 2C64;LATIN CAPITAL LETTER R WITH TAIL +ⱥ → a ; # 2C65;LATIN SMALL LETTER A WITH STROKE +ⱦ → t ; # 2C66;LATIN SMALL LETTER T WITH DIAGONAL STROKE +Ⱨ → H ; # 2C67;LATIN CAPITAL LETTER H WITH DESCENDER +ⱨ → h ; # 2C68;LATIN SMALL LETTER H WITH DESCENDER +Ⱪ → K ; # 2C69;LATIN CAPITAL LETTER K WITH DESCENDER +ⱪ → k ; # 2C6A;LATIN SMALL LETTER K WITH DESCENDER +Ⱬ → Z ; # 2C6B;LATIN CAPITAL LETTER Z WITH DESCENDER +ⱬ → z ; # 2C6C;LATIN SMALL LETTER Z WITH DESCENDER +Ɱ → M ; # 2C6E;LATIN CAPITAL LETTER M WITH HOOK +ⱱ → v ; # 2C71;LATIN SMALL LETTER V WITH RIGHT HOOK +Ⱳ → W ; # 2C72;LATIN CAPITAL LETTER W WITH HOOK +ⱳ → w ; # 2C73;LATIN SMALL LETTER W WITH HOOK +ⱴ → v ; # 2C74;LATIN SMALL LETTER V WITH CURL +ⱸ → e ; # 2C78;LATIN SMALL LETTER E WITH NOTCH +ⱺ → o ; # 2C7A;LATIN SMALL LETTER O WITH LOW RING INSIDE +Ȿ → S ; # 2C7E;LATIN CAPITAL LETTER S WITH SWASH TAIL +Ɀ → Z ; # 2C7F;LATIN CAPITAL LETTER Z WITH SWASH TAIL +ꜰ → F ; # A730;LATIN LETTER SMALL CAPITAL F +ꜱ → S ; # A731;LATIN LETTER SMALL CAPITAL S +Ꜳ → AA ; # A732;LATIN CAPITAL LETTER AA +ꜳ → aa ; # A733;LATIN SMALL LETTER AA +Ꜵ → AO ; # A734;LATIN CAPITAL LETTER AO +ꜵ → ao ; # A735;LATIN SMALL LETTER AO +Ꜷ → AU ; # A736;LATIN CAPITAL LETTER AU +ꜷ → au ; # A737;LATIN SMALL LETTER AU +Ꜹ → AV ; # A738;LATIN CAPITAL LETTER AV +ꜹ → av ; # A739;LATIN SMALL LETTER AV +Ꜻ → AV ; # A73A;LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR +ꜻ → av ; # A73B;LATIN SMALL LETTER AV WITH HORIZONTAL BAR +Ꜽ → AY ; # A73C;LATIN CAPITAL LETTER AY +ꜽ → ay ; # A73D;LATIN SMALL LETTER AY +Ꝁ → K ; # A740;LATIN CAPITAL LETTER K WITH STROKE +ꝁ → k ; # A741;LATIN SMALL LETTER K WITH STROKE +Ꝃ → K ; # A742;LATIN CAPITAL LETTER K WITH DIAGONAL STROKE +ꝃ → k ; # A743;LATIN SMALL LETTER K WITH DIAGONAL STROKE +Ꝅ → K ; # A744;LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE +ꝅ → k ; # A745;LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE +Ꝇ → L ; # A746;LATIN CAPITAL LETTER BROKEN L +ꝇ → l ; # A747;LATIN SMALL LETTER BROKEN L +Ꝉ → L ; # A748;LATIN CAPITAL LETTER L WITH HIGH STROKE +ꝉ → l ; # A749;LATIN SMALL LETTER L WITH HIGH STROKE +Ꝋ → O ; # A74A;LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY +ꝋ → o ; # A74B;LATIN SMALL LETTER O WITH LONG STROKE OVERLAY +Ꝍ → O ; # A74C;LATIN CAPITAL LETTER O WITH LOOP +ꝍ → o ; # A74D;LATIN SMALL LETTER O WITH LOOP +Ꝏ → OO ; # A74E;LATIN CAPITAL LETTER OO +ꝏ → oo ; # A74F;LATIN SMALL LETTER OO +Ꝑ → P ; # A750;LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER +ꝑ → p ; # A751;LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER +Ꝓ → P ; # A752;LATIN CAPITAL LETTER P WITH FLOURISH +ꝓ → p ; # A753;LATIN SMALL LETTER P WITH FLOURISH +Ꝕ → P ; # A754;LATIN CAPITAL LETTER P WITH SQUIRREL TAIL +ꝕ → p ; # A755;LATIN SMALL LETTER P WITH SQUIRREL TAIL +Ꝗ → Q ; # A756;LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER +ꝗ → q ; # A757;LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER +Ꝙ → Q ; # A758;LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE +ꝙ → q ; # A759;LATIN SMALL LETTER Q WITH DIAGONAL STROKE +Ꝟ → V ; # A75E;LATIN CAPITAL LETTER V WITH DIAGONAL STROKE +ꝟ → v ; # A75F;LATIN SMALL LETTER V WITH DIAGONAL STROKE +Ꝡ → VY ; # A760;LATIN CAPITAL LETTER VY +ꝡ → vy ; # A761;LATIN SMALL LETTER VY +Ꝥ → TH ; # A764;LATIN CAPITAL LETTER THORN WITH STROKE +ꝥ → th ; # A765;LATIN SMALL LETTER THORN WITH STROKE +Ꝧ → TH ; # A766;LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER +ꝧ → th ; # A767;LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER +ꝱ → d ; # A771;LATIN SMALL LETTER DUM +ꝲ → l ; # A772;LATIN SMALL LETTER LUM +ꝳ → m ; # A773;LATIN SMALL LETTER MUM +ꝴ → n ; # A774;LATIN SMALL LETTER NUM +ꝵ → r ; # A775;LATIN SMALL LETTER RUM +ꝶ → R ; # A776;LATIN LETTER SMALL CAPITAL RUM +ꝷ → t ; # A777;LATIN SMALL LETTER TUM +Ꝺ → D ; # A779;LATIN CAPITAL LETTER INSULAR D +ꝺ → d ; # A77A;LATIN SMALL LETTER INSULAR D +Ꝼ → F ; # A77B;LATIN CAPITAL LETTER INSULAR F +ꝼ → f ; # A77C;LATIN SMALL LETTER INSULAR F +Ꞇ → T ; # A786;LATIN CAPITAL LETTER INSULAR T +ꞇ → t ; # A787;LATIN SMALL LETTER INSULAR T +Ꞑ → N ; # A790;LATIN CAPITAL LETTER N WITH DESCENDER +ꞑ → n ; # A791;LATIN SMALL LETTER N WITH DESCENDER +Ꞓ → C ; # A792;LATIN CAPITAL LETTER C WITH BAR +ꞓ → c ; # A793;LATIN SMALL LETTER C WITH BAR +Ꞡ → G ; # A7A0;LATIN CAPITAL LETTER G WITH OBLIQUE STROKE +ꞡ → g ; # A7A1;LATIN SMALL LETTER G WITH OBLIQUE STROKE +Ꞣ → K ; # A7A2;LATIN CAPITAL LETTER K WITH OBLIQUE STROKE +ꞣ → k ; # A7A3;LATIN SMALL LETTER K WITH OBLIQUE STROKE +Ꞥ → N ; # A7A4;LATIN CAPITAL LETTER N WITH OBLIQUE STROKE +ꞥ → n ; # A7A5;LATIN SMALL LETTER N WITH OBLIQUE STROKE +Ꞧ → R ; # A7A6;LATIN CAPITAL LETTER R WITH OBLIQUE STROKE +ꞧ → r ; # A7A7;LATIN SMALL LETTER R WITH OBLIQUE STROKE +Ꞩ → S ; # A7A8;LATIN CAPITAL LETTER S WITH OBLIQUE STROKE +ꞩ → s ; # A7A9;LATIN SMALL LETTER S WITH OBLIQUE STROKE +Ɦ → H ; # A7AA;LATIN CAPITAL LETTER H WITH HOOK # Presentation forms ff → ff ; # FB00;LATIN SMALL LIGATURE FF (compat) fi → fi ; # FB01;LATIN SMALL LIGATURE FI (compat) @@ -324,6 +423,8 @@ ℓ → l ; # 2113;SCRIPT SMALL L (compat) ℕ → N ; # 2115;DOUBLE-STRUCK CAPITAL N (compat) № → No ; # 2116;NUMERO SIGN (compat) +℗ → '(P)' ; # 2117;SOUND RECORDING COPYRIGHT (later addition) +℘ → P ; # 2118;SCRIPT CAPITAL P (later addition) ℙ → P ; # 2119;DOUBLE-STRUCK CAPITAL P (compat) ℚ → Q ; # 211A;DOUBLE-STRUCK CAPITAL Q (compat) ℛ → R ; # 211B;SCRIPT CAPITAL R (compat) diff --git a/source/data/unit/af.txt b/source/data/unit/af.txt index fa5acb8..e63f0e3 100644 --- a/source/data/unit/af.txt +++ b/source/data/unit/af.txt @@ -1,23 +1,23 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License af{ - Version{"2.1.48.17"} + Version{"36"} durationUnits{ - hm{"hh:mm"} - hms{"hh:mm:ss"} + hm{"h:mm"} + hms{"h:mm:ss"} ms{"mm:ss"} } units{ acceleration{ g-force{ - dnam{"swaartekrag van die Aarde"} - one{"{0} swaartekrag van die Aarde"} - other{"{0} swaartekrag van die Aarde"} + dnam{"swaartekrag"} + one{"{0} swaartekrag"} + other{"{0} swaartekrag"} } meter-per-second-squared{ - dnam{"m/s²"} - one{"{0} m/s²"} - other{"{0} m/s²"} + dnam{"meter per vierkante sekonde"} + one{"{0} meter per vierkante sekonde"} + other{"{0} meter per vierkante sekonde"} } } angle{ @@ -37,26 +37,26 @@ af{ other{"{0} grade"} } radian{ - dnam{"radiale"} - one{"{0} radiaal"} - other{"{0} radiale"} + dnam{"boogmate"} + one{"{0} boogmaat"} + other{"{0} boogmate"} } revolution{ - dnam{"rewolusie"} - one{"{0} rewolusie"} - other{"{0} rewolusies"} + dnam{"omwenteling"} + one{"{0} omwenteling"} + other{"{0} omwentelings"} } } area{ acre{ - dnam{"akker"} - one{"{0} akker"} - other{"{0} akker"} + dnam{"acre"} + one{"{0} acre"} + other{"{0} acre"} } dunam{ - dnam{"donums"} + dnam{"donum"} one{"{0} donum"} - other{"{0} donums"} + other{"{0} donum"} } hectare{ dnam{"hektaar"} @@ -123,14 +123,9 @@ af{ one{"{0} millimol per liter"} other{"{0} millimol per liter"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"dele per miljoen"} - one{"{0} dele per miljoen"} + one{"{0} deel per miljoen"} other{"{0} dele per miljoen"} } percent{ @@ -139,21 +134,21 @@ af{ other{"{0} persent"} } permille{ - dnam{"per mille"} - one{"{0} per mille"} - other{"{0} per mille"} + dnam{"per duisend"} + one{"{0} per duisend"} + other{"{0} per duisend"} } permyriad{ - dnam{"permiriade"} - one{"{0} permiriade"} - other{"{0} permiriade"} + dnam{"per tienduisend"} + one{"{0} per tienduisend"} + other{"{0} per tienduisend"} } } consumption{ liter-per-100kilometers{ - dnam{"liter per 100 kilometers"} - one{"{0} liter per 100 kilometers"} - other{"{0} liter per 100 kilometers"} + dnam{"liter per 100 kilometer"} + one{"{0} liter per 100 kilometer"} + other{"{0} liter per 100 kilometer"} } liter-per-kilometer{ dnam{"liter per kilometer"} @@ -161,22 +156,22 @@ af{ other{"{0} liter per kilometer"} } mile-per-gallon{ - dnam{"myl per gelling"} - one{"{0} myl per gelling"} - other{"{0} myl per gelling"} + dnam{"myl per VSA-gelling"} + one{"{0} myl per VSA-gelling"} + other{"{0} myl per VSA-gelling"} } mile-per-gallon-imperial{ - dnam{"myl per imp. gelling"} - one{"{0} myl per imp. gelling"} - other{"{0} myl per imp. gelling"} + dnam{"myl per Britse gelling"} + one{"{0} myl per Britse gelling"} + other{"{0} myl per Britse gelling"} } } coordinate{ - dnam{"kardinale rigting"} - east{"{0}O"} - north{"{0}N"} - south{"{0}S"} - west{"{0}W"} + dnam{"kompasrigting"} + east{"{0} oos"} + north{"{0} noord"} + south{"{0} suid"} + west{"{0} wes"} } digital{ bit{ @@ -185,54 +180,54 @@ af{ other{"{0} bis"} } byte{ - dnam{"grepe"} + dnam{"greep"} one{"{0} greep"} - other{"{0} grepe"} + other{"{0} greep"} } gigabit{ - dnam{"Gb"} - one{"{0} Gb"} - other{"{0} Gb"} + dnam{"gigabis"} + one{"{0} gigabis"} + other{"{0} gigabis"} } gigabyte{ - dnam{"GB"} - one{"{0} GB"} - other{"{0} GB"} + dnam{"gigagreep"} + one{"{0} gigagreep"} + other{"{0} gigagreep"} } kilobit{ - dnam{"kb"} - one{"{0} kb"} - other{"{0} kb"} + dnam{"kilobis"} + one{"{0} kilobis"} + other{"{0} kilobis"} } kilobyte{ - dnam{"kB"} - one{"{0} kB"} - other{"{0} kB"} + dnam{"kilogreep"} + one{"{0} kilogreep"} + other{"{0} kilogreep"} } megabit{ - dnam{"Mb"} - one{"{0} Mb"} - other{"{0} Mb"} + dnam{"megabis"} + one{"{0} megabis"} + other{"{0} megabis"} } megabyte{ - dnam{"MB"} - one{"{0} MB"} - other{"{0} MB"} + dnam{"megagreep"} + one{"{0} megagreep"} + other{"{0} megagreep"} } petabyte{ - dnam{"petagrepe"} + dnam{"petagreep"} one{"{0} petagreep"} - other{"{0} petagrepe"} + other{"{0} petagreep"} } terabit{ - dnam{"Tb"} - one{"{0} Tb"} - other{"{0} Tb"} + dnam{"terabis"} + one{"{0} terabis"} + other{"{0} terabis"} } terabyte{ - dnam{"TB"} - one{"{0} TB"} - other{"{0} TB"} + dnam{"teragreep"} + one{"{0} teragreep"} + other{"{0} teragreep"} } } duration{ @@ -245,13 +240,18 @@ af{ dnam{"dae"} one{"{0} dag"} other{"{0} dae"} - per{"{0}/d."} + per{"{0} per dag"} + } + decade{ + dnam{"dekades"} + one{"{0} dekade"} + other{"{0} dekades"} } hour{ dnam{"uur"} one{"{0} uur"} other{"{0} uur"} - per{"{0}/h"} + per{"{0} per uur"} } microsecond{ dnam{"mikrosekondes"} @@ -273,7 +273,7 @@ af{ dnam{"maande"} one{"{0} maand"} other{"{0} maande"} - per{"{0}/md."} + per{"{0}/maand"} } nanosecond{ dnam{"nanosekondes"} @@ -290,7 +290,7 @@ af{ dnam{"weke"} one{"{0} week"} other{"{0} weke"} - per{"{0}/w."} + per{"{0} per week"} } year{ dnam{"jaar"} @@ -301,14 +301,14 @@ af{ } electric{ ampere{ - dnam{"ampere"} - one{"{0} ampere"} - other{"{0} ampere"} + dnam{"ampère"} + one{"{0} ampère"} + other{"{0} ampère"} } milliampere{ - dnam{"mA"} - one{"{0} mA"} - other{"{0} mA"} + dnam{"milliampère"} + one{"{0} milliampère"} + other{"{0} milliampère"} } ohm{ dnam{"ohm"} @@ -328,9 +328,9 @@ af{ other{"{0} Britse termiese eenhede"} } calorie{ - dnam{"kalorië"} + dnam{"kalorieë"} one{"{0} kalorie"} - other{"{0} kalorië"} + other{"{0} kalorieë"} } electronvolt{ dnam{"elektronvolt"} @@ -338,9 +338,9 @@ af{ other{"{0} elektronvolt"} } foodcalorie{ - dnam{"Kalorië"} - one{"{0} Kalorie"} - other{"{0} Kalorië"} + dnam{"kilokalorieë"} + one{"{0} kilokalorie"} + other{"{0} kilokalorieë"} } joule{ dnam{"joule"} @@ -348,19 +348,24 @@ af{ other{"{0} joule"} } kilocalorie{ - dnam{"kilokalorië"} + dnam{"kilokalorieë"} one{"{0} kilokalorie"} - other{"{0} kilokalorië"} + other{"{0} kilokalorieë"} } kilojoule{ - dnam{"kJ"} - one{"{0} kJ"} - other{"{0} kJ"} + dnam{"kilojoule"} + one{"{0} kilojoule"} + other{"{0} kilojoule"} } kilowatt-hour{ - dnam{"kWh"} - one{"{0} kWh"} - other{"{0} kWh"} + dnam{"kilowatt-uur"} + one{"{0} kilowatt-uur"} + other{"{0} kilowatt-uur"} + } + therm-us{ + dnam{"VSA- termiese eenhede"} + one{"{0} VSA- termiese eenheid"} + other{"{0} VSA- termiese eenhede"} } } force{ @@ -377,31 +382,51 @@ af{ } frequency{ gigahertz{ - dnam{"GHz"} - one{"{0} GHz"} - other{"{0} GHz"} + dnam{"gigahertz"} + one{"{0} gigahertz"} + other{"{0} gigahertz"} } hertz{ - dnam{"Hz"} - one{"{0} Hz"} - other{"{0} Hz"} + dnam{"hertz"} + one{"{0} hertz"} + other{"{0} hertz"} } kilohertz{ - dnam{"kHz"} - one{"{0} kHz"} - other{"{0} kHz"} + dnam{"kilohertz"} + one{"{0} kilohertz"} + other{"{0} kilohertz"} } megahertz{ - dnam{"MHz"} - one{"{0} MHz"} - other{"{0} MHz"} + dnam{"megahertz"} + one{"{0} megahertz"} + other{"{0} megahertz"} + } + } + graphics{ + dot-per-centimeter{ + dnam{"stippels per sentimeter"} + one{"{0} stippel per sentimeter"} + other{"{0} stippels per sentimeter"} + } + dot-per-inch{ + dnam{"stippels per duim"} + one{"{0} stippel per duim"} + other{"{0} stippels per duim"} + } + em{ + dnam{"tipografiese em"} + } + pixel{ + dnam{"pieksels"} + one{"{0} pieksel"} + other{"{0} pieksels"} } } length{ astronomical-unit{ - dnam{"astronomiese eenheid"} + dnam{"astronomiese eenhede"} one{"{0} astronomiese eenheid"} - other{"{0} astronomiese eenheid"} + other{"{0} astronomiese eenhede"} } centimeter{ dnam{"sentimeter"} @@ -434,7 +459,7 @@ af{ } light-year{ dnam{"ligjare"} - one{"{0} ligjare"} + one{"{0} ligjaar"} other{"{0} ligjare"} } meter{ @@ -454,9 +479,9 @@ af{ other{"{0} myl"} } mile-scandinavian{ - dnam{"skandinawiese myl"} - one{"{0} skandinawiese myl"} - other{"{0} skandinawiese myl"} + dnam{"Skandinawiese myl"} + one{"{0} Skandinawiese myl"} + other{"{0} Skandinawiese myl"} } millimeter{ dnam{"millimeter"} @@ -506,9 +531,9 @@ af{ other{"{0} lux"} } solar-luminosity{ - dnam{"sonligkrag"} - one{"{0} sonligkrag"} - other{"{0} sonligkrag"} + dnam{"sonligsterkte"} + one{"{0} sonligsterkte"} + other{"{0} sonligsterkte"} } } mass{ @@ -518,14 +543,14 @@ af{ other{"{0} karaat"} } dalton{ - dnam{"daltons"} + dnam{"dalton"} one{"{0} dalton"} - other{"{0} daltons"} + other{"{0} dalton"} } earth-mass{ - dnam{"Aardmassas"} - one{"{0} aardmassa"} - other{"{0} aardmassas"} + dnam{"aardemassas"} + one{"{0} aardemassa"} + other{"{0} aardemassas"} } gram{ dnam{"gram"} @@ -569,7 +594,7 @@ af{ dnam{"pond"} one{"{0} pond"} other{"{0} pond"} - per{"{0}/lb"} + per{"{0} per pond"} } solar-mass{ dnam{"sonmassas"} @@ -577,16 +602,16 @@ af{ other{"{0} sonmassas"} } ton{ - dnam{"ton"} - one{"{0} ton"} - other{"{0} ton"} + dnam{"VSA-ton"} + one{"{0} VSA-ton"} + other{"{0} VSA-ton"} } } power{ gigawatt{ - dnam{"GW"} - one{"{0} GW"} - other{"{0} GW"} + dnam{"gigawatt"} + one{"{0} gigawatt"} + other{"{0} gigawatt"} } horsepower{ dnam{"perdekrag"} @@ -599,14 +624,14 @@ af{ other{"{0} kilowatt"} } megawatt{ - dnam{"MW"} - one{"{0} MW"} - other{"{0} MW"} + dnam{"megawatt"} + one{"{0} megawatt"} + other{"{0} megawatt"} } milliwatt{ - dnam{"mW"} - one{"{0} mW"} - other{"{0} mW"} + dnam{"milliwatt"} + one{"{0} milliwatt"} + other{"{0} milliwatt"} } watt{ dnam{"watt"} @@ -695,9 +720,9 @@ af{ other{"{0}°"} } kelvin{ - dnam{"K"} - one{"{0} K"} - other{"{0} K"} + dnam{"kelvin"} + one{"{0} kelvin"} + other{"{0} kelvin"} } } torque{ @@ -714,9 +739,9 @@ af{ } volume{ acre-foot{ - dnam{"akkervoet"} - one{"{0} akkervoet"} - other{"{0} akkervoet"} + dnam{"acre-voet"} + one{"{0} acre-voet"} + other{"{0} acre-voet"} } barrel{ dnam{"vate"} @@ -737,7 +762,7 @@ af{ cubic-foot{ dnam{"kubieke voet"} one{"{0} kubieke voet"} - other{"{0} ft³"} + other{"{0} kubieke voet"} } cubic-inch{ dnam{"kubieke duim"} @@ -781,14 +806,14 @@ af{ other{"{0} desiliter"} } fluid-ounce{ - dnam{"vloeistofonse"} + dnam{"vloeistofons"} one{"{0} vloeistofons"} - other{"{0} vloeistofonse"} + other{"{0} vloeistofons"} } fluid-ounce-imperial{ - dnam{"Imperiale vloeistofonse"} - one{"{0} imperiale vloeistofons"} - other{"{0}imperiale vloeistofonse"} + dnam{"Britse vloeistofons"} + one{"{0} Britse vloeistofons"} + other{"{0} Britse vloeistofons"} } gallon{ dnam{"gelling"} @@ -797,10 +822,10 @@ af{ per{"{0} per gelling"} } gallon-imperial{ - dnam{"imp. gelling"} - one{"{0} imp. gelling"} - other{"{0} imp. gelling"} - per{"{0}/imp. gel."} + dnam{"Britse gelling"} + one{"{0} Britse gelling"} + other{"{0} Britse gelling"} + per{"{0}/Br. gell."} } hectoliter{ dnam{"hektoliter"} @@ -834,12 +859,12 @@ af{ other{"{0} metrieke pinte"} } quart{ - dnam{"kwarte"} - one{"{0} kwart"} - other{"{0} kwarte"} + dnam{"VSA-kwartgellings"} + one{"{0} VSA-kwartgelling"} + other{"{0} VSA-kwartgellings"} } tablespoon{ - dnam{"eetlepel"} + dnam{"eetlepels"} one{"{0} eetlepel"} other{"{0} eetlepels"} } @@ -909,17 +934,17 @@ af{ } consumption{ liter-per-100kilometers{ - dnam{"ℓ/100km"} - one{"{0} ℓ/100km"} - other{"{0} ℓ/100km"} + dnam{"ℓ/100 km"} + one{"{0} ℓ/100 km"} + other{"{0} ℓ/100 km"} } } coordinate{ dnam{"rigting"} - east{"{0}O"} - north{"{0}N"} - south{"{0}S"} - west{"{0}W"} + east{"{0} O"} + north{"{0} N"} + south{"{0} S"} + west{"{0} W"} } duration{ day{ @@ -933,12 +958,12 @@ af{ other{"{0} u."} } millisecond{ - dnam{"ms"} - one{"{0} ms"} - other{"{0} ms"} + dnam{"ms."} + one{"{0} ms."} + other{"{0} ms."} } minute{ - dnam{"minute"} + dnam{"min."} one{"{0} min."} other{"{0} min."} } @@ -948,9 +973,9 @@ af{ other{"{0} md."} } second{ - dnam{"sekondes"} - one{"{0} sek."} - other{"{0} sek."} + dnam{"s."} + one{"{0} s."} + other{"{0} s."} } week{ dnam{"w."} @@ -958,7 +983,7 @@ af{ other{"{0} w."} } year{ - dnam{"jaar"} + dnam{"j."} one{"{0} j."} other{"{0} j."} } @@ -987,7 +1012,7 @@ af{ other{"{0} lj"} } meter{ - dnam{"meter"} + dnam{"m"} one{"{0} m"} other{"{0} m"} } @@ -1102,7 +1127,7 @@ af{ unitsShort{ acceleration{ g-force{ - dnam{"swaartekrag van die Aarde"} + dnam{"swaartekrag"} one{"{0} G"} other{"{0} G"} } @@ -1129,24 +1154,24 @@ af{ other{"{0} gr."} } radian{ - dnam{"radiale"} + dnam{"boogmate"} one{"{0} rad."} other{"{0} rad."} } revolution{ - dnam{"rew."} - one{"{0} rew."} - other{"{0} rew."} + dnam{"o."} + one{"{0} o."} + other{"{0} o."} } } area{ acre{ - dnam{"akker"} - one{"{0} ak"} - other{"{0} ak"} + dnam{"acre"} + one{"{0} acre"} + other{"{0} acre"} } dunam{ - dnam{"donums"} + dnam{"donum"} one{"{0} donum"} other{"{0} donum"} } @@ -1198,6 +1223,7 @@ af{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1231,21 +1257,21 @@ af{ other{"{0}%"} } permille{ - dnam{"per mille"} + dnam{"per duisend"} one{"{0}‰"} other{"{0}‰"} } permyriad{ - dnam{"permiriade"} - one{"{0} ‱"} - other{"{0} ‱"} + dnam{"per tienduisend"} + one{"{0}‱"} + other{"{0}‱"} } } consumption{ liter-per-100kilometers{ - dnam{"ℓ/100km"} - one{"{0} ℓ/100km"} - other{"{0} ℓ/100km"} + dnam{"ℓ/100 km"} + one{"{0} ℓ/100 km"} + other{"{0} ℓ/100 km"} } liter-per-kilometer{ dnam{"liter/km"} @@ -1253,22 +1279,22 @@ af{ other{"{0} ℓ/km"} } mile-per-gallon{ - dnam{"myl/gel."} - one{"{0} m.p.g."} - other{"{0} m.p.g."} + dnam{"myl/VSA-gell."} + one{"{0} m.p.VSA-g."} + other{"{0} m.p.VSA-g."} } mile-per-gallon-imperial{ - dnam{"myl/imp. gel."} - one{"{0} m.p.imp.g."} - other{"{0} m.p.imp.g."} + dnam{"myl/Br. gelling"} + one{"{0} myl/Br.g."} + other{"{0} myl/Br.g."} } } coordinate{ dnam{"rigting"} - east{"{0}O"} - north{"{0}N"} - south{"{0}S"} - west{"{0}W"} + east{"{0} O"} + north{"{0} N"} + south{"{0} S"} + west{"{0} W"} } digital{ bit{ @@ -1312,7 +1338,7 @@ af{ other{"{0} MB"} } petabyte{ - dnam{"PGrepe"} + dnam{"PB"} one{"{0} PB"} other{"{0} PB"} } @@ -1339,6 +1365,11 @@ af{ other{"{0} dae"} per{"{0}/d."} } + decade{ + dnam{"dek."} + one{"{0} dek."} + other{"{0} dek."} + } hour{ dnam{"uur"} one{"{0} u."} @@ -1346,20 +1377,20 @@ af{ per{"{0}/h"} } microsecond{ - dnam{"μs"} - one{"{0} μs"} - other{"{0} μs"} + dnam{"μs."} + one{"{0} μs."} + other{"{0} μs."} } millisecond{ dnam{"millisekondes"} - one{"{0} ms"} + one{"{0} ms."} other{"{0} ms"} } minute{ - dnam{"minute"} + dnam{"min."} one{"{0} min."} other{"{0} min."} - per{"{0}/min"} + per{"{0}/min."} } month{ dnam{"maande"} @@ -1368,15 +1399,15 @@ af{ per{"{0}/md."} } nanosecond{ - dnam{"ns"} - one{"{0} ns"} - other{"{0} ns"} + dnam{"ns."} + one{"{0} ns."} + other{"{0} ns."} } second{ - dnam{"sekondes"} - one{"{0} sek."} - other{"{0} sek."} - per{"{0}/s"} + dnam{"s."} + one{"{0} s."} + other{"{0} s."} + per{"{0}/s."} } week{ dnam{"weke"} @@ -1393,7 +1424,7 @@ af{ } electric{ ampere{ - dnam{"ampere"} + dnam{"A"} one{"{0} A"} other{"{0} A"} } @@ -1430,9 +1461,9 @@ af{ other{"{0} eV"} } foodcalorie{ - dnam{"kal."} - one{"{0} kal."} - other{"{0} kal."} + dnam{"kkal."} + one{"{0} kkal."} + other{"{0} kkal."} } joule{ dnam{"joule"} @@ -1454,6 +1485,11 @@ af{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"VSA- termiese eenheid"} + one{"{0} VSA-term."} + other{"{0} VSA-term."} + } } force{ newton{ @@ -1463,8 +1499,8 @@ af{ } pound-force{ dnam{"pondkrag"} - one{"{0} lbf"} - other{"{0} lbf"} + one{"{0} lb.-krag"} + other{"{0} lb.-krag"} } } frequency{ @@ -1489,6 +1525,43 @@ af{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"stip./cm"} + one{"{0} stip./cm"} + other{"{0} stip./cm"} + } + dot-per-inch{ + dnam{"stip./dm."} + one{"{0} stip./dm."} + other{"{0} stip./dm."} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"Mpx"} + one{"{0} Mpx"} + other{"{0} Mpx"} + } + pixel{ + dnam{"pieksels"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"px/cm"} + one{"{0} px/cm"} + other{"{0} px/cm"} + } + pixel-per-inch{ + dnam{"px/dm."} + one{"{0} px/dm."} + other{"{0} px/dm."} + } + } length{ astronomical-unit{ dnam{"AE"} @@ -1594,11 +1667,11 @@ af{ light{ lux{ dnam{"lux"} - one{"{0} lux"} - other{"{0} lux"} + one{"{0} lx"} + other{"{0} lx"} } solar-luminosity{ - dnam{"sonligkrag"} + dnam{"sonligsterkte"} one{"{0} L☉"} other{"{0} L☉"} } @@ -1610,12 +1683,12 @@ af{ other{"{0} kar."} } dalton{ - dnam{"daltons"} - one{"{0} D"} - other{"{0} D"} + dnam{"dalton"} + one{"{0} Da"} + other{"{0} Da"} } earth-mass{ - dnam{"Aardmassas"} + dnam{"aardemassas"} one{"{0} M⊕"} other{"{0} M⊕"} } @@ -1658,7 +1731,7 @@ af{ other{"{0} oz t"} } pound{ - dnam{"lb."} + dnam{"pond"} one{"{0} lb."} other{"{0} lb."} per{"{0}/lb"} @@ -1669,9 +1742,9 @@ af{ other{"{0} M☉"} } ton{ - dnam{"ton"} - one{"{0} tn"} - other{"{0} tn"} + dnam{"VSA-ton"} + one{"{0} VSA-t."} + other{"{0} VSA-t."} } } power{ @@ -1681,12 +1754,11 @@ af{ other{"{0} GW"} } horsepower{ - dnam{"perdekrag"} + dnam{"pk."} one{"{0} pk."} other{"{0} pk."} } kilowatt{ - dnam{"kilowatt"} one{"{0} kW"} other{"{0} kW"} } @@ -1708,9 +1780,14 @@ af{ } pressure{ atmosphere{ - dnam{"atm"} - one{"{0} atm"} - other{"{0} atm"} + dnam{"atm."} + one{"{0} atm."} + other{"{0} atm."} + } + bar{ + dnam{"bar"} + one{"{0} bar"} + other{"{0} bar"} } hectopascal{ dnam{"hPa"} @@ -1718,9 +1795,9 @@ af{ other{"{0} hPa"} } inch-hg{ - dnam{"duim kwik"} - one{"{0} dm.Hg"} - other{"{0} dm.Hg"} + dnam{"duim Hg"} + one{"{0} duim Hg"} + other{"{0} duim Hg"} } kilopascal{ dnam{"kPa"} @@ -1733,7 +1810,7 @@ af{ other{"{0} MPa"} } millibar{ - dnam{"millibar"} + dnam{"mbar"} one{"{0} mbar"} other{"{0} mbar"} } @@ -1742,8 +1819,13 @@ af{ one{"{0} mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ - dnam{"pond per vierkante duim"} + dnam{"lb./vk. duim"} one{"{0} pd.vk.dm."} other{"{0} pd.vk.dm."} } @@ -1760,9 +1842,9 @@ af{ other{"{0} kn."} } meter-per-second{ - dnam{"meter per sekonde"} - one{"{0} m/s"} - other{"{0} m/s"} + dnam{"meter/s."} + one{"{0} m/s."} + other{"{0} m/s."} } mile-per-hour{ dnam{"myl per uur"} @@ -1772,14 +1854,14 @@ af{ } temperature{ celsius{ - dnam{"grade Celsius"} + dnam{"°C"} one{"{0} °C"} other{"{0} °C"} } fahrenheit{ - dnam{"grade Fahrenheit"} + dnam{"°F"} one{"{0} °F"} - other{"{0}°F"} + other{"{0} °F"} } generic{ dnam{"°"} @@ -1806,9 +1888,9 @@ af{ } volume{ acre-foot{ - dnam{"akkervoet"} - one{"{0} ak.vt."} - other{"{0} ak.vt."} + dnam{"acre-voet"} + one{"{0} acre-vt."} + other{"{0} acre-vt."} } barrel{ dnam{"vat"} @@ -1827,9 +1909,9 @@ af{ per{"{0}/cm³"} } cubic-foot{ - dnam{"ft³"} - one{"{0} ft³"} - other{"{0} ft³"} + dnam{"vt.³"} + one{"{0} vt.³"} + other{"{0} vt.³"} } cubic-inch{ dnam{"duim³"} @@ -1863,9 +1945,9 @@ af{ other{"{0} kp."} } cup-metric{ - dnam{"mkp."} - one{"{0} mkp."} - other{"{0} mkp."} + dnam{"m. kop"} + one{"{0} m. kop"} + other{"{0} m. kop"} } deciliter{ dnam{"dℓ"} @@ -1873,14 +1955,14 @@ af{ other{"{0} dℓ"} } fluid-ounce{ - dnam{"vloz."} + dnam{"vl.oz."} one{"{0} vl.oz."} other{"{0} vl.oz."} } fluid-ounce-imperial{ - dnam{"Imp. vl.oz."} - one{"{0} vl.oz. Imp."} - other{"{0} vl.oz. Imp."} + dnam{"Br. vl.oz."} + one{"{0} Br. vl.oz."} + other{"{0} Br. vl.oz."} } gallon{ dnam{"gell."} @@ -1889,10 +1971,10 @@ af{ per{"{0}/gell."} } gallon-imperial{ - dnam{"imp. gel."} - one{"{0} imp. gel."} - other{"{0} imp. gel."} - per{"{0}/imp. gel."} + dnam{"Br. gell."} + one{"{0} Br. gell."} + other{"{0} Br. gell."} + per{"{0}/Br. gell."} } hectoliter{ dnam{"hℓ"} @@ -1926,12 +2008,12 @@ af{ other{"{0} mpt."} } quart{ - dnam{"kw."} - one{"{0} kw."} - other{"{0} kw."} + dnam{"VSA-kw.gell."} + one{"{0} VSA-kw.gell."} + other{"{0} VSA-kw.gell."} } tablespoon{ - dnam{"eetl."} + dnam{"e."} one{"{0} e."} other{"{0} e."} } diff --git a/source/data/unit/agq.txt b/source/data/unit/agq.txt index 964644e..4f51160 100644 --- a/source/data/unit/agq.txt +++ b/source/data/unit/agq.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License agq{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/ak.txt b/source/data/unit/ak.txt index 042e6c6..251661d 100644 --- a/source/data/unit/ak.txt +++ b/source/data/unit/ak.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ak{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/am.txt b/source/data/unit/am.txt index ba85920..230f9d2 100644 --- a/source/data/unit/am.txt +++ b/source/data/unit/am.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License am{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -123,11 +123,6 @@ am{ one{"{0} mmol/L"} other{"{0} mmol/L"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ppm"} one{"{0} ppm"} @@ -143,11 +138,6 @@ am{ one{"{0} በማይል"} other{"{0}‰"} } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -247,6 +237,11 @@ am{ other{"{0} ቀናት"} per{"{0}/ቀ"} } + decade{ + dnam{"አስር አመታት"} + one{"{0} አስር አመታት"} + other{"{0} አስር አመታት"} + } hour{ dnam{"ሰዓቶች"} one{"{0} ሰዓት"} @@ -322,11 +317,6 @@ am{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"cal"} one{"{0} cal"} @@ -369,11 +359,6 @@ am{ one{"{0} ኒ"} other{"{0} ኒ"} } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} - } } frequency{ gigahertz{ @@ -397,6 +382,38 @@ am{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"ነበሴሜ"} + one{"{0} ነበሴሜ"} + other{"{0} ነበሴሜ"} + } + dot-per-inch{ + dnam{"ነበኢ"} + one{"{0} ነበኢ"} + other{"{0} ነበኢ"} + } + megapixel{ + dnam{"ሜጋ ፒክስል"} + one{"{0} ሜጋ ፒክስል"} + other{"{0} ሜጋ ፒክስል"} + } + pixel{ + dnam{"ፒክስል"} + one{"{0} ፒክስል"} + other{"{0} ፒክስል"} + } + pixel-per-centimeter{ + dnam{"ፒበሴሜ"} + one{"{0} ፒበሴሜ"} + other{"{0} ፒበሴሜ"} + } + pixel-per-inch{ + dnam{"ፒበኢ"} + one{"{0} ፒበኢ"} + other{"{0} ፒበኢ"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -488,11 +505,6 @@ am{ one{"{0} ነጥብ"} other{"{0} ነጥብ"} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"ያርድ"} one{"{0} ያርድ"} @@ -505,11 +517,6 @@ am{ one{"{0} lx"} other{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -517,16 +524,6 @@ am{ one{"{0} CD"} other{"{0} CD"} } - dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"ግራም"} one{"{0} ግራም"} @@ -571,11 +568,6 @@ am{ other{"{0} ፓውንድ"} per{"{0}/ፓውንድ"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } ton{ dnam{"ቶን"} one{"{0} ቶን"} @@ -620,6 +612,11 @@ am{ one{"{0} ከባቢ አየር"} other{"{0} ከባቢ አየር"} } + bar{ + dnam{"አሞሌ"} + one{"{0} አሞሌ"} + other{"{0} አሞሌዎች"} + } hectopascal{ dnam{"ሄክቶፓስካል"} one{"{0} ሄክቶፓስካል"} @@ -650,6 +647,11 @@ am{ one{"{0} mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"ፓስካል"} + one{"{0} ፓስካል"} + other{"{0} ፓስካል"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} @@ -706,11 +708,6 @@ am{ one{"{0} ኒ.ሜ"} other{"{0} ኒ.ሜ"} } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } } volume{ acre-foot{ @@ -785,11 +782,6 @@ am{ one{"{0} fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} one{"{0} gal"} @@ -1220,11 +1212,6 @@ am{ one{"{0} mmol/L"} other{"{0} mmol/L"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ppm"} one{"{0} ppm"} @@ -1240,11 +1227,6 @@ am{ one{"{0}‰"} other{"{0}‰"} } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -1344,6 +1326,11 @@ am{ other{"{0} ቀናት"} per{"{0}/ቀ"} } + decade{ + dnam{"አስር አመታት"} + one{"{0} አስር አመታት"} + other{"{0} አስር አመታት"} + } hour{ dnam{"ሰዓቶች"} one{"{0} ሰዓ"} @@ -1419,11 +1406,6 @@ am{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"cal"} one{"{0} cal"} @@ -1466,11 +1448,6 @@ am{ one{"{0} ኒ"} other{"{0} ኒ"} } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} - } } frequency{ gigahertz{ @@ -1494,6 +1471,38 @@ am{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"ነበሴሜ"} + one{"{0} ነበሴሜ"} + other{"{0} ነበሴሜ"} + } + dot-per-inch{ + dnam{"ነበኢ"} + one{"{0} ነበኢ"} + other{"{0} ነበኢ"} + } + megapixel{ + dnam{"ሜጋ ፒክስል"} + one{"{0} ሜጋ ፒክስል"} + other{"{0} ሜጋ ፒክስል"} + } + pixel{ + dnam{"ፒክስል"} + one{"{0} ፒክስል"} + other{"{0} ፒክስል"} + } + pixel-per-centimeter{ + dnam{"ፒበሴሜ"} + one{"{0} ፒበሴሜ"} + other{"{0} ፒበሴሜ"} + } + pixel-per-inch{ + dnam{"ፒበኢ"} + one{"{0} ፒበኢ"} + other{"{0} ፒበኢ"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -1585,11 +1594,6 @@ am{ one{"{0} ነጥብ"} other{"{0} ነጥብ"} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"ያርድ"} one{"{0} ያርድ"} @@ -1602,11 +1606,6 @@ am{ one{"{0} lx"} other{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -1614,16 +1613,6 @@ am{ one{"{0} CD"} other{"{0} CD"} } - dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"ግራም"} one{"{0} ግ"} @@ -1668,11 +1657,6 @@ am{ other{"{0} ፓውንድ"} per{"{0}/ፓውንድ"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } ton{ dnam{"ቶን"} one{"{0} ቶን"} @@ -1717,6 +1701,11 @@ am{ one{"{0} ከባቢ አየር"} other{"{0} ከባቢ አየር"} } + bar{ + dnam{"አሞሌ"} + one{"{0} አሞሌ"} + other{"{0} አሞሌዎች"} + } hectopascal{ dnam{"ሄክቶፓስካል"} one{"{0} ሄክቶፓስካል"} @@ -1747,6 +1736,11 @@ am{ one{"{0} mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"ፓስካል"} + one{"{0} ፓስካል"} + other{"{0} ፓስካል"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} @@ -1803,11 +1797,6 @@ am{ one{"{0} ኒ.ሜ"} other{"{0} ኒ.ሜ"} } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } } volume{ acre-foot{ @@ -1882,11 +1871,6 @@ am{ one{"{0} fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} one{"{0} gal"} diff --git a/source/data/unit/ar.txt b/source/data/unit/ar.txt index 5a249b3..ef43d51 100644 --- a/source/data/unit/ar.txt +++ b/source/data/unit/ar.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ar{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -35,7 +35,7 @@ ar{ many{"{0} دقيقة قوسية"} one{"دقيقة قوسية"} other{"{0} دقيقة قوسية"} - two{"{0} دقيقة قوسية"} + two{"دقيقتان قوسيتان"} zero{"{0} دقيقة قوسية"} } arc-second{ @@ -67,11 +67,11 @@ ar{ } revolution{ dnam{"دورة"} - few{"{0} دورة"} + few{"{0} دورات"} many{"{0} دورة"} one{"دورة"} other{"{0} دورة"} - two{"{0} دورة"} + two{"دورتان"} zero{"{0} دورة"} } } @@ -178,11 +178,11 @@ ar{ concentr{ karat{ dnam{"قيراط"} - few{"{0} قيراط"} - many{"{0} قيراط"} + few{"{0} قراريط"} + many{"{0} قيراطًا"} one{"قيراط"} other{"{0} قيراط"} - two{"{0} قيراط"} + two{"قيراطان"} zero{"{0} قيراط"} } milligram-per-deciliter{ @@ -214,11 +214,11 @@ ar{ } part-per-million{ dnam{"جزء في المليون"} - few{"{0} جزء في المليون"} - many{"{0} جزء في المليون"} + few{"{0} أجزاء في المليون"} + many{"{0} جزءًا في المليون"} one{"{0} جزء في المليون"} other{"{0} جزء في المليون"} - two{"{0} جزء في المليون"} + two{"جزآن في المليون"} zero{"{0} جزء في المليون"} } percent{ @@ -239,51 +239,42 @@ ar{ two{"{0} في الألف"} zero{"{0} في الألف"} } - permyriad{ - dnam{"‱"} - few{"{0}‱"} - many{"{0}‱"} - one{"{0}‱"} - other{"{0}‱"} - two{"{0}‱"} - zero{"{0}‱"} - } } consumption{ liter-per-100kilometers{ dnam{"لتر لكل ١٠٠ كيلومتر"} - few{"{0} لتر لكل ١٠٠ كيلومتر"} - many{"{0} لتر لكل ١٠٠ كيلومتر"} + few{"{0} لترات لكل ١٠٠ كيلومتر"} + many{"{0} لترًا لكل ١٠٠ كيلومتر"} one{"{0} لتر لكل ١٠٠ كيلومتر"} other{"{0} لتر لكل ١٠٠ كيلومتر"} - two{"{0} لتر لكل ١٠٠ كيلومتر"} + two{"لتران لكل ١٠٠ كيلومتر"} zero{"{0} لتر لكل ١٠٠ كيلومتر"} } liter-per-kilometer{ dnam{"لتر لكل كيلومتر"} - few{"{0} لتر لكل كيلومتر"} - many{"{0} لتر لكل كيلومتر"} + few{"{0} لترات لكل كيلومتر"} + many{"{0} لترًا لكل كيلومتر"} one{"{0} لتر لكل كيلومتر"} other{"{0} لتر لكل كيلومتر"} - two{"{0} لتر لكل كيلومتر"} + two{"لتران لكل كيلومتر"} zero{"{0} لتر لكل كيلومتر"} } mile-per-gallon{ dnam{"ميل لكل غالون"} - few{"{0} ميل لكل غالون"} - many{"{0} ميل لكل غالون"} + few{"{0} أميال لكل غالون"} + many{"{0} ميلًا لكل غالون"} one{"{0} ميل لكل غالون"} other{"{0} ميل لكل غالون"} - two{"{0} ميل لكل غالون"} + two{"ميلان لكل غالون"} zero{"{0} ميل لكل غالون"} } mile-per-gallon-imperial{ dnam{"ميل لكل غالون إمبراطوري"} - few{"{0} ميل لكل غالون إمبراطوري"} - many{"{0} ميل لكل غالون إمبراطوري"} + few{"{0} أميال لكل غالون إمبراطوري"} + many{"{0} ميلًا لكل غالون إمبراطوري"} one{"{0} ميل لكل غالون إمبراطوري"} other{"{0} ميل لكل غالون إمبراطوري"} - two{"{0} ميل لكل غالون إمبراطوري"} + two{"ميلان لكل غالون إمبراطوري"} zero{"{0} ميل لكل غالون إمبراطوري"} } } @@ -415,6 +406,15 @@ ar{ two{"يومان"} zero{"{0} يوم"} } + decade{ + dnam{"عقود"} + few{"{0} عقود"} + many{"{0} عقدًا"} + one{"عقد"} + other{"{0} عقد"} + two{"عقدان"} + zero{"{0} عقد"} + } hour{ dnam{"ساعات"} few{"{0} ساعات"} @@ -544,11 +544,11 @@ ar{ energy{ british-thermal-unit{ dnam{"وحدة حرارية بريطانية"} - few{"{0} وحدة حرارية بريطانية"} + few{"{0} وحدات حرارية بريطانية"} many{"{0} وحدة حرارية بريطانية"} one{"{0} وحدة حرارية بريطانية"} other{"{0} وحدة حرارية بريطانية"} - two{"{0} وحدة حرارية بريطانية"} + two{"وحدتان حراريتان بريطانيتان"} zero{"{0} وحدة حرارية بريطانية"} } calorie{ @@ -614,6 +614,15 @@ ar{ two{"{0} كيلو واط/ساعة"} zero{"{0} كيلو واط/ساعة"} } + therm-us{ + dnam{"وحدة حرارية أمريكية"} + few{"{0} وحدات حرارية أمريكية"} + many{"{0} وحدة حرارية أمريكية"} + one{"{0} وحدة حرارية أمريكية"} + other{"{0} وحدة حرارية أمريكية"} + two{"وحدتان حراريتان أمريكيتان"} + zero{"{0} وحدة حرارية أمريكية"} + } } force{ newton{ @@ -673,6 +682,71 @@ ar{ zero{"{0} ميغا هرتز"} } } + graphics{ + dot-per-centimeter{ + dnam{"نقطة لكل سنتيمتر"} + few{"{0} نقاط لكل سنتيمتر"} + many{"{0} نقطة لكل سنتيمتر"} + one{"{0} نقطة لكل سنتيمتر"} + other{"{0} نقطة لكل سنتيمتر"} + two{"نقطتان لكل سنتيمتر"} + zero{"{0} نقطة لكل سنتيمتر"} + } + dot-per-inch{ + dnam{"نقطة لكل بوصة"} + few{"{0} نقاط لكل بوصة"} + many{"{0} نقطة لكل بوصة"} + one{"{0} نقطة لكل بوصة"} + other{"{0} نقطة لكل بوصة"} + two{"نقطتان لكل بوصة"} + zero{"{0} نقطة لكل بوصة"} + } + em{ + dnam{"إم مطبعي"} + few{"{0} إم"} + many{"{0} إم"} + one{"{0} إم"} + other{"{0} إم"} + two{"{0} إم"} + zero{"{0} إم"} + } + megapixel{ + dnam{"ميغابكسل"} + few{"{0} ميغابكسل"} + many{"{0} ميغابكسل"} + one{"{0} ميغابكسل"} + other{"{0} ميغابكسل"} + two{"{0} ميغابكسل"} + zero{"{0} ميغابكسل"} + } + pixel{ + dnam{"بكسل"} + few{"{0} بكسل"} + many{"{0} بكسل"} + one{"{0} بكسل"} + other{"{0} بكسل"} + two{"{0} بكسل"} + zero{"{0} بكسل"} + } + pixel-per-centimeter{ + dnam{"بكسل لكل سنتيمتر"} + few{"{0} بكسل لكل سنتيمتر"} + many{"{0} بكسل لكل سنتيمتر"} + one{"{0} بكسل لكل سنتيمتر"} + other{"{0} بكسل لكل سنتيمتر"} + two{"{0} بكسل لكل سنتيمتر"} + zero{"{0} بكسل لكل سنتيمتر"} + } + pixel-per-inch{ + dnam{"بكسل لكل بوصة"} + few{"{0} بكسل لكل بوصة"} + many{"{0} بكسل لكل بوصة"} + one{"{0} بكسل لكل بوصة"} + other{"{0} بكسل لكل بوصة"} + two{"{0} بكسل لكل بوصة"} + zero{"{0} بكسل لكل بوصة"} + } + } length{ astronomical-unit{ dnam{"وحدة فلكية"} @@ -833,13 +907,13 @@ ar{ zero{"{0} نقطة"} } solar-radius{ - dnam{"نصف قطر الشمس"} - few{"{0} نصف قطر الشمس"} - many{"{0} نصف قطر الشمس"} - one{"{0} نصف قطر الشمس"} - other{"{0} نصف قطر الشمس"} - two{"{0} نصف قطر الشمس"} - zero{"{0} نصف قطر الشمس"} + dnam{"نصف قطر شمسي"} + few{"{0} نصف قطر شمسي"} + many{"{0} نصف قطر شمسي"} + one{"{0} نصف قطر شمسي"} + other{"{0} نصف قطر شمسي"} + two{"{0} نصف قطر شمسي"} + zero{"{0} نصف قطر شمسي"} } yard{ dnam{"ياردة"} @@ -848,7 +922,7 @@ ar{ one{"ياردة"} other{"{0} ياردة"} two{"{0} ياردة"} - zero{"ياردة"} + zero{"{0} ياردة"} } } light{ @@ -868,36 +942,36 @@ ar{ one{"{0} ضياء شمسي"} other{"{0} ضياء شمسي"} two{"{0} ضياء شمسي"} - zero{"{0} L☉"} + zero{"{0} ضياء شمسي"} } } mass{ carat{ dnam{"قيراط"} - few{"{0} قيراط"} - many{"{0} قيراط"} + few{"{0} قراريط"} + many{"{0} قيراطًا"} one{"قيراط"} other{"{0} قيراط"} - two{"{0} قيراط"} + two{"قيراطان"} zero{"{0} قيراط"} } dalton{ dnam{"دالتون"} - few{"{0} Da"} - many{"{0} Da"} + few{"{0} دالتون"} + many{"{0} دالتون"} one{"{0} دالتون"} other{"{0} دالتون"} - two{"{0} Da"} - zero{"{0} Da"} + two{"{0} دالتون"} + zero{"{0} دالتون"} } earth-mass{ - dnam{"كتلة الأرض"} - few{"{0} كتلة الأرض"} - many{"{0} كتلة الأرض"} - one{"{0} كتلة الأرض"} - other{"{0} كتلة الأرض"} - two{"{0} كتلة الأرض"} - zero{"{0} كتلة الأرض"} + dnam{"كتلة أرضية"} + few{"{0} كتلة أرضية"} + many{"{0} كتلة أرضية"} + one{"{0} كتلة أرضية"} + other{"{0} كتلة أرضية"} + two{"{0} كتلة أرضية"} + zero{"{0} كتلة أرضية"} } gram{ dnam{"غرام"} @@ -967,12 +1041,12 @@ ar{ } pound{ dnam{"رطل"} - few{"{0} رطل"} - many{"{0} رطل"} + few{"{0} أرطل"} + many{"{0} رطلًا"} one{"{0} رطل"} other{"{0} رطل"} per{"{0}/رطل"} - two{"{0} رطل"} + two{"رطلان"} zero{"{0} رطل"} } solar-mass{ @@ -986,11 +1060,11 @@ ar{ } ton{ dnam{"طن"} - few{"{0} طن"} - many{"{0} طن"} + few{"{0} أطنان"} + many{"{0} طنًا"} one{"{0} طن"} other{"{0} طن"} - two{"{0} طن"} + two{"طنان"} zero{"{0} طن"} } } @@ -1060,6 +1134,15 @@ ar{ two{"{0} ض.ج"} zero{"{0} ض.ج"} } + bar{ + dnam{"بار"} + few{"{0} بار"} + many{"{0} بار"} + one{"{0} بار"} + other{"{0} بار"} + two{"{0} بار"} + zero{"{0} بار"} + } hectopascal{ dnam{"هكتوباسكال"} few{"{0} هكتوباسكال"} @@ -1114,6 +1197,15 @@ ar{ two{"{0} مليمتر زئبقي"} zero{"{0} مليمتر زئبقي"} } + pascal{ + dnam{"باسكال"} + few{"{0} باسكال"} + many{"{0} باسكال"} + one{"{0} باسكال"} + other{"{0} باسكال"} + two{"{0} باسكال"} + zero{"{0} باسكال"} + } pound-per-square-inch{ dnam{"رطل لكل بوصة مربعة"} few{"{0} رطل لكل بوصة مربعة"} @@ -1232,11 +1324,11 @@ ar{ } barrel{ dnam{"برميل"} - few{"{0} برميل"} - many{"{0} برميل"} - one{"{0} برميل"} + few{"{0} براميل"} + many{"{0} برميلًا"} + one{"برميل"} other{"{0} برميل"} - two{"{0} برميل"} + two{"برميلان"} zero{"{0} برميل"} } centiliter{ @@ -1350,13 +1442,13 @@ ar{ zero{"{0} أونصة سائلة"} } fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - few{"{0} fl oz Imp."} - many{"{0} fl oz Imp."} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - two{"{0} fl oz Imp."} - zero{"{0} fl oz Imp."} + dnam{"أونصة سائلة إمبراطورية"} + few{"{0} أونصات سائلة إمبراطورية"} + many{"{0} أونصة سائلة إمبراطورية"} + one{"{0} أونصة سائلة إمبراطورية"} + other{"{0} أونصة سائلة إمبراطورية"} + two{"أونصتان سائلتان إمبراطوريتان"} + zero{"{0} أونصة سائلة إمبراطورية"} } gallon{ dnam{"غالون"} @@ -1622,10 +1714,10 @@ ar{ dnam{"شهر"} few{"{0} شهر"} many{"{0} شهر"} - one{"{0} شهر"} + one{"شهر"} other{"{0} شهر"} per{"{0}/ش"} - two{"{0} شهر"} + two{"شهران"} zero{"{0} شهر"} } second{ @@ -2072,6 +2164,7 @@ ar{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -2103,12 +2196,12 @@ ar{ } mole{ dnam{"مول"} - few{"{0} mol"} - many{"{0} mol"} - one{"{0} mol"} - other{"{0} mol"} - two{"{0} mol"} - zero{"{0} mol"} + few{"{0} مول"} + many{"{0} مول"} + one{"{0} مول"} + other{"{0} مول"} + two{"{0} مول"} + zero{"{0} مول"} } part-per-million{ dnam{"جزء/مليون"} @@ -2131,15 +2224,6 @@ ar{ permille{ dnam{"في الألف"} } - permyriad{ - dnam{"‱"} - few{"{0}‱"} - many{"{0}‱"} - one{"{0}‱"} - other{"{0}‱"} - two{"{0}‱"} - zero{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -2299,14 +2383,23 @@ ar{ } day{ dnam{"أيام"} - few{"{0} يوم"} - many{"{0} يوم"} + few{"{0} أيام"} + many{"{0} يومًا"} one{"يوم"} other{"{0} يوم"} per{"{0}/ي"} two{"يومان"} zero{"{0} يوم"} } + decade{ + dnam{"عقد"} + few{"{0} عقود"} + many{"{0} عقدًا"} + one{"عقد"} + other{"{0} عقد"} + two{"عقدان"} + zero{"{0} عقد"} + } hour{ dnam{"ساعة"} few{"{0} س"} @@ -2347,12 +2440,12 @@ ar{ } month{ dnam{"شهور"} - few{"{0} شهر"} - many{"{0} شهر"} + few{"{0} أشهر"} + many{"{0} شهرًا"} one{"شهر"} other{"{0} شهر"} per{"{0}/ش"} - two{"{0} شهر"} + two{"شهران"} zero{"{0} شهر"} } nanosecond{ @@ -2386,7 +2479,7 @@ ar{ } year{ dnam{"سنة"} - few{"{0} سنة"} + few{"{0} سنوات"} many{"{0} سنة"} one{"سنة واحدة"} other{"{0} سنة"} @@ -2435,13 +2528,13 @@ ar{ } energy{ british-thermal-unit{ - dnam{"Btu"} - few{"{0} Btu"} - many{"{0} Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - two{"{0} Btu"} - zero{"{0} Btu"} + dnam{"وحدة حرارية بريطانية"} + few{"{0} وحدات حرارية بريطانية"} + many{"{0} وحدة حرارية بريطانية"} + one{"{0} وحدة حرارية بريطانية"} + other{"{0} وحدة حرارية بريطانية"} + two{"{0} وحدة حرارية بريطانية"} + zero{"{0} وحدة حرارية بريطانية"} } calorie{ dnam{"سع"} @@ -2454,12 +2547,12 @@ ar{ } electronvolt{ dnam{"إلكترون فولت"} - few{"{0} eV"} - many{"{0} eV"} - one{"{0} eV"} - other{"{0} eV"} - two{"{0} eV"} - zero{"{0} eV"} + few{"{0} إلكترون فولت"} + many{"{0} إلكترون فولت"} + one{"{0} إلكترون فولت"} + other{"{0} إلكترون فولت"} + two{"{0} إلكترون فولت"} + zero{"{0} إلكترون فولت"} } foodcalorie{ dnam{"سع"} @@ -2506,25 +2599,34 @@ ar{ two{"{0} ك.و.س"} zero{"{0} ك.و.س"} } + therm-us{ + dnam{"وحدة حرارية أمريكية"} + few{"{0} وحدات حرارية أمريكية"} + many{"{0} وحدة حرارية أمريكية"} + one{"{0} وحدة حرارية أمريكية"} + other{"{0} وحدة حرارية أمريكية"} + two{"{0} وحدة حرارية أمريكية"} + zero{"{0} وحدة حرارية أمريكية"} + } } force{ newton{ dnam{"نيوتن"} - few{"{0} N"} - many{"{0} N"} - one{"{0} N"} - other{"{0} N"} - two{"{0} N"} - zero{"{0} N"} + few{"{0} نيوتن"} + many{"{0} نيوتن"} + one{"{0} نيوتن"} + other{"{0} نيوتن"} + two{"{0} نيوتن"} + zero{"{0} نيوتن"} } pound-force{ dnam{"باوند قوة"} - few{"{0} lbf"} - many{"{0} lbf"} - one{"{0} lbf"} - other{"{0} lbf"} - two{"{0} lbf"} - zero{"{0} lbf"} + few{"{0} باوند قوة"} + many{"{0} باوند قوة"} + one{"{0} باوند قوة"} + other{"{0} باوند قوة"} + two{"{0} باوند قوة"} + zero{"{0} باوند قوة"} } } frequency{ @@ -2565,6 +2667,71 @@ ar{ zero{"{0} م هرتز"} } } + graphics{ + dot-per-centimeter{ + dnam{"نقطة لكل سنتيمتر"} + few{"{0} نقاط/سم"} + many{"{0} نقطة/سم"} + one{"{0} نقطة/سم"} + other{"{0} نقطة/سم"} + two{"نقطتان/سم"} + zero{"{0} نقطة/سم"} + } + dot-per-inch{ + dnam{"نقطة لكل بوصة"} + few{"{0} نقاط/بوصة"} + many{"{0} نقطة/بوصة"} + one{"{0} نقطة/بوصة"} + other{"{0} نقطة/بوصة"} + two{"نقطتان/بوصة"} + zero{"{0} نقطة/بوصة"} + } + em{ + dnam{"إم"} + few{"{0} إم"} + many{"{0} إم"} + one{"{0} إم"} + other{"{0} إم"} + two{"{0} إم"} + zero{"{0} إم"} + } + megapixel{ + dnam{"م.بكسل"} + few{"{0} م.بكسل"} + many{"{0} م.بكسل"} + one{"{0} م.بكسل"} + other{"{0} م.بكسل"} + two{"{0} م.بكسل"} + zero{"{0} م.بكسل"} + } + pixel{ + dnam{"بكسل"} + few{"{0} بكسل"} + many{"{0} بكسل"} + one{"{0} بكسل"} + other{"{0} بكسل"} + two{"{0} بكسل"} + zero{"{0} بكسل"} + } + pixel-per-centimeter{ + dnam{"بكسل لكل سنتيمتر"} + few{"{0} بكسل/سم"} + many{"{0} بكسل/سم"} + one{"{0} بكسل/سم"} + other{"{0} بكسل/سم"} + two{"{0} بكسل/سم"} + zero{"{0} بكسل/سم"} + } + pixel-per-inch{ + dnam{"بكسل لكل بوصة"} + few{"{0} بكسل/بوصة"} + many{"{0} بكسل/بوصة"} + one{"{0} بكسل/بوصة"} + other{"{0} بكسل/بوصة"} + two{"{0} بكسل/بوصة"} + zero{"{0} بكسل/بوصة"} + } + } length{ astronomical-unit{ dnam{"و.ف."} @@ -2717,21 +2884,21 @@ ar{ } point{ dnam{"نقطة"} - few{"{0} ن"} - many{"{0} ن"} - one{"{0} ن"} - other{"{0} ن"} - two{"{0} ن"} - zero{"{0} ن"} + few{"{0} نقاط"} + many{"{0} نقطة"} + one{"نقطة"} + other{"{0} نقطة"} + two{"نقطتان"} + zero{"{0} نقطة"} } solar-radius{ - dnam{"R☉"} - few{"{0} R☉"} - many{"{0} R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - two{"{0} R☉"} - zero{"{0} R☉"} + dnam{"نق شمسي"} + few{"{0} نق شمسي"} + many{"{0} نق شمسي"} + one{"{0} نق شمسي"} + other{"{0} نق شمسي"} + two{"{0} نق شمسي"} + zero{"{0} نق شمسي"} } yard{ dnam{"ياردة"} @@ -2755,12 +2922,12 @@ ar{ } solar-luminosity{ dnam{"ضياء شمسي"} - few{"{0} L☉"} - many{"{0} L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - two{"{0} L☉"} - zero{"{0} L☉"} + few{"{0} ضياء شمسي"} + many{"{0} ضياء شمسي"} + one{"{0} ضياء شمسي"} + other{"{0} ضياء شمسي"} + two{"{0} ضياء شمسي"} + zero{"{0} ضياء شمسي"} } } mass{ @@ -2774,22 +2941,22 @@ ar{ zero{"{0} قيراط"} } dalton{ - dnam{"Da"} - few{"{0} Da"} - many{"{0} Da"} - one{"{0} Da"} - other{"{0} Da"} - two{"{0} Da"} - zero{"{0} Da"} + dnam{"دالتون"} + few{"{0} دالتون"} + many{"{0} دالتون"} + one{"{0} دالتون"} + other{"{0} دالتون"} + two{"{0} دالتون"} + zero{"{0} دالتون"} } earth-mass{ - dnam{"M⊕"} - few{"{0} M⊕"} - many{"{0} M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - two{"{0} M⊕"} - zero{"{0} M⊕"} + dnam{"كتلة أرضية"} + few{"{0} كتلة أرضية"} + many{"{0} كتلة أرضية"} + one{"{0} كتلة أرضية"} + other{"{0} كتلة أرضية"} + two{"{0} كتلة أرضية"} + zero{"{0} كتلة أرضية"} } gram{ dnam{"غرام"} @@ -2868,13 +3035,13 @@ ar{ zero{"{0} رطل"} } solar-mass{ - dnam{"M☉"} - few{"{0} M☉"} - many{"{0} M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - two{"{0} M☉"} - zero{"{0} M☉"} + dnam{"كتلة شمسية"} + few{"{0} كتلة شمسية"} + many{"{0} كتلة شمسية"} + one{"{0} كتلة شمسية"} + other{"{0} كتلة شمسية"} + two{"{0} كتلة شمسية"} + zero{"{0} كتلة شمسية"} } ton{ dnam{"طن"} @@ -2952,6 +3119,15 @@ ar{ two{"{0} ض.ج"} zero{"{0} ض.ج"} } + bar{ + dnam{"بار"} + few{"{0} بار"} + many{"{0} بار"} + one{"{0} بار"} + other{"{0} بار"} + two{"{0} بار"} + zero{"{0} بار"} + } hectopascal{ dnam{"هكتوباسكال"} few{"{0} هكتوباسكال"} @@ -2971,22 +3147,22 @@ ar{ zero{"{0} ب. زئبقية"} } kilopascal{ - dnam{"kPa"} - few{"{0} kPa"} - many{"{0} kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - two{"{0} kPa"} - zero{"{0} kPa"} + dnam{"ك.باسكال"} + few{"{0} ك.باسكال"} + many{"{0} ك.باسكال"} + one{"{0} ك.باسكال"} + other{"{0} ك.باسكال"} + two{"{0} ك.باسكال"} + zero{"{0} ك.باسكال"} } megapascal{ - dnam{"MPa"} - few{"{0} MPa"} - many{"{0} MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - two{"{0} MPa"} - zero{"{0} MPa"} + dnam{"م.باسكال"} + few{"{0} م.باسكال"} + many{"{0} م.باسكال"} + one{"{0} م.باسكال"} + other{"{0} م.باسكال"} + two{"{0} م.باسكال"} + zero{"{0} م.باسكال"} } millibar{ dnam{"م. بار"} @@ -3006,6 +3182,15 @@ ar{ two{"{0} ملم زئبقي"} zero{"{0} ملم زئبقي"} } + pascal{ + dnam{"باسكال"} + few{"{0} باسكال"} + many{"{0} باسكال"} + one{"{0} باسكال"} + other{"{0} باسكال"} + two{"{0} باسكال"} + zero{"{0} باسكال"} + } pound-per-square-inch{ dnam{"رطل/بوصة مربعة"} few{"{0} رطل/بوصة²"} @@ -3094,22 +3279,22 @@ ar{ } torque{ newton-meter{ - dnam{"N⋅m"} - few{"{0} N⋅m"} - many{"{0} N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - two{"{0} N⋅m"} - zero{"{0} N⋅m"} + dnam{"نيوتن متر"} + few{"{0} نيوتن متر"} + many{"{0} نيوتن متر"} + one{"{0} نيوتن متر"} + other{"{0} نيوتن متر"} + two{"{0} نيوتن متر"} + zero{"{0} نيوتن متر"} } pound-foot{ - dnam{"lbf⋅ft"} - few{"{0} lbf⋅ft"} - many{"{0} lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - two{"{0} lbf⋅ft"} - zero{"{0} lbf⋅ft"} + dnam{"باوند قدم"} + few{"{0} باوند قدم"} + many{"{0} باوند قدم"} + one{"{0} باوند قدم"} + other{"{0} باوند قدم"} + two{"{0} باوند قدم"} + zero{"{0} باوند قدم"} } } volume{ @@ -3123,13 +3308,13 @@ ar{ zero{"{0} فدان قدم"} } barrel{ - dnam{"bbl"} - few{"{0} bbl"} - many{"{0} bbl"} - one{"{0} bbl"} - other{"{0} bbl"} - two{"{0} bbl"} - zero{"{0} bbl"} + dnam{"برميل"} + few{"{0} براميل"} + many{"{0} برميلًا"} + one{"برميل"} + other{"{0} برميل"} + two{"برميلان"} + zero{"{0} برميل"} } centiliter{ dnam{"سنتيلتر"} @@ -3233,22 +3418,16 @@ ar{ zero{"{0} ديسيلتر"} } fluid-ounce{ - dnam{"أونصة س"} - few{"{0} أونصة س"} + dnam{"أونصة سائلة"} + few{"{0} أونصات سائلة"} many{"{0} أونصة س"} one{"أونصة س"} - other{"{0} أونصة س"} + other{"{0} أونصة سائلة"} two{"{0} أونصة س"} - zero{"{0} أونصة س"} + zero{"{0} أونصة سائلة"} } fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - few{"{0} fl oz Imp."} - many{"{0} fl oz Imp."} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - two{"{0} fl oz Imp."} - zero{"{0} fl oz Imp."} + dnam{"أونصة سائلة إمبراطورية"} } gallon{ dnam{"غالون"} diff --git a/source/data/unit/ar_SA.txt b/source/data/unit/ar_SA.txt index 00baa1f..918fe86 100644 --- a/source/data/unit/ar_SA.txt +++ b/source/data/unit/ar_SA.txt @@ -1,8 +1,815 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License -/** - * generated alias target - */ ar_SA{ - ___{""} + Version{"36"} + units{ + acceleration{ + meter-per-second-squared{ + few{"{0} أمتار في الثانية المربعة"} + many{"{0} مترًا في الثانية المربعة"} + one{"{0} متر في الثانية المربعة"} + other{"{0} متر في الثانية المربعة"} + two{"متران في الثانية المربعة"} + zero{"{0} متر في الثانية المربعة"} + } + } + angle{ + arc-minute{ + few{"{0} دقائق قوسية"} + many{"{0} دقيقة قوسية"} + one{"دقيقة قوسية"} + other{"{0} دقيقة قوسية"} + two{"دقيقتان قوسيتان"} + zero{"{0} دقيقة قوسية"} + } + } + area{ + acre{ + few{"{0} أفدنة"} + many{"{0} فدانًا"} + one{"فدان"} + other{"{0} فدان"} + two{"{0} فدان"} + zero{"{0} فدان"} + } + hectare{ + few{"{0} هكتارات"} + many{"{0} هكتارًا"} + one{"{0} هكتار"} + other{"{0} هكتار"} + two{"هكتاران"} + zero{"{0} هكتار"} + } + square-centimeter{ + few{"{0} سنتيمترات مربعة"} + many{"{0} سنتيمترًا مربعًا"} + one{"{0} سنتيمتر مربع"} + other{"{0} سنتيمتر مربع"} + two{"سنتيمتران مربعان"} + zero{"{0} سنتيمتر مربع"} + } + square-foot{ + few{"{0} أقدام مربعة"} + many{"{0} قدمًا مربعة"} + one{"قدم مربعة"} + other{"{0} قدم مربعة"} + two{"قدمان مربعتان"} + zero{"{0} قدم مربعة"} + } + square-inch{ + few{"{0} بوصات مربعة"} + many{"{0} بوصة مربعة"} + one{"{0} بوصة مربعة"} + other{"{0} بوصة مربعة"} + two{"بوصتان مربعتان"} + zero{"{0} بوصة مربعة"} + } + square-kilometer{ + few{"{0} كيلومترات مربعة"} + many{"{0} كيلومترًا مربعًا"} + one{"{0} كيلومتر مربع"} + other{"{0} كيلومتر مربع"} + two{"كيلومتران مربعان"} + zero{"{0} كيلومتر مربع"} + } + square-meter{ + few{"{0} أمتار مربعة"} + many{"{0} مترًا مربعًا"} + one{"{0} متر مربع"} + other{"{0} متر مربع"} + two{"متران مربعان"} + zero{"{0} متر مربع"} + } + square-mile{ + few{"{0} أميال مربعة"} + many{"{0} ميلًا مربعًا"} + one{"{0} ميل مربع"} + other{"{0} ميل مربع"} + two{"ميلان مربعان"} + zero{"{0} ميل مربع"} + } + square-yard{ + few{"{0} ياردات مربعة"} + many{"{0} ياردة مربعة"} + one{"{0} ياردة مربعة"} + other{"{0} ياردة مربعة"} + two{"ياردتان مربعتان"} + zero{"{0} ياردة مربعة"} + } + } + concentr{ + part-per-million{ + few{"{0} أجزاء في المليون"} + many{"{0} جزءًا في المليون"} + one{"{0} جزء في المليون"} + other{"{0} جزء في المليون"} + two{"جزءان في المليون"} + zero{"{0} جزء في المليون"} + } + } + consumption{ + mile-per-gallon{ + few{"{0} أميال لكل غالون"} + many{"{0} ميلًا لكل غالون"} + one{"{0} ميل لكل غالون"} + other{"{0} ميل لكل غالون"} + two{"{0} ميلان لكل غالون"} + zero{"{0} ميل لكل غالون"} + } + } + duration{ + second{ + few{"{0} ثوانٍ"} + many{"{0} ثانية"} + one{"ثانية"} + other{"{0} ثانية"} + two{"ثانيتان"} + zero{"{0} ثانية"} + } + } + length{ + astronomical-unit{ + few{"{0} وحدات فلكية"} + many{"{0} وحدة فلكية"} + one{"وحدة فلكية"} + other{"{0} وحدة فلكية"} + two{"وحدتان فلكيتان"} + zero{"{0} وحدة فلكية"} + } + centimeter{ + few{"{0} سنتيمترات"} + many{"{0} سنتيمترًا"} + one{"{0} سنتيمتر"} + other{"{0} سنتيمتر"} + two{"سنتيمتران"} + zero{"{0} سنتيمتر"} + } + foot{ + few{"{0} أقدام"} + many{"{0} قدمًا"} + one{"قدم"} + other{"{0} قدم"} + two{"قدمان"} + zero{"{0} قدم"} + } + inch{ + few{"{0} بوصات"} + many{"{0} بوصة"} + one{"{0} بوصة"} + other{"{0} بوصة"} + two{"بوصتان"} + zero{"{0} بوصة"} + } + kilometer{ + few{"{0} كيلومترات"} + many{"{0} كيلومترًا"} + one{"{0} كيلومتر"} + other{"{0} كيلومتر"} + two{"كيلومتران"} + zero{"{0} كيلومتر"} + } + mile-scandinavian{ + few{"{0} أميال اسكندنافية"} + many{"{0} ميلًا اسكندنافيًا"} + one{"{0} ميل اسكندنافي"} + other{"{0} ميل اسكندنافي"} + two{"ميلان اسكندنافيان"} + zero{"{0} ميل اسكندنافي"} + } + millimeter{ + few{"{0} مليمتر"} + many{"{0} مليمترًا"} + one{"{0} مليمتر"} + other{"{0} مليمتر"} + two{"مليمتران"} + zero{"{0} مليمتر"} + } + nautical-mile{ + few{"{0} أميال بحرية"} + many{"{0} ميلًا بحريًا"} + one{"ميل بحري"} + other{"{0} ميل بحري"} + two{"ميلان بحريان"} + zero{"{0} ميل بحري"} + } + parsec{ + few{"{0} فراسخ فلكية"} + many{"{0} فرسخًا فلكيًا"} + one{"فرسخ فلكي"} + other{"{0} فرسخ فلكي"} + two{"فرسخان فلكيان"} + zero{"{0} فرسخ فلكي"} + } + yard{ + few{"{0} ياردات"} + many{"{0} ياردة"} + one{"ياردة"} + other{"{0} ياردة"} + two{"ياردتان"} + zero{"{0} ياردة"} + } + } + light{ + solar-luminosity{ + few{"{0} ضياءات شمسية"} + many{"{0} ضياءً شمسيًا"} + one{"{0} ضياء شمسي"} + other{"{0} ضياء شمسي"} + two{"ضياءان شمسيان"} + zero{"{0} ضياء شمسي"} + } + } + mass{ + earth-mass{ + few{"{0} كتل أرضية"} + many{"{0} كتلة أرضية"} + one{"{0} كتلة أرضية"} + other{"{0} كتلة أرضية"} + two{"كتلتان أرضيتان"} + zero{"{0} كتلة أرضية"} + } + kilogram{ + few{"{0} كيلوغرامات"} + many{"{0} كيلوغرامًا"} + one{"{0} كيلوغرام"} + other{"{0} كيلوغرام"} + two{"كيلوغرامان"} + zero{"{0} كيلوغرام"} + } + metric-ton{ + few{"{0} أطنان مترية"} + many{"{0} طنًا متريًا"} + one{"{0} طن متري"} + other{"{0} طن متري"} + two{"طنان متريان"} + zero{"{0} طن متري"} + } + microgram{ + few{"{0} ميكروغرامات"} + many{"{0} ميكروغرامًا"} + one{"{0} ميكروغرام"} + other{"{0} ميكروغرام"} + two{"ميكروغرامان"} + zero{"{0} ميكروغرام"} + } + milligram{ + few{"{0} مليغرامات"} + many{"{0} مليغرامًا"} + one{"{0} مليغرام"} + other{"{0} مليغرام"} + two{"مليغرامان"} + zero{"{0} مليغرام"} + } + pound{ + few{"{0} أرطال"} + many{"{0} رطلًا"} + one{"{0} رطل"} + other{"{0} رطل"} + two{"رطلان"} + zero{"{0} رطل"} + } + solar-mass{ + few{"{0} كتل شمسية"} + many{"{0} كتلة شمسية"} + one{"{0} كتلة شمسية"} + other{"{0} كتلة شمسية"} + two{"كتلتان شمسيتان"} + zero{"{0} كتلة شمسية"} + } + } + pressure{ + pound-per-square-inch{ + few{"{0} أرطال لكل بوصة مربعة"} + many{"{0} رطلًا لكل بوصة مربعة"} + one{"{0} رطل لكل بوصة مربعة"} + other{"{0} رطل لكل بوصة مربعة"} + two{"رطلان لكل بوصة مربعة"} + zero{"{0} رطل لكل بوصة مربعة"} + } + } + speed{ + kilometer-per-hour{ + few{"{0} كيلومترات في الساعة"} + many{"{0} كيلومترًا في الساعة"} + one{"{0} كيلومتر في الساعة"} + other{"{0} كيلومتر في الساعة"} + two{"كيلومتران في الساعة"} + zero{"{0} كيلومتر في الساعة"} + } + knot{ + few{"{0} عقد"} + many{"{0} عقدة"} + one{"{0} عقدة"} + other{"{0} عقدة"} + two{"عقدتان"} + zero{"{0} عقدة"} + } + meter-per-second{ + few{"{0} أمتار في الثانية"} + many{"{0} مترًا في الثانية"} + one{"{0} متر في الثانية"} + other{"{0} متر في الثانية"} + two{"متران في الثانية"} + zero{"{0} متر في الثانية"} + } + mile-per-hour{ + few{"{0} أميال في الساعة"} + many{"{0} ميلًا في الساعة"} + one{"{0} ميل في الساعة"} + other{"{0} ميل في الساعة"} + two{"ميلان في الساعة"} + zero{"{0} ميل في الساعة"} + } + } + volume{ + cubic-centimeter{ + few{"{0} سنتيمترات مكعبة"} + many{"{0} سنتيمترًا مكعبًا"} + one{"{0} سنتيمتر مكعب"} + other{"{0} سنتيمتر مكعب"} + two{"سنتيمتران مكعبان"} + zero{"{0} سنتيمتر مكعب"} + } + cubic-foot{ + few{"{0} أقدام مكعبة"} + many{"{0} أقدام مكعبة"} + one{"قدم مكعبة"} + other{"{0} قدم مكعبة"} + two{"قدمان مكعبتان"} + zero{"{0} قدم مكعبة"} + } + cubic-inch{ + few{"{0} بوصات مكعبة"} + many{"{0} بوصة مكعبة"} + one{"{0} بوصة مكعبة"} + other{"{0} بوصة مكعبة"} + two{"بوصتان مكعبات"} + zero{"{0} بوصة مكعبة"} + } + cubic-kilometer{ + few{"{0} كيلومترات مكعبة"} + many{"{0} كيلومترًا مكعبًا"} + one{"{0} كيلومتر مكعب"} + other{"{0} كيلومتر مكعب"} + two{"كيلومتران مكعبان"} + zero{"{0} كيلومتر مكعب"} + } + cubic-meter{ + few{"{0} مترات مكعبة"} + many{"{0} مترًا مكعبًا"} + one{"{0} متر مكعب"} + other{"{0} متر مكعب"} + two{"متران مكعبان"} + zero{"{0} متر مكعب"} + } + cubic-mile{ + few{"{0} أميال مكعبة"} + many{"{0} ميلًا مكعبًا"} + one{"{0} ميل مكعب"} + other{"{0} ميل مكعب"} + two{"ميلان مكعبان"} + zero{"{0} ميل مكعب"} + } + cubic-yard{ + few{"{0} ياردات مكعبة"} + many{"{0} ياردة مكعبة"} + one{"{0} ياردة مكعبة"} + other{"{0} ياردة مكعبة"} + two{"ياردتان مكعبتان"} + zero{"{0} ياردة مكعبة"} + } + cup-metric{ + few{"{0} أكواب مترية"} + many{"{0} كوبًا متريًا"} + one{"{0} كوب متري"} + other{"{0} كوب متري"} + two{"كوبان متريان"} + zero{"{0} كوب متري"} + } + liter{ + few{"{0} لترات"} + many{"{0} لترًا"} + one{"لتر"} + other{"{0} لتر"} + two{"لتران"} + zero{"{0} لتر"} + } + pint-metric{ + few{"{0} مكاييل مترية"} + many{"{0} مكيالًا متريًا"} + one{"{0} مكيال متري"} + other{"{0} مكيال متري"} + two{"مكيالان متريان"} + zero{"{0} مكيال متري"} + } + tablespoon{ + few{"{0} ملاعق كبيرة"} + many{"{0} ملعقة كبيرة"} + one{"ملعقة كبيرة"} + other{"{0} ملعقة كبيرة"} + two{"ملعقتان كبيرتان"} + zero{"{0} ملعقة كبيرة"} + } + teaspoon{ + few{"{0} ملاعق صغيرة"} + many{"{0} ملعقة صغيرة"} + one{"ملعقة صغيرة"} + other{"{0} ملعقة صغيرة"} + two{"ملعقتان صغيرتان"} + zero{"{0} ملعقة صغيرة"} + } + } + } + unitsNarrow{ + coordinate{ + south{"{0} جنوب"} + west{"{0} غرب"} + } + duration{ + month{ + few{"{0} أشهر"} + many{"{0} شهرًا"} + one{"شهر"} + other{"{0} شهر"} + two{"شهران"} + zero{"{0} شهر"} + } + year{ + few{"{0} سنوات"} + many{"{0} سنة"} + one{"سنة"} + other{"{0} سنة"} + two{"سنتان"} + zero{"{0} سنة"} + } + } + mass{ + gram{ + dnam{"غم"} + few{"{0} غم"} + many{"{0} غم"} + one{"{0} غم"} + other{"{0} غم"} + two{"{0} غم"} + zero{"{0} غم"} + } + kilogram{ + dnam{"كغم"} + few{"{0} كغم"} + many{"{0} كغم"} + one{"{0} كغم"} + other{"{0} كغم"} + two{"{0} كغم"} + zero{"{0} كغم"} + } + } + } + unitsShort{ + angle{ + revolution{ + few{"{0} دورات"} + many{"{0} دورة"} + one{"دورة"} + other{"{0} دورة"} + two{"دورتان"} + zero{"{0} دورة"} + } + } + area{ + acre{ + few{"{0} أفدنة"} + many{"{0} فدانًا"} + one{"فدان"} + other{"{0} فدان"} + two{"فدانان"} + zero{"{0} فدان"} + } + hectare{ + few{"{0} هكتارات"} + many{"{0} هكتارًا"} + one{"{0} هكتار"} + other{"{0} هكتار"} + two{"هكتاران"} + zero{"{0} هكتار"} + } + } + concentr{ + karat{ + few{"{0} قراريط"} + many{"{0} قيراطًا"} + one{"قيراط"} + other{"{0} قيراط"} + two{"قيراطان"} + zero{"{0} قيراط"} + } + part-per-million{ + few{"{0} أجزاء/مليون"} + many{"{0} جزءًا/مليون"} + one{"{0} جزء/مليون"} + other{"{0} جزء/مليون"} + two{"جزءان/مليون"} + zero{"{0} جزء/مليون"} + } + } + consumption{ + liter-per-100kilometers{ + few{"{0} لترات/١٠٠ كم"} + many{"{0} لترًا/١٠٠ كم"} + one{"{0} لتر/١٠٠ كم"} + other{"{0} لتر/١٠٠ كم"} + two{"لتران/١٠٠ كم"} + zero{"{0} لتر/١٠٠ كم"} + } + liter-per-kilometer{ + few{"{0} لترات/كم"} + many{"{0} لترًا/كم"} + one{"{0} لتر/كم"} + other{"{0} لتر/كم"} + two{"لتران/كم"} + zero{"{0} لتر/كم"} + } + mile-per-gallon{ + few{"{0} أميال/غالون"} + many{"{0} ميلًا/غالون"} + one{"{0} ميل/غالون"} + other{"{0} ميل/غالون"} + two{"ميلان/غالون"} + zero{"{0} ميل/غالون"} + } + mile-per-gallon-imperial{ + few{"{0} أميال/غ. إمبراطوري"} + many{"{0} ميلًا/غ. إمبراطوري"} + one{"{0} ميل/غ. إمبراطوري"} + other{"{0} ميل/غ. إمبراطوري"} + two{"ميلان/غ. إمبراطوري"} + zero{"{0} ميل/غ. إمبراطوري"} + } + } + coordinate{ + south{"{0} جنوب"} + west{"{0} غرب"} + } + duration{ + year{ + dnam{"سنوات"} + few{"{0} سنوات"} + many{"{0} سنة"} + one{"سنة"} + other{"{0} سنة"} + two{"سنتان"} + zero{"{0} سنة"} + } + } + energy{ + british-thermal-unit{ + few{"{0} وحدات حرارية بريطانية"} + many{"{0} وحدة حرارية بريطانية"} + one{"{0} وحدة حرارية بريطانية"} + other{"{0} وحدة حرارية بريطانية"} + two{"{0} وحدة حرارية بريطانية"} + zero{"{0} وحدة حرارية بريطانية"} + } + } + length{ + foot{ + few{"{0} أقدام"} + many{"{0} قدمًا"} + one{"قدم"} + other{"{0} قدم"} + two{"قدمان"} + zero{"{0} قدم"} + } + inch{ + few{"{0} بوصات"} + many{"{0} بوصة"} + one{"{0} بوصة"} + other{"{0} بوصة"} + two{"بوصتان"} + zero{"{0} بوصة"} + } + mile{ + few{"{0} أميال"} + many{"{0} ميل"} + one{"ميل"} + other{"{0} ميل"} + two{"ميلان"} + zero{"{0} ميل"} + } + mile-scandinavian{ + few{"{0} أميال اسكندنافية"} + many{"{0} ميلًا اسكندنافيًا"} + one{"{0} ميل اسكندنافي"} + other{"{0} ميل اسكندنافي"} + two{"ميلان اسكندنافيان"} + zero{"{0} ميل اسكندنافي"} + } + nautical-mile{ + few{"{0} أميال بحرية"} + many{"{0} ميلًا بحريًا"} + one{"ميل بحري"} + other{"{0} ميل بحري"} + two{"ميلان بحريان"} + zero{"{0} ميل بحري"} + } + parsec{ + few{"{0} فراسخ فلكية"} + many{"{0} فرسخًا فلكيًا"} + one{"فرسخ فلكي"} + other{"{0} فرسخ فلكي"} + two{"فرسخان فلكيان"} + zero{"{0} فرسخ فلكي"} + } + yard{ + few{"{0} ياردات"} + many{"{0} ياردة"} + one{"ياردة"} + other{"{0} ياردة"} + two{"ياردتان"} + zero{"{0} ياردة"} + } + } + light{ + solar-luminosity{ + few{"{0} ضياءات شمسية"} + many{"{0} ضياءً شمسيًا"} + one{"{0} ضياء شمسي"} + other{"{0} ضياء شمسي"} + two{"ضياءان شمسيان"} + zero{"{0} ضياء شمسي"} + } + } + mass{ + carat{ + few{"{0} قراريط"} + many{"{0} قيراطًا"} + one{"{0} قيراط"} + other{"{0} قيراط"} + two{"قيراطان"} + zero{"{0} قيراط"} + } + earth-mass{ + few{"{0} كتل أرضية"} + many{"{0} كتلة أرضية"} + one{"{0} كتلة أرضية"} + other{"{0} كتلة أرضية"} + two{"كتلتان أرضيتان"} + zero{"{0} كتلة أرضية"} + } + gram{ + few{"{0} غرامات"} + many{"{0} غرامًا"} + one{"غرام"} + other{"{0} غرام"} + two{"غرامان"} + zero{"{0} غرام"} + } + pound{ + few{"{0} أرطال"} + many{"{0} رطلُا"} + one{"{0} رطل"} + other{"{0} رطل"} + two{"رطلان"} + zero{"{0} رطل"} + } + solar-mass{ + few{"{0} كتل شمسية"} + many{"{0} كتلة شمسية"} + one{"{0} كتلة شمسية"} + other{"{0} كتلة شمسية"} + two{"كتلتان شمسيتان"} + zero{"{0} كتلة شمسية"} + } + ton{ + few{"{0} أطنان"} + many{"{0} طنًا"} + one{"{0} طن"} + other{"{0} طن"} + two{"طنان"} + zero{"{0} طن"} + } + } + pressure{ + kilopascal{ + dnam{"كيلوباسكال"} + few{"{0} كيلوباسكال"} + many{"{0} كيلوباسكال"} + one{"{0} كيلوباسكال"} + other{"{0} كيلوباسكال"} + two{"{0} كيلوباسكال"} + zero{"{0} كيلوباسكال"} + } + megapascal{ + dnam{"ميغاباسكال"} + few{"{0} ميغاباسكال"} + many{"{0} ميغاباسكال"} + one{"{0} ميغاباسكال"} + other{"{0} ميغاباسكال"} + two{"{0} ميغاباسكال"} + zero{"{0} ميغاباسكال"} + } + pound-per-square-inch{ + few{"{0} أرطال/بوصة²"} + many{"{0} رطلًا/بوصة²"} + one{"{0} رطل/بوصة²"} + other{"{0} رطل/بوصة²"} + two{"رطلان/بوصة²"} + zero{"{0} رطل/بوصة²"} + } + } + speed{ + knot{ + few{"{0} عقد"} + many{"{0} عقدة"} + one{"{0} عقدة"} + other{"{0} عقدة"} + two{"عقدتان"} + zero{"{0} عقدة"} + } + mile-per-hour{ + few{"{0} أميال/س"} + many{"{0} ميلًا/س"} + one{"{0} ميل/س"} + other{"{0} ميل/س"} + two{"ميلان/س"} + zero{"{0} ميل/س"} + } + } + temperature{ + kelvin{ + dnam{"درجة كلفن"} + few{"{0} درجة كلفن"} + many{"{0} درجة كلفن"} + one{"{0} درجة كلفن"} + other{"{0} درجة كلفن"} + two{"{0} درجة كلفن"} + zero{"{0} درجة كلفن"} + } + } + volume{ + cubic-inch{ + few{"{0} بوصة³"} + many{"{0} بوصة³"} + one{"{0} بوصة مكعبة"} + other{"{0} بوصة³"} + two{"{0} بوصة³"} + zero{"{0} بوصة³"} + } + cup{ + few{"{0} أكواب"} + many{"{0} كوبًا"} + one{"كوب"} + other{"{0} كوب"} + two{"كوبان"} + zero{"{0} كوب"} + } + cup-metric{ + few{"{0} أكواب مترية"} + many{"{0} كوبًا متريًا"} + one{"{0} كوب متري"} + other{"{0} كوب متري"} + two{"كوبان متريان"} + zero{"{0} كوب متري"} + } + fluid-ounce{ + few{"{0} أونصات سائلة"} + many{"{0} أونصة س"} + one{"أونصة س"} + other{"{0} أونصة سائلة"} + two{"أونصتان سائلتان"} + zero{"{0} أونصة سائلة"} + } + liter{ + few{"{0} لترات"} + many{"{0} لترًا"} + one{"لتر"} + other{"{0} لتر"} + two{"لتران"} + zero{"{0} لتر"} + } + pint-metric{ + few{"{0} مكاييل مترية"} + many{"{0} مكيالًا متريًا"} + one{"{0} مكيال متري"} + other{"{0} مكيال متري"} + two{"مكيالان متريان"} + zero{"{0} مكيال متري"} + } + tablespoon{ + few{"{0} ملاعق ك."} + many{"{0} ملعقة ك."} + one{"ملعقة ك."} + other{"{0} ملعقة ك."} + two{"{0} ملعقتان ك."} + zero{"{0} ملعقة ك."} + } + teaspoon{ + few{"{0} ملاعق ص"} + many{"{0} ملعقة ص"} + one{"ملعقة ص"} + other{"{0} ملعقة ص"} + two{"{0} ملعقتان ص"} + zero{"{0} ملعقة ص"} + } + } + } } diff --git a/source/data/unit/as.txt b/source/data/unit/as.txt index f546089..dc58b10 100644 --- a/source/data/unit/as.txt +++ b/source/data/unit/as.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License as{ - Version{"2.1.48.17"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -247,6 +247,11 @@ as{ other{"{0} দিন"} per{"{0} প্ৰতি দিন"} } + decade{ + dnam{"দশক"} + one{"{0} দশক"} + other{"{0} দশক"} + } hour{ dnam{"ঘণ্টা"} one{"{0} ঘণ্টা"} @@ -362,6 +367,11 @@ as{ one{"{0} কিলোৱাট ঘণ্টা"} other{"{0} কিলোৱাট ঘণ্টা"} } + therm-us{ + dnam{"ইউ এচ থাৰ্ণ"} + one{"{0} ইউ এচ থাৰ্ণ"} + other{"{0} ইউ এচ থাৰ্ণ"} + } } force{ newton{ @@ -1213,6 +1223,11 @@ as{ other{"{0} দিন"} per{"{0}/দিন"} } + decade{ + dnam{"দশ."} + one{"{0} দশ."} + other{"{0} দশ."} + } hour{ dnam{"ঘণ্টা"} one{"{0} ঘণ্টা"} @@ -1328,6 +1343,11 @@ as{ one{"{0} কিঃ ৱাঃ-ঘঃ"} other{"{0} কিঃ ৱাঃ-ঘঃ"} } + therm-us{ + dnam{"ইউ এচ থাৰ্ণ"} + one{"{0} ইউ এচ থাৰ্ণ"} + other{"{0} ইউ এচ থাৰ্ণ"} + } } force{ newton{ diff --git a/source/data/unit/asa.txt b/source/data/unit/asa.txt index 5c7591d..4dd6983 100644 --- a/source/data/unit/asa.txt +++ b/source/data/unit/asa.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License asa{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/ast.txt b/source/data/unit/ast.txt index a8b2a2c..58d7488 100644 --- a/source/data/unit/ast.txt +++ b/source/data/unit/ast.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ast{ - Version{"2.1.47.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/az.txt b/source/data/unit/az.txt index d83834a..c3f8ffe 100644 --- a/source/data/unit/az.txt +++ b/source/data/unit/az.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License az{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -123,11 +123,6 @@ az{ one{"{0} millimol/litr"} other{"{0} millimol/litr"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"milyonda hissəcik"} one{"milyonda {0} hissəcik"} @@ -247,6 +242,11 @@ az{ other{"{0} gün"} per{"{0}/gün"} } + decade{ + dnam{"dekada"} + one{"{0} dekada"} + other{"{0} dek"} + } hour{ dnam{"saat"} one{"{0} saat"} @@ -362,6 +362,11 @@ az{ one{"{0} kilovatt-saat"} other{"{0} kilovatt-saat"} } + therm-us{ + dnam{"ABŞ termal vahidi"} + one{"{0} ABŞ termal vahidi"} + other{"{0} ABŞ termal vahidi"} + } } force{ newton{ @@ -397,6 +402,41 @@ az{ other{"{0} meqahers"} } } + graphics{ + dot-per-centimeter{ + dnam{"nöqtə / santimetr"} + one{"{0} nöqtə / santimetr"} + other{"{0} nöqtə / santimetr"} + } + dot-per-inch{ + dnam{"nöqtə / düym"} + one{"{0} nöqtə / düym"} + other{"{0} nöqtə / düym"} + } + em{ + dnam{"tipoqraf emi"} + } + megapixel{ + dnam{"meqapiksel"} + one{"{0} meqapiksel"} + other{"{0} meqapiksel"} + } + pixel{ + dnam{"piksel"} + one{"{0} piksel"} + other{"{0} piksel"} + } + pixel-per-centimeter{ + dnam{"piksel / santimetr"} + one{"{0} piksel / santimetr"} + other{"{0} piksel / santimetr"} + } + pixel-per-inch{ + dnam{"piksel / düym"} + one{"{0} piksel / düym"} + other{"{0} piksel / düym"} + } + } length{ astronomical-unit{ dnam{"astronomik vahid"} @@ -655,6 +695,11 @@ az{ one{"{0} millimetr civə sütunu"} other{"{0} millimetr civə sütunu"} } + pascal{ + dnam{"paskal"} + one{"{0} paskal"} + other{"{0} paskal"} + } pound-per-square-inch{ dnam{"funt/kvadrat düym"} one{"{0} funt/kvadrat düym"} @@ -725,8 +770,6 @@ az{ } barrel{ dnam{"barrel"} - one{"{0} bbl"} - other{"{0} bbl"} } centiliter{ dnam{"santilitr"} @@ -1133,8 +1176,8 @@ az{ } degree{ dnam{"dərəcə"} - one{"{0}dər"} - other{"{0}dər"} + one{"{0} dər"} + other{"{0} dər"} } radian{ dnam{"rad"} @@ -1206,6 +1249,7 @@ az{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1223,11 +1267,6 @@ az{ one{"{0} mmol/l"} other{"{0} mmol/l"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"hissəcik/milyon"} one{"{0} hs/mln"} @@ -1245,8 +1284,6 @@ az{ } permyriad{ dnam{"permiriada"} - one{"{0}‱"} - other{"{0}‱"} } } consumption{ @@ -1347,6 +1384,11 @@ az{ other{"{0} gün"} per{"{0}/gün"} } + decade{ + dnam{"dek"} + one{"{0} dek"} + other{"{0} dek"} + } hour{ dnam{"saat"} one{"{0} saat"} @@ -1434,8 +1476,6 @@ az{ } electronvolt{ dnam{"elektronvolt"} - one{"{0} eV"} - other{"{0} eV"} } foodcalorie{ dnam{"Kal"} @@ -1462,17 +1502,18 @@ az{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"ABŞ tv"} + one{"{0} ABŞ tv"} + other{"{0} ABŞ tv"} + } } force{ newton{ dnam{"nyuton"} - one{"{0} N"} - other{"{0} N"} } pound-force{ dnam{"güc funtu"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1497,6 +1538,43 @@ az{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"meqapiksel"} + one{"{0} MP"} + other{"{0} MP"} + } + pixel{ + dnam{"piksel"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + one{"{0} ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"av"} @@ -1590,8 +1668,6 @@ az{ } solar-radius{ dnam{"günəş radiusu"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"yard"} @@ -1607,8 +1683,6 @@ az{ } solar-luminosity{ dnam{"gün işığı"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ @@ -1619,13 +1693,9 @@ az{ } dalton{ dnam{"dalton"} - one{"{0} Da"} - other{"{0} Da"} } earth-mass{ dnam{"yer kütləsi"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"qram"} @@ -1673,8 +1743,6 @@ az{ } solar-mass{ dnam{"günəş kütləsi"} - one{"{0} M☉"} - other{"{0} M☉"} } stone{ dnam{"stone"} @@ -1735,16 +1803,6 @@ az{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"millibar"} one{"{0} mbar"} @@ -1755,6 +1813,11 @@ az{ one{"{0} mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} @@ -1805,29 +1868,12 @@ az{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ac ft"} one{"{0} ac ft"} other{"{0} ac ft"} } - barrel{ - dnam{"bbl"} - one{"{0} bbl"} - other{"{0} bbl"} - } centiliter{ dnam{"sL"} one{"{0} sL"} diff --git a/source/data/unit/az_Cyrl.txt b/source/data/unit/az_Cyrl.txt index 55114eb..e899ba9 100644 --- a/source/data/unit/az_Cyrl.txt +++ b/source/data/unit/az_Cyrl.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License az_Cyrl{ %%Parent{"root"} - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/az_Latn.txt b/source/data/unit/az_Latn.txt index 9c120f3..5247644 100644 --- a/source/data/unit/az_Latn.txt +++ b/source/data/unit/az_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License az_Latn{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/bas.txt b/source/data/unit/bas.txt index 8cc5e32..6760f19 100644 --- a/source/data/unit/bas.txt +++ b/source/data/unit/bas.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bas{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/be.txt b/source/data/unit/be.txt index 4fb8965..f3acd0c 100644 --- a/source/data/unit/be.txt +++ b/source/data/unit/be.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License be{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"hh:mm"} hms{"hh:mm:ss"} @@ -10,7 +10,7 @@ be{ units{ acceleration{ g-force{ - dnam{"перагрузка"} + dnam{"паскарэнне свабоднага падзення"} few{"{0} g"} many{"{0} g"} one{"{0} g"} @@ -41,24 +41,24 @@ be{ } degree{ dnam{"градусы"} - few{"{0}°"} - many{"{0}°"} - one{"{0}°"} + few{"{0} градусы"} + many{"{0} градусаў"} + one{"{0} градус"} other{"{0} градуса"} } radian{ dnam{"радыяны"} - few{"{0} рад"} - many{"{0} рад"} - one{"{0} рад"} - other{"{0} рад"} + few{"{0} радыяны"} + many{"{0} радыянаў"} + one{"{0} радыян"} + other{"{0} радыяна"} } revolution{ dnam{"абарот"} - few{"{0} аб"} - many{"{0} аб"} - one{"{0} аб"} - other{"{0} аб"} + few{"{0} абароты"} + many{"{0} абаротаў"} + one{"{0} абарот"} + other{"{0} абарота"} } } area{ @@ -143,25 +143,25 @@ be{ } concentr{ karat{ - dnam{"караты золата"} - few{"{0} кар зол"} - many{"{0} кар зол"} - one{"{0} кар зол"} - other{"{0} кар зол"} + dnam{"караты"} + few{"{0} караты"} + many{"{0} карат"} + one{"{0} карат"} + other{"{0} карата"} } milligram-per-deciliter{ dnam{"міліграм на дэцылітр"} - few{"{0} мг на дл"} - many{"{0} мг на дл"} - one{"{0} мг на дл"} - other{"{0} мг на дл"} + few{"{0} міліграмы на дэцылітр"} + many{"{0} міліграм на дэцылітр"} + one{"{0} міліграм на дэцылітр"} + other{"{0} міліграма на дэцылітр"} } millimole-per-liter{ - dnam{"мілімоляў на літр"} - few{"{0} ммоль/л"} - many{"{0} ммоль/л"} - one{"{0} ммоль/л"} - other{"{0} ммоль/л"} + dnam{"мілімолі на літр"} + few{"{0} мілімолі на літр"} + many{"{0} мілімоляў на літр"} + one{"{0} мілімоль на літр"} + other{"{0} мілімоля на літр"} } mole{ dnam{"молі"} @@ -179,17 +179,17 @@ be{ } percent{ dnam{"працэнтаў"} - few{"{0}%"} - many{"{0}%"} + few{"{0} працэнты"} + many{"{0} працэнтаў"} one{"{0} працэнт"} - other{"{0}%"} + other{"{0} працэнта"} } permille{ dnam{"праміле"} - few{"{0}‰"} - many{"{0}‰"} - one{"{0}‰"} - other{"{0}‰"} + few{"{0} праміле"} + many{"{0} праміле"} + one{"{0} праміле"} + other{"{0} праміле"} } permyriad{ dnam{"базісныя пункты"} @@ -202,39 +202,39 @@ be{ consumption{ liter-per-100kilometers{ dnam{"літры на 100 кіламетраў"} - few{"{0} л/100 км"} - many{"{0} л/100 км"} - one{"{0} л/100 км"} - other{"{0} л/100 км"} + few{"{0} літры на 100 кіламетраў"} + many{"{0} літраў на 100 кіламетраў"} + one{"{0} літр на 100 кіламетраў"} + other{"{0} літра на 100 кіламетраў"} } liter-per-kilometer{ dnam{"літры на кіламетр"} - few{"{0} л/км"} - many{"{0} л/км"} - one{"{0} л/км"} - other{"{0} л/км"} + few{"{0} літры на кіламетр"} + many{"{0} літраў на кіламетр"} + one{"{0} літр на кіламетр"} + other{"{0} літра на кіламетр"} } mile-per-gallon{ dnam{"мілі на галон"} - few{"{0} мілі/гал."} - many{"{0} міль/гал."} - one{"{0} міля/гал."} - other{"{0} мілі/гал."} + few{"{0} мілі на галон"} + many{"{0} міль на галон"} + one{"{0} міля на галон"} + other{"{0} мілі на галон"} } mile-per-gallon-imperial{ dnam{"міль на імп. галон"} few{"{0} мілі на імп. галон"} - many{"{0} міль/імп. галон"} + many{"{0} міль на імп. галон"} one{"{0} міля на імп. галон"} other{"{0} мілі на імп. галон"} } } coordinate{ dnam{"кірунак свету"} - east{"{0} У"} - north{"{0} Пн"} - south{"{0} Пд"} - west{"{0} З"} + east{"{0} усходняй даўгаты"} + north{"{0} паўночнай шыраты"} + south{"{0} паўднёвай шыраты"} + west{"{0} заходняй даўгаты"} } digital{ bit{ @@ -253,66 +253,66 @@ be{ } gigabit{ dnam{"гігабіты"} - few{"{0} Гбіт"} - many{"{0} Гбіт"} - one{"{0} Гбіт"} - other{"{0} Гбіт"} + few{"{0} гігабіты"} + many{"{0} гігабіт"} + one{"{0} гігабіт"} + other{"{0} гігабіта"} } gigabyte{ dnam{"гігабайты"} - few{"{0} ГБ"} - many{"{0} ГБ"} - one{"{0} ГБ"} - other{"{0} ГБ"} + few{"{0} гігабайты"} + many{"{0} гігабайт"} + one{"{0} гігабайт"} + other{"{0} гігабайта"} } kilobit{ dnam{"кілабіты"} - few{"{0} кбіт"} - many{"{0} кбіт"} - one{"{0} кбіт"} - other{"{0} кбіт"} + few{"{0} кілабіты"} + many{"{0} кілабіт"} + one{"{0} кілабіт"} + other{"{0} кілабіта"} } kilobyte{ dnam{"кілабайты"} - few{"{0} КБ"} - many{"{0} КБ"} - one{"{0} КБ"} - other{"{0} КБ"} + few{"{0} кілабайты"} + many{"{0} кілабайт"} + one{"{0} кілабайт"} + other{"{0} кілабайта"} } megabit{ dnam{"мегабіты"} - few{"{0} Мбіт"} - many{"{0} Мбіт"} - one{"{0} Мбіт"} - other{"{0} Мбіт"} + few{"{0} мегабіты"} + many{"{0} мегабіт"} + one{"{0} мегабіт"} + other{"{0} мегабіта"} } megabyte{ dnam{"мегабайты"} - few{"{0} МБ"} - many{"{0} МБ"} - one{"{0} МБ"} - other{"{0} МБ"} + few{"{0} мегабайты"} + many{"{0} мегабайт"} + one{"{0} мегабайт"} + other{"{0} мегабайта"} } petabyte{ dnam{"петабайты"} - few{"{0} ПБ"} - many{"{0} ПБ"} - one{"{0} ПБ"} - other{"{0} ПБ"} + few{"{0} петабайты"} + many{"{0} петабайт"} + one{"{0} петабайт"} + other{"{0} петабайта"} } terabit{ dnam{"тэрабіты"} - few{"{0} Тбіт"} - many{"{0} Тбіт"} - one{"{0} Тбіт"} - other{"{0} Тбіт"} + few{"{0} тэрабіты"} + many{"{0} тэрабіт"} + one{"{0} тэрабіт"} + other{"{0} тэрабіта"} } terabyte{ dnam{"тэрабайты"} - few{"{0} ТБ"} - many{"{0} ТБ"} - one{"{0} ТБ"} - other{"{0} ТБ"} + few{"{0} тэрабайты"} + many{"{0} тэрабайт"} + one{"{0} тэрабайт"} + other{"{0} тэрабайта"} } } duration{ @@ -331,6 +331,13 @@ be{ other{"{0} сутак"} per{"{0} у суткі"} } + decade{ + dnam{"дзесяцігоддзі"} + few{"{0} дзесяцігоддзі"} + many{"{0} дзесяцігоддзяў"} + one{"{0} дзесяцігоддзе"} + other{"{0} дзесяцігоддзя"} + } hour{ dnam{"гадзіны"} few{"{0} гадзіны"} @@ -404,17 +411,17 @@ be{ electric{ ampere{ dnam{"амперы"} - few{"{0} A"} - many{"{0} A"} - one{"{0} A"} + few{"{0} амперы"} + many{"{0} ампер"} + one{"{0} ампер"} other{"{0} ампера"} } milliampere{ dnam{"міліамперы"} - few{"{0} мА"} - many{"{0} мА"} - one{"{0} мА"} - other{"{0} мА"} + few{"{0} міліамперы"} + many{"{0} міліампер"} + one{"{0} міліампер"} + other{"{0} міліампера"} } ohm{ dnam{"омы"} @@ -425,10 +432,10 @@ be{ } volt{ dnam{"вольты"} - few{"{0} В"} - many{"{0} В"} - one{"{0} В"} - other{"{0} В"} + few{"{0} вольты"} + many{"{0} вольт"} + one{"{0} вольт"} + other{"{0} вольта"} } } energy{ @@ -441,9 +448,9 @@ be{ } calorie{ dnam{"калорыі"} - few{"{0} кал"} - many{"{0} кал"} - one{"{0} кал"} + few{"{0} калорыі"} + many{"{0} калорый"} + one{"{0} калорыя"} other{"{0} калорыі"} } electronvolt{ @@ -455,38 +462,45 @@ be{ } foodcalorie{ dnam{"калорыі"} - few{"{0} кал"} - many{"{0} кал"} - one{"{0} кал"} - other{"{0} кал"} + few{"{0} калорыі"} + many{"{0} калорый"} + one{"{0} калорыя"} + other{"{0} калорыі"} } joule{ dnam{"джоўлі"} - few{"{0} Дж"} - many{"{0} Дж"} - one{"{0} Дж"} - other{"{0} Дж"} + few{"{0} джоўлі"} + many{"{0} джоўляў"} + one{"{0} джоўль"} + other{"{0} джоўля"} } kilocalorie{ dnam{"кілакалорыі"} - few{"{0} ккал"} - many{"{0} ккал"} - one{"{0} ккал"} - other{"{0} ккал"} + few{"{0} кілакалорыі"} + many{"{0} кілакалорый"} + one{"{0} кілакалорыя"} + other{"{0} кілакалорыі"} } kilojoule{ dnam{"кіладжоўлі"} - few{"{0} кДж"} - many{"{0} кДж"} - one{"{0} кДж"} - other{"{0} кДж"} + few{"{0} кіладжоўлі"} + many{"{0} кіладжоўляў"} + one{"{0} кіладжоўль"} + other{"{0} кіладжоўля"} } kilowatt-hour{ dnam{"кілават-гадзіны"} - few{"{0} кВт·г"} - many{"{0} кВт·г"} - one{"{0} кВт·г"} - other{"{0} кВт·г"} + few{"{0} кілават-гадзіны"} + many{"{0} кілават-гадзін"} + one{"{0} кілават-гадзіна"} + other{"{0} кілават-гадзіны"} + } + therm-us{ + dnam{"амерыканскія тэрмы"} + few{"{0} амерыканскія тэрмы"} + many{"{0} амерыканскіх тэрмаў"} + one{"{0} амерыканскі тэрм"} + other{"{0} амерыканскага тэрма"} } } force{ @@ -508,31 +522,82 @@ be{ frequency{ gigahertz{ dnam{"гігагерцы"} - few{"{0} ГГц"} - many{"{0} ГГц"} - one{"{0} ГГц"} - other{"{0} ГГц"} + few{"{0} гігагерцы"} + many{"{0} гігагерц"} + one{"{0} гігагерц"} + other{"{0} гігагерца"} } hertz{ dnam{"герцы"} - few{"{0} Гц"} - many{"{0} Гц"} - one{"{0} Гц"} - other{"{0} Гц"} + few{"{0} герцы"} + many{"{0} герца"} + one{"{0} герц"} + other{"{0} герцы"} } kilohertz{ dnam{"кілагерцы"} - few{"{0} кГц"} - many{"{0} кГц"} - one{"{0} кГц"} - other{"{0} кГц"} + few{"{0} кілагерцы"} + many{"{0} кілагерц"} + one{"{0} кілагерц"} + other{"{0} кілагерца"} } megahertz{ dnam{"мегагерцы"} - few{"{0} МГц"} - many{"{0} МГц"} - one{"{0} МГц"} - other{"{0} МГц"} + few{"{0} мегагерцы"} + many{"{0} мегагерц"} + one{"{0} мегагерц"} + other{"{0} мегагерца"} + } + } + graphics{ + dot-per-centimeter{ + dnam{"кропкі на сантыметр"} + few{"{0} кропкі на сантыметр"} + many{"{0} кропак на сантыметр"} + one{"{0} кропка на сантыметр"} + other{"{0} кропкі на сантыметр"} + } + dot-per-inch{ + dnam{"кропкі на цалю"} + few{"{0} кропкі на цалю"} + many{"{0} кропак на цалю"} + one{"{0} кропка на цалю"} + other{"{0} кропкі на цалю"} + } + em{ + dnam{"эм"} + few{"{0} эм"} + many{"{0} эм"} + one{"{0} эм"} + other{"{0} эм"} + } + megapixel{ + dnam{"мегапікселі"} + few{"{0} мегапіксель"} + many{"{0} мегапіксель"} + one{"{0} мегапіксель"} + other{"{0} мегапікселя"} + } + pixel{ + dnam{"пікселі"} + few{"{0} пікселі"} + many{"{0} пікселяў"} + one{"{0} піксель"} + other{"{0} пікселя"} + } + pixel-per-centimeter{ + dnam{"пікселі на сантыметр"} + few{"{0} пікселі на сантыметр"} + many{"{0} пікселяў на сантыметр"} + one{"{0} піксель на сантыметр"} + other{"{0} пікселя на сантыметр"} + } + pixel-per-inch{ + dnam{"пікселі на цалю"} + few{"{0} пікселі на цалю"} + many{"{0} пікселяў на цалю"} + one{"{0} піксель на цалю"} + other{"{0} пікселя на цалю"} } } length{ @@ -730,11 +795,11 @@ be{ per{"{0}/кг"} } metric-ton{ - dnam{"метрычныя тоны"} - few{"{0} метрычныя тоны"} - many{"{0} метрычных тон"} - one{"{0} метрычная тона"} - other{"{0} метрычнай тоны"} + dnam{"тоны"} + few{"{0} тоны"} + many{"{0} тон"} + one{"{0} тона"} + other{"{0} тоны"} } microgram{ dnam{"мікраграмы"} @@ -781,113 +846,127 @@ be{ other{"{0} масы Сонца"} } ton{ - dnam{"тоны"} - few{"{0} тоны"} - many{"{0} тон"} - one{"{0} тона"} - other{"{0} тоны"} + dnam{"амерыканскія тоны"} + few{"{0} амерыканскія тоны"} + many{"{0} амерыканскіх тон"} + one{"{0} амерыканская тона"} + other{"{0} амерыканскай тоны"} } } power{ gigawatt{ dnam{"гігаваты"} - few{"{0} ГВт"} - many{"{0} ГВт"} - one{"{0} ГВт"} - other{"{0} ГВт"} + few{"{0} гігаваты"} + many{"{0} гігават"} + one{"{0} гігават"} + other{"{0} гігавата"} } horsepower{ dnam{"конская сіла"} - few{"{0} к. с."} - many{"{0} к. с."} - one{"{0} к. с."} - other{"{0} к. с."} + few{"{0} конскія сілы"} + many{"{0} конскіх сіл"} + one{"{0} конская сіла"} + other{"{0} конскай сілы"} } kilowatt{ dnam{"кілаваты"} - few{"{0} кВт"} - many{"{0} кВт"} - one{"{0} кВт"} - other{"{0} кВт"} + few{"{0} кілаваты"} + many{"{0} кілават"} + one{"{0} кілават"} + other{"{0} кілаватаў"} } megawatt{ dnam{"мегаваты"} - few{"{0} МВт"} - many{"{0} МВт"} - one{"{0} МВт"} - other{"{0} МВт"} + few{"{0} мегаваты"} + many{"{0} мегават"} + one{"{0} мегават"} + other{"{0} мегавата"} } milliwatt{ dnam{"міліваты"} - few{"{0} мВт"} - many{"{0} мВт"} - one{"{0} мВт"} - other{"{0} мВт"} + few{"{0} міліваты"} + many{"{0} міліват"} + one{"{0} міліват"} + other{"{0} мілівата"} } watt{ dnam{"ваты"} - few{"{0} Вт"} - many{"{0} Вт"} - one{"{0} Вт"} - other{"{0} Вт"} + few{"{0} ваты"} + many{"{0} ват"} + one{"{0} ват"} + other{"{0} вата"} } } pressure{ atmosphere{ dnam{"атмасферы"} few{"{0} атм"} - many{"{0} атм"} - one{"{0} атм"} - other{"{0} атм"} + many{"{0} атмасфер"} + one{"{0} атмасфера"} + other{"{0} атмасферы"} + } + bar{ + dnam{"бары"} + few{"{0} бары"} + many{"{0} бар"} + one{"{0} бар"} + other{"{0} бара"} } hectopascal{ dnam{"гектапаскалі"} - few{"{0} гПа"} - many{"{0} гПа"} - one{"{0} гПа"} - other{"{0} гПа"} + few{"{0} гектапаскалі"} + many{"{0} гектапаскаляў"} + one{"{0} гектапаскаль"} + other{"{0} гектапаскаля"} } inch-hg{ dnam{"цалі ртутнага слупа"} - few{"{0} цалі рт. сл."} - many{"{0} цаляў рт. сл."} - one{"{0} цаля рт. сл."} - other{"{0} цалі рт. сл."} + few{"{0} цалі ртутнага слупа"} + many{"{0} цаляў ртутнага слупа"} + one{"{0} цаля ртутнага слупа"} + other{"{0} цалі ртутнага слупа"} } kilopascal{ dnam{"кілапаскалі"} - few{"{0} кПа"} - many{"{0} кПа"} - one{"{0} кПа"} - other{"{0} кПа"} + few{"{0} кілапаскалі"} + many{"{0} кілапаскаляў"} + one{"{0} кілапаскаль"} + other{"{0} кілапаскаля"} } megapascal{ dnam{"мегапаскалі"} - few{"{0} МПа"} - many{"{0} МПа"} - one{"{0} МПа"} - other{"{0} МПа"} + few{"{0} мегапаскалі"} + many{"{0} мегапаскаляў"} + one{"{0} мегапаскаль"} + other{"{0} мегапаскаля"} } millibar{ dnam{"мілібары"} - few{"{0} мбар"} - many{"{0} мбар"} - one{"{0} мбар"} - other{"{0} мбар"} + few{"{0} мілібары"} + many{"{0} мілібар"} + one{"{0} мілібар"} + other{"{0} мілібара"} } millimeter-of-mercury{ dnam{"міліметры ртутнага слупа"} - few{"{0} мм рт. сл."} - many{"{0} мм рт. сл."} - one{"{0} мм рт. сл."} - other{"{0} мм рт. сл."} + few{"{0} міліметры ртутнага слупа"} + many{"{0} міліметраў ртутнага слупа"} + one{"{0} міліметр ртутнага слупа"} + other{"{0} міліметра ртутнага слупа"} + } + pascal{ + dnam{"паскалі"} + few{"{0} паскалі"} + many{"{0} паскаляў"} + one{"{0} паскаль"} + other{"{0} паскаля"} } pound-per-square-inch{ dnam{"фунты на квадратную цалю"} - few{"{0} фунты на кв. цалю"} - many{"{0} фунтаў на кв. цалю"} - one{"{0} фунт на кв. цалю"} - other{"{0} фунта на кв. цалю"} + few{"{0} фунты на квадратную цалю"} + many{"{0} фунтаў на квадратную цалю"} + one{"{0} фунт на квадратную цалю"} + other{"{0} фунта на квадратную цалю"} } } speed{ @@ -923,31 +1002,31 @@ be{ temperature{ celsius{ dnam{"градусы Цэльсія"} - few{"{0} °C"} - many{"{0} °C"} - one{"{0} °C"} - other{"{0} °C"} + few{"{0} градусы Цэльсія"} + many{"{0} градусаў Цэльсія"} + one{"{0} градус Цэльсія"} + other{"{0} градуса Цэльсія"} } fahrenheit{ dnam{"градусы Фарэнгейта"} - few{"{0} °F"} - many{"{0} °F"} - one{"{0} °F"} - other{"{0} °F"} + few{"{0} градусы Фарэнгейта"} + many{"{0} градусаў Фарэнгейта"} + one{"{0} градус Фарэнгейта"} + other{"{0} градуса Фарэнгейта"} } generic{ dnam{"°"} - few{"{0}°"} - many{"{0}°"} - one{"{0}°"} - other{"{0}°"} + few{"{0} °"} + many{"{0} °"} + one{"{0} °"} + other{"{0} °"} } kelvin{ dnam{"кельвіны"} - few{"{0} К"} - many{"{0} К"} + few{"{0} кельвіны"} + many{"{0} кельвінаў"} one{"{0} К"} - other{"{0} К"} + other{"{0} кельвіна"} } } torque{ @@ -959,11 +1038,11 @@ be{ other{"{0} ньютан-метра"} } pound-foot{ - dnam{"фунтафуты"} - few{"{0} фунтафуты"} - many{"{0} фунтафутаў"} - one{"{0} фунтафут"} - other{"{0} фунтафута"} + dnam{"фунт-футы"} + few{"{0} фунт-футы"} + many{"{0} фунт-футаў"} + one{"{0} фунт-фут"} + other{"{0} фунт-фута"} } } volume{ @@ -1301,10 +1380,6 @@ be{ temperature{ celsius{ dnam{"°C"} - few{"{0}°C"} - many{"{0}°C"} - one{"{0}°C"} - other{"{0}°C"} } } volume{ @@ -1320,7 +1395,7 @@ be{ unitsShort{ acceleration{ g-force{ - dnam{"перагрузка"} + dnam{"g"} few{"{0} g"} many{"{0} g"} one{"{0} g"} @@ -1450,21 +1525,22 @@ be{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ dnam{"кар золата"} - few{"{0} кар зол"} - many{"{0} кар зол"} - one{"{0} кар зол"} - other{"{0} кар зол"} + few{"{0} кар"} + many{"{0} кар"} + one{"{0} кар"} + other{"{0} кар"} } milligram-per-deciliter{ - dnam{"мг на дл"} - few{"{0} мг на дл"} - many{"{0} мг на дл"} - one{"{0} мг на дл"} - other{"{0} мг на дл"} + dnam{"мг/дл"} + few{"{0} мг/дл"} + many{"{0} мг/дл"} + one{"{0} мг/дл"} + other{"{0} мг/дл"} } millimole-per-liter{ dnam{"ммоль/л"} @@ -1489,24 +1565,24 @@ be{ } percent{ dnam{"%"} - few{"{0}%"} - many{"{0}%"} - one{"{0}%"} - other{"{0}%"} + few{"{0} %"} + many{"{0} %"} + one{"{0} %"} + other{"{0} %"} } permille{ dnam{"праміле"} - few{"{0}‰"} - many{"{0}‰"} - one{"{0}‰"} - other{"{0}‰"} + few{"{0} ‰"} + many{"{0} ‰"} + one{"{0} ‰"} + other{"{0} ‰"} } permyriad{ dnam{"‱"} - few{"{0}‱"} - many{"{0}‱"} - one{"{0}‱"} - other{"{0}‱"} + few{"{0} ‱"} + many{"{0} ‱"} + one{"{0} ‱"} + other{"{0} ‱"} } } consumption{ @@ -1541,10 +1617,10 @@ be{ } coordinate{ dnam{"кірунак"} - east{"{0} У"} - north{"{0} Пн"} - south{"{0} Пд"} - west{"{0} З"} + east{"{0} усх. д."} + north{"{0} паўн. ш."} + south{"{0} паўд. ш."} + west{"{0} зах. д."} } digital{ bit{ @@ -1641,6 +1717,13 @@ be{ other{"{0} сут"} per{"{0} сут"} } + decade{ + dnam{"дзесяцігоддзе"} + few{"{0} дзесяцігоддзі"} + many{"{0} дзесяцігоддзяў"} + one{"{0} дзесяцігоддзе"} + other{"{0} дзесяцігоддзя"} + } hour{ dnam{"гадз"} few{"{0} гадз"} @@ -1798,6 +1881,13 @@ be{ one{"{0} кВт·г"} other{"{0} кВт·г"} } + therm-us{ + dnam{"амер. тэрмы"} + few{"{0} амер. тэрмы"} + many{"{0} амер. тэрмаў"} + one{"{0} амер. тэрм"} + other{"{0} амер. тэрма"} + } } force{ newton{ @@ -1808,10 +1898,10 @@ be{ other{"{0} Н"} } pound-force{ - dnam{"lbf"} - few{"{0} lbf"} + dnam{"фунт-сілы"} + few{"{0} фунт-сілы"} many{"{0} lbf"} - one{"{0} lbf"} + one{"{0} фунт-сіла"} other{"{0} lbf"} } } @@ -1845,6 +1935,57 @@ be{ other{"{0} МГц"} } } + graphics{ + dot-per-centimeter{ + dnam{"кр/см"} + few{"{0} кр/см"} + many{"{0} кр/см"} + one{"{0} кр/см"} + other{"{0} кр/см"} + } + dot-per-inch{ + dnam{"dpi"} + few{"{0} dpi"} + many{"{0} dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"эм"} + few{"{0} эм"} + many{"{0} эм"} + one{"{0} эм"} + other{"{0} эм"} + } + megapixel{ + dnam{"Мпікс"} + few{"{0} Мпікс"} + many{"{0} Мпікс"} + one{"{0} Мпікс"} + other{"{0} Мпікс"} + } + pixel{ + dnam{"пікселі"} + few{"{0} пікселі"} + many{"{0} пікселяў"} + one{"{0} піксель"} + other{"{0} пікселя"} + } + pixel-per-centimeter{ + dnam{"піксель/см"} + few{"{0} пікселі/см"} + many{"{0} пікселяў/см"} + one{"{0} піксель/см"} + other{"{0} пікселя/см"} + } + pixel-per-inch{ + dnam{"піксель/цалю"} + few{"{0} пікселі/цалю"} + many{"{0} пікселяў/цалю"} + one{"{0} піксель/цалю"} + other{"{0} пікселя/цалю"} + } + } length{ astronomical-unit{ dnam{"а. а."} @@ -2041,10 +2182,10 @@ be{ } metric-ton{ dnam{"т"} - few{"{0} мет. тоны"} - many{"{0} мет. тон"} - one{"{0} мет. тона"} - other{"{0} мет. тоны"} + few{"{0} т"} + many{"{0} т"} + one{"{0} т"} + other{"{0} т"} } microgram{ dnam{"мкг"} @@ -2091,11 +2232,11 @@ be{ other{"{0} M☉"} } ton{ - dnam{"тоны"} - few{"{0} тоны"} - many{"{0} тон"} - one{"{0} тона"} - other{"{0} тоны"} + dnam{"амер. т"} + few{"{0} амер. т"} + many{"{0} амер. т"} + one{"{0} амер. т"} + other{"{0} амер. т"} } } power{ @@ -2150,6 +2291,13 @@ be{ one{"{0} атм"} other{"{0} атм"} } + bar{ + dnam{"бар"} + few{"{0} бары"} + many{"{0} бар"} + one{"{0} бар"} + other{"{0} бара"} + } hectopascal{ dnam{"гПа"} few{"{0} гПа"} @@ -2192,6 +2340,13 @@ be{ one{"{0} мм рт. сл."} other{"{0} мм рт. сл."} } + pascal{ + dnam{"Па"} + few{"{0} Па"} + many{"{0} Па"} + one{"{0} Па"} + other{"{0} Па"} + } pound-per-square-inch{ dnam{"фунты на кв. цалю"} few{"{0} фунты на кв. цалю"} @@ -2247,10 +2402,10 @@ be{ } generic{ dnam{"°"} - few{"{0}°"} - many{"{0}°"} - one{"{0}°"} - other{"{0}°"} + few{"{0} °"} + many{"{0} °"} + one{"{0} °"} + other{"{0} °"} } kelvin{ dnam{"К"} @@ -2269,11 +2424,11 @@ be{ other{"{0} Н⋅м"} } pound-foot{ - dnam{"lbf⋅ft"} - few{"{0} lbf⋅ft"} - many{"{0} lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} + dnam{"фунт-футы"} + few{"{0} фунт-футы"} + many{"{0} фунт-футаў"} + one{"{0} фунт-фут"} + other{"{0} фунт-фута"} } } volume{ diff --git a/source/data/unit/bem.txt b/source/data/unit/bem.txt index 188761f..051eafb 100644 --- a/source/data/unit/bem.txt +++ b/source/data/unit/bem.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bem{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/bez.txt b/source/data/unit/bez.txt index f4a240d..0e7166b 100644 --- a/source/data/unit/bez.txt +++ b/source/data/unit/bez.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bez{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/bg.txt b/source/data/unit/bg.txt index f4d6af1..0374283 100644 --- a/source/data/unit/bg.txt +++ b/source/data/unit/bg.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bg{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -130,8 +130,8 @@ bg{ } part-per-million{ dnam{"части на милион"} - one{"{0} ppm"} - other{"{0} ppm"} + one{"{0} част на милион"} + other{"{0} части на милион"} } percent{ dnam{"процент"} @@ -145,6 +145,8 @@ bg{ } permyriad{ dnam{"базисен пункт"} + one{"{0} базисен пункт"} + other{"{0} базисни пункта"} } } consumption{ @@ -164,9 +166,9 @@ bg{ other{"{0} мили с един галон"} } mile-per-gallon-imperial{ - dnam{"мили с един императорски галон"} - one{"{0} миля с един императорски галон"} - other{"{0} мили с един императорски галон"} + dnam{"мили с един британски галон"} + one{"{0} миля с един британски галон"} + other{"{0} мили с един британски галон"} } } coordinate{ @@ -245,6 +247,11 @@ bg{ other{"{0} дни"} per{"{0} на ден"} } + decade{ + dnam{"десетилетия"} + one{"{0} десетилетие"} + other{"{0} десетилетия"} + } hour{ dnam{"часове"} one{"{0} час"} @@ -356,10 +363,15 @@ bg{ other{"{0} килоджаула"} } kilowatt-hour{ - dnam{"киловатчаси"} + dnam{"киловатчасове"} one{"{0} киловатчас"} other{"{0} киловатчаса"} } + therm-us{ + dnam{"американски термални единици"} + one{"{0} американска термална единица"} + other{"{0} американски термални единици"} + } } force{ newton{ @@ -395,6 +407,41 @@ bg{ other{"{0} мегахерца"} } } + graphics{ + dot-per-centimeter{ + dnam{"точки на сантиметър"} + one{"{0} точка на сантиметър"} + other{"{0} точки на сантиметър"} + } + dot-per-inch{ + dnam{"точки на инч"} + one{"{0} точка на инч"} + other{"{0} точки на инч"} + } + em{ + dnam{"типографски ем"} + } + megapixel{ + dnam{"мегапиксели"} + one{"{0} мегапиксел"} + other{"{0} мегапиксела"} + } + pixel{ + dnam{"пиксели"} + one{"{0} пиксел"} + other{"{0} пиксела"} + } + pixel-per-centimeter{ + dnam{"пиксели на сантиметър"} + one{"{0} пиксел на сантиметър"} + other{"{0} пиксела на сантиметър"} + } + pixel-per-inch{ + dnam{"пиксели на инч"} + one{"{0} пиксел на инч"} + other{"{0} пиксела на инч"} + } + } length{ astronomical-unit{ dnam{"астрономически единици"} @@ -422,7 +469,7 @@ bg{ dnam{"инчове"} one{"{0} инч"} other{"{0} инча"} - per{"{0}/in"} + per{"{0} на инч"} } kilometer{ dnam{"километри"} @@ -522,6 +569,8 @@ bg{ } earth-mass{ dnam{"Маси на Земята"} + one{"{0} маса на Земята"} + other{"{0} маси на Земята"} } gram{ dnam{"грамове"} @@ -616,6 +665,11 @@ bg{ one{"{0} атмосфера"} other{"{0} атмосфери"} } + bar{ + dnam{"барове"} + one{"{0} бар"} + other{"{0} бара"} + } hectopascal{ dnam{"хектопаскали"} one{"{0} хектопаскал"} @@ -646,6 +700,11 @@ bg{ one{"{0} мм живачен стълб"} other{"{0} мм живачен стълб"} } + pascal{ + dnam{"паскали"} + one{"{0} паскал"} + other{"{0} паскала"} + } pound-per-square-inch{ dnam{"фунтове на квадратен инч"} one{"{0} фунт на квадратен инч"} @@ -702,6 +761,11 @@ bg{ one{"{0} нютон-метър"} other{"{0} нютон-метра"} } + pound-foot{ + dnam{"фунт-футове"} + one{"{0} фунт-фут"} + other{"{0} фунт-фута"} + } } volume{ acre-foot{ @@ -763,7 +827,7 @@ bg{ } cup-metric{ dnam{"метрични чаши"} - one{"{0} mc"} + one{"{0} метрична чаша"} other{"{0} метрични чаши"} } deciliter{ @@ -821,8 +885,8 @@ bg{ } pint-metric{ dnam{"метрични пинти"} - one{"{0} метричен пинт"} - other{"{0} метрични пинта"} + one{"{0} метрична пинта"} + other{"{0} метрични пинти"} } quart{ dnam{"кварти"} @@ -949,9 +1013,9 @@ bg{ other{"{0} седм."} } year{ - dnam{"г"} - one{"{0} г"} - other{"{0} г"} + dnam{"г."} + one{"{0} г."} + other{"{0} г."} } } length{ @@ -1066,8 +1130,8 @@ bg{ temperature{ celsius{ dnam{"°C"} - one{"{0} °C"} - other{"{0} °C"} + one{"{0}°C"} + other{"{0}°C"} } fahrenheit{ one{"{0} °F"} @@ -1125,9 +1189,9 @@ bg{ other{"{0} rad"} } revolution{ - dnam{"оборот"} - one{"{0} оборот"} - other{"{0} оборота"} + dnam{"об."} + one{"{0} об."} + other{"{0} об."} } } area{ @@ -1142,7 +1206,7 @@ bg{ other{"{0} дюнюма"} } hectare{ - dnam{"хектари"} + dnam{"ha"} one{"{0} ha"} other{"{0} ha"} } @@ -1153,14 +1217,12 @@ bg{ per{"{0}/cm²"} } square-foot{ - dnam{"кв. футове"} - one{"{0} кв. фут"} - other{"{0} кв. фута"} + one{"{0} ft²"} + other{"{0} ft²"} } square-inch{ - dnam{"кв. инчове"} - one{"{0} кв. инч"} - other{"{0} кв. инча"} + one{"{0} in²"} + other{"{0} in²"} per{"{0}/in²"} } square-kilometer{ @@ -1176,15 +1238,13 @@ bg{ per{"{0}/m²"} } square-mile{ - dnam{"кв. мили"} - one{"{0} кв. миля"} - other{"{0} кв. мили"} + one{"{0} mi²"} + other{"{0} mi²"} per{"{0}/mi²"} } square-yard{ - dnam{"кв. ярдове"} - one{"{0} кв. ярд"} - other{"{0} кв. ярда"} + one{"{0} yd²"} + other{"{0} yd²"} } } compound{ @@ -1192,14 +1252,13 @@ bg{ } concentr{ karat{ - dnam{"карати"} - one{"{0} карат"} - other{"{0} карата"} + one{"{0} kt"} + other{"{0} kt"} } milligram-per-deciliter{ dnam{"mg/dL"} - one{"{0} mg/dL"} - other{"{0} mg/dL"} + one{"{0} mg/dl"} + other{"{0} mg/dl"} } millimole-per-liter{ dnam{"mmol/L"} @@ -1222,7 +1281,6 @@ bg{ other{"{0}%"} } permille{ - dnam{"промил"} one{"{0}‰"} other{"{0}‰"} } @@ -1250,8 +1308,8 @@ bg{ } mile-per-gallon-imperial{ dnam{"мили/имп. гал."} - one{"{0} миля/имп. галон"} - other{"{0} мили/имп. галон"} + one{"{0} mpg Imp."} + other{"{0} mpg Imp."} } } coordinate{ @@ -1263,9 +1321,9 @@ bg{ } digital{ bit{ - dnam{"б"} - one{"{0} б"} - other{"{0} б"} + dnam{"b"} + one{"{0} b"} + other{"{0} b"} } byte{ dnam{"B"} @@ -1416,7 +1474,6 @@ bg{ other{"{0} cal"} } electronvolt{ - dnam{"електронволт"} one{"{0} eV"} other{"{0} eV"} } @@ -1445,15 +1502,18 @@ bg{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"амер. термални ед."} + one{"{0} амер. терм. ед."} + other{"{0} амер. терм. ед."} + } } force{ newton{ - dnam{"нютон"} one{"{0} N"} other{"{0} N"} } pound-force{ - dnam{"фунт сила"} one{"{0} lbf"} other{"{0} lbf"} } @@ -1480,6 +1540,11 @@ bg{ other{"{0} MHz"} } } + graphics{ + em{ + dnam{"ем"} + } + } length{ astronomical-unit{ dnam{"AU"} @@ -1498,16 +1563,12 @@ bg{ other{"{0} dm"} } foot{ - dnam{"футове"} - one{"{0} фут"} - other{"{0} фута"} - per{"{0}/ft"} + one{"{0} ft"} + other{"{0} ft"} } inch{ - dnam{"инчове"} - one{"{0} инч"} - other{"{0} инча"} - per{"{0}/in"} + one{"{0} in"} + other{"{0} in"} } kilometer{ dnam{"km"} @@ -1521,7 +1582,7 @@ bg{ other{"{0} св.г."} } meter{ - dnam{"метри"} + dnam{"m"} one{"{0} m"} other{"{0} m"} per{"{0}/m"} @@ -1532,9 +1593,8 @@ bg{ other{"{0} µm"} } mile{ - dnam{"мили"} - one{"{0} миля"} - other{"{0} мили"} + one{"{0} mi"} + other{"{0} mi"} } mile-scandinavian{ dnam{"smi"} @@ -1572,14 +1632,12 @@ bg{ other{"{0} pt"} } solar-radius{ - dnam{"слънчеви радиуси"} one{"{0} R☉"} other{"{0} R☉"} } yard{ - dnam{"ярдове"} - one{"{0} ярд"} - other{"{0} ярда"} + one{"{0} yd"} + other{"{0} yd"} } } light{ @@ -1589,7 +1647,6 @@ bg{ other{"{0} lx"} } solar-luminosity{ - dnam{"слънчеви светимости"} one{"{0} L☉"} other{"{0} L☉"} } @@ -1606,7 +1663,6 @@ bg{ other{"{0} Da"} } earth-mass{ - dnam{"Маси на Земята"} one{"{0} M⊕"} other{"{0} M⊕"} } @@ -1623,9 +1679,8 @@ bg{ per{"{0}/kg"} } metric-ton{ - dnam{"т"} - one{"{0} т"} - other{"{0} т"} + one{"{0} t"} + other{"{0} t"} } microgram{ dnam{"µg"} @@ -1638,9 +1693,8 @@ bg{ other{"{0} mg"} } ounce{ - dnam{"унц."} - one{"{0} унц."} - other{"{0} унц."} + one{"{0} oz"} + other{"{0} oz"} per{"{0}/oz"} } ounce-troy{ @@ -1649,20 +1703,17 @@ bg{ other{"{0} тр. унц."} } pound{ - dnam{"фунтове"} - one{"{0} фунт"} - other{"{0} фунта"} + one{"{0} lb"} + other{"{0} lb"} per{"{0}/lb"} } solar-mass{ - dnam{"слънчеви маси"} one{"{0} M☉"} other{"{0} M☉"} } ton{ - dnam{"къси тонове"} - one{"{0} к. т."} - other{"{0} к. т."} + one{"{0} tn"} + other{"{0} tn"} } } power{ @@ -1756,21 +1807,21 @@ bg{ other{"{0} m/s"} } mile-per-hour{ - dnam{"мили/ч"} - one{"{0} миля/ч"} - other{"{0} мили/ч"} + dnam{"mph"} + one{"{0} mph"} + other{"{0} mph"} } } temperature{ celsius{ dnam{"°C"} - one{"{0} °C"} - other{"{0} °C"} + one{"{0}°C"} + other{"{0}°C"} } fahrenheit{ dnam{"°F"} - one{"{0} °F"} - other{"{0} °F"} + one{"{0}°F"} + other{"{0}°F"} } generic{ dnam{"°"} @@ -1797,9 +1848,8 @@ bg{ } volume{ acre-foot{ - dnam{"акър-футове"} - one{"{0} акър-фут"} - other{"{0} акър-фута"} + one{"{0} ac ft"} + other{"{0} ac ft"} } barrel{ dnam{"барел"} @@ -1818,14 +1868,12 @@ bg{ per{"{0}/cm³"} } cubic-foot{ - dnam{"куб. футове"} - one{"{0} куб. фут"} - other{"{0} куб. фута"} + one{"{0} ft³"} + other{"{0} ft³"} } cubic-inch{ - dnam{"куб. инчове"} - one{"{0} куб. инч"} - other{"{0} куб. инча"} + one{"{0} in³"} + other{"{0} in³"} } cubic-kilometer{ dnam{"km³"} @@ -1839,19 +1887,17 @@ bg{ per{"{0}/m³"} } cubic-mile{ - dnam{"куб. мили"} - one{"{0} куб. миля"} - other{"{0} куб. мили"} + one{"{0} mi³"} + other{"{0} mi³"} } cubic-yard{ - dnam{"куб. ярдове"} - one{"{0} куб. ярд"} - other{"{0} куб. ярда"} + one{"{0} yd³"} + other{"{0} yd³"} } cup{ - dnam{"чаши"} - one{"{0} чаша"} - other{"{0} чаши"} + dnam{"ч."} + one{"{0} ч."} + other{"{0} ч."} } cup-metric{ dnam{"mcup"} @@ -1864,9 +1910,8 @@ bg{ other{"{0} dl"} } fluid-ounce{ - dnam{"т. унц."} - one{"{0} т. унц."} - other{"{0} т. унц."} + one{"{0} fl oz US"} + other{"{0} fl oz US"} } fluid-ounce-imperial{ dnam{"Imp. fl oz"} @@ -1874,10 +1919,8 @@ bg{ other{"{0} fl oz Imp."} } gallon{ - dnam{"галони"} - one{"{0} галон"} - other{"{0} галона"} - per{"{0}/гал."} + one{"{0} gal US"} + other{"{0} gal US"} } gallon-imperial{ dnam{"имп. галон"} @@ -1891,7 +1934,7 @@ bg{ other{"{0} hl"} } liter{ - dnam{"литри"} + dnam{"l"} one{"{0} l"} other{"{0} l"} per{"{0}/l"} @@ -1907,9 +1950,8 @@ bg{ other{"{0} ml"} } pint{ - dnam{"пинти"} - one{"{0} пинта"} - other{"{0} пинти"} + one{"{0} pt"} + other{"{0} pt"} } pint-metric{ dnam{"mpt"} @@ -1917,9 +1959,8 @@ bg{ other{"{0} mpt"} } quart{ - dnam{"кварти"} - one{"{0} кварта"} - other{"{0} кварти"} + one{"{0} qt"} + other{"{0} qt"} } tablespoon{ dnam{"с. л."} diff --git a/source/data/unit/bm.txt b/source/data/unit/bm.txt index 4e497bb..d332367 100644 --- a/source/data/unit/bm.txt +++ b/source/data/unit/bm.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bm{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/bn.txt b/source/data/unit/bn.txt index 041d9f8..b411deb 100644 --- a/source/data/unit/bn.txt +++ b/source/data/unit/bn.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bn{ - Version{"2.1.48.36"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -123,11 +123,6 @@ bn{ one{"{0} মিলিমোল, প্রতি লিটারে"} other{"{0} মিলিমোল, প্রতি লিটারে"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ভাগ, প্রতি মিলিয়নে"} one{"{0} ভাগ, প্রতি মিলিয়নে"} @@ -143,11 +138,6 @@ bn{ one{"{0} প্রতিমাইল"} other{"{0}প্রতিমাইল"} } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -247,6 +237,11 @@ bn{ other{"{0} দিন"} per{"{0} প্রতি দিন"} } + decade{ + dnam{"দশক"} + one{"{0} দশক"} + other{"{0} দশক"} + } hour{ dnam{"ঘন্টা"} one{"{0} ঘন্টা"} @@ -362,6 +357,11 @@ bn{ one{"{0} কিলোওয়াট ঘন্টা"} other{"{0} কিলোওয়াট ঘন্টা"} } + therm-us{ + dnam{"US থার্ম"} + one{"{0} US থার্ম"} + other{"{0} US থার্ম"} + } } force{ newton{ @@ -369,11 +369,6 @@ bn{ one{"{0} নিউটন"} other{"{0} নিউটন্স"} } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} - } } frequency{ gigahertz{ @@ -397,6 +392,41 @@ bn{ other{"{0} মেগাহার্জ"} } } + graphics{ + dot-per-centimeter{ + dnam{"সেন্টিমিটার প্রতি বিন্দু"} + one{"সেন্টিমিটার প্রতি {0} বিন্দু"} + other{"সেন্টিমিটার প্রতি {0} বিন্দু"} + } + dot-per-inch{ + dnam{"ইঞ্চি প্রতি বিন্দু"} + one{"ইঞ্চি প্রতি {0} বিন্দু"} + other{"ইঞ্চি প্রতি {0} বিন্দু"} + } + em{ + dnam{"টাইপোগ্রাফিক em"} + } + megapixel{ + dnam{"মেগাপিক্সেল"} + one{"{0} মেগাপিক্সেল"} + other{"{0} মেগাপিক্সেল"} + } + pixel{ + dnam{"পিক্সেল"} + one{"{0} পিক্সেল"} + other{"{0} পিক্সেল"} + } + pixel-per-centimeter{ + dnam{"সেন্টিমিটার প্রতি পিক্সেল"} + one{"সেন্টিমিটার প্রতি {0} পিক্সেল"} + other{"সেন্টিমিটার প্রতি {0} পিক্সেল"} + } + pixel-per-inch{ + dnam{"ইঞ্চি প্রতি পিক্সেল"} + one{"ইঞ্চি প্রতি {0} পিক্সেল"} + other{"ইঞ্চি প্রতি {0} পিক্সেল"} + } + } length{ astronomical-unit{ dnam{"জ্যোতির্বিজ্ঞান একক"} @@ -415,6 +445,7 @@ bn{ other{"{0} ডেসিমিটার"} } fathom{ + dnam{"fm"} one{"{0} fth"} other{"{0} fth"} } @@ -498,9 +529,9 @@ bn{ other{"{0} pt"} } solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} + dnam{"সৌর রেডি"} + one{"{0} সৌর রেডিয়াস"} + other{"{0} সৌর রেডি"} } yard{ dnam{"গজ"} @@ -514,11 +545,6 @@ bn{ one{"{0} লাক্স"} other{"{0} লাক্স"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -531,11 +557,6 @@ bn{ one{"{0} ড্যালটন্স"} other{"{0} ড্যালটন্স"} } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"গ্রাম"} one{"{0} গ্রাম"} @@ -580,10 +601,10 @@ bn{ other{"{0} পাউন্ড"} per{"{0} প্রতি পাউন্ড"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} + stone{ + dnam{"st"} + one{"{0} st"} + other{"{0} st"} } ton{ dnam{"টন"} @@ -624,6 +645,16 @@ bn{ } } pressure{ + atmosphere{ + dnam{"atm"} + one{"{0} atm"} + other{"{0} atm"} + } + bar{ + dnam{"বার"} + one{"{0} বার"} + other{"{0} বার"} + } hectopascal{ dnam{"হেক্টোপাসকল"} one{"{0} হেক্টোপাসকল"} @@ -654,6 +685,11 @@ bn{ one{"{0} মিলিমিটার পারদ"} other{"{0} মিলিমিটার পারদ"} } + pascal{ + dnam{"প্যাসকেল"} + one{"{0} প্যাসকেল"} + other{"{0} প্যাসকেল"} + } pound-per-square-inch{ dnam{"বর্গইঞ্চি প্রতি পাউন্ড"} one{"{0} বর্গইঞ্চি প্রতি পাউন্ড"} @@ -710,11 +746,6 @@ bn{ one{"{0} নিউটন-একক"} other{"{0} নিউটন-এককগুলি"} } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } } volume{ acre-foot{ @@ -790,7 +821,6 @@ bn{ other{"{0} ফ্লুইড আউন্স"} } fluid-ounce-imperial{ - dnam{"Imp. fl oz"} one{"{0} Imp. fl oz"} other{"{0} Imp. fluid ounces"} } @@ -861,6 +891,11 @@ bn{ one{"{0} জি-বল"} other{"{0} জি-বল"} } + meter-per-second-squared{ + dnam{"m/s²"} + one{"{0} m/s²"} + other{"{0} m/s²"} + } } angle{ arc-minute{ @@ -908,6 +943,8 @@ bn{ concentr{ percent{ dnam{"শতাংশ"} + one{"{0}%"} + other{"{0}%"} } } consumption{ @@ -989,6 +1026,11 @@ bn{ } } length{ + astronomical-unit{ + dnam{"au"} + one{"{0} au"} + other{"{0} au"} + } centimeter{ dnam{"সেমি"} one{"{0} সেমি"} @@ -1001,6 +1043,7 @@ bn{ other{"{0} ডেমি"} } fathom{ + dnam{"fm"} one{"{0} fth"} other{"{0} fth"} } @@ -1038,18 +1081,39 @@ bn{ other{"{0} মি"} per{"{0}/মি"} } + micrometer{ + one{"{0} µm"} + other{"{0} µm"} + } mile{ dnam{"মাইল"} one{"{0} মাইল"} other{"{0} মাইল"} } + mile-scandinavian{ + dnam{"smi"} + one{"{0} smi"} + other{"{0} smi"} + } millimeter{ dnam{"মিমি"} one{"{0} মিমি"} other{"{0} মিমি"} } + nanometer{ + dnam{"nm"} + one{"{0} nm"} + other{"{0} nm"} + } + nautical-mile{ + dnam{"nmi"} + one{"{0} nmi"} + other{"{0} nmi"} + } parsec{ dnam{"parsecs"} + one{"{0} pc"} + other{"{0} pc"} } picometer{ dnam{"পিমি"} @@ -1058,6 +1122,8 @@ bn{ } point{ dnam{"pts"} + one{"{0} pt"} + other{"{0} pt"} } yard{ dnam{"গজ"} @@ -1068,6 +1134,8 @@ bn{ mass{ carat{ dnam{"ক্যারেট"} + one{"{0} CD"} + other{"{0} CD"} } gram{ dnam{"গ্রাম"} @@ -1086,6 +1154,11 @@ bn{ one{"{0} টন"} other{"{0} টন"} } + microgram{ + dnam{"µg"} + one{"{0} µg"} + other{"{0} µg"} + } milligram{ dnam{"মিগ্রা:"} one{"{0}/মিগ্রা:"} @@ -1097,12 +1170,22 @@ bn{ other{"{0} আউন্স"} per{"{0}/আউন্স"} } + ounce-troy{ + dnam{"oz t"} + one{"{0} oz t"} + other{"{0} oz t"} + } pound{ dnam{"পাউন্ড"} one{"{0} পাউন্ড"} other{"{0} পাউন্ড"} per{"{0}/পাউন্ড"} } + stone{ + dnam{"st"} + one{"{0} st"} + other{"{0} st"} + } ton{ dnam{"টন"} one{"{0} টন"} @@ -1110,6 +1193,14 @@ bn{ } } power{ + horsepower{ + one{"{0} hp"} + other{"{0} hp"} + } + kilowatt{ + one{"{0} kW"} + other{"{0} kW"} + } watt{ one{"{0} ওয়াট"} other{"{0} ওয়াট"} @@ -1117,17 +1208,30 @@ bn{ } pressure{ hectopascal{ + dnam{"hPa"} one{"{0} hPa"} other{"{0} hPa"} } inch-hg{ + dnam{"inHg"} one{"{0} inHg"} other{"{0} inHg"} } millibar{ + dnam{"mbar"} one{"{0} mb"} other{"{0} mb"} } + millimeter-of-mercury{ + dnam{"mm Hg"} + one{"{0} mm Hg"} + other{"{0} mm Hg"} + } + pound-per-square-inch{ + dnam{"psi"} + one{"{0} psi"} + other{"{0} psi"} + } } speed{ kilometer-per-hour{ @@ -1135,6 +1239,11 @@ bn{ one{"{0}kph"} other{"{0}kph"} } + knot{ + dnam{"kn"} + one{"{0} kn"} + other{"{0} kn"} + } meter-per-second{ dnam{"মি/সেক"} one{"{0}m/s"} @@ -1153,9 +1262,20 @@ bn{ other{"{0}°C"} } fahrenheit{ + dnam{"°F"} one{"{0}°F"} other{"{0}°F"} } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } + kelvin{ + dnam{"K"} + one{"{0} K"} + other{"{0} K"} + } } volume{ cubic-kilometer{ @@ -1289,11 +1409,6 @@ bn{ one{"{0} mmol/L"} other{"{0} mmol/L"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ppm"} one{"{0} ppm"} @@ -1301,14 +1416,13 @@ bn{ } percent{ dnam{"শতাংশ"} + one{"{0}%"} + other{"{0}%"} } permille{ dnam{"প্রতিমাইল"} - } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} + one{"{0}‰"} + other{"{0}‰"} } } consumption{ @@ -1383,6 +1497,8 @@ bn{ } petabyte{ dnam{"PByte"} + one{"{0} PB"} + other{"{0} PB"} } terabit{ dnam{"Tbit"} @@ -1407,6 +1523,11 @@ bn{ other{"{0} দিন"} per{"{0} প্রতি দিন"} } + decade{ + dnam{"দশক"} + one{"{0} দশক"} + other{"{0} দশক"} + } hour{ dnam{"ঘন্টা"} one{"{0} ঘন্টা"} @@ -1482,11 +1603,6 @@ bn{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"cal"} one{"{0} cal"} @@ -1494,8 +1610,6 @@ bn{ } electronvolt{ dnam{"ইলেকট্রন ভোল্ট"} - one{"{0} eV"} - other{"{0} eV"} } foodcalorie{ dnam{"Cal"} @@ -1522,17 +1636,15 @@ bn{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"US থার্ম"} + one{"{0} US থার্ম"} + other{"{0} US থার্ম"} + } } force{ newton{ dnam{"নিউটন"} - one{"{0} N"} - other{"{0} N"} - } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1557,6 +1669,17 @@ bn{ other{"{0} MHz"} } } + graphics{ + megapixel{ + dnam{"মেগাপিক্সেল"} + } + pixel{ + dnam{"পিক্সেল"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -1575,6 +1698,7 @@ bn{ other{"{0} ডেমি"} } fathom{ + dnam{"fm"} one{"{0} fth"} other{"{0} fth"} } @@ -1658,9 +1782,7 @@ bn{ other{"{0} pt"} } solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} + dnam{"সৌর রেডি"} } yard{ dnam{"গজ"} @@ -1674,11 +1796,6 @@ bn{ one{"{0} lx"} other{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -1688,13 +1805,6 @@ bn{ } dalton{ dnam{"ড্যালটন্স"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"গ্রাম"} @@ -1740,10 +1850,10 @@ bn{ other{"{0} lb"} per{"{0}/lb"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} + stone{ + dnam{"st"} + one{"{0} st"} + other{"{0} st"} } ton{ dnam{"tn"} @@ -1784,6 +1894,16 @@ bn{ } } pressure{ + atmosphere{ + dnam{"atm"} + one{"{0} atm"} + other{"{0} atm"} + } + bar{ + dnam{"বার"} + one{"{0} বার"} + other{"{0} বার"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -1794,16 +1914,6 @@ bn{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} one{"{0} mbar"} @@ -1864,18 +1974,6 @@ bn{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ac ft"} @@ -1884,8 +1982,6 @@ bn{ } barrel{ dnam{"ব্যারেল"} - one{"{0} bbl"} - other{"{0} bbl"} } centiliter{ dnam{"cL"} @@ -1951,8 +2047,6 @@ bn{ } fluid-ounce-imperial{ dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} } gallon{ dnam{"gal"} diff --git a/source/data/unit/bo.txt b/source/data/unit/bo.txt index 9dc0b9f..1be4f2e 100644 --- a/source/data/unit/bo.txt +++ b/source/data/unit/bo.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bo{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/br.txt b/source/data/unit/br.txt index 82f6baf..185c791 100644 --- a/source/data/unit/br.txt +++ b/source/data/unit/br.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License br{ - Version{"2.1.48.86"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -35,6 +35,14 @@ br{ other{"{0} radian"} two{"{0} radian"} } + revolution{ + dnam{"tro"} + few{"{0} zro"} + many{"{0} a droioù"} + one{"{0} dro"} + other{"{0} tro"} + two{"{0} dro"} + } } area{ acre{ @@ -45,6 +53,14 @@ br{ other{"{0} akr"} two{"{0} akr"} } + dunam{ + dnam{"dounamoù"} + few{"{0} dounam"} + many{"{0} a zounamoù"} + one{"{0} dounam"} + other{"{0} dounam"} + two{"{0} zounam"} + } hectare{ dnam{"hektaroù"} few{"{0} hektar"} @@ -106,9 +122,18 @@ br{ per{"{0} dre viltir karrez"} two{"{0} viltir karrez"} } + square-yard{ + dnam{"yardoù karrez"} + few{"{0} yard karrez"} + many{"{0} a yardoù karrez"} + one{"{0} yard karrez"} + other{"{0} yard karrez"} + two{"{0} yard karrez"} + } } compound{ per{"{0} dre {1}"} + times{"{0}-{1}"} } concentr{ karat{ @@ -128,13 +153,45 @@ br{ two{"{0} villigramm dre zekilitr"} } millimole-per-liter{ - dnam{"millimol dre litr"} + dnam{"millimoloù dre litr"} few{"{0} millimol dre litr"} many{"{0} a villimoloù dre litr"} one{"{0} millimol dre litr"} other{"{0} millimol dre litr"} two{"{0} villimol dre litr"} } + mole{ + dnam{"moloù"} + few{"{0} mol"} + many{"{0} a voloù"} + one{"{0} mol"} + other{"{0} mol"} + two{"{0} vol"} + } + percent{ + dnam{"dre gant"} + few{"{0} dre gant"} + many{"{0} dre gant"} + one{"{0} dre gant"} + other{"{0} dre gant"} + two{"{0} dre gant"} + } + permille{ + dnam{"dre vil"} + few{"{0} dre vil"} + many{"{0} dre vil"} + one{"{0} dre vil"} + other{"{0} dre vil"} + two{"{0} dre vil"} + } + permyriad{ + dnam{"dre zek mil"} + few{"{0} dre zek mil"} + many{"{0} dre zek mil"} + one{"{0} dre zek mil"} + other{"{0} dre zek mil"} + two{"{0} dre zek mil"} + } } consumption{ liter-per-100kilometers{ @@ -161,6 +218,14 @@ br{ other{"{0} miltir dre c'hallon"} two{"{0} viltir dre c'hallon"} } + mile-per-gallon-imperial{ + dnam{"miltirioù dre cʼhallon impalaerel"} + few{"{0} miltir dre cʼhallon impalaerel"} + many{"{0} a viltirioù dre cʼhallon impalaerel"} + one{"{0} miltir dre cʼhallon impalaerel"} + other{"{0} miltir dre cʼhallon impalaerel"} + two{"{0} viltir dre cʼhallon impalaerel"} + } } coordinate{ east{"{0} Reter"} @@ -233,6 +298,14 @@ br{ other{"{0} megaokted"} two{"{0} vegaokted"} } + petabyte{ + dnam{"petaoktedoù"} + few{"{0} fetaokted"} + many{"{0} a betaoktedoù"} + one{"{0} petaokted"} + other{"{0} petaokted"} + two{"{0} betaokted"} + } terabit{ dnam{"terabitoù"} few{"{0} zerabit"} @@ -268,6 +341,14 @@ br{ per{"{0} dre zeiz"} two{"{0} zeiz"} } + decade{ + dnam{"dekvloavezhiadoù"} + few{"{0} dekvloavezhiad"} + many{"{0} a zekvloavezhiadoù"} + one{"{0} dekvloavezhiad"} + other{"{0} dekvloavezhiad"} + two{"{0} zekvloavezhiad"} + } hour{ dnam{"eurioù"} few{"{0} eur"} @@ -382,6 +463,14 @@ br{ } } energy{ + british-thermal-unit{ + dnam{"British thermal units"} + few{"{0} British thermal unit"} + many{"{0} British thermal unit"} + one{"{0} British thermal unit"} + other{"{0} British thermal unit"} + two{"{0} vBritish thermal unit"} + } calorie{ dnam{"kaloriennoù"} few{"{0} c'halorienn"} @@ -390,6 +479,22 @@ br{ other{"{0} kalorienn"} two{"{0} galorienn"} } + electronvolt{ + dnam{"elektron-voltoù"} + few{"{0} elektron-volt"} + many{"{0} a elektron-voltoù"} + one{"{0} elektron-volt"} + other{"{0} elektron-volt"} + two{"{0} elektron-volt"} + } + foodcalorie{ + dnam{"kaloriennoù bras"} + few{"{0} c'halorienn vras"} + many{"{0} a galoriennoù bras"} + one{"{0} galorienn vras"} + other{"{0} kalorienn vras"} + two{"{0} galorienn vras"} + } joule{ dnam{"jouloù"} few{"{0} joul"} @@ -422,6 +527,24 @@ br{ other{"{0} kilowatt-eur"} two{"{0} gilowatt-eur"} } + therm-us{ + dnam{"termiennoù SU"} + few{"{0} zermienn"} + many{"{0} a dermiennoù"} + one{"{0} dermienn"} + other{"{0} termienn"} + two{"{0} dermienn"} + } + } + force{ + newton{ + dnam{"newtonoù"} + few{"{0} newton"} + many{"{0} a newtonoù"} + one{"{0} newton"} + other{"{0} newton"} + two{"{0} newton"} + } } frequency{ gigahertz{ @@ -457,6 +580,56 @@ br{ two{"{0} vegahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"pikoù dre gentimetr"} + few{"{0} fik dre gentimetr"} + many{"{0} a bikoù dre gentimetr"} + one{"{0} pik dre gentimetr"} + other{"{0} pik dre gentimetr"} + two{"{0} bik dre gentimetr"} + } + dot-per-inch{ + dnam{"pikoù dre veutad"} + few{"{0} fik dre veutad"} + many{"{0} a bikoù dre veutad"} + one{"{0} pik dre veutad"} + other{"{0} pik dre veutad"} + two{"{0} bik dre veutad"} + } + megapixel{ + dnam{"megapikselioù"} + few{"{0} megapiksel"} + many{"{0} a vegapikselioù"} + one{"{0} megapiksel"} + other{"{0} megapiksel"} + two{"{0} vegapiksel"} + } + pixel{ + dnam{"pikselioù"} + few{"{0} fiksel"} + many{"{0} a bikselioù"} + one{"{0} piksel"} + other{"{0} piksel"} + two{"{0} biksel"} + } + pixel-per-centimeter{ + dnam{"pikselioù dre gentimetr"} + few{"{0} fiksel dre gentimetr"} + many{"{0} a bikselioù dre gentimetr"} + one{"{0} piksel dre gentimetr"} + other{"{0} piksel dre gentimetr"} + two{"{0} biksel dre gentimetr"} + } + pixel-per-inch{ + dnam{"pikselioù dre veutad"} + few{"{0} fiksel dre veutad"} + many{"{0} a pikselioù dre veutad"} + one{"{0} piksel dre veutad"} + other{"{0} piksel dre veutad"} + two{"{0} biksel dre veutad"} + } + } length{ astronomical-unit{ dnam{"unanennoù steredoniel"} @@ -500,6 +673,14 @@ br{ per{"{0} dre droatad"} two{"{0} droatad"} } + furlong{ + dnam{"furlongoù"} + few{"{0} furlong"} + many{"{0} a furlongoù"} + one{"{0} furlong"} + other{"{0} furlong"} + two{"{0} furlong"} + } inch{ dnam{"meutadoù"} few{"{0} meutad"} @@ -518,6 +699,14 @@ br{ per{"{0} dre gilometr"} two{"{0} gilometr"} } + light-year{ + dnam{"bloavezhioù-gouloù"} + few{"{0} bloavezh-gouloù"} + many{"{0} a vloavezhioù-gouloù"} + one{"{0} bloavezh-gouloù"} + other{"{0} bloavezh-gouloù"} + two{"{0} vloavezh-gouloù"} + } meter{ dnam{"metroù"} few{"{0} metr"} @@ -543,6 +732,14 @@ br{ other{"{0} miltir"} two{"{0} viltir"} } + mile-scandinavian{ + dnam{"miltirioù skandinaviat"} + few{"{0} miltir skandinaviat"} + many{"{0} a viltirioù skandinaviat"} + one{"{0} miltir skandinaviat"} + other{"{0} miltir skandinaviat"} + two{"{0} miltir skandinaviat"} + } millimeter{ dnam{"milimetroù"} few{"{0} milimetr"} @@ -584,13 +781,29 @@ br{ two{"{0} bikometr"} } point{ - dnam{"poent"} + dnam{"poentoù"} few{"{0} foent"} many{"{0} a boentoù"} one{"{0} poent"} other{"{0} poent"} two{"{0} boent"} } + solar-radius{ + dnam{"skinoù heol"} + few{"{0} skin heol"} + many{"{0} skin heol"} + one{"{0} skin heol"} + other{"{0} R☉"} + two{"{0} skin heol"} + } + yard{ + dnam{"yardoù"} + few{"{0} yard"} + many{"{0} a yardoù"} + one{"{0} yard"} + other{"{0} yard"} + two{"{0} yard"} + } } light{ lux{ @@ -611,6 +824,22 @@ br{ other{"{0} karat"} two{"{0} garat"} } + dalton{ + dnam{"daltonoù"} + few{"{0} dalton"} + many{"{0} a zaltonoù"} + one{"{0} dalton"} + other{"{0} dalton"} + two{"{0} zalton"} + } + earth-mass{ + dnam{"tolzadoù douar"} + few{"{0} zolzad douar"} + many{"{0} a dolzadoù douar"} + one{"{0} tolzad douar"} + other{"{0} tolzad douar"} + two{"{0} dolzad douar"} + } gram{ dnam{"grammoù"} few{"{0} gramm"} @@ -662,6 +891,14 @@ br{ per{"{0} dre oñs"} two{"{0} oñs"} } + ounce-troy{ + dnam{"oñsoù troy"} + few{"{0} oñs troy"} + many{"{0} oñs troy"} + one{"{0} oñs troy"} + other{"{0} oñs troy"} + two{"{0} oñs troy"} + } pound{ dnam{"lurioù"} few{"{0} lur"} @@ -671,6 +908,22 @@ br{ per{"{0} dre lur"} two{"{0} lur"} } + solar-mass{ + dnam{"tolzadoù heol"} + few{"{0} zolzad heol"} + many{"{0} a dolzadoù heol"} + one{"{0} tolzad heol"} + other{"{0} tolzad heol"} + two{"{0} dolzad heol"} + } + stone{ + dnam{"stonoù"} + few{"{0} ston"} + many{"{0} ston"} + one{"{0} ston"} + other{"{0} ston"} + two{"{0} ston"} + } ton{ dnam{"tonennoù"} few{"{0} zonenn"} @@ -731,6 +984,14 @@ br{ } } pressure{ + bar{ + dnam{"baroù"} + few{"{0} bar"} + many{"{0} a varoù"} + one{"{0} bar"} + other{"{0} bar"} + two{"{0} var"} + } hectopascal{ dnam{"hektopaskaloù"} few{"{0} hektopaskal"} @@ -739,6 +1000,22 @@ br{ other{"{0} hektopaskal"} two{"{0} hektopaskal"} } + kilopascal{ + dnam{"kilopaskaloù"} + few{"{0} c'hilopaskal"} + many{"{0} a gilopaskaloù"} + one{"{0} c'hilopaskal"} + other{"{0} kilopaskal"} + two{"{0} gilopaskal"} + } + megapascal{ + dnam{"megapaskaloù"} + few{"{0} megapaskal"} + many{"{0} a vegapaskaloù"} + one{"{0} megapaskal"} + other{"{0} megapaskal"} + two{"{0} vegapaskal"} + } millibar{ dnam{"milibaroù"} few{"{0} milibar"} @@ -747,6 +1024,14 @@ br{ other{"{0} milibar"} two{"{0} vilibar"} } + pascal{ + dnam{"paskaloù"} + few{"{0} faskal"} + many{"{0} a baskaloù"} + one{"{0} paskal"} + other{"{0} paskal"} + two{"{0} baskal"} + } pound-per-square-inch{ dnam{"lurioù dre veutad karrez"} few{"{0} lur dre veutad karrez"} @@ -824,7 +1109,33 @@ br{ two{"{0} gelvin"} } } + torque{ + newton-meter{ + dnam{"newton-metroù"} + few{"{0} newton-metr"} + many{"{0} a newton-metroù"} + one{"{0} newton-metr"} + other{"{0} newton-metr"} + two{"{0} newton-metr"} + } + } volume{ + acre-foot{ + dnam{"akroù-troatadoù"} + few{"{0} akr-troatad"} + many{"{0} akr-troatad"} + one{"{0} akr-troatad"} + other{"{0} akr-troatad"} + two{"{0} akr-troatad"} + } + barrel{ + dnam{"barilhoù"} + few{"{0} barilh"} + many{"{0} a varilhoù"} + one{"{0} barilh"} + other{"{0} barilh"} + two{"{0} varilh"} + } bushel{ dnam{"poezelladoù"} few{"{0} foezellad"} @@ -891,6 +1202,30 @@ br{ other{"{0} miltir diñs"} two{"{0} viltir diñs"} } + cubic-yard{ + dnam{"yardoù diñs"} + few{"{0} yard diñs"} + many{"{0} a yardoù diñs"} + one{"{0} yard diñs"} + other{"{0} yard diñs"} + two{"{0} yard diñs"} + } + cup{ + dnam{"tasadoù"} + few{"{0} zasad"} + many{"{0} a dasadoù"} + one{"{0} tasad"} + other{"{0} tasad"} + two{"{0} tasad"} + } + cup-metric{ + dnam{"tasadoù metrek"} + few{"{0} zasad metrek"} + many{"{0} a dasadoù metrek"} + one{"{0} tasad metrek"} + other{"{0} tasad metrek"} + two{"{0} dasad vetrek"} + } deciliter{ dnam{"dekilitroù"} few{"{0} dekilitr"} @@ -899,6 +1234,22 @@ br{ other{"{0} dekilitr"} two{"{0} zekilitr"} } + fluid-ounce{ + dnam{"oñsoù liñvel"} + few{"{0} oñs liñvel"} + many{"{0} a oñsoù liñvel"} + one{"{0} oñs liñvel"} + other{"{0} oñs liñvel"} + two{"{0} oñs liñvel"} + } + fluid-ounce-imperial{ + dnam{"oñsoù liñvel impalaerel"} + few{"{0} oñs liñvel impalaerel"} + many{"{0} a oñsoù liñvel impalaerel"} + one{"{0} oñs liñvel impalaerel"} + other{"{0} oñs liñvel impalaerel"} + two{"{0} oñs liñvel impalaerel"} + } gallon{ dnam{"gallonoù"} few{"{0} gallon"} @@ -908,6 +1259,15 @@ br{ per{"{0} dre cʼhallon"} two{"{0} c'hallon"} } + gallon-imperial{ + dnam{"gallonoù impalaerel"} + few{"{0} gallon impalaerel"} + many{"{0} a c'hallonoù impalaerel"} + one{"{0} gallon impalaerel"} + other{"{0} gallon impalaerel"} + per{"{0} dre cʼhallon impalaerel"} + two{"{0} c'hallon impalaerel"} + } hectoliter{ dnam{"hektolitroù"} few{"{0} hektolitr"} @@ -965,21 +1325,46 @@ br{ other{"{0} kard"} two{"{0} gard"} } + tablespoon{ + dnam{"loaiadoù-boued"} + few{"{0} loaiad-voued"} + many{"{0} a loaiadoù-boued"} + one{"{0} loaiad-voued"} + other{"{0} loaiad-voued"} + two{"{0} loaiad-voued"} + } + teaspoon{ + dnam{"loaiadoù-kafe"} + few{"{0} loaiad-gafe"} + many{"{0} a loaiadoù-kafe"} + one{"{0} loaiad-gafe"} + other{"{0} loaiad-gafe"} + two{"{0} loaiad-gafe"} + } } } unitsNarrow{ acceleration{ + g-force{ + dnam{"G"} + few{"{0}G"} + many{"{0}G"} + one{"{0}G"} + other{"{0}G"} + two{"{0}G"} + } meter-per-second-squared{ dnam{"m/s²"} - few{"{0} m/s²"} - many{"{0} m/s²"} - one{"{0} m/s²"} - other{"{0} m/s²"} - two{"{0} m/s²"} + few{"{0}m/s²"} + many{"{0}m/s²"} + one{"{0}m/s²"} + other{"{0}m/s²"} + two{"{0}m/s²"} } } angle{ arc-minute{ + dnam{"′"} few{"{0}′"} many{"{0}′"} one{"{0}′"} @@ -987,6 +1372,7 @@ br{ two{"{0}′"} } arc-second{ + dnam{"″"} few{"{0}″"} many{"{0}″"} one{"{0}″"} @@ -1003,82 +1389,105 @@ br{ } radian{ dnam{"rad"} - few{"{0} rad"} - many{"{0} rad"} - one{"{0} rad"} - other{"{0} rad"} - two{"{0} rad"} + few{"{0}rad"} + many{"{0}rad"} + one{"{0}rad"} + other{"{0}rad"} + two{"{0}rad"} + } + revolution{ + dnam{"tr"} + few{"{0}tr"} + many{"{0}tr"} + one{"{0}tr"} + other{"{0}tr"} + two{"{0}tr"} } } area{ acre{ dnam{"ac"} - few{"{0} ac"} - many{"{0} ac"} - one{"{0} ac"} - other{"{0} ac"} - two{"{0} ac"} + few{"{0}ac"} + many{"{0}ac"} + one{"{0}ac"} + other{"{0}ac"} + two{"{0}ac"} + } + dunam{ + dnam{"dounam"} + few{"{0}dounam"} + many{"{0}dounam"} + one{"{0}dounam"} + other{"{0}dounam"} + two{"{0}dounam"} } hectare{ dnam{"ha"} - few{"{0} ha"} - many{"{0} ha"} - one{"{0} ha"} - other{"{0} ha"} - two{"{0} ha"} + few{"{0}ha"} + many{"{0}ha"} + one{"{0}ha"} + other{"{0}ha"} + two{"{0}ha"} } square-centimeter{ dnam{"cm²"} - few{"{0} cm²"} - many{"{0} cm²"} - one{"{0} cm²"} - other{"{0} cm²"} + few{"{0}cm²"} + many{"{0}cm²"} + one{"{0}cm²"} + other{"{0}cm²"} per{"{0}/cm²"} - two{"{0} cm²"} + two{"{0}cm²"} } square-foot{ dnam{"ft²"} - few{"{0} ft²"} - many{"{0} ft²"} - one{"{0} ft²"} - other{"{0} ft²"} - two{"{0} ft²"} + few{"{0}ft²"} + many{"{0}ft²"} + one{"{0}ft²"} + other{"{0}ft²"} + two{"{0}ft²"} } square-inch{ dnam{"in²"} - few{"{0} in²"} - many{"{0} in²"} - one{"{0} in²"} - other{"{0} in²"} + few{"{0}in²"} + many{"{0}in²"} + one{"{0}in²"} + other{"{0}in²"} per{"{0}/in²"} - two{"{0} in²"} + two{"{0}in²"} } square-kilometer{ dnam{"km²"} - few{"{0} km²"} - many{"{0} km²"} - one{"{0} km²"} - other{"{0} km²"} + few{"{0}km²"} + many{"{0}km²"} + one{"{0}km²"} + other{"{0}km²"} per{"{0}/km²"} - two{"{0} km²"} + two{"{0}km²"} } square-meter{ dnam{"m²"} - few{"{0} m²"} - many{"{0} m²"} - one{"{0} m²"} - other{"{0} m²"} + few{"{0}m²"} + many{"{0}m²"} + one{"{0}m²"} + other{"{0}m²"} per{"{0}/m²"} - two{"{0} m²"} + two{"{0}m²"} } square-mile{ dnam{"mi²"} - few{"{0} mi²"} - many{"{0} mi²"} - one{"{0} mi²"} - other{"{0} mi²"} + few{"{0}mi²"} + many{"{0}mi²"} + one{"{0}mi²"} + other{"{0}mi²"} per{"{0}/mi²"} - two{"{0} mi²"} + two{"{0}mi²"} + } + square-yard{ + few{"{0}yd²"} + many{"{0}yd²"} + one{"{0}yd²"} + other{"{0}yd²"} + two{"{0}yd²"} } } compound{ @@ -1087,206 +1496,517 @@ br{ concentr{ karat{ dnam{"kt"} - few{"{0} kt"} - many{"{0} kt"} - one{"{0} kt"} - other{"{0} kt"} - two{"{0} kt"} + few{"{0}kt"} + many{"{0}kt"} + one{"{0}kt"} + other{"{0}kt"} + two{"{0}kt"} } milligram-per-deciliter{ dnam{"mg/dl"} - few{"{0} mg/dl"} - many{"{0} mg/dl"} - one{"{0} mg/dl"} - other{"{0} mg/dl"} - two{"{0} mg/dl"} + few{"{0}mg/dl"} + many{"{0}mg/dl"} + one{"{0}mg/dl"} + other{"{0}mg/dl"} + two{"{0}mg/dl"} } millimole-per-liter{ dnam{"mmol/l"} - few{"{0} mmol/l"} - many{"{0} mmol/l"} - one{"{0} mmol/l"} - other{"{0} mmol/l"} - two{"{0} mmol/l"} + few{"{0}mmol/l"} + many{"{0}mmol/l"} + one{"{0}mmol/l"} + other{"{0}mmol/l"} + two{"{0}mmol/l"} + } + mole{ + few{"{0}mol"} + many{"{0}mol"} + one{"{0}mol"} + other{"{0}mol"} + two{"{0}mol"} + } + percent{ + few{"{0}%"} + many{"{0}%"} + one{"{0}%"} + other{"{0}%"} + two{"{0}%"} + } + permille{ + few{"{0}‰"} + many{"{0}‰"} + one{"{0}‰"} + other{"{0}‰"} + two{"{0}‰"} + } + permyriad{ + few{"{0}‱"} + many{"{0}‱"} + one{"{0}‱"} + other{"{0}‱"} + two{"{0}‱"} } } consumption{ liter-per-100kilometers{ dnam{"l/100km"} - few{"{0} l/100km"} - many{"{0} l/100km"} - one{"{0} l/100km"} - other{"{0} l/100km"} - two{"{0} l/100km"} + few{"{0}l/100km"} + many{"{0}l/100km"} + one{"{0}l/100km"} + other{"{0}l/100km"} + two{"{0}l/100km"} } liter-per-kilometer{ dnam{"l/km"} - few{"{0} l/km"} - many{"{0} l/km"} - one{"{0} l/km"} - other{"{0} l/km"} - two{"{0} l/km"} + few{"{0}l/km"} + many{"{0}l/km"} + one{"{0}l/km"} + other{"{0}l/km"} + two{"{0}l/km"} } mile-per-gallon{ dnam{"mi/gal"} - few{"{0} mi/gal"} - many{"{0} mi/gal"} - one{"{0} mi/gal"} - other{"{0} mi/gal"} - two{"{0} mi/gal"} + few{"{0}mi/gal"} + many{"{0}mi/gal"} + one{"{0}mi/gal"} + other{"{0}mi/gal"} + two{"{0}mi/gal"} + } + mile-per-gallon-imperial{ + dnam{"mi/gIm"} + few{"{0}mi/gIm"} + many{"{0}mi/gIm"} + one{"{0}mi/gIm"} + other{"{0}mi/gIm"} + two{"{0}mi/gIm"} } } + coordinate{ + east{"{0}R"} + north{"{0}N"} + south{"{0}S"} + west{"{0}K"} + } digital{ bit{ - dnam{"b"} - few{"{0} b"} - many{"{0} b"} - one{"{0} b"} - other{"{0} b"} - two{"{0} b"} + dnam{"bit"} + few{"{0}bit"} + many{"{0}bit"} + one{"{0}bit"} + other{"{0}bit"} + two{"{0}bit"} } byte{ dnam{"o"} - few{"{0} o"} - many{"{0} o"} - one{"{0} o"} + few{"{0}o"} + many{"{0}o"} + one{"{0}o"} other{"{0} o"} - two{"{0} o"} + two{"{0}o"} } gigabit{ - dnam{"Gb"} - few{"{0} Gb"} - many{"{0} Gb"} - one{"{0} Gb"} - other{"{0} Gb"} - two{"{0} Gb"} + dnam{"Gbit"} + few{"{0}Gbit"} + many{"{0}Gbit"} + one{"{0}Gbit"} + other{"{0}Gbit"} + two{"{0}Gbit"} } gigabyte{ dnam{"Go"} - few{"{0} Go"} - many{"{0} Go"} - one{"{0} Go"} - other{"{0} Go"} - two{"{0} Go"} + few{"{0}Go"} + many{"{0}Go"} + one{"{0}Go"} + other{"{0}Go"} + two{"{0}Go"} } kilobit{ - dnam{"kb"} - few{"{0} kb"} - many{"{0} kb"} - one{"{0} kb"} - other{"{0} kb"} - two{"{0} kb"} + dnam{"kbit"} + few{"{0}kbit"} + many{"{0}kbit"} + one{"{0}kbit"} + other{"{0}kbit"} + two{"{0}kbit"} } kilobyte{ dnam{"ko"} - few{"{0} ko"} - many{"{0} ko"} - one{"{0} ko"} - other{"{0} ko"} - two{"{0} ko"} + few{"{0}ko"} + many{"{0}ko"} + one{"{0}ko"} + other{"{0}ko"} + two{"{0}ko"} } megabit{ - dnam{"Mb"} - few{"{0} Mb"} - many{"{0} Mb"} - one{"{0} Mb"} - other{"{0} Mb"} - two{"{0} Mb"} + dnam{"Mbit"} + few{"{0}Mbit"} + many{"{0}Mbit"} + one{"{0}Mbit"} + other{"{0}Mbit"} + two{"{0}Mbit"} } megabyte{ dnam{"Mo"} - few{"{0} Mo"} - many{"{0} Mo"} - one{"{0} Mo"} - other{"{0} Mo"} - two{"{0} Mo"} + few{"{0}Mo"} + many{"{0}Mo"} + one{"{0}Mo"} + other{"{0}Mo"} + two{"{0}Mo"} + } + petabyte{ + dnam{"Po"} + few{"{0}Po"} + many{"{0}Po"} + one{"{0}Po"} + other{"{0}Po"} + two{"{0}Po"} } terabit{ - dnam{"Tb"} - few{"{0} Tb"} - many{"{0} Tb"} - one{"{0} Tb"} - other{"{0} Tb"} - two{"{0} Tb"} + dnam{"Tbit"} + few{"{0}Tbit"} + many{"{0}Tbit"} + one{"{0}Tbit"} + other{"{0}Tbit"} + two{"{0}Tbit"} } terabyte{ dnam{"To"} - few{"{0} To"} - many{"{0} To"} - one{"{0} To"} - other{"{0} To"} - two{"{0} To"} + few{"{0}To"} + many{"{0}To"} + one{"{0}To"} + other{"{0}To"} + two{"{0}To"} } } duration{ + century{ + few{"{0}kved"} + many{"{0}kved"} + one{"{0}kved"} + other{"{0}kved"} + two{"{0}kved"} + } day{ + few{"{0}d"} + many{"{0}d"} + one{"{0}d"} + other{"{0}d"} per{"{0}/d"} + two{"{0}d"} + } + decade{ + dnam{"dek"} + few{"{0}dek"} + many{"{0}dek"} + one{"{0}dek"} + other{"{0}dek"} + two{"{0}dek"} + } + hour{ + dnam{"h"} + few{"{0}h"} + many{"{0}h"} + one{"{0}h"} + other{"{0}h"} + per{"{0}/h"} + two{"{0}h"} + } + microsecond{ + few{"{0}μs"} + many{"{0}μs"} + one{"{0}μs"} + other{"{0}μs"} + two{"{0}μs"} + } + millisecond{ + few{"{0}ms"} + many{"{0}ms"} + one{"{0}ms"} + other{"{0}ms"} + two{"{0}ms"} } minute{ + few{"{0}min"} + many{"{0}min"} + one{"{0}min"} + other{"{0}min"} per{"{0}/min"} + two{"{0}min"} } month{ - dnam{"mizioù"} - few{"{0} miz"} - many{"{0} a vizioù"} - one{"{0} miz"} - other{"{0} miz"} - per{"{0}/miz"} - two{"{0} m"} + dnam{"m"} + few{"{0}m"} + many{"{0}m"} + one{"{0}m"} + other{"{0}m"} + per{"{0}/m"} + two{"{0}m"} + } + nanosecond{ + few{"{0}ns"} + many{"{0}ns"} + one{"{0}ns"} + other{"{0}ns"} + two{"{0}ns"} + } + second{ + few{"{0}s"} + many{"{0}s"} + one{"{0}s"} + other{"{0}s"} + two{"{0}s"} + } + week{ + dnam{"sizh."} + few{"{0}sizh."} + many{"{0}sizh."} + one{"{0}sizh."} + other{"{0}sizh."} + per{"{0}/sizh."} + two{"{0}sizh."} } year{ dnam{"b"} - few{"{0} b"} - many{"{0} b"} - one{"{0} b"} - other{"{0} b"} + few{"{0}b"} + many{"{0}b"} + one{"{0}b"} + other{"{0}b"} per{"{0}/b"} - two{"{0} b"} + two{"{0}b"} } } electric{ + ampere{ + few{"{0}A"} + many{"{0}A"} + one{"{0}A"} + other{"{0}A"} + two{"{0}A"} + } + milliampere{ + few{"{0}mA"} + many{"{0}mA"} + one{"{0}mA"} + other{"{0}mA"} + two{"{0} mA"} + } ohm{ dnam{"Ω"} - few{"{0} Ω"} - many{"{0} Ω"} - one{"{0} Ω"} - other{"{0} Ω"} - two{"{0} Ω"} + few{"{0}Ω"} + many{"{0}Ω"} + one{"{0}Ω"} + other{"{0}Ω"} + two{"{0}Ω"} + } + volt{ + few{"{0}V"} + many{"{0}V"} + one{"{0}V"} + other{"{0}V"} + two{"{0}V"} + } + } + energy{ + british-thermal-unit{ + dnam{"Btu"} + few{"{0}Btu"} + many{"{0}Btu"} + one{"{0}Btu"} + other{"{0}Btu"} + two{"{0}Btu"} + } + calorie{ + few{"{0}cal"} + many{"{0}cal"} + one{"{0}cal"} + other{"{0}cal"} + two{"{0}cal"} + } + electronvolt{ + few{"{0}eV"} + many{"{0}eV"} + one{"{0}eV"} + other{"{0}eV"} + two{"{0}eV"} + } + foodcalorie{ + few{"{0}Cal"} + many{"{0}Cal"} + one{"{0}Cal"} + other{"{0}Cal"} + two{"{0}Cal"} + } + joule{ + few{"{0}J"} + many{"{0}J"} + one{"{0}J"} + other{"{0}J"} + two{"{0}J"} + } + kilocalorie{ + few{"{0}kcal"} + many{"{0}kcal"} + one{"{0}kcal"} + other{"{0}kcal"} + two{"{0}kcal"} + } + kilojoule{ + few{"{0}kJ"} + many{"{0}kJ"} + one{"{0}kJ"} + other{"{0}kJ"} + two{"{0}kJ"} + } + kilowatt-hour{ + few{"{0}kWh"} + many{"{0}kWh"} + one{"{0}kWh"} + other{"{0}kWh"} + two{"{0}kWh"} + } + therm-us{ + dnam{"thm"} + few{"{0}thm"} + many{"{0}thm"} + one{"{0}thm"} + other{"{0}thm"} + two{"{0}thm"} + } + } + force{ + newton{ + few{"{0}N"} + many{"{0}N"} + one{"{0}N"} + other{"{0}N"} + two{"{0}N"} + } + pound-force{ + few{"{0}lbf"} + many{"{0}lbf"} + one{"{0}lbf"} + other{"{0}lbf"} + two{"{0}lbf"} + } + } + frequency{ + gigahertz{ + few{"{0}GHz"} + many{"{0}GHz"} + one{"{0}GHz"} + other{"{0}GHz"} + two{"{0}GHz"} + } + hertz{ + few{"{0}Hz"} + many{"{0}Hz"} + one{"{0}Hz"} + other{"{0}Hz"} + two{"{0}Hz"} + } + kilohertz{ + few{"{0}kHz"} + many{"{0}kHz"} + one{"{0}kHz"} + other{"{0}kHz"} + two{"{0}kHz"} + } + megahertz{ + few{"{0}MHz"} + many{"{0}MHz"} + one{"{0}MHz"} + other{"{0}MHz"} + two{"{0}MHz"} + } + } + graphics{ + dot-per-centimeter{ + dnam{"pdcm"} + few{"{0}pdcm"} + many{"{0}pdcm"} + one{"{0}pdcm"} + other{"{0}pdcm"} + two{"{0}pdcm"} + } + dot-per-inch{ + dnam{"pdm"} + few{"{0}pdm"} + many{"{0}pdm"} + one{"{0}pdm"} + other{"{0}pdm"} + two{"{0}pdm"} + } + em{ + few{"{0}em"} + many{"{0}em"} + one{"{0}em"} + other{"{0}em"} + two{"{0}em"} + } + megapixel{ + dnam{"Mpx"} + few{"{0}Mpx"} + many{"{0}Mpx"} + one{"{0}Mpx"} + other{"{0}Mpx"} + two{"{0}Mpx"} + } + pixel{ + few{"{0}px"} + many{"{0}px"} + one{"{0}px"} + other{"{0}px"} + two{"{0}px"} + } + pixel-per-centimeter{ + dnam{"px/cm"} + few{"{0}px/cm"} + many{"{0}px/cm"} + one{"{0}px/cm"} + other{"{0}px/cm"} + two{"{0}px/cm"} + } + pixel-per-inch{ + dnam{"px/in"} + few{"{0}px/in"} + many{"{0}px/in"} + one{"{0}px/in"} + other{"{0}px/in"} + two{"{0}px/in"} } } length{ astronomical-unit{ dnam{"au"} - few{"{0} au"} - many{"{0} au"} - one{"{0} au"} - other{"{0} au"} - two{"{0} au"} + few{"{0}au"} + many{"{0}au"} + one{"{0}au"} + other{"{0}au"} + two{"{0}au"} } centimeter{ dnam{"cm"} - few{"{0} cm"} - many{"{0} cm"} - one{"{0} cm"} - other{"{0} cm"} + few{"{0}cm"} + many{"{0}cm"} + one{"{0}cm"} + other{"{0}cm"} per{"{0}/cm"} - two{"{0} cm"} + two{"{0}cm"} } decimeter{ dnam{"dm"} - few{"{0} dm"} - many{"{0} dm"} - one{"{0} dm"} - other{"{0} dm"} - two{"{0} dm"} + few{"{0}dm"} + many{"{0}dm"} + one{"{0}dm"} + other{"{0}dm"} + two{"{0}dm"} } fathom{ - dnam{"fm"} - few{"{0} fth"} - many{"{0} fth"} - one{"{0} fth"} - other{"{0} fth"} - two{"{0} fth"} + dnam{"fth"} + few{"{0}fth"} + many{"{0}fth"} + one{"{0}fth"} + other{"{0}fth"} + two{"{0}fth"} } foot{ dnam{"′"} @@ -1297,6 +2017,13 @@ br{ per{"{0}/′"} two{"{0}′"} } + furlong{ + few{"{0}fur"} + many{"{0}fur"} + one{"{0}fur"} + other{"{0}fur"} + two{"{0}fur"} + } inch{ dnam{"″"} few{"{0}″"} @@ -1308,195 +2035,314 @@ br{ } kilometer{ dnam{"km"} - few{"{0} km"} - many{"{0} km"} - one{"{0} km"} - other{"{0} km"} + few{"{0}km"} + many{"{0}km"} + one{"{0}km"} + other{"{0}km"} per{"{0}/km"} - two{"{0} km"} + two{"{0}km"} + } + light-year{ + dnam{"b.g."} + few{"{0}b.g."} + many{"{0}b.g."} + one{"{0}b.g."} + other{"{0}b.g."} + two{"{0}b.g."} } meter{ dnam{"m"} - few{"{0} m"} - many{"{0} m"} - one{"{0} m"} - other{"{0} m"} + few{"{0}m"} + many{"{0}m"} + one{"{0}m"} + other{"{0}m"} per{"{0}/m"} - two{"{0} m"} + two{"{0}m"} } micrometer{ dnam{"µm"} - few{"{0} µm"} - many{"{0} µm"} - one{"{0} µm"} - other{"{0} µm"} - two{"{0} µm"} + few{"{0}µm"} + many{"{0}µm"} + one{"{0}µm"} + other{"{0}µm"} + two{"{0}µm"} } mile{ dnam{"mi"} - few{"{0} mi"} - many{"{0} mi"} - one{"{0} mi"} - other{"{0} mi"} - two{"{0} mi"} + few{"{0}mi"} + many{"{0}mi"} + one{"{0}mi"} + other{"{0}mi"} + two{"{0}mi"} } mile-scandinavian{ dnam{"smi"} - few{"{0} smi"} - many{"{0} smi"} - one{"{0} smi"} - other{"{0} smi"} - two{"{0} smi"} + few{"{0}smi"} + many{"{0}smi"} + one{"{0}smi"} + other{"{0}smi"} + two{"{0}smi"} } millimeter{ dnam{"mm"} - few{"{0} mm"} - many{"{0} mm"} - one{"{0} mm"} - other{"{0} mm"} - two{"{0} mm"} + few{"{0}mm"} + many{"{0}mm"} + one{"{0}mm"} + other{"{0}mm"} + two{"{0}mm"} } nanometer{ dnam{"nm"} - few{"{0} nm"} - many{"{0} nm"} - one{"{0} nm"} - other{"{0} nm"} - two{"{0} nm"} + few{"{0}nm"} + many{"{0}nm"} + one{"{0}nm"} + other{"{0}nm"} + two{"{0}nm"} } nautical-mile{ dnam{"nmi"} - few{"{0} nmi"} - many{"{0} nmi"} - one{"{0} nmi"} - other{"{0} nmi"} - two{"{0} nmi"} + few{"{0}nmi"} + many{"{0}nmi"} + one{"{0}nmi"} + other{"{0}nmi"} + two{"{0}nmi"} } parsec{ dnam{"pc"} - few{"{0} pc"} - many{"{0} pc"} - one{"{0} pc"} - other{"{0} pc"} - two{"{0} pc"} + few{"{0}pc"} + many{"{0}pc"} + one{"{0}pc"} + other{"{0}pc"} + two{"{0}pc"} } picometer{ dnam{"pm"} - few{"{0} pm"} - many{"{0} pm"} - one{"{0} pm"} - other{"{0} pm"} - two{"{0} pm"} + few{"{0}pm"} + many{"{0}pm"} + one{"{0}pm"} + other{"{0}pm"} + two{"{0}pm"} } point{ dnam{"pt"} - few{"{0} pt"} - many{"{0} pt"} - one{"{0} pt"} - other{"{0} pt"} - two{"{0} pt"} + few{"{0}pt"} + many{"{0}pt"} + one{"{0}pt"} + other{"{0}pt"} + two{"{0}pt"} + } + solar-radius{ + few{"{0}R☉"} + many{"{0}R☉"} + one{"{0}R☉"} + other{"{0}R☉"} + two{"{0}R☉"} + } + yard{ + few{"{0}yd"} + many{"{0}yd"} + one{"{0}yd"} + other{"{0}yd"} + two{"{0}yd"} } } light{ lux{ dnam{"lx"} - few{"{0} lx"} - many{"{0} lx"} - one{"{0} lx"} - other{"{0} lx"} - two{"{0} lx"} + few{"{0}lx"} + many{"{0}lx"} + one{"{0}lx"} + other{"{0}lx"} + two{"{0}lx"} + } + solar-luminosity{ + few{"{0}L☉"} + many{"{0}L☉"} + one{"{0}L☉"} + other{"{0}L☉"} + two{"{0}L☉"} } } mass{ carat{ dnam{"CD"} - few{"{0} CD"} - many{"{0} CD"} - one{"{0} CD"} - other{"{0} CD"} - two{"{0} CD"} + few{"{0}CD"} + many{"{0}CD"} + one{"{0}CD"} + other{"{0}CD"} + two{"{0}CD"} + } + dalton{ + few{"{0}Da"} + many{"{0} Da"} + one{"{0}Da"} + other{"{0}Da"} + two{"{0}Da"} + } + earth-mass{ + few{"{0}M⊕"} + many{"{0}M⊕"} + one{"{0}M⊕"} + other{"{0}M⊕"} + two{"{0}M⊕"} } gram{ dnam{"g"} - few{"{0} g"} - many{"{0} g"} - one{"{0} g"} - other{"{0} g"} + few{"{0}g"} + many{"{0}g"} + one{"{0}g"} + other{"{0}g"} per{"{0}/g"} - two{"{0} g"} + two{"{0}g"} } kilogram{ dnam{"kg"} - few{"{0} kg"} - many{"{0} kg"} - one{"{0} kg"} - other{"{0} kg"} + few{"{0}kg"} + many{"{0}kg"} + one{"{0}kg"} + other{"{0}kg"} per{"{0}/kg"} - two{"{0} kg"} + two{"{0}kg"} } metric-ton{ dnam{"t"} - few{"{0} t"} - many{"{0} t"} - one{"{0} t"} - other{"{0} t"} - two{"{0} t"} + few{"{0}t"} + many{"{0}t"} + one{"{0}t"} + other{"{0}t"} + two{"{0}t"} } microgram{ dnam{"µg"} - few{"{0} µg"} - many{"{0} µg"} - one{"{0} µg"} - other{"{0} µg"} - two{"{0} µg"} + few{"{0}µg"} + many{"{0}µg"} + one{"{0}µg"} + other{"{0}µg"} + two{"{0}µg"} } milligram{ dnam{"mg"} - few{"{0} mg"} - many{"{0} mg"} - one{"{0} mg"} - other{"{0} mg"} - two{"{0} mg"} + few{"{0}mg"} + many{"{0}mg"} + one{"{0}mg"} + other{"{0}mg"} + two{"{0}mg"} } ounce{ + few{"{0}oz"} + many{"{0}oz"} + one{"{0}oz"} + other{"{0}oz"} per{"{0}/oz"} + two{"{0}oz"} + } + ounce-troy{ + dnam{"ozt"} + few{"{0}ozt"} + many{"{0}ozt"} + one{"{0}ozt"} + other{"{0}ozt"} + two{"{0}ozt"} } pound{ dnam{"lb"} - few{"{0} lb"} - many{"{0} lb"} - one{"{0} lb"} - other{"{0} lb"} + few{"{0}lb"} + many{"{0}lb"} + one{"{0}lb"} + other{"{0}lb"} per{"{0}/lb"} - two{"{0} lb"} + two{"{0}lb"} + } + solar-mass{ + few{"{0}M☉"} + many{"{0}M☉"} + one{"{0}M☉"} + other{"{0}M☉"} + two{"{0}M☉"} + } + stone{ + few{"{0}st"} + many{"{0}st"} + one{"{0}st"} + other{"{0}st"} + two{"{0}st"} } ton{ dnam{"tn"} - few{"{0} tn"} - many{"{0} tn"} - one{"{0} tn"} - other{"{0} tn"} - two{"{0} tn"} + few{"{0}tn"} + many{"{0}tn"} + one{"{0}tn"} + other{"{0}tn"} + two{"{0}tn"} } } power{ + gigawatt{ + few{"{0}GW"} + many{"{0}GW"} + one{"{0}GW"} + other{"{0}GW"} + two{"{0}GW"} + } horsepower{ dnam{"hp"} - few{"{0} hp"} - many{"{0} hp"} - one{"{0} hp"} - other{"{0} hp"} - two{"{0} hp"} + few{"{0}hp"} + many{"{0}hp"} + one{"{0}hp"} + other{"{0}hp"} + two{"{0}hp"} + } + kilowatt{ + few{"{0}kW"} + many{"{0}kW"} + one{"{0}kW"} + other{"{0}kW"} + two{"{0}kW"} + } + megawatt{ + few{"{0}MW"} + many{"{0}MW"} + one{"{0}MW"} + other{"{0}MW"} + two{"{0}MW"} + } + milliwatt{ + few{"{0}mW"} + many{"{0}mW"} + one{"{0}mW"} + other{"{0}mW"} + two{"{0}mW"} + } + watt{ + few{"{0}W"} + many{"{0}W"} + one{"{0}W"} + other{"{0}W"} + two{"{0}W"} } } pressure{ + atmosphere{ + few{"{0}atm"} + many{"{0}atm"} + one{"{0}atm"} + other{"{0}atm"} + two{"{0}atm"} + } + bar{ + few{"{0}bar"} + many{"{0}bar"} + one{"{0}bar"} + other{"{0}bar"} + two{"{0}bar"} + } hectopascal{ dnam{"hPa"} - few{"{0} hPa"} - many{"{0} hPa"} - one{"{0} hPa"} - other{"{0} hPa"} - two{"{0} hPa"} + few{"{0}hPa"} + many{"{0}hPa"} + one{"{0}hPa"} + other{"{0}hPa"} + two{"{0}hPa"} } inch-hg{ dnam{"″Hg"} @@ -1506,63 +2352,84 @@ br{ other{"{0}″Hg"} two{"{0}″Hg"} } + kilopascal{ + few{"{0}kPa"} + many{"{0}kPa"} + one{"{0}kPa"} + other{"{0}kPa"} + two{"{0}kPa"} + } + megapascal{ + few{"{0}MPa"} + many{"{0}MPa"} + one{"{0}MPa"} + other{"{0}MPa"} + two{"{0}MPa"} + } millibar{ dnam{"mbar"} - few{"{0} mbar"} - many{"{0} mbar"} - one{"{0} mbar"} - other{"{0} mbar"} - two{"{0} mbar"} + few{"{0}mbar"} + many{"{0}mbar"} + one{"{0}mbar"} + other{"{0}mbar"} + two{"{0}mbar"} } millimeter-of-mercury{ dnam{"mmHg"} - few{"{0} mmHg"} - many{"{0} mmHg"} - one{"{0} mmHg"} - other{"{0} mmHg"} - two{"{0} mmHg"} + few{"{0}mmHg"} + many{"{0}mmHg"} + one{"{0}mmHg"} + other{"{0}mmHg"} + two{"{0}mmHg"} + } + pascal{ + few{"{0}Pa"} + many{"{0}Pa"} + one{"{0}Pa"} + other{"{0}Pa"} + two{"{0}Pa"} } pound-per-square-inch{ dnam{"lb/in²"} - few{"{0} lb/in²"} - many{"{0} lb/in²"} - one{"{0} lb/in²"} - other{"{0} lb/in²"} - two{"{0} lb/in²"} + few{"{0}lb/in²"} + many{"{0}lb/in²"} + one{"{0}lb/in²"} + other{"{0}lb/in²"} + two{"{0}lb/in²"} } } speed{ kilometer-per-hour{ dnam{"km/h"} - few{"{0} km/h"} - many{"{0} km/h"} - one{"{0} km/h"} - other{"{0} km/h"} - two{"{0} km/h"} + few{"{0}km/h"} + many{"{0}km/h"} + one{"{0}km/h"} + other{"{0}km/h"} + two{"{0}km/h"} } knot{ - dnam{"n"} - few{"{0} n"} - many{"{0} n"} - one{"{0} n"} - other{"{0} n"} - two{"{0} n"} + dnam{"nd"} + few{"{0}nd"} + many{"{0}nd"} + one{"{0}nd"} + other{"{0}nd"} + two{"{0}nd"} } meter-per-second{ dnam{"m/s"} - few{"{0} m/s"} - many{"{0} m/s"} - one{"{0} m/s"} - other{"{0} m/s"} - two{"{0} m/s"} + few{"{0}m/s"} + many{"{0}m/s"} + one{"{0}m/s"} + other{"{0}m/s"} + two{"{0}m/s"} } mile-per-hour{ dnam{"mi/h"} - few{"{0} mi/h"} - many{"{0} mi/h"} - one{"{0} mi/h"} - other{"{0} mi/h"} - two{"{0} mi/h"} + few{"{0}mi/h"} + many{"{0}mi/h"} + one{"{0}mi/h"} + other{"{0}mi/h"} + two{"{0}mi/h"} } } temperature{ @@ -1592,144 +2459,254 @@ br{ } kelvin{ dnam{"K"} - few{"{0} K"} - many{"{0} K"} - one{"{0} K"} - other{"{0} K"} - two{"{0} K"} + few{"{0}K"} + many{"{0}K"} + one{"{0}K"} + other{"{0}K"} + two{"{0}K"} + } + } + torque{ + newton-meter{ + few{"{0}N⋅m"} + many{"{0}N⋅m"} + one{"{0}N⋅m"} + other{"{0}N⋅m"} + two{"{0}N⋅m"} + } + pound-foot{ + few{"{0}lbf⋅ft"} + many{"{0}lbf⋅ft"} + one{"{0}lbf⋅ft"} + other{"{0}lbf⋅ft"} + two{"{0}lbf⋅ft"} } } volume{ + acre-foot{ + dnam{"acft"} + few{"{0}acft"} + many{"{0}acft"} + one{"{0}acft"} + other{"{0}acft"} + two{"{0}acft"} + } + barrel{ + few{"{0}bbl"} + many{"{0}bbl"} + one{"{0}bbl"} + other{"{0}bbl"} + two{"{0}bbl"} + } + bushel{ + few{"{0}bu"} + many{"{0}bu"} + one{"{0}bu"} + other{"{0}bu"} + two{"{0}bu"} + } centiliter{ dnam{"cl"} - few{"{0} cl"} - many{"{0} cl"} - one{"{0} cl"} - other{"{0} cl"} - two{"{0} cl"} + few{"{0}cl"} + many{"{0}cl"} + one{"{0}cl"} + other{"{0}cl"} + two{"{0}cl"} } cubic-centimeter{ dnam{"cm³"} - few{"{0} cm³"} - many{"{0} cm³"} - one{"{0} cm³"} - other{"{0} cm³"} + few{"{0}cm³"} + many{"{0}cm³"} + one{"{0}cm³"} + other{"{0}cm³"} per{"{0}/cm³"} - two{"{0} cm³"} + two{"{0}cm³"} } cubic-foot{ dnam{"ft³"} - few{"{0} ft³"} - many{"{0} ft³"} - one{"{0} ft³"} - other{"{0} ft³"} - two{"{0} ft³"} + few{"{0}ft³"} + many{"{0}ft³"} + one{"{0}ft³"} + other{"{0}ft³"} + two{"{0}ft³"} } cubic-inch{ dnam{"in³"} - few{"{0} in³"} - many{"{0} in³"} - one{"{0} in³"} - other{"{0} in³"} - two{"{0} in³"} + few{"{0}in³"} + many{"{0}in³"} + one{"{0}in³"} + other{"{0}in³"} + two{"{0}in³"} } cubic-kilometer{ dnam{"km³"} - few{"{0} km³"} - many{"{0} km³"} - one{"{0} km³"} - other{"{0} km³"} - two{"{0} km³"} + few{"{0}km³"} + many{"{0}km³"} + one{"{0}km³"} + other{"{0}km³"} + two{"{0}km³"} } cubic-meter{ dnam{"m³"} - few{"{0} m³"} - many{"{0} m³"} - one{"{0} m³"} - other{"{0} m³"} + few{"{0}m³"} + many{"{0}m³"} + one{"{0}m³"} + other{"{0}m³"} per{"{0}/m³"} - two{"{0} m³"} + two{"{0}m³"} } cubic-mile{ dnam{"mi³"} - few{"{0} mi³"} - many{"{0} mi³"} - one{"{0} mi³"} - other{"{0} mi³"} - two{"{0} mi³"} + few{"{0}mi³"} + many{"{0}mi³"} + one{"{0}mi³"} + other{"{0}mi³"} + two{"{0}mi³"} + } + cubic-yard{ + few{"{0}yd³"} + many{"{0}yd³"} + one{"{0}yd³"} + other{"{0}yd³"} + two{"{0}yd³"} + } + cup{ + dnam{"tas."} + few{"{0}tas."} + many{"{0}tas."} + one{"{0}tas."} + other{"{0}tas."} + two{"{0}tas."} + } + cup-metric{ + dnam{"tm"} + few{"{0}tm"} + many{"{0}tm"} + one{"{0}tm"} + other{"{0}tm"} + two{"{0}tm"} } deciliter{ dnam{"dl"} - few{"{0} dl"} - many{"{0} dl"} - one{"{0} dl"} - other{"{0} dl"} - two{"{0} dl"} + few{"{0}dl"} + many{"{0}dl"} + one{"{0}dl"} + other{"{0}dl"} + two{"{0}dl"} + } + fluid-ounce{ + dnam{"fl oz"} + few{"{0}fl oz"} + many{"{0}fl oz"} + one{"{0}fl oz"} + other{"{0}fl oz"} + two{"{0}fl oz"} + } + fluid-ounce-imperial{ + dnam{"fl oz Im"} + few{"{0}fl oz Im"} + many{"{0}fl oz Im"} + one{"{0}fl oz Im"} + other{"{0}fl oz Im"} + two{"{0}fl oz Im"} } gallon{ + few{"{0}gal"} + many{"{0}gal"} + one{"{0}gal"} + other{"{0}gal"} per{"{0}/gal"} + two{"{0}gal"} + } + gallon-imperial{ + dnam{"galIm"} + few{"{0}galIm"} + many{"{0}galIm"} + one{"{0}galIm"} + other{"{0}galIm"} + per{"{0}/galIm"} + two{"{0}galIm"} } hectoliter{ dnam{"hl"} - few{"{0} hl"} - many{"{0} hl"} - one{"{0} hl"} - other{"{0} hl"} - two{"{0} hl"} + few{"{0}hl"} + many{"{0}hl"} + one{"{0}hl"} + other{"{0}hl"} + two{"{0}hl"} } liter{ dnam{"l"} - few{"{0} l"} - many{"{0} l"} - one{"{0} l"} - other{"{0} l"} + few{"{0}l"} + many{"{0}l"} + one{"{0}l"} + other{"{0}l"} per{"{0}/l"} - two{"{0} l"} + two{"{0}l"} } megaliter{ dnam{"Ml"} - few{"{0} Ml"} - many{"{0} Ml"} - one{"{0} Ml"} - other{"{0} Ml"} - two{"{0} Ml"} + few{"{0}Ml"} + many{"{0}Ml"} + one{"{0}Ml"} + other{"{0}Ml"} + two{"{0}Ml"} } milliliter{ dnam{"ml"} - few{"{0} ml"} - many{"{0} ml"} - one{"{0} ml"} - other{"{0} ml"} - two{"{0} ml"} + few{"{0}ml"} + many{"{0}ml"} + one{"{0}ml"} + other{"{0}ml"} + two{"{0}ml"} } pint{ dnam{"pt"} - few{"{0} pt"} - many{"{0} pt"} - one{"{0} pt"} - other{"{0} pt"} - two{"{0} pt"} + few{"{0}pt"} + many{"{0}pt"} + one{"{0}pt"} + other{"{0}pt"} + two{"{0}pt"} } pint-metric{ dnam{"mpt"} - few{"{0} mpt"} - many{"{0} mpt"} - one{"{0} mpt"} - other{"{0} mpt"} - two{"{0} mpt"} + few{"{0}mpt"} + many{"{0}mpt"} + one{"{0}mpt"} + other{"{0}mpt"} + two{"{0}mpt"} } quart{ dnam{"qt"} - few{"{0} qt"} - many{"{0} qt"} - one{"{0} qt"} - other{"{0} qt"} - two{"{0} qt"} + few{"{0}qt"} + many{"{0}qt"} + one{"{0}qt"} + other{"{0}qt"} + two{"{0}qt"} + } + tablespoon{ + dnam{"l.-v."} + few{"{0}l.-v."} + many{"{0}l.-v."} + one{"{0}l.-v."} + other{"{0}l.-v."} + two{"{0}l.-v."} + } + teaspoon{ + dnam{"l.-g."} + few{"{0}l.-g."} + many{"{0}l.-g."} + one{"{0}l.-g."} + other{"{0}l.-g."} + two{"{0}l.-g."} } } } unitsShort{ acceleration{ + g-force{ + dnam{"G"} + } meter-per-second-squared{ dnam{"m/s²"} few{"{0} m/s²"} @@ -1741,6 +2718,7 @@ br{ } angle{ arc-minute{ + dnam{"′"} few{"{0}′"} many{"{0}′"} one{"{0}′"} @@ -1748,6 +2726,7 @@ br{ two{"{0}′"} } arc-second{ + dnam{"″"} few{"{0}″"} many{"{0}″"} one{"{0}″"} @@ -1770,6 +2749,14 @@ br{ other{"{0} rad"} two{"{0} rad"} } + revolution{ + dnam{"tr"} + few{"{0} tr"} + many{"{0} tr"} + one{"{0} tr"} + other{"{0} tr"} + two{"{0} tr"} + } } area{ acre{ @@ -1780,6 +2767,14 @@ br{ other{"{0} ac"} two{"{0} ac"} } + dunam{ + dnam{"dounam"} + few{"{0} dounam"} + many{"{0} dounam"} + one{"{0} dounam"} + other{"{0} dounam"} + two{"{0} dounam"} + } hectare{ dnam{"ha"} few{"{0} ha"} @@ -1870,6 +2865,27 @@ br{ other{"{0} mmol/l"} two{"{0} mmol/l"} } + percent{ + few{"{0} %"} + many{"{0} %"} + one{"{0} %"} + other{"{0} %"} + two{"{0} %"} + } + permille{ + few{"{0} ‰"} + many{"{0} ‰"} + one{"{0} ‰"} + other{"{0} ‰"} + two{"{0} ‰"} + } + permyriad{ + few{"{0} ‱"} + many{"{0} ‱"} + one{"{0} ‱"} + other{"{0} ‱"} + two{"{0} ‱"} + } } consumption{ liter-per-100kilometers{ @@ -1896,6 +2912,14 @@ br{ other{"{0} mi/gal"} two{"{0} mi/gal"} } + mile-per-gallon-imperial{ + dnam{"mi/gal imp."} + few{"{0} mi/gal imp."} + many{"{0} mi/gal imp."} + one{"{0} mi/gal imp."} + other{"{0} mi/gal imp."} + two{"{0} mi/gal imp."} + } } coordinate{ east{"{0} R"} @@ -1968,6 +2992,14 @@ br{ other{"{0} Mo"} two{"{0} Mo"} } + petabyte{ + dnam{"Po"} + few{"{0} Po"} + many{"{0} Po"} + one{"{0} Po"} + other{"{0} Po"} + two{"{0} Po"} + } terabit{ dnam{"Tbit"} few{"{0} Tbit"} @@ -2003,14 +3035,22 @@ br{ per{"{0}/d"} two{"{0} d"} } + decade{ + dnam{"dek"} + few{"{0} dek"} + many{"{0} dek"} + one{"{0} dek"} + other{"{0} dek"} + two{"{0} dek"} + } hour{ - dnam{"e"} - few{"{0} e"} - many{"{0} e"} - one{"{0} e"} - other{"{0} e"} - per{"{0}/e"} - two{"{0} e"} + dnam{"h"} + few{"{0} h"} + many{"{0} h"} + one{"{0} h"} + other{"{0} h"} + per{"{0}/h"} + two{"{0} h"} } microsecond{ dnam{"μs"} @@ -2038,13 +3078,13 @@ br{ two{"{0} min"} } month{ - dnam{"mizioù"} - few{"{0} miz"} - many{"{0} a vizioù"} - one{"{0} miz"} - other{"{0} miz"} - per{"{0}/miz"} - two{"{0} viz"} + dnam{"m."} + few{"{0} m."} + many{"{0} m."} + one{"{0} m."} + other{"{0} m."} + per{"{0}/m."} + two{"{0} m."} } nanosecond{ dnam{"ns"} @@ -2063,6 +3103,15 @@ br{ per{"{0}/s"} two{"{0} s"} } + week{ + dnam{"sizh."} + few{"{0} sizh."} + many{"{0} sizh."} + one{"{0} sizh."} + other{"{0} sizh."} + per{"{0}/sizh."} + two{"{0} sizh."} + } year{ dnam{"bl."} few{"{0} bl."} @@ -2156,6 +3205,14 @@ br{ other{"{0} kWh"} two{"{0} kWh"} } + therm-us{ + dnam{"thm SU"} + few{"{0} thm SU"} + many{"{0} thm SU"} + one{"{0} thm SU"} + other{"{0} thm SU"} + two{"{0} thm SU"} + } } frequency{ gigahertz{ @@ -2191,6 +3248,48 @@ br{ two{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"pdcm"} + few{"{0} pdcm"} + many{"{0} pdcm"} + one{"{0} pdcm"} + other{"{0} pdcm"} + two{"{0} pdcm"} + } + dot-per-inch{ + dnam{"pdm"} + few{"{0} pdm"} + many{"{0} pdm"} + one{"{0} pdm"} + other{"{0} pdm"} + two{"{0} pdm"} + } + megapixel{ + dnam{"Mpx"} + few{"{0} Mpx"} + many{"{0} Mpx"} + one{"{0} Mpx"} + other{"{0} Mpx"} + two{"{0} Mpx"} + } + pixel-per-centimeter{ + dnam{"px/cm"} + few{"{0} px/cm"} + many{"{0} px/cm"} + one{"{0} px/cm"} + other{"{0} px/cm"} + two{"{0} px/cm"} + } + pixel-per-inch{ + dnam{"px/in"} + few{"{0} px/in"} + many{"{0} px/in"} + one{"{0} px/in"} + other{"{0} px/in"} + two{"{0} px/in"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -2218,12 +3317,7 @@ br{ two{"{0} dm"} } fathom{ - dnam{"fm"} - few{"{0} fth"} - many{"{0} fth"} - one{"{0} fth"} - other{"{0} fth"} - two{"{0} fth"} + dnam{"fth"} } foot{ dnam{"ft"} @@ -2234,6 +3328,13 @@ br{ per{"{0}/ft"} two{"{0} ft"} } + furlong{ + few{"{0} fur"} + many{"{0} fur"} + one{"{0} fur"} + other{"{0} fur"} + two{"{0} fur"} + } inch{ dnam{"in"} few{"{0} in"} @@ -2253,7 +3354,12 @@ br{ two{"{0} km"} } light-year{ - dnam{"ly"} + dnam{"b.g."} + few{"{0} b.g."} + many{"{0} b.g."} + one{"{0} b.g."} + other{"{0} b.g."} + two{"{0} b.g."} } meter{ dnam{"m"} @@ -2652,6 +3758,22 @@ br{ other{"{0} mi³"} two{"{0} mi³"} } + cup{ + dnam{"tas."} + few{"{0} tas."} + many{"{0} tas."} + one{"{0} tas."} + other{"{0} tas."} + two{"{0} tas."} + } + cup-metric{ + dnam{"tm"} + few{"{0} tm"} + many{"{0} tm"} + one{"{0} tm"} + other{"{0} tm"} + two{"{0} tm"} + } deciliter{ dnam{"dl"} few{"{0} dl"} @@ -2660,6 +3782,22 @@ br{ other{"{0} dl"} two{"{0} dl"} } + fluid-ounce{ + dnam{"fl oz"} + few{"{0} fl oz"} + many{"{0} fl oz"} + one{"{0} fl oz"} + other{"{0} fl oz"} + two{"{0} fl oz"} + } + fluid-ounce-imperial{ + dnam{"fl oz imp."} + few{"{0} fl oz imp."} + many{"{0} fl oz imp."} + one{"{0} fl oz imp."} + other{"{0} fl oz imp."} + two{"{0} fl oz imp."} + } gallon{ dnam{"gal"} few{"{0} gal"} @@ -2669,6 +3807,15 @@ br{ per{"{0}/gal"} two{"{0} gal"} } + gallon-imperial{ + dnam{"gal imp."} + few{"{0} gal imp."} + many{"{0} gal imp."} + one{"{0} gal imp."} + other{"{0} gal imp."} + per{"{0}/gal imp."} + two{"{0} gal imp."} + } hectoliter{ dnam{"hl"} few{"{0} hl"} @@ -2726,6 +3873,22 @@ br{ other{"{0} qt"} two{"{0} qt"} } + tablespoon{ + dnam{"l.-v."} + few{"{0} l.-v."} + many{"{0} l.-v."} + one{"{0} l.-v."} + other{"{0} l.-v."} + two{"{0} l.-v."} + } + teaspoon{ + dnam{"l.-g."} + few{"{0} l.-g."} + many{"{0} l.-g."} + one{"{0} l.-g."} + other{"{0} l.-g."} + two{"{0} l.-g."} + } } } } diff --git a/source/data/unit/brx.txt b/source/data/unit/brx.txt index a59d36b..d484b2c 100644 --- a/source/data/unit/brx.txt +++ b/source/data/unit/brx.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License brx{ - Version{"2.1.47.82"} + Version{"36"} units{ duration{ day{ diff --git a/source/data/unit/bs.txt b/source/data/unit/bs.txt index cb00697..50df36a 100644 --- a/source/data/unit/bs.txt +++ b/source/data/unit/bs.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bs{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -69,7 +69,7 @@ bs{ } hectare{ dnam{"hektari"} - few{"{0} hektra"} + few{"{0} hektara"} one{"{0} hektar"} other{"{0} hektara"} } @@ -177,7 +177,7 @@ bs{ consumption{ liter-per-100kilometers{ dnam{"litri na 100 kilometara"} - few{"{0} litara na 100 kilometara"} + few{"{0} litra na 100 kilometara"} one{"{0} litar na 100 kilometara"} other{"{0} litara na 100 kilometara"} } @@ -289,6 +289,12 @@ bs{ other{"{0} dana"} per{"{0} dnevno"} } + decade{ + dnam{"decenije"} + few{"{0} decenije"} + one{"{0} decenija"} + other{"{0} decenija"} + } hour{ dnam{"sati"} few{"{0} sata"} @@ -373,7 +379,7 @@ bs{ dnam{"volti"} few{"{0} volta"} one{"{0} volt"} - other{"{0} volta"} + other{"{0} volti"} } } energy{ @@ -466,6 +472,14 @@ bs{ other{"{0} megaherca"} } } + graphics{ + megapixel{ + dnam{"megapikseli"} + } + pixel{ + dnam{"pikseli"} + } + } length{ astronomical-unit{ dnam{"astronomske jedinice"} @@ -720,7 +734,7 @@ bs{ dnam{"vati"} few{"{0} vata"} one{"{0} vat"} - other{"{0} vata"} + other{"{0} vati"} } } pressure{ @@ -730,6 +744,11 @@ bs{ one{"{0} atmosfera"} other{"{0} atmosfera"} } + bar{ + few{"{0} bara"} + one{"{0} bar"} + other{"{0} bara"} + } hectopascal{ dnam{"hektopaskali"} few{"{0} hektopaskala"} @@ -766,6 +785,12 @@ bs{ one{"{0} milimetar živinog stuba"} other{"{0} milimetara živinog stuba"} } + pascal{ + dnam{"paskali"} + few{"{0} paskala"} + one{"{0} paskal"} + other{"{0} paskala"} + } pound-per-square-inch{ dnam{"funte po kvadratnom inču"} few{"{0} funte po kvadratnom inču"} @@ -1261,6 +1286,7 @@ bs{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1427,6 +1453,12 @@ bs{ other{"{0} dana"} per{"{0}/d."} } + decade{ + dnam{"dec."} + few{"{0} dec."} + one{"{0} dec."} + other{"{0} dec."} + } hour{ dnam{"sati"} few{"{0} h"} @@ -1563,6 +1595,12 @@ bs{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"US therm"} + few{"{0} US therm"} + one{"{0} US therm"} + other{"{0} US therm"} + } } force{ newton{ @@ -1604,6 +1642,50 @@ bs{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + few{"{0} dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + few{"{0} dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + few{"{0} em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"MP"} + few{"{0} MP"} + one{"{0} MP"} + other{"{0} MP"} + } + pixel{ + dnam{"px"} + few{"{0} px"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + few{"{0} ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + few{"{0} ppi"} + one{"{0} ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"aj"} @@ -1868,6 +1950,12 @@ bs{ one{"{0} atm"} other{"{0} atm"} } + bar{ + dnam{"bar"} + few{"{0} bar"} + one{"{0} bar"} + other{"{0} bar"} + } hectopascal{ dnam{"hPa"} few{"{0} hPa"} @@ -1904,6 +1992,12 @@ bs{ one{"{0} mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"Pa"} + few{"{0} Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} few{"{0} psi"} diff --git a/source/data/unit/bs_Cyrl.txt b/source/data/unit/bs_Cyrl.txt index b18df72..8e4c7e6 100644 --- a/source/data/unit/bs_Cyrl.txt +++ b/source/data/unit/bs_Cyrl.txt @@ -2,82 +2,354 @@ // License & terms of use: http://www.unicode.org/copyright.html#License bs_Cyrl{ %%Parent{"root"} - Version{"2.1.49.82"} + Version{"36"} units{ + area{ + acre{ + dnam{"акре"} + few{"{0} акре"} + one{"{0} акра"} + other{"{0} акри"} + } + hectare{ + dnam{"хектари"} + few{"{0} хектара"} + one{"{0} хектар"} + other{"{0} хектара"} + } + square-centimeter{ + dnam{"квадратни центиметри"} + few{"{0} квадратна центиметра"} + one{"{0} квадратни центиметар"} + other{"{0} квадратних центиметара"} + per{"{0} по квадратном центиметру"} + } + square-foot{ + dnam{"квадратне стопе"} + } + square-inch{ + dnam{"квадратни инчи"} + } + square-kilometer{ + dnam{"квадратни километри"} + few{"{0} квадратна километра"} + one{"{0} квадратни километар"} + other{"{0} квадратних километара"} + per{"{0} по квадратном километру"} + } + square-meter{ + dnam{"квадратни метри"} + few{"{0} квадратна метра"} + one{"{0} квадратни метар"} + other{"{0} квадратних метара"} + per{"{0} по квадратном метру"} + } + square-mile{ + dnam{"квадратне миље"} + few{"{0} квадратне миље"} + one{"{0} квадратна миља"} + other{"{0} квадратних миља"} + per{"{0} по квадратној миљи"} + } + square-yard{ + dnam{"квадратни јарди"} + few{"{0} квадратна јарда"} + one{"{0} квадратни јард"} + other{"{0} квадратних јарди"} + } + } duration{ + century{ + dnam{"вијекови"} + few{"{0} вијека"} + one{"{0} вијек"} + other{"{0} вијекова"} + } day{ + dnam{"дани"} few{"{0} дана"} one{"{0} дан"} - other{"{0} дан"} + other{"{0} дана"} + per{"{0} дневно"} + } + decade{ + dnam{"деценије"} + few{"{0} деценије"} + one{"{0} деценија"} + other{"{0} деценија"} } hour{ + dnam{"сати"} few{"{0} сата"} one{"{0} сат"} - other{"{0} сат"} + other{"{0} сати"} + per{"{0} по сату"} + } + microsecond{ + dnam{"микросекунде"} + few{"{0} микросекунде"} + one{"{0} микросекунда"} + other{"{0} микросекунди"} + } + millisecond{ + dnam{"милисекунде"} + few{"{0} милисекунде"} + one{"{0} милисекунда"} + other{"{0} милисекунди"} } minute{ + dnam{"минути"} few{"{0} минута"} one{"{0} минут"} - other{"{0} минут"} + other{"{0} минута"} + per{"{0} у минуту"} } month{ - few{"{0} месеца"} - one{"{0} месец"} - other{"{0} месец"} + dnam{"мјесец"} + few{"{0} мјесеца"} + one{"{0} мјесец"} + other{"{0} мјесеци"} + per{"{0} мјесечно"} + } + nanosecond{ + dnam{"наносекунде"} + few{"{0} наносекунде"} + one{"{0} наносекунда"} + other{"{0} наносекунди"} } second{ + dnam{"секунде"} few{"{0} секунде"} one{"{0} секунда"} - other{"{0} секунда"} + other{"{0} секунди"} + per{"{0} у секунди"} } week{ - few{"{0} недеље"} - one{"{0} недеља"} - other{"{0} недеља"} + dnam{"седмице"} + few{"{0} седмице"} + one{"{0} седмица"} + other{"{0} седмица"} + per{"{0} седмично"} } year{ + dnam{"година"} few{"{0} године"} one{"{0} година"} other{"{0} година"} + per{"{0} годишње"} + } + } + graphics{ + dot-per-centimeter{ + dnam{"тачке по центиметру"} + } + dot-per-inch{ + dnam{"тачке по инчу"} + } + megapixel{ + dnam{"мегапиксели"} + } + pixel{ + dnam{"пиксели"} + } + } + length{ + astronomical-unit{ + dnam{"астрономске јединице"} + few{"{0} астрономске јединице"} + one{"{0} астрономска јединица"} + other{"{0} астрономских јединица"} + } + centimeter{ + dnam{"центриметри"} + few{"{0} центиметра"} + one{"{0} центиметар"} + other{"{0} центиметара"} + per{"{0} по центиметру"} + } + decimeter{ + dnam{"дециметри"} + few{"{0} дециметра"} + one{"{0} дециметар"} + other{"{0} дециметара"} + } + kilometer{ + dnam{"километри"} + few{"{0} километра"} + one{"{0} километар"} + other{"{0} километара"} + per{"{0} по километру"} + } + light-year{ + dnam{"свјетлосне године"} + few{"{0} свјетлосне године"} + one{"{0} свјетлосна година"} + other{"{0} свјетлосних година"} + } + meter{ + dnam{"метри"} + few{"{0} метра"} + one{"{0} метар"} + other{"{0} метара"} + per{"{0} по метру"} + } + micrometer{ + dnam{"микрометри"} + few{"{0} микрометра"} + one{"{0} микрометар"} + other{"{0} микрометара"} + } + mile{ + dnam{"миље"} + few{"{0} миље"} + one{"{0} миља"} + other{"{0} миља"} + } + millimeter{ + dnam{"милиметри"} + few{"{0} милиметра"} + one{"{0} милиметар"} + other{"{0} милиметара"} + } + nanometer{ + dnam{"нанометри"} + few{"{0} нанометра"} + one{"{0} нанометар"} + other{"{0} нанометара"} + } + nautical-mile{ + dnam{"наутичке миље"} + few{"{0} наутичке миље"} + one{"{0} наутичка миља"} + other{"{0} наутичких миља"} + } + point{ + dnam{"тачке"} + few{"{0} тачке"} + one{"{0} тачка"} + other{"{0} тачака"} + } + yard{ + dnam{"јарди"} + few{"{0} јарда"} + one{"{0} јард"} + other{"{0} јарди"} + } + } + volume{ + cubic-centimeter{ + dnam{"кубни центиметри"} + } + cubic-meter{ + dnam{"кубни метри"} + } + liter{ + dnam{"литри"} + } + } + } + unitsNarrow{ + duration{ + hour{ + few{"{0} сата"} + one{"{0} сат"} + other{"{0} сати"} + } + month{ + dnam{"мјесец"} + few{"{0} мјес."} + one{"{0} мјес."} + other{"{0} мјес."} + } + week{ + dnam{"седмица"} + few{"{0} сед."} + one{"{0} сед."} + other{"{0} сед."} } } } unitsShort{ + area{ + acre{ + dnam{"акре"} + } + hectare{ + dnam{"хектари"} + } + } duration{ + century{ + dnam{"в."} + few{"{0} в."} + one{"{0} в."} + other{"{0} в."} + } day{ + dnam{"дани"} few{"{0} дана"} one{"{0} дан"} other{"{0} дан"} + per{"{0} днев."} + } + decade{ + dnam{"дец"} + few{"{0} дец."} + one{"{0} дец."} + other{"{0} дец."} } hour{ + dnam{"сати"} few{"{0} сата"} one{"{0} сат"} - other{"{0} сат"} + other{"{0} сати"} + per{"{0} по сату"} + } + millisecond{ + dnam{"мс"} + few{"{0} мс"} + one{"{0} мс"} + other{"{0} мс"} } minute{ - few{"{0} мин"} - one{"{0} мин"} - other{"{0} мин"} + dnam{"минут"} + few{"{0} мин."} + one{"{0} мин."} + other{"{0} мин."} + per{"{0} у мин."} } month{ - few{"{0} мес"} - one{"{0} мес"} - other{"{0} мес"} + dnam{"мјесеци"} + few{"{0} мјес."} + one{"{0} мјес."} + other{"{0} мјес."} + per{"{0} мјесеч."} } second{ - few{"{0} сек"} - one{"{0} сек"} - other{"{0} сек"} + dnam{"секунде"} + few{"{0} сек."} + one{"{0} сек."} + other{"{0} сек."} + per{"{0} у сек."} } week{ - few{"{0} нед"} - one{"{0} нед"} - other{"{0} нед"} + dnam{"седмице"} + few{"{0} сед."} + one{"{0} сед."} + other{"{0} сед."} + per{"{0} седм."} } year{ + dnam{"година"} few{"{0} год"} one{"{0} год"} other{"{0} год"} + per{"{0} годиш."} + } + } + length{ + meter{ + dnam{"m"} } } } diff --git a/source/data/unit/bs_Latn.txt b/source/data/unit/bs_Latn.txt index a464369..40dd443 100644 --- a/source/data/unit/bs_Latn.txt +++ b/source/data/unit/bs_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bs_Latn{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/ca.txt b/source/data/unit/ca.txt index 5575a41..925f2b8 100644 --- a/source/data/unit/ca.txt +++ b/source/data/unit/ca.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ca{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -54,9 +54,9 @@ ca{ other{"{0} acres"} } dunam{ - dnam{"dúnams"} - one{"{0} dúnam"} - other{"{0} dúnams"} + dnam{"dunams"} + one{"{0} dunam"} + other{"{0} dunams"} } hectare{ dnam{"hectàrees"} @@ -247,6 +247,11 @@ ca{ other{"{0} dies"} per{"{0} per dia"} } + decade{ + dnam{"dècades"} + one{"{0} dècada"} + other{"{0} dècades"} + } hour{ dnam{"hores"} one{"{0} hora"} @@ -362,6 +367,11 @@ ca{ one{"{0} quilowatt hora"} other{"{0} quilowatts hora"} } + therm-us{ + dnam{"unitats tèrmiques americanes"} + one{"{0} unitat tèrmica americana"} + other{"{0} unitats tèrmiques americanes"} + } } force{ newton{ @@ -377,26 +387,61 @@ ca{ } frequency{ gigahertz{ - dnam{"gigahertz"} + dnam{"gigahertzs"} one{"{0} gigahertz"} other{"{0} gigahertzs"} } hertz{ - dnam{"hertz"} + dnam{"hertzs"} one{"{0} hertz"} other{"{0} hertzs"} } kilohertz{ - dnam{"quilohertz"} + dnam{"quilohertzs"} one{"{0} quilohertz"} other{"{0} quilohertzs"} } megahertz{ - dnam{"megahertz"} + dnam{"megahertzs"} one{"{0} megahertz"} other{"{0} megahertzs"} } } + graphics{ + dot-per-centimeter{ + dnam{"punts per centímetre"} + one{"{0} punt per centímetre"} + other{"{0} punts per centímetre"} + } + dot-per-inch{ + dnam{"punts per polzada"} + one{"{0} punt per polzada"} + other{"{0} punts per polzada"} + } + em{ + dnam{"em tipogràfica"} + } + megapixel{ + dnam{"megapíxels"} + one{"{0} megapíxel"} + other{"{0} megapíxels"} + } + pixel{ + dnam{"píxels"} + one{"{0} píxel"} + other{"{0} píxels"} + } + pixel-per-centimeter{ + dnam{"píxels per centímetre"} + one{"{0} píxel per centímetre"} + other{"{0} píxels per centímetre"} + } + pixel-per-inch{ + dnam{"píxels per polzada"} + one{"{0} píxel per polzada"} + other{"{0} píxels per polzada"} + } + } length{ astronomical-unit{ dnam{"unitats astronòmiques"} @@ -411,7 +456,7 @@ ca{ } decimeter{ dnam{"decímetres"} - one{"{0} decímetres"} + one{"{0} decímetre"} other{"{0} decímetres"} } foot{ @@ -454,7 +499,7 @@ ca{ other{"{0} milles"} } mile-scandinavian{ - dnam{"milla escandinava"} + dnam{"milles escandinaves"} one{"{0} milla escandinava"} other{"{0} milles escandinaves"} } @@ -469,7 +514,7 @@ ca{ other{"{0} nanòmetres"} } nautical-mile{ - dnam{"milla nàutica"} + dnam{"milles nàutiques"} one{"{0} milla nàutica"} other{"{0} milles nàutiques"} } @@ -620,6 +665,11 @@ ca{ one{"{0} atmosfera"} other{"{0} atmosferes"} } + bar{ + dnam{"bars"} + one{"{0} bar"} + other{"{0} bars"} + } hectopascal{ dnam{"hectopascals"} one{"{0} hectopascal"} @@ -650,6 +700,11 @@ ca{ one{"mil·límetre de mercuri"} other{"{0} mil·límetres de mercuri"} } + pascal{ + dnam{"pascals"} + one{"{0} pascal"} + other{"{0} pascals"} + } pound-per-square-inch{ dnam{"lliures per polzada quadrada"} one{"{0} lliura per polzada quadrada"} @@ -663,7 +718,7 @@ ca{ other{"{0} quilòmetres per hora"} } knot{ - dnam{"nus"} + dnam{"nusos"} one{"{0} nus"} other{"{0} nusos"} } @@ -1167,9 +1222,9 @@ ca{ other{"{0} ac"} } dunam{ - dnam{"dúnams"} - one{"{0} dúnam"} - other{"{0} dúnams"} + dnam{"dunams"} + one{"{0} dunam"} + other{"{0} dunams"} } hectare{ dnam{"hectàrees"} @@ -1219,6 +1274,7 @@ ca{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1236,11 +1292,6 @@ ca{ one{"{0} mM/l"} other{"{0} mM/l"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ppm"} one{"{0} ppm"} @@ -1258,8 +1309,6 @@ ca{ } permyriad{ dnam{"per deu mil"} - one{"{0}‱"} - other{"{0}‱"} } } consumption{ @@ -1360,6 +1409,11 @@ ca{ other{"{0} dies"} per{"{0}/d"} } + decade{ + dnam{"dèc."} + one{"{0} dèc."} + other{"{0} dèc."} + } hour{ dnam{"hores"} one{"{0} h"} @@ -1435,11 +1489,6 @@ ca{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"cal"} one{"{0} cal"} @@ -1475,13 +1524,13 @@ ca{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"unitat tèrmica americana"} + one{"{0} thm"} + other{"{0} thm"} + } } force{ - newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} - } pound-force{ dnam{"lbf"} one{"{0} lbf"} @@ -1510,6 +1559,43 @@ ca{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + dot-per-inch{ + dnam{"ppp"} + one{"{0} ppp"} + other{"{0} ppp"} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"megapíxels"} + one{"{0} Mpx"} + other{"{0} Mpx"} + } + pixel{ + dnam{"píxels"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"píxels per cm"} + one{"{0} píxels per cm"} + other{"{0} píxels per cm"} + } + pixel-per-inch{ + dnam{"PPI"} + one{"{0} PPI"} + other{"{0} PPI"} + } + } length{ astronomical-unit{ dnam{"ua"} @@ -1551,7 +1637,7 @@ ca{ other{"{0} anys ll."} } meter{ - dnam{"metres"} + dnam{"m"} one{"{0} m"} other{"{0} m"} per{"{0}/m"} @@ -1601,11 +1687,6 @@ ca{ one{"{0} pt"} other{"{0} pt"} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"iardes"} one{"{0} yd"} @@ -1618,11 +1699,6 @@ ca{ one{"{0} lx"} other{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -1631,7 +1707,6 @@ ca{ other{"{0} ct"} } dalton{ - dnam{"Da"} one{"{0} Da"} other{"{0} Da"} } @@ -1684,11 +1759,6 @@ ca{ other{"{0} lb"} per{"{0}/lb"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } ton{ dnam{"t"} one{"{0} t"} @@ -1733,6 +1803,10 @@ ca{ one{"{0} atm"} other{"{0} atm"} } + bar{ + one{"{0} bar"} + other{"{0} bars"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -1743,15 +1817,8 @@ ca{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } megapascal{ dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} } millibar{ dnam{"mbar"} @@ -1763,6 +1830,11 @@ ca{ one{"{0} mmHg"} other{"{0} mmHg"} } + pascal{ + dnam{"Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} diff --git a/source/data/unit/ccp.txt b/source/data/unit/ccp.txt index fe7c2e8..1d86915 100644 --- a/source/data/unit/ccp.txt +++ b/source/data/unit/ccp.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ccp{ - Version{"2.1.48.88"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/ce.txt b/source/data/unit/ce.txt index bb8cc56..713dac4 100644 --- a/source/data/unit/ce.txt +++ b/source/data/unit/ce.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ce{ - Version{"2.1.47.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/ceb.txt b/source/data/unit/ceb.txt index 255197c..3e07478 100644 --- a/source/data/unit/ceb.txt +++ b/source/data/unit/ceb.txt @@ -1,10 +1,1434 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ceb{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} ms{"m:ss"} } + units{ + acceleration{ + g-force{ + one{"{0} g-force"} + other{"{0} g-force"} + } + meter-per-second-squared{ + dnam{"mga metro kada second squared"} + one{"{0} ka metro kada second squared"} + other{"{0} ka mga metro kada second squared"} + } + } + angle{ + arc-minute{ + dnam{"mga arcminute"} + one{"{0} ka arcminute"} + other{"{0} ka mga arcminute"} + } + arc-second{ + dnam{"mga arcsecond"} + one{"{0} ka arcsecond"} + other{"{0} ka mga arcsecond"} + } + degree{ + dnam{"mga degree"} + one{"{0} ka degree"} + other{"{0} ka mga degree"} + } + radian{ + dnam{"mga radian"} + one{"{0} ka radian"} + other{"{0} ka mga radian"} + } + revolution{ + dnam{"rebolusyon"} + one{"{0} ka rebolusyon"} + other{"{0} ka mga rebolusyon"} + } + } + area{ + acre{ + dnam{"mga acre"} + one{"{0} ka acre"} + other{"{0} ka mga acre"} + } + dunam{ + dnam{"mga dunam"} + one{"{0} ka dunam"} + other{"{0} ka mga dunam"} + } + hectare{ + dnam{"mga ektarya"} + one{"{0} ka ektarya"} + other{"{0} ka mga ektarya"} + } + square-centimeter{ + dnam{"mga square centimeter"} + one{"{0} ka square centimeter"} + other{"{0} ka mga square centimeter"} + per{"{0} kada square centimeter"} + } + square-foot{ + dnam{"mga square foot"} + one{"{0} ka square foot"} + other{"{0} ka mga square foot"} + } + square-inch{ + dnam{"mga square inch"} + one{"{0} ka mga square inch"} + other{"{0} ka square inch"} + per{"{0} kada square inch"} + } + square-kilometer{ + dnam{"mga square kilometer"} + one{"{0} ka square kilometer"} + other{"{0} ka mga square kilometer"} + per{"{0} kada square kilometer"} + } + square-meter{ + dnam{"mga square meter"} + one{"{0} ka square meter"} + other{"{0} ka mga square meter"} + per{"{0} kada square meter"} + } + square-mile{ + dnam{"mga square mile"} + one{"{0} ka square mile"} + other{"{0} ka mga square mile"} + per{"{0} kada square mile"} + } + square-yard{ + dnam{"mga square yard"} + one{"{0} ka square yard"} + other{"{0} ka mga square yard"} + } + } + compound{ + per{"{0} kada {1}"} + } + concentr{ + karat{ + dnam{"mga karat"} + one{"{0} ka karat"} + other{"{0} ka mga karat"} + } + milligram-per-deciliter{ + dnam{"mga milligram kada deciliter"} + one{"{0} ka milligram kada deciliter"} + other{"{0} ka mga milligram kada deciliter"} + } + millimole-per-liter{ + dnam{"mga millimole kada litro"} + one{"{0} ka millimole kada litro"} + other{"{0} ka mga millimole kada litro"} + } + mole{ + dnam{"mga mole"} + one{"{0} ka mole"} + other{"{0} ka mga mole"} + } + part-per-million{ + dnam{"mga part per million"} + one{"{0} ka part per million"} + other{"{0} ka mga part per million"} + } + percent{ + dnam{"porsyento"} + one{"{0} ka porsyento"} + other{"{0} ka porsyento"} + } + permille{ + dnam{"permille"} + one{"{0} ka permille"} + other{"{0} ka permille"} + } + permyriad{ + dnam{"permyriad"} + one{"{0} ka permyriad"} + other{"{0} ka permyriad"} + } + } + consumption{ + liter-per-100kilometers{ + dnam{"mga litro kada 100 kilometro"} + one{"{0} ka litro kada 100 kilometro"} + other{"{0} ka litro kada 100 kilometro"} + } + liter-per-kilometer{ + dnam{"mga litro kada kilometro"} + one{"{0} litro kada kilometro"} + other{"{0} ka mga litro kada kilometro"} + } + mile-per-gallon{ + dnam{"mga milya kada gallon"} + one{"{0} ka milya kada gallon"} + other{"{0} ka mga milya kada gallon"} + } + mile-per-gallon-imperial{ + dnam{"mga milya kada Imp. gallon"} + one{"{0} ka milya kada Imp. gallon"} + other{"{0} ka mga milya kada Imp. gallon"} + } + } + coordinate{ + dnam{"cardinal nga direksyon"} + east{"{0} sidlakan"} + north{"{0} amihanan"} + south{"{0} habagatan"} + west{"{0} kasadpan"} + } + digital{ + bit{ + dnam{"mga bit"} + one{"{0} ka bit"} + other{"{0} ka mga bit"} + } + byte{ + dnam{"mga byte"} + one{"{0} ka byte"} + other{"{0} ka mga byte"} + } + gigabit{ + dnam{"mga gigabit"} + one{"{0} ka gigabit"} + other{"{0} ka mga gigabit"} + } + gigabyte{ + dnam{"mga gigabyte"} + one{"{0} ka gigabyte"} + other{"{0} ka mga gigabyte"} + } + kilobit{ + dnam{"mga kilobit"} + one{"{0} ka kilobit"} + other{"{0} ka mga kilobit"} + } + kilobyte{ + dnam{"mga kilobyte"} + one{"{0} ka kilobyte"} + other{"{0} ka mga kilobyte"} + } + megabit{ + dnam{"mga megabit"} + one{"{0} ka megabit"} + other{"{0} ka mga megabit"} + } + megabyte{ + dnam{"mga megabyte"} + one{"{0} ka megabyte"} + other{"{0} ka mga megabyte"} + } + petabyte{ + dnam{"mga petabyte"} + one{"{0} ka petabyte"} + other{"{0} ka mga petabyte"} + } + terabit{ + dnam{"mga terabit"} + one{"{0} ka terabit"} + other{"{0} ka mga terabit"} + } + terabyte{ + dnam{"mga terabyte"} + one{"{0} ka terabyte"} + other{"{0} ka mga terabyte"} + } + } + duration{ + century{ + dnam{"mga siglo"} + one{"{0} ka siglo"} + other{"{0} ka mga siglo"} + } + day{ + dnam{"mga adlaw"} + one{"{0} ka adlaw"} + other{"{0} ka mga adlaw"} + per{"{0} kada adlaw"} + } + decade{ + dnam{"mga dekada"} + one{"{0} ka dekada"} + other{"{0} ka mga dekada"} + } + hour{ + dnam{"mga oras"} + one{"{0} ka oras"} + other{"{0} ka mga oras"} + per{"{0} kada oras"} + } + microsecond{ + dnam{"mga microsecond"} + one{"{0} ka microsecond"} + other{"{0} ka mga microsecond"} + } + millisecond{ + dnam{"mga millisecond"} + one{"{0} ka millisecond"} + other{"{0} ka mga millisecond"} + } + minute{ + dnam{"mga minuto"} + one{"{0} ka minuto"} + other{"{0} ka mga minuto"} + per{"{0} kada minuto"} + } + month{ + dnam{"mga buwan"} + one{"{0} ka buwan"} + other{"{0} ka mga buwan"} + per{"{0} kada buwan"} + } + nanosecond{ + dnam{"mga nanosecond"} + one{"{0} ka nanosecond"} + other{"{0} ka mga nanosecond"} + } + second{ + dnam{"mga segundo"} + one{"{0} ka segundo"} + other{"{0} ka mga segundo"} + per{"{0} kada segundo"} + } + week{ + dnam{"mga semana"} + one{"{0} ka semana"} + other{"{0} ka mga semana"} + per{"{0} kada semana"} + } + year{ + dnam{"mga tuig"} + one{"{0} ka tuig"} + other{"{0} ka mga tuig"} + per{"{0} kada tuig"} + } + } + electric{ + ampere{ + dnam{"mga ampere"} + one{"{0} ka ampere"} + other{"{0} ka mga ampere"} + } + milliampere{ + dnam{"mga milliampere"} + one{"{0} milliampere"} + other{"{0} ka mga milliampere"} + } + ohm{ + dnam{"mga ohm"} + one{"{0} ka ohm"} + other{"{0} ka mga ohm"} + } + volt{ + dnam{"mga boltahe"} + one{"{0} ka boltahe"} + other{"{0} ka mga boltahe"} + } + } + energy{ + british-thermal-unit{ + dnam{"Mga British thermal unit"} + one{"{0} ka British thermal unit"} + other{"{0} ka mga British thermal unit"} + } + calorie{ + dnam{"mga calorie"} + one{"{0} ka calorie"} + other{"{0} ka mga calorie"} + } + electronvolt{ + dnam{"mga electronvolt"} + one{"{0} ka electronvolt"} + other{"{0} ka mga electronvolt"} + } + foodcalorie{ + dnam{"mga Calorie"} + one{"{0} ka Calorie"} + other{"{0} ka mga Calorie"} + } + joule{ + dnam{"mga joule"} + one{"{0} ka joule"} + other{"{0} ka mga joule"} + } + kilocalorie{ + dnam{"mga kilocalorie"} + one{"{0} ka kilocalorie"} + other{"{0} ka mga kilocalorie"} + } + kilojoule{ + dnam{"mga kilojoule"} + one{"{0} ka kilojoule"} + other{"{0} ka mga kilojoule"} + } + kilowatt-hour{ + dnam{"mga kilowatt-hour"} + one{"{0} ka kilowatt hour"} + other{"{0} ka mga kilowatt-hour"} + } + therm-us{ + dnam{"Mga US therm"} + one{"{0} ka US therm"} + other{"{0} ka mga US therm"} + } + } + force{ + newton{ + dnam{"mga newton"} + one{"{0} ka newton"} + other{"{0} ka mga newton"} + } + pound-force{ + dnam{"mga pound sa puwersa"} + one{"{0} ka pound sa puwersa"} + other{"{0} ka mga pound sa puwersa"} + } + } + frequency{ + gigahertz{ + dnam{"gigahertz"} + one{"{0} gigahertz"} + other{"{0} gigahertz"} + } + hertz{ + dnam{"hertz"} + one{"{0} hertz"} + other{"{0} hertz"} + } + kilohertz{ + dnam{"kilohertz"} + one{"{0} kilohertz"} + other{"{0} kilohertz"} + } + megahertz{ + dnam{"megahertz"} + one{"{0} megahertz"} + other{"{0} megahertz"} + } + } + graphics{ + dot-per-centimeter{ + dnam{"mga dot kada sentimetro"} + one{"{0} ka dot kada sentimetro"} + other{"{0} ka mga dot kada sentimetro"} + } + dot-per-inch{ + dnam{"mga dot kada pulgada"} + one{"{0} ka dot kada pulgada"} + other{"{0} ka mga dot kada pulgada"} + } + em{ + dnam{"typographic em"} + one{"{0} ka em"} + other{"{0} ka mga em"} + } + megapixel{ + dnam{"mga megapixel"} + one{"{0} ka megapixel"} + other{"{0} ka mga megapixel"} + } + pixel{ + dnam{"mga pixel"} + one{"{0} ka pixel"} + other{"{0} ka mga pixel"} + } + pixel-per-centimeter{ + dnam{"mga pixel kada sentimetro"} + one{"{0} ka pixel kada sentimetro"} + other{"{0} ka mga pixel kada sentimetro"} + } + pixel-per-inch{ + dnam{"mga pixel kada pulgada"} + one{"{0} ka pixel kada pulgada"} + other{"{0} ka mga pixel kada pulgada"} + } + } + length{ + astronomical-unit{ + dnam{"mga astronomical unit"} + one{"{0} ka astronomical unit"} + other{"{0} ka mga astronomical unit"} + } + centimeter{ + dnam{"mga sentimetro"} + one{"{0} ka sentimetro"} + other{"{0} ka mga sentimetro"} + per{"{0} kada sentimetro"} + } + decimeter{ + dnam{"mga decimeter"} + one{"{0} ka decimeter"} + other{"{0} ka mga decimeter"} + } + foot{ + dnam{"mga piye"} + one{"{0} ka piye"} + other{"{0} ka mga piye"} + per{"{0} kada piye"} + } + inch{ + dnam{"mga pulgada"} + one{"{0} ka pulgada"} + other{"{0} ka pulgada"} + per{"{0} kada pulgada"} + } + kilometer{ + dnam{"mga kilometro"} + one{"{0} ka kilometro"} + other{"{0} ka mga kilometro"} + per{"{0} kada kilometro"} + } + light-year{ + dnam{"mga light year"} + one{"{0} ka light year"} + other{"{0} ka mga light year"} + } + meter{ + dnam{"mga metro"} + one{"{0} ka metro"} + other{"{0} ka mga metro"} + per{"{0} kada metro"} + } + micrometer{ + dnam{"mga micrometer"} + one{"{0} ka micrometer"} + other{"{0} ka mga micrometer"} + } + mile{ + dnam{"mga milya"} + one{"{0} ka milya"} + other{"{0} ka mga milya"} + } + mile-scandinavian{ + dnam{"mile-scandinavian"} + one{"{0} ka mile-scandinavian"} + other{"{0} ka mile-scandinavian"} + } + millimeter{ + dnam{"mga millimetro"} + one{"{0} ka millimetro"} + other{"{0} ka millimetro"} + } + nanometer{ + dnam{"mga nanometer"} + one{"{0} ka nanometer"} + other{"{0} ka mga nanometer"} + } + nautical-mile{ + dnam{"mga nautical mile"} + one{"{0} ka nautical mile"} + other{"{0} ka mga nautical mile"} + } + parsec{ + dnam{"mga parsec"} + one{"{0} ka parsec"} + other{"{0} ka mga parsec"} + } + picometer{ + dnam{"mga picometer"} + one{"{0} ka picometer"} + other{"{0} ka mga picometer"} + } + point{ + dnam{"mga point"} + one{"{0} ka point"} + other{"{0} ka mga point"} + } + solar-radius{ + dnam{"mga solar radius"} + one{"{0} ka solar radius"} + other{"{0} ka mga solar radius"} + } + yard{ + dnam{"mga yarda"} + one{"{0} ka yarda"} + other{"{0} ka mga yarda"} + } + } + light{ + lux{ + dnam{"lux"} + one{"{0} lux"} + other{"{0} lux"} + } + solar-luminosity{ + dnam{"mga solar luminosity"} + one{"{0} ka solar luminosity"} + other{"{0}ka mga solar luminosity"} + } + } + mass{ + carat{ + dnam{"mga carat"} + one{"{0} ka carat"} + other{"{0} ka mga carat"} + } + dalton{ + dnam{"mga dalton"} + one{"{0} ka dalton"} + other{"{0} ka mga dalton"} + } + earth-mass{ + dnam{"mga mass sa Earth"} + one{"{0} ka mass sa Earth"} + other{"{0} ka mga mass sa Earth"} + } + gram{ + dnam{"mga gramo"} + one{"{0} ka gramo"} + other{"{0} ka mga gramo"} + per{"{0} kada gramo"} + } + kilogram{ + dnam{"mga kilogramo"} + one{"{0} ka kilogramo"} + other{"{0} ka mga kilogramo"} + per{"{0} kada kilogramo"} + } + metric-ton{ + dnam{"mga metrikong tonelada"} + one{"{0} ka metrikong tonelada"} + other{"{0} ka mga metrikong tonelada"} + } + microgram{ + dnam{"mga microgram"} + one{"{0} ka microgram"} + other{"{0} ka mga microgram"} + } + milligram{ + dnam{"mga milligram"} + one{"{0} ka milligram"} + other{"{0} ka mga milligram"} + } + ounce{ + dnam{"mga ounce"} + one{"{0} ka ounce"} + other{"{0} ka mga ounce"} + per{"{0} kada ounce"} + } + ounce-troy{ + dnam{"mga troy ounce"} + one{"{0} ka troy ounce"} + other{"{0} ka mga troy ounce"} + } + pound{ + dnam{"mga pound"} + one{"{0} ka pound"} + other{"{0} ka mga pound"} + per{"{0} kada pound"} + } + solar-mass{ + dnam{"mga solar mass"} + one{"{0} ka solar mass"} + other{"{0} ka mga solar mass"} + } + ton{ + dnam{"mga tonelada"} + one{"{0} ka tonelada"} + other{"{0} ka mga tonelada"} + } + } + power{ + gigawatt{ + dnam{"mga gigawatt"} + one{"{0} ka gigawatt"} + other{"{0} ka mga gigawatt"} + } + horsepower{ + dnam{"horsepower"} + one{"{0} ka horsepower"} + other{"{0} ka horsepower"} + } + kilowatt{ + dnam{"mga kilowatt"} + one{"{0} ka kilowatt"} + other{"{0} ka mga kilowatt"} + } + megawatt{ + dnam{"mga megawatt"} + one{"{0} ka megawatt"} + other{"{0} ka mga megawatt"} + } + milliwatt{ + dnam{"mga milliwatt"} + one{"{0} ka milliwatt"} + other{"{0} ka mga milliwatt"} + } + watt{ + dnam{"mga watt"} + one{"{0} ka watt"} + other{"{0} ka mga watt"} + } + } + pressure{ + atmosphere{ + dnam{"mga atmosphere"} + one{"{0} ka atmosphere"} + other{"{0} ka mga atmosphere"} + } + bar{ + dnam{"mga bar"} + one{"{0} ka bar"} + other{"{0} ka mga bar"} + } + hectopascal{ + dnam{"mga hectopascal"} + one{"{0} ka hectopascal"} + other{"{0} ka mga hectopascal"} + } + inch-hg{ + dnam{"mga pulgada sa mercury"} + one{"{0} ka pulgada sa mercury"} + other{"{0} ka mga pulgada sa mercury"} + } + kilopascal{ + dnam{"mga kilopascal"} + one{"{0} ka kilopascal"} + other{"{0} ka mga kilopascal"} + } + megapascal{ + dnam{"mga megapascal"} + one{"{0} ka megapascal"} + other{"{0} ka mga megapascal"} + } + millibar{ + dnam{"mga millibar"} + one{"{0} ka millibar"} + other{"{0} ka mga millibar"} + } + millimeter-of-mercury{ + dnam{"mga millimetro sa mercury"} + one{"{0} ka millimetro sa mercury"} + other{"{0} ka mga millimetro sa mercury"} + } + pascal{ + dnam{"mga pascal"} + one{"{0} ka pascal"} + other{"{0} ka mga pascal"} + } + pound-per-square-inch{ + dnam{"mga pound kada kuwadradong pulgada"} + one{"{0} ka pound kada kuwadradong pulgada"} + other{"{0} ka mga pound kada kuwadradong pulgada"} + } + } + speed{ + kilometer-per-hour{ + dnam{"mga kilometro kada oras"} + one{"{0} ka kilometro kada oras"} + other{"{0} ka mga kilometro kada oras"} + } + knot{ + dnam{"mga knot"} + one{"{0} ka knot"} + other{"{0} ka mga knot"} + } + meter-per-second{ + dnam{"mga metro kada segundo"} + one{"{0} ka metro kada segundo"} + other{"{0} ka mga metro kada segundo"} + } + mile-per-hour{ + dnam{"mga milya kada oras"} + one{"{0} ka milya kada oras"} + other{"{0} ka mga milya kada oras"} + } + } + temperature{ + celsius{ + dnam{"mga degree Celsius"} + one{"{0} ka degree Celsius"} + other{"{0} degree Celsius"} + } + fahrenheit{ + dnam{"mga degree Fahrenheit"} + one{"{0} degree Fahrenheit"} + other{"{0} degree Fahrenheit"} + } + kelvin{ + dnam{"mga kelvin"} + one{"{0} ka kelvin"} + other{"{0} ka mga kelvin"} + } + } + torque{ + newton-meter{ + dnam{"mga newton-meter"} + one{"{0} ka newton-meter"} + other{"{0} ka mga newton-meter"} + } + pound-foot{ + dnam{"mga pound-foot"} + one{"{0} ka pound-foot"} + other{"{0} ka mga pound-foot"} + } + } + volume{ + acre-foot{ + dnam{"mga acre-foot"} + one{"{0} ka acre-foot"} + other{"{0} ka mga acre-foot"} + } + barrel{ + dnam{"mga barrel"} + one{"{0} ka barrel"} + other{"{0} ka mga barrel"} + } + centiliter{ + dnam{"mga centiliter"} + one{"{0} ka centiliter"} + other{"{0} ka mga centiliter"} + } + cubic-centimeter{ + dnam{"mga cubic centimeter"} + one{"{0} ka cubic centimeter"} + other{"{0} ka mga cubic centimeter"} + per{"{0} kada cubic centimeter"} + } + cubic-foot{ + dnam{"mga cubic foot"} + one{"{0} ka cubic foot"} + other{"{0} ka mga cubic foot"} + } + cubic-inch{ + dnam{"mga cubic inch"} + one{"{0} ka cubic inch"} + other{"{0} ka mga cubic inch"} + } + cubic-kilometer{ + dnam{"mga cubic kilometer"} + one{"{0} ka cubic kilometer"} + other{"{0} ka mga cubic kilometer"} + } + cubic-meter{ + dnam{"mga cubic meter"} + one{"{0} ka cubic meter"} + other{"{0} ka mga cubic meter"} + per{"{0} kada cubic meter"} + } + cubic-mile{ + dnam{"mga cubic mile"} + one{"{0} ka cubic mile"} + other{"{0} ka mga cubic mile"} + } + cubic-yard{ + dnam{"mga cubic yard"} + one{"{0} ka cubic yard"} + other{"{0} ka mga cubic yard"} + } + cup{ + dnam{"mga tasa"} + one{"{0} ka tasa"} + other{"{0} ka mga tasa"} + } + cup-metric{ + dnam{"mga metric cup"} + one{"{0} ka metric cup"} + other{"{0} ka metric cup"} + } + deciliter{ + dnam{"mga deciliter"} + one{"{0} ka deciliter"} + other{"{0} ka mga deciliter"} + } + fluid-ounce{ + dnam{"mga fluid ounce"} + one{"{0} ka fluid ounce"} + other{"{0} ka mga fluid ounce"} + } + fluid-ounce-imperial{ + dnam{"mga Imp. fluid ounce"} + one{"{0} ka Imp. fluid ounce"} + other{"{0} ka mga Imp. fluid ounce"} + } + gallon{ + dnam{"mga gallon"} + one{"{0} ka gallon"} + other{"{0} ka mga gallon"} + per{"{0} kada gallon"} + } + gallon-imperial{ + dnam{"mga Imp. gallon"} + one{"{0} ka Imp. gallon"} + other{"{0} ka mga Imp. gallon"} + per{"{0} kada Imp. gallon"} + } + hectoliter{ + dnam{"mga hectoliter"} + one{"{0} ka hectoliter"} + other{"{0} ka mga hectoliter"} + } + liter{ + dnam{"mga litro"} + one{"{0} ka litro"} + other{"{0} ka mga litro"} + per{"{0} kada litro"} + } + megaliter{ + dnam{"mga megaliter"} + one{"{0} ka megaliter"} + other{"{0} ka mga megaliter"} + } + milliliter{ + dnam{"mga milliliter"} + one{"{0} ka milliliter"} + other{"{0} ka mga milliliter"} + } + pint{ + dnam{"mga pint"} + one{"{0} ka pint"} + other{"{0} ka mga pint"} + } + pint-metric{ + dnam{"mga metric pint"} + one{"{0} ka metric pint"} + other{"{0} ka mga metric pint"} + } + quart{ + dnam{"mga quart"} + one{"{0} ka quart"} + other{"{0} ka mga quart"} + } + tablespoon{ + dnam{"mga kutsara"} + one{"{0} ka kutsara"} + other{"{0} ka kutsara"} + } + teaspoon{ + dnam{"mga kutsarita"} + one{"{0} ka kutsarita"} + other{"{0} ka mga kutsarita"} + } + } + } + unitsNarrow{ + consumption{ + liter-per-100kilometers{ + dnam{"L/100km"} + one{"{0}L/100km"} + other{"{0}L/100km"} + } + } + coordinate{ + dnam{"direksyon"} + } + duration{ + day{ + dnam{"adlaw"} + one{"{0} adlaw"} + other{"{0} adlaw"} + } + hour{ + dnam{"oras"} + one{"{0} ka oras"} + other{"{0} ka oras"} + } + millisecond{ + dnam{"msec"} + one{"{0}ms"} + other{"{0}ms"} + } + minute{ + dnam{"minuto"} + one{"{0} minuto"} + other{"{0}minuto"} + } + month{ + dnam{"buwan"} + one{"{0} buwan"} + other{"{0} buwan"} + } + second{ + dnam{"segundo"} + one{"{0}segundo"} + other{"{0}segundo"} + } + week{ + dnam{"semana"} + one{"{0} semana"} + other{"{0}w"} + } + year{ + dnam{"tuig"} + one{"{0} ka tuig"} + other{"{0} ka tuig"} + } + } + length{ + centimeter{ + one{"{0}cm"} + other{"{0}cm"} + } + kilometer{ + one{"{0}km"} + other{"{0}km"} + } + meter{ + dnam{"m"} + one{"{0}m"} + other{"{0}m"} + } + millimeter{ + one{"{0}mm"} + other{"{0}mm"} + } + } + mass{ + gram{ + dnam{"gramo"} + } + kilogram{ + one{"{0}kg"} + other{"{0}kg"} + } + } + speed{ + kilometer-per-hour{ + dnam{"km/hr"} + one{"{0}km/h"} + other{"{0}km/h"} + } + } + temperature{ + celsius{ + dnam{"°C"} + } + } + volume{ + liter{ + dnam{"litro"} + one{"{0}L"} + other{"{0}L"} + } + } + } + unitsShort{ + acceleration{ + meter-per-second-squared{ + dnam{"mga metro/sec²"} + } + } + angle{ + arc-minute{ + dnam{"mga arcmin"} + one{"{0} ka arcmin"} + other{"{0} ka mga arcmin"} + } + arc-second{ + dnam{"mga arcsec"} + one{"{0} ka arcsec"} + other{"{0} ka mga arcsec"} + } + degree{ + dnam{"mga degree"} + one{"{0} deg"} + other{"{0} deg"} + } + radian{ + dnam{"mga radian"} + } + } + area{ + acre{ + dnam{"mga acre"} + } + dunam{ + dnam{"mga dunam"} + one{"{0} ka dunam"} + other{"{0} ka dunam"} + } + hectare{ + dnam{"mga ektarya"} + } + square-foot{ + dnam{"mga sq foot"} + one{"{0} sq ft"} + other{"{0} sq ft"} + } + square-inch{ + dnam{"mga inch²"} + } + square-meter{ + dnam{"mga meter²"} + } + square-mile{ + dnam{"mga sq mile"} + one{"{0} sq mi"} + other{"{0} sq mi"} + } + square-yard{ + dnam{"mga yard²"} + } + } + concentr{ + karat{ + dnam{"mga karat"} + } + milligram-per-deciliter{ + one{"{0} mg/dL"} + other{"{0} mg/dL"} + } + millimole-per-liter{ + dnam{"millimol/litro"} + } + mole{ + dnam{"mole"} + one{"{0} mol"} + other{"{0} mol"} + } + part-per-million{ + dnam{"mga part/million"} + } + percent{ + dnam{"porsyento"} + } + permille{ + dnam{"permille"} + } + permyriad{ + dnam{"permyriad"} + } + } + consumption{ + liter-per-100kilometers{ + dnam{"L/100 km"} + one{"{0} L/100 km"} + other{"{0} L/100 km"} + } + liter-per-kilometer{ + dnam{"mga litro/km"} + } + mile-per-gallon{ + dnam{"mga milya/gal"} + one{"{0} mpg"} + other{"{0} mpg"} + } + mile-per-gallon-imperial{ + dnam{"mga milya/gal Imp."} + one{"{0} mpg Imp."} + other{"{0} mpg Imp."} + } + } + coordinate{ + dnam{"direksyon"} + east{"{0} E"} + north{"{0} N"} + south{"{0} S"} + west{"{0} W"} + } + digital{ + bit{ + one{"{0} ka bit"} + other{"{0} ka bit"} + } + byte{ + one{"{0} ka byte"} + other{"{0} ka byte"} + } + gigabit{ + dnam{"Gbit"} + } + gigabyte{ + dnam{"GByte"} + } + kilobit{ + dnam{"kbit"} + } + kilobyte{ + dnam{"kByte"} + } + megabit{ + dnam{"Mbit"} + } + megabyte{ + dnam{"MByte"} + } + petabyte{ + dnam{"PByte"} + } + terabit{ + dnam{"Tbit"} + } + terabyte{ + dnam{"TByte"} + } + } + duration{ + day{ + dnam{"mga adlaw"} + one{"{0} ka adlaw"} + other{"{0} ka adlaw"} + per{"{0}/adlaw"} + } + hour{ + dnam{"mga oras"} + one{"{0} ka oras"} + other{"{0} ka oras"} + per{"{0}/oras"} + } + microsecond{ + dnam{"μsecs"} + } + millisecond{ + dnam{"mga millisec"} + } + minute{ + dnam{"mga minuto"} + one{"{0} ka minuto"} + other{"{0} ka minuto"} + per{"{0}/minuto"} + } + month{ + dnam{"mga buwan"} + one{"{0} ka buwan"} + other{"{0} ka buwan"} + per{"{0}/buwan"} + } + nanosecond{ + dnam{"mga nanosec"} + } + second{ + dnam{"mga segundo"} + one{"{0} ka segundo"} + other{"{0} ka segundo"} + per{"{0}/segundo"} + } + week{ + dnam{"mga semana"} + one{"{0} ka semana"} + other{"{0} ka semana"} + per{"{0}/semana"} + } + year{ + dnam{"mga tuig"} + one{"{0} ka tuig"} + other{"{0} ka tuig"} + per{"{0}/tuig"} + } + } + electric{ + ampere{ + dnam{"mga amp"} + } + milliampere{ + dnam{"mga milliamp"} + one{"{0} mA"} + other{"{0} mA"} + } + ohm{ + dnam{"mga ohm"} + one{"{0} Ω"} + other{"{0} Ω"} + } + volt{ + dnam{"mga boltahe"} + } + } + energy{ + british-thermal-unit{ + dnam{"BTU"} + } + electronvolt{ + dnam{"electronvolt"} + } + joule{ + dnam{"mga joule"} + } + kilojoule{ + dnam{"kilojoule"} + } + kilowatt-hour{ + dnam{"kW-hour"} + } + therm-us{ + one{"{0} ka US therm"} + other{"{0} ka mga US therm"} + } + } + force{ + newton{ + dnam{"newton"} + } + pound-force{ + dnam{"pound-force"} + } + } + frequency{ + megahertz{ + dnam{"MHz"} + } + } + graphics{ + em{ + one{"{0} ka em"} + other{"{0} ka em"} + } + megapixel{ + dnam{"mga megapixel"} + } + pixel{ + dnam{"mga pixel"} + } + } + length{ + foot{ + dnam{"mga piye"} + } + inch{ + dnam{"mga pulgada"} + } + light-year{ + dnam{"mga light yr"} + } + meter{ + dnam{"m"} + } + micrometer{ + dnam{"mga µmeter"} + } + mile{ + dnam{"mga milya"} + } + parsec{ + dnam{"mga parsec"} + } + point{ + dnam{"mga point"} + } + solar-radius{ + dnam{"mga solar radius"} + } + yard{ + dnam{"mga yarda"} + } + } + light{ + lux{ + dnam{"lux"} + } + solar-luminosity{ + dnam{"mga solar luminosity"} + } + } + mass{ + carat{ + dnam{"mga carat"} + } + dalton{ + dnam{"mga dalton"} + } + earth-mass{ + dnam{"mga mass sa Earth"} + } + gram{ + dnam{"mga gramo"} + } + ounce-troy{ + dnam{"oz troy"} + } + pound{ + dnam{"mga pound"} + } + solar-mass{ + dnam{"mga solar mass"} + } + ton{ + dnam{"mga tonelada"} + } + } + power{ + watt{ + dnam{"mga watt"} + } + } + pressure{ + bar{ + one{"{0} ka bar"} + other{"{0} ka bar"} + } + millibar{ + one{"{0} ka mbar"} + other{"{0} ka mbar"} + } + millimeter-of-mercury{ + dnam{"mmHg"} + one{"{0} mmHg"} + other{"{0} mmHg"} + } + } + speed{ + kilometer-per-hour{ + dnam{"km/oras"} + } + meter-per-second{ + dnam{"mga metro/seg"} + } + mile-per-hour{ + dnam{"mga milya/oras"} + one{"{0} mph"} + other{"{0} mph"} + } + } + temperature{ + celsius{ + dnam{"deg. C"} + } + fahrenheit{ + dnam{"deg. F"} + } + } + volume{ + acre-foot{ + dnam{"acre ft"} + } + barrel{ + dnam{"barrel"} + } + cubic-foot{ + dnam{"mga foot³"} + } + cubic-inch{ + dnam{"mga inch³"} + } + cubic-yard{ + dnam{"mga yard³"} + } + cup{ + dnam{"mga tasa"} + } + fluid-ounce{ + dnam{"fl oz"} + one{"{0} fl oz"} + other{"{0} fl oz"} + } + fluid-ounce-imperial{ + dnam{"Imp. fl oz"} + one{"{0} fl oz Imp."} + other{"{0} fl oz Imp."} + } + gallon{ + dnam{"gal"} + one{"{0} gal"} + other{"{0} gal"} + per{"{0}/gal US"} + } + liter{ + dnam{"mga litro"} + one{"{0} L"} + other{"{0} L"} + per{"{0}/L"} + } + pint{ + dnam{"mga pint"} + } + quart{ + dnam{"qts"} + } + teaspoon{ + dnam{"kutsarita"} + one{"{0} ka kutsarita"} + other{"{0} ka kutsarita"} + } + } + } } diff --git a/source/data/unit/cgg.txt b/source/data/unit/cgg.txt index 85b9558..03ddf10 100644 --- a/source/data/unit/cgg.txt +++ b/source/data/unit/cgg.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License cgg{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/chr.txt b/source/data/unit/chr.txt index 1d97171..d0e6cad 100644 --- a/source/data/unit/chr.txt +++ b/source/data/unit/chr.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License chr{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -247,6 +247,11 @@ chr{ other{"{0} ᎯᎸᏍᎩ ᏧᏒᎯᏓ"} per{"{0} ᎢᎦ ᎢᏳᏓᎵ"} } + decade{ + dnam{"ᏍᎪᎯ ᏧᏕᏘᏴᏓ"} + one{"{0} ᏍᎪᎯ ᏧᏕᏘᏴᏓ"} + other{"{0} ᏍᎪᎯ ᏧᏕᏘᏴᏓ"} + } hour{ dnam{"ᎢᏳᏟᎶᏓ"} one{"{0} ᏑᏟᎶᏓ"} @@ -362,6 +367,11 @@ chr{ one{"ᎠᎦᏴᎵ ᎠᏟᎶᏓ"} other{"{0} ᎠᎦᏴᎵ-ᎢᏧᏟᎶᏓ"} } + therm-us{ + dnam{"US ᎤᏗᏞᎬᎢ"} + one{"{0} US ᎤᏗᏞᎬᎢ"} + other{"{0} US ᎤᏗᏞᎬᎢ"} + } } force{ newton{ @@ -397,6 +407,41 @@ chr{ other{"{0} ᎺᎦᎭᏥ"} } } + graphics{ + dot-per-centimeter{ + dnam{"ᏧᏓᏓᎸ ᎤᏍᏗ ᎠᏟᎶᏗ ᎢᏳᏓᎵ"} + one{"{0} ᎤᏓᏓᎸ ᎤᏍᏗ ᎠᏟᎶᏗ ᎢᏳᏓᎵ"} + other{"{0} ᏧᏓᏓᎸ ᎤᏍᏗ ᎠᏟᎶᏗ ᎢᏳᏓᎵ"} + } + dot-per-inch{ + dnam{"ᏧᏓᏓᎸ ᎢᏏᎳᏗᏍᏗ ᎢᏳᏓᎵ"} + one{"{0} ᎤᏓᏓᎸ ᎢᏏᎳᏗᏍᏗ ᎢᏳᏓᎵ"} + other{"{0} ᏧᏓᏓᎸ ᎢᏏᎳᏗᏍᏗ ᎢᏳᏓᎵ"} + } + em{ + dnam{"ᎪᏪᎸ em"} + } + megapixel{ + dnam{"ᏧᏔᎾ ᏗᏇᎦᏎᎵ"} + one{"{0} ᎤᏔᎾ ᏇᎦᏎᎵ"} + other{"{0} ᏧᏔᎾ ᏗᏇᎦᏎᎵ"} + } + pixel{ + dnam{"ᏗᏇᎦᏎᎵ"} + one{"{0} ᏇᎦᏎᎵ"} + other{"{0} ᏗᏇᎦᏎᎵ"} + } + pixel-per-centimeter{ + dnam{"ᏗᏇᎦᏎᎵ ᎤᏍᏗ ᎠᏟᎶᏗ ᎢᏳᏓᎵ"} + one{"{0} ᏇᎦᏎᎵ ᎤᏍᏗ ᎠᏟᎶᏗ ᎢᏳᏓᎵ"} + other{"{0} ᏗᏇᎦᏎᎵ ᎤᏍᏗ ᎠᏟᎶᏗ ᎢᏳᏓᎵ"} + } + pixel-per-inch{ + dnam{"ᏗᏇᎦᏎᎵ ᎢᏏᎳᏗᏍᏗ ᎢᏳᏓᎵ"} + one{"{0} ᏇᎦᏎᎵ ᎢᏏᎳᏗᏍᏗ ᎢᏳᏓᎵ"} + other{"{0} ᏗᏇᎦᏎᎵ ᎢᏏᎳᏗᏍᏗ ᎢᏳᏓᎵ"} + } + } length{ astronomical-unit{ dnam{"ᎡᎶᎯ ᎠᎴ ᎤᏓ ᏭᏍᏗᎬ ᎧᎵ ᎨᏒᎢ"} @@ -620,6 +665,11 @@ chr{ one{"{0} ᎦᏃᎴᏍᎬ"} other{"{0} ᏗᎦᏃᎴᏍᎬ"} } + bar{ + dnam{"ᏕᎦᎾᎸᎢ"} + one{"{0} ᎦᎾᎸᎢ"} + other{"{0} ᏕᎦᎾᎸᎢ"} + } hectopascal{ dnam{"ᎮᏔ ᏗᏆᏌᎵ"} one{"{0} ᎮᏔ ᏆᏌᎵ"} @@ -642,7 +692,7 @@ chr{ } millibar{ dnam{"ᎢᏯᎦᏴᎵ ᏕᎦᎾᎸᎢ"} - one{"{0} ᎢᎦᎦᏴᎵ"} + one{"{0} ᎢᎦᎦᏴᎵ ᎦᎾᎸᎢ"} other{"{0} ᎢᏯᎦᏴᎵ ᏕᎦᎾᎸᎢ"} } millimeter-of-mercury{ @@ -650,6 +700,11 @@ chr{ one{"{0} ᏌᏉ ᎢᏯᎦᎨᎵᏁᎢ ᎠᏟᎶᏗ ᎾᎿ ᎹᎫᎢ"} other{"{0} ᏌᏉ ᎢᏯᎦᎨᎵᏁᎢ ᏗᏟᎶᏗ ᎾᎿ ᎹᎫᎢ"} } + pascal{ + dnam{"ᏗᏆᏌᎵ"} + one{"{0} ᏆᏌᎵ"} + other{"{0} ᏗᏆᏌᎵ"} + } pound-per-square-inch{ dnam{"ᎢᏧᏓᎨᏓ ᏅᎩ ᏧᏅᏏᎩ ᎢᏏᏔᏗᏍᏗ ᎢᏳᏓᎵ"} one{"{0} ᏑᏓᎨᏓ ᏅᎩ ᏧᏅᏏᎩ ᎢᏏᏔᏗᏍᏗ ᎢᏳᏓᎵ"} @@ -1217,6 +1272,11 @@ chr{ other{"{0} ᏧᏒᎯᏓ"} per{"{0}/Ꭲ"} } + decade{ + dnam{"ᏍᎪᎯ"} + one{"{0} ᏍᎪᎯ"} + other{"{0} ᏍᎪᎯ"} + } hour{ dnam{"ᎢᏳᏟᎶᏓ"} one{"{0} ᏑᏟ"} @@ -1332,6 +1392,11 @@ chr{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"US ᎤᏗᏞᎬᎢ"} + one{"{0} US ᎤᏗᏞᎬ"} + other{"{0} US ᎤᏗᏞᎬ"} + } } force{ newton{ @@ -1367,6 +1432,14 @@ chr{ other{"{0} MHz"} } } + graphics{ + megapixel{ + dnam{"ᏧᏔᎾ ᏗᏇᎦᏎᎵ"} + } + pixel{ + dnam{"ᏗᏇᎦᏎᎵ"} + } + } length{ astronomical-unit{ dnam{"ᎡᎨ"} diff --git a/source/data/unit/ckb.txt b/source/data/unit/ckb.txt index 8ae07c9..b289de4 100644 --- a/source/data/unit/ckb.txt +++ b/source/data/unit/ckb.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ckb{ - Version{"2.1.47.72"} + Version{"36"} } diff --git a/source/data/unit/cs.txt b/source/data/unit/cs.txt index bed545d..700ee43 100644 --- a/source/data/unit/cs.txt +++ b/source/data/unit/cs.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License cs{ - Version{"2.1.48.44"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -140,6 +140,7 @@ cs{ } compound{ per{"{0}/{1}"} + times{"{0}{1}"} } concentr{ karat{ @@ -331,6 +332,13 @@ cs{ other{"{0} dní"} per{"{0} za den"} } + decade{ + dnam{"desetiletí"} + few{"{0} desetiletí"} + many{"{0} desetiletí"} + one{"{0} desetiletí"} + other{"{0} desetiletí"} + } hour{ dnam{"hodiny"} few{"{0} hodiny"} @@ -488,6 +496,13 @@ cs{ one{"{0} kilowatthodina"} other{"{0} kilowatthodin"} } + therm-us{ + dnam{"thermy"} + few{"{0} thermy"} + many{"{0} thermu"} + one{"{0} therm"} + other{"{0} thermů"} + } } force{ newton{ @@ -535,6 +550,57 @@ cs{ other{"{0} megahertzů"} } } + graphics{ + dot-per-centimeter{ + dnam{"body na centimetr"} + few{"{0} body na centimetr"} + many{"{0} bodu na centimetr"} + one{"{0} bod na centimetr"} + other{"{0} bodů na centimetr"} + } + dot-per-inch{ + dnam{"body na palec"} + few{"{0} body na palec"} + many{"{0} bodu na palec"} + one{"{0} bod na palec"} + other{"{0} bodů na palec"} + } + em{ + dnam{"čtverčíky"} + few{"{0} čtverčíky"} + many{"{0} čtverčíku"} + one{"{0} čtverčík"} + other{"{0} čtverčíků"} + } + megapixel{ + dnam{"megapixely"} + few{"{0} megapixely"} + many{"{0} megapixelu"} + one{"{0} megapixel"} + other{"{0} megapixelů"} + } + pixel{ + dnam{"pixely"} + few{"{0} pixely"} + many{"{0} pixelu"} + one{"{0} pixel"} + other{"{0} pixelů"} + } + pixel-per-centimeter{ + dnam{"pixely na centimetr"} + few{"{0} pixely na centimetr"} + many{"{0} pixelu na centimetr"} + one{"{0} pixel na centimetr"} + other{"{0} pixelů na centimetr"} + } + pixel-per-inch{ + dnam{"pixely na palec"} + few{"{0} pixely na palec"} + many{"{0} pixelu na palec"} + one{"{0} pixel na palec"} + other{"{0} pixelů na palec"} + } + } length{ astronomical-unit{ dnam{"astronomické jednotky"} @@ -861,6 +927,13 @@ cs{ one{"{0} atmosféra"} other{"{0} atmosfér"} } + bar{ + dnam{"bary"} + few{"{0} bary"} + many{"{0} baru"} + one{"{0} bar"} + other{"{0} barů"} + } hectopascal{ dnam{"hektopascaly"} few{"{0} hektopascaly"} @@ -903,6 +976,13 @@ cs{ one{"{0} milimetr rtuti"} other{"{0} milimetrů rtuti"} } + pascal{ + dnam{"pascaly"} + few{"{0} pascaly"} + many{"{0} pascalu"} + one{"{0} pascal"} + other{"{0} pascalů"} + } pound-per-square-inch{ dnam{"libry na čtvereční palec"} few{"{0} libry na čtvereční palec"} @@ -1194,6 +1274,7 @@ cs{ other{"{0} G"} } meter-per-second-squared{ + dnam{"m/s²"} few{"{0} m/s²"} many{"{0} m/s²"} one{"{0} m/s²"} @@ -1223,6 +1304,7 @@ cs{ other{"{0}°"} } radian{ + dnam{"rad"} few{"{0} rad"} many{"{0} rad"} one{"{0} rad"} @@ -1252,42 +1334,54 @@ cs{ other{"{0} ha"} } square-centimeter{ + dnam{"cm²"} few{"{0} cm²"} many{"{0} cm²"} one{"{0} cm²"} other{"{0} cm²"} + per{"{0}/cm²"} } square-foot{ + dnam{"ft²"} few{"{0} ft²"} many{"{0} ft²"} one{"{0} ft²"} other{"{0} ft²"} } square-inch{ + dnam{"in²"} few{"{0} in²"} many{"{0} in²"} one{"{0} in²"} other{"{0} in²"} + per{"{0}/in²"} } square-kilometer{ + dnam{"km²"} few{"{0} km²"} many{"{0} km²"} one{"{0} km²"} other{"{0} km²"} + per{"{0}/km²"} } square-meter{ + dnam{"m²"} few{"{0} m²"} many{"{0} m²"} one{"{0} m²"} other{"{0} m²"} + per{"{0}/m²"} } square-mile{ + dnam{"mi²"} few{"{0} mi²"} many{"{0} mi²"} one{"{0} mi²"} other{"{0} mi²"} + per{"{0}/mi²"} } square-yard{ + dnam{"yd²"} few{"{0} yd²"} many{"{0} yd²"} one{"{0} yd²"} @@ -1296,8 +1390,16 @@ cs{ } compound{ per{"{0}/{1}"} + times{"{0}{1}"} } concentr{ + karat{ + dnam{"kt"} + few{"{0} kt"} + many{"{0} kt"} + one{"{0} kt"} + other{"{0} kt"} + } milligram-per-deciliter{ dnam{"mg/dl"} few{"{0} mg/dl"} @@ -1312,6 +1414,13 @@ cs{ one{"{0} mmol/l"} other{"{0} mmol/l"} } + part-per-million{ + dnam{"ppm"} + few{"{0} ppm"} + many{"{0} ppm"} + one{"{0} ppm"} + other{"{0} ppm"} + } percent{ dnam{"%"} few{"{0} %"} @@ -1342,6 +1451,9 @@ cs{ one{"{0} mpg"} other{"{0} mpg"} } + mile-per-gallon-imperial{ + dnam{"mpg Imp."} + } } coordinate{ dnam{"směr"} @@ -1352,6 +1464,7 @@ cs{ } digital{ bit{ + dnam{"bit"} few{"{0} bity"} many{"{0} bitu"} one{"{0} bit"} @@ -1365,48 +1478,56 @@ cs{ other{"{0} bajtů"} } gigabit{ + dnam{"Gb"} few{"{0} Gb"} many{"{0} Gb"} one{"{0} Gb"} other{"{0} Gb"} } gigabyte{ + dnam{"GB"} few{"{0} GB"} many{"{0} GB"} one{"{0} GB"} other{"{0} GB"} } kilobit{ + dnam{"kb"} few{"{0} kb"} many{"{0} kb"} one{"{0} kb"} other{"{0} kb"} } kilobyte{ + dnam{"kB"} few{"{0} kB"} many{"{0} kB"} one{"{0} kB"} other{"{0} kB"} } megabit{ + dnam{"Mb"} few{"{0} Mb"} many{"{0} Mb"} one{"{0} Mb"} other{"{0} Mb"} } megabyte{ + dnam{"MB"} few{"{0} MB"} many{"{0} MB"} one{"{0} MB"} other{"{0} MB"} } terabit{ + dnam{"Tb"} few{"{0} Tb"} many{"{0} Tb"} one{"{0} Tb"} other{"{0} Tb"} } terabyte{ + dnam{"TB"} few{"{0} TB"} many{"{0} TB"} one{"{0} TB"} @@ -1438,6 +1559,7 @@ cs{ per{"{0}/h"} } microsecond{ + dnam{"μs"} few{"{0} μs"} many{"{0} μs"} one{"{0} μs"} @@ -1467,6 +1589,7 @@ cs{ per{"{0}/měs."} } nanosecond{ + dnam{"ns"} few{"{0} ns"} many{"{0} ns"} one{"{0} ns"} @@ -1506,6 +1629,7 @@ cs{ other{"{0} A"} } milliampere{ + dnam{"mA"} few{"{0} mA"} many{"{0} mA"} one{"{0} mA"} @@ -1528,6 +1652,7 @@ cs{ } energy{ calorie{ + dnam{"cal"} few{"{0} cal"} many{"{0} cal"} one{"{0} cal"} @@ -1548,18 +1673,21 @@ cs{ other{"{0} J"} } kilocalorie{ + dnam{"kcal"} few{"{0} kcal"} many{"{0} kcal"} one{"{0} kcal"} other{"{0} kcal"} } kilojoule{ + dnam{"kJ"} few{"{0} kJ"} many{"{0} kJ"} one{"{0} kJ"} other{"{0} kJ"} } kilowatt-hour{ + dnam{"kWh"} few{"{0} kWh"} many{"{0} kWh"} one{"{0} kWh"} @@ -1568,24 +1696,28 @@ cs{ } frequency{ gigahertz{ + dnam{"GHz"} few{"{0} GHz"} many{"{0} GHz"} one{"{0} GHz"} other{"{0} GHz"} } hertz{ + dnam{"Hz"} few{"{0} Hz"} many{"{0} Hz"} one{"{0} Hz"} other{"{0} Hz"} } kilohertz{ + dnam{"kHz"} few{"{0} kHz"} many{"{0} kHz"} one{"{0} kHz"} other{"{0} kHz"} } megahertz{ + dnam{"MHz"} few{"{0} MHz"} many{"{0} MHz"} one{"{0} MHz"} @@ -1594,6 +1726,7 @@ cs{ } length{ astronomical-unit{ + dnam{"au"} few{"{0} au"} many{"{0} au"} one{"{0} au"} @@ -1616,10 +1749,6 @@ cs{ } fathom{ dnam{"fm"} - few{"{0} fth"} - many{"{0} fth"} - one{"{0} fth"} - other{"{0} fth"} } foot{ dnam{"ft"} @@ -1653,6 +1782,7 @@ cs{ per{"{0}/km"} } light-year{ + dnam{"ly"} few{"{0} ly"} many{"{0} ly"} one{"{0} ly"} @@ -1667,6 +1797,7 @@ cs{ per{"{0}/m"} } micrometer{ + dnam{"µm"} few{"{0} µm"} many{"{0} µm"} one{"{0} µm"} @@ -1694,29 +1825,40 @@ cs{ other{"{0} mm"} } nanometer{ + dnam{"nm"} few{"{0} nm"} many{"{0} nm"} one{"{0} nm"} other{"{0} nm"} } nautical-mile{ + dnam{"nmi"} few{"{0} nmi"} many{"{0} nmi"} one{"{0} nmi"} other{"{0} nmi"} } parsec{ + dnam{"pc"} few{"{0} pc"} many{"{0} pc"} one{"{0} pc"} other{"{0} pc"} } picometer{ + dnam{"pm"} few{"{0} pm"} many{"{0} pm"} one{"{0} pm"} other{"{0} pm"} } + point{ + dnam{"pt"} + few{"{0} pt"} + many{"{0} pt"} + one{"{0} pt"} + other{"{0} pt"} + } yard{ dnam{"yd"} few{"{0} yd"} @@ -1727,6 +1869,7 @@ cs{ } light{ lux{ + dnam{"lx"} few{"{0} lx"} many{"{0} lx"} one{"{0} lx"} @@ -1735,6 +1878,7 @@ cs{ } mass{ carat{ + dnam{"CD"} few{"{0} CD"} many{"{0} CD"} one{"{0} CD"} @@ -1764,12 +1908,14 @@ cs{ other{"{0} mt"} } microgram{ + dnam{"µg"} few{"{0} µg"} many{"{0} µg"} one{"{0} µg"} other{"{0} µg"} } milligram{ + dnam{"mg"} few{"{0} mg"} many{"{0} mg"} one{"{0} mg"} @@ -1784,6 +1930,7 @@ cs{ per{"{0}/oz"} } ounce-troy{ + dnam{"oz t"} few{"{0} oz t"} many{"{0} oz t"} one{"{0} oz t"} @@ -1814,30 +1961,35 @@ cs{ } power{ gigawatt{ + dnam{"GW"} few{"{0} GW"} many{"{0} GW"} one{"{0} GW"} other{"{0} GW"} } horsepower{ + dnam{"hp"} few{"{0} hp"} many{"{0} hp"} one{"{0} hp"} other{"{0} hp"} } kilowatt{ + dnam{"kW"} few{"{0} kW"} many{"{0} kW"} one{"{0} kW"} other{"{0} kW"} } megawatt{ + dnam{"MW"} few{"{0} MW"} many{"{0} MW"} one{"{0} MW"} other{"{0} MW"} } milliwatt{ + dnam{"mW"} few{"{0} mW"} many{"{0} mW"} one{"{0} mW"} @@ -1896,6 +2048,13 @@ cs{ one{"{0} km/h"} other{"{0} km/h"} } + knot{ + dnam{"kn"} + few{"{0} kn"} + many{"{0} kn"} + one{"{0} kn"} + other{"{0} kn"} + } meter-per-second{ dnam{"m/s"} few{"{0} m/s"} @@ -1943,6 +2102,7 @@ cs{ } volume{ acre-foot{ + dnam{"ac ft"} few{"{0} ac ft"} many{"{0} ac ft"} one{"{0} ac ft"} @@ -1963,42 +2123,51 @@ cs{ other{"{0} cl"} } cubic-centimeter{ + dnam{"cm³"} few{"{0} cm³"} many{"{0} cm³"} one{"{0} cm³"} other{"{0} cm³"} + per{"{0}/cm³"} } cubic-foot{ + dnam{"ft³"} few{"{0} ft³"} many{"{0} ft³"} one{"{0} ft³"} other{"{0} ft³"} } cubic-inch{ + dnam{"in³"} few{"{0} in³"} many{"{0} in³"} one{"{0} in³"} other{"{0} in³"} } cubic-kilometer{ + dnam{"km³"} few{"{0} km³"} many{"{0} km³"} one{"{0} km³"} other{"{0} km³"} } cubic-meter{ + dnam{"m³"} few{"{0} m³"} many{"{0} m³"} one{"{0} m³"} other{"{0} m³"} + per{"{0}/m³"} } cubic-mile{ + dnam{"mi³"} few{"{0} mi³"} many{"{0} mi³"} one{"{0} mi³"} other{"{0} mi³"} } cubic-yard{ + dnam{"yd³"} few{"{0} yd³"} many{"{0} yd³"} one{"{0} yd³"} @@ -2011,6 +2180,13 @@ cs{ one{"{0} c"} other{"{0} c"} } + cup-metric{ + dnam{"mcup"} + few{"{0} mc"} + many{"{0} mc"} + one{"{0} mc"} + other{"{0} mc"} + } deciliter{ dnam{"dl"} few{"{0} dl"} @@ -2049,6 +2225,7 @@ cs{ many{"{0} l"} one{"{0} l"} other{"{0} l"} + per{"{0}/l"} } megaliter{ dnam{"Ml"} @@ -2065,24 +2242,35 @@ cs{ other{"{0} ml"} } pint{ + dnam{"pt"} few{"{0} pt"} many{"{0} pt"} one{"{0} pt"} other{"{0} pt"} } + pint-metric{ + dnam{"mpt"} + few{"{0} mpt"} + many{"{0} mpt"} + one{"{0} mpt"} + other{"{0} mpt"} + } quart{ + dnam{"qt"} few{"{0} qt"} many{"{0} qt"} one{"{0} qt"} other{"{0} qt"} } tablespoon{ + dnam{"tbsp"} few{"{0} tbsp"} many{"{0} tbsp"} one{"{0} tbsp"} other{"{0} tbsp"} } teaspoon{ + dnam{"tsp"} few{"{0} tsp"} many{"{0} tsp"} one{"{0} tsp"} @@ -2223,6 +2411,7 @@ cs{ } compound{ per{"{0}/{1}"} + times{"{0}{1}"} } concentr{ karat{ @@ -2414,6 +2603,13 @@ cs{ other{"{0} dní"} per{"{0}/den"} } + decade{ + dnam{"desetil."} + few{"{0} desetil."} + many{"{0} desetil."} + one{"{0} desetil."} + other{"{0} desetil."} + } hour{ dnam{"h"} few{"{0} h"} @@ -2571,6 +2767,13 @@ cs{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"therm"} + few{"{0} therm"} + many{"{0} therm"} + one{"{0} therm"} + other{"{0} therm"} + } } force{ newton{ @@ -2618,6 +2821,57 @@ cs{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"DPCM"} + few{"{0} DPCM"} + many{"{0} DPCM"} + one{"{0} DPCM"} + other{"{0} DPCM"} + } + dot-per-inch{ + dnam{"DPI"} + few{"{0} DPI"} + many{"{0} DPI"} + one{"{0} DPI"} + other{"{0} DPI"} + } + em{ + dnam{"em"} + few{"{0} em"} + many{"{0} em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"Mpx"} + few{"{0} Mpx"} + many{"{0} Mpx"} + one{"{0} Mpx"} + other{"{0} Mpx"} + } + pixel{ + dnam{"px"} + few{"{0} px"} + many{"{0} px"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"PPCM"} + few{"{0} PPCM"} + many{"{0} PPCM"} + one{"{0} PPCM"} + other{"{0} PPCM"} + } + pixel-per-inch{ + dnam{"PPI"} + few{"{0} PPI"} + many{"{0} PPI"} + one{"{0} PPI"} + other{"{0} PPI"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -2643,10 +2897,6 @@ cs{ } fathom{ dnam{"fm"} - few{"{0} fth"} - many{"{0} fth"} - one{"{0} fth"} - other{"{0} fth"} } foot{ dnam{"ft"} @@ -2944,6 +3194,13 @@ cs{ one{"{0} atm"} other{"{0} atm"} } + bar{ + dnam{"bar"} + few{"{0} bar"} + many{"{0} bar"} + one{"{0} bar"} + other{"{0} bar"} + } hectopascal{ dnam{"hPa"} few{"{0} hPa"} @@ -2986,6 +3243,13 @@ cs{ one{"{0} mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"Pa"} + few{"{0} Pa"} + many{"{0} Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} few{"{0} psi"} diff --git a/source/data/unit/cy.txt b/source/data/unit/cy.txt index f77230d..3dc4bb7 100644 --- a/source/data/unit/cy.txt +++ b/source/data/unit/cy.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License cy{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -11,21 +11,21 @@ cy{ acceleration{ g-force{ dnam{"grym disgyrchedd"} - few{"{0} grym disgyrchedd"} - many{"{0} grym disgyrchedd"} + few{"{0} G"} + many{"{0} G"} one{"{0} grym disgyrchedd"} other{"{0} grym disgyrchedd"} - two{"{0} rym disgyrchedd"} - zero{"{0} grym disgyrchedd"} + two{"{0} G"} + zero{"{0} G"} } meter-per-second-squared{ dnam{"metrau yr eiliad sgwâr"} - few{"{0} metr yr eiliad sgwâr"} - many{"{0} metr yr eiliad sgwâr"} + few{"{0} m/eil²"} + many{"{0} m/eil²"} one{"{0} metr yr eiliad sgwâr"} other{"{0} metr yr eiliad sgwâr"} - two{"{0} fetr yr eiliad sgwâr"} - zero{"{0} metr yr eiliad sgwâr"} + two{"{0} m/eil²"} + zero{"{0} m/eil²"} } } angle{ @@ -59,11 +59,11 @@ cy{ radian{ dnam{"radianau"} few{"{0} radian"} - many{"{0} radian"} + many{"{0} rad"} one{"{0} radian"} other{"{0} radian"} two{"{0} radian"} - zero{"{0} radian"} + zero{"{0} rad"} } revolution{ dnam{"cylchdroeon"} @@ -96,22 +96,22 @@ cy{ } hectare{ dnam{"hectarau"} - few{"{0} hectar"} - many{"{0} hectar"} + few{"{0} ha"} + many{"{0} ha"} one{"{0} hectar"} other{"{0} hectar"} - two{"{0} hectar"} - zero{"{0} hectar"} + two{"{0} ha"} + zero{"{0} ha"} } square-centimeter{ dnam{"centimetrau sgwâr"} - few{"{0} chentimetr sgwâr"} - many{"{0} chentimetr sgwâr"} + few{"{0} cm²"} + many{"{0} cm²"} one{"{0} centimetr sgwâr"} other{"{0} centimetr sgwâr"} per{"{0} y centimetr sgwâr"} - two{"{0} gentimetr sgwâr"} - zero{"{0} centimetr sgwâr"} + two{"{0} cm²"} + zero{"{0} cm²"} } square-foot{ dnam{"troedfeddi sgwâr"} @@ -134,23 +134,23 @@ cy{ } square-kilometer{ dnam{"cilometrau sgwâr"} - few{"{0} chilometr sgwâr"} - many{"{0} chilometr sgwâr"} - one{"{0} cilometr sgwâr"} + few{"{0} km²"} + many{"{0} km²"} + one{"{0} km²"} other{"{0} cilometr sgwâr"} per{"{0} y cilometr sgwâr"} - two{"{0} gilometr sgwâr"} - zero{"{0} cilometr sgwâr"} + two{"{0} km²"} + zero{"{0} km²"} } square-meter{ dnam{"metrau sgwâr"} - few{"{0} metr sgwâr"} - many{"{0} metr sgwâr"} + few{"{0} m²"} + many{"{0} m²"} one{"{0} metr sgwâr"} other{"{0} metr sgwâr"} per{"{0} y metr sgwâr"} - two{"{0} fetr sgwâr"} - zero{"{0} metr sgwâr"} + two{"{0} m²"} + zero{"{0} m²"} } square-mile{ dnam{"milltiroedd sgwâr"} @@ -178,30 +178,30 @@ cy{ concentr{ karat{ dnam{"karatau"} - few{"{0} karat"} - many{"{0} karat"} + few{"{0} kt"} + many{"{0} kt"} one{"{0} karat"} other{"{0} karat"} - two{"{0} karat"} + two{"{0} kt"} zero{"{0} karat"} } milligram-per-deciliter{ dnam{"miligramau y declilitr"} - few{"{0} miligram y decilitr"} - many{"{0} miligram y decilitr"} + few{"{0} mg/dL"} + many{"{0} mg/dL"} one{"{0} miligram y decilitr"} other{"{0} miligram y decilitr"} - two{"{0} miligram y decilitr"} - zero{"{0} miligram y decilitr"} + two{"{0} mg/dL"} + zero{"{0} mg/dL"} } millimole-per-liter{ dnam{"milimolau y litr"} - few{"{0} milimôl y litr"} - many{"{0} milimôl y litr"} + few{"{0} mmol/L"} + many{"{0} mmol/L"} one{"{0} milimôl y litr"} other{"{0} milimôl y litr"} - two{"{0} milimôl y litr"} - zero{"{0} milimôl y litr"} + two{"{0} mmol/L"} + zero{"{0} mmol/L"} } mole{ dnam{"molau"} @@ -252,39 +252,39 @@ cy{ consumption{ liter-per-100kilometers{ dnam{"litrau y 100 cilometr"} - few{"{0} litr y 100 cilometr"} - many{"{0} litr y 100 cilometr"} + few{"{0} L/100km"} + many{"{0} L/100km"} one{"{0} litr y 100 cilometr"} other{"{0} litr y 100 cilometr"} - two{"{0} litr y 100 cilometr"} - zero{"{0} litr wrth y 100 cilometr"} + two{"{0} L/100km"} + zero{"{0} L/100km"} } liter-per-kilometer{ dnam{"litrau y cilometr"} - few{"{0} litr y cilometr"} - many{"{0} litr y cilometr"} + few{"{0} L/km"} + many{"{0} L/km"} one{"{0} litr y cilometr"} other{"{0} litr y cilometr"} - two{"{0} litr y cilometr"} - zero{"{0} litr y cilometr"} + two{"{0} L/km"} + zero{"{0} L/km"} } mile-per-gallon{ dnam{"milltiroedd y galwyn"} - few{"{0} milltir y galwyn"} - many{"{0} milltir y galwyn"} + few{"{0} mpg"} + many{"{0} mpg"} one{"{0} filltir y galwyn"} other{"{0} milltir y galwyn"} - two{"{0} filltir y galwyn"} - zero{"{0} milltir y galwyn"} + two{"{0} mpg"} + zero{"{0} mpg"} } mile-per-gallon-imperial{ dnam{"milltiroedd y galwyn Imp."} - few{"{0} milltir y galwyn Imp."} - many{"{0} milltir y galwyn Imp."} + few{"{0} mpg Imp."} + many{"{0} mpg Imp."} one{"{0} milltir y galwyn Imp."} other{"{0} milltir y galwyn Imp."} - two{"{0} filltir y galwyn Imp."} - zero{"{0} milltir y galwyn Imp."} + two{"{0} mpg Imp."} + zero{"{0} mpg Imp."} } } coordinate{ @@ -301,7 +301,7 @@ cy{ many{"{0} did"} one{"{0} did"} other{"{0} did"} - two{"{0} ddid"} + two{"{0} did"} zero{"{0} did"} } byte{ @@ -315,57 +315,57 @@ cy{ } gigabit{ dnam{"gigadidau"} - few{"{0} gigadid"} - many{"{0} gigadid"} + few{"{0} Gb"} + many{"{0} Gb"} one{"{0} gigadid"} other{"{0} gigadid"} - two{"{0} gigadid"} - zero{"{0} gigadid"} + two{"{0} Gb"} + zero{"{0} Gb"} } gigabyte{ dnam{"gigabeitiau"} - few{"{0} gigabeit"} - many{"{0} gigabeit"} + few{"{0} GB"} + many{"{0} GB"} one{"{0} gigabeit"} other{"{0} gigabeit"} - two{"{0} gigabeit"} - zero{"{0} gigabeit"} + two{"{0} GB"} + zero{"{0} GB"} } kilobit{ dnam{"cilodidau"} - few{"{0} cilodid"} - many{"{0} cilodid"} + few{"{0} kb"} + many{"{0} kb"} one{"{0} cilodid"} other{"{0} cilodid"} - two{"{0} cilodid"} - zero{"{0} cilodid"} + two{"{0} kb"} + zero{"{0} kb"} } kilobyte{ dnam{"cilobeitiau"} - few{"{0} cilobeit"} - many{"{0} cilobeit"} + few{"{0} kB"} + many{"{0} kB"} one{"{0} cilobeit"} other{"{0} cilobeit"} - two{"{0} gilobeit"} - zero{"{0} cilobeit"} + two{"{0} kB"} + zero{"{0} kB"} } megabit{ dnam{"megadidau"} - few{"{0} megadid"} - many{"{0} megadid"} + few{"{0} Mb"} + many{"{0} Mb"} one{"{0} megadid"} other{"{0} megadid"} - two{"{0} fegadid"} - zero{"{0} megadid"} + two{"{0} Mb"} + zero{"{0} Mb"} } megabyte{ dnam{"megabeitiau"} - few{"{0} megabeit"} - many{"{0} megabeit"} + few{"{0} MB"} + many{"{0} MB"} one{"{0} megabeit"} other{"{0} megabeit"} - two{"{0} fegabeit"} - zero{"{0} megabeit"} + two{"{0} MB"} + zero{"{0} MB"} } petabyte{ dnam{"petabyte"} @@ -378,21 +378,21 @@ cy{ } terabit{ dnam{"teradidau"} - few{"{0} teradid"} - many{"{0} teradid"} + few{"{0} Tb"} + many{"{0} Tb"} one{"{0} teradid"} other{"{0} teradid"} - two{"{0} deradid"} - zero{"{0} teradid"} + two{"{0} Tb"} + zero{"{0} Tb"} } terabyte{ dnam{"terabeitiau"} - few{"{0} terabeit"} - many{"{0} terabeit"} + few{"{0} TB"} + many{"{0} TB"} one{"{0} terabeit"} other{"{0} terabeit"} - two{"{0} derabeit"} - zero{"{0} terabeit"} + two{"{0} TB"} + zero{"{0} TB"} } } duration{ @@ -415,6 +415,15 @@ cy{ two{"{0} ddiwrnod"} zero{"{0} diwrnod"} } + decade{ + dnam{"degawdau"} + few{"{0} degawd"} + many{"{0} degawd"} + one{"{0} degawd"} + other{"{0} degawd"} + two{"{0} degawd"} + zero{"{0} degawd"} + } hour{ dnam{"oriau"} few{"{0} awr"} @@ -506,39 +515,39 @@ cy{ electric{ ampere{ dnam{"amperau"} - few{"{0} amper"} - many{"{0} amper"} + few{"{0} A"} + many{"{0} A"} one{"{0} amper"} other{"{0} amper"} - two{"{0} amper"} - zero{"{0} amper"} + two{"{0} A"} + zero{"{0} A"} } milliampere{ dnam{"miliamperau"} - few{"{0} miliamper"} - many{"{0} miliamper"} + few{"{0} mA"} + many{"{0} mA"} one{"{0} miliamper"} other{"{0} miliamper"} - two{"{0} filiamper"} - zero{"{0} miliamper"} + two{"{0} mA"} + zero{"{0} mA"} } ohm{ dnam{"ohmau"} - few{"{0} ohm"} - many{"{0} ohm"} + few{"{0} Ω"} + many{"{0} Ω"} one{"{0} ohm"} other{"{0} ohm"} - two{"{0} ohm"} - zero{"{0} ohm"} + two{"{0} Ω"} + zero{"{0} Ω"} } volt{ dnam{"foltiau"} - few{"{0} folt"} - many{"{0} folt"} + few{"{0} V"} + many{"{0} V"} one{"{0} folt"} other{"{0} folt"} - two{"{0} folt"} - zero{"{0} folt"} + two{"{0} V"} + zero{"{0} V"} } } energy{ @@ -553,12 +562,12 @@ cy{ } calorie{ dnam{"calorïau"} - few{"{0} chalori"} - many{"{0} chalori"} + few{"{0} cal"} + many{"{0} cal"} one{"{0} calori"} other{"{0} calori"} - two{"{0} galori"} - zero{"{0} calori"} + two{"{0} cal"} + zero{"{0} cal"} } electronvolt{ dnam{"electronfoltiau"} @@ -571,48 +580,48 @@ cy{ } foodcalorie{ dnam{"Calorïau"} - few{"{0} Chalori"} - many{"{0} Chalori"} + few{"{0} Cal"} + many{"{0} Cal"} one{"{0} Calori"} other{"{0} Calori"} - two{"{0} Galori"} - zero{"{0} Calori"} + two{"{0} Cal"} + zero{"{0} Cal"} } joule{ dnam{"jouleau"} - few{"{0} joule"} - many{"{0} joule"} + few{"{0} J"} + many{"{0} J"} one{"{0} joule"} other{"{0} joule"} - two{"{0} joule"} - zero{"{0} joule"} + two{"{0} J"} + zero{"{0} J"} } kilocalorie{ dnam{"cilocalorïau"} - few{"{0} chilocalori"} - many{"{0} chilocalori"} + few{"{0} kcal"} + many{"{0} kcal"} one{"{0} cilocalori"} other{"{0} cilocalori"} - two{"{0} gilocalori"} - zero{"{0} cilocalori"} + two{"{0} kcal"} + zero{"{0} kcal"} } kilojoule{ dnam{"cilojouleau"} - few{"{0} chilojoule"} - many{"{0} chilojoule"} + few{"{0} kJ"} + many{"{0} kJ"} one{"{0} cilojoule"} other{"{0} cilojoule"} - two{"{0} gilojoule"} - zero{"{0} cilojoule"} + two{"{0} kJ"} + zero{"{0} kJ"} } kilowatt-hour{ dnam{"cilowat oriau"} - few{"{0} chilowat awr"} - many{"{0} chilowat awr"} + few{"{0} kW-awr"} + many{"{0} kW-awr"} one{"{0} cilowat awr"} other{"{0} cilowat awr"} - two{"{0} gilowat awr"} - zero{"{0} cilowat awr"} + two{"{0} kW-awr"} + zero{"{0} kW-awr"} } } force{ @@ -630,7 +639,7 @@ cy{ few{"{0} lbf"} many{"{0} lbf"} one{"{0} pwys o rym"} - other{"{0} pwys o rym"} + other{"{0} pwysau o rym"} two{"{0} lbf"} zero{"{0} lbf"} } @@ -638,41 +647,97 @@ cy{ frequency{ gigahertz{ dnam{"gigaherts"} - few{"{0} gigaherts"} - many{"{0} gigaherts"} + few{"{0} GHz"} + many{"{0} GHz"} one{"{0} gigaherts"} other{"{0} gigaherts"} - two{"{0} gigaherts"} - zero{"{0} gigaherts"} + two{"{0} GHz"} + zero{"{0} GHz"} } hertz{ dnam{"herts"} - few{"{0} herts"} - many{"{0} herts"} + few{"{0} Hz"} + many{"{0} Hz"} one{"{0} herts"} other{"{0} herts"} - two{"{0} herts"} - zero{"{0} herts"} + two{"{0} Hz"} + zero{"{0} Hz"} } kilohertz{ dnam{"ciloherts"} - few{"{0} ciloherts"} - many{"{0} ciloherts"} + few{"{0} kHz"} + many{"{0} kHz"} one{"{0} ciloherts"} other{"{0} ciloherts"} - two{"{0} ciloherts"} - zero{"{0} ciloherts"} + two{"{0} kHz"} + zero{"{0} kHz"} } megahertz{ dnam{"megaherts"} - few{"{0} megaherts"} - many{"{0} megaherts"} + few{"{0} MHz"} + many{"{0} MHz"} one{"{0} megaherts"} other{"{0} megaherts"} - two{"{0} fegaherts"} + two{"{0} MHz"} zero{"{0} megaherts"} } } + graphics{ + dot-per-centimeter{ + dnam{"dotiau mewn centimedr"} + few{"{0} dpcm"} + many{"{0} dpcm"} + one{"{0} dot mewn centimedr"} + other{"{0} mewn centimedr"} + two{"{0} dpcm"} + zero{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dotiau mewn modfedd"} + few{"{0} dpi"} + many{"{0} dpi"} + one{"{0} mewn modfedd"} + other{"{0} dot mewn modfedd"} + two{"{0} dpi"} + zero{"{0} dpi"} + } + megapixel{ + dnam{"megapicseli"} + few{"{0} MP"} + many{"{0} MP"} + one{"{0} megapicsel"} + other{"{0} megapicsel"} + two{"{0} MP"} + zero{"{0} MP"} + } + pixel{ + dnam{"picseli"} + few{"{0} px"} + many{"{0} px"} + one{"{0} picsel"} + other{"{0} picsel"} + two{"{0} px"} + zero{"{0} px"} + } + pixel-per-centimeter{ + dnam{"picseli mewn centimedr"} + few{"{0} ppcm"} + many{"{0} ppcm"} + one{"{0} picsel mewn centimedr"} + other{"{0} picsel mewn centimedr"} + two{"{0} ppcm"} + zero{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"picseli mewn modfedd"} + few{"{0} ppi"} + many{"{0} ppi"} + one{"{0} picsel mewn modfedd"} + other{"{0} picsel mewn modfedd"} + two{"{0} ppi"} + zero{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"unedau seryddol"} @@ -685,22 +750,22 @@ cy{ } centimeter{ dnam{"centimetrau"} - few{"{0} chentimetr"} - many{"{0} chentimetr"} + few{"{0} cm"} + many{"{0} cm"} one{"{0} centimetr"} other{"{0} centimetr"} per{"{0} y centimetr"} - two{"{0} gentimetr"} - zero{"{0} centimetr"} + two{"{0} cm"} + zero{"{0} cm"} } decimeter{ dnam{"decimetrau"} - few{"{0} decimetr"} - many{"{0} decimetr"} + few{"{0} dm"} + many{"{0} dm"} one{"{0} decimetr"} other{"{0} decimetr"} - two{"{0} decimetr"} - zero{"{0} decimetr"} + two{"{0} dm"} + zero{"{0} dm"} } fathom{ dnam{"gwrhydau"} @@ -742,13 +807,13 @@ cy{ } kilometer{ dnam{"cilometrau"} - few{"{0} chilometr"} - many{"{0} chilometr"} + few{"{0} km"} + many{"{0} km"} one{"{0} cilometr"} other{"{0} cilometr"} per{"{0} y cilometr"} - two{"{0} gilometr"} - zero{"{0} cilometr"} + two{"{0} km"} + zero{"{0} km"} } light-year{ dnam{"blynyddoedd golau"} @@ -761,22 +826,22 @@ cy{ } meter{ dnam{"metrau"} - few{"{0} metr"} - many{"{0} metr"} + few{"{0} m"} + many{"{0} m"} one{"{0} metr"} other{"{0} metr"} per{"{0} y metr"} - two{"{0} fetr"} - zero{"{0} metr"} + two{"{0} m"} + zero{"{0} m"} } micrometer{ dnam{"micrometrau"} - few{"{0} micrometr"} - many{"{0} micrometr"} + few{"{0} µm"} + many{"{0} µm"} one{"{0} micrometr"} other{"{0} micrometr"} - two{"{0} ficrometr"} - zero{"{0} micrometr"} + two{"{0} µm"} + zero{"{0} µm"} } mile{ dnam{"milltiroedd"} @@ -785,7 +850,7 @@ cy{ one{"{0} filltir"} other{"{0} milltir"} two{"{0} filltir"} - zero{"{0} milltir"} + zero{"{0} mi"} } mile-scandinavian{ dnam{"milltiroedd Sgandinafia"} @@ -798,21 +863,21 @@ cy{ } millimeter{ dnam{"milimetrau"} - few{"{0} milimetr"} - many{"{0} milimetr"} + few{"{0} mm"} + many{"{0} mm"} one{"{0} milimetr"} other{"{0} milimetr"} two{"{0} filimetr"} - zero{"{0} milimetr"} + zero{"{0} mm"} } nanometer{ dnam{"nanometrau"} - few{"{0} nanometr"} - many{"{0} nanometr"} + few{"{0} nm"} + many{"{0} nm"} one{"{0} nanometr"} other{"{0} nanometr"} - two{"{0} nanometr"} - zero{"{0} nanometr"} + two{"{0} nm"} + zero{"{0} nm"} } nautical-mile{ dnam{"milltiroedd môr"} @@ -825,26 +890,26 @@ cy{ } parsec{ dnam{"parsecau"} - few{"{0} pharsec"} - many{"{0} pharsec"} + few{"{0} pc"} + many{"{0} pc"} one{"{0} parsec"} other{"{0} parsec"} - two{"{0} barsec"} + two{"{0} pc"} zero{"{0} parsec"} } picometer{ dnam{"picometrau"} - few{"{0} phicometr"} - many{"{0} phicometr"} + few{"{0} pm"} + many{"{0} pm"} one{"{0} picometr"} other{"{0} picometr"} - two{"{0} bicometr"} - zero{"{0} picometr"} + two{"{0} pm"} + zero{"{0} pm"} } point{ dnam{"pwyntiau"} - few{"{0} phwynt"} - many{"{0} phwynt"} + few{"{0} pt"} + many{"{0} pt"} one{"{0} pwynt"} other{"{0} pwynt"} two{"{0} bwynt"} @@ -872,11 +937,11 @@ cy{ light{ lux{ dnam{"lycsau"} - few{"{0} lwcs"} - many{"{0} lwcs"} + few{"{0} lx"} + many{"{0} lx"} one{"{0} lwcs"} other{"{0} lwcs"} - two{"{0} lwcs"} + two{"{0} lx"} zero{"{0} lwcs"} } solar-luminosity{ @@ -884,7 +949,7 @@ cy{ few{"{0} L☉"} many{"{0} L☉"} one{"{0} goleuedd solar"} - other{"{0} goleuedd solar"} + other{"{0} goleueddau solar"} two{"{0} L☉"} zero{"{0} L☉"} } @@ -892,11 +957,11 @@ cy{ mass{ carat{ dnam{"caratau"} - few{"{0} charat"} - many{"{0} charat"} + few{"{0} CD"} + many{"{0} CD"} one{"{0} carat"} other{"{0} carat"} - two{"{0} garat"} + two{"{0} CD"} zero{"{0} carat"} } dalton{ @@ -919,46 +984,46 @@ cy{ } gram{ dnam{"gramau"} - few{"{0} gram"} - many{"{0} gram"} + few{"{0} g"} + many{"{0} g"} one{"{0} gram"} other{"{0} gram"} per{"{0} y gram"} - two{"{0} gram"} - zero{"{0} gram"} + two{"{0} g"} + zero{"{0} g"} } kilogram{ dnam{"cilogramau"} - few{"{0} chilogram"} - many{"{0} chilogram"} + few{"{0} kg"} + many{"{0} kg"} one{"{0} cilogram"} other{"{0} cilogram"} per{"{0} y cilogram"} - two{"{0} gilogram"} - zero{"{0} cilogram"} + two{"{0} kg"} + zero{"{0} kg"} } metric-ton{ dnam{"tunelli metrig"} - few{"{0} tunnell fetrig"} - many{"{0} tunnell fetrig"} + few{"{0} t"} + many{"{0} t"} one{"{0} dunnell fetrig"} other{"{0} tunnell fetrig"} - two{"{0} dunnell fetrig"} - zero{"{0} tunnell fetrig"} + two{"{0} t"} + zero{"{0} t"} } microgram{ dnam{"microgramau"} - few{"{0} microgram"} - many{"{0} microgram"} + few{"{0} µg"} + many{"{0} µg"} one{"{0} microgram"} other{"{0} microgram"} - two{"{0} ficrogram"} - zero{"{0} microgram"} + two{"{0} µg"} + zero{"{0} µg"} } milligram{ dnam{"miligramau"} - few{"{0} miligram"} - many{"{0} miligram"} + few{"{0} mg"} + many{"{0} mg"} one{"{0} miligram"} other{"{0} miligram"} two{"{0} filigram"} @@ -1018,7 +1083,7 @@ cy{ one{"{0} dunnell"} other{"{0} tunnell"} two{"{0} dunnell"} - zero{"{0} tunnell"} + zero{"{0} tn"} } } power{ @@ -1033,26 +1098,26 @@ cy{ } horsepower{ dnam{"marchnerth"} - few{"{0} marchnerth"} - many{"{0} marchnerth"} + few{"{0} hp"} + many{"{0} hp"} one{"{0} marchnerth"} other{"{0} marchnerth"} - two{"{0} farchnerth"} - zero{"{0} marchnerth"} + two{"{0} hp"} + zero{"{0} hp"} } kilowatt{ dnam{"cilowatiau"} - few{"{0} chilowat"} - many{"{0} chilowat"} + few{"{0} kW"} + many{"{0} kW"} one{"{0} cilowat"} other{"{0} cilowat"} - two{"{0} gilowat"} - zero{"{0} cilowat"} + two{"{0} kW"} + zero{"{0} kW"} } megawatt{ dnam{"megawatiau"} - few{"{0} megawat"} - many{"{0} megawat"} + few{"{0} MW"} + many{"{0} MW"} one{"{0} megawat"} other{"{0} megawat"} two{"{0} fegawat"} @@ -1060,12 +1125,12 @@ cy{ } milliwatt{ dnam{"miliwatiau"} - few{"{0} miliwat"} - many{"{0} miliwat"} + few{"{0} mW"} + many{"{0} mW"} one{"{0} miliwat"} other{"{0} miliwat"} - two{"{0} filiwat"} - zero{"{0} miliwat"} + two{"{0} mW"} + zero{"{0} mW"} } watt{ dnam{"watiau"} @@ -1089,28 +1154,28 @@ cy{ } hectopascal{ dnam{"hectopascalau"} - few{"{0} hectopascal"} - many{"{0} hectopascal"} + few{"{0} hPa"} + many{"{0} hPa"} one{"{0} hectopascal"} other{"{0} hectopascal"} - two{"{0} hectopascal"} - zero{"{0} hectopascal"} + two{"{0} hPa"} + zero{"{0} hPa"} } inch-hg{ dnam{"modfeddi o fercwri"} - few{"{0} modfedd o fercwri"} - many{"{0} modfedd o fercwri"} + few{"{0} ″ Hg"} + many{"{0} ″ Hg"} one{"{0} fodfedd o fercwri"} other{"{0} modfedd o fercwri"} - two{"{0} fodfedd o fercwri"} - zero{"{0} modfedd o fercwri"} + two{"{0} ″ Hg"} + zero{"{0} ″ Hg"} } kilopascal{ dnam{"cilopascalau"} few{"{0} kPa"} many{"{0} kPa"} one{"{0} cilopascal"} - other{"{0} cilopascal"} + other{"{0} cilopascalau"} two{"{0} kPa"} zero{"{0} kPa"} } @@ -1119,36 +1184,39 @@ cy{ few{"{0} MPa"} many{"{0} MPa"} one{"{0} megapascal"} - other{"{0} megapascal"} + other{"{0} megapascalau"} two{"{0} MPa"} zero{"{0} MPa"} } millibar{ dnam{"milibarau"} few{"{0} milibar"} - many{"{0} milibar"} + many{"{0} mbar"} one{"{0} milibar"} other{"{0} milibar"} two{"{0} filibar"} - zero{"{0} milibar"} + zero{"{0} mbar"} } millimeter-of-mercury{ dnam{"milimetrau o fercwri"} - few{"{0} milimetr o fercwri"} - many{"{0} milimetr o fercwri"} + few{"{0} mm Hg"} + many{"{0} mm Hg"} one{"{0} milimetr o fercwri"} other{"{0} milimetr o fercwri"} - two{"{0} filimetr o fercwri"} - zero{"{0} milimetr o fercwri"} + two{"{0} mm Hg"} + zero{"{0} mm Hg"} + } + pascal{ + dnam{"pascals"} } pound-per-square-inch{ dnam{"pwysau y fodfedd sgwar"} - few{"{0} pwys y fodfedd sgwar"} - many{"{0} pwys y fodfedd sgwar"} + few{"{0} psi"} + many{"{0} psi"} one{"{0} pwys y fodfedd sgwar"} other{"{0} pwys y fodfedd sgwar"} - two{"{0} bwys y fodfedd sgwar"} - zero{"{0} pwys y fodfedd sgwar"} + two{"{0} psi"} + zero{"{0} psi"} } } speed{ @@ -1192,21 +1260,21 @@ cy{ temperature{ celsius{ dnam{"graddau Celsius"} - few{"{0} gradd Celsius"} - many{"{0} gradd Celsius"} + few{"{0}°C"} + many{"{0}°C"} one{"{0} radd Celsius"} other{"{0} gradd Celsius"} - two{"{0} radd Celsius"} + two{"{0}°C"} zero{"{0} gradd Celsius"} } fahrenheit{ dnam{"gradd Fahrenheit"} - few{"{0} gradd Fahrenheit"} - many{"{0} gradd Fahrenheit"} + few{"{0}°F"} + many{"{0}°F"} one{"{0} radd Fahrenheit"} other{"{0} gradd Fahrenheit"} - two{"{0} radd Fahrenheit"} - zero{"{0} gradd Fahrenheit"} + two{"{0}°F"} + zero{"{0}°F"} } generic{ dnam{"°"} @@ -1219,12 +1287,12 @@ cy{ } kelvin{ dnam{"celfinau"} - few{"{0} chelfin"} - many{"{0} celfin"} + few{"{0} K"} + many{"{0} K"} one{"{0} celfin"} other{"{0} celfin"} - two{"{0} gelfin"} - zero{"{0} celfin"} + two{"{0} K"} + zero{"{0} K"} } } torque{ @@ -1233,7 +1301,7 @@ cy{ few{"{0} N⋅m"} many{"{0} N⋅m"} one{"{0} newton-metr"} - other{"{0} newton-metr"} + other{"{0} newton-metrau"} two{"{0} N⋅m"} zero{"{0} N⋅m"} } @@ -1242,7 +1310,7 @@ cy{ few{"{0} lbf⋅ft"} many{"{0} lbf⋅ft"} one{"{0} pwys-troedfedd"} - other{"{0} pwys-troedfedd"} + other{"{0} pwys-troedfeddi"} two{"{0} lbf⋅ft"} zero{"{0} lbf⋅ft"} } @@ -1277,77 +1345,77 @@ cy{ } centiliter{ dnam{"centilitrau"} - few{"{0} chentilitr"} - many{"{0} chentilitr"} + few{"{0} cL"} + many{"{0} cL"} one{"{0} centilitr"} other{"{0} centilitr"} two{"{0} gentilitr"} - zero{"{0} centilitr"} + zero{"{0} cL"} } cubic-centimeter{ dnam{"centimetrau ciwbig"} - few{"{0} chentimetr ciwbig"} - many{"{0} centimetr ciwbig"} + few{"{0} cm³"} + many{"{0} cm³"} one{"{0} centimetr ciwbig"} other{"{0} chentimetr ciwbig"} per{"{0} y centimetr ciwbig"} - two{"{0} gentimetr ciwbig"} - zero{"{0} centimetr ciwbig"} + two{"{0} cm³"} + zero{"{0} cm³"} } cubic-foot{ dnam{"troedfeddi ciwbig"} - few{"{0} troedfedd giwbig"} - many{"{0} troedfedd giwbig"} + few{"{0} tr³"} + many{"{0} tr³"} one{"{0} droedfedd giwbig"} other{"{0} troedfedd giwbig"} - two{"{0} droedfedd giwbig"} - zero{"{0} troedfedd giwbig"} + two{"{0} tr³"} + zero{"{0} tr³"} } cubic-inch{ dnam{"modfeddi ciwbig"} - few{"{0} modfedd giwbig"} - many{"{0} modfedd giwbig"} + few{"{0} modfedd³"} + many{"{0} modfedd³"} one{"{0} fodfedd giwbig"} other{"{0} modfedd giwbig"} - two{"{0} fodfedd giwbig"} - zero{"{0} modfedd giwbig"} + two{"{0} fodfedd³"} + zero{"{0} modfedd³"} } cubic-kilometer{ dnam{"cilometrau ciwbig"} - few{"{0} chilometr ciwbig"} - many{"{0} chilometr ciwbig"} + few{"{0} km³"} + many{"{0} km³"} one{"{0} cilometr ciwbig"} other{"{0} cilometr ciwbig"} - two{"{0} gilometr ciwbig"} - zero{"{0} cilometr ciwbig"} + two{"{0} km³"} + zero{"{0} km³"} } cubic-meter{ dnam{"metrau ciwbig"} - few{"{0} metr ciwbig"} - many{"{0} metr ciwbig"} + few{"{0} m³"} + many{"{0} m³"} one{"{0} metr ciwbig"} other{"{0} metr ciwbig"} per{"{0} y metr ciwbig"} - two{"{0} fetr ciwbig"} - zero{"{0} metr ciwbig"} + two{"{0} m³"} + zero{"{0} m³"} } cubic-mile{ dnam{"milltiroedd ciwbig"} - few{"{0} milltir giwbig"} - many{"{0} milltir giwbig"} + few{"{0} mi³"} + many{"{0} mi³"} one{"{0} filltir giwbig"} other{"{0} milltir giwbig"} - two{"{0} filltir giwbig"} + two{"{0} mi³"} zero{"{0} milltir giwbig"} } cubic-yard{ dnam{"llathenni ciwbig"} - few{"{0} llath giwbig"} - many{"{0} llath giwbig"} + few{"{0} llath³"} + many{"{0} llath³"} one{"{0} llathen giwbig"} other{"{0} llath giwbig"} - two{"{0} lath giwbig"} - zero{"{0} llath giwbig"} + two{"{0} lath³"} + zero{"{0} llath³"} } cup{ dnam{"cwpaneidiau"} @@ -1360,21 +1428,21 @@ cy{ } cup-metric{ dnam{"cwpaneidiau metrig"} - few{"{0} cwpanaid metrig"} - many{"{0} cwpanaid metrig"} + few{"{0} mc"} + many{"{0} mc"} one{"{0} cwpanaid metrig"} other{"{0} cwpanaid metrig"} - two{"{0} gwpanaid metrig"} - zero{"{0} cwpanaid metrig"} + two{"{0} mc"} + zero{"{0} mc"} } deciliter{ dnam{"decilitrau"} - few{"{0} decilitr"} - many{"{0} decilitr"} + few{"{0} dL"} + many{"{0} dL"} one{"{0} decilitr"} other{"{0} decilitr"} - two{"{0} decilitr"} - zero{"{0} decilitr"} + two{"{0} dL"} + zero{"{0} dL"} } fluid-ounce{ dnam{"ownsiau hylifol"} @@ -1416,17 +1484,17 @@ cy{ } hectoliter{ dnam{"hectolitrau"} - few{"{0} hectolitr"} - many{"{0} hectolitr"} + few{"{0} hL"} + many{"{0} hL"} one{"{0} hectolitr"} other{"{0} hectolitr"} - two{"{0} hectolitr"} - zero{"{0} hectolitr"} + two{"{0} hL"} + zero{"{0} hL"} } liter{ dnam{"litrau"} - few{"{0} litr"} - many{"{0} litr"} + few{"{0} L"} + many{"{0} L"} one{"{0} litr"} other{"{0} litr"} per{"{0} y litr"} @@ -1435,21 +1503,21 @@ cy{ } megaliter{ dnam{"megalitrau"} - few{"{0} megalitr"} - many{"{0} megalitr"} + few{"{0} ML"} + many{"{0} ML"} one{"{0} megalitr"} other{"{0} megalitr"} - two{"{0} fegalitr"} - zero{"{0} megalitr"} + two{"{0} ML"} + zero{"{0} ML"} } milliliter{ dnam{"mililitrau"} - few{"{0} mililitr"} - many{"{0} mililitr"} + few{"{0} mL"} + many{"{0} mL"} one{"{0} mililitr"} other{"{0} mililitr"} - two{"{0} mililitr"} - zero{"{0} mililitr"} + two{"{0} mL"} + zero{"{0} mL"} } pint{ dnam{"peintiau"} @@ -1462,12 +1530,12 @@ cy{ } pint-metric{ dnam{"peintiau metrig"} - few{"{0} peint metrig"} - many{"{0} peint metrig"} + few{"{0} mpt"} + many{"{0} mpt"} one{"{0} peint metrig"} other{"{0} peint metrig"} - two{"{0} peint metrig"} - zero{"{0} peint metrig"} + two{"{0} mpt"} + zero{"{0} mpt"} } quart{ dnam{"chwartiau"} @@ -2117,13 +2185,13 @@ cy{ } kilogram{ dnam{"kg"} - few{"{0}kg"} - many{"{0}kg"} - one{"{0}kg"} + few{"{0} kg"} + many{"{0} kg"} + one{"{0} kg"} other{"{0}kg"} per{"{0}/kg"} - two{"{0}kg"} - zero{"{0}kg"} + two{"{0} kg"} + zero{"{0} kg"} } metric-ton{ dnam{"t"} @@ -2326,11 +2394,11 @@ cy{ temperature{ celsius{ dnam{"°C"} - few{"{0}°"} - many{"{0}°"} - one{"{0}°"} - other{"{0}°"} - two{"{0}°"} + few{"{0}°C"} + many{"{0}°C"} + one{"{0}°C"} + other{"{0}°C"} + two{"{0}°C"} zero{"{0}°"} } fahrenheit{ @@ -2479,12 +2547,6 @@ cy{ acceleration{ g-force{ dnam{"grym disgyrchedd"} - few{"{0} G"} - many{"{0} G"} - one{"{0} G"} - other{"{0} G"} - two{"{0} G"} - zero{"{0} G"} } meter-per-second-squared{ dnam{"metrau/eil²"} @@ -2611,7 +2673,6 @@ cy{ zero{"{0} km²"} } square-meter{ - dnam{"meterau²"} few{"{0} m²"} many{"{0} m²"} one{"{0} m²"} @@ -2654,7 +2715,6 @@ cy{ zero{"{0} kt"} } milligram-per-deciliter{ - dnam{"mg/dL"} few{"{0} mg/dL"} many{"{0} mg/dL"} one{"{0} mg/dL"} @@ -2709,12 +2769,6 @@ cy{ } permyriad{ dnam{"permyriad"} - few{"{0}‱"} - many{"{0}‱"} - one{"{0}‱"} - other{"{0}‱"} - two{"{0}‱"} - zero{"{0}‱"} } } consumption{ @@ -2782,7 +2836,6 @@ cy{ zero{"{0} beit"} } gigabit{ - dnam{"Gb"} few{"{0} Gb"} many{"{0} Gb"} one{"{0} Gb"} @@ -2799,15 +2852,6 @@ cy{ two{"{0} GB"} zero{"{0} GB"} } - kilobit{ - dnam{"kb"} - few{"{0} kb"} - many{"{0} kb"} - one{"{0} kb"} - other{"{0} kb"} - two{"{0} kb"} - zero{"{0} kb"} - } kilobyte{ dnam{"kBeit"} few{"{0} kB"} @@ -2817,23 +2861,8 @@ cy{ two{"{0} kB"} zero{"{0} kB"} } - megabit{ - dnam{"Mb"} - few{"{0} Mb"} - many{"{0} Mb"} - one{"{0} Mb"} - other{"{0} Mb"} - two{"{0} Mb"} - zero{"{0} Mb"} - } megabyte{ dnam{"MBeit"} - few{"{0} MB"} - many{"{0} MB"} - one{"{0} MB"} - other{"{0} MB"} - two{"{0} MB"} - zero{"{0} MB"} } petabyte{ dnam{"PByte"} @@ -2883,6 +2912,15 @@ cy{ two{"{0} ddiwrnod"} zero{"{0} diwrnod"} } + decade{ + dnam{"deg"} + few{"{0} degawd"} + many{"{0} degawd"} + one{"{0} degawd"} + other{"{0} degawd"} + two{"{0} degawd"} + zero{"{0} degawd"} + } hour{ dnam{"oriau"} few{"{0} awr"} @@ -3012,30 +3050,9 @@ cy{ energy{ british-thermal-unit{ dnam{"BTU"} - few{"{0} Btu"} - many{"{0} Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - two{"{0} Btu"} - zero{"{0} Btu"} - } - calorie{ - dnam{"cal"} - few{"{0} cal"} - many{"{0} cal"} - one{"{0} cal"} - other{"{0} cal"} - two{"{0} cal"} - zero{"{0} cal"} } electronvolt{ dnam{"electronfolt"} - few{"{0} eV"} - many{"{0} eV"} - one{"{0} eV"} - other{"{0} eV"} - two{"{0} eV"} - zero{"{0} eV"} } foodcalorie{ dnam{"Cal"} @@ -3055,23 +3072,8 @@ cy{ two{"{0} J"} zero{"{0} J"} } - kilocalorie{ - dnam{"kcal"} - few{"{0} kcal"} - many{"{0} kcal"} - one{"{0} kcal"} - other{"{0} kcal"} - two{"{0} kcal"} - zero{"{0} kcal"} - } kilojoule{ dnam{"cilojouleau"} - few{"{0} kJ"} - many{"{0} kJ"} - one{"{0} kJ"} - other{"{0} kJ"} - two{"{0} kJ"} - zero{"{0} kJ"} } kilowatt-hour{ dnam{"kW-awr"} @@ -3086,21 +3088,9 @@ cy{ force{ newton{ dnam{"newton"} - few{"{0} N"} - many{"{0} N"} - one{"{0} N"} - other{"{0} N"} - two{"{0} N"} - zero{"{0} N"} } pound-force{ dnam{"pwys-grym"} - few{"{0} lbf"} - many{"{0} lbf"} - one{"{0} lbf"} - other{"{0} lbf"} - two{"{0} lbf"} - zero{"{0} lbf"} } } frequency{ @@ -3141,6 +3131,14 @@ cy{ zero{"{0} MHz"} } } + graphics{ + megapixel{ + dnam{"megapicseli"} + } + pixel{ + dnam{"picseli"} + } + } length{ astronomical-unit{ dnam{"u.s."} @@ -3314,12 +3312,6 @@ cy{ } solar-radius{ dnam{"radiysau solar"} - few{"{0} R☉"} - many{"{0} R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - two{"{0} R☉"} - zero{"{0} R☉"} } yard{ dnam{"llathenni"} @@ -3343,12 +3335,6 @@ cy{ } solar-luminosity{ dnam{"goleueddau solar"} - few{"{0} L☉"} - many{"{0} L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - two{"{0} L☉"} - zero{"{0} L☉"} } } mass{ @@ -3363,21 +3349,9 @@ cy{ } dalton{ dnam{"daltonau"} - few{"{0} Da"} - many{"{0} Da"} - one{"{0} Da"} - other{"{0} Da"} - two{"{0} Da"} - zero{"{0} Da"} } earth-mass{ dnam{"masau ddaear"} - few{"{0} M⊕"} - many{"{0} M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - two{"{0} M⊕"} - zero{"{0} M⊕"} } gram{ dnam{"gramau"} @@ -3457,12 +3431,6 @@ cy{ } solar-mass{ dnam{"masau solar"} - few{"{0} M☉"} - many{"{0} M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - two{"{0} M☉"} - zero{"{0} M☉"} } stone{ dnam{"stonau"} @@ -3493,15 +3461,6 @@ cy{ two{"{0} GW"} zero{"{0} GW"} } - horsepower{ - dnam{"hp"} - few{"{0} hp"} - many{"{0} hp"} - one{"{0} hp"} - other{"{0} hp"} - two{"{0} hp"} - zero{"{0} hp"} - } kilowatt{ dnam{"kW"} few{"{0} kW"} @@ -3559,7 +3518,7 @@ cy{ zero{"{0} hPa"} } inch-hg{ - dnam{"modfeddi o fercwri"} + dnam{"\u0022 Hg"} few{"{0} ″ Hg"} many{"{0} ″ Hg"} one{"{0} ″ Hg"} @@ -3567,24 +3526,6 @@ cy{ two{"{0} ″ Hg"} zero{"{0} ″ Hg"} } - kilopascal{ - dnam{"kPa"} - few{"{0} kPa"} - many{"{0} kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - two{"{0} kPa"} - zero{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - few{"{0} MPa"} - many{"{0} MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - two{"{0} MPa"} - zero{"{0} MPa"} - } millibar{ dnam{"mbar"} few{"{0} mbar"} @@ -3594,17 +3535,7 @@ cy{ two{"{0} mbar"} zero{"{0} mbar"} } - millimeter-of-mercury{ - dnam{"mmHg"} - few{"{0} mmHg"} - many{"{0} mmHg"} - one{"{0} mmHg"} - other{"{0} mmHg"} - two{"{0} mmHg"} - zero{"{0} mmHg"} - } pound-per-square-inch{ - dnam{"psi"} few{"{0} psi"} many{"{0} psi"} one{"{0} psi"} @@ -3654,21 +3585,9 @@ cy{ temperature{ celsius{ dnam{"gradd C"} - few{"{0}°C"} - many{"{0}°C"} - one{"{0}°C"} - other{"{0}°C"} - two{"{0}°C"} - zero{"{0}°C"} } fahrenheit{ dnam{"gradd F"} - few{"{0}°F"} - many{"{0}°F"} - one{"{0}°F"} - other{"{0}°F"} - two{"{0}°F"} - zero{"{0}°F"} } generic{ dnam{"°"} @@ -3679,35 +3598,6 @@ cy{ two{"{0}°"} zero{"{0}°"} } - kelvin{ - dnam{"K"} - few{"{0} K"} - many{"{0} K"} - one{"{0} K"} - other{"{0} K"} - two{"{0} K"} - zero{"{0} K"} - } - } - torque{ - newton-meter{ - dnam{"N⋅m"} - few{"{0} N⋅m"} - many{"{0} N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - two{"{0} N⋅m"} - zero{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - few{"{0} lbf⋅ft"} - many{"{0} lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - two{"{0} lbf⋅ft"} - zero{"{0} lbf⋅ft"} - } } volume{ acre-foot{ @@ -3721,12 +3611,6 @@ cy{ } barrel{ dnam{"barel"} - few{"{0} bbl"} - many{"{0} bbl"} - one{"{0} bbl"} - other{"{0} bbl"} - two{"{0} bbl"} - zero{"{0} bbl"} } bushel{ dnam{"bwsielau"} @@ -3775,7 +3659,6 @@ cy{ zero{"{0} modfedd³"} } cubic-kilometer{ - dnam{"cilometrau ciwbig"} few{"{0} km³"} many{"{0} km³"} one{"{0} km³"} @@ -3847,15 +3730,6 @@ cy{ two{"{0} fl oz"} zero{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - few{"{0} fl oz Imp."} - many{"{0} fl oz Imp."} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - two{"{0} fl oz Imp."} - zero{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} few{"{0} gal"} diff --git a/source/data/unit/da.txt b/source/data/unit/da.txt index 5c9e35e..056832c 100644 --- a/source/data/unit/da.txt +++ b/source/data/unit/da.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License da{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h.mm"} hms{"h.mm.ss"} @@ -53,11 +53,6 @@ da{ one{"{0} acre"} other{"{0} acres"} } - dunam{ - dnam{"dunam"} - one{"{0} dunam"} - other{"{0} dunam"} - } hectare{ dnam{"hektar"} one{"{0} hektar"} @@ -106,6 +101,7 @@ da{ } compound{ per{"{0} pr. {1}"} + times{"{0} gange {1}"} } concentr{ karat{ @@ -123,11 +119,6 @@ da{ one{"{0} millimol pr. liter"} other{"{0} millimol pr. liter"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"parts per million"} one{"{0} parts per million"} @@ -143,11 +134,6 @@ da{ one{"{0} promille"} other{"{0} promille"} } - permyriad{ - dnam{"‱"} - one{"{0} ‱"} - other{"{0} ‱"} - } } consumption{ liter-per-100kilometers{ @@ -247,6 +233,11 @@ da{ other{"{0} dage"} per{"{0} pr. dag"} } + decade{ + dnam{"årtier"} + one{"{0} årti"} + other{"{0} årtier"} + } hour{ dnam{"timer"} one{"{0} time"} @@ -322,11 +313,6 @@ da{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"kalorier"} one{"{0} kalorie"} @@ -369,11 +355,6 @@ da{ one{"{0} newton"} other{"{0} newton"} } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} - } } frequency{ gigahertz{ @@ -397,6 +378,38 @@ da{ other{"{0} megahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"punkter per centimeter"} + one{"{0} punkt per centimeter"} + other{"{0} punkter per centimeter"} + } + dot-per-inch{ + dnam{"punkter per tomme"} + one{"{0} punkt per tomme"} + other{"{0} punkter per tomme"} + } + em{ + dnam{"geviert"} + one{"{0} geviert"} + other{"{0} geviert"} + } + megapixel{ + dnam{"megapixels"} + one{"{0} megapixel"} + other{"{0} megapixels"} + } + pixel-per-centimeter{ + dnam{"pixels per centimeter"} + one{"{0} pixel per centimeter"} + other{"{0} pixels per centimeter"} + } + pixel-per-inch{ + dnam{"pixels per tomme"} + one{"{0} pixel per tomme"} + other{"{0} pixels per tomme"} + } + } length{ astronomical-unit{ dnam{"astronomiske enheder"} @@ -505,11 +518,6 @@ da{ one{"{0} lux"} other{"{0} lux"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -517,16 +525,6 @@ da{ one{"{0} karat"} other{"{0} karat"} } - dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"gram"} one{"{0} gram"} @@ -650,6 +648,11 @@ da{ one{"{0} millimeter kviksølv"} other{"{0} millimeter kviksølv"} } + pascal{ + dnam{"pascal"} + one{"{0} pascal"} + other{"{0} pascal"} + } pound-per-square-inch{ dnam{"pounds pr. kvadrattomme"} one{"{0} pound pr. kvadrattomme"} @@ -706,11 +709,6 @@ da{ one{"{0} newtonmeter"} other{"{0} newtonmeter"} } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } } volume{ acre-foot{ @@ -786,7 +784,6 @@ da{ other{"{0} engelske fluid ounces"} } fluid-ounce-imperial{ - dnam{"Imp. fl oz"} one{"{0} Imp. fluid ounce"} other{"{0} Imp. fluid ounces"} } @@ -866,6 +863,10 @@ da{ one{"{0}″"} other{"{0}″"} } + degree{ + one{"{0}°"} + other{"{0}°"} + } } area{ acre{ @@ -884,9 +885,14 @@ da{ one{"{0}m²"} other{"{0}m²"} } + square-mile{ + one{"{0} mi²"} + other{"{0} mi²"} + } } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ percent{ @@ -934,7 +940,7 @@ da{ minute{ dnam{"min"} one{"{0} m"} - other{"{0} min"} + other{"{0} m"} } month{ dnam{"måned"} @@ -964,8 +970,10 @@ da{ dnam{"cm"} one{"{0} cm"} other{"{0} cm"} + per{"{0}/cm"} } decimeter{ + dnam{"dm"} one{"{0}dm"} other{"{0}dm"} } @@ -973,6 +981,7 @@ da{ dnam{"fod"} one{"{0} fod"} other{"{0} fod"} + per{"{0}/ft"} } inch{ dnam{"tommer"} @@ -984,6 +993,7 @@ da{ dnam{"km"} one{"{0} km"} other{"{0} km"} + per{"{0}/km"} } light-year{ one{"{0} lysår"} @@ -993,8 +1003,10 @@ da{ dnam{"meter"} one{"{0} m"} other{"{0} m"} + per{"{0}/m"} } micrometer{ + dnam{"µm"} one{"{0}μm"} other{"{0}μm"} } @@ -1028,20 +1040,30 @@ da{ dnam{"g"} one{"{0} g"} other{"{0} g"} + per{"{0}/g"} } kilogram{ dnam{"kg"} one{"{0} kg"} other{"{0} kg"} + per{"{0}/kg"} } ounce{ + dnam{"oz"} one{"{0} unse"} other{"{0} unser"} + per{"{0}/oz"} } pound{ dnam{"pund"} one{"{0} pund"} other{"{0} pund"} + per{"{0}/lb"} + } + stone{ + dnam{"st"} + one{"{0} st"} + other{"{0} st"} } ton{ one{"{0} tn"} @@ -1064,6 +1086,7 @@ da{ } pressure{ hectopascal{ + dnam{"hPa"} one{"{0}hPa"} other{"{0}hPa"} } @@ -1073,6 +1096,7 @@ da{ other{"{0}\u0022 Hg"} } millibar{ + dnam{"mbar"} one{"{0}mbar"} other{"{0}mbar"} } @@ -1081,6 +1105,11 @@ da{ one{"{0} mmHg"} other{"{0} mmHg"} } + pound-per-square-inch{ + dnam{"psi"} + one{"{0} psi"} + other{"{0} psi"} + } } speed{ kilometer-per-hour{ @@ -1089,6 +1118,7 @@ da{ other{"{0} km/t"} } meter-per-second{ + dnam{"m/s"} one{"{0}m/s"} other{"{0}m/s"} } @@ -1104,6 +1134,21 @@ da{ one{"{0}°C"} other{"{0}°C"} } + fahrenheit{ + dnam{"°F"} + one{"{0}°F"} + other{"{0}°F"} + } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } + kelvin{ + dnam{"K"} + one{"{0} K"} + other{"{0} K"} + } } volume{ cubic-inch{ @@ -1114,6 +1159,10 @@ da{ one{"{0}km³"} other{"{0}km³"} } + cubic-mile{ + one{"{0} mi³"} + other{"{0} mi³"} + } liter{ dnam{"liter"} one{"{0} l"} @@ -1151,7 +1200,7 @@ da{ other{"{0}°"} } radian{ - dnam{"radian"} + dnam{"radianer"} one{"{0} radian"} other{"{0} radian"} } @@ -1167,11 +1216,6 @@ da{ one{"{0} ac"} other{"{0} ac"} } - dunam{ - dnam{"dunam"} - one{"{0} dunam"} - other{"{0} dunam"} - } hectare{ dnam{"hektar"} one{"{0} ha"} @@ -1220,6 +1264,7 @@ da{ } compound{ per{"{0}/{1}"} + times{"{0} ⋅ {1}"} } concentr{ karat{ @@ -1237,11 +1282,6 @@ da{ one{"{0} mmol/l"} other{"{0} mmol/l"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ppm"} one{"{0} ppm"} @@ -1258,7 +1298,6 @@ da{ other{"{0} ‰"} } permyriad{ - dnam{"‱"} one{"{0} ‱"} other{"{0} ‱"} } @@ -1361,9 +1400,14 @@ da{ other{"{0} dage"} per{"{0}/dag"} } + decade{ + dnam{"årti"} + one{"{0} årti"} + other{"{0} årtier"} + } hour{ dnam{"timer"} - one{"{0} t"} + one{"{0} t."} other{"{0} t"} per{"{0} /t"} } @@ -1436,11 +1480,6 @@ da{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"cal"} one{"{0} cal"} @@ -1448,8 +1487,6 @@ da{ } electronvolt{ dnam{"elektronvolt"} - one{"{0} eV"} - other{"{0} eV"} } foodcalorie{ dnam{"cal"} @@ -1483,11 +1520,6 @@ da{ one{"{0} N"} other{"{0} N"} } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} - } } frequency{ gigahertz{ @@ -1604,8 +1636,6 @@ da{ } solar-radius{ dnam{"solradier"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"engelske yard"} @@ -1619,11 +1649,6 @@ da{ one{"{0} lx"} other{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -1631,16 +1656,6 @@ da{ one{"{0} kt."} other{"{0} kt."} } - dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"gram"} one{"{0} g"} @@ -1687,8 +1702,6 @@ da{ } solar-mass{ dnam{"solmasser"} - one{"{0} M☉"} - other{"{0} M☉"} } ton{ dnam{"tn"} @@ -1729,6 +1742,11 @@ da{ } } pressure{ + atmosphere{ + dnam{"atm"} + one{"{0} atm"} + other{"{0} atm"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -1739,16 +1757,6 @@ da{ one{"{0} # Hg"} other{"{0} # Hg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} one{"{0} mbar"} @@ -1809,18 +1817,6 @@ da{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ac ft"} @@ -1894,11 +1890,6 @@ da{ one{"{0} fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} one{"{0} gal"} diff --git a/source/data/unit/dav.txt b/source/data/unit/dav.txt index 621e39f..2bcaa41 100644 --- a/source/data/unit/dav.txt +++ b/source/data/unit/dav.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dav{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/de.txt b/source/data/unit/de.txt index 6fb98fe..8ff255d 100644 --- a/source/data/unit/de.txt +++ b/source/data/unit/de.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License de{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -121,11 +121,6 @@ de{ one{"{0} Millimol pro Liter"} other{"{0} Millimol pro Liter"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"Parts per million"} one{"{0} Parts per million"} @@ -141,11 +136,6 @@ de{ one{"{0} Promille"} other{"{0} Promille"} } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -245,6 +235,11 @@ de{ other{"{0} Tage"} per{"{0} pro Tag"} } + decade{ + dnam{"Jahrzehnte"} + one{"{0} Jahrzehnt"} + other{"{0} Jahrzehnte"} + } hour{ dnam{"Stunden"} one{"{0} Stunde"} @@ -323,7 +318,7 @@ de{ british-thermal-unit{ dnam{"British thermal units"} one{"{0} British thermal unit"} - other{"{0} Btu"} + other{"{0} British thermal units"} } calorie{ dnam{"Kalorien"} @@ -331,9 +326,9 @@ de{ other{"{0} Kalorien"} } electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} + dnam{"Elektronenvolt"} + one{"{0} Elektronenvolt"} + other{"{0} Elektronenvolt"} } foodcalorie{ dnam{"Kilokalorien"} @@ -360,15 +355,14 @@ de{ one{"{0} Kilowattstunde"} other{"{0} Kilowattstunden"} } + therm-us{ + dnam{"US thermal units"} + one{"{0} US thermal unit"} + other{"{0} US thermal units"} + } } force{ - newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} - } pound-force{ - dnam{"lbf"} one{"Pound-force"} other{"{0} lbf"} } @@ -395,11 +389,43 @@ de{ other{"{0} Megahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"Punkte pro Zentimeter"} + one{"{0} Punkt pro Zentimeter"} + other{"{0} Punkte pro Zentimeter"} + } + dot-per-inch{ + dnam{"Punkte pro Inch"} + one{"{0} Punkt pro Inch"} + other{"{0} Punkte pro Inch"} + } + megapixel{ + dnam{"Megapixel"} + one{"{0} Megapixel"} + other{"{0} Megapixel"} + } + pixel{ + dnam{"Pixel"} + one{"{0} Pixel"} + other{"{0} Pixel"} + } + pixel-per-centimeter{ + dnam{"Pixel pro Zentimeter"} + one{"{0} Pixel pro Zentimeter"} + other{"{0} Pixel pro Zentimeter"} + } + pixel-per-inch{ + dnam{"Pixel pro Inch"} + one{"{0} Pixel pro Inch"} + other{"{0} Pixel pro Inch"} + } + } length{ astronomical-unit{ dnam{"Astronomische Einheiten"} - one{"{0} AE"} - other{"{0} AE"} + one{"{0} Astronomische Einheit"} + other{"{0} Astronomische Einheiten"} } centimeter{ dnam{"Zentimeter"} @@ -497,9 +523,9 @@ de{ other{"{0} Punkte"} } solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} + dnam{"Sonnenradius"} + one{"{0} Sonnenradius"} + other{"{0} Sonnenradien"} } yard{ dnam{"Yards"} @@ -513,11 +539,6 @@ de{ one{"{0} Lux"} other{"{0} Lux"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -526,14 +547,14 @@ de{ other{"{0} Karat"} } dalton{ - dnam{"atomare Masseneinheit"} + dnam{"Dalton"} one{"{0} Dalton"} - other{"{0} Da"} + other{"{0} Dalton"} } earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} + dnam{"Erdmasse"} + one{"{0} Erdmasse"} + other{"{0} Erdmasse"} } gram{ dnam{"Gramm"} @@ -580,9 +601,9 @@ de{ per{"{0} pro Pfund"} } solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} + dnam{"Sonnenmasse"} + one{"{0} Sonnenmasse"} + other{"{0} Sonnenmasse"} } stone{ dnam{"Stones"} @@ -633,6 +654,11 @@ de{ one{"{0} Atmosphäre"} other{"{0} Atmosphären"} } + bar{ + dnam{"Bar"} + one{"{0} Bar"} + other{"{0} Bar"} + } hectopascal{ dnam{"Hektopascal"} one{"{0} Hektopascal"} @@ -644,14 +670,14 @@ de{ other{"{0} Zoll Quecksilbersäule"} } kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} + dnam{"Kilopascal"} + one{"{0} Kilopascal"} + other{"{0} Kilopascal"} } megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} + dnam{"Megapascal"} + one{"{0} Megapascal"} + other{"{0} Megapascal"} } millibar{ dnam{"Millibar"} @@ -663,6 +689,11 @@ de{ one{"{0} Millimeter Quecksilbersäule"} other{"{0} Millimeter Quecksilbersäule"} } + pascal{ + dnam{"Pascal"} + one{"{0} Pascal"} + other{"{0} Pascal"} + } pound-per-square-inch{ dnam{"Pfund pro Quadratzoll"} one{"{0} Pfund pro Quadratzoll"} @@ -713,18 +744,6 @@ de{ other{"{0} Kelvin"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"Acre-Feet"} @@ -732,9 +751,9 @@ de{ other{"{0} Acre-Feet"} } barrel{ - dnam{"bbl"} - one{"{0} bbl"} - other{"{0} bbl"} + dnam{"Barrel"} + one{"{0} Barrel"} + other{"{0} Barrel"} } bushel{ dnam{"Bushel"} @@ -804,9 +823,9 @@ de{ other{"{0} Flüssigunzen"} } fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} + dnam{"Imp. Flüssigunzen"} + one{"{0} Imp. Flüssigunze"} + other{"{0} Imp. Flüssigunzen"} } gallon{ dnam{"Gallonen"} @@ -872,15 +891,72 @@ de{ acceleration{ g-force{ dnam{"g-Kraft"} + one{"{0} G"} + other{"{0} G"} + } + meter-per-second-squared{ + dnam{"m/s²"} + one{"{0} m/s²"} + other{"{0} m/s²"} } } angle{ + arc-minute{ + one{"{0}′"} + other{"{0}′"} + } + arc-second{ + one{"{0}″"} + other{"{0}″"} + } + degree{ + one{"{0}°"} + other{"{0}°"} + } radian{ dnam{"rad"} one{"{0} rad"} other{"{0} rad"} } } + area{ + acre{ + one{"{0} ac"} + other{"{0} ac"} + } + hectare{ + one{"{0} ha"} + other{"{0} ha"} + } + square-centimeter{ + one{"{0} cm²"} + other{"{0} cm²"} + } + square-foot{ + one{"{0} ft²"} + other{"{0} ft²"} + } + square-inch{ + one{"{0} in²"} + other{"{0} in²"} + } + square-kilometer{ + one{"{0} km²"} + other{"{0} km²"} + } + square-meter{ + one{"{0} m²"} + other{"{0} m²"} + } + square-mile{ + one{"{0} mi²"} + other{"{0} mi²"} + } + square-yard{ + one{"{0} yd²"} + other{"{0} yd²"} + } + } compound{ per{"{0}/{1}"} } @@ -933,6 +1009,30 @@ de{ one{"{0} GB"} other{"{0} GB"} } + kilobit{ + one{"{0} kb"} + other{"{0} kb"} + } + kilobyte{ + one{"{0} kB"} + other{"{0} kB"} + } + megabit{ + one{"{0} Mb"} + other{"{0} Mb"} + } + megabyte{ + one{"{0} MB"} + other{"{0} MB"} + } + terabit{ + one{"{0} Tb"} + other{"{0} Tb"} + } + terabyte{ + one{"{0} TB"} + other{"{0} TB"} + } } duration{ century{ @@ -950,11 +1050,18 @@ de{ dnam{"Std."} one{"{0} Std."} other{"{0} Std."} + per{"{0}/h"} + } + microsecond{ + dnam{"μs"} + one{"{0} μs"} + other{"{0} μs"} } minute{ dnam{"Min."} one{"{0} Min."} other{"{0} Min."} + per{"{0}/min"} } month{ dnam{"M"} @@ -962,8 +1069,13 @@ de{ other{"{0} M"} per{"{0}/M"} } + nanosecond{ + one{"{0} ns"} + other{"{0} ns"} + } second{ dnam{"Sek."} + per{"{0}/s"} } week{ dnam{"W"} @@ -978,7 +1090,29 @@ de{ per{"{0}/J"} } } + electric{ + ampere{ + one{"{0} A"} + other{"{0} A"} + } + milliampere{ + one{"{0} mA"} + other{"{0} mA"} + } + ohm{ + one{"{0} Ω"} + other{"{0} Ω"} + } + volt{ + one{"{0} V"} + other{"{0} V"} + } + } energy{ + calorie{ + one{"{0} cal"} + other{"{0} cal"} + } foodcalorie{ one{"{0} kcal"} other{"{0} kcal"} @@ -987,19 +1121,67 @@ de{ one{"{0} J"} other{"{0} J"} } + kilocalorie{ + one{"{0} kcal"} + other{"{0} kcal"} + } + kilojoule{ + one{"{0} kJ"} + other{"{0} kJ"} + } + kilowatt-hour{ + one{"{0} kWh"} + other{"{0} kWh"} + } + } + frequency{ + gigahertz{ + one{"{0} GHz"} + other{"{0} GHz"} + } + hertz{ + one{"{0} Hz"} + other{"{0} Hz"} + } + kilohertz{ + one{"{0} kHz"} + other{"{0} kHz"} + } + megahertz{ + one{"{0} MHz"} + other{"{0} MHz"} + } } length{ astronomical-unit{ one{"{0} AE"} other{"{0} AE"} } + centimeter{ + per{"{0}/cm"} + } + decimeter{ + dnam{"dm"} + one{"{0} dm"} + other{"{0} dm"} + } fathom{ dnam{"Faden"} one{"{0} fth"} other{"{0} fth"} } + foot{ + one{"{0} ft"} + other{"{0} ft"} + per{"{0}/ft"} + } furlong{ dnam{"Furlong"} + one{"{0} fur"} + other{"{0} fur"} + } + kilometer{ + per{"{0}/km"} } light-year{ one{"{0} ly"} @@ -1007,11 +1189,49 @@ de{ } meter{ dnam{"Meter"} + per{"{0}/m"} + } + micrometer{ + dnam{"µm"} + one{"{0} µm"} + other{"{0} µm"} + } + mile{ + one{"{0} mi"} + other{"{0} mi"} + } + mile-scandinavian{ + dnam{"smi"} + one{"{0} smi"} + other{"{0} smi"} + } + nanometer{ + dnam{"nm"} + one{"{0} nm"} + other{"{0} nm"} } nautical-mile{ one{"{0} sm"} other{"{0} sm"} } + parsec{ + one{"{0} pc"} + other{"{0} pc"} + } + picometer{ + one{"{0} pm"} + other{"{0} pm"} + } + yard{ + one{"{0} yd"} + other{"{0} yd"} + } + } + light{ + lux{ + one{"{0} lx"} + other{"{0} lx"} + } } mass{ carat{ @@ -1021,9 +1241,31 @@ de{ } gram{ dnam{"Gramm"} + per{"{0}/g"} + } + kilogram{ + per{"{0}/kg"} + } + metric-ton{ + dnam{"t"} + one{"{0} t"} + other{"{0} t"} + } + microgram{ + dnam{"µg"} + one{"{0} µg"} + other{"{0} µg"} + } + milligram{ + dnam{"mg"} + one{"{0} mg"} + other{"{0} mg"} } ounce{ dnam{"Unzen"} + one{"{0} oz"} + other{"{0} oz"} + per{"{0}/oz"} } ounce-troy{ dnam{"oz.tr."} @@ -1032,23 +1274,89 @@ de{ } pound{ dnam{"Pfund"} + one{"{0} lb"} + other{"{0} lb"} + per{"{0}/lb"} } stone{ dnam{"Stones"} + one{"{0} st"} + other{"{0} st"} } ton{ dnam{"Tons"} + one{"{0} tn"} + other{"{0} tn"} } } power{ + gigawatt{ + one{"{0} GW"} + other{"{0} GW"} + } horsepower{ one{"{0} PS"} other{"{0} PS"} } + kilowatt{ + one{"{0} kW"} + other{"{0} kW"} + } + megawatt{ + one{"{0} MW"} + other{"{0} MW"} + } + milliwatt{ + one{"{0} mW"} + other{"{0} mW"} + } + watt{ + one{"{0} W"} + other{"{0} W"} + } } pressure{ + hectopascal{ + dnam{"hPa"} + one{"{0} hPa"} + other{"{0} hPa"} + } + inch-hg{ + dnam{"inHg"} + one{"{0} inHg"} + other{"{0} inHg"} + } millibar{ dnam{"Millibar"} + one{"{0} mbar"} + other{"{0} mbar"} + } + millimeter-of-mercury{ + dnam{"mm Hg"} + one{"{0} mm Hg"} + other{"{0} mm Hg"} + } + pound-per-square-inch{ + dnam{"psi"} + one{"{0} psi"} + other{"{0} psi"} + } + } + speed{ + knot{ + dnam{"kn"} + one{"{0} kn"} + other{"{0} kn"} + } + meter-per-second{ + dnam{"m/s"} + one{"{0} m/s"} + other{"{0} m/s"} + } + mile-per-hour{ + dnam{"mi/h"} + one{"{0} mi/h"} + other{"{0} mi/h"} } } temperature{ @@ -1057,15 +1365,64 @@ de{ one{"{0}°"} other{"{0}°"} } + fahrenheit{ + dnam{"°F"} + one{"{0}°F"} + other{"{0}°F"} + } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } + kelvin{ + dnam{"K"} + one{"{0} K"} + other{"{0} K"} + } } volume{ + acre-foot{ + one{"{0} ac ft"} + other{"{0} ac ft"} + } bushel{ dnam{"Bushel"} + one{"{0} bu"} + other{"{0} bu"} } centiliter{ one{"{0} cl"} other{"{0} cl"} } + cubic-centimeter{ + one{"{0} cm³"} + other{"{0} cm³"} + } + cubic-foot{ + one{"{0} ft³"} + other{"{0} ft³"} + } + cubic-inch{ + one{"{0} in³"} + other{"{0} in³"} + } + cubic-kilometer{ + one{"{0} km³"} + other{"{0} km³"} + } + cubic-meter{ + one{"{0} m³"} + other{"{0} m³"} + } + cubic-mile{ + one{"{0} mi³"} + other{"{0} mi³"} + } + cubic-yard{ + one{"{0} yd³"} + other{"{0} yd³"} + } cup{ one{"{0} Cup"} other{"{0} Cups"} @@ -1097,6 +1454,14 @@ de{ one{"{0} ml"} other{"{0} ml"} } + pint{ + one{"{0} pt"} + other{"{0} pt"} + } + quart{ + one{"{0} qt"} + other{"{0} qt"} + } tablespoon{ one{"{0} EL"} other{"{0} EL"} @@ -1143,6 +1508,8 @@ de{ area{ acre{ dnam{"Acres"} + one{"{0} ac"} + other{"{0} ac"} } dunam{ dnam{"Dunams"} @@ -1152,6 +1519,28 @@ de{ hectare{ dnam{"Hektar"} } + square-foot{ + dnam{"ft²"} + one{"{0} ft²"} + other{"{0} ft²"} + } + square-inch{ + dnam{"in²"} + one{"{0} in²"} + other{"{0} in²"} + per{"{0}/in²"} + } + square-mile{ + dnam{"mi²"} + one{"{0} mi²"} + other{"{0} mi²"} + per{"{0}/mi²"} + } + square-yard{ + dnam{"yd²"} + one{"{0} yd²"} + other{"{0} yd²"} + } } compound{ per{"{0}/{1}"} @@ -1172,11 +1561,6 @@ de{ one{"{0} mmol/L"} other{"{0} mmol/L"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"parts/million"} one{"{0} ppm"} @@ -1191,11 +1575,6 @@ de{ one{"{0} ‰"} other{"{0} ‰"} } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -1290,11 +1669,21 @@ de{ other{"{0} Tg."} per{"{0}/T"} } + decade{ + dnam{"Jz."} + one{"{0} Jz."} + other{"{0} Jz."} + } hour{ dnam{"Std."} one{"{0} Std."} other{"{0} Std."} } + microsecond{ + dnam{"μs"} + one{"{0} μs"} + other{"{0} μs"} + } minute{ dnam{"Min."} one{"{0} Min."} @@ -1306,6 +1695,10 @@ de{ other{"{0} Mon."} per{"{0}/M"} } + nanosecond{ + one{"{0} ns"} + other{"{0} ns"} + } second{ dnam{"Sek."} one{"{0} Sek."} @@ -1336,15 +1729,10 @@ de{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } - electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} + calorie{ + dnam{"cal"} + one{"{0} cal"} + other{"{0} cal"} } foodcalorie{ dnam{"kcal"} @@ -1356,20 +1744,25 @@ de{ one{"{0} J"} other{"{0} J"} } + kilocalorie{ + dnam{"kcal"} + one{"{0} kcal"} + other{"{0} kcal"} + } kilojoule{ dnam{"Kilojoule"} + one{"{0} kJ"} + other{"{0} kJ"} } - } - force{ - newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} + kilowatt-hour{ + dnam{"kWh"} + one{"{0} kWh"} + other{"{0} kWh"} } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + } + frequency{ + megahertz{ + dnam{"MHz"} } } length{ @@ -1388,15 +1781,15 @@ de{ } furlong{ dnam{"Furlong"} + one{"{0} fur"} + other{"{0} fur"} } inch{ - dnam{"Zoll"} - one{"{0} Zoll"} - other{"{0} Zoll"} - per{"{0}/Zoll"} + one{"{0} in"} + other{"{0} in"} } light-year{ - dnam{"Lichtjahre"} + dnam{"Lj"} one{"{0} Lj"} other{"{0} Lj"} } @@ -1406,22 +1799,28 @@ de{ mile{ dnam{"Meilen"} } + millimeter{ + dnam{"mm"} + one{"{0} mm"} + other{"{0} mm"} + } + nanometer{ + dnam{"nm"} + one{"{0} nm"} + other{"{0} nm"} + } nautical-mile{ dnam{"sm"} one{"{0} sm"} other{"{0} sm"} } parsec{ - dnam{"Parsec"} + one{"{0} pc"} + other{"{0} pc"} } picometer{ dnam{"Pikometer"} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"Yards"} } @@ -1432,65 +1831,59 @@ de{ one{"{0} lx"} other{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ - dnam{"Karat"} + dnam{"Kt"} one{"{0} Kt"} other{"{0} Kt"} } - dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"Gramm"} } - ounce{ - dnam{"Unzen"} - } ounce-troy{ dnam{"oz.tr."} one{"{0} oz.tr."} other{"{0} oz.tr."} } - pound{ - dnam{"Pfund"} - } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } stone{ dnam{"Stones"} - } - ton{ - dnam{"Tons"} + one{"{0} st"} + other{"{0} st"} } } power{ + gigawatt{ + dnam{"GW"} + one{"{0} GW"} + other{"{0} GW"} + } horsepower{ - dnam{"Pferdestärken"} + dnam{"PS"} one{"{0} PS"} other{"{0} PS"} } + kilowatt{ + one{"{0} kW"} + other{"{0} kW"} + } + megawatt{ + dnam{"MW"} + one{"{0} MW"} + other{"{0} MW"} + } watt{ dnam{"Watt"} + one{"{0} W"} + other{"{0} W"} } } pressure{ + atmosphere{ + dnam{"atm"} + one{"{0} atm"} + other{"{0} atm"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -1501,16 +1894,6 @@ de{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"Millibar"} one{"{0} mbar"} @@ -1527,6 +1910,11 @@ de{ other{"{0} psi"} } } + speed{ + knot{ + dnam{"kn"} + } + } temperature{ celsius{ dnam{"°C"} @@ -1549,37 +1937,48 @@ de{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"Acre-Feet"} one{"{0} ac ft"} other{"{0} ac ft"} } - barrel{ - dnam{"bbl"} - one{"{0} bbl"} - other{"{0} bbl"} - } bushel{ dnam{"Bushel"} + one{"{0} bu"} + other{"{0} bu"} } centiliter{ dnam{"cl"} one{"{0} cl"} other{"{0} cl"} } + cubic-centimeter{ + dnam{"cm³"} + one{"{0} cm³"} + other{"{0} cm³"} + per{"{0}/cm³"} + } + cubic-foot{ + dnam{"ft³"} + one{"{0} ft³"} + other{"{0} ft³"} + } + cubic-inch{ + dnam{"in³"} + one{"{0} in³"} + other{"{0} in³"} + } + cubic-mile{ + dnam{"mi³"} + one{"{0} mi³"} + other{"{0} mi³"} + } + cubic-yard{ + dnam{"yd³"} + one{"{0} yd³"} + other{"{0} yd³"} + } cup{ dnam{"Cups"} one{"{0} Cup"} @@ -1595,11 +1994,6 @@ de{ one{"{0} fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} one{"{0} gal"} @@ -1629,14 +2023,9 @@ de{ one{"{0} ml"} other{"{0} ml"} } - pint{ - dnam{"Pints"} - } - pint-metric{ - dnam{"metr. Pints"} - } quart{ - dnam{"Quart"} + one{"{0} qt"} + other{"{0} qt"} } tablespoon{ dnam{"EL"} diff --git a/source/data/unit/de_CH.txt b/source/data/unit/de_CH.txt index b59d5b9..ce6fe8b 100644 --- a/source/data/unit/de_CH.txt +++ b/source/data/unit/de_CH.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License de_CH{ - Version{"2.1.47.86"} + Version{"36"} units{ area{ square-foot{ diff --git a/source/data/unit/dje.txt b/source/data/unit/dje.txt index fc574d9..0dc942e 100644 --- a/source/data/unit/dje.txt +++ b/source/data/unit/dje.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dje{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/dsb.txt b/source/data/unit/dsb.txt index 6e13365..f790b69 100644 --- a/source/data/unit/dsb.txt +++ b/source/data/unit/dsb.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dsb{ - Version{"2.1.47.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/dua.txt b/source/data/unit/dua.txt index ed24d8a..e6e4379 100644 --- a/source/data/unit/dua.txt +++ b/source/data/unit/dua.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dua{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/dyo.txt b/source/data/unit/dyo.txt index 311972b..f7ffaf7 100644 --- a/source/data/unit/dyo.txt +++ b/source/data/unit/dyo.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dyo{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/dz.txt b/source/data/unit/dz.txt index da6cc37..396bd85 100644 --- a/source/data/unit/dz.txt +++ b/source/data/unit/dz.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dz{ - Version{"2.1.47.82"} + Version{"36"} units{ duration{ day{ diff --git a/source/data/unit/ebu.txt b/source/data/unit/ebu.txt index 5ac0418..dfe1c53 100644 --- a/source/data/unit/ebu.txt +++ b/source/data/unit/ebu.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ebu{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/ee.txt b/source/data/unit/ee.txt index 55263bc..f0cfd9a 100644 --- a/source/data/unit/ee.txt +++ b/source/data/unit/ee.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ee{ - Version{"2.1.47.82"} + Version{"36"} units{ duration{ day{ diff --git a/source/data/unit/el.txt b/source/data/unit/el.txt index 8f76729..8e6d550 100644 --- a/source/data/unit/el.txt +++ b/source/data/unit/el.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License el{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -39,7 +39,7 @@ el{ radian{ dnam{"ακτίνια"} one{"{0} ακτίνιο"} - other{"{0} ακτίνιο"} + other{"{0} ακτίνια"} } revolution{ dnam{"στροφή"} @@ -119,7 +119,7 @@ el{ other{"{0} χιλιοστόγραμμα ανά δεκατόλιτρο"} } millimole-per-liter{ - dnam{"χιλιοστογραμμομόριο ανά λίτρο"} + dnam{"χιλιοστογραμμομόρια ανά λίτρο"} one{"{0} χιλιοστογραμμομόριο ανά λίτρο"} other{"{0} χιλιοστογραμμομόρια ανά λίτρο"} } @@ -247,6 +247,11 @@ el{ other{"{0} ημέρες"} per{"{0} ανά ημέρα"} } + decade{ + dnam{"δεκαετίες"} + one{"{0} δεκαετία"} + other{"{0} δεκαετίες"} + } hour{ dnam{"ώρες"} one{"{0} ώρα"} @@ -362,6 +367,11 @@ el{ one{"{0} κιλοβατώρα"} other{"{0} κιλοβατώρες"} } + therm-us{ + dnam{"θερμικές μονάδες ΗΠΑ"} + one{"{0} θερμ. μονάδα ΗΠΑ"} + other{"{0} θερμικές μονάδες ΗΠΑ"} + } } force{ newton{ @@ -397,6 +407,43 @@ el{ other{"{0} μεγαχέρτζ"} } } + graphics{ + dot-per-centimeter{ + dnam{"κουκκίδες ανά εκατοστό"} + one{"{0} κουκκίδα ανά εκατοστό"} + other{"{0} κουκκίδες ανά εκατοστό"} + } + dot-per-inch{ + dnam{"κουκκίδες ανά ίντσα"} + one{"{0} κουκκίδα ανά ίντσα"} + other{"{0} κουκκίδες ανά ίντσα"} + } + em{ + dnam{"τυπογραφικό em"} + one{"{0} τυπογραφικό em"} + other{"{0} τυπογραφικά em"} + } + megapixel{ + dnam{"megapixel"} + one{"{0} megapixel"} + other{"{0} megapixel"} + } + pixel{ + dnam{"pixel"} + one{"{0} pixel"} + other{"{0} pixel"} + } + pixel-per-centimeter{ + dnam{"pixel ανά εκατοστό"} + one{"{0} pixel ανά εκατοστό"} + other{"{0} pixel ανά εκατοστό"} + } + pixel-per-inch{ + dnam{"pixel ανά ίντσα"} + one{"{0} pixel ανά ίντσα"} + other{"{0} pixel ανά ίντσα"} + } + } length{ astronomical-unit{ dnam{"αστρονομικές μονάδες"} @@ -444,7 +491,6 @@ el{ per{"{0} ανά μέτρο"} } micrometer{ - dnam{"µm"} one{"{0} μικρόμετρο"} other{"{0} μικρόμετρα"} } @@ -484,12 +530,11 @@ el{ other{"{0} πικόμετρα"} } point{ - dnam{"στιγμή"} one{"{0} στιγμή"} other{"{0} στιγμές"} } solar-radius{ - dnam{"ακτίνες Ήλιου"} + dnam{"ακτίνες του Ήλιου"} one{"{0} ακτίνα του Ήλιου"} other{"{0} ακτίνες του Ήλιου"} } @@ -506,7 +551,6 @@ el{ other{"{0} λουξ"} } solar-luminosity{ - dnam{"ηλιακές φωτεινότητες"} one{"{0} ηλιακή φωτεινότητα"} other{"{0} ηλιακές φωτεινότητες"} } @@ -537,7 +581,7 @@ el{ dnam{"χιλιόγραμμα"} one{"{0} χιλιόγραμμο"} other{"{0} χιλιόγραμμα"} - per{"{0} ανά κιλό"} + per{"{0} ανά χιλιόγραμμο"} } metric-ton{ dnam{"μετρικοί τόνοι"} @@ -620,6 +664,11 @@ el{ one{"{0} ατμόσφαιρα"} other{"{0} ατμόσφαιρες"} } + bar{ + dnam{"μπαρ"} + one{"{0} μπαρ"} + other{"{0} μπαρ"} + } hectopascal{ dnam{"εκτοπασκάλ"} one{"{0} εκτοπασκάλ"} @@ -647,11 +696,16 @@ el{ } millimeter-of-mercury{ dnam{"χιλιοστόμετρα στήλης υδραργύρου"} - one{"{0} χιλιοστόμετρα στήλης υδραργύρου"} + one{"{0} χιλιοστόμετρο στήλης υδραργύρου"} other{"{0} χιλιοστόμετρα στήλης υδραργύρου"} } + pascal{ + dnam{"πασκάλ"} + one{"{0} πασκάλ"} + other{"{0} πασκάλ"} + } pound-per-square-inch{ - dnam{"λίβρα ανά τετραγωνική ίντσα"} + dnam{"λίβρες ανά τετραγωνική ίντσα"} one{"{0} λίβρα ανά τετραγωνική ίντσα"} other{"{0} λίβρες ανά τετραγωνική ίντσα"} } @@ -719,9 +773,9 @@ el{ other{"{0} ακρ-πόδια"} } barrel{ - dnam{"βαρέλι"} + dnam{"βαρέλια"} one{"{0} βαρέλι"} - other{"{0} βαρέλι"} + other{"{0} βαρέλια"} } centiliter{ dnam{"εκατοστόλιτρα"} @@ -752,7 +806,7 @@ el{ cubic-meter{ dnam{"κυβικά μέτρα"} one{"{0} κυβικό μέτρο"} - other{"{0} κυβικό μέτρο"} + other{"{0} κυβικά μέτρα"} per{"{0} ανά κυβικό μέτρο"} } cubic-mile{ @@ -1341,6 +1395,11 @@ el{ other{"{0} ημέρες"} per{"{0}/ημ."} } + decade{ + dnam{"δεκ."} + one{"{0} δεκ."} + other{"{0} δεκ."} + } hour{ dnam{"ώρες"} one{"{0} ώρα"} @@ -1395,22 +1454,21 @@ el{ } electric{ ampere{ - dnam{"αμπέρ"} + dnam{"A"} one{"{0} A"} other{"{0} A"} } milliampere{ - dnam{"μιλιαμπέρ"} one{"{0} mA"} other{"{0} mA"} } ohm{ - dnam{"ωμ"} + dnam{"Ω"} one{"{0} Ω"} other{"{0} Ω"} } volt{ - dnam{"βολτ"} + dnam{"V"} one{"{0} V"} other{"{0} V"} } @@ -1456,6 +1514,11 @@ el{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"θερμ. μονάδες ΗΠΑ"} + one{"{0} θερμ. μονάδα ΗΠΑ"} + other{"{0} θερμ. μονάδες ΗΠΑ"} + } } force{ newton{ @@ -1471,26 +1534,27 @@ el{ } frequency{ gigahertz{ - dnam{"γιγαχέρτζ"} one{"{0} GHz"} other{"{0} GHz"} } hertz{ - dnam{"χερτζ"} one{"{0} Hz"} other{"{0} Hz"} } kilohertz{ - dnam{"κιλοχέρτζ"} one{"{0} kHz"} other{"{0} kHz"} } megahertz{ - dnam{"μεγαχέρτζ"} one{"{0} MHz"} other{"{0} MHz"} } } + graphics{ + megapixel{ + dnam{"megapixel"} + } + } length{ astronomical-unit{ dnam{"α.μ."} @@ -1553,7 +1617,7 @@ el{ other{"{0} σκανδ. μίλια"} } millimeter{ - dnam{"χιλιοστόμ."} + dnam{"χλστ."} one{"{0} χλστ."} other{"{0} χλστ."} } @@ -1584,8 +1648,6 @@ el{ } solar-radius{ dnam{"ακτίνες Ήλιου"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"γιάρδες"} @@ -1628,7 +1690,7 @@ el{ per{"{0}/γρ."} } kilogram{ - dnam{"kg"} + dnam{"κιλά"} one{"{0} κιλό"} other{"{0} κιλά"} per{"{0}/κιλό"} @@ -1714,6 +1776,11 @@ el{ one{"{0} atm"} other{"{0} atm"} } + bar{ + dnam{"μπαρ"} + one{"{0} μπαρ"} + other{"{0} μπαρ"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -1744,6 +1811,10 @@ el{ one{"{0} mmHg"} other{"{0} mmHg"} } + pascal{ + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} diff --git a/source/data/unit/en.txt b/source/data/unit/en.txt index 40f6228..3a6adb5 100644 --- a/source/data/unit/en.txt +++ b/source/data/unit/en.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en{ - Version{"2.1.48.65"} + Version{"36"} units{ acceleration{ g-force{ @@ -242,6 +242,11 @@ en{ other{"{0} days"} per{"{0} per day"} } + decade{ + dnam{"decades"} + one{"{0} decade"} + other{"{0} decades"} + } hour{ dnam{"hours"} one{"{0} hour"} @@ -357,6 +362,11 @@ en{ one{"{0} kilowatt hour"} other{"{0} kilowatt-hours"} } + therm-us{ + dnam{"US therms"} + one{"{0} US therm"} + other{"{0} US therms"} + } } force{ newton{ @@ -392,6 +402,43 @@ en{ other{"{0} megahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dots per centimeter"} + one{"{0} dot per centimeter"} + other{"{0} dots per centimeter"} + } + dot-per-inch{ + dnam{"dots per inch"} + one{"{0} dot per inch"} + other{"{0} dots per inch"} + } + em{ + dnam{"typographic em"} + one{"{0} em"} + other{"{0} ems"} + } + megapixel{ + dnam{"megapixels"} + one{"{0} megapixel"} + other{"{0} megapixels"} + } + pixel{ + dnam{"pixels"} + one{"{0} pixel"} + other{"{0} pixels"} + } + pixel-per-centimeter{ + dnam{"pixels per centimeter"} + one{"{0} pixel per centimeter"} + other{"{0} pixels per centimeter"} + } + pixel-per-inch{ + dnam{"pixels per inch"} + one{"{0} pixel per inch"} + other{"{0} pixels per inch"} + } + } length{ astronomical-unit{ dnam{"astronomical units"} @@ -630,6 +677,11 @@ en{ one{"{0} atmosphere"} other{"{0} atmospheres"} } + bar{ + dnam{"bars"} + one{"{0} bar"} + other{"{0} bars"} + } hectopascal{ dnam{"hectopascals"} one{"{0} hectopascal"} @@ -660,6 +712,11 @@ en{ one{"{0} millimeter of mercury"} other{"{0} millimeters of mercury"} } + pascal{ + dnam{"pascals"} + one{"{0} pascal"} + other{"{0} pascals"} + } pound-per-square-inch{ dnam{"pounds per square inch"} one{"{0} pound per square inch"} @@ -1076,6 +1133,11 @@ en{ one{"{0}d"} other{"{0}d"} } + decade{ + dnam{"dec"} + one{"{0}dec"} + other{"{0}dec"} + } hour{ dnam{"hour"} one{"{0}h"} @@ -1185,6 +1247,11 @@ en{ one{"{0}kWh"} other{"{0}kWh"} } + therm-us{ + dnam{"US therm"} + one{"{0}US therm"} + other{"{0}US therms"} + } } force{ newton{ @@ -1220,6 +1287,43 @@ en{ other{"{0}MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + one{"{0}dpcm"} + other{"{0}dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + one{"{0}dpi"} + other{"{0}dpi"} + } + em{ + dnam{"em"} + one{"{0}em"} + other{"{0}em"} + } + megapixel{ + dnam{"MP"} + one{"{0}MP"} + other{"{0}MP"} + } + pixel{ + dnam{"px"} + one{"{0}px"} + other{"{0}px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + one{"{0}ppcm"} + other{"{0}ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + one{"{0}ppi"} + other{"{0}ppi"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -1449,6 +1553,11 @@ en{ one{"{0}atm"} other{"{0}atm"} } + bar{ + dnam{"bar"} + one{"{0}bar"} + other{"{0}bars"} + } hectopascal{ dnam{"hPa"} one{"{0}hPa"} @@ -1479,6 +1588,11 @@ en{ one{"{0}mmHg"} other{"{0}mmHg"} } + pascal{ + dnam{"Pa"} + one{"{0}Pa"} + other{"{0}Pa"} + } pound-per-square-inch{ dnam{"psi"} one{"{0}psi"} @@ -1919,6 +2033,11 @@ en{ other{"{0} days"} per{"{0}/d"} } + decade{ + dnam{"dec"} + one{"{0} dec"} + other{"{0} dec"} + } hour{ dnam{"hours"} one{"{0} hr"} @@ -2034,6 +2153,11 @@ en{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"US therm"} + one{"{0} US therm"} + other{"{0} US therms"} + } } force{ newton{ @@ -2069,6 +2193,43 @@ en{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"megapixels"} + one{"{0} MP"} + other{"{0} MP"} + } + pixel{ + dnam{"pixels"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + one{"{0} ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -2307,6 +2468,11 @@ en{ one{"{0} atm"} other{"{0} atm"} } + bar{ + dnam{"bar"} + one{"{0} bar"} + other{"{0} bars"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -2337,6 +2503,11 @@ en{ one{"{0} mmHg"} other{"{0} mmHg"} } + pascal{ + dnam{"Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} diff --git a/source/data/unit/en_001.txt b/source/data/unit/en_001.txt index b694502..9c426fd 100644 --- a/source/data/unit/en_001.txt +++ b/source/data/unit/en_001.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_001{ - Version{"2.1.47.69"} + Version{"36"} units{ acceleration{ meter-per-second-squared{ @@ -46,6 +46,16 @@ en_001{ one{"{0} millimole per litre"} other{"{0} millimoles per litre"} } + percent{ + dnam{"per cent"} + one{"{0} per cent"} + other{"{0} per cent"} + } + permille{ + dnam{"per mille"} + one{"{0} per mille"} + other{"{0} per mille"} + } } consumption{ liter-per-100kilometers{ @@ -69,6 +79,18 @@ en_001{ other{"{0} miles per gallon"} } } + graphics{ + dot-per-centimeter{ + dnam{"dots per centimetre"} + one{"{0} dot per centimetre"} + other{"{0} dots per centimetre"} + } + pixel-per-centimeter{ + dnam{"pixels per centimetre"} + one{"{0} pixel per centimetre"} + other{"{0} pixels per centimetre"} + } + } length{ centimeter{ dnam{"centimetres"} @@ -116,7 +138,7 @@ en_001{ } mass{ metric-ton{ - dnam{"tonne"} + dnam{"tonnes"} one{"{0} tonne"} other{"{0} tonnes"} } @@ -152,6 +174,13 @@ en_001{ other{"{0} kelvin"} } } + torque{ + newton-meter{ + dnam{"newton metres"} + one{"{0} newton metre"} + other{"{0} newton metres"} + } + } volume{ centiliter{ dnam{"centilitres"} @@ -180,6 +209,11 @@ en_001{ one{"{0} decilitre"} other{"{0} decilitres"} } + fluid-ounce{ + dnam{"US fluid ounces"} + one{"{0} US fluid ounce"} + other{"{0} US fluid ounces"} + } gallon{ dnam{"US gallons"} one{"{0} US gallon"} @@ -354,6 +388,12 @@ en_001{ one{"{0} mmol/l"} other{"{0} mmol/l"} } + percent{ + dnam{"per cent"} + } + permille{ + dnam{"per mille"} + } } consumption{ liter-per-100kilometers{ @@ -381,7 +421,6 @@ en_001{ hour{ one{"{0} hr"} other{"{0} hrs"} - per{"{0}ph"} } minute{ one{"{0} min"} @@ -390,7 +429,6 @@ en_001{ second{ one{"{0} sec"} other{"{0} secs"} - per{"{0}ps"} } } length{ @@ -408,12 +446,7 @@ en_001{ } pressure{ inch-hg{ - dnam{"in Hg"} - } - millimeter-of-mercury{ - dnam{"mm Hg"} - one{"{0} mm Hg"} - other{"{0} mm Hg"} + dnam{"inHG"} } } speed{ @@ -432,6 +465,11 @@ en_001{ one{"{0} dl"} other{"{0} dl"} } + fluid-ounce{ + dnam{"US fl oz"} + one{"{0} US fl oz"} + other{"{0} US fl oz"} + } gallon{ dnam{"US gal"} one{"{0} gal US"} diff --git a/source/data/unit/en_150.txt b/source/data/unit/en_150.txt index 8d02750..d709e7f 100644 --- a/source/data/unit/en_150.txt +++ b/source/data/unit/en_150.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_150{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_AG.txt b/source/data/unit/en_AG.txt index 752a3d7..a63a580 100644 --- a/source/data/unit/en_AG.txt +++ b/source/data/unit/en_AG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_AI.txt b/source/data/unit/en_AI.txt index 9c02925..4d398f9 100644 --- a/source/data/unit/en_AI.txt +++ b/source/data/unit/en_AI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AI{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_AT.txt b/source/data/unit/en_AT.txt index 753d6cf..bd5afac 100644 --- a/source/data/unit/en_AT.txt +++ b/source/data/unit/en_AT.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AT{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_AU.txt b/source/data/unit/en_AU.txt index 8e3301f..dbc5cb5 100644 --- a/source/data/unit/en_AU.txt +++ b/source/data/unit/en_AU.txt @@ -2,14 +2,14 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AU{ %%Parent{"en_001"} - Version{"2.1.48.43"} + Version{"36"} + durationUnits{ + hm{"h:mm"} + hms{"h:mm:ss"} + ms{"m:ss"} + } units{ concentr{ - percent{ - dnam{"per cent"} - one{"{0} per cent"} - other{"{0} per cent"} - } permille{ dnam{"per mill"} one{"{0} per mill"} @@ -33,13 +33,9 @@ en_AU{ } mass{ metric-ton{ - dnam{"tonnes"} one{"tonne"} other{"{0} tonnes"} } - stone{ - one{"{0} stone"} - } } temperature{ generic{ @@ -48,8 +44,18 @@ en_AU{ other{"{0} degrees"} } } + volume{ + fluid-ounce{ + dnam{"fluid ounces"} + one{"{0} fluid ounce"} + other{"{0} fluid ounces"} + } + } } unitsNarrow{ + compound{ + per{"{0}/{1}"} + } concentr{ milligram-per-deciliter{ dnam{"mg/dL"} @@ -77,8 +83,6 @@ en_AU{ duration{ millisecond{ dnam{"msec."} - one{"{0}ms"} - other{"{0}ms"} } minute{ dnam{"min."} @@ -90,9 +94,6 @@ en_AU{ one{"{0}s."} other{"{0}s."} } - year{ - one{"{0}y"} - } } speed{ kilometer-per-hour{ @@ -165,11 +166,6 @@ en_AU{ other{"{0} deg."} } } - area{ - square-meter{ - other{"{0} m²"} - } - } concentr{ milligram-per-deciliter{ dnam{"mg/dL"} @@ -180,9 +176,6 @@ en_AU{ one{"{0} mmol/L"} other{"{0} mmol/L"} } - percent{ - dnam{"per cent"} - } permille{ dnam{"per mill"} } @@ -271,11 +264,19 @@ en_AU{ } } pressure{ + inch-hg{ + dnam{"in Hg"} + } millibar{ dnam{"mb"} one{"{0} mb"} other{"{0} mb"} } + millimeter-of-mercury{ + dnam{"mm Hg"} + one{"{0} mm Hg"} + other{"{0} mm Hg"} + } } speed{ meter-per-second{ @@ -291,6 +292,8 @@ en_AU{ temperature{ generic{ dnam{"deg."} + one{"{0}°"} + other{"{0}°"} } } volume{ @@ -303,17 +306,16 @@ en_AU{ one{"{0} cL"} other{"{0} cL"} } - cubic-centimeter{ - one{"{0} cm³"} - } - cubic-mile{ - one{"{0} mi³"} - } deciliter{ dnam{"dL"} one{"{0} dL"} other{"{0} dL"} } + fluid-ounce{ + dnam{"fl oz"} + one{"{0} fl oz"} + other{"{0} fl oz"} + } gallon{ dnam{"US gal."} one{"{0} gal. US"} diff --git a/source/data/unit/en_BB.txt b/source/data/unit/en_BB.txt index fbf9df7..fca6cbd 100644 --- a/source/data/unit/en_BB.txt +++ b/source/data/unit/en_BB.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BB{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_BE.txt b/source/data/unit/en_BE.txt index 511a8be..be2dff5 100644 --- a/source/data/unit/en_BE.txt +++ b/source/data/unit/en_BE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BE{ %%Parent{"en_150"} - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/unit/en_BM.txt b/source/data/unit/en_BM.txt index 009afd0..b1f0c76 100644 --- a/source/data/unit/en_BM.txt +++ b/source/data/unit/en_BM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_BS.txt b/source/data/unit/en_BS.txt index f76a9bd..c76733f 100644 --- a/source/data/unit/en_BS.txt +++ b/source/data/unit/en_BS.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BS{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} unitsNarrow{ temperature{ celsius{ diff --git a/source/data/unit/en_BW.txt b/source/data/unit/en_BW.txt index 2ae5fdb..472bb0c 100644 --- a/source/data/unit/en_BW.txt +++ b/source/data/unit/en_BW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BW{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_BZ.txt b/source/data/unit/en_BZ.txt index 7834146..6a8be42 100644 --- a/source/data/unit/en_BZ.txt +++ b/source/data/unit/en_BZ.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BZ{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} unitsNarrow{ temperature{ celsius{ diff --git a/source/data/unit/en_CA.txt b/source/data/unit/en_CA.txt index 64fd4cc..6743c21 100644 --- a/source/data/unit/en_CA.txt +++ b/source/data/unit/en_CA.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CA{ %%Parent{"en_001"} - Version{"2.1.47.86"} + Version{"36"} units{ concentr{ karat{ @@ -14,6 +14,7 @@ en_CA{ energy{ kilowatt-hour{ one{"{0} kilowatt-hour"} + other{"{0} kilowatt-hours"} } } torque{ @@ -251,6 +252,11 @@ en_CA{ day{ per{"{0}/day"} } + decade{ + dnam{"dec."} + one{"{0} dec."} + other{"{0} dec."} + } hour{ dnam{"hrs."} one{"{0} hr."} diff --git a/source/data/unit/en_CC.txt b/source/data/unit/en_CC.txt index 1c8588b..6066465 100644 --- a/source/data/unit/en_CC.txt +++ b/source/data/unit/en_CC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CC{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_CH.txt b/source/data/unit/en_CH.txt index ae65071..8a72c4c 100644 --- a/source/data/unit/en_CH.txt +++ b/source/data/unit/en_CH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CH{ %%Parent{"en_150"} - Version{"2.1.48.50"} + Version{"36"} } diff --git a/source/data/unit/en_CK.txt b/source/data/unit/en_CK.txt index 4276b47..1b5afe5 100644 --- a/source/data/unit/en_CK.txt +++ b/source/data/unit/en_CK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CK{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_CM.txt b/source/data/unit/en_CM.txt index 3926c38..a78b9f9 100644 --- a/source/data/unit/en_CM.txt +++ b/source/data/unit/en_CM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_CX.txt b/source/data/unit/en_CX.txt index 6e70c69..750c035 100644 --- a/source/data/unit/en_CX.txt +++ b/source/data/unit/en_CX.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CX{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_CY.txt b/source/data/unit/en_CY.txt index c009b10..369d217 100644 --- a/source/data/unit/en_CY.txt +++ b/source/data/unit/en_CY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CY{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_DE.txt b/source/data/unit/en_DE.txt index 9ae118e..b2b71ff 100644 --- a/source/data/unit/en_DE.txt +++ b/source/data/unit/en_DE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DE{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_DG.txt b/source/data/unit/en_DG.txt index a6f3076..41b307a 100644 --- a/source/data/unit/en_DG.txt +++ b/source/data/unit/en_DG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_DK.txt b/source/data/unit/en_DK.txt index 494fee3..5b3228b 100644 --- a/source/data/unit/en_DK.txt +++ b/source/data/unit/en_DK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DK{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_DM.txt b/source/data/unit/en_DM.txt index 4f886aa..f849ffe 100644 --- a/source/data/unit/en_DM.txt +++ b/source/data/unit/en_DM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_ER.txt b/source/data/unit/en_ER.txt index b9d9f93..e4a92d5 100644 --- a/source/data/unit/en_ER.txt +++ b/source/data/unit/en_ER.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ER{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_FI.txt b/source/data/unit/en_FI.txt index 3ca4f54..b8fbbfe 100644 --- a/source/data/unit/en_FI.txt +++ b/source/data/unit/en_FI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FI{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_FJ.txt b/source/data/unit/en_FJ.txt index 918bc8f..07db8bd 100644 --- a/source/data/unit/en_FJ.txt +++ b/source/data/unit/en_FJ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FJ{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_FK.txt b/source/data/unit/en_FK.txt index 4a8a67b..7178b9d 100644 --- a/source/data/unit/en_FK.txt +++ b/source/data/unit/en_FK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FK{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_FM.txt b/source/data/unit/en_FM.txt index 877c94e..122264e 100644 --- a/source/data/unit/en_FM.txt +++ b/source/data/unit/en_FM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_GB.txt b/source/data/unit/en_GB.txt index 9a0d387..4f24f40 100644 --- a/source/data/unit/en_GB.txt +++ b/source/data/unit/en_GB.txt @@ -2,38 +2,27 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GB{ %%Parent{"en_001"} - Version{"2.1.47.86"} + Version{"36"} + durationUnits{ + hm{"h:mm"} + hms{"h:mm:ss"} + ms{"m:ss"} + } units{ - concentr{ - percent{ - dnam{"per cent"} - one{"{0} per cent"} - other{"{0} per cent"} - } - permille{ - dnam{"per mille"} - one{"{0} per mille"} - other{"{0} per mille"} + volume{ + fluid-ounce-imperial{ + dnam{"fluid ounces"} + one{"{0} fluid ounce"} + other{"{0} fluid ounces"} } } } unitsShort{ - concentr{ - percent{ - dnam{"per cent"} - } - permille{ - dnam{"per mille"} - } - } - mass{ - stone{ - other{"{0} st"} - } - } volume{ - megaliter{ - other{"{0} Ml"} + fluid-ounce-imperial{ + dnam{"fl oz"} + one{"{0} fl oz"} + other{"{0} fl oz"} } } } diff --git a/source/data/unit/en_GD.txt b/source/data/unit/en_GD.txt index afef775..cf5232c 100644 --- a/source/data/unit/en_GD.txt +++ b/source/data/unit/en_GD.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GD{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_GG.txt b/source/data/unit/en_GG.txt index 6e4ba39..b763399 100644 --- a/source/data/unit/en_GG.txt +++ b/source/data/unit/en_GG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_GH.txt b/source/data/unit/en_GH.txt index ff08937..5a9a0a1 100644 --- a/source/data/unit/en_GH.txt +++ b/source/data/unit/en_GH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GH{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_GI.txt b/source/data/unit/en_GI.txt index 1f237f7..40711a6 100644 --- a/source/data/unit/en_GI.txt +++ b/source/data/unit/en_GI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GI{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_GM.txt b/source/data/unit/en_GM.txt index 5c15a1c..88c2aa4 100644 --- a/source/data/unit/en_GM.txt +++ b/source/data/unit/en_GM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_GY.txt b/source/data/unit/en_GY.txt index 0afd13f..f023f89 100644 --- a/source/data/unit/en_GY.txt +++ b/source/data/unit/en_GY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GY{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_HK.txt b/source/data/unit/en_HK.txt index 5ce84a6..930481d 100644 --- a/source/data/unit/en_HK.txt +++ b/source/data/unit/en_HK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_HK{ %%Parent{"en_001"} - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/unit/en_IE.txt b/source/data/unit/en_IE.txt index bc4d1b3..4f886d0 100644 --- a/source/data/unit/en_IE.txt +++ b/source/data/unit/en_IE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IE{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_IL.txt b/source/data/unit/en_IL.txt index 4f6fead..598b76d 100644 --- a/source/data/unit/en_IL.txt +++ b/source/data/unit/en_IL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IL{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_IM.txt b/source/data/unit/en_IM.txt index f109428..8c69f46 100644 --- a/source/data/unit/en_IM.txt +++ b/source/data/unit/en_IM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_IN.txt b/source/data/unit/en_IN.txt index e3bce77..c37c9cb 100644 --- a/source/data/unit/en_IN.txt +++ b/source/data/unit/en_IN.txt @@ -2,7 +2,16 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IN{ %%Parent{"en_001"} - Version{"2.1.49.14"} + Version{"36"} + units{ + temperature{ + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } + } + } unitsNarrow{ speed{ kilometer-per-hour{ @@ -18,5 +27,17 @@ en_IN{ other{"{0} kph"} } } + temperature{ + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } + } + volume{ + cubic-centimeter{ + per{"{0}/cm³"} + } + } } } diff --git a/source/data/unit/en_IO.txt b/source/data/unit/en_IO.txt index ae46d46..c161608 100644 --- a/source/data/unit/en_IO.txt +++ b/source/data/unit/en_IO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IO{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_JE.txt b/source/data/unit/en_JE.txt index b1fe588..f665bf2 100644 --- a/source/data/unit/en_JE.txt +++ b/source/data/unit/en_JE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_JE{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_JM.txt b/source/data/unit/en_JM.txt index b21c1a8..5ea01d1 100644 --- a/source/data/unit/en_JM.txt +++ b/source/data/unit/en_JM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_JM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_KE.txt b/source/data/unit/en_KE.txt index 3ba47c4..ac26682 100644 --- a/source/data/unit/en_KE.txt +++ b/source/data/unit/en_KE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KE{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_KI.txt b/source/data/unit/en_KI.txt index 5154257..6c4a2fb 100644 --- a/source/data/unit/en_KI.txt +++ b/source/data/unit/en_KI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KI{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_KN.txt b/source/data/unit/en_KN.txt index 3812274..fb3f8ec 100644 --- a/source/data/unit/en_KN.txt +++ b/source/data/unit/en_KN.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KN{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_KY.txt b/source/data/unit/en_KY.txt index 4c27885..c0458eb 100644 --- a/source/data/unit/en_KY.txt +++ b/source/data/unit/en_KY.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KY{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} unitsNarrow{ temperature{ celsius{ diff --git a/source/data/unit/en_LC.txt b/source/data/unit/en_LC.txt index ff73931..5dc4de3 100644 --- a/source/data/unit/en_LC.txt +++ b/source/data/unit/en_LC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_LC{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_LR.txt b/source/data/unit/en_LR.txt index 6ad4654..0fb3e94 100644 --- a/source/data/unit/en_LR.txt +++ b/source/data/unit/en_LR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_LR{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_LS.txt b/source/data/unit/en_LS.txt index 21b3f4c..6e5b29f 100644 --- a/source/data/unit/en_LS.txt +++ b/source/data/unit/en_LS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_LS{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_MG.txt b/source/data/unit/en_MG.txt index 28412fc..b045963 100644 --- a/source/data/unit/en_MG.txt +++ b/source/data/unit/en_MG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_MO.txt b/source/data/unit/en_MO.txt index af3fa89..22f53f7 100644 --- a/source/data/unit/en_MO.txt +++ b/source/data/unit/en_MO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MO{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_MS.txt b/source/data/unit/en_MS.txt index c74d938..1730089 100644 --- a/source/data/unit/en_MS.txt +++ b/source/data/unit/en_MS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MS{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_MT.txt b/source/data/unit/en_MT.txt index 3a56120..2d36498 100644 --- a/source/data/unit/en_MT.txt +++ b/source/data/unit/en_MT.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MT{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_MU.txt b/source/data/unit/en_MU.txt index 020e010..f36fea5 100644 --- a/source/data/unit/en_MU.txt +++ b/source/data/unit/en_MU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MU{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_MW.txt b/source/data/unit/en_MW.txt index 6dcad2e..f301bed 100644 --- a/source/data/unit/en_MW.txt +++ b/source/data/unit/en_MW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MW{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/unit/en_MY.txt b/source/data/unit/en_MY.txt index cdc4e22..8f49ecc 100644 --- a/source/data/unit/en_MY.txt +++ b/source/data/unit/en_MY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MY{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_NA.txt b/source/data/unit/en_NA.txt index 7df2865..6e0e148 100644 --- a/source/data/unit/en_NA.txt +++ b/source/data/unit/en_NA.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NA{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_NF.txt b/source/data/unit/en_NF.txt index e4a866f..7442ce7 100644 --- a/source/data/unit/en_NF.txt +++ b/source/data/unit/en_NF.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NF{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_NG.txt b/source/data/unit/en_NG.txt index 77b61a7..1bd97f9 100644 --- a/source/data/unit/en_NG.txt +++ b/source/data/unit/en_NG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NG{ %%Parent{"en_001"} - Version{"2.1.48.22"} + Version{"36"} } diff --git a/source/data/unit/en_NL.txt b/source/data/unit/en_NL.txt index d804c44..d1a3ce6 100644 --- a/source/data/unit/en_NL.txt +++ b/source/data/unit/en_NL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NL{ %%Parent{"en_150"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_NR.txt b/source/data/unit/en_NR.txt index 11f0346..4f75cd9 100644 --- a/source/data/unit/en_NR.txt +++ b/source/data/unit/en_NR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NR{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_NU.txt b/source/data/unit/en_NU.txt index 0601e0c..3386104 100644 --- a/source/data/unit/en_NU.txt +++ b/source/data/unit/en_NU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NU{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_NZ.txt b/source/data/unit/en_NZ.txt index 029dc21..6bc4cbe 100644 --- a/source/data/unit/en_NZ.txt +++ b/source/data/unit/en_NZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NZ{ %%Parent{"en_001"} - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/unit/en_PG.txt b/source/data/unit/en_PG.txt index d23f260..e79232a 100644 --- a/source/data/unit/en_PG.txt +++ b/source/data/unit/en_PG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_PH.txt b/source/data/unit/en_PH.txt index 2f92678..ee1ba4a 100644 --- a/source/data/unit/en_PH.txt +++ b/source/data/unit/en_PH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PH{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_PK.txt b/source/data/unit/en_PK.txt index 5a18ead..e123870 100644 --- a/source/data/unit/en_PK.txt +++ b/source/data/unit/en_PK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PK{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_PN.txt b/source/data/unit/en_PN.txt index 63c9656..dcd8c7a 100644 --- a/source/data/unit/en_PN.txt +++ b/source/data/unit/en_PN.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PN{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_PW.txt b/source/data/unit/en_PW.txt index a2d2df5..ad466fa 100644 --- a/source/data/unit/en_PW.txt +++ b/source/data/unit/en_PW.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PW{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} unitsNarrow{ temperature{ celsius{ diff --git a/source/data/unit/en_RW.txt b/source/data/unit/en_RW.txt index 16bff2e..bd8ed84 100644 --- a/source/data/unit/en_RW.txt +++ b/source/data/unit/en_RW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_RW{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_SB.txt b/source/data/unit/en_SB.txt index b6539ce..faca3e1 100644 --- a/source/data/unit/en_SB.txt +++ b/source/data/unit/en_SB.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SB{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_SC.txt b/source/data/unit/en_SC.txt index c81672e..4c8930d 100644 --- a/source/data/unit/en_SC.txt +++ b/source/data/unit/en_SC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SC{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_SD.txt b/source/data/unit/en_SD.txt index e3ff67d..c887a86 100644 --- a/source/data/unit/en_SD.txt +++ b/source/data/unit/en_SD.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SD{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_SE.txt b/source/data/unit/en_SE.txt index c2ac2a0..0c9af16 100644 --- a/source/data/unit/en_SE.txt +++ b/source/data/unit/en_SE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SE{ %%Parent{"en_150"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_SG.txt b/source/data/unit/en_SG.txt index 27428d0..26803b3 100644 --- a/source/data/unit/en_SG.txt +++ b/source/data/unit/en_SG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_SH.txt b/source/data/unit/en_SH.txt index ec801da..a51cad9 100644 --- a/source/data/unit/en_SH.txt +++ b/source/data/unit/en_SH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SH{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_SI.txt b/source/data/unit/en_SI.txt index 385b87b..aa1b540 100644 --- a/source/data/unit/en_SI.txt +++ b/source/data/unit/en_SI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SI{ %%Parent{"en_150"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_SL.txt b/source/data/unit/en_SL.txt index 78a7f22..6764d97 100644 --- a/source/data/unit/en_SL.txt +++ b/source/data/unit/en_SL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SL{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_SS.txt b/source/data/unit/en_SS.txt index af2c30c..cb55162 100644 --- a/source/data/unit/en_SS.txt +++ b/source/data/unit/en_SS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SS{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_SX.txt b/source/data/unit/en_SX.txt index aef37fe..7b0bd2a 100644 --- a/source/data/unit/en_SX.txt +++ b/source/data/unit/en_SX.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SX{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_SZ.txt b/source/data/unit/en_SZ.txt index e227a3e..9734bed 100644 --- a/source/data/unit/en_SZ.txt +++ b/source/data/unit/en_SZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SZ{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_TC.txt b/source/data/unit/en_TC.txt index 9d08e3a..96ba2bd 100644 --- a/source/data/unit/en_TC.txt +++ b/source/data/unit/en_TC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TC{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_TK.txt b/source/data/unit/en_TK.txt index 0d507ae..828cda3 100644 --- a/source/data/unit/en_TK.txt +++ b/source/data/unit/en_TK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TK{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_TO.txt b/source/data/unit/en_TO.txt index a60d593..24b603f 100644 --- a/source/data/unit/en_TO.txt +++ b/source/data/unit/en_TO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TO{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_TT.txt b/source/data/unit/en_TT.txt index 06d76b3..17a4163 100644 --- a/source/data/unit/en_TT.txt +++ b/source/data/unit/en_TT.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TT{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_TV.txt b/source/data/unit/en_TV.txt index 7397675..898ad44 100644 --- a/source/data/unit/en_TV.txt +++ b/source/data/unit/en_TV.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TV{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_TZ.txt b/source/data/unit/en_TZ.txt index 5775c53..56e6a79 100644 --- a/source/data/unit/en_TZ.txt +++ b/source/data/unit/en_TZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TZ{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_UG.txt b/source/data/unit/en_UG.txt index 302faff..02c501e 100644 --- a/source/data/unit/en_UG.txt +++ b/source/data/unit/en_UG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_UG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_VC.txt b/source/data/unit/en_VC.txt index 482ec20..bf44e8e 100644 --- a/source/data/unit/en_VC.txt +++ b/source/data/unit/en_VC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_VC{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_VG.txt b/source/data/unit/en_VG.txt index 8e90bec..6d0d305 100644 --- a/source/data/unit/en_VG.txt +++ b/source/data/unit/en_VG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_VG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_VU.txt b/source/data/unit/en_VU.txt index 069081e..f76028d 100644 --- a/source/data/unit/en_VU.txt +++ b/source/data/unit/en_VU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_VU{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_WS.txt b/source/data/unit/en_WS.txt index 07f56ef..eaa44ad 100644 --- a/source/data/unit/en_WS.txt +++ b/source/data/unit/en_WS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_WS{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_ZA.txt b/source/data/unit/en_ZA.txt index d91f0dc..4119726 100644 --- a/source/data/unit/en_ZA.txt +++ b/source/data/unit/en_ZA.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ZA{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_ZM.txt b/source/data/unit/en_ZM.txt index 106aa70..7be977f 100644 --- a/source/data/unit/en_ZM.txt +++ b/source/data/unit/en_ZM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ZM{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/en_ZW.txt b/source/data/unit/en_ZW.txt index 1ff6458..ff7afc9 100644 --- a/source/data/unit/en_ZW.txt +++ b/source/data/unit/en_ZW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ZW{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/eo.txt b/source/data/unit/eo.txt index 814b827..03ed2e5 100644 --- a/source/data/unit/eo.txt +++ b/source/data/unit/eo.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License eo{ - Version{"2.1.49.33"} + Version{"36"} unitsShort{ duration{ month{ diff --git a/source/data/unit/es.txt b/source/data/unit/es.txt index 7ef2c21..853ac9f 100644 --- a/source/data/unit/es.txt +++ b/source/data/unit/es.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License es{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -54,9 +54,9 @@ es{ other{"{0} acres"} } dunam{ - dnam{"dunumes"} - one{"{0} dunum"} - other{"{0} dunumes"} + dnam{"dunams"} + one{"{0} dunam"} + other{"{0} dunams"} } hectare{ dnam{"hectáreas"} @@ -106,6 +106,7 @@ es{ } compound{ per{"{0} por {1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -247,6 +248,11 @@ es{ other{"{0} días"} per{"{0} por día"} } + decade{ + dnam{"décadas"} + one{"{0} década"} + other{"{0} décadas"} + } hour{ dnam{"horas"} one{"{0} hora"} @@ -362,6 +368,11 @@ es{ one{"{0} kilovatio-hora"} other{"{0} kilovatios-hora"} } + therm-us{ + dnam{"termia estadounidense"} + one{"{0} termia estadounidense"} + other{"{0} termias estadounidenses"} + } } force{ newton{ @@ -397,6 +408,43 @@ es{ other{"{0} megahercios"} } } + graphics{ + dot-per-centimeter{ + dnam{"puntos por centímetro"} + one{"{0} punto por centímetro"} + other{"{0} puntos por centímetro"} + } + dot-per-inch{ + dnam{"puntos por pulgada"} + one{"{0} punto por pulgada"} + other{"{0} puntos por pulgada"} + } + em{ + dnam{"espacios eme"} + one{"{0} espacio eme"} + other{"{0} espacios eme"} + } + megapixel{ + dnam{"megapíxeles"} + one{"{0} megapíxel"} + other{"{0} megapíxeles"} + } + pixel{ + dnam{"píxeles"} + one{"{0} píxel"} + other{"{0} píxeles"} + } + pixel-per-centimeter{ + dnam{"píxeles por centímetro"} + one{"{0} píxel por centímetro"} + other{"{0} píxeles por centímetro"} + } + pixel-per-inch{ + dnam{"píxeles por pulgada"} + one{"{0} píxel por pulgada"} + other{"{0} píxeles por pulgada"} + } + } length{ astronomical-unit{ dnam{"unidades astronómicas"} @@ -620,6 +668,11 @@ es{ one{"{0} atmósfera"} other{"{0} atmósferas"} } + bar{ + dnam{"bares"} + one{"{0} bar"} + other{"{0} bares"} + } hectopascal{ dnam{"hectopascales"} one{"{0} hectopascal"} @@ -650,6 +703,11 @@ es{ one{"{0} milímetro de mercurio"} other{"{0} milímetros de mercurio"} } + pascal{ + dnam{"pascales"} + one{"{0} pascal"} + other{"{0} pascales"} + } pound-per-square-inch{ dnam{"libras por pulgada cuadrada"} one{"{0} libra por pulgada cuadrada"} @@ -781,14 +839,14 @@ es{ other{"{0} decilitros"} } fluid-ounce{ - dnam{"onzas fluidas"} - one{"{0} onza fluida"} - other{"{0} onzas fluidas"} + dnam{"onzas líquidas"} + one{"{0} onza líquida"} + other{"{0} onzas líquidas"} } fluid-ounce-imperial{ - dnam{"onzas fluidas imperiales"} - one{"{0} onza fluida imperial"} - other{"{0} onzas fluidas imperiales"} + dnam{"onzas líquidas imperiales"} + one{"{0} onza líquida imperial"} + other{"{0} onzas líquidas imperiales"} } gallon{ dnam{"galones"} @@ -899,6 +957,7 @@ es{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ percent{ @@ -929,57 +988,53 @@ es{ } day{ dnam{"d"} - one{"{0}d"} - other{"{0}d"} + per{"{0}/d"} } hour{ dnam{"h"} - one{"{0}h"} - other{"{0}h"} + per{"{0}/h"} } microsecond{ + dnam{"μs"} one{"{0}μs"} other{"{0}μs"} } millisecond{ dnam{"ms"} - one{"{0}ms"} - other{"{0}ms"} } minute{ dnam{"min"} - one{"{0}min"} - other{"{0}min"} + per{"{0}/min"} } month{ - dnam{"m"} - one{"{0}m"} - other{"{0}m"} + dnam{"m."} + one{"{0} m."} + other{"{0} m."} } nanosecond{ + dnam{"ns"} one{"{0}ns"} other{"{0}ns"} } second{ dnam{"s"} - one{"{0}s"} - other{"{0}s"} + per{"{0}/s"} } week{ - dnam{"sem"} - one{"{0}sem"} - other{"{0}sem"} + one{"{0} sem."} + other{"{0} sem."} per{"{0}/sem"} } year{ dnam{"a"} - one{"{0}a"} - other{"{0}a"} + one{"{0} a"} + other{"{0} a"} per{"{0}/a"} } } length{ astronomical-unit{ + dnam{"au"} one{"{0}au"} other{"{0}au"} } @@ -987,23 +1042,30 @@ es{ dnam{"cm"} one{"{0}cm"} other{"{0}cm"} + per{"{0}/cm"} } decimeter{ + dnam{"dm"} one{"{0}dm"} other{"{0}dm"} } foot{ + dnam{"ft"} one{"{0}ft"} other{"{0}ft"} + per{"{0}/ft"} } inch{ + dnam{"in"} one{"{0}in"} other{"{0}in"} + per{"{0}/in"} } kilometer{ dnam{"km"} one{"{0}km"} other{"{0}km"} + per{"{0}/km"} } light-year{ dnam{"a.l."} @@ -1012,14 +1074,15 @@ es{ } meter{ dnam{"m"} - one{"{0}m"} - other{"{0}m"} + per{"{0}/m"} } micrometer{ + dnam{"µm"} one{"{0}µm"} other{"{0}µm"} } mile{ + dnam{"mi"} one{"{0}mi"} other{"{0}mi"} } @@ -1034,18 +1097,22 @@ es{ other{"{0}mm"} } nanometer{ + dnam{"nm"} one{"{0}nm"} other{"{0}nm"} } parsec{ + dnam{"pc"} one{"{0}pc"} other{"{0}pc"} } picometer{ + dnam{"pm"} one{"{0}pm"} other{"{0}pm"} } yard{ + dnam{"yd"} one{"{0}yd"} other{"{0}yd"} } @@ -1055,21 +1122,28 @@ es{ dnam{"g"} one{"{0}g"} other{"{0}g"} + per{"{0}/g"} } kilogram{ dnam{"kg"} one{"{0}kg"} other{"{0}kg"} + per{"{0}/kg"} } ounce{ + dnam{"oz"} one{"{0}oz"} other{"{0}oz"} + per{"{0}/oz"} } pound{ + dnam{"lb"} one{"{0}lb"} other{"{0}lb"} + per{"{0}/lb"} } stone{ + dnam{"st"} one{"{0}st"} other{"{0}st"} } @@ -1090,14 +1164,17 @@ es{ } pressure{ hectopascal{ + dnam{"hPa"} one{"{0}hPa"} other{"{0}hPa"} } inch-hg{ + dnam{"inHg"} one{"{0}inHg"} other{"{0}inHg"} } millibar{ + dnam{"mbar"} one{"{0}mbar"} other{"{0}mbar"} } @@ -1107,6 +1184,7 @@ es{ other{"{0}mmHg"} } pound-per-square-inch{ + dnam{"psi"} one{"{0}psi"} other{"{0}psi"} } @@ -1118,10 +1196,12 @@ es{ other{"{0}km/h"} } meter-per-second{ + dnam{"m/s"} one{"{0}m/s"} other{"{0}m/s"} } mile-per-hour{ + dnam{"mi/h"} one{"{0}mi/h"} other{"{0}mi/h"} } @@ -1132,16 +1212,23 @@ es{ one{"{0}°C"} other{"{0}°C"} } + fahrenheit{ + dnam{"°F"} + one{"{0} °F"} + other{"{0} °F"} + } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ + dnam{"K"} one{"{0}K"} other{"{0}K"} } } volume{ - barrel{ - one{"{0} bbl"} - other{"{0} bbl"} - } cubic-kilometer{ one{"{0}km³"} other{"{0}km³"} @@ -1204,9 +1291,9 @@ es{ other{"{0} ac"} } dunam{ - dnam{"dunumes"} - one{"{0} dunum"} - other{"{0} dunumes"} + dnam{"dunams"} + one{"{0} dunam"} + other{"{0} dunams"} } hectare{ dnam{"ha"} @@ -1256,6 +1343,7 @@ es{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1274,7 +1362,6 @@ es{ other{"{0} mmol/L"} } mole{ - dnam{"mol"} one{"{0} moles"} other{"{0} moles"} } @@ -1387,9 +1474,9 @@ es{ } duration{ century{ - dnam{"sig."} - one{"{0} sig."} - other{"{0} sig."} + dnam{"s."} + one{"{0} s."} + other{"{0} s."} } day{ dnam{"d"} @@ -1397,6 +1484,11 @@ es{ other{"{0} d"} per{"{0}/d"} } + decade{ + dnam{"déc."} + one{"{0} déc."} + other{"{0} déc."} + } hour{ dnam{"horas"} one{"{0} h"} @@ -1484,8 +1576,6 @@ es{ } electronvolt{ dnam{"electronvoltio"} - one{"{0} eV"} - other{"{0} eV"} } foodcalorie{ dnam{"cal"} @@ -1512,17 +1602,18 @@ es{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"thm EE. UU."} + one{"{0} thm EE. UU."} + other{"{0} thm EE. UU."} + } } force{ newton{ dnam{"newton"} - one{"{0} N"} - other{"{0} N"} } pound-force{ dnam{"libra fuerza"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1547,6 +1638,43 @@ es{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + dot-per-inch{ + dnam{"ppp"} + one{"{0} ppp"} + other{"{0} ppp"} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"Mpx"} + one{"{0} Mpx"} + other{"{0} Mpx"} + } + pixel{ + dnam{"px"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"px/cm"} + one{"{0} px/cm"} + other{"{0} px/cm"} + } + pixel-per-inch{ + dnam{"px/in"} + one{"{0} px/in"} + other{"{0} px/in"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -1640,8 +1768,6 @@ es{ } solar-radius{ dnam{"radios solares"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"yd"} @@ -1657,8 +1783,6 @@ es{ } solar-luminosity{ dnam{"luminosidades solares"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ @@ -1669,13 +1793,9 @@ es{ } dalton{ dnam{"daltones"} - one{"{0} Da"} - other{"{0} Da"} } earth-mass{ dnam{"masas terrestres"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"g"} @@ -1723,8 +1843,6 @@ es{ } solar-mass{ dnam{"masas solares"} - one{"{0} M☉"} - other{"{0} M☉"} } ton{ dnam{"t"} @@ -1770,6 +1888,11 @@ es{ one{"{0} atm"} other{"{0} atm"} } + bar{ + dnam{"bar"} + one{"{0} bar"} + other{"{0} bar"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -1780,16 +1903,6 @@ es{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} one{"{0} mbar"} @@ -1800,6 +1913,11 @@ es{ one{"{0} mmHg"} other{"{0} mmHg"} } + pascal{ + dnam{"Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} diff --git a/source/data/unit/es_419.txt b/source/data/unit/es_419.txt index f030818..2631186 100644 --- a/source/data/unit/es_419.txt +++ b/source/data/unit/es_419.txt @@ -1,27 +1,12 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License es_419{ - Version{"2.1.47.86"} + Version{"36"} units{ - angle{ - revolution{ - dnam{"revolución"} - } - } concentr{ milligram-per-deciliter{ dnam{"mg/dL"} } - millimole-per-liter{ - dnam{"mmol/L"} - one{"{0} mmol/L"} - other{"{0} mmol/L"} - } - part-per-million{ - dnam{"ppm"} - one{"{0} ppm"} - other{"{0} ppm"} - } } electric{ ampere{ @@ -39,11 +24,6 @@ es_419{ one{"{0} ohm"} other{"{0} ohms"} } - volt{ - dnam{"volts"} - one{"{0} volt"} - other{"{0} volts"} - } } energy{ joule{ @@ -56,31 +36,10 @@ es_419{ one{"{0} kilojule"} other{"{0} kilojules"} } - kilowatt-hour{ - dnam{"kilowatts-hora"} - one{"{0} kilowatt-hora"} - other{"{0} kilowatts-hora"} - } } - frequency{ - gigahertz{ - one{"{0} gigahertz"} - other{"{0} gigahertz"} - } - hertz{ - dnam{"hertz"} - one{"{0} hertz"} - other{"{0} hertz"} - } - kilohertz{ - dnam{"kilohertz"} - one{"{0} kilohertz"} - other{"{0} kilohertz"} - } - megahertz{ - dnam{"megahertz"} - one{"{0} megahertz"} - other{"{0} megahertz"} + graphics{ + em{ + dnam{"em tipográfico"} } } length{ @@ -96,40 +55,16 @@ es_419{ } } power{ - gigawatt{ - dnam{"gigawatts"} - one{"{0} gigawatt"} - other{"{0} gigawatts"} - } horsepower{ dnam{"caballos de fuerza"} one{"caballo de fuerza"} other{"{0} caballos de fuerza"} } - kilowatt{ - dnam{"kilowatts"} - one{"{0} kilowatt"} - other{"{0} kilowatts"} - } - megawatt{ - dnam{"megawatts"} - one{"{0} megawatt"} - other{"{0} megawatts"} - } - milliwatt{ - dnam{"miliwatts"} - one{"{0} miliwatt"} - other{"{0} miliwatts"} - } - watt{ - dnam{"watts"} - one{"{0} watt"} - other{"{0} watts"} - } } temperature{ kelvin{ dnam{"kelvins"} + one{"{0} kelvin"} other{"{0} kelvins"} } } @@ -139,6 +74,11 @@ es_419{ one{"{0} acre pie"} other{"{0} acres pies"} } + fluid-ounce{ + dnam{"onzas fluidas"} + one{"{0} onza fluida"} + other{"{0} onzas fluidas"} + } } } unitsNarrow{ @@ -147,6 +87,7 @@ es_419{ dnam{"G"} } meter-per-second-squared{ + dnam{"m/s²"} one{"{0}m/s²"} other{"{0}m/s²"} } @@ -158,10 +99,18 @@ es_419{ other{"{0}dd."} per{"{0}/d."} } + hour{ + one{"{0}h"} + other{"{0}h"} + } + minute{ + one{"{0}min"} + other{"{0}min"} + } month{ - dnam{"m."} one{"{0}m."} other{"{0}mm."} + per{"{0}/m."} } week{ dnam{"sem."} @@ -200,10 +149,12 @@ es_419{ other{"{0}t"} } microgram{ + dnam{"µg"} one{"{0}µg"} other{"{0}µg"} } milligram{ + dnam{"mg"} one{"{0}mg"} other{"{0}mg"} } @@ -220,6 +171,7 @@ es_419{ } speed{ knot{ + dnam{"kn"} one{"{0}kn"} other{"{0}kn"} } @@ -243,13 +195,6 @@ es_419{ dnam{"grados"} } } - concentr{ - karat{ - dnam{"c"} - one{"{0} c"} - other{"{0} c"} - } - } consumption{ mile-per-gallon-imperial{ one{"{0} mpg imp."} @@ -265,10 +210,12 @@ es_419{ } month{ dnam{"mm."} + one{"{0} m."} other{"{0} mm."} } week{ dnam{"sems."} + one{"{0} sem."} other{"{0} sems."} } year{ @@ -278,11 +225,6 @@ es_419{ per{"{0}/a."} } } - electric{ - volt{ - dnam{"volts"} - } - } length{ astronomical-unit{ dnam{"ua"} @@ -340,9 +282,6 @@ es_419{ one{"{0} hp"} other{"{0} hp"} } - watt{ - dnam{"watts"} - } } volume{ gallon-imperial{ diff --git a/source/data/unit/es_AR.txt b/source/data/unit/es_AR.txt index 69a51d5..ff25ee8 100644 --- a/source/data/unit/es_AR.txt +++ b/source/data/unit/es_AR.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_AR{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} units{ duration{ year{ @@ -24,10 +24,6 @@ es_AR{ one{"{0} ohmio"} other{"{0} ohmios"} } - volt{ - one{"{0} voltio"} - other{"{0} voltios"} - } } energy{ joule{ @@ -78,15 +74,5 @@ es_AR{ per{"{0}/a"} } } - electric{ - volt{ - dnam{"voltios"} - } - } - power{ - watt{ - dnam{"vatios"} - } - } } } diff --git a/source/data/unit/es_BO.txt b/source/data/unit/es_BO.txt index 0f274c0..be577a9 100644 --- a/source/data/unit/es_BO.txt +++ b/source/data/unit/es_BO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_BO{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/es_BR.txt b/source/data/unit/es_BR.txt index f992acf..8a9f8fd 100644 --- a/source/data/unit/es_BR.txt +++ b/source/data/unit/es_BR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_BR{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/es_BZ.txt b/source/data/unit/es_BZ.txt index f18a98f..26aab70 100644 --- a/source/data/unit/es_BZ.txt +++ b/source/data/unit/es_BZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_BZ{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/es_CL.txt b/source/data/unit/es_CL.txt index 8cb9a37..e33d107 100644 --- a/source/data/unit/es_CL.txt +++ b/source/data/unit/es_CL.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_CL{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} durationUnits{ hms{"hh:mm:ss"} ms{"mm:ss"} @@ -23,22 +23,6 @@ es_CL{ one{"{0} ohmio"} other{"{0} ohmios"} } - volt{ - one{"{0} voltio"} - other{"{0} voltios"} - } - } - } - unitsShort{ - electric{ - volt{ - dnam{"voltios"} - } - } - power{ - watt{ - dnam{"vatios"} - } } } } diff --git a/source/data/unit/es_CO.txt b/source/data/unit/es_CO.txt index 4770895..c15c03c 100644 --- a/source/data/unit/es_CO.txt +++ b/source/data/unit/es_CO.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_CO{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} units{ duration{ month{ diff --git a/source/data/unit/es_CR.txt b/source/data/unit/es_CR.txt index 67ba646..667c48f 100644 --- a/source/data/unit/es_CR.txt +++ b/source/data/unit/es_CR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_CR{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/es_CU.txt b/source/data/unit/es_CU.txt index 2224182..63dcde8 100644 --- a/source/data/unit/es_CU.txt +++ b/source/data/unit/es_CU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_CU{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/es_DO.txt b/source/data/unit/es_DO.txt index c9b7242..cfc527f 100644 --- a/source/data/unit/es_DO.txt +++ b/source/data/unit/es_DO.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_DO{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} units{ electric{ ampere{ @@ -19,10 +19,6 @@ es_DO{ one{"{0} ohmio"} other{"{0} ohmios"} } - volt{ - one{"{0} voltio"} - other{"{0} voltios"} - } } } unitsNarrow{ @@ -48,15 +44,5 @@ es_DO{ other{"{0} seg."} } } - electric{ - volt{ - dnam{"voltios"} - } - } - power{ - watt{ - dnam{"vatios"} - } - } } } diff --git a/source/data/unit/es_EC.txt b/source/data/unit/es_EC.txt index 24ef9c9..3a33300 100644 --- a/source/data/unit/es_EC.txt +++ b/source/data/unit/es_EC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_EC{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/es_GT.txt b/source/data/unit/es_GT.txt index 8894c54..8c88d10 100644 --- a/source/data/unit/es_GT.txt +++ b/source/data/unit/es_GT.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_GT{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} units{ duration{ day{ @@ -30,10 +30,6 @@ es_GT{ one{"{0} ohmio"} other{"{0} ohmios"} } - volt{ - one{"{0} voltio"} - other{"{0} voltios"} - } } energy{ joule{ @@ -67,27 +63,11 @@ es_GT{ } } unitsShort{ - concentr{ - karat{ - one{"{0} ct"} - other{"{0} ct"} - } - } - electric{ - volt{ - dnam{"voltios"} - } - } length{ foot{ dnam{"pie"} } } - power{ - watt{ - dnam{"vatios"} - } - } volume{ acre-foot{ dnam{"acre pie"} diff --git a/source/data/unit/es_HN.txt b/source/data/unit/es_HN.txt index 47048c4..fcd3446 100644 --- a/source/data/unit/es_HN.txt +++ b/source/data/unit/es_HN.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_HN{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/es_MX.txt b/source/data/unit/es_MX.txt index 16c95af..543bb48 100644 --- a/source/data/unit/es_MX.txt +++ b/source/data/unit/es_MX.txt @@ -2,34 +2,18 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_MX{ %%Parent{"es_419"} - Version{"2.1.47.96"} + Version{"36"} units{ - angle{ - arc-minute{ - dnam{"arcominutos"} - one{"{0} minuto"} - other{"{0} minutos"} - } - arc-second{ - dnam{"arcosegundos"} - one{"{0} segundo"} - other{"{0} segundos"} - } - revolution{ - dnam{"revoluciones"} - } - } concentr{ milligram-per-deciliter{ one{"{0} mg/dL"} other{"{0} mg/dL"} } - } - consumption{ - mile-per-gallon-imperial{ - dnam{"mpg Imp."} - one{"{0} mpg Imp."} - other{"{0} mpg Imp."} + millimole-per-liter{ + dnam{"mmol/L"} + } + part-per-million{ + dnam{"ppm"} } } electric{ @@ -38,39 +22,14 @@ es_MX{ one{"{0} ohmio"} other{"{0} ohmios"} } - volt{ - dnam{"voltios"} - one{"{0} voltio"} - other{"{0} voltios"} - } } energy{ kilowatt-hour{ + dnam{"kilowatts-hora"} one{"kilowatt-hora"} other{"{0} kilowatts-hora"} } } - frequency{ - gigahertz{ - one{"{0} gigahercio"} - other{"{0} gigahercios"} - } - hertz{ - dnam{"hercios"} - one{"{0} hercio"} - other{"{0} hercios"} - } - kilohertz{ - dnam{"kilohercios"} - one{"{0} kilohercio"} - other{"{0} kilohercios"} - } - megahertz{ - dnam{"megahercios"} - one{"{0} megahercio"} - other{"{0} megahercios"} - } - } length{ micrometer{ dnam{"micrometros"} @@ -90,50 +49,16 @@ es_MX{ one{"{0} pársec"} other{"{0} pársecs"} } - point{ - dnam{"pt"} - one{"{0} pt"} - other{"{0} pt"} - } } light{ lux{ dnam{"lux"} } } - mass{ - microgram{ - other{"{0} microgramos"} - } - } power{ - gigawatt{ - dnam{"gigavatios"} - one{"{0} gigavatio"} - other{"{0} gigavatios"} - } horsepower{ one{"{0} caballo de fuerza"} - } - kilowatt{ - dnam{"kilovatios"} - one{"{0} kilovatio"} - other{"{0} kilovatios"} - } - megawatt{ - dnam{"megavatios"} - one{"{0} megavatio"} - other{"{0} megavatios"} - } - milliwatt{ - dnam{"milivatios"} - one{"{0} milivatio"} - other{"{0} milivatios"} - } - watt{ - dnam{"vatios"} - one{"{0} vatio"} - other{"{0} vatios"} + other{"{0} caballos de fuerza"} } } temperature{ @@ -158,12 +83,6 @@ es_MX{ one{"{0} onza líquida"} other{"{0} onzas líquidas"} } - gallon-imperial{ - dnam{"Imp. gal"} - one{"{0} gal Imp."} - other{"{0} gal Imp."} - per{"{0}/gal Imp."} - } } } unitsNarrow{ @@ -203,14 +122,8 @@ es_MX{ } } angle{ - arc-minute{ - one{"{0} min"} - other{"{0} min"} - } arc-second{ dnam{"arcseg"} - one{"{0} s"} - other{"{0} s"} } degree{ dnam{"º"} @@ -231,21 +144,8 @@ es_MX{ } consumption{ mile-per-gallon-imperial{ - dnam{"mpg Imp."} - one{"{0} mpg Imp."} - other{"{0} mpg Imp."} - } - } - digital{ - bit{ - dnam{"bit"} - one{"{0} bit"} - other{"{0} bit"} - } - byte{ - dnam{"byte"} - one{"{0} byte"} - other{"{0} byte"} + one{"{0} mi/gal imp."} + other{"{0} mi/gal imp."} } } duration{ @@ -327,11 +227,6 @@ es_MX{ dnam{"km/hora"} } } - temperature{ - celsius{ - one{"{0} °C"} - } - } torque{ newton-meter{ dnam{"N⋅m"} @@ -345,11 +240,6 @@ es_MX{ one{"{0} tza."} other{"{0} tzas."} } - gallon-imperial{ - dnam{"Imp. gal"} - one{"{0} gal Imp."} - other{"{0} gal Imp."} - } pint{ dnam{"pt"} } diff --git a/source/data/unit/es_NI.txt b/source/data/unit/es_NI.txt index b342ad0..20f7451 100644 --- a/source/data/unit/es_NI.txt +++ b/source/data/unit/es_NI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_NI{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/es_PA.txt b/source/data/unit/es_PA.txt index 369947f..2c84896 100644 --- a/source/data/unit/es_PA.txt +++ b/source/data/unit/es_PA.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_PA{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/es_PE.txt b/source/data/unit/es_PE.txt index 0fa9cc1..71e6943 100644 --- a/source/data/unit/es_PE.txt +++ b/source/data/unit/es_PE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_PE{ %%Parent{"es_419"} - Version{"2.1.47.83"} + Version{"36"} } diff --git a/source/data/unit/es_PR.txt b/source/data/unit/es_PR.txt index 01b85cf..197c809 100644 --- a/source/data/unit/es_PR.txt +++ b/source/data/unit/es_PR.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_PR{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} unitsNarrow{ temperature{ fahrenheit{ diff --git a/source/data/unit/es_PY.txt b/source/data/unit/es_PY.txt index b60e0f1..f5b6b3a 100644 --- a/source/data/unit/es_PY.txt +++ b/source/data/unit/es_PY.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_PY{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} units{ duration{ year{ @@ -24,10 +24,6 @@ es_PY{ one{"{0} ohmio"} other{"{0} ohmios"} } - volt{ - one{"{0} voltio"} - other{"{0} voltios"} - } } } unitsNarrow{ @@ -70,15 +66,5 @@ es_PY{ per{"{0}/año"} } } - electric{ - volt{ - dnam{"voltios"} - } - } - power{ - watt{ - dnam{"vatios"} - } - } } } diff --git a/source/data/unit/es_SV.txt b/source/data/unit/es_SV.txt index f17ba3c..c7ce42b 100644 --- a/source/data/unit/es_SV.txt +++ b/source/data/unit/es_SV.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_SV{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/es_US.txt b/source/data/unit/es_US.txt index aaff0a1..a096722 100644 --- a/source/data/unit/es_US.txt +++ b/source/data/unit/es_US.txt @@ -2,11 +2,18 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_US{ %%Parent{"es_419"} - Version{"2.1.47.86"} + Version{"36"} units{ angle{ - revolution{ - dnam{"revoluciones"} + arc-minute{ + dnam{"arcominutos"} + one{"{0} minuto"} + other{"{0} minutos"} + } + arc-second{ + dnam{"arcosegundos"} + one{"{0} segundo"} + other{"{0} segundos"} } } concentr{ @@ -14,6 +21,12 @@ es_US{ one{"{0} mg/dL"} other{"{0} mg/dL"} } + millimole-per-liter{ + dnam{"mmol/L"} + } + part-per-million{ + dnam{"ppm"} + } } consumption{ mile-per-gallon-imperial{ @@ -28,11 +41,6 @@ es_US{ one{"{0} ohmio"} other{"{0} ohmios"} } - volt{ - dnam{"voltios"} - one{"{0} voltio"} - other{"{0} voltios"} - } } energy{ kilowatt-hour{ @@ -41,82 +49,49 @@ es_US{ other{"{0} kilovatios hora"} } } - frequency{ - gigahertz{ - one{"{0} gigahercio"} - other{"{0} gigahercios"} - } - hertz{ - dnam{"hercios"} - one{"{0} hercio"} - other{"{0} hercios"} - } - kilohertz{ - dnam{"kilohercios"} - one{"{0} kilohercio"} - other{"{0} kilohercios"} - } - megahertz{ - dnam{"megahercios"} - one{"{0} megahercio"} - other{"{0} megahercios"} - } - } length{ mile-scandinavian{ dnam{"millas escandinavas"} } + nautical-mile{ + dnam{"millas naúticas"} + one{"{0} milla naútica"} + other{"{0} millas naúticas"} + } point{ dnam{"pt"} one{"{0} pt"} other{"{0} pt"} } } - mass{ - microgram{ - other{"{0} microgramos"} + light{ + lux{ + dnam{"lux"} } } power{ - gigawatt{ - dnam{"gigavatios"} - one{"{0} gigavatio"} - other{"{0} gigavatios"} - } horsepower{ one{"{0} caballo de vapor"} other{"{0} caballos de vapor"} } - kilowatt{ - dnam{"kilovatios"} - one{"{0} kilovatio"} - other{"{0} kilovatios"} - } - megawatt{ - dnam{"megavatios"} - one{"{0} megavatio"} - other{"{0} megavatios"} - } - milliwatt{ - dnam{"milivatios"} - one{"{0} milivatio"} - other{"{0} milivatios"} - } - watt{ - dnam{"vatios"} - one{"{0} vatio"} - other{"{0} vatios"} - } } temperature{ kelvin{ dnam{"kelvin"} + one{"kelvin"} other{"{0} kelvin"} } } volume{ acre-foot{ dnam{"acres-pies"} + one{"{0} acre-pie"} + other{"{0} acre-pies"} + } + fluid-ounce{ + dnam{"onzas líquidas"} + one{"{0} onza líquida"} + other{"{0} onzas líquidas"} } gallon-imperial{ dnam{"Imp. gal"} @@ -127,6 +102,28 @@ es_US{ } } unitsNarrow{ + duration{ + day{ + dnam{"días"} + one{"{0}d"} + other{"{0}d"} + } + month{ + dnam{"m"} + one{"{0}m"} + other{"{0}m"} + } + week{ + dnam{"sem"} + one{"{0}sem"} + other{"{0}sem"} + } + year{ + dnam{"a"} + one{"{0}a"} + other{"{0}a"} + } + } temperature{ fahrenheit{ one{"{0}°"} @@ -143,10 +140,27 @@ es_US{ } } angle{ + arc-minute{ + one{"{0} min"} + other{"{0} min"} + } + arc-second{ + dnam{"arcseg"} + one{"{0} s"} + other{"{0} s"} + } degree{ dnam{"grad."} } } + concentr{ + percent{ + dnam{"%"} + } + permille{ + dnam{"‰"} + } + } consumption{ mile-per-gallon-imperial{ dnam{"mpg Imp."} @@ -154,11 +168,33 @@ es_US{ other{"{0} mpg Imp."} } } + digital{ + bit{ + dnam{"bit"} + } + byte{ + dnam{"byte"} + } + } duration{ day{ + dnam{"días"} + one{"{0} día"} + other{"{0} días"} per{"{0}/d"} } + month{ + one{"{0} m"} + other{"{0} m"} + } + week{ + one{"{0} sem"} + other{"{0} sem"} + } year{ + dnam{"a"} + one{"{0} a"} + other{"{0} a"} per{"{0}/a"} } } @@ -169,13 +205,22 @@ es_US{ other{"{0} au"} } light-year{ + one{"{0} a. l."} other{"{0} a. l."} } + nautical-mile{ + dnam{"M"} + one{"{0} M"} + other{"{0} M"} + } point{ dnam{"pt"} one{"{0} pt"} other{"{0} pt"} } + yard{ + dnam{"yd"} + } } mass{ carat{ @@ -196,12 +241,12 @@ es_US{ other{"{0} CV"} } } - temperature{ - celsius{ - one{"{0} °C"} - } - } volume{ + cup{ + dnam{"tza."} + one{"{0} tza."} + other{"{0} tzas."} + } gallon-imperial{ dnam{"Imp. gal"} one{"{0} gal Imp."} diff --git a/source/data/unit/es_UY.txt b/source/data/unit/es_UY.txt index 4e6692c..7b0799c 100644 --- a/source/data/unit/es_UY.txt +++ b/source/data/unit/es_UY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_UY{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/es_VE.txt b/source/data/unit/es_VE.txt index 3eb69a1..cd902ec 100644 --- a/source/data/unit/es_VE.txt +++ b/source/data/unit/es_VE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_VE{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/unit/et.txt b/source/data/unit/et.txt index 0f531fd..598a90d 100644 --- a/source/data/unit/et.txt +++ b/source/data/unit/et.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License et{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -106,6 +106,7 @@ et{ } compound{ per{"{0} {1} kohta"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -247,6 +248,11 @@ et{ other{"{0} ööpäeva"} per{"{0} ööpäevas"} } + decade{ + dnam{"dekaadid"} + one{"{0} dekaad"} + other{"{0} dekaadi"} + } hour{ dnam{"tunnid"} one{"{0} tund"} @@ -362,6 +368,11 @@ et{ one{"{0} kilovatt-tund"} other{"{0} kilovatt-tundi"} } + therm-us{ + dnam{"USA termid"} + one{"{0} USA term"} + other{"{0} USA termi"} + } } force{ newton{ @@ -397,6 +408,43 @@ et{ other{"{0} megahertsi"} } } + graphics{ + dot-per-centimeter{ + dnam{"punkte sentimeetri kohta"} + one{"{0} punkt sentimeetri kohta"} + other{"{0} punkti sentimeetri kohta"} + } + dot-per-inch{ + dnam{"punkte tolli kohta"} + one{"{0} punkt tolli kohta"} + other{"{0} punkti tolli kohta"} + } + em{ + dnam{"tüpograafiline emm"} + one{"{0} emm"} + other{"{0} emmi"} + } + megapixel{ + dnam{"megapikslid"} + one{"{0} megapiksel"} + other{"{0} megapikslit"} + } + pixel{ + dnam{"pikslid"} + one{"{0} piksel"} + other{"{0} pikslit"} + } + pixel-per-centimeter{ + dnam{"piksleid sentimeetri kohta"} + one{"{0} piksel sentimeetri kohta"} + other{"{0} pikslit sentimeetri kohta"} + } + pixel-per-inch{ + dnam{"piksleid tolli kohta"} + one{"{0} piksel tolli kohta"} + other{"{0} pikslit tolli kohta"} + } + } length{ astronomical-unit{ dnam{"astronoomilised ühikud"} @@ -517,8 +565,6 @@ et{ } solar-luminosity{ dnam{"Päikese heledus"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ @@ -635,6 +681,11 @@ et{ one{"{0} atmosfäär"} other{"{0} atmosfääri"} } + bar{ + dnam{"baarid"} + one{"{0} baar"} + other{"{0} baari"} + } hectopascal{ dnam{"hektopaskalid"} one{"{0} hektopaskal"} @@ -665,6 +716,11 @@ et{ one{"{0} millimeeter elavhõbedasammast"} other{"{0} millimeetrit elavhõbedasammast"} } + pascal{ + dnam{"paskalid"} + one{"{0} paskal"} + other{"{0} paskalit"} + } pound-per-square-inch{ dnam{"naelad ruuttolli kohta"} one{"{0} nael ruuttolli kohta"} @@ -893,11 +949,28 @@ et{ one{"{0} aaker"} other{"{0} aakrit"} } + hectare{ + one{"{0} ha"} + other{"{0} ha"} + } + square-kilometer{ + one{"{0} km²"} + other{"{0} km²"} + } + square-meter{ + one{"{0} m²"} + other{"{0} m²"} + } } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ + karat{ + one{"{0} ct"} + other{"{0} ct"} + } percent{ dnam{"%"} one{"{0}%"} @@ -1238,6 +1311,7 @@ et{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1298,7 +1372,7 @@ et{ other{"{0} mpg"} } mile-per-gallon-imperial{ - dnam{"miil/gal imp."} + dnam{"miil / gal imp."} one{"{0} mpg imp."} other{"{0} mpg imp."} } @@ -1379,6 +1453,11 @@ et{ other{"{0} päeva"} per{"{0}/ööp"} } + decade{ + dnam{"dek"} + one{"{0} dek"} + other{"{0} dek"} + } hour{ dnam{"t"} one{"{0} t"} @@ -1494,6 +1573,11 @@ et{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"USA term"} + one{"{0} USA term"} + other{"{0} USA termi"} + } } force{ newton{ @@ -1529,6 +1613,40 @@ et{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"emm"} + one{"{0} emm"} + other{"{0} emmi"} + } + megapixel{ + dnam{"megapikslid"} + } + pixel{ + dnam{"pikslid"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + one{"{0} ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"aü"} @@ -1763,6 +1881,11 @@ et{ one{"{0} atm"} other{"{0} atm"} } + bar{ + dnam{"baar"} + one{"{0} baar"} + other{"{0} baari"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} diff --git a/source/data/unit/eu.txt b/source/data/unit/eu.txt index ca436ba..4d8a50a 100644 --- a/source/data/unit/eu.txt +++ b/source/data/unit/eu.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License eu{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -53,11 +53,6 @@ eu{ one{"{0} akre"} other{"{0} akre"} } - dunam{ - dnam{"dunam"} - one{"{0} dunam"} - other{"{0} dunam"} - } hectare{ dnam{"hektarea"} one{"{0} hektarea"} @@ -66,7 +61,7 @@ eu{ square-centimeter{ dnam{"cm²"} one{"{0} zentimetro karratu"} - other{"{0} cm²"} + other{"{0} zentimetro karratu"} per{"{0} zentimetro karratu bakoitzeko"} } square-foot{ @@ -123,28 +118,22 @@ eu{ one{"{0} milimole litro bakoitzeko"} other{"{0} milimole litro bakoitzeko"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"zati milioi bakoitzeko"} one{"{0} zati milioi bakoitzeko"} other{"{0} zati milioi bakoitzeko"} } percent{ - dnam{"%"} - one{"% {0}"} - other{"% {0}"} + dnam{"ehuneko"} + one{"ehuneko {0}"} + other{"ehuneko {0}"} } permille{ - dnam{"‰"} - one{"‰ {0}"} - other{"‰ {0}"} + dnam{"milako"} + one{"milako {0}"} + other{"milako {0}"} } permyriad{ - dnam{"‱"} one{"‱ {0}"} other{"‱ {0}"} } @@ -220,9 +209,9 @@ eu{ other{"{0} megabyte"} } petabyte{ - dnam{"PB"} - one{"{0} PB"} - other{"{0} PB"} + dnam{"petabyte"} + one{"{0} petabyte"} + other{"{0} petabyte"} } terabit{ dnam{"terabit-ak"} @@ -242,58 +231,63 @@ eu{ other{"{0} mende"} } day{ - dnam{"egun"} + dnam{"egunak"} one{"{0} egun"} other{"{0} egun"} per{"{0} egun bakoitzeko"} } + decade{ + dnam{"hamarkadak"} + one{"{0} hamarkada"} + other{"{0} hamarkada"} + } hour{ - dnam{"ordu"} + dnam{"orduak"} one{"{0} ordu"} other{"{0} ordu"} - per{"{0}/h"} + per{"{0} ordu bakoitzeko"} } microsecond{ - dnam{"mikrosegundo"} + dnam{"mikrosegundoak"} one{"{0} mikrosegundo"} other{"{0} mikrosegundo"} } millisecond{ - dnam{"milisegundo"} + dnam{"milisegundoak"} one{"{0} milisegundo"} other{"{0} milisegundo"} } minute{ - dnam{"minutu"} + dnam{"minutuak"} one{"{0} minutu"} other{"{0} minutu"} per{"{0} minutu bakoitzeko"} } month{ - dnam{"hilabete"} + dnam{"hilabeteak"} one{"{0} hilabete"} other{"{0} hilabete"} per{"{0} hilabete bakoitzeko"} } nanosecond{ - dnam{"nanosegundo"} + dnam{"nanosegundoak"} one{"{0} nanosegundo"} other{"{0} nanosegundo"} } second{ - dnam{"segundo"} + dnam{"segundoak"} one{"{0} segundo"} other{"{0} segundo"} - per{"{0}/s"} + per{"{0} segundo bakoitzeko"} } week{ - dnam{"aste"} + dnam{"asteak"} one{"{0} aste"} other{"{0} aste"} per{"{0} aste bakoitzeko"} } year{ - dnam{"urte"} + dnam{"urteak"} one{"{0} urte"} other{"{0} urte"} per{"{0} urte bakoitzeko"} @@ -322,21 +316,11 @@ eu{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"kaloriak"} one{"{0} kaloria"} other{"{0} kaloria"} } - electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} - } foodcalorie{ dnam{"kaloriak"} one{"{0} kaloria"} @@ -365,14 +349,14 @@ eu{ } force{ newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} + dnam{"newton"} + one{"{0} newton"} + other{"{0} newton"} } pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + dnam{"libra indar"} + one{"{0} libra indar"} + other{"{0} libra indar"} } } frequency{ @@ -397,6 +381,43 @@ eu{ other{"{0} megahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"puntu zentimetroko"} + one{"{0} puntu zentimetroko"} + other{"{0} puntu zentimetroko"} + } + dot-per-inch{ + dnam{"puntu hazbeteko"} + one{"{0} puntu hazbeteko"} + other{"{0} puntu hazbeteko"} + } + em{ + dnam{"em tipografikoa"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"megapixel"} + one{"{0} megapixel"} + other{"{0} megapixel"} + } + pixel{ + dnam{"pixel"} + one{"{0} pixel"} + other{"{0} pixel"} + } + pixel-per-centimeter{ + dnam{"pixel zentimetroko"} + one{"{0} pixel zentimetroko"} + other{"{0} pixel zentimetroko"} + } + pixel-per-inch{ + dnam{"pixel hazbeteko"} + one{"{0} pixel hazbeteko"} + other{"{0} pixel hazbeteko"} + } + } length{ astronomical-unit{ dnam{"unitate astronomiko"} @@ -489,9 +510,8 @@ eu{ other{"{0} puntu"} } solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} + one{"{0} eguzki-erradio"} + other{"{0} eguzki-erradio"} } yard{ dnam{"yarda"} @@ -506,9 +526,9 @@ eu{ other{"{0} lux"} } solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} + dnam{"eguzki-argitasun"} + one{"{0} eguzki-argitasun"} + other{"{0} eguzki-argitasun"} } } mass{ @@ -518,14 +538,12 @@ eu{ other{"{0} kilate"} } dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} + one{"{0} dalton"} + other{"{0} daltons"} } earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} + one{"{0} lur-masa"} + other{"{0} lur-masa"} } gram{ dnam{"gramoak"} @@ -572,9 +590,8 @@ eu{ per{"{0} libra bakoitzeko"} } solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} + one{"{0} eguzki-masa"} + other{"{0} eguzki-masa"} } ton{ dnam{"AEBko tonak"} @@ -616,9 +633,13 @@ eu{ } pressure{ atmosphere{ - dnam{"atm"} - one{"{0} atm"} - other{"{0} atm"} + dnam{"atmosfera"} + one{"{0} atmosfera"} + other{"{0} atmosfera"} + } + bar{ + one{"{0} bar"} + other{"{0} bar"} } hectopascal{ dnam{"hektopascalak"} @@ -631,12 +652,12 @@ eu{ other{"{0} merkurio-hazbete"} } kilopascal{ - dnam{"kilopascalak"} + dnam{"kilopascal"} one{"{0} kilopascal"} other{"{0} kilopascal"} } megapascal{ - dnam{"megapascalak"} + dnam{"megapascal"} one{"{0} megapascal"} other{"{0} megapascal"} } @@ -650,6 +671,10 @@ eu{ one{"{0} merkurio-milimetro"} other{"{0} merkurio-milimetro"} } + pascal{ + one{"{0} pascal"} + other{"{0} pascal"} + } pound-per-square-inch{ dnam{"libra hazbete karratuko"} one{"{0} libra hazbete karratuko"} @@ -664,8 +689,8 @@ eu{ } knot{ dnam{"knot"} - one{"{0} knot"} - other{"{0} knot"} + one{"{0} korapilo"} + other{"{0} korapilo"} } meter-per-second{ dnam{"metro segundoko"} @@ -702,14 +727,14 @@ eu{ } torque{ newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} + dnam{"newton-metro"} + one{"{0} newton-metro"} + other{"{0} newton-metro"} } pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} + dnam{"oin-libra"} + one{"{0} oin-libra"} + other{"{0} oin-libra"} } } volume{ @@ -719,9 +744,8 @@ eu{ other{"{0} akre-oin"} } barrel{ - dnam{"bbl"} - one{"{0} bbl"} - other{"{0} bbl"} + one{"{0} upel"} + other{"{0} upel"} } centiliter{ dnam{"zentilitro"} @@ -772,8 +796,8 @@ eu{ } cup-metric{ dnam{"katilu metrikoak"} - one{"{0} katilu metriko"} - other{"{0} katilu metriko"} + one{"{0} katilukada metriko"} + other{"{0} katilukada metriko"} } deciliter{ dnam{"dezilitro"} @@ -782,13 +806,12 @@ eu{ } fluid-ounce{ dnam{"ontza likido"} - one{"{0} ontza likido"} - other{"{0} ontza likido"} + one{"{0} likido-ontza"} + other{"{0} likido-ontza"} } fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} + one{"{0} likido-ontza inperial"} + other{"{0} likido-ontza inperial"} } gallon{ dnam{"galoi"} @@ -924,8 +947,8 @@ eu{ duration{ day{ dnam{"egun"} - one{"{0} egun"} - other{"{0} egun"} + one{"{0} e."} + other{"{0} e."} } hour{ dnam{"ordu"} @@ -933,7 +956,7 @@ eu{ other{"{0} h"} } millisecond{ - dnam{"mseg."} + dnam{"ms"} one{"{0} ms"} other{"{0} ms"} } @@ -944,11 +967,11 @@ eu{ } month{ dnam{"hilabete"} - one{"{0} hil."} - other{"{0} hil."} + one{"{0} hil"} + other{"{0} hil"} } second{ - dnam{"seg"} + dnam{"s"} one{"{0} s"} other{"{0} s"} } @@ -959,8 +982,8 @@ eu{ } year{ dnam{"urte"} - one{"{0} urte"} - other{"{0} urte"} + one{"{0} u."} + other{"{0} u."} } } length{ @@ -1142,13 +1165,8 @@ eu{ area{ acre{ dnam{"akre"} - one{"{0} ac"} - other{"{0} ac"} - } - dunam{ - dnam{"dunam"} - one{"{0} dunam"} - other{"{0} dunam"} + one{"{0} akre"} + other{"{0} akre"} } hectare{ dnam{"hektarea"} @@ -1185,7 +1203,7 @@ eu{ per{"{0}/m²"} } square-mile{ - dnam{"mi²"} + dnam{"milia karratu"} one{"{0} mi²"} other{"{0} mi²"} per{"{0}/mi²"} @@ -1215,11 +1233,6 @@ eu{ one{"{0} mmol/l"} other{"{0} mmol/l"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"zati/milioi"} one{"{0} ppm"} @@ -1236,7 +1249,6 @@ eu{ other{"‰ {0}"} } permyriad{ - dnam{"‱"} one{"‱ {0}"} other{"‱ {0}"} } @@ -1339,6 +1351,11 @@ eu{ other{"{0} egun"} per{"{0}/e."} } + decade{ + dnam{"hamarkada"} + one{"{0} hamarkada"} + other{"{0} hamarkada"} + } hour{ dnam{"ordu"} one{"{0} h"} @@ -1351,7 +1368,7 @@ eu{ other{"{0} μs"} } millisecond{ - dnam{"miliseg."} + dnam{"milisegundo"} one{"{0} ms"} other{"{0} ms"} } @@ -1365,7 +1382,7 @@ eu{ dnam{"hilabete"} one{"{0} hilabete"} other{"{0} hilabete"} - per{"{0}/hilabete"} + per{"{0}/hil"} } nanosecond{ dnam{"ns"} @@ -1373,7 +1390,7 @@ eu{ other{"{0} ns"} } second{ - dnam{"seg"} + dnam{"segundo"} one{"{0} s"} other{"{0} s"} per{"{0}/s"} @@ -1414,21 +1431,11 @@ eu{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"cal"} one{"{0} cal"} other{"{0} cal"} } - electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} - } foodcalorie{ dnam{"cal"} one{"{0} cal"} @@ -1451,20 +1458,16 @@ eu{ } kilowatt-hour{ dnam{"kWh"} - one{"{0} kW/h"} - other{"{0} kW/h"} + one{"{0} kWh"} + other{"{0} kWh"} } } force{ newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} + dnam{"newton"} } pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + dnam{"libra indar"} } } frequency{ @@ -1489,6 +1492,39 @@ eu{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"megapixel"} + } + pixel{ + dnam{"pixel"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + one{"{0} ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"ua"} @@ -1546,7 +1582,7 @@ eu{ other{"{0} mi"} } mile-scandinavian{ - dnam{"smi"} + dnam{"milia eskandinaviar"} one{"{0} smi"} other{"{0} smi"} } @@ -1576,14 +1612,12 @@ eu{ other{"{0} pm"} } point{ - dnam{"pt"} - one{"{0} pt"} - other{"{0} pt"} + dnam{"puntu"} + one{"{0} puntu"} + other{"{0} puntu"} } solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} + dnam{"eguzki-erradio"} } yard{ dnam{"yd"} @@ -1598,26 +1632,22 @@ eu{ other{"{0} lux"} } solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} + dnam{"eguzki-argitasun"} } } mass{ carat{ - dnam{"CD"} - one{"{0} CD"} - other{"{0} CD"} + dnam{"kilate"} + one{"{0} kilate"} + other{"{0} kilate"} } dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} + dnam{"dalton"} } earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} + dnam{"lur-masa"} + one{"{0} lur-masa"} + other{"{0} lur-masa"} } gram{ dnam{"g"} @@ -1647,15 +1677,15 @@ eu{ other{"{0} mg"} } ounce{ - dnam{"oz"} - one{"{0} oz"} - other{"{0} oz"} - per{"{0}/oz"} + dnam{"ontza"} + one{"{0} ontza"} + other{"{0} ontza"} + per{"{0}/ontza"} } ounce-troy{ - dnam{"oz t"} - one{"{0} oz t"} - other{"{0} oz t"} + dnam{"troy ontza"} + one{"{0} troy ontza"} + other{"{0} troy ontza"} } pound{ dnam{"lb"} @@ -1664,14 +1694,14 @@ eu{ per{"{0}/lb"} } solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} + dnam{"eguzki-masa"} + one{"{0} eguzki-masa"} + other{"{0} eguzki-masa"} } ton{ - dnam{"tn"} - one{"{0} tn"} - other{"{0} tn"} + dnam{"AEBko tona"} + one{"{0} AEBko tona"} + other{"{0} AEBko tona"} } } power{ @@ -1708,9 +1738,14 @@ eu{ } pressure{ atmosphere{ - dnam{"atm"} - one{"{0} atm"} - other{"{0} atm"} + dnam{"atmosfera"} + one{"{0} atmosfera"} + other{"{0} atmosfera"} + } + bar{ + dnam{"bar"} + one{"{0} bar"} + other{"{0} bar"} } hectopascal{ dnam{"hPa"} @@ -1742,6 +1777,11 @@ eu{ one{"{0} mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} @@ -1755,9 +1795,9 @@ eu{ other{"{0} km/h"} } knot{ - dnam{"kn"} - one{"{0} kn"} - other{"{0} kn"} + dnam{"korapilo"} + one{"{0} korapilo"} + other{"{0} korapilo"} } meter-per-second{ dnam{"metro segundoko"} @@ -1794,26 +1834,26 @@ eu{ } torque{ newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} + dnam{"newton-metro"} + one{"{0} Nm"} + other{"{0} Nm"} } pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} + dnam{"oin-libra"} + one{"{0} oin-libra"} + other{"{0} oin-libra"} } } volume{ acre-foot{ - dnam{"ac ft"} - one{"{0} ac ft"} - other{"{0} ac ft"} + dnam{"akre-oin"} + one{"{0} akre-oin"} + other{"{0} akre-oin"} } barrel{ - dnam{"bbl"} - one{"{0} bbl"} - other{"{0} bbl"} + dnam{"upel"} + one{"{0} upel"} + other{"{0} upel"} } centiliter{ dnam{"cl"} @@ -1858,14 +1898,14 @@ eu{ other{"{0} yd³"} } cup{ - dnam{"c"} - one{"{0} c"} - other{"{0} c"} + dnam{"katilukada"} + one{"{0} katilukada"} + other{"{0} katilukada"} } cup-metric{ - dnam{"mc"} - one{"{0} mc"} - other{"{0} mc"} + dnam{"katilukada metriko"} + one{"{0} katilukada metriko"} + other{"{0} katilukada metriko"} } deciliter{ dnam{"dl"} @@ -1873,19 +1913,19 @@ eu{ other{"{0} dl"} } fluid-ounce{ - dnam{"fl oz"} - one{"{0} fl oz"} - other{"{0} fl oz"} + dnam{"likido-ontza"} + one{"{0} likido-ontza"} + other{"{0} likido-ontza"} } fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} + dnam{"likido-ontza inperial"} + one{"{0} likido-ontza inperial"} + other{"{0} likido-ontza inperial"} } gallon{ - dnam{"gal"} - one{"{0} gal"} - other{"{0} gal"} + dnam{"galoi"} + one{"{0} galoi"} + other{"{0} galoi"} per{"{0}/galoi estatubatuar"} } gallon-imperial{ @@ -1916,29 +1956,29 @@ eu{ other{"{0} ml"} } pint{ - dnam{"pt"} - one{"{0} pt"} - other{"{0} pt"} + dnam{"pinta"} + one{"{0} pinta"} + other{"{0} pinta"} } pint-metric{ - dnam{"m/pt"} - one{"{0} m/pt"} - other{"{0} m/pt"} + dnam{"pinta metriko"} + one{"{0} pinta metriko"} + other{"{0} pinta metriko"} } quart{ - dnam{"qt"} - one{"{0} qt"} - other{"{0} qt"} + dnam{"galoi-laurden"} + one{"{0} galoi-laurden"} + other{"{0} galoi-laurden"} } tablespoon{ - dnam{"tbsp"} - one{"{0} tbsp"} - other{"{0} tbsp"} + dnam{"koilarakada"} + one{"{0} koilarakada"} + other{"{0} koilarakada"} } teaspoon{ - dnam{"tsp"} - one{"{0} tsp"} - other{"{0} tsp"} + dnam{"koilaratxokada"} + one{"{0} koilaratxokada"} + other{"{0} koilaratxokada"} } } } diff --git a/source/data/unit/ewo.txt b/source/data/unit/ewo.txt index da263ca..cec0865 100644 --- a/source/data/unit/ewo.txt +++ b/source/data/unit/ewo.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ewo{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/fa.txt b/source/data/unit/fa.txt index 3d14e4f..175a460 100644 --- a/source/data/unit/fa.txt +++ b/source/data/unit/fa.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fa{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -55,8 +55,6 @@ fa{ } dunam{ dnam{"دونوم"} - one{"{0} دونوم"} - other{"{0} دونوم"} } hectare{ dnam{"هکتار"} @@ -84,7 +82,7 @@ fa{ dnam{"کیلومتر مربع"} one{"{0} کیلومتر مربع"} other{"{0} کیلومتر مربع"} - per{"کیلومتر مربع در {0}"} + per{"{0} در کیلومتر مربع"} } square-meter{ dnam{"متر مربع"} @@ -247,6 +245,11 @@ fa{ other{"{0} روز"} per{"{0} در روز"} } + decade{ + dnam{"دهه"} + one{"{0} دهه"} + other{"{0} دهه"} + } hour{ dnam{"ساعت"} one{"{0} ساعت"} @@ -334,7 +337,7 @@ fa{ } electronvolt{ dnam{"الکترون ولت"} - one{"{0} الکترون ولت"} + one{"{0} الکترون‌ولت"} other{"{0} الکترون‌ولت"} } foodcalorie{ @@ -362,6 +365,11 @@ fa{ one{"{0} کیلووات‌ساعت"} other{"{0} کیلووات‌ساعت"} } + therm-us{ + dnam{"ترم آمریکایی"} + one{"{0} ترم آمریکایی"} + other{"{0} ترم آمریکایی"} + } } force{ newton{ @@ -397,6 +405,38 @@ fa{ other{"{0} مگاهرتز"} } } + graphics{ + dot-per-centimeter{ + dnam{"نقطه در سانتی‌متر"} + one{"{0} نقطه در سانتی‌متر"} + other{"{0} نقطه در سانتی‌متر"} + } + dot-per-inch{ + dnam{"نقطه در اینچ"} + one{"{0} نقطه در اینچ"} + other{"{0} نقطه در اینچ"} + } + megapixel{ + dnam{"مگاپیکسل"} + one{"{0} مگاپیکسل"} + other{"{0} مگاپیکسل"} + } + pixel{ + dnam{"پیکسل"} + one{"{0} پیکسل"} + other{"{0} پیکسل"} + } + pixel-per-centimeter{ + dnam{"پیکسل در سانتی‌متر"} + one{"{0} پیکسل در سانتی‌متر"} + other{"{0} پیکسل در سانتی‌متر"} + } + pixel-per-inch{ + dnam{"پیکسل در اینچ"} + one{"{0} پیکسل در اینچ"} + other{"{0} پیکسل در اینچ"} + } + } length{ astronomical-unit{ dnam{"واحد نجومی"} @@ -407,7 +447,7 @@ fa{ dnam{"سانتی‌متر"} one{"{0} سانتی‌متر"} other{"{0} سانتی‌متر"} - per{"{0}/سانتی‌متر"} + per{"{0} در سانتی‌متر"} } decimeter{ dnam{"دسی‌متر"} @@ -424,13 +464,13 @@ fa{ dnam{"اینچ"} one{"{0} اینچ"} other{"{0} اینچ"} - per{"{0}/اینچ"} + per{"{0} در اینچ"} } kilometer{ dnam{"کیلومتر"} one{"{0} کیلومتر"} other{"{0} کیلومتر"} - per{"{0}/کیلومتر"} + per{"{0} در کیلومتر"} } light-year{ dnam{"سال نوری"} @@ -441,7 +481,7 @@ fa{ dnam{"متر"} one{"{0} متر"} other{"{0} متر"} - per{"{0}/متر"} + per{"{0} در متر"} } micrometer{ dnam{"میکرومتر"} @@ -484,9 +524,9 @@ fa{ other{"{0} پیکومتر"} } point{ - dnam{"امتیاز"} - one{"{0} امتیاز"} - other{"{0} امتیاز"} + dnam{"پونت"} + one{"{0} پونت"} + other{"{0} پونت"} } solar-radius{ dnam{"شعاع خورشید"} @@ -620,6 +660,11 @@ fa{ one{"{0} اتمسفر"} other{"{0} اتمسفر"} } + bar{ + dnam{"بار"} + one{"{0} بار"} + other{"{0} بار"} + } hectopascal{ dnam{"هکتوپاسکال"} one{"{0} هکتوپاسکال"} @@ -650,6 +695,11 @@ fa{ one{"{0} میلی‌متر جیوه"} other{"{0} میلی‌متر جیوه"} } + pascal{ + dnam{"پاسکال"} + one{"{0} پاسکال"} + other{"{0} پاسکال"} + } pound-per-square-inch{ dnam{"پوند در اینچ مربع"} one{"{0} پوند در اینچ مربع"} @@ -689,6 +739,10 @@ fa{ one{"{0} درجهٔ فارنهایت"} other{"{0} درجهٔ فارنهایت"} } + generic{ + one{"{0}°"} + other{"{0}°"} + } kelvin{ dnam{"درجهٔ کلوین"} one{"{0} درجهٔ کلوین"} @@ -905,6 +959,9 @@ fa{ other{"{0} یارد مربع"} } } + compound{ + per{"{0}/{1}"} + } concentr{ percent{ dnam{"٪"} @@ -1202,9 +1259,18 @@ fa{ temperature{ celsius{ dnam{"‎°C"} + one{"{0}°C"} + other{"{0}°C"} } fahrenheit{ dnam{"‎°F"} + one{"{0}°F"} + other{"{0}°F"} + } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} } kelvin{ one{"{0}K"} @@ -1304,6 +1370,7 @@ fa{ dnam{"کیلومتر مربع"} one{"{0}‎ km²"} other{"{0}‎ km²"} + per{"{0}/km²"} } square-meter{ dnam{"متر مربع"} @@ -1315,6 +1382,7 @@ fa{ dnam{"مایل مربع"} one{"{0} مایل مربع"} other{"{0} مایل مربع"} + per{"{0}/mi²"} } square-yard{ dnam{"یارد مربع"} @@ -1322,6 +1390,10 @@ fa{ other{"{0} یارد مربع"} } } + compound{ + per{"{0}/{1}"} + times{"{0}⋅{1}"} + } concentr{ karat{ dnam{"عیار"} @@ -1330,9 +1402,13 @@ fa{ } milligram-per-deciliter{ dnam{"میلی‌گرم در دسی‌لیتر"} + one{"{0} mg/dL"} + other{"{0} mg/dL"} } millimole-per-liter{ dnam{"میلی‌مول/لیتر"} + one{"{0} mmol/L"} + other{"{0} mmol/L"} } mole{ dnam{"مول"} @@ -1341,6 +1417,8 @@ fa{ } part-per-million{ dnam{"بخش/میلیون"} + one{"{0} ppm"} + other{"{0} ppm"} } percent{ dnam{"درصد"} @@ -1349,6 +1427,8 @@ fa{ } permille{ dnam{"هزارم"} + one{"{0}‰"} + other{"{0}‰"} } permyriad{ dnam{"ده‌هزارم"} @@ -1374,6 +1454,8 @@ fa{ } mile-per-gallon-imperial{ dnam{"مایل/امپریال گالن"} + one{"{0} mpg Imp."} + other{"{0} mpg Imp."} } } coordinate{ @@ -1452,6 +1534,11 @@ fa{ other{"{0} روز"} per{"{0}/روز"} } + decade{ + dnam{"دهه"} + one{"{0} دهه"} + other{"{0} دهه"} + } hour{ dnam{"ساعت"} one{"{0} ساعت"} @@ -1564,8 +1651,13 @@ fa{ } kilowatt-hour{ dnam{"ک.وات‌ساعت"} - one{"{0} ک.وات‌ساعت"} - other{"{0} ک.وات‌ساعت"} + one{"{0} ک.و.ساعت"} + other{"{0} ک.و.ساعت"} + } + therm-us{ + dnam{"ترم آمریکایی"} + one{"{0} ترم آمریکایی"} + other{"{0} ترم آمریکایی"} } } force{ @@ -1602,6 +1694,11 @@ fa{ other{"{0} مگاهرتز"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + } + } length{ astronomical-unit{ dnam{"واحد نجومی"} @@ -1635,7 +1732,7 @@ fa{ dnam{"کیلومتر"} one{"{0} کیلومتر"} other{"{0} کیلومتر"} - per{"{0}/کیلومتر"} + per{"{0} در کیلومتر"} } light-year{ dnam{"سال نوری"} @@ -1646,7 +1743,7 @@ fa{ dnam{"متر"} one{"{0} متر"} other{"{0} متر"} - per{"{0}/متر"} + per{"{0} در متر"} } micrometer{ dnam{"میکرومتر"} @@ -1689,7 +1786,7 @@ fa{ other{"{0} پیکومتر"} } point{ - dnam{"امتیاز"} + dnam{"پونت"} one{"{0} امتیاز"} other{"{0} امتیاز"} } @@ -1822,6 +1919,13 @@ fa{ pressure{ atmosphere{ dnam{"اتمسفر"} + one{"{0} atm"} + other{"{0} atm"} + } + bar{ + dnam{"بار"} + one{"{0} بار"} + other{"{0} بار"} } hectopascal{ dnam{"هکتوپاسکال"} @@ -1884,9 +1988,17 @@ fa{ temperature{ celsius{ dnam{"درجهٔ سلسیوس"} + one{"{0}°C"} + other{"{0}°C"} } fahrenheit{ dnam{"درجهٔ فارنهایت"} + one{"{0}°F"} + other{"{0}°F"} + } + generic{ + one{"{0}°"} + other{"{0}°"} } kelvin{ dnam{"درجهٔ کلوین"} diff --git a/source/data/unit/ff.txt b/source/data/unit/ff.txt index 7520648..781d55d 100644 --- a/source/data/unit/ff.txt +++ b/source/data/unit/ff.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/ff_Latn.txt b/source/data/unit/ff_Latn.txt index b0c2bc1..055ec0f 100644 --- a/source/data/unit/ff_Latn.txt +++ b/source/data/unit/ff_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/fi.txt b/source/data/unit/fi.txt index 08086fd..e9d922e 100644 --- a/source/data/unit/fi.txt +++ b/source/data/unit/fi.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fi{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h.mm"} hms{"h.mm.ss"} @@ -635,6 +635,11 @@ fi{ one{"{0} normaali-ilmakehä"} other{"{0} normaali-ilmakehää"} } + bar{ + dnam{"baarit"} + one{"{0} baari"} + other{"{0} baaria"} + } hectopascal{ dnam{"hehtopascalit"} one{"{0} hehtopascal"} @@ -665,6 +670,11 @@ fi{ one{"{0} millimetri elohopeaa"} other{"{0} millimetriä elohopeaa"} } + pascal{ + dnam{"pascalit"} + one{"{0} pascal"} + other{"{0} pascalia"} + } pound-per-square-inch{ dnam{"paunat / neliötuuma"} one{"{0} pauna / neliötuuma"} @@ -916,6 +926,10 @@ fi{ one{"{0}ac"} other{"{0}ac"} } + dunam{ + one{"{0}dunam"} + other{"{0}dunam"} + } hectare{ dnam{"ha"} one{"{0}ha"} @@ -981,6 +995,11 @@ fi{ one{"{0}mmol/l"} other{"{0}mmol/l"} } + mole{ + dnam{"mol"} + one{"{0}mol"} + other{"{0}mol"} + } part-per-million{ dnam{"ppm"} one{"{0}ppm"} @@ -990,6 +1009,15 @@ fi{ one{"{0} %"} other{"{0} %"} } + permille{ + one{"{0}‰"} + other{"{0}‰"} + } + permyriad{ + dnam{"‱"} + one{"{0}‱"} + other{"{0}‱"} + } } consumption{ liter-per-100kilometers{ @@ -1096,6 +1124,7 @@ fi{ per{"{0}/t"} } microsecond{ + dnam{"μs"} one{"{0}μs"} other{"{0}μs"} } @@ -1108,6 +1137,7 @@ fi{ dnam{"min"} one{"{0}min"} other{"{0}min"} + per{"{0}/min"} } month{ dnam{"kk"} @@ -1116,6 +1146,7 @@ fi{ per{"{0}/kk"} } nanosecond{ + dnam{"ns"} one{"{0}ns"} other{"{0}ns"} } @@ -1123,6 +1154,7 @@ fi{ dnam{"s"} one{"{0}s"} other{"{0}s"} + per{"{0}/s"} } week{ dnam{"vk"} @@ -1160,11 +1192,20 @@ fi{ } } energy{ + british-thermal-unit{ + one{"{0}Btu"} + other{"{0}Btu"} + } calorie{ dnam{"cal"} one{"{0}cal"} other{"{0}cal"} } + electronvolt{ + dnam{"eV"} + one{"{0}eV"} + other{"{0}eV"} + } foodcalorie{ dnam{"kcal"} one{"{0}kcal"} @@ -1191,6 +1232,18 @@ fi{ other{"{0}kWh"} } } + force{ + newton{ + dnam{"N"} + one{"{0}N"} + other{"{0}N"} + } + pound-force{ + dnam{"lbf"} + one{"{0}lbf"} + other{"{0}lbf"} + } + } frequency{ gigahertz{ dnam{"GHz"} @@ -1213,6 +1266,36 @@ fi{ other{"{0}MHz"} } } + graphics{ + dot-per-centimeter{ + one{"{0}dpcm"} + other{"{0}dpcm"} + } + dot-per-inch{ + one{"{0}dpi"} + other{"{0}dpi"} + } + em{ + one{"{0}em"} + other{"{0}em"} + } + megapixel{ + one{"{0}MP"} + other{"{0}MP"} + } + pixel{ + one{"{0}px"} + other{"{0}px"} + } + pixel-per-centimeter{ + one{"{0}ppcm"} + other{"{0}ppcm"} + } + pixel-per-inch{ + one{"{0}ppi"} + other{"{0}ppi"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -1309,6 +1392,15 @@ fi{ one{"{0}pm"} other{"{0}pm"} } + point{ + one{"{0}pt"} + other{"{0}pt"} + } + solar-radius{ + dnam{"R☉"} + one{"{0}R☉"} + other{"{0}R☉"} + } yard{ dnam{"yd"} one{"{0}yd"} @@ -1321,6 +1413,11 @@ fi{ one{"{0}lx"} other{"{0}lx"} } + solar-luminosity{ + dnam{"L☉"} + one{"{0}L☉"} + other{"{0}L☉"} + } } mass{ carat{ @@ -1328,6 +1425,16 @@ fi{ one{"{0}ka"} other{"{0}ka"} } + dalton{ + dnam{"Da"} + one{"{0}Da"} + other{"{0}Da"} + } + earth-mass{ + dnam{"M⊕"} + one{"{0}M⊕"} + other{"{0}M⊕"} + } gram{ dnam{"g"} one{"{0}g"} @@ -1372,6 +1479,11 @@ fi{ other{"{0}lb"} per{"{0}/lb"} } + solar-mass{ + dnam{"M☉"} + one{"{0}M☉"} + other{"{0}M☉"} + } stone{ dnam{"st"} one{"{0}st"} @@ -1402,7 +1514,7 @@ fi{ megawatt{ dnam{"MW"} one{"{0}MW"} - other{"{0} MW"} + other{"{0}MW"} } milliwatt{ dnam{"mW"} @@ -1416,6 +1528,15 @@ fi{ } } pressure{ + atmosphere{ + one{"{0}atm"} + other{"{0}atm"} + } + bar{ + dnam{"bar"} + one{"{0}bar"} + other{"{0}bar"} + } hectopascal{ dnam{"hPa"} one{"{0}hPa"} @@ -1426,6 +1547,14 @@ fi{ one{"{0}″ Hg"} other{"{0}″ Hg"} } + kilopascal{ + one{"{0}kPa"} + other{"{0}kPa"} + } + megapascal{ + one{"{0}MPa"} + other{"{0}MPa"} + } millibar{ dnam{"mbar"} one{"{0}mbar"} @@ -1436,6 +1565,10 @@ fi{ one{"{0}mmHg"} other{"{0}mmHg"} } + pascal{ + one{"{0}Pa"} + other{"{0}Pa"} + } pound-per-square-inch{ dnam{"psi"} one{"{0}psi"} @@ -1492,6 +1625,11 @@ fi{ one{"{0}ac ft"} other{"{0}ac ft"} } + barrel{ + dnam{"bbl"} + one{"{0}bbl"} + other{"{0}bbl"} + } bushel{ dnam{"bu"} one{"{0}bu"} @@ -1524,6 +1662,7 @@ fi{ other{"{0}km³"} } cubic-meter{ + dnam{"m³"} one{"{0}m³"} other{"{0}m³"} per{"{0}/m³"} @@ -1558,6 +1697,9 @@ fi{ one{"{0}fl oz"} other{"{0}fl oz"} } + fluid-ounce-imperial{ + dnam{"Imp. fl oz"} + } gallon{ dnam{"am.gal"} one{"{0}am.gal"} @@ -1975,8 +2117,6 @@ fi{ force{ newton{ dnam{"newton"} - one{"{0} N"} - other{"{0} N"} } pound-force{ dnam{"pauna-voima"} @@ -2025,7 +2165,7 @@ fi{ } fathom{ dnam{"fm"} - one{"{0} fth"} + one{"{0} fm"} other{"{0} fth"} } foot{ @@ -2109,8 +2249,6 @@ fi{ } solar-radius{ dnam{"auringon säteet"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"yd"} @@ -2138,13 +2276,9 @@ fi{ } dalton{ dnam{"atomimassayksiköt"} - one{"{0} Da"} - other{"{0} Da"} } earth-mass{ dnam{"Maan massat"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"g"} @@ -2249,16 +2383,6 @@ fi{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} one{"{0} mbar"} @@ -2339,8 +2463,6 @@ fi{ } barrel{ dnam{"barrelit"} - one{"{0} bbl"} - other{"{0} bbl"} } bushel{ dnam{"bu"} @@ -2411,8 +2533,6 @@ fi{ } fluid-ounce-imperial{ dnam{"imp. nesteunssi"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} } gallon{ dnam{"am. gal"} diff --git a/source/data/unit/fil.txt b/source/data/unit/fil.txt index db6d20c..2bfd05e 100644 --- a/source/data/unit/fil.txt +++ b/source/data/unit/fil.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fil{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -53,11 +53,6 @@ fil{ one{"{0} acre"} other{"{0} acres"} } - dunam{ - dnam{"dunam"} - one{"{0} dunam"} - other{"{0} dunam"} - } hectare{ dnam{"hektarya"} one{"{0} hektarya"} @@ -84,6 +79,7 @@ fil{ dnam{"kilometro kwadrado"} one{"{0} kilometro kwadrado"} other{"{0} na kilometro kwadrado"} + per{"{0}/km²"} } square-meter{ dnam{"metro kwadrado"} @@ -95,6 +91,7 @@ fil{ dnam{"milya kwadrado"} one{"{0} milya kwadrado"} other{"{0} na milya kwadrado"} + per{"{0}/mi²"} } square-yard{ dnam{"yardang parisukat"} @@ -112,10 +109,12 @@ fil{ other{"{0} na karat"} } milligram-per-deciliter{ + dnam{"mg/dL"} one{"{0} milligram per deciliter"} other{"{0} milligrams per deciliter"} } millimole-per-liter{ + dnam{"mmol/L"} one{"{0} millimole per liter"} other{"{0} millimoles per liter"} } @@ -243,6 +242,10 @@ fil{ other{"{0} na araw"} per{"{0} kada araw"} } + decade{ + one{"{0} dekada"} + other{"{0} dekada"} + } hour{ dnam{"mga oras"} one{"{0} oras"} @@ -393,6 +396,38 @@ fil{ other{"{0} megahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"tuldok bawat sentimetro"} + one{"{0} tuldok bawat sentimetro"} + other{"{0} tuldok bawat sentimetro"} + } + dot-per-inch{ + dnam{"tuldok bawat pulgada"} + one{"{0} tuldok bawat pulgada"} + other{"{0} tuldok bawat pulgada"} + } + em{ + dnam{"tipograpikang em"} + } + megapixel{ + dnam{"megapixels"} + one{"{0} megapixel"} + other{"{0} megapixels"} + } + pixel{ + one{"{0} pixel"} + other{"{0} pixel"} + } + pixel-per-centimeter{ + one{"{0} pixel bawat sentimetro"} + other{"{0} pixel bawat sentimetro"} + } + pixel-per-inch{ + one{"{0} pixel bawat pulgada"} + other{"{0} pixel bawat pulgada"} + } + } length{ astronomical-unit{ dnam{"astronomical units"} @@ -661,6 +696,10 @@ fil{ one{"{0} millimetro ng mercury"} other{"{0} na milimetro ng asoge"} } + pascal{ + one{"{0} pascal"} + other{"{0} pascals"} + } pound-per-square-inch{ dnam{"libra kada pulgadang parisukat"} one{"{0} libra kada pulgadang parisukat"} @@ -807,6 +846,9 @@ fil{ other{"{0} na galon"} per{"{0} kada galon"} } + gallon-imperial{ + dnam{"Imp. gal"} + } hectoliter{ dnam{"hektolitro"} one{"{0} hektolitro"} @@ -858,6 +900,7 @@ fil{ unitsNarrow{ acceleration{ g-force{ + dnam{"g-force"} one{"{0}G"} other{"{0}G"} } @@ -893,6 +936,10 @@ fil{ one{"{0}km²"} other{"{0}km²"} } + square-meter{ + one{"{0} m²"} + other{"{0} m²"} + } square-mile{ one{"{0}mi²"} other{"{0}mi²"} @@ -935,6 +982,8 @@ fil{ } microsecond{ dnam{"μseg"} + one{"{0} μs"} + other{"{0} μs"} } millisecond{ dnam{"mseg"} @@ -945,6 +994,7 @@ fil{ dnam{"min."} one{"{0}m"} other{"{0}m"} + per{"{0}/min"} } month{ dnam{"buwan"} @@ -953,11 +1003,14 @@ fil{ } nanosecond{ dnam{"nanoseg"} + one{"{0} ns"} + other{"{0} ns"} } second{ dnam{"seg."} one{"{0}s"} other{"{0}s"} + per{"{0}/s"} } week{ dnam{"linggo"} @@ -974,6 +1027,7 @@ fil{ } length{ astronomical-unit{ + dnam{"au"} one{"{0}au"} other{"{0}au"} } @@ -981,6 +1035,12 @@ fil{ dnam{"cm"} one{"{0}cm"} other{"{0}cm"} + per{"{0}/cm"} + } + decimeter{ + dnam{"dm"} + one{"{0} dm"} + other{"{0} dm"} } fathom{ dnam{"fathom"} @@ -990,6 +1050,7 @@ fil{ foot{ one{"{0}′"} other{"{0}′"} + per{"{0}/ft"} } furlong{ dnam{"furlong"} @@ -999,11 +1060,13 @@ fil{ inch{ one{"{0}″"} other{"{0}″"} + per{"{0}/in"} } kilometer{ dnam{"km"} one{"{0}km"} other{"{0}km"} + per{"{0}/km"} } light-year{ one{"{0}ly"} @@ -1013,15 +1076,19 @@ fil{ dnam{"metro"} one{"{0}m"} other{"{0}m"} + per{"{0}/m"} } micrometer{ dnam{"µmetro"} + one{"{0} µm"} + other{"{0} µm"} } mile{ one{"{0}mi"} other{"{0}mi"} } mile-scandinavian{ + dnam{"smi"} one{"{0}smi"} other{"{0}smi"} } @@ -1030,7 +1097,13 @@ fil{ one{"{0}mm"} other{"{0}mm"} } + nanometer{ + dnam{"nm"} + one{"{0} nm"} + other{"{0} nm"} + } nautical-mile{ + dnam{"nmi"} one{"{0}nmi"} other{"{0}nmi"} } @@ -1040,6 +1113,7 @@ fil{ other{"{0}pc"} } picometer{ + dnam{"pm"} one{"{0}pm"} other{"{0}pm"} } @@ -1063,27 +1137,34 @@ fil{ dnam{"gramo"} one{"{0}g"} other{"{0}g"} + per{"{0}/g"} } kilogram{ dnam{"kg"} one{"{0}kg"} other{"{0}kg"} + per{"{0}/kg"} } metric-ton{ + dnam{"t"} one{"{0}t"} other{"{0}t"} } microgram{ + dnam{"µg"} one{"{0}µg"} other{"{0}µg"} } milligram{ + dnam{"mg"} one{"{0}mg"} other{"{0}mg"} } ounce{ + dnam{"oz"} one{"{0}oz"} other{"{0}oz"} + per{"{0}/oz"} } ounce-troy{ one{"{0}oz t"} @@ -1092,6 +1173,7 @@ fil{ pound{ one{"{0}#"} other{"{0}#"} + per{"{0}/lb"} } stone{ dnam{"stone"} @@ -1120,6 +1202,7 @@ fil{ } pressure{ hectopascal{ + dnam{"hPa"} one{"{0}hPa"} other{"{0}hPa"} } @@ -1129,6 +1212,7 @@ fil{ other{"{0}\u0022 Hg"} } millibar{ + dnam{"mbar"} one{"{0}mb"} other{"{0}mb"} } @@ -1138,6 +1222,7 @@ fil{ other{"{0}mmHg"} } pound-per-square-inch{ + dnam{"psi"} one{"{0}psi"} other{"{0}psi"} } @@ -1149,6 +1234,7 @@ fil{ other{"{0}kph"} } knot{ + dnam{"kn"} one{"{0}kn"} other{"{0}kn"} } @@ -1169,6 +1255,15 @@ fil{ one{"{0}°C"} other{"{0}°C"} } + fahrenheit{ + one{"{0}°F"} + other{"{0}°F"} + } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ one{"{0}K"} other{"{0}K"} @@ -1236,17 +1331,15 @@ fil{ one{"{0} ac"} other{"{0} ac"} } - dunam{ - dnam{"dunam"} - one{"{0} dunam"} - other{"{0} dunam"} - } hectare{ dnam{"hektarya"} one{"{0} ha"} other{"{0} ha"} } square-centimeter{ + dnam{"cm²"} + one{"{0} cm²"} + other{"{0} cm²"} per{"{0} kada cm²"} } square-foot{ @@ -1256,11 +1349,15 @@ fil{ } square-inch{ dnam{"pulgada²"} + one{"{0} in²"} + other{"{0} in²"} per{"{0} kada in²"} } square-kilometer{ + dnam{"km²"} one{"{0} km²"} other{"{0} km²"} + per{"{0}/km²"} } square-meter{ dnam{"metro²"} @@ -1272,25 +1369,41 @@ fil{ dnam{"sq mile"} one{"{0} sq mi"} other{"{0} sq mi"} + per{"{0}/mi²"} } square-yard{ dnam{"yarda²"} + one{"{0} yd²"} + other{"{0} yd²"} } } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ dnam{"karat"} + one{"{0} kt"} + other{"{0} kt"} + } + milligram-per-deciliter{ + dnam{"mg/dL"} + one{"{0} mg/dL"} + other{"{0} mg/dL"} + } + millimole-per-liter{ + dnam{"mmol/L"} + one{"{0} mmol/L"} + other{"{0} mmol/L"} } mole{ dnam{"mole"} - one{"{0} mol"} - other{"{0} mol"} } part-per-million{ dnam{"parts/million"} + one{"{0} ppm"} + other{"{0} ppm"} } percent{ dnam{"%"} @@ -1324,6 +1437,10 @@ fil{ one{"{0} mpg"} other{"{0} na mpg"} } + mile-per-gallon-imperial{ + one{"{0} mpg Imp."} + other{"{0} mpg Imp."} + } } coordinate{ dnam{"direction"} @@ -1516,6 +1633,11 @@ fil{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"US therm"} + one{"{0} US therm"} + other{"{0} US therm"} + } } force{ newton{ @@ -1581,6 +1703,8 @@ fil{ } furlong{ dnam{"furlongs"} + one{"{0} fur"} + other{"{0} fur"} } inch{ dnam{"pulgada"} @@ -1647,11 +1771,11 @@ fil{ } point{ dnam{"puntos"} + one{"{0} pt"} + other{"{0} pt"} } solar-radius{ dnam{"solar radii"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"yarda"} @@ -1738,6 +1862,8 @@ fil{ } stone{ dnam{"stones"} + one{"{0} st"} + other{"{0} st"} } ton{ dnam{"tonelada"} @@ -1883,8 +2009,6 @@ fil{ } barrel{ dnam{"bariles"} - one{"{0} bbl"} - other{"{0} bbl"} } centiliter{ dnam{"cL"} @@ -1948,17 +2072,18 @@ fil{ one{"{0} fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} one{"{0} gal"} other{"{0} na gal"} per{"{0}/gal"} } + gallon-imperial{ + dnam{"Imp. gal"} + one{"{0} gal Imp."} + other{"{0} gal Imp."} + per{"{0}/gal Imp."} + } hectoliter{ dnam{"hL"} one{"{0} hL"} diff --git a/source/data/unit/fo.txt b/source/data/unit/fo.txt index 6b5daf7..f6a2148 100644 --- a/source/data/unit/fo.txt +++ b/source/data/unit/fo.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fo{ - Version{"2.1.48.9"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -123,6 +123,21 @@ fo{ one{"{0} partur fyri hvørja millión"} other{"{0} partar fyri hvørja millión"} } + percent{ + dnam{"prosent"} + one{"{0} prosent"} + other{"{0} prosent"} + } + permille{ + dnam{"promillur"} + one{"{0} promilla"} + other{"{0} promillur"} + } + permyriad{ + dnam{"promyriad"} + one{"{0} promyriad"} + other{"{0} promyriad"} + } } consumption{ liter-per-100kilometers{ @@ -147,6 +162,7 @@ fo{ } } coordinate{ + dnam{"ætt"} east{"{0} eystur"} north{"{0} norður"} south{"{0} suður"} @@ -193,6 +209,11 @@ fo{ one{"{0} megabýt"} other{"{0} megabýt"} } + petabyte{ + dnam{"petabýt"} + one{"{0} petabýt"} + other{"{0} petabýt"} + } terabit{ dnam{"terabit"} one{"{0} terabit"} @@ -216,6 +237,11 @@ fo{ other{"{0} dagar"} per{"{0} um dagin"} } + decade{ + dnam{"áratíggju"} + one{"{0} áratíggju"} + other{"{0} áratíggju"} + } hour{ dnam{"tímar"} one{"{0} tími"} @@ -291,11 +317,21 @@ fo{ } } energy{ + british-thermal-unit{ + dnam{"bretskar hitaeindir"} + one{"{0} bretsk hitaeind"} + other{"{0} bretskar hitaeindir"} + } calorie{ dnam{"kaloriur"} one{"{0} kaloria"} other{"{0} kaloriur"} } + electronvolt{ + dnam{"elektronvolt"} + one{"{0} elektronvolt"} + other{"{0} elektronvolt"} + } foodcalorie{ dnam{"kostkaloriur"} one{"{0} kostkaloria"} @@ -321,6 +357,23 @@ fo{ one{"{0} kilowatttími"} other{"{0} kilowatttímar"} } + therm-us{ + dnam{"hitaeindir"} + one{"{0} hitaeind"} + other{"{0} hitaeindir"} + } + } + force{ + newton{ + dnam{"newton"} + one{"{0} newton"} + other{"{0} newton"} + } + pound-force{ + dnam{"pund av kraft"} + one{"{0} pund av kraft"} + other{"{0} pund av kraft"} + } } frequency{ gigahertz{ @@ -344,6 +397,41 @@ fo{ other{"{0} megahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"punkt fyri hvønn sentimetur"} + one{"{0} punkt fyri hvønn sentimetur"} + other{"{0} punkt fyri hvønn sentimetur"} + } + dot-per-inch{ + dnam{"punkt fyri hvønn tumma"} + one{"{0} punkt fyri hvønn tumma"} + other{"{0} punkt fyri hvønn tumma"} + } + em{ + dnam{"prent em"} + } + megapixel{ + dnam{"megaskíggjadeplar"} + one{"{0} megaskíggjadepil"} + other{"{0} megaskíggjadeplar"} + } + pixel{ + dnam{"skíggjadeplar"} + one{"{0} skíggjadeplar"} + other{"{0} skíggjadeplar"} + } + pixel-per-centimeter{ + dnam{"skíggjadeplar fyri hvønn sentimetur"} + one{"{0} skíggjadeplar fyri hvønn sentimetur"} + other{"{0} skíggjadeplar fyri hvønn sentimetur"} + } + pixel-per-inch{ + dnam{"skíggjadeplar fyri hvønn tunna"} + one{"{0} skíggjadepil fyri hvønn tunna"} + other{"{0} skíggjadeplar fyri hvønn tunna"} + } + } length{ astronomical-unit{ dnam{"stjørnufrøðilig eindir"} @@ -435,6 +523,11 @@ fo{ one{"{0} punkt"} other{"{0} punkt"} } + solar-radius{ + dnam{"sólarradii"} + one{"{0} sólarradius"} + other{"{0} sólarradii"} + } yard{ dnam{"yards"} one{"{0} yard"} @@ -447,6 +540,11 @@ fo{ one{"{0} luks"} other{"{0} luks"} } + solar-luminosity{ + dnam{"sólarljósmegi"} + one{"{0} sólarljósmegi"} + other{"{0} sólarljósmegi"} + } } mass{ carat{ @@ -454,6 +552,16 @@ fo{ one{"{0} karat"} other{"{0} karat"} } + dalton{ + dnam{"dalton"} + one{"{0} dalton"} + other{"{0} dalton"} + } + earth-mass{ + dnam{"jarðmassi"} + one{"{0} jarðmassi"} + other{"{0} jarðmassar"} + } gram{ dnam{"gramm"} one{"{0} gramm"} @@ -498,6 +606,11 @@ fo{ other{"{0} pund"} per{"{0} fyri hvørt pund"} } + solar-mass{ + dnam{"sólarmassi"} + one{"{0} sólarmassi"} + other{"{0} sólarmassar"} + } ton{ dnam{"stutt tons"} one{"{0} stutt tons"} @@ -537,6 +650,11 @@ fo{ } } pressure{ + atmosphere{ + dnam{"lufttrýst"} + one{"{0} lufttrýst"} + other{"{0} lufttrýst"} + } hectopascal{ dnam{"hektopascal"} one{"{0} hektopascal"} @@ -547,6 +665,16 @@ fo{ one{"{0} tummi av kviksilvur"} other{"{0} tummar av kviksilvur"} } + kilopascal{ + dnam{"kilopascal"} + one{"{0} kilopascal"} + other{"{0} kilopascal"} + } + megapascal{ + dnam{"megapascal"} + one{"{0} megapascal"} + other{"{0} megapascal"} + } millibar{ dnam{"millibar"} one{"{0} millibar"} @@ -557,6 +685,11 @@ fo{ one{"{0} millimetur av kviksilvur"} other{"{0} millimetrar av kviksilvur"} } + pascal{ + dnam{"pascal"} + one{"{0} Pascal"} + other{"{0} Pascal"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} @@ -607,12 +740,29 @@ fo{ other{"{0} Kelvin"} } } + torque{ + newton-meter{ + dnam{"newtonmetur"} + one{"{0} newtonmetur"} + other{"{0} newtonmetrar"} + } + pound-foot{ + dnam{"pund føtur"} + one{"{0} pund fótur"} + other{"{0} pund føtur"} + } + } volume{ acre-foot{ dnam{"ekraføtur"} one{"{0} ekrafótur"} other{"{0} ekraføtur"} } + barrel{ + dnam{"tunnur"} + one{"{0} tunna"} + other{"{0} tunnur"} + } centiliter{ dnam{"sentilitrar"} one{"{0} sentilitur"} @@ -675,6 +825,11 @@ fo{ one{"{0} flótandi unsa"} other{"{0} flótandi unsur"} } + fluid-ounce-imperial{ + dnam{"bretskar flótandi unsur"} + one{"{0} bretsk flótandi unsa"} + other{"{0} bretskar flótandi unsur"} + } gallon{ dnam{"gallons"} one{"{0} gallon"} @@ -773,6 +928,12 @@ fo{ compound{ per{"{0}/{1}"} } + concentr{ + percent{ + one{"{0} %"} + other{"{0} %"} + } + } consumption{ liter-per-100kilometers{ dnam{"l/100km"} @@ -781,6 +942,7 @@ fo{ } } coordinate{ + dnam{"ætt"} east{"{0}E"} north{"{0}N"} south{"{0}S"} @@ -1036,6 +1198,21 @@ fo{ one{"{0} partur/mill."} other{"{0} partar/mill."} } + percent{ + dnam{"prosent"} + one{"{0} %"} + other{"{0} %"} + } + permille{ + dnam{"promillur"} + one{"{0} ‰"} + other{"{0} ‰"} + } + permyriad{ + dnam{"promyriad"} + one{"{0} ‱"} + other{"{0} ‱"} + } } consumption{ liter-per-100kilometers{ @@ -1060,6 +1237,7 @@ fo{ } } coordinate{ + dnam{"ætt"} east{"{0} E"} north{"{0} N"} south{"{0} S"} @@ -1129,6 +1307,11 @@ fo{ other{"{0} d."} per{"{0}/d."} } + decade{ + dnam{"áratí."} + one{"{0} áratí."} + other{"{0} áratí."} + } hour{ dnam{"tímar"} one{"{0} t."} @@ -1152,9 +1335,9 @@ fo{ per{"{0}/min."} } month{ - dnam{"mán."} - one{"{0} mán."} - other{"{0} mán."} + dnam{"mnð."} + one{"{0} mnð."} + other{"{0} mnð."} per{"{0}/m."} } nanosecond{ @@ -1204,11 +1387,17 @@ fo{ } } energy{ + british-thermal-unit{ + dnam{"bretskar hitaeindir"} + } calorie{ dnam{"kal."} one{"{0} kal."} other{"{0} kal."} } + electronvolt{ + dnam{"elektronvolt"} + } foodcalorie{ dnam{"kostkaloriur"} one{"{0} kostkaloria"} @@ -1234,6 +1423,16 @@ fo{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"hitaeindir"} + one{"{0} thm"} + other{"{0} thm"} + } + } + force{ + newton{ + dnam{"newton"} + } } frequency{ gigahertz{ @@ -1257,6 +1456,14 @@ fo{ other{"{0} MHz"} } } + graphics{ + megapixel{ + dnam{"megaskíggjadeplar"} + } + pixel{ + dnam{"skíggjadeplar"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -1348,6 +1555,9 @@ fo{ one{"{0} pkt"} other{"{0} pkt"} } + solar-radius{ + dnam{"sólarradii"} + } yard{ dnam{"yd"} one{"{0} yd"} @@ -1360,6 +1570,9 @@ fo{ one{"{0} lx"} other{"{0} lx"} } + solar-luminosity{ + dnam{"sólarljósmegi"} + } } mass{ carat{ @@ -1367,6 +1580,12 @@ fo{ one{"{0} CD"} other{"{0} CD"} } + dalton{ + dnam{"dalton"} + } + earth-mass{ + dnam{"jarðmassi"} + } gram{ dnam{"gramm"} one{"{0} g"} @@ -1411,6 +1630,9 @@ fo{ other{"{0} pund"} per{"{0}/pund"} } + solar-mass{ + dnam{"sólarmassi"} + } ton{ dnam{"stutt t"} one{"{0} stutt t"} @@ -1450,6 +1672,11 @@ fo{ } } pressure{ + atmosphere{ + dnam{"lufttrýst"} + one{"{0} lufttrýst"} + other{"{0} lufttrýst"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -1470,6 +1697,9 @@ fo{ one{"{0} mmHg"} other{"{0} mmHg"} } + pascal{ + dnam{"pascal"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} @@ -1526,6 +1756,11 @@ fo{ one{"{0} ekrafótur"} other{"{0} ekraføtur"} } + barrel{ + dnam{"tunna"} + one{"{0} tunna"} + other{"{0} tunnur"} + } centiliter{ dnam{"cl"} one{"{0} cl"} @@ -1588,6 +1823,11 @@ fo{ one{"{0} flótandi unsa"} other{"{0} flótandi unsur"} } + fluid-ounce-imperial{ + dnam{"bretskar flótandi unsur"} + one{"{0} bretsk flótandi unsa"} + other{"{0} bretskar flót. unsur"} + } gallon{ dnam{"gallons"} one{"{0} gallon"} diff --git a/source/data/unit/fr.txt b/source/data/unit/fr.txt index b495122..0f8d62b 100644 --- a/source/data/unit/fr.txt +++ b/source/data/unit/fr.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -172,6 +172,7 @@ fr{ } } coordinate{ + dnam{"direction"} east{"{0} est"} north{"{0} nord"} south{"{0} sud"} @@ -246,6 +247,11 @@ fr{ other{"{0} jours"} per{"{0} par jour"} } + decade{ + dnam{"décennies"} + one{"{0} décennie"} + other{"{0} décennies"} + } hour{ dnam{"heures"} one{"{0} heure"} @@ -361,6 +367,11 @@ fr{ one{"{0} kilowattheure"} other{"{0} kilowattheures"} } + therm-us{ + dnam{"therms US"} + one{"{0} therm US"} + other{"{0} therms US"} + } } force{ newton{ @@ -396,6 +407,43 @@ fr{ other{"{0} mégahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"points par centimètre"} + one{"{0} point par centimètre"} + other{"{0} points par centimètre"} + } + dot-per-inch{ + dnam{"points par pouce"} + one{"{0} point par pouce"} + other{"{0} points par pouce"} + } + em{ + dnam{"cadratin"} + one{"{0} cadratin"} + other{"{0} cadratins"} + } + megapixel{ + dnam{"mégapixels"} + one{"{0} mégapixel"} + other{"{0} mégapixels"} + } + pixel{ + dnam{"pixels"} + one{"{0} pixel"} + other{"{0} pixels"} + } + pixel-per-centimeter{ + dnam{"pixels par centimètre"} + one{"{0} pixel par centimètre"} + other{"{0} pixels par centimètre"} + } + pixel-per-inch{ + dnam{"pixels par pouce"} + one{"{0} pixel par pouce"} + other{"{0} pixels par pouce"} + } + } length{ astronomical-unit{ dnam{"unités astronomiques"} @@ -634,6 +682,11 @@ fr{ one{"{0} atmosphère"} other{"{0} atmosphères"} } + bar{ + dnam{"bars"} + one{"{0} bar"} + other{"{0} bars"} + } hectopascal{ dnam{"hectopascals"} one{"{0} hectopascal"} @@ -664,6 +717,11 @@ fr{ one{"{0} millimètre de mercure"} other{"{0} millimètres de mercure"} } + pascal{ + dnam{"pascals"} + one{"{0} pascal"} + other{"{0} pascals"} + } pound-per-square-inch{ dnam{"livres par pouce carré"} one{"{0} livre par pouce carré"} @@ -871,6 +929,9 @@ fr{ one{"{0}G"} other{"{0}G"} } + meter-per-second-squared{ + dnam{"m/s²"} + } } angle{ arc-minute{ @@ -921,10 +982,13 @@ fr{ } compound{ per{"{0}/{1}"} + times{"{0}{1}"} } concentr{ percent{ dnam{"%"} + one{"{0} %"} + other{"{0} %"} } } consumption{ @@ -963,6 +1027,10 @@ fr{ dnam{"h"} one{"{0}h"} other{"{0}h"} + per{"{0}/h"} + } + microsecond{ + dnam{"μs"} } millisecond{ dnam{"ms"} @@ -973,6 +1041,7 @@ fr{ dnam{"min"} one{"{0}min"} other{"{0}min"} + per{"{0}/min"} } month{ dnam{"m."} @@ -980,10 +1049,14 @@ fr{ other{"{0}m."} per{"{0}/m."} } + nanosecond{ + dnam{"ns"} + } second{ dnam{"s"} one{"{0}s"} other{"{0}s"} + per{"{0}/s"} } week{ dnam{"sem."} @@ -1008,8 +1081,13 @@ fr{ dnam{"cm"} one{"{0}cm"} other{"{0}cm"} + per{"{0}/cm"} + } + decimeter{ + dnam{"dm"} } fathom{ + dnam{"fm"} one{"{0} fth"} other{"{0} fth"} } @@ -1019,6 +1097,11 @@ fr{ other{"{0}′"} per{"{0}/pi"} } + furlong{ + dnam{"fur"} + one{"{0} fur"} + other{"{0} fur"} + } inch{ dnam{"po"} one{"{0}″"} @@ -1029,6 +1112,7 @@ fr{ dnam{"km"} one{"{0}km"} other{"{0}km"} + per{"{0}/km"} } light-year{ dnam{"al"} @@ -1039,21 +1123,40 @@ fr{ dnam{"m"} one{"{0}m"} other{"{0}m"} + per{"{0}/m"} + } + micrometer{ + dnam{"µm"} } mile{ + dnam{"mi"} one{"{0}mi"} other{"{0}mi"} } + mile-scandinavian{ + dnam{"smi"} + } millimeter{ dnam{"mm"} one{"{0}mm"} other{"{0}mm"} } + nanometer{ + dnam{"nm"} + } + nautical-mile{ + dnam{"nmi"} + } + parsec{ + dnam{"pc"} + } picometer{ + dnam{"pm"} one{"{0}pm"} other{"{0}pm"} } yard{ + dnam{"yd"} one{"{0}yd"} other{"{0}yd"} } @@ -1068,19 +1171,39 @@ fr{ dnam{"g"} one{"{0}g"} other{"{0}g"} + per{"{0}/g"} } kilogram{ dnam{"kg"} one{"{0}kg"} other{"{0}kg"} + per{"{0}/kg"} + } + metric-ton{ + dnam{"t"} + } + microgram{ + dnam{"µg"} + } + milligram{ + dnam{"mg"} } ounce{ + dnam{"oz"} one{"{0}oz"} other{"{0}oz"} + per{"{0}/oz"} } pound{ + dnam{"lb"} one{"{0}lb"} other{"{0}lb"} + per{"{0}/lb"} + } + stone{ + dnam{"st"} + one{"{0} st"} + other{"{0} st"} } ton{ dnam{"sh tn"} @@ -1104,6 +1227,7 @@ fr{ } pressure{ hectopascal{ + dnam{"hPa"} one{"{0}hPa"} other{"{0}hPa"} } @@ -1113,6 +1237,7 @@ fr{ other{"{0}″ Hg"} } millibar{ + dnam{"mbar"} one{"{0}mbar"} other{"{0}mbar"} } @@ -1139,10 +1264,12 @@ fr{ other{"{0} nd"} } meter-per-second{ + dnam{"m/s"} one{"{0}m/s"} other{"{0}m/s"} } mile-per-hour{ + dnam{"mi/h"} one{"{0}mi/h"} other{"{0}mi/h"} } @@ -1153,6 +1280,17 @@ fr{ one{"{0}°C"} other{"{0}°C"} } + fahrenheit{ + dnam{"°F"} + } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } + kelvin{ + dnam{"K"} + } } volume{ centiliter{ @@ -1331,6 +1469,7 @@ fr{ } compound{ per{"{0}/{1}"} + times{"{0}{1}"} } concentr{ karat{ @@ -1349,7 +1488,6 @@ fr{ other{"{0} mmol/l"} } mole{ - dnam{"mol"} one{"{0} mol"} other{"{0} mol"} } @@ -1369,7 +1507,6 @@ fr{ other{"{0} ‰"} } permyriad{ - dnam{"‱"} one{"{0} ‱"} other{"{0} ‱"} } @@ -1472,6 +1609,11 @@ fr{ other{"{0} j"} per{"{0}/j"} } + decade{ + dnam{"décennies"} + one{"{0} décennie"} + other{"{0} décennies"} + } hour{ dnam{"h"} one{"{0} h"} @@ -1558,7 +1700,6 @@ fr{ other{"{0} cal"} } electronvolt{ - dnam{"eV"} one{"{0} eV"} other{"{0} eV"} } @@ -1587,15 +1728,18 @@ fr{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"therm US"} + one{"{0} therm US"} + other{"{0} therms US"} + } } force{ newton{ - dnam{"N"} one{"{0} N"} other{"{0} N"} } pound-force{ - dnam{"lbf"} one{"{0} lbf"} other{"{0} lbf"} } @@ -1622,6 +1766,43 @@ fr{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"pt/cm"} + one{"{0} pt/cm"} + other{"{0} pt/cm"} + } + dot-per-inch{ + dnam{"pt/po"} + one{"{0} pt/po"} + other{"{0} pt/po"} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"Mpx"} + one{"{0} Mpx"} + other{"{0} Mpx"} + } + pixel{ + dnam{"px"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"px/cm"} + one{"{0} px/cm"} + other{"{0} px/cm"} + } + pixel-per-inch{ + dnam{"px/po"} + one{"{0} px/po"} + other{"{0} px/po"} + } + } length{ astronomical-unit{ dnam{"ua"} @@ -1640,6 +1821,7 @@ fr{ other{"{0} dm"} } fathom{ + dnam{"fm"} one{"{0} fth"} other{"{0} fth"} } @@ -1649,6 +1831,11 @@ fr{ other{"{0} pi"} per{"{0}/pi"} } + furlong{ + dnam{"fur"} + one{"{0} fur"} + other{"{0} fur"} + } inch{ dnam{"po"} one{"{0} po"} @@ -1747,7 +1934,6 @@ fr{ other{"{0} ct"} } dalton{ - dnam{"Da"} one{"{0} Da"} other{"{0} Da"} } @@ -1805,6 +1991,11 @@ fr{ one{"{0} M☉"} other{"{0} M☉"} } + stone{ + dnam{"st"} + one{"{0} st"} + other{"{0} st"} + } ton{ dnam{"sh tn"} one{"{0} sh tn"} @@ -1849,6 +2040,10 @@ fr{ one{"{0} atm"} other{"{0} atm"} } + bar{ + one{"{0} bar"} + other{"{0} bars"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -1860,12 +2055,10 @@ fr{ other{"{0} inHg"} } kilopascal{ - dnam{"kPa"} one{"{0} kPa"} other{"{0} kPa"} } megapascal{ - dnam{"MPa"} one{"{0} MPa"} other{"{0} MPa"} } @@ -1879,6 +2072,10 @@ fr{ one{"{0} mmHg"} other{"{0} mmHg"} } + pascal{ + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"lb/po²"} one{"{0} lb/po²"} @@ -1931,7 +2128,6 @@ fr{ } torque{ newton-meter{ - dnam{"N⋅m"} one{"{0} N⋅m"} other{"{0} N⋅m"} } @@ -1948,7 +2144,6 @@ fr{ other{"{0} ac pi"} } barrel{ - dnam{"bbl"} one{"{0} bbl"} other{"{0} bbl"} } diff --git a/source/data/unit/fr_CA.txt b/source/data/unit/fr_CA.txt index d26ef85..df9dbd1 100644 --- a/source/data/unit/fr_CA.txt +++ b/source/data/unit/fr_CA.txt @@ -1,13 +1,11 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_CA{ - Version{"2.1.47.86"} + Version{"36"} units{ acceleration{ g-force{ dnam{"force G"} - one{"{0} fois la gravitation terrestre"} - other{"{0} fois la gravitation terrestre"} } meter-per-second-squared{ one{"{0} mètre par seconde carrée"} @@ -79,9 +77,6 @@ fr_CA{ one{"{0} partie par million"} other{"{0} parties par million"} } - percent{ - other{"{0} pour cent"} - } permille{ one{"{0} pour mille"} other{"{0} pour mille"} @@ -237,6 +232,11 @@ fr_CA{ one{"{0} kilowattheure"} other{"{0} kilowattheures"} } + therm-us{ + dnam{"therms américains"} + one{"{0} therm américain"} + other{"{0} therms américains"} + } } frequency{ gigahertz{ @@ -271,6 +271,7 @@ fr_CA{ } foot{ one{"{0} pied"} + other{"{0} pieds"} } inch{ one{"{0} pouce"} @@ -364,6 +365,7 @@ fr_CA{ other{"{0} livres"} } stone{ + one{"{0} stone"} other{"{0} stone"} } ton{ @@ -754,8 +756,6 @@ fr_CA{ } mile-per-gallon-imperial{ dnam{"mi/gal Imp"} - one{"{0} mi/gal Imp"} - other{"{0} mi/gal Imp"} } } digital{ @@ -806,7 +806,7 @@ fr_CA{ } duration{ century{ - dnam{"si"} + dnam{"s."} } day{ one{"{0} j"} @@ -1106,9 +1106,6 @@ fr_CA{ one{"{0} °F"} other{"{0} °F"} } - generic{ - one{"{0}°"} - } kelvin{ one{"{0} K"} other{"{0} K"} diff --git a/source/data/unit/fr_HT.txt b/source/data/unit/fr_HT.txt index b026d6d..f63b5eb 100644 --- a/source/data/unit/fr_HT.txt +++ b/source/data/unit/fr_HT.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_HT{ - Version{"2.1.47.70"} + Version{"36"} units{ area{ hectare{ diff --git a/source/data/unit/fur.txt b/source/data/unit/fur.txt index 06f1eeb..4792590 100644 --- a/source/data/unit/fur.txt +++ b/source/data/unit/fur.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fur{ - Version{"2.1.47.82"} + Version{"36"} units{ duration{ day{ diff --git a/source/data/unit/fy.txt b/source/data/unit/fy.txt index 0dab440..31b0074 100644 --- a/source/data/unit/fy.txt +++ b/source/data/unit/fy.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fy{ - Version{"2.1.47.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/ga.txt b/source/data/unit/ga.txt index 0731d00..fbe0fee 100644 --- a/source/data/unit/ga.txt +++ b/source/data/unit/ga.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ga{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -259,11 +259,11 @@ ga{ } } coordinate{ - dnam{"treo chairdinéil"} - east{"{0}O"} - north{"{0}T"} - south{"{0}D"} - west{"{0}I"} + dnam{"príomhaird"} + east{"{0} oirthear"} + north{"{0} thuaidh"} + south{"{0} theas"} + west{"{0} iarthar"} } digital{ bit{ @@ -373,6 +373,14 @@ ga{ per{"{0} sa lá"} two{"{0} lá"} } + decade{ + dnam{"deicheanna blianta"} + few{"{0} dec"} + many{"{0} dec"} + one{"{0} deich mbliana"} + other{"{0} deich mbliana"} + two{"{0} dec"} + } hour{ dnam{"uaireanta"} few{"{0} huaire"} @@ -551,6 +559,14 @@ ga{ other{"{0} cileavatuair"} two{"{0} chileavatuair"} } + therm-us{ + dnam{"teirmeacha US"} + few{"{0} theirm US"} + many{"{0} dteirm US"} + one{"{0} teirm US"} + other{"{0} teirm US"} + two{"{0} theirm US"} + } } force{ newton{ @@ -604,6 +620,59 @@ ga{ two{"{0} mheigiheirts"} } } + graphics{ + dot-per-centimeter{ + dnam{"poncanna sa cheintiméadar"} + few{"{0} dpcm"} + many{"{0} dpcm"} + one{"{0} ponc sa cheintiméadar"} + other{"{0} poncanna sa cheintiméadar"} + two{"{0} dpcm"} + } + dot-per-inch{ + dnam{"poncanna san orlach"} + few{"{0} dpi"} + many{"{0} dpi"} + one{"{0} ponc san orlach"} + other{"{0} poncanna san orlach"} + two{"{0} dpi"} + } + em{ + dnam{"eim chlógrafach"} + } + megapixel{ + dnam{"meigiphicteilíní"} + few{"{0} MP"} + many{"{0} MP"} + one{"{0} meigiphicteilín"} + other{"{0} meigiphicteilín"} + two{"{0} MP"} + } + pixel{ + dnam{"picteilíní"} + few{"{0} px"} + many{"{0} px"} + one{"{0} picteilín"} + other{"{0} picteilín"} + two{"{0} px"} + } + pixel-per-centimeter{ + dnam{"picteilíní sa cheintiméadar"} + few{"{0} ppcm"} + many{"{0} ppcm"} + one{"{0} picteilín sa cheintiméadar"} + other{"{0} picteilíní sa cheintiméadar"} + two{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"picteilíní san orlach"} + few{"{0} ppi"} + many{"{0} ppi"} + one{"{0} picteilín san orlach"} + other{"{0} picteilín san orlach"} + two{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"aonaid réalteolaíocha"} @@ -808,19 +877,19 @@ ga{ } dalton{ dnam{"daltúin"} - few{"{0} Da"} - many{"{0} Da"} + few{"{0} dhaltún"} + many{"{0} ndaltún"} one{"{0} daltún"} other{"{0} daltún"} - two{"{0} Da"} + two{"{0} dhaltún"} } earth-mass{ dnam{"maiseanna an Domhain"} - few{"{0} M⊕"} - many{"{0} M⊕"} + few{"{0} mhais an Domhain"} + many{"{0} mais an Domhain"} one{"mais an Domhain"} - other{"{0} M⊕"} - two{"{0} M⊕"} + other{"{0} mais an Domhain"} + two{"{0} mhais an Domhain"} } gram{ dnam{"graim"} @@ -892,11 +961,11 @@ ga{ } solar-mass{ dnam{"maiseanna gréine"} - few{"{0} M☉"} - many{"{0} M☉"} + few{"{0} mhais ghréine"} + many{"{0} mais ghréine"} one{"{0} mais ghréine"} - other{"{0} maiseanna gréine"} - two{"{0} M☉"} + other{"{0} mais ghréine"} + two{"{0} mhais ghréine"} } stone{ dnam{"clocha"} @@ -974,6 +1043,14 @@ ga{ other{"{0} atmaisféar"} two{"{0} atm"} } + bar{ + dnam{"barraí"} + few{"{0} bharra"} + many{"{0} mbarra"} + one{"{0} bharra"} + other{"{0} barra"} + two{"{0} bharra"} + } hectopascal{ dnam{"heicteapascail"} few{"{0} heicteapascal"} @@ -3047,6 +3124,14 @@ ga{ other{"{0} kWh"} two{"{0} kWh"} } + therm-us{ + dnam{"teirmeacha US"} + few{"{0} theirm US"} + many{"{0} dteirm US"} + one{"{0} teirm US"} + other{"{0} teirm US"} + two{"{0} theirm US"} + } } force{ newton{ @@ -3100,6 +3185,14 @@ ga{ two{"{0} MHz"} } } + graphics{ + megapixel{ + dnam{"meigiphicteilíní"} + } + pixel{ + dnam{"picteilíní"} + } + } length{ astronomical-unit{ dnam{"AR"} @@ -3470,6 +3563,14 @@ ga{ other{"{0} atm"} two{"{0} atm"} } + bar{ + dnam{"barra"} + few{"{0} bharra"} + many{"{0} mbarra"} + one{"{0} bharra"} + other{"{0} barra"} + two{"{0} bharra"} + } hectopascal{ dnam{"hPa"} few{"{0} hPa"} diff --git a/source/data/unit/gd.txt b/source/data/unit/gd.txt index 14aadbd..f4c012a 100644 --- a/source/data/unit/gd.txt +++ b/source/data/unit/gd.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gd{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -69,6 +69,13 @@ gd{ other{"{0} acair"} two{"{0} acair"} } + dunam{ + dnam{"dönüm"} + few{"{0} dönüm"} + one{"{0} dönüm"} + other{"{0} dönüm"} + two{"{0} dhönüm"} + } hectare{ dnam{"heactair"} few{"{0} heactairean"} @@ -143,18 +150,25 @@ gd{ two{"{0} karat"} } milligram-per-deciliter{ - dnam{"mille-ghrama san deicheamh-liotair"} - few{"{0} mille-ghramaichean san deicheamh-liotair"} - one{"{0} mhille-ghrama san deicheamh-liotair"} - other{"{0} mille-ghrama san deicheamh-liotair"} - two{"{0} mhille-ghrama san deicheamh-liotair"} + dnam{"miligram san deicheamh-liotair"} + few{"{0} miligramaichean san deicheamh-liotair"} + one{"{0} mhiligram san deicheamh-liotair"} + other{"{0} miligram san deicheamh-liotair"} + two{"{0} mhiligram san deicheamh-liotair"} } millimole-per-liter{ - dnam{"mille-mhòl san liotair"} - few{"{0} mille-mhòlaichean san liotair"} - one{"{0} mhille-mhòl san liotair"} - other{"{0} mille-mhòl san liotair"} - two{"{0} mhille-mhòl san liotair"} + dnam{"milimòl san liotair"} + few{"{0} milimòlaichean san liotair"} + one{"{0} mhilimòl san liotair"} + other{"{0} milimòl san liotair"} + two{"{0} mhilimòl san liotair"} + } + mole{ + dnam{"mòl"} + few{"{0} mòlaichean"} + one{"{0} mhòl"} + other{"{0} mòl"} + two{"{0} mhòl"} } part-per-million{ dnam{"pàirt sa mhillean"} @@ -177,6 +191,13 @@ gd{ other{"{0} sa mhìle"} two{"{0} sa mhìle"} } + permyriad{ + dnam{"sna deich mìltean"} + few{"{0} sna deich mìltean"} + one{"{0} sna deich mìltean"} + other{"{0} sna deich mìltean"} + two{"{0} sna deich mìltean"} + } } consumption{ liter-per-100kilometers{ @@ -201,11 +222,11 @@ gd{ two{"{0} mhìle sa ghalan"} } mile-per-gallon-imperial{ - dnam{"mìle sa ghalan impireil"} - few{"{0} mìltean sa ghalan impireil"} - one{"{0} mhìle sa ghalan impireil"} - other{"{0} mìle sa ghalan impireil"} - two{"{0} mhìle sa ghalan impireil"} + dnam{"mìle sa ghalan ìmpireil"} + few{"{0} mìltean sa ghalan ìmpireil"} + one{"{0} mhìle sa ghalan ìmpireil"} + other{"{0} mìle sa ghalan ìmpireil"} + two{"{0} mhìle sa ghalan ìmpireil"} } } coordinate{ @@ -310,6 +331,13 @@ gd{ per{"{0} san latha"} two{"{0} latha"} } + decade{ + dnam{"deichead"} + few{"{0} deicheadan"} + one{"{0} deichead"} + other{"{0} deichead"} + two{"{0} dheichead"} + } hour{ dnam{"uair a thìde"} few{"{0} uairean a thìde"} @@ -326,11 +354,11 @@ gd{ two{"{0} mhicreo-diog"} } millisecond{ - dnam{"mille-dhiog"} - few{"{0} mille-dhiogan"} - one{"{0} mhille-dhiog"} - other{"{0} mille-dhiog"} - two{"{0} mhille-dhiog"} + dnam{"mili-diog"} + few{"{0} mili-diogan"} + one{"{0} mhili-diog"} + other{"{0} mili-diog"} + two{"{0} mhili-diog"} } minute{ dnam{"mionaid"} @@ -349,11 +377,11 @@ gd{ two{"{0} mhìos"} } nanosecond{ - dnam{"nano-dhiog"} - few{"{0} nano-dhiogan"} - one{"{0} nano-dhiog"} - other{"{0} nano-dhiog"} - two{"{0} nano-dhiog"} + dnam{"nano-diog"} + few{"{0} nano-diogan"} + one{"{0} nano-diog"} + other{"{0} nano-diog"} + two{"{0} nano-diog"} } second{ dnam{"diog"} @@ -411,6 +439,13 @@ gd{ } } energy{ + british-thermal-unit{ + dnam{"aonad-teasa Breatannach"} + few{"{0} aonadan-teasa Breatannach"} + one{"{0} aonad-teasa Breatannach"} + other{"{0} aonad-teasa Breatannach"} + two{"{0} aonad-teasa Breatannach"} + } calorie{ dnam{"calaraidh"} few{"{0} calaraidhean"} @@ -418,6 +453,13 @@ gd{ other{"{0} calaraidh"} two{"{0} chalaraidh"} } + electronvolt{ + dnam{"volt-eleactroin"} + few{"{0} voltaichean-eleactroin"} + one{"{0} volt-eleactroin"} + other{"{0} volt-eleactroin"} + two{"{0} volt-eleactroin"} + } foodcalorie{ dnam{"calaraidh bidhe"} few{"{0} calaraidhean bidhe"} @@ -453,6 +495,29 @@ gd{ other{"{0} cilea-watt san uair"} two{"{0} chilea-watt san uair"} } + therm-us{ + dnam{"aonad-teasa nan SA"} + few{"{0} aonadan-teasa nan SA"} + one{"{0} aonad-teasa nan SA"} + other{"{0} aonad-teasa nan SA"} + two{"{0} aonad-teasa nan SA"} + } + } + force{ + newton{ + dnam{"newton"} + few{"{0} newtonaichean"} + one{"{0} newton"} + other{"{0} newton"} + two{"{0} newton"} + } + pound-force{ + dnam{"punnd de dh’fhorsa"} + few{"{0} puinnd de dh’fhorsa"} + one{"{0} phunnd de dh’fhorsa"} + other{"{0} punnd de dh’fhorsa"} + two{"{0} phunnd de dh’fhorsa"} + } } frequency{ gigahertz{ @@ -484,6 +549,53 @@ gd{ two{"{0} mheaga-hertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dotag sa cheudameatair"} + few{"{0} dotagan sa cheudameatair"} + one{"{0} dotag sa cheudameatair"} + other{"{0} dotag sa cheudameatair"} + two{"{0} dhotag sa cheudameatair"} + } + dot-per-inch{ + dnam{"dotag san òirleach"} + few{"{0} dotagan san òirleach"} + one{"{0} dotag san òirleach"} + other{"{0} dotag san òirleach"} + two{"{0} dhotag san òirleach"} + } + em{ + dnam{"em chlò-ghrafach"} + } + megapixel{ + dnam{"meaga-piogsail"} + few{"{0} meaga-piogsailean"} + one{"{0} mheaga-piogsail"} + other{"{0} meaga-piogsail"} + two{"{0} mheaga-piogsail"} + } + pixel{ + dnam{"piogsail"} + few{"{0} piogsailean"} + one{"{0} phiogsail"} + other{"{0} piogsail"} + two{"{0} phiogsail"} + } + pixel-per-centimeter{ + dnam{"piogsail sa cheudameatair"} + few{"{0} piogsailean sa cheudameatair"} + one{"{0} phiogsail sa cheudameatair"} + other{"{0} piogsail sa cheudameatair"} + two{"{0} phiogsail sa cheudameatair"} + } + pixel-per-inch{ + dnam{"piogsail san òirleach"} + few{"{0} piogsailean san òirleach"} + one{"{0} phiogsail san òirleach"} + other{"{0} piogsail san òirleach"} + two{"{0} phiogsail san òirleach"} + } + } length{ astronomical-unit{ dnam{"aonad reul-eòlach"} @@ -561,11 +673,11 @@ gd{ two{"{0} mheatair"} } micrometer{ - dnam{"micreo-mheatair"} - few{"{0} micreo-mheatairean"} - one{"{0} mhicreo-mheatair"} - other{"{0} micreo-mheatair"} - two{"{0} mhicreo-mheatair"} + dnam{"micreo-meatair"} + few{"{0} micreo-meatairean"} + one{"{0} mhicreo-meatair"} + other{"{0} micreo-meatair"} + two{"{0} mhicreo-meatair"} } mile{ dnam{"mìle"} @@ -582,18 +694,18 @@ gd{ two{"{0} mhìle Lochlannach"} } millimeter{ - dnam{"mille-mheatair"} - few{"{0} mille-mheatairean"} - one{"{0} mhille-mheatair"} - other{"{0} mille-mheatair"} - two{"{0} mhille-mheatair"} + dnam{"mili-meatair"} + few{"{0} mili-meatairean"} + one{"{0} mhili-meatair"} + other{"{0} mili-meatair"} + two{"{0} mhili-meatair"} } nanometer{ - dnam{"nano-mheatair"} - few{"{0} nano-mheatairean"} - one{"{0} nano-mheatair"} - other{"{0} nano-mheatair"} - two{"{0} nano-mheatair"} + dnam{"nano-meatair"} + few{"{0} nano-meatairean"} + one{"{0} nano-meatair"} + other{"{0} nano-meatair"} + two{"{0} nano-meatair"} } nautical-mile{ dnam{"mìle mara"} @@ -610,11 +722,11 @@ gd{ two{"{0} pharsec"} } picometer{ - dnam{"piceo-mheatair"} - few{"{0} piceo-mheatairean"} - one{"{0} phiceo-mheatair"} - other{"{0} piceo-mheatair"} - two{"{0} phiceo-mheatair"} + dnam{"piceo-meatair"} + few{"{0} piceo-meatairean"} + one{"{0} phiceo-meatair"} + other{"{0} piceo-meatair"} + two{"{0} phiceo-meatair"} } point{ dnam{"puing"} @@ -623,6 +735,13 @@ gd{ other{"{0} puing"} two{"{0} phuing"} } + solar-radius{ + dnam{"rèideas-grèine"} + few{"{0} rèideasan-grèine"} + one{"{0} rèideas-grèine"} + other{"{0} rèideas-grèine"} + two{"{0} rèideas-grèine"} + } yard{ dnam{"slat"} few{"{0} slatan"} @@ -639,6 +758,13 @@ gd{ other{"{0} lux"} two{"{0} lux"} } + solar-luminosity{ + dnam{"boillsgeachd-ghrèine"} + few{"{0} boillsgeachdan-grèine"} + one{"{0} bhoillsgeachd-ghrèine"} + other{"{0} boillsgeachd-ghrèine"} + two{"{0} bhoillsgeachd-ghrèine"} + } } mass{ carat{ @@ -648,13 +774,27 @@ gd{ other{"{0} carat"} two{"{0} charat"} } + dalton{ + dnam{"dalton"} + few{"{0} daltonaichean"} + one{"{0} dalton"} + other{"{0} dalton"} + two{"{0} dhalton"} + } + earth-mass{ + dnam{"tomad-talmhainn"} + few{"{0} tomadan-talmhainn"} + one{"{0} tomad-talmhainn"} + other{"{0} tomad-talmhainn"} + two{"{0} thomad-talmhainn"} + } gram{ - dnam{"grama"} + dnam{"gram"} few{"{0} gramaichean"} - one{"{0} ghrama"} - other{"{0} grama"} - per{"{0} sa ghrama"} - two{"{0} ghrama"} + one{"{0} ghram"} + other{"{0} gram"} + per{"{0} sa ghram"} + two{"{0} ghram"} } kilogram{ dnam{"cileagram"} @@ -672,18 +812,18 @@ gd{ two{"{0} thunna meatrach"} } microgram{ - dnam{"micreo-ghrama"} - few{"{0} micreo-ghramaichean"} - one{"{0} mhicreo-ghrama"} - other{"{0} micreo-ghrama"} - two{"{0} mhicreo-ghrama"} + dnam{"micreo-gram"} + few{"{0} micreo-gramaichean"} + one{"{0} mhicreo-gram"} + other{"{0} micreo-gram"} + two{"{0} mhicreo-gram"} } milligram{ - dnam{"mille-ghrama"} - few{"{0} mille-ghramaichean"} - one{"{0} mhille-ghrama"} - other{"{0} mille-ghrama"} - two{"{0} mhille-ghrama"} + dnam{"miligram"} + few{"{0} miligramaichean"} + one{"{0} mhiligram"} + other{"{0} miligram"} + two{"{0} mhiligram"} } ounce{ dnam{"unnsa"} @@ -708,6 +848,13 @@ gd{ per{"{0} sa phunnd"} two{"{0} phunnd"} } + solar-mass{ + dnam{"tomad-grèine"} + few{"{0} tomadan-grèine"} + one{"{0} tomad-grèine"} + other{"{0} tomad-grèine"} + two{"{0} thomad-grèine"} + } stone{ dnam{"clach"} few{"{0} clachan"} @@ -753,11 +900,11 @@ gd{ two{"{0} mheaga-watt"} } milliwatt{ - dnam{"mille-watt"} - few{"{0} mille-watt"} - one{"{0} mhille-watt"} - other{"{0} mille-watt"} - two{"{0} mhille-watt"} + dnam{"mili-watt"} + few{"{0} mili-watt"} + one{"{0} mhili-watt"} + other{"{0} mili-watt"} + two{"{0} mhili-watt"} } watt{ dnam{"watt"} @@ -775,12 +922,19 @@ gd{ other{"{0} brùthadh-àile"} two{"{0} bhrùthadh-àile"} } + bar{ + dnam{"bàr"} + few{"{0} bàraichean"} + one{"{0} bhar"} + other{"{0} bàr"} + two{"{0} bhàr"} + } hectopascal{ - dnam{"heacta pascal"} - few{"{0} heacta pascal"} - one{"{0} heacta pascal"} - other{"{0} heacta pascal"} - two{"{0} heacta pascal"} + dnam{"heacta-pascal"} + few{"{0} heacta-pascal"} + one{"{0} heacta-pascal"} + other{"{0} heacta-pascal"} + two{"{0} heacta-pascal"} } inch-hg{ dnam{"òirleach de dh’airgead-beò"} @@ -789,19 +943,40 @@ gd{ other{"{0} òirleach de dh’airgead-beò"} two{"{0} òirleach de dh’airgead-beò"} } + kilopascal{ + dnam{"cileapascal"} + few{"{0} cileapascal"} + one{"{0} chileapascal"} + other{"{0} cileapascal"} + two{"{0} chileapascal"} + } + megapascal{ + dnam{"meaga-pascal"} + few{"{0} meaga-pascal"} + one{"{0} mheaga-pascal"} + other{"{0} meaga-pascal"} + two{"{0} mheaga-pascal"} + } millibar{ - dnam{"mille-bhàr"} - few{"{0} mille-bhàraichean"} - one{"{0} mhille-bhàr"} - other{"{0} mille-bhàr"} - two{"{0} mhille-bhàr"} + dnam{"milibàr"} + few{"{0} milibàraichean"} + one{"{0} mhilibàr"} + other{"{0} milibàr"} + two{"{0} mhilibàr"} } millimeter-of-mercury{ - dnam{"mille-mheatair de dh’airgead-beò"} - few{"{0} mille-mheatairean de dh’airgead-beò"} - one{"{0} mhille-mheatair de dh’airgead-beò"} - other{"{0} mille-mheatair de dh’airgead-beò"} - two{"{0} mhille-mheatair de dh’airgead-beò"} + dnam{"milimeatair de dh’airgead-beò"} + few{"{0} milimeatairean de dh’airgead-beò"} + one{"{0} mhilimeatair de dh’airgead-beò"} + other{"{0} milimeatair de dh’airgead-beò"} + two{"{0} mhilimeatair de dh’airgead-beò"} + } + pascal{ + dnam{"pascal"} + few{"{0} pascal"} + one{"{0} phascal"} + other{"{0} pascal"} + two{"{0} phascal"} } pound-per-square-inch{ dnam{"punnd san òirleach cheàrnagach"} @@ -871,6 +1046,22 @@ gd{ two{"{0} cheum Kelvin"} } } + torque{ + newton-meter{ + dnam{"newton-mheatair"} + few{"{0} newton-mheatairean"} + one{"{0} newton-mheatair"} + other{"{0} newton-mheatair"} + two{"{0} newton-mheatair"} + } + pound-foot{ + dnam{"troigh-phuinnd"} + few{"{0} troighean-puinnd"} + one{"{0} troigh-phuinnd"} + other{"{0} troigh-phuinnd"} + two{"{0} throigh-phuinnd"} + } + } volume{ acre-foot{ dnam{"acair-throigh"} @@ -879,6 +1070,13 @@ gd{ other{"{0} acair-throigh"} two{"{0} acair-throigh"} } + barrel{ + dnam{"baraill"} + few{"{0} baraillean"} + one{"{0} bharaill"} + other{"{0} baraill"} + two{"{0} bharaill"} + } bushel{ dnam{"buiseal"} few{"{0} buisealan"} @@ -972,6 +1170,13 @@ gd{ other{"{0} unnsa-dighe"} two{"{0} unnsa-dighe"} } + fluid-ounce-imperial{ + dnam{"unnsa-dighe ìmpireil"} + few{"{0} unnsachan-dighe ìmpireil"} + one{"{0} unnsa-dighe ìmpireil"} + other{"{0} unnsa-dighe ìmpireil"} + two{"{0} unnsa-dighe ìmpireil"} + } gallon{ dnam{"galan"} few{"{0} galanan"} @@ -981,19 +1186,19 @@ gd{ two{"{0} ghalan"} } gallon-imperial{ - dnam{"galan impireil"} - few{"{0} galanan impireil"} - one{"{0} ghalan impireil"} - other{"{0} galan impireil"} - per{"{0} sa ghalan impireil"} - two{"{0} ghalan impireil"} + dnam{"galan ìmpireil"} + few{"{0} galanan ìmpireil"} + one{"{0} ghalan ìmpireil"} + other{"{0} galan ìmpireil"} + per{"{0} sa ghalan ìmpireil"} + two{"{0} ghalan ìmpireil"} } hectoliter{ - dnam{"heactailiotair"} - few{"{0} heactailiotairean"} - one{"{0} heactailiotair"} - other{"{0} heactailiotair"} - two{"{0} heactailiotair"} + dnam{"heacta-liotair"} + few{"{0} heacta-liotairean"} + one{"{0} heacta-liotair"} + other{"{0} heacta-liotair"} + two{"{0} heacta-liotair"} } liter{ dnam{"liotair"} @@ -1011,11 +1216,11 @@ gd{ two{"{0} mheaga-liotair"} } milliliter{ - dnam{"mille-liotair"} - few{"{0} mille-liotairean"} - one{"{0} mhille-liotair"} - other{"{0} mille-liotair"} - two{"{0} mhille-liotair"} + dnam{"mililiotair"} + few{"{0} mililiotairean"} + one{"{0} mhililiotair"} + other{"{0} mililiotair"} + two{"{0} mhililiotair"} } pint{ dnam{"pinnt"} @@ -1116,6 +1321,13 @@ gd{ other{"{0}ac"} two{"{0}ac"} } + dunam{ + dnam{"dönüm"} + few{"{0}dönüm"} + one{"{0}dönüm"} + other{"{0}dönüm"} + two{"{0}dhönüm"} + } hectare{ dnam{"heactair"} few{"{0}ha"} @@ -1203,6 +1415,13 @@ gd{ other{"{0}mmòl/L"} two{"{0}mmòl/L"} } + mole{ + dnam{"mòl"} + few{"{0}mòl"} + one{"{0}mòl"} + other{"{0}mòl"} + two{"{0}mòl"} + } part-per-million{ dnam{"ppm"} few{"{0}ppm"} @@ -1224,6 +1443,12 @@ gd{ other{"{0}‰"} two{"{0}‰"} } + permyriad{ + few{"{0}‱"} + one{"{0}‱"} + other{"{0}‱"} + two{"{0}‱"} + } } consumption{ liter-per-100kilometers{ @@ -1357,6 +1582,13 @@ gd{ per{"{0}/là"} two{"{0}là"} } + decade{ + dnam{"deich"} + few{"{0}deich"} + one{"{0}deich"} + other{"{0}deich"} + two{"{0}dheich"} + } hour{ dnam{"uair"} few{"{0}u"} @@ -1458,6 +1690,12 @@ gd{ } } energy{ + british-thermal-unit{ + few{"{0}Btu"} + one{"{0}Btu"} + other{"{0}Btu"} + two{"{0}Btu"} + } calorie{ dnam{"cal"} few{"{0}cal"} @@ -1465,6 +1703,12 @@ gd{ other{"{0}cal"} two{"{0}cal"} } + electronvolt{ + few{"{0}eV"} + one{"{0}eV"} + other{"{0}eV"} + two{"{0}eV"} + } foodcalorie{ dnam{"Cal"} few{"{0}Cal"} @@ -1500,6 +1744,26 @@ gd{ other{"{0}kWh"} two{"{0}kWh"} } + therm-us{ + few{"{0}US therm"} + one{"{0}US therm"} + other{"{0}US therm"} + two{"{0}US therm"} + } + } + force{ + newton{ + few{"{0}N"} + one{"{0}N"} + other{"{0}N"} + two{"{0}N"} + } + pound-force{ + few{"{0}lbf"} + one{"{0}lbf"} + other{"{0}lbf"} + two{"{0}lbf"} + } } frequency{ gigahertz{ @@ -1531,6 +1795,51 @@ gd{ two{"{0}MHz"} } } + graphics{ + dot-per-centimeter{ + few{"{0}dpcm"} + one{"{0}dpcm"} + other{"{0}dpcm"} + two{"{0}dpcm"} + } + dot-per-inch{ + few{"{0}dpi"} + one{"{0}dpi"} + other{"{0}dpi"} + two{"{0}dpi"} + } + em{ + few{"{0}em"} + one{"{0}em"} + other{"{0}em"} + two{"{0}em"} + } + megapixel{ + dnam{"MP"} + few{"{0}MP"} + one{"{0}MP"} + other{"{0}MP"} + two{"{0}MP"} + } + pixel{ + few{"{0}px"} + one{"{0}px"} + other{"{0}px"} + two{"{0}px"} + } + pixel-per-centimeter{ + few{"{0}ppcm"} + one{"{0}ppcm"} + other{"{0}ppcm"} + two{"{0}ppcm"} + } + pixel-per-inch{ + few{"{0}ppi"} + one{"{0}ppi"} + other{"{0}ppi"} + two{"{0}ppi"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -1556,10 +1865,10 @@ gd{ } fathom{ dnam{"aitheamh"} - few{"{0}fth"} - one{"{0}fth"} - other{"{0}fth"} - two{"{0}fth"} + few{"{0}aith"} + one{"{0}aith"} + other{"{0}aith"} + two{"{0}aith"} } foot{ dnam{"troigh"} @@ -1670,6 +1979,12 @@ gd{ other{"{0}pt"} two{"{0}pt"} } + solar-radius{ + few{"{0}R☉"} + one{"{0}R☉"} + other{"{0}R☉"} + two{"{0}R☉"} + } yard{ dnam{"slat"} few{"{0}yd"} @@ -1686,6 +2001,12 @@ gd{ other{"{0}lx"} two{"{0}lx"} } + solar-luminosity{ + few{"{0}L☉"} + one{"{0}L☉"} + other{"{0}L☉"} + two{"{0}L☉"} + } } mass{ carat{ @@ -1695,8 +2016,21 @@ gd{ other{"{0}CD"} two{"{0}CD"} } + dalton{ + dnam{"Da"} + few{"{0}Da"} + one{"{0}Da"} + other{"{0}Da"} + two{"{0}Da"} + } + earth-mass{ + few{"{0}M⊕"} + one{"{0}M⊕"} + other{"{0}M⊕"} + two{"{0}M⊕"} + } gram{ - dnam{"grama"} + dnam{"gram"} few{"{0}g"} one{"{0}g"} other{"{0}g"} @@ -1755,6 +2089,12 @@ gd{ per{"{0}/lb"} two{"{0}lb"} } + solar-mass{ + few{"{0}M☉"} + one{"{0}M☉"} + other{"{0}M☉"} + two{"{0}M☉"} + } stone{ dnam{"clach"} few{"{0}clach"} @@ -1822,6 +2162,13 @@ gd{ other{"{0}atm"} two{"{0}atm"} } + bar{ + dnam{"bàr"} + few{"{0}bàr"} + one{"{0}bhàr"} + other{"{0}bàr"} + two{"{0}bhàr"} + } hectopascal{ dnam{"hPa"} few{"{0}hPa"} @@ -1836,6 +2183,18 @@ gd{ other{"{0}″ Hg"} two{"{0}″ Hg"} } + kilopascal{ + few{"{0}kPa"} + one{"{0}kPa"} + other{"{0}kPa"} + two{"{0}kPa"} + } + megapascal{ + few{"{0}MPa"} + one{"{0}MPa"} + other{"{0}MPa"} + two{"{0}MPa"} + } millibar{ dnam{"mbàr"} few{"{0}mb"} @@ -1850,6 +2209,12 @@ gd{ other{"{0}mm Hg"} two{"{0}mm Hg"} } + pascal{ + few{"{0}Pa"} + one{"{0}Pa"} + other{"{0}Pa"} + two{"{0}Pa"} + } pound-per-square-inch{ dnam{"psi"} few{"{0}psi"} @@ -1918,6 +2283,21 @@ gd{ two{"{0}K"} } } + torque{ + newton-meter{ + few{"{0}N⋅m"} + one{"{0}N⋅m"} + other{"{0}N⋅m"} + two{"{0}N⋅m"} + } + pound-foot{ + dnam{"lbf⋅ft"} + few{"{0}lbf⋅ft"} + one{"{0}lbf⋅ft"} + other{"{0}lbf⋅ft"} + two{"{0}lbf⋅ft"} + } + } volume{ acre-foot{ dnam{"ac ft"} @@ -1926,6 +2306,12 @@ gd{ other{"{0}ac ft"} two{"{0}ac ft"} } + barrel{ + few{"{0}bbl"} + one{"{0}bbl"} + other{"{0}bbl"} + two{"{0}bbl"} + } bushel{ dnam{"buiseal"} few{"{0}bu"} @@ -2019,6 +2405,13 @@ gd{ other{"{0}fl oz"} two{"{0}fl oz"} } + fluid-ounce-imperial{ + dnam{"fl oz ìmp."} + few{"{0}fl oz ì."} + one{"{0}fl oz ì."} + other{"{0}fl oz ì."} + two{"{0}fl oz ì."} + } gallon{ dnam{"gal"} few{"{0}gal"} @@ -2028,12 +2421,12 @@ gd{ two{"{0}gal"} } gallon-imperial{ - dnam{"gal imp."} - few{"{0} gal i."} - one{"{0} ghal i."} - other{"{0} gal i."} - per{"{0}/gal i."} - two{"{0} ghal i."} + dnam{"gal ìmp."} + few{"{0} gal ì."} + one{"{0} ghal ì."} + other{"{0} gal ì."} + per{"{0}/gal ì."} + two{"{0} ghal ì."} } hectoliter{ dnam{"hL"} @@ -2163,6 +2556,13 @@ gd{ other{"{0} ac"} two{"{0} ac"} } + dunam{ + dnam{"dönüm"} + few{"{0} dönüm"} + one{"{0} dönüm"} + other{"{0} dönüm"} + two{"{0} dhönüm"} + } hectare{ dnam{"heactair"} few{"{0} ha"} @@ -2250,6 +2650,13 @@ gd{ other{"{0} mmòl/L"} two{"{0} mmòl/L"} } + mole{ + dnam{"mòl"} + few{"{0} mòl"} + one{"{0} mòl"} + other{"{0} mòl"} + two{"{0} mòl"} + } part-per-million{ dnam{"ppm"} few{"{0} ppm"} @@ -2271,6 +2678,9 @@ gd{ other{"{0}‰"} two{"{0}‰"} } + permyriad{ + dnam{"sna deich mìltean"} + } } consumption{ liter-per-100kilometers{ @@ -2295,11 +2705,11 @@ gd{ two{"{0} mì/g"} } mile-per-gallon-imperial{ - dnam{"mìle/gal imp."} - few{"{0} mì/gal imp."} - one{"{0} mhì/gal imp."} - other{"{0} mì/gal imp."} - two{"{0} mhì/gal imp."} + dnam{"mìle/gal ìmp."} + few{"{0} mì/gal ìmp."} + one{"{0} mhì/gal ìmp."} + other{"{0} mì/gal ìmp."} + two{"{0} mhì/gal ìmp."} } } coordinate{ @@ -2404,6 +2814,13 @@ gd{ per{"{0}/là"} two{"{0} là"} } + decade{ + dnam{"deich"} + few{"{0} deich"} + one{"{0} deich"} + other{"{0} deich"} + two{"{0} dheich"} + } hour{ dnam{"uair"} few{"{0} uair"} @@ -2420,7 +2837,7 @@ gd{ two{"{0} μs"} } millisecond{ - dnam{"m-dhiog"} + dnam{"mili-diog"} few{"{0} ms"} one{"{0} ms"} other{"{0} ms"} @@ -2443,7 +2860,7 @@ gd{ two{"{0} mhìos"} } nanosecond{ - dnam{"n-dhiog"} + dnam{"nano-diog"} few{"{0} ns"} one{"{0} ns"} other{"{0} ns"} @@ -2505,6 +2922,9 @@ gd{ } } energy{ + british-thermal-unit{ + dnam{"aonad-teasa Breatannach"} + } calorie{ dnam{"cal"} few{"{0} cal"} @@ -2512,6 +2932,9 @@ gd{ other{"{0} cal"} two{"{0} cal"} } + electronvolt{ + dnam{"volt-eleactroin"} + } foodcalorie{ dnam{"Cal"} few{"{0} Cal"} @@ -2547,6 +2970,17 @@ gd{ other{"{0} kWh"} two{"{0} kWh"} } + therm-us{ + dnam{"aonad-teasa nan SA"} + } + } + force{ + newton{ + dnam{"newton"} + } + pound-force{ + dnam{"punnd-fhorsa"} + } } frequency{ gigahertz{ @@ -2578,6 +3012,11 @@ gd{ two{"{0} MHz"} } } + graphics{ + megapixel{ + dnam{"meaga-piogsail"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -2655,7 +3094,7 @@ gd{ two{"{0} m"} } micrometer{ - dnam{"µ-mheatair"} + dnam{"µ-meatair"} few{"{0} µm"} one{"{0} µm"} other{"{0} µm"} @@ -2717,6 +3156,9 @@ gd{ other{"{0} pt"} two{"{0} pt"} } + solar-radius{ + dnam{"rèideas-grèine"} + } yard{ dnam{"slat"} few{"{0} slat"} @@ -2733,6 +3175,9 @@ gd{ other{"{0} lx"} two{"{0} lx"} } + solar-luminosity{ + dnam{"boillsgeachd-ghrèine"} + } } mass{ carat{ @@ -2742,8 +3187,18 @@ gd{ other{"{0} CD"} two{"{0} CD"} } + dalton{ + dnam{"dalton"} + few{"{0} Da"} + one{"{0} Da"} + other{"{0} Da"} + two{"{0} Da"} + } + earth-mass{ + dnam{"tomad-talmhainn"} + } gram{ - dnam{"grama"} + dnam{"gram"} few{"{0} g"} one{"{0} g"} other{"{0} g"} @@ -2802,6 +3257,9 @@ gd{ per{"{0}/lb"} two{"{0} lb"} } + solar-mass{ + dnam{"tomad-grèine"} + } stone{ dnam{"clach"} few{"{0} clach"} @@ -2869,6 +3327,13 @@ gd{ other{"{0} àile"} two{"{0} àile"} } + bar{ + dnam{"bàr"} + few{"{0} bàr"} + one{"{0} bhàr"} + other{"{0} bàr"} + two{"{0} bhàr"} + } hectopascal{ dnam{"hPa"} few{"{0} hPa"} @@ -2883,6 +3348,12 @@ gd{ other{"{0} inHg"} two{"{0} inHg"} } + kilopascal{ + few{"{0} kPa"} + one{"{0} kPa"} + other{"{0} kPa"} + two{"{0} kPa"} + } millibar{ dnam{"mbàr"} few{"{0} mbàr"} @@ -2965,6 +3436,15 @@ gd{ two{"{0} K"} } } + torque{ + pound-foot{ + dnam{"lbf⋅ft"} + few{"{0} lbf⋅ft"} + one{"{0} lbf⋅ft"} + other{"{0} lbf⋅ft"} + two{"{0} lbf⋅ft"} + } + } volume{ acre-foot{ dnam{"acair-throigh"} @@ -2973,6 +3453,9 @@ gd{ other{"{0} ac ft"} two{"{0} ac ft"} } + barrel{ + dnam{"baraill"} + } bushel{ dnam{"buiseal"} few{"{0} bu"} @@ -3066,6 +3549,13 @@ gd{ other{"{0} fl oz"} two{"{0} fl oz"} } + fluid-ounce-imperial{ + dnam{"fl oz ìmp."} + few{"{0} fl oz ìmp."} + one{"{0} fl oz ìmp."} + other{"{0} fl oz ìmp."} + two{"{0} fl oz ìmp."} + } gallon{ dnam{"gal"} few{"{0} gal"} @@ -3075,12 +3565,12 @@ gd{ two{"{0} gal"} } gallon-imperial{ - dnam{"gal imp."} - few{"{0} gal imp."} - one{"{0} ghal imp."} - other{"{0} gal imp."} - per{"{0}/gal imp."} - two{"{0} ghal imp."} + dnam{"gal ìmp."} + few{"{0} gal ìmp."} + one{"{0} ghal ìmp."} + other{"{0} gal ìmp."} + per{"{0}/gal ìmp."} + two{"{0} ghal ìmp."} } hectoliter{ dnam{"hL"} diff --git a/source/data/unit/gl.txt b/source/data/unit/gl.txt index f73aefd..2eeb559 100644 --- a/source/data/unit/gl.txt +++ b/source/data/unit/gl.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gl{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -42,7 +42,7 @@ gl{ other{"{0} radiáns"} } revolution{ - dnam{"revoluciones"} + dnam{"revolucións"} one{"{0} revolución"} other{"{0} revolucións"} } @@ -173,10 +173,10 @@ gl{ } coordinate{ dnam{"punto cardinal"} - east{"{0} L"} - north{"{0} N"} - south{"{0} S"} - west{"{0} O"} + east{"{0} leste"} + north{"{0} norte"} + south{"{0} sur"} + west{"{0} oeste"} } digital{ bit{ @@ -247,6 +247,11 @@ gl{ other{"{0} días"} per{"{0} por día"} } + decade{ + dnam{"décadas"} + one{"{0} década"} + other{"{0} décadas"} + } hour{ dnam{"horas"} one{"{0} hora"} @@ -301,14 +306,14 @@ gl{ } electric{ ampere{ - dnam{"amperios"} - one{"{0} amperio"} - other{"{0} amperios"} + dnam{"amperes"} + one{"{0} ampere"} + other{"{0} amperes"} } milliampere{ - dnam{"miliamperios"} - one{"{0} miliamperio"} - other{"{0} miliamperios"} + dnam{"miliamperes"} + one{"{0} miliampere"} + other{"{0} miliamperes"} } ohm{ dnam{"ohms"} @@ -333,9 +338,9 @@ gl{ other{"{0} calorías"} } electronvolt{ - dnam{"electrón-volts"} - one{"{0} electrón-volt"} - other{"{0} electrón-volts"} + dnam{"electronvolts"} + one{"{0} electronvolt"} + other{"{0} electronvolts"} } foodcalorie{ dnam{"quilocalorías"} @@ -358,9 +363,14 @@ gl{ other{"{0} quilojoules"} } kilowatt-hour{ - dnam{"quilowatts/hora"} - one{"{0} quilowatt/hora"} - other{"{0} quilowatts/hora"} + dnam{"quilowatts hora"} + one{"{0} quilowatt hora"} + other{"{0} quilowatts hora"} + } + therm-us{ + dnam{"therms estadounidenses"} + one{"{0} therm estadounidense"} + other{"{0} therms estadounidenses"} } } force{ @@ -377,24 +387,61 @@ gl{ } frequency{ gigahertz{ - dnam{"xigahertz"} + dnam{"xigahertzs"} one{"{0} xigahertz"} - other{"{0} xigahertz"} + other{"{0} xigahertzs"} } hertz{ - dnam{"hertz"} + dnam{"hertzs"} one{"{0} hertz"} - other{"{0} hertz"} + other{"{0} hertzs"} } kilohertz{ - dnam{"kilohertz"} - one{"{0} kilohertz"} - other{"{0} kilohertz"} + dnam{"quilohertzs"} + one{"{0} quilohertz"} + other{"{0} quilohertzs"} } megahertz{ - dnam{"megahertz"} + dnam{"megahertzs"} one{"{0} megahertz"} - other{"{0} megahertz"} + other{"{0} megahertzs"} + } + } + graphics{ + dot-per-centimeter{ + dnam{"puntos por centímetro"} + one{"{0} punto por centímetro"} + other{"{0} puntos por centímetro"} + } + dot-per-inch{ + dnam{"puntos por polgada"} + one{"{0} punto por polgada"} + other{"{0} puntos por polgada"} + } + em{ + dnam{"cuadratíns"} + one{"{0} cuadratín"} + other{"{0} cuadratíns"} + } + megapixel{ + dnam{"megapíxeles"} + one{"{0} megapíxel"} + other{"{0} megapíxeles"} + } + pixel{ + dnam{"píxeles"} + one{"{0} píxel"} + other{"{0} píxeles"} + } + pixel-per-centimeter{ + dnam{"píxeles por centímetro"} + one{"{0} píxel por centímetro"} + other{"{0} píxeles por centímetro"} + } + pixel-per-inch{ + dnam{"píxeles por polgada"} + one{"{0} píxel por polgada"} + other{"{0} píxeles por polgada"} } } length{ @@ -474,9 +521,9 @@ gl{ other{"{0} millas náuticas"} } parsec{ - dnam{"pársecs"} - one{"{0} pársec"} - other{"{0} pársecs"} + dnam{"parsecs"} + one{"{0} parsec"} + other{"{0} parsecs"} } picometer{ dnam{"picómetros"} @@ -501,9 +548,9 @@ gl{ } light{ lux{ - dnam{"luxes"} + dnam{"lux"} one{"{0} lux"} - other{"{0} luxes"} + other{"{0} lux"} } solar-luminosity{ dnam{"luminosidades solares"} @@ -604,9 +651,9 @@ gl{ other{"{0} megawatts"} } milliwatt{ - dnam{"milliwatts"} - one{"{0} milliwatt"} - other{"{0} milliwatts"} + dnam{"miliwatts"} + one{"{0} miliwatt"} + other{"{0} miliwatts"} } watt{ dnam{"watts"} @@ -620,6 +667,11 @@ gl{ one{"{0} atmosfera"} other{"{0} atmosferas"} } + bar{ + dnam{"bares"} + one{"{0} bar"} + other{"{0} bares"} + } hectopascal{ dnam{"hectopascais"} one{"{0} hectopascal"} @@ -650,6 +702,11 @@ gl{ one{"{0} milímetro de mercurio"} other{"{0} milímetros de mercurio"} } + pascal{ + dnam{"pascais"} + one{"{0} pascal"} + other{"{0} pascais"} + } pound-per-square-inch{ dnam{"libras por polgada cadrada"} one{"{0} libra por polgada cadrada"} @@ -695,9 +752,9 @@ gl{ other{"{0} graos"} } kelvin{ - dnam{"graos Kelvin"} - one{"{0} grao Kelvin"} - other{"{0} graos Kelvin"} + dnam{"kelvins"} + one{"{0} kelvin"} + other{"{0} kelvins"} } } torque{ @@ -844,9 +901,9 @@ gl{ other{"{0} culleradas"} } teaspoon{ - dnam{"culleriñas"} - one{"{0} culleriña"} - other{"{0} culleriñas"} + dnam{"culleradiñas"} + one{"{0} culleradiña"} + other{"{0} culleradiñas"} } } } @@ -875,7 +932,7 @@ gl{ } } coordinate{ - dnam{"dirección"} + dnam{"punto"} east{"{0} L"} north{"{0} N"} south{"{0} S"} @@ -883,7 +940,7 @@ gl{ } duration{ day{ - dnam{"d"} + dnam{"día"} one{"{0} d"} other{"{0} d"} } @@ -903,7 +960,7 @@ gl{ other{"{0} min"} } month{ - dnam{"m."} + dnam{"mes"} one{"{0} m."} other{"{0} m."} } @@ -1032,7 +1089,7 @@ gl{ dunam{ dnam{"dunams"} one{"{0} dunam"} - other{"{0} dunam"} + other{"{0} dunams"} } hectare{ dnam{"hectáreas"} @@ -1086,8 +1143,8 @@ gl{ concentr{ karat{ dnam{"quilates"} - one{"{0} CT"} - other{"{0} CT"} + one{"{0} kt"} + other{"{0} kt"} } milligram-per-deciliter{ dnam{"mg/dl"} @@ -1100,9 +1157,8 @@ gl{ other{"{0} mmol/l"} } mole{ - dnam{"mol"} - one{"{0} moles"} - other{"{0} moles"} + one{"{0} mol"} + other{"{0} mol"} } part-per-million{ dnam{"ppm"} @@ -1120,7 +1176,6 @@ gl{ other{"{0} ‰"} } permyriad{ - dnam{"‱"} one{"{0} ‱"} other{"{0} ‱"} } @@ -1148,7 +1203,7 @@ gl{ } } coordinate{ - dnam{"dirección"} + dnam{"punto"} east{"{0} L"} north{"{0} N"} south{"{0} S"} @@ -1157,8 +1212,8 @@ gl{ digital{ bit{ dnam{"bit"} - one{"{0} bit"} - other{"{0} bit"} + one{"{0} b"} + other{"{0} b"} } byte{ dnam{"byte"} @@ -1219,9 +1274,14 @@ gl{ } day{ dnam{"días"} - one{"{0} d"} - other{"{0} d"} - per{"{0}/d"} + one{"{0} día"} + other{"{0} días"} + per{"{0}/día"} + } + decade{ + dnam{"déc."} + one{"{0} déc."} + other{"{0} déc."} } hour{ dnam{"h"} @@ -1277,7 +1337,7 @@ gl{ } electric{ ampere{ - dnam{"amp"} + dnam{"A"} one{"{0} A"} other{"{0} A"} } @@ -1308,11 +1368,6 @@ gl{ one{"{0} cal"} other{"{0} cal"} } - electronvolt{ - dnam{"electrón-volt"} - one{"{0} eV"} - other{"{0} eV"} - } foodcalorie{ dnam{"kcal"} one{"{0} kcal"} @@ -1334,21 +1389,21 @@ gl{ other{"{0} kJ"} } kilowatt-hour{ - dnam{"kW/h"} - one{"{0} kW/h"} - other{"{0} kW/h"} + one{"{0} kWh"} + other{"{0} kWh"} + } + therm-us{ + dnam{"thm U.S."} + one{"{0} thm U.S."} + other{"{0} thm U.S."} } } force{ newton{ dnam{"newton"} - one{"{0} N"} - other{"{0} N"} } pound-force{ dnam{"libra forza"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1373,6 +1428,33 @@ gl{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + dot-per-inch{ + dnam{"ppp"} + one{"{0} ppp"} + other{"{0} ppp"} + } + megapixel{ + dnam{"Mpx"} + one{"{0} Mpx"} + other{"{0} Mpx"} + } + pixel-per-centimeter{ + dnam{"px/cm"} + one{"{0} px/cm"} + other{"{0} px/cm"} + } + pixel-per-inch{ + dnam{"px/in"} + one{"{0} px/in"} + other{"{0} px/in"} + } + } length{ astronomical-unit{ dnam{"ua"} @@ -1410,8 +1492,8 @@ gl{ } light-year{ dnam{"anos luz"} - one{"{0} al"} - other{"{0} al"} + one{"{0} a.l."} + other{"{0} a.l."} } meter{ dnam{"m"} @@ -1450,7 +1532,7 @@ gl{ other{"{0} M"} } parsec{ - dnam{"pársecs"} + dnam{"parsecs"} one{"{0} pc"} other{"{0} pc"} } @@ -1466,8 +1548,6 @@ gl{ } solar-radius{ dnam{"raios solares"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"iardas"} @@ -1477,35 +1557,29 @@ gl{ } light{ lux{ - dnam{"luxes"} + dnam{"lux"} one{"{0} lx"} other{"{0} lx"} } solar-luminosity{ dnam{"luminosidades solares"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ carat{ dnam{"quilates"} - one{"{0} CT"} - other{"{0} CT"} + one{"{0} ct"} + other{"{0} ct"} } dalton{ dnam{"daltons"} - one{"{0} Da"} - other{"{0} Da"} } earth-mass{ dnam{"masas da Terra"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"gramos"} - one{"{0} gram"} + one{"{0} g"} other{"{0} g"} per{"{0}/g"} } @@ -1549,8 +1623,6 @@ gl{ } solar-mass{ dnam{"masas solares"} - one{"{0} M☉"} - other{"{0} M☉"} } ton{ dnam{"tn EUA"} @@ -1596,6 +1668,11 @@ gl{ one{"{0} atm"} other{"{0} atm"} } + bar{ + dnam{"bar"} + one{"{0} bar"} + other{"{0} bar"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -1606,25 +1683,15 @@ gl{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} one{"{0} mbar"} other{"{0} mbar"} } millimeter-of-mercury{ - dnam{"mm Hg"} - one{"{0} mm Hg"} - other{"{0} mm Hg"} + dnam{"mmHg"} + one{"{0} mmHg"} + other{"{0} mmHg"} } pound-per-square-inch{ dnam{"psi"} @@ -1678,9 +1745,9 @@ gl{ } torque{ newton-meter{ - dnam{"Nm"} - one{"{0} Nm"} - other{"{0} Nm"} + dnam{"N⋅m"} + one{"{0} N⋅m"} + other{"{0} N⋅m"} } pound-foot{ dnam{"lbf ft"} @@ -1696,8 +1763,6 @@ gl{ } barrel{ dnam{"barril"} - one{"{0} bbl"} - other{"{0} bbl"} } centiliter{ dnam{"cl"} @@ -1815,14 +1880,14 @@ gl{ other{"{0} qt"} } tablespoon{ - dnam{"tbsp"} - one{"{0} tbsp"} - other{"{0} tbsp"} + dnam{"cull."} + one{"{0} cull."} + other{"{0} cull."} } teaspoon{ - dnam{"tsp"} - one{"{0} tsp"} - other{"{0} tsp"} + dnam{"cullña."} + one{"{0} cullña."} + other{"{0} cullña."} } } } diff --git a/source/data/unit/gsw.txt b/source/data/unit/gsw.txt index 392c013..c898b8f 100644 --- a/source/data/unit/gsw.txt +++ b/source/data/unit/gsw.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gsw{ - Version{"2.1.47.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/gu.txt b/source/data/unit/gu.txt index 993ace3..876410e 100644 --- a/source/data/unit/gu.txt +++ b/source/data/unit/gu.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gu{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -106,6 +106,7 @@ gu{ } compound{ per{"{0} પ્રતિ {1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -247,6 +248,11 @@ gu{ other{"{0} દિવસ"} per{"{0} પ્રતિ દિવસ"} } + decade{ + dnam{"દાયકા"} + one{"{0} દાયકો"} + other{"{0} દાયકા"} + } hour{ dnam{"કલાક"} one{"{0} કલાક"} @@ -362,6 +368,11 @@ gu{ one{"{0} કિલોવૉટ કલાક"} other{"{0} કિલોવૉટ-કલાક"} } + therm-us{ + dnam{"યુએસ થર્મ"} + one{"{0} યુએસ થર્મ"} + other{"{0} યુએસ થર્મ"} + } } force{ newton{ @@ -397,6 +408,36 @@ gu{ other{"{0} મેગાહર્ટ્ઝ"} } } + graphics{ + dot-per-centimeter{ + dnam{"ડૉટ્સ પ્રતિ સેન્ટિમીટર"} + one{"{0} ડૉટ પ્રતિ સેન્ટિમીટર"} + other{"{0} ડૉટ્સ પ્રતિ સેન્ટિમીટર"} + } + dot-per-inch{ + dnam{"ડૉટ્સ પ્રતિ ઇંચ"} + one{"{0} ડૉટ પ્રતિ ઇંચ"} + other{"{0} ડૉટ્સ પ્રતિ ઇંચ"} + } + em{ + dnam{"ટાઇપોગ્રાફિક એમ"} + } + pixel{ + dnam{"પિક્સેલ"} + one{"{0} પિક્સેલ"} + other{"{0} પિક્સેલ"} + } + pixel-per-centimeter{ + dnam{"પિક્સેલ પ્રતિ સેન્ટિમીટર"} + one{"{0} પિક્સેલ પ્રતિ સેન્ટિમીટર"} + other{"{0} પિક્સેલ પ્રતિ સેન્ટિમીટર"} + } + pixel-per-inch{ + dnam{"પિક્સેલ પ્રતિ ઇંચ"} + one{"{0} પિક્સેલ પ્રતિ ઇંચ"} + other{"{0} પિક્સેલ પ્રતિ ઇંચ"} + } + } length{ astronomical-unit{ dnam{"ખગોળીય યુનિટ"} @@ -625,6 +666,11 @@ gu{ one{"{0} વાતાવરણ"} other{"{0} વાતાવરણ"} } + bar{ + dnam{"બાર"} + one{"{0} બાર"} + other{"{0} બાર"} + } hectopascal{ dnam{"હેક્ટૉપાસ્કલ"} one{"{0} હેક્ટૉપાસ્કલ"} @@ -655,6 +701,11 @@ gu{ one{"{0} પારાનું મિલિમીટર"} other{"{0} પારાનું મિલિમીટર"} } + pascal{ + dnam{"પાસ્કલ"} + one{"{0} પાસ્કલ"} + other{"{0} પાસ્કલ"} + } pound-per-square-inch{ dnam{"પાઉન્ડ પ્રતિ વર્ગ ઇંચ"} one{"{0} પાઉન્ડ પ્રતિ વર્ગ ઇંચ"} @@ -878,6 +929,13 @@ gu{ compound{ per{"{0}/{1}"} } + concentr{ + percent{ + dnam{"%"} + one{"{0}%"} + other{"{0}%"} + } + } consumption{ liter-per-100kilometers{ dnam{"લિ/100 કિમી"} @@ -984,6 +1042,7 @@ gu{ other{"{0} માઇલ"} } mile-scandinavian{ + dnam{"smi"} one{"{0}smi"} other{"{0}smi"} } @@ -1033,7 +1092,25 @@ gu{ other{"{0}સ્ટોન"} } } + power{ + horsepower{ + one{"{0} hp"} + other{"{0} hp"} + } + kilowatt{ + one{"{0} kW"} + other{"{0} kW"} + } + watt{ + one{"{0} W"} + other{"{0} W"} + } + } pressure{ + hectopascal{ + one{"{0} hPa"} + other{"{0} hPa"} + } inch-hg{ one{"{0} inHg"} other{"{0} inHg"} @@ -1062,6 +1139,10 @@ gu{ one{"{0}°C"} other{"{0}°C"} } + fahrenheit{ + one{"{0}°F"} + other{"{0}°F"} + } } volume{ liter{ @@ -1199,9 +1280,13 @@ gu{ } percent{ dnam{"ટકા"} + one{"{0}%"} + other{"{0}%"} } permille{ dnam{"પ્રતિમાઈલ"} + one{"{0}‰"} + other{"{0}‰"} } permyriad{ dnam{"પરમિરિયડ"} @@ -1307,6 +1392,11 @@ gu{ other{"{0} દિવસ"} per{"{0}/ દિવસ"} } + decade{ + dnam{"દાયકા"} + one{"{0} દા"} + other{"{0} દા"} + } hour{ dnam{"કલાક"} one{"{0} કલાક"} @@ -1422,6 +1512,11 @@ gu{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"યુએસ થર્મ"} + one{"{0} યુએસ થર્મ"} + other{"{0} યુએસ થર્મ"} + } } force{ newton{ @@ -1457,6 +1552,11 @@ gu{ other{"{0} MHz"} } } + graphics{ + pixel{ + dnam{"પિક્સેલ"} + } + } length{ astronomical-unit{ dnam{"ખગોળીય યુનિટ"} @@ -1674,12 +1774,22 @@ gu{ other{"{0} mW"} } watt{ - dnam{"watt"} + dnam{"વૉટ"} one{"{0} W"} other{"{0} W"} } } pressure{ + atmosphere{ + dnam{"atm"} + one{"{0} atm"} + other{"{0} atm"} + } + bar{ + dnam{"બાર"} + one{"{0} બાર"} + other{"{0} બાર"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -1710,6 +1820,11 @@ gu{ one{"{0} mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} diff --git a/source/data/unit/guz.txt b/source/data/unit/guz.txt index be4d731..c4f6de4 100644 --- a/source/data/unit/guz.txt +++ b/source/data/unit/guz.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License guz{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/gv.txt b/source/data/unit/gv.txt index 8acf062..ff18706 100644 --- a/source/data/unit/gv.txt +++ b/source/data/unit/gv.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gv{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/ha.txt b/source/data/unit/ha.txt index ec48b90..b9a2f18 100644 --- a/source/data/unit/ha.txt +++ b/source/data/unit/ha.txt @@ -1,10 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ha{ - Version{"2.1.48.45"} - durationUnits{ - hm{"h:mm"} - hms{"h:mm:ss"} - ms{"m:ss"} - } + Version{"36"} } diff --git a/source/data/unit/ha_NE.txt b/source/data/unit/ha_NE.txt deleted file mode 100644 index 8dddaa0..0000000 --- a/source/data/unit/ha_NE.txt +++ /dev/null @@ -1,10 +0,0 @@ -// © 2016 and later: Unicode, Inc. and others. -// License & terms of use: http://www.unicode.org/copyright.html#License -ha_NE{ - Version{"2.1.48.77"} - durationUnits{ - hm{"h:mm"} - hms{"h:mm:ss"} - ms{"m:ss"} - } -} diff --git a/source/data/unit/haw.txt b/source/data/unit/haw.txt index a01a23e..8707365 100644 --- a/source/data/unit/haw.txt +++ b/source/data/unit/haw.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License haw{ - Version{"2.1.48.4"} + Version{"36"} units{ duration{ day{ diff --git a/source/data/unit/he.txt b/source/data/unit/he.txt index 86c8277..5cbb35f 100644 --- a/source/data/unit/he.txt +++ b/source/data/unit/he.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License he{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -139,7 +139,7 @@ he{ } } compound{ - per{"{0} לכל {1}"} + per{"{0} ל{1}"} } concentr{ karat{ @@ -252,11 +252,11 @@ he{ two{"{0} בייט"} } gigabit{ - dnam{"גיגהביט"} - many{"{0} גיגהביט"} - one{"{0} גיגהביט"} - other{"{0} גיגהביט"} - two{"{0} גיגהביט"} + dnam{"ג׳יגה-ביט"} + many{"{0} ג'יגה-ביט"} + one{"{0} ג'יגה-ביט"} + other{"{0} ג'יגה-ביט"} + two{"{0} ג'יגה-ביט"} } gigabyte{ dnam{"ג׳יגה-בייט"} @@ -331,6 +331,13 @@ he{ per{"{0}/יום"} two{"יומיים"} } + decade{ + dnam{"עשורים"} + many{"{0} עשורים"} + one{"עשור {0}"} + other{"{0} עשורים"} + two{"{0} עשורים"} + } hour{ dnam{"שעות"} many{"{0} שעות"} @@ -488,6 +495,9 @@ he{ other{"{0} קילוואט-שעה"} two{"{0} קילוואט-שעה"} } + therm-us{ + dnam{"יחידה תרמית בארה״ב"} + } } force{ newton{ @@ -535,6 +545,57 @@ he{ two{"{0} מגה-הרץ"} } } + graphics{ + dot-per-centimeter{ + dnam{"נקודות לסנטימטר"} + many{"‎{0} dpcm"} + one{"נקודה {0} לסנטימטר"} + other{"{0} נקודות לסנטימטר"} + two{"‎{0} dpcm‎"} + } + dot-per-inch{ + dnam{"נקודות לאינץ׳"} + many{"‎{0} dpi‎"} + one{"‎{0} dpi‎"} + other{"‎{0} dots per inch‎"} + two{"‎{0} dpi‎"} + } + em{ + dnam{"קו מפריד מסוג em"} + many{"‎{0} em ‎"} + one{"‎{0} em ‎"} + other{"‎{0} ems ‎"} + two{"‎{0} em ‎"} + } + megapixel{ + dnam{"מגה-פיקסל"} + many{"‎{0} MP ‎"} + one{"‎{0} MP ‎"} + other{"‎{0} MP ‎"} + two{"‎{0} MP ‎"} + } + pixel{ + dnam{"פיקסלים"} + many{"‎{0} px ‎"} + one{"‎{0} px ‎"} + other{"‎{0} px ‎"} + two{"‎{0} px ‎"} + } + pixel-per-centimeter{ + dnam{"פיקסלים לסנטימטר"} + many{"‎{0} ppcm‎"} + one{"‎{0} ppcm‎"} + other{"‎{0} ppcm‎"} + two{"‎{0} ppcm‎"} + } + pixel-per-inch{ + dnam{"פיקסלים לאינץ׳"} + many{"‎{0} ppi‎"} + one{"{0} פיקסל לאינץ'"} + other{"{0} פיקסלים לאינץ'"} + two{"‎{0} ppi‎"} + } + } length{ astronomical-unit{ dnam{"יחידות אסטרונומיות"} @@ -662,10 +723,10 @@ he{ } solar-radius{ dnam{"רדיוס סולרי"} - many{"{0} R☉"} + many{"{0} רדיוס סולרי"} one{"{0} רדיוס סולרי"} - other{"{0} R☉"} - two{"{0} R☉"} + other{"{0} רדיוס סולרי"} + two{"{0} רדיוס סולרי"} } yard{ dnam{"יארד"} @@ -685,10 +746,6 @@ he{ } solar-luminosity{ dnam{"אנרגיה סולארית ביחידת זמן"} - many{"{0} L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - two{"{0} L☉"} } } mass{ @@ -847,6 +904,13 @@ he{ other{"{0} אטמוספרות"} two{"{0} אטמוספרה"} } + bar{ + dnam{"בר"} + many{"{0} בר"} + one{"{0} בר"} + other{"{0} בר"} + two{"{0} בר"} + } hectopascal{ dnam{"הקטופסקל"} many{"{0} הקטופסקל"} @@ -889,6 +953,13 @@ he{ other{"{0} מילימטר כספית"} two{"שני מילימטר כספית"} } + pascal{ + dnam{"פסקל"} + many{"{0} פסקל"} + one{"{0} פסקל"} + other{"{0} פסקל"} + two{"{0} פסקל"} + } pound-per-square-inch{ dnam{"פאונד לאינץ׳ רבוע"} many{"{0} פאונד לאינץ׳ רבוע"} @@ -1167,6 +1238,17 @@ he{ acceleration{ g-force{ dnam{"כוח ג׳י"} + many{"{0} G"} + one{"{0} G"} + other{"{0} G"} + two{"{0} G"} + } + meter-per-second-squared{ + dnam{"m/s²"} + many{"{0} m/s²"} + one{"{0} m/s²"} + other{"{0} m/s²"} + two{"{0} m/s²"} } } angle{ @@ -1182,6 +1264,12 @@ he{ other{"{0} שנ׳"} two{"{0} שנ׳"} } + degree{ + many{"{0}°"} + one{"{0}°"} + other{"{0}°"} + two{"{0}°"} + } } area{ acre{ @@ -1305,6 +1393,10 @@ he{ } microsecond{ dnam{"μsecs"} + many{"{0} μs"} + one{"{0} μs"} + other{"{0} μs"} + two{"{0} μs"} } millisecond{ dnam{"ms"} @@ -1329,6 +1421,12 @@ he{ per{"{0}/חודש"} two{"{0} ח׳"} } + nanosecond{ + many{"{0} ns"} + one{"{0} ns"} + other{"{0} ns"} + two{"{0} ns"} + } second{ dnam{"שנ׳"} many{"{0} שנ׳"} @@ -1355,6 +1453,13 @@ he{ } } length{ + astronomical-unit{ + dnam{"au"} + many{"{0} au"} + one{"{0} au"} + other{"{0} au"} + two{"{0} au"} + } centimeter{ dnam{"ס״מ"} many{"{0} ס״מ"} @@ -1404,11 +1509,18 @@ he{ meter{ dnam{"מטר"} many{"{0} מ׳"} - one{"מ' {0}"} + one{"{0} מ׳"} other{"{0} מ׳"} per{"{0}/מ׳"} two{"{0} מ′"} } + micrometer{ + dnam{"µm"} + many{"{0} µm"} + one{"{0} µm"} + other{"{0} µm"} + two{"{0} µm"} + } mile{ dnam{"מייל"} many{"{0} מייל"} @@ -1416,6 +1528,13 @@ he{ other{"{0} מייל"} two{"{0} מייל"} } + mile-scandinavian{ + dnam{"smi"} + many{"{0} smi"} + one{"{0} smi"} + other{"{0} smi"} + two{"{0} smi"} + } millimeter{ dnam{"מ״מ"} many{"{0} מ״מ"} @@ -1423,6 +1542,13 @@ he{ other{"{0} מ״מ"} two{"{0} מ״מ"} } + nanometer{ + dnam{"nm"} + many{"{0} nm"} + one{"{0} nm"} + other{"{0} nm"} + two{"{0} nm"} + } nautical-mile{ dnam{"מ״י"} many{"{0} מ״י"} @@ -1430,6 +1556,13 @@ he{ other{"{0} מ״י"} two{"שני מ״י"} } + parsec{ + dnam{"pc"} + many{"{0} pc"} + one{"{0} pc"} + other{"{0} pc"} + two{"{0} pc"} + } picometer{ dnam{"פ״מ"} many{"{0} פיקומטר"} @@ -1455,6 +1588,10 @@ he{ mass{ carat{ dnam{"קרט"} + many{"{0} CD"} + one{"{0} CD"} + other{"{0} CD"} + two{"{0} CD"} } gram{ dnam{"גרם"} @@ -1472,6 +1609,13 @@ he{ per{"{0}/ק״ג"} two{"{0}kg"} } + metric-ton{ + dnam{"t"} + many{"{0} t"} + one{"{0} t"} + other{"{0} t"} + two{"{0} t"} + } microgram{ dnam{"מק״ג"} many{"{0} מק״ג"} @@ -1487,16 +1631,26 @@ he{ two{"{0} מ״ג"} } ounce{ + dnam{"oz"} many{"{0} אונקיות"} one{"אונקיה {0}"} other{"{0} אונקיות"} + per{"{0}/oz"} two{"{0} אונקיות"} } + ounce-troy{ + dnam{"oz t"} + many{"{0} oz t"} + one{"{0} oz t"} + other{"{0} oz t"} + two{"{0} oz t"} + } pound{ dnam{"פאונד"} many{"{0} ליבראות"} one{"ליברה {0}"} other{"{0} ליבראות"} + per{"{0}/lb"} two{"{0} ליבראות"} } ton{ @@ -1514,9 +1668,22 @@ he{ other{"{0} כ״ס"} two{"{0} כ״ס"} } + kilowatt{ + many{"{0} kW"} + one{"{0} kW"} + other{"{0} kW"} + two{"{0} kW"} + } + watt{ + many{"{0} W"} + one{"{0} W"} + other{"{0} W"} + two{"{0} W"} + } } pressure{ hectopascal{ + dnam{"hPa"} many{"{0} hPa"} one{"{0} hPa"} other{"{0} hPa"} @@ -1536,6 +1703,20 @@ he{ other{"{0} מיליבר"} two{"{0} מיליבר"} } + millimeter-of-mercury{ + dnam{"mm Hg"} + many{"{0} mm Hg"} + one{"{0} mm Hg"} + other{"{0} mm Hg"} + two{"{0} mm Hg"} + } + pound-per-square-inch{ + dnam{"psi"} + many{"{0} psi"} + one{"{0} psi"} + other{"{0} psi"} + two{"{0} psi"} + } } speed{ kilometer-per-hour{ @@ -1545,6 +1726,13 @@ he{ other{"{0} קמ״ש"} two{"{0} קמ״ש"} } + knot{ + dnam{"kn"} + many{"{0} kn"} + one{"{0} kn"} + other{"{0} kn"} + two{"{0} kn"} + } meter-per-second{ dnam{"מ׳/שנ׳"} many{"{0} מ/ש"} @@ -1568,6 +1756,27 @@ he{ other{"{0}°C"} two{"{0}°C"} } + fahrenheit{ + dnam{"°F"} + many{"{0}°F"} + one{"{0}°F"} + other{"{0}°F"} + two{"{0}°F"} + } + generic{ + dnam{"°"} + many{"{0}°"} + one{"{0}°"} + other{"{0}°"} + two{"{0}°"} + } + kelvin{ + dnam{"K"} + many{"{0} K"} + one{"{0} K"} + other{"{0} K"} + two{"{0} K"} + } } volume{ cubic-kilometer{ @@ -1576,6 +1785,12 @@ he{ other{"{0} קמ״ק"} two{"{0} קמ״ק"} } + cubic-mile{ + many{"{0} mi³"} + one{"{0} mi³"} + other{"{0} mi³"} + two{"{0} mi³"} + } liter{ dnam{"ליטר"} many{"{0} ל׳"} @@ -1642,9 +1857,9 @@ he{ area{ acre{ dnam{"אקר"} - many{"{0} ac"} - one{"{0} ac"} - other{"{0} ac"} + many{"‎{0} ac"} + one{"‎{0} ac"} + other{"‎{0} ac"} two{"{0} ac"} } dunam{ @@ -1656,10 +1871,10 @@ he{ } hectare{ dnam{"הקטאר"} - many{"{0} ha"} - one{"{0} ha"} - other{"{0} ha"} - two{"{0} ha"} + many{"‎{0} ha"} + one{"‎{0} ha"} + other{"‎{0} ha"} + two{"‎{0} ha"} } square-centimeter{ dnam{"סמ״ר"} @@ -1671,18 +1886,18 @@ he{ } square-foot{ dnam{"ft²"} - many{"{0} sq ft"} - one{"{0} sq ft"} - other{"{0} sq ft"} - two{"{0} sq ft"} + many{"‎{0} sq ft"} + one{"‎{0} sq ft"} + other{"‎{0} sq ft"} + two{"‎{0} sq ft"} } square-inch{ dnam{"in²"} - many{"{0} in²"} - one{"{0} in²"} - other{"{0} in²"} - per{"{0}/in²"} - two{"{0} in²"} + many{"‎{0} in²"} + one{"‎{0} in²"} + other{"‎{0} in²"} + per{"‎{0}/in²"} + two{"‎{0} in²"} } square-kilometer{ dnam{"קמ״ר"} @@ -1702,22 +1917,23 @@ he{ } square-mile{ dnam{"מייל רבוע"} - many{"{0} sq mi"} - one{"{0} sq mi"} - other{"{0} sq mi"} - per{"{0}/mi²"} - two{"{0} sq mi"} + many{"‎{0} sq mi"} + one{"‎{0} sq mi"} + other{"‎{0} sq mi"} + per{"‎{0}/mi²"} + two{"‎{0} sq mi"} } square-yard{ dnam{"yards²"} - many{"{0} yd²"} - one{"{0} yd²"} - other{"{0} yd²"} - two{"{0} yd²"} + many{"‎{0} yd²"} + one{"‎{0} yd²"} + other{"‎{0} yd²"} + two{"‎{0} yd²"} } } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1741,13 +1957,6 @@ he{ other{"{0} mmol/L"} two{"{0} mmol/L"} } - mole{ - dnam{"mol"} - many{"{0} mol"} - one{"{0} mol"} - other{"{0} mol"} - two{"{0} mol"} - } part-per-million{ dnam{"ppm"} many{"{0} ppm"} @@ -1769,13 +1978,6 @@ he{ other{"{0}‰"} two{"{0}‰"} } - permyriad{ - dnam{"‱"} - many{"{0}‱"} - one{"{0}‱"} - other{"{0}‱"} - two{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -1909,6 +2111,13 @@ he{ per{"{0}/יום"} two{"יומיים"} } + decade{ + dnam{"עשור"} + many{"{0} עשורים"} + one{"עשור {0}"} + other{"{0} עשורים"} + two{"{0} עשורים"} + } hour{ dnam{"שע׳"} many{"{0} שע׳"} @@ -2012,10 +2221,6 @@ he{ energy{ british-thermal-unit{ dnam{"BTU"} - many{"{0} Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - two{"{0} Btu"} } calorie{ dnam{"cal"} @@ -2024,13 +2229,6 @@ he{ other{"{0} cal"} two{"{0} cal"} } - electronvolt{ - dnam{"eV"} - many{"{0} eV"} - one{"{0} eV"} - other{"{0} eV"} - two{"{0} eV"} - } foodcalorie{ dnam{"Cal"} many{"{0} Cal"} @@ -2067,22 +2265,6 @@ he{ two{"{0} קוט״ש"} } } - force{ - newton{ - dnam{"N"} - many{"{0} N"} - one{"{0} N"} - other{"{0} N"} - two{"{0} N"} - } - pound-force{ - dnam{"lbf"} - many{"{0} lbf"} - one{"{0} lbf"} - other{"{0} lbf"} - two{"{0} lbf"} - } - } frequency{ gigahertz{ dnam{"GHz"} @@ -2113,18 +2295,62 @@ he{ two{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + many{"‎{0} dpcm"} + one{"‎{0} dpcm"} + other{"‎{0} dpcm"} + two{"‎{0} dpcm"} + } + dot-per-inch{ + many{"‎{0} dpi‎"} + one{"‎{0} dpi‎"} + other{"‎{0} dpi‎"} + two{"‎{0} dpi‎"} + } + em{ + many{"‎{0} em ‎"} + one{"‎{0} em ‎"} + other{"‎{0} em ‎"} + two{"‎{0} em ‎"} + } + megapixel{ + many{"‎{0} MP ‎"} + one{"‎{0} MP ‎"} + other{"‎{0} MP ‎"} + two{"‎{0} MP ‎"} + } + pixel{ + many{"‎{0} px ‎"} + one{"‎{0} px ‎"} + other{"‎{0} px ‎"} + two{"‎{0} px ‎"} + } + pixel-per-centimeter{ + many{"‎{0} ppcm‎"} + one{"‎{0} ppcm‎"} + other{"‎{0} ppcm‎"} + two{"‎{0} ppcm‎"} + } + pixel-per-inch{ + many{"‎{0} ppi‎"} + one{"‎{0} ppi‎"} + other{"‎{0} ppi‎"} + two{"‎{0} ppi‎"} + } + } length{ astronomical-unit{ dnam{"au"} - many{"{0} au"} - one{"{0} au"} - other{"{0} au"} - two{"{0} au"} + many{"‎{0} au"} + one{"‎{0} au"} + other{"‎{0} au"} + two{"‎{0} au"} } centimeter{ dnam{"ס״מ"} many{"{0} ס״מ"} - one{"ס\u0022מ {0}"} + one{"{0} ס״מ"} other{"{0} ס״מ"} per{"{0}/ס״מ"} two{"{0} ס״מ"} @@ -2138,19 +2364,19 @@ he{ } foot{ dnam{"רגל"} - many{"{0} ft"} - one{"{0} ft"} - other{"{0} ft"} - per{"{0}/ft"} - two{"{0} ft"} + many{"‎{0} ft"} + one{"‎{0} ft"} + other{"‎{0} ft"} + per{"‎{0}/ft"} + two{"‎{0} ft"} } inch{ dnam{"אינץ׳"} - many{"{0} in"} - one{"{0} in"} - other{"{0} in"} - per{"{0}/in"} - two{"{0} in"} + many{"‎{0} in"} + one{"‎{0} in"} + other{"‎{0} in"} + per{"‎{0}/in"} + two{"‎{0} in"} } kilometer{ dnam{"ק״מ"} @@ -2170,22 +2396,22 @@ he{ meter{ dnam{"מטרים"} many{"{0} מ׳"} - one{"מ׳"} + one{"{0} מ׳"} other{"{0} מ׳"} per{"{0}/מ׳"} - two{"שני מ׳"} + two{"{0} מ׳"} } micrometer{ dnam{"µm"} - many{"{0} µm"} - one{"{0} µm"} - other{"{0} µm"} - two{"{0} µm"} + many{"‎{0} µm‎"} + one{"‎{0} µm‎"} + other{"‎{0} µm‎"} + two{"‎{0} µm‎"} } mile{ dnam{"מייל"} many{"{0} מייל"} - one{"מייל {0}"} + one{"{0} מייל"} other{"{0} מייל"} two{"{0} מייל"} } @@ -2205,10 +2431,10 @@ he{ } nanometer{ dnam{"nm"} - many{"{0} nm"} - one{"{0} nm"} - other{"{0} nm"} - two{"{0} nm"} + many{"‎{0} nm"} + one{"‎{0} nm"} + other{"‎{0} nm"} + two{"‎{0} nm"} } nautical-mile{ dnam{"מ״י"} @@ -2219,17 +2445,17 @@ he{ } parsec{ dnam{"pc"} - many{"{0} pc"} - one{"{0} pc"} - other{"{0} pc"} - two{"{0} pc"} + many{"‎{0} pc"} + one{"‎{0} pc"} + other{"‎{0} pc"} + two{"‎{0} pc"} } picometer{ dnam{"פ״מ"} - many{"פ“מ {0}"} + many{"{0} פ\u0022מ"} one{"פ“מ {0}"} - other{"פ“מ {0}"} - two{"פ“מ {0}"} + other{"{0} פ\u0022מ"} + two{"{0} פ\u0022מ"} } point{ dnam{"נקודות"} @@ -2239,11 +2465,10 @@ he{ two{"{0} נק'"} } solar-radius{ - dnam{"R☉"} - many{"{0} R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - two{"{0} R☉"} + many{"‎{0} R☉‎"} + one{"‎{0} R☉‎"} + other{"‎{0} R☉‎"} + two{"‎{0} R☉‎"} } yard{ dnam{"יארד"} @@ -2261,13 +2486,6 @@ he{ other{"{0} lx"} two{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - many{"{0} L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - two{"{0} L☉"} - } } mass{ carat{ @@ -2277,20 +2495,6 @@ he{ other{"{0} CD"} two{"{0} CD"} } - dalton{ - dnam{"Da"} - many{"{0} Da"} - one{"{0} Da"} - other{"{0} Da"} - two{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - many{"{0} M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - two{"{0} M⊕"} - } gram{ dnam{"גרם"} many{"{0} גר׳"} @@ -2351,13 +2555,6 @@ he{ per{"{0}/lb"} two{"{0} lbs"} } - solar-mass{ - dnam{"M☉"} - many{"{0} M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - two{"{0} M☉"} - } stone{ dnam{"סטון"} many{"{0} סטון"} @@ -2425,6 +2622,13 @@ he{ other{"{0} atm"} two{"{0} atm"} } + bar{ + dnam{"בר"} + many{"{0} בר"} + one{"{0} בר"} + other{"{0} בר"} + two{"{0} בר"} + } hectopascal{ dnam{"hPa"} many{"{0} hPa"} @@ -2439,20 +2643,6 @@ he{ other{"{0} inHg"} two{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - many{"{0} kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - two{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - many{"{0} MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - two{"{0} MPa"} - } millibar{ dnam{"mbar"} many{"{0} mbar"} @@ -2535,43 +2725,26 @@ he{ two{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - many{"{0} N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - two{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - many{"{0} lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - two{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ac ft"} - many{"{0} ac ft"} - one{"{0} ac ft"} - other{"{0} ac ft"} - two{"{0} ac ft"} + many{"‎{0} ac ft"} + one{"‎{0} ac ft"} + other{"‎{0} ac ft"} + two{"‎{0} ac ft"} } barrel{ - dnam{"bbl"} - many{"{0} bbl"} - one{"{0} bbl"} - other{"{0} bbl"} - two{"{0} bbl"} + many{"‎{0} bbl"} + one{"‎{0} bbl"} + other{"‎{0} bbl"} + two{"‎{0} bbl"} } centiliter{ dnam{"cL"} - many{"{0} cL"} - one{"{0} cL"} - other{"{0} cL"} - two{"{0} cL"} + many{"‎{0} cL"} + one{"‎{0} cL"} + other{"‎{0} cL"} + two{"‎{0} cL"} } cubic-centimeter{ dnam{"סמ״ק"} @@ -2583,17 +2756,17 @@ he{ } cubic-foot{ dnam{"feet³"} - many{"{0} ft³"} - one{"{0} ft³"} - other{"{0} ft³"} - two{"{0} ft³"} + many{"‎{0} ft³"} + one{"‎{0} ft³"} + other{"‎{0} ft³"} + two{"‎{0} ft³"} } cubic-inch{ dnam{"in³"} - many{"{0} in³"} - one{"{0} in³"} - other{"{0} in³"} - two{"{0} in³"} + many{"‎{0} in³"} + one{"‎{0} in³"} + other{"‎{0} in³"} + two{"‎{0} in³"} } cubic-kilometer{ dnam{"קמ״ק"} @@ -2604,25 +2777,25 @@ he{ } cubic-meter{ dnam{"m³"} - many{"{0} m³"} - one{"{0} m³"} - other{"{0} m³"} + many{"‎{0} m³"} + one{"‎{0} m³"} + other{"‎{0} m³"} per{"{0}/m³"} - two{"{0} m³"} + two{"‎{0} m³"} } cubic-mile{ dnam{"mi³"} - many{"{0} mi³"} - one{"{0} mi³"} - other{"{0} mi³"} - two{"{0} mi³"} + many{"‎{0} mi³"} + one{"‎{0} mi³"} + other{"‎{0} mi³"} + two{"‎{0} mi³"} } cubic-yard{ dnam{"yd³"} - many{"{0} yd³"} - one{"{0} yd³"} - other{"{0} yd³"} - two{"{0} yd³"} + many{"‎{0} yd³"} + one{"‎{0} yd³"} + other{"‎{0} yd³"} + two{"‎{0} yd³"} } cup{ dnam{"כוסות"} @@ -2633,10 +2806,10 @@ he{ } cup-metric{ dnam{"mcup"} - many{"{0} mc"} - one{"{0} mc"} - other{"{0} mc"} - two{"{0} mc"} + many{"‎{0} mc"} + one{"‎{0} mc"} + other{"‎{0} mc"} + two{"‎{0} mc"} } deciliter{ dnam{"דצ״ל"} @@ -2647,17 +2820,16 @@ he{ } fluid-ounce{ dnam{"fl oz"} - many{"{0} fl oz"} - one{"{0} fl oz"} - other{"{0} fl oz"} - two{"{0} fl oz"} + many{"‎{0} fl oz"} + one{"‎{0} fl oz"} + other{"‎{0} fl oz"} + two{"‎{0} fl oz"} } fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - many{"{0} fl oz Imp."} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - two{"{0} fl oz Imp."} + many{"‎{0} fl oz Imp.‎"} + one{"‎{0} fl oz Imp.‎"} + other{"‎{0} fl oz Imp.‎"} + two{"‎{0} fl oz Imp.‎"} } gallon{ dnam{"גלון"} @@ -2677,10 +2849,10 @@ he{ } hectoliter{ dnam{"hL"} - many{"{0} hL"} - one{"{0} hL"} - other{"{0} hL"} - two{"{0} hL"} + many{"‎{0} hL"} + one{"‎{0} hL"} + other{"‎{0} hL"} + two{"‎{0} hL"} } liter{ dnam{"ליטר"} @@ -2692,10 +2864,10 @@ he{ } megaliter{ dnam{"ML"} - many{"{0} ML"} - one{"{0} ML"} - other{"{0} ML"} - two{"{0} ML"} + many{"‎{0} ML"} + one{"‎{0} ML"} + other{"‎{0} ML"} + two{"‎{0} ML"} } milliliter{ dnam{"מ״ל"} @@ -2706,24 +2878,24 @@ he{ } pint{ dnam{"פינט"} - many{"{0} pt"} - one{"{0} pt"} - other{"{0} pt"} - two{"{0} pt"} + many{"‎{0} pt"} + one{"‎{0} pt"} + other{"‎{0} pt"} + two{"‎{0} pt"} } pint-metric{ dnam{"mpt"} - many{"{0} mpt"} - one{"{0} mpt"} - other{"{0} mpt"} - two{"{0} mpt"} + many{"‎{0} mpt"} + one{"‎{0} mpt"} + other{"‎{0} mpt"} + two{"‎{0} mpt"} } quart{ dnam{"qts"} - many{"{0} qt"} - one{"{0} qt"} - other{"{0} qt"} - two{"{0} qt"} + many{"‎{0} qt"} + one{"‎{0} qt"} + other{"‎{0} qt"} + two{"‎{0} qt"} } tablespoon{ dnam{"כפות"} diff --git a/source/data/unit/hi.txt b/source/data/unit/hi.txt index b602223..2fc7670 100644 --- a/source/data/unit/hi.txt +++ b/source/data/unit/hi.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hi{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -11,8 +11,8 @@ hi{ acceleration{ g-force{ dnam{"गुरुत्व बल"} - one{"{0} गु–बल"} - other{"{0} गु–बल"} + one{"{0} गुरुत्व–बल"} + other{"{0} गुरुत्व–बल"} } meter-per-second-squared{ dnam{"मीटर/से²"} @@ -129,6 +129,7 @@ hi{ other{"{0} मोल"} } part-per-million{ + dnam{"ppm"} one{"{0} ppm"} other{"{0} हिस्सा प्रति दस लाख"} } @@ -172,6 +173,10 @@ hi{ } coordinate{ dnam{"प्रधान दिशा"} + east{"{0}E"} + north{"{0}N"} + south{"{0}S"} + west{"{0}W"} } digital{ bit{ @@ -242,6 +247,11 @@ hi{ other{"{0} दिन"} per{"{0} प्रति दिन"} } + decade{ + dnam{"दशकों"} + one{"{0} दशक"} + other{"{0} दशकों"} + } hour{ dnam{"घंटे"} one{"{0} घंटा"} @@ -357,6 +367,11 @@ hi{ one{"{0} किलोवॉट घंटा"} other{"{0} किलोवॉट घंटे"} } + therm-us{ + dnam{"यूएस थेर्म"} + one{"{0} यूएस थेर्म"} + other{"{0} यूएस थेर्म"} + } } force{ newton{ @@ -392,6 +407,41 @@ hi{ other{"{0} मेगाहर्ट्ज़"} } } + graphics{ + dot-per-centimeter{ + dnam{"बिंदु प्रति सेंटीमीटर"} + one{"{0} बिंदु प्रति सेंटीमीटर"} + other{"{0} बिंदु प्रति सेंटीमीटर"} + } + dot-per-inch{ + dnam{"बिंदु प्रति इंच"} + one{"{0} बिंदु प्रति इंच"} + other{"{0} बिंदु प्रति इंच"} + } + em{ + dnam{"टाइपोग्राफ़िक एम"} + } + megapixel{ + dnam{"मेगापिक्सेल"} + one{"{0} मेगापिक्सेल"} + other{"{0} मेगापिक्सेल"} + } + pixel{ + dnam{"पिक्सेल"} + one{"{0} पिक्सेल"} + other{"{0} पिक्सेल"} + } + pixel-per-centimeter{ + dnam{"पिक्सेल प्रति सेंटीमीटर"} + one{"{0} पिक्सेल प्रति सेंटीमीटर"} + other{"{0} पिक्सेल प्रति सेंटीमीटर"} + } + pixel-per-inch{ + dnam{"पिक्सेल प्रति इंच"} + one{"{0} पिक्सेल प्रति इंच"} + other{"{0} पिक्सेल प्रति इंच"} + } + } length{ astronomical-unit{ dnam{"खगोलीय इकाइयाँ"} @@ -615,6 +665,11 @@ hi{ one{"{0} वायुमंडलीय दबाव"} other{"{0} वायुमंडलीय दबाव"} } + bar{ + dnam{"बार"} + one{"{0} बार"} + other{"{0} बार"} + } hectopascal{ dnam{"हैक्टोपास्कल"} one{"{0} हैक्टोपास्कल"} @@ -645,6 +700,11 @@ hi{ one{"{0} मर्क्यूरी मिलीमीटर"} other{"{0} मर्क्यूरी मिलीमीटर"} } + pascal{ + dnam{"पास्कल"} + one{"{0} पास्कल"} + other{"{0} पास्कल"} + } pound-per-square-inch{ dnam{"पाउंड प्रति वर्ग इंच"} one{"{0} पाउंड प्रति वर्ग इंच"} @@ -684,6 +744,11 @@ hi{ one{"{0} डिग्री फ़ेरनहाइट"} other{"{0} डिग्री फ़ेरनहाइट"} } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ dnam{"केल्विन"} one{"{0} केल्विन"} @@ -697,7 +762,7 @@ hi{ other{"{0} न्यूटन-मीटर"} } pound-foot{ - dnam{"पाउंड-फ़ीट"} + dnam{"पाउंड-फ़ुट"} one{"{0} पाउंड-फ़ुट"} other{"{0} पाउंड-फ़ुट"} } @@ -888,6 +953,16 @@ hi{ other{"{0}वर्ग मील"} } } + compound{ + per{"{0}/{1}"} + } + concentr{ + percent{ + dnam{"%"} + one{"{0}%"} + other{"{0}%"} + } + } consumption{ liter-per-100kilometers{ dnam{"ली॰/100 कि॰मी॰"} @@ -897,6 +972,10 @@ hi{ } coordinate{ dnam{"दिशा"} + east{"{0}E"} + north{"{0}N"} + south{"{0}S"} + west{"{0}W"} } duration{ day{ @@ -1079,7 +1158,7 @@ hi{ unitsShort{ acceleration{ g-force{ - dnam{"गु–बल"} + dnam{"गुरुत्व बल"} one{"{0} G"} other{"{0} G"} } @@ -1173,9 +1252,14 @@ hi{ other{"{0} व॰ ग॰"} } } + compound{ + per{"{0}/{1}"} + } concentr{ karat{ dnam{"कैरट"} + one{"{0} kt"} + other{"{0} kt"} } milligram-per-deciliter{ dnam{"मि॰ग्रा॰/डे॰ली॰"} @@ -1192,16 +1276,20 @@ hi{ one{"{0} मोल"} other{"{0} मोल"} } + part-per-million{ + dnam{"ppm"} + one{"{0} ppm"} + other{"{0} ppm"} + } percent{ dnam{"प्रतिशत"} + one{"{0}%"} + other{"{0}%"} } permille{ dnam{"प्रति हज़ार"} - } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} + one{"{0}‰"} + other{"{0}‰"} } } consumption{ @@ -1228,6 +1316,10 @@ hi{ } coordinate{ dnam{"दिशा"} + east{"{0}E"} + north{"{0}N"} + south{"{0}S"} + west{"{0}W"} } digital{ bit{ @@ -1240,8 +1332,50 @@ hi{ one{"{0} बाइट"} other{"{0} बाइट"} } + gigabit{ + dnam{"Gb"} + one{"{0} Gb"} + other{"{0} Gb"} + } + gigabyte{ + dnam{"GB"} + one{"{0} GB"} + other{"{0} GB"} + } + kilobit{ + dnam{"kb"} + one{"{0} kb"} + other{"{0} kb"} + } + kilobyte{ + dnam{"kB"} + one{"{0} kB"} + other{"{0} kB"} + } + megabit{ + dnam{"Mb"} + one{"{0} Mb"} + other{"{0} Mb"} + } + megabyte{ + dnam{"MB"} + one{"{0} MB"} + other{"{0} MB"} + } petabyte{ dnam{"पेटाबाइट"} + one{"{0} PB"} + other{"{0} PB"} + } + terabit{ + dnam{"Tb"} + one{"{0} Tb"} + other{"{0} Tb"} + } + terabyte{ + dnam{"TB"} + one{"{0} TB"} + other{"{0} TB"} } } duration{ @@ -1256,6 +1390,11 @@ hi{ other{"{0} दिन"} per{"{0}/दिन"} } + decade{ + dnam{"दश."} + one{"{0} दश."} + other{"{0} दश."} + } hour{ dnam{"घंटे"} one{"{0} घं॰"} @@ -1321,27 +1460,50 @@ hi{ } ohm{ dnam{"ओम"} + one{"{0} Ω"} + other{"{0} Ω"} } volt{ dnam{"वोल्ट"} + one{"{0} V"} + other{"{0} V"} } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} + calorie{ + dnam{"cal"} + one{"{0} cal"} + other{"{0} cal"} } - electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} + foodcalorie{ + dnam{"Cal"} + one{"{0} Cal"} + other{"{0} Cal"} } joule{ dnam{"जूल"} + one{"{0} J"} + other{"{0} J"} + } + kilocalorie{ + dnam{"kcal"} + one{"{0} kcal"} + other{"{0} kcal"} } kilojoule{ dnam{"किलो जूल"} + one{"{0} kJ"} + other{"{0} kJ"} + } + kilowatt-hour{ + dnam{"kWh"} + one{"{0} kWh"} + other{"{0} kWh"} + } + therm-us{ + dnam{"यूएस थेर्म"} + one{"{0} यूएस थेर्म"} + other{"{0} यूएस थेर्म"} } } force{ @@ -1350,10 +1512,35 @@ hi{ one{"{0} न्यू॰"} other{"{0} न्यू॰"} } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + } + frequency{ + gigahertz{ + dnam{"GHz"} + one{"{0} GHz"} + other{"{0} GHz"} + } + hertz{ + dnam{"Hz"} + one{"{0} Hz"} + other{"{0} Hz"} + } + kilohertz{ + dnam{"kHz"} + one{"{0} kHz"} + other{"{0} kHz"} + } + megahertz{ + dnam{"MHz"} + one{"{0} MHz"} + other{"{0} MHz"} + } + } + graphics{ + megapixel{ + dnam{"मेगापिक्सेल"} + } + pixel{ + dnam{"पिक्सेल"} } } length{ @@ -1412,6 +1599,11 @@ hi{ one{"{0} मील"} other{"{0} मील"} } + mile-scandinavian{ + dnam{"smi"} + one{"{0} smi"} + other{"{0} smi"} + } millimeter{ dnam{"मि॰मी॰"} one{"{0} मि॰मी॰"} @@ -1442,11 +1634,6 @@ hi{ one{"{0} pt"} other{"{0} pt"} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"यार्ड"} one{"{0} यार्ड"} @@ -1456,11 +1643,8 @@ hi{ light{ lux{ dnam{"लक्स"} - } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} + one{"{0} lx"} + other{"{0} lx"} } } mass{ @@ -1474,11 +1658,6 @@ hi{ one{"{0} डाल्टन"} other{"{0} डाल्टन"} } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"ग्राम"} one{"{0} ग्रा॰"} @@ -1523,11 +1702,6 @@ hi{ other{"{0} पौंड"} per{"{0}/पौंड"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } ton{ dnam{"टन"} one{"{0} टन"} @@ -1535,11 +1709,58 @@ hi{ } } power{ + gigawatt{ + dnam{"GW"} + one{"{0} GW"} + other{"{0} GW"} + } + horsepower{ + dnam{"hp"} + one{"{0} hp"} + other{"{0} hp"} + } + kilowatt{ + dnam{"kW"} + one{"{0} kW"} + other{"{0} kW"} + } + megawatt{ + dnam{"MW"} + one{"{0} MW"} + other{"{0} MW"} + } + milliwatt{ + dnam{"mW"} + one{"{0} mW"} + other{"{0} mW"} + } watt{ dnam{"वॉट"} + one{"{0} W"} + other{"{0} W"} } } pressure{ + atmosphere{ + dnam{"atm"} + one{"{0} atm"} + other{"{0} atm"} + } + bar{ + dnam{"बार"} + one{"{0} बार"} + other{"{0} बार"} + } + hectopascal{ + dnam{"hPa"} + one{"{0} hPa"} + other{"{0} hPa"} + } + inch-hg{ + dnam{"inHg"} + one{"{0} inHg"} + other{"{0} inHg"} + } kilopascal{ dnam{"किपा॰"} one{"{0} किपा॰"} @@ -1550,6 +1771,26 @@ hi{ one{"{0} मेपा॰"} other{"{0} मेपा॰"} } + millibar{ + dnam{"mbar"} + one{"{0} mbar"} + other{"{0} mbar"} + } + millimeter-of-mercury{ + dnam{"mm Hg"} + one{"{0} mm Hg"} + other{"{0} mm Hg"} + } + pascal{ + dnam{"पा॰"} + one{"{0} पा॰"} + other{"{0} पा॰"} + } + pound-per-square-inch{ + dnam{"psi"} + one{"{0} psi"} + other{"{0} psi"} + } } speed{ kilometer-per-hour{ @@ -1584,6 +1825,16 @@ hi{ one{"{0}°फ़ेरन"} other{"{0}°फ़ेरन"} } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } + kelvin{ + dnam{"K"} + one{"{0} K"} + other{"{0} K"} + } } torque{ newton-meter{ @@ -1591,11 +1842,6 @@ hi{ one{"{0} न्यू॰मी॰"} other{"{0} न्यू॰मी॰"} } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } } volume{ acre-foot{ @@ -1670,11 +1916,6 @@ hi{ one{"{0} फ़्लूइड आउंस"} other{"{0} फ़्लूइड आउंस"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"गैलन"} one{"{0} गैलन"} diff --git a/source/data/unit/hr.txt b/source/data/unit/hr.txt index 0e3424e..03f3417 100644 --- a/source/data/unit/hr.txt +++ b/source/data/unit/hr.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hr{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -11,6 +11,9 @@ hr{ acceleration{ g-force{ dnam{"G"} + few{"{0} G"} + one{"{0} G"} + other{"{0} G"} } meter-per-second-squared{ dnam{"metri u sekundi na kvadrat"} @@ -75,6 +78,7 @@ hr{ few{"{0} kvadratna centimetra"} one{"{0} kvadratni centimetar"} other{"{0} kvadratnih centimetara"} + per{"{0}/cm²"} } square-foot{ dnam{"kvadratne stope"} @@ -87,6 +91,7 @@ hr{ few{"{0} kvadratna inča"} one{"{0} kvadratni inč"} other{"{0} kvadratnih inča"} + per{"{0}/in²"} } square-kilometer{ dnam{"kvadratni kilometri"} @@ -100,6 +105,7 @@ hr{ few{"{0} kvadratna metra"} one{"{0} kvadratni metar"} other{"{0} kvadratnih metara"} + per{"{0}/m²"} } square-mile{ dnam{"kvadratne milje"} @@ -115,6 +121,9 @@ hr{ other{"{0} kvadratnih jardi"} } } + compound{ + per{"{0}/{1}"} + } concentr{ karat{ dnam{"karati"} @@ -280,11 +289,18 @@ hr{ other{"{0} dana"} per{"{0} dnevno"} } + decade{ + dnam{"desetljeća"} + few{"{0} desetljeća"} + one{"{0} desetljeće"} + other{"{0} desetljeća"} + } hour{ dnam{"sati"} few{"{0} sata"} one{"{0} sat"} other{"{0} sati"} + per{"{0}/h"} } microsecond{ dnam{"mikrosekunde"} @@ -303,6 +319,7 @@ hr{ few{"{0} minute"} one{"{0} minuta"} other{"{0} minuta"} + per{"{0}/min"} } month{ dnam{"mjeseci"} @@ -322,6 +339,7 @@ hr{ few{"{0} sekunde"} one{"{0} sekunda"} other{"{0} sekundi"} + per{"{0}/s"} } week{ dnam{"tjedni"} @@ -413,6 +431,12 @@ hr{ one{"{0} kilovatsat"} other{"{0} kilovatsati"} } + therm-us{ + dnam{"SAD therm"} + few{"{0} SAD therma"} + one{"{0} SAD therm"} + other{"{0} SAD therma"} + } } force{ newton{ @@ -454,6 +478,50 @@ hr{ other{"{0} megaherca"} } } + graphics{ + dot-per-centimeter{ + dnam{"točke po centimetru"} + few{"{0} točke po centimetru"} + one{"{0} točka po centimetru"} + other{"{0} točaka po centimetru"} + } + dot-per-inch{ + dnam{"točke po inču"} + few{"{0} točke po inču"} + one{"{0} točka po inču"} + other{"{0} točaka po inču"} + } + em{ + dnam{"tipografski em"} + few{"{0} tipografska ema"} + one{"{0} tipografski em"} + other{"{0} tipografskih ema"} + } + megapixel{ + dnam{"megapikseli"} + few{"{0} megapiksela"} + one{"{0} megapiksel"} + other{"{0} megapiksela"} + } + pixel{ + dnam{"pikseli"} + few{"{0} piksela"} + one{"{0} piksel"} + other{"{0} piksela"} + } + pixel-per-centimeter{ + dnam{"pikseli po centimetru"} + few{"{0} piksela po centimetru"} + one{"{0} piksel po centimetru"} + other{"{0} piksela po centimetru"} + } + pixel-per-inch{ + dnam{"pikseli po inču"} + few{"{0} piksela po inču"} + one{"{0} piksel po inču"} + other{"{0} piksela po inču"} + } + } length{ astronomical-unit{ dnam{"astronomske jedinice"} @@ -466,6 +534,7 @@ hr{ few{"{0} centimetra"} one{"{0} centimetar"} other{"{0} centimetara"} + per{"{0}/cm"} } decimeter{ dnam{"decimetri"} @@ -484,6 +553,7 @@ hr{ few{"{0} stope"} one{"{0} stopa"} other{"{0} stopa"} + per{"{0}/ft"} } furlong{ dnam{"furlonzi"} @@ -496,12 +566,14 @@ hr{ few{"{0} inča"} one{"{0} inč"} other{"{0} inča"} + per{"{0}/in"} } kilometer{ dnam{"kilometri"} few{"{0} kilometra"} one{"{0} kilometar"} other{"{0} kilometara"} + per{"{0}/km"} } light-year{ dnam{"svjetlosne godine"} @@ -514,6 +586,7 @@ hr{ few{"{0} metra"} one{"{0} metar"} other{"{0} metara"} + per{"{0}/m"} } micrometer{ dnam{"mikrometri"} @@ -620,12 +693,14 @@ hr{ few{"{0} grama"} one{"{0} gram"} other{"{0} grama"} + per{"{0}/g"} } kilogram{ dnam{"kilogrami"} few{"{0} kilograma"} one{"{0} kilogram"} other{"{0} kilograma"} + per{"{0}/kg"} } metric-ton{ dnam{"tone"} @@ -650,6 +725,7 @@ hr{ few{"{0} unce"} one{"{0} unca"} other{"{0} unci"} + per{"{0}/oz"} } ounce-troy{ dnam{"troy unce"} @@ -662,6 +738,7 @@ hr{ few{"{0} funte"} one{"{0} funta"} other{"{0} funti"} + per{"{0}/lb"} } solar-mass{ dnam{"Sunčeve mase"} @@ -727,6 +804,12 @@ hr{ one{"{0} atmosfera"} other{"{0} atmosfera"} } + bar{ + dnam{"bari"} + few{"{0} bara"} + one{"{0} bar"} + other{"{0} bara"} + } hectopascal{ dnam{"hektopaskali"} few{"{0} hektopaskala"} @@ -763,6 +846,12 @@ hr{ one{"{0} milimetar živina stupca"} other{"{0} milimetara živina stupca"} } + pascal{ + dnam{"paskali"} + few{"{0} paskala"} + one{"{0} paskal"} + other{"{0} paskala"} + } pound-per-square-inch{ dnam{"funte po kvadratnom inču"} few{"{0} funte po kvadratnom inču"} @@ -809,6 +898,12 @@ hr{ one{"{0} Fahrenheitov stupanj"} other{"{0} Fahrenheitovih stupnjeva"} } + generic{ + dnam{"°"} + few{"{0}°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ dnam{"kelvini"} few{"{0} kelvina"} @@ -860,6 +955,7 @@ hr{ few{"{0} kubna centimetra"} one{"{0} kubni centimetar"} other{"{0} kubnih centimetara"} + per{"{0}/cm³"} } cubic-foot{ dnam{"kubne stope"} @@ -884,6 +980,7 @@ hr{ few{"{0} kubna metra"} one{"{0} kubni metar"} other{"{0} kubnih metara"} + per{"{0}/m³"} } cubic-mile{ dnam{"kubne milje"} @@ -952,6 +1049,7 @@ hr{ few{"{0} litre"} one{"{0} litra"} other{"{0} litara"} + per{"{0}/l"} } megaliter{ dnam{"megalitri"} @@ -998,12 +1096,79 @@ hr{ } } unitsNarrow{ + acceleration{ + g-force{ + few{"{0} G"} + one{"{0} G"} + other{"{0} G"} + } + meter-per-second-squared{ + few{"{0} m/s²"} + one{"{0} m/s²"} + other{"{0} m/s²"} + } + } + angle{ + degree{ + few{"{0}°"} + one{"{0}°"} + other{"{0}°"} + } + radian{ + few{"{0} rad"} + one{"{0} rad"} + other{"{0} rad"} + } + } area{ acre{ few{"{0} kj"} one{"{0} kj"} other{"{0} kj"} } + hectare{ + few{"{0} ha"} + one{"{0} ha"} + other{"{0} ha"} + } + square-centimeter{ + few{"{0} cm²"} + one{"{0} cm²"} + other{"{0} cm²"} + } + square-foot{ + few{"{0} ft²"} + one{"{0} ft²"} + other{"{0} ft²"} + } + square-inch{ + few{"{0} in²"} + one{"{0} in²"} + other{"{0} in²"} + } + square-kilometer{ + few{"{0} km²"} + one{"{0} km²"} + other{"{0} km²"} + } + square-meter{ + few{"{0} m²"} + one{"{0} m²"} + other{"{0} m²"} + } + square-mile{ + few{"{0} mi²"} + one{"{0} mi²"} + other{"{0} mi²"} + } + square-yard{ + few{"{0} yd²"} + one{"{0} yd²"} + other{"{0} yd²"} + } + } + compound{ + per{"{0}/{1}"} } concentr{ karat{ @@ -1018,6 +1183,7 @@ hr{ other{"{0} mmol/l"} } percent{ + dnam{"%"} few{"{0} %"} one{"{0} %"} other{"{0} %"} @@ -1059,6 +1225,46 @@ hr{ one{"{0} bajt"} other{"{0} bajtova"} } + gigabit{ + few{"{0} Gb"} + one{"{0} Gb"} + other{"{0} Gb"} + } + gigabyte{ + few{"{0} GB"} + one{"{0} GB"} + other{"{0} GB"} + } + kilobit{ + few{"{0} kb"} + one{"{0} kb"} + other{"{0} kb"} + } + kilobyte{ + few{"{0} kB"} + one{"{0} kB"} + other{"{0} kB"} + } + megabit{ + few{"{0} Mb"} + one{"{0} Mb"} + other{"{0} Mb"} + } + megabyte{ + few{"{0} MB"} + one{"{0} MB"} + other{"{0} MB"} + } + terabit{ + few{"{0} Tb"} + one{"{0} Tb"} + other{"{0} Tb"} + } + terabyte{ + few{"{0} TB"} + one{"{0} TB"} + other{"{0} TB"} + } } duration{ day{ @@ -1069,8 +1275,23 @@ hr{ } hour{ dnam{"h"} + few{"{0} h"} + one{"{0} h"} + other{"{0} h"} + } + microsecond{ + few{"{0} μs"} + one{"{0} μs"} + other{"{0} μs"} + } + millisecond{ + dnam{"ms"} + few{"{0} ms"} + one{"{0} ms"} + other{"{0} ms"} } minute{ + dnam{"min"} few{"{0} m"} one{"{0} m"} other{"{0} m"} @@ -1081,8 +1302,16 @@ hr{ one{"{0} mj."} other{"{0} mj."} } + nanosecond{ + few{"{0} ns"} + one{"{0} ns"} + other{"{0} ns"} + } second{ dnam{"s"} + few{"{0} s"} + one{"{0} s"} + other{"{0} s"} } week{ dnam{"tj."} @@ -1097,15 +1326,100 @@ hr{ other{"{0} g."} } } + electric{ + ampere{ + few{"{0} A"} + one{"{0} A"} + other{"{0} A"} + } + milliampere{ + few{"{0} mA"} + one{"{0} mA"} + other{"{0} mA"} + } + ohm{ + few{"{0} Ω"} + one{"{0} Ω"} + other{"{0} Ω"} + } + volt{ + few{"{0} V"} + one{"{0} V"} + other{"{0} V"} + } + } energy{ + calorie{ + few{"{0} cal"} + one{"{0} cal"} + other{"{0} cal"} + } foodcalorie{ dnam{"kcal"} few{"{0} kcal"} one{"{0} kcal"} other{"{0} kcal"} } + joule{ + few{"{0} J"} + one{"{0} J"} + other{"{0} J"} + } + kilocalorie{ + few{"{0} kcal"} + one{"{0} kcal"} + other{"{0} kcal"} + } + kilojoule{ + few{"{0} kJ"} + one{"{0} kJ"} + other{"{0} kJ"} + } + kilowatt-hour{ + few{"{0} kWh"} + one{"{0} kWh"} + other{"{0} kWh"} + } + } + frequency{ + gigahertz{ + few{"{0} GHz"} + one{"{0} GHz"} + other{"{0} GHz"} + } + hertz{ + few{"{0} Hz"} + one{"{0} Hz"} + other{"{0} Hz"} + } + kilohertz{ + few{"{0} kHz"} + one{"{0} kHz"} + other{"{0} kHz"} + } + megahertz{ + few{"{0} MHz"} + one{"{0} MHz"} + other{"{0} MHz"} + } } length{ + astronomical-unit{ + few{"{0} au"} + one{"{0} au"} + other{"{0} au"} + } + centimeter{ + dnam{"cm"} + few{"{0} cm"} + one{"{0} cm"} + other{"{0} cm"} + } + decimeter{ + few{"{0} dm"} + one{"{0} dm"} + other{"{0} dm"} + } fathom{ dnam{"hv"} few{"{0} hv"} @@ -1117,13 +1431,80 @@ hr{ one{"{0}′"} other{"{0}′"} } + furlong{ + few{"{0} fur"} + one{"{0} fur"} + other{"{0} fur"} + } inch{ few{"{0}″"} one{"{0}″"} other{"{0}″"} } + kilometer{ + dnam{"km"} + few{"{0} km"} + one{"{0} km"} + other{"{0} km"} + } + light-year{ + few{"{0} ly"} + one{"{0} ly"} + other{"{0} ly"} + } meter{ dnam{"m"} + few{"{0} m"} + one{"{0} m"} + other{"{0} m"} + } + micrometer{ + few{"{0} µm"} + one{"{0} µm"} + other{"{0} µm"} + } + mile{ + few{"{0} mi"} + one{"{0} mi"} + other{"{0} mi"} + } + millimeter{ + dnam{"mm"} + few{"{0} mm"} + one{"{0} mm"} + other{"{0} mm"} + } + nanometer{ + few{"{0} nm"} + one{"{0} nm"} + other{"{0} nm"} + } + nautical-mile{ + few{"{0} nmi"} + one{"{0} nmi"} + other{"{0} nmi"} + } + parsec{ + few{"{0} pc"} + one{"{0} pc"} + other{"{0} pc"} + } + picometer{ + few{"{0} pm"} + one{"{0} pm"} + other{"{0} pm"} + } + yard{ + few{"{0} yd"} + one{"{0} yd"} + other{"{0} yd"} + } + } + light{ + lux{ + few{"{0} lx"} + one{"{0} lx"} + other{"{0} lx"} } } mass{ @@ -1134,28 +1515,210 @@ hr{ } gram{ dnam{"g"} + few{"{0} g"} + one{"{0} g"} + other{"{0} g"} + } + kilogram{ + dnam{"kg"} + few{"{0} kg"} + one{"{0} kg"} + other{"{0} kg"} + } + metric-ton{ + few{"{0} t"} + one{"{0} t"} + other{"{0} t"} + } + microgram{ + few{"{0} µg"} + one{"{0} µg"} + other{"{0} µg"} + } + milligram{ + few{"{0} mg"} + one{"{0} mg"} + other{"{0} mg"} + } + ounce{ + few{"{0} oz"} + one{"{0} oz"} + other{"{0} oz"} + } + ounce-troy{ + few{"{0} oz t"} + one{"{0} oz t"} + other{"{0} oz t"} + } + pound{ + few{"{0} lb"} + one{"{0} lb"} + other{"{0} lb"} + } + stone{ + dnam{"st"} + few{"{0} st"} + one{"{0} st"} + other{"{0} st"} + } + ton{ + few{"{0} tn"} + one{"{0} tn"} + other{"{0} tn"} } } power{ + gigawatt{ + few{"{0} GW"} + one{"{0} GW"} + other{"{0} GW"} + } horsepower{ few{"{0} KS"} one{"{0} KS"} other{"{0} KS"} } + kilowatt{ + few{"{0} kW"} + one{"{0} kW"} + other{"{0} kW"} + } + megawatt{ + few{"{0} MW"} + one{"{0} MW"} + other{"{0} MW"} + } + milliwatt{ + few{"{0} mW"} + one{"{0} mW"} + other{"{0} mW"} + } + watt{ + few{"{0} W"} + one{"{0} W"} + other{"{0} W"} + } } pressure{ + hectopascal{ + few{"{0} hPa"} + one{"{0} hPa"} + other{"{0} hPa"} + } + inch-hg{ + few{"{0} inHg"} + one{"{0} inHg"} + other{"{0} inHg"} + } millibar{ few{"{0} mb"} one{"{0} mb"} other{"{0} mb"} } + millimeter-of-mercury{ + few{"{0} mm Hg"} + one{"{0} mm Hg"} + other{"{0} mm Hg"} + } + pound-per-square-inch{ + few{"{0} psi"} + one{"{0} psi"} + other{"{0} psi"} + } + } + speed{ + kilometer-per-hour{ + dnam{"km/h"} + few{"{0} km/h"} + one{"{0} km/h"} + other{"{0} km/h"} + } + meter-per-second{ + few{"{0} m/s"} + one{"{0} m/s"} + other{"{0} m/s"} + } + mile-per-hour{ + few{"{0} mi/h"} + one{"{0} mi/h"} + other{"{0} mi/h"} + } + } + temperature{ + celsius{ + dnam{"°C"} + few{"{0} °C"} + one{"{0} °C"} + other{"{0} °C"} + } + fahrenheit{ + few{"{0}°F"} + one{"{0}°F"} + other{"{0}°F"} + } + kelvin{ + few{"{0} K"} + one{"{0} K"} + other{"{0} K"} + } } volume{ + acre-foot{ + few{"{0} ac ft"} + one{"{0} ac ft"} + other{"{0} ac ft"} + } + bushel{ + dnam{"bu"} + few{"{0} bu"} + one{"{0} bu"} + other{"{0} bu"} + } centiliter{ few{"{0} cl"} one{"{0} cl"} other{"{0} cl"} } + cubic-centimeter{ + few{"{0} cm³"} + one{"{0} cm³"} + other{"{0} cm³"} + } + cubic-foot{ + few{"{0} ft³"} + one{"{0} ft³"} + other{"{0} ft³"} + } + cubic-inch{ + few{"{0} in³"} + one{"{0} in³"} + other{"{0} in³"} + } + cubic-kilometer{ + few{"{0} km³"} + one{"{0} km³"} + other{"{0} km³"} + } + cubic-meter{ + few{"{0} m³"} + one{"{0} m³"} + other{"{0} m³"} + } + cubic-mile{ + few{"{0} mi³"} + one{"{0} mi³"} + other{"{0} mi³"} + } + cubic-yard{ + few{"{0} yd³"} + one{"{0} yd³"} + other{"{0} yd³"} + } + cup{ + few{"{0} c"} + one{"{0} c"} + other{"{0} c"} + } deciliter{ few{"{0} dl"} one{"{0} dl"} @@ -1178,6 +1741,9 @@ hr{ } liter{ dnam{"l"} + few{"{0} l"} + one{"{0} l"} + other{"{0} l"} } megaliter{ few{"{0} Ml"} @@ -1189,12 +1755,41 @@ hr{ one{"{0} ml"} other{"{0} ml"} } + pint{ + few{"{0} pt"} + one{"{0} pt"} + other{"{0} pt"} + } + quart{ + few{"{0} qt"} + one{"{0} qt"} + other{"{0} qt"} + } + tablespoon{ + few{"{0} tbsp"} + one{"{0} tbsp"} + other{"{0} tbsp"} + } + teaspoon{ + few{"{0} tsp"} + one{"{0} tsp"} + other{"{0} tsp"} + } } } unitsShort{ acceleration{ g-force{ dnam{"G"} + few{"{0} G"} + one{"{0} G"} + other{"{0} G"} + } + meter-per-second-squared{ + dnam{"m/s²"} + few{"{0} m/s²"} + one{"{0} m/s²"} + other{"{0} m/s²"} } } angle{ @@ -1212,6 +1807,15 @@ hr{ } degree{ dnam{"°"} + few{"{0}°"} + one{"{0}°"} + other{"{0}°"} + } + radian{ + dnam{"rad"} + few{"{0} rad"} + one{"{0} rad"} + other{"{0} rad"} } revolution{ dnam{"okr."} @@ -1235,9 +1839,68 @@ hr{ } hectare{ dnam{"ha"} + few{"{0} ha"} + one{"{0} ha"} + other{"{0} ha"} + } + square-centimeter{ + dnam{"cm²"} + few{"{0} cm²"} + one{"{0} cm²"} + other{"{0} cm²"} + per{"{0}/cm²"} + } + square-foot{ + dnam{"ft²"} + few{"{0} ft²"} + one{"{0} ft²"} + other{"{0} ft²"} + } + square-inch{ + dnam{"in²"} + few{"{0} in²"} + one{"{0} in²"} + other{"{0} in²"} + per{"{0}/in²"} + } + square-kilometer{ + dnam{"km²"} + few{"{0} km²"} + one{"{0} km²"} + other{"{0} km²"} + per{"{0}/km²"} + } + square-meter{ + dnam{"m²"} + few{"{0} m²"} + one{"{0} m²"} + other{"{0} m²"} + per{"{0}/m²"} + } + square-mile{ + dnam{"mi²"} + few{"{0} mi²"} + one{"{0} mi²"} + other{"{0} mi²"} + per{"{0}/mi²"} + } + square-yard{ + dnam{"yd²"} + few{"{0} yd²"} + one{"{0} yd²"} + other{"{0} yd²"} } } + compound{ + per{"{0}/{1}"} + } concentr{ + karat{ + dnam{"kt"} + few{"{0} kt"} + one{"{0} kt"} + other{"{0} kt"} + } milligram-per-deciliter{ dnam{"mg/dl"} few{"{0} mg/dl"} @@ -1251,23 +1914,29 @@ hr{ other{"{0} mmol/l"} } mole{ - dnam{"mol"} few{"{0} mola"} one{"{0} mola"} other{"{0} mola"} } + part-per-million{ + dnam{"ppm"} + few{"{0} ppm"} + one{"{0} ppm"} + other{"{0} ppm"} + } percent{ + dnam{"%"} few{"{0} %"} one{"{0} %"} other{"{0} %"} } permille{ + dnam{"‰"} few{"{0} ‰"} one{"{0} ‰"} other{"{0} ‰"} } permyriad{ - dnam{"‱"} few{"{0} ‱"} one{"{0} ‱"} other{"{0} ‱"} @@ -1308,6 +1977,7 @@ hr{ } digital{ bit{ + dnam{"bit"} few{"{0} bita"} one{"{0} bit"} other{"{0} bitova"} @@ -1318,6 +1988,60 @@ hr{ one{"{0} bajt"} other{"{0} bajtova"} } + gigabit{ + dnam{"Gb"} + few{"{0} Gb"} + one{"{0} Gb"} + other{"{0} Gb"} + } + gigabyte{ + dnam{"GB"} + few{"{0} GB"} + one{"{0} GB"} + other{"{0} GB"} + } + kilobit{ + dnam{"kb"} + few{"{0} kb"} + one{"{0} kb"} + other{"{0} kb"} + } + kilobyte{ + dnam{"kB"} + few{"{0} kB"} + one{"{0} kB"} + other{"{0} kB"} + } + megabit{ + dnam{"Mb"} + few{"{0} Mb"} + one{"{0} Mb"} + other{"{0} Mb"} + } + megabyte{ + dnam{"MB"} + few{"{0} MB"} + one{"{0} MB"} + other{"{0} MB"} + } + petabyte{ + dnam{"PB"} + few{"{0} PB"} + one{"{0} PB"} + other{"{0} PB"} + } + terabit{ + dnam{"Tb"} + few{"{0} Tb"} + one{"{0} Tb"} + other{"{0} Tb"} + } + terabyte{ + dnam{"TB"} + few{"{0} TB"} + one{"{0} TB"} + other{"{0} TB"} + } } duration{ century{ @@ -1333,8 +2057,37 @@ hr{ other{"{0} dana"} per{"{0}/d."} } + decade{ + dnam{"des."} + few{"{0} des."} + one{"{0} des."} + other{"{0} des."} + } hour{ dnam{"h"} + few{"{0} h"} + one{"{0} h"} + other{"{0} h"} + per{"{0}/h"} + } + microsecond{ + dnam{"μs"} + few{"{0} μs"} + one{"{0} μs"} + other{"{0} μs"} + } + millisecond{ + dnam{"ms"} + few{"{0} ms"} + one{"{0} ms"} + other{"{0} ms"} + } + minute{ + dnam{"min"} + few{"{0} min"} + one{"{0} min"} + other{"{0} min"} + per{"{0}/min"} } month{ dnam{"mj."} @@ -1343,8 +2096,18 @@ hr{ other{"{0} mj."} per{"{0}/mj."} } + nanosecond{ + dnam{"ns"} + few{"{0} ns"} + one{"{0} ns"} + other{"{0} ns"} + } second{ dnam{"s"} + few{"{0} s"} + one{"{0} s"} + other{"{0} s"} + per{"{0}/s"} } week{ dnam{"tj."} @@ -1364,12 +2127,27 @@ hr{ electric{ ampere{ dnam{"A"} + few{"{0} A"} + one{"{0} A"} + other{"{0} A"} + } + milliampere{ + dnam{"mA"} + few{"{0} mA"} + one{"{0} mA"} + other{"{0} mA"} } ohm{ dnam{"Ω"} + few{"{0} Ω"} + one{"{0} Ω"} + other{"{0} Ω"} } volt{ dnam{"V"} + few{"{0} V"} + one{"{0} V"} + other{"{0} V"} } } energy{ @@ -1379,11 +2157,11 @@ hr{ one{"{0} BTU"} other{"{0} BTU"} } - electronvolt{ - dnam{"eV"} - few{"{0} eV"} - one{"{0} eV"} - other{"{0} eV"} + calorie{ + dnam{"cal"} + few{"{0} cal"} + one{"{0} cal"} + other{"{0} cal"} } foodcalorie{ dnam{"kcal"} @@ -1393,23 +2171,125 @@ hr{ } joule{ dnam{"J"} + few{"{0} J"} + one{"{0} J"} + other{"{0} J"} + } + kilocalorie{ + dnam{"kcal"} + few{"{0} kcal"} + one{"{0} kcal"} + other{"{0} kcal"} + } + kilojoule{ + dnam{"kJ"} + few{"{0} kJ"} + one{"{0} kJ"} + other{"{0} kJ"} + } + kilowatt-hour{ + dnam{"kWh"} + few{"{0} kWh"} + one{"{0} kWh"} + other{"{0} kWh"} + } + therm-us{ + dnam{"SAD therm"} + few{"{0} SAD therma"} + one{"{0} SAD therm"} + other{"{0} SAD therma"} } } - force{ - newton{ - dnam{"N"} - few{"{0} N"} - one{"{0} N"} - other{"{0} N"} + frequency{ + gigahertz{ + dnam{"GHz"} + few{"{0} GHz"} + one{"{0} GHz"} + other{"{0} GHz"} } - pound-force{ - dnam{"lbf"} - few{"{0} lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + hertz{ + dnam{"Hz"} + few{"{0} Hz"} + one{"{0} Hz"} + other{"{0} Hz"} + } + kilohertz{ + dnam{"kHz"} + few{"{0} kHz"} + one{"{0} kHz"} + other{"{0} kHz"} + } + megahertz{ + dnam{"MHz"} + few{"{0} MHz"} + one{"{0} MHz"} + other{"{0} MHz"} + } + } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + few{"{0} dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + few{"{0} dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + few{"{0} ema"} + one{"{0} em"} + other{"{0} emova"} + } + megapixel{ + dnam{"MP"} + few{"{0} MP"} + one{"{0} MP"} + other{"{0} MP"} + } + pixel{ + dnam{"px"} + few{"{0} px"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + few{"{0} ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + few{"{0} ppi"} + one{"{0} ppi"} + other{"{0} ppi"} } } length{ + astronomical-unit{ + dnam{"au"} + few{"{0} au"} + one{"{0} au"} + other{"{0} au"} + } + centimeter{ + dnam{"cm"} + few{"{0} cm"} + one{"{0} cm"} + other{"{0} cm"} + per{"{0}/cm"} + } + decimeter{ + dnam{"dm"} + few{"{0} dm"} + one{"{0} dm"} + other{"{0} dm"} + } fathom{ dnam{"hv"} few{"{0} hv"} @@ -1418,38 +2298,111 @@ hr{ } foot{ dnam{"stope"} + few{"{0} ft"} + one{"{0} ft"} + other{"{0} ft"} + per{"{0}/ft"} } furlong{ dnam{"furlonzi"} + few{"{0} fur"} + one{"{0} fur"} + other{"{0} fur"} } inch{ dnam{"inči"} + few{"{0} in"} + one{"{0} in"} + other{"{0} in"} + per{"{0}/in"} + } + kilometer{ + dnam{"km"} + few{"{0} km"} + one{"{0} km"} + other{"{0} km"} + per{"{0}/km"} } light-year{ dnam{"svjetlosne g."} + few{"{0} ly"} + one{"{0} ly"} + other{"{0} ly"} } meter{ dnam{"m"} + few{"{0} m"} + one{"{0} m"} + other{"{0} m"} + per{"{0}/m"} + } + micrometer{ + dnam{"µm"} + few{"{0} µm"} + one{"{0} µm"} + other{"{0} µm"} + } + mile{ + dnam{"mi"} + few{"{0} mi"} + one{"{0} mi"} + other{"{0} mi"} + } + mile-scandinavian{ + dnam{"smi"} + few{"{0} smi"} + one{"{0} smi"} + other{"{0} smi"} + } + millimeter{ + dnam{"mm"} + few{"{0} mm"} + one{"{0} mm"} + other{"{0} mm"} + } + nanometer{ + dnam{"nm"} + few{"{0} nm"} + one{"{0} nm"} + other{"{0} nm"} + } + nautical-mile{ + dnam{"nmi"} + few{"{0} nmi"} + one{"{0} nmi"} + other{"{0} nmi"} + } + parsec{ + dnam{"pc"} + few{"{0} pc"} + one{"{0} pc"} + other{"{0} pc"} + } + picometer{ + dnam{"pm"} + few{"{0} pm"} + one{"{0} pm"} + other{"{0} pm"} } point{ dnam{"točke"} - } - solar-radius{ - dnam{"R☉"} - few{"{0} R☉"} - one{"{0} R☉"} - other{"{0} R☉"} + few{"{0} pt"} + one{"{0} pt"} + other{"{0} pt"} } yard{ dnam{"jardi"} + few{"{0} yd"} + one{"{0} yd"} + other{"{0} yd"} } } light{ - solar-luminosity{ - dnam{"L☉"} - few{"{0} L☉"} - one{"{0} L☉"} - other{"{0} L☉"} + lux{ + dnam{"lx"} + few{"{0} lx"} + one{"{0} lx"} + other{"{0} lx"} } } mass{ @@ -1461,58 +2414,211 @@ hr{ } dalton{ dnam{"daltoni"} - few{"{0} Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - few{"{0} M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"g"} + few{"{0} g"} + one{"{0} g"} + other{"{0} g"} + per{"{0}/g"} } - solar-mass{ - dnam{"M☉"} - few{"{0} M☉"} - one{"{0} M☉"} - other{"{0} M☉"} + kilogram{ + dnam{"kg"} + few{"{0} kg"} + one{"{0} kg"} + other{"{0} kg"} + per{"{0}/kg"} + } + metric-ton{ + dnam{"t"} + few{"{0} t"} + one{"{0} t"} + other{"{0} t"} + } + microgram{ + dnam{"µg"} + few{"{0} µg"} + one{"{0} µg"} + other{"{0} µg"} + } + milligram{ + dnam{"mg"} + few{"{0} mg"} + one{"{0} mg"} + other{"{0} mg"} + } + ounce{ + dnam{"oz"} + few{"{0} oz"} + one{"{0} oz"} + other{"{0} oz"} + per{"{0}/oz"} + } + ounce-troy{ + dnam{"oz t"} + few{"{0} oz t"} + one{"{0} oz t"} + other{"{0} oz t"} + } + pound{ + dnam{"lb"} + few{"{0} lb"} + one{"{0} lb"} + other{"{0} lb"} + per{"{0}/lb"} + } + stone{ + dnam{"st"} + few{"{0} st"} + one{"{0} st"} + other{"{0} st"} + } + ton{ + dnam{"tn"} + few{"{0} tn"} + one{"{0} tn"} + other{"{0} tn"} } } power{ + gigawatt{ + dnam{"GW"} + few{"{0} GW"} + one{"{0} GW"} + other{"{0} GW"} + } horsepower{ dnam{"KS"} few{"{0} KS"} one{"{0} KS"} other{"{0} KS"} } + kilowatt{ + dnam{"kW"} + few{"{0} kW"} + one{"{0} kW"} + other{"{0} kW"} + } + megawatt{ + dnam{"MW"} + few{"{0} MW"} + one{"{0} MW"} + other{"{0} MW"} + } + milliwatt{ + dnam{"mW"} + few{"{0} mW"} + one{"{0} mW"} + other{"{0} mW"} + } watt{ dnam{"W"} + few{"{0} W"} + one{"{0} W"} + other{"{0} W"} } } pressure{ - kilopascal{ - dnam{"kPa"} - few{"{0} kPa"} - one{"{0} kPa"} - other{"{0} kPa"} + atmosphere{ + dnam{"atm"} + few{"{0} atm"} + one{"{0} atm"} + other{"{0} atm"} } - megapascal{ - dnam{"MPa"} - few{"{0} MPa"} - one{"{0} MPa"} - other{"{0} MPa"} + bar{ + dnam{"bar"} + few{"{0} bara"} + one{"{0} bar"} + other{"{0} bara"} + } + hectopascal{ + dnam{"hPa"} + few{"{0} hPa"} + one{"{0} hPa"} + other{"{0} hPa"} + } + inch-hg{ + dnam{"inHg"} + few{"{0} inHg"} + one{"{0} inHg"} + other{"{0} inHg"} + } + millibar{ + dnam{"mbar"} + few{"{0} mbar"} + one{"{0} mbar"} + other{"{0} mbar"} + } + millimeter-of-mercury{ + dnam{"mm Hg"} + few{"{0} mm Hg"} + one{"{0} mm Hg"} + other{"{0} mm Hg"} + } + pascal{ + dnam{"Pa"} + few{"{0} Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } + pound-per-square-inch{ + dnam{"psi"} + few{"{0} psi"} + one{"{0} psi"} + other{"{0} psi"} } } speed{ + kilometer-per-hour{ + dnam{"km/h"} + few{"{0} km/h"} + one{"{0} km/h"} + other{"{0} km/h"} + } knot{ dnam{"čv"} few{"{0} čv"} one{"{0} čv"} other{"{0} čv"} } + meter-per-second{ + dnam{"m/s"} + few{"{0} m/s"} + one{"{0} m/s"} + other{"{0} m/s"} + } + mile-per-hour{ + dnam{"mi/h"} + few{"{0} mi/h"} + one{"{0} mi/h"} + other{"{0} mi/h"} + } + } + temperature{ + celsius{ + dnam{"°C"} + few{"{0} °C"} + one{"{0} °C"} + other{"{0} °C"} + } + fahrenheit{ + dnam{"°F"} + few{"{0} °F"} + one{"{0} °F"} + other{"{0} °F"} + } + generic{ + dnam{"°"} + few{"{0}°"} + one{"{0}°"} + other{"{0}°"} + } + kelvin{ + dnam{"K"} + few{"{0} K"} + one{"{0} K"} + other{"{0} K"} + } } torque{ newton-meter{ @@ -1521,19 +2627,19 @@ hr{ one{"{0} Nm"} other{"{0} Nm"} } - pound-foot{ - dnam{"lbf⋅ft"} - few{"{0} lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } } volume{ - barrel{ - dnam{"bbl"} - few{"{0} bbl"} - one{"{0} bbl"} - other{"{0} bbl"} + acre-foot{ + dnam{"ac ft"} + few{"{0} ac ft"} + one{"{0} ac ft"} + other{"{0} ac ft"} + } + bushel{ + dnam{"bu"} + few{"{0} bu"} + one{"{0} bu"} + other{"{0} bu"} } centiliter{ dnam{"cl"} @@ -1541,11 +2647,61 @@ hr{ one{"{0} cl"} other{"{0} cl"} } + cubic-centimeter{ + dnam{"cm³"} + few{"{0} cm³"} + one{"{0} cm³"} + other{"{0} cm³"} + per{"{0}/cm³"} + } + cubic-foot{ + dnam{"ft³"} + few{"{0} ft³"} + one{"{0} ft³"} + other{"{0} ft³"} + } + cubic-inch{ + dnam{"in³"} + few{"{0} in³"} + one{"{0} in³"} + other{"{0} in³"} + } + cubic-kilometer{ + dnam{"km³"} + few{"{0} km³"} + one{"{0} km³"} + other{"{0} km³"} + } + cubic-meter{ + dnam{"m³"} + few{"{0} m³"} + one{"{0} m³"} + other{"{0} m³"} + per{"{0}/m³"} + } + cubic-mile{ + dnam{"mi³"} + few{"{0} mi³"} + one{"{0} mi³"} + other{"{0} mi³"} + } + cubic-yard{ + dnam{"yd³"} + few{"{0} yd³"} + one{"{0} yd³"} + other{"{0} yd³"} + } cup{ dnam{"šalice"} + few{"{0} c"} + one{"{0} c"} + other{"{0} c"} } cup-metric{ dnam{"m. šalica"} + few{"{0} mc"} + one{"{0} mc"} + other{"{0} mc"} } deciliter{ dnam{"dl"} @@ -1587,6 +2743,10 @@ hr{ } liter{ dnam{"l"} + few{"{0} l"} + one{"{0} l"} + other{"{0} l"} + per{"{0}/l"} } megaliter{ dnam{"Ml"} @@ -1600,6 +2760,36 @@ hr{ one{"{0} ml"} other{"{0} ml"} } + pint{ + dnam{"pt"} + few{"{0} pt"} + one{"{0} pt"} + other{"{0} pt"} + } + pint-metric{ + dnam{"mpt"} + few{"{0} mpt"} + one{"{0} mpt"} + other{"{0} mpt"} + } + quart{ + dnam{"qt"} + few{"{0} qt"} + one{"{0} qt"} + other{"{0} qt"} + } + tablespoon{ + dnam{"tbsp"} + few{"{0} tbsp"} + one{"{0} tbsp"} + other{"{0} tbsp"} + } + teaspoon{ + dnam{"tsp"} + few{"{0} tsp"} + one{"{0} tsp"} + other{"{0} tsp"} + } } } } diff --git a/source/data/unit/hsb.txt b/source/data/unit/hsb.txt index dfbe98f..09b561f 100644 --- a/source/data/unit/hsb.txt +++ b/source/data/unit/hsb.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hsb{ - Version{"2.1.47.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/hu.txt b/source/data/unit/hu.txt index 88834e9..02ad4d5 100644 --- a/source/data/unit/hu.txt +++ b/source/data/unit/hu.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hu{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -53,11 +53,6 @@ hu{ one{"{0} hold"} other{"{0} hold"} } - dunam{ - dnam{"dunam"} - one{"{0} dunam"} - other{"{0} dunam"} - } hectare{ dnam{"hektár"} one{"{0} hektár"} @@ -84,6 +79,7 @@ hu{ dnam{"négyzetkilométer"} one{"{0} négyzetkilométer"} other{"{0} négyzetkilométer"} + per{"{0}/km²"} } square-meter{ dnam{"négyzetméter"} @@ -246,6 +242,11 @@ hu{ other{"{0} nap"} per{"{0}/nap"} } + decade{ + dnam{"évtized"} + one{"{0} évtized"} + other{"{0} évtized"} + } hour{ dnam{"óra"} one{"{0} óra"} @@ -361,6 +362,11 @@ hu{ one{"{0} kilowattóra"} other{"{0} kilowattóra"} } + therm-us{ + dnam{"amerikai therm"} + one{"{0} amerikai therm"} + other{"{0} amerikai therm"} + } } force{ newton{ @@ -396,6 +402,43 @@ hu{ other{"{0} megahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"pont per centiméter"} + one{"{0} pont per centiméter"} + other{"{0} pont per centiméter"} + } + dot-per-inch{ + dnam{"pont per hüvelyk"} + one{"{0} pont per hüvelyk"} + other{"{0} pont per hüvelyk"} + } + em{ + dnam{"nyomdai em"} + one{"{0} kvirt"} + other{"{0} kvirt"} + } + megapixel{ + dnam{"millió képpont"} + one{"{0} millió képpont"} + other{"{0} millió képpont"} + } + pixel{ + dnam{"képpont"} + one{"{0} képpont"} + other{"{0} képpont"} + } + pixel-per-centimeter{ + dnam{"képpont per centiméter"} + one{"{0} képpont per centiméter"} + other{"{0} képpont per centiméter"} + } + pixel-per-inch{ + dnam{"képpont per hüvelyk"} + one{"{0} képpont per hüvelyk"} + other{"{0} képpont per hüvelyk"} + } + } length{ astronomical-unit{ dnam{"csillagászati egység"} @@ -575,6 +618,11 @@ hu{ one{"{0} Nap-tömeg"} other{"{0} Nap-tömeg"} } + stone{ + dnam{"stone"} + one{"{0} stone"} + other{"{0} stone"} + } ton{ dnam{"tonna"} one{"{0} tonna"} @@ -645,10 +693,15 @@ hu{ other{"{0} millibar"} } millimeter-of-mercury{ - dnam{"mm Hg"} + dnam{"higanymilliméter"} one{"{0} higanymilliméter"} other{"{0} higanymilliméter"} } + pascal{ + dnam{"pascal"} + one{"{0} pascal"} + other{"{0} pascal"} + } pound-per-square-inch{ dnam{"font per négyzethüvelyk"} one{"{0} font per négyzethüvelyk"} @@ -850,6 +903,12 @@ hu{ } } unitsNarrow{ + acceleration{ + g-force{ + one{"{0} G"} + other{"{0} G"} + } + } angle{ arc-minute{ one{"{0}′"} @@ -899,6 +958,9 @@ hu{ one{"{0}%"} other{"{0}%"} } + permille{ + dnam{"‰"} + } } consumption{ liter-per-100kilometers{ @@ -914,6 +976,12 @@ hu{ south{"{0} D"} west{"{0} Ny"} } + digital{ + byte{ + one{"{0} B"} + other{"{0} B"} + } + } duration{ century{ dnam{"sz."} @@ -930,6 +998,7 @@ hu{ dnam{"h"} one{"{0} h"} other{"{0} h"} + per{"{0}/h"} } millisecond{ dnam{"ms"} @@ -940,6 +1009,7 @@ hu{ dnam{"min"} one{"{0} min"} other{"{0} min"} + per{"{0}/min"} } month{ dnam{"hónap"} @@ -950,6 +1020,7 @@ hu{ dnam{"s"} one{"{0} s"} other{"{0} s"} + per{"{0}/s"} } week{ dnam{"hét"} @@ -967,6 +1038,12 @@ hu{ dnam{"cm"} one{"{0} cm"} other{"{0} cm"} + per{"{0}/cm"} + } + decimeter{ + dnam{"dm"} + one{"{0} dm"} + other{"{0} dm"} } foot{ dnam{"láb"} @@ -978,11 +1055,13 @@ hu{ dnam{"hüvelyk"} one{"{0} hüvelyk"} other{"{0} hüvelyk"} + per{"{0}/in"} } kilometer{ dnam{"km"} one{"{0} km"} other{"{0} km"} + per{"{0}/km"} } light-year{ one{"{0} fényév"} @@ -992,6 +1071,7 @@ hu{ dnam{"m"} one{"{0} m"} other{"{0} m"} + per{"{0}/m"} } mile{ dnam{"mf"} @@ -1013,6 +1093,7 @@ hu{ other{"{0} pm"} } yard{ + dnam{"yd"} one{"{0} yd"} other{"{0} yd"} } @@ -1022,19 +1103,30 @@ hu{ dnam{"g"} one{"{0} g"} other{"{0} g"} + per{"{0}/g"} } kilogram{ dnam{"kg"} one{"{0} kg"} other{"{0} kg"} + per{"{0}/kg"} } ounce{ - one{"{0} uncia"} + dnam{"oz"} + one{"{0} oz"} other{"{0} uncia"} + per{"{0}/oz"} } pound{ - one{"{0} font"} + dnam{"lb"} + one{"{0} lb"} other{"{0} font"} + per{"{0}/lb"} + } + stone{ + dnam{"st"} + one{"{0} st"} + other{"{0} st"} } } power{ @@ -1053,6 +1145,7 @@ hu{ } pressure{ hectopascal{ + dnam{"hPa"} one{"{0} hPa"} other{"{0} hPa"} } @@ -1069,6 +1162,11 @@ hu{ one{"{0} Hgmm"} other{"{0} Hgmm"} } + pound-per-square-inch{ + dnam{"psi"} + one{"{0} psi"} + other{"{0} psi"} + } } speed{ kilometer-per-hour{ @@ -1077,6 +1175,7 @@ hu{ other{"{0} km/h"} } meter-per-second{ + dnam{"m/s"} one{"{0} m/s"} other{"{0} m/s"} } @@ -1093,15 +1192,30 @@ hu{ other{"{0} °C"} } fahrenheit{ + dnam{"°F"} one{"{0} °F"} other{"{0} °F"} } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } + kelvin{ + dnam{"K"} + one{"{0} K"} + other{"{0} K"} + } } volume{ cubic-kilometer{ one{"{0} km³"} other{"{0} km³"} } + cubic-mile{ + one{"{0} mi³"} + other{"{0} mi³"} + } liter{ dnam{"l"} one{"{0} l"} @@ -1155,11 +1269,6 @@ hu{ one{"{0} kh"} other{"{0} kh"} } - dunam{ - dnam{"dunam"} - one{"{0} dunam"} - other{"{0} dunam"} - } hectare{ dnam{"ha"} one{"{0} ha"} @@ -1186,6 +1295,7 @@ hu{ dnam{"km²"} one{"{0} km²"} other{"{0} km²"} + per{"{0}/km²"} } square-meter{ dnam{"m²"} @@ -1209,6 +1319,11 @@ hu{ per{"{0}/{1}"} } concentr{ + karat{ + dnam{"kt"} + one{"{0} kt"} + other{"{0} kt"} + } milligram-per-deciliter{ dnam{"mg/dl"} one{"{0} mg/dl"} @@ -1219,11 +1334,6 @@ hu{ one{"{0} mmol/l"} other{"{0} mmol/l"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"részecske/millió"} one{"{0} ppm"} @@ -1239,11 +1349,6 @@ hu{ one{"{0}‰"} other{"{0}‰"} } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -1343,6 +1448,11 @@ hu{ other{"{0} nap"} per{"{0}/nap"} } + decade{ + dnam{"dek"} + one{"{0} dek"} + other{"{0} dek"} + } hour{ dnam{"h"} one{"{0} h"} @@ -1418,21 +1528,11 @@ hu{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"cal"} one{"{0} cal"} other{"{0} cal"} } - electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} - } foodcalorie{ dnam{"cal"} one{"{0} cal"} @@ -1458,17 +1558,10 @@ hu{ one{"{0} kWh"} other{"{0} kWh"} } - } - force{ - newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} - } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + therm-us{ + dnam{"USA therm"} + one{"{0} USA therm"} + other{"{0} USA therm"} } } frequency{ @@ -1493,6 +1586,24 @@ hu{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"megapixel"} + } + pixel{ + dnam{"képpont"} + } + } length{ astronomical-unit{ dnam{"CsE"} @@ -1586,8 +1697,6 @@ hu{ } solar-radius{ dnam{"Nap-sugár"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"yd"} @@ -1601,11 +1710,6 @@ hu{ one{"{0} lx"} other{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -1613,16 +1717,6 @@ hu{ one{"{0} Kt"} other{"{0} Kt"} } - dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"gram"} one{"{0} g"} @@ -1667,11 +1761,6 @@ hu{ other{"{0} lb"} per{"{0}/lb"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } ton{ dnam{"tn"} one{"{0} tn"} @@ -1726,26 +1815,21 @@ hu{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} one{"{0} mb"} other{"{0} mb"} } millimeter-of-mercury{ - dnam{"mm Hg"} + dnam{"Hgmm"} one{"{0} mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} @@ -1802,11 +1886,6 @@ hu{ one{"{0} Nm"} other{"{0} Nm"} } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } } volume{ acre-foot{ diff --git a/source/data/unit/hy.txt b/source/data/unit/hy.txt index 788184a..8932568 100644 --- a/source/data/unit/hy.txt +++ b/source/data/unit/hy.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hy{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -75,10 +75,10 @@ hy{ other{"{0} քառակուսի ֆուտ"} } square-inch{ - dnam{"քառակուսի դյույմեր"} - one{"{0} քառակուսի դյույմ"} - other{"{0} քառակուսի դյույմ"} - per{"{0} քառակուսի դյույմի վրա"} + dnam{"քառակուսի մատնաչափեր"} + one{"{0} քառակուսի մատնաչափ"} + other{"{0} քառակուսի մատնաչափ"} + per{"{0} քառակուսի մատնաչափի վրա"} } square-kilometer{ dnam{"քառակուսի կիլոմետրեր"} @@ -174,8 +174,8 @@ hy{ coordinate{ dnam{"ուղղություն"} east{"արևելյան երկարության {0}"} - north{"հյուսիսային լայնության {0}"} - south{"հարավային լայնության {0}"} + north{"{0} հյուսիսային լայնության"} + south{"{0} հարավային լայնության"} west{"արևմտյան երկարության {0}"} } digital{ @@ -220,7 +220,7 @@ hy{ other{"{0} մեգաբայթ"} } petabyte{ - dnam{"պետաբայթ"} + dnam{"պետաբայթեր"} one{"{0} պետաբայթ"} other{"{0} պետաբայթ"} } @@ -247,6 +247,11 @@ hy{ other{"{0} օր"} per{"օրական {0}"} } + decade{ + dnam{"տասնամյակներ"} + one{"{0} տասնամյակ"} + other{"{0} տասնամյակ"} + } hour{ dnam{"ժամեր"} one{"{0} ժամ"} @@ -362,6 +367,11 @@ hy{ one{"{0} կիլովատտ-ժամ"} other{"{0} կիլովատտ-ժամ"} } + therm-us{ + dnam{"ԱՄՆ ջերմեր"} + one{"{0} ԱՄՆ ջերմ"} + other{"{0} ԱՄՆ ջերմ"} + } } force{ newton{ @@ -397,6 +407,41 @@ hy{ other{"{0} մեգահերց"} } } + graphics{ + dot-per-centimeter{ + dnam{"կետեր սանտիմետրի վրա"} + one{"{0} կետ սանտիմետրի վրա"} + other{"{0} կետ սանտիմետրի վրա"} + } + dot-per-inch{ + dnam{"կետեր մատնաչափի վրա"} + one{"{0} կետ մատնաչափի վրա"} + other{"{0} կետ մատնաչափի վրա"} + } + em{ + dnam{"տպագրական em"} + } + megapixel{ + dnam{"մեգափիքսելներ"} + one{"{0} մեգափիքսել"} + other{"{0} մեգափիքսել"} + } + pixel{ + dnam{"փիքսելներ"} + one{"{0} փիքսել"} + other{"{0} փիքսել"} + } + pixel-per-centimeter{ + dnam{"փիքսելներ սանտիմետրի վրա"} + one{"{0} փիքսել սանտիմետրի վրա"} + other{"{0} փիքսել սանտիմետրի վրա"} + } + pixel-per-inch{ + dnam{"փիքսելներ մատնաչափի վրա"} + one{"{0} փիքսել մատնաչափի վրա"} + other{"{0} փիքսել մատնաչափի վրա"} + } + } length{ astronomical-unit{ dnam{"աստղագիտական միավորներ"} @@ -421,10 +466,10 @@ hy{ per{"{0} ֆուտի վրա"} } inch{ - dnam{"դյույմեր"} - one{"{0} դյույմ"} - other{"{0} դյույմ"} - per{"{0} դյույմի վրա"} + dnam{"մատնաչափեր"} + one{"{0} մատնաչափ"} + other{"{0} մատնաչափ"} + per{"{0} մատնաչափի վրա"} } kilometer{ dnam{"կիլոմետրեր"} @@ -555,15 +600,15 @@ hy{ other{"{0} միլիգրամ"} } ounce{ - dnam{"ունցիաներ"} - one{"{0} ունցիա"} - other{"{0} ունցիա"} - per{"{0} ունցիայի վրա"} + dnam{"ունկիներ"} + one{"{0} ունկի"} + other{"{0} ունկի"} + per{"{0} ունկիի վրա"} } ounce-troy{ - dnam{"տրոյական ունցիաներ"} - one{"{0} տրոյական ունցիա"} - other{"{0} տրոյական ունցիա"} + dnam{"տրոյական ունկիներ"} + one{"{0} տրոյական ունկի"} + other{"{0} տրոյական ունկի"} } pound{ dnam{"ֆունտեր"} @@ -585,8 +630,8 @@ hy{ power{ gigawatt{ dnam{"գիգավատտեր"} - one{"{0} գիգավատտեր"} - other{"{0} գիգավատտեր"} + one{"{0} գիգավատտ"} + other{"{0} գիգավատտ"} } horsepower{ dnam{"ձիաուժեր"} @@ -620,6 +665,11 @@ hy{ one{"{0} մթնոլորտ"} other{"{0} մթնոլորտ"} } + bar{ + dnam{"բարեր"} + one{"{0} բար"} + other{"{0} բար"} + } hectopascal{ dnam{"հեկտոպասկալ"} one{"{0} հեկտոպասկալ"} @@ -637,7 +687,7 @@ hy{ } megapascal{ dnam{"մեգապասկալներ"} - one{"{0} ՄՊա"} + one{"{0} մեգապասկալ"} other{"{0} մեգապասկալ"} } millibar{ @@ -650,6 +700,11 @@ hy{ one{"{0} միլիմետր սնդիկի սյուն"} other{"{0} միլիմետր սնդիկի սյուն"} } + pascal{ + dnam{"պասկալներ"} + one{"{0} պասկալ"} + other{"{0} պասկալ"} + } pound-per-square-inch{ dnam{"ֆունտեր քառակուսի դյույմի վրա"} one{"{0} ֆունտ քառակուսի դյույմի վրա"} @@ -719,9 +774,9 @@ hy{ other{"{0} ակրոֆուտ"} } barrel{ - dnam{"բարելներ"} - one{"{0} բարել"} - other{"{0} բարել"} + dnam{"տակառներ"} + one{"{0} տակառ"} + other{"{0} տակառ"} } centiliter{ dnam{"սանտիլիտրեր"} @@ -740,9 +795,9 @@ hy{ other{"{0} խորանարդ ֆուտ"} } cubic-inch{ - dnam{"խորանարդ դյույմ"} - one{"{0} խորանարդ դյույմ"} - other{"{0} խորանարդ դյույմ"} + dnam{"խորանարդ մատնաչափեր"} + one{"{0} խորանարդ մատնաչափ"} + other{"{0} խորանարդ մատնաչափ"} } cubic-kilometer{ dnam{"խորանարդ կիլոմետրեր"} @@ -761,7 +816,7 @@ hy{ other{"{0} խորանարդ մղոն"} } cubic-yard{ - dnam{"խորանարդ յարդ"} + dnam{"խորանարդ յարդեր"} one{"{0} խորանարդ յարդ"} other{"{0} խորանարդ յարդ"} } @@ -781,14 +836,14 @@ hy{ other{"{0} դեցիլիտր"} } fluid-ounce{ - dnam{"հեղուկ ունցիաներ"} - one{"{0} հեղուկ ունցիա"} - other{"{0} հեղուկ ունցիա"} + dnam{"հեղուկ ունկիներ"} + one{"{0} հեղուկ ունկի"} + other{"{0} հեղուկ ունկի"} } fluid-ounce-imperial{ - dnam{"անգլիական հեղուկ ունցիաներ"} - one{"{0} անգլիական հեղուկ ունցիա"} - other{"{0} անգլիական հեղուկ ունցիա"} + dnam{"անգլիական հեղուկ ունկիներ"} + one{"{0} անգլիական հեղուկ ունկի"} + other{"{0} անգլիական հեղուկ ունկի"} } gallon{ dnam{"գալոններ"} @@ -824,14 +879,14 @@ hy{ other{"{0} միլիլիտր"} } pint{ - dnam{"պինտեր"} - one{"{0} պինտ"} - other{"{0} պինտ"} + dnam{"փինթեր"} + one{"{0} փինթ"} + other{"{0} փինթ"} } pint-metric{ - dnam{"մետրիկ պինտեր"} - one{"{0} մետրիկ պինտ"} - other{"{0} մետրիկ պինտ"} + dnam{"մետրիկ փինթեր"} + one{"{0} մետրիկ փինթ"} + other{"{0} մետրիկ փինթ"} } quart{ dnam{"քվարտեր"} @@ -1124,7 +1179,7 @@ hy{ other{"{0}″"} } degree{ - dnam{"աստիճաններ"} + dnam{"աստիճան"} one{"{0}°"} other{"{0}°"} } @@ -1167,10 +1222,10 @@ hy{ other{"{0} ֆտ²"} } square-inch{ - dnam{"դյմ²"} - one{"{0} դյմ²"} - other{"{0} դյմ²"} - per{"{0}/դյմ²"} + dnam{"մատ²"} + one{"{0} մատ²"} + other{"{0} մատ²"} + per{"{0}/մատ²"} } square-kilometer{ dnam{"կմ²"} @@ -1278,7 +1333,7 @@ hy{ } byte{ dnam{"Բ"} - one{"{0} Բ"} + one{"{0} Բայթ"} other{"{0} Բ"} } gigabit{ @@ -1287,7 +1342,7 @@ hy{ other{"{0} Գբիթ"} } gigabyte{ - dnam{"ԳԲ"} + dnam{"ԳԲայթ"} one{"{0} ԳԲ"} other{"{0} ԳԲ"} } @@ -1297,7 +1352,7 @@ hy{ other{"{0} կբիթ"} } kilobyte{ - dnam{"կԲ"} + dnam{"կԲայթ"} one{"{0} կԲ"} other{"{0} կԲ"} } @@ -1307,12 +1362,12 @@ hy{ other{"{0} Մբիթ"} } megabyte{ - dnam{"ՄԲ"} + dnam{"ՄԲայթ"} one{"{0} ՄԲ"} other{"{0} ՄԲ"} } petabyte{ - dnam{"պետաբայթ"} + dnam{"ՊԲայթ"} one{"{0} ՊԲ"} other{"{0} ՊԲ"} } @@ -1322,7 +1377,7 @@ hy{ other{"{0} Տբիթ"} } terabyte{ - dnam{"ՏԲ"} + dnam{"ՏԲայթ"} one{"{0} ՏԲ"} other{"{0} ՏԲ"} } @@ -1339,6 +1394,11 @@ hy{ other{"{0} օր"} per{"{0}/օր"} } + decade{ + dnam{"10-ամյակ"} + one{"{0} 10-ամյակ"} + other{"{0} 10-ամյակ"} + } hour{ dnam{"ժ"} one{"{0} ժ"} @@ -1403,9 +1463,9 @@ hy{ other{"{0} մԱ"} } ohm{ - dnam{"օմ"} - one{"{0} օմ"} - other{"{0} օմ"} + dnam{"օհմեր"} + one{"{0} Օհմ"} + other{"{0} Օհմ"} } volt{ dnam{"Վ"} @@ -1414,11 +1474,6 @@ hy{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"կալ"} one{"{0} կալ"} @@ -1454,6 +1509,11 @@ hy{ one{"{0} կՎտ·ժ"} other{"{0} կՎտ·ժ"} } + therm-us{ + dnam{"ԱՄՆ ջերմ"} + one{"{0} ԱՄՆ ջերմ"} + other{"{0} ԱՄՆ ջերմ"} + } } force{ newton{ @@ -1489,6 +1549,38 @@ hy{ other{"{0} ՄՀց"} } } + graphics{ + dot-per-centimeter{ + dnam{"կսմ"} + one{"{0} կսմ"} + other{"{0} կսմ"} + } + dot-per-inch{ + dnam{"կմչ"} + one{"{0} կմչ"} + other{"{0} կմչ"} + } + megapixel{ + dnam{"մեգափիքսելներ"} + one{"{0} ՄՓ"} + other{"{0} ՄՓ"} + } + pixel{ + dnam{"փիքսելներ"} + one{"{0} փքս"} + other{"{0} փքս"} + } + pixel-per-centimeter{ + dnam{"փսմ"} + one{"{0} փսմ"} + other{"{0} փսմ"} + } + pixel-per-inch{ + dnam{"փմչ"} + one{"{0} փմչ"} + other{"{0} փմչ"} + } + } length{ astronomical-unit{ dnam{"ա.մ."} @@ -1513,10 +1605,10 @@ hy{ per{"{0}/ֆտ"} } inch{ - dnam{"դյմ"} - one{"{0} դյմ"} - other{"{0} դյմ"} - per{"{0}/դյմ"} + dnam{"մատ"} + one{"{0} մատ"} + other{"{0} մատ"} + per{"{0}/մատ"} } kilometer{ dnam{"կմ"} @@ -1597,11 +1689,6 @@ hy{ one{"{0} լք"} other{"{0} լք"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -1614,11 +1701,6 @@ hy{ one{"{0} դա"} other{"{0} դա"} } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"գ"} one{"{0} գ"} @@ -1647,27 +1729,22 @@ hy{ other{"{0} մգ"} } ounce{ - dnam{"ունց"} - one{"{0} ունց"} - other{"{0} ունց"} - per{"{0}/ունց"} + dnam{"ունկ."} + one{"{0} ունկ."} + other{"{0} ունկ."} + per{"{0}/ունկ."} } ounce-troy{ - dnam{"տրոյ․ ունց"} - one{"{0} տրոյ․ ունց"} - other{"{0} տրոյ․ ունց"} + dnam{"տրոյ․ ունկ."} + one{"{0} տրոյ․ ունկ."} + other{"{0} տրոյ․ ունկ."} } pound{ - dnam{"ֆունտեր"} + dnam{"ֆունտ"} one{"{0} ֆունտ"} other{"{0} ֆունտ"} per{"{0}/ֆունտ"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } ton{ dnam{"ամեր․ տ"} one{"{0} ամեր․ տ"} @@ -1712,6 +1789,11 @@ hy{ one{"{0} մթն"} other{"{0} մթն"} } + bar{ + dnam{"բար"} + one{"{0} բար"} + other{"{0} բար"} + } hectopascal{ dnam{"հՊա"} one{"{0} հՊա"} @@ -1742,6 +1824,11 @@ hy{ one{"{0} մմ ս.ս."} other{"{0} մմ ս.ս."} } + pascal{ + dnam{"Պա"} + one{"{0} Պա"} + other{"{0} Պա"} + } pound-per-square-inch{ dnam{"ֆ․/քառ․ դյմ"} one{"{0} ֆ./քառ․ դյմ"} @@ -1755,9 +1842,9 @@ hy{ other{"{0} կմ/ժ"} } knot{ - dnam{"հանգույցներ"} - one{"{0} հանգույց"} - other{"{0} հանգույց"} + dnam{"հնգ"} + one{"{0} հնգ"} + other{"{0} հնգ"} } meter-per-second{ dnam{"մ/վ"} @@ -1811,9 +1898,9 @@ hy{ other{"{0} ակր ֆտ"} } barrel{ - dnam{"բարել"} - one{"{0} բարել"} - other{"{0} բարել"} + dnam{"տակառ"} + one{"{0} տկռ"} + other{"{0} տկռ"} } centiliter{ dnam{"սլ"} @@ -1832,9 +1919,9 @@ hy{ other{"{0} ֆտ³"} } cubic-inch{ - dnam{"դյմ³"} - one{"{0} դյմ³"} - other{"{0} դյմ³"} + dnam{"մատ³"} + one{"{0} մատ³"} + other{"{0} մատ³"} } cubic-kilometer{ dnam{"կմ³"} @@ -1873,9 +1960,9 @@ hy{ other{"{0} դլ"} } fluid-ounce{ - dnam{"հղ․ ունց․"} - one{"{0} հղ. ունց․"} - other{"{0} հղ. ունց․"} + dnam{"հղ․ ունկ․"} + one{"{0} հղ. ունկ․"} + other{"{0} հղ. ունկ․"} } fluid-ounce-imperial{ dnam{"ա․ հ․ ու․"} @@ -1916,14 +2003,14 @@ hy{ other{"{0} մլ"} } pint{ - dnam{"պինտեր"} - one{"{0} պինտ"} - other{"{0} պինտ"} + dnam{"փինթեր"} + one{"{0} փինթ"} + other{"{0} փինթ"} } pint-metric{ dnam{"մետր․ պինտեր"} - one{"{0} մետր․ պինտ"} - other{"{0} մետր․ պինտ"} + one{"{0} մետր․ փինթ"} + other{"{0} մետր․ փինթ"} } quart{ dnam{"քվարտ"} diff --git a/source/data/unit/ia.txt b/source/data/unit/ia.txt index bd4407a..03003fe 100644 --- a/source/data/unit/ia.txt +++ b/source/data/unit/ia.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ia{ - Version{"2.1.48.36"} + Version{"36"} durationUnits{ hm{"hh:mm"} hms{"hh:mm:ss"} diff --git a/source/data/unit/id.txt b/source/data/unit/id.txt index edd2b11..bdebeed 100644 --- a/source/data/unit/id.txt +++ b/source/data/unit/id.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License id{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h.mm"} hms{"h.mm.ss"} @@ -42,16 +42,12 @@ id{ } area{ acre{ - dnam{"acre"} - other{"{0} acre"} - } - dunam{ - dnam{"dunam"} - other{"{0} dunam"} + dnam{"ekar"} + other{"{0} ekar"} } hectare{ - dnam{"hektar"} - other{"{0} hektar"} + dnam{"hektare"} + other{"{0} hektare"} } square-centimeter{ dnam{"sentimeter persegi"} @@ -100,12 +96,8 @@ id{ other{"{0} milligram per desiliter"} } millimole-per-liter{ - dnam{"millimole per liter"} - other{"{0} millimole per liter"} - } - mole{ - dnam{"mol"} - other{"{0} mol"} + dnam{"millimol per liter"} + other{"{0} millimol per liter"} } part-per-million{ dnam{"bagian per juta"} @@ -205,6 +197,10 @@ id{ other{"{0} hari"} per{"{0} per hari"} } + decade{ + dnam{"dekade"} + other{"{0} dekade"} + } hour{ dnam{"jam"} other{"{0} jam"} @@ -299,6 +295,10 @@ id{ dnam{"kilowatt-jam"} other{"{0} kilowatt-jam"} } + therm-us{ + dnam{"therm AS"} + other{"{0} therm AS"} + } } force{ newton{ @@ -328,6 +328,35 @@ id{ other{"{0} megahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dot per sentimeter"} + other{"{0} dot per sentimeter"} + } + dot-per-inch{ + dnam{"dot per inci"} + other{"{0} dot per inci"} + } + em{ + dnam{"em tipografis"} + } + megapixel{ + dnam{"megapiksel"} + other{"{0} megapiksel"} + } + pixel{ + dnam{"piksel"} + other{"{0} piksel"} + } + pixel-per-centimeter{ + dnam{"piksel per sentimeter"} + other{"{0} piksel per sentimeter"} + } + pixel-per-inch{ + dnam{"piksel per inci"} + other{"{0} piksel per inci"} + } + } length{ astronomical-unit{ dnam{"satuan astronomi"} @@ -465,9 +494,9 @@ id{ other{"{0} miligram"} } ounce{ - dnam{"ons"} + dnam{"ounce"} other{"{0} ons"} - per{"{0} per ons"} + per{"{0} per ounce"} } ounce-troy{ dnam{"troy ons"} @@ -519,8 +548,8 @@ id{ other{"{0} atmosfer"} } hectopascal{ - dnam{"hektopaskal"} - other{"{0} hektopaskal"} + dnam{"hektopascal"} + other{"{0} hektopascal"} } inch-hg{ dnam{"inci merkuri"} @@ -542,6 +571,10 @@ id{ dnam{"milimeter merkuri"} other{"{0} milimeter merkuri"} } + pascal{ + dnam{"pascal"} + other{"{0} pascal"} + } pound-per-square-inch{ dnam{"pon per inci persegi"} other{"{0} pon per inci persegi"} @@ -637,6 +670,7 @@ id{ other{"{0} yard kubik"} } cup{ + dnam{"cup"} other{"{0} cup"} } cup-metric{ @@ -725,6 +759,12 @@ id{ compound{ per{"{0}/{1}"} } + concentr{ + percent{ + dnam{"%"} + other{"{0}%"} + } + } consumption{ liter-per-100kilometers{ dnam{"L/100km"} @@ -896,7 +936,7 @@ id{ speed{ kilometer-per-hour{ dnam{"km/jam"} - other{"{0}kph"} + other{"{0}km/j"} } meter-per-second{ dnam{"m/d"} @@ -954,14 +994,11 @@ id{ } area{ acre{ - dnam{"acre"} - } - dunam{ - dnam{"dunam"} - other{"{0} dunam"} + dnam{"ekar"} + other{"{0} ac"} } hectare{ - dnam{"hektar"} + dnam{"hektare"} other{"{0} ha"} } square-centimeter{ @@ -981,14 +1018,17 @@ id{ square-kilometer{ dnam{"km²"} other{"{0} km²"} + per{"{0}/km²"} } square-meter{ dnam{"meter²"} other{"{0} m²"} + per{"{0}/m²"} } square-mile{ dnam{"mil persegi"} other{"{0} mi²"} + per{"{0}/mi²"} } square-yard{ dnam{"yard²"} @@ -1001,26 +1041,30 @@ id{ concentr{ karat{ dnam{"karat"} + other{"{0} kt"} + } + milligram-per-deciliter{ + dnam{"mg/dL"} + other{"{0} mg/dL"} } millimole-per-liter{ dnam{"millimol/liter"} - } - mole{ - dnam{"mol"} - other{"{0} mol"} + other{"{0} mmol/L"} } part-per-million{ dnam{"bagian/juta"} + other{"{0} ppm"} } percent{ dnam{"persen"} + other{"{0}%"} } permille{ dnam{"permil"} + other{"{0}‰"} } permyriad{ dnam{"permyriad"} - other{"{0}‱"} } } consumption{ @@ -1038,6 +1082,7 @@ id{ } mile-per-gallon-imperial{ dnam{"mil/gal Imp."} + other{"{0} mpg Imp."} } } coordinate{ @@ -1049,6 +1094,7 @@ id{ } digital{ bit{ + dnam{"bit"} other{"{0} bit"} } byte{ @@ -1081,6 +1127,7 @@ id{ } petabyte{ dnam{"PByte"} + other{"{0} PB"} } terabit{ dnam{"Tbit"} @@ -1101,6 +1148,10 @@ id{ other{"{0} hr"} per{"{0}/hr"} } + decade{ + dnam{"dek"} + other{"{0} dek"} + } hour{ dnam{"jam"} other{"{0} j"} @@ -1165,7 +1216,6 @@ id{ energy{ british-thermal-unit{ dnam{"BTU"} - other{"{0} Btu"} } calorie{ dnam{"kal"} @@ -1173,7 +1223,6 @@ id{ } electronvolt{ dnam{"elektronvolt"} - other{"{0} eV"} } foodcalorie{ dnam{"Kal"} @@ -1195,15 +1244,17 @@ id{ dnam{"kW-jam"} other{"{0} kWh"} } + therm-us{ + dnam{"therm AS"} + other{"{0} therm AS"} + } } force{ newton{ dnam{"newton"} - other{"{0} N"} } pound-force{ dnam{"pound gaya"} - other{"{0} lbf"} } } frequency{ @@ -1224,6 +1275,14 @@ id{ other{"{0} MHz"} } } + graphics{ + megapixel{ + dnam{"megapiksel"} + } + pixel{ + dnam{"piksel"} + } + } length{ astronomical-unit{ dnam{"sa"} @@ -1244,12 +1303,16 @@ id{ } foot{ dnam{"kaki"} + other{"{0} ft"} + per{"{0}/ft"} } furlong{ dnam{"furlong"} } inch{ dnam{"inci"} + other{"{0} in"} + per{"{0}/in"} } kilometer{ dnam{"km"} @@ -1258,6 +1321,7 @@ id{ } light-year{ dnam{"thn cahaya"} + other{"{0} tc"} } meter{ dnam{"meter"} @@ -1270,6 +1334,7 @@ id{ } mile{ dnam{"mil"} + other{"{0} mi"} } mile-scandinavian{ dnam{"smi"} @@ -1301,7 +1366,6 @@ id{ } solar-radius{ dnam{"radius Matahari"} - other{"{0} R☉"} } yard{ dnam{"yard"} @@ -1311,23 +1375,22 @@ id{ light{ lux{ dnam{"lux"} + other{"{0} lx"} } solar-luminosity{ dnam{"luminositas matahari"} - other{"{0} L☉"} } } mass{ carat{ dnam{"karat"} + other{"{0} CD"} } dalton{ dnam{"dalton"} - other{"{0} Da"} } earth-mass{ dnam{"massa Bumi"} - other{"{0} M⊕"} } gram{ dnam{"gram"} @@ -1352,23 +1415,28 @@ id{ other{"{0} mg"} } ounce{ - dnam{"ons"} + dnam{"oz"} + other{"{0} oz"} + per{"{0}/oz"} } ounce-troy{ dnam{"oz troy"} + other{"{0} oz t"} } pound{ dnam{"pon"} + other{"{0} lb"} + per{"{0}/lb"} } solar-mass{ dnam{"massa Matahari"} - other{"{0} M☉"} } stone{ dnam{"stone"} } ton{ dnam{"ton"} + other{"{0} tn"} } } power{ @@ -1376,6 +1444,10 @@ id{ dnam{"GW"} other{"{0} GW"} } + horsepower{ + dnam{"hp"} + other{"{0} hp"} + } kilowatt{ dnam{"kW"} other{"{0} kW"} @@ -1394,6 +1466,10 @@ id{ } } pressure{ + atmosphere{ + dnam{"atm"} + other{"{0} atm"} + } hectopascal{ dnam{"hPa"} other{"{0} hPa"} @@ -1402,23 +1478,23 @@ id{ dnam{"in Hg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - other{"{0} MPa"} + millibar{ + dnam{"mbar"} + other{"{0} mbar"} } millimeter-of-mercury{ dnam{"mm Hg"} other{"{0} mm Hg"} } + pound-per-square-inch{ + dnam{"psi"} + other{"{0} psi"} + } } speed{ kilometer-per-hour{ dnam{"km/jam"} - other{"{0} kph"} + other{"{0} km/j"} } knot{ dnam{"kn"} @@ -1451,22 +1527,16 @@ id{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ + acre-foot{ + dnam{"ac ft"} + other{"{0} ac ft"} + } barrel{ dnam{"barrel"} - other{"{0} bbl"} } centiliter{ + dnam{"cL"} other{"{0} cL"} } cubic-centimeter{ @@ -1499,6 +1569,14 @@ id{ dnam{"yard³"} other{"{0} yd³"} } + cup{ + dnam{"cup"} + other{"{0} c"} + } + cup-metric{ + dnam{"mcup"} + other{"{0} mc"} + } deciliter{ dnam{"dL"} other{"{0} dL"} @@ -1507,10 +1585,6 @@ id{ dnam{"fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} other{"{0} gal"} @@ -1518,6 +1592,8 @@ id{ } gallon-imperial{ dnam{"gal Imp."} + other{"{0} gal Imp."} + per{"{0}/gal Imp."} } hectoliter{ dnam{"hL"} @@ -1538,6 +1614,15 @@ id{ } pint{ dnam{"pint"} + other{"{0} pt"} + } + pint-metric{ + dnam{"mpt"} + other{"{0} mpt"} + } + quart{ + dnam{"qt"} + other{"{0} qt"} } tablespoon{ dnam{"sdm"} diff --git a/source/data/unit/ig.txt b/source/data/unit/ig.txt index 65791ef..3de2804 100644 --- a/source/data/unit/ig.txt +++ b/source/data/unit/ig.txt @@ -1,10 +1,27 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ig{ - Version{"2.1.48.45"} - durationUnits{ - hm{"h:mm"} - hms{"h:mm:ss"} - ms{"m:ss"} + Version{"36"} + units{ + duration{ + century{ + dnam{"Ọtụtụ nari afọ"} + } + day{ + dnam{"Ọtụtụ Ubochi"} + } + decade{ + dnam{"Ọtụtụ afọ iri"} + } + month{ + dnam{"Ọtụtụ Ọnwa"} + } + week{ + dnam{"Ọtụtụ Izu"} + } + year{ + dnam{"Ọtụtụ Afọ"} + } + } } } diff --git a/source/data/unit/ii.txt b/source/data/unit/ii.txt index b309fa4..6572afc 100644 --- a/source/data/unit/ii.txt +++ b/source/data/unit/ii.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ii{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/is.txt b/source/data/unit/is.txt index be8095c..84731af 100644 --- a/source/data/unit/is.txt +++ b/source/data/unit/is.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License is{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -247,6 +247,11 @@ is{ other{"{0} dagar"} per{"{0} á dag"} } + decade{ + dnam{"áratugir"} + one{"{0} áratugur"} + other{"{0} áratugir"} + } hour{ dnam{"klukkustundir"} one{"{0} klukkustund"} @@ -362,6 +367,11 @@ is{ one{"{0} kílóvattstund"} other{"{0} kílóvattstundir"} } + therm-us{ + dnam{"bandarískar varmaeiningar"} + one{"{0} bandarísk varmaeining"} + other{"{0} bandarískar varmaeiningar"} + } } force{ newton{ @@ -397,6 +407,38 @@ is{ other{"{0} megahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"punktar á sentimetra"} + one{"{0} punktur á sentimetra"} + other{"{0} punktar á sentimetra"} + } + dot-per-inch{ + dnam{"punktar á tommu"} + one{"{0} punktur á tommu"} + other{"{0} punktar á tommu"} + } + megapixel{ + dnam{"megapixlar"} + one{"{0} megapixill"} + other{"{0} megapixlar"} + } + pixel{ + dnam{"pixlar"} + one{"{0} pixill"} + other{"{0} pixlar"} + } + pixel-per-centimeter{ + dnam{"pixlar á sentimetra"} + one{"{0} pixill á sentimetra"} + other{"{0} pixlar á sentimetra"} + } + pixel-per-inch{ + dnam{"pixlar á tommu"} + one{"{0} pixill á tommu"} + other{"{0} pixlar á tommu"} + } + } length{ astronomical-unit{ dnam{"stjarnfræðieiningar"} @@ -516,7 +558,6 @@ is{ other{"{0} lúx"} } solar-luminosity{ - dnam{"ljósafl sólar"} one{"{0} ljósafl sólar"} other{"{0} ljósafl sólar"} } @@ -592,7 +633,7 @@ is{ other{"{0} stones"} } ton{ - dnam{"bandarískt tonn"} + dnam{"bandarísk tonn"} one{"{0} bandarískt tonn"} other{"{0} bandarísk tonn"} } @@ -635,15 +676,20 @@ is{ one{"{0} loftþyngd"} other{"{0} loftþyngdir"} } + bar{ + dnam{"bör"} + one{"{0} bar"} + other{"{0} bör"} + } hectopascal{ dnam{"hektópasköl"} one{"{0} hektópaskal"} other{"{0} hektópasköl"} } inch-hg{ - dnam{"tommur af kvikvasilfri"} + dnam{"tommur af kvikasilfri"} one{"{0} tomma af kvikasilfri"} - other{"{0} tommur af kvikvasilfri"} + other{"{0} tommur af kvikasilfri"} } kilopascal{ dnam{"kílópasköl"} @@ -665,6 +711,11 @@ is{ one{"{0} millimetrar af kvikasilfri"} other{"{0} millimetrar af kvikasilfri"} } + pascal{ + dnam{"pasköl"} + one{"{0} paskal"} + other{"{0} pasköl"} + } pound-per-square-inch{ dnam{"pund á fertommu"} one{"{0} pund á fertommu"} @@ -879,6 +930,14 @@ is{ } } angle{ + arc-minute{ + one{"{0}′"} + other{"{0}′"} + } + arc-second{ + one{"{0}″"} + other{"{0}″"} + } degree{ one{"{0}°"} other{"{0}°"} @@ -886,16 +945,22 @@ is{ } area{ acre{ + dnam{"ekra"} one{"{0} ek."} other{"{0} ek."} } hectare{ + dnam{"hektari"} one{"{0} ha"} other{"{0} ha"} } + square-centimeter{ + per{"{0}/cm²"} + } square-foot{ - one{"{0} ferfet"} - other{"{0} ferfet"} + dnam{"ft²"} + one{"{0}ft²"} + other{"{0}ft²"} } square-kilometer{ one{"{0} km²"} @@ -904,6 +969,7 @@ is{ square-meter{ one{"{0} m²"} other{"{0} m²"} + per{"{0}/m²"} } square-mile{ one{"{0}mí²"} @@ -914,6 +980,21 @@ is{ per{"{0}/{1}"} } concentr{ + milligram-per-deciliter{ + dnam{"mg/dL"} + one{"{0}mg/dL"} + other{"{0}mg/dL"} + } + millimole-per-liter{ + dnam{"mmol/L"} + one{"{0}mmol/L"} + other{"{0}mmol/L"} + } + part-per-million{ + dnam{"ppm"} + one{"{0}ppm"} + other{"{0}ppm"} + } percent{ dnam{"%"} one{"{0}%"} @@ -1167,10 +1248,6 @@ is{ } } power{ - horsepower{ - one{"{0} ek"} - other{"{0} ek"} - } kilowatt{ one{"{0} kW"} other{"{0} kW"} @@ -1181,6 +1258,10 @@ is{ } } pressure{ + bar{ + one{"{0} bar"} + other{"{0} bör"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -1252,10 +1333,16 @@ is{ } } volume{ + cubic-centimeter{ + per{"{0}/cm³"} + } cubic-kilometer{ one{"{0} km³"} other{"{0} km³"} } + cubic-meter{ + per{"{0}/m³"} + } cubic-mile{ one{"{0}mi³"} other{"{0}mi³"} @@ -1405,8 +1492,6 @@ is{ } permyriad{ dnam{"permyriad"} - one{"{0}‱"} - other{"{0}‱"} } } consumption{ @@ -1507,6 +1592,11 @@ is{ other{"{0} dagar"} per{"{0}/d."} } + decade{ + dnam{"árat."} + one{"{0} árat."} + other{"{0} árat."} + } hour{ dnam{"klukkustundir"} one{"{0} klst."} @@ -1584,8 +1674,6 @@ is{ energy{ british-thermal-unit{ dnam{"BTU"} - one{"{0} Btu"} - other{"{0} Btu"} } calorie{ dnam{"cal"} @@ -1594,8 +1682,6 @@ is{ } electronvolt{ dnam{"rafeindarvolt"} - one{"{0} eV"} - other{"{0} eV"} } foodcalorie{ dnam{"kal"} @@ -1622,17 +1708,18 @@ is{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"bandarísk varmaeining"} + one{"{0} bna varmaeining"} + other{"{0} bna varmaeiningar"} + } } force{ newton{ dnam{"njúton"} - one{"{0} N"} - other{"{0} N"} } pound-force{ dnam{"kraftur punds"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1657,6 +1744,38 @@ is{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + megapixel{ + dnam{"megapixlar"} + one{"{0} MP"} + other{"{0} MP"} + } + pixel{ + dnam{"pixlar"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + one{"{0} ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"se"} @@ -1789,13 +1908,9 @@ is{ } dalton{ dnam{"dalton"} - one{"{0} Da"} - other{"{0} Da"} } earth-mass{ dnam{"jarðmassar"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"grömm"} @@ -1895,6 +2010,10 @@ is{ one{"{0} atm"} other{"{0} atm"} } + bar{ + one{"{0} bar"} + other{"{0} bör"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -1905,16 +2024,6 @@ is{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} one{"{0} mbar"} @@ -1925,6 +2034,11 @@ is{ one{"{0} mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} @@ -1975,18 +2089,6 @@ is{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ekrufet"} diff --git a/source/data/unit/it.txt b/source/data/unit/it.txt index 459549a..87d6da0 100644 --- a/source/data/unit/it.txt +++ b/source/data/unit/it.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License it{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -247,6 +247,11 @@ it{ other{"{0} giorni"} per{"{0} al giorno"} } + decade{ + dnam{"decadi"} + one{"{0} decade"} + other{"{0} decadi"} + } hour{ dnam{"ore"} one{"{0} ora"} @@ -362,6 +367,11 @@ it{ one{"{0} chilowattora"} other{"{0} chilowattora"} } + therm-us{ + dnam{"therm US"} + one{"{0} therm US"} + other{"{0} therm US"} + } } force{ newton{ @@ -397,6 +407,18 @@ it{ other{"{0} megahertz"} } } + graphics{ + pixel{ + dnam{"pixel"} + one{"{0} pixel"} + other{"{0} pixel"} + } + pixel-per-centimeter{ + dnam{"pixel per centimetro"} + one{"{0} pixel per centimetro"} + other{"{0} pixel per centimetro"} + } + } length{ astronomical-unit{ dnam{"unità astronomiche"} @@ -719,9 +741,9 @@ it{ other{"{0} acre-feet"} } barrel{ - dnam{"barrel"} - one{"{0} barrel"} - other{"{0} barrel"} + dnam{"barile"} + one{"{0} barile"} + other{"{0} barili"} } bushel{ dnam{"staia"} @@ -989,7 +1011,6 @@ it{ other{"{0}al"} } meter{ - dnam{"metro"} one{"{0}m"} other{"{0}m"} } @@ -1213,11 +1234,6 @@ it{ one{"{0} mmol/l"} other{"{0} mmol/l"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ppm"} one{"{0} ppm"} @@ -1233,11 +1249,6 @@ it{ one{"{0}‰"} other{"{0}‰"} } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -1337,6 +1348,11 @@ it{ other{"{0} giorni"} per{"{0}/giorno"} } + decade{ + dnam{"dec."} + one{"{0} dec."} + other{"{0} dec."} + } hour{ dnam{"h"} one{"{0} h"} @@ -1422,11 +1438,6 @@ it{ one{"{0} cal"} other{"{0} cal"} } - electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} - } foodcalorie{ dnam{"Cal"} one{"{0} Cal"} @@ -1452,17 +1463,10 @@ it{ one{"{0} kWh"} other{"{0} kWh"} } - } - force{ - newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} - } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + therm-us{ + dnam{"therm US"} + one{"{0} therm US"} + other{"{0} therm US"} } } frequency{ @@ -1578,11 +1582,6 @@ it{ one{"{0} pt"} other{"{0} pt"} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"iarde"} one{"{0} yd"} @@ -1595,11 +1594,6 @@ it{ one{"{0} lx"} other{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -1612,11 +1606,6 @@ it{ one{"{0} Da"} other{"{0} Da"} } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"grammi"} one{"{0} g"} @@ -1661,11 +1650,6 @@ it{ other{"{0} lb"} per{"{0}/lb"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } ton{ dnam{"tn"} one{"{0} tn"} @@ -1720,16 +1704,6 @@ it{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} one{"{0} mbar"} @@ -1809,9 +1783,9 @@ it{ other{"{0} ac ft"} } barrel{ - dnam{"barrel"} - one{"{0} barrel"} - other{"{0} barrel"} + dnam{"barile"} + one{"{0} bbl"} + other{"{0} bbl"} } bushel{ dnam{"staia"} diff --git a/source/data/unit/ja.txt b/source/data/unit/ja.txt index e577bc1..7a47a17 100644 --- a/source/data/unit/ja.txt +++ b/source/data/unit/ja.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ja{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -89,6 +89,7 @@ ja{ } compound{ per{"{0}毎{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -205,6 +206,10 @@ ja{ other{"{0} 日"} per{"{0}/日"} } + decade{ + dnam{"十年"} + other{"{0} 十年"} + } hour{ dnam{"時間"} other{"{0} 時間"} @@ -299,6 +304,10 @@ ja{ dnam{"キロワット時"} other{"{0} キロワット時"} } + therm-us{ + dnam{"米サーム"} + other{"{0} 米サーム"} + } } force{ newton{ @@ -328,6 +337,35 @@ ja{ other{"{0} メガヘルツ"} } } + graphics{ + dot-per-centimeter{ + dnam{"ドット/cm"} + other{"{0} ドット/cm"} + } + dot-per-inch{ + dnam{"ドット/インチ"} + other{"{0} ドット/インチ"} + } + em{ + dnam{"フォントサイズ em"} + } + megapixel{ + dnam{"メガピクセル"} + other{"{0} メガピクセル"} + } + pixel{ + dnam{"ピクセル"} + other{"{0} ピクセル"} + } + pixel-per-centimeter{ + dnam{"ピクセル/cm"} + other{"{0} ピクセル/cm"} + } + pixel-per-inch{ + dnam{"ピクセル/インチ"} + other{"{0} ピクセル/インチ"} + } + } length{ astronomical-unit{ dnam{"天文単位"} @@ -522,6 +560,10 @@ ja{ dnam{"気圧"} other{"{0} 気圧"} } + bar{ + dnam{"バール"} + other{"{0} バール"} + } hectopascal{ dnam{"ヘクトパスカル"} other{"{0} ヘクトパスカル"} @@ -546,6 +588,10 @@ ja{ dnam{"水銀柱ミリメートル"} other{"{0} 水銀柱ミリメートル"} } + pascal{ + dnam{"パスカル"} + other{"{0} パスカル"} + } pound-per-square-inch{ dnam{"重量ポンド毎平方インチ"} other{"{0} 重量ポンド毎平方インチ"} @@ -720,6 +766,7 @@ ja{ other{"{0}G"} } meter-per-second-squared{ + dnam{"m/s²"} other{"{0}m/s²"} } } @@ -759,6 +806,7 @@ ja{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -928,6 +976,7 @@ ja{ centimeter{ dnam{"cm"} other{"{0}cm"} + per{"{0}/cm"} } decimeter{ dnam{"デシメートル"} @@ -939,6 +988,7 @@ ja{ foot{ dnam{"フィート"} other{"{0}′"} + per{"{0}/ft"} } furlong{ other{"{0}fur"} @@ -946,10 +996,12 @@ ja{ inch{ dnam{"インチ"} other{"{0}″"} + per{"{0}/in"} } kilometer{ dnam{"km"} other{"{0}km"} + per{"{0}/km"} } light-year{ dnam{"光年"} @@ -958,6 +1010,7 @@ ja{ meter{ dnam{"m"} other{"{0}m"} + per{"{0}/m"} } micrometer{ dnam{"マイクロメートル"} @@ -969,6 +1022,7 @@ ja{ } mile-scandinavian{ dnam{"スカンジナビアマイル"} + other{"{0} smi"} } millimeter{ dnam{"mm"} @@ -990,6 +1044,9 @@ ja{ dnam{"ピコメートル"} other{"{0}pm"} } + point{ + other{"{0} pt"} + } yard{ dnam{"ヤード"} other{"{0}ヤード"} @@ -1007,10 +1064,12 @@ ja{ gram{ dnam{"g"} other{"{0}g"} + per{"{0}/g"} } kilogram{ dnam{"kg"} other{"{0}kg"} + per{"{0}/kg"} } metric-ton{ other{"{0}MT"} @@ -1024,6 +1083,7 @@ ja{ ounce{ dnam{"オンス"} other{"{0}oz"} + per{"{0}/oz"} } ounce-troy{ other{"{0}oz t"} @@ -1031,6 +1091,7 @@ ja{ pound{ dnam{"ポンド"} other{"{0}lb"} + per{"{0}/lb"} } stone{ other{"{0}st"} @@ -1061,6 +1122,7 @@ ja{ } pressure{ hectopascal{ + dnam{"hPa"} other{"{0}hPa"} } inch-hg{ @@ -1087,8 +1149,10 @@ ja{ } knot{ dnam{"ノット"} + other{"{0} kn"} } meter-per-second{ + dnam{"m/s"} other{"{0}m/s"} } mile-per-hour{ @@ -1101,7 +1165,16 @@ ja{ dnam{"°C"} other{"{0}°C"} } + fahrenheit{ + dnam{"°F"} + other{"{0}°F"} + } + generic{ + dnam{"°"} + other{"{0}°"} + } kelvin{ + dnam{"K"} other{"{0}K"} } } @@ -1257,6 +1330,7 @@ ja{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1339,8 +1413,8 @@ ja{ other{"{0} kb"} } kilobyte{ - dnam{"kB"} - other{"{0} kB"} + dnam{"KB"} + other{"{0} KB"} } megabit{ dnam{"メガビット"} @@ -1373,6 +1447,10 @@ ja{ other{"{0} 日"} per{"{0}/日"} } + decade{ + dnam{"十年"} + other{"{0} 十年"} + } hour{ dnam{"時間"} other{"{0} 時間"} @@ -1467,6 +1545,10 @@ ja{ dnam{"キロワット時"} other{"{0} kWh"} } + therm-us{ + dnam{"米サーム"} + other{"{0} 米サーム"} + } } force{ newton{ @@ -1496,6 +1578,36 @@ ja{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + other{"{0} em"} + } + megapixel{ + dnam{"メガピクセル"} + other{"{0} MP"} + } + pixel{ + dnam{"ピクセル"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"天文単位"} @@ -1521,6 +1633,7 @@ ja{ } furlong{ dnam{"ハロン"} + other{"{0} fur"} } inch{ dnam{"インチ"} @@ -1651,6 +1764,7 @@ ja{ } stone{ dnam{"ストーン"} + other{"{0} st"} } ton{ dnam{"米トン"} @@ -1688,6 +1802,10 @@ ja{ dnam{"気圧"} other{"{0} atm"} } + bar{ + dnam{"バール"} + other{"{0} bar"} + } hectopascal{ dnam{"hPa"} other{"{0} hPa"} @@ -1712,6 +1830,10 @@ ja{ dnam{"水銀柱ミリメートル"} other{"{0} mm Hg"} } + pascal{ + dnam{"パスカル"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"重量ポンド毎平方インチ"} other{"{0} psi"} @@ -1774,6 +1896,7 @@ ja{ } bushel{ dnam{"ブッシェル"} + other{"{0} bu"} } centiliter{ dnam{"センチリットル"} @@ -1846,7 +1969,7 @@ ja{ liter{ dnam{"リットル"} other{"{0} L"} - per{"{0}/l"} + per{"{0}/L"} } megaliter{ dnam{"メガリットル"} diff --git a/source/data/unit/jgo.txt b/source/data/unit/jgo.txt index d3a2e8d..4d7b78b 100644 --- a/source/data/unit/jgo.txt +++ b/source/data/unit/jgo.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License jgo{ - Version{"2.1.47.82"} + Version{"36"} units{ duration{ day{ diff --git a/source/data/unit/jmc.txt b/source/data/unit/jmc.txt index ccac4cd..dae1c69 100644 --- a/source/data/unit/jmc.txt +++ b/source/data/unit/jmc.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License jmc{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/jv.txt b/source/data/unit/jv.txt index de89ec0..3e2c91e 100644 --- a/source/data/unit/jv.txt +++ b/source/data/unit/jv.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License jv{ - Version{"2.1.48.44"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -45,10 +45,6 @@ jv{ dnam{"are"} other{"{0} are"} } - dunam{ - dnam{"dunam"} - other{"{0} dunam"} - } hectare{ dnam{"hektar"} other{"{0} hektar"} @@ -103,10 +99,6 @@ jv{ dnam{"milimol saben liter"} other{"{0} milimol saben liter"} } - mole{ - dnam{"mol"} - other{"{0} mol"} - } part-per-million{ dnam{"bagean saben yuta"} other{"{0} bagean saben yuta"} @@ -121,6 +113,7 @@ jv{ } permyriad{ dnam{"permiriad"} + other{"{0} permiriad"} } } consumption{ @@ -200,9 +193,13 @@ jv{ other{"{0} abad"} } day{ - dnam{"dino"} - other{"{0} dino"} - per{"{0} saben dino"} + dnam{"dina"} + other{"{0} dina"} + per{"{0} saben dina"} + } + decade{ + dnam{"dasawarsa"} + other{"{0} dasawarsa"} } hour{ dnam{"jam"} @@ -237,9 +234,9 @@ jv{ per{"{0} saben detik"} } week{ - dnam{"pekan"} - other{"{0} pekan"} - per{"{0} saben pekan"} + dnam{"peken"} + other{"{0} peken"} + per{"{0} saben peken"} } year{ dnam{"taun"} @@ -268,6 +265,7 @@ jv{ energy{ british-thermal-unit{ dnam{"takeran panas Britania"} + other{"{0} takeran panas Britania"} } calorie{ dnam{"kalori"} @@ -275,6 +273,7 @@ jv{ } electronvolt{ dnam{"elektronvolt"} + other{"{0} elektronvolt"} } foodcalorie{ dnam{"Kalori"} @@ -296,13 +295,19 @@ jv{ dnam{"kilowatt-jam"} other{"{0} kilowatt-jam"} } + therm-us{ + dnam{"takeran panas AS"} + other{"{0} takeran panas AS"} + } } force{ newton{ dnam{"newton"} + other{"{0} newton"} } pound-force{ dnam{"pon gaya"} + other{"{0} pon gaya"} } } frequency{ @@ -323,6 +328,27 @@ jv{ other{"{0} megahet"} } } + graphics{ + dot-per-centimeter{ + dnam{"titek saben sentimeter"} + other{"{0} titek saben sentimeter"} + } + dot-per-inch{ + dnam{"titek saben inci"} + other{"{0} titek saben inci"} + } + em{ + dnam{"tipografi em"} + } + megapixel{ + dnam{"megapiksel"} + other{"{0} megapiksel"} + } + pixel{ + dnam{"piksel"} + other{"{0} piksel"} + } + } length{ astronomical-unit{ dnam{"unit astronomi"} @@ -398,7 +424,8 @@ jv{ other{"{0} poin"} } solar-radius{ - dnam{"solar radii"} + dnam{"radii srengenge"} + other{"{0} radii srengenge"} } yard{ dnam{"yard"} @@ -411,7 +438,8 @@ jv{ other{"{0} luk"} } solar-luminosity{ - dnam{"luminositas srengéngé"} + dnam{"luminositas srengenge"} + other{"{0} luminositas srengenge"} } } mass{ @@ -421,9 +449,11 @@ jv{ } dalton{ dnam{"dalton"} + other{"{0} dalton"} } earth-mass{ dnam{"massa Bumi"} + other{"{0} massa Bumi"} } gram{ dnam{"gram"} @@ -462,7 +492,8 @@ jv{ per{"{0} saben pon"} } solar-mass{ - dnam{"massa matahari"} + dnam{"massa srengenge"} + other{"{0} massa srengenge"} } ton{ dnam{"ton"} @@ -508,6 +539,14 @@ jv{ dnam{"inci saka raksa"} other{"{0} inci saka raksa"} } + kilopascal{ + dnam{"kilopaskal"} + other{"{0} kilopaskal"} + } + megapascal{ + dnam{"megapaskal"} + other{"{0} megapaskal"} + } millibar{ dnam{"milibar"} other{"{0} milibar"} @@ -516,6 +555,10 @@ jv{ dnam{"milimeter saka raksa"} other{"{0} milimeter saka raksa"} } + pascal{ + dnam{"paskal"} + other{"{0} paskal"} + } pound-per-square-inch{ dnam{"pon saben inci kuadrat"} other{"{0} pon saben inci kuadrat"} @@ -557,6 +600,16 @@ jv{ other{"{0} kelvin"} } } + torque{ + newton-meter{ + dnam{"newton-meter"} + other{"{0} newton-meter"} + } + pound-foot{ + dnam{"pon-kaki"} + other{"{0} pon-kaki"} + } + } volume{ acre-foot{ dnam{"are-kaki"} @@ -564,6 +617,7 @@ jv{ } barrel{ dnam{"barel"} + other{"{0} barel"} } centiliter{ dnam{"sentiliter"} @@ -615,6 +669,10 @@ jv{ dnam{"ons banyu"} other{"{0} ons banyu"} } + fluid-ounce-imperial{ + dnam{"Imp. ons banyu"} + other{"{0} Imp. ons banyu"} + } gallon{ dnam{"galon"} other{"{0} galon"} @@ -689,8 +747,8 @@ jv{ } duration{ day{ - dnam{"dino"} - other{"{0} dino"} + dnam{"dina"} + other{"{0}d"} } hour{ dnam{"jam"} @@ -713,8 +771,8 @@ jv{ other{"{0} dtk"} } week{ - dnam{"pekan"} - other{"{0} pekan"} + dnam{"peken"} + other{"{0} peken"} } year{ dnam{"taun"} @@ -806,10 +864,6 @@ jv{ dnam{"are"} other{"{0} are"} } - dunam{ - dnam{"dunam"} - other{"{0} dunam"} - } hectare{ dnam{"hektar"} other{"{0} ha"} @@ -864,10 +918,6 @@ jv{ dnam{"mmol/L"} other{"{0} mmol/L"} } - mole{ - dnam{"mol"} - other{"{0} mol"} - } part-per-million{ dnam{"bagean/yuta"} other{"{0} bagean saben yuta"} @@ -882,7 +932,6 @@ jv{ } permyriad{ dnam{"permiriad"} - other{"{0}‱"} } } consumption{ @@ -962,9 +1011,12 @@ jv{ other{"{0} abad"} } day{ - dnam{"dino"} - other{"{0} dino"} - per{"{0}/dino"} + dnam{"dina"} + other{"{0} dina"} + } + decade{ + dnam{"dsw"} + other{"{0} dsw"} } hour{ dnam{"jam"} @@ -999,9 +1051,9 @@ jv{ per{"{0}/dtk"} } week{ - dnam{"pekan"} - other{"{0} pekan"} - per{"{0}/pekan"} + dnam{"peken"} + other{"{0} peken"} + per{"{0}/peken"} } year{ dnam{"taun"} @@ -1030,7 +1082,6 @@ jv{ energy{ british-thermal-unit{ dnam{"BTU"} - other{"{0} Btu"} } calorie{ dnam{"kal"} @@ -1038,7 +1089,6 @@ jv{ } electronvolt{ dnam{"elektronvolt"} - other{"{0} eV"} } foodcalorie{ dnam{"Kal"} @@ -1060,15 +1110,17 @@ jv{ dnam{"kW-jam"} other{"{0} kW-jam"} } + therm-us{ + dnam{"takeran panas AS"} + other{"{0} takeran panas AS"} + } } force{ newton{ dnam{"newton"} - other{"{0} N"} } pound-force{ dnam{"pon gaya"} - other{"{0} lbf"} } } frequency{ @@ -1089,6 +1141,16 @@ jv{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"tscm"} + other{"{0} tscm"} + } + dot-per-inch{ + dnam{"tsi"} + other{"{0} tsi"} + } + } length{ astronomical-unit{ dnam{"ua"} @@ -1164,8 +1226,7 @@ jv{ other{"{0} p"} } solar-radius{ - dnam{"solar radii"} - other{"{0} R☉"} + dnam{"radii srengenge"} } yard{ dnam{"yard"} @@ -1178,8 +1239,7 @@ jv{ other{"{0} luk"} } solar-luminosity{ - dnam{"luminositas srengéngé"} - other{"{0} L☉"} + dnam{"luminositas srengenge"} } } mass{ @@ -1189,11 +1249,9 @@ jv{ } dalton{ dnam{"dalton"} - other{"{0} Da"} } earth-mass{ dnam{"massa Bumi"} - other{"{0} M⊕"} } gram{ dnam{"gram"} @@ -1232,8 +1290,7 @@ jv{ per{"{0}/pon"} } solar-mass{ - dnam{"massa matahari"} - other{"{0} M☉"} + dnam{"massa srengenge"} } ton{ dnam{"ton"} @@ -1279,14 +1336,6 @@ jv{ dnam{"inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} other{"{0} mbar"} @@ -1337,13 +1386,9 @@ jv{ } } torque{ - newton-meter{ - dnam{"N⋅m"} - other{"{0} N⋅m"} - } pound-foot{ - dnam{"lbf⋅ft"} - other{"{0} lbf⋅ft"} + dnam{"pon-kaki"} + other{"{0} pon-kaki"} } } volume{ @@ -1353,7 +1398,6 @@ jv{ } barrel{ dnam{"barel"} - other{"{0} bbl"} } centiliter{ dnam{"sentiliter"} @@ -1406,8 +1450,8 @@ jv{ other{"{0} ons banyu"} } fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - other{"{0} fl oz Imp."} + dnam{"Imp. ons banyu"} + other{"{0} Imp. ons banyu"} } gallon{ dnam{"galon"} diff --git a/source/data/unit/ka.txt b/source/data/unit/ka.txt index 7e70797..6a7d6e5 100644 --- a/source/data/unit/ka.txt +++ b/source/data/unit/ka.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ka{ - Version{"2.1.48.17"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -123,11 +123,6 @@ ka{ one{"{0} მილიმოლი ლიტრზე"} other{"{0} მილიმოლი ლიტრზე"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ნაწილი მილიონზე"} one{"{0} ნაწილი მილიონზე"} @@ -143,11 +138,6 @@ ka{ one{"{0} პრომილე"} other{"{0} პრომილე"} } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -247,6 +237,11 @@ ka{ other{"{0} დღე"} per{"{0} დღეში"} } + decade{ + dnam{"დეკადა"} + one{"{0} დეკადა"} + other{"{0} დეკადა"} + } hour{ dnam{"საათი"} one{"{0} საათი"} @@ -362,17 +357,10 @@ ka{ one{"{0} კილოვატ-საათი"} other{"{0} კილოვატ-საათი"} } - } - force{ - newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} - } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + therm-us{ + dnam{"აშშ თერმი"} + one{"{0} აშშ თერმი"} + other{"{0} აშშ თერმი"} } } frequency{ @@ -397,6 +385,43 @@ ka{ other{"{0} მეგაჰერცი"} } } + graphics{ + dot-per-centimeter{ + dnam{"წერტილი სანტიმეტრზე"} + one{"{0} წერტილი სანტიმეტრზე"} + other{"{0} წერტილი სანტიმეტრზე"} + } + dot-per-inch{ + dnam{"წერტილი დუიმზე"} + one{"{0} წერტილი დუიმზე"} + other{"{0} წერტილი დუიმზე"} + } + em{ + dnam{"ტიპოგრაფიული ემი"} + one{"{0} ემი"} + other{"{0} ემი"} + } + megapixel{ + dnam{"მეგაპიქსელი"} + one{"{0} მეგაპიქსელი"} + other{"{0} მეგაპიქსელი"} + } + pixel{ + dnam{"პიქსელი"} + one{"{0} პიქსელი"} + other{"{0} პიქსელი"} + } + pixel-per-centimeter{ + dnam{"პიქსელი სანტიმეტრზე"} + one{"{0} პიქსელი სანტიმეტრზე"} + other{"{0} პიქსელი სანტიმეტრზე"} + } + pixel-per-inch{ + dnam{"პიქსელი დუიმზე"} + one{"{0} პიქსელი დუიმზე"} + other{"{0} პიქსელი დუიმზე"} + } + } length{ astronomical-unit{ dnam{"ასტრონომიული ერთეული"} @@ -488,11 +513,6 @@ ka{ one{"{0} პუნქტი"} other{"{0} პუნქტი"} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"იარდი"} one{"{0} იარდი"} @@ -505,11 +525,6 @@ ka{ one{"{0} ლუქსი"} other{"{0} ლუქსი"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -620,6 +635,11 @@ ka{ one{"{0} ატმოსფერო"} other{"{0} ატმოსფერო"} } + bar{ + dnam{"ბარი"} + one{"{0} ბარი"} + other{"{0} ბარი"} + } hectopascal{ dnam{"ჰექტოპასკალი"} one{"{0} ჰექტოპასკალი"} @@ -650,6 +670,11 @@ ka{ one{"{0} მილიმეტრი ვერცხლისწყლის სვეტისა"} other{"{0} მილიმეტრი ვერცხლისწყლის სვეტისა"} } + pascal{ + dnam{"პასკალი"} + one{"{0} პასკალი"} + other{"{0} პასკალი"} + } pound-per-square-inch{ dnam{"ფუნტი კვადრატულ დუიმზე"} one{"{0} ფუნტი კვადრატულ დუიმზე"} @@ -700,18 +725,6 @@ ka{ other{"{0} კელვინის გრადუსი"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"აკრი-ფუტი"} @@ -1215,11 +1228,6 @@ ka{ one{"{0} მმოლ/ლ"} other{"{0} მმოლ/ლ"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ნაწილი/მილიონზე"} one{"{0} ppm"} @@ -1235,11 +1243,6 @@ ka{ one{"{0}‰"} other{"{0}‰"} } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -1339,6 +1342,11 @@ ka{ other{"{0} დღე"} per{"{0}/დღე"} } + decade{ + dnam{"დეკადა"} + one{"{0} დეკადა"} + other{"{0} დეკადა"} + } hour{ dnam{"სთ"} one{"{0} სთ"} @@ -1454,17 +1462,10 @@ ka{ one{"{0} კვტსთ"} other{"{0} კვტსთ"} } - } - force{ - newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} - } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + therm-us{ + dnam{"აშშ თერმი"} + one{"{0} აშშ თერმი"} + other{"{0} აშშ თერმი"} } } frequency{ @@ -1489,6 +1490,43 @@ ka{ other{"{0} მჰც"} } } + graphics{ + dot-per-centimeter{ + dnam{"წერტ/სმ-ზე"} + one{"{0} წერტ/სმ-ზე"} + other{"{0} წერტ/სმ-ზე"} + } + dot-per-inch{ + dnam{"წერტ/დუიმზე"} + one{"{0} წერტ/დუიმზე"} + other{"{0} წერტ/დუიმზე"} + } + em{ + dnam{"ემი"} + one{"{0} ემი"} + other{"{0} ემი"} + } + megapixel{ + dnam{"მპქს"} + one{"{0} მპქს"} + other{"{0} მპქს"} + } + pixel{ + dnam{"პქს"} + one{"{0} პქს"} + other{"{0} პქს"} + } + pixel-per-centimeter{ + dnam{"პქს/სმ-ზე"} + one{"{0} პქს/სმ-ზე"} + other{"{0} პქს/სმ-ზე"} + } + pixel-per-inch{ + dnam{"პიქს/დუიმზე"} + one{"{0} პიქს/დუიმზე"} + other{"{0} პიქს/დუიმზე"} + } + } length{ astronomical-unit{ dnam{"ა.ე."} @@ -1580,11 +1618,6 @@ ka{ one{"{0} პნქტ."} other{"{0} პქნტ."} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"იარდი"} one{"{0} იარდი"} @@ -1597,11 +1630,6 @@ ka{ one{"{0} ლუქსი"} other{"{0} ლუქსი"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -1614,11 +1642,6 @@ ka{ one{"{0} დალტ."} other{"{0} დალტ."} } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"გრამი"} one{"{0} გ"} @@ -1663,11 +1686,6 @@ ka{ other{"{0} ფნტ"} per{"{0}/ფნტ"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } ton{ dnam{"ტონა"} one{"{0} ტ"} @@ -1712,6 +1730,11 @@ ka{ one{"{0} ატმ."} other{"{0} ატმ."} } + bar{ + dnam{"ბარი"} + one{"{0} ბარი"} + other{"{0} ბარი"} + } hectopascal{ dnam{"ჰპა"} one{"{0} ჰპა"} @@ -1742,6 +1765,11 @@ ka{ one{"{0} მმ ვწყ. სვ."} other{"{0} მმ ვწყ. სვ."} } + pascal{ + dnam{"პა"} + one{"{0} პა"} + other{"{0} პა"} + } pound-per-square-inch{ dnam{"ფნტ. კვ. დმ."} one{"{0} ფნტ. კვ. დმ."} @@ -1792,18 +1820,6 @@ ka{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"აკრ.ფტ."} diff --git a/source/data/unit/kab.txt b/source/data/unit/kab.txt index 5af3867..62c9881 100644 --- a/source/data/unit/kab.txt +++ b/source/data/unit/kab.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kab{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/kam.txt b/source/data/unit/kam.txt index 8c67d75..f509aec 100644 --- a/source/data/unit/kam.txt +++ b/source/data/unit/kam.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kam{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/kde.txt b/source/data/unit/kde.txt index 26ff2f9..d673c1f 100644 --- a/source/data/unit/kde.txt +++ b/source/data/unit/kde.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kde{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/kea.txt b/source/data/unit/kea.txt index 083aebc..2cbb7f6 100644 --- a/source/data/unit/kea.txt +++ b/source/data/unit/kea.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kea{ - Version{"2.1.48.9"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -14,8 +14,8 @@ kea{ other{"{0} forsa G"} } meter-per-second-squared{ - dnam{"métru pur sigundu kuadradu"} - other{"{0} métru pur sigundu kuadradu"} + dnam{"metru pur sigundu kuadradu"} + other{"{0} metru pur sigundu kuadradu"} } } angle{ @@ -83,6 +83,10 @@ kea{ other{"{0} jarda kuadradu"} } } + compound{ + per{"{0} pur {1}"} + times{"{0}-{1}"} + } concentr{ karat{ dnam{"kilati"} @@ -100,6 +104,18 @@ kea{ dnam{"parti pur milhãu"} other{"{0} parti pur milhãu"} } + percent{ + dnam{"pursentu"} + other{"{0} pursentu"} + } + permille{ + dnam{"pur mil"} + other{"{0} pur mil"} + } + permyriad{ + dnam{"pontu bazi"} + other{"{0} pontu bazi"} + } } consumption{ liter-per-100kilometers{ @@ -119,6 +135,13 @@ kea{ other{"{0} milha pur galãu imperial"} } } + coordinate{ + dnam{"direson kardial"} + east{"{0} esti"} + north{"{0} norti"} + south{"{0} sul"} + west{"{0} oesti"} + } digital{ bit{ dnam{"bit"} @@ -152,6 +175,10 @@ kea{ dnam{"megabyte"} other{"{0} megabyte"} } + petabyte{ + dnam{"petabyte"} + other{"{0} petabyte"} + } terabit{ dnam{"terabit"} other{"{0} terabit"} @@ -171,6 +198,10 @@ kea{ other{"{0} dia"} per{"{0} pur dia"} } + decade{ + dnam{"dékada"} + other{"{0} dékada"} + } hour{ dnam{"ora"} other{"{0} ora"} @@ -214,6 +245,117 @@ kea{ per{"{0} pur anu"} } } + electric{ + ampere{ + dnam{"amper"} + other{"{0} amper"} + } + milliampere{ + dnam{"miliamper"} + other{"{0} miliamper"} + } + ohm{ + other{"{0} ohm"} + } + volt{ + other{"{0} volt"} + } + } + energy{ + british-thermal-unit{ + dnam{"unidadi térmiku britániku"} + other{"{0} unidadi térmiku britániku"} + } + calorie{ + dnam{"kaloria"} + other{"{0} kaloria"} + } + electronvolt{ + dnam{"eleton-volt"} + other{"{0} eletron-volt"} + } + foodcalorie{ + dnam{"Kaloria"} + other{"{0} Kaloria"} + } + joule{ + other{"{0} joule"} + } + kilocalorie{ + dnam{"kilokaloria"} + other{"{0} kilokaloria"} + } + kilojoule{ + dnam{"kilojoule"} + other{"{0} kilojoule"} + } + kilowatt-hour{ + dnam{"kilowatt-ora"} + other{"{0} kilowatt-ora"} + } + therm-us{ + dnam{"unidadi térmiku merkanu"} + other{"{0} unidadi térmiku merkanu"} + } + } + force{ + newton{ + dnam{"newton"} + other{"{0} newton"} + } + pound-force{ + dnam{"libra di forsa"} + other{"{0} libra di forsa"} + } + } + frequency{ + gigahertz{ + dnam{"jigaertz"} + other{"{0} jigaertz"} + } + hertz{ + dnam{"ertz"} + other{"{0} ertz"} + } + kilohertz{ + dnam{"kiloertz"} + other{"{0} kiloertz"} + } + megahertz{ + dnam{"megaertz"} + other{"{0} megaertz"} + } + } + graphics{ + dot-per-centimeter{ + dnam{"pontu pur sentímeru"} + other{"{0} pontu pur sentímetru"} + } + dot-per-inch{ + dnam{"pontu pur pulegada"} + other{"{0} pontu pur pulegada"} + } + em{ + dnam{"emi tipográfiku"} + other{"{0} emi tipográfiku"} + } + megapixel{ + dnam{"megapiksel"} + other{"{0} megapiksel"} + } + pixel{ + dnam{"piksel"} + other{"{0} piksel"} + } + pixel-per-centimeter{ + dnam{"piksel pur sentímetru"} + other{"{0} piksel pur sentímetru"} + } + pixel-per-inch{ + dnam{"piksel pur pulegada"} + other{"{0} piksel pur pulegada"} + } + } length{ astronomical-unit{ dnam{"unidadi astronómiku"} @@ -284,6 +426,14 @@ kea{ dnam{"pikómetru"} other{"{0} pikómetru"} } + point{ + dnam{"pontu"} + other{"{0} pontu"} + } + solar-radius{ + dnam{"raiu solar"} + other{"{0} raiu solar"} + } yard{ dnam{"jarda"} other{"{0} jarda"} @@ -294,10 +444,135 @@ kea{ dnam{"lux"} other{"{0} lux"} } + solar-luminosity{ + dnam{"luminozidadi solar"} + other{"{0} luminozidadi solar"} + } + } + mass{ + carat{ + dnam{"kilati"} + other{"{0} kilati"} + } + dalton{ + dnam{"dalton"} + other{"{0} dalton"} + } + earth-mass{ + dnam{"masa di Tera"} + other{"{0} masa di Tera"} + } + gram{ + dnam{"grama"} + other{"{0} grama"} + per{"{0} pur grama"} + } + kilogram{ + dnam{"kilograma"} + other{"{0} kilograma"} + per{"{0} pur kilograma"} + } + metric-ton{ + dnam{"tonelada métriku"} + other{"{0} tonelada métriku"} + } + microgram{ + dnam{"mikrograma"} + other{"{0} mikrograma"} + } + milligram{ + dnam{"miligrama"} + other{"{0} miligrama"} + } + ounce{ + dnam{"ónsa"} + other{"{0} ónsa"} + per{"{0} pur ónsa"} + } + ounce-troy{ + dnam{"ónsa troy"} + other{"{0} ónsa troy"} + } + pound{ + dnam{"libra"} + other{"{0} libra"} + per{"{0} pur libra"} + } + solar-mass{ + dnam{"masa di Sol"} + other{"{0} masa di Sol"} + } + ton{ + dnam{"tonelada"} + other{"{0} tonelada"} + } } power{ + gigawatt{ + dnam{"jigawatt"} + other{"{0} jigawatt"} + } + horsepower{ + dnam{"kabalu-vapor"} + other{"{0} kabalu-vapor"} + } + kilowatt{ + dnam{"kilowatt"} + other{"{0} kilowatt"} + } + megawatt{ + dnam{"megawatt"} + other{"{0} megawatt"} + } + milliwatt{ + dnam{"miliwatt"} + other{"{0} miliwatt"} + } watt{ dnam{"watt"} + other{"{0} watt"} + } + } + pressure{ + atmosphere{ + dnam{"atmosfera"} + other{"{0} atmosfera"} + } + bar{ + dnam{"bar"} + other{"{0} bar"} + } + hectopascal{ + dnam{"ektopaskal"} + other{"{0} ektopaskal"} + } + inch-hg{ + dnam{"pulegada di merkúriu"} + other{"{0} pulegada di merkúriu"} + } + kilopascal{ + dnam{"kilopaskal"} + other{"{0} kilopaskal"} + } + megapascal{ + dnam{"megapaskal"} + other{"{0} megapaskal"} + } + millibar{ + dnam{"milibar"} + other{"{0} milibar"} + } + millimeter-of-mercury{ + dnam{"milímetru di merkúriu"} + other{"{0} milímetru di merkúriu"} + } + pascal{ + dnam{"paskal"} + other{"{0} paskal"} + } + pound-per-square-inch{ + dnam{"libra pur pulegada kuadradu"} + other{"{0} libra pur pulegada kuadradu"} } } speed{ @@ -305,20 +580,52 @@ kea{ dnam{"kilómetru pur ora"} other{"{0} kilómetru pur ora"} } + knot{ + dnam{"nó"} + other{"{0} nó"} + } meter-per-second{ - dnam{"métru pur sigundu"} - other{"{0} métru pur sigundu"} + dnam{"metru pur sigundu"} + other{"{0} metru pur sigundu"} } mile-per-hour{ dnam{"milha pur ora"} other{"{0} milha pur ora"} } } + temperature{ + celsius{ + dnam{"grau Celsius"} + other{"{0} grau Celsius"} + } + fahrenheit{ + dnam{"grau Fahrenheit"} + other{"{0} grau Fahrenheit"} + } + kelvin{ + dnam{"kelvin"} + other{"{0} kelvin"} + } + } + torque{ + newton-meter{ + dnam{"newton-metru"} + other{"{0} newton-metru"} + } + pound-foot{ + dnam{"pe-libra"} + other{"{0} pe-libra"} + } + } volume{ acre-foot{ dnam{"ákri-pé"} other{"{0} ákri-pé"} } + barrel{ + dnam{"baril"} + other{"{0} baril"} + } centiliter{ dnam{"sentilitru"} other{"{0} sentilitru"} @@ -326,6 +633,7 @@ kea{ cubic-centimeter{ dnam{"sentímetru kúbiku"} other{"{0} sentímetru kúbiku"} + per{"{0} pur sentímetru kúbiku"} } cubic-foot{ dnam{"pé kúbiku"} @@ -340,8 +648,9 @@ kea{ other{"{0} kilómetru kúbiku"} } cubic-meter{ - dnam{"métru kúbiku"} - other{"{0} métru kúbiku"} + dnam{"metru kúbiku"} + other{"{0} metru kúbiku"} + per{"{0} pur metru kúbiku"} } cubic-mile{ dnam{"milha kúbiku"} @@ -355,6 +664,10 @@ kea{ dnam{"xávina"} other{"{0} xávina"} } + cup-metric{ + dnam{"xávina métriku"} + other{"{0} xávina métriku"} + } deciliter{ dnam{"desilitru"} other{"{0} desilitru"} @@ -363,9 +676,19 @@ kea{ dnam{"ónsa fluídu"} other{"{0} ónsa fluídu"} } + fluid-ounce-imperial{ + dnam{"ónsa fluídu imperial"} + other{"{0} ónsa fluídu imperial"} + } gallon{ dnam{"galãu"} other{"{0} galãu"} + per{"{0} pur galãu"} + } + gallon-imperial{ + dnam{"galãu imperial"} + other{"{0} galãu imperial"} + per{"{0} pur galãu imperial"} } hectoliter{ dnam{"ektolitru"} @@ -374,6 +697,7 @@ kea{ liter{ dnam{"litru"} other{"{0} litru"} + per{"{0} pur litru"} } megaliter{ dnam{"megalitru"} @@ -387,6 +711,10 @@ kea{ dnam{"pint"} other{"{0} pint"} } + pint-metric{ + dnam{"pint métriku"} + other{"{0} pint métriku"} + } quart{ dnam{"kuart"} other{"{0} kuart"} @@ -408,6 +736,9 @@ kea{ other{"{0} l/100km"} } } + coordinate{ + dnam{"direson"} + } duration{ day{ dnam{"dia"} @@ -462,11 +793,10 @@ kea{ } mass{ gram{ - other{"{0} g"} + dnam{"g"} } kilogram{ - dnam{"kg"} - other{"{0} kg"} + other{"{0}kg"} } } speed{ @@ -486,11 +816,6 @@ kea{ acceleration{ g-force{ dnam{"G"} - other{"{0} G"} - } - meter-per-second-squared{ - dnam{"m/s²"} - other{"{0} m/s²"} } } angle{ @@ -594,6 +919,13 @@ kea{ other{"{0} mpg imp."} } } + coordinate{ + dnam{"direson"} + east{"{0} E"} + north{"{0} N"} + south{"{0} S"} + west{"{0} W"} + } digital{ bit{ dnam{"b"} @@ -646,6 +978,10 @@ kea{ other{"{0} dia"} per{"{0}/dia"} } + decade{ + dnam{"dék."} + other{"{0} dék."} + } hour{ dnam{"ora"} other{"{0} h"} @@ -716,6 +1052,9 @@ kea{ dnam{"Cal"} other{"{0} Cal"} } + joule{ + dnam{"J"} + } kilocalorie{ dnam{"kcal"} other{"{0} kcal"} @@ -728,6 +1067,10 @@ kea{ dnam{"kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"thm SU"} + other{"{0} thm SU"} + } } frequency{ gigahertz{ @@ -817,6 +1160,13 @@ kea{ dnam{"pm"} other{"{0} pm"} } + point{ + dnam{"pontu"} + other{"{0} pt"} + } + solar-radius{ + dnam{"raiu solar"} + } yard{ dnam{"yd"} other{"{0} yd"} @@ -830,38 +1180,15 @@ kea{ } mass{ carat{ - other{"{0} CD"} + dnam{"kt"} + other{"{0} kt"} } gram{ - other{"{0} g"} - } - metric-ton{ - dnam{"t"} - other{"{0} t"} - } - microgram{ - dnam{"µg"} - other{"{0} µg"} - } - milligram{ - dnam{"mg"} - other{"{0} mg"} - } - ounce{ - dnam{"oz"} - other{"{0} oz"} - } - ounce-troy{ - dnam{"oz t"} - other{"{0} oz t"} - } - pound{ - dnam{"lb"} - other{"{0} lb"} + dnam{"g"} } ton{ - dnam{"tn"} - other{"{0} tn"} + dnam{"ton"} + other{"{0} ton"} } } power{ @@ -869,6 +1196,10 @@ kea{ dnam{"GW"} other{"{0} GW"} } + horsepower{ + dnam{"cv"} + other{"{0} cv"} + } kilowatt{ dnam{"kW"} other{"{0} kW"} @@ -886,46 +1217,12 @@ kea{ other{"{0} W"} } } - pressure{ - hectopascal{ - dnam{"hPa"} - other{"{0} hPa"} - } - inch-hg{ - dnam{"inHg"} - other{"{0} inHg"} - } - millibar{ - dnam{"mbar"} - other{"{0} mbar"} - } - millimeter-of-mercury{ - dnam{"mm Hg"} - other{"{0} mm Hg"} - } - pound-per-square-inch{ - dnam{"psi"} - other{"{0} psi"} - } - } - speed{ - kilometer-per-hour{ - dnam{"km/h"} - other{"{0} km/h"} - } - meter-per-second{ - dnam{"m/s"} - other{"{0} m/s"} - } - mile-per-hour{ - dnam{"mi/h"} - other{"{0} mi/h"} - } - } temperature{ - kelvin{ - dnam{"K"} - other{"{0} K"} + celsius{ + other{"{0} °C"} + } + fahrenheit{ + other{"{0} °F"} } } volume{ @@ -937,37 +1234,13 @@ kea{ dnam{"cl"} other{"{0} cl"} } - cubic-centimeter{ - dnam{"cm³"} - other{"{0} cm³"} - } - cubic-foot{ - dnam{"ft³"} - other{"{0} ft³"} - } - cubic-inch{ - dnam{"in³"} - other{"{0} in³"} - } - cubic-kilometer{ - dnam{"km³"} - other{"{0} km³"} - } - cubic-meter{ - dnam{"m³"} - other{"{0} m³"} - } - cubic-mile{ - dnam{"mi³"} - other{"{0} mi³"} - } - cubic-yard{ - dnam{"yd³"} - other{"{0} yd³"} - } cup{ - dnam{"xáv."} - other{"{0} xáv."} + dnam{"xáv"} + other{"{0} xáv"} + } + cup-metric{ + dnam{"xávm"} + other{"{0} xávm"} } deciliter{ dnam{"dl"} @@ -977,9 +1250,19 @@ kea{ dnam{"fl oz"} other{"{0} fl oz"} } + fluid-ounce-imperial{ + dnam{"fl oz imp."} + other{"{0} fl oz imp."} + } gallon{ dnam{"gal"} other{"{0} gal"} + per{"{0}/gal"} + } + gallon-imperial{ + dnam{"gal imp."} + other{"{0} gal imp."} + per{"{0}/gal imp."} } hectoliter{ dnam{"hl"} @@ -987,7 +1270,6 @@ kea{ } liter{ dnam{"l"} - other{"{0} l"} } megaliter{ dnam{"Ml"} @@ -1001,17 +1283,21 @@ kea{ dnam{"pt"} other{"{0} pt"} } + pint-metric{ + dnam{"ptm"} + other{"{0} ptm"} + } quart{ dnam{"qt"} other{"{0} qt"} } tablespoon{ - dnam{"k.sp."} - other{"{0} k.sp."} + dnam{"ks"} + other{"{0} ks"} } teaspoon{ - dnam{"k.xá"} - other{"{0} k.xá"} + dnam{"kx"} + other{"{0} kx"} } } } diff --git a/source/data/unit/khq.txt b/source/data/unit/khq.txt index a17d5b1..f98bf4a 100644 --- a/source/data/unit/khq.txt +++ b/source/data/unit/khq.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License khq{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/ki.txt b/source/data/unit/ki.txt index 3ffdd5b..f7f986b 100644 --- a/source/data/unit/ki.txt +++ b/source/data/unit/ki.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ki{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/kk.txt b/source/data/unit/kk.txt index 5025349..46bd0ba 100644 --- a/source/data/unit/kk.txt +++ b/source/data/unit/kk.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kk{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -67,7 +67,7 @@ kk{ dnam{"шаршы сантиметр"} one{"{0} шаршы сантиметр"} other{"{0} шаршы сантиметр"} - per{"{0}/см²"} + per{"{0}/шаршы сантиметр"} } square-foot{ dnam{"шаршы фут"} @@ -78,25 +78,25 @@ kk{ dnam{"шаршы дюйм"} one{"{0} шаршы дюйм"} other{"{0} шаршы дюйм"} - per{"{0}/дюйм²"} + per{"{0}/шаршы дюйм"} } square-kilometer{ dnam{"шаршы километр"} one{"{0} шаршы километр"} other{"{0} шаршы километр"} - per{"{0}/км²"} + per{"{0}/шаршы километр"} } square-meter{ dnam{"шаршы метр"} one{"{0} шаршы метр"} other{"{0} шаршы метр"} - per{"{0}/метр²"} + per{"{0}/шаршы метр"} } square-mile{ dnam{"шаршы миля"} one{"{0} шаршы миля"} other{"{0} шаршы миля"} - per{"{0}/миля²"} + per{"{0}/шаршы миля"} } square-yard{ dnam{"шаршы ярд"} @@ -247,6 +247,11 @@ kk{ other{"{0} тәулік"} per{"тәулігіне {0}"} } + decade{ + dnam{"декада"} + one{"{0} декада"} + other{"{0} декада"} + } hour{ dnam{"сағат"} one{"{0} сағат"} @@ -397,6 +402,43 @@ kk{ other{"{0} мегагерц"} } } + graphics{ + dot-per-centimeter{ + dnam{"нүкте/сантиметр"} + one{"{0} нүкте/сантиметр"} + other{"{0} нүкте/сантиметр"} + } + dot-per-inch{ + dnam{"нүкте/дюйм"} + one{"{0} нүкте/дюйм"} + other{"{0} нүкте/дюйм"} + } + em{ + dnam{"типографиялық эм"} + one{"{0} эм"} + other{"{0} эм"} + } + megapixel{ + dnam{"мегапиксель"} + one{"{0} мегапиксель"} + other{"{0} мегапиксель"} + } + pixel{ + dnam{"пиксель"} + one{"{0} пиксель"} + other{"{0} пиксель"} + } + pixel-per-centimeter{ + dnam{"пиксель/сантиметр"} + one{"{0} пиксель/сантиметр"} + other{"{0} пиксель/сантиметр"} + } + pixel-per-inch{ + dnam{"пиксель/дюйм"} + one{"{0} пиксель/дюйм"} + other{"{0} пиксель/дюйм"} + } + } length{ astronomical-unit{ dnam{"астрономиялық бірлік"} @@ -484,9 +526,9 @@ kk{ other{"{0} пикометр"} } point{ - dnam{"ұпай"} - one{"{0} ұпай"} - other{"{0} ұпай"} + dnam{"пункт"} + one{"{0} пункт"} + other{"{0} пункт"} } solar-radius{ dnam{"Күн радиусы"} @@ -620,15 +662,20 @@ kk{ one{"{0} атмосфера"} other{"{0} атмосфера"} } + bar{ + dnam{"бар"} + one{"{0} бар"} + other{"{0} бар"} + } hectopascal{ dnam{"гектопаскаль"} one{"{0} гектопаскаль"} other{"{0} гектопаскаль"} } inch-hg{ - dnam{"сынап бағанасының дюймы"} - one{"сынап бағанасының {0} дюймы"} - other{"сынап бағанасының {0} дюймы"} + dnam{"дюйм сынап бағанасы"} + one{"{0} дюйм сынап бағанасы"} + other{"{0} дюйм сынап бағанасы"} } kilopascal{ dnam{"килопаскаль"} @@ -646,9 +693,14 @@ kk{ other{"{0} миллибар"} } millimeter-of-mercury{ - dnam{"сынап бағанасының миллиметрі"} - one{"сынап бағанасының {0} миллиметрі"} - other{"сынап бағанасының {0} миллиметрі"} + dnam{"миллиметр сынап бағанасы"} + one{"{0} миллиметр сынап бағанасы"} + other{"{0} миллиметр сынап бағанасы"} + } + pascal{ + dnam{"паскаль"} + one{"{0} паскаль"} + other{"{0} паскаль"} } pound-per-square-inch{ dnam{"фунт/шаршы дюйм"} @@ -732,7 +784,7 @@ kk{ dnam{"текше сантиметр"} one{"{0} текше сантиметр"} other{"{0} текше сантиметр"} - per{"{0}/сантиметр³"} + per{"{0}/текше сантиметр"} } cubic-foot{ dnam{"текше фут"} @@ -753,7 +805,7 @@ kk{ dnam{"текше метр"} one{"{0} текше метр"} other{"{0} текше метр"} - per{"{0}/метр³"} + per{"{0}/текше метр"} } cubic-mile{ dnam{"текше миля"} @@ -1202,8 +1254,8 @@ kk{ concentr{ karat{ dnam{"карат"} - one{"{0} КТ"} - other{"{0} КТ"} + one{"{0} кар."} + other{"{0} кар."} } milligram-per-deciliter{ dnam{"мг/дл"} @@ -1254,13 +1306,13 @@ kk{ } mile-per-gallon{ dnam{"миля/галлон"} - one{"{0} mpg"} - other{"{0} mpg"} + one{"{0} миля/гал."} + other{"{0} миля/гал."} } mile-per-gallon-imperial{ - dnam{"mpg Imp."} - one{"{0} mpg Imp."} - other{"{0} mpg Imp."} + dnam{"миля/имп. гал."} + one{"{0} миля/имп. гал."} + other{"{0} миля/имп. гал."} } } coordinate{ @@ -1339,6 +1391,11 @@ kk{ other{"{0} күн"} per{"{0}/күн"} } + decade{ + dnam{"декада"} + one{"{0} декада"} + other{"{0} декада"} + } hour{ dnam{"сағат"} one{"{0} сағ"} @@ -1454,6 +1511,10 @@ kk{ one{"{0} кВт-сағ"} other{"{0} кВт-сағ"} } + therm-us{ + one{"{0} амер. термі"} + other{"{0} амер. термі"} + } } force{ newton{ @@ -1489,6 +1550,33 @@ kk{ other{"{0} MГц"} } } + graphics{ + dot-per-centimeter{ + dnam{"нүкте/см"} + one{"{0} нүкте/см"} + other{"{0} нүкте/см"} + } + dot-per-inch{ + dnam{"нүкте/дюйм"} + one{"{0} нүкте/дюйм"} + other{"{0} нүкте/дюйм"} + } + em{ + dnam{"эм"} + one{"{0} эм"} + other{"{0} эм"} + } + megapixel{ + dnam{"Мп"} + one{"{0} Мп"} + other{"{0} Мп"} + } + pixel-per-centimeter{ + dnam{"пиксель/см"} + one{"{0} пиксель/см"} + other{"{0} пиксель/см"} + } + } length{ astronomical-unit{ dnam{"а.б."} @@ -1571,12 +1659,12 @@ kk{ other{"{0} пк"} } picometer{ - dnam{"пикометр"} + dnam{"пм"} one{"{0} пм"} other{"{0} пм"} } point{ - dnam{"ұпай"} + dnam{"пункт"} one{"{0} ұпай"} other{"{0} ұпай"} } @@ -1606,8 +1694,8 @@ kk{ mass{ carat{ dnam{"карат"} - one{"{0} КТ"} - other{"{0} КТ"} + one{"{0} кар."} + other{"{0} кар."} } dalton{ dnam{"Да"} @@ -1712,15 +1800,20 @@ kk{ one{"{0} атм"} other{"{0} атм"} } + bar{ + dnam{"бар"} + one{"{0} бар"} + other{"{0} бар"} + } hectopascal{ dnam{"гектопаскаль"} one{"{0} гПа"} other{"{0} гПа"} } inch-hg{ - dnam{"сынап бағаны дюймі"} - one{"{0} inHg"} - other{"{0} inHg"} + dnam{"дюйм сынап бағанасы"} + one{"{0} дюйм с.б."} + other{"{0} дюйм с.б."} } kilopascal{ dnam{"кПа"} @@ -1734,13 +1827,18 @@ kk{ } millibar{ dnam{"мбар"} - one{"{0} мб"} - other{"{0} мб"} + one{"{0} мбар"} + other{"{0} мбар"} } millimeter-of-mercury{ - dnam{"с.б.мм."} - one{"{0} с.б.мм."} - other{"{0} с.б.мм."} + dnam{"мм с.б."} + one{"{0} мм с.б."} + other{"{0} мм с.б."} + } + pascal{ + dnam{"Па"} + one{"{0} Па"} + other{"{0} Па"} } pound-per-square-inch{ dnam{"psi"} @@ -1828,8 +1926,8 @@ kk{ } cubic-foot{ dnam{"фут³"} - one{"{0} фт³"} - other{"{0} фт³"} + one{"{0} фут³"} + other{"{0} фут³"} } cubic-inch{ dnam{"дюйм³"} @@ -1863,7 +1961,6 @@ kk{ other{"{0} к."} } cup-metric{ - dnam{"м. кесе"} one{"{0} mc"} other{"{0} mc"} } @@ -1873,9 +1970,9 @@ kk{ other{"{0} дл"} } fluid-ounce{ - dnam{"fl oz"} - one{"{0} fl oz"} - other{"{0} fl oz"} + dnam{"сұй. унц."} + one{"{0} сұй. унц."} + other{"{0} сұй. унц."} } fluid-ounce-imperial{ dnam{"имп. fl oz"} @@ -1883,15 +1980,15 @@ kk{ other{"{0} fl oz имп."} } gallon{ - dnam{"gal"} - one{"{0} gal"} - other{"{0} gal"} - per{"{0}/gal"} + dnam{"гал."} + one{"{0} гал."} + other{"{0} гал."} + per{"{0}/гал."} } gallon-imperial{ dnam{"имп. галлон"} - one{"{0} gal Imp."} - other{"{0} gal Imp."} + one{"{0} имп. гал."} + other{"{0} имп. гал."} per{"{0}/имп. галлон"} } hectoliter{ diff --git a/source/data/unit/kkj.txt b/source/data/unit/kkj.txt index 1ba576e..73bad5f 100644 --- a/source/data/unit/kkj.txt +++ b/source/data/unit/kkj.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kkj{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/kl.txt b/source/data/unit/kl.txt index f157a14..77662df 100644 --- a/source/data/unit/kl.txt +++ b/source/data/unit/kl.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kl{ - Version{"2.1.47.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/kln.txt b/source/data/unit/kln.txt index 4480ec6..c00372a 100644 --- a/source/data/unit/kln.txt +++ b/source/data/unit/kln.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kln{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/km.txt b/source/data/unit/km.txt index c0ab84b..c4972bf 100644 --- a/source/data/unit/km.txt +++ b/source/data/unit/km.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License km{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -46,7 +46,6 @@ km{ other{"{0} អា"} } dunam{ - dnam{"dunams"} other{"{0} dunams"} } hectare{ @@ -103,10 +102,6 @@ km{ dnam{"មិល្លីម៉ូលក្នុងមួយលីត្រ"} other{"{0} មិល្លីម៉ូលក្នុងមួយលីត្រ"} } - mole{ - dnam{"mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ផ្នែកក្នុងមួយលាន"} other{"{0} ផ្នែកក្នុងមួយលាន"} @@ -119,10 +114,6 @@ km{ dnam{"‰"} other{"{0}‰"} } - permyriad{ - dnam{"‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -205,6 +196,10 @@ km{ other{"{0} ថ្ងៃ"} per{"{0} ក្នុងមួយថ្ងៃ"} } + decade{ + dnam{"ទសវត្សរ៍"} + other{"{0} ទសវត្សរ៍"} + } hour{ dnam{"ម៉ោង"} other{"{0} ម៉ោង"} @@ -267,18 +262,10 @@ km{ } } energy{ - british-thermal-unit{ - dnam{"BTU"} - other{"{0} Btu"} - } calorie{ dnam{"កាឡូរី"} other{"{0} កាឡូរី"} } - electronvolt{ - dnam{"eV"} - other{"{0} eV"} - } foodcalorie{ dnam{"កាឡូរី"} other{"{0} កាឡូរី"} @@ -300,16 +287,6 @@ km{ other{"{0} គីឡូវ៉ាត់​ម៉ោង"} } } - force{ - newton{ - dnam{"N"} - other{"{0} N"} - } - pound-force{ - dnam{"lbf"} - other{"{0} lbf"} - } - } frequency{ gigahertz{ dnam{"ជីកាហឺត"} @@ -402,10 +379,6 @@ km{ dnam{"pt"} other{"{0} pt"} } - solar-radius{ - dnam{"R☉"} - other{"{0} R☉"} - } yard{ dnam{"យ៉ាត"} other{"{0} យ៉ាត"} @@ -416,24 +389,12 @@ km{ dnam{"lux"} other{"{0} lux"} } - solar-luminosity{ - dnam{"L☉"} - other{"{0} L☉"} - } } mass{ carat{ dnam{"ការ៉ាត់"} other{"{0} ការ៉ាត់"} } - dalton{ - dnam{"Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"ក្រាម"} other{"{0} ក្រាម"} @@ -445,8 +406,8 @@ km{ per{"{0} ក្នុងមួយគីឡូក្រាម"} } metric-ton{ - dnam{"រង្វាស់​តោន"} - other{"{0} រង្វាស់​តោន"} + dnam{"តោនម៉ែត្រ"} + other{"{0} តោនម៉ែត្រ"} } microgram{ dnam{"មីក្រូក្រាម"} @@ -470,10 +431,6 @@ km{ other{"{0} ផោន"} per{"{0} ក្នុងមួយផោន"} } - solar-mass{ - dnam{"M☉"} - other{"{0} M☉"} - } ton{ dnam{"តោន"} other{"{0} តោន"} @@ -518,14 +475,6 @@ km{ dnam{"អ៊ីញនៃបារត"} other{"{0} អ៊ីញនៃបារត"} } - kilopascal{ - dnam{"kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - other{"{0} MPa"} - } millibar{ dnam{"មិល្លីបារ"} other{"{0} មិល្លីបារ"} @@ -575,25 +524,11 @@ km{ other{"{0} អង្សា​ខែលវិន"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"អាហ្វីត"} other{"{0} អាហ្វីត"} } - barrel{ - dnam{"bbl"} - other{"{0} bbl"} - } centiliter{ dnam{"សង់ទីលីត្រ"} other{"{0} សង់ទីលីត្រ"} @@ -644,10 +579,6 @@ km{ dnam{"អោន​វត្ថុ​រាវ"} other{"{0} អោន​វត្ថុ​រាវ"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - other{"{0} fl oz Imp."} - } gallon{ dnam{"ហ្គាឡុង"} other{"{0} ហ្គាឡុង"} @@ -938,7 +869,6 @@ km{ } dunam{ dnam{"dunams"} - other{"{0} dunam"} } hectare{ dnam{"ហិកតា"} @@ -994,10 +924,6 @@ km{ dnam{"mmol/L"} other{"{0} mmol/L"} } - mole{ - dnam{"mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ppm"} other{"{0} ppm"} @@ -1010,10 +936,6 @@ km{ dnam{"‰"} other{"{0}‰"} } - permyriad{ - dnam{"‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -1096,6 +1018,10 @@ km{ other{"{0} ថ្ងៃ"} per{"{0}/ថ្ងៃ"} } + decade{ + dnam{"ទសវត្សរ៍"} + other{"{0} ទសវត្សរ៍"} + } hour{ dnam{"ម៉ោង"} other{"{0} ម៉ោង"} @@ -1160,16 +1086,11 @@ km{ energy{ british-thermal-unit{ dnam{"BTU"} - other{"{0} Btu"} } calorie{ dnam{"cal"} other{"{0} cal"} } - electronvolt{ - dnam{"eV"} - other{"{0} eV"} - } foodcalorie{ dnam{"Cal"} other{"{0} Cal"} @@ -1191,16 +1112,6 @@ km{ other{"{0} kWh"} } } - force{ - newton{ - dnam{"N"} - other{"{0} N"} - } - pound-force{ - dnam{"lbf"} - other{"{0} lbf"} - } - } frequency{ gigahertz{ dnam{"GHz"} @@ -1293,10 +1204,6 @@ km{ dnam{"pt"} other{"{0} pt"} } - solar-radius{ - dnam{"R☉"} - other{"{0} R☉"} - } yard{ dnam{"យ៉ាត"} other{"{0} yd"} @@ -1307,24 +1214,12 @@ km{ dnam{"lux"} other{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - other{"{0} L☉"} - } } mass{ carat{ dnam{"ការ៉ាត់"} other{"{0} CD"} } - dalton{ - dnam{"Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"ក្រាម"} other{"{0} g"} @@ -1361,10 +1256,6 @@ km{ other{"{0} lb"} per{"{0}/lb"} } - solar-mass{ - dnam{"M☉"} - other{"{0} M☉"} - } ton{ dnam{"តោន"} other{"{0} tn"} @@ -1409,14 +1300,6 @@ km{ dnam{"inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} other{"{0} mbar"} @@ -1466,25 +1349,11 @@ km{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"អាហ្វីត"} other{"{0} ac ft"} } - barrel{ - dnam{"bbl"} - other{"{0} bbl"} - } centiliter{ dnam{"cL"} other{"{0} cL"} @@ -1535,10 +1404,6 @@ km{ dnam{"fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} other{"{0} gal"} diff --git a/source/data/unit/kn.txt b/source/data/unit/kn.txt index 666d0a8..f827ed8 100644 --- a/source/data/unit/kn.txt +++ b/source/data/unit/kn.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kn{ - Version{"2.1.48.17"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -22,18 +22,18 @@ kn{ } angle{ arc-minute{ - dnam{"ನಿಮಿಷಗಳು"} - one{"{0} ನಿಮಿಷ"} - other{"{0} ನಿಮಿಷಗಳು"} + dnam{"ಆರ್ಕ್‌ಮಿನಿಟ್‌ಗಳು"} + one{"{0} ಆರ್ಕ್‌ಮಿನಿಟ್"} + other{"{0} ಆರ್ಕ್‌ಮಿನಿಟ್‌ಗಳು"} } arc-second{ - dnam{"ಸೆಕೆಂಡುಗಳು"} - one{"{0} ಸೆಕೆಂಡ್"} - other{"{0} ಸೆಕೆಂಡುಗಳು"} + dnam{"ಆರ್ಕ್‌ಸೆಕೆಂಡುಗಳು"} + one{"{0} ಆರ್ಕ್‌ಸೆಕೆಂಡ್"} + other{"{0} ಆರ್ಕ್‌ಸೆಕೆಂಡುಗಳು"} } degree{ dnam{"ಡಿಗ್ರಿಗಳು"} - one{"{0}ಡಿಗ್ರಿ"} + one{"{0} ಡಿಗ್ರಿ"} other{"{0}ಡಿಗ್ರಿಗಳು"} } radian{ @@ -42,9 +42,9 @@ kn{ other{"{0} ರೇಡಿಯಾನ್‌ಗಳು"} } revolution{ - dnam{"ಕ್ರಾಂತಿ"} - one{"{0} ಕ್ರಾಂತಿ"} - other{"{0} ಕ್ರಾಂತಿಗಳು"} + dnam{"ತಿರುಗುವಿಕೆ"} + one{"{0} ತಿರುಗುವಿಕೆ"} + other{"{0} ತಿರುಗುವಿಕೆಗಳು"} } } area{ @@ -67,7 +67,7 @@ kn{ dnam{"ಚದರ ಸೆಂಟಿಮೀಟರ್‌ಗಳು"} one{"{0} ಚದರ ಸೆಂಟಿಮೀಟರ್"} other{"{0} ಚದರ ಸೆಂಟಿಮೀಟರ್‌ಗಳು"} - per{"{0} ಪ್ರತಿ ಚದರ ಸೆಂಟಿಮೀಟರ್‌‌ಗೆ"} + per{"ಪ್ರತಿ ಚದರ ಸೆಂಟಿಮೀಟರ್‌‌ಗೆ {0}"} } square-foot{ dnam{"ಚದರಡಿ"} @@ -78,25 +78,25 @@ kn{ dnam{"ಚದರ ಅಂಗುಲಗಳು"} one{"{0} ಚದರ ಅಂಗುಲ"} other{"{0} ಚದರ ಅಂಗುಲಗಳು"} - per{"{0} ಚದರ ಅಂಗುಲಕ್ಕೆ"} + per{"{0} ಪ್ರತಿ ಚದರ ಇಂಚಿಗೆ"} } square-kilometer{ dnam{"ಚದರ ಕಿಲೋಮೀಟರ್‌ಗಳು"} one{"{0} ಚದರ ಕಿಲೋಮೀಟರ್"} other{"{0} ಚದರ ಕಿಲೋಮೀಟರ್‌ಗಳು"} - per{"{0} ಪ್ರತಿ ಚದರ ಕಿಲೋಮೀಟರ್‌ಗೆ"} + per{"ಪ್ರತಿ ಚದರ ಕಿಲೋಮೀಟರ್‌ಗೆ {0}"} } square-meter{ dnam{"ಚದರ ಮೀಟರ್‌ಗಳು"} one{"{0} ಚದರ ಮೀಟರ್"} other{"{0} ಚದರ ಮೀಟರ್‌ಗಳು"} - per{"{0} ಚದರ ಮೀಟರ್‌ಗೆ"} + per{"ಚದರ ಮೀಟರ್‌ಗೆ {0}"} } square-mile{ dnam{"ಚದರ ಮೈಲುಗಳು"} one{"{0} ಚದರ ಮೈಲು"} other{"{0} ಚದರ ಮೈಲುಗಳು"} - per{"{0} ಪ್ರತಿ ಚದರ ಮೈಲಿಗೆ"} + per{"ಪ್ರತಿ ಚದರ ಮೈಲಿಗೆ {0}"} } square-yard{ dnam{"ಚದರ ಗಜಗಳು"} @@ -105,7 +105,7 @@ kn{ } } compound{ - per{"{0} ಪ್ರತಿ {1} ಗೆ"} + per{"ಪ್ರತಿ {1} ಗೆ {0}"} } concentr{ karat{ @@ -114,9 +114,9 @@ kn{ other{"{0} ಕಾರಟ್‌ಗಳು"} } milligram-per-deciliter{ - dnam{"ಡೆಸಿಲೀಟರ್ ಮಿಲಿಗ್ರಾಂ"} + dnam{"ಪ್ರತಿ ಡೆಸಿಲೀಟರ್‌ಗೆ ಮಿಲಿಗ್ರಾಂಗಳು"} one{"{0} ಪ್ರತಿ ಡೆಸಿಲೀಟರ್‌ಗೆ ಮಿಲಿಗ್ರಾಂ"} - other{"{0} ಪ್ರತಿ ಡೆಸಿಲೀಟರ್‌ಗೆ ಮಿಲಿಗ್ರಾಂ"} + other{"{0} ಪ್ರತಿ ಡೆಸಿಲೀಟರ್‌ಗೆ ಮಿಲಿಗ್ರಾಂಗಳು"} } millimole-per-liter{ dnam{"ಪ್ರತಿ ಲೀಟರ್ ಮಿಲ್ಲಿಮೋಲ್ಸ್"} @@ -124,9 +124,9 @@ kn{ other{"{0} ಪ್ರತಿ ಲೀಟರ್ ಮಿಲ್ಲಿಮೋಲ್ಸ್"} } mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} + dnam{"ಮೋಲ್‌ಗಳು"} + one{"{0} ಮೋಲ್‌ಗಳು"} + other{"{0} ಮೋಲ್‌ಗಳು"} } part-per-million{ dnam{"ಪ್ರತಿ ಮಿಲಿಯನ್ ಭಾಗಗಳು"} @@ -144,19 +144,19 @@ kn{ other{"{0} ಪ್ರತಿ ಸಾವಿರಕ್ಕೆ"} } permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} + dnam{"ಪರ್ಮಿರೈಡ್"} + one{"{0} ಪರ್ಮಿರೈಡ್"} + other{"{0} ಪರ್ಮಿರೈಡ್"} } } consumption{ liter-per-100kilometers{ - dnam{"ಲೀ/100ಕಿಮೀ"} - one{"{0} ಲೀಟರ್‌ಗಳು ಪ್ರತಿ 100 ಕಿಲೋಮೀಟರ್‌ಗಳಿಗೆ"} - other{"{0} ಲೀಟರ್‌ಗಳು ಪ್ರತಿ 100 ಕಿಲೋಮೀಟರ್‌ಗಳಿಗೆ"} + dnam{"ಪ್ರತಿ 100 ಕಿಲೋಮೀಟರ್‌ಗಳಿಗೆ ಲೀಟರ್‌ಗಳು"} + one{"{0} ಪ್ರತಿ 100 ಕಿಲೋಮೀಟರ್‌ಗಳಿಗೆ ಲೀಟರ್‌ಗಳು"} + other{"{0} ಪ್ರತಿ 100 ಕಿಲೋಮೀಟರ್‌ಗಳಿಗೆ ಲೀಟರ್‌ಗಳು"} } liter-per-kilometer{ - dnam{"ಲೀಟರ್ ಪ್ರತಿ ಕಿಲೋಮೀಟರ್‌ಗೆ"} + dnam{"ಪ್ರತಿ ಕಿಲೋಮೀಟರ್‌ಗೆ ಲೀಟರ್‌ಗಳು"} one{"{0} ಲೀಟರ್ ಪ್ರತಿ ಕಿಲೋಮೀಟರ್‌ಗೆ"} other{"{0} ಪ್ರತಿ ಕಿಲೋಮೀಟರ್‌‌ಗೆ ಲೀಟರ್‌ಗಳು"} } @@ -247,11 +247,16 @@ kn{ other{"{0} ದಿನಗಳು"} per{"{0} ಪ್ರತಿ ದಿನಕ್ಕೆ"} } + decade{ + dnam{"ದಶಕಗಳು"} + one{"{0} ದಶಕ"} + other{"{0} ದಶಕಗಳು"} + } hour{ dnam{"ಗಂಟೆಗಳು"} one{"{0} ಗಂಟೆ"} other{"{0} ಗಂಟೆಗಳು"} - per{"{0} ಪ್ರತಿ ಗಂಟೆ"} + per{"ಪ್ರತಿ ಗಂಟೆಗೆ {0}"} } microsecond{ dnam{"ಮೈಕ್ರೊಸೆಕೆಂಡುಗಳು"} @@ -267,13 +272,13 @@ kn{ dnam{"ನಿಮಿಷಗಳು"} one{"{0} ನಿಮಿಷ"} other{"{0} ನಿಮಿಷಗಳು"} - per{"{0} ಪ್ರತಿ ನಿಮಿಷಕ್ಕೆ"} + per{"ಪ್ರತಿ ನಿಮಿಷಕ್ಕೆ {0}"} } month{ dnam{"ತಿಂಗಳು"} one{"{0} ತಿಂಗಳು"} other{"{0} ತಿಂಗಳು"} - per{"{0} ಪ್ರತಿ ತಿಂಗಳಿಗೆ"} + per{"ಪ್ರತಿ ತಿಂಗಳಿಗೆ {0}"} } nanosecond{ dnam{"ನ್ಯಾನೊಸೆಕೆಂಡುಗಳು"} @@ -284,7 +289,7 @@ kn{ dnam{"ಸೆಕೆಂಡುಗಳು"} one{"{0} ಸೆಕೆಂಡ್"} other{"{0} ಸೆಕೆಂಡುಗಳು"} - per{"{0} ಪ್ರತಿ ಸೆಕೆಂಡ್"} + per{"ಪ್ರತಿ ಸೆಕೆಂಡ್‌ಗೆ {0}"} } week{ dnam{"ವಾರಗಳು"} @@ -296,7 +301,7 @@ kn{ dnam{"ವರ್ಷಗಳು"} one{"{0} ವರ್ಷ"} other{"{0} ವರ್ಷಗಳು"} - per{"{0} ಪ್ರತಿ ವರ್ಷಕ್ಕೆ"} + per{"ಪ್ರತಿ ವರ್ಷಕ್ಕೆ {0}"} } } electric{ @@ -323,9 +328,9 @@ kn{ } energy{ british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} + dnam{"ಬ್ರಿಟಿಷ್ ಉಷ್ಣ ಘಟಕಗಳು"} + one{"{0} ಬ್ರಿಟಿಷ್ ಉಷ್ಣ ಘಟಕ"} + other{"{0} ಬ್ರಿಟಿಷ್ ಉಷ್ಣ ಘಟಕಗಳು"} } calorie{ dnam{"ಕ್ಯಾಲೋರಿಗಳು"} @@ -333,9 +338,9 @@ kn{ other{"{0} ಕ್ಯಾಲೋರಿಗಳು"} } electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} + dnam{"ಎಲೆಕ್ಟ್ರಾನ್‌ವೋಲ್ಟ್‌ಗಳು"} + one{"{0} ಎಲೆಕ್ಟ್ರಾನ್‌ವೋಲ್ಟ್‌"} + other{"{0} ಎಲೆಕ್ಟ್ರಾನ್‌ವೋಲ್ಟ್‌ಗಳು"} } foodcalorie{ dnam{"ಕ್ಯಾಲೋರಿಗಳು"} @@ -362,17 +367,22 @@ kn{ one{"{0} ಕಿಲೋವ್ಯಾಟ್‌-ಗಂಟೆ"} other{"{0} ಕಿಲೋವ್ಯಾಟ್‌-ಗಂಟೆಗಳು"} } + therm-us{ + dnam{"ಯುಎಸ್ ಥರ್ಮ್ಸ್"} + one{"{0} ಯುಎಸ್ ಥರ್ಮ್ಸ್"} + other{"{0} ಯುಎಸ್ ಥರ್ಮ್ಸ್"} + } } force{ newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} + dnam{"ನ್ಯೂಟೋನ್‌ಗಳು"} + one{"{0} ನ್ಯೂಟೋನ್‌"} + other{"{0} ನ್ಯೂಟೋನ್‌ಗಳು"} } pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + dnam{"ಪೌಂಡ್ಸ್ ಆಫ್ ಫೋರ್ಸ್"} + one{"{0} ಪೌಂಡ್ ಆಫ್ ಫೋರ್ಸ್"} + other{"{0} ಪೌಂಡ್ಸ್ ಆಫ್ ಫೋರ್ಸ್"} } } frequency{ @@ -397,6 +407,43 @@ kn{ other{"{0} ಮೆಗಾಹರ್ಟ್ಸ್"} } } + graphics{ + dot-per-centimeter{ + dnam{"ಡಾಟ್ಸ್ ಪರ್ ಸೆಂಟಿಮೀಟರ್"} + one{"{0} ಡಾಟ್ಸ್ ಪರ್ ಸೆಂಟಿಮೀಟರ್"} + other{"{0} ಡಾಟ್ಸ್ ಪರ್ ಸೆಂಟಿಮೀಟರ್"} + } + dot-per-inch{ + dnam{"ಡಾಟ್ಸ್ ಪರ್ ಇಂಚ್"} + one{"{0} ಡಾಟ್ ಪರ್ ಇಂಚ್"} + other{"{0} ಡಾಟ್ಸ್ ಪರ್ ಇಂಚ್"} + } + em{ + dnam{"ಟೈಪೊಗ್ರಾಫಿಕ್ em"} + one{"{0} em"} + other{"{0} ems"} + } + megapixel{ + dnam{"ಮೆಗಾಪಿಕ್ಸೆಲ್‌ಗಳು"} + one{"{0} ಮೆಗಾಪಿಕ್ಸೆಲ್"} + other{"{0} ಮೆಗಾಪಿಕ್ಸೆಲ್‌ಗಳು"} + } + pixel{ + dnam{"ಪಿಕ್ಸೆಲ್‌ಗಳು"} + one{"{0} ಪಿಕ್ಸೆಲ್"} + other{"{0} ಪಿಕ್ಸೆಲ್‌ಗಳು"} + } + pixel-per-centimeter{ + dnam{"ಪಿಕ್ಸೆಲ್ಸ್ ಪರ್ ಸೆಂಟಿಮೀಟರ್"} + one{"{0} ಪಿಕ್ಸೆಲ್ ಪರ್ ಸೆಂಟಿಮೀಟರ್"} + other{"{0} ಪಿಕ್ಸೆಲ್ಸ್ ಪರ್ ಸೆಂಟಿಮೀಟರ್"} + } + pixel-per-inch{ + dnam{"ಪಿಕ್ಸೆಲ್ಸ್ ಪರ್ ಇಂಚ್"} + one{"{0} ಪಿಕ್ಸೆಲ್ ಪರ್ ಇಂಚ್"} + other{"{0} ಪಿಕ್ಸೆಲ್ಸ್ ಪರ್ ಇಂಚ್"} + } + } length{ astronomical-unit{ dnam{"ಅಸ್ಟ್ರಾನಾಮಿಕಲ್ ಯೂನಿಟ್‌ಗಳು"} @@ -407,7 +454,7 @@ kn{ dnam{"ಸೆಂಟಿಮೀಟರ್‌ಗಳು"} one{"{0} ಸೆಂಟಿಮೀಟರ್"} other{"{0} ಸೆಂಟಿಮೀಟರ್‌ಗಳು"} - per{"{0} ಪ್ರತಿ ಸೆಂಟಿಮೀಟರ್‌ಗೆ"} + per{"ಪ್ರತಿ ಸೆಂಟಿಮೀಟರ್‌ಗೆ {0}"} } decimeter{ dnam{"ಡೆಸಿಮೀಟರ್‌ಗಳು"} @@ -418,19 +465,19 @@ kn{ dnam{"ಅಡಿ"} one{"{0} ಅಡಿ"} other{"{0} ಅಡಿ"} - per{"{0} ಪ್ರತಿ ಅಡಿಗೆ"} + per{"ಪ್ರತಿ ಅಡಿಗೆ {0}"} } inch{ dnam{"ಅಂಗುಲಗಳು"} one{"{0} ಅಂಗುಲ"} other{"{0} ಅಂಗುಲಗಳು"} - per{"{0} ಪ್ರತಿ ಅಂಗುಲಕ್ಕೆ"} + per{"ಪ್ರತಿ ಅಂಗುಲಕ್ಕೆ {0}"} } kilometer{ dnam{"ಕಿಲೋಮೀಟರ್‌ಗಳು"} one{"{0} ಕಿಲೋಮೀಟರ್"} other{"{0} ಕಿಲೋಮೀಟರ್‌ಗಳು"} - per{"{0} ಪ್ರತಿ ಕಿಲೋಮೀಟ‍ರ್‌ಗೆ"} + per{"ಪ್ರತಿ ಕಿಲೋಮೀಟ‍ರ್‌ಗೆ {0}"} } light-year{ dnam{"ಬೆಳಕಿನ ವರ್ಷಗಳು"} @@ -441,7 +488,7 @@ kn{ dnam{"ಮೀಟರ್‌ಗಳು"} one{"{0} ಮೀಟರ್"} other{"{0} ಮೀಟರ್‌ಗಳು"} - per{"{0} ಪ್ರತಿ ಮೀಟರ್‌ಗೆ"} + per{"ಪ್ರತಿ ಮೀಟರ್‌ಗೆ {0}"} } micrometer{ dnam{"ಮೈಕ್ರೊಮೀಟರ್‌ಗಳು"} @@ -506,9 +553,9 @@ kn{ other{"{0} ಲಕ್ಸ್‌‌"} } solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} + dnam{"ಸೌರ ಪ್ರಕಾಶಗಳು"} + one{"{0} ಸೌರ ಪ್ರಕಾಶಗಳು"} + other{"{0} ಸೌರ ಪ್ರಕಾಶಗಳು"} } } mass{ @@ -523,9 +570,9 @@ kn{ other{"{0} ಡಿಎ"} } earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} + dnam{"ಭೂಮಿಯ ದೃವ್ಯರಾಶಿ"} + one{"{0} ಭೂಮಿಯ ದೃವ್ಯರಾಶಿ"} + other{"{0} ಭೂಮಿಯ ದೃವ್ಯರಾಶಿ"} } gram{ dnam{"ಗ್ರಾಂಗಳು"} @@ -625,6 +672,11 @@ kn{ one{"{0} ವಾತಾವರಣ"} other{"{0} ವಾತಾವರಣಗಳು"} } + bar{ + dnam{"ಬಾರ್‌ಗಳು"} + one{"{0} ಬಾರ್‌"} + other{"{0} ಬಾರ್‌ಗಳು"} + } hectopascal{ dnam{"ಹೆಕ್ಟೋಪ್ಯಾಸ್ಕಲ್‌ಗಳು"} one{"{0} ಹೆಕ್ಟೋಪ್ಯಾಸ್ಕಲ್"} @@ -655,6 +707,11 @@ kn{ one{"{0} ಮರ್ಕ್ಯುರಿ ಮಿಲಿಮೀಟರ್‌"} other{"{0} ಮರ್ಕ್ಯುರಿ ಮಿಲಿಮೀಟರ್‌ಗಳು"} } + pascal{ + dnam{"ಪಾಸ್ಕಲ್ಸ್"} + one{"{0} ಪ್ಯಾಸ್ಕಲ್"} + other{"{0} ಪ್ಯಾಸ್ಕಲ್ಸ್"} + } pound-per-square-inch{ dnam{"ಪ್ರತಿ ಚದರ ಇಂಚಿಗೆ ಪೌಂಡ್‌ಗಳು"} one{"{0} ಪ್ರತಿ ಚದರ ಇಂಚಿಗೆ ಪೌಂಡ್‌"} @@ -707,14 +764,14 @@ kn{ } torque{ newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} + dnam{"ನ್ಯೂಟನ್-ಮೀಟರ್"} + one{"{0} ನ್ಯೂಟನ್-ಮೀಟರ್"} + other{"{0} ನ್ಯೂಟನ್-ಮೀಟರ್"} } pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} + dnam{"ಪೌಂಡ್-ಅಡಿ"} + one{"{0} ಪೌಂಡ್-ಅಡಿ"} + other{"{0} ಪೌಂಡ್-ಅಡಿ"} } } volume{ @@ -724,9 +781,9 @@ kn{ other{"{0} ಎಕರೆ-ಅಡಿ"} } barrel{ - dnam{"bbl"} - one{"{0} bbl"} - other{"{0} bbl"} + dnam{"ಬ್ಯಾರೆಲ್‌ಗಳು"} + one{"{0} ಬ್ಯಾರೆಲ್"} + other{"{0} ಬ್ಯಾರೆಲ್‌ಗಳು"} } centiliter{ dnam{"ಸೆಂಟಿಲೀಟರ್‌ಗಳು"} @@ -737,7 +794,7 @@ kn{ dnam{"ಕ್ಯೂಬಿಕ್ ಸೆಂಟಿಮೀಟರ್‌ಗಳು"} one{"{0} ಕ್ಯೂಬಿಕ್ ಸೆಂಟಿಮೀಟರ್"} other{"{0} ಕ್ಯೂಬಿಕ್ ಸೆಂಟಿಮೀಟರ್‌ಗಳು"} - per{"{0} ಪ್ರತಿ ಕ್ಯೂಬಿಕ್ ಸೆಂಟಿಮೀಟರ್‌ಗಳಿಗೆ"} + per{"ಪ್ರತಿ ಕ್ಯೂಬಿಕ್ ಸೆಂಟಿಮೀಟರ್‌ಗಳಿಗೆ {0}"} } cubic-foot{ dnam{"ಘನ ಅಡಿ"} @@ -791,9 +848,9 @@ kn{ other{"{0} ಫ್ಲೂಡ್ ಔನ್ಸ್‌ಗಳು"} } fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} + dnam{"ಇಂಪಿರಿಯಲ್ ಫ್ಲೂಡ್ ಔನ್ಸ್‌ಗಳು"} + one{"{0} ಇಂಪಿರಿಯಲ್ ಫ್ಲೂಡ್ ಔನ್ಸ್‌"} + other{"{0} ಇಂಪಿರಿಯಲ್ ಫ್ಲೂಡ್ ಔನ್ಸ್‌ಗಳು"} } gallon{ dnam{"ಗ್ಯಾಲನ್‌‌ಗಳು"} @@ -816,7 +873,7 @@ kn{ dnam{"ಲೀಟರ್‌‌ಗಳು"} one{"{0} ಲೀಟರ್"} other{"{0} ಲೀಟರ್‌ಗಳು"} - per{"{0} ಪ್ರತಿ ಲೀಟರ್‌ಗೆ"} + per{"ಪ್ರತಿ ಲೀಟರ್‌ಗೆ {0}"} } megaliter{ dnam{"ಮೆಗಾ ಲೀಟರ್‌ಗಳು"} @@ -901,6 +958,13 @@ kn{ compound{ per{"{0}/{1}"} } + concentr{ + percent{ + dnam{"%"} + one{"{0}%"} + other{"{0}%"} + } + } consumption{ liter-per-100kilometers{ dnam{"ಲೀ/100ಕಿ.ಮೀ"} @@ -918,8 +982,8 @@ kn{ duration{ day{ dnam{"ದಿನ"} - one{"{0}ದಿನ"} - other{"{0}ದಿನ"} + one{"{0}ದಿ"} + other{"{0}ದಿ"} per{"{0}/ದಿ"} } hour{ @@ -953,11 +1017,11 @@ kn{ } week{ dnam{"ವಾರ"} - one{"{0}ವಾರ"} - other{"{0}ವಾರ"} + one{"{0}ವಾ"} + other{"{0}ವಾ"} } year{ - dnam{"ವರ್ಷಗಳು"} + dnam{"ವ"} one{"{0}ವ"} other{"{0}ವ"} } @@ -997,7 +1061,7 @@ kn{ other{"{0}ಹಗು. ವ."} } meter{ - dnam{"ಮೀಟರ್‌ಗಳು"} + dnam{"ಮೀ"} one{"{0}ಮೀ"} other{"{0}ಮೀ"} per{"{0}/ಮೀ"} @@ -1127,6 +1191,11 @@ kn{ one{"{0}°ಫ್ಯಾ"} other{"{0}°ಫ್ಯಾ"} } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ dnam{"ಕೆ"} one{"{0} ಕೆ"} @@ -1153,25 +1222,25 @@ kn{ acceleration{ g-force{ dnam{"ಜಿ-ಫೋರ್ಸ್"} - one{"{0} ಜಿ-ಫೋ."} - other{"{0} ಜಿ-ಫೋ."} + one{"{0} ಜಿ"} + other{"{0} ಜಿ"} } meter-per-second-squared{ - dnam{"ಮೀ/ಸೆ²"} + dnam{"ಮೀಟರ್‌ಗಳು/ಸೆ²"} one{"{0} ಮೀ/ಸೆ²"} other{"{0} ಮೀ/ಸೆ²"} } } angle{ arc-minute{ - dnam{"ನಿ."} - one{"{0} ನಿ."} - other{"{0} ನಿ.ಗಳು"} + dnam{"ಆರ್ಕ್‌ಮಿನಿ"} + one{"{0} ಆರ್ಕ್‌ಮಿನಿ"} + other{"{0} ಆರ್ಕ್‌ಮಿನಿ"} } arc-second{ - dnam{"ಸೆಕೆಂ.ಗಳು"} - one{"{0} ಸೆಕೆಂ"} - other{"{0} ಸೆಕೆಂ.ಗಳು"} + dnam{"ಆರ್ಕ್‌ಸೆಕೆಂ"} + one{"{0} ಆರ್ಕ್ಸ್‌ ಸೆಂ"} + other{"{0} ಆರ್ಕ್‌ಸೆಕೆಂ"} } degree{ dnam{"ಡಿಗ್ರಿಗಳು"} @@ -1179,14 +1248,14 @@ kn{ other{"{0} ಡಿ."} } radian{ - dnam{"ರೇಡಿ."} + dnam{"ರೇಡಿಯಾನ್‌ಗಳು"} one{"{0} ರೇಡಿ."} other{"{0} ರೇಡಿ"} } revolution{ - dnam{"ಕ್ರಾಂ"} - one{"{0} ಕ್ರಾಂ"} - other{"{0} ಕ್ರಾಂ"} + dnam{"ತಿರುಗು"} + one{"{0} ತಿರುಗು"} + other{"{0} ತಿರುಗು"} } } area{ @@ -1220,7 +1289,7 @@ kn{ dnam{"ಅಂಗುಲಗಳು²"} one{"{0} ಅಂ²"} other{"{0} ಅಂ²"} - per{"{0}/ಅಂ²ಕ್ಕೆ"} + per{"{0}/ಅಂ²"} } square-kilometer{ dnam{"ಕಿಮೀ²"} @@ -1229,10 +1298,10 @@ kn{ per{"{0}/ಕಿಮೀ²"} } square-meter{ - dnam{"ಚದರ ಮೀಟರ್‌ಗಳು"} + dnam{"ಮೀಟರ್‌ಗಳು²"} one{"{0} ಮೀ²"} other{"{0} ಮೀ²"} - per{"{0}/ಮೀ²ಗೆ"} + per{"{0}/ಮೀ²"} } square-mile{ dnam{"ಚದರ ಮೈಲುಗಳು"} @@ -1248,6 +1317,7 @@ kn{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1266,9 +1336,9 @@ kn{ other{"{0} ಮಿಮೋಲ್/ಲೀ"} } mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} + dnam{"ಮೋಲ್‌"} + one{"{0} ಮೋಲ್"} + other{"{0} ಮೋಲ್"} } part-per-million{ dnam{"ಭಾಗಗಳು/ಮಿಲಿಯನ್"} @@ -1277,12 +1347,16 @@ kn{ } percent{ dnam{"ಶೇಕಡಾ"} + one{"{0}%"} + other{"{0}%"} } permille{ dnam{"ಪ್ರತಿ ಸಾವಿರಕ್ಕೆ"} + one{"{0}‰"} + other{"{0}‰"} } permyriad{ - dnam{"‱"} + dnam{"ಪರ್ಮಿರೈಡ್"} one{"{0}‱"} other{"{0}‱"} } @@ -1294,12 +1368,12 @@ kn{ other{"{0} ಲೀ/100ಕಿ.ಮೀ"} } liter-per-kilometer{ - dnam{"ಲೀ/ಕಿ.ಮೀ"} + dnam{"ಲೀಟರ್‌ಗಳು/ಕಿಮೀ"} one{"{0} ಲೀ/ಕಿ.ಮೀ"} other{"{0} ಲೀ/ಕಿ.ಮೀ"} } mile-per-gallon{ - dnam{"ಮೈ/ಗ್ಯಾ"} + dnam{"ಮೈಲಿಗಳು/ಗ್ಯಾ"} one{"{0} ಪ್ರಗ್ಯಾಮೈ"} other{"{0} ಪ್ರ.ಗ್ಯಾ.ಮೈ."} } @@ -1319,12 +1393,12 @@ kn{ digital{ bit{ dnam{"ಬಿಟ್‌"} - one{"{0} ಬಿ."} + one{"{0} ಬಿಟ್"} other{"{0} ಬಿ."} } byte{ - dnam{"ಬೈ."} - one{"{0} ಬೈ."} + dnam{"ಬೈಟ್"} + one{"{0} ಬೈಟ್"} other{"{0} ಬೈ."} } gigabit{ @@ -1385,6 +1459,11 @@ kn{ other{"{0} ದಿನಗಳು"} per{"{0}/ದಿ"} } + decade{ + dnam{"ದಶ"} + one{"{0} ದಶ"} + other{"{0} ದಶ"} + } hour{ dnam{"ಗಂಟೆಗಳು"} one{"{0} ಗಂ."} @@ -1461,9 +1540,9 @@ kn{ } energy{ british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} + dnam{"ಬ್ರಿಉಘ"} + one{"{0} ಬ್ರಿಉಘ"} + other{"{0} ಬ್ರಿಉಘ"} } calorie{ dnam{"ಕ್ಯಾಲೊ"} @@ -1471,9 +1550,9 @@ kn{ other{"{0} ಕ್ಯಾಲೊ"} } electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} + dnam{"ಎಲೆಕ್ಟ್ರಾನ್‌ವೋಲ್ಟ್‌"} + one{"{0} ಎವೋ"} + other{"{0} ಎವೋ"} } foodcalorie{ dnam{"ಕ್ಯಾ"} @@ -1500,17 +1579,22 @@ kn{ one{"{0} ಕಿವ್ಯಾಗಂ"} other{"{0} ಕಿವ್ಯಾಗಂ"} } + therm-us{ + dnam{"ಯುಎಸ್ ಥರ್ಮ್ಸ್"} + one{"{0} ಯುಎಸ್ ಥರ್ಮ್ಸ್"} + other{"{0} ಯುಎಸ್ ಥರ್ಮ್ಸ್"} + } } force{ newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} + dnam{"ನ್ಯೂಟೋನ್‌"} + one{"{0} ನ್ಯೂ"} + other{"{0} ನ್ಯೂ"} } pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + dnam{"ಪೌಂಡ್ - ಫೋರ್ಸ್"} + one{"{0} ಎಲ್‌ಬಿಎಫ್"} + other{"{0} ಎಲ್‌ಬಿಎಫ್"} } } frequency{ @@ -1535,6 +1619,43 @@ kn{ other{"{0} ಮೆ.ಹ"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"ಮೆಗಾಪಿಕ್ಸೆಲ್‌ಗಳು"} + one{"{0} MP"} + other{"{0} MP"} + } + pixel{ + dnam{"ಪಿಕ್ಸೆಲ್‌ಗಳು"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + one{"{0} ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"ಅ.ಯೂ"} @@ -1576,7 +1697,7 @@ kn{ other{"{0} ಬೆ.ವರ್ಷ"} } meter{ - dnam{"ಮೀಟರ್‌ಗಳು"} + dnam{"ಮೀ"} one{"{0} ಮೀ"} other{"{0} ಮೀ"} per{"{0}/ಮೀ"} @@ -1624,7 +1745,7 @@ kn{ point{ dnam{"ಪಾಯಿಂಟ್‌ಗಳು"} one{"{0} ಪಾಯಿಂಟ್"} - other{"{0} ಪಾಯಿಂಟ್‌ಗಳು"} + other{"{0} ಪಾಯಿಂಟ್‌"} } solar-radius{ dnam{"ಸೋಲಾರ್‌ ರೇಡಿ"} @@ -1639,14 +1760,12 @@ kn{ } light{ lux{ - dnam{"ಲ."} - one{"{0} ಲ."} - other{"{0} ಲ."} + dnam{"ಲಕ್ಸ್"} + one{"{0} ಎಲ್‌ಎಕ್ಸ್"} + other{"{0} ಎಲ್‌ಎಕ್ಸ್"} } solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} + dnam{"ಸೌರ ಪ್ರಕಾಶಗಳು"} } } mass{ @@ -1661,9 +1780,9 @@ kn{ other{"{0} Da"} } earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} + dnam{"ಭೂಮಿಯ ದೃವ್ಯರಾಶಿ"} + one{"{0} ದೃ⊕"} + other{"{0} ದೃ⊕"} } gram{ dnam{"ಗ್ರಾಂಗಳು"} @@ -1711,8 +1830,8 @@ kn{ } solar-mass{ dnam{"ಸೋಲಾರ್‌ ಮಾಸ್‌ಗಳು"} - one{"{0} M☉"} - other{"{0} M☉"} + one{"{0} ದೃ☉"} + other{"{0} ದೃ☉"} } stone{ dnam{"ಕಲ್ಲುಗಳು"} @@ -1763,6 +1882,11 @@ kn{ one{"{0} ವಾತಾವರಣ"} other{"{0} ವಾತಾವರಣ"} } + bar{ + dnam{"ಬಾರ್‌"} + one{"{0} ಬಾರ್‌"} + other{"{0} ಬಾರ್‌ಗಳು"} + } hectopascal{ dnam{"ಹೆ.ಪ್ಯಾ."} one{"{0} ಹೆ.ಪ್ಯಾ"} @@ -1793,6 +1917,11 @@ kn{ one{"{0} ಮರ್ಕ್ಯು ಮಿಮೀ"} other{"{0} ಮರ್ಕ್ಯು ಮಿಮೀ"} } + pascal{ + dnam{"ಪಾ"} + one{"{0} ಪಾ"} + other{"{0} ಪ್ಯಾ"} + } pound-per-square-inch{ dnam{"ಪ್ರ.ಚ.ಇಂ.ಪೌಂ."} one{"{0} ಪ್ರಚಇಂಪೌಂ"} @@ -1801,7 +1930,7 @@ kn{ } speed{ kilometer-per-hour{ - dnam{"ಕಿ.ಮೀ/ಗಂ"} + dnam{"ಕಿ.ಮೀ/ಗಂಟೆ"} one{"{0} ಕಿ.ಮೀ./ಗಂ"} other{"{0} ಕಿ.ಮೀ./ಗಂ"} } @@ -1816,7 +1945,7 @@ kn{ other{"{0} ಮೀ/ಸೆ."} } mile-per-hour{ - dnam{"ಮೈ/ಗಂ"} + dnam{"ಮೈಲುಗಳು/ಗಂಟೆ"} one{"{0} ಮೈ/ಗಂ"} other{"{0} ಮೈ/ಗಂ"} } @@ -1845,14 +1974,14 @@ kn{ } torque{ newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} + dnam{"ನ್ಯೂ.ಮೀ"} + one{"{0} ನ್ಯೂ.ಮೀ"} + other{"{0} ನ್ಯೂ.ಮೀ"} } pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} + dnam{"ಎಲ್‌ಬಿಎಫ್-ಎಫ್‌ಟಿ"} + one{"{0} ಎಲ್‌ಬಿಎಫ್-ಎಫ್‌ಟಿ"} + other{"{0} ಎಲ್‌ಬಿಎಫ್-ಎಫ್‌ಟಿ"} } } volume{ @@ -1862,7 +1991,7 @@ kn{ other{"{0} ಎ. ಅ"} } barrel{ - dnam{"bbl"} + dnam{"ಬ್ಯಾರೆಲ್"} one{"{0} bbl"} other{"{0} bbl"} } @@ -1929,7 +2058,7 @@ kn{ other{"{0} ಫ್ಲೂ.ಔ"} } fluid-ounce-imperial{ - dnam{"Imp. fl oz"} + dnam{"ಇಂಪಿ. ಫ್ಲೂ. ಔ."} one{"{0} fl oz Imp."} other{"{0} fl oz Imp."} } diff --git a/source/data/unit/ko.txt b/source/data/unit/ko.txt index 10b76df..4ff9f1c 100644 --- a/source/data/unit/ko.txt +++ b/source/data/unit/ko.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ko{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -108,11 +108,16 @@ ko{ other{"{0}몰"} } part-per-million{ + dnam{"ppm"} other{"{0}ppm"} } - permyriad{ - dnam{"‱"} - other{"{0}‱"} + percent{ + dnam{"%"} + other{"{0}%"} + } + permille{ + dnam{"‰"} + other{"{0}‰"} } } consumption{ @@ -510,6 +515,7 @@ ko{ } pressure{ atmosphere{ + dnam{"atm"} other{"{0}atm"} } hectopascal{ @@ -551,9 +557,11 @@ ko{ other{"{0}노트"} } meter-per-second{ + dnam{"m/s"} other{"초속 {0}미터"} } mile-per-hour{ + dnam{"mi/h"} other{"시속 {0}마일"} } } @@ -581,7 +589,6 @@ ko{ other{"{0}뉴턴미터"} } pound-foot{ - dnam{"lbf⋅ft"} other{"{0}lbf⋅ft"} } } @@ -700,9 +707,11 @@ ko{ unitsNarrow{ acceleration{ g-force{ + dnam{"g-force"} other{"{0}G"} } meter-per-second-squared{ + dnam{"m/s²"} other{"{0}m/s²"} } } @@ -737,13 +746,27 @@ ko{ other{"{0}mi²"} } } + compound{ + per{"{0}/{1}"} + } + concentr{ + percent{ + dnam{"%"} + other{"{0}%"} + } + } consumption{ liter-per-100kilometers{ + dnam{"L/100km"} other{"{0}L/100km"} } } coordinate{ dnam{"쪽"} + east{"{0}E"} + north{"{0}N"} + south{"{0}S"} + west{"{0}W"} } duration{ century{ @@ -761,6 +784,7 @@ ko{ per{"{0}/시간"} } microsecond{ + dnam{"μs"} other{"{0}μs"} } millisecond{ @@ -778,6 +802,7 @@ ko{ per{"{0}/월"} } nanosecond{ + dnam{"ns"} other{"{0}ns"} } second{ @@ -798,100 +823,138 @@ ko{ } length{ astronomical-unit{ + dnam{"au"} other{"{0}au"} } centimeter{ + dnam{"cm"} other{"{0}cm"} + per{"{0}/cm"} } decimeter{ + dnam{"dm"} other{"{0}dm"} } fathom{ + dnam{"fm"} other{"{0}fth"} } foot{ + dnam{"ft"} other{"{0}′"} + per{"{0}/ft"} } furlong{ + dnam{"fur"} other{"{0}fur"} } inch{ + dnam{"in"} other{"{0}″"} + per{"{0}/in"} } kilometer{ + dnam{"km"} other{"{0}km"} + per{"{0}/km"} } light-year{ + dnam{"ly"} other{"{0}ly"} } meter{ dnam{"m"} other{"{0}m"} + per{"{0}/m"} } micrometer{ + dnam{"µm"} other{"{0}µm"} } mile{ + dnam{"mi"} other{"{0}mi"} } mile-scandinavian{ + dnam{"smi"} other{"{0}smi"} } millimeter{ + dnam{"mm"} other{"{0}mm"} } nanometer{ + dnam{"nm"} other{"{0}nm"} } nautical-mile{ + dnam{"nmi"} other{"{0}nmi"} } parsec{ + dnam{"pc"} other{"{0}pc"} } picometer{ + dnam{"pm"} other{"{0}pm"} } point{ + dnam{"pt"} other{"{0}pt"} } yard{ + dnam{"yd"} other{"{0}yd"} } } mass{ carat{ + dnam{"CD"} other{"{0}CD"} } gram{ dnam{"g"} other{"{0}g"} + per{"{0}/g"} } kilogram{ + dnam{"kg"} other{"{0}kg"} + per{"{0}/kg"} } metric-ton{ + dnam{"t"} other{"{0}t"} } microgram{ + dnam{"µg"} other{"{0}µg"} } milligram{ + dnam{"mg"} other{"{0}mg"} } ounce{ + dnam{"oz"} other{"{0}oz"} + per{"{0}/oz"} } ounce-troy{ + dnam{"oz t"} other{"{0}oz t"} } pound{ + dnam{"lb"} other{"{0}lb"} + per{"{0}/lb"} } stone{ + dnam{"st"} other{"{0}st"} } ton{ + dnam{"tn"} other{"{0}tn"} } } @@ -908,12 +971,15 @@ ko{ } pressure{ hectopascal{ + dnam{"hPa"} other{"{0}hPa"} } inch-hg{ + dnam{"inHg"} other{"{0}\u0022Hg"} } millibar{ + dnam{"mbar"} other{"{0}mb"} } millimeter-of-mercury{ @@ -921,25 +987,43 @@ ko{ other{"{0}mmHg"} } pound-per-square-inch{ + dnam{"psi"} other{"{0}psi"} } } speed{ kilometer-per-hour{ + dnam{"km/h"} other{"{0}km/h"} } knot{ + dnam{"kn"} other{"{0}kn"} } meter-per-second{ + dnam{"m/s"} other{"{0}m/s"} } mile-per-hour{ + dnam{"mi/h"} other{"{0}mph"} } } temperature{ + celsius{ + dnam{"°C"} + other{"{0}°C"} + } + fahrenheit{ + dnam{"°F"} + other{"{0}°F"} + } + generic{ + dnam{"°"} + other{"{0}°"} + } kelvin{ + dnam{"K"} other{"{0}K"} } } @@ -959,26 +1043,33 @@ ko{ unitsShort{ acceleration{ g-force{ + dnam{"g-force"} other{"{0}G"} } meter-per-second-squared{ + dnam{"m/s²"} other{"{0}m/s²"} } } angle{ arc-minute{ dnam{"′"} + other{"{0}′"} } arc-second{ dnam{"″"} + other{"{0}″"} } degree{ dnam{"°"} + other{"{0}°"} } radian{ + dnam{"rad"} other{"{0}rad"} } revolution{ + dnam{"rev"} other{"{0}rev"} } } @@ -996,54 +1087,79 @@ ko{ other{"{0}ha"} } square-centimeter{ + dnam{"cm²"} other{"{0}cm²"} + per{"{0}/cm²"} } square-foot{ + dnam{"ft²"} other{"{0}ft²"} } square-inch{ + dnam{"in²"} other{"{0}in²"} + per{"{0}/in²"} } square-kilometer{ + dnam{"km²"} other{"{0}km²"} + per{"{0}/km²"} } square-meter{ + dnam{"m²"} other{"{0}m²"} + per{"{0}/m²"} } square-mile{ + dnam{"mi²"} other{"{0}mi²"} + per{"{0}/mi²"} } square-yard{ + dnam{"yd²"} other{"{0}yd²"} } } + compound{ + per{"{0}/{1}"} + times{"{0}⋅{1}"} + } concentr{ karat{ + dnam{"kt"} other{"{0}kt"} } milligram-per-deciliter{ + dnam{"mg/dL"} other{"{0}mg/dL"} } millimole-per-liter{ + dnam{"mmol/L"} other{"{0}mmol/L"} } mole{ - dnam{"mol"} other{"{0}mol"} } part-per-million{ + dnam{"ppm"} other{"{0}ppm"} } - permyriad{ - dnam{"‱"} - other{"{0}‱"} + percent{ + dnam{"%"} + other{"{0}%"} + } + permille{ + dnam{"‰"} + other{"{0}‰"} } } consumption{ liter-per-100kilometers{ + dnam{"L/100km"} other{"{0}L/100km"} } liter-per-kilometer{ + dnam{"L/km"} other{"{0}L/km"} } mile-per-gallon{ @@ -1051,44 +1167,60 @@ ko{ other{"{0}mpg"} } mile-per-gallon-imperial{ + dnam{"mpg Imp."} other{"{0}mpg Imp."} } } coordinate{ dnam{"쪽"} + east{"{0}E"} + north{"{0}N"} + south{"{0}S"} + west{"{0}W"} } digital{ bit{ + dnam{"bit"} other{"{0}bit"} } byte{ + dnam{"byte"} other{"{0}byte"} } gigabit{ + dnam{"Gb"} other{"{0}Gb"} } gigabyte{ + dnam{"GB"} other{"{0}GB"} } kilobit{ + dnam{"kb"} other{"{0}kb"} } kilobyte{ + dnam{"kB"} other{"{0}kB"} } megabit{ + dnam{"Mb"} other{"{0}Mb"} } megabyte{ + dnam{"MB"} other{"{0}MB"} } petabyte{ + dnam{"PB"} other{"{0}PB"} } terabit{ + dnam{"Tb"} other{"{0}Tb"} } terabyte{ + dnam{"TB"} other{"{0}TB"} } } @@ -1102,9 +1234,14 @@ ko{ other{"{0}일"} per{"{0}/일"} } + decade{ + dnam{"dec"} + other{"{0} dec"} + } hour{ dnam{"시간"} other{"{0}시간"} + per{"{0}/h"} } microsecond{ dnam{"μs"} @@ -1131,6 +1268,7 @@ ko{ second{ dnam{"초"} other{"{0}초"} + per{"{0}/s"} } week{ dnam{"주"} @@ -1145,12 +1283,15 @@ ko{ } electric{ ampere{ + dnam{"amp"} other{"{0}A"} } milliampere{ + dnam{"mA"} other{"{0}mA"} } ohm{ + dnam{"ohm"} other{"{0}Ω"} } volt{ @@ -1164,6 +1305,7 @@ ko{ other{"{0}Btu"} } calorie{ + dnam{"cal"} other{"{0}cal"} } electronvolt{ @@ -1171,6 +1313,7 @@ ko{ other{"{0}eV"} } foodcalorie{ + dnam{"Cal"} other{"{0}Cal"} } joule{ @@ -1178,87 +1321,146 @@ ko{ other{"{0}줄"} } kilocalorie{ + dnam{"kcal"} other{"{0}kcal"} } kilojoule{ + dnam{"kJ"} other{"{0}kJ"} } kilowatt-hour{ + dnam{"kWh"} other{"{0}kWh"} } + therm-us{ + dnam{"US therm"} + other{"{0} US therm"} + } } force{ newton{ - dnam{"N"} other{"{0}N"} } pound-force{ - dnam{"lbf"} other{"{0}lbf"} } } frequency{ gigahertz{ + dnam{"GHz"} other{"{0}GHz"} } hertz{ + dnam{"Hz"} other{"{0}Hz"} } kilohertz{ + dnam{"kHz"} other{"{0}kHz"} } megahertz{ + dnam{"MHz"} other{"{0}MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + other{"{0} em"} + } + megapixel{ + dnam{"MP"} + other{"{0} MP"} + } + pixel{ + dnam{"px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ + dnam{"au"} other{"{0}au"} } centimeter{ + dnam{"cm"} other{"{0}cm"} + per{"{0}/cm"} } decimeter{ + dnam{"dm"} other{"{0}dm"} } fathom{ + dnam{"fm"} other{"{0}fth"} } foot{ + dnam{"ft"} other{"{0}ft"} + per{"{0}/ft"} } furlong{ + dnam{"fur"} other{"{0}fur"} } inch{ + dnam{"in"} other{"{0}in"} + per{"{0}/in"} } kilometer{ + dnam{"km"} other{"{0}km"} + per{"{0}/km"} } light-year{ + dnam{"ly"} other{"{0}ly"} } meter{ dnam{"m"} other{"{0}m"} + per{"{0}/m"} } micrometer{ + dnam{"µm"} other{"{0}µm"} } mile{ + dnam{"mi"} other{"{0}mi"} } mile-scandinavian{ + dnam{"smi"} other{"{0}smi"} } millimeter{ + dnam{"mm"} other{"{0}mm"} } nanometer{ + dnam{"nm"} other{"{0}nm"} } nautical-mile{ + dnam{"nmi"} other{"{0}nmi"} } parsec{ @@ -1266,9 +1468,11 @@ ko{ other{"{0}pc"} } picometer{ + dnam{"pm"} other{"{0}pm"} } point{ + dnam{"pt"} other{"{0}pt"} } solar-radius{ @@ -1276,20 +1480,22 @@ ko{ other{"{0}R☉"} } yard{ + dnam{"yd"} other{"{0}야드"} } } light{ lux{ + dnam{"lx"} other{"{0}lx"} } solar-luminosity{ - dnam{"L☉"} other{"{0}L☉"} } } mass{ carat{ + dnam{"CD"} other{"{0}CD"} } dalton{ @@ -1303,53 +1509,71 @@ ko{ gram{ dnam{"그램"} other{"{0}g"} + per{"{0}/g"} } kilogram{ + dnam{"kg"} other{"{0}kg"} + per{"{0}/kg"} } metric-ton{ + dnam{"t"} other{"{0}t"} } microgram{ + dnam{"µg"} other{"{0}µg"} } milligram{ + dnam{"mg"} other{"{0}mg"} } ounce{ + dnam{"oz"} other{"{0}oz"} + per{"{0}/oz"} } ounce-troy{ + dnam{"oz t"} other{"{0}oz t"} } pound{ + dnam{"lb"} other{"{0}lb"} + per{"{0}/lb"} } solar-mass{ dnam{"M☉"} other{"{0}M☉"} } stone{ + dnam{"st"} other{"{0}st"} } ton{ + dnam{"tn"} other{"{0}tn"} } } power{ gigawatt{ + dnam{"GW"} other{"{0}GW"} } horsepower{ + dnam{"hp"} other{"{0}hp"} } kilowatt{ + dnam{"kW"} other{"{0}kW"} } megawatt{ + dnam{"MW"} other{"{0}MW"} } milliwatt{ + dnam{"mW"} other{"{0}mW"} } watt{ @@ -1359,12 +1583,19 @@ ko{ } pressure{ atmosphere{ + dnam{"atm"} other{"{0}atm"} } + bar{ + dnam{"bar"} + other{"{0} bar"} + } hectopascal{ + dnam{"hPa"} other{"{0}hPa"} } inch-hg{ + dnam{"inHg"} other{"{0}inHg"} } kilopascal{ @@ -1376,47 +1607,69 @@ ko{ other{"{0}MPa"} } millibar{ + dnam{"mbar"} other{"{0}mb"} } millimeter-of-mercury{ dnam{"mmHg"} other{"{0}mmHg"} } + pascal{ + dnam{"Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ + dnam{"psi"} other{"{0}psi"} } } speed{ kilometer-per-hour{ + dnam{"km/h"} other{"{0}km/h"} } knot{ + dnam{"kn"} other{"{0}kn"} } meter-per-second{ + dnam{"m/s"} other{"{0}m/s"} } mile-per-hour{ + dnam{"mi/h"} other{"{0}mi/h"} } } temperature{ + celsius{ + dnam{"°C"} + other{"{0}°C"} + } + fahrenheit{ + dnam{"°F"} + other{"{0}°F"} + } + generic{ + dnam{"°"} + other{"{0}°"} + } kelvin{ + dnam{"K"} other{"{0}K"} } } torque{ newton-meter{ - dnam{"N⋅m"} other{"{0}N⋅m"} } pound-foot{ - dnam{"lbf⋅ft"} other{"{0}lbf⋅ft"} } } volume{ acre-foot{ + dnam{"ac ft"} other{"{0}ac ft"} } barrel{ @@ -1424,27 +1677,37 @@ ko{ other{"{0}bbl"} } centiliter{ + dnam{"cL"} other{"{0}cL"} } cubic-centimeter{ + dnam{"cm³"} other{"{0}cm³"} + per{"{0}/cm³"} } cubic-foot{ + dnam{"ft³"} other{"{0}ft³"} } cubic-inch{ + dnam{"in³"} other{"{0}in³"} } cubic-kilometer{ + dnam{"km³"} other{"{0}km³"} } cubic-meter{ + dnam{"m³"} other{"{0}m³"} + per{"{0}/m³"} } cubic-mile{ + dnam{"mi³"} other{"{0}mi³"} } cubic-yard{ + dnam{"yd³"} other{"{0}yd³"} } cup{ @@ -1452,9 +1715,11 @@ ko{ other{"{0}컵"} } cup-metric{ + dnam{"mcup"} other{"{0}mc"} } deciliter{ + dnam{"dL"} other{"{0}dL"} } fluid-ounce{ @@ -1471,9 +1736,12 @@ ko{ per{"{0}/gal"} } gallon-imperial{ + dnam{"Imp. gal"} other{"{0}gal Imp."} + per{"{0}/gal Imp."} } hectoliter{ + dnam{"hL"} other{"{0}hL"} } liter{ @@ -1482,24 +1750,31 @@ ko{ per{"{0}/L"} } megaliter{ + dnam{"ML"} other{"{0}ML"} } milliliter{ + dnam{"mL"} other{"{0}mL"} } pint{ + dnam{"pt"} other{"{0}pt"} } pint-metric{ + dnam{"mpt"} other{"{0}mpt"} } quart{ + dnam{"qt"} other{"{0}qt"} } tablespoon{ + dnam{"tbsp"} other{"{0}tbsp"} } teaspoon{ + dnam{"tsp"} other{"{0}tsp"} } } diff --git a/source/data/unit/kok.txt b/source/data/unit/kok.txt index 5460f92..2790697 100644 --- a/source/data/unit/kok.txt +++ b/source/data/unit/kok.txt @@ -1,10 +1,1419 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kok{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} ms{"m:ss"} } + units{ + acceleration{ + meter-per-second-squared{ + dnam{"मी/से²"} + other{"{0} मी/से²"} + } + } + angle{ + arc-minute{ + dnam{"आर्कमिनीट"} + other{"{0} आर्कमिनीट"} + } + arc-second{ + dnam{"आर्कसेकंद"} + other{"{0} आर्कसेकंद"} + } + degree{ + dnam{"अंश"} + other{"{0} अंश"} + } + radian{ + dnam{"रेडियन"} + other{"{0} रेडियन"} + } + revolution{ + dnam{"परिभ्रमण"} + other{"{0} परिभ्रमणां"} + } + } + area{ + acre{ + dnam{"एकर"} + other{"{0} एकर"} + } + dunam{ + dnam{"डुनाम्स"} + other{"{0} डुनाम्स"} + } + hectare{ + dnam{"हॅक्टर"} + other{"{0} हॅक्टर"} + } + square-centimeter{ + dnam{"चौरस सेंटिमीटर"} + other{"{0} चौरस सेंटिमीटर"} + per{"दर चौरस सेंटिमीटर {0}"} + } + square-foot{ + dnam{"चौरस फूट"} + other{"{0} चौरस फूट"} + } + square-inch{ + dnam{"चौरस इंच"} + other{"{0} चौरस इंच"} + per{"दर चौरस इंच {0}"} + } + square-kilometer{ + dnam{"चौरस किलोमीटर"} + other{"{0} चौरस किलोमीटर"} + per{"दर चौरस किलोमीटर {0}"} + } + square-meter{ + dnam{"चौरस मीटर"} + other{"{0} चौरस मीटर"} + per{"दर चौरस मिटर {0}"} + } + square-mile{ + dnam{"चौरस मायल"} + other{"{0} चौरस मायल"} + per{"दर चौरस मायल {0}"} + } + square-yard{ + dnam{"चौरस यार्ड"} + other{"{0} चौरस यार्ड"} + } + } + concentr{ + karat{ + dnam{"कॅरट्स"} + other{"{0} कॅरट्स"} + } + milligram-per-deciliter{ + dnam{"मिलिग्राम/डेसिलिटर"} + other{"{0} मिलिग्राम/डेसिलिटर"} + } + millimole-per-liter{ + dnam{"मिलिमोल्स/लि"} + other{"{0} मिलिमोल्स/लि"} + } + mole{ + dnam{"मोल्स"} + other{"{0} मोल"} + } + percent{ + dnam{"टक्को"} + other{"{0} टक्को"} + } + permille{ + dnam{"दरमायल"} + other{"{0} दरमायल"} + } + } + consumption{ + liter-per-100kilometers{ + dnam{"लिटर/100किलोमीटर"} + other{"{0} लिटर/100किलोमीटर"} + } + liter-per-kilometer{ + dnam{"लिटर/किलोमीटर"} + other{"{0} लिटर/किलोमीटर"} + } + } + coordinate{ + dnam{"मुख्य दिका"} + east{"{0} उदेंत"} + north{"{0} उत्तर"} + south{"{0} दक्षिण"} + west{"{0} अस्तंत"} + } + digital{ + bit{ + dnam{"बिट"} + other{"{0} बिट"} + } + byte{ + dnam{"बायट"} + other{"{0} बायट"} + } + gigabit{ + dnam{"गिगाबिट"} + other{"{0} गिगाबिट"} + } + gigabyte{ + dnam{"गिगाबायट"} + other{"{0} गिगाबायट"} + } + kilobit{ + dnam{"किलोबिट"} + other{"{0} किलोबिट"} + } + kilobyte{ + dnam{"किलोबायट"} + other{"{0} किलोबायट"} + } + megabit{ + dnam{"मॅगाबिट"} + other{"{0} मॅगाबिट"} + } + megabyte{ + dnam{"मॅगाबायट"} + other{"{0} मॅगाबायट"} + } + petabyte{ + dnam{"पेटाबायट"} + other{"{0} पेटाबायट"} + } + terabit{ + dnam{"टेराबिट्स"} + other{"{0} टेराबिट्स"} + } + terabyte{ + dnam{"टेराबायट"} + other{"{0} टेराबायट"} + } + } + duration{ + century{ + dnam{"शतकां"} + other{"{0} शतकां"} + } + day{ + dnam{"दीस"} + other{"{0} दीस"} + per{"दर दिसा {0}"} + } + decade{ + dnam{"दशकां"} + other{"{0} दशकां"} + } + hour{ + dnam{"वरां"} + other{"{0} वरां"} + per{"दर वरा {0}"} + } + microsecond{ + dnam{"मायक्रोसेकंदांनी"} + other{"{0} मायक्रोसेकंदांनी"} + } + millisecond{ + dnam{"मिलिसेकंदांनी"} + other{"{0} मिलिसेकंदांनी"} + } + minute{ + dnam{"मिण्टां"} + other{"{0} मिण्टां"} + per{"दर मिनीट {0}"} + } + month{ + dnam{"म्हयने"} + other{"{0} म्हयने"} + per{"दर म्हयनो {0}"} + } + nanosecond{ + dnam{"नॅनोसेकंदांनी"} + other{"{0} नॅनोसेकंदांनी"} + } + second{ + dnam{"सेकंद"} + other{"{0} सेकंदांनी"} + per{"दर सेकंद {0}"} + } + week{ + dnam{"सप्तक"} + other{"{0} सप्तक"} + per{"दर सप्तकाक {0}"} + } + year{ + dnam{"वर्सां"} + other{"{0} वर्सां"} + per{"दर वर्सा {0}"} + } + } + electric{ + ampere{ + dnam{"एम्पियर"} + other{"{0} एम्पियर"} + } + ohm{ + dnam{"ओम"} + } + volt{ + dnam{"वोल्ट"} + other{"{0} वो"} + } + } + energy{ + calorie{ + dnam{"कॅलरीज"} + other{"{0} कॅलरीज"} + } + foodcalorie{ + dnam{"कॅलरीज"} + other{"{0} कॅलरीज"} + } + joule{ + dnam{"ज्युल"} + other{"{0} ज्युल"} + } + kilocalorie{ + dnam{"किलोकॅलरीज"} + other{"{0} किलोकॅल"} + } + kilojoule{ + dnam{"किलोज्युल"} + other{"{0} किलोज्युल"} + } + kilowatt-hour{ + dnam{"किलोवॅट-वरां"} + other{"{0} किलोवॅट-वरां"} + } + } + force{ + newton{ + dnam{"न्युटन"} + other{"{0} न्युटन"} + } + } + frequency{ + gigahertz{ + dnam{"गिगाहर्ट्झ"} + other{"{0} गिगाहर्ट्झ"} + } + hertz{ + dnam{"हर्ट्झ"} + other{"{0} हर्ट्झ"} + } + kilohertz{ + dnam{"किलोहर्ट्झ"} + other{"{0} किलोहर्ट्झ"} + } + megahertz{ + dnam{"मॅगाहर्ट्झ"} + other{"{0} मॅगाहर्ट्झ"} + } + } + graphics{ + dot-per-centimeter{ + dnam{"दर सेंटिमीटर ठिपके"} + other{"दर सेंटिमीटर ठिपके {0}"} + } + dot-per-inch{ + dnam{"दर इंचाक ठिपके"} + other{"दर इंचाक ठिपके {0}"} + } + em{ + dnam{"टायपोग्रॅफिक एम"} + other{"{0} ems"} + } + megapixel{ + dnam{"मॅगोपिक्सेल्स"} + other{"{0} मॅगोपिक्सेल्स"} + } + pixel{ + dnam{"पिक्सेल्स"} + other{"{0} पिक्सेल्स"} + } + pixel-per-centimeter{ + dnam{"दर सेंटिमीटराक पिक्सेल"} + other{"दर सेंटिमीटराक पिक्सेल {0}"} + } + pixel-per-inch{ + dnam{"दर इंचाक पिक्सेल्स"} + other{"दर इंचाक पिक्सेल {0}"} + } + } + length{ + astronomical-unit{ + dnam{"खगोलशास्त्रीय प्रमाण"} + other{"{0} खगोलशास्त्रीय प्रमाण"} + } + centimeter{ + dnam{"सेंटिमीटर"} + other{"{0} सेंटिमीटर"} + per{"दर सेंटिमीटर {0}"} + } + decimeter{ + dnam{"डेसीमीटर"} + other{"{0} डेसीमीटर"} + } + foot{ + dnam{"फूट"} + other{"{0} फूट"} + per{"दर फूट {0}"} + } + inch{ + dnam{"इंच"} + other{"{0} इंच"} + per{"दर इंच {0}"} + } + kilometer{ + dnam{"किलोमीटर"} + other{"{0} किलोमीटर"} + per{"दर किलोमीटर {0}"} + } + light-year{ + dnam{"प्रकाश वर्सां"} + other{"{0} प्रकाश वर्सां"} + } + meter{ + dnam{"मीटर"} + other{"{0} मीटर"} + per{"दर मिटर {0}"} + } + micrometer{ + dnam{"मायक्रोमीटर"} + other{"{0} मायक्रोमीटर"} + } + mile{ + dnam{"मायल्स"} + other{"{0} मायल्स"} + } + mile-scandinavian{ + dnam{"मायल-स्कँडिनेव्हियन"} + other{"{0} मायल्स-स्कँडिनेव्हियन"} + } + millimeter{ + dnam{"मिलिमीटर"} + other{"{0} मिलिमिटर"} + } + nanometer{ + dnam{"नॅनोमीटर"} + other{"{0} नॅनोमीटर"} + } + nautical-mile{ + dnam{"नॉटिकल मायल्स"} + other{"{0} नॉटिकल्स मायल्स"} + } + parsec{ + dnam{"पॅरासे"} + other{"{0} पॅरासे"} + } + picometer{ + dnam{"पिकोमीटर"} + other{"{0} पिकोमिटर"} + } + point{ + dnam{"पॉयंट"} + other{"{0} पॉयंट्स"} + } + solar-radius{ + dnam{"सौर त्रिज्या"} + other{"{0} सौर त्रिज्या"} + } + yard{ + dnam{"यार्ड"} + other{"{0} यार्ड"} + } + } + mass{ + carat{ + dnam{"कॅरट"} + other{"{0} कॅरट"} + } + gram{ + dnam{"ग्राम"} + other{"{0} ग्राम"} + per{"{0}/ग्रा"} + } + kilogram{ + dnam{"किलोग्राम"} + other{"{0} किलोग्राम"} + per{"{0}/किलोग्राम"} + } + metric-ton{ + dnam{"मॅट्रिक टन"} + other{"{0} मॅट्रिक टन"} + } + milligram{ + dnam{"मिलिग्राम"} + other{"{0} मिलिग्राम"} + } + pound{ + dnam{"पौंड"} + other{"{0} पौंड"} + } + ton{ + dnam{"टन"} + other{"{0} टन"} + } + } + power{ + horsepower{ + dnam{"हॉर्सपावर"} + other{"{0} हॉर्सपावर"} + } + kilowatt{ + dnam{"किलोवॅट"} + other{"{0} किलोवॅट"} + } + megawatt{ + dnam{"मेगावॅट"} + other{"{0} मेगावॅट"} + } + milliwatt{ + dnam{"मिलिवॅट"} + other{"{0} मिलिवॅट"} + } + watt{ + dnam{"वॅट"} + other{"{0} वॅट"} + } + } + pressure{ + atmosphere{ + dnam{"अटमोसपियर"} + other{"{0} अटमोसपियर"} + } + bar{ + dnam{"पट्टी"} + other{"{0} पट्ट्यो"} + } + pascal{ + dnam{"पास्कल"} + other{"{0} पास्कल"} + } + } + speed{ + kilometer-per-hour{ + dnam{"किमी/व"} + other{"{0} किमी/व"} + } + meter-per-second{ + dnam{"मी/से"} + other{"{0} मी/से"} + } + mile-per-hour{ + dnam{"मा/व"} + other{"{0} मा/व"} + } + } + temperature{ + celsius{ + dnam{"अंश सेल्सियस"} + other{"{0} अंश सेल्सियस"} + } + fahrenheit{ + dnam{"अंश फारेनहायट"} + other{"{0} अंश फारेनहायट"} + } + kelvin{ + dnam{"केल्वीन"} + other{"{0} केल्वीन"} + } + } + torque{ + newton-meter{ + dnam{"न्युटन-मीटर"} + other{"{0} न्युटन-मीटर"} + } + } + volume{ + acre-foot{ + dnam{"एकर-फूट"} + other{"{0} एकर-फूट"} + } + barrel{ + dnam{"बॅरल"} + other{"{0} बॅरल"} + } + cubic-centimeter{ + dnam{"सेमी³"} + other{"{0} सेमी³"} + per{"{0}/सेमी³"} + } + cubic-foot{ + dnam{"फू³"} + other{"{0} फू³"} + } + cubic-inch{ + dnam{"इं³"} + other{"{0} इं³"} + } + cubic-kilometer{ + dnam{"क्युबीक किलोमीटर"} + other{"{0} क्युबीक किलोमीटर"} + } + cubic-meter{ + dnam{"क्युबीक मीटर"} + other{"{0} क्युबीक मीटर"} + per{"{0}/मी³"} + } + cubic-mile{ + dnam{"मा³"} + other{"{0} मा³"} + } + cubic-yard{ + dnam{"या³"} + other{"{0} या³"} + } + cup{ + dnam{"कप"} + other{"{0} क"} + } + cup-metric{ + dnam{"मॅट्रिक कप"} + other{"{0} मॅट्रिक कप"} + } + fluid-ounce{ + dnam{"फ्लुइड औंस"} + other{"{0} फ्लुइड औंस"} + } + gallon{ + dnam{"गॅलोन"} + other{"{0} गॅलोन"} + per{"दर गॅलोन {0}"} + } + liter{ + dnam{"लिटर"} + other{"{0} लिटर"} + per{"{0}/लिटर"} + } + megaliter{ + dnam{"मॅगालिटर"} + other{"{0} मॅगालिटर"} + } + milliliter{ + dnam{"मिलिलिटर"} + other{"{0} मिलिलिटर"} + } + quart{ + dnam{"क्वार्त"} + other{"{0} क्वार्त"} + } + tablespoon{ + dnam{"व्हडलें कुलेर"} + other{"{0} व्हडलें कुलेर"} + } + teaspoon{ + dnam{"कुलेर"} + other{"{0} कुलेर"} + } + } + } + unitsNarrow{ + coordinate{ + dnam{"दिका"} + east{"{0}उदें"} + north{"{0}उत्त"} + south{"{0}द"} + west{"{0}अ"} + } + duration{ + day{ + dnam{"दीस"} + other{"{0}दी"} + } + hour{ + dnam{"वर"} + other{"{0} व"} + } + millisecond{ + dnam{"मिलिसे"} + other{"{0}मिसे"} + } + minute{ + dnam{"मिनीट"} + other{"{0} मि"} + } + month{ + dnam{"म्हयनो"} + other{"{0}म्ह"} + } + second{ + dnam{"सेकंद"} + other{"{0}से"} + } + week{ + dnam{"स"} + other{"{0}स"} + } + year{ + dnam{"वर्सा"} + other{"{0}व"} + } + } + length{ + centimeter{ + dnam{"सेमी"} + other{"{0} सेमी"} + } + kilometer{ + dnam{"किमी"} + other{"{0} किमी"} + } + meter{ + dnam{"मी"} + other{"{0}मी"} + } + millimeter{ + dnam{"मिमी"} + other{"{0} मिमी"} + } + } + mass{ + gram{ + dnam{"ग्राम"} + other{"{0} ग्रा"} + } + kilogram{ + dnam{"किलोग्राम"} + other{"{0} किलो"} + } + } + speed{ + kilometer-per-hour{ + dnam{"किमी/व"} + other{"{0} किमी/व"} + } + } + temperature{ + celsius{ + dnam{"°से"} + other{"{0}°से"} + } + } + volume{ + liter{ + dnam{"लिटर"} + other{"{0} लि"} + } + } + } + unitsShort{ + acceleration{ + g-force{ + dnam{"g-force"} + other{"{0} G"} + } + meter-per-second-squared{ + dnam{"मी/से²"} + other{"{0} मी/से²"} + } + } + angle{ + arc-minute{ + dnam{"आमि"} + other{"{0}′"} + } + arc-second{ + dnam{"आसे"} + other{"{0}″"} + } + degree{ + dnam{"अंश"} + other{"{0}°"} + } + radian{ + dnam{"रेडियन"} + other{"{0} रे"} + } + revolution{ + dnam{"rev"} + other{"{0} rev"} + } + } + area{ + acre{ + dnam{"एकर"} + other{"{0} ac"} + } + dunam{ + dnam{"डुनाम्स"} + other{"{0} डुनाम"} + } + hectare{ + dnam{"हॅक्टर"} + other{"{0} ha"} + } + square-centimeter{ + dnam{"सेमी²"} + other{"{0} सेमी²"} + per{"{0}/सेमी²"} + } + square-foot{ + dnam{"चौ फूट"} + other{"{0} चौ फू"} + } + square-inch{ + dnam{"in²"} + other{"{0} in²"} + per{"{0}/in²"} + } + square-kilometer{ + dnam{"किमी²"} + other{"{0} किमी²"} + per{"{0}/किमी²"} + } + square-meter{ + dnam{"मीटर²"} + other{"{0} मी²"} + per{"{0}/मी²"} + } + square-mile{ + dnam{"चौ मायल"} + other{"{0} चौ मा"} + per{"{0}/mi²"} + } + square-yard{ + dnam{"यार्ड²"} + other{"{0} yd²"} + } + } + compound{ + per{"{0}/{1}"} + times{"{0}⋅{1}"} + } + concentr{ + karat{ + dnam{"कॅरट्स"} + other{"{0} kt"} + } + milligram-per-deciliter{ + dnam{"मिग्रा/डेलि"} + other{"{0} मिग्रा/डेलि"} + } + millimole-per-liter{ + dnam{"मिमो/लि"} + other{"{0} मिमो/लि"} + } + mole{ + dnam{"मोल"} + other{"{0} मोल"} + } + part-per-million{ + dnam{"ppm"} + other{"{0} ppm"} + } + percent{ + dnam{"%"} + other{"{0}%"} + } + permille{ + dnam{"‰"} + other{"{0}‰"} + } + permyriad{ + dnam{"‱"} + other{"{0}‱"} + } + } + consumption{ + liter-per-100kilometers{ + dnam{"लि/100किमी"} + other{"{0} लि/100किमी"} + } + liter-per-kilometer{ + dnam{"लि/किमी"} + other{"{0} लि/किमी"} + } + mile-per-gallon{ + dnam{"mpg US"} + other{"{0} mpg US"} + } + mile-per-gallon-imperial{ + dnam{"mpg Imp."} + other{"{0} mpg Imp."} + } + } + coordinate{ + dnam{"दिका"} + east{"{0} उदें"} + north{"{0} उत्त"} + south{"{0} द"} + west{"{0} अ"} + } + digital{ + bit{ + dnam{"बिट"} + other{"{0} बिट"} + } + byte{ + dnam{"बायट"} + other{"{0} बायट"} + } + gigabit{ + dnam{"Gb"} + other{"{0} Gb"} + } + gigabyte{ + dnam{"GB"} + other{"{0} GB"} + } + kilobit{ + dnam{"kb"} + other{"{0} kb"} + } + kilobyte{ + dnam{"kB"} + other{"{0} kB"} + } + megabit{ + dnam{"Mb"} + other{"{0} Mb"} + } + megabyte{ + dnam{"MB"} + other{"{0} MB"} + } + petabyte{ + dnam{"PB"} + other{"{0} PB"} + } + terabit{ + dnam{"Tb"} + other{"{0} Tb"} + } + terabyte{ + dnam{"TB"} + other{"{0} TB"} + } + } + duration{ + century{ + dnam{"श"} + other{"{0} श"} + } + day{ + dnam{"दीस"} + other{"{0} दीस"} + per{"{0}/दी"} + } + decade{ + dnam{"दशक"} + other{"{0} दशक"} + } + hour{ + dnam{"वरां"} + other{"{0} वर"} + per{"{0}/वर"} + } + microsecond{ + dnam{"μsecs"} + other{"{0} μs"} + } + millisecond{ + dnam{"मिलिसेकंदांनी"} + other{"{0} मिलिसेकंद"} + } + minute{ + dnam{"मिण्टां"} + other{"{0} मिनीट"} + per{"{0}/मिनीट"} + } + month{ + dnam{"म्हयने"} + other{"{0} म्हयने"} + per{"{0}/म्ह"} + } + nanosecond{ + dnam{"नॅनोसेकंदांनी"} + other{"{0} नॅसे"} + } + second{ + dnam{"सेकंदांनी"} + other{"{0} सेकंद"} + per{"{0}/से"} + } + week{ + dnam{"सप्तक"} + other{"{0} सप्तक"} + per{"{0}/स"} + } + year{ + dnam{"वर्सां"} + other{"{0} वर्सां"} + per{"{0}/वर्सां"} + } + } + electric{ + ampere{ + dnam{"एम्प्स"} + other{"{0} ए"} + } + milliampere{ + dnam{"mA"} + other{"{0} mA"} + } + ohm{ + dnam{"ओम्स"} + other{"{0} Ω"} + } + volt{ + dnam{"वोल्ट"} + other{"{0} वो"} + } + } + energy{ + british-thermal-unit{ + dnam{"Btu"} + other{"{0} Btu"} + } + calorie{ + dnam{"cal"} + other{"{0} cal"} + } + electronvolt{ + dnam{"eV"} + other{"{0} eV"} + } + foodcalorie{ + dnam{"Cal"} + other{"{0} Cal"} + } + joule{ + dnam{"ज्युल"} + other{"{0} ज्यु"} + } + kilocalorie{ + dnam{"kcal"} + other{"{0} kcal"} + } + kilojoule{ + dnam{"किलोज्युल"} + other{"{0} किलोज्युल"} + } + kilowatt-hour{ + dnam{"किवॅटवर"} + other{"{0}किवॅटवर"} + } + therm-us{ + dnam{"US therm"} + other{"{0} US therm"} + } + } + force{ + newton{ + dnam{"न्युटन"} + other{"{0} न्यु"} + } + pound-force{ + dnam{"lbf"} + other{"{0} lbf"} + } + } + frequency{ + gigahertz{ + dnam{"GHz"} + other{"{0} GHz"} + } + hertz{ + dnam{"Hz"} + other{"{0} Hz"} + } + kilohertz{ + dnam{"kHz"} + other{"{0} kHz"} + } + megahertz{ + dnam{"MHz"} + other{"{0} MHz"} + } + } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + other{"{0} em"} + } + megapixel{ + dnam{"मॅगोपिक्सेल्स"} + other{"{0} MP"} + } + pixel{ + dnam{"पिक्सेल्स"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + other{"{0} ppi"} + } + } + length{ + astronomical-unit{ + dnam{"au"} + other{"{0} au"} + } + centimeter{ + dnam{"सेमी"} + other{"{0} सेमी"} + per{"{0}/सेमी"} + } + decimeter{ + dnam{"डेमी"} + other{"{0} डेमी"} + } + foot{ + dnam{"फूट"} + other{"{0} फूट"} + per{"{0}/ft"} + } + inch{ + dnam{"इंच"} + other{"{0} in"} + per{"{0}/in"} + } + kilometer{ + dnam{"किमी"} + other{"{0} किमी"} + per{"{0}/किमी"} + } + light-year{ + dnam{"प्रकाश वर्सां"} + other{"{0} ly"} + } + meter{ + dnam{"मी"} + other{"{0} मी"} + per{"{0}/मी"} + } + micrometer{ + dnam{"µm"} + other{"{0} µm"} + } + mile{ + dnam{"मायल्स"} + other{"{0} mi"} + } + mile-scandinavian{ + dnam{"smi"} + other{"{0} smi"} + } + millimeter{ + dnam{"मिमी"} + other{"{0} मिमी"} + } + nanometer{ + dnam{"nm"} + other{"{0} nm"} + } + nautical-mile{ + dnam{"nmi"} + other{"{0} nmi"} + } + parsec{ + dnam{"pc"} + other{"{0} pc"} + } + picometer{ + dnam{"pm"} + other{"{0} pm"} + } + point{ + dnam{"पॉयंट"} + other{"{0} pt"} + } + solar-radius{ + dnam{"सौर त्रिज्या"} + other{"{0} R☉"} + } + yard{ + dnam{"यार्ड"} + other{"{0} yd"} + } + } + light{ + lux{ + dnam{"lx"} + other{"{0} lx"} + } + solar-luminosity{ + dnam{"L☉"} + other{"{0} L☉"} + } + } + mass{ + carat{ + dnam{"कॅरट"} + other{"{0} कॅ"} + } + dalton{ + dnam{"Da"} + other{"{0} Da"} + } + earth-mass{ + dnam{"M⊕"} + other{"{0} M⊕"} + } + gram{ + dnam{"ग्राम"} + other{"{0} ग्राम"} + per{"{0}/ग्रा"} + } + kilogram{ + dnam{"किलोग्राम"} + other{"{0} किलोग्राम"} + per{"{0}/किलोग्राम"} + } + metric-ton{ + dnam{"t"} + other{"{0} t"} + } + microgram{ + dnam{"µg"} + other{"{0} µg"} + } + milligram{ + dnam{"मिग्रा"} + other{"{0} मिग्रा"} + } + ounce{ + dnam{"oz"} + other{"{0} oz"} + per{"{0}/oz"} + } + ounce-troy{ + dnam{"oz t"} + other{"{0} oz t"} + } + pound{ + dnam{"lb"} + other{"{0} lb"} + per{"{0}/lb"} + } + solar-mass{ + dnam{"M☉"} + other{"{0} M☉"} + } + ton{ + dnam{"टन"} + other{"{0} टन"} + } + } + power{ + gigawatt{ + dnam{"GW"} + other{"{0} GW"} + } + horsepower{ + dnam{"हॉर्सपावर"} + other{"{0} हॉर्सपावर"} + } + kilowatt{ + dnam{"किवॅ"} + other{"{0} किवॅ"} + } + megawatt{ + dnam{"मेवॅ"} + other{"{0} मेवॅ"} + } + milliwatt{ + dnam{"mW"} + other{"{0} mW"} + } + watt{ + dnam{"वॅट"} + other{"{0} वॅ"} + } + } + pressure{ + atmosphere{ + dnam{"atm"} + other{"{0} atm"} + } + bar{ + dnam{"पट्टी"} + other{"{0} पट्टी"} + } + hectopascal{ + dnam{"hPa"} + other{"{0} hPa"} + } + inch-hg{ + dnam{"inHg"} + other{"{0} inHg"} + } + kilopascal{ + dnam{"kPa"} + other{"{0} kPa"} + } + megapascal{ + dnam{"MPa"} + other{"{0} MPa"} + } + millibar{ + dnam{"mbar"} + other{"{0} mbar"} + } + millimeter-of-mercury{ + dnam{"mm Hg"} + other{"{0} mm Hg"} + } + pascal{ + dnam{"Pa"} + other{"{0} Pa"} + } + pound-per-square-inch{ + dnam{"psi"} + other{"{0} psi"} + } + } + speed{ + kilometer-per-hour{ + dnam{"किमी/व"} + other{"{0} किमी/व"} + } + knot{ + dnam{"kn"} + other{"{0} kn"} + } + meter-per-second{ + dnam{"मी/से"} + other{"{0} मी/से"} + } + mile-per-hour{ + dnam{"मा/व"} + other{"{0} मा/व"} + } + } + temperature{ + celsius{ + dnam{"अं. से"} + other{"{0} अंसे"} + } + fahrenheit{ + dnam{"अंश फारेनहायट"} + other{"{0}°फा"} + } + generic{ + dnam{"°"} + other{"{0}°"} + } + kelvin{ + dnam{"के"} + other{"{0} के"} + } + } + torque{ + newton-meter{ + dnam{"N⋅m"} + other{"{0} N⋅m"} + } + pound-foot{ + dnam{"lbf⋅ft"} + other{"{0} lbf⋅ft"} + } + } + volume{ + acre-foot{ + dnam{"एकर फू"} + other{"{0} ए फू"} + } + barrel{ + dnam{"बॅरल"} + other{"{0} बॅरल"} + } + centiliter{ + dnam{"cL"} + other{"{0} cL"} + } + cubic-centimeter{ + dnam{"सेमी³"} + other{"{0} सेमी³"} + per{"{0}/सेमी³"} + } + cubic-foot{ + dnam{"फू³"} + other{"{0} फू³"} + } + cubic-inch{ + dnam{"इंच³"} + other{"{0} इ³"} + } + cubic-kilometer{ + dnam{"किमी³"} + other{"{0} किमी³"} + } + cubic-meter{ + dnam{"मी³"} + other{"{0} मी³"} + per{"{0}/मी³"} + } + cubic-mile{ + dnam{"mi³"} + other{"{0} mi³"} + } + cubic-yard{ + dnam{"या³"} + other{"{0} या³"} + } + cup{ + dnam{"कप"} + other{"{0} क"} + } + cup-metric{ + dnam{"mcup"} + other{"{0} mc"} + } + deciliter{ + dnam{"dL"} + other{"{0} dL"} + } + fluid-ounce{ + dnam{"US fl oz"} + other{"{0} fl oz US"} + } + fluid-ounce-imperial{ + dnam{"Imp. fl oz"} + other{"{0} fl oz Imp."} + } + gallon{ + dnam{"गॅ"} + other{"{0} गॅ"} + per{"{0}/गॅलो युएस"} + } + gallon-imperial{ + dnam{"Imp. gal"} + other{"{0} gal Imp."} + per{"{0}/gal Imp."} + } + hectoliter{ + dnam{"hL"} + other{"{0} hL"} + } + liter{ + dnam{"लिटर"} + other{"{0} लि"} + per{"{0}/लि"} + } + megaliter{ + dnam{"ML"} + other{"{0} ML"} + } + milliliter{ + dnam{"मिलि"} + other{"{0} मिलि"} + } + pint{ + dnam{"pt"} + other{"{0} pt"} + } + pint-metric{ + dnam{"mpt"} + other{"{0} mpt"} + } + quart{ + dnam{"क्वा"} + other{"{0} क्वा"} + } + tablespoon{ + dnam{"tbsp"} + other{"{0} tbsp"} + } + teaspoon{ + dnam{"कु"} + other{"{0} कु"} + } + } + } } diff --git a/source/data/unit/ks.txt b/source/data/unit/ks.txt index 1b3936f..b0b5776 100644 --- a/source/data/unit/ks.txt +++ b/source/data/unit/ks.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ks{ - Version{"2.1.47.83"} + Version{"36"} units{ duration{ day{ diff --git a/source/data/unit/ksb.txt b/source/data/unit/ksb.txt index 7162d01..84cdaf3 100644 --- a/source/data/unit/ksb.txt +++ b/source/data/unit/ksb.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ksb{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/ksf.txt b/source/data/unit/ksf.txt index cbde3ac..1ac6b5a 100644 --- a/source/data/unit/ksf.txt +++ b/source/data/unit/ksf.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ksf{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/ksh.txt b/source/data/unit/ksh.txt index 1ae65f0..b72ba15 100644 --- a/source/data/unit/ksh.txt +++ b/source/data/unit/ksh.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ksh{ - Version{"2.1.47.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/ku.txt b/source/data/unit/ku.txt index f25b6e5..a85ce80 100644 --- a/source/data/unit/ku.txt +++ b/source/data/unit/ku.txt @@ -1,8 +1,47 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ku{ - Version{"2.1.47.83"} + Version{"36"} units{ + angle{ + arc-minute{ + dnam{"xuleka kevanî"} + one{"{0} xuleka kevanî"} + other{"{0} xulekên kevanî"} + } + arc-second{ + dnam{"çirkeya kevanî"} + one{"{0} çirkeya kevanî"} + other{"{0} çirkeyên kevanî"} + } + degree{ + dnam{"derece"} + one{"{0} derece"} + other{"{0} derece"} + } + radian{ + dnam{"radyan"} + one{"{0} radyan"} + other{"{0} radyan"} + } + revolution{ + dnam{"dewr"} + one{"{0} dewr"} + other{"{0} dewr"} + } + } + concentr{ + karat{ + dnam{"qerat"} + one{"{0} qerat"} + other{"{0} qerat"} + } + percent{ + dnam{"ji sedî"} + one{"ji sedî {0}"} + other{"ji sedî {0}"} + } + } coordinate{ east{"{0} rojhilat"} north{"{0} bakur"} @@ -54,6 +93,19 @@ ku{ } } unitsNarrow{ + concentr{ + percent{ + one{"%{0}"} + other{"%{0}"} + } + } + consumption{ + liter-per-100kilometers{ + dnam{"l/100km"} + one{"{0}l/100km"} + other{"{0}l/100km"} + } + } coordinate{ east{"{0}Rh"} north{"{0}Bk"} @@ -98,6 +150,48 @@ ku{ } } unitsShort{ + angle{ + arc-minute{ + dnam{"xlk. kevanî"} + } + arc-second{ + dnam{"çrk. kevanî"} + } + degree{ + dnam{"derece"} + } + radian{ + dnam{"radyan"} + one{"{0} rad"} + other{"{0} rad"} + } + revolution{ + dnam{"dwr"} + one{"{0} dwr"} + other{"{0} dwr"} + } + } + concentr{ + karat{ + dnam{"qerat"} + } + percent{ + one{"%{0}"} + other{"%{0}"} + } + } + consumption{ + liter-per-100kilometers{ + dnam{"l/100 km"} + one{"{0} l/100 km"} + other{"{0} l/100 km"} + } + liter-per-kilometer{ + dnam{"l/km"} + one{"{0} l/km"} + other{"{0} l/km"} + } + } coordinate{ east{"{0} Rh"} north{"{0} Bk"} diff --git a/source/data/unit/kw.txt b/source/data/unit/kw.txt index 1ce94ff..63ae5d3 100644 --- a/source/data/unit/kw.txt +++ b/source/data/unit/kw.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kw{ - Version{"2.1.48.56"} + Version{"36"} } diff --git a/source/data/unit/ky.txt b/source/data/unit/ky.txt index 5c88911..46c2c68 100644 --- a/source/data/unit/ky.txt +++ b/source/data/unit/ky.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ky{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -247,6 +247,11 @@ ky{ other{"{0} күн"} per{"күнүнө {0}"} } + decade{ + dnam{"декадалар"} + one{"{0} он жылдык"} + other{"{0} он жылдык"} + } hour{ dnam{"саат"} one{"{0} саат"} @@ -362,6 +367,11 @@ ky{ one{"{0} килловат-саат"} other{"{0} килловат-саат"} } + therm-us{ + dnam{"терм АКШ"} + one{"{0} терм АКШ"} + other{"{0} терм АКШ"} + } } force{ newton{ @@ -1339,6 +1349,11 @@ ky{ other{"{0} күн"} per{"күн/{0}"} } + decade{ + dnam{"он жылдык"} + one{"{0} он жылдык"} + other{"{0} он жылдык"} + } hour{ dnam{"саат"} one{"{0} ст"} @@ -1454,6 +1469,11 @@ ky{ one{"{0} кВ-саат"} other{"{0} кВ-саат"} } + therm-us{ + dnam{"Терм АКШ"} + one{"{0} терм АКШ"} + other{"{0} терм АКШ"} + } } force{ newton{ diff --git a/source/data/unit/lag.txt b/source/data/unit/lag.txt index a02e1eb..d535566 100644 --- a/source/data/unit/lag.txt +++ b/source/data/unit/lag.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lag{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/lb.txt b/source/data/unit/lb.txt index 1c73ff3..652cd66 100644 --- a/source/data/unit/lb.txt +++ b/source/data/unit/lb.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lb{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/lg.txt b/source/data/unit/lg.txt index b4e18c5..d37aa45 100644 --- a/source/data/unit/lg.txt +++ b/source/data/unit/lg.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lg{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/lkt.txt b/source/data/unit/lkt.txt index 70c4d92..8d02813 100644 --- a/source/data/unit/lkt.txt +++ b/source/data/unit/lkt.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lkt{ - Version{"2.1.48.22"} + Version{"36"} units{ duration{ day{ diff --git a/source/data/unit/ln.txt b/source/data/unit/ln.txt index df6a8d7..a78d434 100644 --- a/source/data/unit/ln.txt +++ b/source/data/unit/ln.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ln{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/lo.txt b/source/data/unit/lo.txt index e7b7116..9149be0 100644 --- a/source/data/unit/lo.txt +++ b/source/data/unit/lo.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lo{ - Version{"2.1.48.17"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -205,6 +205,10 @@ lo{ other{"{0} ມື້"} per{"{0} ຕໍ່ມື້"} } + decade{ + dnam{"ທົດສະວັດ"} + other{"{0} ທົດສະວັດ"} + } hour{ dnam{"ຊົ່ວໂມງ"} other{"{0} ຊົ່ວໂມງ"} @@ -262,8 +266,8 @@ lo{ other{"{0} Ω"} } volt{ - dnam{"volt"} - other{"{0} V"} + dnam{"ໂວລ"} + other{"{0} ໂວລ"} } } energy{ @@ -272,24 +276,24 @@ lo{ other{"{0} ຫົວ​ໜ່ວຍ​ວັດ​ແທກ​ປະ​ລິ​ມານ​ຄວາມ​ຮ້ອນ​ຂ​ອງ​ອັງ​ກິດ"} } calorie{ - dnam{"cal"} - other{"{0} cal"} + dnam{"ແຄລໍລີ່"} + other{"{0} ແຄລໍລີ່"} } electronvolt{ dnam{"ເອ​ເລັກ​ຕ​ຣົງ​ໂວນ"} other{"{0} ເອ​ເລັກ​ຕ​ຣົງ​ໂວນ"} } foodcalorie{ - dnam{"Cal"} - other{"{0} Cal"} + dnam{"ແຄລໍລີ່"} + other{"{0} ແຄລໍລີ່"} } joule{ dnam{"joule"} other{"{0} J"} } kilocalorie{ - dnam{"kcal"} - other{"{0} kcal"} + dnam{"ກິໂລແຄລໍລີ່"} + other{"{0} ກິໂລແຄລໍລີ່"} } kilojoule{ dnam{"kJ"} @@ -457,9 +461,9 @@ lo{ other{"{0} mg"} } ounce{ - dnam{"ອອນ"} - other{"{0} ອອນ"} - per{"{0} ຕໍ່ ອອນ"} + dnam{"ອອນສ"} + other{"{0} ອອນສ"} + per{"{0} ຕໍ່ ອອນສ"} } ounce-troy{ dnam{"oz t"} @@ -468,15 +472,15 @@ lo{ pound{ dnam{"ປອນ"} other{"{0} ປອນ"} - per{"{0}/lb"} + per{"{0}/ປອນ"} } solar-mass{ dnam{"ມວນ​ສານດວງ​ຕາ​ເວັນ"} other{"{0} ມວນ​ສານດວງ​ຕາ​ເວັນ"} } ton{ - dnam{"tn"} - other{"{0} tn"} + dnam{"ໂຕນ"} + other{"{0} ໂຕນ"} } } power{ @@ -545,8 +549,8 @@ lo{ other{"{0} ກິໂລແມັດຕໍ່ຊົ່ວໂມງ"} } knot{ - dnam{"knot"} - other{"{0} knots"} + dnam{"ນ໋ອດ"} + other{"{0} ນ໋ອດ"} } meter-per-second{ dnam{"ແມັດຕໍ່ນາທີ"} @@ -644,14 +648,10 @@ lo{ dnam{"fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - other{"{0} fl oz Imp."} - } gallon{ - dnam{"gal"} - other{"{0} gal"} - per{"{0} per gallon"} + dnam{"ແກລລອນ"} + other{"{0} ແກລລອນ"} + per{"{0} ຕໍ່ແກລລອນ"} } gallon-imperial{ dnam{"ແກລລອນອັງກິດ"} @@ -873,7 +873,6 @@ lo{ speed{ kilometer-per-hour{ dnam{"ກມ/ຊມ"} - other{"{0} km/h"} } meter-per-second{ other{"{0} m/s"} @@ -1001,10 +1000,6 @@ lo{ dnam{"ມິລິໂມນ/ລິດ"} other{"{0} mmol/L"} } - mole{ - dnam{"mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ພາດ/ລ້ານ"} other{"{0} ppm"} @@ -1017,10 +1012,6 @@ lo{ dnam{"ຕໍ່ພັນ"} other{"{0}‰"} } - permyriad{ - dnam{"‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -1103,6 +1094,10 @@ lo{ other{"{0} ມື້"} per{"{0}/ມື້"} } + decade{ + dnam{"ທົດສະວັດ"} + other{"{0} ທົດສະວັດ"} + } hour{ dnam{"ຊົ່ວໂມງ"} other{"{0} ຊມ"} @@ -1160,34 +1155,26 @@ lo{ other{"{0} Ω"} } volt{ - dnam{"volt"} - other{"{0} V"} + dnam{"ໂວລ"} + other{"{0} ໂວລ"} } } energy{ - british-thermal-unit{ - dnam{"Btu"} - other{"{0} Btu"} - } calorie{ - dnam{"cal"} - other{"{0} cal"} - } - electronvolt{ - dnam{"eV"} - other{"{0} eV"} + dnam{"ຄລ"} + other{"{0} ຄລ"} } foodcalorie{ - dnam{"Cal"} - other{"{0} Cal"} + dnam{"ຄລ"} + other{"{0} ຄລ"} } joule{ dnam{"joule"} other{"{0} J"} } kilocalorie{ - dnam{"kcal"} - other{"{0} kcal"} + dnam{"ກິໂລແຄລໍລີ່"} + other{"{0} ກິໂລແຄລໍລີ່"} } kilojoule{ dnam{"kJ"} @@ -1198,16 +1185,6 @@ lo{ other{"{0} kWh"} } } - force{ - newton{ - dnam{"N"} - other{"{0} N"} - } - pound-force{ - dnam{"lbf"} - other{"{0} lbf"} - } - } frequency{ gigahertz{ dnam{"GHz"} @@ -1300,10 +1277,6 @@ lo{ dnam{"ຈຸດ"} other{"{0} pt"} } - solar-radius{ - dnam{"R☉"} - other{"{0} R☉"} - } yard{ dnam{"ຫລາ"} other{"{0} ຫລາ"} @@ -1314,24 +1287,12 @@ lo{ dnam{"lux"} other{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - other{"{0} L☉"} - } } mass{ carat{ dnam{"CD"} other{"{0} CD"} } - dalton{ - dnam{"Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"ກຣາມ"} other{"{0} ກຼ"} @@ -1351,13 +1312,13 @@ lo{ other{"{0} µg"} } milligram{ - dnam{"mg"} - other{"{0} mg"} + dnam{"ມກ"} + other{"{0} ມກ"} } ounce{ - dnam{"ອອນ"} + dnam{"ອອນສ"} other{"{0} ອ"} - per{"{0}/oz"} + per{"{0}/ອ"} } ounce-troy{ dnam{"oz t"} @@ -1366,15 +1327,11 @@ lo{ pound{ dnam{"ປອນ"} other{"{0} ປ"} - per{"{0}/lb"} - } - solar-mass{ - dnam{"M☉"} - other{"{0} M☉"} + per{"{0}/ປ"} } ton{ - dnam{"tn"} - other{"{0} tn"} + dnam{"ຕ"} + other{"{0} ຕ"} } } power{ @@ -1416,14 +1373,6 @@ lo{ dnam{"in Hg"} other{"{0} in Hg"} } - kilopascal{ - dnam{"kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} other{"{0} mbar"} @@ -1473,25 +1422,11 @@ lo{ other{"{0}°K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ac ft"} other{"{0} ac ft"} } - barrel{ - dnam{"bbl"} - other{"{0} bbl"} - } centiliter{ dnam{"cL"} other{"{0} cL"} @@ -1510,8 +1445,8 @@ lo{ other{"{0} in³"} } cubic-kilometer{ - dnam{"km³"} - other{"{0} km³"} + dnam{"ກມ³"} + other{"{0} ກມ³"} } cubic-meter{ dnam{"ມ³"} @@ -1542,14 +1477,10 @@ lo{ dnam{"fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - other{"{0} fl oz Imp."} - } gallon{ - dnam{"gal"} - other{"{0} gal"} - per{"{0}/gal"} + dnam{"ແກລລອນ"} + other{"{0} ແກລລອນ"} + per{"{0}/ແກລລອນ"} } gallon-imperial{ dnam{"Imp. gal"} diff --git a/source/data/unit/lrc.txt b/source/data/unit/lrc.txt index b767a41..385bc15 100644 --- a/source/data/unit/lrc.txt +++ b/source/data/unit/lrc.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lrc{ - Version{"2.1.47.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/lt.txt b/source/data/unit/lt.txt index 3f6c43c..5c17415 100644 --- a/source/data/unit/lt.txt +++ b/source/data/unit/lt.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lt{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"hh:mm"} hms{"hh:mm:ss"} @@ -191,13 +191,6 @@ lt{ one{"{0} promilė"} other{"{0} promilė"} } - permyriad{ - dnam{"‱"} - few{"{0}‱"} - many{"{0}‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -331,6 +324,13 @@ lt{ other{"{0} dienų"} per{"{0} per dieną"} } + decade{ + dnam{"dekados"} + few{"{0} dekados"} + many{"{0} dekados"} + one{"{0} dekada"} + other{"{0} dekadų"} + } hour{ dnam{"valandos"} few{"{0} valandos"} @@ -434,10 +434,6 @@ lt{ energy{ british-thermal-unit{ dnam{"britiškieji šilumos vienetai"} - few{"{0} Btu"} - many{"{0} Btu"} - one{"{0} Btu"} - other{"{0} Btu"} } calorie{ dnam{"kalorijos"} @@ -488,6 +484,13 @@ lt{ one{"{0} kilovatvalandė"} other{"{0} kilovatvalandžių"} } + therm-us{ + dnam{"JAV termos"} + few{"{0} JAV termos"} + many{"{0} JAV termos"} + one{"{0} JAV terma"} + other{"{0} JAV termų"} + } } force{ newton{ @@ -535,6 +538,53 @@ lt{ other{"{0} megahercų"} } } + graphics{ + dot-per-centimeter{ + dnam{"taškai centimetre"} + few{"{0} taškai centimetre"} + many{"{0} taško centimetre"} + one{"{0} taškas centimetre"} + other{"{0} taškų centimetre"} + } + dot-per-inch{ + dnam{"taškai colyje"} + few{"{0} taškai colyje"} + many{"{0} taško colyje"} + one{"{0} taškas colyje"} + other{"{0} taškų colyje"} + } + em{ + dnam{"tipografinis emas"} + } + megapixel{ + dnam{"megapikseliai"} + few{"{0} megapikseliai"} + many{"{0} megapikselio"} + one{"{0} megapikselis"} + other{"{0} megapikselių"} + } + pixel{ + dnam{"pikseliai"} + few{"{0} pikseliai"} + many{"{0} pikselio"} + one{"{0} pikselis"} + other{"{0} pikselių"} + } + pixel-per-centimeter{ + dnam{"pikseliai centimetre"} + few{"{0} pikseliai centimetre"} + many{"{0} pikselio centimetre"} + one{"{0} pikselis centimetre"} + other{"{0} pikselių centimetre"} + } + pixel-per-inch{ + dnam{"pikseliai colyje"} + few{"{0} pikseliai colyje"} + many{"{0} pikselio colyje"} + one{"{0} pikselis colyje"} + other{"{0} pikselių colyje"} + } + } length{ astronomical-unit{ dnam{"astronominiai vienetai"} @@ -676,10 +726,6 @@ lt{ } solar-radius{ dnam{"saulės spinduliuotė"} - few{"{0} R☉"} - many{"{0} R☉"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"jardai"} @@ -699,10 +745,6 @@ lt{ } solar-luminosity{ dnam{"saulės šviesis"} - few{"{0} L☉"} - many{"{0} L☉"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ @@ -722,10 +764,6 @@ lt{ } earth-mass{ dnam{"žemės masė"} - few{"{0} M⊕"} - many{"{0} M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"gramai"} @@ -789,10 +827,6 @@ lt{ } solar-mass{ dnam{"saulės masė"} - few{"{0} M☉"} - many{"{0} M☉"} - one{"{0} M☉"} - other{"{0} M☉"} } stone{ dnam{"stonai"} @@ -861,6 +895,13 @@ lt{ one{"{0} atmosfera"} other{"{0} atmosferų"} } + bar{ + dnam{"baras"} + few{"{0} barai"} + many{"{0} baro"} + one{"{0} baras"} + other{"{0} barų"} + } hectopascal{ dnam{"hektopaskaliai"} few{"{0} hektopaskaliai"} @@ -903,6 +944,13 @@ lt{ one{"{0} gysidabrio stulpelio milimetras"} other{"{0} gysidabrio stulpelio milimetrų"} } + pascal{ + dnam{"paskaliai"} + few{"{0} paskaliai"} + many{"{0} paskalio"} + one{"{0} paskalis"} + other{"{0} paskalių"} + } pound-per-square-inch{ dnam{"svarai kv. colyje"} few{"{0} svarai kv. colyje"} @@ -981,10 +1029,6 @@ lt{ } pound-foot{ dnam{"svarų pėdos"} - few{"{0} lbf⋅ft"} - many{"{0} lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} } } volume{ @@ -1317,6 +1361,13 @@ lt{ other{"{0} h"} per{"{0}/h"} } + microsecond{ + dnam{"μs"} + few{"{0} μs"} + many{"{0} μs"} + one{"{0} μs"} + other{"{0} μs"} + } millisecond{ dnam{"milisek."} few{"{0} ms"} @@ -1342,6 +1393,10 @@ lt{ } nanosecond{ dnam{"nanosek."} + few{"{0} ns"} + many{"{0} ns"} + one{"{0} ns"} + other{"{0} ns"} } second{ dnam{"sek."} @@ -1349,6 +1404,7 @@ lt{ many{"{0} s"} one{"{0} s"} other{"{0} s"} + per{"{0}/s"} } week{ dnam{"sav."} @@ -1398,6 +1454,13 @@ lt{ other{"{0} ft"} per{"{0}/ft"} } + furlong{ + dnam{"fur"} + few{"{0} fur"} + many{"{0} fur"} + one{"{0} fur"} + other{"{0} fur"} + } inch{ dnam{"coliai"} few{"{0} in"} @@ -1629,6 +1692,13 @@ lt{ one{"{0} ft akre"} other{"{0} ft akre"} } + bushel{ + dnam{"bu"} + few{"{0} bu"} + many{"{0} bu"} + one{"{0} bu"} + other{"{0} bu"} + } cubic-kilometer{ few{"{0} km³"} many{"{0} km³"} @@ -1818,13 +1888,6 @@ lt{ one{"{0} mmol/l"} other{"{0} mmol/l"} } - mole{ - dnam{"mol"} - few{"{0} mol"} - many{"{0} mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ppm"} few{"{0} ppm"} @@ -1846,13 +1909,6 @@ lt{ one{"{0} ‰"} other{"{0} ‰"} } - permyriad{ - dnam{"‱"} - few{"{0}‱"} - many{"{0}‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -1986,6 +2042,13 @@ lt{ other{"{0} d."} per{"{0}/d."} } + decade{ + dnam{"dekados"} + few{"{0} dek."} + many{"{0} dek."} + one{"{0} dek."} + other{"{0} dek."} + } hour{ dnam{"valandos"} few{"{0} val."} @@ -2087,13 +2150,6 @@ lt{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - few{"{0} Btu"} - many{"{0} Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"cal"} few{"{0} cal"} @@ -2101,13 +2157,6 @@ lt{ one{"{0} cal"} other{"{0} cal"} } - electronvolt{ - dnam{"eV"} - few{"{0} eV"} - many{"{0} eV"} - one{"{0} eV"} - other{"{0} eV"} - } foodcalorie{ dnam{"cal"} few{"{0} cal"} @@ -2143,21 +2192,12 @@ lt{ one{"{0} kWh"} other{"{0} kWh"} } - } - force{ - newton{ - dnam{"N"} - few{"{0} N"} - many{"{0} N"} - one{"{0} N"} - other{"{0} N"} - } - pound-force{ - dnam{"lbf"} - few{"{0} lbf"} - many{"{0} lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + therm-us{ + dnam{"JAV terma"} + few{"{0} JAV termos"} + many{"{0} JAV termos"} + one{"{0} JAV terma"} + other{"{0} JAV termų"} } } frequency{ @@ -2190,6 +2230,45 @@ lt{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"taškai centimetre"} + few{"{0} tšk./cm"} + many{"{0} tšk./cm"} + one{"{0} tšk./cm"} + other{"{0} tšk./cm"} + } + dot-per-inch{ + dnam{"taškai colyje"} + few{"{0} tšk./in"} + many{"{0} tšk./in"} + one{"{0} tšk./in"} + other{"{0} tšk./in"} + } + em{ + dnam{"tipografinis emas"} + } + megapixel{ + dnam{"megapikseliai"} + } + pixel{ + dnam{"pikseliai"} + few{"{0} p"} + many{"{0} p"} + one{"{0} p"} + other{"{0} p"} + } + pixel-per-centimeter{ + dnam{"pikseliai centimetre"} + few{"{0} p/cm"} + many{"{0} p/cm"} + one{"{0} p/cm"} + other{"{0} p/cm"} + } + pixel-per-inch{ + dnam{"pikseliai colyje"} + } + } length{ astronomical-unit{ dnam{"AV"} @@ -2228,6 +2307,13 @@ lt{ other{"{0} ft"} per{"{0}/ft"} } + furlong{ + dnam{"fur"} + few{"{0} fur"} + many{"{0} fur"} + one{"{0} fur"} + other{"{0} fur"} + } inch{ dnam{"coliai"} few{"{0} in"} @@ -2322,13 +2408,6 @@ lt{ one{"{0} pt"} other{"{0} pt"} } - solar-radius{ - dnam{"R☉"} - few{"{0} R☉"} - many{"{0} R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"yd"} few{"{0} yd"} @@ -2345,13 +2424,6 @@ lt{ one{"{0} lx"} other{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - few{"{0} L☉"} - many{"{0} L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -2361,20 +2433,6 @@ lt{ one{"{0} ct"} other{"{0} ct"} } - dalton{ - dnam{"Da"} - few{"{0} Da"} - many{"{0} Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - few{"{0} M⊕"} - many{"{0} M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"g"} few{"{0} g"} @@ -2435,13 +2493,6 @@ lt{ other{"{0} lb"} per{"{0}/lb"} } - solar-mass{ - dnam{"M☉"} - few{"{0} M☉"} - many{"{0} M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } stone{ dnam{"st"} few{"{0} st"} @@ -2509,6 +2560,13 @@ lt{ one{"{0} atm"} other{"{0} atm"} } + bar{ + dnam{"baras"} + few{"{0} ba"} + many{"{0} ba"} + one{"{0} ba"} + other{"{0} ba"} + } hectopascal{ dnam{"hPa"} few{"{0} hPa"} @@ -2523,20 +2581,6 @@ lt{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - few{"{0} kPa"} - many{"{0} kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - few{"{0} MPa"} - many{"{0} MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} few{"{0} mbar"} @@ -2551,6 +2595,9 @@ lt{ one{"{0} mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"paskaliai"} + } pound-per-square-inch{ dnam{"lb in²"} few{"{0} lb in²"} @@ -2627,13 +2674,6 @@ lt{ one{"{0} N-m"} other{"{0} N-m"} } - pound-foot{ - dnam{"lbf⋅ft"} - few{"{0} lbf⋅ft"} - many{"{0} lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } } volume{ acre-foot{ @@ -2643,12 +2683,12 @@ lt{ one{"{0} ft akre"} other{"{0} ft akre"} } - barrel{ - dnam{"bbl"} - few{"{0} bbl"} - many{"{0} bbl"} - one{"{0} bbl"} - other{"{0} bbl"} + bushel{ + dnam{"bu"} + few{"{0} bu"} + many{"{0} bu"} + one{"{0} bu"} + other{"{0} bu"} } centiliter{ dnam{"cl"} diff --git a/source/data/unit/lu.txt b/source/data/unit/lu.txt index 7c4528f..d6f9778 100644 --- a/source/data/unit/lu.txt +++ b/source/data/unit/lu.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lu{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/luo.txt b/source/data/unit/luo.txt index c0671fb..3f0fb2e 100644 --- a/source/data/unit/luo.txt +++ b/source/data/unit/luo.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License luo{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/luy.txt b/source/data/unit/luy.txt index 7feb78c..05dc25e 100644 --- a/source/data/unit/luy.txt +++ b/source/data/unit/luy.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License luy{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/lv.txt b/source/data/unit/lv.txt index 0021779..918f68d 100644 --- a/source/data/unit/lv.txt +++ b/source/data/unit/lv.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lv{ - Version{"2.1.48.43"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -10,16 +10,16 @@ lv{ units{ acceleration{ g-force{ - dnam{"Brīvās krišanas paātrinājums:"} - one{"Brīvās krišanas paātrinājums: {0}"} - other{"Brīvās krišanas paātrinājums: {0}"} - zero{"Brīvās krišanas paātrinājums: {0}"} + dnam{"smagumspēks"} + one{"{0} smagumspēks"} + other{"{0} smagumspēks"} + zero{"{0} smagumspēku"} } meter-per-second-squared{ - dnam{"metri sekundē kvadrātā"} - one{"{0} metrs sekundē kvadrātā"} - other{"{0} metri sekundē kvadrātā"} - zero{"{0} metru sekundē kvadrāta"} + dnam{"metri kvadrātsekundē"} + one{"{0} metrs kvadrātsekundē"} + other{"{0} metri kvadrātsekundē"} + zero{"{0} metru kvadrātsekundē"} } } angle{ @@ -62,10 +62,9 @@ lv{ zero{"{0} akru"} } dunam{ - dnam{"dunams"} one{"{0} dunams"} other{"{0} dunami"} - zero{"{0} dunams"} + zero{"{0} dunamu"} } hectare{ dnam{"hektāri"} @@ -132,10 +131,10 @@ lv{ zero{"{0} karātu"} } milligram-per-deciliter{ - dnam{"miligrami uz dekalitru"} - one{"{0} miligrams uz dekalitru"} - other{"{0} miligrami uz dekalitru"} - zero{"{0} miligramu uz dekalitru"} + dnam{"miligrami uz decilitru"} + one{"{0} miligrams uz decilitru"} + other{"{0} miligrami uz decilitru"} + zero{"{0} miligramu uz decilitru"} } millimole-per-liter{ dnam{"milimoli uz litru"} @@ -147,7 +146,7 @@ lv{ dnam{"moli"} one{"{0} mols"} other{"{0} moli"} - zero{"{0} mol"} + zero{"{0} molu"} } part-per-million{ dnam{"miljonās daļas"} @@ -158,19 +157,19 @@ lv{ percent{ dnam{"procents"} one{"{0} procents"} - other{"{0} procents"} - zero{"{0} procents"} + other{"{0} procenti"} + zero{"{0} procentu"} } permille{ dnam{"promile"} one{"{0} promile"} - other{"{0} promile"} - zero{"{0} promile"} + other{"{0} promiles"} + zero{"{0} promiļu"} } permyriad{ dnam{"promiriāde"} - one{"{0}‱"} - other{"{0}‱"} + one{"{0} promiriāde"} + other{"{0} promiriādes"} zero{"{0}‱"} } } @@ -188,16 +187,16 @@ lv{ zero{"{0} litru uz kilometru"} } mile-per-gallon{ - dnam{"jūdzes ar galonu"} - one{"{0} jūdze ar galonu"} - other{"{0} jūdzes ar galonu"} - zero{"{0} jūdžu ar galonu"} + dnam{"jūdzes uz galonu"} + one{"{0} jūdze uz galonu"} + other{"{0} jūdzes uz galonu"} + zero{"{0} jūdžu uz galonu"} } mile-per-gallon-imperial{ - dnam{"jūdzes ar imp. galonu"} - one{"{0} jūdze ar imp. galonu"} - other{"{0} jūdzes ar imp. galonu"} - zero{"{0} jūdžu ar imp. galonu"} + dnam{"jūdzes uz britu galonu"} + one{"{0} jūdze uz britu galonu"} + other{"{0} jūdzes uz britu galonu"} + zero{"{0} jūdžu uz britu galonu"} } } coordinate{ @@ -258,9 +257,9 @@ lv{ } petabyte{ dnam{"petabaiti"} - one{"{0} petabaitu"} + one{"{0} petabaits"} other{"{0} petabaiti"} - zero{"{0} PB"} + zero{"{0} petabaitu"} } terabit{ dnam{"terabiti"} @@ -289,6 +288,12 @@ lv{ per{"{0} dienā"} zero{"{0} dienu"} } + decade{ + dnam{"dekādes"} + one{"{0} dekāde"} + other{"{0} dekādes"} + zero{"{0} dekāžu"} + } hour{ dnam{"stundas"} one{"{0} stunda"} @@ -378,10 +383,10 @@ lv{ } energy{ british-thermal-unit{ - dnam{"britu termālās vienības"} - one{"{0} britu termālā vienība"} - other{"{0} britu termālās vienības"} - zero{"{0} Btu"} + dnam{"britu termiskās mērvienības"} + one{"{0} britu termiskā mērvienība"} + other{"{0} britu termiskās mērvienības"} + zero{"{0} britu termisko mērvienību"} } calorie{ dnam{"kalorijas"} @@ -393,7 +398,7 @@ lv{ dnam{"elektronvolti"} one{"{0} elektronvolts"} other{"{0} elektronvolti"} - zero{"{0} eV"} + zero{"{0} elektronvoltu"} } foodcalorie{ dnam{"kalorijas"} @@ -425,6 +430,12 @@ lv{ other{"{0} kilovatstundas"} zero{"{0} kilovatstundu"} } + therm-us{ + dnam{"ASV termiskās vienības"} + one{"{0} ASV termiskā vienība"} + other{"{0} ASV termiskās vienības"} + zero{"{0} ASV termisko vienību"} + } } force{ newton{ @@ -437,7 +448,7 @@ lv{ dnam{"jaudas māciņas"} one{"{0} jaudas mārciņa"} other{"{0} jaudas mārciņas"} - zero{"{0} lbf"} + zero{"{0} jaudas mārciņu"} } } frequency{ @@ -466,6 +477,44 @@ lv{ zero{"{0} megahercu"} } } + graphics{ + dot-per-centimeter{ + dnam{"punkti centimetrā"} + one{"{0} punkts centimetrā"} + other{"{0} punkti centimetrā"} + zero{"{0} dpc"} + } + dot-per-inch{ + dnam{"punkti collā"} + one{"{0} punkts collā"} + other{"{0} punkti collā"} + zero{"{0} dpi"} + } + megapixel{ + dnam{"megapikseļi"} + one{"{0} megapikselis"} + other{"{0} megapikseļi"} + zero{"{0} MP"} + } + pixel{ + dnam{"pikseļi"} + one{"{0} pikselis"} + other{"{0} pikseļi"} + zero{"{0} px"} + } + pixel-per-centimeter{ + dnam{"pikseļi centimetrā"} + one{"{0} pikselis centimetrā"} + other{"{0} pikseļi centimetrā"} + zero{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"pikseļi collā"} + one{"{0} pikselis collā"} + other{"{0} pikseļi collā"} + zero{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"astronomiskās vienības"} @@ -609,7 +658,7 @@ lv{ solar-luminosity{ dnam{"Saules starjauda"} one{"{0} Saules starjauda"} - other{"{0} Saules starjauda"} + other{"{0} Saules starjaudas"} zero{"{0} L☉"} } } @@ -636,14 +685,14 @@ lv{ dnam{"grami"} one{"{0} grams"} other{"{0} grami"} - per{"{0}/g"} + per{"{0} uz gramu"} zero{"{0} gramu"} } kilogram{ dnam{"kilogrami"} one{"{0} kilograms"} other{"{0} kilogrami"} - per{"{0}/kg"} + per{"{0} uz kilogramu"} zero{"{0} kilogramu"} } metric-ton{ @@ -668,7 +717,7 @@ lv{ dnam{"unces"} one{"{0} unce"} other{"{0} unces"} - per{"{0}/unce"} + per{"{0} uz unci"} zero{"{0} unču"} } ounce-troy{ @@ -681,7 +730,7 @@ lv{ dnam{"mārciņas"} one{"{0} mārciņa"} other{"{0} mārciņas"} - per{"{0}/mārc."} + per{"{0} uz mārciņu"} zero{"{0} mārciņu"} } solar-mass{ @@ -746,7 +795,13 @@ lv{ dnam{"atmosfēras"} one{"{0} atmosfēra"} other{"{0} atmosfēras"} - zero{"{0} atm"} + zero{"{0} atmosfēras"} + } + bar{ + dnam{"bāri"} + one{"{0} bārs"} + other{"{0} bāri"} + zero{"{0} bāru"} } hectopascal{ dnam{"hektopaskāli"} @@ -755,10 +810,10 @@ lv{ zero{"{0} hektopaskālu"} } inch-hg{ - dnam{"dzīvsudraba staba collas"} - one{"{0} dzīvsudraba staba colla"} - other{"{0} dzīvsudraba staba collas"} - zero{"{0} dzīvsudraba staba collu"} + dnam{"dzīvsudraba stabiņa collas"} + one{"{0} dzīvsudraba stabiņa colla"} + other{"{0} dzīvsudraba stabiņa collas"} + zero{"{0} dzīvsudraba stabiņa collu"} } kilopascal{ dnam{"kilopaskāli"} @@ -779,10 +834,16 @@ lv{ zero{"{0} milibāru"} } millimeter-of-mercury{ - dnam{"dzīvsudraba staba milimetri"} - one{"{0} dzīvsudraba staba milimetrs"} - other{"{0} dzīvsudraba staba milimetri"} - zero{"{0} dzīvsudraba staba milimetru"} + dnam{"dzīvsudraba stabiņa milimetri"} + one{"{0} dzīvsudraba stabiņa milimetrs"} + other{"{0} dzīvsudraba stabiņa milimetri"} + zero{"{0} dzīvsudraba stabiņa milimetru"} + } + pascal{ + dnam{"paskāli"} + one{"{0} paskāls"} + other{"{0} paskāli"} + zero{"{0} paskālu"} } pound-per-square-inch{ dnam{"mārciņas uz kvadrātcollu"} @@ -848,13 +909,13 @@ lv{ dnam{"ņūtonmetri"} one{"{0} ņūtonmetrs"} other{"{0} ņūtonmetri"} - zero{"{0} N⋅m"} + zero{"{0} ņūtonmetru"} } pound-foot{ - dnam{"mārciņu pēdas"} - one{"{0} mārciņu pēda"} - other{"{0} mārciņu pēdas"} - zero{"{0} mārciņu pēdas"} + dnam{"mārciņpēda"} + one{"{0} mārciņpēda"} + other{"{0} mārciņpēdas"} + zero{"{0} mārciņpēdu"} } } volume{ @@ -948,21 +1009,21 @@ lv{ dnam{"britu šķidruma unces"} one{"{0} britu šķidruma unce"} other{"{0} britu šķidruma unces"} - zero{"{0} britu šķidruma unces"} + zero{"{0} britu šķidruma unču"} } gallon{ dnam{"galoni"} one{"{0} galons"} other{"{0} galoni"} - per{"{0}/gal."} + per{"{0} uz galonu"} zero{"{0} galonu"} } gallon-imperial{ - dnam{"imperiālie galoni"} - one{"{0} imperiālais galons"} - other{"{0} imperiālie galoni"} - per{"{0} uz imperiālo galonu"} - zero{"{0} imperiālo galonu"} + dnam{"britu galoni"} + one{"{0} britu galons"} + other{"{0} britu galoni"} + per{"{0} uz britu galonu"} + zero{"{0} britu galonu"} } hectoliter{ dnam{"hektolitri"} @@ -987,7 +1048,7 @@ lv{ dnam{"mililitri"} one{"{0} mililitrs"} other{"{0} mililitri"} - zero{"{0} milimitru"} + zero{"{0} mililitru"} } pint{ dnam{"pintes"} @@ -1085,6 +1146,9 @@ lv{ concentr{ percent{ dnam{"procents"} + one{"{0}%"} + other{"{0}%"} + zero{"{0}%"} } } consumption{ @@ -1111,29 +1175,23 @@ lv{ } day{ dnam{"d."} - one{"{0}d"} - other{"{0}d"} per{"{0}/d."} - zero{"{0}d"} } hour{ dnam{"h"} - one{"{0}h"} - other{"{0}h"} - zero{"{0}h"} + one{"{0} h"} + other{"{0} h"} + zero{"{0} h"} } millisecond{ dnam{"ms"} - one{"{0}ms"} - other{"{0}ms"} - zero{"{0}ms"} } minute{ dnam{"min"} - one{"{0}min"} - other{"{0}min"} + one{"{0} min"} + other{"{0} min"} per{"{0}/min."} - zero{"{0}min"} + zero{"{0} min"} } month{ dnam{"mēn."} @@ -1144,9 +1202,9 @@ lv{ } second{ dnam{"s"} - one{"{0}s"} - other{"{0}s"} - zero{"{0}s"} + one{"{0} s"} + other{"{0} s"} + zero{"{0} s"} } week{ dnam{"n."} @@ -1173,8 +1231,8 @@ lv{ centimeter{ dnam{"cm"} one{"{0}cm"} - other{"{0}cm"} - zero{"{0}cm"} + other{"{0} cm"} + zero{"{0} cm"} } fathom{ dnam{"fatomi"} @@ -1204,9 +1262,6 @@ lv{ } kilometer{ dnam{"km"} - one{"{0}km"} - other{"{0}km"} - zero{"{0}km"} } light-year{ dnam{"g.g."} @@ -1216,9 +1271,6 @@ lv{ } meter{ dnam{"m"} - one{"{0}m"} - other{"{0}m"} - zero{"{0}m"} } mile{ dnam{"jūdzes"} @@ -1235,8 +1287,8 @@ lv{ millimeter{ dnam{"mm"} one{"{0}mm"} - other{"{0}mm"} - zero{"{0}mm"} + other{"{0} mm"} + zero{"{0} mm"} } nautical-mile{ dnam{"j.j."} @@ -1276,16 +1328,10 @@ lv{ zero{"{0} ct"} } gram{ - dnam{"g"} - one{"{0}g"} - other{"{0}g"} - zero{"{0}g"} + dnam{"grams"} } kilogram{ dnam{"kg"} - one{"{0}kg"} - other{"{0}kg"} - zero{"{0}kg"} } ounce{ dnam{"unces"} @@ -1357,8 +1403,8 @@ lv{ speed{ kilometer-per-hour{ dnam{"km/h"} - one{"{0}km/h"} - other{"{0}km/h"} + one{"{0} km/h"} + other{"{0} km/h"} zero{"{0}km/h"} } knot{ @@ -1405,8 +1451,8 @@ lv{ } liter{ dnam{"l"} - one{"{0}l"} - other{"{0}l"} + one{"{0} l"} + other{"{0} l"} zero{"{0}l"} } } @@ -1414,13 +1460,13 @@ lv{ unitsShort{ acceleration{ g-force{ - dnam{"Brīvās krišanas paātrinājums:"} + dnam{"smagumspēks"} one{"{0} G"} other{"{0} G"} zero{"{0} G"} } meter-per-second-squared{ - dnam{"m/s²"} + dnam{"metri kvadrātsekundē"} one{"{0} m/s²"} other{"{0} m/s²"} zero{"{0} m/s²"} @@ -1428,13 +1474,13 @@ lv{ } angle{ arc-minute{ - dnam{"′"} + dnam{"leņķa minūtes"} one{"{0}′"} other{"{0}′"} zero{"{0}′"} } arc-second{ - dnam{"″"} + dnam{"leņķa sekundes"} one{"{0}″"} other{"{0}″"} zero{"{0}″"} @@ -1446,7 +1492,7 @@ lv{ zero{"{0}°"} } radian{ - dnam{"rad"} + dnam{"radiāni"} one{"{0} rad"} other{"{0} rad"} zero{"{0} rad"} @@ -1460,7 +1506,7 @@ lv{ } area{ acre{ - dnam{"ac"} + dnam{"akri"} one{"{0} ac"} other{"{0} ac"} zero{"{0} ac"} @@ -1469,7 +1515,7 @@ lv{ dnam{"dunami"} one{"{0} dunams"} other{"{0} dunami"} - zero{"{0} dunami"} + zero{"{0} dunamu"} } hectare{ dnam{"ha"} @@ -1494,7 +1540,6 @@ lv{ dnam{"in²"} one{"{0} in²"} other{"{0} in²"} - per{"{0} uz collu²"} zero{"{0} in²"} } square-kilometer{ @@ -1536,10 +1581,10 @@ lv{ zero{"{0} kt"} } milligram-per-deciliter{ - dnam{"mg/dL"} - one{"{0} mg/dL"} - other{"{0} mg/dL"} - zero{"{0} mg/dL"} + dnam{"mg/dl"} + one{"{0} mg/dl"} + other{"{0} mg/dl"} + zero{"{0} mg/dl"} } millimole-per-liter{ dnam{"mmol/L"} @@ -1554,16 +1599,22 @@ lv{ zero{"{0} mol"} } part-per-million{ - dnam{"ppm"} + dnam{"miljonās daļas"} one{"{0} ppm"} other{"{0} ppm"} zero{"{0} ppm"} } percent{ dnam{"procents"} + one{"{0}%"} + other{"{0}%"} + zero{"{0}%"} } permille{ dnam{"promile"} + one{"{0}‰"} + other{"{0}‰"} + zero{"{0}‰"} } permyriad{ dnam{"promiriāde"} @@ -1586,7 +1637,7 @@ lv{ zero{"{0} l/km"} } mile-per-gallon{ - dnam{"mpg"} + dnam{"jūdzes uz galonu"} one{"{0} mpg"} other{"{0} mpg"} zero{"{0} mpg"} @@ -1654,6 +1705,12 @@ lv{ other{"{0} MB"} zero{"{0} MB"} } + petabyte{ + dnam{"PB"} + one{"{0} PB"} + other{"{0} PB"} + zero{"{0} PB"} + } terabit{ dnam{"Tb"} one{"{0} Tb"} @@ -1681,11 +1738,16 @@ lv{ per{"{0}/d."} zero{"{0} d."} } + decade{ + dnam{"dek"} + one{"{0} dek"} + other{"{0} dek"} + zero{"{0} dek"} + } hour{ dnam{"st."} one{"{0} st."} other{"{0} st."} - per{"{0}/st."} zero{"{0} st."} } microsecond{ @@ -1703,7 +1765,7 @@ lv{ minute{ dnam{"min."} one{"{0} min."} - other{"{0} min."} + other{"{0} min"} per{"{0}/min."} zero{"{0} min."} } @@ -1756,13 +1818,13 @@ lv{ zero{"{0} mA"} } ohm{ - dnam{"Ω"} + dnam{"omi"} one{"{0} Ω"} other{"{0} Ω"} zero{"{0} Ω"} } volt{ - dnam{"V"} + dnam{"volti"} one{"{0} V"} other{"{0} V"} zero{"{0} V"} @@ -1770,7 +1832,6 @@ lv{ } energy{ british-thermal-unit{ - dnam{"BTU"} one{"{0} Btu"} other{"{0} Btu"} zero{"{0} Btu"} @@ -1794,7 +1855,7 @@ lv{ zero{"{0} cal"} } joule{ - dnam{"J"} + dnam{"džouli"} one{"{0} J"} other{"{0} J"} zero{"{0} J"} @@ -1858,6 +1919,20 @@ lv{ zero{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpc"} + one{"{0} dpc"} + other{"{0} dpc"} + zero{"{0} dpc"} + } + megapixel{ + dnam{"megapikseļi"} + } + pixel{ + dnam{"pikseļi"} + } + } length{ astronomical-unit{ dnam{"a.v."} @@ -1886,10 +1961,9 @@ lv{ } foot{ dnam{"pēdas"} - one{"{0} pēda"} - other{"{0} pēdas"} - per{"{0}/pēda"} - zero{"{0} pēdas"} + one{"{0} ft"} + other{"{0} ft"} + zero{"{0} ft"} } furlong{ dnam{"furlongi"} @@ -1898,14 +1972,9 @@ lv{ zero{"{0} furlongu"} } inch{ - dnam{"colla"} - one{"{0} colla"} - other{"{0} collas"} - per{"{0}/colla"} - zero{"{0} collas"} + dnam{"collas"} } kilometer{ - dnam{"kilometri"} one{"{0} km"} other{"{0} km"} per{"{0}/km"} @@ -1955,16 +2024,15 @@ lv{ zero{"{0} nm"} } nautical-mile{ - dnam{"jūras jūdzes"} - one{"{0} jūras jūdze"} - other{"{0} jūras jūdzes"} - zero{"{0} jūras jūdzes"} + one{"{0} nmi"} + other{"{0} nmi"} + zero{"{0} nmi"} } parsec{ dnam{"parseki"} - one{"{0} parseks"} - other{"{0} parseki"} - zero{"{0} parseki"} + one{"{0} pc"} + other{"{0} pc"} + zero{"{0} pc"} } picometer{ dnam{"pm"} @@ -1973,13 +2041,13 @@ lv{ zero{"{0} pm"} } point{ - dnam{"pk."} + dnam{"punkti"} one{"{0} pk."} other{"{0} pk."} zero{"{0} pk."} } solar-radius{ - dnam{"Saules rādiuss"} + dnam{"Saules rādiusi"} one{"{0} R☉"} other{"{0} R☉"} zero{"{0} R☉"} @@ -1993,7 +2061,7 @@ lv{ } light{ lux{ - dnam{"lx"} + dnam{"lukss"} one{"{0} lx"} other{"{0} lx"} zero{"{0} lx"} @@ -2025,7 +2093,7 @@ lv{ zero{"{0} M⊕"} } gram{ - dnam{"g"} + dnam{"grami"} one{"{0} g"} other{"{0} g"} per{"{0}/g"} @@ -2070,11 +2138,10 @@ lv{ zero{"{0} Trojas unces"} } pound{ - dnam{"mārc."} - one{"{0} mārc."} - other{"{0} mārc."} - per{"{0}/mārc."} - zero{"{0} mārc."} + dnam{"mārciņas"} + one{"{0} lb"} + other{"{0} lb"} + zero{"{0} lb"} } solar-mass{ dnam{"Saules masas"} @@ -2127,13 +2194,19 @@ lv{ zero{"{0} mW"} } watt{ - dnam{"W"} + dnam{"vati"} one{"{0} W"} other{"{0} W"} zero{"{0} W"} } } pressure{ + atmosphere{ + dnam{"atm"} + one{"{0} atm"} + other{"{0} atm"} + zero{"{0} atm"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -2186,9 +2259,6 @@ lv{ } knot{ dnam{"mezgls"} - one{"{0} mezgls"} - other{"{0} mezgli"} - zero{"{0} mezgli"} } meter-per-second{ dnam{"m/s"} @@ -2237,7 +2307,7 @@ lv{ zero{"{0} N⋅m"} } pound-foot{ - dnam{"mārc. pēda"} + dnam{"mārciņpēda"} one{"{0} mārc. pēda"} other{"{0} mārc. pēdas"} zero{"{0} mārc. pēdas"} @@ -2307,7 +2377,7 @@ lv{ zero{"{0} yd³"} } cup{ - dnam{"gl."} + dnam{"glāzes"} one{"{0} gl."} other{"{0} gl."} zero{"{0} gl."} @@ -2334,7 +2404,7 @@ lv{ dnam{"britu šķidr. unces"} one{"{0} britu šķidr. unce"} other{"{0} britu šķidr. unces"} - zero{"{0} britu šķidr. unces"} + zero{"{0} britu šķidr. unču"} } gallon{ dnam{"gal"} @@ -2344,11 +2414,11 @@ lv{ zero{"{0} gal"} } gallon-imperial{ - dnam{"imp. gal."} - one{"{0} imp. gal."} - other{"{0} imp. gal."} - per{"{0}/imp. gal."} - zero{"{0} imp. gal."} + dnam{"britu galons"} + one{"{0} britu galons"} + other{"{0} britu galoni"} + per{"{0}/britu galonu"} + zero{"{0} britu galonu"} } hectoliter{ dnam{"hl"} @@ -2376,7 +2446,7 @@ lv{ zero{"{0} ml"} } pint{ - dnam{"pt"} + dnam{"pintes"} one{"{0} pt"} other{"{0} pt"} zero{"{0} pt"} diff --git a/source/data/unit/mas.txt b/source/data/unit/mas.txt index 3ffb507..93cfd99 100644 --- a/source/data/unit/mas.txt +++ b/source/data/unit/mas.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mas{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/mer.txt b/source/data/unit/mer.txt index 7a8e920..9927413 100644 --- a/source/data/unit/mer.txt +++ b/source/data/unit/mer.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mer{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/mfe.txt b/source/data/unit/mfe.txt index 41c25c6..1aa1c26 100644 --- a/source/data/unit/mfe.txt +++ b/source/data/unit/mfe.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mfe{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/mg.txt b/source/data/unit/mg.txt index e768c6a..d7ae4e8 100644 --- a/source/data/unit/mg.txt +++ b/source/data/unit/mg.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mg{ - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/unit/mgh.txt b/source/data/unit/mgh.txt index 4d5f620..dd39d37 100644 --- a/source/data/unit/mgh.txt +++ b/source/data/unit/mgh.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mgh{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/mgo.txt b/source/data/unit/mgo.txt index 3534637..2c56e4c 100644 --- a/source/data/unit/mgo.txt +++ b/source/data/unit/mgo.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mgo{ - Version{"2.1.47.82"} + Version{"36"} units{ duration{ day{ diff --git a/source/data/unit/mi.txt b/source/data/unit/mi.txt index 544390a..91f0535 100644 --- a/source/data/unit/mi.txt +++ b/source/data/unit/mi.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mi{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/mk.txt b/source/data/unit/mk.txt index dad2cd5..1541427 100644 --- a/source/data/unit/mk.txt +++ b/source/data/unit/mk.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mk{ - Version{"2.1.48.27"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -22,14 +22,14 @@ mk{ } angle{ arc-minute{ - dnam{"минути"} - one{"{0} минута"} - other{"{0} минути"} + dnam{"аголни минути"} + one{"{0} аголна минута"} + other{"{0} аголни минути"} } arc-second{ - dnam{"секунди"} - one{"{0} секунда"} - other{"{0} секунди"} + dnam{"аголни секунди"} + one{"{0} аголна секунда"} + other{"{0} аголни секунди"} } degree{ dnam{"степени"} @@ -106,6 +106,7 @@ mk{ } compound{ per{"{0} на {1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -247,6 +248,11 @@ mk{ other{"{0} дена"} per{"{0} дневно"} } + decade{ + dnam{"децении"} + one{"{0} деценија"} + other{"{0} децении"} + } hour{ dnam{"часа"} one{"{0} час"} @@ -362,6 +368,11 @@ mk{ one{"{0} киловат-час"} other{"{0} киловат-часови"} } + therm-us{ + dnam{"US терми"} + one{"{0} US терм"} + other{"{0} US терми"} + } } force{ newton{ @@ -370,9 +381,9 @@ mk{ other{"{0} њутни"} } pound-force{ - dnam{"фунти-сила"} - one{"{0} фунта-сила"} - other{"{0} фунти-сила"} + dnam{"фунти сила"} + one{"{0} фунта сила"} + other{"{0} фунти сила"} } } frequency{ @@ -547,7 +558,7 @@ mk{ dnam{"килограми"} one{"{0} килограм"} other{"{0} килограми"} - per{"{0} од килограм"} + per{"{0} на килограм"} } metric-ton{ dnam{"метрички тони"} @@ -568,7 +579,7 @@ mk{ dnam{"унци"} one{"{0} унца"} other{"{0} унци"} - per{"{0} од унца"} + per{"{0} на унца"} } ounce-troy{ dnam{"тројски унци"} @@ -579,7 +590,7 @@ mk{ dnam{"фунти"} one{"{0} фунта"} other{"{0} фунти"} - per{"{0} од фунта"} + per{"{0} на фунта"} } solar-mass{ dnam{"сончеви маси"} @@ -635,6 +646,11 @@ mk{ one{"{0} атмосфера"} other{"{0} атмосфери"} } + bar{ + dnam{"бари"} + one{"{0} бар"} + other{"{0} бари"} + } hectopascal{ dnam{"хектопаскали"} one{"{0} хектопаскал"} @@ -722,9 +738,9 @@ mk{ other{"{0} њутнметри"} } pound-foot{ - dnam{"стапки-фунти"} - one{"{0} стапка-фунти"} - other{"{0} стапки-фунти"} + dnam{"стапки фунти"} + one{"{0} стапка фунта"} + other{"{0} стапки фунти"} } } volume{ @@ -786,14 +802,14 @@ mk{ other{"{0} кубни јарди"} } cup{ - dnam{"шолји"} - one{"{0} шолја"} - other{"{0} шолји"} + dnam{"чаши"} + one{"{0} чаша"} + other{"{0} чаши"} } cup-metric{ - dnam{"метрички шолји"} - one{"{0} метричка шолја"} - other{"{0} метрички шолји"} + dnam{"метрички чаши"} + one{"{0} метричка чаша"} + other{"{0} метрички чаши"} } deciliter{ dnam{"децилитри"} @@ -817,10 +833,10 @@ mk{ per{"{0} по галон"} } gallon-imperial{ - dnam{"Imp. gal"} - one{"{0} gal Imp."} - other{"{0} gal Imp."} - per{"{0}/gal Imp."} + dnam{"имп. галони"} + one{"{0} имп. галон"} + other{"{0} имп. галони"} + per{"{0}/имп. галон"} } hectoliter{ dnam{"хектолитри"} @@ -935,6 +951,7 @@ mk{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1417,14 +1434,14 @@ mk{ } angle{ arc-minute{ - dnam{"минути"} - one{"{0} мин."} - other{"{0} мин"} + dnam{"аголни минути"} + one{"{0} аголна мин."} + other{"{0} аголни мин."} } arc-second{ - dnam{"секунди"} - one{"{0} сек"} - other{"{0} сек"} + dnam{"аголни секунди"} + one{"{0} аголна сек."} + other{"{0} аголни сек."} } degree{ dnam{"степени"} @@ -1501,6 +1518,7 @@ mk{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1642,6 +1660,11 @@ mk{ other{"{0} дена"} per{"{0}/ден"} } + decade{ + dnam{"дец."} + one{"{0} дец."} + other{"{0} дец."} + } hour{ dnam{"часа"} one{"{0} ч."} @@ -1757,6 +1780,11 @@ mk{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"US терм"} + one{"{0} US терм"} + other{"{0} US терми"} + } } force{ newton{ @@ -1792,6 +1820,43 @@ mk{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"MP"} + one{"{0} MP"} + other{"{0} MP"} + } + pixel{ + dnam{"px"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + one{"{0} ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"ае"} @@ -2030,6 +2095,11 @@ mk{ one{"{0} атм"} other{"{0} атм"} } + bar{ + dnam{"бар"} + one{"{0} бар"} + other{"{0} бари"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -2056,9 +2126,14 @@ mk{ other{"{0} мб."} } millimeter-of-mercury{ - dnam{"мм жива"} - one{"{0} мм жива"} - other{"{0} мм жива"} + dnam{"mmHg"} + one{"{0} mmHg"} + other{"{0} mmHg"} + } + pascal{ + dnam{"Pa"} + one{"{0} Pa"} + other{"{0} Pa"} } pound-per-square-inch{ dnam{"psi"} @@ -2091,13 +2166,13 @@ mk{ temperature{ celsius{ dnam{"целзиусови степени"} - one{"{0}°C"} - other{"{0}°C"} + one{"{0} °C"} + other{"{0} °C"} } fahrenheit{ dnam{"°F"} - one{"{0}°F"} - other{"{0}°F"} + one{"{0} °F"} + other{"{0} °F"} } generic{ dnam{"°"} @@ -2181,9 +2256,9 @@ mk{ other{"{0} јд³"} } cup{ - dnam{"шолји"} - one{"{0} ш."} - other{"{0} ш."} + dnam{"чаши"} + one{"{0} ч."} + other{"{0} ч."} } cup-metric{ dnam{"mcup"} @@ -2212,10 +2287,10 @@ mk{ per{"{0}/gal"} } gallon-imperial{ - dnam{"Imp. gal"} - one{"{0} gal Imp."} - other{"{0} gal Imp."} - per{"{0}/gal Imp."} + dnam{"имп. галон"} + one{"{0} имп. галон"} + other{"{0} имп. галони"} + per{"{0}/имп. галон"} } hectoliter{ dnam{"hL"} diff --git a/source/data/unit/ml.txt b/source/data/unit/ml.txt index 7e8b7b6..fe24fd3 100644 --- a/source/data/unit/ml.txt +++ b/source/data/unit/ml.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ml{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -124,9 +124,9 @@ ml{ other{"{0} മില്ലിമോൾ / ലിറ്റർ"} } mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} + dnam{"മോളുകൾ"} + one{"{0} മോൾ"} + other{"{0} മോളുകൾ"} } part-per-million{ dnam{"പാർട്‌സ് / മില്ല്യൺ"} @@ -144,9 +144,8 @@ ml{ other{"{0} പ്രതിമില്ലി"} } permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} + one{"{0} പിരമിഡ്"} + other{"{0} പിരമിഡ്"} } } consumption{ @@ -220,7 +219,7 @@ ml{ other{"{0} മെഗാബൈറ്റ്"} } petabyte{ - dnam{"PB"} + dnam{"പെറ്റാബൈറ്റുകൾ"} one{"{0} പെറ്റാബൈറ്റ്"} other{"{0} പെറ്റാബൈറ്റ്"} } @@ -247,6 +246,11 @@ ml{ other{"{0} ദിവസം"} per{"{0} / ദിവസം"} } + decade{ + dnam{"ദശാബ്‌ദം"} + one{"ദശാബ്‌ദം"} + other{"{0} ദശാബ്‌ദം"} + } hour{ dnam{"മണിക്കൂർ"} one{"{0} മണിക്കൂർ"} @@ -323,7 +327,7 @@ ml{ } energy{ british-thermal-unit{ - dnam{"BTU"} + dnam{"ബ്രിട്ടീഷ് തെർമൽ യൂണിറ്റ്"} one{"{0} ബ്രിട്ടീഷ് തെർമൽ യൂണിറ്റ്"} other{"{0} ബ്രിട്ടീഷ് തെർമൽ യൂണിറ്റുകൾ"} } @@ -333,9 +337,8 @@ ml{ other{"{0} കലോറി"} } electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} + one{"{0} ഇലക്ട്രോൺവോൾട്ട്"} + other{"{0} ഇലക്ട്രോൺവോൾട്ട്"} } foodcalorie{ dnam{"കലോറി"} @@ -365,14 +368,14 @@ ml{ } force{ newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} + dnam{"ന്യൂട്ടൻസ്"} + one{"{0} ന്യൂട്ടൻ"} + other{"{0} ന്യൂട്ടൻസ്"} } pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + dnam{"പൗണ്ട്സ് ഓഫ് ഫോഴ്സ്"} + one{"{0} പൗണ്ട് ഓഫ് ഫോഴ്സ്"} + other{"{0} പൗണ്ട്സ് ഓഫ് ഫോഴ്സ്"} } } frequency{ @@ -498,11 +501,6 @@ ml{ one{"{0} പോയിന്റ്"} other{"{0} പോയിന്റ്"} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"വാര"} one{"{0} വാര"} @@ -516,9 +514,9 @@ ml{ other{"{0} ലക്സ്"} } solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} + dnam{"സോളാർ ലുമിനോസൈട്സ്"} + one{"{0} സോളാർ ലുമിനോസിറ്റി"} + other{"{0} സോളാർ ലുമിനോസൈട്സ്"} } } mass{ @@ -528,14 +526,13 @@ ml{ other{"{0} ക്യാരറ്റ്"} } dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} + dnam{"ഡാൽട്ടണുകൾ"} + one{"ഡാൽട്ടൻ"} + other{"{0} ഡാൽട്ടണുകൾ"} } earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} + one{"{0} ഭൂപിണ്ഡം"} + other{"{0} ഭൂപിണ്ഡം"} } gram{ dnam{"ഗ്രാം"} @@ -582,9 +579,9 @@ ml{ per{"{0}/പൗണ്ട്"} } solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} + dnam{"സൂര്യപിണ്ഡം"} + one{"{0} സൂര്യപിണ്ഡം"} + other{"{0} സൂര്യപിണ്ഡം"} } stone{ dnam{"സ്റ്റോൺ"} @@ -635,6 +632,11 @@ ml{ one{"{0} അറ്റ്‌മോസ്‌ഫിയർ"} other{"{0} അറ്റ്‌മോസ്‌ഫിയർ"} } + bar{ + dnam{"ബാറുകൾ"} + one{"{0} ബാർ"} + other{"{0} ബാറുകൾ"} + } hectopascal{ dnam{"ഹെക്‌ടോപാസ്‌ക്കൽ"} one{"{0} ഹെക്‌ടോപാസ്‌ക്കൽ"} @@ -665,6 +667,11 @@ ml{ one{"{0} മില്ലീമീറ്റർ മെർക്കുറി"} other{"{0} മില്ലീമീറ്റർ മെർക്കുറി"} } + pascal{ + dnam{"പാസ്കൽസ്"} + one{"{0} പാസ്കൽ"} + other{"{0} പാസ്കൽസ്"} + } pound-per-square-inch{ dnam{"പൗണ്ട് / ചതുരശ്ര ഇഞ്ച്"} one{"{0} പൗണ്ട് / ചതുരശ്ര ഇഞ്ച്"} @@ -722,9 +729,9 @@ ml{ other{"{0} ന്യൂട്ടൺ മീറ്ററുകൾ"} } pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} + dnam{"പൗണ്ട് ഫീറ്റ്"} + one{"{0} പൗണ്ട് ഫൂട്ട്"} + other{"{0} പൗണ്ട് ഫീറ്റ്"} } } volume{ @@ -800,11 +807,6 @@ ml{ one{"{0} ഫ്ലൂയിഡ് ഔൺസ്"} other{"{0} ഫ്ലൂയിഡ് ഔൺസ്"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"ഗാലൻ"} one{"{0} ഗാലൻ"} @@ -1236,7 +1238,13 @@ ml{ one{"{0}°ഫാ"} other{"{0}°ഫാ"} } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ + dnam{"K"} one{"{0}K"} other{"{0}K"} } @@ -1356,6 +1364,7 @@ ml{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1374,9 +1383,9 @@ ml{ other{"{0} മി.മോ/ലി."} } mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} + dnam{"മോൾ"} + one{"{0} മോൾ"} + other{"{0} മോൾ"} } part-per-million{ dnam{"പാർട്‌സ്/മില്ല്യൺ"} @@ -1394,9 +1403,7 @@ ml{ other{"{0}‰"} } permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} + dnam{"പിരമിഡ്"} } } consumption{ @@ -1441,6 +1448,8 @@ ml{ } gigabit{ dnam{"ജി.ബിറ്റ്"} + one{"{0} Gb"} + other{"{0} Gb"} } gigabyte{ dnam{"ജി.ബൈറ്റ്"} @@ -1468,7 +1477,7 @@ ml{ other{"{0} എംബി"} } petabyte{ - dnam{"PB"} + dnam{"പെ.ബൈ."} one{"{0} പിബി"} other{"{0} പിബി"} } @@ -1495,6 +1504,11 @@ ml{ other{"{0} ദിവസം‌"} per{"{0}/ദി."} } + decade{ + dnam{"ദശാബ്‌ദം"} + one{"{0} ദശാബ്‌ദം"} + other{"{0} ദശാബ്‌ദം"} + } hour{ dnam{"മണിക്കൂർ"} one{"{0} മ"} @@ -1572,8 +1586,6 @@ ml{ energy{ british-thermal-unit{ dnam{"BTU"} - one{"{0} Btu"} - other{"{0} Btu"} } calorie{ dnam{"കലോ."} @@ -1581,9 +1593,7 @@ ml{ other{"{0} കലോ."} } electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} + dnam{"ഇലക്ട്രോൺവോൾട്ട്"} } foodcalorie{ dnam{"കലോ."} @@ -1610,17 +1620,18 @@ ml{ one{"{0} കി.വാ/മ."} other{"{0} കി.വാ/മ."} } + therm-us{ + dnam{"US therm"} + one{"{0} US therm"} + other{"{0} US therm"} + } } force{ newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} + dnam{"ന്യൂട്ടൻ"} } pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + dnam{"പൗണ്ട് ഫോഴ്സ്"} } } frequency{ @@ -1645,6 +1656,43 @@ ml{ other{"{0} മെ.ഹെ."} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"MP"} + one{"{0} MP"} + other{"{0} MP"} + } + pixel{ + dnam{"px"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + one{"{0} ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"ജ്യോ.യൂ."} @@ -1746,11 +1794,6 @@ ml{ one{"{0} പോ."} other{"{0} പോ."} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"വാര"} one{"{0} വാര"} @@ -1764,9 +1807,7 @@ ml{ other{"{0} ലക്സ്"} } solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} + dnam{"സോളാർ ലുമിനോസൈട്സ്"} } } mass{ @@ -1776,14 +1817,12 @@ ml{ other{"{0} CD"} } dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} + dnam{"ഡാൽട്ടണുകൾ"} + one{"{0} ഡാ"} + other{"{0} ഡാ"} } earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} + dnam{"ഭൂപിണ്ഡം"} } gram{ dnam{"ഗ്രാം"} @@ -1830,9 +1869,7 @@ ml{ per{"{0}/പൗ."} } solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} + dnam{"സൂര്യപിണ്ഡം"} } stone{ dnam{"സ്റ്റോൺ"} @@ -1883,6 +1920,11 @@ ml{ one{"{0} atm"} other{"{0} atm"} } + bar{ + dnam{"ബാർ"} + one{"{0} ബാർ"} + other{"{0} ബാറുകൾ"} + } hectopascal{ dnam{"ഹെ.പാ."} one{"{0} ഹെ.പാ."} @@ -1893,16 +1935,6 @@ ml{ one{"{0} ഇഞ്ച് മെ."} other{"{0} ഇഞ്ച് മെ."} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"മി.ബാ"} one{"{0} മി.ബാ"} @@ -1913,6 +1945,11 @@ ml{ one{"{0} മിമീ.മെ."} other{"{0} മിമീ.മെ."} } + pascal{ + dnam{"പാ"} + one{"{0} പാ"} + other{"{0} പാ"} + } pound-per-square-inch{ dnam{"പിഎസ്ഐ"} one{"{0} പിഎസ്ഐ"} @@ -1963,18 +2000,6 @@ ml{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ഏ. അടി"} @@ -1983,8 +2008,6 @@ ml{ } barrel{ dnam{"ബാരൽ"} - one{"{0} bbl"} - other{"{0} bbl"} } centiliter{ dnam{"സെ.ലി."} @@ -2048,11 +2071,6 @@ ml{ one{"{0} ഫ്ലൂ. ഔ."} other{"{0} ഫ്ലൂ. ഔ."} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"ഗാ."} one{"{0} ഗാ."} diff --git a/source/data/unit/mn.txt b/source/data/unit/mn.txt index 947d3a3..04fa52a 100644 --- a/source/data/unit/mn.txt +++ b/source/data/unit/mn.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mn{ - Version{"2.1.48.17"} + Version{"36"} durationUnits{ hm{"hh:mm"} hms{"hh:mm:ss"} @@ -15,9 +15,9 @@ mn{ other{"{0} жи-хүч"} } meter-per-second-squared{ - dnam{"метр сек кв"} - one{"{0} метр сек кв"} - other{"{0} метр сек кв"} + dnam{"квадрат секундэд ногдох метр"} + one{"квадрат секундэд {0} метр"} + other{"квадрат секундэд {0} метр"} } } angle{ @@ -54,9 +54,9 @@ mn{ other{"{0} акр"} } dunam{ - dnam{"dunams"} - one{"{0} dunam"} - other{"{0} dunams"} + dnam{"дунам"} + one{"{0} дунам"} + other{"{0} дунам"} } hectare{ dnam{"гектар"} @@ -64,48 +64,48 @@ mn{ other{"{0} гектар"} } square-centimeter{ - dnam{"сантиметр квадрат"} - one{"{0} сантиметр квадрат"} - other{"{0} см²"} - per{"{0}/см²"} + dnam{"квадрат сантиметр"} + one{"{0} квадрат сантиметр"} + other{"{0} квадрат сантиметр"} + per{"квадрат сантиметр тутамд {0}"} } square-foot{ - dnam{"кв.фут"} - one{"{0} кв.фут"} - other{"{0} кв.фут"} + dnam{"квадрат фут"} + one{"{0} квадрат фут"} + other{"{0} квадрат фут"} } square-inch{ - dnam{"кв.инч"} - one{"{0} кв.инч"} - other{"{0} кв.инч"} - per{"{0}/инч²"} + dnam{"квадрат инч"} + one{"{0} квадрат инч"} + other{"{0} квадрат инч"} + per{"квадрат инч тутамд {0}"} } square-kilometer{ dnam{"квадрат километр"} - one{"{0} км²"} - other{"{0} км²"} - per{"{0}/км²"} + one{"{0} квадрат километр"} + other{"{0} квадрат километр"} + per{"квадрат километр тутамд {0}"} } square-meter{ dnam{"квадрат метр"} - one{"{0} м²"} - other{"{0} м²"} - per{"{0}/м²"} + one{"{0} квадрат метр"} + other{"{0} квадрат метр"} + per{"квадрат метр тутамд {0}"} } square-mile{ - dnam{"кв.миль"} - one{"{0} миль²"} - other{"{0} миль²"} - per{"{0}/миль²"} + dnam{"квадрат миль"} + one{"{0} квадрат миль"} + other{"{0} квадрат миль"} + per{"квадрат миль тутамд {0}"} } square-yard{ - dnam{"ярд²"} - one{"{0} ярд²"} - other{"{0} ярд²"} + dnam{"квадрат ярд"} + one{"{0} квадрат ярд"} + other{"{0} квадрат ярд"} } } compound{ - per{"{0}/{1}"} + per{"{1} тутамд {0}"} } concentr{ karat{ @@ -114,14 +114,14 @@ mn{ other{"{0} карат"} } milligram-per-deciliter{ - dnam{"мг/дЛ"} - one{"{0} мг/дЛ"} - other{"{0} мг/дЛ"} + dnam{"мг/дл"} + one{"{0} мг/дл"} + other{"{0} мг/дл"} } millimole-per-liter{ - dnam{"ммол/л"} - one{"{0} ммол/л"} - other{"{0} ммол/л"} + dnam{"литр тутамд ногдох миллимоль"} + one{"литр тутамд {0} миллимоль"} + other{"литр тутамд {0} миллимоль"} } mole{ dnam{"моль"} @@ -129,9 +129,9 @@ mn{ other{"{0} моль"} } part-per-million{ - dnam{"хэсэг/саяд"} - one{"{0} хэсэг/саяд"} - other{"{0} хэсэг/саяд"} + dnam{"саяны хувь"} + one{"саяны {0} хувь"} + other{"саяны {0} хувь"} } percent{ dnam{"хувь"} @@ -139,41 +139,44 @@ mn{ other{"{0} хувь"} } permille{ - dnam{"‰"} + dnam{"мянганы хувь"} + one{"мянганы {0} хувь"} + other{"мянганы {0} хувь"} } permyriad{ - dnam{"permyriad"} - one{"{0} permyriad"} - other{"{0} permyriad"} + dnam{"арван мянганы хувь"} + one{"арван мянганы {0} хувь"} + other{"арван мянганы {0} хувь"} } } consumption{ liter-per-100kilometers{ - dnam{"л/100км"} - one{"{0} л/100км"} - other{"{0} л/100км"} + dnam{"100 километр тутамд ногдох литр"} + one{"100 километр тутамд {0} литр"} + other{"100 километр тутамд {0} литр"} } liter-per-kilometer{ - dnam{"литр/километр"} - one{"{0} литр/километр"} - other{"{0} литр/километр"} + dnam{"километр тутамд ногдох литр"} + one{"километр тутамд {0} литр"} + other{"километр тутамд {0} литр"} } mile-per-gallon{ - dnam{"миль/галлон"} - one{"{0} миль/галлон"} - other{"{0} миль/галлон"} + dnam{"галлон тутамд ногдох миль"} + one{"галлон тутамд {0} миль"} + other{"Vote галлон тутамд {0} миль"} } mile-per-gallon-imperial{ - dnam{"миль/ИБгаллон"} - one{"{0} миль/ИБгаллон"} - other{"{0} миль/ИБгаллон"} + dnam{"анг. галлон тутамд ногдох миль"} + one{"анг. галлон тутамд {0} миль"} + other{"анг. галлон тутамд {0} миль"} } } coordinate{ - east{"{0}Зүүн"} - north{"{0}Умард"} - south{"{0}Өмнөд"} - west{"{0}Өрнөд"} + dnam{"зүг чиг"} + east{"зүүн уртрагийн {0}"} + north{"хойд өргөргийн {0}"} + south{"өмнөд өргөргийн {0}"} + west{"баруун уртрагийн {0}"} } digital{ bit{ @@ -235,14 +238,19 @@ mn{ duration{ century{ dnam{"зуун"} - one{"{0}зуун"} - other{"{0}зуун"} + one{"{0} зуун"} + other{"{0} зуун"} } day{ - dnam{"өдөр"} - one{"{0} өдөр"} - other{"{0} өдөр"} - per{"{0}/өдөрт"} + dnam{"хоног"} + one{"{0} хоног"} + other{"{0} хоног"} + per{"{0}/хоног"} + } + decade{ + dnam{"декад"} + one{"{0} декад"} + other{"{0} декад"} } hour{ dnam{"цаг"} @@ -256,9 +264,9 @@ mn{ other{"{0} микросекунд"} } millisecond{ - dnam{"милисекунд"} - one{"{0} милисекунд"} - other{"{0} милисекунд"} + dnam{"миллисекунд"} + one{"{0} миллисекунд"} + other{"{0} миллисекунд"} } minute{ dnam{"минут"} @@ -270,7 +278,7 @@ mn{ dnam{"сар"} one{"{0} сар"} other{"{0} сар"} - per{"{0}/сард"} + per{"{0}/сар"} } nanosecond{ dnam{"наносекунд"} @@ -287,35 +295,35 @@ mn{ dnam{"долоо хоног"} one{"{0} долоо хоног"} other{"{0} долоо хоног"} - per{"{0}/7хоногт"} + per{"{0}/долоо хоног"} } year{ dnam{"жил"} one{"{0} жил"} other{"{0} жил"} - per{"{0}/жилд"} + per{"{0}/жил"} } } electric{ ampere{ - dnam{"ампер"} - one{"{0} ампер"} - other{"{0} ампер"} + dnam{"Ампер"} + one{"{0} Ампер"} + other{"{0} Ампер"} } milliampere{ - dnam{"милиампер"} - one{"{0} милиампер"} - other{"{0} милиампер"} + dnam{"миллиАмпер"} + one{"{0} миллиАмпер"} + other{"{0} миллиАмпер"} } ohm{ - dnam{"ом"} - one{"{0} ом"} - other{"{0} ом"} + dnam{"Ом"} + one{"{0} Ом"} + other{"{0} Ом"} } volt{ - dnam{"вольт"} - one{"{0} вольт"} - other{"{0} вольт"} + dnam{"Вольт"} + one{"{0} Вольт"} + other{"{0} Вольт"} } } energy{ @@ -335,14 +343,14 @@ mn{ other{"{0} электрон-Вольт"} } foodcalorie{ - dnam{"Калори"} - one{"{0} Калори"} - other{"{0} Калори"} + dnam{"калори"} + one{"{0} калори"} + other{"{0} калори"} } joule{ - dnam{"жоуль"} - one{"{0} жоуль"} - other{"{0} жоуль"} + dnam{"Жоуль"} + one{"{0} Жоуль"} + other{"{0} Жоуль"} } kilocalorie{ dnam{"килокалори"} @@ -350,14 +358,19 @@ mn{ other{"{0} килокалори"} } kilojoule{ - dnam{"киложоуль"} - one{"{0} киложоуль"} - other{"{0} киложоуль"} + dnam{"килоЖоуль"} + one{"{0} килоЖоуль"} + other{"{0} килоЖоуль"} } kilowatt-hour{ - dnam{"киловатт цаг"} - one{"{0} киловатт цаг"} - other{"{0} киловатт цаг"} + dnam{"килоВатт-цаг"} + one{"{0} килоВатт-цаг"} + other{"{0} килоВатт-цаг"} + } + therm-us{ + dnam{"америк дулаан"} + one{"{0} америк дулаан"} + other{"{0} америк дулаан"} } } force{ @@ -374,24 +387,41 @@ mn{ } frequency{ gigahertz{ - dnam{"гигагерц"} - one{"{0} гигагерц"} - other{"{0} гигагерц"} + dnam{"гигаГерц"} + one{"{0} гигаГерц"} + other{"{0} гигаГерц"} } hertz{ - dnam{"герц"} - one{"{0} герц"} - other{"{0} герц"} + dnam{"Герц"} + one{"{0} Герц"} + other{"{0} Герц"} } kilohertz{ - dnam{"килогерц"} - one{"{0} килогерц"} - other{"{0} килогерц"} + dnam{"килоГерц"} + one{"{0} килоГерц"} + other{"{0} килоГерц"} } megahertz{ - dnam{"мегагерц"} - one{"{0} мегагерц"} - other{"{0} мегагерц"} + dnam{"мегаГерц"} + one{"{0} мегаГерц"} + other{"{0} мегаГерц"} + } + } + graphics{ + dot-per-centimeter{ + dnam{"цэг/см"} + one{"{0} цэг/см"} + other{"{0} цэг/см"} + } + pixel-per-centimeter{ + dnam{"пиксель/см"} + one{"{0} пиксель/см"} + other{"{0} пиксель/см"} + } + pixel-per-inch{ + dnam{"пиксель/инч"} + one{"{0} пиксель/инч"} + other{"{0} пиксель/инч"} } } length{ @@ -404,12 +434,12 @@ mn{ dnam{"сантиметр"} one{"{0} сантиметр"} other{"{0} см"} - per{"{0}/см"} + per{"сантиметр тутамд {0}"} } decimeter{ dnam{"дециметр"} one{"{0} дециметр"} - other{"{0} дм"} + other{"{0} дециметр"} } foot{ dnam{"фут"} @@ -426,8 +456,8 @@ mn{ kilometer{ dnam{"километр"} one{"{0} километр"} - other{"{0} км"} - per{"{0}/км"} + other{"{0} километр"} + per{"километр тутамд {0}"} } light-year{ dnam{"гэрлийн жил"} @@ -438,12 +468,12 @@ mn{ dnam{"метр"} one{"{0} метр"} other{"{0} метр"} - per{"{0}/м"} + per{"метр тутамд {0}"} } micrometer{ dnam{"микрометр"} - one{"{0} µм"} - other{"{0} µм"} + one{"{0} микрометр"} + other{"{0} микрометр"} } mile{ dnam{"миль"} @@ -456,9 +486,9 @@ mn{ other{"{0} скандинавын миль"} } millimeter{ - dnam{"милиметр"} - one{"{0} милиметр"} - other{"{0} мм"} + dnam{"миллиметр"} + one{"{0} миллиметр"} + other{"{0} миллиметр"} } nanometer{ dnam{"нанометр"} @@ -528,34 +558,34 @@ mn{ dnam{"грамм"} one{"{0} грамм"} other{"{0} грамм"} - per{"{0}/гр"} + per{"грамм тутамд {0}"} } kilogram{ - dnam{"килограм"} - one{"{0} килограм"} - other{"{0} килограм"} - per{"{0}/кг"} + dnam{"килограмм"} + one{"{0} килограмм"} + other{"{0} килограмм"} + per{"килограмм тутамд {0}"} } metric-ton{ - dnam{"метрийн тонн"} - one{"{0} метрийн тонн"} - other{"{0} метрийн тонн"} + dnam{"тонн"} + one{"{0} тонн"} + other{"{0} тонн"} } microgram{ - dnam{"микрограм"} - one{"{0} микрограм"} - other{"{0} микрограм"} + dnam{"микрограмм"} + one{"{0} микрограмм"} + other{"{0} микрограмм"} } milligram{ - dnam{"милиграм"} - one{"{0} милиграм"} - other{"{0} милиграм"} + dnam{"миллиграмм"} + one{"{0} миллиграмм"} + other{"{0} миллиграмм"} } ounce{ dnam{"унц"} one{"{0} унц"} other{"{0} унц"} - per{"{0}/унц"} + per{"унц тутамд {0}"} } ounce-troy{ dnam{"трой унц"} @@ -566,7 +596,7 @@ mn{ dnam{"фунт"} one{"{0} фунт"} other{"{0} фунт"} - per{"{0}/фунт"} + per{"фунт тутамд {0}"} } solar-mass{ dnam{"нарны масс"} @@ -574,16 +604,16 @@ mn{ other{"{0} нарны масс"} } ton{ - dnam{"тонн"} - one{"{0} тонн"} - other{"{0} тонн"} + dnam{"америк тонн"} + one{"{0} америк тонн"} + other{"{0} америк тонн"} } } power{ gigawatt{ - dnam{"гигаватт"} - one{"{0} гигаватт"} - other{"{0} гигаватт"} + dnam{"гигаВатт"} + one{"{0} гигаВатт"} + other{"{0} гигаВатт"} } horsepower{ dnam{"морины хүч"} @@ -591,24 +621,24 @@ mn{ other{"{0} морины хүч"} } kilowatt{ - dnam{"киловатт"} - one{"{0} киловатт"} - other{"{0} киловатт"} + dnam{"килоВатт"} + one{"{0} килоВатт"} + other{"{0} килоВатт"} } megawatt{ - dnam{"мегаватт"} - one{"{0} мегаватт"} - other{"{0} мегаватт"} + dnam{"мегаВатт"} + one{"{0} мегаВатт"} + other{"{0} мегаВатт"} } milliwatt{ - dnam{"миливатт"} - one{"{0} миливатт"} - other{"{0} миливатт"} + dnam{"миллиВатт"} + one{"{0} миллиВатт"} + other{"{0} миллиВатт"} } watt{ - dnam{"ватт"} - one{"{0} ватт"} - other{"{0} ватт"} + dnam{"Ватт"} + one{"{0} Ватт"} + other{"{0} Ватт"} } } pressure{ @@ -617,15 +647,20 @@ mn{ one{"{0} уур амьсгал"} other{"{0} уур амьсгал"} } + bar{ + dnam{"бар"} + one{"{0} бар"} + other{"{0} бар"} + } hectopascal{ - dnam{"гектопаскал"} - one{"{0} гектопаскал"} - other{"{0} гектопаскал"} + dnam{"гектоПаскал"} + one{"{0} гектоПаскал"} + other{"{0} гектоПаскал"} } inch-hg{ - dnam{"мөнгөн усны инч"} - one{"{0} мөнгөн усны инч"} - other{"{0} мөнгөн усны инч"} + dnam{"мөнгөн усны баганын инч"} + one{"{0} мөнгөн усны баганын инч"} + other{"{0} мөнгөн усны баганын инч"} } kilopascal{ dnam{"килопаскаль"} @@ -633,46 +668,49 @@ mn{ other{"{0} килопаскаль"} } megapascal{ - dnam{"мегапаскаль"} - one{"{0} мегапаскаль"} - other{"{0} мегапаскаль"} + dnam{"мегаПаскаль"} + one{"{0} мегаПаскаль"} + other{"{0} мегаПаскаль"} } millibar{ - dnam{"милибар"} - one{"{0} милибар"} - other{"{0} милибар"} + dnam{"миллибар"} + one{"{0} миллибар"} + other{"{0} миллибар"} } millimeter-of-mercury{ - dnam{"мөнгөн усны милиметр"} - one{"{0} мөнгөн усны милиметр"} - other{"{0} мөнгөн усны милиметр"} + dnam{"мөнгөн усны баганын миллиметр"} + one{"{0} мөнгөн усны баганын миллиметр"} + other{"{0} мөнгөн усны баганын миллиметр"} + } + pascal{ + dnam{"Паскаль"} + one{"{0} Паскаль"} + other{"{0} Паскаль"} } pound-per-square-inch{ - dnam{"фунт/квадрат инч"} - one{"{0} фунт/кв.инч"} - other{"{0} фунт/кв.инч"} + dnam{"квадрат инч тутамд ногдох фунт"} + one{"квадрат инч тутамд {0} фунт"} + other{"квадрат инч тутамд {0} фунт"} } } speed{ kilometer-per-hour{ - dnam{"километр/цаг"} - one{"{0} километр/цаг"} - other{"{0} километр/цаг"} + dnam{"цагт ногдох километр"} + one{"цагт {0} километр"} + other{"цагт {0} километр"} } knot{ dnam{"зангилаа"} - one{"{0}/зангилаа"} - other{"{0}/зангилаа"} } meter-per-second{ - dnam{"метр/секунд"} - one{"{0} метр/секунд"} - other{"{0} метр/секунд"} + dnam{"секундэд ногдох метр"} + one{"секундэд {0} метр"} + other{"секундэд {0} метр"} } mile-per-hour{ - dnam{"миль/цаг"} - one{"{0} миль/цаг"} - other{"{0} миль/цаг"} + dnam{"цагт ногдох миль"} + one{"цагт {0} миль"} + other{"цагт {0} миль"} } } temperature{ @@ -692,9 +730,9 @@ mn{ other{"{0}°"} } kelvin{ - dnam{"келвиний хэм"} - one{"{0} келвиний хэм"} - other{"{0} келвиний хэм"} + dnam{"Кельвиний хэм"} + one{"{0} Кельвиний хэм"} + other{"{0} Кельвиний хэм"} } } torque{ @@ -727,9 +765,9 @@ mn{ } cubic-centimeter{ dnam{"куб сантиметр"} - one{"{0} cм³"} - other{"{0} cм³"} - per{"{0}/см³"} + one{"{0} куб сантиметр"} + other{"{0} куб сантиметр"} + per{"куб сантиметр тутамд {0}"} } cubic-foot{ dnam{"куб фут"} @@ -743,24 +781,24 @@ mn{ } cubic-kilometer{ dnam{"куб километр"} - one{"{0} км³"} - other{"{0} км³"} + one{"{0} куб километр"} + other{"{0} куб километр"} } cubic-meter{ dnam{"куб метр"} - one{"{0} м³"} - other{"{0} м³"} - per{"{0}/м³"} + one{"{0} куб метр"} + other{"{0} куб метр"} + per{"куб метр тутамд {0}"} } cubic-mile{ dnam{"куб миль"} - one{"{0} ми³"} - other{"{0} ми³"} + one{"{0} куб миль"} + other{"{0} куб миль"} } cubic-yard{ - dnam{"ярд³"} - one{"{0} ярд³"} - other{"{0} ярд³"} + dnam{"куб ярд"} + one{"{0} куб ярд"} + other{"{0} куб ярд"} } cup{ dnam{"аяга"} @@ -768,9 +806,9 @@ mn{ other{"{0} аяга"} } cup-metric{ - dnam{"хэмжүүрийн аяга"} - one{"{0} хэмжүүрийн аяга"} - other{"{0} хэмжүүрийн аяга"} + dnam{"метрийн аяга"} + one{"{0} метрийн аяга"} + other{"{0} метрийн аяга"} } deciliter{ dnam{"децилитр"} @@ -779,25 +817,25 @@ mn{ } fluid-ounce{ dnam{"шингэн унц"} - one{"{0} ш унц"} - other{"{0} ш унц"} - } - fluid-ounce-imperial{ - dnam{"английн шингэн унц"} one{"{0} шингэн унц"} other{"{0} шингэн унц"} } + fluid-ounce-imperial{ + dnam{"анг. шингэн унц"} + one{"{0} анг. шингэн унц"} + other{"{0} анг. шингэн унц"} + } gallon{ dnam{"галлон"} one{"{0} галлон"} other{"{0} галлон"} - per{"{0}/галл."} + per{"галлон тутамд {0}"} } gallon-imperial{ - dnam{"ИБ галлон"} - one{"{0} ИБ галлон"} - other{"{0} ИБ галлон"} - per{"{0}/ИБ галлон"} + dnam{"анг. галлон"} + one{"{0} анг. галлон"} + other{"{0} анг. галлон"} + per{"анг. галлон тутамд {0}"} } hectoliter{ dnam{"хектолитр"} @@ -808,7 +846,7 @@ mn{ dnam{"литр"} one{"{0} литр"} other{"{0} литр"} - per{"{0}/л"} + per{"литр тутамд {0}"} } megaliter{ dnam{"мегалитр"} @@ -816,19 +854,19 @@ mn{ other{"{0} мегалитр"} } milliliter{ - dnam{"милилитр"} - one{"{0} милилитр"} - other{"{0} милилитр"} + dnam{"миллилитр"} + one{"{0} миллилитр"} + other{"{0} миллилитр"} } pint{ - dnam{"пайнт"} - one{"{0} пайнт"} - other{"{0} пайнт"} + dnam{"пинт"} + one{"{0} пинт"} + other{"{0} пинт"} } pint-metric{ - dnam{"хэмжүүрийн пинт"} - one{"{0} хэмж. пинт"} - other{"{0} хэмж. пинт"} + dnam{"метрийн пинт"} + one{"{0} метрийн пинт"} + other{"{0} метрийн пинт"} } quart{ dnam{"кварц"} @@ -912,17 +950,17 @@ mn{ } } coordinate{ - dnam{"чиглэл"} - east{"{0}Зүүн"} - north{"{0}Умард"} - south{"{0}Өмнөд"} - west{"{0}Өрнөд"} + dnam{"зүг"} + east{"{0} з.у"} + north{"{0} х.ө"} + south{"{0} ө.ө"} + west{"{0} б.у"} } duration{ day{ - dnam{"өдөр"} - one{"{0} өдөр"} - other{"{0} өдөр"} + dnam{"хоног"} + one{"{0} хоног"} + other{"{0} хоног"} } hour{ dnam{"цаг"} @@ -941,8 +979,8 @@ mn{ } month{ dnam{"сар"} - one{"{0} сар"} - other{"{0} сар"} + one{"{0}с"} + other{"{0}с"} } second{ dnam{"сек"} @@ -950,14 +988,14 @@ mn{ other{"{0} сек"} } week{ - dnam{"дол/хон"} - one{"{0} д/х"} - other{"{0} д/х"} + dnam{"д.х"} + one{"{0} д.х"} + other{"{0} д.х"} } year{ dnam{"жил"} - one{"{0} жил"} - other{"{0} жил"} + one{"{0}ж"} + other{"{0}ж"} } } length{ @@ -1143,9 +1181,9 @@ mn{ other{"{0} акр"} } dunam{ - dnam{"dunams"} - one{"{0} dunam"} - other{"{0} dunam"} + dnam{"дунам"} + one{"{0} дунам"} + other{"{0} дунам"} } hectare{ dnam{"гектар"} @@ -1199,18 +1237,18 @@ mn{ concentr{ karat{ dnam{"карат"} - one{"{0} кт"} - other{"{0} кт"} + one{"{0} кар"} + other{"{0} кар"} } milligram-per-deciliter{ - dnam{"мг/дЛ"} - one{"{0} мг/дЛ"} - other{"{0} мг/дЛ"} + dnam{"мг/дл"} + one{"{0} мг/дл"} + other{"{0} мг/дл"} } millimole-per-liter{ - dnam{"ммол/л"} - one{"{0} ммол/л"} - other{"{0} ммол/л"} + dnam{"миллимоль/литр"} + one{"{0} ммоль/л"} + other{"{0} ммоль/л"} } mole{ dnam{"моль"} @@ -1218,9 +1256,9 @@ mn{ other{"{0} моль"} } part-per-million{ - dnam{"хэсэг/саяд"} - one{"{0} ppm"} - other{"{0} ppm"} + dnam{"хувь/сая"} + one{"{0}x10⁻⁶"} + other{"{0}x10⁻⁶"} } percent{ dnam{"хувь"} @@ -1228,14 +1266,12 @@ mn{ other{"{0}%"} } permille{ - dnam{"‰"} + dnam{"мянганы хувь"} one{"{0}‰"} other{"{0}‰"} } permyriad{ - dnam{"permyriad"} - one{"{0}‱"} - other{"{0}‱"} + dnam{"арван мянганы хувь"} } } consumption{ @@ -1250,22 +1286,22 @@ mn{ other{"{0} л/км"} } mile-per-gallon{ - dnam{"миль/галл."} - one{"миль/галл."} + dnam{"миль/гал"} + one{"миль/гал"} other{"{0} ми/гал"} } mile-per-gallon-imperial{ - dnam{"миль/ИБгаллон"} - one{"{0} mpg Imp."} - other{"{0} mpg Imp."} + dnam{"миль/анг. гал"} + one{"{0} ми/анг. гал"} + other{"{0} ми/анг. гал"} } } coordinate{ - dnam{"чиглэл"} - east{"{0}Зүүн"} - north{"{0}Умард"} - south{"{0}Өмнөд"} - west{"{0}Өрнөд"} + dnam{"зүг"} + east{"{0} з.у"} + north{"{0} х.ө"} + south{"{0} ө.ө"} + west{"{0} б.у"} } digital{ bit{ @@ -1327,14 +1363,19 @@ mn{ duration{ century{ dnam{"зуун"} - one{"{0}зуун"} - other{"{0}зуун"} + one{"{0} зуун"} + other{"{0} зуун"} } day{ - dnam{"өдөр"} - one{"{0} өдөр"} - other{"{0} өдөр"} - per{"{0}/өдөрт"} + dnam{"хоног"} + one{"{0} хоног"} + other{"{0} хоног"} + per{"{0}/хоног"} + } + decade{ + dnam{"декад"} + one{"{0} декад"} + other{"{0} декад"} } hour{ dnam{"цаг"} @@ -1348,7 +1389,7 @@ mn{ other{"{0} μсек"} } millisecond{ - dnam{"милисек"} + dnam{"миллисекунд"} one{"{0} мс"} other{"{0} мс"} } @@ -1362,7 +1403,7 @@ mn{ dnam{"сар"} one{"{0} сар"} other{"{0} сар"} - per{"{0}/сард"} + per{"{0}/сар"} } nanosecond{ dnam{"наносек"} @@ -1376,36 +1417,36 @@ mn{ per{"{0}/сек"} } week{ - dnam{"дол/хон"} - one{"{0} дол/хон"} - other{"{0} дол/хон"} - per{"{0}/7хоногт"} + dnam{"долоо хоног"} + one{"{0} д.х"} + other{"{0} д.х"} + per{"{0}/д.х"} } year{ dnam{"жил"} one{"{0} жил"} other{"{0} жил"} - per{"{0}/жилд"} + per{"{0}/ж"} } } electric{ ampere{ - dnam{"амп"} + dnam{"А"} one{"{0} А"} other{"{0} A"} } milliampere{ - dnam{"милиамп"} + dnam{"мА"} one{"{0} мА"} other{"{0} мА"} } ohm{ - dnam{"ом"} + dnam{"Ω"} one{"{0} Ω"} other{"{0} Ω"} } volt{ - dnam{"вольт"} + dnam{"В"} one{"{0} В"} other{"{0} В"} } @@ -1413,8 +1454,6 @@ mn{ energy{ british-thermal-unit{ dnam{"BTU"} - one{"{0} Btu"} - other{"{0} Btu"} } calorie{ dnam{"кал"} @@ -1427,14 +1466,14 @@ mn{ other{"{0} эВ"} } foodcalorie{ - dnam{"Кал"} - one{"{0} Кал"} - other{"{0} Кал"} + dnam{"кал"} + one{"{0} кал"} + other{"{0} кал"} } joule{ - dnam{"жоуль"} - one{"{0} жо"} - other{"{0} жо"} + dnam{"Жоуль"} + one{"{0} Ж"} + other{"{0} Ж"} } kilocalorie{ dnam{"ккал"} @@ -1442,14 +1481,19 @@ mn{ other{"{0} ккал"} } kilojoule{ - dnam{"киложоуль"} - one{"{0} кж"} - other{"{0} кж"} + dnam{"килоЖоуль"} + one{"{0} кЖ"} + other{"{0} кЖ"} } kilowatt-hour{ - dnam{"кВ-цаг"} - one{"{0} кВц"} - other{"{0} кВц"} + dnam{"кВт-цаг"} + one{"{0} кВтц"} + other{"{0} кВтц"} + } + therm-us{ + dnam{"ам.дулаан"} + one{"{0} ам.дулаан"} + other{"{0} ам.дулаан"} } } force{ @@ -1460,8 +1504,6 @@ mn{ } pound-force{ dnam{"фунт хүч"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1486,6 +1528,13 @@ mn{ other{"{0} МГц"} } } + graphics{ + dot-per-centimeter{ + dnam{"цэг/см"} + one{"{0} цэг/см"} + other{"{0} цэг/см"} + } + } length{ astronomical-unit{ dnam{"сн"} @@ -1527,7 +1576,7 @@ mn{ other{"{0} гэрл.жил"} } meter{ - dnam{"метр"} + dnam{"м"} one{"{0} м"} other{"{0} м"} per{"{0}/м"} @@ -1558,9 +1607,9 @@ mn{ other{"{0} нм"} } nautical-mile{ - dnam{"дмиль"} - one{"{0} дмиль"} - other{"{0} дмиль"} + dnam{"дми"} + one{"{0} дми"} + other{"{0} дми"} } parsec{ dnam{"парсек"} @@ -1579,8 +1628,6 @@ mn{ } solar-radius{ dnam{"нарны радиус"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"ярд"} @@ -1596,15 +1643,13 @@ mn{ } solar-luminosity{ dnam{"нарны гэрлийн урсгал"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ carat{ dnam{"карат"} - one{"{0} крт"} - other{"{0} крт"} + one{"{0} кар"} + other{"{0} кар"} } dalton{ dnam{"дальтон"} @@ -1613,8 +1658,6 @@ mn{ } earth-mass{ dnam{"Дэлхийн масс"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"грамм"} @@ -1651,8 +1694,8 @@ mn{ } ounce-troy{ dnam{"трой унц"} - one{"{0} т унц"} - other{"{0} т унц"} + one{"{0} тр.унц"} + other{"{0} тр.унц"} } pound{ dnam{"фунт"} @@ -1662,20 +1705,18 @@ mn{ } solar-mass{ dnam{"нарны масс"} - one{"{0} M☉"} - other{"{0} M☉"} } ton{ - dnam{"тонн"} - one{"{0} тн"} - other{"{0} тн"} + dnam{"америк тонн"} + one{"{0} ам. тн"} + other{"{0} ам. тн"} } } power{ gigawatt{ - dnam{"ГВ"} - one{"{0} ГВ"} - other{"{0} ГВ"} + dnam{"ГВт"} + one{"{0} ГВт"} + other{"{0} ГВт"} } horsepower{ dnam{"мх"} @@ -1698,16 +1739,21 @@ mn{ other{"{0} мВт"} } watt{ - dnam{"ватт"} + dnam{"Ватт"} one{"{0} Вт"} other{"{0} Вт"} } } pressure{ atmosphere{ - dnam{"atm"} - one{"{0} atm"} - other{"{0} atm"} + dnam{"атм"} + one{"{0} атм"} + other{"{0} атм"} + } + bar{ + dnam{"бар"} + one{"{0} бар"} + other{"{0} бар"} } hectopascal{ dnam{"гПа"} @@ -1715,9 +1761,9 @@ mn{ other{"{0} гПа"} } inch-hg{ - dnam{"МөУс инч"} - one{"{0} МөУсИн"} - other{"{0} МөУсИн"} + dnam{"инч.муб"} + one{"{0} инч.муб"} + other{"{0} инч.муб"} } kilopascal{ dnam{"кПа"} @@ -1735,14 +1781,19 @@ mn{ other{"{0} мбар"} } millimeter-of-mercury{ - dnam{"МөУс мм"} - one{"{0} МөУс мм"} - other{"{0} МөУс мм"} + dnam{"мм.муб"} + one{"{0} мм.муб"} + other{"{0} мм.муб"} + } + pascal{ + dnam{"Па"} + one{"{0} Па"} + other{"{0} Па"} } pound-per-square-inch{ - dnam{"фунт/кв.инч"} - one{"{0} ф/инч²"} - other{"{0} ф/инч²"} + dnam{"фунт/инч²"} + one{"{0} фунт/инч²"} + other{"{0} фунт/инч²"} } } speed{ @@ -1752,9 +1803,9 @@ mn{ other{"{0} км/ц"} } knot{ - dnam{"зангилаа"} - one{"{0} зангилаа"} - other{"{0} зангилаа"} + dnam{"занг."} + one{"{0} занг."} + other{"{0} занг."} } meter-per-second{ dnam{"метр/сек"} @@ -1792,13 +1843,6 @@ mn{ torque{ newton-meter{ dnam{"Н*м"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} } } volume{ @@ -1813,9 +1857,9 @@ mn{ other{"{0} баррель"} } centiliter{ - dnam{"цЛ"} - one{"{0} цЛ"} - other{"{0} цЛ"} + dnam{"цл"} + one{"{0} цл"} + other{"{0} цл"} } cubic-centimeter{ dnam{"см³"} @@ -1860,41 +1904,41 @@ mn{ other{"{0} а"} } cup-metric{ - dnam{"хэмжүүрийн аяга"} - one{"{0} mc"} - other{"{0} mc"} + dnam{"м.аяга"} + one{"{0} м.аяга"} + other{"{0} м.аяга"} } deciliter{ - dnam{"дЛ"} - one{"{0} дЛ"} - other{"{0} дЛ"} + dnam{"дл"} + one{"{0} дл"} + other{"{0} дл"} } fluid-ounce{ - dnam{"ш унц"} - one{"{0} ш унц"} - other{"{0} ш унц"} + dnam{"ш.унц"} + one{"{0} ш.унц"} + other{"{0} ш.унц"} } fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} шингэн унц"} - other{"{0} шингэн унц"} + dnam{"анг. ш.унц"} + one{"{0} анг. ш.унц"} + other{"{0} анг. ш.унц"} } gallon{ - dnam{"галл."} - one{"{0} галл."} - other{"{0} галл."} - per{"{0}/АНУ галлон"} + dnam{"гал"} + one{"{0} гал"} + other{"{0} гал"} + per{"{0}/ам. гал"} } gallon-imperial{ - dnam{"ИБ галлон"} - one{"{0} ИБ галлон"} - other{"{0} ИБ галлон"} - per{"{0}/ИБ галлон"} + dnam{"анг. гал"} + one{"{0} анг. гал"} + other{"{0} анг. гал"} + per{"{0}/анг. гал"} } hectoliter{ - dnam{"хЛ"} - one{"{0} хЛ"} - other{"{0} хЛ"} + dnam{"хл"} + one{"{0} хл"} + other{"{0} хл"} } liter{ dnam{"литр"} @@ -1903,24 +1947,24 @@ mn{ per{"{0}/л"} } megaliter{ - dnam{"МЛ"} - one{"{0} МЛ"} - other{"{0} МЛ"} + dnam{"Мл"} + one{"{0} Мл"} + other{"{0} Мл"} } milliliter{ - dnam{"мЛ"} - one{"{0} мЛ"} - other{"{0} мЛ"} + dnam{"мл"} + one{"{0} мл"} + other{"{0} мл"} } pint{ - dnam{"пайнт"} - one{"{0} пнт"} - other{"{0} пнт"} + dnam{"пинт"} + one{"{0} пт"} + other{"{0} пт"} } pint-metric{ - dnam{"хэмж. пинт"} - one{"{0} mpt"} - other{"{0} mpt"} + dnam{"мпт"} + one{"{0} мпт"} + other{"{0} мпт"} } quart{ dnam{"крц"} @@ -1928,14 +1972,14 @@ mn{ other{"{0} крц"} } tablespoon{ - dnam{"х/халбага"} - one{"{0} х/халбага"} - other{"{0} х/халбага"} + dnam{"х.х"} + one{"{0} х.х"} + other{"{0} х.х"} } teaspoon{ - dnam{"ц/халбага"} - one{"{0} ц/халбага"} - other{"{0} ц/халбага"} + dnam{"ц.х"} + one{"{0} ц.х"} + other{"{0} ц.х"} } } } diff --git a/source/data/unit/mr.txt b/source/data/unit/mr.txt index 23c45fc..5d321fc 100644 --- a/source/data/unit/mr.txt +++ b/source/data/unit/mr.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mr{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -247,6 +247,11 @@ mr{ other{"{0} दिवस"} per{"{0} दर दिवशी"} } + decade{ + dnam{"दशके"} + one{"{0} दशक"} + other{"{0} दशके"} + } hour{ dnam{"तास"} one{"{0} तास"} @@ -397,6 +402,43 @@ mr{ other{"{0} मेगाहर्ट्झ"} } } + graphics{ + dot-per-centimeter{ + dnam{"प्रति सेंटीमीटर बिंदू"} + one{"{0} प्रति सेंटीमीटर बिंदू"} + other{"{0} प्रति सेंटीमीटर बिंदू"} + } + dot-per-inch{ + dnam{"प्रति इंच बिंदू"} + one{"{0} प्रति इंच बिंदू"} + other{"{0} प्रति इंच बिंदू"} + } + em{ + dnam{"टायपोग्राफिक em"} + one{"{0} em"} + other{"{0} ems"} + } + megapixel{ + dnam{"मेगापिक्सेल्स"} + one{"{0} मेगापिक्सेल"} + other{"{0} मेगापिक्सेल्स"} + } + pixel{ + dnam{"पिक्सेल्स"} + one{"{0} पिक्सेल"} + other{"{0} पिक्सेल्स"} + } + pixel-per-centimeter{ + dnam{"पिक्सेल्स प्रति सेंटीमीटर"} + one{"{0} पिक्सेल प्रति सेंटीमीटर"} + other{"{0} पिक्सेल्स प्रति सेंटीमीटर"} + } + pixel-per-inch{ + dnam{"पिक्सेल्स प्रति इंच"} + one{"{0} पिक्सेल प्रति इंच"} + other{"{0} पिक्सेल्स प्रति इंच"} + } + } length{ astronomical-unit{ dnam{"खगोलीय एकके"} @@ -949,6 +991,11 @@ mr{ other{"{0}ता"} per{"{0}प्रता"} } + microsecond{ + dnam{"μs"} + one{"{0} μs"} + other{"{0} μs"} + } millisecond{ dnam{"मिलिसेकंद"} one{"{0} मिलिसे"} @@ -999,6 +1046,8 @@ mr{ } decimeter{ dnam{"डेमी"} + one{"{0} dm"} + other{"{0} dm"} } foot{ dnam{"फूट"} @@ -1031,12 +1080,19 @@ mr{ } micrometer{ dnam{"मायक्रोमीटर"} + one{"{0} µm"} + other{"{0} µm"} } mile{ dnam{"मैल"} one{"{0}मैल"} other{"{0}मैल"} } + mile-scandinavian{ + dnam{"smi"} + one{"{0} smi"} + other{"{0} smi"} + } millimeter{ dnam{"मिमी"} one{"{0}मिमी"} @@ -1049,6 +1105,8 @@ mr{ } parsec{ dnam{"पार्सेक"} + one{"{0} pc"} + other{"{0} pc"} } picometer{ dnam{"पिमी"} @@ -1083,11 +1141,13 @@ mr{ dnam{"औंस"} one{"{0}औंस"} other{"{0}औंस"} + per{"{0}/oz"} } pound{ dnam{"पाउंड"} one{"{0}#"} other{"{0}#"} + per{"{0}/lb"} } stone{ dnam{"स्टोन"} @@ -1116,6 +1176,7 @@ mr{ } pressure{ hectopascal{ + dnam{"hPa"} one{"{0}हेक्टोपा"} other{"{0}हेक्टोपा"} } @@ -1130,10 +1191,12 @@ mr{ other{"{0}मिबा"} } millimeter-of-mercury{ + dnam{"mm Hg"} one{"{0}mmHg"} other{"{0}mmHg"} } pound-per-square-inch{ + dnam{"psi"} one{"{0}psi"} other{"{0}psi"} } @@ -1166,8 +1229,15 @@ mr{ one{"{0}°फॅ"} other{"{0}°फॅ"} } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ dnam{"केल्व्हिन"} + one{"{0} K"} + other{"{0} K"} } } volume{ @@ -1324,8 +1394,6 @@ mr{ } permyriad{ dnam{"पर्मिरेड"} - one{"{0}‱"} - other{"{0}‱"} } } consumption{ @@ -1426,6 +1494,11 @@ mr{ other{"{0} दिवस"} per{"{0}/दि"} } + decade{ + dnam{"द"} + one{"{0} द"} + other{"{0} द"} + } hour{ dnam{"तास"} one{"{0} ता"} @@ -1513,8 +1586,6 @@ mr{ } electronvolt{ dnam{"इलेक्ट्रॉनव्होल्ट"} - one{"{0} eV"} - other{"{0} eV"} } foodcalorie{ dnam{"Cal"} @@ -1545,13 +1616,9 @@ mr{ force{ newton{ dnam{"न्यूटन"} - one{"{0} N"} - other{"{0} N"} } pound-force{ dnam{"पाउंड-फोर्स"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1576,6 +1643,38 @@ mr{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"प्र सें बिं"} + one{"{0} प्र सें बिं"} + other{"{0} प्र सें बिं"} + } + dot-per-inch{ + dnam{"प्र इं बिं"} + one{"{0} प्र इं बिं"} + other{"{0} प्र इं बिं"} + } + megapixel{ + dnam{"मे पि"} + one{"{0} मे पि"} + other{"{0} मे पि"} + } + pixel{ + dnam{"पिक्सेल्स"} + one{"{0} पि"} + other{"{0} पि"} + } + pixel-per-centimeter{ + dnam{"पि प्र सेंमी"} + one{"{0} पि प्र सेंमी"} + other{"{0} पि प्र सेंमी"} + } + pixel-per-inch{ + dnam{"पि प्र इं"} + one{"{0} पि प्र इं"} + other{"{0} पि प्र इं"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -1669,8 +1768,6 @@ mr{ } solar-radius{ dnam{"सौर त्रिज्या"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"यार्ड"} @@ -1686,8 +1783,6 @@ mr{ } solar-luminosity{ dnam{"सौर प्रकाश"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ @@ -1703,8 +1798,6 @@ mr{ } earth-mass{ dnam{"पृथ्वी द्रव्यमान"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"ग्रॅम"} @@ -1752,8 +1845,6 @@ mr{ } solar-mass{ dnam{"सौर द्रव्यमान"} - one{"{0} M☉"} - other{"{0} M☉"} } stone{ dnam{"स्टोन"} @@ -1814,15 +1905,8 @@ mr{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } megapascal{ dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} } millibar{ dnam{"मिलिबार"} @@ -1884,18 +1968,6 @@ mr{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ac ft"} @@ -1904,8 +1976,6 @@ mr{ } barrel{ dnam{"बॅरल"} - one{"{0} bbl"} - other{"{0} bbl"} } centiliter{ dnam{"cL"} @@ -1971,8 +2041,6 @@ mr{ } fluid-ounce-imperial{ dnam{"इम्पे. फ्लु औं"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} } gallon{ dnam{"gal"} diff --git a/source/data/unit/ms.txt b/source/data/unit/ms.txt index e41f6d5..434b14f 100644 --- a/source/data/unit/ms.txt +++ b/source/data/unit/ms.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ms{ - Version{"2.1.49.2"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -45,10 +45,6 @@ ms{ dnam{"ekar"} other{"{0} ekar"} } - dunam{ - dnam{"dunam"} - other{"{0} dunam"} - } hectare{ dnam{"hektar"} other{"{0} hektar"} @@ -103,10 +99,6 @@ ms{ dnam{"milimol setiap liter"} other{"{0} milimol setiap liter"} } - mole{ - dnam{"mol"} - other{"{0} mol"} - } part-per-million{ dnam{"bahagian setiap juta"} other{"{0} bahagian setiap juta"} @@ -205,6 +197,10 @@ ms{ other{"{0} hari"} per{"{0} setiap hari"} } + decade{ + dnam{"dekad"} + other{"{0} dekad"} + } hour{ dnam{"jam"} other{"{0} jam"} @@ -299,6 +295,10 @@ ms{ dnam{"kilowatt jam"} other{"{0} kilowatt jam"} } + therm-us{ + dnam{"terma US"} + other{"{0} terma US"} + } } force{ newton{ @@ -328,6 +328,36 @@ ms{ other{"{0} megahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"bintik sesentimeter"} + other{"{0} bintik sesentimeter"} + } + dot-per-inch{ + dnam{"bintik seinci"} + other{"{0} bintik seinci"} + } + em{ + dnam{"em tipografi"} + other{"{0} ems"} + } + megapixel{ + dnam{"megapiksel"} + other{"{0} megapiksel"} + } + pixel{ + dnam{"piksel"} + other{"{0} piksel"} + } + pixel-per-centimeter{ + dnam{"piksel sesentimeter"} + other{"{0} piksel sesentimeter"} + } + pixel-per-inch{ + dnam{"piksel seinci"} + other{"{0} piksel seinci"} + } + } length{ astronomical-unit{ dnam{"unit astronomi"} @@ -484,6 +514,7 @@ ms{ } stone{ dnam{"stone"} + other{"{0} st"} } ton{ dnam{"tan"} @@ -545,6 +576,10 @@ ms{ dnam{"milimeter raksa"} other{"{0} milimeter raksa"} } + pascal{ + dnam{"Pascal"} + other{"{0} Pascal"} + } pound-per-square-inch{ dnam{"paun seinci persegi"} other{"{0} paun seinci persegi"} @@ -655,10 +690,6 @@ ms{ dnam{"auns cecair"} other{"{0} auns cecair"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gelen"} other{"{0} gelen"} @@ -730,12 +761,18 @@ ms{ acre{ other{"{0} ekar"} } - dunam{ - other{"{0} dunam"} + hectare{ + other{"{0} ha"} } square-foot{ other{"{0} ka²"} } + square-kilometer{ + other{"{0} km²"} + } + square-meter{ + other{"{0} m²"} + } square-mile{ other{"{0} bt²"} } @@ -779,6 +816,7 @@ ms{ } microsecond{ dnam{"μsaat"} + other{"{0} μs"} } millisecond{ dnam{"milisaat"} @@ -787,15 +825,20 @@ ms{ minute{ dnam{"minit"} other{"{0} min"} + per{"{0}/min"} } month{ dnam{"bulan"} other{"{0} bln"} per{"{0}/bln"} } + nanosecond{ + other{"{0} ns"} + } second{ dnam{"saat"} other{"{0} s"} + per{"{0}/s"} } week{ dnam{"minggu"} @@ -809,9 +852,18 @@ ms{ } } length{ + astronomical-unit{ + dnam{"au"} + other{"{0} au"} + } centimeter{ dnam{"sentimeter"} other{"{0} cm"} + per{"{0}/cm"} + } + decimeter{ + dnam{"dm"} + other{"{0} dm"} } fathom{ dnam{"fathom"} @@ -824,13 +876,16 @@ ms{ } furlong{ dnam{"furlong"} + other{"{0} fur"} } inch{ other{"{0}\u0022"} + per{"{0}/in"} } kilometer{ dnam{"kilometer"} other{"{0} km"} + per{"{0}/km"} } light-year{ dnam{"thn cahaya"} @@ -839,23 +894,37 @@ ms{ meter{ dnam{"meter"} other{"{0} m"} + per{"{0}/m"} + } + micrometer{ + other{"{0} µm"} } mile{ dnam{"bt"} other{"{0} bt"} } + mile-scandinavian{ + dnam{"smi"} + other{"{0} smi"} + } millimeter{ dnam{"mm"} other{"{0} mm"} } + nanometer{ + dnam{"nm"} + other{"{0} nm"} + } nautical-mile{ dnam{"btn"} other{"{0} btn"} } parsec{ dnam{"parsek"} + other{"{0} pc"} } picometer{ + dnam{"pm"} other{"{0} pm"} } point{ @@ -870,45 +939,95 @@ ms{ mass{ carat{ dnam{"karat"} + other{"{0} CD"} } gram{ dnam{"gram"} other{"{0} g"} + per{"{0}/g"} } kilogram{ dnam{"kg"} other{"{0} kg"} + per{"{0}/kg"} + } + metric-ton{ + dnam{"t"} + other{"{0} t"} + } + microgram{ + dnam{"µg"} + other{"{0} µg"} + } + milligram{ + dnam{"mg"} + other{"{0} mg"} } ounce{ dnam{"auns"} other{"{0} auns"} + per{"{0}/oz"} + } + ounce-troy{ + dnam{"oz t"} + other{"{0} oz t"} } pound{ + dnam{"lb"} other{"{0} paun"} + per{"{0}/lb"} } stone{ dnam{"stone"} + other{"{0} st"} } ton{ dnam{"tan"} + other{"{0} tn"} + } + } + power{ + horsepower{ + other{"{0} hp"} + } + kilowatt{ + other{"{0} kW"} + } + watt{ + other{"{0} W"} } } pressure{ hectopascal{ + dnam{"hPa"} other{"{0} hPa"} } inch-hg{ + dnam{"inHg"} other{"{0} inHg"} } millibar{ + dnam{"mbar"} other{"{0} mb"} } + millimeter-of-mercury{ + dnam{"mm Hg"} + other{"{0} mm Hg"} + } + pound-per-square-inch{ + dnam{"psi"} + other{"{0} psi"} + } } speed{ kilometer-per-hour{ dnam{"km/j"} other{"{0} kmj"} } + knot{ + dnam{"kn"} + other{"{0} kn"} + } meter-per-second{ other{"{0} m/s"} } @@ -925,8 +1044,19 @@ ms{ fahrenheit{ other{"{0}°F"} } + generic{ + dnam{"°"} + other{"{0}°"} + } + kelvin{ + dnam{"K"} + other{"{0} K"} + } } volume{ + cubic-kilometer{ + other{"{0} km³"} + } cubic-mile{ other{"{0} bt³"} } @@ -974,10 +1104,6 @@ ms{ dnam{"ekar"} other{"{0} ekar"} } - dunam{ - dnam{"dunam"} - other{"{0} dunam"} - } hectare{ dnam{"hektar"} other{"{0} ha"} @@ -1018,6 +1144,7 @@ ms{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1032,10 +1159,6 @@ ms{ dnam{"mmol/L"} other{"{0} mmol/L"} } - mole{ - dnam{"mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ppm"} other{"{0} ppm"} @@ -1048,10 +1171,6 @@ ms{ dnam{"per seribu"} other{"{0}‰"} } - permyriad{ - dnam{"‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -1134,6 +1253,10 @@ ms{ other{"{0} hari"} per{"{0}/h"} } + decade{ + dnam{"dkd"} + other{"{0} dkd"} + } hour{ dnam{"jam"} other{"{0} j"} @@ -1204,10 +1327,6 @@ ms{ dnam{"kal"} other{"{0} kal"} } - electronvolt{ - dnam{"eV"} - other{"{0} eV"} - } foodcalorie{ dnam{"Kal"} other{"{0} Kal"} @@ -1228,15 +1347,9 @@ ms{ dnam{"kWh"} other{"{0} kWh"} } - } - force{ - newton{ - dnam{"N"} - other{"{0} N"} - } - pound-force{ - dnam{"lbf"} - other{"{0} lbf"} + therm-us{ + dnam{"terma US"} + other{"{0} terma US"} } } frequency{ @@ -1257,6 +1370,36 @@ ms{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + other{"{0} em"} + } + megapixel{ + dnam{"MP"} + other{"{0} MP"} + } + pixel{ + dnam{"px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -1282,6 +1425,7 @@ ms{ } furlong{ dnam{"furlong"} + other{"{0} fur"} } inch{ dnam{"inci"} @@ -1338,10 +1482,6 @@ ms{ dnam{"mata"} other{"{0} mt"} } - solar-radius{ - dnam{"R☉"} - other{"{0} R☉"} - } yard{ dnam{"ela"} other{"{0} ela"} @@ -1354,7 +1494,6 @@ ms{ } solar-luminosity{ dnam{"lumonisiti suria"} - other{"{0} L☉"} } } mass{ @@ -1362,14 +1501,6 @@ ms{ dnam{"karat"} other{"{0} CD"} } - dalton{ - dnam{"Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"gram"} other{"{0} g"} @@ -1406,12 +1537,9 @@ ms{ other{"{0} lb"} per{"{0}/lb"} } - solar-mass{ - dnam{"M☉"} - other{"{0} M☉"} - } stone{ dnam{"stone"} + other{"{0} st"} } ton{ dnam{"tan"} @@ -1449,6 +1577,10 @@ ms{ dnam{"atm"} other{"{0} atm"} } + bar{ + dnam{"bar"} + other{"{0} bar"} + } hectopascal{ dnam{"hPa"} other{"{0} hPa"} @@ -1457,14 +1589,6 @@ ms{ dnam{"inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} other{"{0} mbar"} @@ -1473,6 +1597,10 @@ ms{ dnam{"mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} other{"{0} psi"} @@ -1519,20 +1647,12 @@ ms{ dnam{"Nm"} other{"{0} Nm"} } - pound-foot{ - dnam{"lbf⋅ft"} - other{"{0} lbf⋅ft"} - } } volume{ acre-foot{ dnam{"ekar ka"} other{"{0} ekar ka"} } - barrel{ - dnam{"bbl"} - other{"{0} bbl"} - } centiliter{ dnam{"cL"} other{"{0} cL"} @@ -1583,10 +1703,6 @@ ms{ dnam{"fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} other{"{0} gal"} diff --git a/source/data/unit/mt.txt b/source/data/unit/mt.txt index d0ffffa..2964ffa 100644 --- a/source/data/unit/mt.txt +++ b/source/data/unit/mt.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mt{ - Version{"2.1.49.82"} + Version{"36"} units{ angle{ arc-minute{ diff --git a/source/data/unit/mua.txt b/source/data/unit/mua.txt index 1fbb272..a257b40 100644 --- a/source/data/unit/mua.txt +++ b/source/data/unit/mua.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mua{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/my.txt b/source/data/unit/my.txt index dab51d3..1ee5d78 100644 --- a/source/data/unit/my.txt +++ b/source/data/unit/my.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License my{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -205,6 +205,10 @@ my{ other{"{0} ရက်"} per{"တစ်ရက်လျှင် {0}"} } + decade{ + dnam{"ဆယ်စုနှစ်"} + other{"{0} ဆယ်စုနှစ်"} + } hour{ dnam{"နာရီ"} other{"{0} နာရီ"} @@ -299,6 +303,10 @@ my{ dnam{"ကီလိုဝပ်-နာရီ"} other{"{0} ကီလိုဝပ်-နာရီ"} } + therm-us{ + dnam{"ယူအက်စ် သာမယ်လ်"} + other{"{0} ယူအက်စ် သာမယ်လ်"} + } } force{ newton{ @@ -510,6 +518,10 @@ my{ dnam{"ကမ္ဘာ့လေထု"} other{"{0} ကမ္ဘာ့လေထု"} } + bar{ + dnam{"bars"} + other{"{0} bars"} + } hectopascal{ dnam{"ဟက်တိုပါစကယ်"} other{"{0} ဟက်တိုပါစကယ်"} @@ -1096,6 +1108,10 @@ my{ other{"{0} ရက်"} per{"{0}/ ရက်"} } + decade{ + dnam{"ဆယ်စု"} + other{"{0} ဆယ်စု"} + } hour{ dnam{"နာရီ"} other{"{0} နာရီ"} @@ -1190,11 +1206,14 @@ my{ dnam{"ကီလိုဝပ်-နာရီ"} other{"{0} kWh"} } + therm-us{ + dnam{"ယူအက်စ် သာမယ်လ်"} + other{"{0} ယူအက်စပ် သာမယ်လ်"} + } } force{ newton{ dnam{"နယူတန်"} - other{"{0} N"} } pound-force{ dnam{"lbf"} @@ -1309,7 +1328,6 @@ my{ } solar-luminosity{ dnam{"ဆိုလာ လူမီနိုစီးတီးစ်"} - other{"{0} L☉"} } } mass{ @@ -1401,6 +1419,9 @@ my{ dnam{"atm"} other{"{0} atm"} } + bar{ + other{"{0} bars"} + } hectopascal{ dnam{"hPa"} other{"{0} hPa"} diff --git a/source/data/unit/mzn.txt b/source/data/unit/mzn.txt index f2a6642..9686df0 100644 --- a/source/data/unit/mzn.txt +++ b/source/data/unit/mzn.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mzn{ - Version{"2.1.47.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/naq.txt b/source/data/unit/naq.txt index 064d1bc..efcad57 100644 --- a/source/data/unit/naq.txt +++ b/source/data/unit/naq.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License naq{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/nb.txt b/source/data/unit/nb.txt index eaac492..bdbf6fc 100644 --- a/source/data/unit/nb.txt +++ b/source/data/unit/nb.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nb{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -53,11 +53,6 @@ nb{ one{"{0} acre"} other{"{0} acre"} } - dunam{ - dnam{"dunam"} - one{"{0} dunam"} - other{"{0} dunam"} - } hectare{ dnam{"hektar"} one{"{0} hektar"} @@ -123,11 +118,6 @@ nb{ one{"{0} millimol per liter"} other{"{0} millimol per liter"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"deler per million"} one{"{0} del per million"} @@ -247,6 +237,11 @@ nb{ other{"{0} døgn"} per{"{0} per døgn"} } + decade{ + dnam{"tiår"} + one{"{0} tiår"} + other{"{0} tiår"} + } hour{ dnam{"timer"} one{"{0} time"} @@ -324,8 +319,6 @@ nb{ energy{ british-thermal-unit{ dnam{"British thermal unit"} - one{"{0} Btu"} - other{"{0} Btu"} } calorie{ dnam{"kalorier"} @@ -362,6 +355,11 @@ nb{ one{"{0} kilowattime"} other{"{0} kilowattimer"} } + therm-us{ + dnam{"therm"} + one{"{0} therm"} + other{"{0} therm"} + } } force{ newton{ @@ -397,6 +395,43 @@ nb{ other{"{0} megahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"punkter per centimeter"} + one{"{0} punkt per centimeter"} + other{"{0} punkter per centimeter"} + } + dot-per-inch{ + dnam{"punkter per tomme"} + one{"{0} punkt per tomme"} + other{"{0} punkter per tomme"} + } + em{ + dnam{"gefirt"} + one{"{0} gefirt"} + other{"{0} gefirt"} + } + megapixel{ + dnam{"megapiksler"} + one{"{0} megapiksel"} + other{"{0} megapiksler"} + } + pixel{ + dnam{"piksler"} + one{"{0} piksel"} + other{"{0} piksler"} + } + pixel-per-centimeter{ + dnam{"piksler per centimeter"} + one{"{0} piksel per centimeter"} + other{"{0} piksler per centimeter"} + } + pixel-per-inch{ + dnam{"piksler per tomme"} + one{"{0} piksel per tomme"} + other{"{0} piksler per tomme"} + } + } length{ astronomical-unit{ dnam{"astronomiske enheter"} @@ -490,8 +525,6 @@ nb{ } solar-radius{ dnam{"solradius"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"yard"} @@ -507,8 +540,6 @@ nb{ } solar-luminosity{ dnam{"solluminositet"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ @@ -650,6 +681,11 @@ nb{ one{"{0} millimeter kvikksølv"} other{"{0} millimeter kvikksølv"} } + pascal{ + dnam{"pascal"} + one{"{0} pascal"} + other{"{0} pascal"} + } pound-per-square-inch{ dnam{"pund per kvadrattomme"} one{"{0} pund per kvadrattomme"} @@ -708,8 +744,6 @@ nb{ } pound-foot{ dnam{"pound-foot"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} } } volume{ @@ -1241,11 +1275,6 @@ nb{ one{"{0} ac"} other{"{0} ac"} } - dunam{ - dnam{"dunam"} - one{"{0} dunam"} - other{"{0} dunam"} - } hectare{ dnam{"hektar"} one{"{0} ha"} @@ -1311,11 +1340,6 @@ nb{ one{"{0} mmol/l"} other{"{0} mmol/l"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ppm"} one{"{0} ppm"} @@ -1435,6 +1459,11 @@ nb{ other{"{0} d"} per{"{0}/d"} } + decade{ + dnam{"tiår"} + one{"{0} tiår"} + other{"{0} tiår"} + } hour{ dnam{"timer"} one{"{0} t"} @@ -1510,11 +1539,6 @@ nb{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"cal"} one{"{0} cal"} @@ -1550,12 +1574,15 @@ nb{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"therm"} + one{"{0} therm"} + other{"{0} therm"} + } } force{ newton{ dnam{"newton"} - one{"{0} N"} - other{"{0} N"} } pound-force{ dnam{"poundforce"} @@ -1585,6 +1612,35 @@ nb{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + } + em{ + dnam{"gefirt"} + one{"{0} gefirt"} + other{"{0} gefirt"} + } + megapixel{ + dnam{"megapiksler"} + one{"{0} MP"} + other{"{0} MP"} + } + pixel{ + dnam{"piksler"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + one{"{0} ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -1678,8 +1734,6 @@ nb{ } solar-radius{ dnam{"solradius"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"yard"} @@ -1695,8 +1749,6 @@ nb{ } solar-luminosity{ dnam{"solluminositet"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ @@ -1808,6 +1860,10 @@ nb{ one{"{0} atm"} other{"{0} atm"} } + bar{ + one{"{0} bar"} + other{"{0} bar"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -1818,16 +1874,6 @@ nb{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} one{"{0} mbar"} @@ -1838,6 +1884,10 @@ nb{ one{"{0} mmHg"} other{"{0} mmHg"} } + pascal{ + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} @@ -1894,11 +1944,6 @@ nb{ one{"{0} Nm"} other{"{0} Nm"} } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } } volume{ acre-foot{ diff --git a/source/data/unit/nd.txt b/source/data/unit/nd.txt index f8b360c..5bcd7ea 100644 --- a/source/data/unit/nd.txt +++ b/source/data/unit/nd.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nd{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/nds.txt b/source/data/unit/nds.txt index 065f3b5..7451e24 100644 --- a/source/data/unit/nds.txt +++ b/source/data/unit/nds.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nds{ - Version{"2.1.47.82"} + Version{"36"} units{ duration{ day{ diff --git a/source/data/unit/ne.txt b/source/data/unit/ne.txt index ac1906f..f4bb178 100644 --- a/source/data/unit/ne.txt +++ b/source/data/unit/ne.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ne{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -247,6 +247,11 @@ ne{ other{"{0} दिन"} per{"{0} प्रति दिन"} } + decade{ + dnam{"दशाब्दी"} + one{"{0} दशाब्दी"} + other{"{0} दशाब्दी"} + } hour{ dnam{"घण्टा"} one{"{0} घण्टा"} @@ -362,6 +367,11 @@ ne{ one{"{0}किलोवाट-घण्टा"} other{"{0}किलोवाट-घण्टा"} } + therm-us{ + dnam{"युएस थर्म"} + one{"{0} युएस थर्म"} + other{"{0} युएस थर्म"} + } } force{ newton{ @@ -397,6 +407,41 @@ ne{ other{"{0} मेगाहर्ज"} } } + graphics{ + dot-per-centimeter{ + dnam{"डट प्रति सेन्टिमिटर"} + one{"{0} डट प्रति सेन्टिमिटर"} + other{"{0} डट प्रति सेन्टिमिटर"} + } + dot-per-inch{ + dnam{"डट प्रति इन्च"} + one{"{0} डट प्रति इन्च"} + other{"{0} डट प्रति इन्च"} + } + em{ + dnam{"टाइपोग्रापिक एम"} + } + megapixel{ + dnam{"मेगापिक्सेल"} + one{"{0} मेगापिक्सेल"} + other{"{0} मेगापिक्सेल"} + } + pixel{ + dnam{"पिक्सेल"} + one{"{0} पिक्सेल"} + other{"{0} पिक्सेल"} + } + pixel-per-centimeter{ + dnam{"पिक्सेल प्रति सेन्टिमिटर"} + one{"{0} पिक्सेल प्रति सेन्टिमिटर"} + other{"{0} पिक्सेल प्रति सेन्टिमिटर"} + } + pixel-per-inch{ + dnam{"पिक्सेल प्रति इन्च"} + one{"{0} पिक्सेल प्रति इन्च"} + other{"{0} पिक्सेल प्रति इन्च"} + } + } length{ astronomical-unit{ dnam{"खगोल एकाइ"} @@ -620,6 +665,11 @@ ne{ one{"{0} वायुमण्डल"} other{"{0} वायुमण्डलहरू"} } + bar{ + dnam{"धर्का"} + one{"{0} धर्का"} + other{"{0} धर्का"} + } hectopascal{ dnam{"हेक्टो पास्कल"} one{"{0} हेक्टो पास्कल"} @@ -650,6 +700,11 @@ ne{ one{"{0} मिलिमिटर पारो"} other{"{0} मिलिमिटर पारो"} } + pascal{ + dnam{"पास्कल"} + one{"{0} पास्कल"} + other{"{0} पास्कल"} + } pound-per-square-inch{ dnam{"पाउन्ड प्रति वर्ग इन्च"} one{"{0} पाउन्ड प्रति वर्ग इन्च"} @@ -1200,6 +1255,7 @@ ne{ } compound{ per{"{0}प्रति {1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1239,8 +1295,6 @@ ne{ } permyriad{ dnam{"पर्माइराइड"} - one{"{0}‱"} - other{"{0}‱"} } } consumption{ @@ -1341,6 +1395,11 @@ ne{ other{"{0} दिन"} per{"{0}/दिन"} } + decade{ + dnam{"दशाब्दी"} + one{"{0} दशाब्दी"} + other{"{0} दशाब्दी"} + } hour{ dnam{"घण्टा"} one{"{0} घण्टा"} @@ -1456,6 +1515,11 @@ ne{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"युएस थर्म"} + one{"{0} युएस थर्म"} + other{"{0} युएस थर्म"} + } } force{ newton{ @@ -1491,6 +1555,43 @@ ne{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"मेगापिक्सेल"} + one{"{0} MP"} + other{"{0} MP"} + } + pixel{ + dnam{"पिक्सेल"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + one{"{0} ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -1584,8 +1685,6 @@ ne{ } solar-radius{ dnam{"सौर्य रेडिआई"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"गज"} @@ -1601,8 +1700,6 @@ ne{ } solar-luminosity{ dnam{"सौर्य प्रकाश"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ @@ -1667,8 +1764,6 @@ ne{ } solar-mass{ dnam{"सौर्य घन"} - one{"{0} M☉"} - other{"{0} M☉"} } ton{ dnam{"टन"} @@ -1714,6 +1809,11 @@ ne{ one{"{0} वायु"} other{"{0} वायु"} } + bar{ + dnam{"धर्का"} + one{"{0} धर्का"} + other{"{0} धर्का"} + } hectopascal{ dnam{"हेक्टो पास्कल"} one{"{0}hPa"} @@ -1744,6 +1844,11 @@ ne{ one{"{0} mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} @@ -1800,11 +1905,6 @@ ne{ one{"{0} न्युटन मिटर"} other{"{0} न्युटन मिटर"} } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } } volume{ acre-foot{ @@ -1879,11 +1979,6 @@ ne{ one{"{0} fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"ग्यालोन"} one{"{0}ग्यालोन"} diff --git a/source/data/unit/nl.txt b/source/data/unit/nl.txt index 307675b..ee513c9 100644 --- a/source/data/unit/nl.txt +++ b/source/data/unit/nl.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nl{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -49,15 +49,12 @@ nl{ } area{ acre{ + dnam{"acre"} one{"{0} acre"} other{"{0} acres"} } - dunam{ - dnam{"dunam"} - one{"{0} dunam"} - other{"{0} dunam"} - } hectare{ + dnam{"hectare"} one{"{0} hectare"} other{"{0} hectare"} } @@ -104,6 +101,7 @@ nl{ } compound{ per{"{0} per {1}"} + times{"{0}{1}"} } concentr{ karat{ @@ -121,10 +119,10 @@ nl{ one{"{0} millimol per liter"} other{"{0} millimol per liter"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} + part-per-million{ + dnam{"ppm"} + one{"{0} ppm"} + other{"{0} ppm"} } percent{ dnam{"procent"} @@ -173,9 +171,15 @@ nl{ } digital{ bit{ + dnam{"bit"} one{"{0} bit"} other{"{0} bits"} } + byte{ + dnam{"byte"} + one{"{0} byte"} + other{"{0} byte"} + } gigabit{ dnam{"gigabit"} one{"{0} gigabit"} @@ -234,6 +238,11 @@ nl{ other{"{0} dagen"} per{"{0} per dag"} } + decade{ + dnam{"decennia"} + one{"{0} decennium"} + other{"{0} decennia"} + } hour{ dnam{"uur"} one{"{0} uur"} @@ -298,10 +307,12 @@ nl{ other{"{0} milliampère"} } ohm{ + dnam{"ohm"} one{"{0} ohm"} other{"{0} ohm"} } volt{ + dnam{"volt"} one{"{0} volt"} other{"{0} volt"} } @@ -328,6 +339,7 @@ nl{ other{"{0} kilocalorieën"} } joule{ + dnam{"joules"} one{"{0} joule"} other{"{0} joules"} } @@ -346,6 +358,11 @@ nl{ one{"{0} kilowattuur"} other{"{0} kilowattuur"} } + therm-us{ + dnam{"US therms"} + one{"{0} US therm"} + other{"{0} US therms"} + } } force{ newton{ @@ -381,6 +398,43 @@ nl{ other{"{0} megahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dots per centimeter"} + one{"{0} dot per centimeter"} + other{"{0} dots per centimeter"} + } + dot-per-inch{ + dnam{"dots per inch"} + one{"{0} dot per inch"} + other{"{0} dots per inch"} + } + em{ + dnam{"typografische em"} + one{"{0} em"} + other{"{0} ems"} + } + megapixel{ + dnam{"megapixels"} + one{"{0} megapixel"} + other{"{0} megapixels"} + } + pixel{ + dnam{"pixels"} + one{"{0} pixel"} + other{"{0} pixels"} + } + pixel-per-centimeter{ + dnam{"pixels per centimeter"} + one{"{0} pixel per centimeter"} + other{"{0} pixels per centimeter"} + } + pixel-per-inch{ + dnam{"pixels per inch"} + one{"{0} pixel per inch"} + other{"{0} pixels per inch"} + } + } length{ astronomical-unit{ dnam{"astronomische eenheid"} @@ -432,6 +486,7 @@ nl{ other{"{0} lichtjaar"} } meter{ + dnam{"meter"} one{"{0} meter"} other{"{0} meter"} per{"{0} per meter"} @@ -521,6 +576,7 @@ nl{ other{"{0} aardmassa"} } gram{ + dnam{"gram"} one{"{0} gram"} other{"{0} gram"} per{"{0} per gram"} @@ -606,6 +662,7 @@ nl{ other{"{0} milliwatt"} } watt{ + dnam{"watt"} one{"{0} watt"} other{"{0} watt"} } @@ -616,6 +673,11 @@ nl{ one{"{0} atmosfeer"} other{"{0} atmosfeer"} } + bar{ + dnam{"bar"} + one{"{0} bar"} + other{"{0} bar"} + } hectopascal{ dnam{"hectopascal"} one{"{0} hectopascal"} @@ -646,6 +708,16 @@ nl{ one{"{0} millimeter-kwikdruk"} other{"{0} millimeter-kwikdruk"} } + pascal{ + dnam{"pascal"} + one{"{0} pascal"} + other{"{0} pascal"} + } + pound-per-square-inch{ + dnam{"psi"} + one{"{0} psi"} + other{"{0} psi"} + } } speed{ kilometer-per-hour{ @@ -680,6 +752,11 @@ nl{ one{"{0} graad Fahrenheit"} other{"{0} graden Fahrenheit"} } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ dnam{"kelvin"} one{"{0} kelvin"} @@ -757,6 +834,7 @@ nl{ other{"{0} kubieke yard"} } cup{ + dnam{"cup"} one{"{0} cup"} other{"{0} cup"} } @@ -798,6 +876,7 @@ nl{ other{"{0} hectoliter"} } liter{ + dnam{"liter"} one{"{0} liter"} other{"{0} liter"} per{"{0} per liter"} @@ -843,17 +922,35 @@ nl{ acceleration{ g-force{ dnam{"G"} + one{"{0} G"} + other{"{0} G"} + } + meter-per-second-squared{ + dnam{"m/s²"} + one{"{0} m/s²"} + other{"{0} m/s²"} } } angle{ arc-minute{ dnam{"′"} + one{"{0}′"} + other{"{0}′"} } arc-second{ dnam{"″"} + one{"{0}″"} + other{"{0}″"} } degree{ dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } + radian{ + dnam{"rad"} + one{"{0} rad"} + other{"{0} rad"} } revolution{ dnam{"tr"} @@ -863,17 +960,59 @@ nl{ } area{ acre{ + dnam{"acre"} one{"{0} acre"} other{"{0} acres"} } - dunam{ - dnam{"dunam"} - one{"{0} dunam"} - other{"{0} dunam"} - } hectare{ dnam{"ha"} + one{"{0} ha"} + other{"{0} ha"} + } + square-centimeter{ + dnam{"cm²"} + one{"{0} cm²"} + other{"{0} cm²"} + per{"{0}/cm²"} + } + square-foot{ + dnam{"ft²"} + one{"{0} ft²"} + other{"{0} ft²"} + } + square-inch{ + dnam{"in²"} + one{"{0} in²"} + other{"{0} in²"} + per{"{0}/in²"} } + square-kilometer{ + dnam{"km²"} + one{"{0} km²"} + other{"{0} km²"} + per{"{0}/km²"} + } + square-meter{ + dnam{"m²"} + one{"{0} m²"} + other{"{0} m²"} + per{"{0}/m²"} + } + square-mile{ + dnam{"mi²"} + one{"{0} mi²"} + other{"{0} mi²"} + per{"{0}/mi²"} + } + square-yard{ + dnam{"yd²"} + one{"{0} yd²"} + other{"{0} yd²"} + } + } + compound{ + per{"{0}/{1}"} + times{"{0}{1}"} } concentr{ karat{ @@ -891,18 +1030,20 @@ nl{ one{"{0} mmol/l"} other{"{0} mmol/l"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} + part-per-million{ + dnam{"ppm"} + one{"{0} ppm"} + other{"{0} ppm"} + } + percent{ + dnam{"%"} + one{"{0}%"} + other{"{0}%"} } permille{ dnam{"promille"} - } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} + one{"{0}‰"} + other{"{0}‰"} } } consumption{ @@ -936,9 +1077,60 @@ nl{ } digital{ bit{ + dnam{"bit"} one{"{0} bit"} other{"{0} bits"} } + byte{ + dnam{"byte"} + one{"{0} byte"} + other{"{0} byte"} + } + gigabit{ + dnam{"Gb"} + one{"{0} Gb"} + other{"{0} Gb"} + } + gigabyte{ + dnam{"GB"} + one{"{0} GB"} + other{"{0} GB"} + } + kilobit{ + dnam{"kb"} + one{"{0} kb"} + other{"{0} kb"} + } + kilobyte{ + dnam{"kB"} + one{"{0} kB"} + other{"{0} kB"} + } + megabit{ + dnam{"Mb"} + one{"{0} Mb"} + other{"{0} Mb"} + } + megabyte{ + dnam{"MB"} + one{"{0} MB"} + other{"{0} MB"} + } + petabyte{ + dnam{"PB"} + one{"{0} PB"} + other{"{0} PB"} + } + terabit{ + dnam{"Tb"} + one{"{0} Tb"} + other{"{0} Tb"} + } + terabyte{ + dnam{"TB"} + one{"{0} TB"} + other{"{0} TB"} + } } duration{ century{ @@ -950,6 +1142,7 @@ nl{ dnam{"d"} one{"{0} d"} other{"{0} d"} + per{"{0}/d"} } hour{ dnam{"u"} @@ -957,6 +1150,11 @@ nl{ other{"{0} u"} per{"{0}/u"} } + microsecond{ + dnam{"μs"} + one{"{0} μs"} + other{"{0} μs"} + } millisecond{ dnam{"ms"} one{"{0} ms"} @@ -972,16 +1170,24 @@ nl{ dnam{"m"} one{"{0} m"} other{"{0} m"} + per{"{0}/m"} + } + nanosecond{ + dnam{"ns"} + one{"{0} ns"} + other{"{0} ns"} } second{ dnam{"s"} one{"{0} s"} other{"{0} s"} + per{"{0}/s"} } week{ dnam{"w"} one{"{0} w"} other{"{0} w"} + per{"{0}/w"} } year{ dnam{"jr"} @@ -993,24 +1199,30 @@ nl{ electric{ ampere{ dnam{"A"} + one{"{0} A"} + other{"{0} A"} + } + milliampere{ + dnam{"mA"} + one{"{0} mA"} + other{"{0} mA"} } ohm{ dnam{"Ω"} + one{"{0} Ω"} + other{"{0} Ω"} } volt{ dnam{"V"} + one{"{0} V"} + other{"{0} V"} } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } - electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} + calorie{ + dnam{"cal"} + one{"{0} cal"} + other{"{0} cal"} } foodcalorie{ dnam{"kcal"} @@ -1019,18 +1231,53 @@ nl{ } joule{ dnam{"J"} + one{"{0} J"} + other{"{0} J"} + } + kilocalorie{ + dnam{"kcal"} + one{"{0} kcal"} + other{"{0} kcal"} + } + kilojoule{ + dnam{"kJ"} + one{"{0} kJ"} + other{"{0} kJ"} + } + kilowatt-hour{ + dnam{"kWh"} + one{"{0} kWh"} + other{"{0} kWh"} } } - force{ - newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} + frequency{ + gigahertz{ + dnam{"GHz"} + one{"{0} GHz"} + other{"{0} GHz"} } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + hertz{ + dnam{"Hz"} + one{"{0} Hz"} + other{"{0} Hz"} + } + kilohertz{ + dnam{"kHz"} + one{"{0} kHz"} + other{"{0} kHz"} + } + megahertz{ + dnam{"MHz"} + one{"{0} MHz"} + other{"{0} MHz"} + } + } + graphics{ + megapixel{ + dnam{"MP"} + } + pixel{ + dnam{"px"} } } length{ @@ -1039,13 +1286,44 @@ nl{ one{"{0} AE"} other{"{0} AE"} } + centimeter{ + dnam{"cm"} + one{"{0} cm"} + other{"{0} cm"} + per{"{0}/cm"} + } + decimeter{ + dnam{"dm"} + one{"{0} dm"} + other{"{0} dm"} + } fathom{ + dnam{"fm"} one{"{0} fth"} other{"{0} fth"} } + foot{ + dnam{"ft"} + one{"{0} ft"} + other{"{0} ft"} + per{"{0}/ft"} + } + furlong{ + dnam{"fur"} + one{"{0} fur"} + other{"{0} fur"} + } inch{ + dnam{"in"} one{"{0}\u0022"} other{"{0}\u0022"} + per{"{0}/in"} + } + kilometer{ + dnam{"km"} + one{"{0} km"} + other{"{0} km"} + per{"{0}/km"} } light-year{ dnam{"lj"} @@ -1054,38 +1332,122 @@ nl{ } meter{ dnam{"m"} + one{"{0} m"} + other{"{0} m"} + per{"{0}/m"} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} + micrometer{ + dnam{"µm"} + one{"{0} µm"} + other{"{0} µm"} + } + mile{ + dnam{"mi"} + one{"{0} mi"} + other{"{0} mi"} + } + mile-scandinavian{ + dnam{"smi"} + one{"{0} smi"} + other{"{0} smi"} + } + millimeter{ + dnam{"mm"} + one{"{0} mm"} + other{"{0} mm"} + } + nanometer{ + dnam{"nm"} + one{"{0} nm"} + other{"{0} nm"} + } + nautical-mile{ + dnam{"nmi"} + one{"{0} nmi"} + other{"{0} nmi"} + } + parsec{ + dnam{"pc"} + one{"{0} pc"} + other{"{0} pc"} + } + picometer{ + dnam{"pm"} + one{"{0} pm"} + other{"{0} pm"} + } + point{ + dnam{"pt"} + one{"{0} pt"} + other{"{0} pt"} + } + yard{ + dnam{"yd"} + one{"{0} yd"} + other{"{0} yd"} } } light{ - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} + lux{ + dnam{"lx"} + one{"{0} lx"} + other{"{0} lx"} } } mass{ - dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} + carat{ + dnam{"CD"} + one{"{0} CD"} + other{"{0} CD"} } gram{ dnam{"g"} + one{"{0} g"} + other{"{0} g"} + per{"{0}/g"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} + kilogram{ + dnam{"kg"} + one{"{0} kg"} + other{"{0} kg"} + per{"{0}/kg"} + } + metric-ton{ + dnam{"t"} + one{"{0} t"} + other{"{0} t"} + } + microgram{ + dnam{"µg"} + one{"{0} µg"} + other{"{0} µg"} + } + milligram{ + dnam{"mg"} + one{"{0} mg"} + other{"{0} mg"} + } + ounce{ + dnam{"oz"} + one{"{0} oz"} + other{"{0} oz"} + per{"{0}/oz"} + } + ounce-troy{ + dnam{"oz t"} + one{"{0} oz t"} + other{"{0} oz t"} + } + pound{ + dnam{"lb"} + one{"{0} lb"} + other{"{0} lb"} + per{"{0}/lb"} + } + stone{ + dnam{"st"} + one{"{0} st"} + other{"{0} st"} } ton{ dnam{"ton"} @@ -1094,31 +1456,68 @@ nl{ } } power{ + gigawatt{ + dnam{"GW"} + one{"{0} GW"} + other{"{0} GW"} + } horsepower{ dnam{"pk"} one{"{0} pk"} other{"{0} pk"} } + kilowatt{ + dnam{"kW"} + one{"{0} kW"} + other{"{0} kW"} + } + megawatt{ + dnam{"MW"} + one{"{0} MW"} + other{"{0} MW"} + } + milliwatt{ + dnam{"mW"} + one{"{0} mW"} + other{"{0} mW"} + } watt{ dnam{"W"} + one{"{0} W"} + other{"{0} W"} } } pressure{ - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} + atmosphere{ + dnam{"atm"} + one{"{0} atm"} + other{"{0} atm"} } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} + hectopascal{ + dnam{"hPa"} + one{"{0} hPa"} + other{"{0} hPa"} + } + inch-hg{ + dnam{"inHg"} + one{"{0} inHg"} + other{"{0} inHg"} + } + millibar{ + dnam{"mbar"} + one{"{0} mbar"} + other{"{0} mbar"} } millimeter-of-mercury{ dnam{"mmHg"} one{"{0} mmHg"} other{"{0} mmHg"} } + pound-per-square-inch{ + dnam{"psi"} + one{"{0} psi"} + other{"{0} psi"} + } } speed{ kilometer-per-hour{ @@ -1131,6 +1530,16 @@ nl{ one{"{0} kt"} other{"{0} kt"} } + meter-per-second{ + dnam{"m/s"} + one{"{0} m/s"} + other{"{0} m/s"} + } + mile-per-hour{ + dnam{"mi/h"} + one{"{0} mi/h"} + other{"{0} mi/h"} + } } temperature{ celsius{ @@ -1138,17 +1547,20 @@ nl{ one{"{0}°"} other{"{0}°"} } - } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} + fahrenheit{ + dnam{"°F"} + one{"{0}°F"} + other{"{0}°F"} } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } + kelvin{ + dnam{"K"} + one{"{0} K"} + other{"{0} K"} } } volume{ @@ -1157,17 +1569,60 @@ nl{ one{"{0} l/m²"} other{"{0} l/m²"} } - barrel{ - dnam{"bbl"} - one{"{0} bbl"} - other{"{0} bbl"} + bushel{ + dnam{"bu"} + one{"{0} bu"} + other{"{0} bu"} } centiliter{ dnam{"cl"} one{"{0} cl"} other{"{0} cl"} } + cubic-centimeter{ + dnam{"cm³"} + one{"{0} cm³"} + other{"{0} cm³"} + per{"{0}/cm³"} + } + cubic-foot{ + dnam{"ft³"} + one{"{0} ft³"} + other{"{0} ft³"} + } + cubic-inch{ + dnam{"in³"} + one{"{0} in³"} + other{"{0} in³"} + } + cubic-kilometer{ + dnam{"km³"} + one{"{0} km³"} + other{"{0} km³"} + } + cubic-meter{ + dnam{"m³"} + one{"{0} m³"} + other{"{0} m³"} + per{"{0}/m³"} + } + cubic-mile{ + dnam{"mi³"} + one{"{0} mi³"} + other{"{0} mi³"} + } + cubic-yard{ + dnam{"yd³"} + one{"{0} yd³"} + other{"{0} yd³"} + } + cup{ + dnam{"cup"} + one{"{0} c"} + other{"{0} c"} + } cup-metric{ + dnam{"mc"} one{"{0}mc"} other{"{0}mc"} } @@ -1182,7 +1637,6 @@ nl{ other{"{0} fl oz"} } fluid-ounce-imperial{ - dnam{"Imp. fl oz"} one{"{0} fl ozIm"} other{"{0} fl ozIm"} } @@ -1205,17 +1659,44 @@ nl{ } liter{ dnam{"l"} + one{"{0} l"} + other{"{0} l"} + per{"{0}/l"} + } + megaliter{ + dnam{"ML"} + one{"{0} ML"} + other{"{0} ML"} } milliliter{ dnam{"ml"} one{"{0} ml"} other{"{0} ml"} } + pint{ + dnam{"pt"} + one{"{0} pt"} + other{"{0} pt"} + } + pint-metric{ + dnam{"mpt"} + one{"{0} mpt"} + other{"{0} mpt"} + } + quart{ + dnam{"qt"} + one{"{0} qt"} + other{"{0} qt"} + } tablespoon{ dnam{"el"} + one{"{0} el"} + other{"{0} el"} } teaspoon{ dnam{"tl"} + one{"{0} tl"} + other{"{0} tl"} } } } @@ -1223,17 +1704,35 @@ nl{ acceleration{ g-force{ dnam{"G"} + one{"{0} G"} + other{"{0} G"} + } + meter-per-second-squared{ + dnam{"m/s²"} + one{"{0} m/s²"} + other{"{0} m/s²"} } } angle{ arc-minute{ dnam{"′"} + one{"{0}′"} + other{"{0}′"} } arc-second{ dnam{"″"} + one{"{0}″"} + other{"{0}″"} } degree{ dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } + radian{ + dnam{"rad"} + one{"{0} rad"} + other{"{0} rad"} } revolution{ dnam{"tr"} @@ -1243,32 +1742,59 @@ nl{ } area{ acre{ + dnam{"acre"} one{"{0} acre"} other{"{0} acres"} } - dunam{ - dnam{"dunam"} - one{"{0} dunam"} - other{"{0} dunam"} - } hectare{ dnam{"ha"} + one{"{0} ha"} + other{"{0} ha"} } square-centimeter{ + dnam{"cm²"} + one{"{0} cm²"} + other{"{0} cm²"} per{"{0} per cm²"} } + square-foot{ + dnam{"ft²"} + one{"{0} ft²"} + other{"{0} ft²"} + } square-inch{ + dnam{"in²"} + one{"{0} in²"} + other{"{0} in²"} per{"{0} per in²"} } square-kilometer{ + dnam{"km²"} + one{"{0} km²"} + other{"{0} km²"} per{"{0} per km²"} } square-meter{ + dnam{"m²"} + one{"{0} m²"} + other{"{0} m²"} per{"{0} per m²"} } square-mile{ + dnam{"mi²"} + one{"{0} mi²"} + other{"{0} mi²"} per{"{0} per mi²"} } + square-yard{ + dnam{"yd²"} + one{"{0} yd²"} + other{"{0} yd²"} + } + } + compound{ + per{"{0}/{1}"} + times{"{0}{1}"} } concentr{ karat{ @@ -1286,21 +1812,20 @@ nl{ one{"{0} mmol/l"} other{"{0} mmol/l"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} + part-per-million{ + dnam{"ppm"} + one{"{0} ppm"} + other{"{0} ppm"} } percent{ dnam{"procent"} + one{"{0}%"} + other{"{0}%"} } permille{ dnam{"promille"} - } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} + one{"{0}‰"} + other{"{0}‰"} } } consumption{ @@ -1334,9 +1859,60 @@ nl{ } digital{ bit{ + dnam{"bit"} one{"{0} bit"} other{"{0} bits"} } + byte{ + dnam{"byte"} + one{"{0} byte"} + other{"{0} byte"} + } + gigabit{ + dnam{"Gb"} + one{"{0} Gb"} + other{"{0} Gb"} + } + gigabyte{ + dnam{"GB"} + one{"{0} GB"} + other{"{0} GB"} + } + kilobit{ + dnam{"kb"} + one{"{0} kb"} + other{"{0} kb"} + } + kilobyte{ + dnam{"kB"} + one{"{0} kB"} + other{"{0} kB"} + } + megabit{ + dnam{"Mb"} + one{"{0} Mb"} + other{"{0} Mb"} + } + megabyte{ + dnam{"MB"} + one{"{0} MB"} + other{"{0} MB"} + } + petabyte{ + dnam{"PB"} + one{"{0} PB"} + other{"{0} PB"} + } + terabit{ + dnam{"Tb"} + one{"{0} Tb"} + other{"{0} Tb"} + } + terabyte{ + dnam{"TB"} + one{"{0} TB"} + other{"{0} TB"} + } } duration{ century{ @@ -1350,6 +1926,11 @@ nl{ other{"{0} dagen"} per{"{0}/dag"} } + decade{ + dnam{"decennia"} + one{"{0} decennium"} + other{"{0} decennia"} + } hour{ dnam{"uur"} one{"{0} uur"} @@ -1405,24 +1986,30 @@ nl{ electric{ ampere{ dnam{"A"} + one{"{0} A"} + other{"{0} A"} + } + milliampere{ + dnam{"mA"} + one{"{0} mA"} + other{"{0} mA"} } ohm{ dnam{"Ω"} + one{"{0} Ω"} + other{"{0} Ω"} } volt{ dnam{"V"} + one{"{0} V"} + other{"{0} V"} } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } - electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} + calorie{ + dnam{"cal"} + one{"{0} cal"} + other{"{0} cal"} } foodcalorie{ dnam{"kcal"} @@ -1431,18 +2018,87 @@ nl{ } joule{ dnam{"J"} + one{"{0} J"} + other{"{0} J"} + } + kilocalorie{ + dnam{"kcal"} + one{"{0} kcal"} + other{"{0} kcal"} + } + kilojoule{ + dnam{"kJ"} + one{"{0} kJ"} + other{"{0} kJ"} + } + kilowatt-hour{ + dnam{"kWh"} + one{"{0} kWh"} + other{"{0} kWh"} + } + therm-us{ + dnam{"US therm"} + one{"{0} US therm"} + other{"{0} US therms"} } } - force{ - newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} + frequency{ + gigahertz{ + dnam{"GHz"} + one{"{0} GHz"} + other{"{0} GHz"} } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + hertz{ + dnam{"Hz"} + one{"{0} Hz"} + other{"{0} Hz"} + } + kilohertz{ + dnam{"kHz"} + one{"{0} kHz"} + other{"{0} kHz"} + } + megahertz{ + dnam{"MHz"} + one{"{0} MHz"} + other{"{0} MHz"} + } + } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"megapixels"} + one{"{0} MP"} + other{"{0} MP"} + } + pixel{ + dnam{"pixels"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + one{"{0} ppi"} + other{"{0} ppi"} } } length{ @@ -1451,12 +2107,44 @@ nl{ one{"{0} AE"} other{"{0} AE"} } + centimeter{ + dnam{"cm"} + one{"{0} cm"} + other{"{0} cm"} + per{"{0}/cm"} + } + decimeter{ + dnam{"dm"} + one{"{0} dm"} + other{"{0} dm"} + } fathom{ + dnam{"fm"} one{"{0} fth"} other{"{0} fth"} } + foot{ + dnam{"ft"} + one{"{0} ft"} + other{"{0} ft"} + per{"{0}/ft"} + } + furlong{ + dnam{"fur"} + one{"{0} fur"} + other{"{0} fur"} + } inch{ dnam{"inches"} + one{"{0} in"} + other{"{0} in"} + per{"{0}/in"} + } + kilometer{ + dnam{"km"} + one{"{0} km"} + other{"{0} km"} + per{"{0}/km"} } light-year{ dnam{"lj"} @@ -1465,44 +2153,122 @@ nl{ } meter{ dnam{"m"} + one{"{0} m"} + other{"{0} m"} + per{"{0}/m"} + } + micrometer{ + dnam{"µm"} + one{"{0} µm"} + other{"{0} µm"} + } + mile{ + dnam{"mi"} + one{"{0} mi"} + other{"{0} mi"} + } + mile-scandinavian{ + dnam{"smi"} + one{"{0} smi"} + other{"{0} smi"} + } + millimeter{ + dnam{"mm"} + one{"{0} mm"} + other{"{0} mm"} + } + nanometer{ + dnam{"nm"} + one{"{0} nm"} + other{"{0} nm"} + } + nautical-mile{ + dnam{"nmi"} + one{"{0} nmi"} + other{"{0} nmi"} + } + parsec{ + dnam{"pc"} + one{"{0} pc"} + other{"{0} pc"} + } + picometer{ + dnam{"pm"} + one{"{0} pm"} + other{"{0} pm"} } point{ dnam{"punten"} - } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} + one{"{0} pt"} + other{"{0} pt"} } yard{ dnam{"yards"} + one{"{0} yd"} + other{"{0} yd"} } } light{ - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} + lux{ + dnam{"lx"} + one{"{0} lx"} + other{"{0} lx"} } } mass{ - dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} + carat{ + dnam{"CD"} + one{"{0} CD"} + other{"{0} CD"} } gram{ dnam{"g"} + one{"{0} g"} + other{"{0} g"} + per{"{0}/g"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} + kilogram{ + dnam{"kg"} + one{"{0} kg"} + other{"{0} kg"} + per{"{0}/kg"} + } + metric-ton{ + dnam{"t"} + one{"{0} t"} + other{"{0} t"} + } + microgram{ + dnam{"µg"} + one{"{0} µg"} + other{"{0} µg"} + } + milligram{ + dnam{"mg"} + one{"{0} mg"} + other{"{0} mg"} + } + ounce{ + dnam{"oz"} + one{"{0} oz"} + other{"{0} oz"} + per{"{0}/oz"} + } + ounce-troy{ + dnam{"oz t"} + one{"{0} oz t"} + other{"{0} oz t"} + } + pound{ + dnam{"lb"} + one{"{0} lb"} + other{"{0} lb"} + per{"{0}/lb"} + } + stone{ + dnam{"st"} + one{"{0} st"} + other{"{0} st"} } ton{ dnam{"ton"} @@ -1511,31 +2277,78 @@ nl{ } } power{ + gigawatt{ + dnam{"GW"} + one{"{0} GW"} + other{"{0} GW"} + } horsepower{ dnam{"pk"} one{"{0} pk"} other{"{0} pk"} } + kilowatt{ + dnam{"kW"} + one{"{0} kW"} + other{"{0} kW"} + } + megawatt{ + dnam{"MW"} + one{"{0} MW"} + other{"{0} MW"} + } + milliwatt{ + dnam{"mW"} + one{"{0} mW"} + other{"{0} mW"} + } watt{ dnam{"W"} + one{"{0} W"} + other{"{0} W"} } } pressure{ - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} + atmosphere{ + dnam{"atm"} + one{"{0} atm"} + other{"{0} atm"} } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} + bar{ + dnam{"bar"} + one{"{0} bar"} + other{"{0} bar"} + } + hectopascal{ + dnam{"hPa"} + one{"{0} hPa"} + other{"{0} hPa"} + } + inch-hg{ + dnam{"inHg"} + one{"{0} inHg"} + other{"{0} inHg"} + } + millibar{ + dnam{"mbar"} + one{"{0} mbar"} + other{"{0} mbar"} } millimeter-of-mercury{ dnam{"mmHg"} one{"{0} mmHg"} other{"{0} mmHg"} } + pascal{ + dnam{"Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } + pound-per-square-inch{ + dnam{"psi"} + one{"{0} psi"} + other{"{0} psi"} + } } speed{ kilometer-per-hour{ @@ -1548,39 +2361,101 @@ nl{ one{"{0} kt"} other{"{0} kt"} } + meter-per-second{ + dnam{"m/s"} + one{"{0} m/s"} + other{"{0} m/s"} + } + mile-per-hour{ + dnam{"mi/h"} + one{"{0} mi/h"} + other{"{0} mi/h"} + } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} + temperature{ + celsius{ + dnam{"°C"} + one{"{0}°C"} + other{"{0}°C"} } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} + fahrenheit{ + dnam{"°F"} + one{"{0}°F"} + other{"{0}°F"} + } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } + kelvin{ + dnam{"K"} + one{"{0} K"} + other{"{0} K"} } } volume{ acre-foot{ dnam{"acre ft"} + one{"{0} ac ft"} + other{"{0} ac ft"} } - barrel{ - dnam{"bbl"} - one{"{0} bbl"} - other{"{0} bbl"} + bushel{ + dnam{"bu"} + one{"{0} bu"} + other{"{0} bu"} } centiliter{ dnam{"cl"} one{"{0} cl"} other{"{0} cl"} } + cubic-centimeter{ + dnam{"cm³"} + one{"{0} cm³"} + other{"{0} cm³"} + per{"{0}/cm³"} + } + cubic-foot{ + dnam{"ft³"} + one{"{0} ft³"} + other{"{0} ft³"} + } + cubic-inch{ + dnam{"in³"} + one{"{0} in³"} + other{"{0} in³"} + } + cubic-kilometer{ + dnam{"km³"} + one{"{0} km³"} + other{"{0} km³"} + } + cubic-meter{ + dnam{"m³"} + one{"{0} m³"} + other{"{0} m³"} + per{"{0}/m³"} + } + cubic-mile{ + dnam{"mi³"} + one{"{0} mi³"} + other{"{0} mi³"} + } + cubic-yard{ + dnam{"yd³"} + one{"{0} yd³"} + other{"{0} yd³"} + } cup{ + dnam{"cup"} one{"{0} cup"} other{"{0} cup"} } cup-metric{ dnam{"metrische cup"} + one{"{0} mc"} + other{"{0} mc"} } deciliter{ dnam{"dl"} @@ -1592,11 +2467,6 @@ nl{ one{"{0} fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} one{"{0} gal"} @@ -1616,12 +2486,35 @@ nl{ } liter{ dnam{"l"} + one{"{0} l"} + other{"{0} l"} + per{"{0}/l"} + } + megaliter{ + dnam{"ML"} + one{"{0} ML"} + other{"{0} ML"} } milliliter{ dnam{"ml"} one{"{0} ml"} other{"{0} ml"} } + pint{ + dnam{"pt"} + one{"{0} pt"} + other{"{0} pt"} + } + pint-metric{ + dnam{"mpt"} + one{"{0} mpt"} + other{"{0} mpt"} + } + quart{ + dnam{"qt"} + one{"{0} qt"} + other{"{0} qt"} + } tablespoon{ dnam{"el"} one{"{0} el"} diff --git a/source/data/unit/nmg.txt b/source/data/unit/nmg.txt index 7a4e239..b68ac40 100644 --- a/source/data/unit/nmg.txt +++ b/source/data/unit/nmg.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nmg{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/nn.txt b/source/data/unit/nn.txt index 5f273b5..1c72b24 100644 --- a/source/data/unit/nn.txt +++ b/source/data/unit/nn.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nn{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/nnh.txt b/source/data/unit/nnh.txt index 59db075..382ab37 100644 --- a/source/data/unit/nnh.txt +++ b/source/data/unit/nnh.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nnh{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/nus.txt b/source/data/unit/nus.txt index 9c79237..e81a08c 100644 --- a/source/data/unit/nus.txt +++ b/source/data/unit/nus.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nus{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/nyn.txt b/source/data/unit/nyn.txt index 764b0c1..2c6a764 100644 --- a/source/data/unit/nyn.txt +++ b/source/data/unit/nyn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nyn{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/om.txt b/source/data/unit/om.txt index 602e986..8c3dcc5 100644 --- a/source/data/unit/om.txt +++ b/source/data/unit/om.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License om{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/or.txt b/source/data/unit/or.txt index 82f552c..c67a72d 100644 --- a/source/data/unit/or.txt +++ b/source/data/unit/or.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License or{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -362,6 +362,11 @@ or{ one{"{0} କିଲୋୱାଟ୍-ଘଣ୍ଟା"} other{"{0} କିଲୋୱାଟ୍-ଘଣ୍ଟା"} } + therm-us{ + dnam{"ୟୁଏସ୍‌ ଥର୍ମ"} + one{"{0} ୟୁଏସ୍‌ ଥର୍ମ"} + other{"{0} ୟୁଏସ୍‌ ଥର୍ମ"} + } } force{ newton{ @@ -620,6 +625,11 @@ or{ one{"{0} ଆଟମୋସ୍ପିଅର"} other{"{0} ଆଟମୋସ୍ପିଅର"} } + bar{ + dnam{"ବାର୍‌"} + one{"{0} ବାର୍‌"} + other{"{0} ବାର୍‌"} + } hectopascal{ dnam{"ହେକ୍ଟୋପାସ୍କେଲ୍"} one{"{0} ହେକ୍ଟୋପାସ୍କେଲ୍"} @@ -650,6 +660,11 @@ or{ one{"ପାରାର {0} ମିଲିମିଟର୍"} other{"ପାରାର {0} ମିଲିମିଟର୍"} } + pascal{ + dnam{"ପା"} + one{"{0} ପା"} + other{"{0} ପା"} + } pound-per-square-inch{ dnam{"ପାଉଣ୍ଡ୍ ପ୍ରତି ବର୍ଗ ଇଞ୍ଚ"} one{"ପ୍ରତି ବର୍ଗ ଇଞ୍ଚ {0} ପାଉଣ୍ଡ୍"} @@ -1072,6 +1087,7 @@ or{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1092,7 +1108,7 @@ or{ mole{ dnam{"ମୋଲ"} one{"ମୋଲ"} - other{"{0} mol"} + other{"{0} ମୋଲ"} } part-per-million{ dnam{"ଅଂଶ/ନିୟୁତ"} @@ -1111,8 +1127,6 @@ or{ } permyriad{ dnam{"ପରମାଇରିଆଡ"} - one{"{0}‱"} - other{"{0}‱"} } } consumption{ @@ -1213,6 +1227,11 @@ or{ other{"{0} ଦିନ"} per{"{0}/ଦିନ"} } + decade{ + dnam{"dec"} + one{"{0} dec"} + other{"{0} dec"} + } hour{ dnam{"ଘଣ୍ଟା"} one{"{0} ଘଣ୍ଟା"} @@ -1288,11 +1307,6 @@ or{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"କ୍ୟାଲ୍"} one{"{0} କ୍ୟାଲ୍"} @@ -1300,8 +1314,6 @@ or{ } electronvolt{ dnam{"ଇଲେକ୍ଟ୍ରୋନ୍‌ ଭୋଲ୍ଟ"} - one{"{0} eV"} - other{"{0} eV"} } foodcalorie{ dnam{"କ୍ୟାଲ୍"} @@ -1328,17 +1340,18 @@ or{ one{"{0} କିୱାଘ"} other{"{0} କିୱାଘ"} } + therm-us{ + dnam{"ୟୁଏସ୍‌ ଥର୍ମ"} + one{"{0} ୟୁଏସ୍‌ ଥର୍ମ"} + other{"{0} ୟୁଏସ୍‌ ଥର୍ମ"} + } } force{ newton{ dnam{"ନ୍ୟୁଟନ"} - one{"{0} N"} - other{"{0} N"} } pound-force{ dnam{"ପାଉଣ୍ଡ-ଫୋର୍ସ"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1456,8 +1469,6 @@ or{ } solar-radius{ dnam{"ସୋଲାର ରାଡି"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"ୟାର୍ଡ୍"} @@ -1473,8 +1484,6 @@ or{ } solar-luminosity{ dnam{"ସୋଲର ଲ୍ୟୁମିନୋସିଟିସ"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ @@ -1490,8 +1499,6 @@ or{ } earth-mass{ dnam{"ଅର୍ଥ ମାସେସ"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"ଗ୍ରାମ୍"} @@ -1539,8 +1546,6 @@ or{ } solar-mass{ dnam{"ସୋଲର ମାସେସ"} - one{"{0} M☉"} - other{"{0} M☉"} } ton{ dnam{"ଟନ୍"} @@ -1586,6 +1591,11 @@ or{ one{"{0} atm"} other{"{0} atm"} } + bar{ + dnam{"ବାର୍‌"} + one{"{0} ବାର୍‌"} + other{"{0} ବାର୍‌"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -1596,16 +1606,6 @@ or{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} one{"{0} mbar"} @@ -1616,6 +1616,11 @@ or{ one{"{0} mmHg"} other{"{0} mmHg"} } + pascal{ + dnam{"ପା"} + one{"{0} ପା"} + other{"{0} ପା"} + } pound-per-square-inch{ dnam{"psi"} one{"{0} psi"} @@ -1666,18 +1671,6 @@ or{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ଏକର ଫିଟ୍"} @@ -1686,8 +1679,6 @@ or{ } barrel{ dnam{"ବାରେଲ"} - one{"{0} bbl"} - other{"{0} bbl"} } centiliter{ dnam{"ସେଲି"} @@ -1753,8 +1744,6 @@ or{ } fluid-ounce-imperial{ dnam{"ଇମ୍ପ. ଏଫଏଲ ଓଜେ"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} } gallon{ dnam{"ଗ୍ୟାଲ୍"} diff --git a/source/data/unit/os.txt b/source/data/unit/os.txt index 36a0028..ef996f5 100644 --- a/source/data/unit/os.txt +++ b/source/data/unit/os.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License os{ - Version{"2.1.47.82"} + Version{"36"} units{ duration{ day{ diff --git a/source/data/unit/pa.txt b/source/data/unit/pa.txt index 5d7b970..16cbc0f 100644 --- a/source/data/unit/pa.txt +++ b/source/data/unit/pa.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pa{ - Version{"2.1.48.20"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -173,10 +173,10 @@ pa{ } coordinate{ dnam{"ਮੁੱਖ ਦਿਸ਼ਾ"} - east{"{0}ਪੂ"} - north{"{0}ਉ"} - south{"{0}ਦੱ"} - west{"{0}ਪੱ"} + east{"{0} ਪੂਰਬ"} + north{"{0} ਉੱਤਰ"} + south{"{0} ਦੱਖਣ"} + west{"{0} ਪੱਛਮ"} } digital{ bit{ @@ -247,6 +247,11 @@ pa{ other{"{0} ਦਿਨ"} per{"{0} ਪ੍ਰਤੀ ਦਿਨ"} } + decade{ + dnam{"ਦਹਾਕੇ"} + one{"{0} ਦਹਾਕਾ"} + other{"{0} ਦਹਾਕੇ"} + } hour{ dnam{"ਘੰਟੇ"} one{"{0} ਘੰਟਾ"} @@ -362,6 +367,9 @@ pa{ one{"{0} ਕਿਲੋਵਾਟ ਘੰਟਾ"} other{"{0} ਕਿਲੋਵਾਟ ਘੰਟੇ"} } + therm-us{ + dnam{"US therms"} + } } force{ newton{ @@ -397,6 +405,43 @@ pa{ other{"{0} ਮੈਗਾਹਰਟਜ਼"} } } + graphics{ + dot-per-centimeter{ + dnam{"ਡਾਟ ਪ੍ਰਤੀ ਸੈਂਟੀਮੀਟਰ"} + one{"{0} ਡਾਟ ਪ੍ਰਤੀ ਸੈਂਟੀਮੀਟਰ"} + other{"{0} ਡਾਟ ਪ੍ਰਤੀ ਸੈਂਟੀਮੀਟਰ"} + } + dot-per-inch{ + dnam{"ਡਾਟ ਪ੍ਰਤੀ ਇੰਚ"} + one{"{0} ਡਾਟ ਪ੍ਰਤੀ ਇੰਚ"} + other{"{0} ਡਾਟ ਪ੍ਰਤੀ ਇੰਚ"} + } + em{ + dnam{"ਟਾਈਪੋਗ੍ਰਾਫ਼ਿਕ ਐਮ"} + one{"{0} ਟਾਈਪੋਗ੍ਰਾਫ਼ਿਕ ਐਮ"} + other{"{0} ਟਾਈਪੋਗ੍ਰਾਫ਼ਿਕ ਐਮ"} + } + megapixel{ + dnam{"ਮੈਗਾਪਿਕਸਲ"} + one{"{0} ਮੈਗਾਪਿਕਸਲ"} + other{"{0} ਮੈਗਾਪਿਕਸਲ"} + } + pixel{ + dnam{"ਪਿਕਸਲ"} + one{"{0} ਪਿਕਸਲ"} + other{"{0} ਪਿਕਸਲ"} + } + pixel-per-centimeter{ + dnam{"ਪਿਕਸਲ ਪ੍ਰਤੀ ਸੈਂਟੀਮੀਟਰ"} + one{"{0} ਪਿਕਸਲ ਪ੍ਰਤੀ ਸੈਂਟੀਮੀਟਰ"} + other{"{0} ਪਿਕਸਲ ਪ੍ਰਤੀ ਸੈਂਟੀਮੀਟਰ"} + } + pixel-per-inch{ + dnam{"ਪਿਕਸਲ ਪ੍ਰਤੀ ਇੰਚ"} + one{"{0} ਪਿਕਸਲ ਪ੍ਰਤੀ ਇੰਚ"} + other{"{0} ਪਿਕਸਲ ਪ੍ਰਤੀ ਇੰਚ"} + } + } length{ astronomical-unit{ dnam{"ਖਗੋਲੀ ਇਕਾਈਆਂ"} @@ -635,6 +680,11 @@ pa{ one{"{0} ਵਾਯੂਮੰਡਲ"} other{"{0} ਵਾਯੂਮੰਡਲ"} } + bar{ + dnam{"ਬਾਰ"} + one{"{0} ਬਾਰ"} + other{"{0} ਬਾਰ"} + } hectopascal{ dnam{"ਹੈਕਟੋਪਾਸਕਲ"} one{"{0} ਹੈਕਟੋਪਾਸਕਲ"} @@ -665,6 +715,11 @@ pa{ one{"{0} ਮਿਲੀਮੀਟਰ ਪਾਰਾ"} other{"{0} ਮਿਲੀਮੀਟਰ ਪਾਰਾ"} } + pascal{ + dnam{"ਪੈਸਕਲ"} + one{"{0} ਪੈਸਕਲ"} + other{"{0} ਪੈਸਕਲ"} + } pound-per-square-inch{ dnam{"ਪੌਂਡ ਪ੍ਰਤੀ ਵਰਗ ਇੰਚ"} one{"{0} ਪੌਂਡ ਪ੍ਰਤੀ ਵਰਗ ਇੰਚ"} @@ -704,6 +759,11 @@ pa{ one{"{0} ਦਰਜਾ ਫਾਰੇਨਹਾਈਟ"} other{"{0} ਦਰਜੇ ਫਾਰੇਨਹਾਈਟ"} } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ dnam{"ਕੈਲਵਿਨ"} one{"{0} ਕੈਲਵਿਨ"} @@ -932,6 +992,9 @@ pa{ other{"{0} ਗਜ਼²"} } } + compound{ + per{"{0}/{1}"} + } concentr{ karat{ one{"{0} ਕੇਰਟ"} @@ -939,6 +1002,8 @@ pa{ } percent{ dnam{"ਪ੍ਰਤੀਸ਼ਤ"} + one{"{0}%"} + other{"{0}%"} } } consumption{ @@ -1172,6 +1237,8 @@ pa{ } micrometer{ dnam{"ਮਾਇਕ੍ਰੋ. ਮੀ."} + one{"{0} µm"} + other{"{0} µm"} } mile{ dnam{"ਮੀਲ"} @@ -1324,11 +1391,22 @@ pa{ } } temperature{ + celsius{ + dnam{"°C"} + one{"{0}°C"} + other{"{0}°C"} + } fahrenheit{ one{"{0}°"} other{"{0}°"} } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ + dnam{"K"} one{"{0}°K"} other{"{0}°K"} } @@ -1422,6 +1500,8 @@ pa{ acceleration{ g-force{ dnam{"ਗੁਰੂਤਾਕਰਸ਼ਣ ਬਲ"} + one{"{0} G"} + other{"{0} G"} } meter-per-second-squared{ dnam{"ਮੀਟਰ/ਸਕਿੰਟ²"} @@ -1513,6 +1593,10 @@ pa{ other{"{0} ਗਜ਼²"} } } + compound{ + per{"{0}/{1}"} + times{"{0}⋅{1}"} + } concentr{ karat{ dnam{"ਕੇਰਟ"} @@ -1536,17 +1620,21 @@ pa{ } part-per-million{ dnam{"ਹਿੱਸੇ/ਮਿਲੀਅਨ"} + one{"{0} ppm"} + other{"{0} ppm"} } percent{ dnam{"ਪ੍ਰਤੀਸ਼ਤ"} + one{"{0}%"} + other{"{0}%"} } permille{ dnam{"ਪਰਮਾਈਲ"} + one{"{0}‰"} + other{"{0}‰"} } permyriad{ dnam{"ਪ੍ਰਤੀ ਦਸ ਹਜ਼ਾਰ"} - one{"{0}‱"} - other{"{0}‱"} } } consumption{ @@ -1591,30 +1679,48 @@ pa{ } gigabit{ dnam{"Gbit"} + one{"{0} Gb"} + other{"{0} Gb"} } gigabyte{ dnam{"ਗੀਗਾਬਾਇਟ"} + one{"{0} GB"} + other{"{0} GB"} } kilobit{ dnam{"ਕਿਲੋਬਿਟ"} + one{"{0} kb"} + other{"{0} kb"} } kilobyte{ dnam{"ਕਿਲੋਬਾਇਟ"} + one{"{0} kB"} + other{"{0} kB"} } megabit{ dnam{"ਮੈਗਾਬਿਟ"} + one{"{0} Mb"} + other{"{0} Mb"} } megabyte{ dnam{"ਮੈਗਾਬਾਇਟ"} + one{"{0} MB"} + other{"{0} MB"} } petabyte{ dnam{"ਪੈਟਾਬਾਇਟ"} + one{"{0} PB"} + other{"{0} PB"} } terabit{ dnam{"ਟੇਰਾਬਿਟ"} + one{"{0} Tb"} + other{"{0} Tb"} } terabyte{ dnam{"ਟੈਰਾਬਾਇਟ"} + one{"{0} TB"} + other{"{0} TB"} } } duration{ @@ -1629,6 +1735,11 @@ pa{ other{"{0} ਦਿਨ"} per{"{0}/ਦਿਨ"} } + decade{ + dnam{"ਦਹਾ"} + one{"{0} ਦਹਾ"} + other{"{0} ਦਹਾ"} + } hour{ dnam{"ਘੰਟੇ"} one{"{0} ਘੰਟਾ"} @@ -1637,6 +1748,8 @@ pa{ } microsecond{ dnam{"ਮਾਈਕਰੋਸਕਿੰਟ"} + one{"{0} μs"} + other{"{0} μs"} } millisecond{ dnam{"ਮਿਲੀਸਕਿੰਟ"} @@ -1657,6 +1770,8 @@ pa{ } nanosecond{ dnam{"ਨੈਨੋਸਕਿੰਟ"} + one{"{0} ns"} + other{"{0} ns"} } second{ dnam{"ਸਕਿੰਟ"} @@ -1680,22 +1795,28 @@ pa{ electric{ ampere{ dnam{"ਐਮਪੀਅਰ"} + one{"{0} A"} + other{"{0} A"} } milliampere{ dnam{"ਮਿਲੀਐਮਪੀਅਰ"} + one{"{0} mA"} + other{"{0} mA"} } ohm{ dnam{"ਓਹਮ"} + one{"{0} Ω"} + other{"{0} Ω"} } volt{ dnam{"ਵੋਲਟ"} + one{"{0} V"} + other{"{0} V"} } } energy{ british-thermal-unit{ dnam{"BTU"} - one{"{0} Btu"} - other{"{0} Btu"} } calorie{ dnam{"ਕੈਲੋਰੀ"} @@ -1704,8 +1825,6 @@ pa{ } electronvolt{ dnam{"ਇਲੈਕਟ੍ਰਾਨਵੋਲਟ"} - one{"{0} eV"} - other{"{0} eV"} } foodcalorie{ dnam{"ਕੈਲੋਰੀ"} @@ -1714,6 +1833,8 @@ pa{ } joule{ dnam{"ਜੂਲ"} + one{"{0} J"} + other{"{0} J"} } kilocalorie{ dnam{"ਕਿ.ਕੈਲੋਰੀ"} @@ -1730,6 +1851,11 @@ pa{ one{"{0} ਕਿ.ਵਾ.ਘੰ."} other{"{0} ਕਿ.ਵਾ.ਘੰ."} } + therm-us{ + dnam{"US therm"} + one{"{0} US therm"} + other{"{0} US therm"} + } } force{ newton{ @@ -1739,11 +1865,73 @@ pa{ } pound-force{ dnam{"ਪੌਂਡ-ਬਲ"} - one{"{0} lbf"} - other{"{0} lbf"} + } + } + frequency{ + gigahertz{ + dnam{"GHz"} + one{"{0} GHz"} + other{"{0} GHz"} + } + hertz{ + dnam{"Hz"} + one{"{0} Hz"} + other{"{0} Hz"} + } + kilohertz{ + dnam{"kHz"} + one{"{0} kHz"} + other{"{0} kHz"} + } + megahertz{ + dnam{"MHz"} + one{"{0} MHz"} + other{"{0} MHz"} + } + } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"MP"} + one{"{0} MP"} + other{"{0} MP"} + } + pixel{ + dnam{"px"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + one{"{0} ppi"} + other{"{0} ppi"} } } length{ + astronomical-unit{ + dnam{"au"} + one{"{0} au"} + other{"{0} au"} + } centimeter{ dnam{"ਸੈਂ.ਮੀ."} one{"{0} ਸੈਂ.ਮੀ."} @@ -1796,6 +1984,8 @@ pa{ } micrometer{ dnam{"ਮਾਈਕਰੋਮੀਟਰ"} + one{"{0} µm"} + other{"{0} µm"} } mile{ dnam{"ਮੀਲ"} @@ -1834,11 +2024,11 @@ pa{ } point{ dnam{"ਪੁਆਇੰਟ"} + one{"{0} pt"} + other{"{0} pt"} } solar-radius{ dnam{"ਸੋਲਰ ਰੇਡੀਅਸ"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"ਗਜ਼"} @@ -1854,8 +2044,6 @@ pa{ } solar-luminosity{ dnam{"ਸੋਲਰ ਲੂਮਨਾਸਿਟੀ"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ @@ -1871,8 +2059,6 @@ pa{ } earth-mass{ dnam{"ਅਰਥ ਮਾਸ"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"ਗ੍ਰਾਮ"} @@ -1886,6 +2072,16 @@ pa{ other{"{0} ਕਿ.ਗ੍ਰਾ."} per{"{0}/ਕਿ.ਗ੍ਰਾ."} } + metric-ton{ + dnam{"t"} + one{"{0} t"} + other{"{0} t"} + } + microgram{ + dnam{"µg"} + one{"{0} µg"} + other{"{0} µg"} + } milligram{ dnam{"ਮਿ.ਗ੍ਰਾ."} one{"{0} ਮਿ.ਗ੍ਰਾ."} @@ -1910,8 +2106,6 @@ pa{ } solar-mass{ dnam{"ਸੋਲਰ ਮਾਸ"} - one{"{0} M☉"} - other{"{0} M☉"} } stone{ dnam{"ਸਟੋਨ"} @@ -1931,6 +2125,7 @@ pa{ other{"{0} ਗੀ.ਵਾਟ"} } horsepower{ + dnam{"hp"} one{"{0} ਹੌਰਸਪਾਵਰ"} other{"{0} ਹੌਰਸਪਾਵਰ"} } @@ -1961,6 +2156,11 @@ pa{ one{"{0} ਵਾ. ਮੰ."} other{"{0} ਵਾ. ਮੰ."} } + bar{ + dnam{"ਬਾਰ"} + one{"{0} ਬਾਰ"} + other{"{0} ਬਾਰ"} + } hectopascal{ dnam{"ਹੈ.ਪਾ."} one{"{0} ਹੈ.ਪਾ."} @@ -1991,6 +2191,11 @@ pa{ one{"{0} ਮਿ.ਮੀ. ਪਾਰਾ"} other{"{0} ਮਿ.ਮੀ. ਪਾਰਾ"} } + pascal{ + dnam{"Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"ਪੌਂ.ਵ.ਇੰਚ"} one{"{0} ਪੌਂ.ਵ.ਇੰਚ"} @@ -2003,6 +2208,11 @@ pa{ one{"{0} ਕਿ.ਪ੍ਰ.ਘੰ."} other{"{0} ਕਿ.ਪ੍ਰ.ਘੰ."} } + knot{ + dnam{"kn"} + one{"{0} kn"} + other{"{0} kn"} + } meter-per-second{ dnam{"ਮੀਟਰ/ਸਕਿੰਟ"} one{"{0} ਮੀ./ਸ."} @@ -2017,9 +2227,23 @@ pa{ temperature{ celsius{ dnam{"ਦਰਜਾ ਸੈਲਸੀਅਸ"} + one{"{0}°C"} + other{"{0}°C"} } fahrenheit{ dnam{"ਦਰਜਾ ਫਾਰੇਨਹਾਈਟ"} + one{"{0}°F"} + other{"{0}°F"} + } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } + kelvin{ + dnam{"K"} + one{"{0} K"} + other{"{0} K"} } } torque{ @@ -2028,11 +2252,6 @@ pa{ one{"{0} ਨਿ⋅ਮੀ"} other{"{0} ਨਿ⋅ਮੀ"} } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } } volume{ acre-foot{ @@ -2112,11 +2331,6 @@ pa{ one{"{0} ਤ. ਔਂਸ"} other{"{0} ਤ. ਔਂਸ"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"ਗੈਲਨ"} one{"{0} ਗੈਲਨ"} diff --git a/source/data/unit/pa_Arab.txt b/source/data/unit/pa_Arab.txt index 2ab8d68..650401f 100644 --- a/source/data/unit/pa_Arab.txt +++ b/source/data/unit/pa_Arab.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pa_Arab{ %%Parent{"root"} - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/pa_Guru.txt b/source/data/unit/pa_Guru.txt index 650b3ed..fb27b98 100644 --- a/source/data/unit/pa_Guru.txt +++ b/source/data/unit/pa_Guru.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pa_Guru{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/unit/pl.txt b/source/data/unit/pl.txt index 85fde68..2491c6f 100644 --- a/source/data/unit/pl.txt +++ b/source/data/unit/pl.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pl{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -227,13 +227,17 @@ pl{ } coordinate{ dnam{"kierunek świata"} + east{"{0} długości geograficznej wschodniej"} + north{"{0} szerokości geograficznej północnej"} + south{"{0} szerokości geograficznej południowej"} + west{"{0} długości geograficznej zachodniej"} } digital{ bit{ dnam{"bity"} few{"{0} bity"} many{"{0} bitów"} - one{"{0} b"} + one{"{0} bit"} other{"{0} bitu"} } byte{ @@ -285,6 +289,13 @@ pl{ one{"{0} megabajt"} other{"{0} megabajta"} } + petabyte{ + dnam{"petabajty"} + few{"{0} petabajty"} + many{"{0} petabajtów"} + one{"{0} petabajt"} + other{"{0} petabajta"} + } terabit{ dnam{"terabity"} few{"{0} terabity"} @@ -316,6 +327,13 @@ pl{ other{"{0} dnia"} per{"{0} na dzień"} } + decade{ + dnam{"dekady"} + few{"{0} dekady"} + many{"{0} dekad"} + one{"{0} dekada"} + other{"{0} dekady"} + } hour{ dnam{"godziny"} few{"{0} godziny"} @@ -473,6 +491,13 @@ pl{ one{"{0} kilowatogodzina"} other{"{0} kilowatogodziny"} } + therm-us{ + dnam{"thermy amerykańskie"} + few{"{0} thermy amerykańskie"} + many{"{0} thermów amerykańskich"} + one{"{0} therm amerykański"} + other{"{0} therma amerykańskiego"} + } } force{ newton{ @@ -520,6 +545,29 @@ pl{ other{"{0} megaherca"} } } + graphics{ + em{ + dnam{"firety"} + few{"{0} firety"} + many{"{0} firetów"} + one{"{0} firet"} + other{"{0} firetu"} + } + megapixel{ + dnam{"megapiksele"} + few{"{0} megapiksele"} + many{"{0} megapikseli"} + one{"{0} megapiksel"} + other{"{0} megapiksela"} + } + pixel{ + dnam{"piksele"} + few{"{0} piksele"} + many{"{0} pikseli"} + one{"{0} piksel"} + other{"{0} piksela"} + } + } length{ astronomical-unit{ dnam{"jednostki astronomiczne"} @@ -643,7 +691,7 @@ pl{ few{"{0} punkty"} many{"{0} punktów"} one{"{0} punkt"} - other{"{0} pkt."} + other{"{0} punktu"} } solar-radius{ dnam{"promienie Słońca"} @@ -669,7 +717,7 @@ pl{ other{"{0} luksu"} } solar-luminosity{ - dnam{"jasność Słońca"} + dnam{"jasności Słońca"} few{"{0} jasności Słońca"} many{"{0} jasności Słońca"} one{"{0} jasność Słońca"} @@ -692,7 +740,7 @@ pl{ other{"{0} daltona"} } earth-mass{ - dnam{"masa Ziemi"} + dnam{"masy Ziemi"} few{"{0} masy Ziemi"} many{"{0} mas Ziemi"} one{"{0} masa Ziemi"} @@ -759,7 +807,7 @@ pl{ per{"{0} na funt"} } solar-mass{ - dnam{"masa Słońca"} + dnam{"masy Słońca"} few{"{0} masy Słońca"} many{"{0} mas Słońca"} one{"{0} masa Słońca"} @@ -818,6 +866,20 @@ pl{ } } pressure{ + atmosphere{ + dnam{"atmosfery"} + few{"{0} atmosfery"} + many{"{0} atmosfer"} + one{"{0} atmosfera"} + other{"{0} atmosfery"} + } + bar{ + dnam{"bary"} + few{"{0} bary"} + many{"{0} barów"} + one{"{0} bar"} + other{"{0} bara"} + } hectopascal{ dnam{"hektopaskale"} few{"{0} hektopaskale"} @@ -860,6 +922,13 @@ pl{ one{"{0} milimetr słupa rtęci"} other{"{0} milimetra słupa rtęci"} } + pascal{ + dnam{"paskale"} + few{"{0} paskale"} + many{"{0} paskali"} + one{"{0} paskal"} + other{"{0} paskala"} + } pound-per-square-inch{ dnam{"funty na cal kwadratowy"} few{"{0} funty na cal kwadratowy"} @@ -946,11 +1015,11 @@ pl{ } volume{ acre-foot{ - dnam{"akro-stopy"} - few{"{0} akro-stopy"} - many{"{0} akro-stóp"} - one{"{0} akro-stopa"} - other{"{0} akro-stopy"} + dnam{"akrostopy"} + few{"{0} akrostopy"} + many{"{0} akrostóp"} + one{"{0} akrostopa"} + other{"{0} akrostopy"} } barrel{ dnam{"baryłki"} @@ -1157,6 +1226,11 @@ pl{ other{"{0}″"} } } + concentr{ + percent{ + dnam{"%"} + } + } consumption{ liter-per-100kilometers{ dnam{"l/100 km"} @@ -1179,34 +1253,41 @@ pl{ per{"{0}/d."} } hour{ - dnam{"godzina"} + dnam{"g."} few{"{0} g."} many{"{0} g."} one{"{0} g."} other{"{0} g."} } + millisecond{ + dnam{"ms"} + } minute{ - dnam{"minuty"} + dnam{"min"} } month{ - dnam{"miesiąc"} + dnam{"m-c"} few{"{0} m-ce"} many{"{0} m-cy"} one{"{0} m-c"} other{"{0} m-ca"} } second{ - dnam{"sekundy"} + dnam{"s"} + few{"{0} s"} + many{"{0} s"} + one{"{0} s"} + other{"{0} s"} } week{ - dnam{"tydzień"} + dnam{"tydz."} few{"{0} tyg."} many{"{0} tyg."} one{"{0} tydz."} other{"{0} tyg."} } year{ - dnam{"rok"} + dnam{"r."} few{"{0} l."} many{"{0} l."} one{"{0} r."} @@ -1214,6 +1295,9 @@ pl{ } } length{ + centimeter{ + dnam{"cm"} + } foot{ dnam{"stopy"} } @@ -1226,7 +1310,7 @@ pl{ per{"{0}/cal"} } meter{ - dnam{"metr"} + dnam{"m"} } mile{ dnam{"mile"} @@ -1247,15 +1331,16 @@ pl{ } temperature{ celsius{ - few{"{0}°"} - many{"{0}°"} - one{"{0}°"} - other{"{0}°"} + dnam{"°C"} + few{"{0}°C"} + many{"{0}°C"} + one{"{0}°C"} + other{"{0}°C"} } } volume{ liter{ - dnam{"litr"} + dnam{"l"} } } } @@ -1286,6 +1371,10 @@ pl{ area{ acre{ dnam{"akry"} + few{"{0} akry"} + many{"{0} akrów"} + one{"{0} akr"} + other{"{0} akra"} } dunam{ dnam{"dunamy"} @@ -1297,6 +1386,36 @@ pl{ hectare{ dnam{"ha"} } + square-foot{ + dnam{"stopy kw."} + few{"{0} stopy kw."} + many{"{0} stóp kw."} + one{"{0} stopa kw."} + other{"{0} stopy kw."} + } + square-inch{ + dnam{"cale kw."} + few{"{0} cale kw."} + many{"{0} cali kw."} + one{"{0} cal kw."} + other{"{0} cala kw."} + per{"{0}/cal kw."} + } + square-mile{ + dnam{"mile kw."} + few{"{0} mile kw."} + many{"{0} mil kw."} + one{"{0} mila kw."} + other{"{0} mili kw."} + per{"{0}/mila kw."} + } + square-yard{ + dnam{"jardy kw."} + few{"{0} jardy kw."} + many{"{0} jardów kw."} + one{"{0} jard kw."} + other{"{0} jarda kw."} + } } concentr{ karat{ @@ -1310,7 +1429,7 @@ pl{ other{"{0} mg/dl"} } millimole-per-liter{ - dnam{"milimole/litr"} + dnam{"mmol/l"} few{"{0} mmol/l"} many{"{0} mmol/l"} one{"{0} mmol/l"} @@ -1326,14 +1445,7 @@ pl{ part-per-million{ dnam{"części/milion"} } - percent{ - dnam{"procent"} - } - permille{ - dnam{"promil"} - } permyriad{ - dnam{"punkt bazowy"} few{"{0}‱"} many{"{0}‱"} one{"{0}‱"} @@ -1375,14 +1487,14 @@ pl{ } digital{ bit{ - dnam{"bity"} + dnam{"b"} few{"{0} b"} many{"{0} b"} one{"{0} b"} other{"{0} b"} } byte{ - dnam{"bajty"} + dnam{"B"} few{"{0} B"} many{"{0} B"} one{"{0} B"} @@ -1405,18 +1517,20 @@ pl{ other{"{0} dnia"} per{"{0}/dzień"} } + decade{ + dnam{"dek"} + few{"{0} dek"} + many{"{0} dek"} + one{"{0} dek"} + other{"{0} dek"} + } hour{ - dnam{"godziny"} + dnam{"godz."} few{"{0} godz."} many{"{0} godz."} one{"{0} godz."} other{"{0} godz."} - } - millisecond{ - dnam{"milisekundy"} - } - minute{ - dnam{"minuty"} + per{"{0}/godz."} } month{ dnam{"miesiące"} @@ -1427,14 +1541,14 @@ pl{ per{"{0}/mies."} } second{ - dnam{"sekundy"} + dnam{"sek."} few{"{0} sek."} many{"{0} sek."} one{"{0} sek."} other{"{0} sek."} } week{ - dnam{"tygodnie"} + dnam{"tyg."} few{"{0} tyg."} many{"{0} tyg."} one{"{0} tydz."} @@ -1452,13 +1566,13 @@ pl{ } electric{ ampere{ - dnam{"ampery"} + dnam{"A"} } ohm{ - dnam{"omy"} + dnam{"Ω"} } volt{ - dnam{"wolty"} + dnam{"V"} } } energy{ @@ -1486,10 +1600,16 @@ pl{ joule{ dnam{"J"} } + therm-us{ + dnam{"thermy amer."} + few{"{0} thermy amer."} + many{"{0} thermów amer."} + one{"{0} therm amer."} + other{"{0} therma amer."} + } } force{ newton{ - dnam{"niuton"} few{"{0} N"} many{"{0} N"} one{"{0} N"} @@ -1503,6 +1623,15 @@ pl{ other{"{0} lbf"} } } + graphics{ + em{ + dnam{"firet"} + few{"{0} firety"} + many{"{0} firetów"} + one{"{0} firet"} + other{"{0} firetu"} + } + } length{ astronomical-unit{ dnam{"j.a."} @@ -1511,11 +1640,13 @@ pl{ one{"{0} j.a."} other{"{0} j.a."} } - centimeter{ - dnam{"centymetry"} - } foot{ dnam{"stopy"} + few{"{0} stopy"} + many{"{0} stóp"} + one{"{0} stopa"} + other{"{0} stopy"} + per{"{0}/stopa"} } inch{ dnam{"cale"} @@ -1525,11 +1656,8 @@ pl{ other{"{0} cala"} per{"{0}/cal"} } - light-year{ - dnam{"lata świetlne"} - } meter{ - dnam{"metry"} + dnam{"m"} } mile{ dnam{"mile"} @@ -1546,23 +1674,28 @@ pl{ other{"{0} Mm"} } point{ - dnam{"punkty"} + dnam{"pkt."} few{"{0} pkt."} many{"{0} pkt."} one{"{0} pkt."} other{"{0} pkt."} } solar-radius{ - dnam{"promienie Słońca"} few{"{0} R☉"} many{"{0} R☉"} one{"{0} R☉"} other{"{0} R☉"} } + yard{ + dnam{"jardy"} + few{"{0} jardy"} + many{"{0} jardów"} + one{"{0} jard"} + other{"{0} jarda"} + } } light{ solar-luminosity{ - dnam{"jasność Słońca"} few{"{0} L☉"} many{"{0} L☉"} one{"{0} L☉"} @@ -1585,7 +1718,6 @@ pl{ other{"{0} Da"} } earth-mass{ - dnam{"masa Ziemi"} few{"{0} M⊕"} many{"{0} M⊕"} one{"{0} M⊕"} @@ -1596,14 +1728,25 @@ pl{ } pound{ dnam{"funty"} + few{"{0} funty"} + many{"{0} funtów"} + one{"{0} funt"} + other{"{0} funta"} + per{"{0}/funt"} } solar-mass{ - dnam{"masa Słońca"} few{"{0} M☉"} many{"{0} M☉"} one{"{0} M☉"} other{"{0} M☉"} } + ton{ + dnam{"krótkie tony"} + few{"{0} krótkie tony"} + many{"{0} krótkich ton"} + one{"{0} krótka tona"} + other{"{0} krótkiej tony"} + } } power{ horsepower{ @@ -1641,6 +1784,22 @@ pl{ one{"{0} w."} other{"{0} w."} } + mile-per-hour{ + dnam{"mile/h"} + few{"{0} mile/h"} + many{"{0} mil/h"} + one{"{0} mila/h"} + other{"{0} mili/h"} + } + } + temperature{ + celsius{ + dnam{"st. C"} + few{"{0} st. C"} + many{"{0} st. C"} + one{"{0} st. C"} + other{"{0} st. C"} + } } torque{ newton-meter{ @@ -1659,6 +1818,13 @@ pl{ } } volume{ + acre-foot{ + dnam{"akrostopy"} + few{"{0} akrostopy"} + many{"{0} akrostóp"} + one{"{0} akrostopa"} + other{"{0} akrostopy"} + } barrel{ dnam{"baryłki"} few{"{0} bbl"} @@ -1673,8 +1839,47 @@ pl{ one{"{0} cl"} other{"{0} cl"} } + cubic-foot{ + dnam{"stopy sześc."} + few{"{0} stopy sześc."} + many{"{0} stóp sześc."} + one{"{0} stopa sześc."} + other{"{0} stopy sześc."} + } + cubic-inch{ + dnam{"cale sześc."} + few{"{0} cale sześc."} + many{"{0} cali sześc."} + one{"{0} cal sześc."} + other{"{0} cala sześc."} + } + cubic-mile{ + dnam{"mile sześc."} + few{"{0} mile sześc."} + many{"{0} mil sześc."} + one{"{0} mila sześc."} + other{"{0} mili sześc."} + } + cubic-yard{ + dnam{"jardy sześc."} + few{"{0} jardy sześc."} + many{"{0} jardów sześc."} + one{"{0} jard sześc."} + other{"{0} jarda sześc."} + } cup{ dnam{"ćwierćkwarty"} + few{"{0} ćwierćkwarty"} + many{"{0} ćwierćkwart"} + one{"{0} ćwierćkwarta"} + other{"{0} ćwierćkwarty"} + } + cup-metric{ + dnam{"ćwierćkwarty metr."} + few{"{0} ćwierćkwarty metr."} + many{"{0} ćwierćkwart metr."} + one{"{0} ćwierćkwarta metr."} + other{"{0} ćwierćkwarty metr."} } deciliter{ dnam{"dl"} @@ -1739,6 +1944,24 @@ pl{ } pint{ dnam{"półkwarty"} + few{"{0} półkwarty"} + many{"{0} półkwart"} + one{"{0} półkwarta"} + other{"{0} półkwarty"} + } + pint-metric{ + dnam{"półkwarty metr."} + few{"{0} półkwarty metr."} + many{"{0} półkwart metr."} + one{"{0} półkwarta metr."} + other{"{0} półkwarty metr."} + } + quart{ + dnam{"kwarty"} + few{"{0} kwarty"} + many{"{0} kwart"} + one{"{0} kwarta"} + other{"{0} kwarty"} } tablespoon{ dnam{"ł. stoł."} diff --git a/source/data/unit/ps.txt b/source/data/unit/ps.txt index ebbb2dd..eead82c 100644 --- a/source/data/unit/ps.txt +++ b/source/data/unit/ps.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ps{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -14,6 +14,11 @@ ps{ one{"{0} د جاذبې قوه"} other{"{0} د جاذبې قوه"} } + meter-per-second-squared{ + dnam{"ميترز في مربع سيکنډ"} + one{"{0} ميتر في مربع سيکنډ"} + other{"{0} ميتر في مربع سيکنډ"} + } } angle{ arc-minute{ @@ -81,6 +86,12 @@ ps{ other{"{0} مربع کيلو متره"} per{"{0} في مربع کيلو متر"} } + square-meter{ + dnam{"مربع متره"} + one{"{0} مربع متر"} + other{"{0} مربع متره"} + per{"{0} في مربع متر"} + } square-mile{ dnam{"مربع ميل"} one{"{0} مربع ميل"} @@ -118,7 +129,7 @@ ps{ other{"{0} مولز"} } part-per-million{ - dnam{"پاړتس في مليون"} + dnam{"پارټتس في مليون"} one{"{0} پارټ في مليون"} other{"{0} پارټس في مليون"} } @@ -225,17 +236,30 @@ ps{ } } duration{ + century{ + dnam{"پېړۍ"} + one{"{0} پېړۍ"} + other{"{0} پيړۍ"} + } day{ dnam{"ورځې"} one{"{0} ورځ"} other{"{0} ورځې"} per{"{0} په هره ورځ کې"} } + decade{ + dnam{"لسيزې"} + one{"{0} لسيزه"} + other{"{0} لسيزې"} + } microsecond{ dnam{"مايکرو ثانيه"} one{"{0} μs"} other{"{0} μs"} } + minute{ + dnam{"دقيقې"} + } month{ dnam{"مياشتې"} one{"{0} مياشت"} @@ -243,10 +267,13 @@ ps{ per{"{0}/m"} } nanosecond{ - dnam{"نينو ثانيه"} + dnam{"نينو ثانيې"} one{"{0} ns"} other{"{0} ns"} } + second{ + dnam{"ثانيې"} + } week{ dnam{"اونۍ"} one{"اونۍ"} @@ -358,6 +385,11 @@ ps{ other{"{0} ميګا هرټز"} } } + graphics{ + megapixel{ + dnam{"ميګا فکسلسز"} + } + } length{ astronomical-unit{ dnam{"فلکي احدې"} @@ -439,6 +471,11 @@ ps{ one{"{0} پيکو متر"} other{"{0} پيکو متره"} } + point{ + dnam{"نمرې"} + one{"{0} نمره"} + other{"{0} نمرې"} + } solar-radius{ dnam{"لمريزې وړانګې"} one{"{0} لمريزه وړانګه"} @@ -451,6 +488,9 @@ ps{ } } light{ + lux{ + dnam{"لکس"} + } solar-luminosity{ dnam{"لمريز ځلښتونه"} one{"{0} لمريز ځلښت"} @@ -507,9 +547,9 @@ ps{ per{"{0} في اونس"} } ounce-troy{ - dnam{"ټروي اونسز"} - one{"{0} ټروي اونس"} - other{"{0} ټروي اونسز"} + dnam{"ټراي اونسز"} + one{"{0} ټرای اونس"} + other{"{0} ټرای اونسز"} } pound{ dnam{"پاونډز"} @@ -562,14 +602,14 @@ ps{ } pressure{ atmosphere{ - dnam{"اتموسفيرز"} - one{"{0} اتموسفير"} - other{"{0} اتموسفيرز"} + dnam{"اټموسپیرز"} + one{"{0} اتموسپير"} + other{"{0} اتموسپيرز"} } hectopascal{ - dnam{"هيکټو پاسکلز"} - one{"{0} هيکټو پاسکل"} - other{"{0} هيکټو پاسکلز"} + dnam{"هيکټو پاسکیلز"} + one{"{0} هيکټو پاسکیل"} + other{"{0} هيکټو پاسکیلز"} } inch-hg{ dnam{"د پارې انچې"} @@ -577,14 +617,14 @@ ps{ other{"{0} د پارې انچې"} } kilopascal{ - dnam{"کيلو پاسکلز"} - one{"{0} کيلو پاسکل"} - other{"{0} کيلو پاسکلز"} + dnam{"کيلو پاسکیلز"} + one{"{0} کيلو پاسکیل"} + other{"{0} کيلو پاسکیلز"} } megapascal{ - dnam{"ميګا پاسکلز"} - one{"{0} ميګا پاسکل"} - other{"{0} ميګا پاسکلز"} + dnam{"ميګا پاسکلیلز"} + one{"{0} ميګا پاسکیل"} + other{"{0} ميګا پاسکیلز"} } millibar{ dnam{"ملي بارز"} @@ -596,10 +636,13 @@ ps{ one{"{0} د پارې ملي متر"} other{"{0} د پارې ملي مترز"} } + pascal{ + dnam{"پاسکیلز"} + } pound-per-square-inch{ - dnam{"پاونډ في مربع انچ"} + dnam{"پاونډز في مربع انچ"} one{"{0} پاونډ في مربع انچ"} - other{"{0} پاونډ في مربع انچ"} + other{"{0} پاونډز في مربع انچ"} } } speed{ @@ -812,7 +855,7 @@ ps{ minute{ dnam{"min"} one{"{0} min"} - other{"{0} min"} + other{"{0}m"} } month{ dnam{"مياشت"} @@ -885,7 +928,6 @@ ps{ } volume{ liter{ - dnam{"liter"} one{"{0}L"} other{"{0}L"} } @@ -910,7 +952,7 @@ ps{ other{"{0}′"} } arc-second{ - dnam{"آرکیسی"} + dnam{"آرکسیکس"} one{"{0}″"} other{"{0}″"} } @@ -1028,8 +1070,6 @@ ps{ } permyriad{ dnam{"زرمه"} - one{"{0}‱"} - other{"{0}‱"} } } consumption{ @@ -1130,6 +1170,11 @@ ps{ other{"{0} ورځې"} per{"{0}/d"} } + decade{ + dnam{"لسيزه"} + one{"{0} لسيزه"} + other{"{0} لسيزه"} + } hour{ dnam{"ساعتونه"} one{"{0} h"} @@ -1164,7 +1209,7 @@ ps{ other{"{0} ns"} } second{ - dnam{"sec"} + dnam{"ثانيې"} one{"{0} s"} other{"{0} s"} per{"{0}/s"} @@ -1217,8 +1262,6 @@ ps{ } electronvolt{ dnam{"اليکټران وولټ"} - one{"{0} eV"} - other{"{0} eV"} } foodcalorie{ dnam{"Cal"} @@ -1249,13 +1292,9 @@ ps{ force{ newton{ dnam{"نيوټن"} - one{"{0} N"} - other{"{0} N"} } pound-force{ dnam{"پاونډ قوه"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1373,8 +1412,6 @@ ps{ } solar-radius{ dnam{"لمريزې وړانګې"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"ګزه"} @@ -1390,8 +1427,6 @@ ps{ } solar-luminosity{ dnam{"لمريز ځلښتونه"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ @@ -1402,13 +1437,9 @@ ps{ } dalton{ dnam{"ډالټنز"} - one{"{0} Da"} - other{"{0} Da"} } earth-mass{ dnam{"د زمکې حجمونه"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"ګرامز"} @@ -1456,8 +1487,6 @@ ps{ } solar-mass{ dnam{"لمريز حجم"} - one{"{0} M☉"} - other{"{0} M☉"} } ton{ dnam{"ټنز"} @@ -1513,16 +1542,6 @@ ps{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} one{"{0} mbar"} @@ -1583,18 +1602,6 @@ ps{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"acre ft"} @@ -1603,8 +1610,6 @@ ps{ } barrel{ dnam{"بېرل"} - one{"{0} bbl"} - other{"{0} bbl"} } centiliter{ dnam{"cL"} @@ -1670,8 +1675,6 @@ ps{ } fluid-ounce-imperial{ dnam{"امپيريل مايع اونس"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} } gallon{ dnam{"gal"} diff --git a/source/data/unit/ps_PK.txt b/source/data/unit/ps_PK.txt index 450e196..08357d4 100644 --- a/source/data/unit/ps_PK.txt +++ b/source/data/unit/ps_PK.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ps_PK{ - Version{"2.1.49.34"} + Version{"36"} units{ acceleration{ g-force{ diff --git a/source/data/unit/pt.txt b/source/data/unit/pt.txt index 5981a3c..f064e59 100644 --- a/source/data/unit/pt.txt +++ b/source/data/unit/pt.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pt{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -54,9 +54,9 @@ pt{ other{"{0} acres"} } dunam{ - dnam{"dunams"} + dnam{"dunans"} one{"{0} dunam"} - other{"{0} dunams"} + other{"{0} dunans"} } hectare{ dnam{"hectares"} @@ -144,7 +144,6 @@ pt{ other{"{0} por mil"} } permyriad{ - dnam{"ponto base"} one{"{0} ponto base"} other{"{0} pontos base"} } @@ -173,17 +172,20 @@ pt{ } coordinate{ dnam{"direção cardeal"} - west{"{0}O"} + east{"{0} leste"} + north{"{0} norte"} + south{"{0} sul"} + west{"{0} oeste"} } digital{ bit{ dnam{"bits"} - one{"{0} bit"} + one{"{0} bits"} other{"{0} bits"} } byte{ dnam{"bytes"} - one{"{0} byte"} + one{"{0} bytes"} other{"{0} bytes"} } gigabit{ @@ -236,7 +238,7 @@ pt{ century{ dnam{"séculos"} one{"{0} século"} - other{"{0} sécs."} + other{"{0} séculos"} } day{ dnam{"dias"} @@ -244,6 +246,11 @@ pt{ other{"{0} dias"} per{"{0} por dia"} } + decade{ + dnam{"décadas"} + one{"{0} década"} + other{"{0} décadas"} + } hour{ dnam{"horas"} one{"{0} hora"} @@ -359,6 +366,11 @@ pt{ one{"{0} quilowatt-hora"} other{"{0} quilowatts-hora"} } + therm-us{ + dnam{"unidades térmicas norte-americanas"} + one{"{0} unidade térmica norte-americana"} + other{"{0} unidades térmicas norte-americanas"} + } } force{ newton{ @@ -394,6 +406,41 @@ pt{ other{"{0} megahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"pontos por centímetro"} + one{"{0} ponto por centímetro"} + other{"{0} pontos por centímetro"} + } + dot-per-inch{ + dnam{"pontos por polegada"} + one{"{0} ponto por polegada"} + other{"{0} pontos por polegada"} + } + em{ + dnam{"em tipográfico"} + } + megapixel{ + dnam{"megapixels"} + one{"{0} megapixel"} + other{"{0} megapixels"} + } + pixel{ + dnam{"pixels"} + one{"{0} pixel"} + other{"{0} pixels"} + } + pixel-per-centimeter{ + dnam{"pixels por centímetro"} + one{"{0} pixel por centímetro"} + other{"{0} pixels por centímetro"} + } + pixel-per-inch{ + dnam{"pixels por polegada"} + one{"{0} pixel por polegada"} + other{"{0} pixels por polegada"} + } + } length{ astronomical-unit{ dnam{"unidades astronômicas"} @@ -530,9 +577,9 @@ pt{ other{"{0} daltons"} } earth-mass{ - dnam{"Massas da Terra"} - one{"{0} Massa da Terra"} - other{"{0} Massas da Terra"} + dnam{"massa terrestre"} + one{"{0} massa terrestre"} + other{"{0} massas terrestres"} } gram{ dnam{"gramas"} @@ -632,6 +679,11 @@ pt{ one{"{0} atmosfera"} other{"{0} atmosferas"} } + bar{ + dnam{"bars"} + one{"{0} bar"} + other{"{0} bars"} + } hectopascal{ dnam{"hectopascais"} one{"{0} hectopascal"} @@ -662,6 +714,16 @@ pt{ one{"{0} milímetro de mercúrio"} other{"{0} milímetros de mercúrio"} } + pascal{ + dnam{"pascais"} + one{"{0} pascal"} + other{"{0} pascais"} + } + pound-per-square-inch{ + dnam{"libras por polegada quadrada"} + one{"{0} libra por polegada quadrada"} + other{"{0} libras por polegada quadrada"} + } } speed{ kilometer-per-hour{ @@ -670,7 +732,7 @@ pt{ other{"{0} quilômetros por hora"} } knot{ - dnam{"nó"} + dnam{"nós"} one{"{0} nó"} other{"{0} nós"} } @@ -876,6 +938,7 @@ pt{ } concentr{ percent{ + dnam{"%"} one{"{0}%"} other{"{0}%"} } @@ -889,6 +952,7 @@ pt{ } coordinate{ dnam{"direção"} + east{"{0}L"} west{"{0}O"} } duration{ @@ -906,6 +970,9 @@ pt{ hour{ dnam{"hora"} } + millisecond{ + dnam{"ms"} + } month{ dnam{"mês"} one{"{0} mês"} @@ -963,9 +1030,10 @@ pt{ other{"{0} anos-luz"} } meter{ - dnam{"metro"} + dnam{"m"} } mile{ + dnam{"mil"} one{"{0} milha"} other{"{0} milhas"} } @@ -986,6 +1054,12 @@ pt{ } gram{ dnam{"grama"} + one{"{0}g"} + other{"{0}g"} + } + kilogram{ + one{"{0}kg"} + other{"{0}kg"} } stone{ dnam{"stone"} @@ -1016,6 +1090,10 @@ pt{ } } speed{ + kilometer-per-hour{ + one{"{0}km/h"} + other{"{0}km/h"} + } knot{ dnam{"nó"} one{"{0} nó"} @@ -1024,6 +1102,7 @@ pt{ } temperature{ celsius{ + dnam{"°C"} one{"{0} °C"} other{"{0} °C"} } @@ -1033,8 +1112,18 @@ pt{ } } volume{ + cubic-foot{ + dnam{"ft³"} + } + fluid-ounce{ + dnam{"fl. oz."} + one{"{0} fl. oz."} + other{"{0} fl. oz."} + } liter{ dnam{"litro"} + one{"{0}l"} + other{"{0}l"} } } } @@ -1070,16 +1159,13 @@ pt{ dnam{"acres"} } dunam{ - dnam{"dunams"} + dnam{"dunans"} one{"{0} dunam"} - other{"{0} dunams"} + other{"{0} dunans"} } hectare{ dnam{"hectares"} } - square-centimeter{ - per{"{0} por cm²"} - } square-foot{ dnam{"pés²"} } @@ -1091,7 +1177,6 @@ pt{ } square-meter{ dnam{"metros²"} - per{"{0} por m²"} } square-mile{ dnam{"milhas²"} @@ -1116,11 +1201,6 @@ pt{ one{"{0} mmol/l"} other{"{0} mmol/l"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"partes/milhão"} } @@ -1136,8 +1216,6 @@ pt{ } permyriad{ dnam{"ponto base"} - one{"{0}‱"} - other{"{0}‱"} } } consumption{ @@ -1164,9 +1242,20 @@ pt{ } coordinate{ dnam{"direção"} - west{"{0}O"} + east{"{0} L"} + north{"{0} N"} + south{"{0} S"} + west{"{0} O"} } digital{ + bit{ + one{"{0} bits"} + other{"{0} bits"} + } + byte{ + one{"{0} bytes"} + other{"{0} bytes"} + } gigabit{ dnam{"Gbit"} } @@ -1209,6 +1298,11 @@ pt{ other{"{0} dias"} per{"{0}/dia"} } + decade{ + dnam{"déc."} + one{"{0} déc."} + other{"{0} déc."} + } hour{ dnam{"horas"} } @@ -1260,13 +1354,16 @@ pt{ energy{ british-thermal-unit{ dnam{"BTU"} - one{"{0} Btu"} - other{"{0} Btu"} + one{"{0} BTU"} + other{"{0} BTU"} } electronvolt{ dnam{"elétron-volt"} - one{"{0} eV"} - other{"{0} eV"} + } + foodcalorie{ + dnam{"cal"} + one{"{0} cal"} + other{"{0} cal"} } joule{ dnam{"joules"} @@ -1277,17 +1374,26 @@ pt{ kilowatt-hour{ dnam{"kW-hora"} } + therm-us{ + dnam{"thm EUA"} + one{"{0} thm EUA"} + other{"{0} thm EUA"} + } } force{ newton{ dnam{"newton"} - one{"{0} N"} - other{"{0} N"} } pound-force{ dnam{"libra-força"} - one{"{0} lbf"} - other{"{0} lbf"} + } + } + graphics{ + megapixel{ + dnam{"megapixels"} + } + pixel{ + dnam{"pixels"} } } length{ @@ -1322,7 +1428,7 @@ pt{ other{"{0} anos-luz"} } meter{ - dnam{"metros"} + dnam{"m"} } mile{ dnam{"milhas"} @@ -1340,8 +1446,6 @@ pt{ } solar-radius{ dnam{"raios solares"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"jardas"} @@ -1353,29 +1457,28 @@ pt{ } solar-luminosity{ dnam{"luminosidades solares"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ carat{ dnam{"quilates"} - one{"{0} ql"} - other{"{0} ql"} + one{"{0} ct"} + other{"{0} ct"} } dalton{ dnam{"daltons"} - one{"{0} Da"} - other{"{0} Da"} } earth-mass{ - dnam{"Massas da Terra"} - one{"{0} M⊕"} - other{"{0} M⊕"} + dnam{"massas terrestres"} } gram{ dnam{"gramas"} } + metric-ton{ + dnam{"t"} + one{"{0} t"} + other{"{0} t"} + } ounce-troy{ dnam{"oz troy"} } @@ -1384,14 +1487,14 @@ pt{ } solar-mass{ dnam{"massas solares"} - one{"{0} M☉"} - other{"{0} M☉"} } stone{ dnam{"stones"} } ton{ dnam{"toneladas"} + one{"{0} tn"} + other{"{0} tn"} } } power{ @@ -1410,15 +1513,9 @@ pt{ one{"{0} atm"} other{"{0} atm"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} + bar{ + one{"{0} bar"} + other{"{0} bars"} } millimeter-of-mercury{ dnam{"mmHg"} @@ -1453,18 +1550,6 @@ pt{ other{"{0} °F"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"acre-pés"} @@ -1473,8 +1558,6 @@ pt{ } barrel{ dnam{"barril"} - one{"{0} bbl"} - other{"{0} bbl"} } centiliter{ dnam{"cl"} @@ -1512,11 +1595,6 @@ pt{ one{"{0} fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} one{"{0} gal"} @@ -1537,6 +1615,11 @@ pt{ liter{ dnam{"litros"} } + megaliter{ + dnam{"Ml"} + one{"{0} Ml"} + other{"{0} Ml"} + } milliliter{ dnam{"ml"} one{"{0} ml"} @@ -1554,14 +1637,14 @@ pt{ dnam{"qts"} } tablespoon{ - dnam{"CS"} - one{"{0} CS"} - other{"{0} CS"} + dnam{"c. sopa"} + one{"{0} c. sopa"} + other{"{0} c. sopa"} } teaspoon{ - dnam{"cc"} - one{"{0} cc"} - other{"{0} cc"} + dnam{"c. chá"} + one{"{0} c. chá"} + other{"{0} c. chá"} } } } diff --git a/source/data/unit/pt_AO.txt b/source/data/unit/pt_AO.txt index 747a081..78a8a40 100644 --- a/source/data/unit/pt_AO.txt +++ b/source/data/unit/pt_AO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_AO{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/unit/pt_CH.txt b/source/data/unit/pt_CH.txt index 623220c..55f6857 100644 --- a/source/data/unit/pt_CH.txt +++ b/source/data/unit/pt_CH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_CH{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/unit/pt_CV.txt b/source/data/unit/pt_CV.txt index 10dcb7a..aa31686 100644 --- a/source/data/unit/pt_CV.txt +++ b/source/data/unit/pt_CV.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_CV{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/unit/pt_GQ.txt b/source/data/unit/pt_GQ.txt index 00f271d..1ba7e1f 100644 --- a/source/data/unit/pt_GQ.txt +++ b/source/data/unit/pt_GQ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_GQ{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/unit/pt_GW.txt b/source/data/unit/pt_GW.txt index 60f99bb..f1125a1 100644 --- a/source/data/unit/pt_GW.txt +++ b/source/data/unit/pt_GW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_GW{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/unit/pt_LU.txt b/source/data/unit/pt_LU.txt index c20ea4b..19ca221 100644 --- a/source/data/unit/pt_LU.txt +++ b/source/data/unit/pt_LU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_LU{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/unit/pt_MO.txt b/source/data/unit/pt_MO.txt index 52f866b..0edb56c 100644 --- a/source/data/unit/pt_MO.txt +++ b/source/data/unit/pt_MO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_MO{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/unit/pt_MZ.txt b/source/data/unit/pt_MZ.txt index 8a51997..c189063 100644 --- a/source/data/unit/pt_MZ.txt +++ b/source/data/unit/pt_MZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_MZ{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/unit/pt_PT.txt b/source/data/unit/pt_PT.txt index 7e599e6..255eeda 100644 --- a/source/data/unit/pt_PT.txt +++ b/source/data/unit/pt_PT.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pt_PT{ - Version{"2.1.49.82"} + Version{"36"} units{ acceleration{ g-force{ @@ -49,8 +49,6 @@ pt_PT{ } coordinate{ east{"{0} este"} - north{"{0} norte"} - south{"{0} sul"} west{"{0} Oeste"} } digital{ @@ -64,10 +62,6 @@ pt_PT{ } } duration{ - century{ - one{"{0} século"} - other{"{0} séculos"} - } hour{ per{"{0}/h"} } @@ -87,6 +81,28 @@ pt_PT{ other{"{0} quilocalorias"} } } + graphics{ + megapixel{ + dnam{"megapíxeis"} + one{"{0} megapíxel"} + other{"{0} megapíxeis"} + } + pixel{ + dnam{"píxel"} + one{"{0} píxel"} + other{"{0} píxeis"} + } + pixel-per-centimeter{ + dnam{"píxeis por centímetro"} + one{"{0} píxel por centímetro"} + other{"{0} píxeis por centímetro"} + } + pixel-per-inch{ + dnam{"píxeis por polegada"} + one{"{0} píxel por polegada"} + other{"{0} píxeis por polegada"} + } + } length{ astronomical-unit{ dnam{"unidades astronómicas"} @@ -118,6 +134,12 @@ pt_PT{ other{"{0} picómetros"} } } + mass{ + earth-mass{ + one{"{0} massa da Terra"} + other{"{0} massas da Terra"} + } + } pressure{ pound-per-square-inch{ dnam{"psi"} @@ -131,9 +153,13 @@ pt_PT{ one{"{0} quilómetro por hora"} other{"{0} quilómetros por hora"} } + knot{ + dnam{"nó"} + } } temperature{ generic{ + one{"{0}°"} other{"{0}°"} } } @@ -202,11 +228,11 @@ pt_PT{ other{"{0} h"} } millisecond{ - dnam{"ms"} one{"{0} ms"} other{"{0} ms"} } minute{ + dnam{"min"} one{"{0} min"} other{"{0} min"} } @@ -231,6 +257,7 @@ pt_PT{ other{"{0} km"} } meter{ + dnam{"metro"} one{"{0} m"} other{"{0} m"} } @@ -300,7 +327,6 @@ pt_PT{ } temperature{ celsius{ - dnam{"°C"} one{"{0}°C"} other{"{0}°C"} } @@ -425,9 +451,6 @@ pt_PT{ } coordinate{ east{"{0} E"} - north{"{0} N"} - south{"{0} S"} - west{"{0} O"} } digital{ bit{ @@ -577,6 +600,19 @@ pt_PT{ other{"{0} MHz"} } } + graphics{ + dot-per-inch{ + dnam{"ppp"} + one{"{0} ppp"} + other{"{0} ppp"} + } + megapixel{ + dnam{"megapíxeis"} + } + pixel{ + dnam{"píxeis"} + } + } length{ centimeter{ dnam{"cm"} @@ -597,6 +633,7 @@ pt_PT{ other{"{0} km"} } meter{ + dnam{"metros"} one{"{0} m"} other{"{0} m"} } @@ -611,6 +648,7 @@ pt_PT{ } mile-scandinavian{ dnam{"smi"} + one{"{0} smi"} other{"{0} smi"} } millimeter{ @@ -650,9 +688,8 @@ pt_PT{ } } mass{ - carat{ - one{"{0} ct"} - other{"{0} ct"} + earth-mass{ + dnam{"massas da Terra"} } gram{ one{"{0} g"} @@ -663,11 +700,6 @@ pt_PT{ one{"{0} kg"} other{"{0} kg"} } - metric-ton{ - dnam{"t"} - one{"{0} t"} - other{"{0} t"} - } microgram{ dnam{"µg"} one{"{0} µg"} @@ -863,6 +895,11 @@ pt_PT{ one{"{0} cs"} other{"{0} cs"} } + teaspoon{ + dnam{"cc"} + one{"{0} cc"} + other{"{0} cc"} + } } } } diff --git a/source/data/unit/pt_ST.txt b/source/data/unit/pt_ST.txt index 83f08a8..a05804b 100644 --- a/source/data/unit/pt_ST.txt +++ b/source/data/unit/pt_ST.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_ST{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/unit/pt_TL.txt b/source/data/unit/pt_TL.txt index dcee0a3..d6937ec 100644 --- a/source/data/unit/pt_TL.txt +++ b/source/data/unit/pt_TL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_TL{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/unit/qu.txt b/source/data/unit/qu.txt index 173867d..2622bd0 100644 --- a/source/data/unit/qu.txt +++ b/source/data/unit/qu.txt @@ -1,10 +1,396 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License qu{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} ms{"m:ss"} } + units{ + area{ + acre{ + dnam{"acre"} + other{"{0} acre"} + } + dunam{ + dnam{"dunam"} + other{"{0} dunam"} + } + hectare{ + dnam{"hectárea"} + other{"{0} hectárea"} + } + square-centimeter{ + dnam{"centímetro cuadrado"} + other{"{0} centímetro cuadrado"} + per{"{0}/centímetro cuadrado"} + } + square-foot{ + dnam{"pie cuadrado"} + other{"{0} pie cuadrado"} + } + square-inch{ + dnam{"pulgada cuadrada"} + other{"{0} pulgada cuadrada"} + per{"{0}/pulgada cuadrada"} + } + square-kilometer{ + dnam{"kilómetro cuadrado"} + other{"{0} kilómetro cuadrado"} + per{"{0}/kilómetro cuadrado"} + } + square-meter{ + dnam{"metro cuadrado"} + other{"{0} metro cuadrado"} + per{"{0}/metro cuadrado"} + } + square-mile{ + dnam{"milla cuadrada"} + other{"{0} milla cuadrada"} + per{"{0}/milla cuadrada"} + } + square-yard{ + dnam{"yarda cuadrada"} + other{"{0} yarda cuadrada"} + } + } + duration{ + century{ + dnam{"siglos"} + other{"{0} siglos"} + } + day{ + dnam{"punchaw"} + other{"{0} punchaw"} + per{"{0}/p"} + } + decade{ + dnam{"décadas"} + other{"{0} décadas"} + } + hour{ + dnam{"hora"} + other{"{0} hora"} + per{"{0}/h"} + } + microsecond{ + dnam{"microsegundo"} + other{"{0} microsegundo"} + } + millisecond{ + dnam{"milisegundo"} + other{"{0} milisegundo"} + } + minute{ + dnam{"minuto"} + other{"{0} minuto"} + per{"{0} por minuto"} + } + month{ + dnam{"killa"} + other{"{0} killa"} + per{"{0}/k"} + } + nanosecond{ + dnam{"nanosegundo"} + other{"{0} nanosegundo"} + } + second{ + dnam{"segundo"} + other{"{0} segundo"} + per{"{0} por segundo"} + } + week{ + dnam{"semana"} + other{"{0} semana"} + per{"{0} por semana"} + } + year{ + dnam{"wata"} + other{"{0} wata"} + per{"{0} por wata"} + } + } + graphics{ + dot-per-centimeter{ + dnam{"puntos por centímetro"} + other{"{0} puntos por centímetro"} + } + dot-per-inch{ + dnam{"puntos por pulgada"} + other{"{0} puntos por pulgada"} + } + em{ + dnam{"tipográfico em"} + other{"{0} tipográfico em"} + } + megapixel{ + dnam{"megapixels"} + other{"{0} megapixels"} + } + pixel{ + dnam{"pixels"} + other{"{0} pixels"} + } + pixel-per-centimeter{ + dnam{"pixels por centímetro"} + other{"{0} pixels por centímetro"} + } + pixel-per-inch{ + dnam{"pixels por pulgada"} + other{"{0} pixels por pulgada"} + } + } + length{ + astronomical-unit{ + dnam{"unidades astronómicas"} + other{"{0} unidades astronómicas"} + } + centimeter{ + dnam{"centímetro"} + other{"{0} centímetro"} + per{"{0}/centímetro"} + } + decimeter{ + dnam{"decímetro"} + other{"{0} decímetro"} + } + foot{ + dnam{"pie"} + other{"{0} pie"} + per{"{0}/pie"} + } + inch{ + dnam{"pulgada"} + other{"{0} pulgada"} + per{"{0}/pulgada"} + } + kilometer{ + dnam{"kilómetro"} + other{"{0} kilómetro"} + per{"{0}/km"} + } + light-year{ + dnam{"años luz"} + other{"{0} años luz"} + } + meter{ + dnam{"metro"} + other{"{0} metro"} + per{"{0}/m"} + } + micrometer{ + dnam{"micrómetro"} + other{"{0} micrómetro"} + } + mile{ + dnam{"milla"} + other{"{0} milla"} + } + mile-scandinavian{ + dnam{"milla escandinava"} + other{"{0} milla escandinava"} + } + millimeter{ + dnam{"milímetro"} + other{"{0} milímetro"} + } + nanometer{ + dnam{"nanómetro"} + other{"{0} nanómetro"} + } + nautical-mile{ + dnam{"millas naúticas"} + other{"{0} millas naúticas"} + } + parsec{ + dnam{"parsecs"} + other{"{0} parsecs"} + } + picometer{ + dnam{"picómetro"} + other{"{0} picómetro"} + } + point{ + dnam{"puntos"} + other{"{0} puntos"} + } + solar-radius{ + dnam{"radiación solar"} + other{"{0} radiación solar"} + } + yard{ + dnam{"yarda"} + other{"{0} yarda"} + } + } + volume{ + acre-foot{ + dnam{"acre-pie"} + other{"{0} acre-pie"} + } + barrel{ + dnam{"barril"} + other{"{0} barril"} + } + centiliter{ + dnam{"centilitro"} + other{"{0} centilitro"} + } + cubic-centimeter{ + dnam{"centímetro cúbico"} + other{"{0} centímetro cúbico"} + per{"{0}/centímetro cúbico"} + } + cubic-foot{ + dnam{"pie cúbico"} + other{"{0} pie cúbico"} + } + cubic-inch{ + dnam{"pulgada cúbica"} + other{"{0} pulgada cúbica"} + } + cubic-kilometer{ + dnam{"kilómetro cúbico"} + other{"{0} kilómetro cúbico"} + } + cubic-meter{ + dnam{"metro cúbico"} + other{"{0} metro cúbico"} + per{"{0}/metro cúbico"} + } + cubic-mile{ + dnam{"milla cúbica"} + other{"{0} milla cúbica"} + } + cubic-yard{ + dnam{"yarda cúbica"} + other{"{0} yarda cúbica"} + } + cup{ + dnam{"taza"} + other{"{0} taza"} + } + cup-metric{ + dnam{"taza métrica"} + other{"{0} taza métrica"} + } + deciliter{ + dnam{"decilitro"} + other{"{0} decilitro"} + } + fluid-ounce{ + dnam{"Onza líquida"} + other{"{0} US Onza líquida"} + } + fluid-ounce-imperial{ + dnam{"UK Onza líquida"} + other{"{0} UK Onza líquida"} + } + gallon{ + dnam{"galón"} + other{"{0} US galón"} + per{"{0}/US galón"} + } + gallon-imperial{ + dnam{"UK galón"} + other{"{0} UK galón"} + per{"{0}/UK galón"} + } + hectoliter{ + dnam{"hectolitro"} + other{"{0} hectolitro"} + } + liter{ + dnam{"litro"} + other{"{0} litro"} + per{"{0}/litro"} + } + megaliter{ + dnam{"megalitro"} + other{"{0} megalitro"} + } + milliliter{ + dnam{"mililitro"} + other{"{0} mililitro"} + } + pint{ + dnam{"pinta"} + other{"{0} pinta"} + } + pint-metric{ + dnam{"pinta métrica"} + other{"{0} pinta métrica"} + } + quart{ + dnam{"cuarto"} + other{"{0} cuarto"} + } + tablespoon{ + dnam{"cucharada"} + other{"{0} cucharada"} + } + teaspoon{ + dnam{"cucharadita"} + other{"{0} cucharadita"} + } + } + } + unitsNarrow{ + duration{ + day{ + dnam{"punchaw"} + other{"{0} p"} + } + hour{ + dnam{"hora"} + other{"{0} h"} + } + millisecond{ + dnam{"milisegundo"} + other{"{0} ms"} + } + month{ + dnam{"killa"} + other{"{0} k"} + } + second{ + dnam{"segundo"} + other{"{0} s"} + } + week{ + dnam{"semana"} + other{"{0} s"} + } + year{ + dnam{"wata"} + other{"{0} w"} + } + } + length{ + centimeter{ + dnam{"cm"} + other{"{0} cm"} + } + kilometer{ + dnam{"km"} + other{"{0}km"} + } + meter{ + dnam{"metro"} + other{"{0} m"} + } + millimeter{ + dnam{"mm"} + other{"{0} mm"} + } + } + volume{ + liter{ + dnam{"litro"} + other{"{0} litro"} + } + } + } } diff --git a/source/data/unit/rm.txt b/source/data/unit/rm.txt index b68f134..eb4c466 100644 --- a/source/data/unit/rm.txt +++ b/source/data/unit/rm.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License rm{ - Version{"2.1.48.4"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/rn.txt b/source/data/unit/rn.txt index 58b9736..dde933e 100644 --- a/source/data/unit/rn.txt +++ b/source/data/unit/rn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License rn{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/ro.txt b/source/data/unit/ro.txt index aa07455..d622796 100644 --- a/source/data/unit/ro.txt +++ b/source/data/unit/ro.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ro{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -123,6 +123,7 @@ ro{ } compound{ per{"{0} pe {1}"} + times{"{0}-{1}"} } concentr{ karat{ @@ -162,12 +163,12 @@ ro{ other{"{0} de procente"} } permille{ + dnam{"‰"} few{"{0} la mie"} one{"la mie"} other{"{0} la mie"} } permyriad{ - dnam{"‱"} few{"{0} la zece mii"} one{"{0} la zece mii"} other{"{0} la zece mii"} @@ -288,6 +289,12 @@ ro{ other{"{0} de zile"} per{"{0} pe zi"} } + decade{ + dnam{"decenii"} + few{"{0} decenii"} + one{"{0} deceniu"} + other{"{0} de decenii"} + } hour{ dnam{"ore"} few{"{0} ore"} @@ -424,6 +431,12 @@ ro{ one{"kilowatt-oră"} other{"{0} de kilowați-oră"} } + therm-us{ + dnam{"thermi S.U.A."} + few{"{0} thermi S.U.A."} + one{"{0} therm S.U.A."} + other{"{0} de thermi S.U.A."} + } } force{ newton{ @@ -465,6 +478,47 @@ ro{ other{"{0} de megahertzi"} } } + graphics{ + dot-per-centimeter{ + dnam{"puncte pe centimeru"} + few{"{0} puncte pe centimetru"} + one{"{0} punct pe centimetru"} + other{"{0} de puncte pe centimetru"} + } + dot-per-inch{ + dnam{"puncte pe inch"} + few{"{0} puncte pe inch"} + one{"{0} punct pe inch"} + other{"{0} de puncte pe inch"} + } + em{ + dnam{"em tipografic"} + } + megapixel{ + dnam{"megapixeli"} + few{"{0} megapixeli"} + one{"{0} megapixel"} + other{"{0} de megapixel"} + } + pixel{ + dnam{"pixeli"} + few{"{0} pixeli"} + one{"{0} pixel"} + other{"{0} de pixeli"} + } + pixel-per-centimeter{ + dnam{"pixeli pe centimetru"} + few{"{0} pixeli pe centimetru"} + one{"{0} pixel pe centimetru"} + other{"{0} de pixeli pe centimetru"} + } + pixel-per-inch{ + dnam{"pixeli pe inch"} + few{"{0} pixeli pe inch"} + one{"{0} pixel pe inch"} + other{"{0} de pixeli pe inch"} + } + } length{ astronomical-unit{ dnam{"unități astronomice"} @@ -729,6 +783,12 @@ ro{ one{"{0} atmosferă"} other{"{0} de atmosfere"} } + bar{ + dnam{"bari"} + few{"{0} bari"} + one{"{0} bar"} + other{"{0} de bari"} + } hectopascal{ dnam{"hectopascali"} few{"{0} hectopascali"} @@ -765,6 +825,12 @@ ro{ one{"{0} milimetru coloană de mercur"} other{"{0} de milimetri coloană de mercur"} } + pascal{ + dnam{"pascali"} + few{"{0} pascali"} + one{"{0} pascal"} + other{"{0} de pascali"} + } pound-per-square-inch{ dnam{"livre pe inch pătrat"} few{"{0} livre pe inch pătrat"} @@ -827,9 +893,9 @@ ro{ torque{ newton-meter{ dnam{"newton-metri"} - few{"{0} newton-metri"} - one{"{0} newton-metru"} - other{"{0} de newton-metri"} + few{"{0} newton metri"} + one{"{0} newton metru"} + other{"{0} de newton metri"} } pound-foot{ dnam{"livră-forță picioare"} @@ -1009,6 +1075,12 @@ ro{ one{"{0} G"} other{"{0} G"} } + meter-per-second-squared{ + dnam{"m/s²"} + few{"{0} m/s²"} + one{"{0} m/s²"} + other{"{0} m/s²"} + } } angle{ arc-minute{ @@ -1021,6 +1093,11 @@ ro{ one{"{0}″"} other{"{0}″"} } + degree{ + few{"{0}°"} + one{"{0}°"} + other{"{0}°"} + } } area{ acre{ @@ -1028,6 +1105,43 @@ ro{ one{"{0} ac."} other{"{0} ac."} } + hectare{ + few{"{0} ha"} + one{"{0} ha"} + other{"{0} ha"} + } + square-foot{ + few{"{0} ft²"} + one{"{0} ft²"} + other{"{0} ft²"} + } + square-kilometer{ + few{"{0} km²"} + one{"{0} km²"} + other{"{0} km²"} + } + square-meter{ + few{"{0} m²"} + one{"{0} m²"} + other{"{0} m²"} + } + square-mile{ + few{"{0} mi²"} + one{"{0} mi²"} + other{"{0} mi²"} + } + } + compound{ + per{"{0}/{1}"} + times{"{0}{1}"} + } + concentr{ + percent{ + dnam{"%"} + few{"{0}%"} + one{"{0}%"} + other{"{0}%"} + } } consumption{ liter-per-100kilometers{ @@ -1063,6 +1177,13 @@ ro{ few{"{0} h"} one{"{0} h"} other{"{0} h"} + per{"{0}/h"} + } + microsecond{ + dnam{"μs"} + few{"{0} μs"} + one{"{0} μs"} + other{"{0} μs"} } millisecond{ dnam{"ms"} @@ -1084,11 +1205,18 @@ ro{ other{"{0} l"} per{"{0}/lună"} } + nanosecond{ + dnam{"ns"} + few{"{0} ns"} + one{"{0} ns"} + other{"{0} ns"} + } second{ dnam{"s"} few{"{0} s"} one{"{0} s"} other{"{0} s"} + per{"{0}/s"} } week{ dnam{"săpt."} @@ -1117,12 +1245,34 @@ ro{ few{"{0} cm"} one{"{0} cm"} other{"{0} cm"} + per{"{0}/cm"} + } + decimeter{ + dnam{"dm"} + few{"{0} dm"} + one{"{0} dm"} + other{"{0} dm"} + } + foot{ + dnam{"ft"} + few{"{0} ft"} + one{"{0} ft"} + other{"{0} ft"} + per{"{0}/ft"} + } + inch{ + dnam{"in"} + few{"{0} in"} + one{"{0} in"} + other{"{0} in"} + per{"{0}/in"} } kilometer{ dnam{"km"} few{"{0} km"} one{"{0} km"} other{"{0} km"} + per{"{0}/km"} } light-year{ dnam{"a.l."} @@ -1135,6 +1285,25 @@ ro{ few{"{0} m"} one{"{0} m"} other{"{0} m"} + per{"{0}/m"} + } + micrometer{ + dnam{"µm"} + few{"{0} µm"} + one{"{0} µm"} + other{"{0} µm"} + } + mile{ + dnam{"mi"} + few{"{0} mi"} + one{"{0} mi"} + other{"{0} mi"} + } + mile-scandinavian{ + dnam{"smi"} + few{"{0} smi"} + one{"{0} smi"} + other{"{0} smi"} } millimeter{ dnam{"mm"} @@ -1142,12 +1311,42 @@ ro{ one{"{0} mm"} other{"{0} mm"} } + nanometer{ + dnam{"nm"} + few{"{0} nm"} + one{"{0} nm"} + other{"{0} nm"} + } nautical-mile{ dnam{"mn"} few{"{0} mn"} one{"{0} mn"} other{"{0} mn"} } + parsec{ + dnam{"pc"} + few{"{0} pc"} + one{"{0} pc"} + other{"{0} pc"} + } + picometer{ + dnam{"pm"} + few{"{0} pm"} + one{"{0} pm"} + other{"{0} pm"} + } + point{ + dnam{"pt"} + few{"{0} pt"} + one{"{0} pt"} + other{"{0} pt"} + } + yard{ + dnam{"yd"} + few{"{0} yd"} + one{"{0} yd"} + other{"{0} yd"} + } } mass{ carat{ @@ -1161,12 +1360,58 @@ ro{ few{"{0} g"} one{"{0} g"} other{"{0} g"} + per{"{0}/g"} } kilogram{ dnam{"kg"} few{"{0} kg"} one{"{0} kg"} other{"{0} kg"} + per{"{0}/kg"} + } + metric-ton{ + dnam{"t"} + few{"{0} t"} + one{"{0} t"} + other{"{0} t"} + } + microgram{ + dnam{"µg"} + few{"{0} µg"} + one{"{0} µg"} + other{"{0} µg"} + } + milligram{ + dnam{"mg"} + few{"{0} mg"} + one{"{0} mg"} + other{"{0} mg"} + } + ounce{ + dnam{"oz"} + few{"{0} oz"} + one{"{0} oz"} + other{"{0} oz"} + per{"{0}/oz"} + } + ounce-troy{ + dnam{"oz t"} + few{"{0} oz t"} + one{"{0} oz t"} + other{"{0} oz t"} + } + pound{ + dnam{"lb"} + few{"{0} lb"} + one{"{0} lb"} + other{"{0} lb"} + per{"{0}/lb"} + } + stone{ + dnam{"st"} + few{"{0} st"} + one{"{0} st"} + other{"{0} st"} } ton{ dnam{"t.s."} @@ -1181,16 +1426,45 @@ ro{ one{"{0} CP"} other{"{0} CP"} } + kilowatt{ + few{"{0} kW"} + one{"{0} kW"} + other{"{0} kW"} + } + watt{ + few{"{0} W"} + one{"{0} W"} + other{"{0} W"} + } } pressure{ + hectopascal{ + dnam{"hPa"} + few{"{0} hPa"} + one{"{0} hPa"} + other{"{0} hPa"} + } inch-hg{ dnam{"in Hg"} } millibar{ + dnam{"mbar"} few{"{0} mb"} one{"{0} mb"} other{"{0} mb"} } + millimeter-of-mercury{ + dnam{"mm Hg"} + few{"{0} mm Hg"} + one{"{0} mm Hg"} + other{"{0} mm Hg"} + } + pound-per-square-inch{ + dnam{"psi"} + few{"{0} psi"} + one{"{0} psi"} + other{"{0} psi"} + } } speed{ kilometer-per-hour{ @@ -1199,6 +1473,24 @@ ro{ one{"{0} km/h"} other{"{0} km/h"} } + knot{ + dnam{"kn"} + few{"{0} kn"} + one{"{0} kn"} + other{"{0} kn"} + } + meter-per-second{ + dnam{"m/s"} + few{"{0} m/s"} + one{"{0} m/s"} + other{"{0} m/s"} + } + mile-per-hour{ + dnam{"mi/h"} + few{"{0} mi/h"} + one{"{0} mi/h"} + other{"{0} mi/h"} + } } temperature{ celsius{ @@ -1207,8 +1499,33 @@ ro{ one{"{0} °C"} other{"{0} °C"} } + fahrenheit{ + dnam{"°F"} + } + generic{ + dnam{"°"} + few{"{0}°"} + one{"{0}°"} + other{"{0}°"} + } + kelvin{ + dnam{"K"} + few{"{0} K"} + one{"{0} K"} + other{"{0} K"} + } } volume{ + cubic-kilometer{ + few{"{0} km³"} + one{"{0} km³"} + other{"{0} km³"} + } + cubic-mile{ + few{"{0} mi³"} + one{"{0} mi³"} + other{"{0} mi³"} + } liter{ dnam{"l"} few{"{0} l"} @@ -1308,6 +1625,7 @@ ro{ few{"{0} km²"} one{"{0} km²"} other{"{0} km²"} + per{"{0}/km²"} } square-meter{ dnam{"m²"} @@ -1321,6 +1639,7 @@ ro{ few{"{0} mi²"} one{"{0} mi²"} other{"{0} mi²"} + per{"{0}/mi²"} } square-yard{ dnam{"yd²"} @@ -1329,7 +1648,17 @@ ro{ other{"{0} yd²"} } } + compound{ + per{"{0}/{1}"} + times{"{0}{1}"} + } concentr{ + karat{ + dnam{"kt"} + few{"{0} kt"} + one{"{0} kt"} + other{"{0} kt"} + } milligram-per-deciliter{ dnam{"mg/dl"} few{"{0} mg/dl"} @@ -1343,16 +1672,27 @@ ro{ other{"{0} mmol/l"} } mole{ - dnam{"mol"} few{"{0} moli"} one{"{0} mol"} other{"{0} moli"} } - permyriad{ - dnam{"‱"} - few{"{0}‱"} - one{"{0}‱"} - other{"{0}‱"} + part-per-million{ + dnam{"ppm"} + few{"{0} ppm"} + one{"{0} ppm"} + other{"{0} ppm"} + } + percent{ + dnam{"%"} + few{"{0}%"} + one{"{0}%"} + other{"{0}%"} + } + permille{ + dnam{"‰"} + few{"{0}‰"} + one{"{0}‰"} + other{"{0}‰"} } } consumption{ @@ -1437,6 +1777,12 @@ ro{ one{"{0} MB"} other{"{0} MB"} } + petabyte{ + dnam{"PB"} + few{"{0} PB"} + one{"{0} PB"} + other{"{0} PB"} + } terabit{ dnam{"Tb"} few{"{0} Tb"} @@ -1464,6 +1810,12 @@ ro{ other{"{0} zile"} per{"{0}/zi"} } + decade{ + dnam{"dec."} + few{"{0} dec."} + one{"{0} dec."} + other{"{0} dec."} + } hour{ dnam{"ore"} few{"{0} ore"} @@ -1600,6 +1952,12 @@ ro{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"thm"} + few{"{0} thm"} + one{"{0} thm"} + other{"{0} thm"} + } } force{ newton{ @@ -1610,9 +1968,6 @@ ro{ } pound-force{ dnam{"livră-forță"} - few{"{0} lbf"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1641,6 +1996,23 @@ ro{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpc"} + few{"{0} dpc"} + one{"{0} dpc"} + other{"{0} dpc"} + } + pixel{ + dnam{"pixeli"} + } + pixel-per-centimeter{ + dnam{"ppc"} + few{"{0} ppc"} + one{"{0} ppc"} + other{"{0} ppc"} + } + } length{ astronomical-unit{ dnam{"ua"} @@ -1743,11 +2115,11 @@ ro{ one{"{0} pm"} other{"{0} pm"} } - solar-radius{ - dnam{"R☉"} - few{"{0} R☉"} - one{"{0} R☉"} - other{"{0} R☉"} + point{ + dnam{"pt"} + few{"{0} pt"} + one{"{0} pt"} + other{"{0} pt"} } yard{ dnam{"yd"} @@ -1893,6 +2265,15 @@ ro{ } } pressure{ + atmosphere{ + dnam{"atm"} + few{"{0} atm"} + one{"{0} atm"} + other{"{0} atm"} + } + bar{ + dnam{"bar"} + } hectopascal{ dnam{"hPa"} few{"{0} hPa"} @@ -1997,9 +2378,6 @@ ro{ } pound-foot{ dnam{"livră-forță picior"} - few{"{0} lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} } } volume{ @@ -2011,9 +2389,6 @@ ro{ } barrel{ dnam{"baril"} - few{"{0} bbl"} - one{"{0} bbl"} - other{"{0} bbl"} } centiliter{ dnam{"cl"} diff --git a/source/data/unit/ro_MD.txt b/source/data/unit/ro_MD.txt index 602e8d7..53d37cf 100644 --- a/source/data/unit/ro_MD.txt +++ b/source/data/unit/ro_MD.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ro_MD{ - Version{"2.1.48.43"} + Version{"36"} unitsNarrow{ duration{ day{ @@ -11,9 +11,6 @@ ro_MD{ } millisecond{ dnam{"msec"} - few{"{0} ms"} - one{"{0} ms"} - other{"{0} ms"} } minute{ dnam{"min"} @@ -27,11 +24,6 @@ ro_MD{ one{"{0} lună"} other{"{0} luni"} } - week{ - few{"{0} săpt."} - one{"{0} săpt."} - other{"{0} săpt."} - } year{ few{"{0} ani"} one{"{0} an"} diff --git a/source/data/unit/rof.txt b/source/data/unit/rof.txt index 10f0ba8..e504a62 100644 --- a/source/data/unit/rof.txt +++ b/source/data/unit/rof.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License rof{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/root.txt b/source/data/unit/root.txt index aa8ba72..1125255 100644 --- a/source/data/unit/root.txt +++ b/source/data/unit/root.txt @@ -4,7 +4,7 @@ * ICU source: /common/main/root.xml */ root{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -94,6 +94,7 @@ root{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -211,6 +212,10 @@ root{ per{"{0}/d"} } day-person:alias{"/LOCALE/unitsShort/duration/day"} + decade{ + dnam{"dec"} + other{"{0} dec"} + } hour{ dnam{"hr"} other{"{0} h"} @@ -308,6 +313,10 @@ root{ dnam{"kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"US therm"} + other{"{0} US therm"} + } } force{ newton{ @@ -337,6 +346,36 @@ root{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + other{"{0} em"} + } + megapixel{ + dnam{"MP"} + other{"{0} MP"} + } + pixel{ + dnam{"px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -531,6 +570,10 @@ root{ dnam{"atm"} other{"{0} atm"} } + bar{ + dnam{"bar"} + other{"{0} bar"} + } hectopascal{ dnam{"hPa"} other{"{0} hPa"} @@ -555,6 +598,10 @@ root{ dnam{"mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} other{"{0} psi"} diff --git a/source/data/unit/ru.txt b/source/data/unit/ru.txt index 3f84125..42a2c7b 100644 --- a/source/data/unit/ru.txt +++ b/source/data/unit/ru.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ru{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -331,6 +331,13 @@ ru{ other{"{0} дня"} per{"{0} в день"} } + decade{ + dnam{"десятилетия"} + few{"{0} десятилетия"} + many{"{0} десятилетий"} + one{"{0} десятилетие"} + other{"{0} десятилетия"} + } hour{ dnam{"часы"} few{"{0} часа"} @@ -488,6 +495,13 @@ ru{ one{"{0} киловатт-час"} other{"{0} киловатт-часа"} } + therm-us{ + dnam{"американский терм"} + few{"{0} американских терма"} + many{"{0} американских термов"} + one{"{0} американский терм"} + other{"{0} американского терма"} + } } force{ newton{ @@ -535,6 +549,57 @@ ru{ other{"{0} мегагерца"} } } + graphics{ + dot-per-centimeter{ + dnam{"точки на сантиметр"} + few{"{0} точки на сантиметр"} + many{"{0} точек на сантиметр"} + one{"{0} точка на сантиметр"} + other{"{0} точки на сантиметр"} + } + dot-per-inch{ + dnam{"точки на дюйм"} + few{"{0} точки на дюйм"} + many{"{0} точек на дюйм"} + one{"{0} точка на дюйм"} + other{"{0} точки на дюйм"} + } + em{ + dnam{"эм"} + few{"{0} эм"} + many{"{0} эм"} + one{"{0} эм"} + other{"{0} эм"} + } + megapixel{ + dnam{"мегапиксели"} + few{"{0} мегапикселя"} + many{"{0} мегапикселей"} + one{"{0} мегапиксель"} + other{"{0} мегапикселя"} + } + pixel{ + dnam{"пиксели"} + few{"{0} пикселя"} + many{"{0} пикселей"} + one{"{0} пиксель"} + other{"{0} пикселя"} + } + pixel-per-centimeter{ + dnam{"пиксели на сантиметр"} + few{"{0} пикселя на сантиметр"} + many{"{0} пикселей на сантиметр"} + one{"{0} пиксель на сантиметр"} + other{"{0} пикселя на сантиметр"} + } + pixel-per-inch{ + dnam{"пиксели на дюйм"} + few{"{0} пикселя на дюйм"} + many{"{0} пикселей на дюйм"} + one{"{0} пиксель на дюйм"} + other{"{0} пикселя на дюйм"} + } + } length{ astronomical-unit{ dnam{"астрономические единицы"} @@ -693,7 +758,7 @@ ru{ lux{ dnam{"люксы"} few{"{0} люкса"} - many{"{0} люкс"} + many{"{0} люксов"} one{"{0} люкс"} other{"{0} люкса"} } @@ -861,6 +926,13 @@ ru{ one{"{0} атмосфера"} other{"{0} атмосферы"} } + bar{ + dnam{"бары"} + few{"{0} бара"} + many{"{0} бар"} + one{"{0} бар"} + other{"{0} бара"} + } hectopascal{ dnam{"гектопаскали"} few{"{0} гектопаскаля"} @@ -903,6 +975,13 @@ ru{ one{"{0} миллиметр ртутного столба"} other{"{0} миллиметра ртутного столба"} } + pascal{ + dnam{"паскали"} + few{"{0} паскаля"} + many{"{0} паскалей"} + one{"{0} паскаль"} + other{"{0} паскаля"} + } pound-per-square-inch{ dnam{"фунты на квадратный дюйм"} few{"{0} фунта на квадратный дюйм"} @@ -950,11 +1029,11 @@ ru{ other{"{0} градуса Цельсия"} } fahrenheit{ - dnam{"градусы по Фаренгейту"} - few{"{0} градуса по Фаренгейту"} - many{"{0} градусов по Фаренгейту"} - one{"{0} градус по Фаренгейту"} - other{"{0} градуса по Фаренгейту"} + dnam{"градусы Фаренгейта"} + few{"{0} градуса Фаренгейта"} + many{"{0} градусов Фаренгейта"} + one{"{0} градус Фаренгейта"} + other{"{0} градуса Фаренгейта"} } generic{ dnam{"°"} @@ -964,11 +1043,11 @@ ru{ other{"{0}°"} } kelvin{ - dnam{"градусы по Кельвину"} - few{"{0} градуса по Кельвину"} - many{"{0} градусов по Кельвину"} - one{"{0} градус по Кельвину"} - other{"{0} градуса по Кельвину"} + dnam{"кельвины"} + few{"{0} кельвина"} + many{"{0} кельвинов"} + one{"{0} кельвин"} + other{"{0} кельвина"} } } torque{ @@ -1691,6 +1770,27 @@ ru{ one{"{0} °C"} other{"{0} °C"} } + fahrenheit{ + dnam{"°F"} + few{"{0} °F"} + many{"{0}°F"} + one{"{0}°F"} + other{"{0}°F"} + } + generic{ + dnam{"°"} + few{"{0}°"} + many{"{0}°"} + one{"{0}°"} + other{"{0}°"} + } + kelvin{ + dnam{"K"} + few{"{0} K"} + many{"{0} K"} + one{"{0} K"} + other{"{0} K"} + } } volume{ cubic-kilometer{ @@ -1899,7 +1999,6 @@ ru{ other{"{0} ‰"} } permyriad{ - dnam{"‱"} few{"{0} ‱"} many{"{0} ‱"} one{"{0} ‱"} @@ -1923,17 +2022,17 @@ ru{ } mile-per-gallon{ dnam{"миль/гал"} - few{"{0} мили/галл."} - many{"{0} миль/галл."} - one{"{0} миля/галл."} - other{"{0} мили/галл."} + few{"{0} мили/гал"} + many{"{0} миль/гал"} + one{"{0} миля/гал"} + other{"{0} мили/гал"} } mile-per-gallon-imperial{ dnam{"мили/имп. гал"} few{"{0} мили/имп. гал"} many{"{0} миль/имп. гал"} one{"{0} миля/имп. гал"} - other{"{0} мили/имп. галл."} + other{"{0} мили/имп. гал"} } } coordinate{ @@ -2038,12 +2137,19 @@ ru{ other{"{0} дн."} per{"{0}/д"} } + decade{ + dnam{"10-летие"} + few{"{0} 10-летия"} + many{"{0} 10-летий"} + one{"{0} 10-летие"} + other{"{0} 10-летия"} + } hour{ - dnam{"ч."} - few{"{0} ч."} - many{"{0} ч."} - one{"{0} ч."} - other{"{0} ч."} + dnam{"ч"} + few{"{0} ч"} + many{"{0} ч"} + one{"{0} ч"} + other{"{0} ч"} per{"{0}/ч"} } microsecond{ @@ -2061,7 +2167,7 @@ ru{ other{"{0} мс"} } minute{ - dnam{"мин"} + dnam{"мин."} few{"{0} мин."} many{"{0} мин."} one{"{0} мин."} @@ -2195,6 +2301,13 @@ ru{ one{"{0} кВт⋅ч"} other{"{0} кВт⋅ч"} } + therm-us{ + dnam{"терм США"} + few{"{0} терма США"} + many{"{0} термов США"} + one{"{0} терм США"} + other{"{0} терма США"} + } } force{ newton{ @@ -2204,6 +2317,13 @@ ru{ one{"{0} Н"} other{"{0} Н"} } + pound-force{ + dnam{"фнт-с"} + few{"{0} фнт-с"} + many{"{0} фнт-с"} + one{"{0} фнт-с"} + other{"{0} фнт-с"} + } } frequency{ gigahertz{ @@ -2235,6 +2355,57 @@ ru{ other{"{0} МГц"} } } + graphics{ + dot-per-centimeter{ + dnam{"тчк/см"} + few{"{0} тчк/см"} + many{"{0} тчк/см"} + one{"{0} тчк/см"} + other{"{0} тчк/см"} + } + dot-per-inch{ + dnam{"тчк/дюйм"} + few{"{0} тчк/дюйм"} + many{"{0} тчк/дюйм"} + one{"{0} тчк/дюйм"} + other{"{0} тчк/дюйм"} + } + em{ + dnam{"эм"} + few{"{0} эм"} + many{"{0} эм"} + one{"{0} эм"} + other{"{0} эм"} + } + megapixel{ + dnam{"Мпкс"} + few{"{0} Мпкс"} + many{"{0} Мпкс"} + one{"{0} Мпкс"} + other{"{0} Мпкс"} + } + pixel{ + dnam{"пкс"} + few{"{0} пкс"} + many{"{0} пкс"} + one{"{0} пкс"} + other{"{0} пкс"} + } + pixel-per-centimeter{ + dnam{"пкс/см"} + few{"{0} пкс/см"} + many{"{0} пкс/см"} + one{"{0} пкс/см"} + other{"{0} пкс/см"} + } + pixel-per-inch{ + dnam{"пкс/дюйм"} + few{"{0} пкс/дюйм"} + many{"{0} пкс/дюйм"} + one{"{0} пкс/дюйм"} + other{"{0} пкс/дюйм"} + } + } length{ astronomical-unit{ dnam{"а. е."} @@ -2397,13 +2568,6 @@ ru{ one{"{0} лк"} other{"{0} лк"} } - solar-luminosity{ - dnam{"L☉"} - few{"{0} L☉"} - many{"{0} L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -2420,13 +2584,6 @@ ru{ one{"{0} Да"} other{"{0} Да"} } - earth-mass{ - dnam{"M⊕"} - few{"{0} M⊕"} - many{"{0} M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"г"} few{"{0} г"} @@ -2487,13 +2644,6 @@ ru{ other{"{0} фунт."} per{"{0}/фунт"} } - solar-mass{ - dnam{"M☉"} - few{"{0} M☉"} - many{"{0} M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } stone{ dnam{"стоуны"} few{"{0} стоуна"} @@ -2518,11 +2668,11 @@ ru{ other{"{0} ГВт"} } horsepower{ - dnam{"л.с."} - few{"{0} л.с."} - many{"{0} л.с."} - one{"{0} л.с."} - other{"{0} л.с."} + dnam{"л. с."} + few{"{0} л. с."} + many{"{0} л. с."} + one{"{0} л. с."} + other{"{0} л. с."} } kilowatt{ dnam{"кВт"} @@ -2561,6 +2711,13 @@ ru{ one{"{0} атм"} other{"{0} атм"} } + bar{ + dnam{"бар"} + few{"{0} бар"} + many{"{0} бар"} + one{"{0} бар"} + other{"{0} бар"} + } hectopascal{ dnam{"гПа"} few{"{0} гПа"} @@ -2603,12 +2760,19 @@ ru{ one{"{0} мм рт. ст."} other{"{0} мм рт. ст."} } + pascal{ + dnam{"Па"} + few{"{0} Па"} + many{"{0} Па"} + one{"{0} Па"} + other{"{0} Па"} + } pound-per-square-inch{ dnam{"ф. на дюйм²"} - few{"{0} ф./дюйм²"} - many{"{0} ф./дюйм²"} - one{"{0} ф./дюйм²"} - other{"{0} ф./дюйм²"} + few{"{0} ф/дюйм²"} + many{"{0} ф/дюйм²"} + one{"{0} ф/дюйм²"} + other{"{0} ф/дюйм²"} } } speed{ @@ -2651,10 +2815,10 @@ ru{ } fahrenheit{ dnam{"°F"} - few{"{0}°F"} - many{"{0}°F"} - one{"{0}°F"} - other{"{0}°F"} + few{"{0} °F"} + many{"{0} °F"} + one{"{0} °F"} + other{"{0} °F"} } generic{ dnam{"°"} diff --git a/source/data/unit/rw.txt b/source/data/unit/rw.txt index 349397b..636f1fc 100644 --- a/source/data/unit/rw.txt +++ b/source/data/unit/rw.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License rw{ - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/unit/rwk.txt b/source/data/unit/rwk.txt index cc1a443..460b6b7 100644 --- a/source/data/unit/rwk.txt +++ b/source/data/unit/rwk.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License rwk{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/sah.txt b/source/data/unit/sah.txt index a4a24aa..52ea5c9 100644 --- a/source/data/unit/sah.txt +++ b/source/data/unit/sah.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sah{ - Version{"2.1.47.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/saq.txt b/source/data/unit/saq.txt index d08677e..6234556 100644 --- a/source/data/unit/saq.txt +++ b/source/data/unit/saq.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License saq{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/sbp.txt b/source/data/unit/sbp.txt index ed45482..b2ebc41 100644 --- a/source/data/unit/sbp.txt +++ b/source/data/unit/sbp.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sbp{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/sd.txt b/source/data/unit/sd.txt index 2751a59..2beb862 100644 --- a/source/data/unit/sd.txt +++ b/source/data/unit/sd.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sd{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -106,6 +106,7 @@ sd{ } compound{ per{"في {1} تي {0}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -247,6 +248,11 @@ sd{ other{"{0} ڏينهن"} per{"{0} في ڏينهن"} } + decade{ + dnam{"ڏهاڪا"} + one{"{0} ڏهاڪو"} + other{"{0} ڏهاڪا"} + } hour{ dnam{"ڪلاڪ"} one{"{0} ڪلاڪ"} @@ -362,6 +368,11 @@ sd{ one{"{0} ڪلو واٽ في ڪلڪ"} other{"{0} ڪلو واٽ في ڪلڪ"} } + therm-us{ + dnam{"US ٿرمس"} + one{"{0} US ٿرم"} + other{"{0} US ٿرمس"} + } } force{ newton{ @@ -397,6 +408,43 @@ sd{ other{"{0} ميگا هرٽز"} } } + graphics{ + dot-per-centimeter{ + dnam{"في سينٽي ميٽر ڊاٽس"} + one{"{0} في سينٽي ميٽر ڊاٽ"} + other{"{0} في سينٽي ميٽر ڊاٽس"} + } + dot-per-inch{ + dnam{"ڊاٽس في انچ"} + one{"{0} ڊاٽ في انچ"} + other{"{0} ڊاٽس في انچ"} + } + em{ + dnam{"ٽائپوگرافڪ em"} + one{"{0} em"} + other{"{0} ems"} + } + megapixel{ + dnam{"ميگا پگزلس"} + one{"{0} ميگا پگزل"} + other{"{0} ميگا پگزلس"} + } + pixel{ + dnam{"پگزلس"} + one{"{0} پگزل"} + other{"{0} پگزلس"} + } + pixel-per-centimeter{ + dnam{"پگزلس في سينٽي ميٽر"} + one{"{0} پگزل في سينٽي ميٽر"} + other{"{0} پگزلس في سينٽي ميٽر"} + } + pixel-per-inch{ + dnam{"پگزلس في انچ"} + one{"{0} پگزل في انچ"} + other{"{0} پگزلس في انچ"} + } + } length{ astronomical-unit{ dnam{"فلڪيات جا يونٽ"} @@ -620,6 +668,11 @@ sd{ one{"{0} ايٽماس فيئر"} other{"{0} ايٽماس فيئر"} } + bar{ + dnam{"بارس"} + one{"{0} بار"} + other{"{0} بارس"} + } hectopascal{ dnam{"هيڪٽوپاسڪلز"} one{"{0} هيڪٽوپاسڪلز"} @@ -650,6 +703,11 @@ sd{ one{"مرڪري جو {0} ملي ميٽر"} other{"مرڪري جو {0} ملي ميٽر"} } + pascal{ + dnam{"پاسڪلز"} + one{"{0} پاسڪل"} + other{"{0} پاسڪلز"} + } pound-per-square-inch{ dnam{"پائونڊز في اسڪوائر انچ"} one{"{0} psi"} @@ -853,6 +911,7 @@ sd{ unitsNarrow{ compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ percent{ @@ -1084,6 +1143,7 @@ sd{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1225,6 +1285,11 @@ sd{ other{"{0} ڏينهن"} per{"{0} في ڏينهن"} } + decade{ + dnam{"ڏهاڪا"} + one{"{0} ڏهاڪو"} + other{"{0} ڏهاڪا"} + } hour{ dnam{"ڪلاڪ"} one{"{0} ڪلاڪ"} @@ -1340,6 +1405,11 @@ sd{ one{"{0} ڪلو واٽ في ڪلڪ"} other{"{0} ڪلو واٽ في ڪلڪ"} } + therm-us{ + dnam{"US ٿرم"} + one{"{0} US ٿرم"} + other{"{0} US ٿرمس"} + } } force{ newton{ @@ -1375,6 +1445,14 @@ sd{ other{"{0} ميگا هرٽز"} } } + graphics{ + megapixel{ + dnam{"megapixels"} + } + pixel{ + dnam{"پگزل"} + } + } length{ astronomical-unit{ dnam{"فلڪيات جا يونٽ"} @@ -1598,6 +1676,11 @@ sd{ one{"{0} ايٽماس فيئر"} other{"{0} ايٽماس فيئر"} } + bar{ + dnam{"بار"} + one{"{0} بار"} + other{"{0} بارس"} + } hectopascal{ dnam{"هيڪٽوپاسڪلز"} one{"{0} هيڪٽوپاسڪلز"} diff --git a/source/data/unit/se.txt b/source/data/unit/se.txt index a4154de..3303ebb 100644 --- a/source/data/unit/se.txt +++ b/source/data/unit/se.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License se{ - Version{"2.1.48.4"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/seh.txt b/source/data/unit/seh.txt index 06278a5..0436c15 100644 --- a/source/data/unit/seh.txt +++ b/source/data/unit/seh.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License seh{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/ses.txt b/source/data/unit/ses.txt index 304c661..604c78a 100644 --- a/source/data/unit/ses.txt +++ b/source/data/unit/ses.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ses{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/sg.txt b/source/data/unit/sg.txt index 5ba5470..123fccc 100644 --- a/source/data/unit/sg.txt +++ b/source/data/unit/sg.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sg{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/shi.txt b/source/data/unit/shi.txt index 1774d71..9d8b41c 100644 --- a/source/data/unit/shi.txt +++ b/source/data/unit/shi.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License shi{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/shi_Latn.txt b/source/data/unit/shi_Latn.txt index a545051..f921144 100644 --- a/source/data/unit/shi_Latn.txt +++ b/source/data/unit/shi_Latn.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License shi_Latn{ %%Parent{"root"} - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/shi_Tfng.txt b/source/data/unit/shi_Tfng.txt index 2e3827e..ea72d32 100644 --- a/source/data/unit/shi_Tfng.txt +++ b/source/data/unit/shi_Tfng.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License shi_Tfng{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/si.txt b/source/data/unit/si.txt index 0c256f8..4b1dd4c 100644 --- a/source/data/unit/si.txt +++ b/source/data/unit/si.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License si{ - Version{"2.1.48.17"} + Version{"36"} durationUnits{ hm{"h.mm"} hms{"h.mm.ss"} @@ -247,6 +247,11 @@ si{ other{"දින {0}"} per{"දිනයට {0}"} } + decade{ + dnam{"දශක"} + one{"දශක {0}"} + other{"දශක {0}"} + } hour{ dnam{"පැය"} one{"පැය {0}"} @@ -362,6 +367,11 @@ si{ one{"කිලෝවොට්-පැය {0}"} other{"කිලෝවොට්-පැය {0}"} } + therm-us{ + dnam{"එක්සත් ජනපද තාප ඒකක"} + one{"එක්සත් ජනපද තාප ඒකක {0}"} + other{"එක්සත් ජනපද තාප ඒකක {0}"} + } } force{ newton{ @@ -397,6 +407,41 @@ si{ other{"මෙගාහර්ට්ස් {0}"} } } + graphics{ + dot-per-centimeter{ + dnam{"සෙන්ටිමීටරයකට තිත්"} + one{"සෙන්ටිමීටරයකට තිත් {0}"} + other{"සෙන්ටිමීටරයකට තිත් {0}"} + } + dot-per-inch{ + dnam{"අඟලකට තිත්"} + one{"අඟලකට තිත් {0}"} + other{"අඟලකට තිත් {0}"} + } + em{ + dnam{"යතුරු ලියන එම්"} + } + megapixel{ + dnam{"මෙගාපික්සල්"} + one{"මෙගාපික්සල් {0}"} + other{"මෙගාපික්සල් {0}"} + } + pixel{ + dnam{"පික්සල්"} + one{"පික්සල් {0}"} + other{"පික්සල් {0}"} + } + pixel-per-centimeter{ + dnam{"සෙන්ටිමීටරයකට පික්සල්"} + one{"සෙන්ටිමීටරයකට පික්සල් {0}"} + other{"සෙන්ටිමීටරයකට පික්සල් {0}"} + } + pixel-per-inch{ + dnam{"අඟලකට පික්සල්"} + one{"අඟලකට පික්සල් {0}"} + other{"අඟලකට පික්සල් {0}"} + } + } length{ astronomical-unit{ dnam{"නක්ෂත්‍ර ඒකක"} @@ -620,6 +665,11 @@ si{ one{"වායුගෝල {0}"} other{"වායුගෝල {0}"} } + bar{ + dnam{"බාර්"} + one{"බාර් {0}"} + other{"බාර් {0}"} + } hectopascal{ dnam{"හෙක්ටොපැස්කල්"} one{"හෙක්ටොපැස්කල් {0}"} @@ -650,6 +700,11 @@ si{ one{"රසදිය මිලිමීටර {0}"} other{"රසදිය මිලිමීටර {0}"} } + pascal{ + dnam{"පැස්කල්"} + one{"පැස්කල් {0}"} + other{"පැස්කල් {0}"} + } pound-per-square-inch{ dnam{"වර්ග අලඟකට රාත්තල්"} one{"වර්ග අලඟකට රාත්තල් {0}"} @@ -803,9 +858,9 @@ si{ per{"ඉම්පීරියල් ගැලුමකට {0}"} } hectoliter{ - dnam{"භෙක්ටොලීටර්"} - one{"භෙක්ටොලීටර් {0}"} - other{"භෙක්ටොලීටර් {0}"} + dnam{"හෙක්ටොලීටර්"} + one{"හෙක්ටොලීටර් {0}"} + other{"හෙක්ටොලීටර් {0}"} } liter{ dnam{"ලීටර්"} @@ -1198,6 +1253,7 @@ si{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1339,6 +1395,11 @@ si{ other{"දින {0}"} per{"{0}/දි"} } + decade{ + dnam{"දශක"} + one{"දශක {0}"} + other{"දශක {0}"} + } hour{ dnam{"පැය"} one{"පැය {0}"} @@ -1454,6 +1515,11 @@ si{ one{"කිවො-පැය {0}"} other{"කිවො-පැය {0}"} } + therm-us{ + dnam{"එක්සත් ජනපද තාප ඒකකය"} + one{"එ. ජ. තාප ඒකක {0}"} + other{"එ. ජ. තාප ඒකක {0}"} + } } force{ newton{ @@ -1489,6 +1555,43 @@ si{ other{"මෙහ {0}"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"මෙගාපික්සල්"} + one{"{0} MP"} + other{"{0} MP"} + } + pixel{ + dnam{"පික්සල්"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + one{"{0} ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"නඒ"} @@ -1712,6 +1815,11 @@ si{ one{"වායුගෝ {0}"} other{"වායුගෝ {0}"} } + bar{ + dnam{"බාර්"} + one{"බාර් {0}"} + other{"බාර් {0}"} + } hectopascal{ dnam{"හෙක්ටොපැස්කල්"} one{"හෙ.පැ {0}"} @@ -1742,6 +1850,11 @@ si{ one{"ර මිමී {0}"} other{"ර මිමී {0}"} } + pascal{ + dnam{"පැස්"} + one{"පැස් {0}"} + other{"පැස් {0}"} + } pound-per-square-inch{ dnam{"වඅ රා"} one{"වඅ රා {0}"} @@ -1879,8 +1992,8 @@ si{ } fluid-ounce-imperial{ dnam{"අධිරා. තර අවු"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} + one{"{0} තර අවු අධිරා."} + other{"{0} තර අවු අධිරා."} } gallon{ dnam{"ගැලු"} @@ -1895,9 +2008,9 @@ si{ per{"{0}/ ගැ ඉම්පී."} } hectoliter{ - dnam{"භෙලී"} - one{"භෙලී {0}"} - other{"භෙලී {0}"} + dnam{"හෙලී"} + one{"හෙලී {0}"} + other{"හෙලී {0}"} } liter{ dnam{"ලීටර්"} diff --git a/source/data/unit/sk.txt b/source/data/unit/sk.txt index 15c3b4f..5297fcb 100644 --- a/source/data/unit/sk.txt +++ b/source/data/unit/sk.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sk{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -140,6 +140,7 @@ sk{ } compound{ per{"{0}/{1}"} + times{"{0}{1}"} } concentr{ karat{ @@ -331,6 +332,13 @@ sk{ other{"{0} dní"} per{"{0} za deň"} } + decade{ + dnam{"desaÅ¥ročia"} + few{"{0} desaÅ¥ročia"} + many{"{0} desaÅ¥ročia"} + one{"{0} desaÅ¥ročie"} + other{"{0} desaÅ¥ročí"} + } hour{ dnam{"hodiny"} few{"{0} hodiny"} @@ -488,6 +496,13 @@ sk{ one{"{0} kilowatthodina"} other{"{0} kilowatthodín"} } + therm-us{ + dnam{"americké termy"} + few{"{0} americké termy"} + many{"{0} amerického termu"} + one{"{0} americký term"} + other{"{0} amerických termov"} + } } force{ newton{ @@ -535,6 +550,50 @@ sk{ other{"{0} megahertzov"} } } + graphics{ + dot-per-centimeter{ + dnam{"body na centimeter"} + few{"{0} body na centimeter"} + many{"{0} bodu na centimeter"} + one{"{0} bod na centimeter"} + other{"{0} bodov na centimeter"} + } + dot-per-inch{ + dnam{"body na palec"} + few{"{0} body na palec"} + many{"{0} bodu na palec"} + one{"{0} bod na palec"} + other{"{0} bodov na palec"} + } + megapixel{ + dnam{"megapixely"} + few{"{0} megapixely"} + many{"{0} megapixela"} + one{"{0} megapixel"} + other{"{0} megapixelov"} + } + pixel{ + dnam{"pixely"} + few{"{0} pixely"} + many{"{0} pixela"} + one{"{0} pixel"} + other{"{0} pixelov"} + } + pixel-per-centimeter{ + dnam{"pixely na centimeter"} + few{"{0} pixely na centimeter"} + many{"{0} pixela na centimeter"} + one{"{0} pixel na centimeter"} + other{"{0} pixelov na centimeter"} + } + pixel-per-inch{ + dnam{"pixely na palec"} + few{"{0} pixely na palec"} + many{"{0} pixela na palec"} + one{"{0} pixel na palec"} + other{"{0} pixelov na palec"} + } + } length{ astronomical-unit{ dnam{"astronomické jednotky"} @@ -847,6 +906,13 @@ sk{ one{"{0} atmosféra"} other{"{0} atmosfér"} } + bar{ + dnam{"bary"} + few{"{0} bary"} + many{"{0} baru"} + one{"{0} bar"} + other{"{0} barov"} + } hectopascal{ dnam{"hektopascaly"} few{"{0} hektopascaly"} @@ -889,6 +955,13 @@ sk{ one{"{0} milimeter ortuÅ¥ového stĺpca"} other{"{0} milimetrov ortuÅ¥ového stĺpca"} } + pascal{ + dnam{"pascaly"} + few{"{0} pascaly"} + many{"{0} pascala"} + one{"pascal"} + other{"{0} pascalov"} + } pound-per-square-inch{ dnam{"libry sily na Å¡tvorcový palec"} few{"{0} libry sily na Å¡tvorcový palec"} @@ -1173,6 +1246,7 @@ sk{ other{"{0}G"} } meter-per-second-squared{ + dnam{"m/s²"} few{"{0} m/s²"} many{"{0} m/s²"} one{"{0} m/s²"} @@ -1192,6 +1266,18 @@ sk{ one{"{0}″"} other{"{0}″"} } + degree{ + few{"{0}°"} + many{"{0}°"} + one{"{0}°"} + other{"{0}°"} + } + radian{ + few{"{0} rad"} + many{"{0} rad"} + one{"{0} rad"} + other{"{0} rad"} + } } area{ acre{ @@ -1206,21 +1292,52 @@ sk{ one{"{0}ha"} other{"{0}ha"} } + square-centimeter{ + few{"{0} cm²"} + many{"{0} cm²"} + one{"{0} cm²"} + other{"{0} cm²"} + } square-foot{ few{"{0}ft²"} many{"{0}ft²"} one{"{0}ft²"} other{"{0}ft²"} } + square-inch{ + few{"{0} in²"} + many{"{0} in²"} + one{"{0} in²"} + other{"{0} in²"} + } + square-kilometer{ + few{"{0} km²"} + many{"{0} km²"} + one{"{0} km²"} + other{"{0} km²"} + } + square-meter{ + few{"{0} m²"} + many{"{0} m²"} + one{"{0} m²"} + other{"{0} m²"} + } square-mile{ few{"{0}mi²"} many{"{0}mi²"} one{"{0}mi²"} other{"{0}mi²"} } + square-yard{ + few{"{0} yd²"} + many{"{0} yd²"} + one{"{0} yd²"} + other{"{0} yd²"} + } } compound{ per{"{0}/{1}"} + times{"{0}{1}"} } concentr{ karat{ @@ -1301,8 +1418,10 @@ sk{ many{"{0} h"} one{"{0} h"} other{"{0} h"} + per{"{0}/h"} } microsecond{ + dnam{"μs"} few{"{0} μs"} many{"{0} μs"} one{"{0} μs"} @@ -1321,6 +1440,7 @@ sk{ many{"{0} min"} one{"{0} min"} other{"{0} min"} + per{"{0}/min"} } month{ dnam{"m."} @@ -1331,6 +1451,7 @@ sk{ per{"{0}/m."} } nanosecond{ + dnam{"ns"} few{"{0} ns"} many{"{0} ns"} one{"{0} ns"} @@ -1342,6 +1463,7 @@ sk{ many{"{0} s"} one{"{0} s"} other{"{0} s"} + per{"{0}/s"} } week{ dnam{"t."} @@ -1374,6 +1496,7 @@ sk{ many{"{0} cm"} one{"{0} cm"} other{"{0} cm"} + per{"{0}/cm"} } decimeter{ dnam{"dm"} @@ -1383,16 +1506,20 @@ sk{ other{"{0} dm"} } foot{ + dnam{"ft"} few{"{0}′"} many{"{0}′"} one{"{0}′"} other{"{0}′"} + per{"{0}/ft"} } inch{ + dnam{"in"} few{"{0}″"} many{"{0}″"} one{"{0}″"} other{"{0}″"} + per{"{0}/in"} } kilometer{ dnam{"km"} @@ -1400,8 +1527,10 @@ sk{ many{"{0} km"} one{"{0} km"} other{"{0} km"} + per{"{0}/km"} } light-year{ + dnam{"ly"} few{"{0} ly"} many{"{0} ly"} one{"{0} ly"} @@ -1413,6 +1542,7 @@ sk{ many{"{0} m"} one{"{0} m"} other{"{0} m"} + per{"{0}/m"} } micrometer{ dnam{"µm"} @@ -1422,6 +1552,7 @@ sk{ other{"{0} µm"} } mile{ + dnam{"mi"} few{"{0} mi"} many{"{0} mi"} one{"{0} mi"} @@ -1455,19 +1586,43 @@ sk{ one{"{0} NM"} other{"{0} NM"} } + parsec{ + dnam{"pc"} + few{"{0} pc"} + many{"{0} pc"} + one{"{0} pc"} + other{"{0} pc"} + } picometer{ + dnam{"pm"} few{"{0} pm"} many{"{0} pm"} one{"{0} pm"} other{"{0} pm"} } + point{ + dnam{"pt"} + few{"{0} pt"} + many{"{0} pt"} + one{"{0} pt"} + other{"{0} pt"} + } yard{ + dnam{"yd"} few{"{0} yd"} many{"{0} yd"} one{"{0} yd"} other{"{0} yd"} } } + light{ + lux{ + few{"{0} lx"} + many{"{0} lx"} + one{"{0} lx"} + other{"{0} lx"} + } + } mass{ carat{ dnam{"ct"} @@ -1482,6 +1637,7 @@ sk{ many{"{0} g"} one{"{0} g"} other{"{0} g"} + per{"{0}/g"} } kilogram{ dnam{"kg"} @@ -1489,42 +1645,58 @@ sk{ many{"{0} kg"} one{"{0} kg"} other{"{0} kg"} + per{"{0}/kg"} } metric-ton{ + dnam{"t"} few{"{0} t"} many{"{0} t"} one{"{0} t"} other{"{0} t"} } microgram{ + dnam{"µg"} few{"{0} µg"} many{"{0} µg"} one{"{0} µg"} other{"{0} µg"} } milligram{ + dnam{"mg"} few{"{0} mg"} many{"{0} mg"} one{"{0} mg"} other{"{0} mg"} } ounce{ + dnam{"oz"} few{"{0} oz"} many{"{0} oz"} one{"{0} oz"} other{"{0} oz"} + per{"{0}/oz"} } ounce-troy{ + dnam{"oz t"} few{"{0} oz t"} many{"{0} oz t"} one{"{0} oz t"} other{"{0} oz t"} } pound{ + dnam{"lb"} few{"{0} lb"} many{"{0} lb"} one{"{0} lb"} other{"{0} lb"} + per{"{0}/lb"} + } + stone{ + dnam{"st"} + few{"{0} st"} + many{"{0} st"} + one{"{0} st"} + other{"{0} st"} } ton{ dnam{"to"} @@ -1547,6 +1719,18 @@ sk{ one{"{0}kW"} other{"{0}kW"} } + megawatt{ + few{"{0} MW"} + many{"{0} MW"} + one{"{0} MW"} + other{"{0} MW"} + } + milliwatt{ + few{"{0} mW"} + many{"{0} mW"} + one{"{0} mW"} + other{"{0} mW"} + } watt{ few{"{0}W"} many{"{0}W"} @@ -1556,23 +1740,40 @@ sk{ } pressure{ hectopascal{ + dnam{"hPa"} few{"{0} hPa"} many{"{0} hPa"} one{"{0} hPa"} other{"{0} hPa"} } inch-hg{ + dnam{"inHg"} few{"{0}\u0022 Hg"} many{"{0}\u0022 Hg"} one{"{0}\u0022 Hg"} other{"{0}\u0022 Hg"} } millibar{ + dnam{"mbar"} few{"{0} mb"} many{"{0} mb"} one{"{0} mb"} other{"{0} mb"} } + millimeter-of-mercury{ + dnam{"mm Hg"} + few{"{0} mm Hg"} + many{"{0} mm Hg"} + one{"{0} mm Hg"} + other{"{0} mm Hg"} + } + pound-per-square-inch{ + dnam{"psi"} + few{"{0} psi"} + many{"{0} psi"} + one{"{0} psi"} + other{"{0} psi"} + } } speed{ kilometer-per-hour{ @@ -1582,13 +1783,22 @@ sk{ one{"{0} km/h"} other{"{0} km/h"} } + knot{ + dnam{"kn"} + few{"{0} kn"} + many{"{0} kn"} + one{"{0} kn"} + other{"{0} kn"} + } meter-per-second{ + dnam{"m/s"} few{"{0} m/s"} many{"{0} m/s"} one{"{0} m/s"} other{"{0} m/s"} } mile-per-hour{ + dnam{"mi/h"} few{"{0} mi/h"} many{"{0} mi/h"} one{"{0} mi/h"} @@ -1604,18 +1814,21 @@ sk{ other{"{0} °C"} } fahrenheit{ + dnam{"°F"} few{"{0} °F"} many{"{0} °F"} one{"{0} °F"} other{"{0} °F"} } generic{ + dnam{"°"} few{"{0} °"} many{"{0} °"} one{"{0} °"} other{"{0} °"} } kelvin{ + dnam{"K"} few{"{0} K"} many{"{0} K"} one{"{0} K"} @@ -1623,24 +1836,66 @@ sk{ } } volume{ + acre-foot{ + few{"{0} ac ft"} + many{"{0} ac ft"} + one{"{0} ac ft"} + other{"{0} ac ft"} + } centiliter{ few{"{0} cl"} many{"{0} cl"} one{"{0} cl"} other{"{0} cl"} } + cubic-centimeter{ + few{"{0} cm³"} + many{"{0} cm³"} + one{"{0} cm³"} + other{"{0} cm³"} + } + cubic-foot{ + few{"{0} ft³"} + many{"{0} ft³"} + one{"{0} ft³"} + other{"{0} ft³"} + } + cubic-inch{ + few{"{0} in³"} + many{"{0} in³"} + one{"{0} in³"} + other{"{0} in³"} + } cubic-kilometer{ few{"{0}km³"} many{"{0}km³"} one{"{0}km³"} other{"{0}km³"} } + cubic-meter{ + few{"{0} m³"} + many{"{0} m³"} + one{"{0} m³"} + other{"{0} m³"} + } cubic-mile{ few{"{0}mi³"} many{"{0}mi³"} one{"{0}mi³"} other{"{0}mi³"} } + cubic-yard{ + few{"{0} yd³"} + many{"{0} yd³"} + one{"{0} yd³"} + other{"{0} yd³"} + } + cup{ + few{"{0} c"} + many{"{0} c"} + one{"{0} c"} + other{"{0} c"} + } deciliter{ few{"{0} dl"} many{"{0} dl"} @@ -1684,6 +1939,30 @@ sk{ one{"{0} ml"} other{"{0} ml"} } + pint{ + few{"{0} pt"} + many{"{0} pt"} + one{"{0} pt"} + other{"{0} pt"} + } + quart{ + few{"{0} qt"} + many{"{0} qt"} + one{"{0} qt"} + other{"{0} qt"} + } + tablespoon{ + few{"{0} tbsp"} + many{"{0} tbsp"} + one{"{0} tbsp"} + other{"{0} tbsp"} + } + teaspoon{ + few{"{0} tsp"} + many{"{0} tsp"} + one{"{0} tsp"} + other{"{0} tsp"} + } } } unitsShort{ @@ -1819,6 +2098,7 @@ sk{ } compound{ per{"{0}/{1}"} + times{"{0}{1}"} } concentr{ karat{ @@ -2010,6 +2290,13 @@ sk{ other{"{0} dní"} per{"{0}/deň"} } + decade{ + dnam{"desaÅ¥r."} + few{"{0} desaÅ¥r."} + many{"{0} desaÅ¥r."} + one{"{0} desaÅ¥r."} + other{"{0} desaÅ¥r."} + } hour{ dnam{"h"} few{"{0} h"} @@ -2167,6 +2454,13 @@ sk{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"thm"} + few{"{0} thm"} + many{"{0} thm"} + one{"{0} thm"} + other{"{0} thm"} + } } force{ newton{ @@ -2214,6 +2508,57 @@ sk{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + few{"{0} dpcm"} + many{"{0} dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + few{"{0} dpi"} + many{"{0} dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + few{"{0} em"} + many{"{0} em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"Mpx"} + few{"{0} Mpx"} + many{"{0} Mpx"} + one{"{0} Mpx"} + other{"{0} Mpx"} + } + pixel{ + dnam{"px"} + few{"{0} px"} + many{"{0} px"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + few{"{0} ppcm"} + many{"{0} ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + few{"{0} ppi"} + many{"{0} ppi"} + one{"{0} ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -2459,6 +2804,13 @@ sk{ one{"{0} M☉"} other{"{0} M☉"} } + stone{ + dnam{"st"} + few{"{0} st"} + many{"{0} st"} + one{"{0} st"} + other{"{0} st"} + } ton{ dnam{"to"} few{"{0} to"} diff --git a/source/data/unit/sl.txt b/source/data/unit/sl.txt index febd9d7..59fc885 100644 --- a/source/data/unit/sl.txt +++ b/source/data/unit/sl.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sl{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h.mm"} hms{"h.mm.ss"} @@ -131,7 +131,7 @@ sl{ two{"{0} kvadratni milji"} } square-yard{ - dnam{"kvadratni yard"} + dnam{"kvadratni jard"} few{"{0} kvadratni jardi"} one{"{0} kvadratni jard"} other{"{0} kvadratnih jardov"} @@ -201,7 +201,6 @@ sl{ } consumption{ liter-per-100kilometers{ - dnam{"L/100km"} few{"{0} litri na 100 kilometrov"} one{"{0} liter na 100 kilometrov"} other{"{0} litrov na 100 kilometrov"} @@ -787,8 +786,8 @@ sl{ two{"{0} masi sonca"} } ton{ - dnam{"tone"} - few{"{0} tone"} + dnam{"ameriÅ¡ke tone"} + few{"{0} ameriÅ¡ke tone"} one{"{0} ameriÅ¡ka tona"} other{"{0} ameriÅ¡kih ton"} two{"{0} ameriÅ¡ki toni"} @@ -846,6 +845,12 @@ sl{ other{"{0} atmosfer"} two{"{0} atmosferi"} } + bar{ + few{"{0} bari"} + one{"{0} bar"} + other{"{0} barov"} + two{"{0} bara"} + } hectopascal{ dnam{"hektopaskali"} few{"{0} hektopaskali"} @@ -888,6 +893,13 @@ sl{ other{"{0} milimetrov živega srebra"} two{"{0} milimetra živega srebra"} } + pascal{ + dnam{"paskali"} + few{"{0} paskali"} + one{"{0} paskal"} + other{"{0} paskalov"} + two{"{0} paskala"} + } pound-per-square-inch{ dnam{"funti na kvadratni palec"} few{"{0} funti na kvadratni palec"} @@ -1607,6 +1619,7 @@ sl{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1617,18 +1630,18 @@ sl{ two{"{0} kt"} } milligram-per-deciliter{ - dnam{"mg/dL"} - few{"{0} mg/dL"} - one{"{0} mg/dL"} - other{"{0} mg/dL"} - two{"{0} mg/dL"} + dnam{"mg/dl"} + few{"{0} mg/dl"} + one{"{0} mg/dl"} + other{"{0} mg/dl"} + two{"{0} mg/dl"} } millimole-per-liter{ - dnam{"mmol/L"} - few{"{0} mmol/L"} - one{"{0} mmol/L"} - other{"{0} mmol/L"} - two{"{0} mmol/L"} + dnam{"mmol/l"} + few{"{0} mmol/l"} + one{"{0} mmol/l"} + other{"{0} mmol/l"} + two{"{0} mmol/l"} } mole{ dnam{"mol"} @@ -1675,11 +1688,11 @@ sl{ two{"{0} l/100 km"} } liter-per-kilometer{ - dnam{"L/km"} - few{"{0} L/km"} - one{"{0} L/km"} - other{"{0} L/km"} - two{"{0} L/km"} + dnam{"l/km"} + few{"{0} l/km"} + one{"{0} l/km"} + other{"{0} l/km"} + two{"{0} l/km"} } mile-per-gallon{ dnam{"mpg"} @@ -1798,6 +1811,13 @@ sl{ per{"{0} na dan"} two{"{0} d"} } + decade{ + dnam{"dec"} + few{"{0} dec"} + one{"{0} dec"} + other{"{0} dec"} + two{"{0} dec"} + } hour{ dnam{"ur"} few{"{0} h"} @@ -1955,6 +1975,13 @@ sl{ other{"{0} kWh"} two{"{0} kWh"} } + therm-us{ + dnam{"US therm"} + few{"{0} US therm"} + one{"{0} US therm"} + other{"{0} US therm"} + two{"{0} US therm"} + } } force{ newton{ @@ -2002,6 +2029,57 @@ sl{ two{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + few{"{0} dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + two{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + few{"{0} dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + two{"{0} dpi"} + } + em{ + dnam{"em"} + few{"{0} em"} + one{"{0} em"} + other{"{0} em"} + two{"{0} em"} + } + megapixel{ + dnam{"MP"} + few{"{0} MP"} + one{"{0} MP"} + other{"{0} MP"} + two{"{0} MP"} + } + pixel{ + dnam{"px"} + few{"{0} px"} + one{"{0} px"} + other{"{0} px"} + two{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + few{"{0} ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + two{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + few{"{0} ppi"} + one{"{0} ppi"} + other{"{0} ppi"} + two{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"ae"} @@ -2313,6 +2391,13 @@ sl{ other{"{0} atm"} two{"{0} atm"} } + bar{ + dnam{"bar"} + few{"{0} bar"} + one{"{0} bar"} + other{"{0} bar"} + two{"{0} bar"} + } hectopascal{ dnam{"hPa"} few{"{0} hPa"} @@ -2355,6 +2440,13 @@ sl{ other{"{0} mmHG"} two{"{0} mmHG"} } + pascal{ + dnam{"Pa"} + few{"{0} Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + two{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} few{"{0} psi"} @@ -2455,11 +2547,11 @@ sl{ two{"{0} bbl"} } centiliter{ - dnam{"cL"} - few{"{0} cL"} - one{"{0} cL"} - other{"{0} cL"} - two{"{0} cL"} + dnam{"cl"} + few{"{0} cl"} + one{"{0} cl"} + other{"{0} cl"} + two{"{0} cl"} } cubic-centimeter{ dnam{"cm³"} @@ -2527,11 +2619,11 @@ sl{ two{"{0} m. skod."} } deciliter{ - dnam{"dL"} - few{"{0} dL"} - one{"{0} dL"} - other{"{0} dL"} - two{"{0} dL"} + dnam{"dl"} + few{"{0} dl"} + one{"{0} dl"} + other{"{0} dl"} + two{"{0} dl"} } fluid-ounce{ dnam{"fl oz"} @@ -2564,11 +2656,11 @@ sl{ two{"{0} imp. gal"} } hectoliter{ - dnam{"hL"} - few{"{0} hL"} - one{"{0} hL"} - other{"{0} hL"} - two{"{0} hL"} + dnam{"hl"} + few{"{0} hl"} + one{"{0} hl"} + other{"{0} hl"} + two{"{0} hl"} } liter{ dnam{"l"} diff --git a/source/data/unit/smn.txt b/source/data/unit/smn.txt index 778fde9..3f987e6 100644 --- a/source/data/unit/smn.txt +++ b/source/data/unit/smn.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License smn{ - Version{"2.1.47.82"} + Version{"36"} units{ duration{ day{ diff --git a/source/data/unit/sn.txt b/source/data/unit/sn.txt index 261f0fb..07a99a7 100644 --- a/source/data/unit/sn.txt +++ b/source/data/unit/sn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sn{ - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/unit/so.txt b/source/data/unit/so.txt index f5e25f3..797ea6b 100644 --- a/source/data/unit/so.txt +++ b/source/data/unit/so.txt @@ -1,12 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License so{ - Version{"2.1.49.82"} - durationUnits{ - hm{"h:mm"} - hms{"h:mm:ss"} - ms{"m:ss"} - } + Version{"36"} units{ acceleration{ g-force{ @@ -104,9 +99,6 @@ so{ other{"{0} yaardi jibaaran"} } } - compound{ - per{"{0}/{1}"} - } concentr{ karat{ dnam{"karaatis"} @@ -181,8 +173,6 @@ so{ digital{ bit{ dnam{"bitis"} - one{"{0} bit"} - other{"{0} bit"} } byte{ dnam{"beytis"} @@ -239,7 +229,7 @@ so{ century{ dnam{"qarni"} one{"{0} qarni"} - other{"{0} qarni"} + other{"{0} qarniyo"} } day{ dnam{"Maalmo"} @@ -247,6 +237,11 @@ so{ other{"{0} maalmood"} per{"{0} maalintiiba"} } + decade{ + dnam{"rubuc qarni"} + one{"rubuc qarni"} + other{"{0} dec"} + } hour{ dnam{"saacado"} one{"{0} saacad"} @@ -264,7 +259,6 @@ so{ other{"{0} miliseken"} } minute{ - dnam{"daqiiqad"} one{"{0} daqiiqad"} other{"{0} daqiiqo"} per{"{0} daqiiqadiiba"} @@ -311,7 +305,6 @@ so{ other{"{0} miliambeer"} } ohm{ - dnam{"ohmis"} one{"{0} ohm"} other{"{0} ohm"} } @@ -365,7 +358,6 @@ so{ } force{ newton{ - dnam{"nuyuuton"} one{"{0} nuyuuton"} other{"{0} nuyuuton"} } @@ -397,6 +389,18 @@ so{ other{"{0} megahaart"} } } + graphics{ + dot-per-centimeter{ + dnam{"dhibco halkii sentimitir"} + one{"dhibco halkii sentimitir"} + other{"{0} dhibco halkii sentimitirkii"} + } + dot-per-inch{ + dnam{"dhibco injigiiba"} + one{"{0} dhibic injigiiba"} + other{"{0} dhibic injigiiba"} + } + } length{ astronomical-unit{ dnam{"Unuga xidigiska"} @@ -489,7 +493,6 @@ so{ other{"{0} dhibco"} } solar-radius{ - dnam{"raadiyas qoraxeed"} one{"{0} raadiyas qoraxeed"} other{"{0} raadiyas qoraxeed"} } @@ -689,11 +692,6 @@ so{ one{"{0} degrii Faahrenheyt"} other{"{0} degrii Faahrenheyt"} } - generic{ - dnam{"°"} - one{"{0}°"} - other{"{0}°"} - } kelvin{ dnam{"kelfinis"} one{"{0} kelfin"} @@ -851,21 +849,9 @@ so{ } } unitsNarrow{ - compound{ - per{"{0}/{1}"} - } concentr{ percent{ dnam{"%"} - one{"{0}%"} - other{"{0}%"} - } - } - consumption{ - liter-per-100kilometers{ - dnam{"L/100km"} - one{"{0} L/100km"} - other{"{0} L/100km"} } } coordinate{ @@ -903,7 +889,6 @@ so{ other{"{0}b"} } second{ - dnam{"ilbrqsi"} one{"{0}il"} other{"{0}il"} } @@ -921,12 +906,10 @@ so{ } length{ centimeter{ - dnam{"cm"} one{"{0}cm"} other{"{0}cm"} } kilometer{ - dnam{"km"} one{"{0}km"} other{"{0}km"} } @@ -936,7 +919,6 @@ so{ other{"{0}m"} } millimeter{ - dnam{"mm"} one{"{0}mm"} other{"{0}mm"} } @@ -948,7 +930,6 @@ so{ other{"{0}g"} } kilogram{ - dnam{"kg"} one{"{0}kg"} other{"{0}kg"} } @@ -963,8 +944,6 @@ so{ temperature{ celsius{ dnam{"°C"} - one{"{0}°C"} - other{"{0}°C"} } } volume{ @@ -1031,34 +1010,14 @@ so{ one{"{0} hk"} other{"{0} hk"} } - square-centimeter{ - dnam{"cm²"} - one{"{0} cm²"} - other{"{0} cm²"} - per{"{0}/cm²"} - } square-foot{ dnam{"fiit jibaaran"} - one{"{0} ft²"} - other{"{0} ft²"} } square-inch{ dnam{"injis²"} - one{"{0} in²"} - other{"{0} in²"} - per{"{0}/in²"} - } - square-kilometer{ - dnam{"km²"} - one{"{0} km²"} - other{"{0} km²"} - per{"{0}/km²"} } square-meter{ dnam{"mitir jibaaran"} - one{"{0} m²"} - other{"{0} m²"} - per{"{0}/m²"} } square-mile{ dnam{"meyl jibaaran"} @@ -1068,29 +1027,14 @@ so{ } square-yard{ dnam{"yaardi jibaaran"} - one{"{0} yd²"} - other{"{0} yd²"} } } - compound{ - per{"{0}/{1}"} - } concentr{ karat{ dnam{"karaat"} one{"{0} kr"} other{"{0} kr"} } - milligram-per-deciliter{ - dnam{"mg/dL"} - one{"{0} mg/dL"} - other{"{0} mg/dL"} - } - millimole-per-liter{ - dnam{"mmol/L"} - one{"{0} mmol/L"} - other{"{0} mmol/L"} - } mole{ dnam{"mool"} one{"{0} mool"} @@ -1103,13 +1047,9 @@ so{ } percent{ dnam{"boqolkiiba"} - one{"{0}%"} - other{"{0}%"} } permille{ dnam{"baarmiil"} - one{"{0}‰"} - other{"{0}‰"} } permyriad{ dnam{"bermiraad"} @@ -1118,20 +1058,11 @@ so{ } } consumption{ - liter-per-100kilometers{ - dnam{"L/100km"} - one{"{0} L/100km"} - other{"{0} L/100km"} - } liter-per-kilometer{ dnam{"litar/km"} - one{"{0} L/km"} - other{"{0} L/km"} } mile-per-gallon{ dnam{"meyl/gal"} - one{"{0} mpg US"} - other{"{0} mpg US"} } mile-per-gallon-imperial{ dnam{"meyl/gal imb."} @@ -1147,11 +1078,6 @@ so{ west{"{0} G"} } digital{ - bit{ - dnam{"bit"} - one{"{0} bit"} - other{"{0} bit"} - } byte{ dnam{"beyt"} one{"{0} beyt"} @@ -1159,33 +1085,21 @@ so{ } gigabit{ dnam{"Gbit"} - one{"{0} Gb"} - other{"{0} Gb"} } gigabyte{ dnam{"GBeyt"} - one{"{0} GB"} - other{"{0} GB"} } kilobit{ dnam{"kbit"} - one{"{0} kb"} - other{"{0} kb"} } kilobyte{ dnam{"kBeyt"} - one{"{0} kB"} - other{"{0} kB"} } megabit{ dnam{"Mbit"} - one{"{0} Mb"} - other{"{0} Mb"} } megabyte{ dnam{"MBeyt"} - one{"{0} MB"} - other{"{0} MB"} } petabyte{ dnam{"BBeyt"} @@ -1194,13 +1108,9 @@ so{ } terabit{ dnam{"Tbit"} - one{"{0} Tb"} - other{"{0} Tb"} } terabyte{ dnam{"TBeyt"} - one{"{0} TB"} - other{"{0} TB"} } } duration{ @@ -1228,8 +1138,6 @@ so{ } millisecond{ dnam{"milisek"} - one{"{0} ms"} - other{"{0} ms"} } minute{ dnam{"daqiiqad"} @@ -1270,23 +1178,15 @@ so{ electric{ ampere{ dnam{"ambs"} - one{"{0} A"} - other{"{0} A"} } milliampere{ dnam{"miliambs"} - one{"{0} mA"} - other{"{0} mA"} } ohm{ dnam{"ohmis"} - one{"{0} Ω"} - other{"{0} Ω"} } volt{ dnam{"fooltis"} - one{"{0} V"} - other{"{0} V"} } } energy{ @@ -1312,8 +1212,6 @@ so{ } joule{ dnam{"juules"} - one{"{0} J"} - other{"{0} J"} } kilocalorie{ dnam{"kilokalooris"} @@ -1322,8 +1220,6 @@ so{ } kilojoule{ dnam{"kiilojuul"} - one{"{0} kJ"} - other{"{0} kJ"} } kilowatt-hour{ dnam{"KW-saacad"} @@ -1343,26 +1239,16 @@ so{ other{"{0} lbf"} } } - frequency{ - gigahertz{ - dnam{"GHz"} - one{"{0} GHz"} - other{"{0} GHz"} + graphics{ + dot-per-centimeter{ + dnam{"dhsm"} + one{"dhsm"} + other{"{0} dhsm"} } - hertz{ - dnam{"Hz"} - one{"{0} Hz"} - other{"{0} Hz"} - } - kilohertz{ - dnam{"kHz"} - one{"{0} kHz"} - other{"{0} kHz"} - } - megahertz{ - dnam{"MHz"} - one{"{0} MHz"} - other{"{0} MHz"} + dot-per-inch{ + dnam{"dhbi"} + one{"{0} dhbi"} + other{"{0} dhbi"} } } length{ @@ -1371,34 +1257,12 @@ so{ one{"{0} ux"} other{"{0} ux"} } - centimeter{ - dnam{"cm"} - one{"{0} cm"} - other{"{0} cm"} - per{"{0}/cm"} - } decimeter{ - dnam{"dm"} one{"{0}dm"} other{"{0}dm"} } - foot{ - dnam{"ft"} - one{"{0} ft"} - other{"{0} ft"} - per{"{0}/ft"} - } inch{ dnam{"injis"} - one{"{0} in"} - other{"{0} in"} - per{"{0}/in"} - } - kilometer{ - dnam{"km"} - one{"{0} km"} - other{"{0} km"} - per{"{0}/km"} } light-year{ dnam{"smi"} @@ -1407,14 +1271,9 @@ so{ } meter{ dnam{"m"} - one{"{0} m"} - other{"{0} m"} - per{"{0}/m"} } micrometer{ dnam{"µmitir"} - one{"{0} µm"} - other{"{0} µm"} } mile{ dnam{"meyl"} @@ -1426,16 +1285,6 @@ so{ one{"{0} smy"} other{"{0} smy"} } - millimeter{ - dnam{"mm"} - one{"{0} mm"} - other{"{0} mm"} - } - nanometer{ - dnam{"nm"} - one{"{0} nm"} - other{"{0} nm"} - } nautical-mile{ dnam{"nmy"} one{"{0} nmy"} @@ -1458,20 +1307,14 @@ so{ } solar-radius{ dnam{"raadiyas qoraxeed"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"yaardi"} - one{"{0} yd"} - other{"{0} yd"} } } light{ lux{ dnam{"laks"} - one{"{0} lx"} - other{"{0} lx"} } solar-luminosity{ dnam{"iftiinada qorraxda"} @@ -1487,8 +1330,6 @@ so{ } dalton{ dnam{"dalton"} - one{"{0} Da"} - other{"{0} Da"} } earth-mass{ dnam{"cufk Dhulka"} @@ -1497,30 +1338,6 @@ so{ } gram{ dnam{"garaam"} - one{"{0} g"} - other{"{0} g"} - per{"{0}/g"} - } - kilogram{ - dnam{"kg"} - one{"{0} kg"} - other{"{0} kg"} - per{"{0}/kg"} - } - metric-ton{ - dnam{"t"} - one{"{0} t"} - other{"{0} t"} - } - microgram{ - dnam{"µg"} - one{"{0} µg"} - other{"{0} µg"} - } - milligram{ - dnam{"mg"} - one{"{0} mg"} - other{"{0} mg"} } ounce{ dnam{"ow"} @@ -1546,40 +1363,16 @@ so{ } ton{ dnam{"tan"} - one{"{0} tn"} - other{"{0} tn"} } } power{ - gigawatt{ - dnam{"GW"} - one{"{0} GW"} - other{"{0} GW"} - } horsepower{ dnam{"hb"} one{"{0} hb"} other{"{0} hb"} } - kilowatt{ - dnam{"kW"} - one{"{0} kW"} - other{"{0} kW"} - } - megawatt{ - dnam{"MW"} - one{"{0} MW"} - other{"{0} MW"} - } - milliwatt{ - dnam{"mW"} - one{"{0} mW"} - other{"{0} mW"} - } watt{ dnam{"waat"} - one{"{0} W"} - other{"{0} W"} } } pressure{ @@ -1593,11 +1386,6 @@ so{ one{"{0} hBa"} other{"{0} hBa"} } - inch-hg{ - dnam{"inHg"} - one{"{0} inHg"} - other{"{0} inHg"} - } kilopascal{ dnam{"kBa"} one{"{0} kBa"} @@ -1608,11 +1396,6 @@ so{ one{"{0} Mba"} other{"{0} Mba"} } - millibar{ - dnam{"mbar"} - one{"{0} mbar"} - other{"{0} mbar"} - } millimeter-of-mercury{ dnam{"mmHg"} one{"{0} mmHg"} @@ -1649,23 +1432,9 @@ so{ temperature{ celsius{ dnam{"deg. C"} - one{"{0}°C"} - other{"{0}°C"} } fahrenheit{ dnam{"deg. F"} - one{"{0}°F"} - other{"{0}°F"} - } - generic{ - dnam{"°"} - one{"{0}°"} - other{"{0}°"} - } - kelvin{ - dnam{"K"} - one{"{0} K"} - other{"{0} K"} } } torque{ @@ -1696,32 +1465,11 @@ so{ one{"{0} sL"} other{"{0} sL"} } - cubic-centimeter{ - dnam{"cm³"} - one{"{0} cm³"} - other{"{0} cm³"} - per{"{0}/cm³"} - } cubic-foot{ dnam{"fiit³"} - one{"{0} ft³"} - other{"{0} ft³"} } cubic-inch{ dnam{"inji³"} - one{"{0} in³"} - other{"{0} in³"} - } - cubic-kilometer{ - dnam{"km³"} - one{"{0} km³"} - other{"{0} km³"} - } - cubic-meter{ - dnam{"m³"} - one{"{0} m³"} - other{"{0} m³"} - per{"{0}/m³"} } cubic-mile{ dnam{"my³"} @@ -1730,8 +1478,6 @@ so{ } cubic-yard{ dnam{"yaardi³"} - one{"{0} yd³"} - other{"{0} yd³"} } cup{ dnam{"koob"} @@ -1743,11 +1489,6 @@ so{ one{"mk"} other{"{0} mk"} } - deciliter{ - dnam{"dL"} - one{"{0} dL"} - other{"{0} dL"} - } fluid-ounce{ dnam{"own dr"} one{"{0} own dr"} @@ -1770,27 +1511,12 @@ so{ other{"{0} gal Imb,"} per{"{0}/gal Imb."} } - hectoliter{ - dnam{"hL"} - one{"{0} hL"} - other{"{0} hL"} - } liter{ dnam{"litar"} one{"{0} L"} other{"{0} L"} per{"{0}/L"} } - megaliter{ - dnam{"ML"} - one{"{0} ML"} - other{"{0} ML"} - } - milliliter{ - dnam{"mL"} - one{"{0} mL"} - other{"{0} mL"} - } pint{ dnam{"bint"} one{"{0} bt"} diff --git a/source/data/unit/sq.txt b/source/data/unit/sq.txt index e5cf8dc..f9b66fa 100644 --- a/source/data/unit/sq.txt +++ b/source/data/unit/sq.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sq{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -247,6 +247,11 @@ sq{ other{"{0} ditë"} per{"{0}/ditë"} } + decade{ + dnam{"dekada"} + one{"{0} dekadë"} + other{"{0} dekada"} + } hour{ dnam{"orë"} one{"{0} orë"} @@ -362,6 +367,11 @@ sq{ one{"{0} kilovat-orë"} other{"{0} kilovat-orë"} } + therm-us{ + dnam{"njësi termale amerikane"} + one{"{0} njësi termale amerikane"} + other{"{0} njësi termale amerikane"} + } } force{ newton{ @@ -397,6 +407,43 @@ sq{ other{"{0} megaherc"} } } + graphics{ + dot-per-centimeter{ + dnam{"pika për centimetër"} + one{"{0} pikë për centimetër"} + other{"{0} pika për centimetër"} + } + dot-per-inch{ + dnam{"pika për inç"} + one{"{0} pikë për inç"} + other{"{0} pika për inç"} + } + em{ + dnam{"em tipografike"} + one{"{0} em tipografike"} + other{"{0} em tipografike"} + } + megapixel{ + dnam{"megapikselë"} + one{"{0} megapiksel"} + other{"{0} megapikselë"} + } + pixel{ + dnam{"pikselë"} + one{"{0} piksel"} + other{"{0} pikselë"} + } + pixel-per-centimeter{ + dnam{"pikselë për centimetër"} + one{"{0} piksel për centimetër"} + other{"{0} pikselë për centimetër"} + } + pixel-per-inch{ + dnam{"pikselë për inç"} + one{"{0} piksel për inç"} + other{"{0} pikselë për inç"} + } + } length{ astronomical-unit{ dnam{"njësi astronomike"} @@ -620,6 +667,11 @@ sq{ one{"{0} atmosferë"} other{"{0} atmosferë"} } + bar{ + dnam{"bare"} + one{"{0} bar"} + other{"{0} bare"} + } hectopascal{ dnam{"hektopaskal"} one{"{0} hektopaskal"} @@ -1245,11 +1297,6 @@ sq{ one{"{0} mmol/L"} other{"{0} mmol/L"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ppm"} one{"{0} ppm"} @@ -1265,11 +1312,6 @@ sq{ one{"{0}‰"} other{"{0}‰"} } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -1369,6 +1411,11 @@ sq{ other{"{0} ditë"} per{"{0}/ditë"} } + decade{ + dnam{"dekada"} + one{"{0} dekadë"} + other{"{0} dekada"} + } hour{ dnam{"orë"} one{"{0} orë"} @@ -1444,21 +1491,11 @@ sq{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"cal"} one{"{0} cal"} other{"{0} cal"} } - electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} - } foodcalorie{ dnam{"Cal"} one{"{0} Cal"} @@ -1484,17 +1521,10 @@ sq{ one{"{0} kWh"} other{"{0} kWh"} } - } - force{ - newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} - } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} + therm-us{ + dnam{"UStu"} + one{"UStu"} + other{"{0} UStu"} } } frequency{ @@ -1610,11 +1640,6 @@ sq{ one{"{0} pt"} other{"{0} pt"} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"yd"} one{"{0} yd"} @@ -1627,11 +1652,6 @@ sq{ one{"{0} lx"} other{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -1639,16 +1659,6 @@ sq{ one{"{0} CD"} other{"{0} CD"} } - dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"g"} one{"{0} g"} @@ -1693,11 +1703,6 @@ sq{ other{"{0} lb"} per{"{0}/lb"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } ton{ dnam{"tn"} one{"{0} tn"} @@ -1752,16 +1757,6 @@ sq{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} one{"{0} mbar"} @@ -1822,29 +1817,12 @@ sq{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ac ft"} one{"{0} ac ft"} other{"{0} ac ft"} } - barrel{ - dnam{"bbl"} - one{"{0} bbl"} - other{"{0} bbl"} - } centiliter{ dnam{"cL"} one{"{0} cL"} @@ -1907,11 +1885,6 @@ sq{ one{"{0} fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gallon"} one{"{0} gal"} diff --git a/source/data/unit/sr.txt b/source/data/unit/sr.txt index dff74d5..0662d88 100644 --- a/source/data/unit/sr.txt +++ b/source/data/unit/sr.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sr{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -123,6 +123,7 @@ sr{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -167,12 +168,6 @@ sr{ one{"{0} промил"} other{"{0} промила"} } - permyriad{ - dnam{"‱"} - few{"{0}‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -289,6 +284,12 @@ sr{ other{"{0} дана"} per{"{0}/дневно"} } + decade{ + dnam{"деценије"} + few{"{0} дец."} + one{"{0} деценија"} + other{"{0} деценија"} + } hour{ dnam{"сати"} few{"{0} сата"} @@ -379,9 +380,6 @@ sr{ energy{ british-thermal-unit{ dnam{"Британска термална јединица"} - few{"{0} Btu"} - one{"{0} Btu"} - other{"{0} Btu"} } calorie{ dnam{"калорије"} @@ -425,6 +423,12 @@ sr{ one{"{0} киловат-сат"} other{"{0} киловат-сати"} } + therm-us{ + dnam{"US therms"} + few{"{0} US therms"} + one{"{0} US therm"} + other{"{0} US therms"} + } } force{ newton{ @@ -594,12 +598,6 @@ sr{ one{"{0} лукс"} other{"{0} лукса"} } - solar-luminosity{ - dnam{"L☉"} - few{"{0} L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -730,6 +728,12 @@ sr{ one{"{0} атмосфера"} other{"{0} атмосфера"} } + bar{ + dnam{"бари"} + few{"{0} бара"} + one{"{0} бар"} + other{"{0} бара"} + } hectopascal{ dnam{"хектопаскали"} few{"{0} хектопаскала"} @@ -766,6 +770,12 @@ sr{ one{"{0} милиметар живиног стуба"} other{"{0} милиметара живиног стуба"} } + pascal{ + dnam{"паскали"} + few{"{0} паскала"} + one{"{0} паскал"} + other{"{0} паскала"} + } pound-per-square-inch{ dnam{"фунте по квадратном инчу"} few{"{0} фунте по квадратном инчу"} @@ -1022,6 +1032,11 @@ sr{ one{"{0}″"} other{"{0}″"} } + degree{ + few{"{0}°"} + one{"{0}°"} + other{"{0}°"} + } } area{ acre{ @@ -1057,6 +1072,7 @@ sr{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ percent{ @@ -1412,6 +1428,7 @@ sr{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1432,12 +1449,6 @@ sr{ one{"{0} mmol/L"} other{"{0} mmol/L"} } - mole{ - dnam{"mol"} - few{"{0} mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ppm"} few{"{0} ppm"} @@ -1456,12 +1467,6 @@ sr{ one{"{0}‰"} other{"{0}‰"} } - permyriad{ - dnam{"‱"} - few{"{0}‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -1578,6 +1583,12 @@ sr{ other{"{0} дана"} per{"{0}/д"} } + decade{ + dnam{"дец."} + few{"{0} дец."} + one{"{0} дец."} + other{"{0} дец."} + } hour{ dnam{"сати"} few{"{0} сата"} @@ -1666,12 +1677,6 @@ sr{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - few{"{0} Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"cal"} few{"{0} cal"} @@ -1714,19 +1719,16 @@ sr{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"US therm"} + few{"{0} US therms"} + one{"{0} US therm"} + other{"{0} US therms"} + } } force{ newton{ dnam{"њутн"} - few{"{0} N"} - one{"{0} N"} - other{"{0} N"} - } - pound-force{ - dnam{"lbf"} - few{"{0} lbf"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1755,6 +1757,50 @@ sr{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + few{"{0} dpcm"} + one{"{0} dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + few{"{0} dpi"} + one{"{0} dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + few{"{0} em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"MP"} + few{"{0} MP"} + one{"{0} MP"} + other{"{0} MP"} + } + pixel{ + dnam{"px"} + few{"{0} px"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + few{"{0} ppcm"} + one{"{0} ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + few{"{0} ppi"} + one{"{0} ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"ај"} @@ -1863,12 +1909,6 @@ sr{ one{"{0} pt"} other{"{0} pt"} } - solar-radius{ - dnam{"R☉"} - few{"{0} R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"јарди"} few{"{0} јрд"} @@ -1883,12 +1923,6 @@ sr{ one{"{0} lx"} other{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - few{"{0} L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -1897,18 +1931,6 @@ sr{ one{"{0} CD"} other{"{0} CD"} } - dalton{ - dnam{"Da"} - few{"{0} Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - few{"{0} M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"грами"} few{"{0} g"} @@ -1961,12 +1983,6 @@ sr{ other{"{0} lb"} per{"{0}/lb"} } - solar-mass{ - dnam{"M☉"} - few{"{0} M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } ton{ dnam{"tn"} few{"{0} tn"} @@ -2019,6 +2035,12 @@ sr{ one{"{0} atm"} other{"{0} atm"} } + bar{ + dnam{"bar"} + few{"{0} bar"} + one{"{0} bar"} + other{"{0} bar"} + } hectopascal{ dnam{"hPa"} few{"{0} hPa"} @@ -2031,18 +2053,6 @@ sr{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - few{"{0} kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - few{"{0} MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} few{"{0} mbar"} @@ -2055,6 +2065,12 @@ sr{ one{"{0} mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"Pa"} + few{"{0} Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} few{"{0} psi"} @@ -2114,20 +2130,6 @@ sr{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - few{"{0} N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - few{"{0} lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ac ft"} @@ -2135,12 +2137,6 @@ sr{ one{"{0} ac ft"} other{"{0} ac ft"} } - barrel{ - dnam{"bbl"} - few{"{0} bbl"} - one{"{0} bbl"} - other{"{0} bbl"} - } centiliter{ dnam{"cL"} few{"{0} cL"} @@ -2215,12 +2211,6 @@ sr{ one{"{0} fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - few{"{0} fl oz Imp."} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} few{"{0} gal"} diff --git a/source/data/unit/sr_Cyrl.txt b/source/data/unit/sr_Cyrl.txt index 8a82c60..8ccf74b 100644 --- a/source/data/unit/sr_Cyrl.txt +++ b/source/data/unit/sr_Cyrl.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sr_Cyrl{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/unit/sr_Latn.txt b/source/data/unit/sr_Latn.txt index f66fcd3..f36bfb2 100644 --- a/source/data/unit/sr_Latn.txt +++ b/source/data/unit/sr_Latn.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License sr_Latn{ %%Parent{"root"} - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -124,6 +124,7 @@ sr_Latn{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -168,12 +169,6 @@ sr_Latn{ one{"{0} promil"} other{"{0} promila"} } - permyriad{ - dnam{"‱"} - few{"{0}‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -290,6 +285,12 @@ sr_Latn{ other{"{0} dana"} per{"{0}/dnevno"} } + decade{ + dnam{"decenije"} + few{"{0} dec."} + one{"{0} decenija"} + other{"{0} decenija"} + } hour{ dnam{"sati"} few{"{0} sata"} @@ -380,9 +381,6 @@ sr_Latn{ energy{ british-thermal-unit{ dnam{"Britanska termalna jedinica"} - few{"{0} Btu"} - one{"{0} Btu"} - other{"{0} Btu"} } calorie{ dnam{"kalorije"} @@ -426,6 +424,12 @@ sr_Latn{ one{"{0} kilovat-sat"} other{"{0} kilovat-sati"} } + therm-us{ + dnam{"US therms"} + few{"{0} US therms"} + one{"{0} US therm"} + other{"{0} US therms"} + } } force{ newton{ @@ -595,12 +599,6 @@ sr_Latn{ one{"{0} luks"} other{"{0} luksa"} } - solar-luminosity{ - dnam{"L☉"} - few{"{0} L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -731,6 +729,12 @@ sr_Latn{ one{"{0} atmosfera"} other{"{0} atmosfera"} } + bar{ + dnam{"bari"} + few{"{0} bara"} + one{"{0} bar"} + other{"{0} bara"} + } hectopascal{ dnam{"hektopaskali"} few{"{0} hektopaskala"} @@ -767,6 +771,12 @@ sr_Latn{ one{"{0} milimetar živinog stuba"} other{"{0} milimetara živinog stuba"} } + pascal{ + dnam{"paskali"} + few{"{0} paskala"} + one{"{0} paskal"} + other{"{0} paskala"} + } pound-per-square-inch{ dnam{"funte po kvadratnom inču"} few{"{0} funte po kvadratnom inču"} @@ -1023,6 +1033,11 @@ sr_Latn{ one{"{0}″"} other{"{0}″"} } + degree{ + few{"{0}°"} + one{"{0}°"} + other{"{0}°"} + } } area{ acre{ @@ -1058,6 +1073,7 @@ sr_Latn{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ percent{ @@ -1413,6 +1429,7 @@ sr_Latn{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1433,12 +1450,6 @@ sr_Latn{ one{"{0} mmol/L"} other{"{0} mmol/L"} } - mole{ - dnam{"mol"} - few{"{0} mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ppm"} few{"{0} ppm"} @@ -1457,12 +1468,6 @@ sr_Latn{ one{"{0}‰"} other{"{0}‰"} } - permyriad{ - dnam{"‱"} - few{"{0}‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -1579,6 +1584,12 @@ sr_Latn{ other{"{0} dana"} per{"{0}/d"} } + decade{ + dnam{"dec."} + few{"{0} dec."} + one{"{0} dec."} + other{"{0} dec."} + } hour{ dnam{"sati"} few{"{0} sata"} @@ -1667,12 +1678,6 @@ sr_Latn{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - few{"{0} Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"cal"} few{"{0} cal"} @@ -1715,19 +1720,16 @@ sr_Latn{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"US therm"} + few{"{0} US therms"} + one{"{0} US therm"} + other{"{0} US therms"} + } } force{ newton{ dnam{"njutn"} - few{"{0} N"} - one{"{0} N"} - other{"{0} N"} - } - pound-force{ - dnam{"lbf"} - few{"{0} lbf"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1756,6 +1758,36 @@ sr_Latn{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + other{"{0} em"} + } + megapixel{ + dnam{"MP"} + other{"{0} MP"} + } + pixel{ + dnam{"px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + other{"{0} ppi"} + } + } length{ astronomical-unit{ dnam{"aj"} @@ -1864,12 +1896,6 @@ sr_Latn{ one{"{0} pt"} other{"{0} pt"} } - solar-radius{ - dnam{"R☉"} - few{"{0} R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"jardi"} few{"{0} jrd"} @@ -1884,12 +1910,6 @@ sr_Latn{ one{"{0} lx"} other{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - few{"{0} L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -1898,18 +1918,6 @@ sr_Latn{ one{"{0} CD"} other{"{0} CD"} } - dalton{ - dnam{"Da"} - few{"{0} Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - few{"{0} M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"grami"} few{"{0} g"} @@ -1962,12 +1970,6 @@ sr_Latn{ other{"{0} lb"} per{"{0}/lb"} } - solar-mass{ - dnam{"M☉"} - few{"{0} M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } ton{ dnam{"tn"} few{"{0} tn"} @@ -2020,6 +2022,12 @@ sr_Latn{ one{"{0} atm"} other{"{0} atm"} } + bar{ + dnam{"bar"} + few{"{0} bar"} + one{"{0} bar"} + other{"{0} bar"} + } hectopascal{ dnam{"hPa"} few{"{0} hPa"} @@ -2032,18 +2040,6 @@ sr_Latn{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - few{"{0} kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - few{"{0} MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} few{"{0} mbar"} @@ -2056,6 +2052,12 @@ sr_Latn{ one{"{0} mm Hg"} other{"{0} mm Hg"} } + pascal{ + dnam{"Pa"} + few{"{0} Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"psi"} few{"{0} psi"} @@ -2115,20 +2117,6 @@ sr_Latn{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - few{"{0} N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - few{"{0} lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ac ft"} @@ -2136,12 +2124,6 @@ sr_Latn{ one{"{0} ac ft"} other{"{0} ac ft"} } - barrel{ - dnam{"bbl"} - few{"{0} bbl"} - one{"{0} bbl"} - other{"{0} bbl"} - } centiliter{ dnam{"cL"} few{"{0} cL"} @@ -2216,12 +2198,6 @@ sr_Latn{ one{"{0} fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - few{"{0} fl oz Imp."} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} few{"{0} gal"} diff --git a/source/data/unit/sv.txt b/source/data/unit/sv.txt index b1c4abc..a56934b 100644 --- a/source/data/unit/sv.txt +++ b/source/data/unit/sv.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sv{ - Version{"2.1.48.90"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -106,6 +106,7 @@ sv{ } compound{ per{"{0} per {1}"} + times{"{0}-{1}"} } concentr{ karat{ @@ -123,11 +124,6 @@ sv{ one{"{0} millimol per liter"} other{"{0} millimol per liter"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"miljondelar"} one{"{0} miljondel"} @@ -247,6 +243,11 @@ sv{ other{"{0} dygn"} per{"{0} per dygn"} } + decade{ + dnam{"Ã¥rtionden"} + one{"{0} Ã¥rtionde"} + other{"{0} Ã¥rtionden"} + } hour{ dnam{"timmar"} one{"{0} timme"} @@ -397,6 +398,41 @@ sv{ other{"{0} megahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"bildpunkter per centimeter"} + one{"{0} bildpunkt per centimeter"} + other{"{0} bildpunkter per centimeter"} + } + dot-per-inch{ + dnam{"bildpunkter per tum"} + one{"{0} bildpunkt per tum"} + other{"{0} bildpunkter per tum"} + } + em{ + dnam{"typografisk em"} + } + megapixel{ + dnam{"megapixel"} + one{"{0} megapixel"} + other{"{0} megapixel"} + } + pixel{ + dnam{"pixel"} + one{"{0} pixel"} + other{"{0} pixel"} + } + pixel-per-centimeter{ + dnam{"pixel per centimeter"} + one{"{0} pixel per centimeter"} + other{"{0} pixel per centimeter"} + } + pixel-per-inch{ + dnam{"pixel per tum"} + one{"{0} pixel per tum"} + other{"{0} pixel per tum"} + } + } length{ astronomical-unit{ dnam{"astronomiska enheter"} @@ -665,6 +701,11 @@ sv{ one{"{0} millimeter kvicksilver"} other{"{0} millimeter kvicksilver"} } + pascal{ + dnam{"pascal"} + one{"{0} pascal"} + other{"{0} pascal"} + } pound-per-square-inch{ dnam{"pund per kvadrattum"} one{"{0} pund per kvadrattum"} @@ -805,11 +846,6 @@ sv{ one{"{0} fluid ounce"} other{"{0} fluid ounces"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gallon"} one{"{0} gallon"} @@ -878,6 +914,7 @@ sv{ other{"{0}G"} } meter-per-second-squared{ + dnam{"m/s²"} one{"{0}m/s²"} other{"{0}m/s²"} } @@ -885,14 +922,21 @@ sv{ angle{ arc-minute{ dnam{"bÃ¥gmin"} + one{"{0}′"} + other{"{0}′"} } arc-second{ dnam{"bÃ¥gsek"} + one{"{0}″"} + other{"{0}″"} } degree{ dnam{"°"} + one{"{0}°"} + other{"{0}°"} } radian{ + dnam{"rad"} one{"{0}rad"} other{"{0}rad"} } @@ -914,8 +958,10 @@ sv{ other{"{0}ha"} } square-centimeter{ + dnam{"cm²"} one{"{0}cm²"} other{"{0}cm²"} + per{"{0}/cm²"} } square-foot{ dnam{"fot²"} @@ -929,17 +975,19 @@ sv{ per{"{0}/tum²"} } square-kilometer{ + dnam{"km²"} one{"{0}km²"} other{"{0}km²"} + per{"{0}/km²"} } square-meter{ + dnam{"m²"} one{"{0}m²"} other{"{0}m²"} + per{"{0}/m²"} } square-mile{ dnam{"eng. mil²"} - one{"{0} mi²"} - other{"{0} mi²"} per{"{0}/en.mil²"} } square-yard{ @@ -958,28 +1006,35 @@ sv{ other{"{0} krt"} } milligram-per-deciliter{ + dnam{"mg/dL"} one{"{0}mg/dL"} other{"{0}mg/dL"} } millimole-per-liter{ + dnam{"mmol/L"} one{"{0}mmol/L"} other{"{0}mmol/L"} } mole{ - dnam{"mol"} one{"{0}mol"} other{"{0}mol"} } part-per-million{ dnam{"miljondelar"} + one{"{0} ppm"} + other{"{0} ppm"} } percent{ dnam{"%"} one{"{0} %"} other{"{0} %"} } + permille{ + dnam{"‰"} + one{"{0}‰"} + other{"{0}‰"} + } permyriad{ - dnam{"‱"} one{"{0}‱"} other{"{0}‱"} } @@ -991,6 +1046,7 @@ sv{ other{"{0} l/100 km"} } liter-per-kilometer{ + dnam{"L/km"} one{"{0}L/km"} other{"{0}L/km"} } @@ -1024,18 +1080,22 @@ sv{ other{"{0}B"} } gigabit{ + dnam{"Gb"} one{"{0}Gb"} other{"{0}Gb"} } kilobit{ + dnam{"kb"} one{"{0}kb"} other{"{0}kb"} } megabit{ + dnam{"Mb"} one{"{0}Mb"} other{"{0}Mb"} } terabit{ + dnam{"Tb"} one{"{0}Tb"} other{"{0}Tb"} } @@ -1050,13 +1110,20 @@ sv{ dnam{"d"} one{"{0}d"} other{"{0}d"} + per{"{0}/d"} + } + decade{ + one{"{0}Ã¥rt"} + other{"{0}Ã¥rt"} } hour{ dnam{"h"} one{"{0}h"} other{"{0}h"} + per{"{0}/h"} } microsecond{ + dnam{"μs"} one{"{0}μs"} other{"{0}μs"} } @@ -1077,6 +1144,7 @@ sv{ per{"{0}/mÃ¥n"} } nanosecond{ + dnam{"ns"} one{"{0}ns"} other{"{0}ns"} } @@ -1084,6 +1152,7 @@ sv{ dnam{"sek"} one{"{0}s"} other{"{0}s"} + per{"{0}/s"} } week{ dnam{"v"} @@ -1105,6 +1174,7 @@ sv{ other{"{0}A"} } milliampere{ + dnam{"mA"} one{"{0}mA"} other{"{0}mA"} } @@ -1120,8 +1190,12 @@ sv{ } } energy{ + calorie{ + dnam{"cal"} + one{"{0} cal"} + other{"{0} cal"} + } electronvolt{ - dnam{"eV"} one{"{0}eV"} other{"{0}eV"} } @@ -1135,36 +1209,46 @@ sv{ one{"{0}J"} other{"{0}J"} } + kilocalorie{ + dnam{"kcal"} + one{"{0} kcal"} + other{"{0} kcal"} + } kilojoule{ + dnam{"kJ"} one{"{0}kJ"} other{"{0}kJ"} } kilowatt-hour{ + dnam{"kWh"} one{"{0}kWh"} other{"{0}kWh"} } } force{ newton{ - dnam{"newton"} one{"{0}N"} other{"{0}N"} } } frequency{ gigahertz{ + dnam{"GHz"} one{"{0}GHz"} other{"{0}GHz"} } hertz{ + dnam{"Hz"} one{"{0}Hz"} other{"{0}Hz"} } kilohertz{ + dnam{"kHz"} one{"{0}kHz"} other{"{0}kHz"} } megahertz{ + dnam{"MHz"} one{"{0}MHz"} other{"{0}MHz"} } @@ -1179,8 +1263,10 @@ sv{ dnam{"cm"} one{"{0}cm"} other{"{0}cm"} + per{"{0}/cm"} } decimeter{ + dnam{"dm"} one{"{0}dm"} other{"{0}dm"} } @@ -1210,6 +1296,7 @@ sv{ dnam{"km"} one{"{0}km"} other{"{0}km"} + per{"{0}/km"} } light-year{ dnam{"ljusÃ¥r"} @@ -1220,6 +1307,7 @@ sv{ dnam{"m"} one{"{0}m"} other{"{0}m"} + per{"{0}/m"} } micrometer{ dnam{"μm"} @@ -1242,6 +1330,7 @@ sv{ other{"{0}mm"} } nanometer{ + dnam{"nm"} one{"{0}nm"} other{"{0}nm"} } @@ -1256,11 +1345,16 @@ sv{ other{"{0} parsek"} } picometer{ + dnam{"pm"} one{"{0}pm"} other{"{0}pm"} } + point{ + dnam{"pt"} + one{"{0} pt"} + other{"{0} pt"} + } solar-radius{ - dnam{"R☉"} one{"{0}R☉"} other{"{0}R☉"} } @@ -1271,8 +1365,10 @@ sv{ } } light{ + lux{ + dnam{"lux"} + } solar-luminosity{ - dnam{"L☉"} one{"{0}L☉"} other{"{0}L☉"} } @@ -1289,7 +1385,6 @@ sv{ other{"{0}Da"} } earth-mass{ - dnam{"M⊕"} one{"{0}M⊕"} other{"{0}M⊕"} } @@ -1297,13 +1392,16 @@ sv{ dnam{"g"} one{"{0}g"} other{"{0}g"} + per{"{0}/g"} } kilogram{ dnam{"kg"} one{"{0}kg"} other{"{0}kg"} + per{"{0}/kg"} } metric-ton{ + dnam{"t"} one{"{0}t"} other{"{0}t"} } @@ -1313,6 +1411,7 @@ sv{ other{"{0}μg"} } milligram{ + dnam{"mg"} one{"{0}mg"} other{"{0}mg"} } @@ -1334,7 +1433,6 @@ sv{ per{"{0}/libra·454g"} } solar-mass{ - dnam{"M☉"} one{"{0}M☉"} other{"{0}M☉"} } @@ -1351,6 +1449,7 @@ sv{ } power{ gigawatt{ + dnam{"GW"} one{"{0}GW"} other{"{0}GW"} } @@ -1360,14 +1459,17 @@ sv{ other{"{0}hk"} } kilowatt{ + dnam{"kW"} one{"{0}kW"} other{"{0}kW"} } megawatt{ + dnam{"MW"} one{"{0}MW"} other{"{0}MW"} } milliwatt{ + dnam{"mW"} one{"{0}mW"} other{"{0}mW"} } @@ -1379,6 +1481,7 @@ sv{ } pressure{ atmosphere{ + dnam{"atm"} one{"{0}atm"} other{"{0}atm"} } @@ -1393,12 +1496,10 @@ sv{ other{"{0} tum Hg"} } kilopascal{ - dnam{"kPa"} one{"{0}kPa"} other{"{0}kPa"} } megapascal{ - dnam{"MPa"} one{"{0}MPa"} other{"{0}MPa"} } @@ -1430,6 +1531,7 @@ sv{ other{"{0}knop"} } meter-per-second{ + dnam{"m/s"} one{"{0}m/s"} other{"{0}m/s"} } @@ -1447,6 +1549,8 @@ sv{ } fahrenheit{ dnam{"°F"} + one{"{0}°F"} + other{"{0}°F"} } generic{ dnam{"°"} @@ -1461,7 +1565,6 @@ sv{ } torque{ newton-meter{ - dnam{"N⋅m"} one{"{0}Nm"} other{"{0}Nm"} } @@ -1474,8 +1577,6 @@ sv{ } barrel{ dnam{"oljefat"} - one{"{0} fat"} - other{"{0} fat"} } bushel{ dnam{"skäppa"} @@ -1483,12 +1584,15 @@ sv{ other{"{0} skäppor"} } centiliter{ + dnam{"cL"} one{"{0}cL"} other{"{0}cL"} } cubic-centimeter{ + dnam{"cm³"} one{"{0}cm³"} other{"{0}cm³"} + per{"{0}/cm³"} } cubic-foot{ dnam{"fot³"} @@ -1501,12 +1605,15 @@ sv{ other{"{0} tum³"} } cubic-kilometer{ + dnam{"km³"} one{"{0}km³"} other{"{0}km³"} } cubic-meter{ + dnam{"m³"} one{"{0}m³"} other{"{0}m³"} + per{"{0}/m³"} } cubic-mile{ dnam{"eng. mil³"} @@ -1529,6 +1636,7 @@ sv{ other{"{0}kp·2½dl"} } deciliter{ + dnam{"dL"} one{"{0}dL"} other{"{0}dL"} } @@ -1550,6 +1658,7 @@ sv{ per{"{0}/äb·4,6L"} } hectoliter{ + dnam{"hL"} one{"{0}hL"} other{"{0}hL"} } @@ -1560,10 +1669,12 @@ sv{ per{"{0}/L"} } megaliter{ + dnam{"ML"} one{"{0}ML"} other{"{0}ML"} } milliliter{ + dnam{"mL"} one{"{0}mL"} other{"{0}mL"} } @@ -1640,11 +1751,6 @@ sv{ one{"{0} ac"} other{"{0} ac"} } - dunam{ - dnam{"dunam"} - one{"{0} dunam"} - other{"{0} dunam"} - } hectare{ dnam{"hektar"} one{"{0} ha"} @@ -1710,11 +1816,6 @@ sv{ one{"{0} mmol/l"} other{"{0} mmol/l"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"miljondelar"} one{"{0} ppm"} @@ -1731,7 +1832,6 @@ sv{ other{"{0} ‰"} } permyriad{ - dnam{"‱"} one{"{0} ‱"} other{"{0} ‱"} } @@ -1834,6 +1934,11 @@ sv{ other{"{0} d"} per{"{0}/d"} } + decade{ + dnam{"Ã¥rt"} + one{"{0} Ã¥rt"} + other{"{0} Ã¥rt"} + } hour{ dnam{"tim"} one{"{0} tim"} @@ -1911,19 +2016,12 @@ sv{ energy{ british-thermal-unit{ dnam{"BTU"} - one{"{0} Btu"} - other{"{0} Btu"} } calorie{ dnam{"cal"} one{"{0} cal"} other{"{0} cal"} } - electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} - } foodcalorie{ dnam{"kcal"} one{"{0} kcal"} @@ -1953,13 +2051,9 @@ sv{ force{ newton{ dnam{"newton"} - one{"{0} N"} - other{"{0} N"} } pound-force{ dnam{"pound-force"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1984,6 +2078,33 @@ sv{ other{"{0} MHz"} } } + graphics{ + dot-per-centimeter{ + dnam{"d/cm"} + one{"{0} d/cm"} + other{"{0} d/cm"} + } + dot-per-inch{ + dnam{"d/tum"} + one{"{0} d/tum"} + other{"{0} d/tum"} + } + megapixel{ + dnam{"Mpx"} + one{"{0} Mpx"} + other{"{0} Mpx"} + } + pixel-per-centimeter{ + dnam{"px/cm"} + one{"{0} px/cm"} + other{"{0} px/cm"} + } + pixel-per-inch{ + dnam{"px/tum"} + one{"{0} px/tum"} + other{"{0} px/tum"} + } + } length{ astronomical-unit{ dnam{"AE"} @@ -2085,11 +2206,6 @@ sv{ one{"{0} pt"} other{"{0} pt"} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"engelska yard"} one{"{0} eng. yard"} @@ -2102,11 +2218,6 @@ sv{ one{"{0} lux"} other{"{0} lux"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -2116,13 +2227,6 @@ sv{ } dalton{ dnam{"dalton"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"g"} @@ -2168,11 +2272,6 @@ sv{ other{"{0} pund"} per{"{0}/pund"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } stone{ dnam{"eng. sten"} one{"{0} eng. sten"} @@ -2232,16 +2331,6 @@ sv{ one{"{0} tum Hg"} other{"{0} tum Hg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} one{"{0} mbar"} @@ -2302,18 +2391,6 @@ sv{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"eng. t:land·fot"} @@ -2392,11 +2469,6 @@ sv{ one{"{0} fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} one{"{0} gal"} diff --git a/source/data/unit/sv_FI.txt b/source/data/unit/sv_FI.txt index deb3d02..142533c 100644 --- a/source/data/unit/sv_FI.txt +++ b/source/data/unit/sv_FI.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sv_FI{ - Version{"2.1.47.71"} + Version{"36"} unitsNarrow{ speed{ kilometer-per-hour{ diff --git a/source/data/unit/sw.txt b/source/data/unit/sw.txt index 52da88c..abf8c94 100644 --- a/source/data/unit/sw.txt +++ b/source/data/unit/sw.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sw{ - Version{"2.1.48.17"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -247,6 +247,11 @@ sw{ other{"siku {0}"} per{"{0} kwa siku"} } + decade{ + dnam{"miongo"} + one{"mwongo {0}"} + other{"miongo {0}"} + } hour{ dnam{"saa"} one{"saa {0}"} @@ -322,11 +327,6 @@ sw{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"kalori"} one{"kalori {0}"} @@ -362,6 +362,11 @@ sw{ one{"kilowati {0} kwa saa"} other{"kilowati {0} kwa saa"} } + therm-us{ + dnam{"vipimo vya gesi, Marekani"} + one{"kipimo {0} cha gesi, Marekani"} + other{"vipimo {0} vya gesi, Marekani"} + } } force{ newton{ @@ -397,6 +402,43 @@ sw{ other{"megahezi {0}"} } } + graphics{ + dot-per-centimeter{ + dnam{"vitone kwa kila sentimita"} + one{"kitone {0} kwa kila sentimita"} + other{"vitone {0} kwa kila sentimita"} + } + dot-per-inch{ + dnam{"vitone kwa kila inchi"} + one{"kitone {0} kwa kila inchi"} + other{"vitone {0} kwa kila inchi"} + } + em{ + dnam{"em ya kupiga chapa"} + one{"em {0}"} + other{"em {0}"} + } + megapixel{ + dnam{"megapikseli"} + one{"megapikseli {0}"} + other{"megapikseli {0}"} + } + pixel{ + dnam{"pikseli"} + one{"pikseli {0}"} + other{"pikseli {0}"} + } + pixel-per-centimeter{ + dnam{"pikseli kwa kila sentimita"} + one{"pikseli {0} kwa kila sentimita"} + other{"pikseli {0} kwa kila sentimita"} + } + pixel-per-inch{ + dnam{"pikseli kwa kila inchi"} + one{"pikseli {0} kwa kila inchi"} + other{"pikseli {0} kwa kila inchi"} + } + } length{ astronomical-unit{ dnam{"vipimo vya astronomia"} @@ -488,11 +530,6 @@ sw{ one{"pointi {0}"} other{"pointi {0}"} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"yadi"} one{"yadi {0}"} @@ -505,11 +542,6 @@ sw{ one{"lux {0}"} other{"lux {0}"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -517,16 +549,6 @@ sw{ one{"karati {0}"} other{"karati {0}"} } - dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"gramu"} one{"gramu {0}"} @@ -571,11 +593,6 @@ sw{ other{"ratili {0}"} per{"{0} kwa kila ratili"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } ton{ dnam{"tani"} one{"tani {0}"} @@ -620,6 +637,11 @@ sw{ one{"kanieneo {0}"} other{"kanieneo {0}"} } + bar{ + dnam{"bari"} + one{"bari {0}"} + other{"bari {0}"} + } hectopascal{ dnam{"hektopaskali"} one{"hektopaskali {0}"} @@ -650,6 +672,11 @@ sw{ one{"milimita {0} ya zebaki"} other{"milimita {0} za zebaki"} } + pascal{ + dnam{"paskali"} + one{"paskali {0}"} + other{"paskali {0}"} + } pound-per-square-inch{ dnam{"pauni kwa kila inchi mraba"} one{"pauni {0} kwa kila inchi mraba"} @@ -785,11 +812,6 @@ sw{ one{"aunsi {0} ya ujazo"} other{"aunsi {0} za ujazo"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"galoni"} one{"galoni {0}"} @@ -1244,8 +1266,6 @@ sw{ } permyriad{ dnam{"permyriadi"} - one{"{0}‱"} - other{"{0}‱"} } } consumption{ @@ -1346,6 +1366,11 @@ sw{ other{"siku {0}"} per{"{0} kwa siku"} } + decade{ + dnam{"miongo"} + one{"mwongo {0}"} + other{"miongo {0}"} + } hour{ dnam{"saa"} one{"saa {0}"} @@ -1421,11 +1446,6 @@ sw{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"kalori"} one{"kalori {0}"} @@ -1433,8 +1453,6 @@ sw{ } electronvolt{ dnam{"elektrovolti"} - one{"{0} eV"} - other{"{0} eV"} } foodcalorie{ dnam{"kalori"} @@ -1461,17 +1479,18 @@ sw{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"kipimo cha gesi, Marekani"} + one{"kipimo {0} cha gesi, US"} + other{"vipimo {0} vya gesi, US"} + } } force{ newton{ dnam{"newtoni"} - one{"{0} N"} - other{"{0} N"} } pound-force{ dnam{"paunikani"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1496,6 +1515,37 @@ sw{ other{"megahezi {0}"} } } + graphics{ + dot-per-centimeter{ + one{"dpcm {0}"} + other{"dpcm {0}"} + } + dot-per-inch{ + one{"dpi {0}"} + other{"dpi {0}"} + } + em{ + one{"em {0}"} + other{"em {0}"} + } + megapixel{ + one{"MP {0}"} + other{"MP {0}"} + } + pixel{ + dnam{"pikseli"} + one{"px {0}"} + other{"px {0}"} + } + pixel-per-centimeter{ + one{"ppcm {0}"} + other{"ppcm {0}"} + } + pixel-per-inch{ + one{"ppi {0}"} + other{"ppi {0}"} + } + } length{ astronomical-unit{ dnam{"vipimo vya astronomia"} @@ -1587,11 +1637,6 @@ sw{ one{"pointi {0}"} other{"pointi {0}"} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"yadi"} one{"yadi {0}"} @@ -1604,11 +1649,6 @@ sw{ one{"lx {0}"} other{"lx {0}"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -1616,16 +1656,6 @@ sw{ one{"karati {0}"} other{"karati {0}"} } - dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"gramu"} one{"gramu {0}"} @@ -1670,11 +1700,6 @@ sw{ other{"ratili {0}"} per{"{0}/lb"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } ton{ dnam{"tani"} one{"tani {0}"} @@ -1719,6 +1744,11 @@ sw{ one{"atm {0}"} other{"atm {0}"} } + bar{ + dnam{"bari"} + one{"bari {0}"} + other{"bari {0}"} + } hectopascal{ dnam{"hektopaskali"} one{"hPa {0}"} @@ -1730,12 +1760,10 @@ sw{ other{"{0} inHg"} } kilopascal{ - dnam{"kPa"} one{"kPa {0}"} other{"kPa {0}"} } megapascal{ - dnam{"MPa"} one{"MPa {0}"} other{"MPa {0}"} } @@ -1747,7 +1775,11 @@ sw{ millimeter-of-mercury{ dnam{"milimita za zebaki"} one{"milimita {0} ya zebaki"} - other{"{0} mm Hg"} + other{"mm Hg {0}"} + } + pascal{ + one{"Pa {0}"} + other{"Pa {0}"} } pound-per-square-inch{ dnam{"pauni kwa kila inchi mraba"} @@ -1799,18 +1831,6 @@ sw{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ekari futi"} @@ -1884,11 +1904,6 @@ sw{ one{"fl oz {0}"} other{"fl oz {0}"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"galoni"} one{"galoni {0}"} diff --git a/source/data/unit/sw_KE.txt b/source/data/unit/sw_KE.txt new file mode 100644 index 0000000..332869d --- /dev/null +++ b/source/data/unit/sw_KE.txt @@ -0,0 +1,135 @@ +// © 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License +sw_KE{ + Version{"36"} + units{ + duration{ + decade{ + dnam{"mwongo"} + } + microsecond{ + dnam{"maikrosekunde"} + one{"maikroseunde {0}"} + other{"maikrosekunde {0}"} + } + } + graphics{ + dot-per-centimeter{ + dnam{"nukta kwa kila sentimita"} + one{"nukta {0} kwa kila sentimita"} + other{"nukta {0} kwa kila sentimita"} + } + dot-per-inch{ + dnam{"nukta kwa kila inchi"} + one{"nuka {0} kwa kila inchi"} + other{"nukta {0} kwa kila inchi"} + } + em{ + dnam{"ukubwa wa nafasi ya fonti"} + } + pixel-per-inch{ + one{"pikseli {0} kwa kila sekunde"} + other{"pikseli {0} kwa kila sekunde"} + } + } + length{ + light-year{ + one{"miaka {0} ya mwanga"} + other{"miaka {0} ya mwanga"} + } + micrometer{ + dnam{"maikromita"} + one{"maikromita {0}"} + other{"maikromita {0}"} + } + mile-scandinavian{ + one{"maili {0} ya skandinavia"} + other{"maili {0} za skandinavia"} + } + solar-radius{ + dnam{"nusu vipenyo vya jua"} + one{"nusu kipenyo {0} cha jua"} + other{"nusu vipenyo {0} vya jua"} + } + } + pressure{ + bar{ + dnam{"baa"} + one{"baa {0}"} + other{"baa {0}"} + } + pascal{ + one{"Pa {0}"} + other{"Pa {0}"} + } + } + } + unitsNarrow{ + length{ + millimeter{ + one{"mm{0}"} + other{"mm{0}"} + } + } + } + unitsShort{ + area{ + square-centimeter{ + dnam{"cm²"} + } + } + consumption{ + mile-per-gallon-imperial{ + dnam{"maili/gal Imp"} + } + } + duration{ + decade{ + dnam{"mwongo"} + } + } + graphics{ + megapixel{ + dnam{"megapikseli"} + } + pixel{ + one{"pikseli {0}"} + other{"pikseli {0}"} + } + } + length{ + astronomical-unit{ + dnam{"kipimo cha astronomia"} + } + micrometer{ + dnam{"maikromita"} + one{"maikromita {0}"} + other{"maikromita {0}"} + } + mile-scandinavian{ + one{"smi {0}"} + other{"smi {0}"} + } + parsec{ + one{"{0} pc"} + other{"kila sekunde {0}"} + } + solar-radius{ + dnam{"nusu vipenyo vya jua"} + one{"R☉ {0}"} + other{"R☉ {0}"} + } + } + pressure{ + bar{ + dnam{"baa"} + one{"baa {0}"} + other{"baa {0}"} + } + inch-hg{ + one{"inHg {0}"} + other{"inHg {0}"} + } + } + } +} diff --git a/source/data/unit/ta.txt b/source/data/unit/ta.txt index 09ec89a..26033e6 100644 --- a/source/data/unit/ta.txt +++ b/source/data/unit/ta.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ta{ - Version{"2.1.48.17"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -104,6 +104,9 @@ ta{ other{"{0} சதுர யார்டுகள்"} } } + compound{ + per{"{0}/{1}"} + } concentr{ karat{ dnam{"காரட்கள்"} @@ -170,10 +173,10 @@ ta{ } coordinate{ dnam{"கார்டினல் திசை"} - east{"{0}கி"} + east{"{0}கிழக்கு"} north{"{0}வ"} - south{"{0}தெ"} - west{"{0}மே"} + south{"{0}தெற்கு"} + west{"{0}மேற்கு"} } digital{ bit{ @@ -244,6 +247,11 @@ ta{ other{"{0} நாட்கள்"} per{"{0} / நாள்"} } + decade{ + dnam{"தசாப்தங்கள்"} + one{"{0} தசாப்தம்"} + other{"{0} தசாப்தங்கள்"} + } hour{ dnam{"மணிநேரங்கள்"} one{"{0} மணிநேரம்"} @@ -359,6 +367,11 @@ ta{ one{"{0} கிலோவாட் மணிநேரம்"} other{"{0} கிலோவாட் மணிநேரம்"} } + therm-us{ + dnam{"அமெரிக்க வெப்ப அலகுகள்"} + one{"{0} அமெரிக்க வெப்ப அலகு"} + other{"{0} அமெரிக்க வெப்ப அலகுகள்"} + } } force{ newton{ @@ -394,6 +407,43 @@ ta{ other{"{0} மெகாஹெர்ட்ஸ்"} } } + graphics{ + dot-per-centimeter{ + dnam{"புள்ளிகள் / சென்டிமீட்டர்"} + one{"{0} புள்ளி / சென்டிமீட்டர்"} + other{"{0} புள்ளிகள் / சென்டிமீட்டர்"} + } + dot-per-inch{ + dnam{"புள்ளிகள் / அங்குலம்"} + one{"{0} புள்ளி / அங்குலம்"} + other{"{0} புள்ளிகள் / அங்குலம்"} + } + em{ + dnam{"அச்சுக்கலை எம்"} + one{"{0} எம்"} + other{"{0} எம்கள்"} + } + megapixel{ + dnam{"மெகாபிக்சல்கள்"} + one{"{0} மெகாபிக்சல்"} + other{"{0} மெகாபிக்சல்கள்"} + } + pixel{ + dnam{"பிக்சல்கள்"} + one{"{0} பிக்சல்"} + other{"{0} பிக்சல்கள்"} + } + pixel-per-centimeter{ + dnam{"பிக்சல்கள்/ சென்டிமீட்டர்"} + one{"{0} பிக்சல்/ சென்டிமீட்டர்"} + other{"{0} பிக்சல்கள்/ சென்டிமீட்டர்"} + } + pixel-per-inch{ + dnam{"பிக்சல்கள்/ அங்குலம்"} + one{"{0} பிக்சல்/ அங்குலம்"} + other{"{0} பிக்சல்கள்/ அங்குலம்"} + } + } length{ astronomical-unit{ dnam{"வானியல் அலகுகள்"} @@ -622,6 +672,11 @@ ta{ one{"{0} வளிஅழுத்தம்"} other{"{0} வளிஅழுத்தங்கள்"} } + bar{ + dnam{"பார்கள்"} + one{"{0} பார்"} + other{"{0} பார்கள்"} + } hectopascal{ dnam{"ஹெக்டோபாஸ்கல்"} one{"{0} ஹெக்டோபாஸ்கல்"} @@ -652,6 +707,11 @@ ta{ one{"{0} பாதரச மில்லிமீட்டர்"} other{"{0} பாதரச மில்லிமீட்டர்கள்"} } + pascal{ + dnam{"பாஸ்கல்கள்"} + one{"{0} பாஸ்கல்"} + other{"{0} பாஸ்கல்கள்"} + } pound-per-square-inch{ dnam{"பவுண்டுகள்/சதுர அங்குலம்"} one{"{0} பவுண்டு/சதுர அங்குலம்"} @@ -691,6 +751,11 @@ ta{ one{"{0} டிகிரி ஃபாரன்ஹீட்"} other{"{0} டிகிரி ஃபாரன்ஹீட்"} } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ dnam{"கெல்வின்"} one{"{0} கெல்வின்"} @@ -894,6 +959,16 @@ ta{ other{"{0} ச. மை."} } } + compound{ + per{"{0}/{1}"} + } + concentr{ + percent{ + dnam{"%"} + one{"{0}%"} + other{"{0}%"} + } + } consumption{ liter-per-100kilometers{ dnam{"லி./100கி.மீ"} @@ -1085,6 +1160,11 @@ ta{ one{"{0} பாத. மி.மீ."} other{"{0} பாத. மி.மீ."} } + pound-per-square-inch{ + dnam{"psi"} + one{"{0} psi"} + other{"{0} psi"} + } } speed{ kilometer-per-hour{ @@ -1114,6 +1194,11 @@ ta{ one{"{0}°ஃபா."} other{"{0}°ஃபா."} } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ dnam{"கெல்."} one{"{0} கெல்."} @@ -1233,6 +1318,9 @@ ta{ other{"{0} யா.²"} } } + compound{ + per{"{0}/{1}"} + } concentr{ karat{ dnam{"கார."} @@ -1251,8 +1339,8 @@ ta{ } mole{ dnam{"மோல்"} - one{"{0} mol"} - other{"{0} mol"} + one{"{0} மோல்"} + other{"{0} மோல்"} } part-per-million{ dnam{"ப./மி."} @@ -1261,14 +1349,16 @@ ta{ } percent{ dnam{"சதவீதம்"} + one{"{0}%"} + other{"{0}%"} } permille{ dnam{"மில்லி ஒன்றுக்கு"} + one{"{0}‰"} + other{"{0}‰"} } permyriad{ dnam{"பெர்மிரியட்"} - one{"{0}‱"} - other{"{0}‱"} } } consumption{ @@ -1313,24 +1403,48 @@ ta{ } gigabit{ dnam{"கி.பிட்"} + one{"{0} Gb"} + other{"{0} Gb"} } gigabyte{ dnam{"கி.பைட்"} + one{"{0} GB"} + other{"{0} GB"} } kilobit{ dnam{"கிலோ பிட்"} + one{"{0} kb"} + other{"{0} kb"} } kilobyte{ dnam{"கி.பை."} + one{"{0} kB"} + other{"{0} kB"} } megabit{ dnam{"மெ.பிட்."} + one{"{0} Mb"} + other{"{0} Mb"} } megabyte{ dnam{"மெ.பை."} + one{"{0} MB"} + other{"{0} MB"} + } + petabyte{ + dnam{"PB"} + one{"{0} PB"} + other{"{0} PB"} } terabit{ dnam{"டெ.பி."} + one{"{0} Tb"} + other{"{0} Tb"} + } + terabyte{ + dnam{"TB"} + one{"{0} TB"} + other{"{0} TB"} } } duration{ @@ -1345,6 +1459,11 @@ ta{ other{"{0} நாட்கள்"} per{"{0}/நா"} } + decade{ + dnam{"தசாப்தம்"} + one{"{0} தசாப்தம்"} + other{"{0} தசாப்தம்"} + } hour{ dnam{"மணிநேர."} one{"{0} மணிநேரம்"} @@ -1410,6 +1529,8 @@ ta{ } ohm{ dnam{"ஓம்ஸ்"} + one{"{0} Ω"} + other{"{0} Ω"} } volt{ dnam{"வோ."} @@ -1430,8 +1551,6 @@ ta{ } electronvolt{ dnam{"எலக்ட்ரான்வோல்ட்"} - one{"{0} eV"} - other{"{0} eV"} } foodcalorie{ dnam{"கலோ."} @@ -1458,17 +1577,22 @@ ta{ one{"{0} கி.வா.à®®.நே."} other{"{0} கி.வா.à®®.நே."} } + therm-us{ + dnam{"யூஎஸ் தெர்ம்"} + one{"{0} யூஎஸ் தெர்ம்"} + other{"{0} யூஎஸ் தெர்ம்"} + } } force{ newton{ dnam{"நியூட்டன்"} - one{"{0} N"} - other{"{0} N"} + one{"{0} நியூ"} + other{"{0} நியூ"} } pound-force{ dnam{"பவுண்ட் விசை"} - one{"{0} lbf"} - other{"{0} lbf"} + one{"{0} ப.வி"} + other{"{0} ப.வி"} } } frequency{ @@ -1493,6 +1617,43 @@ ta{ other{"{0} மெ.ஹெஸ்."} } } + graphics{ + dot-per-centimeter{ + dnam{"பு / செ.மீ"} + one{"{0} பு / செ.மீ"} + other{"{0} பு / செ.மீ"} + } + dot-per-inch{ + dnam{"பு / அங்."} + one{"{0} பு / அங்."} + other{"{0} பு / அங்."} + } + em{ + dnam{"எம்"} + one{"{0} எம்"} + other{"{0} எம்"} + } + megapixel{ + dnam{"எம்.பி"} + one{"{0} எம்.பி"} + other{"{0} எம்.பி"} + } + pixel{ + dnam{"பிக்"} + one{"{0} பிக்"} + other{"{0} பிக்"} + } + pixel-per-centimeter{ + dnam{"பிக். / செ.மீ"} + one{"{0} பிக். / செ.மீ"} + other{"{0} பிக். / செ.மீ"} + } + pixel-per-inch{ + dnam{"பிக். / அங்."} + one{"{0} பிக். / அங்."} + other{"{0} பிக். / அங்."} + } + } length{ astronomical-unit{ dnam{"வா.அ."} @@ -1586,8 +1747,6 @@ ta{ } solar-radius{ dnam{"சூரிய ஆரம்"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"கெஜ."} @@ -1603,8 +1762,6 @@ ta{ } solar-luminosity{ dnam{"சூரிய ஒளிர்வுத்தன்மை"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ @@ -1615,13 +1772,9 @@ ta{ } dalton{ dnam{"டால்ட்டன்ஸ்"} - one{"{0} Da"} - other{"{0} Da"} } earth-mass{ dnam{"புவித் திணிவுகள்"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"கிராம்கள்"} @@ -1669,8 +1822,6 @@ ta{ } solar-mass{ dnam{"சூரியத் திணிவுகள்"} - one{"{0} M☉"} - other{"{0} M☉"} } stone{ dnam{"ஸ்டோ."} @@ -1716,6 +1867,16 @@ ta{ } } pressure{ + atmosphere{ + dnam{"atm"} + one{"{0} atm"} + other{"{0} atm"} + } + bar{ + dnam{"பார்"} + one{"{0} பார்"} + other{"{0} பார்கள்"} + } hectopascal{ dnam{"ஹெ.பாஸ்."} one{"{0} ஹெ.பாஸ்."} @@ -1746,6 +1907,16 @@ ta{ one{"{0} பாத. மி.மீ."} other{"{0} பாத. மி.மீ."} } + pascal{ + dnam{"பா."} + one{"{0} பா."} + other{"{0} பா."} + } + pound-per-square-inch{ + dnam{"psi"} + one{"{0} psi"} + other{"{0} psi"} + } } speed{ kilometer-per-hour{ @@ -1780,6 +1951,11 @@ ta{ one{"{0}°ஃபா."} other{"{0}°ஃபா."} } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ dnam{"கெல்."} one{"{0} கெல்."} @@ -1788,14 +1964,14 @@ ta{ } torque{ newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} + dnam{"நியூ.மீ"} + one{"{0} நியூ.மீ"} + other{"{0} நியூ.மீ"} } pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} + dnam{"ப.அடி"} + one{"{0} ப.அடி"} + other{"{0} ப.அடி"} } } volume{ @@ -1806,8 +1982,6 @@ ta{ } barrel{ dnam{"பீப்பாய்"} - one{"{0} bbl"} - other{"{0} bbl"} } centiliter{ dnam{"செ.லி."} @@ -1871,11 +2045,6 @@ ta{ one{"{0} தி. அவு."} other{"{0} தி. அவு."} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"கேல."} one{"{0} கேல."} diff --git a/source/data/unit/te.txt b/source/data/unit/te.txt index 9795d16..13b9202 100644 --- a/source/data/unit/te.txt +++ b/source/data/unit/te.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License te{ - Version{"2.1.48.17"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -54,7 +54,6 @@ te{ other{"{0} ఎకరాలు"} } dunam{ - dnam{"డునామ్"} one{"{0} డునామ్"} other{"{0} డునామ్‌లు"} } @@ -106,6 +105,7 @@ te{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -247,6 +247,11 @@ te{ other{"{0} రోజులు"} per{"రోజుకు {0}"} } + decade{ + dnam{"దశాబ్దాలు"} + one{"{0} దశాబ్దం"} + other{"{0} దశాబ్దాలు"} + } hour{ dnam{"గంటలు"} one{"{0} గంట"} @@ -362,6 +367,11 @@ te{ one{"{0} కిలోవాట్ గంట"} other{"{0} కిలోవాట్-గంటలు"} } + therm-us{ + dnam{"US థెర్మ్‌లు"} + one{"{0} US థెర్మ్‌"} + other{"{0} US థెర్మ్‌లు"} + } } force{ newton{ @@ -397,6 +407,38 @@ te{ other{"{0} మెగాహెర్ట్‌జ్"} } } + graphics{ + dot-per-centimeter{ + dnam{"బిందువులు ప్రతి సెంటిమీటరుకు"} + one{"{0} బిందువు ప్రతి సెంటిమీటరుకు"} + other{"{0} బిందువులు ప్రతి సెంటిమీటరుకు"} + } + dot-per-inch{ + dnam{"బిందువులు ప్రతి అంగుళానికి"} + one{"{0} బిందువు ప్రతి అంగుళానికి"} + other{"{0} బిందువులు ప్రతి అంగుళానికి"} + } + megapixel{ + dnam{"మెగా పిక్సెల్స్"} + one{"{0} మెగా పిక్సెల్స్"} + other{"{0} మెగా పిక్సెల్స్"} + } + pixel{ + dnam{"పిక్సెల్స్"} + one{"{0} px"} + other{"{0} పిక్సెల్స్"} + } + pixel-per-centimeter{ + dnam{"పిక్సెల్స్ ప్రతి సెంటిమీటరుకు"} + one{"{0} పిక్సెల్ ప్రతి సెంటిమీటరుకు"} + other{"{0} పిక్సెల్స్ ప్రతి సెంటిమీటరుకు"} + } + pixel-per-inch{ + dnam{"పిక్సెల్స్ ప్రతి అంగుళానికి"} + one{"{0} పిక్సెల్ ప్రతి అంగుళానికి"} + other{"{0} పిక్సెల్స్ ప్రతి అంగుళానికి"} + } + } length{ astronomical-unit{ dnam{"ఖగోళ ప్రమాణాలు"} @@ -625,6 +667,11 @@ te{ one{"{0} వాతావరణం"} other{"{0} వాతావరణాలు"} } + bar{ + dnam{"బార్"} + one{"{0} బార్"} + other{"{0} బార్‌లు"} + } hectopascal{ dnam{"హెక్టోపాస్కల్‌లు"} one{"{0} హెక్టోపాస్కల్"} @@ -637,12 +684,12 @@ te{ } kilopascal{ dnam{"కిలోపాస్కెల్స్"} - one{"{0} కిలోపాస్కెల్స్"} + one{"{0} కిలోపాస్కెల్"} other{"{0} కిలోపాస్కెల్స్"} } megapascal{ dnam{"మెగాపాస్కెల్స్"} - one{"{0} మెగాపాస్కెల్స్"} + one{"{0} మెగాపాస్కెల్"} other{"{0} మెగాపాస్కెల్స్"} } millibar{ @@ -655,6 +702,11 @@ te{ one{"{0} మిల్లీమీటర్ పాదరసం"} other{"{0} మిల్లీమీటర్ల పాదరసం"} } + pascal{ + dnam{"పాస్కల్‌లు"} + one{"{0} పాస్కల్"} + other{"{0} పాస్కల్‌లు"} + } pound-per-square-inch{ dnam{"చదరపు అంగుళానికి పౌండ్లు"} one{"చదరపు అంగుళానికి {0} పౌండు"} @@ -900,6 +952,7 @@ te{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ percent{ @@ -1130,6 +1183,13 @@ te{ } fahrenheit{ dnam{"°ఫా"} + one{"{0}°ఫా"} + other{"{0}°ఫా"} + } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} } kelvin{ dnam{"కె"} @@ -1252,6 +1312,7 @@ te{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1291,8 +1352,6 @@ te{ } permyriad{ dnam{"పెర్మేరియాడ్"} - one{"{0}‱"} - other{"{0}‱"} } } consumption{ @@ -1393,6 +1452,11 @@ te{ other{"{0} రోజులు"} per{"{0}/రో"} } + decade{ + dnam{"దశా."} + one{"{0} దశా."} + other{"{0} à°¦."} + } hour{ dnam{"గంటలు"} one{"{0} గం."} @@ -1470,8 +1534,6 @@ te{ energy{ british-thermal-unit{ dnam{"BTU"} - one{"{0} Btu"} - other{"{0} Btu"} } calorie{ dnam{"కే"} @@ -1480,8 +1542,6 @@ te{ } electronvolt{ dnam{"ఎలక్ట్రాన్‌వోల్ట్"} - one{"{0} eV"} - other{"{0} eV"} } foodcalorie{ dnam{"కే."} @@ -1508,17 +1568,18 @@ te{ one{"{0} కి.వా.గం"} other{"{0} కి.వా.గం"} } + therm-us{ + dnam{"US థెర్మ్‌"} + one{"{0} US థెర్మ్‌"} + other{"{0} US థెర్మ్‌లు"} + } } force{ newton{ dnam{"న్యూటన్"} - one{"{0} N"} - other{"{0} N"} } pound-force{ dnam{"పౌండ్-ఫోర్స్"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1543,6 +1604,36 @@ te{ other{"{0} మె.హె"} } } + graphics{ + dot-per-centimeter{ + dnam{"బి/సె.మీ."} + one{"{0} బి/సె.మీ."} + other{"{0} బి/సె.మీ."} + } + dot-per-inch{ + dnam{"బి/అం."} + one{"{0} బి/అం."} + other{"{0} బి/అం."} + } + megapixel{ + dnam{"మెగా పిక్సెల్స్"} + one{"{0} మె. పి."} + other{"{0} MP"} + } + pixel{ + dnam{"పిక్సెల్స్"} + } + pixel-per-centimeter{ + dnam{"పి/సె.మీ."} + one{"{0} పి/సె.మీ."} + other{"{0} పి/సె.మీ."} + } + pixel-per-inch{ + dnam{"పి/అం."} + one{"{0} పి/అం."} + other{"{0} పి/అం."} + } + } length{ astronomical-unit{ dnam{"au"} @@ -1631,11 +1722,11 @@ te{ } point{ dnam{"పాయింట్‌లు"} + one{"{0} pt"} + other{"{0} pt"} } solar-radius{ dnam{"సౌర అర్ధవ్యాసం"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"గజాలు"} @@ -1651,8 +1742,6 @@ te{ } solar-luminosity{ dnam{"సోలార్ ల్యూమినోసైటైస్"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ @@ -1668,8 +1757,6 @@ te{ } earth-mass{ dnam{"భూమి ద్రవ్యరాశులు"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"గ్రాములు"} @@ -1717,8 +1804,6 @@ te{ } solar-mass{ dnam{"సౌర ద్రవ్యరాశులు"} - one{"{0} M☉"} - other{"{0} M☉"} } stone{ dnam{"స్టోన్లు"} @@ -1769,6 +1854,11 @@ te{ one{"{0} వాతావ"} other{"{0} వాతావ"} } + bar{ + dnam{"బార్"} + one{"{0} బార్"} + other{"{0} బార్‌లు"} + } hectopascal{ dnam{"హె.పా"} one{"{0} హె.పా"} @@ -1779,15 +1869,8 @@ te{ one{"{0} అం.పాద"} other{"{0} అం.పాద"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } megapascal{ dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} } millibar{ dnam{"మి.బార్"} @@ -1799,6 +1882,11 @@ te{ one{"{0} మిమీ. పాద"} other{"{0} మిమీ. పాద"} } + pascal{ + dnam{"పా"} + one{"{0} పాస్క."} + other{"{0} పాస్క."} + } pound-per-square-inch{ dnam{"పౌ/చ.అం"} one{"{0} పౌ/చ.అం"} @@ -1857,8 +1945,6 @@ te{ } pound-foot{ dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} } } volume{ @@ -1934,11 +2020,6 @@ te{ one{"{0} ద్ర.ఔ."} other{"{0} ద్ర.ఔ."} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"గ్యా."} one{"{0} గ్యా."} diff --git a/source/data/unit/teo.txt b/source/data/unit/teo.txt index 3683d55..5c2311d 100644 --- a/source/data/unit/teo.txt +++ b/source/data/unit/teo.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License teo{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/tg.txt b/source/data/unit/tg.txt index 5c465e5..9f3ce94 100644 --- a/source/data/unit/tg.txt +++ b/source/data/unit/tg.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tg{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/th.txt b/source/data/unit/th.txt index 2afbb24..840969a 100644 --- a/source/data/unit/th.txt +++ b/source/data/unit/th.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License th{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -183,7 +183,7 @@ th{ other{"{0} เมกะไบต์"} } petabyte{ - dnam{"เพตาไบต์"} + dnam{"เพตะไบต์"} other{"{0} เพตะไบต์"} } terabit{ @@ -205,6 +205,10 @@ th{ other{"{0} วัน"} per{"{0} ต่อวัน"} } + decade{ + dnam{"ทศวรรษ"} + other{"{0} ทศวรรษ"} + } hour{ dnam{"ชั่วโมง"} other{"{0} ชั่วโมง"} @@ -299,6 +303,10 @@ th{ dnam{"กิโลวัตต์-ชั่วโมง"} other{"{0} กิโลวัตต์-ชั่วโมง"} } + therm-us{ + dnam{"เธิร์มสหรัฐฯ"} + other{"{0} เธิร์มสหรัฐฯ"} + } } force{ newton{ @@ -328,6 +336,32 @@ th{ other{"{0} เมกะเฮิรตซ์"} } } + graphics{ + dot-per-centimeter{ + dnam{"จุดต่อเซนติเมตร"} + other{"{0} จุดต่อเซนติเมตร"} + } + dot-per-inch{ + dnam{"จุดต่อนิ้ว"} + other{"{0} จุดต่อนิ้ว"} + } + megapixel{ + dnam{"เมกะพิกเซล"} + other{"{0} เมกะพิกเซล"} + } + pixel{ + dnam{"พิกเซล"} + other{"{0} พิกเซล"} + } + pixel-per-centimeter{ + dnam{"พิกเซลต่อเซนติเมตร"} + other{"{0} พิกเซลต่อเซนติเมตร"} + } + pixel-per-inch{ + dnam{"พิกเซลต่อนิ้ว"} + other{"{0} พิกเซลต่อนิ้ว"} + } + } length{ astronomical-unit{ dnam{"หน่วยดาราศาสตร์"} @@ -510,6 +544,10 @@ th{ dnam{"บรรยากาศ"} other{"{0} บรรยากาศ"} } + bar{ + dnam{"บาร์"} + other{"{0} บาร์"} + } hectopascal{ dnam{"เฮกโตปาสกาล"} other{"{0} เฮกโตปาสกาล"} @@ -534,6 +572,10 @@ th{ dnam{"มิลลิเมตรปรอท"} other{"{0} มิลลิเมตรปรอท"} } + pascal{ + dnam{"ปาสกาล"} + other{"{0} ปาสกาล"} + } pound-per-square-inch{ dnam{"ปอนด์ต่อตารางนิ้ว"} other{"{0} ปอนด์ต่อตารางนิ้ว"} @@ -710,6 +752,9 @@ th{ arc-second{ other{"{0}วิ"} } + degree{ + other{"{0}°"} + } } area{ acre{ @@ -887,6 +932,9 @@ th{ dnam{"°C"} other{"{0}°C"} } + fahrenheit{ + other{"{0}°F"} + } } volume{ cubic-kilometer{ @@ -999,15 +1047,20 @@ th{ } mole{ dnam{"โมล"} - other{"{0} mol"} + other{"{0} โมล"} } part-per-million{ dnam{"ส่วน/ล้าน"} other{"{0} สตล."} } + percent{ + dnam{"เปอร์เซ็นต์"} + } + permille{ + dnam{"เปอร์มิลล์"} + } permyriad{ dnam{"เปอร์มีเรียด"} - other{"{0}‱"} } } consumption{ @@ -1090,6 +1143,10 @@ th{ other{"{0} วัน"} per{"{0}/วัน"} } + decade{ + dnam{"ทศวรรษ"} + other{"{0} ทศวรรษ"} + } hour{ dnam{"ชั่วโมง"} other{"{0} ชม."} @@ -1162,7 +1219,6 @@ th{ } electronvolt{ dnam{"อิเล็กตรอนโวลต์"} - other{"{0} eV"} } foodcalorie{ dnam{"แคลอรี"} @@ -1184,15 +1240,17 @@ th{ dnam{"กว.-ชม."} other{"{0} กว.-ชม."} } + therm-us{ + dnam{"เธิร์ม"} + other{"{0} เธิร์ม"} + } } force{ newton{ dnam{"นิวตัน"} - other{"{0} N"} } pound-force{ dnam{"แรงปอนด์"} - other{"{0} lbf"} } } frequency{ @@ -1289,7 +1347,6 @@ th{ } solar-radius{ dnam{"รัศมีวงกลมของดวงอาทิตย์"} - other{"{0} R☉"} } yard{ dnam{"หลา"} @@ -1303,7 +1360,6 @@ th{ } solar-luminosity{ dnam{"ความสว่างดวงอาทิตย์"} - other{"{0} L☉"} } } mass{ @@ -1313,11 +1369,9 @@ th{ } dalton{ dnam{"ดัลตัน"} - other{"{0} Da"} } earth-mass{ dnam{"มวลของโลก"} - other{"{0} M⊕"} } gram{ dnam{"กรัม"} @@ -1357,7 +1411,6 @@ th{ } solar-mass{ dnam{"มวลดวงอาทิตย์"} - other{"{0} M☉"} } ton{ dnam{"ตัน"} @@ -1393,6 +1446,11 @@ th{ pressure{ atmosphere{ dnam{"บรรยากาศ"} + other{"{0} บรรยากาศ"} + } + bar{ + dnam{"บาร์"} + other{"{0} บาร์"} } hectopascal{ dnam{"เฮกโตปาสกาล"} @@ -1402,14 +1460,6 @@ th{ dnam{"นิ้วปรอท"} other{"{0} นิ้วปรอท"} } - kilopascal{ - dnam{"kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - other{"{0} MPa"} - } millibar{ dnam{"มิลลิบาร์"} other{"{0} มิลลิบาร์"} @@ -1459,16 +1509,6 @@ th{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"เอเคอร์-ฟุต"} @@ -1476,7 +1516,6 @@ th{ } barrel{ dnam{"บาร์เรล"} - other{"{0} bbl"} } centiliter{ dnam{"ซล."} @@ -1528,10 +1567,6 @@ th{ dnam{"ฟลูอิดออนซ์"} other{"{0} ฟลูอิดออนซ์"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - other{"{0} fl oz Imp."} - } gallon{ dnam{"แกลลอน"} other{"{0} แกลลอน"} diff --git a/source/data/unit/ti.txt b/source/data/unit/ti.txt index cba4a02..2ba5772 100644 --- a/source/data/unit/ti.txt +++ b/source/data/unit/ti.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ti{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/tk.txt b/source/data/unit/tk.txt index 7e29d4d..91b0396 100644 --- a/source/data/unit/tk.txt +++ b/source/data/unit/tk.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tk{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"hh:mm:ss"} @@ -54,7 +54,6 @@ tk{ other{"{0} akr"} } dunam{ - dnam{"dunam"} one{"{0} dunam"} other{"{0} dunam"} } @@ -106,6 +105,7 @@ tk{ } compound{ per{"{1} başyna {0}"} + times{"{0}.{1}"} } concentr{ karat{ @@ -247,6 +247,11 @@ tk{ other{"{0} gün"} per{"{0}/gün"} } + decade{ + dnam{"onýyllyklar"} + one{"{0} onýyllyk"} + other{"{0} onýyllyk"} + } hour{ dnam{"sagat"} one{"{0} sagat"} @@ -362,6 +367,11 @@ tk{ one{"{0} kilowat-sagat"} other{"{0} kilowat-sagat"} } + therm-us{ + dnam{"ABŞ termleri"} + one{"{0} ABŞ termi"} + other{"{0} ABŞ termi"} + } } force{ newton{ @@ -397,6 +407,39 @@ tk{ other{"{0} megagers"} } } + graphics{ + dot-per-centimeter{ + one{"{0} santimetr başyna nokat"} + other{"{0} santimetr başyna nokat"} + } + dot-per-inch{ + one{"{0} dýuým başyna nokat"} + other{"{0} dýuým başyna nokat"} + } + em{ + dnam{"tipografik em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"megapikseller"} + one{"{0} megapiksel"} + other{"{0} megapiksel"} + } + pixel{ + dnam{"pikseller"} + one{"{0} piksel"} + other{"{0} piksel"} + } + pixel-per-centimeter{ + one{"{0} santimetr başyna piksel"} + other{"{0} santimetr başyna piksel"} + } + pixel-per-inch{ + one{"{0} dýuým başyna piksel"} + other{"{0} dýuým başyna piksel"} + } + } length{ astronomical-unit{ dnam{"astronomik birlik"} @@ -620,6 +663,11 @@ tk{ one{"{0} atmosfera"} other{"{0} atmosfera"} } + bar{ + dnam{"barlar"} + one{"{0} bar"} + other{"{0} bar"} + } hectopascal{ dnam{"gektopaskal"} one{"{0} gektopaskal"} @@ -650,6 +698,11 @@ tk{ one{"{0} millimetr simap sütüni"} other{"{0} millimetr simap sütüni"} } + pascal{ + dnam{"paskallar"} + one{"{0} paskal"} + other{"{0} paskal"} + } pound-per-square-inch{ dnam{"funt/inedördül dýuým"} one{"{0} funt/inedördül dýuým"} @@ -853,6 +906,7 @@ tk{ unitsNarrow{ compound{ per{"{0}/{1}"} + times{"{0}.{1}"} } concentr{ percent{ @@ -1072,6 +1126,7 @@ tk{ } compound{ per{"{0}/{1}"} + times{"{0}.{1}"} } concentr{ karat{ @@ -1213,6 +1268,11 @@ tk{ other{"{0} gün"} per{"{0}/gün"} } + decade{ + dnam{"oný"} + one{"{0} oný"} + other{"{0} oný"} + } hour{ dnam{"sag"} one{"{0} sag"} @@ -1328,6 +1388,11 @@ tk{ one{"{0} kWt. sag"} other{"{0} kWt. sag"} } + therm-us{ + dnam{"ABŞ termi"} + one{"{0} ABŞ termi"} + other{"{0} ABŞ termi"} + } } force{ newton{ @@ -1363,6 +1428,36 @@ tk{ other{"{0} MGs"} } } + graphics{ + dot-per-centimeter{ + dnam{"smbn"} + one{"{0} smbn"} + other{"{0} smbn"} + } + dot-per-inch{ + dnam{"dbn"} + one{"{0} dbn"} + other{"{0} dbn"} + } + megapixel{ + dnam{"megapiksel"} + } + pixel{ + dnam{"pikseller"} + one{"{0} pks"} + other{"{0} pks"} + } + pixel-per-centimeter{ + dnam{"sbp"} + one{"{0} sbp"} + other{"{0} sbp"} + } + pixel-per-inch{ + dnam{"dbp"} + one{"{0} dbp"} + other{"{0} dbp"} + } + } length{ astronomical-unit{ dnam{"ab"} diff --git a/source/data/unit/to.txt b/source/data/unit/to.txt index e42d815..5cab17a 100644 --- a/source/data/unit/to.txt +++ b/source/data/unit/to.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License to{ - Version{"2.1.47.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -45,6 +45,10 @@ to{ dnam{"Ê»eka"} other{"Ê»eka Ê»e {0}"} } + dunam{ + dnam{"tunami"} + other{"tunami Ê»e {0}"} + } hectare{ dnam{"hekitale"} other{"hekitale Ê»e {0}"} @@ -52,6 +56,7 @@ to{ square-centimeter{ dnam{"senitimita sikuea"} other{"senitimita sikuea Ê»e {0}"} + per{"{0} he senitimita sikuea"} } square-foot{ dnam{"fute sikuea"} @@ -60,6 +65,7 @@ to{ square-inch{ dnam{"Ê»inisi sikuea"} other{"Ê»inisi sikuea Ê»e {0}"} + per{"{0} he Ê»inisi sikuea"} } square-kilometer{ dnam{"kilomita sikuea"} @@ -69,6 +75,7 @@ to{ square-meter{ dnam{"mita sikuea Ê»e"} other{"mita sikuea Ê»e {0}"} + per{"{0} he mita sikuea"} } square-mile{ dnam{"maile sikuea"} @@ -96,10 +103,26 @@ to{ dnam{"milimole he lita"} other{"milimole Ê»e {0} he lita"} } + mole{ + dnam{"molo"} + other{"molo Ê»e {0}"} + } part-per-million{ dnam{"konga he miliona"} other{"konga Ê»e {0} he miliona"} } + percent{ + dnam{"peseti"} + other{"peseti Ê»e {0}"} + } + permille{ + dnam{"pemili"} + other{"pemili Ê»e {0}"} + } + permyriad{ + dnam{"pemano"} + other{"pemano Ê»e {0}"} + } } consumption{ liter-per-100kilometers{ @@ -120,6 +143,7 @@ to{ } } coordinate{ + dnam{"fua tefitoÊ»i"} east{"hahake Ê»e {0}"} north{"tokelau Ê»e {0}"} south{"tonga Ê»e {0}"} @@ -158,6 +182,10 @@ to{ dnam{"mekapaiti"} other{"mekapaiti Ê»e {0}"} } + petabyte{ + dnam{"petapaiti"} + other{"petapaiti Ê»e {0}"} + } terabit{ dnam{"telapiti"} other{"telapiti Ê»e {0}"} @@ -168,9 +196,18 @@ to{ } } duration{ + century{ + dnam{"teautaÊ»u"} + other{"teautaÊ»u Ê»e {0}"} + } day{ dnam{"Ê»aho"} other{"Ê»aho Ê»e {0}"} + per{"{0} he Ê»aho"} + } + decade{ + dnam{"honofuluÊ»itaÊ»u"} + other{"honofuluÊ»itaÊ»u Ê»e {0}"} } hour{ dnam{"houa"} @@ -188,10 +225,12 @@ to{ minute{ dnam{"miniti"} other{"miniti Ê»e {0}"} + per{"{0} he miniti"} } month{ dnam{"māhina"} other{"māhina Ê»e {0}"} + per{"{0} he māhina"} } nanosecond{ dnam{"nanosekoni"} @@ -205,10 +244,12 @@ to{ week{ dnam{"uike"} other{"uike Ê»e {0}"} + per{"{0} he uike"} } year{ dnam{"taÊ»u"} other{"taÊ»u Ê»e {0}"} + per{"{0} he taÊ»u"} } } electric{ @@ -230,10 +271,18 @@ to{ } } energy{ + british-thermal-unit{ + dnam{"Ê»iuniti māfana fakapilitānia"} + other{"Ê»iuniti māfana fakapilitānia Ê»e {0}"} + } calorie{ dnam{"kaloli"} other{"kaloli Ê»e {0}"} } + electronvolt{ + dnam{"volotāʻelekitō"} + other{"volotāʻelekitō Ê»e {0}"} + } foodcalorie{ dnam{"kaloli-kai"} other{"kaloli-kai Ê»e {0}"} @@ -254,6 +303,20 @@ to{ dnam{"kilouate-houa"} other{"kilouate-houa Ê»e {0}"} } + therm-us{ + dnam{"Ê»iuniti māfana fakaÊ»amelika"} + other{"Ê»iuniti māfana fakaÊ»amelika Ê»e {0}"} + } + } + force{ + newton{ + dnam{"Niutoni"} + other{"Niutoni Ê»e {0}"} + } + pound-force{ + dnam{"pāunimālohi"} + other{"pāunimālohi Ê»e {0}"} + } } frequency{ gigahertz{ @@ -273,6 +336,36 @@ to{ other{"megahēti Ê»e {0}"} } } + graphics{ + dot-per-centimeter{ + dnam{"toti he senitimita"} + other{"toti Ê»e {0} he senitimita"} + } + dot-per-inch{ + dnam{"toti he Ê»inisi"} + other{"toti Ê»e {0} he Ê»inisi"} + } + em{ + dnam{"Ê»emi fakataipe"} + other{"Ê»emi fakataipe Ê»e {0}"} + } + megapixel{ + dnam{"MekameÊ»atā"} + other{"MekameÊ»atā Ê»e {0}"} + } + pixel{ + dnam{"meÊ»atā"} + other{"meÊ»atā Ê»e {0}"} + } + pixel-per-centimeter{ + dnam{"meÊ»atā he senitimita"} + other{"meÊ»atā Ê»e {0} he senitimita"} + } + pixel-per-inch{ + dnam{"meÊ»atā he Ê»inisi"} + other{"meÊ»atā Ê»e {0} he Ê»inisi"} + } + } length{ astronomical-unit{ dnam{"Ê»iuniti fakaÊ»asitalōnoma"} @@ -281,6 +374,7 @@ to{ centimeter{ dnam{"senitimita"} other{"senitimita Ê»e {0}"} + per{"{0} he senitimita"} } decimeter{ dnam{"tesimita"} @@ -293,6 +387,7 @@ to{ foot{ dnam{"fute"} other{"fute Ê»e {0}"} + per{"{0} he fute"} } furlong{ dnam{"fālongo"} @@ -301,10 +396,12 @@ to{ inch{ dnam{"Ê»inisi"} other{"Ê»inisi Ê»e {0}"} + per{"{0} he Ê»inisi"} } kilometer{ dnam{"kilomita"} other{"kilomita Ê»e {0}"} + per{"{0} he kilomita"} } light-year{ dnam{"taÊ»umaama"} @@ -313,6 +410,7 @@ to{ meter{ dnam{"mita"} other{"mita Ê»e {0}"} + per{"{0} he mita"} } micrometer{ dnam{"maikolomita"} @@ -322,6 +420,10 @@ to{ dnam{"maile"} other{"maile Ê»e {0}"} } + mile-scandinavian{ + dnam{"maile fakasikanitinavia"} + other{"maile fakasikanitinavia Ê»e {0}"} + } millimeter{ dnam{"milimita"} other{"milimita Ê»e {0}"} @@ -342,6 +444,14 @@ to{ dnam{"pikomita"} other{"pikomita Ê»e {0}"} } + point{ + dnam{"poini"} + other{"poini Ê»e {0}"} + } + solar-radius{ + dnam{"lētiasi fakalaʻā"} + other{"lētiasi fakalaʻā Ê»e {0}"} + } yard{ dnam{"iate"} other{"iate Ê»e {0}"} @@ -352,19 +462,33 @@ to{ dnam{"lukisi"} other{"lukisi Ê»e {0}"} } + solar-luminosity{ + dnam{"huhulu fakalaʻā"} + other{"huhulu fakalaʻā Ê»e {0}"} + } } mass{ carat{ dnam{"kalati"} other{"kalati Ê»e {0}"} } + dalton{ + dnam{"talatoni"} + other{"talatoni Ê»e {0}"} + } + earth-mass{ + dnam{"mamafa Ê»o māmani"} + other{"mamafa Ê»o māmani Ê»e {0}"} + } gram{ dnam{"kalami"} other{"kalami Ê»e {0}"} + per{"{0} he kalami"} } kilogram{ dnam{"kilokalami"} other{"kilokalami Ê»e {0}"} + per{"{0} he kilokalami"} } metric-ton{ dnam{"toni"} @@ -381,6 +505,7 @@ to{ ounce{ dnam{"Ê»aunise"} other{"Ê»aunisi Ê»e {0}"} + per{"{0} he Ê»aunise"} } ounce-troy{ dnam{"Ê»aunisi koula"} @@ -389,6 +514,11 @@ to{ pound{ dnam{"pāuni"} other{"pāuni Ê»e {0}"} + per{"{0} he pāuni"} + } + solar-mass{ + dnam{"mamafa Ê»o e laʻā"} + other{"mamafa Ê»o e laʻā Ê»e {0}"} } stone{ dnam{"sitoni"} @@ -426,6 +556,14 @@ to{ } } pressure{ + atmosphere{ + dnam{"Ê»atimosifia"} + other{"Ê»atimosifia Ê»e {0}"} + } + bar{ + dnam{"pā"} + other{"pā Ê»e {0}"} + } hectopascal{ dnam{"hēkitopasikale"} other{"hēkitopasikale Ê»e {0}"} @@ -434,6 +572,14 @@ to{ dnam{"Ê»inisi meakuli"} other{"Ê»inisi meakuli Ê»e {0}"} } + kilopascal{ + dnam{"kilopasikale"} + other{"kilopasikale Ê»e {0}"} + } + megapascal{ + dnam{"mekapasikale"} + other{"mekapasikale Ê»e {0}"} + } millibar{ dnam{"milipā"} other{"milipā Ê»e {0}"} @@ -442,6 +588,10 @@ to{ dnam{"milimita meakuli"} other{"milimita meakuli Ê»e {0}"} } + pascal{ + dnam{"pasikale"} + other{"pasikale Ê»e {0}"} + } pound-per-square-inch{ dnam{"pāuni he Ê»inisi sikuea"} other{"pāuni he Ê»inisi sikuea Ê»e {0}"} @@ -452,6 +602,10 @@ to{ dnam{"kilomita he houa"} other{"kilomita he houa Ê»e {0}"} } + knot{ + dnam{"fakapona"} + other{"fakapona Ê»e {0}"} + } meter-per-second{ dnam{"mita he sekoni"} other{"mita he sekoni Ê»e {0}"} @@ -479,11 +633,25 @@ to{ other{"kelevini Ê»e {0}"} } } + torque{ + newton-meter{ + dnam{"Niutonimita"} + other{"Niutonimita Ê»e {0}"} + } + pound-foot{ + dnam{"pāunifute"} + other{"pāunifute Ê»e {0}"} + } + } volume{ acre-foot{ dnam{"Ê»eka-fute"} other{"Ê»eka-fute Ê»e {0}"} } + barrel{ + dnam{"paelo"} + other{"paelo Ê»e {0}"} + } bushel{ dnam{"pÅ«seli"} other{"pÅ«seli Ê»e {0}"} @@ -495,6 +663,7 @@ to{ cubic-centimeter{ dnam{"senitimita kiupiki"} other{"senitimita kiupiki Ê»e {0}"} + per{"{0} he senitimita kiupiki"} } cubic-foot{ dnam{"fute kiupiki"} @@ -511,6 +680,7 @@ to{ cubic-meter{ dnam{"mita kiupiki"} other{"mita kiupiki Ê»e {0}"} + per{"{0} he mita kiupiki"} } cubic-mile{ dnam{"maile kiupiki"} @@ -524,6 +694,10 @@ to{ dnam{"ipu"} other{"ipu Ê»e {0}"} } + cup-metric{ + dnam{"ipu fakamita"} + other{"ipu fakamita Ê»e {0}"} + } deciliter{ dnam{"tesilita"} other{"tesilita Ê»e {0}"} @@ -532,9 +706,14 @@ to{ dnam{"Ê»aunise tafe"} other{"Ê»aunise tafe Ê»e {0}"} } + fluid-ounce-imperial{ + dnam{"Ê»aunise fakaÊ»emipaea"} + other{"Ê»aunise fakaÊ»emipaea Ê»e {0}"} + } gallon{ dnam{"kālani"} other{"kālani Ê»e {0}"} + per{"{0} he kālani"} } gallon-imperial{ dnam{"kālani fakaÊ»emipaea"} @@ -548,6 +727,7 @@ to{ liter{ dnam{"lita"} other{"lita Ê»e {0}"} + per{"{0} he lita"} } megaliter{ dnam{"mekalita"} @@ -561,6 +741,10 @@ to{ dnam{"painite"} other{"painite Ê»e {0}"} } + pint-metric{ + dnam{"painite fakamita"} + other{"painite fakamita Ê»e {0}"} + } quart{ dnam{"kuata"} other{"kuata Ê»e {0}"} @@ -654,6 +838,10 @@ to{ dnam{"kt"} other{"{0} kt"} } + percent{ + dnam{"%"} + other{"{0}%"} + } } consumption{ liter-per-100kilometers{ @@ -673,6 +861,7 @@ to{ } } coordinate{ + dnam{"fua"} east{"{0} ha"} north{"{0} tk"} south{"{0} to"} @@ -940,8 +1129,8 @@ to{ other{"{0} Ê»au-k"} } pound{ - dnam{"pā"} - other{"{0} pā"} + dnam{"pāu"} + other{"{0} pāu"} } stone{ dnam{"st"} @@ -1157,6 +1346,10 @@ to{ dnam{"Ê»ek"} other{"Ê»ek Ê»e {0}"} } + dunam{ + dnam{"tunami"} + other{"tunami Ê»e {0}"} + } hectare{ dnam{"ha"} other{"ha Ê»e {0}"} @@ -1164,6 +1357,7 @@ to{ square-centimeter{ dnam{"sm²"} other{"sm² Ê»e {0}"} + per{"{0}/sm²"} } square-foot{ dnam{"ft²"} @@ -1172,6 +1366,7 @@ to{ square-inch{ dnam{"in²"} other{"in² Ê»e {0}"} + per{"{0}/in²"} } square-kilometer{ dnam{"km²"} @@ -1181,10 +1376,12 @@ to{ square-meter{ dnam{"m²"} other{"m² Ê»e {0}"} + per{"{0}/m²"} } square-mile{ dnam{"mi²"} other{"mi² Ê»e {0}"} + per{"{0}/mi²"} } square-yard{ dnam{"it²"} @@ -1207,10 +1404,25 @@ to{ dnam{"mmol/l"} other{"mmol Ê»e {0}/l"} } + mole{ + dnam{"mol"} + other{"mol Ê»e {0}"} + } part-per-million{ dnam{"khm"} other{"khm Ê»e {0}"} } + percent{ + dnam{"%"} + other{"% Ê»e {0}"} + } + permille{ + dnam{"‰"} + other{"‰ Ê»e {0}"} + } + permyriad{ + other{"‱ Ê»e {0}"} + } } consumption{ liter-per-100kilometers{ @@ -1231,6 +1443,7 @@ to{ } } coordinate{ + dnam{"fua"} east{"ha Ê»e {0}"} north{"tk Ê»e {0}"} south{"to Ê»e {0}"} @@ -1270,6 +1483,7 @@ to{ other{"MB Ê»e {0}"} } petabyte{ + dnam{"PB"} other{"PB Ê»e {0}"} } terabit{ @@ -1282,9 +1496,18 @@ to{ } } duration{ + century{ + dnam{"tt"} + other{"tt Ê»e {0}"} + } day{ dnam{"Ê»a"} other{"Ê»a Ê»e {0}"} + per{"{0} /Ê»a"} + } + decade{ + dnam{"ht"} + other{"ht Ê»e {0}"} } hour{ dnam{"h"} @@ -1302,10 +1525,12 @@ to{ minute{ dnam{"m"} other{"m Ê»e {0}"} + per{"{0} /m"} } month{ dnam{"mā"} other{"mā Ê»e {0}"} + per{"{0} /mā"} } nanosecond{ dnam{"ns"} @@ -1319,10 +1544,12 @@ to{ week{ dnam{"u"} other{"u Ê»e {0}"} + per{"{0} /u"} } year{ dnam{"taÊ»u"} other{"taÊ»u Ê»e {0}"} + per{"{0} /t"} } } electric{ @@ -1344,10 +1571,17 @@ to{ } } energy{ + british-thermal-unit{ + dnam{"imfP"} + other{"imfP Ê»e {0}"} + } calorie{ dnam{"kal"} other{"kal Ê»e {0}"} } + electronvolt{ + other{"eV Ê»e {0}"} + } foodcalorie{ dnam{"kal-k"} other{"kal-k Ê»e {0}"} @@ -1368,6 +1602,19 @@ to{ dnam{"kWh"} other{"kWh Ê»e {0}"} } + therm-us{ + dnam{"imfA"} + other{"imfA Ê»e {0}"} + } + } + force{ + newton{ + other{"N Ê»e {0}"} + } + pound-force{ + dnam{"pāmā"} + other{"pāmā Ê»e {0}"} + } } frequency{ gigahertz{ @@ -1387,6 +1634,36 @@ to{ other{"MHz Ê»e {0}"} } } + graphics{ + dot-per-centimeter{ + dnam{"toti/sm"} + other{"toti Ê»e {0}/sm"} + } + dot-per-inch{ + dnam{"toti/in"} + other{"toti Ê»e {0}/in"} + } + em{ + dnam{"Ê»emi"} + other{"Ê»emi Ê»e {0}"} + } + megapixel{ + dnam{"MmeÊ»atā"} + other{"MmeÊ»atā Ê»e {0}"} + } + pixel{ + dnam{"meÊ»atā"} + other{"meÊ»atā Ê»e {0}"} + } + pixel-per-centimeter{ + dnam{"meÊ»atā/sm"} + other{"meÊ»atā Ê»e {0}/sm"} + } + pixel-per-inch{ + dnam{"meÊ»atā/in"} + other{"meÊ»atā Ê»e {0}/in"} + } + } length{ astronomical-unit{ dnam{"Ê»iÊ»a"} @@ -1395,6 +1672,7 @@ to{ centimeter{ dnam{"sm"} other{"sm Ê»e {0}"} + per{"{0} /sm"} } decimeter{ dnam{"tm"} @@ -1407,6 +1685,7 @@ to{ foot{ dnam{"ft"} other{"ft Ê»e {0}"} + per{"{0}/ft"} } furlong{ dnam{"fāl"} @@ -1415,10 +1694,12 @@ to{ inch{ dnam{"in"} other{"in Ê»e {0}"} + per{"{0}/in"} } kilometer{ dnam{"km"} other{"km Ê»e {0}"} + per{"{0}/km"} } light-year{ dnam{"tma"} @@ -1427,6 +1708,7 @@ to{ meter{ dnam{"m"} other{"m Ê»e {0}"} + per{"{0}/m"} } micrometer{ dnam{"µm"} @@ -1436,6 +1718,10 @@ to{ dnam{"mi"} other{"mi Ê»e {0}"} } + mile-scandinavian{ + dnam{"msi"} + other{"msi Ê»e {0}"} + } millimeter{ dnam{"mm"} other{"mm Ê»e {0}"} @@ -1456,6 +1742,14 @@ to{ dnam{"pm"} other{"pm Ê»e {0}"} } + point{ + dnam{"pn"} + other{"pn Ê»e {0}"} + } + solar-radius{ + dnam{"L☉"} + other{"L☉ Ê»e {0}"} + } yard{ dnam{"it"} other{"it Ê»e {0}"} @@ -1466,19 +1760,33 @@ to{ dnam{"lx"} other{"lx Ê»e {0}"} } + solar-luminosity{ + dnam{"H☉"} + other{"H☉ Ê»e {0}"} + } } mass{ carat{ dnam{"kt"} other{"kt Ê»e {0}"} } + dalton{ + dnam{"tlt"} + other{"tlt Ê»e {0}"} + } + earth-mass{ + dnam{"mamafa ⊕"} + other{"mamafa ⊕ Ê»e {0}"} + } gram{ dnam{"k"} other{"k Ê»e {0}"} + per{"{0}/k"} } kilogram{ dnam{"kk"} other{"kk Ê»e {0}"} + per{"{0}/kk"} } metric-ton{ dnam{"to"} @@ -1495,14 +1803,20 @@ to{ ounce{ dnam{"Ê»au"} other{"Ê»au Ê»e {0}"} + per{"{0}/Ê»au"} } ounce-troy{ dnam{"Ê»au-k"} other{"Ê»au-k Ê»e {0}"} } pound{ - dnam{"pā"} - other{"pā Ê»e {0}"} + dnam{"pāu"} + other{"pāu Ê»e {0}"} + per{"{0}/pāu"} + } + solar-mass{ + dnam{"mamafa ☉"} + other{"mamafa ☉ Ê»e {0}"} } stone{ dnam{"st"} @@ -1540,6 +1854,14 @@ to{ } } pressure{ + atmosphere{ + dnam{"Ê»ati"} + other{"Ê»ati Ê»e {0}"} + } + bar{ + dnam{"pā"} + other{"pā Ê»e {0}"} + } hectopascal{ dnam{"hPa"} other{"hPa Ê»e {0}"} @@ -1548,6 +1870,12 @@ to{ dnam{"in-Hg"} other{"in-Hg Ê»e {0}"} } + kilopascal{ + other{"kPa Ê»e {0}"} + } + megapascal{ + other{"MPa Ê»e {0}"} + } millibar{ dnam{"mpā"} other{"mpā Ê»e {0}"} @@ -1556,6 +1884,9 @@ to{ dnam{"mm-Hg"} other{"mm-Hg Ê»e {0}"} } + pascal{ + other{"Pā Ê»e {0}"} + } pound-per-square-inch{ dnam{"pā/in²"} other{"pā/in² Ê»e {0}"} @@ -1566,6 +1897,10 @@ to{ dnam{"km/h"} other{"km/h Ê»e {0}"} } + knot{ + dnam{"fp"} + other{"fp Ê»e {0}"} + } meter-per-second{ dnam{"m/s"} other{"m/s Ê»e {0}"} @@ -1585,6 +1920,7 @@ to{ other{"°F Ê»e {0}"} } generic{ + dnam{"°"} other{"° Ê»e {0}"} } kelvin{ @@ -1592,11 +1928,24 @@ to{ other{"K Ê»e {0}"} } } + torque{ + newton-meter{ + other{"N⋅m Ê»e {0}"} + } + pound-foot{ + dnam{"pā⋅ft"} + other{"pā⋅ft Ê»e {0}"} + } + } volume{ acre-foot{ dnam{"Ê»e-ft"} other{"Ê»e-ft Ê»e {0}"} } + barrel{ + dnam{"paelo"} + other{"paelo Ê»e {0}"} + } bushel{ dnam{"pÅ«"} other{"pÅ« Ê»e {0}"} @@ -1608,6 +1957,7 @@ to{ cubic-centimeter{ dnam{"sm³"} other{"sm³ Ê»e {0}"} + per{"{0}/sm³"} } cubic-foot{ dnam{"ft³"} @@ -1624,6 +1974,7 @@ to{ cubic-meter{ dnam{"m³"} other{"m³ Ê»e {0}"} + per{"{0}/m³"} } cubic-mile{ dnam{"mi³"} @@ -1637,6 +1988,10 @@ to{ dnam{"ip"} other{"ip Ê»e {0}"} } + cup-metric{ + dnam{"ipm"} + other{"ipm Ê»e {0}"} + } deciliter{ dnam{"tl"} other{"tl Ê»e {0}"} @@ -1645,9 +2000,14 @@ to{ dnam{"Ê»au-tf"} other{"Ê»au-tf Ê»e {0}"} } + fluid-ounce-imperial{ + dnam{"Ê»au-Ê»em"} + other{"Ê»au-Ê»em Ê»e {0}"} + } gallon{ dnam{"kā"} other{"kā Ê»e {0}"} + per{"{0}/kā"} } gallon-imperial{ dnam{"kāʻem"} @@ -1675,6 +2035,10 @@ to{ dnam{"pt"} other{"pt Ê»e {0}"} } + pint-metric{ + dnam{"ptm"} + other{"ptm Ê»e {0}"} + } quart{ dnam{"ku"} other{"ku Ê»e {0}"} diff --git a/source/data/unit/tr.txt b/source/data/unit/tr.txt index 3d3ff78..6037903 100644 --- a/source/data/unit/tr.txt +++ b/source/data/unit/tr.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tr{ - Version{"2.1.48.42"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -123,11 +123,6 @@ tr{ one{"{0} milimol/litre"} other{"{0} milimol/litre"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"parça/milyon"} one{"{0} parça/milyon"} @@ -207,7 +202,7 @@ tr{ kilobyte{ dnam{"kilobayt"} one{"{0} kilobayt"} - other{"{0} kilobyte"} + other{"{0} kilobayt"} } megabit{ dnam{"megabit"} @@ -247,6 +242,11 @@ tr{ other{"{0} gün"} per{"{0}/gün"} } + decade{ + dnam{"on yıl"} + one{"{0} on yıl"} + other{"{0} on yıl"} + } hour{ dnam{"saat"} one{"{0} saat"} @@ -362,6 +362,11 @@ tr{ one{"{0} kilovatsaat"} other{"{0} kilovatsaat"} } + therm-us{ + dnam{"ABD ısı birimi"} + one{"{0} ABD ısı birimi"} + other{"{0} ABD ısı birimi"} + } } force{ newton{ @@ -397,6 +402,41 @@ tr{ other{"{0} megahertz"} } } + graphics{ + dot-per-centimeter{ + dnam{"nokta/santimetre"} + one{"{0} nokta/santimetre"} + other{"{0} nokta/santimetre"} + } + dot-per-inch{ + dnam{"nokta/inç"} + one{"{0} nokta/inç"} + other{"{0} nokta/inç"} + } + em{ + dnam{"tipografik em"} + } + megapixel{ + dnam{"megapiksel"} + one{"{0} megapiksel"} + other{"{0} megapiksel"} + } + pixel{ + dnam{"piksel"} + one{"{0} piksel"} + other{"{0} piksel"} + } + pixel-per-centimeter{ + dnam{"piksel/santimetre"} + one{"{0} piksel/santimetre"} + other{"{0} piksel/santimetre"} + } + pixel-per-inch{ + dnam{"piksel/inç"} + one{"{0} piksel/inç"} + other{"{0} piksel/inç"} + } + } length{ astronomical-unit{ dnam{"astronomik birim"} @@ -665,6 +705,11 @@ tr{ one{"{0} milimetre cıva"} other{"{0} milimetre cıva"} } + pascal{ + dnam{"paskal"} + one{"{0} paskal"} + other{"{0} paskal"} + } pound-per-square-inch{ dnam{"libre/inç kare"} one{"{0} libre/inç kare"} @@ -791,9 +836,9 @@ tr{ other{"{0} su bardağı"} } cup-metric{ - dnam{"mcup"} - one{"{0} mc"} - other{"{0} mc"} + dnam{"metrik su bardağı"} + one{"{0} metrik su bardağı"} + other{"{0} metrik su bardağı"} } deciliter{ dnam{"desilitre"} @@ -849,7 +894,7 @@ tr{ other{"{0} pint"} } pint-metric{ - dnam{"mpt"} + dnam{"metrik pint"} one{"{0} metrik pint"} other{"{0} metrik pint"} } @@ -890,6 +935,14 @@ tr{ arc-second{ dnam{"açısal sn."} } + degree{ + one{"{0}°"} + other{"{0}°"} + } + radian{ + one{"{0} rad"} + other{"{0} rad"} + } revolution{ dnam{"dev"} one{"{0} dev"} @@ -899,9 +952,53 @@ tr{ area{ acre{ dnam{"akre"} + one{"{0} ac"} + other{"{0} ac"} } hectare{ dnam{"hektar"} + one{"{0} ha"} + other{"{0} ha"} + } + square-centimeter{ + dnam{"cm²"} + one{"{0} cm²"} + other{"{0} cm²"} + per{"{0}/cm²"} + } + square-foot{ + dnam{"ft²"} + one{"{0} ft²"} + other{"{0} ft²"} + } + square-inch{ + dnam{"in²"} + one{"{0} in²"} + other{"{0} in²"} + per{"{0}/in²"} + } + square-kilometer{ + dnam{"km²"} + one{"{0} km²"} + other{"{0} km²"} + per{"{0}/km²"} + } + square-meter{ + dnam{"m²"} + one{"{0} m²"} + other{"{0} m²"} + per{"{0}/m²"} + } + square-mile{ + dnam{"mi²"} + one{"{0} mi²"} + other{"{0} mi²"} + per{"{0}/mi²"} + } + square-yard{ + dnam{"yd²"} + one{"{0} yd²"} + other{"{0} yd²"} } } compound{ @@ -913,12 +1010,37 @@ tr{ one{"{0} ayar"} other{"{0} ayar"} } + milligram-per-deciliter{ + dnam{"mg/dL"} + one{"{0} mg/dL"} + other{"{0} mg/dL"} + } + millimole-per-liter{ + dnam{"mmol/L"} + one{"{0} mmol/L"} + other{"{0} mmol/L"} + } + part-per-million{ + dnam{"ppm"} + one{"{0} ppm"} + other{"{0} ppm"} + } + percent{ + dnam{"%"} + one{"%{0}"} + other{"%{0}"} + } + permille{ + dnam{"‰"} + one{"{0}‰"} + other{"{0}‰"} + } } consumption{ liter-per-100kilometers{ - dnam{"L/100km"} - one{"{0} L/100km"} - other{"{0} L/100km"} + dnam{"l/100km"} + one{"{0} l/100km"} + other{"{0} l/100km"} } liter-per-kilometer{ dnam{"l/km"} @@ -938,20 +1060,53 @@ tr{ west{"{0}B"} } digital{ + bit{ + dnam{"bit"} + one{"{0} bit"} + other{"{0} bit"} + } byte{ dnam{"bayt"} } gigabit{ dnam{"Gbit"} + one{"{0} Gb"} + other{"{0} Gb"} + } + gigabyte{ + dnam{"GB"} + one{"{0} GB"} + other{"{0} GB"} } kilobit{ dnam{"kbit"} + one{"{0} kb"} + other{"{0} kb"} + } + kilobyte{ + dnam{"kB"} + one{"{0} kB"} + other{"{0} kB"} } megabit{ dnam{"Mbit"} + one{"{0} Mb"} + other{"{0} Mb"} + } + megabyte{ + dnam{"MB"} + one{"{0} MB"} + other{"{0} MB"} } terabit{ dnam{"Tbit"} + one{"{0} Tb"} + other{"{0} Tb"} + } + terabyte{ + dnam{"TB"} + one{"{0} TB"} + other{"{0} TB"} } } duration{ @@ -1015,21 +1170,78 @@ tr{ dnam{"yıl"} one{"{0}y"} other{"{0}y"} + per{"{0}/y"} } } electric{ ampere{ dnam{"amper"} + one{"{0} A"} + other{"{0} A"} } milliampere{ dnam{"miliamper"} + one{"{0} mA"} + other{"{0} mA"} + } + ohm{ + dnam{"ohm"} + one{"{0} Ω"} + other{"{0} Ω"} + } + volt{ + dnam{"volt"} + one{"{0} V"} + other{"{0} V"} } } energy{ + calorie{ + one{"{0} cal"} + other{"{0} cal"} + } foodcalorie{ one{"{0} kcal"} other{"{0} kcal"} } + joule{ + one{"{0} J"} + other{"{0} J"} + } + kilocalorie{ + one{"{0} kcal"} + other{"{0} kcal"} + } + kilojoule{ + one{"{0} kJ"} + other{"{0} kJ"} + } + kilowatt-hour{ + one{"{0} kWh"} + other{"{0} kWh"} + } + } + frequency{ + gigahertz{ + dnam{"GHz"} + one{"{0} GHz"} + other{"{0} GHz"} + } + hertz{ + dnam{"Hz"} + one{"{0} Hz"} + other{"{0} Hz"} + } + kilohertz{ + dnam{"kHz"} + one{"{0} kHz"} + other{"{0} kHz"} + } + megahertz{ + dnam{"MHz"} + one{"{0} MHz"} + other{"{0} MHz"} + } } length{ astronomical-unit{ @@ -1041,6 +1253,12 @@ tr{ dnam{"cm"} one{"{0} cm"} other{"{0} cm"} + per{"{0}/cm"} + } + decimeter{ + dnam{"dm"} + one{"{0} dm"} + other{"{0} dm"} } fathom{ dnam{"fathom"} @@ -1051,19 +1269,24 @@ tr{ dnam{"fit"} one{"{0}′"} other{"{0}′"} + per{"{0}/ft"} } furlong{ dnam{"furlong"} + one{"{0} fur"} + other{"{0} fur"} } inch{ dnam{"inç"} one{"{0}″"} other{"{0}″"} + per{"{0}/in"} } kilometer{ dnam{"km"} one{"{0} km"} other{"{0} km"} + per{"{0}/km"} } light-year{ dnam{"Iy"} @@ -1074,19 +1297,54 @@ tr{ dnam{"metre"} one{"{0} m"} other{"{0} m"} + per{"{0}/m"} + } + micrometer{ + one{"{0} µm"} + other{"{0} µm"} } mile{ dnam{"mil"} one{"{0} mil"} other{"{0} mil"} } + mile-scandinavian{ + dnam{"smi"} + one{"{0} smi"} + other{"{0} smi"} + } millimeter{ dnam{"mm"} one{"{0} mm"} other{"{0} mm"} } + nanometer{ + dnam{"nm"} + one{"{0} nm"} + other{"{0} nm"} + } + nautical-mile{ + dnam{"nmi"} + one{"{0} nmi"} + other{"{0} nmi"} + } parsec{ dnam{"parsek"} + one{"{0} pc"} + other{"{0} pc"} + } + picometer{ + dnam{"pm"} + one{"{0} pm"} + other{"{0} pm"} + } + point{ + one{"{0} pt"} + other{"{0} pt"} + } + yard{ + one{"{0} yd"} + other{"{0} yd"} } } light{ @@ -1106,17 +1364,49 @@ tr{ dnam{"gram"} one{"{0} g"} other{"{0} g"} + per{"{0}/g"} } kilogram{ dnam{"kg"} one{"{0} kg"} other{"{0} kg"} + per{"{0}/kg"} + } + metric-ton{ + dnam{"t"} + one{"{0} t"} + other{"{0} t"} + } + microgram{ + dnam{"µg"} + one{"{0} µg"} + other{"{0} µg"} + } + milligram{ + dnam{"mg"} + one{"{0} mg"} + other{"{0} mg"} + } + ounce{ + dnam{"oz"} + one{"{0} oz"} + other{"{0} oz"} + per{"{0}/oz"} } ounce-troy{ dnam{"troy ons"} + one{"{0} oz t"} + other{"{0} oz t"} + } + pound{ + one{"{0} lb"} + other{"{0} lb"} + per{"{0}/lb"} } stone{ dnam{"stone"} + one{"{0} st"} + other{"{0} st"} } ton{ dnam{"Amerikan tonu"} @@ -1124,15 +1414,53 @@ tr{ other{"{0} kısa ton"} } } + power{ + gigawatt{ + one{"{0} GW"} + other{"{0} GW"} + } + horsepower{ + one{"{0} bg"} + other{"{0} bg"} + } + kilowatt{ + one{"{0} kW"} + other{"{0} kW"} + } + megawatt{ + one{"{0} MW"} + other{"{0} MW"} + } + milliwatt{ + one{"{0} mW"} + other{"{0} mW"} + } + watt{ + one{"{0} W"} + other{"{0} W"} + } + } pressure{ + hectopascal{ + dnam{"hPa"} + one{"{0} hPa"} + other{"{0} hPa"} + } inch-hg{ + dnam{"inHg"} one{"{0}\u0022 Hg"} other{"{0}\u0022 Hg"} } millibar{ + dnam{"mbar"} one{"{0} mb"} other{"{0} mb"} } + millimeter-of-mercury{ + dnam{"mm Hg"} + one{"{0} mm Hg"} + other{"{0} mm Hg"} + } pound-per-square-inch{ dnam{"lb/in²"} one{"{0} lb/in²"} @@ -1145,6 +1473,11 @@ tr{ one{"{0} km/sa"} other{"{0} km/sa"} } + knot{ + dnam{"kn"} + one{"{0} kn"} + other{"{0} kn"} + } meter-per-second{ dnam{"m/sn"} one{"{0} m/sn"} @@ -1162,7 +1495,18 @@ tr{ one{"{0}°C"} other{"{0}°C"} } + fahrenheit{ + dnam{"°F"} + one{"{0}°F"} + other{"{0}°F"} + } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ + dnam{"K"} one{"{0}°K"} other{"{0}°K"} } @@ -1174,11 +1518,17 @@ tr{ } bushel{ dnam{"buşel"} + one{"{0} bu"} + other{"{0} bu"} } centiliter{ one{"{0} cl"} other{"{0} cl"} } + cubic-centimeter{ + one{"{0} cm³"} + other{"{0} cm³"} + } cubic-foot{ one{"{0} fit³"} other{"{0} fit³"} @@ -1187,6 +1537,18 @@ tr{ one{"{0} inç³"} other{"{0} inç³"} } + cubic-kilometer{ + one{"{0} km³"} + other{"{0} km³"} + } + cubic-meter{ + one{"{0} m³"} + other{"{0} m³"} + } + cubic-mile{ + one{"{0} mil³"} + other{"{0} mil³"} + } cubic-yard{ one{"{0} yarda³"} other{"{0} yarda³"} @@ -1350,25 +1712,30 @@ tr{ other{"{0} ayar"} } milligram-per-deciliter{ - dnam{"mg/dL"} - one{"{0} mg/dL"} - other{"{0} mg/dL"} + dnam{"mg/dl"} + one{"{0} mg/dl"} + other{"{0} mg/dl"} } millimole-per-liter{ - dnam{"mmol/L"} - one{"{0} mmol/L"} - other{"{0} mmol/L"} - } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} + dnam{"mmol/l"} + one{"{0} mmol/l"} + other{"{0} mmol/l"} } part-per-million{ dnam{"ppm"} one{"{0} ppm"} other{"{0} ppm"} } + percent{ + dnam{"%"} + one{"%{0}"} + other{"%{0}"} + } + permille{ + dnam{"‰"} + one{"‰{0}"} + other{"‰{0}"} + } permyriad{ dnam{"onbinde"} one{"‱{0}"} @@ -1377,9 +1744,9 @@ tr{ } consumption{ liter-per-100kilometers{ - dnam{"L/100km"} - one{"{0} L/100km"} - other{"{0} L/100km"} + dnam{"l/100 km"} + one{"{0} l/100 km"} + other{"{0} l/100 km"} } liter-per-kilometer{ dnam{"l/km"} @@ -1387,7 +1754,7 @@ tr{ other{"{0} l/km"} } mile-per-gallon{ - dnam{"mil/galon"} + dnam{"mil/gal"} one{"{0} mpg"} other{"{0} mpg"} } @@ -1473,6 +1840,11 @@ tr{ other{"{0} gün"} per{"{0}/gün"} } + decade{ + dnam{"on yıl"} + one{"{0} on yıl"} + other{"{0} on yıl"} + } hour{ dnam{"saat"} one{"{0} sa."} @@ -1588,12 +1960,15 @@ tr{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"ABD ısı birimi"} + one{"{0} ABD ısı birimi"} + other{"{0} ABD ısı birimi"} + } } force{ newton{ dnam{"newton"} - one{"{0} N"} - other{"{0} N"} } pound-force{ dnam{"pound kuvvet"} @@ -1623,6 +1998,14 @@ tr{ other{"{0} MHz"} } } + graphics{ + megapixel{ + dnam{"megapiksel"} + } + pixel{ + dnam{"piksel"} + } + } length{ astronomical-unit{ dnam{"AU"} @@ -1653,6 +2036,8 @@ tr{ } furlong{ dnam{"furlong"} + one{"{0} fur"} + other{"{0} fur"} } inch{ dnam{"inç"} @@ -1812,6 +2197,8 @@ tr{ } stone{ dnam{"stone"} + one{"{0} st"} + other{"{0} st"} } ton{ dnam{"Amerikan tonu"} @@ -1962,6 +2349,8 @@ tr{ } bushel{ dnam{"buşel"} + one{"{0} bu"} + other{"{0} bu"} } centiliter{ dnam{"cl"} @@ -2011,9 +2400,9 @@ tr{ other{"{0} sb"} } cup-metric{ - dnam{"mcup"} - one{"{0} mc"} - other{"{0} mc"} + dnam{"msub"} + one{"{0} msb"} + other{"{0} msb"} } deciliter{ dnam{"dl"} @@ -2031,9 +2420,9 @@ tr{ other{"{0} sıvı ons Ä°ng."} } gallon{ - dnam{"galon"} - one{"{0} galon"} - other{"{0} galon"} + dnam{"gal"} + one{"{0} gal"} + other{"{0} gal"} per{"{0}/gal"} } gallon-imperial{ @@ -2074,9 +2463,8 @@ tr{ other{"{0} mpt"} } quart{ - dnam{"quart"} - one{"{0} quart"} - other{"{0} quart"} + one{"{0} qt"} + other{"{0} qt"} } tablespoon{ dnam{"yk"} diff --git a/source/data/unit/tt.txt b/source/data/unit/tt.txt index 10e923d..870f6e8 100644 --- a/source/data/unit/tt.txt +++ b/source/data/unit/tt.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tt{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/twq.txt b/source/data/unit/twq.txt index b05bfe6..e10b5c3 100644 --- a/source/data/unit/twq.txt +++ b/source/data/unit/twq.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License twq{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/tzm.txt b/source/data/unit/tzm.txt index e6529a8..4e349f4 100644 --- a/source/data/unit/tzm.txt +++ b/source/data/unit/tzm.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tzm{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/ug.txt b/source/data/unit/ug.txt index 5f13d0a..5ab394a 100644 --- a/source/data/unit/ug.txt +++ b/source/data/unit/ug.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ug{ - Version{"2.1.49.82"} + Version{"36"} units{ acceleration{ g-force{ diff --git a/source/data/unit/uk.txt b/source/data/unit/uk.txt index 7e8d2e3..59a6da0 100644 --- a/source/data/unit/uk.txt +++ b/source/data/unit/uk.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License uk{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -298,7 +298,7 @@ uk{ few{"{0} петабайти"} many{"{0} петабайтів"} one{"{0} петабайт"} - other{"{0} петабайту"} + other{"{0} петабайта"} } terabit{ dnam{"терабіти"} @@ -488,6 +488,12 @@ uk{ one{"{0} кіловат-година"} other{"{0} кіловат-години"} } + therm-us{ + few{"{0} американських терми"} + many{"{0} американських термів"} + one{"{0} американський терм"} + other{"{0} американського терма"} + } } force{ newton{ @@ -535,6 +541,15 @@ uk{ other{"{0} мегагерца"} } } + graphics{ + megapixel{ + dnam{"мегапікселі"} + few{"{0} Мп"} + many{"{0} Мп"} + one{"{0} мегапіксель"} + other{"{0} мегапікселя"} + } + } length{ astronomical-unit{ dnam{"астрономічні одиниці"} @@ -847,6 +862,13 @@ uk{ one{"{0} атмосфера"} other{"{0} атмосфери"} } + bar{ + dnam{"бари"} + few{"{0} бари"} + many{"{0} барів"} + one{"{0} бар"} + other{"{0} бара"} + } hectopascal{ dnam{"гектопаскалі"} few{"{0} гектопаскалі"} @@ -889,6 +911,13 @@ uk{ one{"{0} міліметр ртутного стовпа"} other{"{0} міліметра ртутного стовпа"} } + pascal{ + dnam{"паскалі"} + few{"{0} паскалі"} + many{"{0} паскалів"} + one{"{0} паскаль"} + other{"{0} паскаля"} + } pound-per-square-inch{ dnam{"фунти на квадратний дюйм"} few{"{0} фунти на квадратний дюйм"} @@ -942,6 +971,13 @@ uk{ one{"{0} градус Фаренгейта"} other{"{0} градуса Фаренгейта"} } + generic{ + dnam{"°"} + few{"{0}°"} + many{"{0}°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ dnam{"кельвіни"} few{"{0} кельвіни"} @@ -1245,9 +1281,11 @@ uk{ other{"{0} милі²"} } } + compound{ + per{"{0}/{1}"} + } concentr{ mole{ - dnam{"моль"} few{"{0}моль"} many{"{0}моль"} one{"{0}моль"} @@ -1262,10 +1300,6 @@ uk{ } permyriad{ dnam{"‱"} - few{"{0}‱"} - many{"{0}‱"} - one{"{0}‱"} - other{"{0}‱"} } } consumption{ @@ -1372,7 +1406,6 @@ uk{ } energy{ british-thermal-unit{ - dnam{"Отб"} few{"{0}Отб"} many{"{0}Отб"} one{"{0}Отб"} @@ -1445,7 +1478,7 @@ uk{ other{"{0} св. р."} } meter{ - dnam{"метр"} + dnam{"м"} few{"{0} м"} many{"{0} м"} one{"{0} м"} @@ -1675,6 +1708,7 @@ uk{ other{"{0} км/год"} } knot{ + dnam{"kn"} few{"{0}kn"} many{"{0}kn"} one{"{0}kn"} @@ -1696,6 +1730,25 @@ uk{ } } temperature{ + celsius{ + few{"{0}°C"} + many{"{0}°C"} + one{"{0}°C"} + other{"{0}°C"} + } + fahrenheit{ + few{"{0}°F"} + many{"{0}°F"} + one{"{0}°F"} + other{"{0}°F"} + } + generic{ + dnam{"°"} + few{"{0}°"} + many{"{0}°"} + one{"{0}°"} + other{"{0}°"} + } kelvin{ few{"{0} К"} many{"{0} К"} @@ -1705,14 +1758,12 @@ uk{ } torque{ newton-meter{ - dnam{"Н·м"} few{"{0}Н·м"} many{"{0}Н·м"} one{"{0}Н·м"} other{"{0}Н·м"} } pound-foot{ - dnam{"фунт-фут"} few{"{0}фн-фт"} many{"{0}фн-фт"} one{"{0}фн-фт"} @@ -1792,6 +1843,10 @@ uk{ } degree{ dnam{"градуси"} + few{"{0}°"} + many{"{0}°"} + one{"{0}°"} + other{"{0}°"} } radian{ dnam{"радіани"} @@ -1885,6 +1940,10 @@ uk{ other{"{0} ярда²"} } } + compound{ + per{"{0}/{1}"} + times{"{0}⋅{1}"} + } concentr{ karat{ dnam{"карати"} @@ -1916,6 +1975,10 @@ uk{ } part-per-million{ dnam{"мільйонні долі"} + few{"{0} ppm"} + many{"{0} ppm"} + one{"{0} ppm"} + other{"{0} ppm"} } percent{ dnam{"відсоток"} @@ -1933,10 +1996,6 @@ uk{ } permyriad{ dnam{"проміріада"} - few{"{0}‱"} - many{"{0}‱"} - one{"{0}‱"} - other{"{0}‱"} } } consumption{ @@ -2275,6 +2334,15 @@ uk{ other{"{0} МГц"} } } + graphics{ + megapixel{ + dnam{"Мп"} + few{"{0} Мп"} + many{"{0} Мп"} + one{"{0} Мп"} + other{"{0} Мп"} + } + } length{ astronomical-unit{ dnam{"а. о."} @@ -2402,10 +2470,6 @@ uk{ } solar-radius{ dnam{"радіус Сонця"} - few{"{0} R☉"} - many{"{0} R☉"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"ярди"} @@ -2424,11 +2488,7 @@ uk{ other{"{0} лк"} } solar-luminosity{ - dnam{"світність"} - few{"{0} L☉"} - many{"{0} L☉"} - one{"{0} L☉"} - other{"{0} L☉"} + dnam{"світності Сонця"} } } mass{ @@ -2448,10 +2508,6 @@ uk{ } earth-mass{ dnam{"маси Землі"} - few{"{0} M⊕"} - many{"{0} M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} } gram{ dnam{"грами"} @@ -2515,10 +2571,6 @@ uk{ } solar-mass{ dnam{"маси Сонця"} - few{"{0} M☉"} - many{"{0} M☉"} - one{"{0} M☉"} - other{"{0} M☉"} } ton{ dnam{"тонни"} @@ -2580,6 +2632,12 @@ uk{ one{"{0} атм"} other{"{0} атм"} } + bar{ + few{"{0} бар"} + many{"{0} бар"} + one{"{0} бар"} + other{"{0} бар"} + } hectopascal{ dnam{"гПа"} few{"{0} гПа"} @@ -2622,6 +2680,13 @@ uk{ one{"{0} мм рт. ст."} other{"{0} мм рт. ст."} } + pascal{ + dnam{"Па"} + few{"{0} Па"} + many{"{0} Па"} + one{"{0} Па"} + other{"{0} Па"} + } pound-per-square-inch{ dnam{"фунт/дюйм²"} few{"{0} фунти/дюйм²"} @@ -2638,6 +2703,13 @@ uk{ one{"{0} км/год"} other{"{0} км/год"} } + knot{ + dnam{"kn"} + few{"{0} kn"} + many{"{0} kn"} + one{"{0} kn"} + other{"{0} kn"} + } meter-per-second{ dnam{"метри/с"} few{"{0} м/с"} @@ -2656,9 +2728,24 @@ uk{ temperature{ celsius{ dnam{"градус Цельсія"} + few{"{0}°C"} + many{"{0}°C"} + one{"{0}°C"} + other{"{0}°C"} } fahrenheit{ dnam{"градус Фаренгейта"} + few{"{0}°F"} + many{"{0}°F"} + one{"{0}°F"} + other{"{0}°F"} + } + generic{ + dnam{"°"} + few{"{0}°"} + many{"{0}°"} + one{"{0}°"} + other{"{0}°"} } kelvin{ dnam{"кельвін"} @@ -2694,10 +2781,10 @@ uk{ } barrel{ dnam{"барель"} - few{"{0} бар."} - many{"{0} бар."} - one{"{0} бар."} - other{"{0} бар."} + few{"{0} бр."} + many{"{0} бр."} + one{"{0} бр."} + other{"{0} бр."} } bushel{ dnam{"бушелі"} diff --git a/source/data/unit/ur.txt b/source/data/unit/ur.txt index 73d21e2..53b2336 100644 --- a/source/data/unit/ur.txt +++ b/source/data/unit/ur.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ur{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -144,9 +144,9 @@ ur{ other{"{0} فی ہزار"} } permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0} ‱"} + dnam{"پرمرئیڈ"} + one{"{0} پرمرئیڈ"} + other{"{0} پرمرئیڈ"} } } consumption{ @@ -247,6 +247,11 @@ ur{ other{"{0} دن"} per{"{0} فی دن"} } + decade{ + dnam{"دہائیاں"} + one{"{0} دہائی"} + other{"{0} دہائیاں"} + } hour{ dnam{"گھنٹے"} one{"{0} گھنٹہ"} @@ -362,6 +367,11 @@ ur{ one{"{0} کلو واٹ آور"} other{"{0} کلو واٹ آور"} } + therm-us{ + dnam{"امریکی تھرمز"} + one{"{0} امریکی تھرم"} + other{"{0} امریکی تھرمز"} + } } force{ newton{ @@ -397,6 +407,43 @@ ur{ other{"{0} میگاہرٹز"} } } + graphics{ + dot-per-centimeter{ + dnam{"ڈاٹس فی سینٹی میٹر"} + one{"{0} ڈاٹ فی سینٹی میٹر"} + other{"{0} ڈاٹس فی سینٹی میٹر"} + } + dot-per-inch{ + dnam{"ڈاٹس فی انچ"} + one{"{0} ڈاٹ فی انچ"} + other{"{0} ڈاٹس فی انچ"} + } + em{ + dnam{"ٹائپوگرافک em"} + one{"{0} em"} + other{"{0} ems"} + } + megapixel{ + dnam{"میگا پکسلز"} + one{"{0} میگا پکسل"} + other{"{0} میگا پکسلز"} + } + pixel{ + dnam{"پکسلز"} + one{"{0} پکسل"} + other{"{0} پکسلز"} + } + pixel-per-centimeter{ + dnam{"پکسلز فی سینٹی میٹر"} + one{"{0} پکسل فی سینٹی میٹر"} + other{"{0} پکسلز فی سینٹی میٹر"} + } + pixel-per-inch{ + dnam{"پکسلز فی انچ"} + one{"{0} پکسل فی انچ"} + other{"{0} پکسلز فی انچ"} + } + } length{ astronomical-unit{ dnam{"ایسٹرونومیکل یونٹس"} @@ -625,6 +672,11 @@ ur{ one{"{0} ماحول"} other{"{0} ماحول"} } + bar{ + dnam{"بارز"} + one{"{0} بار"} + other{"{0} بارز"} + } hectopascal{ dnam{"ہیکٹو پاسکل"} one{"{0} ہیکٹو پاسکل"} @@ -655,6 +707,11 @@ ur{ one{"{0} ملی میٹر مرکری"} other{"{0} ملی میٹر مرکری"} } + pascal{ + dnam{"پاسکل"} + one{"{0} پاسکل"} + other{"{0} پاسکل"} + } pound-per-square-inch{ dnam{"پاؤنڈز فی مربع انچ"} one{"{0} پاؤنڈ فی مربع انچ"} @@ -791,9 +848,9 @@ ur{ other{"{0} فلوئڈ اونس"} } fluid-ounce-imperial{ - dnam{"اہم سیال اونس"} - one{"{0} اہم سیال اونس"} - other{"{0} اہم سیال اونس"} + dnam{"امپیریل فلوئڈ اونس"} + one{"{0} امپیریئل فلوئڈ اونس"} + other{"{0} امپیریئل فلوئڈ اونس"} } gallon{ dnam{"گیلن"} @@ -889,6 +946,14 @@ ur{ one{"{0}ft²"} other{"{0}ft²"} } + square-kilometer{ + one{"{0} km²"} + other{"{0} km²"} + } + square-meter{ + one{"{0} m²"} + other{"{0} m²"} + } square-mile{ one{"{0}mi²"} other{"{0}mi²"} @@ -1038,13 +1103,20 @@ ur{ per{"{0} فی کلو گرام"} } ounce{ + dnam{"oz"} one{"{0} ونس"} other{"{0} ونس"} + per{"{0}/oz"} } pound{ one{"{0} پونڈ"} other{"{0} پونڈ"} } + stone{ + dnam{"st"} + one{"{0} st"} + other{"{0} st"} + } } power{ horsepower{ @@ -1062,6 +1134,7 @@ ur{ } pressure{ hectopascal{ + dnam{"hPa"} one{"{0}hPa"} other{"{0}hPa"} } @@ -1071,9 +1144,20 @@ ur{ other{"{0} انچ مرکری"} } millibar{ + dnam{"mbar"} one{"{0}mb"} other{"{0}mb"} } + millimeter-of-mercury{ + dnam{"mm Hg"} + one{"{0} mm Hg"} + other{"{0} mm Hg"} + } + pound-per-square-inch{ + dnam{"psi"} + one{"{0} psi"} + other{"{0} psi"} + } } speed{ kilometer-per-hour{ @@ -1102,6 +1186,16 @@ ur{ one{"{0}‎°F"} other{"{0}‎°F"} } + generic{ + dnam{"°"} + one{"{0}°"} + other{"{0}°"} + } + kelvin{ + dnam{"K"} + one{"{0} K"} + other{"{0} K"} + } } volume{ cubic-kilometer{ @@ -1258,9 +1352,7 @@ ur{ other{"{0}‰"} } permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} + dnam{"پرمرئیڈ"} } } consumption{ @@ -1361,6 +1453,11 @@ ur{ other{"{0} دن"} per{"{0} فی دن"} } + decade{ + dnam{"دہائی"} + one{"{0} دہائی"} + other{"{0} دہائی"} + } hour{ dnam{"گھنٹے"} one{"{0} گھنٹہ"} @@ -1438,8 +1535,6 @@ ur{ energy{ british-thermal-unit{ dnam{"BTU"} - one{"{0} Btu"} - other{"{0} Btu"} } calorie{ dnam{"cal"} @@ -1448,8 +1543,6 @@ ur{ } electronvolt{ dnam{"الیکٹرون وولٹ"} - one{"{0} eV"} - other{"{0} eV"} } foodcalorie{ dnam{"Cal"} @@ -1476,17 +1569,18 @@ ur{ one{"{0} kWh"} other{"{0} kWh"} } + therm-us{ + dnam{"امریکی تھرم"} + one{"{0} امریکی تھرم"} + other{"{0} امریکی تھرمز"} + } } force{ newton{ dnam{"نیوٹن"} - one{"{0} N"} - other{"{0} N"} } pound-force{ dnam{"پاؤنڈ قوت"} - one{"{0} lbf"} - other{"{0} lbf"} } } frequency{ @@ -1511,6 +1605,14 @@ ur{ other{"{0} MHz"} } } + graphics{ + megapixel{ + dnam{"میگا پکسلز"} + } + pixel{ + dnam{"پکسلز"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -1597,10 +1699,13 @@ ur{ one{"{0} پیکو میٹر"} other{"{0} پیکو میٹر"} } + point{ + dnam{"پوائنٹس"} + one{"{0} pt"} + other{"{0} pt"} + } solar-radius{ dnam{"شمسی رداس"} - one{"{0} R☉"} - other{"{0} R☉"} } yard{ dnam{"گز"} @@ -1616,8 +1721,6 @@ ur{ } solar-luminosity{ dnam{"شمسی چمک"} - one{"{0} L☉"} - other{"{0} L☉"} } } mass{ @@ -1685,6 +1788,11 @@ ur{ one{"{0} M☉"} other{"{0} M☉"} } + stone{ + dnam{"st"} + one{"{0} st"} + other{"{0} st"} + } ton{ dnam{"ٹن"} one{"{0} tn"} @@ -1729,6 +1837,11 @@ ur{ one{"{0} atm"} other{"{0} atm"} } + bar{ + dnam{"بار"} + one{"{0} بار"} + other{"{0} بارز"} + } hectopascal{ dnam{"hPa"} one{"{0} hPa"} @@ -1809,18 +1922,6 @@ ur{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ایکڑ فٹ"} @@ -1829,8 +1930,6 @@ ur{ } barrel{ dnam{"بیرل"} - one{"{0} bbl"} - other{"{0} bbl"} } centiliter{ dnam{"سینٹی لیٹر"} @@ -1894,11 +1993,6 @@ ur{ one{"{0} fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} one{"{0} gal"} diff --git a/source/data/unit/ur_IN.txt b/source/data/unit/ur_IN.txt index 85c2cb9..5c8c226 100644 --- a/source/data/unit/ur_IN.txt +++ b/source/data/unit/ur_IN.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ur_IN{ - Version{"2.1.47.71"} + Version{"36"} units{ length{ astronomical-unit{ diff --git a/source/data/unit/uz.txt b/source/data/unit/uz.txt index 4e4c8ad..684e416 100644 --- a/source/data/unit/uz.txt +++ b/source/data/unit/uz.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License uz{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -53,11 +53,6 @@ uz{ one{"{0} akr"} other{"{0} akr"} } - dunam{ - dnam{"dunam"} - one{"{0} dunam"} - other{"{0} dunam"} - } hectare{ dnam{"gektar"} one{"{0} gektar"} @@ -123,11 +118,6 @@ uz{ one{"{0} millimol/litr"} other{"{0} millimol/litr"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"millionning ulushi"} one{"milliondan {0}"} @@ -247,6 +237,11 @@ uz{ other{"{0} kun"} per{"{0}/kun"} } + decade{ + dnam{"dekada"} + one{"{0} dekada"} + other{"{0} dekada"} + } hour{ dnam{"soat"} one{"{0} soat"} @@ -362,6 +357,11 @@ uz{ one{"{0} kilovatt-soat"} other{"{0} kilovatt-soat"} } + therm-us{ + dnam{"AQSH termi"} + one{"{0} AQSH termi"} + other{"{0} AQSH termi"} + } } force{ newton{ @@ -397,6 +397,41 @@ uz{ other{"{0} megagers"} } } + graphics{ + dot-per-centimeter{ + dnam{"nuqta/santimetr"} + one{"{0} nuqta/santimetr"} + other{"{0} nuqta/santimetr"} + } + dot-per-inch{ + dnam{"nuqta/duym"} + one{"{0} nuqta/duym"} + other{"{0} nuqta/duym"} + } + em{ + dnam{"tipografik em"} + } + megapixel{ + dnam{"megapiksel"} + one{"{0} megapiksel"} + other{"{0} megapiksel"} + } + pixel{ + dnam{"piksel"} + one{"{0} piksel"} + other{"{0} piksel"} + } + pixel-per-centimeter{ + dnam{"piksel/santimetr"} + one{"{0} piksel/santimetr"} + other{"{0} piksel/santimetr"} + } + pixel-per-inch{ + dnam{"piksel/duym"} + one{"{0} piksel/duym"} + other{"{0} piksel/duym"} + } + } length{ astronomical-unit{ dnam{"astronomik birlik"} @@ -650,6 +685,11 @@ uz{ one{"{0} mm simob ustuni"} other{"{0} mm simob ustuni"} } + pascal{ + dnam{"paskal"} + one{"{0} paskal"} + other{"{0} paskal"} + } pound-per-square-inch{ dnam{"funt/kvadrat duym"} one{"{0} funt/kvadrat duym"} @@ -1198,6 +1238,7 @@ uz{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1339,6 +1380,11 @@ uz{ other{"{0} kun"} per{"{0}/kun"} } + decade{ + dnam{"dekada"} + one{"{0} dekada"} + other{"{0} dekada"} + } hour{ dnam{"soat"} one{"{0} soat"} @@ -1454,6 +1500,11 @@ uz{ one{"{0} kVt-soat"} other{"{0} kVt-soat"} } + therm-us{ + dnam{"AQSH termi"} + one{"{0} AQSH termi"} + other{"{0} AQSH termi"} + } } force{ newton{ @@ -1489,6 +1540,43 @@ uz{ other{"{0} MGs"} } } + graphics{ + dot-per-centimeter{ + dnam{"nuqta/sm"} + one{"{0} nuqta/sm"} + other{"{0} nuqta/sm"} + } + dot-per-inch{ + dnam{"nuqta/duym"} + one{"{0} nuqta/duym"} + other{"{0} nuqta/duym"} + } + em{ + dnam{"em"} + one{"{0} em"} + other{"{0} em"} + } + megapixel{ + dnam{"megapiksel"} + one{"{0} MP"} + other{"{0} MP"} + } + pixel{ + dnam{"piksel"} + one{"{0} px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"px/sm"} + one{"{0} px/sm"} + other{"{0} px/sm"} + } + pixel-per-inch{ + dnam{"piksel/duym"} + one{"{0} piksel/duym"} + other{"{0} piksel/duym"} + } + } length{ astronomical-unit{ dnam{"a.b."} @@ -1712,6 +1800,11 @@ uz{ one{"{0} atm"} other{"{0} atm"} } + bar{ + dnam{"bar"} + one{"{0} bar"} + other{"{0} bar"} + } hectopascal{ dnam{"gPa"} one{"{0} gPa"} @@ -1742,6 +1835,11 @@ uz{ one{"{0} mm sim.ust"} other{"{0} mm sim.ust"} } + pascal{ + dnam{"Pa"} + one{"{0} Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"funt/kv.dy"} one{"{0} funt/kv.dy"} diff --git a/source/data/unit/uz_Arab.txt b/source/data/unit/uz_Arab.txt index ce2d77a..580b5c0 100644 --- a/source/data/unit/uz_Arab.txt +++ b/source/data/unit/uz_Arab.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License uz_Arab{ %%Parent{"root"} - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/uz_Cyrl.txt b/source/data/unit/uz_Cyrl.txt index dd38581..08f400a 100644 --- a/source/data/unit/uz_Cyrl.txt +++ b/source/data/unit/uz_Cyrl.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License uz_Cyrl{ %%Parent{"root"} - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/uz_Latn.txt b/source/data/unit/uz_Latn.txt index 14301e9..bc68300 100644 --- a/source/data/unit/uz_Latn.txt +++ b/source/data/unit/uz_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License uz_Latn{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/unit/vai.txt b/source/data/unit/vai.txt index 053af68..8c39cbb 100644 --- a/source/data/unit/vai.txt +++ b/source/data/unit/vai.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License vai{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/vai_Latn.txt b/source/data/unit/vai_Latn.txt index 99c11b4..60d108c 100644 --- a/source/data/unit/vai_Latn.txt +++ b/source/data/unit/vai_Latn.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License vai_Latn{ %%Parent{"root"} - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/vai_Vaii.txt b/source/data/unit/vai_Vaii.txt index d602abb..5390da9 100644 --- a/source/data/unit/vai_Vaii.txt +++ b/source/data/unit/vai_Vaii.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License vai_Vaii{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/vi.txt b/source/data/unit/vi.txt index bdb77b6..2b6d2fb 100644 --- a/source/data/unit/vi.txt +++ b/source/data/unit/vi.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License vi{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -41,10 +41,6 @@ vi{ dnam{"mẫu"} other{"{0} mẫu"} } - dunam{ - dnam{"dunam"} - other{"{0} dunam"} - } hectare{ dnam{"héc-ta"} other{"{0} héc-ta"} @@ -113,6 +109,9 @@ vi{ dnam{"dặm/gallon"} other{"{0} dặm/gallon"} } + mile-per-gallon-imperial{ + dnam{"dặm/galông Anh"} + } } coordinate{ dnam{"phÆ°Æ¡ng trời"} @@ -168,6 +167,10 @@ vi{ other{"{0} ngày"} per{"{0}/ngày"} } + decade{ + dnam{"thập ká»·"} + other{"{0} thập ká»·"} + } hour{ dnam{"giờ"} other{"{0} giờ"} @@ -221,6 +224,7 @@ vi{ other{"{0} mili ampe"} } ohm{ + dnam{"ohm"} other{"{0} ohm"} } volt{ @@ -261,6 +265,10 @@ vi{ dnam{"kilôoát giờ"} other{"{0} kilôoát giờ"} } + therm-us{ + dnam{"đơn vị nhiệt Mỹ"} + other{"{0} đơn vị nhiệt Mỹ"} + } } force{ newton{ @@ -272,7 +280,37 @@ vi{ other{"{0} pound lá»±c"} } } + graphics{ + dot-per-centimeter{ + dnam{"chấm/xentimét"} + other{"{0} chấm/xentimét"} + } + dot-per-inch{ + dnam{"chấm/inch"} + other{"{0} chấm/inch"} + } + megapixel{ + dnam{"megapixel"} + other{"{0} megapixel"} + } + pixel{ + dnam{"pixel"} + other{"{0} pixel"} + } + pixel-per-centimeter{ + dnam{"pixel/xentimét"} + other{"{0} pixel/xentimét"} + } + pixel-per-inch{ + dnam{"pixel/inch"} + other{"{0} pixel/inch"} + } + } length{ + astronomical-unit{ + dnam{"đơn vị thiên văn"} + other{"{0} đơn vị thiên văn"} + } centimeter{ dnam{"xentimét"} other{"{0} xentimét"} @@ -281,18 +319,10 @@ vi{ dnam{"đềximét"} other{"{0} đềximét"} } - fathom{ - dnam{"fm"} - other{"{0} fth"} - } foot{ dnam{"feet"} other{"{0} feet"} } - furlong{ - dnam{"fur"} - other{"{0} fur"} - } inch{ dnam{"inch"} other{"{0} inch"} @@ -388,8 +418,8 @@ vi{ other{"{0} kilôgam"} } metric-ton{ - dnam{"MT"} - other{"{0} MT"} + dnam{"tấn hệ mét"} + other{"{0} tấn hệ mét"} } microgram{ dnam{"micrôgam"} @@ -399,6 +429,15 @@ vi{ dnam{"miligam"} other{"{0} miligam"} } + ounce{ + dnam{"aoxÆ¡"} + other{"{0} aoxÆ¡"} + per{"{0}/aoxÆ¡"} + } + ounce-troy{ + dnam{"troi ao-xÆ¡"} + other{"{0} troi ao-xÆ¡"} + } pound{ dnam{"pao"} other{"{0} pao"} @@ -407,10 +446,6 @@ vi{ dnam{"trọng lượng mặt trời"} other{"{0} trọng lượng mặt trời"} } - stone{ - dnam{"st"} - other{"{0} st"} - } ton{ dnam{"tấn"} other{"{0} tấn"} @@ -454,18 +489,18 @@ vi{ dnam{"inch thủy ngân"} other{"{0} inch thủy ngân"} } - kilopascal{ - dnam{"kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - other{"{0} MPa"} - } millibar{ dnam{"millibar"} other{"{0} millibar"} } + millimeter-of-mercury{ + dnam{"milimét thủy ngân"} + other{"{0} milimét thủy ngân"} + } + pound-per-square-inch{ + dnam{"pound/inch vuông"} + other{"{0} pound/inch vuông"} + } } speed{ kilometer-per-hour{ @@ -514,10 +549,6 @@ vi{ dnam{"thùng"} other{"{0} thùng"} } - bushel{ - dnam{"bu"} - other{"{0} bu"} - } centiliter{ dnam{"xentilít"} other{"{0} xentilít"} @@ -562,8 +593,8 @@ vi{ other{"{0} đềxilít"} } fluid-ounce{ - dnam{"fl oz"} - other{"{0} fl oz"} + dnam{"aoxÆ¡ chất lỏng"} + other{"{0} aoxÆ¡ chất lỏng"} } fluid-ounce-imperial{ dnam{"AoxÆ¡ chất lỏng theo hệ đo lường Anh"} @@ -596,8 +627,8 @@ vi{ other{"{0} mililít"} } pint{ - dnam{"pint"} - other{"{0} pint"} + dnam{"panh"} + other{"{0} panh"} } pint-metric{ dnam{"panh khối"} @@ -635,24 +666,10 @@ vi{ acre{ other{"{0} mẫu"} } - dunam{ - dnam{"dunam"} - other{"{0} dunam"} - } hectare{ other{"{0}ha"} } } - concentr{ - mole{ - dnam{"mol"} - other{"{0} mol"} - } - permyriad{ - dnam{"phần vạn"} - other{"{0}‱"} - } - } consumption{ liter-per-100kilometers{ dnam{"L/100km"} @@ -700,42 +717,14 @@ vi{ other{"{0} năm"} } } - energy{ - british-thermal-unit{ - dnam{"BTU"} - other{"{0} Btu"} - } - electronvolt{ - dnam{"electronvôn"} - other{"{0} eV"} - } - } - force{ - newton{ - dnam{"newton"} - other{"{0} N"} - } - pound-force{ - dnam{"pound-lá»±c"} - other{"{0} lbf"} - } - } length{ centimeter{ dnam{"cm"} other{"{0}cm"} } - fathom{ - dnam{"fm"} - other{"{0} fth"} - } foot{ other{"{0}'"} } - furlong{ - dnam{"fur"} - other{"{0} fur"} - } inch{ other{"{0}\u0022"} } @@ -760,29 +749,11 @@ vi{ picometer{ other{"{0}pm"} } - solar-radius{ - dnam{"bán kính mặt trời"} - other{"{0} R☉"} - } yard{ other{"{0}yd"} } } - light{ - solar-luminosity{ - dnam{"độ sáng của mặt trời"} - other{"{0} L☉"} - } - } mass{ - dalton{ - dnam{"dalton"} - other{"{0} Da"} - } - earth-mass{ - dnam{"Trọng lượng trái đất"} - other{"{0} M⊕"} - } gram{ dnam{"g"} other{"{0}g"} @@ -797,14 +768,6 @@ vi{ pound{ other{"{0}lb"} } - solar-mass{ - dnam{"trọng lượng mặt trời"} - other{"{0} M☉"} - } - stone{ - dnam{"st"} - other{"{0} st"} - } } power{ horsepower{ @@ -824,14 +787,6 @@ vi{ inch-hg{ other{"{0}\u0022 Hg"} } - kilopascal{ - dnam{"kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - other{"{0} MPa"} - } millibar{ other{"{0}mb"} } @@ -852,25 +807,7 @@ vi{ dnam{"°C"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ - barrel{ - dnam{"thùng"} - other{"{0} thùng"} - } - bushel{ - dnam{"bu"} - other{"{0} bu"} - } cubic-kilometer{ other{"{0}km³"} } @@ -878,7 +815,6 @@ vi{ other{"{0}mi³"} } fluid-ounce-imperial{ - dnam{"Oz"} other{"{0} fl ozIm"} } liter{ @@ -904,7 +840,8 @@ vi{ dnam{"độ"} } revolution{ - dnam{"rev"} + dnam{"vòng"} + other{"{0} vòng"} } } area{ @@ -912,10 +849,6 @@ vi{ dnam{"mẫu"} other{"{0} mẫu"} } - dunam{ - dnam{"dunam"} - other{"{0} dunam"} - } hectare{ dnam{"ha"} } @@ -986,6 +919,10 @@ vi{ other{"{0} ngày"} per{"{0}/ngày"} } + decade{ + dnam{"thập ká»·"} + other{"{0} thập ká»·"} + } hour{ dnam{"giờ"} other{"{0} giờ"} @@ -1052,6 +989,10 @@ vi{ joule{ dnam{"J"} } + therm-us{ + dnam{"therm Mỹ"} + other{"{0} therm Mỹ"} + } } force{ newton{ @@ -1077,6 +1018,11 @@ vi{ dnam{"MHz"} } } + graphics{ + megapixel{ + dnam{"megapixel"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -1087,14 +1033,6 @@ vi{ decimeter{ dnam{"dm"} } - fathom{ - dnam{"fm"} - other{"{0} fth"} - } - furlong{ - dnam{"fur"} - other{"{0} fur"} - } inch{ dnam{"inch"} other{"{0} inch"} @@ -1140,13 +1078,16 @@ vi{ } } mass{ + carat{ + dnam{"cara"} + other{"{0} CT"} + } dalton{ dnam{"dalton"} other{"{0} Da"} } earth-mass{ dnam{"Trọng lượng trái đất"} - other{"{0} M⊕"} } gram{ dnam{"g"} @@ -1167,16 +1108,15 @@ vi{ dnam{"oz"} other{"{0} oz"} } + ounce-troy{ + dnam{"ozt"} + other{"{0} ozt"} + } pound{ dnam{"pao"} } solar-mass{ dnam{"trọng lượng mặt trời"} - other{"{0} M☉"} - } - stone{ - dnam{"st"} - other{"{0} st"} } } power{ @@ -1210,14 +1150,6 @@ vi{ inch-hg{ dnam{"inHg"} } - kilopascal{ - dnam{"kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} } @@ -1254,10 +1186,6 @@ vi{ dnam{"thùng"} other{"{0} thùng"} } - bushel{ - dnam{"bu"} - other{"{0} bu"} - } centiliter{ dnam{"cL"} } @@ -1287,13 +1215,13 @@ vi{ other{"{0} fl oz"} } fluid-ounce-imperial{ - dnam{"Oz"} - other{"{0} fl oz Imp."} + dnam{"fl oz Anh"} + other{"{0} fl oz Anh"} } gallon{ dnam{"gal"} other{"{0} gal"} - per{"{0}/gal"} + per{"{0}/gal Mỹ"} } gallon-imperial{ dnam{"gal Anh"} diff --git a/source/data/unit/vun.txt b/source/data/unit/vun.txt index d8bf009..acce8d0 100644 --- a/source/data/unit/vun.txt +++ b/source/data/unit/vun.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License vun{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/wae.txt b/source/data/unit/wae.txt index d14d730..984f7a3 100644 --- a/source/data/unit/wae.txt +++ b/source/data/unit/wae.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License wae{ - Version{"2.1.47.82"} + Version{"36"} units{ duration{ day{ diff --git a/source/data/unit/wo.txt b/source/data/unit/wo.txt index edbffa6..73e9c81 100644 --- a/source/data/unit/wo.txt +++ b/source/data/unit/wo.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License wo{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/xh.txt b/source/data/unit/xh.txt index 420acb6..c70fd78 100644 --- a/source/data/unit/xh.txt +++ b/source/data/unit/xh.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License xh{ - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/unit/xog.txt b/source/data/unit/xog.txt index 4fbdaf9..91005d3 100644 --- a/source/data/unit/xog.txt +++ b/source/data/unit/xog.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License xog{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/yav.txt b/source/data/unit/yav.txt index efad47c..2b614e8 100644 --- a/source/data/unit/yav.txt +++ b/source/data/unit/yav.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yav{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/unit/yi.txt b/source/data/unit/yi.txt index 337ce86..9931a18 100644 --- a/source/data/unit/yi.txt +++ b/source/data/unit/yi.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yi{ - Version{"2.1.47.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} diff --git a/source/data/unit/yo.txt b/source/data/unit/yo.txt index 922c601..98f884c 100644 --- a/source/data/unit/yo.txt +++ b/source/data/unit/yo.txt @@ -1,10 +1,132 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yo{ - Version{"2.1.48.17"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} ms{"m:ss"} } + units{ + duration{ + century{ + dnam{"ọ̀rúndún"} + other{"ọ̀rúndún {0}"} + } + day{ + dnam{"ọjọ́"} + other{"ọj {0}"} + per{"{0}/ọj"} + } + decade{ + dnam{"ẹ̀wádùn"} + other{"ẹ̀wádùn {0}"} + } + hour{ + dnam{"wkt"} + other{"{0} wkt"} + per{"{0}/wkt"} + } + minute{ + dnam{"ìṣ"} + other{"{0} ìṣ"} + per{"{0}/ìṣ"} + } + month{ + dnam{"oṣù"} + other{"{0} oṣù"} + per{"{0}/oṣù"} + } + second{ + dnam{"ìṣ àáy"} + other{"{0}ìṣ àáy"} + per{"{0}/ìṣ àáy"} + } + week{ + dnam{"ọṣ"} + other{"{0} ọṣ"} + per{"{0}/ọṣ"} + } + year{ + dnam{"ọ̀dún"} + other{"{0} ọd"} + per{"{0} ọd"} + } + } + } + unitsNarrow{ + duration{ + day{ + dnam{"ọjọ́"} + other{"ọj {0}"} + } + hour{ + dnam{"wkt"} + other{"{0} wkt"} + } + minute{ + dnam{"ìṣ"} + other{"{0}/ìṣ"} + } + month{ + dnam{"oṣù"} + other{"{0} oṣù"} + } + second{ + dnam{"ìṣ àáy"} + other{"{0} ìṣ àáy"} + } + week{ + dnam{"ọṣẹ́"} + other{"{0} ọṣ"} + } + year{ + dnam{"ọd"} + other{"{0} ọd"} + } + } + } + unitsShort{ + duration{ + day{ + dnam{"ọjọ́"} + other{"{0} ọj"} + per{"{0}/ọj"} + } + decade{ + dnam{"ẹ̀wádùn"} + other{"ẹ̀wádún {0}"} + } + hour{ + dnam{"wkt"} + other{"{0} wkt"} + per{"{0}/wkt"} + } + minute{ + dnam{"ìṣ"} + other{"{0} ìṣ"} + per{"{0}/ìṣ"} + } + month{ + dnam{"oṣù"} + other{"{0} oṣù"} + per{"{0}/oṣù"} + } + second{ + dnam{"ìṣ àáy"} + other{"{0} ìṣ àáy"} + per{"{0} ìṣ àáy"} + } + week{ + dnam{"ọṣ"} + other{"{0} ọṣ"} + per{"{0}/ọṣẹ̀"} + } + year{ + dnam{"ọd"} + other{"{0} ọd"} + per{"{0}/ọd"} + } + } + } } diff --git a/source/data/unit/yo_BJ.txt b/source/data/unit/yo_BJ.txt index d0697eb..aa97957 100644 --- a/source/data/unit/yo_BJ.txt +++ b/source/data/unit/yo_BJ.txt @@ -1,10 +1,113 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yo_BJ{ - Version{"2.1.48.77"} - durationUnits{ - hm{"h:mm"} - hms{"h:mm:ss"} - ms{"m:ss"} + Version{"36"} + units{ + duration{ + century{ + dnam{"ɔ̀rúndún"} + other{"ɔ̀rúndún {0}"} + } + day{ + dnam{"ɔjɔ́"} + other{"ɔj {0}"} + per{"{0}/ɔj"} + } + decade{ + dnam{"ɛ̀wádùn"} + other{"ɛ̀wádùn {0}"} + } + minute{ + dnam{"ìsh"} + other{"{0} ìsh"} + per{"{0}/ìsh"} + } + month{ + dnam{"oshù"} + other{"{0} oshù"} + per{"{0}/oshù"} + } + second{ + dnam{"ìsh àáy"} + other{"{0}ìsh àáy"} + per{"{0}/ìsh àáy"} + } + week{ + dnam{"ɔsh"} + other{"{0} ɔsh"} + per{"{0}/ɔsh"} + } + year{ + dnam{"ɔ̀dún"} + other{"{0} ɔd"} + per{"{0} ɔd"} + } + } + } + unitsNarrow{ + duration{ + day{ + dnam{"ɔjɔ́"} + other{"ɔj {0}"} + } + minute{ + dnam{"ìsh"} + other{"{0}/ìsh"} + } + month{ + dnam{"oshù"} + other{"{0} oshù"} + } + second{ + dnam{"ìsh àáy"} + other{"{0} ìsh àáy"} + } + week{ + dnam{"ɔshɛ́"} + other{"{0} ɔsh"} + } + year{ + dnam{"ɔd"} + other{"{0} ɔd"} + } + } + } + unitsShort{ + duration{ + day{ + dnam{"ɔjɔ́"} + other{"{0} ɔj"} + per{"{0}/ɔj"} + } + decade{ + dnam{"ɛ̀wádùn"} + other{"ɛ̀wádún {0}"} + } + minute{ + dnam{"ìsh"} + other{"{0} ìsh"} + per{"{0}/ìsh"} + } + month{ + dnam{"oshù"} + other{"{0} oshù"} + per{"{0}/oshù"} + } + second{ + dnam{"ìsh àáy"} + other{"{0} ìsh àáy"} + per{"{0} ìsh àáy"} + } + week{ + dnam{"ɔsh"} + other{"{0} ɔsh"} + per{"{0}/ɔshɛ̀"} + } + year{ + dnam{"ɔd"} + other{"{0} ɔd"} + per{"{0}/ɔd"} + } + } } } diff --git a/source/data/unit/yue.txt b/source/data/unit/yue.txt index 4aeb78d..e222bda 100644 --- a/source/data/unit/yue.txt +++ b/source/data/unit/yue.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yue{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -205,6 +205,10 @@ yue{ other{"{0} 天"} per{"每天 {0}"} } + decade{ + dnam{"十年"} + other{"{0} 個十年"} + } hour{ dnam{"小時"} other{"{0} 小時"} @@ -299,6 +303,10 @@ yue{ dnam{"千瓦小時"} other{"{0} 千瓦小時"} } + therm-us{ + dnam{"美制熱量單位"} + other{"{0} 美制熱量單位"} + } } force{ newton{ @@ -328,6 +336,36 @@ yue{ other{"{0} 兆赫"} } } + graphics{ + dot-per-centimeter{ + dnam{"每厘米點數"} + other{"{0} 點/厘米"} + } + dot-per-inch{ + dnam{"每吋點數"} + other{"{0} 點/吋"} + } + em{ + dnam{"字體 em"} + other{"{0} em"} + } + megapixel{ + dnam{"百萬像素"} + other{"{0} 百萬像素"} + } + pixel{ + dnam{"像素"} + other{"{0} 像素"} + } + pixel-per-centimeter{ + dnam{"每厘米像素"} + other{"{0} 像素/厘米"} + } + pixel-per-inch{ + dnam{"每吋像素"} + other{"{0} 像素/吋"} + } + } length{ astronomical-unit{ dnam{"天文單位"} @@ -522,6 +560,10 @@ yue{ dnam{"atm"} other{"{0} atm"} } + bar{ + dnam{"å·´"} + other{"{0} å·´"} + } hectopascal{ dnam{"百帕"} other{"{0} 百帕"} @@ -546,6 +588,10 @@ yue{ dnam{"毫米汞柱"} other{"{0} 毫米汞柱"} } + pascal{ + dnam{"帕斯卡"} + other{"{0} 帕斯卡"} + } pound-per-square-inch{ dnam{"磅力/平方英吋"} other{"每平方吋 {0} 磅"} @@ -1352,6 +1398,10 @@ yue{ other{"{0} 天"} per{"每天{0}"} } + decade{ + dnam{"十年"} + other{"{0} 個十年"} + } hour{ dnam{"小時"} other{"{0} 小時"} @@ -1446,6 +1496,10 @@ yue{ dnam{"千瓦小時"} other{"{0} 千瓦小時"} } + therm-us{ + dnam{"美制熱量單位"} + other{"{0} 美制熱量單位"} + } } force{ newton{ @@ -1475,6 +1529,36 @@ yue{ other{"{0} 兆赫"} } } + graphics{ + dot-per-centimeter{ + dnam{"每厘米點數"} + other{"{0} 點/厘米"} + } + dot-per-inch{ + dnam{"每吋點數"} + other{"{0} 點/吋"} + } + em{ + dnam{"em"} + other{"{0} em"} + } + megapixel{ + dnam{"百萬像素"} + other{"{0} 百萬像素"} + } + pixel{ + dnam{"像素"} + other{"{0} 像素"} + } + pixel-per-centimeter{ + dnam{"每厘米像素"} + other{"{0} 像素/厘米"} + } + pixel-per-inch{ + dnam{"每吋像素"} + other{"{0} 像素/吋"} + } + } length{ astronomical-unit{ dnam{"天文單位"} @@ -1669,6 +1753,10 @@ yue{ dnam{"atm"} other{"{0} atm"} } + bar{ + dnam{"å·´"} + other{"{0} å·´"} + } hectopascal{ dnam{"百帕"} other{"{0} 百帕"} @@ -1693,6 +1781,10 @@ yue{ dnam{"毫米汞柱"} other{"{0} 毫米汞柱"} } + pascal{ + dnam{"帕斯卡"} + other{"{0} 帕斯卡"} + } pound-per-square-inch{ dnam{"磅力/平方英吋"} other{"每平方吋{0}磅"} diff --git a/source/data/unit/yue_Hans.txt b/source/data/unit/yue_Hans.txt index 18b303b..9d631d6 100644 --- a/source/data/unit/yue_Hans.txt +++ b/source/data/unit/yue_Hans.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License yue_Hans{ %%Parent{"root"} - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -206,6 +206,10 @@ yue_Hans{ other{"{0} 天"} per{"每日 {0}"} } + decade{ + dnam{"十年"} + other{"{0} 个十年"} + } hour{ dnam{"小时"} other{"{0} 小时"} @@ -300,6 +304,10 @@ yue_Hans{ dnam{"千瓦小时"} other{"{0} 千瓦小时"} } + therm-us{ + dnam{"美制热量单位"} + other{"{0} 美制热量单位"} + } } force{ newton{ @@ -329,6 +337,36 @@ yue_Hans{ other{"{0} 兆赫"} } } + graphics{ + dot-per-centimeter{ + dnam{"每厘米点数"} + other{"{0} 点/厘米"} + } + dot-per-inch{ + dnam{"每吋点数"} + other{"{0} 点/吋"} + } + em{ + dnam{"字体 em"} + other{"{0} em"} + } + megapixel{ + dnam{"百万像素"} + other{"{0} 百万像素"} + } + pixel{ + dnam{"像素"} + other{"{0} 像素"} + } + pixel-per-centimeter{ + dnam{"每厘米像素"} + other{"{0} 像素/厘米"} + } + pixel-per-inch{ + dnam{"每吋像素"} + other{"{0} 像素/吋"} + } + } length{ astronomical-unit{ dnam{"天文单位"} @@ -523,6 +561,10 @@ yue_Hans{ dnam{"atm"} other{"{0} atm"} } + bar{ + dnam{"å·´"} + other{"{0} å·´"} + } hectopascal{ dnam{"百帕"} other{"{0} 百帕"} @@ -547,6 +589,10 @@ yue_Hans{ dnam{"毫米汞柱"} other{"{0} 毫米汞柱"} } + pascal{ + dnam{"帕斯卡"} + other{"{0} 帕斯卡"} + } pound-per-square-inch{ dnam{"每平方英寸磅力"} other{"每平方吋 {0} 磅"} @@ -1353,6 +1399,10 @@ yue_Hans{ other{"{0} 天"} per{"每日{0}"} } + decade{ + dnam{"十年"} + other{"{0} 个十年"} + } hour{ dnam{"小时"} other{"{0} 小时"} @@ -1447,6 +1497,10 @@ yue_Hans{ dnam{"千瓦小时"} other{"{0} 千瓦小时"} } + therm-us{ + dnam{"美制热量单位"} + other{"{0} 美制热量单位"} + } } force{ newton{ @@ -1476,6 +1530,36 @@ yue_Hans{ other{"{0} 兆赫"} } } + graphics{ + dot-per-centimeter{ + dnam{"每厘米点数"} + other{"{0} 点/厘米"} + } + dot-per-inch{ + dnam{"每吋点数"} + other{"{0} 点/吋"} + } + em{ + dnam{"em"} + other{"{0} em"} + } + megapixel{ + dnam{"百万像素"} + other{"{0} 百万像素"} + } + pixel{ + dnam{"像素"} + other{"{0} 像素"} + } + pixel-per-centimeter{ + dnam{"每厘米像素"} + other{"{0} 像素/厘米"} + } + pixel-per-inch{ + dnam{"每吋像素"} + other{"{0} 像素/吋"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -1670,6 +1754,10 @@ yue_Hans{ dnam{"atm"} other{"{0} atm"} } + bar{ + dnam{"å·´"} + other{"{0} å·´"} + } hectopascal{ dnam{"百帕"} other{"{0} 百帕"} @@ -1694,6 +1782,10 @@ yue_Hans{ dnam{"毫米汞柱"} other{"{0} 毫米汞柱"} } + pascal{ + dnam{"帕斯卡"} + other{"{0} 帕斯卡"} + } pound-per-square-inch{ dnam{"磅力/平方英寸"} other{"每平方吋{0}磅"} diff --git a/source/data/unit/yue_Hant.txt b/source/data/unit/yue_Hant.txt index 1aaa640..a4fe9d6 100644 --- a/source/data/unit/yue_Hant.txt +++ b/source/data/unit/yue_Hant.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yue_Hant{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/unit/zgh.txt b/source/data/unit/zgh.txt index f3d4f35..8821a33 100644 --- a/source/data/unit/zgh.txt +++ b/source/data/unit/zgh.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zgh{ - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/unit/zh.txt b/source/data/unit/zh.txt index 529af5e..e613bf1 100644 --- a/source/data/unit/zh.txt +++ b/source/data/unit/zh.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh{ - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -89,6 +89,7 @@ zh{ } compound{ per{"每{1}{0}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -111,9 +112,13 @@ zh{ dnam{"ppm"} other{"百万分之{0}"} } - permyriad{ - dnam{"‱"} - other{"{0}‱"} + percent{ + dnam{"%"} + other{"{0}%"} + } + permille{ + dnam{"‰"} + other{"{0}‰"} } } consumption{ @@ -197,6 +202,10 @@ zh{ other{"{0}天"} per{"每天{0}"} } + decade{ + dnam{"年代"} + other{"{0}年代"} + } hour{ dnam{"小时"} other{"{0}小时"} @@ -291,6 +300,10 @@ zh{ dnam{"千瓦时"} other{"{0}千瓦时"} } + therm-us{ + dnam{"美制克卡"} + other{"{0}美制克卡"} + } } force{ newton{ @@ -320,6 +333,36 @@ zh{ other{"{0}兆赫"} } } + graphics{ + dot-per-centimeter{ + dnam{"点每厘米"} + other{"{0}点每厘米"} + } + dot-per-inch{ + dnam{"点每英寸"} + other{"{0}点每英寸"} + } + em{ + dnam{"版式"} + other{"{0}版式"} + } + megapixel{ + dnam{"百万像素"} + other{"{0}百万像素"} + } + pixel{ + dnam{"像素"} + other{"{0}像素"} + } + pixel-per-centimeter{ + dnam{"像素每厘米"} + other{"{0}像素每厘米"} + } + pixel-per-inch{ + dnam{"像素每英寸"} + other{"{0}像素每英寸"} + } + } length{ astronomical-unit{ dnam{"天文单位"} @@ -514,6 +557,10 @@ zh{ dnam{"标准大气压"} other{"{0}个标准大气压"} } + bar{ + dnam{"å·´"} + other{"{0}å·´"} + } hectopascal{ dnam{"百帕斯卡"} other{"{0}百帕斯卡"} @@ -538,6 +585,10 @@ zh{ dnam{"毫米汞柱"} other{"{0}毫米汞柱"} } + pascal{ + dnam{"帕斯卡"} + other{"{0}帕斯卡"} + } pound-per-square-inch{ dnam{"磅/平方英寸"} other{"每平方英寸{0}磅"} @@ -732,10 +783,6 @@ zh{ dnam{"英亩"} other{"{0}ac"} } - dunam{ - dnam{"杜纳亩"} - other{"{0}杜纳亩"} - } hectare{ dnam{"公顷"} other{"{0}ha"} @@ -776,15 +823,12 @@ zh{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ - mole{ - dnam{"摩尔"} - other{"{0}摩尔"} - } - permyriad{ - dnam{"‱"} - other{"{0}‱"} + percent{ + dnam{"%"} + other{"{0}%"} } } consumption{ @@ -810,6 +854,10 @@ zh{ other{"{0}天"} per{"{0}/天"} } + decade{ + dnam{"年代"} + other{"{0}年代"} + } hour{ dnam{"小时"} other{"{0}小时"} @@ -854,14 +902,6 @@ zh{ } } energy{ - british-thermal-unit{ - dnam{"英热单位"} - other{"{0}英热单位"} - } - electronvolt{ - dnam{"电子伏"} - other{"{0}电子伏"} - } foodcalorie{ dnam{"卡"} other{"{0}卡"} @@ -874,15 +914,9 @@ zh{ dnam{"千焦"} other{"{0}千焦"} } - } - force{ - newton{ - dnam{"牛"} - other{"{0}牛"} - } - pound-force{ - dnam{"磅力"} - other{"{0}磅力"} + therm-us{ + dnam{"美制克卡"} + other{"{0}美制克卡"} } } length{ @@ -941,6 +975,7 @@ zh{ } mile-scandinavian{ dnam{"斯堪的纳维亚英里"} + other{"{0}smi"} } millimeter{ dnam{"毫米"} @@ -962,30 +997,12 @@ zh{ dnam{"皮米"} other{"{0}pm"} } - solar-radius{ - dnam{"太阳半径"} - other{"{0}太阳半径"} - } yard{ dnam{"码"} other{"{0}yd"} } } - light{ - solar-luminosity{ - dnam{"太阳光度"} - other{"{0}太阳光度"} - } - } mass{ - dalton{ - dnam{"道尔顿"} - other{"{0}道尔顿"} - } - earth-mass{ - dnam{"地球质量"} - other{"{0}地球质量"} - } gram{ dnam{"克"} other{"{0}克"} @@ -1000,10 +1017,6 @@ zh{ pound{ other{"{0}磅"} } - solar-mass{ - dnam{"太阳质量"} - other{"{0}太阳质量"} - } stone{ dnam{"英石"} other{"{0}英石"} @@ -1027,14 +1040,6 @@ zh{ inch-hg{ other{"{0}\u0022 Hg"} } - kilopascal{ - dnam{"千帕"} - other{"{0}千帕"} - } - megapascal{ - dnam{"兆帕"} - other{"{0}兆帕"} - } millibar{ other{"{0}mb"} } @@ -1066,25 +1071,11 @@ zh{ other{"{0}°F"} } } - torque{ - newton-meter{ - dnam{"牛米"} - other{"{0}牛米"} - } - pound-foot{ - dnam{"磅英尺"} - other{"{0}磅英尺"} - } - } volume{ acre-foot{ dnam{"英亩英尺"} other{"{0}英亩英尺"} } - barrel{ - dnam{"桶"} - other{"{0}桶"} - } bushel{ dnam{"蒲式耳"} other{"{0}蒲式耳"} @@ -1139,9 +1130,6 @@ zh{ dnam{"液盎司"} other{"{0}液盎司"} } - fluid-ounce-imperial{ - dnam{"英制液盎司"} - } gallon{ dnam{"加仑"} other{"{0}加仑"} @@ -1273,6 +1261,7 @@ zh{ } compound{ per{"{0}/{1}"} + times{"{0}⋅{1}"} } concentr{ karat{ @@ -1295,9 +1284,13 @@ zh{ dnam{"ppm"} other{"{0}ppm"} } - permyriad{ - dnam{"‱"} - other{"{0}‱"} + percent{ + dnam{"%"} + other{"{0}%"} + } + permille{ + dnam{"‰"} + other{"{0}‰"} } } consumption{ @@ -1358,6 +1351,10 @@ zh{ dnam{"兆字节"} other{"{0}兆字节"} } + petabyte{ + dnam{"PB"} + other{"{0} PB"} + } terabit{ dnam{"太比特"} other{"{0}太比特"} @@ -1377,6 +1374,10 @@ zh{ other{"{0}天"} per{"{0}/天"} } + decade{ + dnam{"年代"} + other{"{0}年代"} + } hour{ dnam{"小时"} other{"{0}小时"} @@ -1471,6 +1472,10 @@ zh{ dnam{"千瓦时"} other{"{0}千瓦时"} } + therm-us{ + dnam{"美制克卡"} + other{"{0}美制克卡"} + } } force{ newton{ @@ -1694,6 +1699,10 @@ zh{ dnam{"大气压"} other{"{0}个大气压"} } + bar{ + dnam{"å·´"} + other{"{0}å·´"} + } hectopascal{ dnam{"百帕"} other{"{0}百帕"} @@ -1718,6 +1727,10 @@ zh{ dnam{"毫米汞柱"} other{"{0}毫米汞柱"} } + pascal{ + dnam{"帕"} + other{"{0}帕"} + } pound-per-square-inch{ dnam{"磅/平方英寸"} other{"每平方英寸{0}磅"} diff --git a/source/data/unit/zh_Hans.txt b/source/data/unit/zh_Hans.txt index 2e93fd9..5a74156 100644 --- a/source/data/unit/zh_Hans.txt +++ b/source/data/unit/zh_Hans.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hans{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/unit/zh_Hans_HK.txt b/source/data/unit/zh_Hans_HK.txt index 0011ff3..769055c 100644 --- a/source/data/unit/zh_Hans_HK.txt +++ b/source/data/unit/zh_Hans_HK.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hans_HK{ - Version{"2.1.47.71"} + Version{"36"} units{ compound{ per{"{0}/{1}"} diff --git a/source/data/unit/zh_Hans_MO.txt b/source/data/unit/zh_Hans_MO.txt index 52179e2..54f0634 100644 --- a/source/data/unit/zh_Hans_MO.txt +++ b/source/data/unit/zh_Hans_MO.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hans_MO{ - Version{"2.1.47.71"} + Version{"36"} units{ compound{ per{"{0}/{1}"} diff --git a/source/data/unit/zh_Hans_SG.txt b/source/data/unit/zh_Hans_SG.txt index 4f5f666..fed619d 100644 --- a/source/data/unit/zh_Hans_SG.txt +++ b/source/data/unit/zh_Hans_SG.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hans_SG{ - Version{"2.1.47.71"} + Version{"36"} units{ compound{ per{"{0}/{1}"} diff --git a/source/data/unit/zh_Hant.txt b/source/data/unit/zh_Hant.txt index a7ba17f..69db05a 100644 --- a/source/data/unit/zh_Hant.txt +++ b/source/data/unit/zh_Hant.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hant{ %%Parent{"root"} - Version{"2.1.49.82"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -120,10 +120,6 @@ zh_Hant{ dnam{"千分比"} other{"{0}‰"} } - permyriad{ - dnam{"‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -206,6 +202,10 @@ zh_Hant{ other{"{0} 天"} per{"每天 {0}"} } + decade{ + dnam{"10 å¹´"} + other{"{0}0 å¹´"} + } hour{ dnam{"小時"} other{"{0} 小時"} @@ -300,6 +300,10 @@ zh_Hant{ dnam{"千瓦小時"} other{"{0} 千瓦小時"} } + therm-us{ + dnam{"美制撒姆"} + other{"{0} 美制撒姆"} + } } force{ newton{ @@ -329,6 +333,16 @@ zh_Hant{ other{"{0} 兆赫"} } } + graphics{ + megapixel{ + dnam{"百萬像素"} + other{"{0} 百萬像素"} + } + pixel{ + dnam{"像素"} + other{"{0} 像素"} + } + } length{ astronomical-unit{ dnam{"天文單位"} @@ -523,6 +537,10 @@ zh_Hant{ dnam{"氣壓"} other{"{0} 大氣壓"} } + bar{ + dnam{"å·´"} + other{"{0} å·´"} + } hectopascal{ dnam{"百帕"} other{"{0} 百帕"} @@ -532,8 +550,8 @@ zh_Hant{ other{"{0} 英寸汞柱"} } kilopascal{ - dnam{"帕斯卡"} - other{"{0} 帕斯卡"} + dnam{"千帕"} + other{"{0} 千帕"} } megapascal{ dnam{"兆帕"} @@ -547,6 +565,10 @@ zh_Hant{ dnam{"毫米汞柱"} other{"{0} 毫米汞柱"} } + pascal{ + dnam{"帕斯卡"} + other{"{0} 帕斯卡"} + } pound-per-square-inch{ dnam{"每平方英寸磅力"} other{"每平方英寸 {0} 磅力"} @@ -837,33 +859,43 @@ zh_Hant{ } digital{ bit{ + dnam{"bit"} other{"{0}bit"} } byte{ + dnam{"byte"} other{"{0}byte"} } gigabit{ + dnam{"Gb"} other{"{0}Gb"} } gigabyte{ + dnam{"GB"} other{"{0}GB"} } kilobit{ + dnam{"kb"} other{"{0}kb"} } kilobyte{ + dnam{"kB"} other{"{0}kB"} } megabit{ + dnam{"Mb"} other{"{0}Mb"} } megabyte{ + dnam{"MB"} other{"{0}MB"} } terabit{ + dnam{"Tb"} other{"{0}Tb"} } terabyte{ + dnam{"TB"} other{"{0}TB"} } } @@ -1194,8 +1226,14 @@ zh_Hant{ } fahrenheit{ dnam{"華氏"} + other{"{0}°F"} + } + generic{ + dnam{"°"} + other{"{0}°"} } kelvin{ + dnam{"K"} other{"{0}°K"} } } @@ -1225,7 +1263,6 @@ zh_Hant{ other{"{0}in³"} } cubic-kilometer{ - dnam{"立方公里"} other{"{0}km³"} } cubic-meter{ @@ -1503,6 +1540,10 @@ zh_Hant{ other{"{0} 天"} per{"{0}/天"} } + decade{ + dnam{"10 å¹´"} + other{"{0}0 å¹´"} + } hour{ dnam{"小時"} other{"{0} 小時"} @@ -1597,6 +1638,10 @@ zh_Hant{ dnam{"千瓦小時"} other{"{0} 千瓦小時"} } + therm-us{ + dnam{"美制撒姆"} + other{"{0} 美制撒姆"} + } } force{ newton{ @@ -1641,6 +1686,7 @@ zh_Hant{ other{"{0} 公寸"} } fathom{ + dnam{"fm"} other{"{0} 英尋"} } foot{ @@ -1707,10 +1753,6 @@ zh_Hant{ dnam{"點"} other{"{0} 點"} } - solar-radius{ - dnam{"R☉"} - other{"{0} R☉"} - } yard{ dnam{"碼"} other{"{0} 碼"} @@ -1780,6 +1822,7 @@ zh_Hant{ other{"{0} M☉"} } stone{ + dnam{"st"} other{"{0} 英石"} } ton{ @@ -1818,6 +1861,10 @@ zh_Hant{ dnam{"atm"} other{"{0} atm"} } + bar{ + dnam{"å·´"} + other{"{0} å·´"} + } hectopascal{ dnam{"百帕"} other{"{0} 百帕"} @@ -1842,6 +1889,10 @@ zh_Hant{ dnam{"毫米汞柱"} other{"{0} 毫米汞柱"} } + pascal{ + dnam{"Pa"} + other{"{0} Pa"} + } pound-per-square-inch{ dnam{"磅力/平方英寸"} other{"{0} 磅力/平方英寸"} @@ -1903,6 +1954,7 @@ zh_Hant{ other{"{0} 桶"} } bushel{ + dnam{"bu"} other{"{0} 蒲式耳"} } centiliter{ diff --git a/source/data/unit/zh_Hant_HK.txt b/source/data/unit/zh_Hant_HK.txt index b0ac847..1a12c1d 100644 --- a/source/data/unit/zh_Hant_HK.txt +++ b/source/data/unit/zh_Hant_HK.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hant_HK{ - Version{"2.1.47.86"} + Version{"36"} units{ acceleration{ meter-per-second-squared{ @@ -58,12 +58,16 @@ zh_Hant_HK{ } } consumption{ + liter-per-100kilometers{ + dnam{"公升/100公里"} + } liter-per-kilometer{ dnam{"公升/公里"} other{"{0} 公升/公里"} } mile-per-gallon{ - dnam{"英里每加侖"} + dnam{"英里/加侖"} + other{"{0} 英里/加侖"} } } coordinate{ @@ -598,6 +602,9 @@ zh_Hant_HK{ per{"{0} 每平方英里"} } } + compound{ + times{"{0}⋅{1}"} + } concentr{ millimole-per-liter{ dnam{"毫摩爾/公升"} @@ -665,6 +672,36 @@ zh_Hant_HK{ dnam{"千焦"} } } + graphics{ + dot-per-centimeter{ + dnam{"dpcm"} + other{"{0} dpcm"} + } + dot-per-inch{ + dnam{"dpi"} + other{"{0} dpi"} + } + em{ + dnam{"em"} + other{"{0} em"} + } + megapixel{ + dnam{"MP"} + other{"{0} MP"} + } + pixel{ + dnam{"px"} + other{"{0} px"} + } + pixel-per-centimeter{ + dnam{"ppcm"} + other{"{0} ppcm"} + } + pixel-per-inch{ + dnam{"ppi"} + other{"{0} ppi"} + } + } length{ centimeter{ dnam{"厘米"} @@ -745,6 +782,10 @@ zh_Hant_HK{ dnam{"英吋汞柱"} other{"{0} 英吋汞柱"} } + pascal{ + dnam{"帕"} + other{"{0} 帕"} + } pound-per-square-inch{ dnam{"磅每平方吋"} other{"{0} 磅每平方吋"} diff --git a/source/data/unit/zh_Hant_MO.txt b/source/data/unit/zh_Hant_MO.txt index a0fc4d8..707fe99 100644 --- a/source/data/unit/zh_Hant_MO.txt +++ b/source/data/unit/zh_Hant_MO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hant_MO{ %%Parent{"zh_Hant_HK"} - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/unit/zu.txt b/source/data/unit/zu.txt index b2c0f69..f19f966 100644 --- a/source/data/unit/zu.txt +++ b/source/data/unit/zu.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zu{ - Version{"2.1.48.17"} + Version{"36"} durationUnits{ hm{"h:mm"} hms{"h:mm:ss"} @@ -53,11 +53,6 @@ zu{ one{"{0} ac"} other{"{0} ac"} } - dunam{ - dnam{"dunams"} - one{"{0} dunam"} - other{"{0} dunam"} - } hectare{ dnam{"hectare"} one{"{0} ha"} @@ -123,11 +118,6 @@ zu{ one{"{0} mmol/L"} other{"{0} mmol/L"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"ppm"} one{"{0} ppm"} @@ -139,14 +129,10 @@ zu{ other{"{0}%"} } permille{ + dnam{"permille"} one{"{0}‰"} other{"{0}‰"} } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -246,6 +232,10 @@ zu{ other{"{0} izinsuku"} per{"{0}/d"} } + decade{ + one{"{0} dec"} + other{"{0} decades"} + } hour{ dnam{"amahora"} one{"{0} ihora"} @@ -321,21 +311,11 @@ zu{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"cal"} one{"{0} cal"} other{"{0} cal"} } - electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} - } foodcalorie{ dnam{"Calories"} one{"{0} Calorie"} @@ -362,18 +342,6 @@ zu{ other{"{0} kWh"} } } - force{ - newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} - } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} - } - } frequency{ gigahertz{ dnam{"GHz"} @@ -396,6 +364,12 @@ zu{ other{"{0} MHz"} } } + graphics{ + megapixel{ + one{"{0} MP"} + other{"{0} megapixels"} + } + } length{ astronomical-unit{ dnam{"au"} @@ -487,11 +461,6 @@ zu{ one{"{0} pt"} other{"{0} pt"} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"yd"} one{"{0} yd"} @@ -504,11 +473,6 @@ zu{ one{"{0} i-lux"} other{"{0} i-lux"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -516,16 +480,6 @@ zu{ one{"{0} CD"} other{"{0} CD"} } - dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"g"} one{"{0} g"} @@ -570,11 +524,6 @@ zu{ other{"{0} lb"} per{"{0}/lb"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } ton{ dnam{"tn"} one{"{0} tn"} @@ -629,16 +578,6 @@ zu{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} one{"{0} mbar"} @@ -663,8 +602,8 @@ zu{ } knot{ dnam{"knot"} - one{"{0} knots"} - other{"{0} knots"} + one{"{0} amafindo"} + other{"{0} amafindo"} } meter-per-second{ dnam{"m/s"} @@ -699,29 +638,12 @@ zu{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ac ft"} one{"{0} ac ft"} other{"{0} ac ft"} } - barrel{ - dnam{"bbl"} - one{"{0} bbl"} - other{"{0} bbl"} - } centiliter{ dnam{"cL"} one{"{0} cL"} @@ -784,11 +706,6 @@ zu{ one{"{0} fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} one{"{0} gal"} @@ -912,8 +829,8 @@ zu{ } minute{ dnam{"amaminithi"} - one{"{0} min"} - other{"{0} min"} + one{"{0} umzuzu"} + other{"{0} umzuzu"} } month{ dnam{"izinyanga"} @@ -1044,8 +961,6 @@ zu{ } dunam{ dnam{"dunams"} - one{"{0} dunam"} - other{"{0} dunam"} } hectare{ dnam{"hectare"} @@ -1112,11 +1027,6 @@ zu{ one{"{0} mmol/L"} other{"{0} mmol/L"} } - mole{ - dnam{"mol"} - one{"{0} mol"} - other{"{0} mol"} - } part-per-million{ dnam{"izingxenye/izigidi"} one{"{0} ppm"} @@ -1132,11 +1042,6 @@ zu{ one{"{0}‰"} other{"{0}‰"} } - permyriad{ - dnam{"‱"} - one{"{0}‱"} - other{"{0}‱"} - } } consumption{ liter-per-100kilometers{ @@ -1256,7 +1161,6 @@ zu{ dnam{"amaminithi"} one{"{0} iminithi"} other{"{0} iminithi"} - per{"{0}/min"} } month{ dnam{"izinyanga"} @@ -1311,21 +1215,11 @@ zu{ } } energy{ - british-thermal-unit{ - dnam{"Btu"} - one{"{0} Btu"} - other{"{0} Btu"} - } calorie{ dnam{"cal"} one{"{0} cal"} other{"{0} cal"} } - electronvolt{ - dnam{"eV"} - one{"{0} eV"} - other{"{0} eV"} - } foodcalorie{ dnam{"Cal"} one{"{0} Cal"} @@ -1352,18 +1246,6 @@ zu{ other{"{0} kWh"} } } - force{ - newton{ - dnam{"N"} - one{"{0} N"} - other{"{0} N"} - } - pound-force{ - dnam{"lbf"} - one{"{0} lbf"} - other{"{0} lbf"} - } - } frequency{ gigahertz{ dnam{"GHz"} @@ -1477,11 +1359,6 @@ zu{ one{"{0} pt"} other{"{0} pt"} } - solar-radius{ - dnam{"R☉"} - one{"{0} R☉"} - other{"{0} R☉"} - } yard{ dnam{"yd"} one{"{0} yd"} @@ -1494,11 +1371,6 @@ zu{ one{"{0} lx"} other{"{0} lx"} } - solar-luminosity{ - dnam{"L☉"} - one{"{0} L☉"} - other{"{0} L☉"} - } } mass{ carat{ @@ -1506,16 +1378,6 @@ zu{ one{"{0} CD"} other{"{0} CD"} } - dalton{ - dnam{"Da"} - one{"{0} Da"} - other{"{0} Da"} - } - earth-mass{ - dnam{"M⊕"} - one{"{0} M⊕"} - other{"{0} M⊕"} - } gram{ dnam{"g"} one{"{0} g"} @@ -1560,11 +1422,6 @@ zu{ other{"{0} lb"} per{"{0}/lb"} } - solar-mass{ - dnam{"M☉"} - one{"{0} M☉"} - other{"{0} M☉"} - } ton{ dnam{"tn"} one{"{0} tn"} @@ -1619,16 +1476,6 @@ zu{ one{"{0} inHg"} other{"{0} inHg"} } - kilopascal{ - dnam{"kPa"} - one{"{0} kPa"} - other{"{0} kPa"} - } - megapascal{ - dnam{"MPa"} - one{"{0} MPa"} - other{"{0} MPa"} - } millibar{ dnam{"mbar"} one{"{0} mbar"} @@ -1689,29 +1536,12 @@ zu{ other{"{0} K"} } } - torque{ - newton-meter{ - dnam{"N⋅m"} - one{"{0} N⋅m"} - other{"{0} N⋅m"} - } - pound-foot{ - dnam{"lbf⋅ft"} - one{"{0} lbf⋅ft"} - other{"{0} lbf⋅ft"} - } - } volume{ acre-foot{ dnam{"ac ft"} one{"{0} ac ft"} other{"{0} ac ft"} } - barrel{ - dnam{"bbl"} - one{"{0} bbl"} - other{"{0} bbl"} - } centiliter{ dnam{"cL"} one{"{0} cL"} @@ -1774,11 +1604,6 @@ zu{ one{"{0} fl oz"} other{"{0} fl oz"} } - fluid-ounce-imperial{ - dnam{"Imp. fl oz"} - one{"{0} fl oz Imp."} - other{"{0} fl oz Imp."} - } gallon{ dnam{"gal"} one{"{0} gal"} diff --git a/source/data/xml/brkitr/de.xml b/source/data/xml/brkitr/de.xml index f7e0b21..d3b9148 100644 --- a/source/data/xml/brkitr/de.xml +++ b/source/data/xml/brkitr/de.xml @@ -6,9 +6,9 @@ See http://bugs.icu-project.org/trac/ticket/10750#comment:5 - this file is needed to emit break iterator rules properly. --> - + %icu; ] > diff --git a/source/data/xml/brkitr/el.xml b/source/data/xml/brkitr/el.xml index 9c4379c..6fe7909 100644 --- a/source/data/xml/brkitr/el.xml +++ b/source/data/xml/brkitr/el.xml @@ -4,9 +4,9 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + %icu; ] > diff --git a/source/data/xml/brkitr/en.xml b/source/data/xml/brkitr/en.xml index 96b3e78..7b666b2 100644 --- a/source/data/xml/brkitr/en.xml +++ b/source/data/xml/brkitr/en.xml @@ -4,9 +4,9 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + %icu; ] > diff --git a/source/data/xml/brkitr/en_US.xml b/source/data/xml/brkitr/en_US.xml index 7d30a3d..06f7857 100644 --- a/source/data/xml/brkitr/en_US.xml +++ b/source/data/xml/brkitr/en_US.xml @@ -4,9 +4,9 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + %icu; ] > diff --git a/source/data/xml/brkitr/en_US_POSIX.xml b/source/data/xml/brkitr/en_US_POSIX.xml index 31d0b3d..42eb32a 100644 --- a/source/data/xml/brkitr/en_US_POSIX.xml +++ b/source/data/xml/brkitr/en_US_POSIX.xml @@ -4,9 +4,9 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + %icu; ] > diff --git a/source/data/xml/brkitr/es.xml b/source/data/xml/brkitr/es.xml index 5a80e01..e4eec30 100644 --- a/source/data/xml/brkitr/es.xml +++ b/source/data/xml/brkitr/es.xml @@ -6,9 +6,9 @@ See http://bugs.icu-project.org/trac/ticket/10750#comment:5 - this file is needed to emit break iterator rules properly. --> - + %icu; ] > diff --git a/source/data/xml/brkitr/fr.xml b/source/data/xml/brkitr/fr.xml index 9f0f32f..9d21d63 100644 --- a/source/data/xml/brkitr/fr.xml +++ b/source/data/xml/brkitr/fr.xml @@ -6,9 +6,9 @@ See http://bugs.icu-project.org/trac/ticket/10750#comment:5 - this file is needed to emit break iterator rules properly. --> - + %icu; ] > diff --git a/source/data/xml/brkitr/it.xml b/source/data/xml/brkitr/it.xml index 8210976..1f3ce23 100644 --- a/source/data/xml/brkitr/it.xml +++ b/source/data/xml/brkitr/it.xml @@ -6,9 +6,9 @@ See http://bugs.icu-project.org/trac/ticket/10750#comment:5 - this file is needed to emit break iterator rules properly. --> - + %icu; ] > diff --git a/source/data/xml/brkitr/ja.xml b/source/data/xml/brkitr/ja.xml index 1a51a0f..7a52160 100644 --- a/source/data/xml/brkitr/ja.xml +++ b/source/data/xml/brkitr/ja.xml @@ -4,9 +4,9 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2006-2015 International Business Machines Corporation and others. All rights reserved. --> - + %icu; ] > diff --git a/source/data/xml/brkitr/pt.xml b/source/data/xml/brkitr/pt.xml index d1bf2dc..37709e4 100644 --- a/source/data/xml/brkitr/pt.xml +++ b/source/data/xml/brkitr/pt.xml @@ -6,9 +6,9 @@ See http://bugs.icu-project.org/trac/ticket/10750#comment:5 - this file is needed to emit break iterator rules properly. --> - + %icu; ] > diff --git a/source/data/xml/brkitr/root.xml b/source/data/xml/brkitr/root.xml index c37188d..7539574 100644 --- a/source/data/xml/brkitr/root.xml +++ b/source/data/xml/brkitr/root.xml @@ -4,9 +4,9 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + %icu; ] > diff --git a/source/data/xml/brkitr/ru.xml b/source/data/xml/brkitr/ru.xml index 054173a..c9b88ae 100644 --- a/source/data/xml/brkitr/ru.xml +++ b/source/data/xml/brkitr/ru.xml @@ -6,9 +6,9 @@ See http://bugs.icu-project.org/trac/ticket/10750#comment:5 - this file is needed to emit break iterator rules properly. --> - + %icu; ] > diff --git a/source/data/xml/brkitr/zh.xml b/source/data/xml/brkitr/zh.xml index 3f6effc..0ab78eb 100644 --- a/source/data/xml/brkitr/zh.xml +++ b/source/data/xml/brkitr/zh.xml @@ -4,9 +4,9 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2006-2015 International Business Machines Corporation and others. All rights reserved. --> - + %icu; ] > diff --git a/source/data/xml/brkitr/zh_Hant.xml b/source/data/xml/brkitr/zh_Hant.xml index cf79b98..7d1848e 100644 --- a/source/data/xml/brkitr/zh_Hant.xml +++ b/source/data/xml/brkitr/zh_Hant.xml @@ -4,9 +4,9 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2006-2015 International Business Machines Corporation and others. All rights reserved. --> - + %icu; ] > diff --git a/source/data/xml/collation/root.xml b/source/data/xml/collation/root.xml index 267baf9..8f85ebb 100644 --- a/source/data/xml/collation/root.xml +++ b/source/data/xml/collation/root.xml @@ -4,9 +4,9 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + %icu; ] > diff --git a/source/data/xml/main/root.xml b/source/data/xml/main/root.xml index 7218623..5be135d 100644 --- a/source/data/xml/main/root.xml +++ b/source/data/xml/main/root.xml @@ -4,9 +4,9 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + %icu; ] > diff --git a/source/data/xml/rbnf/be.xml b/source/data/xml/rbnf/be.xml index 2d9e0e3..6d06df5 100644 --- a/source/data/xml/rbnf/be.xml +++ b/source/data/xml/rbnf/be.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/bg.xml b/source/data/xml/rbnf/bg.xml index 3be0286..c943121 100644 --- a/source/data/xml/rbnf/bg.xml +++ b/source/data/xml/rbnf/bg.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/ca.xml b/source/data/xml/rbnf/ca.xml index 98ae4a7..7a7f9ba 100644 --- a/source/data/xml/rbnf/ca.xml +++ b/source/data/xml/rbnf/ca.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/cy.xml b/source/data/xml/rbnf/cy.xml index 27dd4e2..908086f 100644 --- a/source/data/xml/rbnf/cy.xml +++ b/source/data/xml/rbnf/cy.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/da.xml b/source/data/xml/rbnf/da.xml index 6570e62..1111c05 100644 --- a/source/data/xml/rbnf/da.xml +++ b/source/data/xml/rbnf/da.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/de.xml b/source/data/xml/rbnf/de.xml index b7264f7..e56a3ab 100644 --- a/source/data/xml/rbnf/de.xml +++ b/source/data/xml/rbnf/de.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/en.xml b/source/data/xml/rbnf/en.xml index 77a3c15..4dd2c2c 100644 --- a/source/data/xml/rbnf/en.xml +++ b/source/data/xml/rbnf/en.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2013-2016 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/fo.xml b/source/data/xml/rbnf/fo.xml index 81be866..4c56252 100644 --- a/source/data/xml/rbnf/fo.xml +++ b/source/data/xml/rbnf/fo.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/ga.xml b/source/data/xml/rbnf/ga.xml index 2b79c09..086ca7e 100644 --- a/source/data/xml/rbnf/ga.xml +++ b/source/data/xml/rbnf/ga.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2013-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/is.xml b/source/data/xml/rbnf/is.xml index 42952b7..06d642c 100644 --- a/source/data/xml/rbnf/is.xml +++ b/source/data/xml/rbnf/is.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/mk.xml b/source/data/xml/rbnf/mk.xml index 66ea00a..0d5a6f7 100644 --- a/source/data/xml/rbnf/mk.xml +++ b/source/data/xml/rbnf/mk.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/mt.xml b/source/data/xml/rbnf/mt.xml index f2461e7..fd039b3 100644 --- a/source/data/xml/rbnf/mt.xml +++ b/source/data/xml/rbnf/mt.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2013-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/nb.xml b/source/data/xml/rbnf/nb.xml index 1d8c25e..0674bca 100644 --- a/source/data/xml/rbnf/nb.xml +++ b/source/data/xml/rbnf/nb.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/nn.xml b/source/data/xml/rbnf/nn.xml index 93126fc..d64a5a8 100644 --- a/source/data/xml/rbnf/nn.xml +++ b/source/data/xml/rbnf/nn.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/root.xml b/source/data/xml/rbnf/root.xml index 09eaa93..8654795 100644 --- a/source/data/xml/rbnf/root.xml +++ b/source/data/xml/rbnf/root.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/ru.xml b/source/data/xml/rbnf/ru.xml index 94281fa..546ae26 100644 --- a/source/data/xml/rbnf/ru.xml +++ b/source/data/xml/rbnf/ru.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/sr.xml b/source/data/xml/rbnf/sr.xml index 97975c5..97ca050 100644 --- a/source/data/xml/rbnf/sr.xml +++ b/source/data/xml/rbnf/sr.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/xml/rbnf/uk.xml b/source/data/xml/rbnf/uk.xml index 8b32cd3..1690ad3 100644 --- a/source/data/xml/rbnf/uk.xml +++ b/source/data/xml/rbnf/uk.xml @@ -4,7 +4,7 @@ License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2010-2015 International Business Machines Corporation and others. All rights reserved. --> - + diff --git a/source/data/zone/af.txt b/source/data/zone/af.txt index eda5896..df50666 100644 --- a/source/data/zone/af.txt +++ b/source/data/zone/af.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License af{ - Version{"2.1.48.17"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -810,6 +810,9 @@ af{ "Asia:Qatar"{ ec{"Katar"} } + "Asia:Qostanay"{ + ec{"Kostanay"} + } "Asia:Qyzylorda"{ ec{"Qyzylorda"} } @@ -1461,7 +1464,7 @@ af{ ls{"Kokoseilande-tyd"} } "meta:Colombia"{ - ld{"Colombië-somertyd"} + ld{"Colombia-somertyd"} lg{"Colombië-tyd"} ls{"Colombië-standaardtyd"} } diff --git a/source/data/zone/agq.txt b/source/data/zone/agq.txt index 964644e..4f51160 100644 --- a/source/data/zone/agq.txt +++ b/source/data/zone/agq.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License agq{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/ak.txt b/source/data/zone/ak.txt index 042e6c6..251661d 100644 --- a/source/data/zone/ak.txt +++ b/source/data/zone/ak.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ak{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/am.txt b/source/data/zone/am.txt index 0ffac0d..2e7aaad 100644 --- a/source/data/zone/am.txt +++ b/source/data/zone/am.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License am{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"አቢጃን"} @@ -810,6 +810,9 @@ am{ "Asia:Qatar"{ ec{"ኳታር"} } + "Asia:Qostanay"{ + ec{"ኮስታናይ"} + } "Asia:Qyzylorda"{ ec{"ኩይዚሎርዳ"} } diff --git a/source/data/zone/ar.txt b/source/data/zone/ar.txt index 2648b8f..d084042 100644 --- a/source/data/zone/ar.txt +++ b/source/data/zone/ar.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ar{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"أبيدجان"} diff --git a/source/data/zone/as.txt b/source/data/zone/as.txt index 8c6df9d..6c2ef99 100644 --- a/source/data/zone/as.txt +++ b/source/data/zone/as.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License as{ - Version{"2.1.48.17"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"আবিডজান"} diff --git a/source/data/zone/asa.txt b/source/data/zone/asa.txt index 5c7591d..4dd6983 100644 --- a/source/data/zone/asa.txt +++ b/source/data/zone/asa.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License asa{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/ast.txt b/source/data/zone/ast.txt index 2cfc525..e1734e3 100644 --- a/source/data/zone/ast.txt +++ b/source/data/zone/ast.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ast{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} diff --git a/source/data/zone/az.txt b/source/data/zone/az.txt index 39f5060..17a9f3d 100644 --- a/source/data/zone/az.txt +++ b/source/data/zone/az.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License az{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abican"} @@ -253,7 +253,7 @@ az{ ec{"Kayman"} } "America:Chicago"{ - ec{"Cikaqo"} + ec{"Çikaqo"} } "America:Chihuahua"{ ec{"Çihuahua"} @@ -529,7 +529,7 @@ az{ ec{"Rio Branko"} } "America:Santa_Isabel"{ - ec{"Santa Isabel"} + ec{"Santa Ä°zabel"} } "America:Santarem"{ ec{"Santarem"} @@ -595,7 +595,7 @@ az{ ec{"Uaythors"} } "America:Winnipeg"{ - ec{"Vinipeq"} + ec{"Vinnipeq"} } "America:Yakutat"{ ec{"Yakutat"} @@ -685,10 +685,10 @@ az{ ec{"Bişkek"} } "Asia:Brunei"{ - ec{"Brunei"} + ec{"Bruney"} } "Asia:Calcutta"{ - ec{"Kolkata"} + ec{"Kəlkətə"} } "Asia:Chita"{ ec{"Çita"} @@ -784,7 +784,7 @@ az{ ec{"Muskat"} } "Asia:Nicosia"{ - ec{"Nikosia"} + ec{"Nikosiya"} } "Asia:Novokuznetsk"{ ec{"Novokuznetsk"} @@ -841,7 +841,7 @@ az{ ec{"Srednekolımsk"} } "Asia:Taipei"{ - ec{"Taipei"} + ec{"Taybey"} } "Asia:Tashkent"{ ec{"Daşkənd"} @@ -946,7 +946,7 @@ az{ ec{"Melburn"} } "Australia:Perth"{ - ec{"Perth"} + ec{"Pert"} } "Australia:Sydney"{ ec{"Sidney"} @@ -1001,7 +1001,7 @@ az{ ld{"Ä°rlandiya Yay Vaxtı"} } "Europe:Gibraltar"{ - ec{"Gibraltar"} + ec{"Cəbəli-Tariq"} } "Europe:Guernsey"{ ec{"Gernzey"} @@ -1095,7 +1095,7 @@ az{ ec{"Skopye"} } "Europe:Sofia"{ - ec{"Sofia"} + ec{"Sofiya"} } "Europe:Stockholm"{ ec{"Stokholm"} @@ -1122,7 +1122,7 @@ az{ ec{"Vyana"} } "Europe:Vilnius"{ - ec{"Vilnyus"} + ec{"Vilnüs"} } "Europe:Volgograd"{ ec{"Volqoqrad"} @@ -1176,7 +1176,7 @@ az{ ec{"Apia"} } "Pacific:Auckland"{ - ec{"Aukland"} + ec{"Oklənd"} } "Pacific:Bougainville"{ ec{"Buqanvil"} @@ -1269,7 +1269,7 @@ az{ ec{"Rarotonqa"} } "Pacific:Saipan"{ - ec{"Saipan"} + ec{"Saypan"} } "Pacific:Tahiti"{ ec{"Tahiti"} @@ -1768,7 +1768,7 @@ az{ ls{"Pxenyan Vaxtı"} } "meta:Reunion"{ - ls{"Reunion Vaxtı"} + ls{"Reyunyon"} } "meta:Rothera"{ ls{"Rotera Vaxtı"} diff --git a/source/data/zone/az_Cyrl.txt b/source/data/zone/az_Cyrl.txt index 55114eb..e899ba9 100644 --- a/source/data/zone/az_Cyrl.txt +++ b/source/data/zone/az_Cyrl.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License az_Cyrl{ %%Parent{"root"} - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/az_Latn.txt b/source/data/zone/az_Latn.txt index 9c120f3..5247644 100644 --- a/source/data/zone/az_Latn.txt +++ b/source/data/zone/az_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License az_Latn{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/bas.txt b/source/data/zone/bas.txt index 8cc5e32..6760f19 100644 --- a/source/data/zone/bas.txt +++ b/source/data/zone/bas.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bas{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/be.txt b/source/data/zone/be.txt index 1e832f4..83aab3f 100644 --- a/source/data/zone/be.txt +++ b/source/data/zone/be.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License be{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Абіджан"} @@ -25,7 +25,7 @@ be{ ec{"Бангі"} } "Africa:Banjul"{ - ec{"Банжул"} + ec{"Банджул"} } "Africa:Bissau"{ ec{"Бісау"} @@ -46,7 +46,7 @@ be{ ec{"Касабланка"} } "Africa:Ceuta"{ - ec{"Сеўта"} + ec{"Сеута"} } "Africa:Conakry"{ ec{"Конакры"} @@ -403,7 +403,7 @@ be{ ec{"Луісвіл"} } "America:Lower_Princes"{ - ec{"Лоўэр Прынсіз Квортэр"} + ec{"Лоўэр Прынсіз Квотэр"} } "America:Maceio"{ ec{"Масеё"} @@ -445,7 +445,7 @@ be{ ec{"Мікелон"} } "America:Moncton"{ - ec{"Манктан"} + ec{"Монктан"} } "America:Monterrey"{ ec{"Мантэрэй"} @@ -487,7 +487,7 @@ be{ ec{"Панама"} } "America:Pangnirtung"{ - ec{"Пангніртунг"} + ec{"Пангніртанг"} } "America:Paramaribo"{ ec{"Парамарыба"} @@ -508,7 +508,7 @@ be{ ec{"Пуэрта-Рыка"} } "America:Punta_Arenas"{ - ec{"Пунта Арэнас"} + ec{"Пунта-Арэнас"} } "America:Rainy_River"{ ec{"Рэйні-Рывер"} @@ -544,7 +544,7 @@ be{ ec{"Сан-Паўлу"} } "America:Scoresbysund"{ - ec{"Ітакортаарміут"} + ec{"Ітакартаарміт"} } "America:Sitka"{ ec{"Сітка"} @@ -574,7 +574,7 @@ be{ ec{"Тэгусігальпа"} } "America:Thule"{ - ec{"Каанаак"} + ec{"Туле"} } "America:Thunder_Bay"{ ec{"Тандэр-Бэй"} @@ -601,7 +601,7 @@ be{ ec{"Якутат"} } "America:Yellowknife"{ - ec{"Йелаўнайф"} + ec{"Елаўнайф"} } "Antarctica:Casey"{ ec{"Кэйсі"} @@ -658,7 +658,7 @@ be{ ec{"Актабэ"} } "Asia:Ashgabat"{ - ec{"Ашгабад"} + ec{"Ашгабат"} } "Asia:Atyrau"{ ec{"Атырау"} @@ -810,8 +810,11 @@ be{ "Asia:Qatar"{ ec{"Катар"} } + "Asia:Qostanay"{ + ec{"Кустанай"} + } "Asia:Qyzylorda"{ - ec{"Кзыларда"} + ec{"Кзыл-Арда"} } "Asia:Rangoon"{ ec{"Рангун"} @@ -868,7 +871,7 @@ be{ ec{"Урумчы"} } "Asia:Ust-Nera"{ - ec{"Вусць-Нера"} + ec{"Усць-Нера"} } "Asia:Vientiane"{ ec{"В’енцьян"} @@ -907,13 +910,13 @@ be{ ec{"Рэйк’явік"} } "Atlantic:South_Georgia"{ - ec{"Паўднёвая Джорджыя"} + ec{"Паўднёвая Георгія"} } "Atlantic:St_Helena"{ ec{"Востраў Святой Алены"} } "Atlantic:Stanley"{ - ec{"Стэнлі"} + ec{"Порт-Стэнлі"} } "Australia:Adelaide"{ ec{"Адэлаіда"} @@ -1047,7 +1050,7 @@ be{ ec{"Мальта"} } "Europe:Mariehamn"{ - ec{"Марыехамн"} + ec{"Марыянхаміна"} } "Europe:Minsk"{ ec{"Мінск"} @@ -1152,7 +1155,7 @@ be{ ec{"Какосавыя астравы"} } "Indian:Comoro"{ - ec{"Камор"} + ec{"Каморскія астравы"} } "Indian:Kerguelen"{ ec{"Кергелен"} @@ -1185,7 +1188,7 @@ be{ ec{"Чатэм"} } "Pacific:Easter"{ - ec{"Пасхі востраў"} + ec{"Вялікадня востраў"} } "Pacific:Efate"{ ec{"Эфатэ"} @@ -1260,7 +1263,7 @@ be{ ec{"Піткэрн"} } "Pacific:Ponape"{ - ec{"Понпеі"} + ec{"Панпеі"} } "Pacific:Port_Moresby"{ ec{"Порт-Морсбі"} @@ -1281,7 +1284,7 @@ be{ ec{"Тангатапу"} } "Pacific:Truk"{ - ec{"Чуук"} + ec{"Трук"} } "Pacific:Wake"{ ec{"Уэйк"} @@ -1474,9 +1477,9 @@ be{ ls{"Час Усходняга Тымора"} } "meta:Easter"{ - ld{"Летні час вострава Пасхі"} - lg{"Час вострава Пасхі"} - ls{"Стандартны час вострава Пасхі"} + ld{"Летні час вострава Вялікадня"} + lg{"Час вострава Вялікадня"} + ls{"Стандартны час вострава Вялікадня"} } "meta:Ecuador"{ ls{"Эквадорскі час"} @@ -1710,9 +1713,9 @@ be{ ls{"Час вострава Норфалк"} } "meta:Noronha"{ - ld{"Летні час Фернанду-ды-Наронья"} - lg{"Час Фернанду-ды-Наронья"} - ls{"Стандартны час Фернанду-ды-Наронья"} + ld{"Летні час Фернанду-дзі-Наронья"} + lg{"Час Фернанду-дзі-Наронья"} + ls{"Стандартны час Фернанду-дзі-Наронья"} } "meta:Novosibirsk"{ ld{"Новасібірскі летні час"} @@ -1762,7 +1765,7 @@ be{ ls{"Час вострава Піткэрн"} } "meta:Ponape"{ - ls{"Час вострава Понпеі"} + ls{"Час вострава Панпеі"} } "meta:Pyongyang"{ ls{"Пхеньянскі час"} @@ -1771,7 +1774,7 @@ be{ ls{"Час Рэюньёна"} } "meta:Rothera"{ - ls{"Час станцыі Ратэра"} + ls{"Час станцыі Ротэра"} } "meta:Sakhalin"{ ld{"Сахалінскі летні час"} @@ -1793,7 +1796,7 @@ be{ ls{"Час Саламонавых астравоў"} } "meta:South_Georgia"{ - ls{"Час Паўднёвай Джорджыі"} + ls{"Час Паўднёвай Георгіі"} } "meta:Suriname"{ ls{"Час Сурынама"} @@ -1821,7 +1824,7 @@ be{ ls{"Стандартны час Тонга"} } "meta:Truk"{ - ls{"Час Чуук"} + ls{"Час Трука"} } "meta:Turkmenistan"{ ld{"Летні час Туркменістана"} @@ -1881,7 +1884,7 @@ be{ fallbackFormat{"{1} ({0})"} gmtFormat{"GMT{0}"} gmtZeroFormat{"GMT"} - hourFormat{"+HH.mm;-HH.mm"} + hourFormat{"+HH:mm;-HH:mm"} regionFormat{"Час: {0}"} regionFormatDaylight{"Летні час: {0}"} regionFormatStandard{"Стандартны час: {0}"} diff --git a/source/data/zone/bem.txt b/source/data/zone/bem.txt index 188761f..051eafb 100644 --- a/source/data/zone/bem.txt +++ b/source/data/zone/bem.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bem{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/bez.txt b/source/data/zone/bez.txt index f4a240d..0e7166b 100644 --- a/source/data/zone/bez.txt +++ b/source/data/zone/bez.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bez{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/bg.txt b/source/data/zone/bg.txt index d7706b3..a0e8ede 100644 --- a/source/data/zone/bg.txt +++ b/source/data/zone/bg.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bg{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Абиджан"} @@ -810,6 +810,9 @@ bg{ "Asia:Qatar"{ ec{"Катар"} } + "Asia:Qostanay"{ + ec{"Костанай"} + } "Asia:Qyzylorda"{ ec{"Къзълорда"} } diff --git a/source/data/zone/bm.txt b/source/data/zone/bm.txt index 4e497bb..d332367 100644 --- a/source/data/zone/bm.txt +++ b/source/data/zone/bm.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bm{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/bn.txt b/source/data/zone/bn.txt index e1b1c24..89a3c79 100644 --- a/source/data/zone/bn.txt +++ b/source/data/zone/bn.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bn{ - Version{"2.1.48.36"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"আবিদজান"} diff --git a/source/data/zone/bo.txt b/source/data/zone/bo.txt index 4a1385d..fdab0cb 100644 --- a/source/data/zone/bo.txt +++ b/source/data/zone/bo.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bo{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Etc:Unknown"{ ec{"མ་རྟོགས་པ"} diff --git a/source/data/zone/br.txt b/source/data/zone/br.txt index be88b92..7f754ea 100644 --- a/source/data/zone/br.txt +++ b/source/data/zone/br.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License br{ - Version{"2.1.48.86"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -369,6 +369,9 @@ br{ "Asia:Calcutta"{ ec{"Calcutta"} } + "Asia:Chita"{ + ec{"Tchita"} + } "Asia:Colombo"{ ec{"Kolamba"} } @@ -399,6 +402,9 @@ br{ "Asia:Kabul"{ ec{"Kaboul"} } + "Asia:Kamchatka"{ + ec{"Kamtchatka"} + } "Asia:Karachi"{ ec{"Karachi"} } @@ -540,6 +546,9 @@ br{ "Australia:Sydney"{ ec{"Sydney"} } + "Etc:UTC"{ + ls{"amzer hollvedel kenurzhiet"} + } "Etc:Unknown"{ ec{"kêr dianav"} } @@ -826,6 +835,11 @@ br{ lg{"eur an Amazon"} ls{"eur cʼhoañv an Amazon"} } + "meta:America_Central"{ + ld{"eur hañv ar Cʼhreiz"} + lg{"eur ar Cʼhreiz"} + ls{"eur cʼhoañv ar Cʼhreiz"} + } "meta:America_Eastern"{ ld{"eur hañv ar Reter"} lg{"eur ar Reter"} @@ -836,6 +850,11 @@ br{ lg{"eur ar Menezioù"} ls{"eur cʼhoañv ar Menezioù"} } + "meta:America_Pacific"{ + ld{"eur hañv an Habask"} + lg{"eur an Habask"} + ls{"eur cʼhoañv an Habask"} + } "meta:Anadyr"{ ld{"eur hañv Anadyrʼ"} lg{"eur Anadyrʼ"} @@ -866,6 +885,11 @@ br{ lg{"eur Armenia"} ls{"eur cʼhoañv Armenia"} } + "meta:Atlantic"{ + ld{"eur hañv an Atlantel"} + lg{"eur an Atlantel"} + ls{"eur cʼhoañv an Atlantel"} + } "meta:Australia_Central"{ ld{"eur hañv Kreizaostralia"} lg{"eur Kreizaostralia"} @@ -920,6 +944,9 @@ br{ lg{"eur ar Cʼhab-Glas"} ls{"eur cʼhoañv ar Cʼhab-Glas"} } + "meta:Chamorro"{ + ls{"eur Chamorro"} + } "meta:Chatham"{ ld{"eur hañv Chatham"} lg{"eur Chatham"} @@ -935,6 +962,11 @@ br{ lg{"eur Sina"} ls{"eur cʼhoañv Sina"} } + "meta:Choibalsan"{ + ld{"eur hañv Choibalsan"} + lg{"eur Choibalsan"} + ls{"eur cʼhoañv Choibalsan"} + } "meta:Christmas"{ ls{"eur Enez Christmas"} } @@ -956,6 +988,12 @@ br{ lg{"eur Kuba"} ls{"eur cʼhoañv Kuba"} } + "meta:Davis"{ + ls{"eur Davis"} + } + "meta:DumontDUrville"{ + ls{"eur Dumont-d’Urville"} + } "meta:East_Timor"{ ls{"eur Timor ar Reter"} } @@ -1005,13 +1043,16 @@ br{ ls{"eur Inizi Galápagos"} } "meta:Gambier"{ - ls{"eur Gambier"} + ls{"eur Inizi Gambier"} } "meta:Georgia"{ ld{"eur hañv Jorjia"} lg{"eur Jorjia"} ls{"eur cʼhoañv Jorjia"} } + "meta:Gilbert_Islands"{ + ls{"eur Inizi Gilbert"} + } "meta:Greenland_Eastern"{ ld{"eur hañv Greunland ar Reter"} lg{"eur Greunland ar Reter"} @@ -1036,12 +1077,23 @@ br{ lg{"eur Hong Kong"} ls{"eur cʼhoañv Hong Kong"} } + "meta:Hovd"{ + ld{"eur hañv Hovd"} + lg{"eur Hovd"} + ls{"eur cʼhoañv Hovd"} + } "meta:India"{ ls{"eur cʼhoañv India"} } + "meta:Indian_Ocean"{ + ls{"eur Meurvor Indez"} + } "meta:Indochina"{ ls{"eur Indez-Sina"} } + "meta:Indonesia_Central"{ + ls{"eur Kreiz Indonezia"} + } "meta:Indonesia_Eastern"{ ls{"eur Indonezia ar Reter"} } @@ -1079,12 +1131,23 @@ br{ lg{"eur Korea"} ls{"eur cʼhoañv Korea"} } + "meta:Kosrae"{ + ls{"eur Kosrae"} + } + "meta:Krasnoyarsk"{ + ld{"eur hañv Krasnoyarsk"} + lg{"eur Krasnoyarsk"} + ls{"eur cʼhoañv Krasnoyarsk"} + } "meta:Kyrgystan"{ ls{"eur Kyrgyzstan"} } "meta:Lanka"{ ls{"eur Sri Lanka"} } + "meta:Line_Islands"{ + ls{"eur Line Islands"} + } "meta:Macau"{ ld{"eur hañv Macau"} lg{"eur Macau"} @@ -1093,6 +1156,11 @@ br{ "meta:Macquarie"{ ls{"eur Enez Macquarie"} } + "meta:Magadan"{ + ld{"eur hañv Magadan"} + lg{"eur Magadan"} + ls{"eur cʼhoañv Magadan"} + } "meta:Malaysia"{ ls{"eur Malaysia"} } @@ -1110,6 +1178,9 @@ br{ lg{"eur Moris"} ls{"eur cʼhoañv Moris"} } + "meta:Mawson"{ + ls{"eur Mawson"} + } "meta:Mexico_Northwest"{ ld{"eur hañv Gwalarn Mecʼhiko"} lg{"eur Gwalarn Mecʼhiko"} @@ -1155,11 +1226,21 @@ br{ "meta:Norfolk"{ ls{"eur Enez Norfolk"} } + "meta:Noronha"{ + ld{"eur hañv Fernando de Noronha"} + lg{"eur Fernando de Noronha"} + ls{"eur cʼhoañv Fernando de Noronha"} + } "meta:Novosibirsk"{ ld{"eur hañv Novosibirsk"} lg{"eur Novosibirsk"} ls{"eur cʼhoañv Novosibirsk"} } + "meta:Omsk"{ + ld{"eur hañv Omsk"} + lg{"eur Omsk"} + ls{"eur cʼhoañv Omsk"} + } "meta:Pakistan"{ ld{"eur hañv Pakistan"} lg{"eur Pakistan"} @@ -1168,6 +1249,9 @@ br{ "meta:Palau"{ ls{"eur Palau"} } + "meta:Papua_New_Guinea"{ + ls{"eur Papoua-Ginea-Nevez"} + } "meta:Paraguay"{ ld{"eur hañv Paraguay"} lg{"eur Paraguay"} @@ -1183,6 +1267,9 @@ br{ lg{"eur ar Filipinez"} ls{"eur cʼhoañv ar Filipinez"} } + "meta:Phoenix_Islands"{ + ls{"eur Inizi Phoenix"} + } "meta:Pierre_Miquelon"{ ld{"eur hañv Sant-Pêr-ha-Mikelon"} lg{"eur Sant-Pêr-ha-Mikelon"} @@ -1191,9 +1278,15 @@ br{ "meta:Pitcairn"{ ls{"eur Pitcairn"} } + "meta:Pyongyang"{ + ls{"eur Pʼyongyang"} + } "meta:Reunion"{ ls{"eur ar Reünion"} } + "meta:Rothera"{ + ls{"eur Rothera"} + } "meta:Sakhalin"{ ld{"eur hañv Sakhalin"} lg{"eur Sakhalin"} @@ -1219,6 +1312,9 @@ br{ "meta:Suriname"{ ls{"eur Surinam"} } + "meta:Syowa"{ + ls{"eur Syowa"} + } "meta:Tahiti"{ ls{"eur Tahiti"} } @@ -1238,6 +1334,9 @@ br{ lg{"eur Tonga"} ls{"eur cʼhoañv Tonga"} } + "meta:Truk"{ + ls{"eur Chuuk"} + } "meta:Turkmenistan"{ ld{"eur hañv Turkmenistan"} lg{"eur Turkmenistan"} @@ -1274,6 +1373,12 @@ br{ lg{"eur Volgograd"} ls{"eur cʼhoañv Volgograd"} } + "meta:Vostok"{ + ls{"eur Vostok"} + } + "meta:Wake"{ + ls{"eur Wake Island"} + } "meta:Wallis"{ ls{"eur Wallis ha Futuna"} } diff --git a/source/data/zone/brx.txt b/source/data/zone/brx.txt index add97eb..0d5ed75 100644 --- a/source/data/zone/brx.txt +++ b/source/data/zone/brx.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License brx{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"अबिद्जान"} diff --git a/source/data/zone/bs.txt b/source/data/zone/bs.txt index c9b5656..0d7b391 100644 --- a/source/data/zone/bs.txt +++ b/source/data/zone/bs.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bs{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -661,7 +661,7 @@ bs{ ec{"AÅ¡habad"} } "Asia:Atyrau"{ - ec{"Atyrau"} + ec{"Atiraj"} } "Asia:Baghdad"{ ec{"Bagdad"} @@ -810,6 +810,9 @@ bs{ "Asia:Qatar"{ ec{"Katar"} } + "Asia:Qostanay"{ + ec{"Kostanaj"} + } "Asia:Qyzylorda"{ ec{"Kizilorda"} } diff --git a/source/data/zone/bs_Cyrl.txt b/source/data/zone/bs_Cyrl.txt index 8b7154e..71b4c48 100644 --- a/source/data/zone/bs_Cyrl.txt +++ b/source/data/zone/bs_Cyrl.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License bs_Cyrl{ %%Parent{"root"} - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Абиџан"} @@ -79,6 +79,9 @@ bs_Cyrl{ "Africa:Johannesburg"{ ec{"Јоханесбург"} } + "Africa:Juba"{ + ec{"Џуба"} + } "Africa:Kampala"{ ec{"Кампала"} } @@ -137,7 +140,7 @@ bs_Cyrl{ ec{"Нијамеј"} } "Africa:Nouakchott"{ - ec{"Навакшут"} + ec{"Нуакшот"} } "Africa:Ouagadougou"{ ec{"Уагадугу"} @@ -173,10 +176,10 @@ bs_Cyrl{ ec{"Арагвајана"} } "America:Argentina:La_Rioja"{ - ec{"Ла Риоја"} + ec{"Ла Риоха"} } "America:Argentina:Rio_Gallegos"{ - ec{"Рио Гелегос"} + ec{"Рио Гаљегос"} } "America:Argentina:Salta"{ ec{"Салта"} @@ -200,7 +203,10 @@ bs_Cyrl{ ec{"Асунсион"} } "America:Bahia"{ - ec{"Бахиа"} + ec{"Баија"} + } + "America:Bahia_Banderas"{ + ec{"Баија Бандерас"} } "America:Barbados"{ ec{"Барбадос"} @@ -251,10 +257,10 @@ bs_Cyrl{ ec{"Чикаго"} } "America:Chihuahua"{ - ec{"Чихуахуа"} + ec{"Чивава"} } "America:Coral_Harbour"{ - ec{"Корал Харбур"} + ec{"Атикокан"} } "America:Cordoba"{ ec{"Кордоба"} @@ -262,11 +268,14 @@ bs_Cyrl{ "America:Costa_Rica"{ ec{"Костарика"} } + "America:Creston"{ + ec{"Крестон"} + } "America:Cuiaba"{ ec{"Куиаба"} } "America:Curacao"{ - ec{"Кирасо"} + ec{"Курасао"} } "America:Danmarkshavn"{ ec{"Данмарксхаген"} @@ -295,6 +304,9 @@ bs_Cyrl{ "America:El_Salvador"{ ec{"Салвадор"} } + "America:Fort_Nelson"{ + ec{"Форт Нелсон"} + } "America:Fortaleza"{ ec{"Форталеза"} } @@ -302,7 +314,7 @@ bs_Cyrl{ ec{"Глејс Беј"} } "America:Godthab"{ - ec{"Готхаб"} + ec{"Нук"} } "America:Goose_Bay"{ ec{"Гус Беј"} @@ -344,7 +356,7 @@ bs_Cyrl{ ec{"Петерсбург, Индијана"} } "America:Indiana:Tell_City"{ - ec{"Тел Сити"} + ec{"Тел Сити, Индијана"} } "America:Indiana:Vevay"{ ec{"Вевај, Индијана"} @@ -368,7 +380,7 @@ bs_Cyrl{ ec{"Јамајка"} } "America:Jujuy"{ - ec{"Жужуи"} + ec{"Хухуј"} } "America:Juneau"{ ec{"Жуно"} @@ -376,6 +388,9 @@ bs_Cyrl{ "America:Kentucky:Monticello"{ ec{"Монтичело, Кентаки"} } + "America:Kralendijk"{ + ec{"Крелендијк"} + } "America:La_Paz"{ ec{"Ла Паз"} } @@ -386,7 +401,10 @@ bs_Cyrl{ ec{"Лос Анђелес"} } "America:Louisville"{ - ec{"Луивиле"} + ec{"Луисвил"} + } + "America:Lower_Princes"{ + ec{"Лоуер Принс Квортер"} } "America:Maceio"{ ec{"Масејо"} @@ -403,6 +421,9 @@ bs_Cyrl{ "America:Martinique"{ ec{"Мартиник"} } + "America:Matamoros"{ + ec{"Матаморос"} + } "America:Mazatlan"{ ec{"Мазатлан"} } @@ -415,6 +436,9 @@ bs_Cyrl{ "America:Merida"{ ec{"Мерида"} } + "America:Metlakatla"{ + ec{"Метлакатла"} + } "America:Mexico_City"{ ec{"Мексико Сити"} } @@ -455,7 +479,10 @@ bs_Cyrl{ ec{"Центар, Северна Дакота"} } "America:North_Dakota:New_Salem"{ - ec{"Нови Салем, Северна Даткоа"} + ec{"Нови Салем, Северна Дакота"} + } + "America:Ojinaga"{ + ec{"Охинага"} } "America:Panama"{ ec{"Панама"} @@ -464,7 +491,7 @@ bs_Cyrl{ ec{"Пангниртунг"} } "America:Paramaribo"{ - ec{"Парамирбо"} + ec{"Парамарибо"} } "America:Phoenix"{ ec{"Феникс"} @@ -479,7 +506,10 @@ bs_Cyrl{ ec{"Порто Вељо"} } "America:Puerto_Rico"{ - ec{"Порто Рико"} + ec{"Порторико"} + } + "America:Punta_Arenas"{ + ec{"Пунта Аренас"} } "America:Rainy_River"{ ec{"Рејни Ривер"} @@ -512,7 +542,10 @@ bs_Cyrl{ ec{"Сао Паоло"} } "America:Scoresbysund"{ - ec{"Скорезбисунд"} + ec{"Итокортормит"} + } + "America:Sitka"{ + ec{"Ситка"} } "America:St_Barthelemy"{ ec{"Св. Бартоломeј"} @@ -577,6 +610,9 @@ bs_Cyrl{ "Antarctica:DumontDUrville"{ ec{"Димон д’Урвил"} } + "Antarctica:Macquarie"{ + ec{"Меквори"} + } "Antarctica:Mawson"{ ec{"Мосон"} } @@ -592,6 +628,9 @@ bs_Cyrl{ "Antarctica:Syowa"{ ec{"Шова"} } + "Antarctica:Troll"{ + ec{"Трол"} + } "Antarctica:Vostok"{ ec{"Восток"} } @@ -619,6 +658,9 @@ bs_Cyrl{ "Asia:Ashgabat"{ ec{"Ашхабад"} } + "Asia:Atyrau"{ + ec{"Атирај"} + } "Asia:Baghdad"{ ec{"Багдад"} } @@ -631,6 +673,9 @@ bs_Cyrl{ "Asia:Bangkok"{ ec{"Банкок"} } + "Asia:Barnaul"{ + ec{"Барнаул"} + } "Asia:Beirut"{ ec{"Бејрут"} } @@ -643,6 +688,9 @@ bs_Cyrl{ "Asia:Calcutta"{ ec{"Калкута"} } + "Asia:Chita"{ + ec{"Чита"} + } "Asia:Choibalsan"{ ec{"Чојбалсан"} } @@ -664,9 +712,15 @@ bs_Cyrl{ "Asia:Dushanbe"{ ec{"Душанбе"} } + "Asia:Famagusta"{ + ec{"Фамагуста"} + } "Asia:Gaza"{ ec{"Газа"} } + "Asia:Hebron"{ + ec{"Хеброн"} + } "Asia:Hong_Kong"{ ec{"Хонг Конг"} } @@ -697,6 +751,9 @@ bs_Cyrl{ "Asia:Katmandu"{ ec{"Катманду"} } + "Asia:Khandyga"{ + ec{"Хандига"} + } "Asia:Krasnoyarsk"{ ec{"Краснојарск"} } @@ -727,6 +784,9 @@ bs_Cyrl{ "Asia:Nicosia"{ ec{"Никозија"} } + "Asia:Novokuznetsk"{ + ec{"Новокузњецк"} + } "Asia:Novosibirsk"{ ec{"Новосибирск"} } @@ -748,6 +808,9 @@ bs_Cyrl{ "Asia:Qatar"{ ec{"Катар"} } + "Asia:Qostanay"{ + ec{"Костанај"} + } "Asia:Qyzylorda"{ ec{"Кизилорда"} } @@ -775,6 +838,9 @@ bs_Cyrl{ "Asia:Singapore"{ ec{"Сингапур"} } + "Asia:Srednekolymsk"{ + ec{"Средњеколимск"} + } "Asia:Taipei"{ ec{"Тајпеј"} } @@ -793,12 +859,18 @@ bs_Cyrl{ "Asia:Tokyo"{ ec{"Токио"} } + "Asia:Tomsk"{ + ec{"Томск"} + } "Asia:Ulaanbaatar"{ ec{"Улан Батор"} } "Asia:Urumqi"{ ec{"Урумкви"} } + "Asia:Ust-Nera"{ + ec{"Уст-Нера"} + } "Asia:Vientiane"{ ec{"Вијентијан"} } @@ -830,7 +902,7 @@ bs_Cyrl{ ec{"Фарска острва"} } "Atlantic:Madeira"{ - ec{"Мадера"} + ec{"Мадеира"} } "Atlantic:Reykjavik"{ ec{"Рејкјавик"} @@ -880,6 +952,9 @@ bs_Cyrl{ "Australia:Sydney"{ ec{"Сиднеј"} } + "Etc:UTC"{ + ls{"Координисано универзално вријеме"} + } "Etc:Unknown"{ ec{"Непознат или неважећи град"} } @@ -889,6 +964,9 @@ bs_Cyrl{ "Europe:Andorra"{ ec{"Андора"} } + "Europe:Astrakhan"{ + ec{"Астрахан"} + } "Europe:Athens"{ ec{"Атина"} } @@ -910,6 +988,9 @@ bs_Cyrl{ "Europe:Budapest"{ ec{"Будимпешта"} } + "Europe:Busingen"{ + ec{"Бусинген"} + } "Europe:Chisinau"{ ec{"Кишињев"} } @@ -918,6 +999,7 @@ bs_Cyrl{ } "Europe:Dublin"{ ec{"Даблин"} + ld{"Ирско стандардно вријеме"} } "Europe:Gibraltar"{ ec{"Гибралтар"} @@ -929,7 +1011,7 @@ bs_Cyrl{ ec{"Хелсинки"} } "Europe:Isle_of_Man"{ - ec{"Острво Ман"} + ec{"Острво Мен"} } "Europe:Istanbul"{ ec{"Истанбул"} @@ -938,11 +1020,14 @@ bs_Cyrl{ ec{"Џерси"} } "Europe:Kaliningrad"{ - ec{"Калининград"} + ec{"Калињинград"} } "Europe:Kiev"{ ec{"Кијев"} } + "Europe:Kirov"{ + ec{"Киров"} + } "Europe:Lisbon"{ ec{"Лисабон"} } @@ -951,6 +1036,7 @@ bs_Cyrl{ } "Europe:London"{ ec{"Лондон"} + ld{"Британско љетње вријеме"} } "Europe:Luxembourg"{ ec{"Луксембург"} @@ -1000,8 +1086,11 @@ bs_Cyrl{ "Europe:Sarajevo"{ ec{"Сарајево"} } + "Europe:Saratov"{ + ec{"Саратов"} + } "Europe:Simferopol"{ - ec{"Симферопол"} + ec{"Симферопољ"} } "Europe:Skopje"{ ec{"Скопље"} @@ -1018,6 +1107,9 @@ bs_Cyrl{ "Europe:Tirane"{ ec{"Тирана"} } + "Europe:Ulyanovsk"{ + ec{"Уљановск"} + } "Europe:Uzhgorod"{ ec{"Ужгород"} } @@ -1087,6 +1179,9 @@ bs_Cyrl{ "Pacific:Auckland"{ ec{"Окланд"} } + "Pacific:Bougainville"{ + ec{"Бугенвил"} + } "Pacific:Chatham"{ ec{"Катхам"} } @@ -1163,7 +1258,7 @@ bs_Cyrl{ ec{"Палау"} } "Pacific:Pitcairn"{ - ec{"Питкаирн"} + ec{"Питкерн"} } "Pacific:Ponape"{ ec{"Понапе"} @@ -1200,24 +1295,27 @@ bs_Cyrl{ lg{"Акре време"} ls{"Акре стандардно време"} } + "meta:Afghanistan"{ + ls{"Авганистан вријеме"} + } "meta:Africa_Central"{ - ls{"Централно-афричко време"} + ls{"Централно-афричко вријеме"} } "meta:Africa_Eastern"{ - ls{"Источно-афричко време"} + ls{"Источно-афричко вријеме"} } "meta:Africa_Southern"{ - ls{"Јужно-афричко време"} + ls{"Јужно-афричко вријеме"} } "meta:Africa_Western"{ - ld{"Западно-афричко летње рачунање времена"} - lg{"Западно-афричко време"} - ls{"Западно-афричко стандардно време"} + ld{"Западно-афричко љетње рачунање времена"} + lg{"Западно-афричко вријеме"} + ls{"Западно-афричко стандардно вријеме"} } "meta:Alaska"{ - ld{"Аљашко летње време"} - lg{"Аљашко време"} - ls{"Аљашко стандардно време"} + ld{"Аљаска љетње вријеме"} + lg{"Аљаска вријеме"} + ls{"Аљаска стандардно вријеме"} } "meta:Almaty"{ ld{"Алмати летње рачунање времена"} @@ -1225,35 +1323,40 @@ bs_Cyrl{ ls{"Алмати стандардно време"} } "meta:Amazon"{ - ld{"Амазон летње рачунање времена"} - lg{"Амазон време"} - ls{"Амазон стандардно време"} + ld{"Амазон љетње рачунање времена"} + lg{"Амазон вријеме"} + ls{"Амазон стандардно вријеме"} } "meta:America_Central"{ - ld{"Централно летње рачунање времена"} - lg{"Централно време"} - ls{"Централно стандардно време"} + ld{"Централно љетње рачунање времена"} + lg{"Централно вријеме"} + ls{"Централно стандардно вријеме"} } "meta:America_Eastern"{ - ld{"Источно летње рачунање времена"} - lg{"Источно време"} - ls{"Источно стандардно време"} + ld{"Источно љетње рачунање времена"} + lg{"Источно вријеме"} + ls{"Источно стандардно вријеме"} } "meta:America_Mountain"{ - ld{"Планинско летње рачунање времена"} - lg{"Планинско време"} - ls{"Планинско стандардно време"} + ld{"Планинско љетње рачунање времена"} + lg{"Планинско вријеме"} + ls{"Планинско стандардно вријеме"} } "meta:America_Pacific"{ - ld{"Пацифичко летње рачунање времена"} - lg{"Пацифичко време"} - ls{"Пацифичко стандардно време"} + ld{"Пацифичко љетње рачунање времена"} + lg{"Пацифичко вријеме"} + ls{"Пацифичко стандардно вријеме"} } "meta:Anadyr"{ ld{"Анадир летње рачунање времена"} lg{"Анадир време"} ls{"Анадир стандардно време"} } + "meta:Apia"{ + ld{"Апија љетње рачунање времена"} + lg{"Апија вријеме"} + ls{"Апија стандардно вријеме"} + } "meta:Aqtau"{ ld{"Акватау летње рачунање времена"} lg{"Акватау време"} @@ -1265,264 +1368,267 @@ bs_Cyrl{ ls{"Акутобе стандардно време"} } "meta:Arabian"{ - ld{"Арабијско летње рачунање времена"} - lg{"Арабијско време"} - ls{"Арабијско стандардно време"} + ld{"Арабијско љетње рачунање времена"} + lg{"Арабијско вријеме"} + ls{"Арабијско стандардно вријеме"} } "meta:Argentina"{ - ld{"Аргентина летње рачунање времена"} - lg{"Аргентина време"} - ls{"Аргентина стандардно време"} + ld{"Аргентина љетње рачунање времена"} + lg{"Аргентина вријеме"} + ls{"Аргентина стандардно вријеме"} } "meta:Argentina_Western"{ - ld{"Западна Аргентина летње рачунање времена"} - lg{"Западна Аргентина време"} - ls{"Западна Аргентина стандардно време"} + ld{"Западна Аргентина љетње рачунање времена"} + lg{"Западна Аргентина вријеме"} + ls{"Западна Аргентина стандардно вријеме"} } "meta:Armenia"{ - ld{"Арменија летње рачунање времена"} - lg{"Арменија време"} - ls{"Арменија стандардно време"} + ld{"Арменија љетње рачунање времена"} + lg{"Арменија вријеме"} + ls{"Арменија стандардно вријеме"} } "meta:Atlantic"{ - ld{"Атланско лтње рачунање времена"} - lg{"Атланско време"} - ls{"Атланско стандардно време"} + ld{"Атланско љетње рачунање времена"} + lg{"Атланско вријеме"} + ls{"Атланско стандардно вријеме"} } "meta:Australia_Central"{ - ld{"Аустралијско централно летње рачунање времена"} - lg{"Аустралијско централно време"} - ls{"Аустралијско централно стандардно време"} + ld{"Аустралијско централно љетње рачунање времена"} + lg{"Аустралијско централно вријеме"} + ls{"Аустралијско централно стандардно вријеме"} } "meta:Australia_CentralWestern"{ - ld{"Аустралијско централно западно летње рачунање времена"} - lg{"Аустралијско централно западно време"} - ls{"Аустралијско централно западно стандардно време"} + ld{"Аустралијско централно западно љетње рачунање времена"} + lg{"Аустралијско централно западно вријеме"} + ls{"Аустралијско централно западно стандардно вријеме"} } "meta:Australia_Eastern"{ - ld{"Аустралијско источно летње рачунање времена"} - lg{"Аустралијско источно време"} - ls{"Аустралијско источно стандардно време"} + ld{"Аустралијско источно љетње рачунање времена"} + lg{"Аустралијско источно вријеме"} + ls{"Аустралијско источно стандардно вријеме"} } "meta:Australia_Western"{ - ld{"Аустралијско западно летње рачунање времена"} - lg{"Аустралијско западно време"} - ls{"Аустралијско западно стандардно време"} + ld{"Аустралијско западно љетње рачунање времена"} + lg{"Аустралијско западно вријеме"} + ls{"Аустралијско западно стандардно вријеме"} } "meta:Azerbaijan"{ - ld{"Азербејџан летње рачунање времена"} - lg{"Азербејџан време"} - ls{"Азербејџан стандардно време"} + ld{"Азербејџан љетње рачунање времена"} + lg{"Азербејџан вријеме"} + ls{"Азербејџан стандардно вријеме"} } "meta:Azores"{ - ld{"Азори летње рачунање времена"} - lg{"Азори време"} - ls{"Азори стандардно време"} + ld{"Азори љетње рачунање времена"} + lg{"Азори вријеме"} + ls{"Азори стандардно вријеме"} } "meta:Bangladesh"{ - ld{"Бангладеш летње рачунање времена"} - lg{"Бангладеш време"} - ls{"Бангладеш стандардно време"} + ld{"Бангладеш љетње рачунање времена"} + lg{"Бангладеш вријеме"} + ls{"Бангладеш стандардно вријеме"} } "meta:Bhutan"{ - ls{"Бутан време"} + ls{"Бутан вријеме"} } "meta:Bolivia"{ - ls{"Боливија време"} + ls{"Боливија вријеме"} } "meta:Brasilia"{ - ld{"Бразилија летње рачунање времена"} - lg{"Бразилија време"} - ls{"Бразилија стандардно време"} + ld{"Бразилија љетње рачунање времена"} + lg{"Бразилија вријеме"} + ls{"Бразилија стандардно вријеме"} } "meta:Brunei"{ - ls{"Брунеј Дарусалум време"} + ls{"Брунеј Дарусалам вријеме"} } "meta:Cape_Verde"{ - ld{"Зеленортско летње рачунање времена"} - lg{"Зелениртско време"} - ls{"Зелениртско стандардно време"} + ld{"Зеленортско љетње рачунање времена"} + lg{"Зеленортско вријеме"} + ls{"Зеленортско стандардно вријеме"} } "meta:Chamorro"{ - ls{"Чаморо време"} + ls{"Чаморо вријеме"} } "meta:Chatham"{ - ld{"Чатам летње рачунање времена"} - lg{"Чатам време"} - ls{"Чатам стандардно време"} + ld{"Чатам љетње рачунање времена"} + lg{"Чатам вријеме"} + ls{"Чатам стандардно вријеме"} } "meta:Chile"{ - ld{"Чиле летње рачунање времена"} - lg{"Чиле време"} - ls{"Чиле стандардно време"} + ld{"Чиле љетње рачунање времена"} + lg{"Чиле вријеме"} + ls{"Чиле стандардно вријеме"} } "meta:China"{ - ld{"Кина летње рачунање времена"} - lg{"Кина време"} - ls{"Кинеско стандардно време"} + ld{"Кина љетње рачунање времена"} + lg{"Кина вријеме"} + ls{"Кина стандардно вријеме"} } "meta:Choibalsan"{ - ld{"Чојбалсан летње рачунање времена"} - lg{"Чојбалсан време"} - ls{"Чојбалсан стандардно време"} + ld{"Чојбалсан љетње рачунање времена"} + lg{"Чојбалсан вријеме"} + ls{"Чојбалсан стандардно вријеме"} } "meta:Christmas"{ - ls{"Божићна острва време"} + ls{"Божићна острва вријеме"} } "meta:Cocos"{ - ls{"Кокос (Келинг) Острва време"} + ls{"Кокос (Келинг) Острва вријеме"} } "meta:Colombia"{ - ld{"Колумбија летње рачунање времена"} - lg{"Колумбија време"} - ls{"Колумбија стандардно време"} + ld{"Колумбија љетње рачунање времена"} + lg{"Колумбија вријеме"} + ls{"Колумбија стандардно вријеме"} } "meta:Cook"{ - ld{"Кукова острва полу-летње рачунање времена"} - lg{"Кукова острва време"} - ls{"Кукова острва стандардно време"} + ld{"Кукова острва полу-љетње рачунање времена"} + lg{"Кукова острва вријеме"} + ls{"Кукова острва стандардно вријеме"} } "meta:Cuba"{ - ld{"Куба летње рачунање времена"} - lg{"Куба време"} - ls{"Куба стандардно време"} + ld{"Куба љетње рачунање времена"} + lg{"Куба вријеме"} + ls{"Куба стандардно вријеме"} } "meta:Davis"{ - ls{"Дејвис време"} + ls{"Дејвис вријеме"} } "meta:DumontDUrville"{ - ls{"Димон д’Урвил време"} + ls{"Димон д’Урвил вријеме"} } "meta:East_Timor"{ - ls{"Источни тимор време"} + ls{"Тимор-Лесте вријеме"} } "meta:Easter"{ - ld{"Ускршња острва летње рачунање времена"} - lg{"Ускршња острва време"} - ls{"Ускршња острва стандардно време"} + ld{"Ускршња острва љетње рачунање времена"} + lg{"Ускршња острва вријеме"} + ls{"Ускршња острва стандардно вријеме"} } "meta:Ecuador"{ - ls{"Еквадор време"} + ls{"Еквадор вријеме"} } "meta:Europe_Central"{ - ld{"Средњеевропско летње рачунање времена"} - lg{"Средњеевропско време"} - ls{"Средњеевропско стандардно време"} + ld{"Средњеевропско љетње рачунање времена"} + lg{"Средњеевропско вријеме"} + ls{"Средњеевропско стандардно вријеме"} } "meta:Europe_Eastern"{ - ld{"Источноевропско летње рачунање времена"} - lg{"Источноевропско време"} - ls{"Источноевропско стандардно време"} + ld{"Источноевропско љетње рачунање времена"} + lg{"Источноевропско вријеме"} + ls{"Источноевропско стандардно вријеме"} + } + "meta:Europe_Further_Eastern"{ + ls{"Даље источноевропско вријеме"} } "meta:Europe_Western"{ - ld{"Западноевропско летње рачунање времена"} - lg{"Западноевропско време"} - ls{"Западноевропско стандардно време"} + ld{"Западноевропско љетње рачунање времена"} + lg{"Западноевропско вријеме"} + ls{"Западноевропско стандардно вријеме"} } "meta:Falkland"{ - ld{"Фолкландска Острва летње рачунање времена"} - lg{"Фолкландска Острва време"} - ls{"Фолкландска Острва стандардно време"} + ld{"Фолкландска Острва љетње рачунање времена"} + lg{"Фолкландска Острва вријеме"} + ls{"Фолкландска Острва стандардно вријеме"} } "meta:Fiji"{ - ld{"Фиџи летње рачунање времена"} - lg{"Фиџи време"} - ls{"Фиџи стандардно време"} + ld{"Фиџи љетње рачунање времена"} + lg{"Фиџи вријеме"} + ls{"Фиџи стандардно вријеме"} } "meta:French_Guiana"{ - ls{"Француска Гвајана време"} + ls{"Француска Гвајана вријеме"} } "meta:French_Southern"{ - ls{"Француско јужно и антарктичко време"} + ls{"Француско јужно и антарктичко вријеме"} } "meta:GMT"{ - ls{"Гринвич средње време"} + ls{"Гриничко средње вријеме"} } "meta:Galapagos"{ - ls{"Галапагос време"} + ls{"Галапагос вријеме"} } "meta:Gambier"{ - ls{"Гамбијер време"} + ls{"Гамбијер вријеме"} } "meta:Georgia"{ - ld{"Грузија летње рачунање времена"} - lg{"Грузија време"} - ls{"Грузија стандардно време"} + ld{"Грузија љетње рачунање времена"} + lg{"Грузија вријеме"} + ls{"Грузија стандардно вријеме"} } "meta:Gilbert_Islands"{ - ls{"Гилберт острва време"} + ls{"Гилберт острва вријеме"} } "meta:Greenland_Eastern"{ - ld{"Источни Гренланд летње рачунање времена"} - lg{"Источни Гренланд време"} - ls{"Источни Гренланд стандардно време"} + ld{"Источни Гренланд љетње рачунање времена"} + lg{"Источни Гренланд вријеме"} + ls{"Источни Гренланд стандардно вријеме"} } "meta:Greenland_Western"{ - ld{"Западни Гренланд летње рачунање времена"} - lg{"Западни Гренланд време"} - ls{"Западни Гренланд стандардно време"} + ld{"Западни Гренланд љетње рачунање времена"} + lg{"Западни Гренланд вријеме"} + ls{"Западни Гренланд стандардно вријеме"} } "meta:Guam"{ ls{"Гуам стандардно време"} } "meta:Gulf"{ - ls{"Залив време"} + ls{"Заливско вријеме"} } "meta:Guyana"{ - ls{"Гвајана време"} + ls{"Гвајана вријеме"} } "meta:Hawaii_Aleutian"{ - ld{"Хавајско-алеутско летње рачунање времена"} - lg{"Хавајско-алеутско време"} - ls{"Хавајско-алеутско стандардно време"} + ld{"Хавајско-алеутско љетње рачунање времена"} + lg{"Хавајско-алеутско вријеме"} + ls{"Хавајско-алеутско стандардно вријеме"} } "meta:Hong_Kong"{ - ld{"Хонгконшко летње рачунање времена"} - lg{"Хонг Конг време"} - ls{"Хонг Конг стандардно време"} + ld{"Хонгконшко љетње рачунање времена"} + lg{"Хонг Конг вријеме"} + ls{"Хонг Конг стандардно вријеме"} } "meta:Hovd"{ - ld{"Ховд летње рачунање времена"} - lg{"Ховд време"} - ls{"Ховд стандардно време"} + ld{"Ховд љетње рачунање времена"} + lg{"Ховд вријеме"} + ls{"Ховд стандардно вријеме"} } "meta:India"{ - ls{"Индијско стандардно време"} + ls{"Индијско стандардно вријеме"} } "meta:Indian_Ocean"{ - ls{"Индијско океанско време"} + ls{"Индијско океанско вријеме"} } "meta:Indochina"{ - ls{"Индокина време"} + ls{"Индокина вријеме"} } "meta:Indonesia_Central"{ - ls{"Централно-индонезијско време"} + ls{"Централно-индонезијско вријеме"} } "meta:Indonesia_Eastern"{ - ls{"Источно-индонезијско време"} + ls{"Источно-индонезијско вријеме"} } "meta:Indonesia_Western"{ - ls{"Западно-индонезијско време"} + ls{"Западно-индонезијско вријеме"} } "meta:Iran"{ - ld{"Иран летње рачунање времена"} - lg{"Иран време"} - ls{"Иран стандардно време"} + ld{"Иран љетње рачунање времена"} + lg{"Иран вријеме"} + ls{"Иран стандардно вријеме"} } "meta:Irkutsk"{ - ld{"Иркуцк летње рачунање времена"} - lg{"Иркуцк време"} - ls{"Иркуцк стандардно време"} + ld{"Иркуцк љетње рачунање времена"} + lg{"Иркуцк вријеме"} + ls{"Иркуцк стандардно вријеме"} } "meta:Israel"{ - ld{"Израелско летње рачунање времена"} - lg{"Израелско време"} - ls{"Израелско стандардно време"} + ld{"Израелско љетње рачунање времена"} + lg{"Израелско вријеме"} + ls{"Израелско стандардно вријеме"} } "meta:Japan"{ - ld{"Јапанско летње рачунање времена"} - lg{"Јапанско време"} - ls{"Јапанско стандардно време"} + ld{"Јапанско љетње рачунање времена"} + lg{"Јапанско вријеме"} + ls{"Јапанско стандардно вријеме"} } "meta:Kamchatka"{ ld{"Петропавловско-камчатско летње рачунање вемена"} @@ -1530,37 +1636,37 @@ bs_Cyrl{ ls{"Петропавловско-камчатско стандардно време"} } "meta:Kazakhstan_Eastern"{ - ls{"Источно-казахстанско време"} + ls{"Источно-казахстанско вријеме"} } "meta:Kazakhstan_Western"{ - ls{"Западно-казахстанско време"} + ls{"Западно-казахстанско вријеме"} } "meta:Korea"{ - ld{"Корејско летње рачунање времена"} - lg{"Кореја време"} - ls{"Корејско стандардно време"} + ld{"Корејско љетње рачунање времена"} + lg{"Корејско вријеме"} + ls{"Корејско стандардно вријеме"} } "meta:Kosrae"{ - ls{"Кошре време"} + ls{"Кошре вријеме"} } "meta:Krasnoyarsk"{ - ld{"Краснојарск летње рачунање времена"} - lg{"Краснојарск време"} - ls{"Краснојарск стандардно време"} + ld{"Краснојарск љетње рачунање времена"} + lg{"Краснојарско вријеме"} + ls{"Краснојарск стандардно вријеме"} } "meta:Kyrgystan"{ - ls{"Киргизстан време"} + ls{"Киргистан вријеме"} } "meta:Lanka"{ ls{"Шри Ланка време"} } "meta:Line_Islands"{ - ls{"Лине Острва време"} + ls{"Лине Острва вријеме"} } "meta:Lord_Howe"{ - ld{"Лорд Хов летње рачунање времена"} - lg{"Лорд Хов време"} - ls{"Лорд Хов стандардно време"} + ld{"Лорд Хов љетње рачунање времена"} + lg{"Лорд Хов вријеме"} + ls{"Лорд Хов стандардно вријеме"} } "meta:Macau"{ ld{"Макао летње рачунање вемена"} @@ -1568,127 +1674,143 @@ bs_Cyrl{ ls{"Макао стандардно време"} } "meta:Macquarie"{ - ls{"Макверијско време"} + ls{"Макверијско вријеме"} } "meta:Magadan"{ - ld{"Магадан летње рачунање вемена"} - lg{"Магадан време"} - ls{"Магадан стандардно време"} + ld{"Магадан љетње рачунање вемена"} + lg{"Магадан вријеме"} + ls{"Магадан стандардно вријеме"} } "meta:Malaysia"{ - ls{"Малезија време"} + ls{"Малезија вријеме"} } "meta:Maldives"{ - ls{"Малдиви време"} + ls{"Малдиви вријеме"} } "meta:Marquesas"{ - ls{"Маркиз време"} + ls{"Маркиз вријеме"} } "meta:Marshall_Islands"{ - ls{"Маршалска Острва време"} + ls{"Маршалска Острва вријеме"} } "meta:Mauritius"{ - ld{"Маурицијус летње рачунање времена"} - lg{"Маурицијус време"} - ls{"Маурицијус стандардно време"} + ld{"Маурицијус љетње рачунање времена"} + lg{"Маурицијус вријеме"} + ls{"Маурицијус стандардно вријеме"} } "meta:Mawson"{ - ls{"Мосон време"} + ls{"Мосон вријеме"} + } + "meta:Mexico_Northwest"{ + ld{"Сјеверномексичко љетње рачунање времена"} + lg{"Сјеверномексичко вријеме"} + ls{"Сјеверномексичко стандардно вријеме"} + } + "meta:Mexico_Pacific"{ + ld{"Мексичко пацифичко љетње рачунање времена"} + lg{"Мексичко пацифичко вријеме"} + ls{"Мексичко пацифичко стандардно вријеме"} } "meta:Mongolia"{ - ld{"Улан Батор летње рачунање времена"} - lg{"Улан Батор време"} - ls{"Улан Батор стандардно време"} + ld{"Улан Батор љетње рачунање времена"} + lg{"Улан Батор вријеме"} + ls{"Улан Батор стандардно вријеме"} } "meta:Moscow"{ - ld{"Москва летње рачунање времена"} - lg{"Москва време"} - ls{"Москва стандардно време"} + ld{"Москва љетње рачунање времена"} + lg{"Москва вријеме"} + ls{"Москва стандардно вријеме"} } "meta:Myanmar"{ - ls{"Мијанмар време"} + ls{"Мијанмар вријеме"} } "meta:Nauru"{ - ls{"Науру време"} + ls{"Науру вријеме"} } "meta:Nepal"{ - ls{"Непал време"} + ls{"Непал вријеме"} } "meta:New_Caledonia"{ - ld{"Нова Каледонија летње рачунање времена"} - lg{"Нова Каледонија време"} - ls{"Нова Каледонија стандардно време"} + ld{"Нова Каледонија љетње рачунање времена"} + lg{"Нова Каледонија вријеме"} + ls{"Нова Каледонија стандардно вријеме"} } "meta:New_Zealand"{ - ld{"Нови Зеланд летње рачунање времена"} - lg{"Нови Зеланд време"} - ls{"Нови Зеланд стандардно време"} + ld{"Нови Зеланд љетње рачунање времена"} + lg{"Нови Зеланд вријеме"} + ls{"Нови Зеланд стандардно вријеме"} } "meta:Newfoundland"{ - ld{"Њуфаундленд летње рачунање времена"} - lg{"Њуфаундленд време"} - ls{"Њуфаундленд стандардно време"} + ld{"Њуфаундленд љетње рачунање времена"} + lg{"Њуфаундленд вријеме"} + ls{"Њуфаундленд стандардно вријеме"} } "meta:Niue"{ - ls{"Ниуе време"} + ls{"Ниуе вријеме"} } "meta:Norfolk"{ - ls{"Норфолк Острво време"} + ls{"Норфолк Острво вријеме"} } "meta:Noronha"{ - ld{"Фернандо де Нороња летње рачунање времена"} - lg{"Фернандо де Нороња време"} - ls{"Фернандо де Нороња стандардно време"} + ld{"Фернандо де Нороња љетње рачунање времена"} + lg{"Фернандо де Нороња вријеме"} + ls{"Фернандо де Нороња стандардно вријеме"} } "meta:North_Mariana"{ ls{"Северна Маријанска Острва време"} } "meta:Novosibirsk"{ - ld{"Новосибирск летње рачунање времена"} - lg{"Новосибирск време"} - ls{"Новосибирск стандардно време"} + ld{"Новосибирск љетње рачунање времена"} + lg{"Новосибирско вријеме"} + ls{"Новосибирск стандардно вријеме"} } "meta:Omsk"{ - ld{"Омск летње рачунање времена"} - lg{"Омск време"} - ls{"Омск стандардно време"} + ld{"Омск љетње рачунање времена"} + lg{"Омск вријеме"} + ls{"Омск стандардно вријеме"} } "meta:Pakistan"{ - ld{"Пакистан летње рачунање времена"} - lg{"Пакистан време"} - ls{"Пакистан стандардно време"} + ld{"Пакистан љетње рачунање времена"} + lg{"Пакистан вријеме"} + ls{"Пакистан стандардно вријеме"} + } + "meta:Palau"{ + ls{"Палау вријеме"} } "meta:Papua_New_Guinea"{ - ls{"Папуа Нова Гвинеја време"} + ls{"Папуа Нова Гвинеја вријеме"} } "meta:Paraguay"{ - ld{"Парагвај летње рачунање времена"} - lg{"Парагвај време"} - ls{"Парагвај стандардно време"} + ld{"Парагвај љетње рачунање времена"} + lg{"Парагвај вријеме"} + ls{"Парагвај стандардно вријеме"} } "meta:Peru"{ - ld{"Перу летње рачунање времена"} - lg{"Перу време"} - ls{"Перу стандардно време"} + ld{"Перу љетње рачунање времена"} + lg{"Перу вријеме"} + ls{"Перу стандардно вријеме"} } "meta:Philippines"{ - ld{"Филипини летње рачунање времена"} - lg{"Филипини време"} - ls{"Филипини стандардно време"} + ld{"Филипини љетње рачунање времена"} + lg{"Филипини вријеме"} + ls{"Филипини стандардно вријеме"} } "meta:Phoenix_Islands"{ - ls{"Феникс острва време"} + ls{"Феникс острва вријеме"} } "meta:Pierre_Miquelon"{ - ld{"Сен Пјер и Микелон летње рачунање вемена"} - lg{"Сен Пјер и Микелон време"} - ls{"Сен Пјер и Микелон стандардно време"} + ld{"Сен Пјер и Микелон љетње рачунање вемена"} + lg{"Сен Пјер и Микелон вријеме"} + ls{"Сен Пјер и Микелон стандардно вријеме"} } "meta:Pitcairn"{ - ls{"Питкерн време"} + ls{"Питкерн вријеме"} } "meta:Ponape"{ - ls{"Понапе време"} + ls{"Понапе вријеме"} + } + "meta:Pyongyang"{ + ls{"Пјонгјанг вријеме"} } "meta:Qyzylorda"{ ld{"Кизилорда летње рачунање времена"} @@ -1696,15 +1818,15 @@ bs_Cyrl{ ls{"Кизилорда стандардно време"} } "meta:Reunion"{ - ls{"Реинион време"} + ls{"Реинион вријеме"} } "meta:Rothera"{ - ls{"Ротера време"} + ls{"Ротера вријеме"} } "meta:Sakhalin"{ - ld{"Сахалин летње рачунање времена"} - lg{"Сахалин време"} - ls{"Сахалин стандардно време"} + ld{"Сахалин љетње рачунање времена"} + lg{"Сахалин вријеме"} + ls{"Сахалин стандардно вријеме"} } "meta:Samara"{ ld{"Самара летње рачунање времена"} @@ -1712,108 +1834,107 @@ bs_Cyrl{ ls{"Самара стандардно време"} } "meta:Samoa"{ - ld{"Самоа летње рачунање времена"} - lg{"Самоа време"} - ls{"Самоа стандардно време"} + ld{"Самоа љетње рачунање времена"} + lg{"Самоа вријеме"} + ls{"Самоа стандардно вријеме"} } "meta:Seychelles"{ - ls{"Сејшели време"} + ls{"Сејшели вријеме"} } "meta:Singapore"{ - ls{"Сингапур стандардно време"} + ls{"Сингапур стандардно вријеме"} } "meta:Solomon"{ - ls{"Соломонска Острва време"} + ls{"Соломонска Острва вријеме"} } "meta:South_Georgia"{ - ls{"Јужна Џорџија време"} + ls{"Јужна Џорџија вријеме"} } "meta:Suriname"{ - ls{"Суринам време"} + ls{"Суринам вријеме"} } "meta:Syowa"{ - ls{"Шова време"} + ls{"Шова вријеме"} } "meta:Tahiti"{ - ls{"Тахити време"} + ls{"Тахити вријеме"} } "meta:Taipei"{ - ld{"Таипеи летње рачунање времена"} - lg{"Таипеи време"} - ls{"Таипеи стандардно веме"} + ld{"Тајпеј љетње рачунање времена"} + lg{"Тајпеј вријеме"} + ls{"Тајпеј стандардно вријеме"} } "meta:Tajikistan"{ - ls{"Таџикистан време"} + ls{"Таџикистан вријеме"} } "meta:Tokelau"{ - ls{"Токелау време"} + ls{"Токелау вријеме"} } "meta:Tonga"{ - ld{"Тонга летње рачунање времена"} - lg{"Тонга време"} - ls{"Тонга стандардно време"} + ld{"Тонга љетње рачунање времена"} + lg{"Тонга вријеме"} + ls{"Тонга стандардно вријеме"} } "meta:Truk"{ - ls{"Трук време"} + ls{"Трук вријеме"} } "meta:Turkmenistan"{ - ld{"Туркменистан летње рачунање времена"} - lg{"Туркменистан време"} - ls{"Туркменистан стандардно време"} + ld{"Туркменистан љетње рачунање времена"} + lg{"Туркменистан вријеме"} + ls{"Туркменистан стандардно вријеме"} } "meta:Tuvalu"{ - ls{"Тувалу време"} + ls{"Тувалу вријеме"} } "meta:Uruguay"{ - ld{"Уругвај летње рачунање времена"} - lg{"Уругвај време"} - ls{"Уругвај стандардно време"} + ld{"Уругвај љетње рачунање времена"} + lg{"Уругвај вријеме"} + ls{"Уругвај стандардно вријеме"} } "meta:Uzbekistan"{ - ld{"Узбекистан летње рачунање времена"} - lg{"Узбекистан време"} - ls{"Узбекистан стандардно време"} + ld{"Узбекистан љетње рачунање времена"} + lg{"Узбекистан вријеме"} + ls{"Узбекистан стандардно вријеме"} } "meta:Vanuatu"{ - ld{"Вануату летње рачунање времена"} - lg{"Вануату време"} - ls{"Вануату стандардно време"} + ld{"Вануату љетње рачунање времена"} + lg{"Вануату вријеме"} + ls{"Вануату стандардно вријеме"} } "meta:Venezuela"{ - ls{"Венецуела време"} + ls{"Венецуела вријеме"} } "meta:Vladivostok"{ - ld{"Владивосток летње рачунање времена"} - lg{"Владивосток време"} - ls{"Владивосток стандардно време"} + ld{"Владивосток љетње рачунање времена"} + lg{"Владивосток вријеме"} + ls{"Владивосток стандардно вријеме"} } "meta:Volgograd"{ - ld{"Волгоград летње рачунање времена"} - lg{"Волгоград време"} - ls{"Волгоград стандардно време"} + ld{"Волгоград љетње рачунање времена"} + lg{"Волгоград вријеме"} + ls{"Волгоград стандардно вријеме"} } "meta:Vostok"{ - ls{"Восток време"} + ls{"Восток вријеме"} } "meta:Wake"{ - ls{"Вејк острво време"} + ls{"Вејк острво вријеме"} } "meta:Wallis"{ - ls{"Валис и Футуна Острва време"} + ls{"Валис и Футуна Острва вријеме"} } "meta:Yakutsk"{ - ld{"Јакутск летње рачунање времена"} - lg{"Јакутск време"} - ls{"Јакутск стандардно време"} + ld{"Јакутск љетње рачунање времена"} + lg{"Јакутск вријеме"} + ls{"Јакутск стандардно вријеме"} } "meta:Yekaterinburg"{ - ld{"Јекатеринбург летње рачунање времена"} - lg{"Јекатеринбург време"} - ls{"Јекатеринбург стандардно време"} + ld{"Јекатеринбург љетње рачунање времена"} + lg{"Јекатеринбург вријеме"} + ls{"Јекатеринбург стандардно вријеме"} } fallbackFormat{"{1} ({0})"} gmtFormat{"GMT{0}"} - hourFormat{"+HHmm;-HHmm"} - regionFormat{"Време у земљи: {0}"} + regionFormat{"Време: {0}"} } } diff --git a/source/data/zone/bs_Latn.txt b/source/data/zone/bs_Latn.txt index a464369..40dd443 100644 --- a/source/data/zone/bs_Latn.txt +++ b/source/data/zone/bs_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License bs_Latn{ - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/ca.txt b/source/data/zone/ca.txt index 4610711..f0bb928 100644 --- a/source/data/zone/ca.txt +++ b/source/data/zone/ca.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ca{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -64,7 +64,7 @@ ca{ ec{"Douala"} } "Africa:El_Aaiun"{ - ec{"Al-aaiun"} + ec{"Al-Aaiun"} } "Africa:Freetown"{ ec{"Freetown"} @@ -850,7 +850,7 @@ ca{ ec{"Taixkent"} } "Asia:Tbilisi"{ - ec{"Tbilisi"} + ec{"Tbilissi"} } "Asia:Tehran"{ ec{"Teheran"} @@ -883,7 +883,7 @@ ca{ ec{"Jakutsk"} } "Asia:Yekaterinburg"{ - ec{"Jekaterinburg"} + ec{"Iekaterinburg"} } "Asia:Yerevan"{ ec{"Erevan"} @@ -1551,14 +1551,14 @@ ca{ ls{"Hora de les illes Gilbert"} } "meta:Greenland_Eastern"{ - ld{"Hora d’estiu de l’Est de Grenlàndia"} - lg{"Hora de l’Est de Grenlàndia"} - ls{"Hora estàndard de l’Est de Grenlàndia"} + ld{"Hora d’estiu de l’Est de Groenlàndia"} + lg{"Hora de l’Est de Groenlàndia"} + ls{"Hora estàndard de l’Est de Groenlàndia"} } "meta:Greenland_Western"{ - ld{"Hora d’estiu de l’Oest de Grenlàndia"} - lg{"Hora de l’Oest de Grenlàndia"} - ls{"Hora estàndard de l’Oest de Grenlàndia"} + ld{"Hora d’estiu de l’Oest de Groenlàndia"} + lg{"Hora de l’Oest de Groenlàndia"} + ls{"Hora estàndard de l’Oest de Groenlàndia"} } "meta:Gulf"{ ls{"Hora del Golf"} @@ -1743,9 +1743,9 @@ ca{ ls{"Hora estàndard de Fernando de Noronha"} } "meta:Novosibirsk"{ - ld{"Hora d’estiu de Novosibirsk"} - lg{"Hora de Novosibirsk"} - ls{"Hora estàndard de Novosibirsk"} + ld{"Hora d’estiu de Novossibirsk"} + lg{"Hora de Novossibirsk"} + ls{"Hora estàndard de Novossibirsk"} } "meta:Omsk"{ ld{"Hora d’estiu d’Omsk"} diff --git a/source/data/zone/ccp.txt b/source/data/zone/ccp.txt index c0a6a47..94ea4d9 100644 --- a/source/data/zone/ccp.txt +++ b/source/data/zone/ccp.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ccp{ - Version{"2.1.48.88"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"𑄃𑄝𑄨𑄘𑄴𑄎𑄚𑄴"} diff --git a/source/data/zone/ce.txt b/source/data/zone/ce.txt index 1f8b501..771094b 100644 --- a/source/data/zone/ce.txt +++ b/source/data/zone/ce.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ce{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Абиджан"} diff --git a/source/data/zone/ceb.txt b/source/data/zone/ceb.txt index bfd6ac5..b6f4281 100644 --- a/source/data/zone/ceb.txt +++ b/source/data/zone/ceb.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ceb{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Etc:UTC"{ ls{"Koordinado nga Unibersohanong Oras"} @@ -9,6 +9,39 @@ ceb{ "Etc:Unknown"{ ec{"Wala Mailhing Siyudad"} } + "Europe:Dublin"{ + ld{"Tamdanang Oras sa Irish"} + } + "Europe:London"{ + ld{"Oras sa Tag-init sa British"} + } + "meta:Afghanistan"{ + ls{"Oras sa Afghanistan"} + } + "meta:Africa_Central"{ + ls{"Oras sa Central Africa"} + } + "meta:Africa_Eastern"{ + ls{"Oras sa East Africa"} + } + "meta:Africa_Southern"{ + ls{"Tamdanang Oras sa South Africa"} + } + "meta:Africa_Western"{ + ld{"Oras sa Tag-init sa West Africa"} + lg{"Oras sa West Africa"} + ls{"Tamdanang Oras sa West Africa"} + } + "meta:Alaska"{ + ld{"Oras sa Adlawan sa Alaska"} + lg{"Oras sa Alaska"} + ls{"Tamdanang Oras sa Alaska"} + } + "meta:Amazon"{ + ld{"Oras sa Tag-init sa Amazon"} + lg{"Oras sa Amazon"} + ls{"Tamdanang Oras sa Amazon"} + } "meta:America_Central"{ ld{"Taliwala sa Kahayag sa Adlawng Oras Norte Amerika"} lg{"Taliwala nga Oras Norte Amerika"} @@ -29,11 +62,151 @@ ceb{ lg{"Norte Amerika Oras sa Pasipiko"} ls{"Norte Amerika Sukdanang Oras sa Pasipiko"} } + "meta:Apia"{ + ld{"Oras sa Adlawan sa Apia"} + lg{"Oras sa Apia"} + ls{"Tamdanang Oras sa Apia"} + } + "meta:Arabian"{ + ld{"Oras sa Adlawan sa Arabia"} + lg{"Oras sa Arabia"} + ls{"Tamdanang Oras sa Arabia"} + } + "meta:Argentina"{ + ld{"Oras sa Tag-init sa Argentina"} + lg{"Oras sa Argentina"} + ls{"Tamdanang Oras sa Argentina"} + } + "meta:Argentina_Western"{ + ld{"Oras sa Tag-init sa Western Argentina"} + lg{"Oras sa Western Argentina"} + ls{"Tamdanang Oras sa Western Argentina"} + } + "meta:Armenia"{ + ld{"Oras sa Tag-init sa Armenia"} + lg{"Oras sa Armenia"} + ls{"Tamdanang Oras sa Armenia"} + } "meta:Atlantic"{ ld{"Norte Amerika Oras sa Kahayag sa Adlaw sa Atlantiko"} lg{"Norte Amerika Oras sa Atlantiko"} ls{"Norte Amerika Sukdanang Oras sa Atlantiko"} } + "meta:Australia_Central"{ + ld{"Oras sa Adlawan sa Central Australia"} + lg{"Oras sa Central Australia"} + ls{"Tamdanang Oras sa Central Australia"} + } + "meta:Australia_CentralWestern"{ + ld{"Oras sa Adlawan sa Central Western Australia"} + lg{"Oras sa Central Western Australia"} + ls{"Tamdanang Oras sa Central Western Australia"} + } + "meta:Australia_Eastern"{ + ld{"Oras sa Adlawan sa Eastern Australia"} + lg{"Oras sa Eastern Australia"} + ls{"Tamdanang Oras sa Eastern Australia"} + } + "meta:Australia_Western"{ + ld{"Oras sa Adlawan sa Western Australia"} + lg{"Oras sa Western Australia"} + ls{"Tamdanang Oras sa Western Australia"} + } + "meta:Azerbaijan"{ + ld{"Oras sa Tag-init sa Azerbaijan"} + lg{"Oras sa Azerbaijan"} + ls{"Tamdanang Oras sa Azerbaijan"} + } + "meta:Azores"{ + ld{"Oras sa Tag-init sa Azores"} + lg{"Oras sa Azores"} + ls{"Tamdanang Oras sa Azores"} + } + "meta:Bangladesh"{ + ld{"Oras sa Tag-init sa Bangladesh"} + lg{"Oras sa Bangladesh"} + ls{"Tamdanang Oras sa Bangladesh"} + } + "meta:Bhutan"{ + ls{"Oras sa Bhutan"} + } + "meta:Bolivia"{ + ls{"Oras sa Bolivia"} + } + "meta:Brasilia"{ + ld{"Oras sa Tag-init sa Brasilia"} + lg{"Oras sa Brasilia"} + ls{"Tamdanang Oras sa Brasilia"} + } + "meta:Brunei"{ + ls{"Oras sa Brunei Darussalam"} + } + "meta:Cape_Verde"{ + ld{"Oras sa Tag-init sa Cape Verde"} + lg{"Oras sa Cape Verde"} + ls{"Tamdanang Oras sa Cape Verde"} + } + "meta:Chamorro"{ + ls{"Tamdanang Oras sa Chamorro"} + } + "meta:Chatham"{ + ld{"Oras sa Adlawan sa Chatham"} + lg{"Oras sa Chatham"} + ls{"Tamdanang Oras sa Chatham"} + } + "meta:Chile"{ + ld{"Oras sa Tag-init sa Chile"} + lg{"Oras sa Chile"} + ls{"Tamdanang Oras sa Chile"} + } + "meta:China"{ + ld{"Oras sa Adlawan sa China"} + lg{"Oras sa China"} + ls{"Tamdanang Oras sa China"} + } + "meta:Choibalsan"{ + ld{"Oras sa Tag-init sa Choibalsan"} + lg{"Oras sa Choibalsan"} + ls{"Tamdanang Oras sa Choibalsan"} + } + "meta:Christmas"{ + ls{"Oras sa Christmas Island"} + } + "meta:Cocos"{ + ls{"Oras sa Cocos Islands"} + } + "meta:Colombia"{ + ld{"Oras sa Tag-init sa Colombia"} + lg{"Oras sa Colombia"} + ls{"Tamdanang Oras sa Colombia"} + } + "meta:Cook"{ + ld{"Katungang Oras sa Tag-init sa Cook Islands"} + lg{"Oras sa Cook Islands"} + ls{"Tamdanang Oras sa Cook Islands"} + } + "meta:Cuba"{ + ld{"Oras sa Adlawan sa Cuba"} + lg{"Oras sa Cuba"} + ls{"Tamdanang Oras sa Cuba"} + } + "meta:Davis"{ + ls{"Oras sa Davis"} + } + "meta:DumontDUrville"{ + ls{"Oras sa Dumont-d’Urville"} + } + "meta:East_Timor"{ + ls{"Oras sa East Timor"} + } + "meta:Easter"{ + ld{"Oras sa Tag-init sa Easter Island"} + lg{"Oras sa Easter Island"} + ls{"Tamdanang Oras sa Easter Island"} + } + "meta:Ecuador"{ + ls{"Oras sa Ecuador"} + } "meta:Europe_Central"{ ld{"Oras sa Europa Taliwala sa Adlaw sa Tag-init"} lg{"Oras sa Europa sa Taliwala sa Adlaw"} @@ -44,14 +217,393 @@ ceb{ lg{"Oras sa Taga-Oryente sa Europa"} ls{"Sukdanang Oras sa Taga-Oryente sa Europa"} } + "meta:Europe_Further_Eastern"{ + ls{"Oras sa Further-eastern Europe"} + } "meta:Europe_Western"{ ld{"Oras sa Kasadpanon sa Europa sa Tag-init"} lg{"Oras sa Kasadpanon sa Europa"} ls{"Sukadanang Oras sa Kasadpanon sa Europa"} } + "meta:Falkland"{ + ld{"Oras sa Tag-init sa Falkland Islands"} + lg{"Oras sa Falkland Islands"} + ls{"Tamdanang Oras sa Falkland Islands"} + } + "meta:Fiji"{ + ld{"Oras sa Tag-init sa Fiji"} + lg{"Oras sa Fiji"} + ls{"Tamdanang Oras sa Fiji"} + } + "meta:French_Guiana"{ + ls{"Oras sa French Guiana"} + } + "meta:French_Southern"{ + ls{"Oras sa French Southern ug Antarctic"} + } "meta:GMT"{ ls{"Kasarangang Oras sa Greenwich"} } + "meta:Galapagos"{ + ls{"Oras sa Galapagos"} + } + "meta:Gambier"{ + ls{"Oras sa Gambier"} + } + "meta:Georgia"{ + ld{"Oras sa Tag-init sa Georgia"} + lg{"Oras sa Georgia"} + ls{"Tamdanang Oras sa Georgia"} + } + "meta:Gilbert_Islands"{ + ls{"Oras sa Gilbert Islands"} + } + "meta:Greenland_Eastern"{ + ld{"Oras sa Tag-init sa East Greenland"} + lg{"Oras sa East Greenland"} + ls{"Tamdanang Oras sa East Greenland"} + } + "meta:Greenland_Western"{ + ld{"Oras sa Tag-init sa West Greenland"} + lg{"Oras sa West Greenland"} + ls{"Tamdanang Oras sa West Greenland"} + } + "meta:Gulf"{ + ls{"Tamdanang Oras sa Gulf"} + } + "meta:Guyana"{ + ls{"Oras sa Guyana"} + } + "meta:Hawaii_Aleutian"{ + ld{"Oras sa Adlawan sa Hawaii-Aleutian"} + lg{"Oras sa Hawaii-Aleutian"} + ls{"Tamdanang Oras sa Hawaii-Aleutian"} + } + "meta:Hong_Kong"{ + ld{"Oras sa Tag-init sa Hong Kong"} + lg{"Oras sa Hong Kong"} + ls{"Tamdanang Oras sa Hong Kong"} + } + "meta:Hovd"{ + ld{"Oras sa Tag-init sa Hovd"} + lg{"Oras sa Hovd"} + ls{"Tamdanang Oras sa Hovd"} + } + "meta:India"{ + ls{"Tamdanang Oras sa India"} + } + "meta:Indian_Ocean"{ + ls{"Oras sa Indian Ocean"} + } + "meta:Indochina"{ + ls{"Oras sa Indochina"} + } + "meta:Indonesia_Central"{ + ls{"Oras sa Central Indonesia"} + } + "meta:Indonesia_Eastern"{ + ls{"Oras sa Eastern Indonesia"} + } + "meta:Indonesia_Western"{ + ls{"Oras sa Western Indonesia"} + } + "meta:Iran"{ + ld{"Oras sa Adlawan sa Iran"} + lg{"Oras sa Iran"} + ls{"Tamdanang Oras sa Iran"} + } + "meta:Irkutsk"{ + ld{"Oras sa Tag-init sa Irkutsk"} + lg{"Oras sa Irkutsk"} + ls{"Tamdanang Oras sa Irkutsk"} + } + "meta:Israel"{ + ld{"Oras sa Adlawan sa Israel"} + lg{"Oras sa Israel"} + ls{"Tamdanang Oras sa Israel"} + } + "meta:Japan"{ + ld{"Oras sa Adlawan sa Japan"} + lg{"Oras sa Japan"} + ls{"Tamdanang Oras sa Japan"} + } + "meta:Kazakhstan_Eastern"{ + ls{"Oras sa East Kazakhstan"} + } + "meta:Kazakhstan_Western"{ + ls{"Oras sa West Kazakhstan"} + } + "meta:Korea"{ + ld{"Oras sa Adlawan sa Korea"} + lg{"Oras sa Korea"} + ls{"Tamdanang Oras sa Korea"} + } + "meta:Kosrae"{ + ls{"Oras sa Kosrae"} + } + "meta:Krasnoyarsk"{ + ld{"Oras sa Tag-init sa Krasnoyarsk"} + lg{"Oras sa Krasnoyarsk"} + ls{"Tamdanang Oras sa Krasnoyarsk"} + } + "meta:Kyrgystan"{ + ls{"Oras sa Kyrgyzstan"} + } + "meta:Line_Islands"{ + ls{"Oras sa Line Islands"} + } + "meta:Lord_Howe"{ + ld{"Oras sa Adlawan sa Lord Howe"} + lg{"Oras sa Lord Howe"} + ls{"Tamdanang Oras sa Lord Howe"} + } + "meta:Macquarie"{ + ls{"Oras sa Macquarie Island"} + } + "meta:Magadan"{ + ld{"Oras sa Tag-init sa Magadan"} + lg{"Oras sa Magadan"} + ls{"Tamdanang Oras sa Magadan"} + } + "meta:Malaysia"{ + ls{"Oras sa Malaysia"} + } + "meta:Maldives"{ + ls{"Oras sa Maldives"} + } + "meta:Marquesas"{ + ls{"Oras sa Marquesas"} + } + "meta:Marshall_Islands"{ + ls{"Oras sa Marshall Islands"} + } + "meta:Mauritius"{ + ld{"Oras sa Tag-init sa Mauritius"} + lg{"Oras sa Mauritius"} + ls{"Tamdanang Oras sa Mauritius"} + } + "meta:Mawson"{ + ls{"Oras sa Mawson"} + } + "meta:Mexico_Northwest"{ + ld{"Oras sa Adlawan sa Northwest Mexico"} + lg{"Oras sa Northwest Mexico"} + ls{"Tamdanang Oras sa Northwest Mexico"} + } + "meta:Mexico_Pacific"{ + ld{"Oras sa Adlawan sa Mexican Pacific"} + lg{"Oras sa Mexican Pacific"} + ls{"Tamdanang Oras sa Mexican Pacific"} + } + "meta:Mongolia"{ + ld{"Oras sa Tag-init sa Ulaanbaatar"} + lg{"Oras sa Ulaanbaatar"} + ls{"Tamdanang Oras sa Ulaanbaatar"} + } + "meta:Moscow"{ + ld{"Oras sa Tag-init sa Moscow"} + lg{"Oras sa Moscow"} + ls{"Tamdanang Oras sa Moscow"} + } + "meta:Myanmar"{ + ls{"Oras sa Myanmar"} + } + "meta:Nauru"{ + ls{"Oras sa Nauru"} + } + "meta:Nepal"{ + ls{"Oras sa Nepal"} + } + "meta:New_Caledonia"{ + ld{"Oras sa Tag-init sa New Caledonia"} + lg{"Oras sa New Caledonia"} + ls{"Tamdanang Oras sa New Caledonia"} + } + "meta:New_Zealand"{ + ld{"Oras sa Adlawan sa New Zealand"} + lg{"Oras sa New Zealand"} + ls{"Tamdanang Oras sa New Zealand"} + } + "meta:Newfoundland"{ + ld{"Oras sa Adlawan sa Newfoundland"} + lg{"Oras sa Newfoundland"} + ls{"Tamdanang Oras sa Newfoundland"} + } + "meta:Niue"{ + ls{"Oras sa Niue"} + } + "meta:Norfolk"{ + ls{"Oras sa Norfolk Island"} + } + "meta:Noronha"{ + ld{"Oras sa Tag-init sa Fernando de Noronha"} + lg{"Oras sa Fernando de Noronha"} + ls{"Tamdanang Oras sa Fernando de Noronha"} + } + "meta:Novosibirsk"{ + ld{"Oras sa Tag-init sa Novosibirsk"} + lg{"Oras sa Novosibirsk"} + ls{"Tamdanang Oras sa Novosibirsk"} + } + "meta:Omsk"{ + ld{"Oras sa Tag-init sa Omsk"} + lg{"Oras sa Omsk"} + ls{"Tamdanang Oras sa Omsk"} + } + "meta:Pakistan"{ + ld{"Oras sa Tag-init sa Pakistan"} + lg{"Oras sa Pakistan"} + ls{"Tamdanang Oras sa Pakistan"} + } + "meta:Palau"{ + ls{"Oras sa Palau"} + } + "meta:Papua_New_Guinea"{ + ls{"Oras sa Papua New Guinea"} + } + "meta:Paraguay"{ + ld{"Oras sa Tag-init sa Paraguay"} + lg{"Oras sa Paraguay"} + ls{"Tamdanang Oras sa Paraguay"} + } + "meta:Peru"{ + ld{"Oras sa Tag-init sa Peru"} + lg{"Oras sa Peru"} + ls{"Tamdanang Oras sa Peru"} + } + "meta:Philippines"{ + ld{"Oras sa Tag-init sa Pilipinas"} + lg{"Oras sa Pilipinas"} + ls{"Tamdanang Oras sa Pilipinas"} + } + "meta:Phoenix_Islands"{ + ls{"Oras sa Phoenix Islands"} + } + "meta:Pierre_Miquelon"{ + ld{"Oras sa Adlawan sa St. Pierre & Miquelon"} + lg{"Oras sa St. Pierre & Miquelon"} + ls{"Tamdanang Oras sa St. Pierre & Miquelon"} + } + "meta:Pitcairn"{ + ls{"Oras sa Pitcairn"} + } + "meta:Ponape"{ + ls{"Oras sa Ponape"} + } + "meta:Pyongyang"{ + ls{"Oras sa Pyongyang"} + } + "meta:Reunion"{ + ls{"Oras sa Reunion"} + } + "meta:Rothera"{ + ls{"Oras sa Rothera"} + } + "meta:Sakhalin"{ + ld{"Oras sa Tag-init sa Sakhalin"} + lg{"Oras sa Sakhalin"} + ls{"Tamdanang Oras sa Sakhalin"} + } + "meta:Samoa"{ + ld{"Oras sa Adlawan sa Samoa"} + lg{"Oras sa Samoa"} + ls{"Tamdanang Oras sa Samoa"} + } + "meta:Seychelles"{ + ls{"Oras sa Seychelles"} + } + "meta:Singapore"{ + ls{"Tamdanang Oras sa Singapore"} + } + "meta:Solomon"{ + ls{"Oras sa Solomon Islands"} + } + "meta:South_Georgia"{ + ls{"Oras sa South Georgia"} + } + "meta:Suriname"{ + ls{"Oras sa Suriname"} + } + "meta:Syowa"{ + ls{"Oras sa Syowa"} + } + "meta:Tahiti"{ + ls{"Oras sa Tahiti"} + } + "meta:Taipei"{ + ld{"Oras sa Adlawan sa Taipei"} + lg{"Oras sa Taipei"} + ls{"Tamdanang Oras sa Taipei"} + } + "meta:Tajikistan"{ + ls{"Oras sa Tajikistan"} + } + "meta:Tokelau"{ + ls{"Oras sa Tokelau"} + } + "meta:Tonga"{ + ld{"Oras sa Tag-init sa Tonga"} + lg{"Oras sa Tonga"} + ls{"Tamdanang Oras sa Tonga"} + } + "meta:Truk"{ + ls{"Oras sa Chuuk"} + } + "meta:Turkmenistan"{ + ld{"Oras sa Tag-init sa Turkmenistan"} + lg{"Oras sa Turkmenistan"} + ls{"Tamdanang Oras sa Turkmenistan"} + } + "meta:Tuvalu"{ + ls{"Oras sa Tuvalu"} + } + "meta:Uruguay"{ + ld{"Oras sa Tag-init sa Uruguay"} + lg{"Oras sa Uruguay"} + ls{"Tamdanang Oras sa Uruguay"} + } + "meta:Uzbekistan"{ + ld{"Oras sa Tag-init sa Uzbekistan"} + lg{"Oras sa Uzbekistan"} + ls{"Tamdanang Oras sa Uzbekistan"} + } + "meta:Vanuatu"{ + ld{"Oras sa Tag-init sa Vanuatu"} + lg{"Oras sa Vanuatu"} + ls{"Tamdanang Oras sa Vanuatu"} + } + "meta:Venezuela"{ + ls{"Oras sa Venezuela"} + } + "meta:Vladivostok"{ + ld{"Oras sa Tag-init sa Vladivostok"} + lg{"Oras sa Vladivostok"} + ls{"Tamdanang Oras sa Vladivostok"} + } + "meta:Volgograd"{ + ld{"Oras sa Tag-init sa Volgograd"} + lg{"Oras sa Volgograd"} + ls{"Tamdanang Oras sa Volgograd"} + } + "meta:Vostok"{ + ls{"Oras sa Vostok"} + } + "meta:Wake"{ + ls{"Oras sa Wake Island"} + } + "meta:Wallis"{ + ls{"Oras sa Wallis & Futuna"} + } + "meta:Yakutsk"{ + ld{"Oras sa Tag-init sa Yakutsk"} + lg{"Oras sa Yakutsk"} + ls{"Tamdanang Oras sa Yakutsk"} + } + "meta:Yekaterinburg"{ + ld{"Oras sa Tag-init sa Yekaterinburg"} + lg{"Oras sa Yekaterinburg"} + ls{"Tamdanang Oras sa Yekaterinburg"} + } fallbackFormat{"{1} {0}"} gmtFormat{"GMT {0}"} gmtZeroFormat{"GMT"} diff --git a/source/data/zone/cgg.txt b/source/data/zone/cgg.txt index 85b9558..03ddf10 100644 --- a/source/data/zone/cgg.txt +++ b/source/data/zone/cgg.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License cgg{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/chr.txt b/source/data/zone/chr.txt index 4e12111..dd9c90f 100644 --- a/source/data/zone/chr.txt +++ b/source/data/zone/chr.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License chr{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"ᎠᏈᏣᏂ"} @@ -807,6 +807,9 @@ chr{ "Asia:Qatar"{ ec{"ᎧᏔᎵ"} } + "Asia:Qostanay"{ + ec{"ᎧᏍᏔᏁ"} + } "Asia:Qyzylorda"{ ec{"ᎩᏏᎶᎳᏓ"} } diff --git a/source/data/zone/ckb.txt b/source/data/zone/ckb.txt index 8ae07c9..b289de4 100644 --- a/source/data/zone/ckb.txt +++ b/source/data/zone/ckb.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ckb{ - Version{"2.1.47.72"} + Version{"36"} } diff --git a/source/data/zone/cs.txt b/source/data/zone/cs.txt index fd6eed8..3f35262 100644 --- a/source/data/zone/cs.txt +++ b/source/data/zone/cs.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License cs{ - Version{"2.1.48.44"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidžan"} @@ -956,6 +956,7 @@ cs{ } "Etc:UTC"{ ls{"Koordinovaný světový čas"} + ss{"UTC"} } "Etc:Unknown"{ ec{"neznámé město"} @@ -1778,7 +1779,7 @@ cs{ ls{"Niuejský čas"} } "meta:Norfolk"{ - ls{"Norfolský čas"} + ls{"Norfolkský čas"} } "meta:Noronha"{ ld{"Letní čas souostroví Fernando de Noronha"} @@ -1833,7 +1834,7 @@ cs{ ls{"Pierre-miquelonský standardní čas"} } "meta:Pitcairn"{ - ls{"Čas Pitcairnova ostrova"} + ls{"Čas Pitcairnových ostrovů"} } "meta:Ponape"{ ls{"Ponapský čas"} diff --git a/source/data/zone/cy.txt b/source/data/zone/cy.txt index 2a27198..6d6578a 100644 --- a/source/data/zone/cy.txt +++ b/source/data/zone/cy.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License cy{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -15,9 +15,6 @@ cy{ "Africa:Algiers"{ ec{"Alger"} } - "Africa:Asmera"{ - ec{"Asmera"} - } "Africa:Bamako"{ ec{"Bamako"} } @@ -810,6 +807,9 @@ cy{ "Asia:Qatar"{ ec{"Qatar"} } + "Asia:Qostanay"{ + ec{"Kostanay"} + } "Asia:Qyzylorda"{ ec{"Qyzylorda"} } @@ -894,9 +894,6 @@ cy{ "Atlantic:Canary"{ ec{"Yr Ynysoedd Dedwydd"} } - "Atlantic:Cape_Verde"{ - ec{"Cabo Verde"} - } "Atlantic:Faeroe"{ ec{"Ffaro"} } @@ -1133,9 +1130,6 @@ cy{ "Europe:Zagreb"{ ec{"Zagreb"} } - "Europe:Zaporozhye"{ - ec{"Zaporizhzhya"} - } "Europe:Zurich"{ ec{"Zurich"} } @@ -1615,7 +1609,7 @@ cy{ ls{"Amser Dwyrain Kazakhstan"} } "meta:Kazakhstan_Western"{ - ls{"Amser Gorllewin Casachstan"} + ls{"Amser Gorllewin Kazakhstan"} } "meta:Korea"{ ld{"Amser Haf Corea"} @@ -1852,9 +1846,9 @@ cy{ ls{"Amser Safonol Uruguay"} } "meta:Uzbekistan"{ - ld{"Amser Haf Wsbecistan"} - lg{"Amser Wsbecistan"} - ls{"Amser Safonol Wsbecistan"} + ld{"Amser Haf Uzbekistan"} + lg{"Amser Uzbekistan"} + ls{"Amser Safonol Uzbekistan"} } "meta:Vanuatu"{ ld{"Amser Haf Vanuatu"} diff --git a/source/data/zone/da.txt b/source/data/zone/da.txt index 7d5fd0b..e32e549 100644 --- a/source/data/zone/da.txt +++ b/source/data/zone/da.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License da{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -810,6 +810,9 @@ da{ "Asia:Qatar"{ ec{"Qatar"} } + "Asia:Qostanay"{ + ec{"Kostanay"} + } "Asia:Qyzylorda"{ ec{"Kyzylorda"} } @@ -1146,7 +1149,7 @@ da{ ec{"Chagos"} } "Indian:Christmas"{ - ec{"Juleøerne"} + ec{"Juleøen"} } "Indian:Cocos"{ ec{"Cocos"} diff --git a/source/data/zone/dav.txt b/source/data/zone/dav.txt index 621e39f..2bcaa41 100644 --- a/source/data/zone/dav.txt +++ b/source/data/zone/dav.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dav{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/de.txt b/source/data/zone/de.txt index 0cc6976..ddc1cec 100644 --- a/source/data/zone/de.txt +++ b/source/data/zone/de.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License de{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -810,6 +810,9 @@ de{ "Asia:Qatar"{ ec{"Katar"} } + "Asia:Qostanay"{ + ec{"Qostanai"} + } "Asia:Qyzylorda"{ ec{"Qysylorda"} } diff --git a/source/data/zone/de_CH.txt b/source/data/zone/de_CH.txt index b0a8d55..59df843 100644 --- a/source/data/zone/de_CH.txt +++ b/source/data/zone/de_CH.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License de_CH{ - Version{"2.1.47.86"} + Version{"36"} zoneStrings{ "Asia:Brunei"{ ec{"Brunei"} diff --git a/source/data/zone/dje.txt b/source/data/zone/dje.txt index fc574d9..0dc942e 100644 --- a/source/data/zone/dje.txt +++ b/source/data/zone/dje.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dje{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/dsb.txt b/source/data/zone/dsb.txt index 7122e4c..23f0cb3 100644 --- a/source/data/zone/dsb.txt +++ b/source/data/zone/dsb.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dsb{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Africa:Accra"{ ec{"Akkra"} diff --git a/source/data/zone/dua.txt b/source/data/zone/dua.txt index ed24d8a..e6e4379 100644 --- a/source/data/zone/dua.txt +++ b/source/data/zone/dua.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dua{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/dyo.txt b/source/data/zone/dyo.txt index 311972b..f7ffaf7 100644 --- a/source/data/zone/dyo.txt +++ b/source/data/zone/dyo.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dyo{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/dz.txt b/source/data/zone/dz.txt index 267eb46..0fe4983 100644 --- a/source/data/zone/dz.txt +++ b/source/data/zone/dz.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License dz{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Africa:Cairo"{ ec{"ཀཱའི་རོ"} diff --git a/source/data/zone/ebu.txt b/source/data/zone/ebu.txt index 5ac0418..dfe1c53 100644 --- a/source/data/zone/ebu.txt +++ b/source/data/zone/ebu.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ebu{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/ee.txt b/source/data/zone/ee.txt index 9df3a11..e642775 100644 --- a/source/data/zone/ee.txt +++ b/source/data/zone/ee.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ee{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} diff --git a/source/data/zone/el.txt b/source/data/zone/el.txt index 8983031..07183a2 100644 --- a/source/data/zone/el.txt +++ b/source/data/zone/el.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License el{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Αμπιτζάν"} @@ -55,7 +55,7 @@ el{ ec{"Ντακάρ"} } "Africa:Dar_es_Salaam"{ - ec{"Νταρ Ες Σαλάμ"} + ec{"Νταρ ες Σαλάμ"} } "Africa:Djibouti"{ ec{"Τζιμπουτί"} @@ -520,7 +520,7 @@ el{ ec{"Ρεσίφε"} } "America:Regina"{ - ec{"Ρετζίνα"} + ec{"Ρετζάινα"} } "America:Resolute"{ ec{"Ρέζολουτ"} @@ -598,7 +598,7 @@ el{ ec{"Γουίνιπεγκ"} } "America:Yakutat"{ - ec{"Γιακούτατ"} + ec{"Γιάκουτατ"} } "America:Yellowknife"{ ec{"Γέλοουναϊφ"} @@ -661,7 +661,7 @@ el{ ec{"Ασχαμπάτ"} } "Asia:Atyrau"{ - ec{"Aτιράου"} + ec{"Ατιράου"} } "Asia:Baghdad"{ ec{"Βαγδάτη"} @@ -1784,7 +1784,7 @@ el{ ls{"Χειμερινή ώρα Φιλιππινών"} } "meta:Phoenix_Islands"{ - ls{"Ώρα Νήσων Φoίνιξ"} + ls{"Ώρα Νήσων Φοίνιξ"} } "meta:Pierre_Miquelon"{ ld{"Θερινή ώρα Σεν Πιερ και Μικελόν"} diff --git a/source/data/zone/en.txt b/source/data/zone/en.txt index 868a6e8..712285c 100644 --- a/source/data/zone/en.txt +++ b/source/data/zone/en.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en{ - Version{"2.1.48.65"} + Version{"36"} zoneStrings{ "Africa:Sao_Tome"{ ec{"São Tomé"} diff --git a/source/data/zone/en_001.txt b/source/data/zone/en_001.txt index bcc5c65..abacac4 100644 --- a/source/data/zone/en_001.txt +++ b/source/data/zone/en_001.txt @@ -1,8 +1,29 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_001{ - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ + "America:St_Barthelemy"{ + ec{"St Barthélemy"} + } + "America:St_Johns"{ + ec{"St John’s"} + } + "America:St_Kitts"{ + ec{"St Kitts"} + } + "America:St_Lucia"{ + ec{"St Lucia"} + } + "America:St_Thomas"{ + ec{"St Thomas"} + } + "America:St_Vincent"{ + ec{"St Vincent"} + } + "Atlantic:St_Helena"{ + ec{"St Helena"} + } "Pacific:Honolulu"{ sd{"∅∅∅"} sg{"∅∅∅"} @@ -43,5 +64,10 @@ en_001{ sg{"∅∅∅"} ss{"∅∅∅"} } + "meta:Pierre_Miquelon"{ + ld{"St Pierre & Miquelon Daylight Time"} + lg{"St Pierre & Miquelon Time"} + ls{"St Pierre & Miquelon Standard Time"} + } } } diff --git a/source/data/zone/en_150.txt b/source/data/zone/en_150.txt index e4f7446..c5665f8 100644 --- a/source/data/zone/en_150.txt +++ b/source/data/zone/en_150.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_150{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "meta:Europe_Central"{ sd{"CEST"} diff --git a/source/data/zone/en_AE.txt b/source/data/zone/en_AE.txt index e934805..f5d1e4c 100644 --- a/source/data/zone/en_AE.txt +++ b/source/data/zone/en_AE.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_AE{ - Version{"2.1.48.67"} + Version{"36"} zoneStrings{ "Pacific:Honolulu"{ sd{"∅∅∅"} diff --git a/source/data/zone/en_AG.txt b/source/data/zone/en_AG.txt index 752a3d7..a63a580 100644 --- a/source/data/zone/en_AG.txt +++ b/source/data/zone/en_AG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_AI.txt b/source/data/zone/en_AI.txt index 9c02925..4d398f9 100644 --- a/source/data/zone/en_AI.txt +++ b/source/data/zone/en_AI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AI{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_AT.txt b/source/data/zone/en_AT.txt index 753d6cf..bd5afac 100644 --- a/source/data/zone/en_AT.txt +++ b/source/data/zone/en_AT.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AT{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_AU.txt b/source/data/zone/en_AU.txt index c5c2a3f..e51362b 100644 --- a/source/data/zone/en_AU.txt +++ b/source/data/zone/en_AU.txt @@ -2,21 +2,17 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_AU{ %%Parent{"en_001"} - Version{"2.1.48.43"} + Version{"36"} zoneStrings{ - "America:St_Barthelemy"{ - ec{"St Barthélemy"} - } "Asia:Rangoon"{ ec{"Rangoon"} } + "Pacific:Johnston"{ + ec{"Johnston"} + } "meta:Africa_Eastern"{ ls{"Eastern Africa Time"} } - "meta:Amazon"{ - ld{"Amazon Summer Time"} - ls{"Amazon Standard Time"} - } "meta:Arabian"{ ld{"Arabia Daylight Time"} lg{"Arabia Time"} @@ -53,6 +49,7 @@ en_AU{ } "meta:China"{ ld{"China Summer Time"} + lg{"China Time"} ls{"China Standard Time"} } "meta:Cook"{ @@ -60,18 +57,6 @@ en_AU{ lg{"Cook Island Time"} ls{"Cook Island Standard Time"} } - "meta:Europe_Eastern"{ - ld{"Eastern European Summer Time"} - ls{"Eastern European Standard Time"} - } - "meta:Iran"{ - lg{"Iran Time"} - ls{"Iran Standard Time"} - } - "meta:Israel"{ - lg{"Israel Time"} - ls{"Israel Standard Time"} - } "meta:Japan"{ ld{"Japan Summer Time"} lg{"Japan Time"} @@ -107,5 +92,6 @@ en_AU{ lg{"Taipei Time"} ls{"Taipei Standard Time"} } + gmtZeroFormat{"GMT"} } } diff --git a/source/data/zone/en_BB.txt b/source/data/zone/en_BB.txt index fbf9df7..fca6cbd 100644 --- a/source/data/zone/en_BB.txt +++ b/source/data/zone/en_BB.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BB{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_BE.txt b/source/data/zone/en_BE.txt index 511a8be..be2dff5 100644 --- a/source/data/zone/en_BE.txt +++ b/source/data/zone/en_BE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BE{ %%Parent{"en_150"} - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/zone/en_BM.txt b/source/data/zone/en_BM.txt index 009afd0..b1f0c76 100644 --- a/source/data/zone/en_BM.txt +++ b/source/data/zone/en_BM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_BS.txt b/source/data/zone/en_BS.txt index 582cff3..dd37cc9 100644 --- a/source/data/zone/en_BS.txt +++ b/source/data/zone/en_BS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BS{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_BW.txt b/source/data/zone/en_BW.txt index b33c4bf..69fc20c 100644 --- a/source/data/zone/en_BW.txt +++ b/source/data/zone/en_BW.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BW{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_BZ.txt b/source/data/zone/en_BZ.txt index b964726..5a047a0 100644 --- a/source/data/zone/en_BZ.txt +++ b/source/data/zone/en_BZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_BZ{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_CA.txt b/source/data/zone/en_CA.txt index 31b9b21..44f8b00 100644 --- a/source/data/zone/en_CA.txt +++ b/source/data/zone/en_CA.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CA{ %%Parent{"en_001"} - Version{"2.1.47.86"} + Version{"36"} zoneStrings{ "Asia:Rangoon"{ ec{"Rangoon"} @@ -52,6 +52,7 @@ en_CA{ sg{"NT"} ss{"NST"} } + gmtZeroFormat{"GMT"} regionFormatDaylight{"{0} Daylight Saving Time"} } } diff --git a/source/data/zone/en_CC.txt b/source/data/zone/en_CC.txt index 1c8588b..6066465 100644 --- a/source/data/zone/en_CC.txt +++ b/source/data/zone/en_CC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CC{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_CH.txt b/source/data/zone/en_CH.txt index ae65071..8a72c4c 100644 --- a/source/data/zone/en_CH.txt +++ b/source/data/zone/en_CH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CH{ %%Parent{"en_150"} - Version{"2.1.48.50"} + Version{"36"} } diff --git a/source/data/zone/en_CK.txt b/source/data/zone/en_CK.txt index 4276b47..1b5afe5 100644 --- a/source/data/zone/en_CK.txt +++ b/source/data/zone/en_CK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CK{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_CM.txt b/source/data/zone/en_CM.txt index db528d2..690920a 100644 --- a/source/data/zone/en_CM.txt +++ b/source/data/zone/en_CM.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_CX.txt b/source/data/zone/en_CX.txt index 6e70c69..750c035 100644 --- a/source/data/zone/en_CX.txt +++ b/source/data/zone/en_CX.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CX{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_CY.txt b/source/data/zone/en_CY.txt index c009b10..369d217 100644 --- a/source/data/zone/en_CY.txt +++ b/source/data/zone/en_CY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_CY{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_DE.txt b/source/data/zone/en_DE.txt index 9ae118e..b2b71ff 100644 --- a/source/data/zone/en_DE.txt +++ b/source/data/zone/en_DE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DE{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_DG.txt b/source/data/zone/en_DG.txt index a6f3076..41b307a 100644 --- a/source/data/zone/en_DG.txt +++ b/source/data/zone/en_DG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_DK.txt b/source/data/zone/en_DK.txt index 494fee3..5b3228b 100644 --- a/source/data/zone/en_DK.txt +++ b/source/data/zone/en_DK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DK{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_DM.txt b/source/data/zone/en_DM.txt index 4f886aa..f849ffe 100644 --- a/source/data/zone/en_DM.txt +++ b/source/data/zone/en_DM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_DM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_ER.txt b/source/data/zone/en_ER.txt index 62e05ff..39685e1 100644 --- a/source/data/zone/en_ER.txt +++ b/source/data/zone/en_ER.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ER{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_FI.txt b/source/data/zone/en_FI.txt index 3ca4f54..b8fbbfe 100644 --- a/source/data/zone/en_FI.txt +++ b/source/data/zone/en_FI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FI{ %%Parent{"en_150"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_FJ.txt b/source/data/zone/en_FJ.txt index 918bc8f..07db8bd 100644 --- a/source/data/zone/en_FJ.txt +++ b/source/data/zone/en_FJ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FJ{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_FK.txt b/source/data/zone/en_FK.txt index 4a8a67b..7178b9d 100644 --- a/source/data/zone/en_FK.txt +++ b/source/data/zone/en_FK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FK{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_FM.txt b/source/data/zone/en_FM.txt index 877c94e..122264e 100644 --- a/source/data/zone/en_FM.txt +++ b/source/data/zone/en_FM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_FM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_GB.txt b/source/data/zone/en_GB.txt index 8cd09be..d6bddda 100644 --- a/source/data/zone/en_GB.txt +++ b/source/data/zone/en_GB.txt @@ -2,35 +2,1184 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GB{ %%Parent{"en_001"} - Version{"2.1.47.86"} + Version{"36"} zoneStrings{ - "America:St_Barthelemy"{ - ec{"St Barthélemy"} + "Africa:Abidjan"{ + ec{"Abidjan"} } - "America:St_Johns"{ - ec{"St John’s"} + "Africa:Accra"{ + ec{"Accra"} } - "America:St_Kitts"{ - ec{"St Kitts"} + "Africa:Addis_Ababa"{ + ec{"Addis Ababa"} } - "America:St_Lucia"{ - ec{"St Lucia"} + "Africa:Algiers"{ + ec{"Algiers"} } - "America:St_Thomas"{ - ec{"St Thomas"} + "Africa:Asmera"{ + ec{"Asmara"} } - "America:St_Vincent"{ - ec{"St Vincent"} + "Africa:Bamako"{ + ec{"Bamako"} } - "Atlantic:St_Helena"{ - ec{"St Helena"} + "Africa:Bangui"{ + ec{"Bangui"} + } + "Africa:Banjul"{ + ec{"Banjul"} + } + "Africa:Bissau"{ + ec{"Bissau"} + } + "Africa:Blantyre"{ + ec{"Blantyre"} + } + "Africa:Brazzaville"{ + ec{"Brazzaville"} + } + "Africa:Bujumbura"{ + ec{"Bujumbura"} + } + "Africa:Cairo"{ + ec{"Cairo"} + } + "Africa:Casablanca"{ + ec{"Casablanca"} + } + "Africa:Ceuta"{ + ec{"Ceuta"} + } + "Africa:Conakry"{ + ec{"Conakry"} + } + "Africa:Dakar"{ + ec{"Dakar"} + } + "Africa:Dar_es_Salaam"{ + ec{"Dar es Salaam"} + } + "Africa:Djibouti"{ + ec{"Djibouti"} + } + "Africa:Douala"{ + ec{"Douala"} + } + "Africa:El_Aaiun"{ + ec{"El Aaiun"} + } + "Africa:Freetown"{ + ec{"Freetown"} + } + "Africa:Gaborone"{ + ec{"Gaborone"} + } + "Africa:Harare"{ + ec{"Harare"} + } + "Africa:Johannesburg"{ + ec{"Johannesburg"} + } + "Africa:Juba"{ + ec{"Juba"} + } + "Africa:Kampala"{ + ec{"Kampala"} + } + "Africa:Khartoum"{ + ec{"Khartoum"} + } + "Africa:Kigali"{ + ec{"Kigali"} + } + "Africa:Kinshasa"{ + ec{"Kinshasa"} + } + "Africa:Lagos"{ + ec{"Lagos"} + } + "Africa:Libreville"{ + ec{"Libreville"} + } + "Africa:Lome"{ + ec{"Lome"} + } + "Africa:Luanda"{ + ec{"Luanda"} + } + "Africa:Lubumbashi"{ + ec{"Lubumbashi"} + } + "Africa:Lusaka"{ + ec{"Lusaka"} + } + "Africa:Malabo"{ + ec{"Malabo"} + } + "Africa:Maputo"{ + ec{"Maputo"} + } + "Africa:Maseru"{ + ec{"Maseru"} + } + "Africa:Mbabane"{ + ec{"Mbabane"} + } + "Africa:Mogadishu"{ + ec{"Mogadishu"} + } + "Africa:Monrovia"{ + ec{"Monrovia"} + } + "Africa:Nairobi"{ + ec{"Nairobi"} + } + "Africa:Ndjamena"{ + ec{"Ndjamena"} + } + "Africa:Niamey"{ + ec{"Niamey"} + } + "Africa:Nouakchott"{ + ec{"Nouakchott"} + } + "Africa:Ouagadougou"{ + ec{"Ouagadougou"} + } + "Africa:Porto-Novo"{ + ec{"Porto-Novo"} + } + "Africa:Tripoli"{ + ec{"Tripoli"} + } + "Africa:Tunis"{ + ec{"Tunis"} + } + "Africa:Windhoek"{ + ec{"Windhoek"} + } + "America:Adak"{ + ec{"Adak"} + } + "America:Anchorage"{ + ec{"Anchorage"} + } + "America:Anguilla"{ + ec{"Anguilla"} + } + "America:Antigua"{ + ec{"Antigua"} + } + "America:Araguaina"{ + ec{"Araguaina"} + } + "America:Argentina:La_Rioja"{ + ec{"La Rioja"} + } + "America:Argentina:Rio_Gallegos"{ + ec{"Rio Gallegos"} + } + "America:Argentina:Salta"{ + ec{"Salta"} + } + "America:Argentina:San_Juan"{ + ec{"San Juan"} + } + "America:Argentina:San_Luis"{ + ec{"San Luis"} + } + "America:Argentina:Tucuman"{ + ec{"Tucuman"} + } + "America:Argentina:Ushuaia"{ + ec{"Ushuaia"} + } + "America:Aruba"{ + ec{"Aruba"} + } + "America:Bahia"{ + ec{"Bahia"} + } + "America:Bahia_Banderas"{ + ec{"Bahia Banderas"} + } + "America:Barbados"{ + ec{"Barbados"} + } + "America:Belem"{ + ec{"Belem"} + } + "America:Belize"{ + ec{"Belize"} + } + "America:Blanc-Sablon"{ + ec{"Blanc-Sablon"} + } + "America:Boa_Vista"{ + ec{"Boa Vista"} + } + "America:Bogota"{ + ec{"Bogota"} + } + "America:Boise"{ + ec{"Boise"} + } + "America:Buenos_Aires"{ + ec{"Buenos Aires"} + } + "America:Cambridge_Bay"{ + ec{"Cambridge Bay"} + } + "America:Campo_Grande"{ + ec{"Campo Grande"} + } + "America:Cancun"{ + ec{"Cancun"} + } + "America:Caracas"{ + ec{"Caracas"} + } + "America:Catamarca"{ + ec{"Catamarca"} + } + "America:Cayenne"{ + ec{"Cayenne"} + } + "America:Cayman"{ + ec{"Cayman"} + } + "America:Chicago"{ + ec{"Chicago"} + } + "America:Chihuahua"{ + ec{"Chihuahua"} + } + "America:Coral_Harbour"{ + ec{"Atikokan"} + } + "America:Cordoba"{ + ec{"Cordoba"} + } + "America:Costa_Rica"{ + ec{"Costa Rica"} + } + "America:Creston"{ + ec{"Creston"} + } + "America:Cuiaba"{ + ec{"Cuiaba"} + } + "America:Danmarkshavn"{ + ec{"Danmarkshavn"} + } + "America:Dawson"{ + ec{"Dawson"} + } + "America:Dawson_Creek"{ + ec{"Dawson Creek"} + } + "America:Denver"{ + ec{"Denver"} + } + "America:Detroit"{ + ec{"Detroit"} + } + "America:Dominica"{ + ec{"Dominica"} + } + "America:Edmonton"{ + ec{"Edmonton"} + } + "America:Eirunepe"{ + ec{"Eirunepe"} + } + "America:El_Salvador"{ + ec{"El Salvador"} + } + "America:Fortaleza"{ + ec{"Fortaleza"} + } + "America:Glace_Bay"{ + ec{"Glace Bay"} + } + "America:Godthab"{ + ec{"Nuuk"} + } + "America:Goose_Bay"{ + ec{"Goose Bay"} + } + "America:Grand_Turk"{ + ec{"Grand Turk"} + } + "America:Grenada"{ + ec{"Grenada"} + } + "America:Guadeloupe"{ + ec{"Guadeloupe"} + } + "America:Guatemala"{ + ec{"Guatemala"} + } + "America:Guayaquil"{ + ec{"Guayaquil"} + } + "America:Guyana"{ + ec{"Guyana"} + } + "America:Halifax"{ + ec{"Halifax"} + } + "America:Havana"{ + ec{"Havana"} + } + "America:Hermosillo"{ + ec{"Hermosillo"} + } + "America:Indiana:Knox"{ + ec{"Knox, Indiana"} + } + "America:Indiana:Marengo"{ + ec{"Marengo, Indiana"} + } + "America:Indiana:Petersburg"{ + ec{"Petersburg, Indiana"} + } + "America:Indiana:Tell_City"{ + ec{"Tell City, Indiana"} + } + "America:Indiana:Vevay"{ + ec{"Vevay, Indiana"} + } + "America:Indiana:Vincennes"{ + ec{"Vincennes, Indiana"} + } + "America:Indiana:Winamac"{ + ec{"Winamac, Indiana"} + } + "America:Indianapolis"{ + ec{"Indianapolis"} + } + "America:Inuvik"{ + ec{"Inuvik"} + } + "America:Iqaluit"{ + ec{"Iqaluit"} + } + "America:Jamaica"{ + ec{"Jamaica"} + } + "America:Jujuy"{ + ec{"Jujuy"} + } + "America:Juneau"{ + ec{"Juneau"} + } + "America:Kentucky:Monticello"{ + ec{"Monticello, Kentucky"} + } + "America:Kralendijk"{ + ec{"Kralendijk"} + } + "America:La_Paz"{ + ec{"La Paz"} + } + "America:Lima"{ + ec{"Lima"} + } + "America:Los_Angeles"{ + ec{"Los Angeles"} + } + "America:Louisville"{ + ec{"Louisville"} + } + "America:Lower_Princes"{ + ec{"Lower Prince’s Quarter"} + } + "America:Maceio"{ + ec{"Maceio"} + } + "America:Managua"{ + ec{"Managua"} + } + "America:Manaus"{ + ec{"Manaus"} + } + "America:Marigot"{ + ec{"Marigot"} + } + "America:Martinique"{ + ec{"Martinique"} + } + "America:Matamoros"{ + ec{"Matamoros"} + } + "America:Mazatlan"{ + ec{"Mazatlan"} + } + "America:Mendoza"{ + ec{"Mendoza"} + } + "America:Menominee"{ + ec{"Menominee"} + } + "America:Merida"{ + ec{"Merida"} + } + "America:Metlakatla"{ + ec{"Metlakatla"} + } + "America:Mexico_City"{ + ec{"Mexico City"} + } + "America:Miquelon"{ + ec{"Miquelon"} + } + "America:Moncton"{ + ec{"Moncton"} + } + "America:Monterrey"{ + ec{"Monterrey"} + } + "America:Montevideo"{ + ec{"Montevideo"} + } + "America:Montserrat"{ + ec{"Montserrat"} + } + "America:Nassau"{ + ec{"Nassau"} + } + "America:New_York"{ + ec{"New York"} + } + "America:Nipigon"{ + ec{"Nipigon"} + } + "America:Nome"{ + ec{"Nome"} + } + "America:Noronha"{ + ec{"Noronha"} + } + "America:North_Dakota:Beulah"{ + ec{"Beulah, North Dakota"} + } + "America:North_Dakota:Center"{ + ec{"Center, North Dakota"} + } + "America:North_Dakota:New_Salem"{ + ec{"New Salem, North Dakota"} + } + "America:Ojinaga"{ + ec{"Ojinaga"} + } + "America:Panama"{ + ec{"Panama"} + } + "America:Pangnirtung"{ + ec{"Pangnirtung"} + } + "America:Paramaribo"{ + ec{"Paramaribo"} + } + "America:Phoenix"{ + ec{"Phoenix"} + } + "America:Port-au-Prince"{ + ec{"Port-au-Prince"} + } + "America:Port_of_Spain"{ + ec{"Port of Spain"} + } + "America:Porto_Velho"{ + ec{"Porto Velho"} + } + "America:Puerto_Rico"{ + ec{"Puerto Rico"} + } + "America:Rainy_River"{ + ec{"Rainy River"} + } + "America:Rankin_Inlet"{ + ec{"Rankin Inlet"} + } + "America:Recife"{ + ec{"Recife"} + } + "America:Regina"{ + ec{"Regina"} + } + "America:Resolute"{ + ec{"Resolute"} + } + "America:Rio_Branco"{ + ec{"Rio Branco"} + } + "America:Santarem"{ + ec{"Santarem"} + } + "America:Santiago"{ + ec{"Santiago"} + } + "America:Santo_Domingo"{ + ec{"Santo Domingo"} + } + "America:Sao_Paulo"{ + ec{"Sao Paulo"} + } + "America:Scoresbysund"{ + ec{"Ittoqqortoormiit"} + } + "America:Sitka"{ + ec{"Sitka"} + } + "America:Swift_Current"{ + ec{"Swift Current"} + } + "America:Tegucigalpa"{ + ec{"Tegucigalpa"} + } + "America:Thule"{ + ec{"Thule"} + } + "America:Thunder_Bay"{ + ec{"Thunder Bay"} + } + "America:Tijuana"{ + ec{"Tijuana"} + } + "America:Toronto"{ + ec{"Toronto"} + } + "America:Tortola"{ + ec{"Tortola"} + } + "America:Vancouver"{ + ec{"Vancouver"} + } + "America:Whitehorse"{ + ec{"Whitehorse"} + } + "America:Winnipeg"{ + ec{"Winnipeg"} + } + "America:Yakutat"{ + ec{"Yakutat"} + } + "America:Yellowknife"{ + ec{"Yellowknife"} + } + "Antarctica:Casey"{ + ec{"Casey"} + } + "Antarctica:Davis"{ + ec{"Davis"} + } + "Antarctica:Macquarie"{ + ec{"Macquarie"} + } + "Antarctica:Mawson"{ + ec{"Mawson"} + } + "Antarctica:McMurdo"{ + ec{"McMurdo"} + } + "Antarctica:Palmer"{ + ec{"Palmer"} + } + "Antarctica:Rothera"{ + ec{"Rothera"} + } + "Antarctica:Syowa"{ + ec{"Syowa"} + } + "Antarctica:Troll"{ + ec{"Troll"} + } + "Antarctica:Vostok"{ + ec{"Vostok"} + } + "Arctic:Longyearbyen"{ + ec{"Longyearbyen"} + } + "Asia:Aden"{ + ec{"Aden"} + } + "Asia:Almaty"{ + ec{"Almaty"} + } + "Asia:Amman"{ + ec{"Amman"} + } + "Asia:Anadyr"{ + ec{"Anadyr"} + } + "Asia:Aqtau"{ + ec{"Aqtau"} + } + "Asia:Aqtobe"{ + ec{"Aqtobe"} + } + "Asia:Ashgabat"{ + ec{"Ashgabat"} + } + "Asia:Baghdad"{ + ec{"Baghdad"} + } + "Asia:Bahrain"{ + ec{"Bahrain"} + } + "Asia:Baku"{ + ec{"Baku"} + } + "Asia:Bangkok"{ + ec{"Bangkok"} + } + "Asia:Beirut"{ + ec{"Beirut"} + } + "Asia:Bishkek"{ + ec{"Bishkek"} + } + "Asia:Brunei"{ + ec{"Brunei"} + } + "Asia:Calcutta"{ + ec{"Kolkata"} + } + "Asia:Choibalsan"{ + ec{"Choibalsan"} + } + "Asia:Colombo"{ + ec{"Colombo"} + } + "Asia:Damascus"{ + ec{"Damascus"} + } + "Asia:Dhaka"{ + ec{"Dhaka"} + } + "Asia:Dili"{ + ec{"Dili"} + } + "Asia:Dubai"{ + ec{"Dubai"} + } + "Asia:Dushanbe"{ + ec{"Dushanbe"} + } + "Asia:Gaza"{ + ec{"Gaza"} + } + "Asia:Hebron"{ + ec{"Hebron"} + } + "Asia:Hong_Kong"{ + ec{"Hong Kong"} + } + "Asia:Hovd"{ + ec{"Hovd"} + } + "Asia:Irkutsk"{ + ec{"Irkutsk"} + } + "Asia:Jakarta"{ + ec{"Jakarta"} + } + "Asia:Jayapura"{ + ec{"Jayapura"} + } + "Asia:Jerusalem"{ + ec{"Jerusalem"} + } + "Asia:Kabul"{ + ec{"Kabul"} + } + "Asia:Kamchatka"{ + ec{"Kamchatka"} + } + "Asia:Karachi"{ + ec{"Karachi"} + } + "Asia:Katmandu"{ + ec{"Kathmandu"} + } + "Asia:Khandyga"{ + ec{"Khandyga"} + } + "Asia:Krasnoyarsk"{ + ec{"Krasnoyarsk"} + } + "Asia:Kuala_Lumpur"{ + ec{"Kuala Lumpur"} + } + "Asia:Kuching"{ + ec{"Kuching"} + } + "Asia:Kuwait"{ + ec{"Kuwait"} + } + "Asia:Magadan"{ + ec{"Magadan"} + } + "Asia:Makassar"{ + ec{"Makassar"} + } + "Asia:Manila"{ + ec{"Manila"} + } + "Asia:Muscat"{ + ec{"Muscat"} + } + "Asia:Nicosia"{ + ec{"Nicosia"} + } + "Asia:Novokuznetsk"{ + ec{"Novokuznetsk"} + } + "Asia:Novosibirsk"{ + ec{"Novosibirsk"} + } + "Asia:Omsk"{ + ec{"Omsk"} + } + "Asia:Oral"{ + ec{"Oral"} + } + "Asia:Phnom_Penh"{ + ec{"Phnom Penh"} + } + "Asia:Pontianak"{ + ec{"Pontianak"} + } + "Asia:Pyongyang"{ + ec{"Pyongyang"} + } + "Asia:Qatar"{ + ec{"Qatar"} + } + "Asia:Qyzylorda"{ + ec{"Qyzylorda"} + } + "Asia:Riyadh"{ + ec{"Riyadh"} + } + "Asia:Sakhalin"{ + ec{"Sakhalin"} + } + "Asia:Samarkand"{ + ec{"Samarkand"} + } + "Asia:Seoul"{ + ec{"Seoul"} + } + "Asia:Shanghai"{ + ec{"Shanghai"} + } + "Asia:Singapore"{ + ec{"Singapore"} + } + "Asia:Taipei"{ + ec{"Taipei"} + } + "Asia:Tashkent"{ + ec{"Tashkent"} + } + "Asia:Tbilisi"{ + ec{"Tbilisi"} + } + "Asia:Tehran"{ + ec{"Tehran"} + } + "Asia:Thimphu"{ + ec{"Thimphu"} + } + "Asia:Tokyo"{ + ec{"Tokyo"} + } + "Asia:Ulaanbaatar"{ + ec{"Ulaanbaatar"} + } + "Asia:Urumqi"{ + ec{"Urumqi"} + } + "Asia:Ust-Nera"{ + ec{"Ust-Nera"} + } + "Asia:Vientiane"{ + ec{"Vientiane"} + } + "Asia:Vladivostok"{ + ec{"Vladivostok"} + } + "Asia:Yakutsk"{ + ec{"Yakutsk"} + } + "Asia:Yekaterinburg"{ + ec{"Yekaterinburg"} + } + "Asia:Yerevan"{ + ec{"Yerevan"} + } + "Atlantic:Azores"{ + ec{"Azores"} + } + "Atlantic:Bermuda"{ + ec{"Bermuda"} + } + "Atlantic:Canary"{ + ec{"Canary"} + } + "Atlantic:Cape_Verde"{ + ec{"Cape Verde"} + } + "Atlantic:Faeroe"{ + ec{"Faroe"} + } + "Atlantic:Madeira"{ + ec{"Madeira"} + } + "Atlantic:Reykjavik"{ + ec{"Reykjavik"} + } + "Atlantic:South_Georgia"{ + ec{"South Georgia"} + } + "Atlantic:Stanley"{ + ec{"Stanley"} + } + "Australia:Adelaide"{ + ec{"Adelaide"} + } + "Australia:Brisbane"{ + ec{"Brisbane"} + } + "Australia:Broken_Hill"{ + ec{"Broken Hill"} + } + "Australia:Currie"{ + ec{"Currie"} + } + "Australia:Darwin"{ + ec{"Darwin"} + } + "Australia:Eucla"{ + ec{"Eucla"} + } + "Australia:Hobart"{ + ec{"Hobart"} + } + "Australia:Lindeman"{ + ec{"Lindeman"} + } + "Australia:Lord_Howe"{ + ec{"Lord Howe"} + } + "Australia:Melbourne"{ + ec{"Melbourne"} + } + "Australia:Perth"{ + ec{"Perth"} + } + "Australia:Sydney"{ + ec{"Sydney"} + } + "Europe:Amsterdam"{ + ec{"Amsterdam"} + } + "Europe:Andorra"{ + ec{"Andorra"} + } + "Europe:Athens"{ + ec{"Athens"} + } + "Europe:Belgrade"{ + ec{"Belgrade"} + } + "Europe:Berlin"{ + ec{"Berlin"} + } + "Europe:Bratislava"{ + ec{"Bratislava"} + } + "Europe:Brussels"{ + ec{"Brussels"} + } + "Europe:Bucharest"{ + ec{"Bucharest"} + } + "Europe:Budapest"{ + ec{"Budapest"} + } + "Europe:Busingen"{ + ec{"Busingen"} + } + "Europe:Chisinau"{ + ec{"Chisinau"} + } + "Europe:Copenhagen"{ + ec{"Copenhagen"} + } + "Europe:Dublin"{ + ec{"Dublin"} + } + "Europe:Gibraltar"{ + ec{"Gibraltar"} + } + "Europe:Guernsey"{ + ec{"Guernsey"} + } + "Europe:Helsinki"{ + ec{"Helsinki"} + } + "Europe:Isle_of_Man"{ + ec{"Isle of Man"} + } + "Europe:Istanbul"{ + ec{"Istanbul"} + } + "Europe:Jersey"{ + ec{"Jersey"} + } + "Europe:Kaliningrad"{ + ec{"Kaliningrad"} + } + "Europe:Lisbon"{ + ec{"Lisbon"} + } + "Europe:Ljubljana"{ + ec{"Ljubljana"} } "Europe:London"{ + ec{"London"} sd{"BST"} } - "meta:Australia_Central"{ - lg{"Central Australia Time"} - ls{"Australian Central Standard Time"} + "Europe:Luxembourg"{ + ec{"Luxembourg"} + } + "Europe:Madrid"{ + ec{"Madrid"} + } + "Europe:Malta"{ + ec{"Malta"} + } + "Europe:Mariehamn"{ + ec{"Mariehamn"} + } + "Europe:Minsk"{ + ec{"Minsk"} + } + "Europe:Monaco"{ + ec{"Monaco"} + } + "Europe:Moscow"{ + ec{"Moscow"} + } + "Europe:Oslo"{ + ec{"Oslo"} + } + "Europe:Paris"{ + ec{"Paris"} + } + "Europe:Podgorica"{ + ec{"Podgorica"} + } + "Europe:Prague"{ + ec{"Prague"} + } + "Europe:Riga"{ + ec{"Riga"} + } + "Europe:Rome"{ + ec{"Rome"} + } + "Europe:Samara"{ + ec{"Samara"} + } + "Europe:San_Marino"{ + ec{"San Marino"} + } + "Europe:Sarajevo"{ + ec{"Sarajevo"} + } + "Europe:Simferopol"{ + ec{"Simferopol"} + } + "Europe:Skopje"{ + ec{"Skopje"} + } + "Europe:Sofia"{ + ec{"Sofia"} + } + "Europe:Stockholm"{ + ec{"Stockholm"} + } + "Europe:Tallinn"{ + ec{"Tallinn"} + } + "Europe:Tirane"{ + ec{"Tirane"} + } + "Europe:Vaduz"{ + ec{"Vaduz"} + } + "Europe:Vatican"{ + ec{"Vatican"} + } + "Europe:Vienna"{ + ec{"Vienna"} + } + "Europe:Vilnius"{ + ec{"Vilnius"} + } + "Europe:Volgograd"{ + ec{"Volgograd"} + } + "Europe:Warsaw"{ + ec{"Warsaw"} + } + "Europe:Zagreb"{ + ec{"Zagreb"} + } + "Europe:Zaporozhye"{ + ec{"Zaporozhye"} + } + "Europe:Zurich"{ + ec{"Zurich"} + } + "Indian:Antananarivo"{ + ec{"Antananarivo"} + } + "Indian:Chagos"{ + ec{"Chagos"} + } + "Indian:Christmas"{ + ec{"Christmas"} + } + "Indian:Cocos"{ + ec{"Cocos"} + } + "Indian:Comoro"{ + ec{"Comoro"} + } + "Indian:Kerguelen"{ + ec{"Kerguelen"} + } + "Indian:Mahe"{ + ec{"Mahe"} + } + "Indian:Maldives"{ + ec{"Maldives"} + } + "Indian:Mauritius"{ + ec{"Mauritius"} + } + "Pacific:Apia"{ + ec{"Apia"} + } + "Pacific:Auckland"{ + ec{"Auckland"} + } + "Pacific:Chatham"{ + ec{"Chatham"} + } + "Pacific:Easter"{ + ec{"Easter"} + } + "Pacific:Efate"{ + ec{"Efate"} + } + "Pacific:Enderbury"{ + ec{"Enderbury"} + } + "Pacific:Fakaofo"{ + ec{"Fakaofo"} + } + "Pacific:Fiji"{ + ec{"Fiji"} + } + "Pacific:Funafuti"{ + ec{"Funafuti"} + } + "Pacific:Galapagos"{ + ec{"Galapagos"} + } + "Pacific:Gambier"{ + ec{"Gambier"} + } + "Pacific:Guadalcanal"{ + ec{"Guadalcanal"} + } + "Pacific:Guam"{ + ec{"Guam"} + } + "Pacific:Kiritimati"{ + ec{"Kiritimati"} + } + "Pacific:Kosrae"{ + ec{"Kosrae"} + } + "Pacific:Kwajalein"{ + ec{"Kwajalein"} + } + "Pacific:Majuro"{ + ec{"Majuro"} + } + "Pacific:Marquesas"{ + ec{"Marquesas"} + } + "Pacific:Midway"{ + ec{"Midway"} + } + "Pacific:Nauru"{ + ec{"Nauru"} + } + "Pacific:Niue"{ + ec{"Niue"} + } + "Pacific:Norfolk"{ + ec{"Norfolk"} + } + "Pacific:Noumea"{ + ec{"Noumea"} + } + "Pacific:Pago_Pago"{ + ec{"Pago Pago"} + } + "Pacific:Palau"{ + ec{"Palau"} + } + "Pacific:Pitcairn"{ + ec{"Pitcairn"} + } + "Pacific:Ponape"{ + ec{"Pohnpei"} + } + "Pacific:Port_Moresby"{ + ec{"Port Moresby"} + } + "Pacific:Rarotonga"{ + ec{"Rarotonga"} + } + "Pacific:Saipan"{ + ec{"Saipan"} + } + "Pacific:Tahiti"{ + ec{"Tahiti"} + } + "Pacific:Tarawa"{ + ec{"Tarawa"} + } + "Pacific:Tongatapu"{ + ec{"Tongatapu"} + } + "Pacific:Truk"{ + ec{"Chuuk"} + } + "Pacific:Wake"{ + ec{"Wake"} + } + "Pacific:Wallis"{ + ec{"Wallis"} } "meta:Europe_Central"{ sd{"CEST"} @@ -47,10 +1196,6 @@ en_GB{ sg{"WET"} ss{"WET"} } - "meta:Pierre_Miquelon"{ - ld{"St Pierre & Miquelon Daylight Time"} - lg{"St Pierre & Miquelon Time"} - ls{"St Pierre & Miquelon Standard Time"} - } + gmtZeroFormat{"GMT"} } } diff --git a/source/data/zone/en_GD.txt b/source/data/zone/en_GD.txt index afef775..cf5232c 100644 --- a/source/data/zone/en_GD.txt +++ b/source/data/zone/en_GD.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GD{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_GG.txt b/source/data/zone/en_GG.txt index 6e4ba39..b763399 100644 --- a/source/data/zone/en_GG.txt +++ b/source/data/zone/en_GG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_GH.txt b/source/data/zone/en_GH.txt index 02f3dc9..62dc3d9 100644 --- a/source/data/zone/en_GH.txt +++ b/source/data/zone/en_GH.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GH{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_GI.txt b/source/data/zone/en_GI.txt index 1f237f7..40711a6 100644 --- a/source/data/zone/en_GI.txt +++ b/source/data/zone/en_GI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GI{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_GM.txt b/source/data/zone/en_GM.txt index 46ee10e..3a5590f 100644 --- a/source/data/zone/en_GM.txt +++ b/source/data/zone/en_GM.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_GU.txt b/source/data/zone/en_GU.txt index 6b05d53..87e5b24 100644 --- a/source/data/zone/en_GU.txt +++ b/source/data/zone/en_GU.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_GU{ - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "meta:Chamorro"{ ss{"ChST"} diff --git a/source/data/zone/en_GY.txt b/source/data/zone/en_GY.txt index a5ed3fa..5c4332e 100644 --- a/source/data/zone/en_GY.txt +++ b/source/data/zone/en_GY.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_GY{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "meta:Guyana"{ ss{"GYT"} diff --git a/source/data/zone/en_HK.txt b/source/data/zone/en_HK.txt index a37d3a1..8927926 100644 --- a/source/data/zone/en_HK.txt +++ b/source/data/zone/en_HK.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_HK{ %%Parent{"en_001"} - Version{"2.1.47.86"} + Version{"36"} zoneStrings{ "meta:Hong_Kong"{ sd{"HKST"} diff --git a/source/data/zone/en_IE.txt b/source/data/zone/en_IE.txt index 9d7ac23..a27f702 100644 --- a/source/data/zone/en_IE.txt +++ b/source/data/zone/en_IE.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IE{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "Europe:Dublin"{ sd{"IST"} diff --git a/source/data/zone/en_IL.txt b/source/data/zone/en_IL.txt index 4f6fead..598b76d 100644 --- a/source/data/zone/en_IL.txt +++ b/source/data/zone/en_IL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IL{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_IM.txt b/source/data/zone/en_IM.txt index f109428..8c69f46 100644 --- a/source/data/zone/en_IM.txt +++ b/source/data/zone/en_IM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_IN.txt b/source/data/zone/en_IN.txt index 1222b17..bce7933 100644 --- a/source/data/zone/en_IN.txt +++ b/source/data/zone/en_IN.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IN{ %%Parent{"en_001"} - Version{"2.1.49.14"} + Version{"36"} zoneStrings{ "Asia:Rangoon"{ ec{"Rangoon"} diff --git a/source/data/zone/en_IO.txt b/source/data/zone/en_IO.txt index ae46d46..c161608 100644 --- a/source/data/zone/en_IO.txt +++ b/source/data/zone/en_IO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_IO{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_JE.txt b/source/data/zone/en_JE.txt index b1fe588..f665bf2 100644 --- a/source/data/zone/en_JE.txt +++ b/source/data/zone/en_JE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_JE{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_JM.txt b/source/data/zone/en_JM.txt index b21c1a8..5ea01d1 100644 --- a/source/data/zone/en_JM.txt +++ b/source/data/zone/en_JM.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_JM{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_KE.txt b/source/data/zone/en_KE.txt index b266838..39da0c1 100644 --- a/source/data/zone/en_KE.txt +++ b/source/data/zone/en_KE.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KE{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_KI.txt b/source/data/zone/en_KI.txt index 5154257..6c4a2fb 100644 --- a/source/data/zone/en_KI.txt +++ b/source/data/zone/en_KI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KI{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_KN.txt b/source/data/zone/en_KN.txt index 3812274..fb3f8ec 100644 --- a/source/data/zone/en_KN.txt +++ b/source/data/zone/en_KN.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KN{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_KY.txt b/source/data/zone/en_KY.txt index d78d462..be44abe 100644 --- a/source/data/zone/en_KY.txt +++ b/source/data/zone/en_KY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_KY{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_LC.txt b/source/data/zone/en_LC.txt index ff73931..5dc4de3 100644 --- a/source/data/zone/en_LC.txt +++ b/source/data/zone/en_LC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_LC{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_LR.txt b/source/data/zone/en_LR.txt index c9a25a5..a7de1c0 100644 --- a/source/data/zone/en_LR.txt +++ b/source/data/zone/en_LR.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_LR{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_LS.txt b/source/data/zone/en_LS.txt index 9e4398a..91256f2 100644 --- a/source/data/zone/en_LS.txt +++ b/source/data/zone/en_LS.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_LS{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_MG.txt b/source/data/zone/en_MG.txt index 565c9af..26054cc 100644 --- a/source/data/zone/en_MG.txt +++ b/source/data/zone/en_MG.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MG{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_MH.txt b/source/data/zone/en_MH.txt index 6242632..aea8098 100644 --- a/source/data/zone/en_MH.txt +++ b/source/data/zone/en_MH.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_MH{ - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "Pacific:Honolulu"{ sd{"∅∅∅"} diff --git a/source/data/zone/en_MO.txt b/source/data/zone/en_MO.txt index ba9038a..c8e797c 100644 --- a/source/data/zone/en_MO.txt +++ b/source/data/zone/en_MO.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MO{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "meta:Hong_Kong"{ sd{"HKST"} diff --git a/source/data/zone/en_MP.txt b/source/data/zone/en_MP.txt index 7d96a12..c02a8bc 100644 --- a/source/data/zone/en_MP.txt +++ b/source/data/zone/en_MP.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License en_MP{ - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "Pacific:Honolulu"{ sd{"∅∅∅"} diff --git a/source/data/zone/en_MS.txt b/source/data/zone/en_MS.txt index c74d938..1730089 100644 --- a/source/data/zone/en_MS.txt +++ b/source/data/zone/en_MS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MS{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_MT.txt b/source/data/zone/en_MT.txt index 3a56120..2d36498 100644 --- a/source/data/zone/en_MT.txt +++ b/source/data/zone/en_MT.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MT{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} } diff --git a/source/data/zone/en_MU.txt b/source/data/zone/en_MU.txt index 033c7a3..dc3404f 100644 --- a/source/data/zone/en_MU.txt +++ b/source/data/zone/en_MU.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MU{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_MW.txt b/source/data/zone/en_MW.txt index 1392f9d..049b1da 100644 --- a/source/data/zone/en_MW.txt +++ b/source/data/zone/en_MW.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MW{ %%Parent{"en_001"} - Version{"2.1.47.69"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_MY.txt b/source/data/zone/en_MY.txt index 4599804..f0ab212 100644 --- a/source/data/zone/en_MY.txt +++ b/source/data/zone/en_MY.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_MY{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Malaysia"{ ss{"MYT"} diff --git a/source/data/zone/en_NA.txt b/source/data/zone/en_NA.txt index 7fdd4f1..1c72625 100644 --- a/source/data/zone/en_NA.txt +++ b/source/data/zone/en_NA.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NA{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_NF.txt b/source/data/zone/en_NF.txt index e4a866f..7442ce7 100644 --- a/source/data/zone/en_NF.txt +++ b/source/data/zone/en_NF.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NF{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_NG.txt b/source/data/zone/en_NG.txt index ce0ba10..cee340b 100644 --- a/source/data/zone/en_NG.txt +++ b/source/data/zone/en_NG.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NG{ %%Parent{"en_001"} - Version{"2.1.48.22"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_NL.txt b/source/data/zone/en_NL.txt index d804c44..d1a3ce6 100644 --- a/source/data/zone/en_NL.txt +++ b/source/data/zone/en_NL.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NL{ %%Parent{"en_150"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_NR.txt b/source/data/zone/en_NR.txt index 11f0346..4f75cd9 100644 --- a/source/data/zone/en_NR.txt +++ b/source/data/zone/en_NR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NR{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_NU.txt b/source/data/zone/en_NU.txt index 0601e0c..3386104 100644 --- a/source/data/zone/en_NU.txt +++ b/source/data/zone/en_NU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NU{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_NZ.txt b/source/data/zone/en_NZ.txt index 3d0fbea..9676794 100644 --- a/source/data/zone/en_NZ.txt +++ b/source/data/zone/en_NZ.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_NZ{ %%Parent{"en_001"} - Version{"2.1.47.86"} + Version{"36"} zoneStrings{ "meta:Australia_Central"{ sd{"ACDT"} diff --git a/source/data/zone/en_PG.txt b/source/data/zone/en_PG.txt index d23f260..e79232a 100644 --- a/source/data/zone/en_PG.txt +++ b/source/data/zone/en_PG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_PH.txt b/source/data/zone/en_PH.txt index 2f92678..ee1ba4a 100644 --- a/source/data/zone/en_PH.txt +++ b/source/data/zone/en_PH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PH{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_PK.txt b/source/data/zone/en_PK.txt index 5a18ead..e123870 100644 --- a/source/data/zone/en_PK.txt +++ b/source/data/zone/en_PK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PK{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_PN.txt b/source/data/zone/en_PN.txt index 63c9656..dcd8c7a 100644 --- a/source/data/zone/en_PN.txt +++ b/source/data/zone/en_PN.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PN{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_PW.txt b/source/data/zone/en_PW.txt index 525f171..ee4cfe8 100644 --- a/source/data/zone/en_PW.txt +++ b/source/data/zone/en_PW.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_PW{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_RW.txt b/source/data/zone/en_RW.txt index e5bffa7..fd28aed 100644 --- a/source/data/zone/en_RW.txt +++ b/source/data/zone/en_RW.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_RW{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_SB.txt b/source/data/zone/en_SB.txt index b6539ce..faca3e1 100644 --- a/source/data/zone/en_SB.txt +++ b/source/data/zone/en_SB.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SB{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_SC.txt b/source/data/zone/en_SC.txt index c81672e..4c8930d 100644 --- a/source/data/zone/en_SC.txt +++ b/source/data/zone/en_SC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SC{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_SD.txt b/source/data/zone/en_SD.txt index fd218b2..dc084d6 100644 --- a/source/data/zone/en_SD.txt +++ b/source/data/zone/en_SD.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SD{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_SE.txt b/source/data/zone/en_SE.txt index c2ac2a0..0c9af16 100644 --- a/source/data/zone/en_SE.txt +++ b/source/data/zone/en_SE.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SE{ %%Parent{"en_150"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_SG.txt b/source/data/zone/en_SG.txt index 189e30b..1878fd3 100644 --- a/source/data/zone/en_SG.txt +++ b/source/data/zone/en_SG.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Malaysia"{ ss{"MYT"} diff --git a/source/data/zone/en_SH.txt b/source/data/zone/en_SH.txt index ec801da..a51cad9 100644 --- a/source/data/zone/en_SH.txt +++ b/source/data/zone/en_SH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SH{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_SI.txt b/source/data/zone/en_SI.txt index 385b87b..aa1b540 100644 --- a/source/data/zone/en_SI.txt +++ b/source/data/zone/en_SI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SI{ %%Parent{"en_150"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_SL.txt b/source/data/zone/en_SL.txt index 27a3209..222448f 100644 --- a/source/data/zone/en_SL.txt +++ b/source/data/zone/en_SL.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SL{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_SS.txt b/source/data/zone/en_SS.txt index 856195f..42565fe 100644 --- a/source/data/zone/en_SS.txt +++ b/source/data/zone/en_SS.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SS{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_SX.txt b/source/data/zone/en_SX.txt index aef37fe..7b0bd2a 100644 --- a/source/data/zone/en_SX.txt +++ b/source/data/zone/en_SX.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SX{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_SZ.txt b/source/data/zone/en_SZ.txt index 010402f..604c7c6 100644 --- a/source/data/zone/en_SZ.txt +++ b/source/data/zone/en_SZ.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_SZ{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_TC.txt b/source/data/zone/en_TC.txt index 9d08e3a..96ba2bd 100644 --- a/source/data/zone/en_TC.txt +++ b/source/data/zone/en_TC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TC{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_TK.txt b/source/data/zone/en_TK.txt index 0d507ae..828cda3 100644 --- a/source/data/zone/en_TK.txt +++ b/source/data/zone/en_TK.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TK{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_TO.txt b/source/data/zone/en_TO.txt index a60d593..24b603f 100644 --- a/source/data/zone/en_TO.txt +++ b/source/data/zone/en_TO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TO{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_TT.txt b/source/data/zone/en_TT.txt index 06d76b3..17a4163 100644 --- a/source/data/zone/en_TT.txt +++ b/source/data/zone/en_TT.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TT{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_TV.txt b/source/data/zone/en_TV.txt index 7397675..898ad44 100644 --- a/source/data/zone/en_TV.txt +++ b/source/data/zone/en_TV.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TV{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_TZ.txt b/source/data/zone/en_TZ.txt index 4cb69f6..111cb2b 100644 --- a/source/data/zone/en_TZ.txt +++ b/source/data/zone/en_TZ.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_TZ{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_UG.txt b/source/data/zone/en_UG.txt index edc40c1..93ddc29 100644 --- a/source/data/zone/en_UG.txt +++ b/source/data/zone/en_UG.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_UG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_VC.txt b/source/data/zone/en_VC.txt index 482ec20..bf44e8e 100644 --- a/source/data/zone/en_VC.txt +++ b/source/data/zone/en_VC.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_VC{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_VG.txt b/source/data/zone/en_VG.txt index 8e90bec..6d0d305 100644 --- a/source/data/zone/en_VG.txt +++ b/source/data/zone/en_VG.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_VG{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_VU.txt b/source/data/zone/en_VU.txt index 069081e..f76028d 100644 --- a/source/data/zone/en_VU.txt +++ b/source/data/zone/en_VU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_VU{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_WS.txt b/source/data/zone/en_WS.txt index 07f56ef..eaa44ad 100644 --- a/source/data/zone/en_WS.txt +++ b/source/data/zone/en_WS.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_WS{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/en_ZA.txt b/source/data/zone/en_ZA.txt index 6c77e99..b5149be 100644 --- a/source/data/zone/en_ZA.txt +++ b/source/data/zone/en_ZA.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ZA{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_ZM.txt b/source/data/zone/en_ZM.txt index c5860b8..895e951 100644 --- a/source/data/zone/en_ZM.txt +++ b/source/data/zone/en_ZM.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ZM{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/en_ZW.txt b/source/data/zone/en_ZW.txt index d9fb338..6aca7e6 100644 --- a/source/data/zone/en_ZW.txt +++ b/source/data/zone/en_ZW.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License en_ZW{ %%Parent{"en_001"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Africa_Central"{ ss{"CAT"} diff --git a/source/data/zone/eo.txt b/source/data/zone/eo.txt index a03c14b..f4590d6 100644 --- a/source/data/zone/eo.txt +++ b/source/data/zone/eo.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License eo{ - Version{"2.1.49.33"} + Version{"36"} } diff --git a/source/data/zone/es.txt b/source/data/zone/es.txt index 65c8cb6..9e35dc9 100644 --- a/source/data/zone/es.txt +++ b/source/data/zone/es.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License es{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abiyán"} @@ -895,7 +895,7 @@ es{ ec{"Bermudas"} } "Atlantic:Canary"{ - ec{"Islas Canarias"} + ec{"Canarias"} } "Atlantic:Cape_Verde"{ ec{"Cabo Verde"} @@ -1545,7 +1545,7 @@ es{ ls{"hora de la Guayana Francesa"} } "meta:French_Southern"{ - ls{"hora de las Tierras Australes y Antárticas Francesas"} + ls{"hora de Antártida y Territorios Australes Franceses"} } "meta:GMT"{ ls{"hora del meridiano de Greenwich"} @@ -1729,7 +1729,7 @@ es{ ls{"hora estándar de Moscú"} } "meta:Myanmar"{ - ls{"hora de Myanmar (Birmania)"} + ls{"hora de Myanmar"} } "meta:Nauru"{ ls{"hora de Nauru"} diff --git a/source/data/zone/es_419.txt b/source/data/zone/es_419.txt index 955e5ac..c150868 100644 --- a/source/data/zone/es_419.txt +++ b/source/data/zone/es_419.txt @@ -1,25 +1,22 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License es_419{ - Version{"2.1.47.86"} + Version{"36"} zoneStrings{ - "Africa:Accra"{ - ec{"Accra"} - } "America:Fort_Nelson"{ ec{"Fuerte Nelson"} } "America:Nassau"{ ec{"Nasáu"} } - "America:Sao_Paulo"{ - ec{"San Pablo"} + "America:Santiago"{ + ec{"Santiago"} } "America:St_Thomas"{ ec{"Santo Tomás"} } - "Asia:Dushanbe"{ - ec{"Duchanbé"} + "Atlantic:Canary"{ + ec{"Islas Canarias"} } "Etc:UTC"{ ls{"Hora Universal Coordinada"} @@ -27,6 +24,9 @@ es_419{ "Europe:Busingen"{ ec{"Büsingen"} } + "Europe:Dublin"{ + ld{"hora estándar de Irlanda"} + } "Pacific:Wake"{ ec{"Isla Wake"} } @@ -77,6 +77,9 @@ es_419{ lg{"hora de las Islas Malvinas"} ls{"hora estándar de las Islas Malvinas"} } + "meta:French_Southern"{ + ls{"hora de las Tierras Australes y Antárticas Francesas"} + } "meta:GMT"{ ss{"∅∅∅"} } @@ -92,6 +95,9 @@ es_419{ "meta:Marshall_Islands"{ ls{"hora de Islas Marshall"} } + "meta:Myanmar"{ + ls{"hora de Myanmar (Birmania)"} + } "meta:Norfolk"{ ls{"hora de la Isla Norfolk"} } diff --git a/source/data/zone/es_AR.txt b/source/data/zone/es_AR.txt index 886fbfc..6790b67 100644 --- a/source/data/zone/es_AR.txt +++ b/source/data/zone/es_AR.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_AR{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Argentina"{ sd{"ARST"} diff --git a/source/data/zone/es_BO.txt b/source/data/zone/es_BO.txt index 4252c98..92cc4cb 100644 --- a/source/data/zone/es_BO.txt +++ b/source/data/zone/es_BO.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_BO{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Bolivia"{ ss{"BOT"} diff --git a/source/data/zone/es_BR.txt b/source/data/zone/es_BR.txt index f992acf..8a9f8fd 100644 --- a/source/data/zone/es_BR.txt +++ b/source/data/zone/es_BR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_BR{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/es_BZ.txt b/source/data/zone/es_BZ.txt index f18a98f..26aab70 100644 --- a/source/data/zone/es_BZ.txt +++ b/source/data/zone/es_BZ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_BZ{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/es_CL.txt b/source/data/zone/es_CL.txt index 7d82fc0..b01e14e 100644 --- a/source/data/zone/es_CL.txt +++ b/source/data/zone/es_CL.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_CL{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Chile"{ sd{"CLST"} diff --git a/source/data/zone/es_CO.txt b/source/data/zone/es_CO.txt index d4513b0..f661257 100644 --- a/source/data/zone/es_CO.txt +++ b/source/data/zone/es_CO.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_CO{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Colombia"{ sd{"COST"} diff --git a/source/data/zone/es_CR.txt b/source/data/zone/es_CR.txt index 67ba646..667c48f 100644 --- a/source/data/zone/es_CR.txt +++ b/source/data/zone/es_CR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_CR{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/es_CU.txt b/source/data/zone/es_CU.txt index 2224182..63dcde8 100644 --- a/source/data/zone/es_CU.txt +++ b/source/data/zone/es_CU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_CU{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/es_DO.txt b/source/data/zone/es_DO.txt index e15bada..cdfb400 100644 --- a/source/data/zone/es_DO.txt +++ b/source/data/zone/es_DO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_DO{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/es_EC.txt b/source/data/zone/es_EC.txt index fd97348..db2fcb7 100644 --- a/source/data/zone/es_EC.txt +++ b/source/data/zone/es_EC.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_EC{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Ecuador"{ ss{"ECT"} diff --git a/source/data/zone/es_GT.txt b/source/data/zone/es_GT.txt index c9999e4..ce9dbdc 100644 --- a/source/data/zone/es_GT.txt +++ b/source/data/zone/es_GT.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_GT{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/es_HN.txt b/source/data/zone/es_HN.txt index 47048c4..fcd3446 100644 --- a/source/data/zone/es_HN.txt +++ b/source/data/zone/es_HN.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_HN{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/es_MX.txt b/source/data/zone/es_MX.txt index a8e412f..fb9f334 100644 --- a/source/data/zone/es_MX.txt +++ b/source/data/zone/es_MX.txt @@ -2,11 +2,8 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_MX{ %%Parent{"es_419"} - Version{"2.1.47.96"} + Version{"36"} zoneStrings{ - "Africa:Accra"{ - ec{"Acra"} - } "Africa:Bujumbura"{ ec{"Buyumbura"} } @@ -22,15 +19,9 @@ es_MX{ "America:Fort_Nelson"{ ec{"Fort Nelson"} } - "America:Nassau"{ - ec{"Nassau"} - } "America:Rio_Branco"{ ec{"Rio Branco"} } - "America:Sao_Paulo"{ - ec{"São Paulo"} - } "America:St_Thomas"{ ec{"St. Thomas"} } @@ -43,20 +34,8 @@ es_MX{ "Asia:Atyrau"{ ec{"Atirau"} } - "Asia:Dushanbe"{ - ec{"Dusambé"} - } - "Asia:Pyongyang"{ - ec{"Piongyang"} - } - "Asia:Qatar"{ - ec{"Qatar"} - } "Etc:UTC"{ - ls{"Tiempo Universal Coordinado"} - } - "Europe:Kirov"{ - ec{"Kirov"} + ls{"hora universal coordinada"} } "Pacific:Honolulu"{ ec{"Honolulu"} @@ -69,10 +48,6 @@ es_MX{ lg{"hora de Apia"} ls{"hora estándar de Apia"} } - "meta:Argentina_Western"{ - lg{"hora de Argentina occidental"} - ls{"hora estándar de Argentina occidental"} - } "meta:Christmas"{ ls{"hora de la isla de Navidad"} } diff --git a/source/data/zone/es_NI.txt b/source/data/zone/es_NI.txt index b342ad0..20f7451 100644 --- a/source/data/zone/es_NI.txt +++ b/source/data/zone/es_NI.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_NI{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/es_PA.txt b/source/data/zone/es_PA.txt index 369947f..2c84896 100644 --- a/source/data/zone/es_PA.txt +++ b/source/data/zone/es_PA.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_PA{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/es_PE.txt b/source/data/zone/es_PE.txt index 4a40940..f42787d 100644 --- a/source/data/zone/es_PE.txt +++ b/source/data/zone/es_PE.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_PE{ %%Parent{"es_419"} - Version{"2.1.47.83"} + Version{"36"} zoneStrings{ "meta:Peru"{ sd{"PEST"} diff --git a/source/data/zone/es_PR.txt b/source/data/zone/es_PR.txt index a186886..cd3d8f1 100644 --- a/source/data/zone/es_PR.txt +++ b/source/data/zone/es_PR.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_PR{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/es_PY.txt b/source/data/zone/es_PY.txt index 1b249f8..28f6ee1 100644 --- a/source/data/zone/es_PY.txt +++ b/source/data/zone/es_PY.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_PY{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/es_SV.txt b/source/data/zone/es_SV.txt index f17ba3c..c7ce42b 100644 --- a/source/data/zone/es_SV.txt +++ b/source/data/zone/es_SV.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_SV{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} } diff --git a/source/data/zone/es_US.txt b/source/data/zone/es_US.txt index e7029e8..390c21b 100644 --- a/source/data/zone/es_US.txt +++ b/source/data/zone/es_US.txt @@ -2,28 +2,28 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_US{ %%Parent{"es_419"} - Version{"2.1.47.86"} + Version{"36"} zoneStrings{ - "Africa:Accra"{ - ec{"Acra"} - } "America:Fort_Nelson"{ ec{"Fort Nelson"} } "America:Nassau"{ ec{"Nassau"} } - "America:Sao_Paulo"{ - ec{"São Paulo"} + "America:Rio_Branco"{ + ec{"Rio Branco"} } "America:St_Thomas"{ ec{"St. Thomas"} } + "Asia:Almaty"{ + ec{"Almatý"} + } "Asia:Barnaul"{ ec{"Barnaul"} } - "Asia:Dushanbe"{ - ec{"Dusambé"} + "Asia:Pyongyang"{ + ec{"Piongyang"} } "Etc:UTC"{ ls{"hora universal coordinada"} @@ -38,10 +38,14 @@ es_US{ ec{"Ulyanovsk"} } "Pacific:Honolulu"{ + ec{"Honolulu"} sd{"HDT"} sg{"HST"} ss{"HST"} } + "Pacific:Wake"{ + ec{"Wake"} + } "meta:Alaska"{ sd{"AKDT"} sg{"AKT"} @@ -72,6 +76,8 @@ es_US{ } "meta:Apia"{ ld{"hora de verano de Apia"} + lg{"hora de Apia"} + ls{"hora estándar de Apia"} } "meta:Atlantic"{ sd{"ADT"} @@ -81,9 +87,17 @@ es_US{ "meta:Chamorro"{ ls{"hora de Chamorro"} } + "meta:Christmas"{ + ls{"hora de la isla de Navidad"} + } "meta:Cocos"{ ls{"hora de las Islas Cocos"} } + "meta:Cook"{ + ld{"hora de verano media de las Islas Cook"} + lg{"hora de las Islas Cook"} + ls{"hora estándar de las Islas Cook"} + } "meta:Easter"{ ld{"hora de verano de la isla de Pascua"} lg{"hora de la isla de Pascua"} @@ -118,6 +132,11 @@ es_US{ "meta:Indian_Ocean"{ ls{"hora del Océano Índico"} } + "meta:Irkutsk"{ + ld{"hora de verano de Irkutsh"} + lg{"hora de Irkutsk"} + ls{"hora estándar de Irkutsh"} + } "meta:Macquarie"{ ls{"hora de la isla Macquarie"} } diff --git a/source/data/zone/es_UY.txt b/source/data/zone/es_UY.txt index 1c394ef..0f22359 100644 --- a/source/data/zone/es_UY.txt +++ b/source/data/zone/es_UY.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_UY{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Uruguay"{ sd{"UYST"} diff --git a/source/data/zone/es_VE.txt b/source/data/zone/es_VE.txt index 9b5522f..e642c77 100644 --- a/source/data/zone/es_VE.txt +++ b/source/data/zone/es_VE.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License es_VE{ %%Parent{"es_419"} - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:Venezuela"{ ss{"VET"} diff --git a/source/data/zone/et.txt b/source/data/zone/et.txt index 0a23e47..4de57e6 100644 --- a/source/data/zone/et.txt +++ b/source/data/zone/et.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License et{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -1687,7 +1687,7 @@ et{ ls{"Magadani standardaeg"} } "meta:Malaysia"{ - ls{"Malaisia ​​aeg"} + ls{"Malaisia aeg"} } "meta:Maldives"{ ls{"Maldiivi aeg"} diff --git a/source/data/zone/eu.txt b/source/data/zone/eu.txt index afa477e..06b92ca 100644 --- a/source/data/zone/eu.txt +++ b/source/data/zone/eu.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License eu{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -768,9 +768,6 @@ eu{ "Asia:Kuwait"{ ec{"Kuwait"} } - "Asia:Macau"{ - ec{"Macao"} - } "Asia:Magadan"{ ec{"Magadan"} } @@ -952,7 +949,7 @@ eu{ ec{"Sydney"} } "Etc:UTC"{ - ls{"Ordu Unibertsal Koordinatua"} + ls{"ordu unibertsal koordinatua"} } "Etc:Unknown"{ ec{"Hiri ezezaguna"} diff --git a/source/data/zone/ewo.txt b/source/data/zone/ewo.txt index da263ca..cec0865 100644 --- a/source/data/zone/ewo.txt +++ b/source/data/zone/ewo.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ewo{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/fa.txt b/source/data/zone/fa.txt index 59ec4fb..1011544 100644 --- a/source/data/zone/fa.txt +++ b/source/data/zone/fa.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fa{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"آبیجان"} @@ -154,7 +154,7 @@ fa{ ec{"طرابلس"} } "Africa:Tunis"{ - ec{"شهر تونس"} + ec{"تونس"} } "Africa:Windhoek"{ ec{"ویندهوک"} @@ -1736,7 +1736,7 @@ fa{ ls{"وقت نیوئه"} } "meta:Norfolk"{ - ls{"وقت جزایر نورفولک"} + ls{"وقت جزیرهٔ نورفولک"} } "meta:Noronha"{ ld{"وقت تابستانی فرناندو دی نورونیا"} @@ -1805,7 +1805,7 @@ fa{ ls{"وقت عادی قیزیل‌اوردا"} } "meta:Reunion"{ - ls{"وقت ریونیون"} + ls{"وقت رئونیون"} } "meta:Rothera"{ ls{"وقت روترا"} diff --git a/source/data/zone/ff.txt b/source/data/zone/ff.txt index 7520648..781d55d 100644 --- a/source/data/zone/ff.txt +++ b/source/data/zone/ff.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/ff_Latn.txt b/source/data/zone/ff_Latn.txt index b0c2bc1..055ec0f 100644 --- a/source/data/zone/ff_Latn.txt +++ b/source/data/zone/ff_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ff_Latn{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/fi.txt b/source/data/zone/fi.txt index 5507429..3be360f 100644 --- a/source/data/zone/fi.txt +++ b/source/data/zone/fi.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fi{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} diff --git a/source/data/zone/fil.txt b/source/data/zone/fil.txt index dcf3b83..6a1e849 100644 --- a/source/data/zone/fil.txt +++ b/source/data/zone/fil.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fil{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} diff --git a/source/data/zone/fo.txt b/source/data/zone/fo.txt index de2c9dc..9587c57 100644 --- a/source/data/zone/fo.txt +++ b/source/data/zone/fo.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fo{ - Version{"2.1.48.9"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -810,6 +810,9 @@ fo{ "Asia:Qatar"{ ec{"Qatar"} } + "Asia:Qostanay"{ + ec{"Kostanay"} + } "Asia:Qyzylorda"{ ec{"Qyzylorda"} } diff --git a/source/data/zone/fr.txt b/source/data/zone/fr.txt index 0c9f988..e4bd5db 100644 --- a/source/data/zone/fr.txt +++ b/source/data/zone/fr.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} diff --git a/source/data/zone/fr_CA.txt b/source/data/zone/fr_CA.txt index 21da6f0..9f2ba77 100644 --- a/source/data/zone/fr_CA.txt +++ b/source/data/zone/fr_CA.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_CA{ - Version{"2.1.47.86"} + Version{"36"} zoneStrings{ "Africa:Ndjamena"{ ec{"Ndjamena"} @@ -39,9 +39,6 @@ fr_CA{ "Asia:Thimphu"{ ec{"Thimphou"} } - "Atlantic:Canary"{ - ec{"îles Canaries"} - } "Atlantic:Faeroe"{ ec{"îles Féroé"} } diff --git a/source/data/zone/fr_GF.txt b/source/data/zone/fr_GF.txt index 0830c95..2dbbfd2 100644 --- a/source/data/zone/fr_GF.txt +++ b/source/data/zone/fr_GF.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fr_GF{ - Version{"2.1.47.70"} + Version{"36"} zoneStrings{ "meta:French_Guiana"{ ss{"GFT"} diff --git a/source/data/zone/fur.txt b/source/data/zone/fur.txt index f5d6870..12e9ea9 100644 --- a/source/data/zone/fur.txt +++ b/source/data/zone/fur.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fur{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "America:New_York"{ ec{"Gnove York"} diff --git a/source/data/zone/fy.txt b/source/data/zone/fy.txt index 99efb9e..a710469 100644 --- a/source/data/zone/fy.txt +++ b/source/data/zone/fy.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License fy{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Africa:Addis_Ababa"{ ec{"Addis Abeba"} diff --git a/source/data/zone/ga.txt b/source/data/zone/ga.txt index 6b665a8..638a1d9 100644 --- a/source/data/zone/ga.txt +++ b/source/data/zone/ga.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ga{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} diff --git a/source/data/zone/gd.txt b/source/data/zone/gd.txt index 7d93837..bd74edf 100644 --- a/source/data/zone/gd.txt +++ b/source/data/zone/gd.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gd{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -810,6 +810,9 @@ gd{ "Asia:Qatar"{ ec{"Catar"} } + "Asia:Qostanay"{ + ec{"Qostanaı"} + } "Asia:Qyzylorda"{ ec{"Qızılorda"} } diff --git a/source/data/zone/gl.txt b/source/data/zone/gl.txt index f28b216..b470f13 100644 --- a/source/data/zone/gl.txt +++ b/source/data/zone/gl.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gl{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -168,9 +168,6 @@ gl{ "America:Anguilla"{ ec{"Anguila"} } - "America:Antigua"{ - ec{"Antiga"} - } "America:Araguaina"{ ec{"Araguaína"} } @@ -250,7 +247,7 @@ gl{ ec{"Caiena"} } "America:Cayman"{ - ec{"Caimán"} + ec{"Illas Caimán"} } "America:Chicago"{ ec{"Chicago"} @@ -628,7 +625,7 @@ gl{ ec{"Rothera"} } "Antarctica:Syowa"{ - ec{"Syowa"} + ec{"Showa"} } "Antarctica:Troll"{ ec{"Troll"} @@ -810,6 +807,9 @@ gl{ "Asia:Qatar"{ ec{"Qatar"} } + "Asia:Qostanay"{ + ec{"Qostanai"} + } "Asia:Qyzylorda"{ ec{"Kyzylorda"} } @@ -823,7 +823,7 @@ gl{ ec{"Ho Chi Minh"} } "Asia:Sakhalin"{ - ec{"Sakhalin"} + ec{"Sakhalín"} } "Asia:Samarkand"{ ec{"Samarcanda"} @@ -852,9 +852,6 @@ gl{ "Asia:Tehran"{ ec{"Teherán"} } - "Asia:Thimphu"{ - ec{"Thimbu"} - } "Asia:Tokyo"{ ec{"Tokyo"} } @@ -865,7 +862,7 @@ gl{ ec{"Ulaanbaatar"} } "Asia:Urumqi"{ - ec{"Urumqi"} + ec{"Ürümqi"} } "Asia:Ust-Nera"{ ec{"Ust-Nera"} @@ -889,7 +886,7 @@ gl{ ec{"Azores"} } "Atlantic:Bermuda"{ - ec{"Bermudas"} + ec{"Illas Bermudas"} } "Atlantic:Canary"{ ec{"Illas Canarias"} @@ -958,7 +955,7 @@ gl{ ec{"Cidade descoñecida"} } "Europe:Amsterdam"{ - ec{"Ámsterdan"} + ec{"Ámsterdam"} } "Europe:Andorra"{ ec{"Andorra"} @@ -1083,7 +1080,7 @@ gl{ ec{"San Marino"} } "Europe:Sarajevo"{ - ec{"Saraxevo"} + ec{"Saraievo"} } "Europe:Saratov"{ ec{"Saratov"} @@ -1110,7 +1107,7 @@ gl{ ec{"Ulianovsk"} } "Europe:Uzhgorod"{ - ec{"Úzhgorod"} + ec{"Uzghorod"} } "Europe:Vaduz"{ ec{"Vaduz"} @@ -1146,13 +1143,13 @@ gl{ ec{"Chagos"} } "Indian:Christmas"{ - ec{"Illa de Nadal"} + ec{"Illa Christmas"} } "Indian:Cocos"{ ec{"Cocos"} } "Indian:Comoro"{ - ec{"Illas Comores"} + ec{"Comores"} } "Indian:Kerguelen"{ ec{"Kerguelen"} @@ -1197,7 +1194,7 @@ gl{ ec{"Fakaofo"} } "Pacific:Fiji"{ - ec{"Fidxi"} + ec{"Fixi"} } "Pacific:Funafuti"{ ec{"Funafuti"} @@ -1299,7 +1296,7 @@ gl{ ls{"Horario de África Oriental"} } "meta:Africa_Southern"{ - ls{"Horario estándar de África do Sur"} + ls{"Horario de África Meridional"} } "meta:Africa_Western"{ ld{"Horario de verán de África Occidental"} @@ -1322,19 +1319,19 @@ gl{ ls{"Horario estándar central, Norteamérica"} } "meta:America_Eastern"{ - ld{"Horario de verán do leste, Norteamérica"} - lg{"Horario do leste, Norteamérica"} - ls{"Horario estándar do leste, Norteamérica"} + ld{"Horario de verán do leste, América do Norte"} + lg{"Horario do leste, América do Norte"} + ls{"Horario estándar do leste, América do Norte"} } "meta:America_Mountain"{ - ld{"Horario de verán da montaña, Norteamérica"} - lg{"Horario da montaña, Norteamérica"} - ls{"Horario estándar da montaña, Norteamérica"} + ld{"Horario de verán da montaña, América do Norte"} + lg{"Horario da montaña, América do Norte"} + ls{"Horario estándar da montaña, América do Norte"} } "meta:America_Pacific"{ - ld{"Horario de verán do Pacífico, Norteamérica"} - lg{"Horario do Pacífico, Norteamérica"} - ls{"Horario estándar do Pacífico, Norteamérica"} + ld{"Horario de verán do Pacífico, América do Norte"} + lg{"Horario do Pacífico, América do Norte"} + ls{"Horario estándar do Pacífico, América do Norte"} } "meta:Anadyr"{ ld{"Horario de verán de Anadir"} @@ -1397,9 +1394,9 @@ gl{ ls{"Horario estándar de Acerbaixán"} } "meta:Azores"{ - ld{"Horario de verán das Azores"} - lg{"Horario das Azores"} - ls{"Horario estándar das Azores"} + ld{"Horario de verán dos Azores"} + lg{"Horario dos Azores"} + ls{"Horario estándar dos Azores"} } "meta:Bangladesh"{ ld{"Horario de verán de Bangladesh"} @@ -1449,7 +1446,7 @@ gl{ ls{"Horario estándar de Choibalsan"} } "meta:Christmas"{ - ls{"Horario da Illa de Nadal"} + ls{"Horario da Illa Christmas"} } "meta:Cocos"{ ls{"Horario das Illas Cocos"} @@ -1519,9 +1516,9 @@ gl{ ls{"Horario estándar das Illas Malvinas"} } "meta:Fiji"{ - ld{"Horario de verán de Fidxi"} - lg{"Horario de Fidxi"} - ls{"Horario estándar de Fidxi"} + ld{"Horario de verán de Fixi"} + lg{"Horario de Fixi"} + ls{"Horario estándar de Fixi"} } "meta:French_Guiana"{ ls{"Horario da Güiana Francesa"} @@ -1558,15 +1555,15 @@ gl{ ls{"Horario estándar de Groenlandia Occidental"} } "meta:Gulf"{ - ls{"Horario estándar do Golfo"} + ls{"Horario do Golfo"} } "meta:Guyana"{ ls{"Horario da Güiana"} } "meta:Hawaii_Aleutian"{ - ld{"Horario de verán de Hawai-Aleutiano"} - lg{"Horario de Hawai-Aleutiano"} - ls{"Horario estándar de Hawai-Aleutiano"} + ld{"Horario de verán de Hawai-illas Aleutianas"} + lg{"Horario de Hawai-illas Aleutianas"} + ls{"Horario estándar de Hawai-illas Aleutianas"} } "meta:Hong_Kong"{ ld{"Horario de verán de Hong Kong"} @@ -1579,7 +1576,7 @@ gl{ ls{"Horario estándar de Hovd"} } "meta:India"{ - ls{"Horario estándar da India"} + ls{"Horario da India"} } "meta:Indian_Ocean"{ ls{"Horario do Océano Índico"} @@ -1622,10 +1619,10 @@ gl{ ls{"Horario estándar de Petropávlovsk-Kamchatski"} } "meta:Kazakhstan_Eastern"{ - ls{"Horario de Casaquistán Oriental"} + ls{"Horario de Kazakistán Oriental"} } "meta:Kazakhstan_Western"{ - ls{"Horario de Casaquistán Occidental"} + ls{"Horario de Kazakistán Occidental"} } "meta:Korea"{ ld{"Horario de verán de Corea"} @@ -1636,9 +1633,9 @@ gl{ ls{"Horario de Kosrae"} } "meta:Krasnoyarsk"{ - ld{"Horario de verán de Krasnoyarsk"} - lg{"Horario de Krasnoyarsk"} - ls{"Horario estándar de Krasnoyarsk"} + ld{"Horario de verán de Krasnoiarsk"} + lg{"Horario de Krasnoiarsk"} + ls{"Horario estándar de Krasnoiarsk"} } "meta:Kyrgystan"{ ls{"Horario de Kirguizistán"} @@ -1700,7 +1697,7 @@ gl{ ls{"Horario estándar de Moscova"} } "meta:Myanmar"{ - ls{"Horario de Birmania"} + ls{"Horario de Myanmar"} } "meta:Nauru"{ ls{"Horario de Nauru"} @@ -1719,15 +1716,15 @@ gl{ ls{"Horario estándar de Nova Zelandia"} } "meta:Newfoundland"{ - ld{"Horario de verán de Terranova"} - lg{"Horario de Terranova"} - ls{"Horario estándar de Terranova"} + ld{"Horario de verán de Terra Nova"} + lg{"Horario de Terra Nova"} + ls{"Horario estándar de Terra Nova"} } "meta:Niue"{ ls{"Horario de Niue"} } "meta:Norfolk"{ - ls{"Horario das Illas Norfolk"} + ls{"Horario da Illa Norfolk"} } "meta:Noronha"{ ld{"Horario de verán de Fernando de Noronha"} @@ -1756,9 +1753,9 @@ gl{ ls{"Horario de Papúa-Nova Guinea"} } "meta:Paraguay"{ - ld{"Horario de verán de Paraguai"} - lg{"Horario de Paraguai"} - ls{"Horario estándar de Paraguai"} + ld{"Horario de verán do Paraguai"} + lg{"Horario do Paraguai"} + ls{"Horario estándar do Paraguai"} } "meta:Peru"{ ld{"Horario de verán do Perú"} @@ -1794,8 +1791,8 @@ gl{ ls{"Horario de Rothera"} } "meta:Sakhalin"{ - ld{"Horario de verán de Sakhalin"} - lg{"Horario de Sakhalin"} + ld{"Horario de verán de Sakhalín"} + lg{"Horario de Sakhalín"} ls{"Horario estándar de Sakhalín"} } "meta:Samara"{ @@ -1812,7 +1809,7 @@ gl{ ls{"Horario das Seychelles"} } "meta:Singapore"{ - ls{"Horario estándar de Singapur"} + ls{"Horario de Singapur"} } "meta:Solomon"{ ls{"Horario das Illas Salomón"} @@ -1849,9 +1846,9 @@ gl{ ls{"Horario de Chuuk"} } "meta:Turkmenistan"{ - ld{"Horario de verán de Turcomenistán"} - lg{"Horario de Turcomenistán"} - ls{"Horario estándar de Turcomenistán"} + ld{"Horario de verán de Turkmenistán"} + lg{"Horario de Turkmenistán"} + ls{"Horario estándar de Turkmenistán"} } "meta:Tuvalu"{ ls{"Horario de Tuvalu"} @@ -1862,9 +1859,9 @@ gl{ ls{"Horario estándar do Uruguai"} } "meta:Uzbekistan"{ - ld{"Horario de verán de Uzbequistán"} - lg{"Horario de Uzbequistán"} - ls{"Horario estándar de Uzbequistán"} + ld{"Horario de verán de Uzbekistán"} + lg{"Horario de Uzbekistán"} + ls{"Horario estándar de Uzbekistán"} } "meta:Vanuatu"{ ld{"Horario de verán de Vanuatu"} diff --git a/source/data/zone/gsw.txt b/source/data/zone/gsw.txt index 3b5c726..c87ec50 100644 --- a/source/data/zone/gsw.txt +++ b/source/data/zone/gsw.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gsw{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Africa:Accra"{ ec{"Akkra"} diff --git a/source/data/zone/gu.txt b/source/data/zone/gu.txt index d9f6ee0..5ff4dac 100644 --- a/source/data/zone/gu.txt +++ b/source/data/zone/gu.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gu{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"આબિદ્જાન"} @@ -607,7 +607,7 @@ gu{ ec{"કૅસી"} } "Antarctica:Davis"{ - ec{"ડૅવિસ"} + ec{"ડેવિસ"} } "Antarctica:DumontDUrville"{ ec{"દુમોન્ત દી‘ઉર્વિલ"} @@ -910,7 +910,7 @@ gu{ ec{"રૅકયાવિક"} } "Atlantic:South_Georgia"{ - ec{"સાઉથ જ્યોર્જિયા"} + ec{"દક્ષિણ જ્યોર્જિયા"} } "Atlantic:St_Helena"{ ec{"સેંટ હેલેના"} @@ -1152,7 +1152,7 @@ gu{ ec{"ક્રિસમસ"} } "Indian:Cocos"{ - ec{"કૉકોસ"} + ec{"કોકોઝ"} } "Indian:Comoro"{ ec{"કોમોરો"} @@ -1173,7 +1173,7 @@ gu{ ec{"મેયોટ"} } "Indian:Reunion"{ - ec{"રિયુનિયન"} + ec{"રીયુનિયન"} } "Pacific:Apia"{ ec{"એપિયા"} @@ -1396,23 +1396,23 @@ gu{ } "meta:Australia_Central"{ ld{"ઓસ્ટ્રેલિયન કેન્દ્રીય દિવસ સમય"} - lg{"કેન્દ્રીય ઓસ્ટ્રેલિયન સમય"} - ls{"ઓસ્ટ્રેલિયન કેન્દ્રીય માનક સમય"} + lg{"કેન્દ્રીય ઑસ્ટ્રેલિયન સમય"} + ls{"ઑસ્ટ્રેલિયન કેન્દ્રીય માનક સમય"} } "meta:Australia_CentralWestern"{ ld{"ઓસ્ટ્રેલિયન કેન્દ્રીય પશ્ચિમી દિવસ સમય"} - lg{"ઓસ્ટ્રેલિયન કેન્દ્રીય પશ્ચિમી સમય"} - ls{"ઓસ્ટ્રેલિયન કેન્દ્રીય પશ્ચિમી માનક સમય"} + lg{"ઑસ્ટ્રેલિયન કેન્દ્રીય પશ્ચિમી સમય"} + ls{"ઑસ્ટ્રેલિયન કેન્દ્રીય પશ્ચિમી માનક સમય"} } "meta:Australia_Eastern"{ ld{"ઓસ્ટ્રેલિયન પૂર્વીય દિવસ સમય"} - lg{"પૂર્વીય ઓસ્ટ્રેલિયા સમય"} - ls{"ઓસ્ટ્રેલિયન પૂર્વીય માનક સમય"} + lg{"પૂર્વીય ઑસ્ટ્રેલિયા સમય"} + ls{"ઑસ્ટ્રેલિયન પૂર્વીય માનક સમય"} } "meta:Australia_Western"{ ld{"ઓસ્ટ્રેલિયન પશ્ચિમી દિવસ સમય"} - lg{"પશ્ચિમી ઓસ્ટ્રેલિયા સમય"} - ls{"ઓસ્ટ્રેલિયન પશ્ચિમી માનક સમય"} + lg{"પશ્ચિમી ઑસ્ટ્રેલિયા સમય"} + ls{"ઑસ્ટ્રેલિયન પશ્ચિમી માનક સમય"} } "meta:Azerbaijan"{ ld{"અઝરબૈજાન ગ્રીષ્મ સમય"} @@ -1441,7 +1441,7 @@ gu{ ls{"બ્રાઝિલિયા માનક સમય"} } "meta:Brunei"{ - ls{"બ્રૂનેઈ દારુસલામ સમય"} + ls{"બ્રુનેઇ દરુસલામ સમય"} } "meta:Cape_Verde"{ ld{"કૅપ વર્ડે ગ્રીષ્મ સમય"} @@ -1478,9 +1478,9 @@ gu{ ls{"કોકોઝ આઇલેન્ડ્સ સમય"} } "meta:Colombia"{ - ld{"કોલંબિયા ગ્રીષ્મ સમય"} - lg{"કોલંબિયા સમય"} - ls{"કોલંબિયા માનક સમય"} + ld{"કોલમ્બિયા ગ્રીષ્મ સમય"} + lg{"કોલમ્બિયા સમય"} + ls{"કોલમ્બિયા માનક સમય"} } "meta:Cook"{ ld{"કુક આઇલેન્ડ્સ અર્ધ ગ્રીષ્મ સમય"} @@ -1528,9 +1528,9 @@ gu{ ls{"પશ્ચિમી યુરોપિયન માનક સમય"} } "meta:Falkland"{ - ld{"ફોકલૅંડ આઇલેન્ડ્સ ગ્રીષ્મ સમય"} - lg{"ફોકલૅંડ આઇલેન્ડ્સ સમય"} - ls{"ફોકલૅંડ આઇલેન્ડ્સ માનક સમય"} + ld{"ફૉકલેન્ડ આઇલેન્ડ્સ ગ્રીષ્મ સમય"} + lg{"ફૉકલેન્ડ આઇલેન્ડ્સ સમય"} + ls{"ફૉકલેન્ડ આઇલેન્ડ્સ માનક સમય"} } "meta:Fiji"{ ld{"ફીજી ગ્રીષ્મ સમય"} @@ -1658,7 +1658,7 @@ gu{ ls{"ક્રેસ્નોયાર્સ્ક માનક સમય"} } "meta:Kyrgystan"{ - ls{"કિર્ગિઝતાન સમય"} + ls{"કિર્ગિઝ્સ્તાન સમય"} } "meta:Lanka"{ ls{"લંકા સમય"} @@ -1851,7 +1851,7 @@ gu{ ls{"સોલોમન આઇલેન્ડ્સ સમય"} } "meta:South_Georgia"{ - ls{"સાઉથ જ્યોર્જિયા સમય"} + ls{"દક્ષિણ જ્યોર્જિયા સમય"} } "meta:Suriname"{ ls{"સુરીનામ સમય"} diff --git a/source/data/zone/guz.txt b/source/data/zone/guz.txt index be4d731..c4f6de4 100644 --- a/source/data/zone/guz.txt +++ b/source/data/zone/guz.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License guz{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/gv.txt b/source/data/zone/gv.txt index 8acf062..ff18706 100644 --- a/source/data/zone/gv.txt +++ b/source/data/zone/gv.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License gv{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/ha.txt b/source/data/zone/ha.txt index 72d18eb..2f0b6ac 100644 --- a/source/data/zone/ha.txt +++ b/source/data/zone/ha.txt @@ -1,432 +1,546 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ha{ - Version{"2.1.48.45"} + Version{"36"} zoneStrings{ - "America:Adak"{ - ec{"Adak"} - } - "America:Anchorage"{ - ec{"Anchorage"} - } - "America:Anguilla"{ - ec{"Anguilla"} - } - "America:Antigua"{ - ec{"Antigua"} - } - "America:Aruba"{ - ec{"Aruba"} - } - "America:Bahia_Banderas"{ - ec{"Bahia Banderas"} - } - "America:Barbados"{ - ec{"Barbados"} - } - "America:Belize"{ - ec{"Belize"} - } - "America:Blanc-Sablon"{ - ec{"Blanc-Sablon"} - } - "America:Boise"{ - ec{"Boise"} - } - "America:Cambridge_Bay"{ - ec{"Cambridge Bay"} + "America:North_Dakota:Beulah"{ + ec{"Beulah, Arewacin Dakota"} } - "America:Cancun"{ - ec{"Cancun"} + "America:North_Dakota:Center"{ + ec{"Center, Arewacin Dakota"} } - "America:Cayman"{ - ec{"Cayman"} + "America:North_Dakota:New_Salem"{ + ec{"New Salem, Arewacin Dakota"} } - "America:Chicago"{ - ec{"Chicago"} + "Asia:Aden"{ + ec{"Aden"} } - "America:Chihuahua"{ - ec{"Chihuahua"} + "Asia:Amman"{ + ec{"Amman"} } - "America:Coral_Harbour"{ - ec{"Atikokan"} + "Asia:Baghdad"{ + ec{"Baghdad"} } - "America:Costa_Rica"{ - ec{"Costa Rica"} + "Asia:Bahrain"{ + ec{"Bahrain"} } - "America:Creston"{ - ec{"Creston"} + "Asia:Baku"{ + ec{"Baku"} } - "America:Curacao"{ - ec{"Curacao"} + "Asia:Bangkok"{ + ec{"Bangkok"} } - "America:Danmarkshavn"{ - ec{"Danmarkshavn"} + "Asia:Beirut"{ + ec{"Beirut"} } - "America:Dawson"{ - ec{"Dawson"} + "Etc:UTC"{ + ls{"Hadewa Lokaci na Duniya"} } - "America:Dawson_Creek"{ - ec{"Dawson Creek"} + "Etc:Unknown"{ + ec{"Birni da ba a sani ba"} } - "America:Denver"{ - ec{"Denver"} + "meta:Afghanistan"{ + ls{"Afghanistan Time"} } - "America:Detroit"{ - ec{"Detroit"} + "meta:Africa_Central"{ + ls{"Central Africa Time"} } - "America:Dominica"{ - ec{"Dominica"} + "meta:Africa_Eastern"{ + ls{"East Africa Time"} } - "America:Edmonton"{ - ec{"Edmonton"} + "meta:Africa_Southern"{ + ls{"South Africa Standard Time"} } - "America:El_Salvador"{ - ec{"El Salvador"} + "meta:Africa_Western"{ + ld{"West Africa Summer Time"} + lg{"West Africa Time"} + ls{"West Africa Standard Time"} } - "America:Fort_Nelson"{ - ec{"Fort Nelson"} + "meta:Alaska"{ + ld{"Lokacin Rana na Alaska"} + lg{"Lokacin Alaska"} + ls{"Tsayayyen Lokacin Alaska"} } - "America:Glace_Bay"{ - ec{"Glace Bay"} + "meta:America_Central"{ + ld{"Lokacin Rana dake Arewacin Amurika ta Tsakiya"} + lg{"Lokaci dake Amurika arewa ta tsakiyar"} + ls{"Tsayayyen Lokaci dake Arewacin Amurika ta Tsakiya"} } - "America:Godthab"{ - ec{"Nuuk"} + "meta:America_Eastern"{ + ld{"Lokacin Rana ta Gabas dake Arewacin Amurika"} + lg{"Lokacin Gabas dake Arewacin Amurikaa"} + ls{"Tsayayyen Lokacin Gabas dake Arewacin Amurika"} } - "America:Goose_Bay"{ - ec{"Goose Bay"} + "meta:America_Mountain"{ + ld{"Lokaci rana tsauni a arewacin da Amirka"} + lg{"Lokaci tsauni a arewacin da Amirka"} + ls{"Lokaci tsayayye na tsauni a Arewacin Amurica"} } - "America:Grand_Turk"{ - ec{"Grand Turk"} + "meta:America_Pacific"{ + ld{"Lokaci da rana a Arewacin Amurika"} + lg{"Lokacin Arewacin Amurika"} + ls{"Lokaci Tsayayye na Arewacin Amurika"} } - "America:Grenada"{ - ec{"Grenada"} + "meta:Apia"{ + ld{"Apia Daylight Time"} + lg{"Apia Time"} + ls{"Apia Standard Time"} } - "America:Guadeloupe"{ - ec{"Guadeloupe"} + "meta:Arabian"{ + ld{"Arabian Daylight Time"} + lg{"Arabian Time"} + ls{"Arabian Standard Time"} } - "America:Guatemala"{ - ec{"Guatemala"} + "meta:Armenia"{ + ld{"Armenia Summer Time"} + lg{"Armenia Time"} + ls{"Armenia Standard Time"} } - "America:Halifax"{ - ec{"Halifax"} + "meta:Atlantic"{ + ld{"Lokacin Rana na Kanada, Puerto Rico da Virgin Islands"} + lg{"Lokacin Kanada, Puerto Rico da Virgin Islands"} + ls{"Lokaci Tsayayye na Kanada, Puerto Rico da Virgin Islands"} + } + "meta:Australia_Central"{ + ld{"Australian Central Daylight Time"} + lg{"Central Australia Time"} + ls{"Australian Central Standard Time"} + } + "meta:Australia_CentralWestern"{ + ld{"Australian Central Western Daylight Time"} + lg{"Australian Central Western Time"} + ls{"Australian Central Western Standard Time"} + } + "meta:Australia_Eastern"{ + ld{"Australian Eastern Daylight Time"} + lg{"Eastern Australia Time"} + ls{"Australian Eastern Standard Time"} + } + "meta:Australia_Western"{ + ld{"Australian Western Daylight Time"} + lg{"Western Australia Time"} + ls{"Australian Western Standard Time"} + } + "meta:Azerbaijan"{ + ld{"Azerbaijan Summer Time"} + lg{"Azerbaijan Time"} + ls{"Azerbaijan Standard Time"} + } + "meta:Azores"{ + ld{"Azores Summer Time"} + lg{"Azores Time"} + ls{"Azores Standard Time"} + } + "meta:Bangladesh"{ + ld{"Bangladesh Summer Time"} + lg{"Bangladesh Time"} + ls{"Bangladesh Standard Time"} + } + "meta:Bhutan"{ + ls{"Bhutan Time"} + } + "meta:Brunei"{ + ls{"Brunei Darussalam Time"} + } + "meta:Cape_Verde"{ + ld{"Cape Verde Summer Time"} + lg{"Cape Verde Time"} + ls{"Cape Verde Standard Time"} + } + "meta:Chamorro"{ + ls{"Chamorro Standard Time"} + } + "meta:Chatham"{ + ld{"Chatham Daylight Time"} + lg{"Chatham Time"} + ls{"Chatham Standard Time"} + } + "meta:China"{ + ld{"China Daylight Time"} + lg{"China Time"} + ls{"China Standard Time"} + } + "meta:Choibalsan"{ + ld{"Choibalsan Summer Time"} + lg{"Choibalsan Time"} + ls{"Choibalsan Standard Time"} + } + "meta:Christmas"{ + ls{"Christmas Island Time"} + } + "meta:Cocos"{ + ls{"Cocos Islands Time"} + } + "meta:Cook"{ + ld{"Cook Islands Half Summer Time"} + lg{"Cook Islands Time"} + ls{"Cook Islands Standard Time"} } - "America:Havana"{ - ec{"Havana"} + "meta:Cuba"{ + ld{"Lokaci rana ta Kuba"} + lg{"Lokaci ta Kuba"} + ls{"Lokaci Tsayayye na Kuba"} } - "America:Hermosillo"{ - ec{"Hermosillo"} + "meta:Davis"{ + ls{"Davis Time"} } - "America:Indiana:Knox"{ - ec{"Knox, Indiana"} + "meta:DumontDUrville"{ + ls{"Dumont-d’Urville Time"} } - "America:Indiana:Marengo"{ - ec{"Marengo, Indiana"} + "meta:East_Timor"{ + ls{"East Timor Time"} } - "America:Indiana:Petersburg"{ - ec{"Petersburg, Indiana"} + "meta:Europe_Central"{ + ld{"Tsakiyar bazara a lokaci turai"} + lg{"Tsakiyar a lokaci turai"} + ls{"Ida Tsakiyar a Lokaci Turai"} } - "America:Indiana:Tell_City"{ - ec{"Tell City, Indiana"} + "meta:Europe_Eastern"{ + ld{"Gabas a lokaci turai da bazara"} + lg{"Lokaci a turai gabas"} + ls{"Ida lokaci a turai gabas"} } - "America:Indiana:Vevay"{ - ec{"Vevay, Indiana"} + "meta:Europe_Western"{ + ld{"Ida lokaci ta yammacin turai da bazara"} + lg{"Lokaci ta yammacin turai"} + ls{"Ida lokaci ta yammacin turai"} } - "America:Indiana:Vincennes"{ - ec{"Vincennes, Indiana"} + "meta:Fiji"{ + ld{"Fiji Summer Time"} + lg{"Fiji Time"} + ls{"Fiji Standard Time"} } - "America:Indiana:Winamac"{ - ec{"Winamac, Indiana"} + "meta:French_Southern"{ + ls{"French Southern & Antarctic Time"} } - "America:Indianapolis"{ - ec{"Indianapolis"} + "meta:GMT"{ + ls{"Lokacin Greenwhich a London"} } - "America:Inuvik"{ - ec{"Inuvik"} + "meta:Gambier"{ + ls{"Gambier Time"} } - "America:Iqaluit"{ - ec{"Iqaluit"} + "meta:Georgia"{ + ld{"Georgia Summer Time"} + lg{"Georgia Time"} + ls{"Georgia Standard Time"} } - "America:Jamaica"{ - ec{"Jamaica"} + "meta:Gilbert_Islands"{ + ls{"Gilbert Islands Time"} } - "America:Juneau"{ - ec{"Juneau"} + "meta:Greenland_Eastern"{ + ld{"Lokaci rana a gabas ta Greeland"} + lg{"Lokaci a gabas ta Greeland"} + ls{"Lokaci Tsayayye a gabashin ta Greenland"} } - "America:Kentucky:Monticello"{ - ec{"Monticello, Kentucky"} + "meta:Greenland_Western"{ + ld{"Lokacin rana a yammacin Greeland"} + lg{"Lokaci a yammacin Greeland"} + ls{"Lokaci Tsayayye a yammacin Greeland"} } - "America:Kralendijk"{ - ec{"Kralendijk"} + "meta:Gulf"{ + ls{ + "Gulf Standard Time [translation hint: translate as just \u0022Gulf T" + "ime\u0022]" + } } - "America:Los_Angeles"{ - ec{"Los Angeles"} + "meta:Hawaii_Aleutian"{ + ld{"Lokaci rana ta Hawaii-Aleutian"} + lg{"Lokaci ta Hawaii-Aleutian"} + ls{"Ida Lokaci ta Hawaii-Aleutian"} } - "America:Louisville"{ - ec{"Louisville"} + "meta:Hong_Kong"{ + ld{"Hong Kong Summer Time"} + lg{"Hong Kong Time"} + ls{"Hong Kong Standard Time"} } - "America:Lower_Princes"{ - ec{"Lower Prince’s Quarter"} + "meta:Hovd"{ + ld{"Hovd Summer Time"} + lg{"Hovd Time"} + ls{"Hovd Standard Time"} } - "America:Managua"{ - ec{"Managua"} + "meta:India"{ + ls{"India Standard Time"} } - "America:Marigot"{ - ec{"Marigot"} + "meta:Indian_Ocean"{ + ls{"Indian Ocean Time"} } - "America:Martinique"{ - ec{"Martinique"} + "meta:Indochina"{ + ls{"Indochina Time"} } - "America:Matamoros"{ - ec{"Matamoros"} + "meta:Indonesia_Central"{ + ls{"Central Indonesia Time"} } - "America:Mazatlan"{ - ec{"Mazatlan"} + "meta:Indonesia_Eastern"{ + ls{"Eastern Indonesia Time"} } - "America:Menominee"{ - ec{"Menominee"} + "meta:Indonesia_Western"{ + ls{"Western Indonesia Time"} } - "America:Merida"{ - ec{"Merida"} + "meta:Iran"{ + ld{"Iran Daylight Time"} + lg{"Iran Time"} + ls{"Iran Standard Time"} } - "America:Metlakatla"{ - ec{"Metlakatla"} + "meta:Irkutsk"{ + ld{"Irkutsk Summer Time"} + lg{"Irkutsk Time"} + ls{"Irkutsk Standard Time"} } - "America:Mexico_City"{ - ec{"Mexico City"} + "meta:Israel"{ + ld{"Israel Daylight Time"} + lg{"Israel Time"} + ls{"Israel Standard Time"} } - "America:Miquelon"{ - ec{"Miquelon"} + "meta:Japan"{ + ld{"Japan Daylight Time"} + lg{"Japan Time"} + ls{"Japan Standard Time"} } - "America:Moncton"{ - ec{"Moncton"} + "meta:Kazakhstan_Eastern"{ + ls{"East Kazakhstan Time"} } - "America:Monterrey"{ - ec{"Monterrey"} + "meta:Kazakhstan_Western"{ + ls{"West Kazakhstan Time"} } - "America:Montserrat"{ - ec{"Montserrat"} + "meta:Korea"{ + ld{"Korean Daylight Time"} + lg{"Korean Time"} + ls{"Korean Standard Time"} } - "America:Nassau"{ - ec{"Nassau"} + "meta:Kosrae"{ + ls{"Kosrae Time"} } - "America:New_York"{ - ec{"New York"} + "meta:Krasnoyarsk"{ + ld{"Krasnoyarsk Summer Time"} + lg{"Krasnoyarsk Time"} + ls{"Krasnoyarsk Standard Time"} } - "America:Nipigon"{ - ec{"Nipigon"} + "meta:Kyrgystan"{ + ls{"Kyrgyzstan Time"} } - "America:Nome"{ - ec{"Nome"} + "meta:Line_Islands"{ + ls{"Line Islands Time"} } - "America:North_Dakota:Beulah"{ - ec{"Beulah, North Dakota"} + "meta:Lord_Howe"{ + ld{"Lord Howe Daylight Time"} + lg{"Lord Howe Time"} + ls{"Lord Howe Standard Time"} } - "America:North_Dakota:Center"{ - ec{"Center, North Dakota"} + "meta:Macquarie"{ + ls{"Macquarie Island Time"} } - "America:North_Dakota:New_Salem"{ - ec{"New Salem, North Dakota"} + "meta:Magadan"{ + ld{"Magadan Summer Time"} + lg{"Magadan Time"} + ls{"Magadan Standard Time"} } - "America:Ojinaga"{ - ec{"Ojinaga"} + "meta:Malaysia"{ + ls{"Malaysia Time"} } - "America:Panama"{ - ec{"Panama"} + "meta:Maldives"{ + ls{"Maldives Time"} } - "America:Pangnirtung"{ - ec{"Pangnirtung"} + "meta:Marquesas"{ + ls{"Marquesas Time"} } - "America:Phoenix"{ - ec{"Phoenix"} + "meta:Marshall_Islands"{ + ls{"Marshall Islands Time"} } - "America:Port-au-Prince"{ - ec{"Port-au-Prince"} + "meta:Mawson"{ + ls{"Mawson Time"} } - "America:Port_of_Spain"{ - ec{"Port of Spain"} + "meta:Mexico_Northwest"{ + ld{"Lokacin rana na arewa maso gabashin Mesiko"} + lg{"Lokacin arewa maso gabashin mesiko"} + ls{"Lokaci Tsayayye na arewa maso gabashin Mesiko"} } - "America:Puerto_Rico"{ - ec{"Puerto Rico"} + "meta:Mexico_Pacific"{ + ld{"Lokaci na rana na Mesiko Pacific"} + lg{"Lokaci na Mesiko Pacific"} + ls{"Lokaci Tsayayye na Mesiko Pacific"} } - "America:Rainy_River"{ - ec{"Rainy River"} + "meta:Mongolia"{ + ld{"Ulaanbaatar Summer Time"} + lg{"Ulaanbaatar Time"} + ls{"Ulaanbaatar Standard Time"} } - "America:Rankin_Inlet"{ - ec{"Rankin Inlet"} + "meta:Moscow"{ + ld{"Moscow Summer Time"} + lg{"Moscow Time"} + ls{"Moscow Standard Time"} } - "America:Regina"{ - ec{"Regina"} + "meta:Myanmar"{ + ls{"Myanmar Time"} } - "America:Resolute"{ - ec{"Resolute"} + "meta:Nauru"{ + ls{"Nauru Time"} } - "America:Santo_Domingo"{ - ec{"Santo Domingo"} + "meta:Nepal"{ + ls{"Nepal Time"} } - "America:Scoresbysund"{ - ec{"Ittoqqortoormiit"} + "meta:New_Caledonia"{ + ld{"New Caledonia Summer Time"} + lg{"New Caledonia Time"} + ls{"New Caledonia Standard Time"} } - "America:Sitka"{ - ec{"Sitka"} + "meta:New_Zealand"{ + ld{"New Zealand Daylight Time"} + lg{"New Zealand Time"} + ls{"New Zealand Standard Time"} } - "America:St_Barthelemy"{ - ec{"St. Barthelemy"} + "meta:Newfoundland"{ + ld{"Lokaci rana ta Newfoundland"} + lg{"Lokaci ta Newfoundland"} + ls{"Lokaci Tsayayye ta Newfoundland"} } - "America:St_Johns"{ - ec{"St. John’s"} + "meta:Niue"{ + ls{"Niue Time"} } - "America:St_Kitts"{ - ec{"St. Kitts"} + "meta:Norfolk"{ + ls{"Norfolk Island Time"} } - "America:St_Lucia"{ - ec{"St. Lucia"} + "meta:Novosibirsk"{ + ld{"Novosibirsk Summer Time"} + lg{"Novosibirsk Time"} + ls{"Novosibirsk Standard Time"} } - "America:St_Thomas"{ - ec{"St. Thomas"} + "meta:Omsk"{ + ld{"Omsk Summer Time"} + lg{"Omsk Time"} + ls{"Omsk Standard Time"} } - "America:St_Vincent"{ - ec{"St. Vincent"} + "meta:Pakistan"{ + ld{"Pakistan Summer Time"} + lg{"Pakistan Time"} + ls{"Pakistan Standard Time"} } - "America:Swift_Current"{ - ec{"Swift Current"} + "meta:Palau"{ + ls{"Palau Time"} } - "America:Tegucigalpa"{ - ec{"Tegucigalpa"} + "meta:Papua_New_Guinea"{ + ls{"Papua New Guinea Time"} } - "America:Thule"{ - ec{"Thule"} + "meta:Philippines"{ + ld{"Philippine Summer Time"} + lg{"Philippine Time"} + ls{"Philippine Standard Time"} } - "America:Thunder_Bay"{ - ec{"Thunder Bay"} + "meta:Phoenix_Islands"{ + ls{"Phoenix Islands Time"} } - "America:Tijuana"{ - ec{"Tijuana"} + "meta:Pierre_Miquelon"{ + ld{"Lokaci rana ta St. Pierre da Miquelon"} + lg{"Lokaci ta St. Pierre da Miquelon"} + ls{"Lokaci tsayayye St. Pierre da Miquelon"} } - "America:Toronto"{ - ec{"Toronto"} + "meta:Pitcairn"{ + ls{"Pitcairn Time"} } - "America:Tortola"{ - ec{"Tortola"} + "meta:Ponape"{ + ls{"Ponape Time"} } - "America:Vancouver"{ - ec{"Vancouver"} + "meta:Pyongyang"{ + ls{"Pyongyang Time"} } - "America:Whitehorse"{ - ec{"Whitehorse"} + "meta:Reunion"{ + ls{"Réunion Time"} } - "America:Winnipeg"{ - ec{"Winnipeg"} + "meta:Rothera"{ + ls{"Rothera Time"} } - "America:Yakutat"{ - ec{"Yakutat"} + "meta:Sakhalin"{ + ld{"Sakhalin Summer Time"} + lg{"Sakhalin Time"} + ls{"Sakhalin Standard Time"} } - "America:Yellowknife"{ - ec{"Yellowknife"} + "meta:Samoa"{ + ld{"Samoa Daylight Time"} + lg{"Samoa Time"} + ls{"Samoa Standard Time"} } - "Atlantic:Bermuda"{ - ec{"Bermuda"} + "meta:Seychelles"{ + ls{"Seychelles Time"} } - "Etc:UTC"{ - ls{"Hadewa duniya lokaci"} + "meta:Singapore"{ + ls{"Singapore Standard Time"} } - "Etc:Unknown"{ - ec{"Birni da ba a sani ba"} + "meta:Solomon"{ + ls{"Solomon Islands Time"} } - "meta:Alaska"{ - ld{"Lokaci rana ta Alaska"} - lg{"Lokaci ta Alaska"} - ls{"Ida Lokaci ta Alaska"} + "meta:Syowa"{ + ls{"Syowa Time"} } - "meta:America_Central"{ - ld{"Lokaci rana dake Amurika arewa ta tsakiyar"} - lg{"Lokaci dake Amurika arewa ta tsakiyar"} - ls{"Ida Lokaci dake Amurika arewa ta tsakiyar"} + "meta:Tahiti"{ + ls{"Tahiti Time"} } - "meta:America_Eastern"{ - ld{"Lokaci rana a arewacin da Amirka"} - lg{"Lokaci gabas a arewacin da Amirka"} - ls{"Lokaci daidai ta ce a arewacin da Amirka"} + "meta:Taipei"{ + ld{"Taipei Daylight Time"} + lg{"Taipei Time"} + ls{"Taipei Standard Time"} } - "meta:America_Mountain"{ - ld{"Lokaci rana tsauni a arewacin da Amirka"} - lg{"Lokaci tsauni a arewacin da Amirka"} - ls{"Lokacin daidai ta ce tsauni a arewacin da Amirka"} + "meta:Tajikistan"{ + ls{"Tajikistan Time"} } - "meta:America_Pacific"{ - ld{"Ida Amurika da arewa a lokaci rana"} - lg{"Amurika da arewa a lokaci lafiya"} - ls{"Ida Amurika da arewa a lokaci lafiya"} + "meta:Tokelau"{ + ls{"Tokelau Time"} } - "meta:Atlantic"{ - ld{"Lokaci rana da amfani da shi Kanada, Puerto rico da Virgin Islands"} - lg{"Lokaci da Kanada, Puerto Rico da Virgin Islands"} - ls{"Ida Lokaci da Kanada, Puerto Rico da Virgin Islands"} + "meta:Tonga"{ + ld{"Tonga Summer Time"} + lg{"Tonga Time"} + ls{"Tonga Standard Time"} } - "meta:Cuba"{ - ld{"Lokaci rana ta Kuba"} - lg{"Lokaci ta Kuba"} - ls{"Ida Lokaci ta Kuba"} + "meta:Truk"{ + ls{"Chuuk Time"} } - "meta:Europe_Central"{ - ld{"Tsakiyar bazara a lokaci turai"} - lg{"Tsakiyar a lokaci turai"} - ls{"Ida Tsakiyar a Lokaci Turai"} + "meta:Turkmenistan"{ + ld{"Turkmenistan Summer Time"} + lg{"Turkmenistan Time"} + ls{"Turkmenistan Standard Time"} } - "meta:Europe_Eastern"{ - ld{"Gabas a lokaci turai da bazara"} - lg{"Lokaci a turai gabas"} - ls{"Ida lokaci a turai gabas"} + "meta:Tuvalu"{ + ls{"Tuvalu Time"} } - "meta:Europe_Western"{ - ld{"Ida lokaci ta yammacin turai da bazara"} - lg{"Lokaci ta yammacin turai"} - ls{"Ida lokaci ta yammacin turai"} + "meta:Uzbekistan"{ + ld{"Uzbekistan Summer Time"} + lg{"Uzbekistan Time"} + ls{"Uzbekistan Standard Time"} } - "meta:GMT"{ - ls{"Lokacin Greenwhich a London"} + "meta:Vanuatu"{ + ld{"Vanuatu Summer Time"} + lg{"Vanuatu Time"} + ls{"Vanuatu Standard Time"} } - "meta:Greenland_Eastern"{ - ld{"Lokaci rana a gabas ta Greeland"} - lg{"Lokaci a gabas ta Greeland"} - ls{"Ida Lokaci a gabas ta Greeland"} + "meta:Vladivostok"{ + ld{"Vladivostok Summer Time"} + lg{"Vladivostok Time"} + ls{"Vladivostok Standard Time"} } - "meta:Greenland_Western"{ - ld{"Lokaci rana a yammacin ta Greeland"} - lg{"Lokaci a yammacin ta Greeland"} - ls{"Ida Lokaci a yammacin ta Greeland"} + "meta:Volgograd"{ + ld{"Volgograd Summer Time"} + lg{"Volgograd Time"} + ls{"Volgograd Standard Time"} } - "meta:Hawaii_Aleutian"{ - ld{"Lokaci rana ta Hawaii-Aleutian"} - lg{"Lokaci ta Hawaii-Aleutian"} - ls{"Ida Lokaci ta Hawaii-Aleutian"} + "meta:Vostok"{ + ls{"Vostok Time"} } - "meta:Mexico_Northwest"{ - ld{"Lokaci rana a arewa da yammacin ta Mesiko"} - lg{"Lokaci a arewa da yammacin ta Mesiko"} - ls{"Ida Lokaci a arewa da yammacin ta Mesiko"} + "meta:Wake"{ + ls{"Wake Island Time"} } - "meta:Mexico_Pacific"{ - ld{"Lokaci rana a lafiya ta Mesiko"} - lg{"Lokaci a lafiya ta Mesiko"} - ls{"Ida Lokaci a lafiya ta Mesiko"} + "meta:Wallis"{ + ls{"Wallis & Futuna Time"} } - "meta:Newfoundland"{ - ld{"Lokaci rana ta Newfoundland"} - lg{"Lokaci ta Newfoundland"} - ls{"Ida Lokaci ta Newfoundland"} + "meta:Yakutsk"{ + ld{"Yakutsk Summer Time"} + lg{"Yakutsk Time"} + ls{"Yakutsk Standard Time"} } - "meta:Pierre_Miquelon"{ - ld{"Lokaci rana ta St. Pierre da Miquelon"} - lg{"Lokaci ta St. Pierre da Miquelon"} - ls{"Ida Lokaci ta St. Pierre da Miquelon"} + "meta:Yekaterinburg"{ + ld{"Yekaterinburg Summer Time"} + lg{"Yekaterinburg Time"} + ls{"Yekaterinburg Standard Time"} } - fallbackFormat{"{1} ({0})"} - gmtFormat{"GMT{0}"} - gmtZeroFormat{"GMT"} - hourFormat{"+HH:mm;-HH:mm"} regionFormat{"{0} Lokaci"} - regionFormatDaylight{"{0} Lokaci rana"} + regionFormatDaylight{"{0} Lokacin rana"} regionFormatStandard{"{0} Daidai ta ce lokaci"} } } diff --git a/source/data/zone/ha_NE.txt b/source/data/zone/ha_NE.txt deleted file mode 100644 index 837c7d8..0000000 --- a/source/data/zone/ha_NE.txt +++ /dev/null @@ -1,432 +0,0 @@ -// © 2016 and later: Unicode, Inc. and others. -// License & terms of use: http://www.unicode.org/copyright.html#License -ha_NE{ - Version{"2.1.48.77"} - zoneStrings{ - "America:Adak"{ - ec{"Adak"} - } - "America:Anchorage"{ - ec{"Anchorage"} - } - "America:Anguilla"{ - ec{"Anguilla"} - } - "America:Antigua"{ - ec{"Antigua"} - } - "America:Aruba"{ - ec{"Aruba"} - } - "America:Bahia_Banderas"{ - ec{"Bahia Banderas"} - } - "America:Barbados"{ - ec{"Barbados"} - } - "America:Belize"{ - ec{"Belize"} - } - "America:Blanc-Sablon"{ - ec{"Blanc-Sablon"} - } - "America:Boise"{ - ec{"Boise"} - } - "America:Cambridge_Bay"{ - ec{"Cambridge Bay"} - } - "America:Cancun"{ - ec{"Cancun"} - } - "America:Cayman"{ - ec{"Cayman"} - } - "America:Chicago"{ - ec{"Chicago"} - } - "America:Chihuahua"{ - ec{"Chihuahua"} - } - "America:Coral_Harbour"{ - ec{"Atikokan"} - } - "America:Costa_Rica"{ - ec{"Costa Rica"} - } - "America:Creston"{ - ec{"Creston"} - } - "America:Curacao"{ - ec{"Curacao"} - } - "America:Danmarkshavn"{ - ec{"Danmarkshavn"} - } - "America:Dawson"{ - ec{"Dawson"} - } - "America:Dawson_Creek"{ - ec{"Dawson Creek"} - } - "America:Denver"{ - ec{"Denver"} - } - "America:Detroit"{ - ec{"Detroit"} - } - "America:Dominica"{ - ec{"Dominica"} - } - "America:Edmonton"{ - ec{"Edmonton"} - } - "America:El_Salvador"{ - ec{"El Salvador"} - } - "America:Fort_Nelson"{ - ec{"Fort Nelson"} - } - "America:Glace_Bay"{ - ec{"Glace Bay"} - } - "America:Godthab"{ - ec{"Nuuk"} - } - "America:Goose_Bay"{ - ec{"Goose Bay"} - } - "America:Grand_Turk"{ - ec{"Grand Turk"} - } - "America:Grenada"{ - ec{"Grenada"} - } - "America:Guadeloupe"{ - ec{"Guadeloupe"} - } - "America:Guatemala"{ - ec{"Guatemala"} - } - "America:Halifax"{ - ec{"Halifax"} - } - "America:Havana"{ - ec{"Havana"} - } - "America:Hermosillo"{ - ec{"Hermosillo"} - } - "America:Indiana:Knox"{ - ec{"Knox, Indiana"} - } - "America:Indiana:Marengo"{ - ec{"Marengo, Indiana"} - } - "America:Indiana:Petersburg"{ - ec{"Petersburg, Indiana"} - } - "America:Indiana:Tell_City"{ - ec{"Tell City, Indiana"} - } - "America:Indiana:Vevay"{ - ec{"Vevay, Indiana"} - } - "America:Indiana:Vincennes"{ - ec{"Vincennes, Indiana"} - } - "America:Indiana:Winamac"{ - ec{"Winamac, Indiana"} - } - "America:Indianapolis"{ - ec{"Indianapolis"} - } - "America:Inuvik"{ - ec{"Inuvik"} - } - "America:Iqaluit"{ - ec{"Iqaluit"} - } - "America:Jamaica"{ - ec{"Jamaica"} - } - "America:Juneau"{ - ec{"Juneau"} - } - "America:Kentucky:Monticello"{ - ec{"Monticello, Kentucky"} - } - "America:Kralendijk"{ - ec{"Kralendijk"} - } - "America:Los_Angeles"{ - ec{"Los Angeles"} - } - "America:Louisville"{ - ec{"Louisville"} - } - "America:Lower_Princes"{ - ec{"Lower Prince’s Quarter"} - } - "America:Managua"{ - ec{"Managua"} - } - "America:Marigot"{ - ec{"Marigot"} - } - "America:Martinique"{ - ec{"Martinique"} - } - "America:Matamoros"{ - ec{"Matamoros"} - } - "America:Mazatlan"{ - ec{"Mazatlan"} - } - "America:Menominee"{ - ec{"Menominee"} - } - "America:Merida"{ - ec{"Merida"} - } - "America:Metlakatla"{ - ec{"Metlakatla"} - } - "America:Mexico_City"{ - ec{"Mexico City"} - } - "America:Miquelon"{ - ec{"Miquelon"} - } - "America:Moncton"{ - ec{"Moncton"} - } - "America:Monterrey"{ - ec{"Monterrey"} - } - "America:Montserrat"{ - ec{"Montserrat"} - } - "America:Nassau"{ - ec{"Nassau"} - } - "America:New_York"{ - ec{"New York"} - } - "America:Nipigon"{ - ec{"Nipigon"} - } - "America:Nome"{ - ec{"Nome"} - } - "America:North_Dakota:Beulah"{ - ec{"Beulah, North Dakota"} - } - "America:North_Dakota:Center"{ - ec{"Center, North Dakota"} - } - "America:North_Dakota:New_Salem"{ - ec{"New Salem, North Dakota"} - } - "America:Ojinaga"{ - ec{"Ojinaga"} - } - "America:Panama"{ - ec{"Panama"} - } - "America:Pangnirtung"{ - ec{"Pangnirtung"} - } - "America:Phoenix"{ - ec{"Phoenix"} - } - "America:Port-au-Prince"{ - ec{"Port-au-Prince"} - } - "America:Port_of_Spain"{ - ec{"Port of Spain"} - } - "America:Puerto_Rico"{ - ec{"Puerto Rico"} - } - "America:Rainy_River"{ - ec{"Rainy River"} - } - "America:Rankin_Inlet"{ - ec{"Rankin Inlet"} - } - "America:Regina"{ - ec{"Regina"} - } - "America:Resolute"{ - ec{"Resolute"} - } - "America:Santo_Domingo"{ - ec{"Santo Domingo"} - } - "America:Scoresbysund"{ - ec{"Ittoqqortoormiit"} - } - "America:Sitka"{ - ec{"Sitka"} - } - "America:St_Barthelemy"{ - ec{"St. Barthelemy"} - } - "America:St_Johns"{ - ec{"St. John’s"} - } - "America:St_Kitts"{ - ec{"St. Kitts"} - } - "America:St_Lucia"{ - ec{"St. Lucia"} - } - "America:St_Thomas"{ - ec{"St. Thomas"} - } - "America:St_Vincent"{ - ec{"St. Vincent"} - } - "America:Swift_Current"{ - ec{"Swift Current"} - } - "America:Tegucigalpa"{ - ec{"Tegucigalpa"} - } - "America:Thule"{ - ec{"Thule"} - } - "America:Thunder_Bay"{ - ec{"Thunder Bay"} - } - "America:Tijuana"{ - ec{"Tijuana"} - } - "America:Toronto"{ - ec{"Toronto"} - } - "America:Tortola"{ - ec{"Tortola"} - } - "America:Vancouver"{ - ec{"Vancouver"} - } - "America:Whitehorse"{ - ec{"Whitehorse"} - } - "America:Winnipeg"{ - ec{"Winnipeg"} - } - "America:Yakutat"{ - ec{"Yakutat"} - } - "America:Yellowknife"{ - ec{"Yellowknife"} - } - "Atlantic:Bermuda"{ - ec{"Bermuda"} - } - "Etc:UTC"{ - ls{"Hadewa duniya lokaci"} - } - "Etc:Unknown"{ - ec{"Birni da ba a sani ba"} - } - "meta:Alaska"{ - ld{"Lokaci rana ta Alaska"} - lg{"Lokaci ta Alaska"} - ls{"Ida Lokaci ta Alaska"} - } - "meta:America_Central"{ - ld{"Lokaci rana dake Amurika arewa ta tsakiyar"} - lg{"Lokaci dake Amurika arewa ta tsakiyar"} - ls{"Ida Lokaci dake Amurika arewa ta tsakiyar"} - } - "meta:America_Eastern"{ - ld{"Lokaci rana a arewacin da Amirka"} - lg{"Lokaci gabas a arewacin da Amirka"} - ls{"Lokaci daidai ta ce a arewacin da Amirka"} - } - "meta:America_Mountain"{ - ld{"Lokaci rana tsauni a arewacin da Amirka"} - lg{"Lokaci tsauni a arewacin da Amirka"} - ls{"Lokacin daidai ta ce tsauni a arewacin da Amirka"} - } - "meta:America_Pacific"{ - ld{"Ida Amurika da arewa a lokaci rana"} - lg{"Amurika da arewa a lokaci lafiya"} - ls{"Ida Amurika da arewa a lokaci lafiya"} - } - "meta:Atlantic"{ - ld{"Lokaci rana da amfani da shi Kanada, Puerto rico da Virgin Islands"} - lg{"Lokaci da Kanada, Puerto Rico da Virgin Islands"} - ls{"Ida Lokaci da Kanada, Puerto Rico da Virgin Islands"} - } - "meta:Cuba"{ - ld{"Lokaci rana ta Kuba"} - lg{"Lokaci ta Kuba"} - ls{"Ida Lokaci ta Kuba"} - } - "meta:Europe_Central"{ - ld{"Tsakiyar bazara a lokaci turai"} - lg{"Tsakiyar a lokaci turai"} - ls{"Ida Tsakiyar a Lokaci Turai"} - } - "meta:Europe_Eastern"{ - ld{"Gabas a lokaci turai da bazara"} - lg{"Lokaci a turai gabas"} - ls{"Ida lokaci a turai gabas"} - } - "meta:Europe_Western"{ - ld{"Ida lokaci ta yammacin turai da bazara"} - lg{"Lokaci ta yammacin turai"} - ls{"Ida lokaci ta yammacin turai"} - } - "meta:GMT"{ - ls{"Lokacin Greenwhich a London"} - } - "meta:Greenland_Eastern"{ - ld{"Lokaci rana a gabas ta Greeland"} - lg{"Lokaci a gabas ta Greeland"} - ls{"Ida Lokaci a gabas ta Greeland"} - } - "meta:Greenland_Western"{ - ld{"Lokaci rana a yammacin ta Greeland"} - lg{"Lokaci a yammacin ta Greeland"} - ls{"Ida Lokaci a yammacin ta Greeland"} - } - "meta:Hawaii_Aleutian"{ - ld{"Lokaci rana ta Hawaii-Aleutian"} - lg{"Lokaci ta Hawaii-Aleutian"} - ls{"Ida Lokaci ta Hawaii-Aleutian"} - } - "meta:Mexico_Northwest"{ - ld{"Lokaci rana a arewa da yammacin ta Mesiko"} - lg{"Lokaci a arewa da yammacin ta Mesiko"} - ls{"Ida Lokaci a arewa da yammacin ta Mesiko"} - } - "meta:Mexico_Pacific"{ - ld{"Lokaci rana a lafiya ta Mesiko"} - lg{"Lokaci a lafiya ta Mesiko"} - ls{"Ida Lokaci a lafiya ta Mesiko"} - } - "meta:Newfoundland"{ - ld{"Lokaci rana ta Newfoundland"} - lg{"Lokaci ta Newfoundland"} - ls{"Ida Lokaci ta Newfoundland"} - } - "meta:Pierre_Miquelon"{ - ld{"Lokaci rana ta St. Pierre da Miquelon"} - lg{"Lokaci ta St. Pierre da Miquelon"} - ls{"Ida Lokaci ta St. Pierre da Miquelon"} - } - fallbackFormat{"{1} ({0})"} - gmtFormat{"GMT{0}"} - gmtZeroFormat{"GMT"} - hourFormat{"+HH:mm;-HH:mm"} - regionFormat{"{0} Lokaci"} - regionFormatDaylight{"{0} Lokaci rana"} - regionFormatStandard{"{0} Daidai ta ce lokaci"} - } -} diff --git a/source/data/zone/haw.txt b/source/data/zone/haw.txt index 1fbcc10..ceb0235 100644 --- a/source/data/zone/haw.txt +++ b/source/data/zone/haw.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License haw{ - Version{"2.1.48.4"} + Version{"36"} zoneStrings{ "Pacific:Honolulu"{ sd{"HDT"} diff --git a/source/data/zone/he.txt b/source/data/zone/he.txt index 28baf6a..2013608 100644 --- a/source/data/zone/he.txt +++ b/source/data/zone/he.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License he{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"אביג׳אן"} @@ -628,7 +628,7 @@ he{ ec{"רות׳רה"} } "Antarctica:Syowa"{ - ec{"סיוואה"} + ec{"סייווה"} } "Antarctica:Troll"{ ec{"טרול"} @@ -865,7 +865,7 @@ he{ ec{"טומסק"} } "Asia:Ulaanbaatar"{ - ec{"אולאאנבטאר"} + ec{"אולאן באטור"} } "Asia:Urumqi"{ ec{"אורומקי"} @@ -874,7 +874,7 @@ he{ ec{"אוסט-נרה"} } "Asia:Vientiane"{ - ec{"האנוי"} + ec{"ויינטיאן"} } "Asia:Vladivostok"{ ec{"ולדיווסטוק"} @@ -1410,9 +1410,9 @@ he{ ls{"שעון מערב אוסטרליה (חורף)"} } "meta:Azerbaijan"{ - ld{"שעון אזרבייג׳אן (קיץ)"} - lg{"שעון אזרבייג׳אן"} - ls{"שעון אזרבייג׳אן (חורף)"} + ld{"שעון אזרבייג׳ן (קיץ)"} + lg{"שעון אזרבייג׳ן"} + ls{"שעון אזרבייג׳ן (חורף)"} } "meta:Azores"{ ld{"שעון האיים האזוריים (קיץ)"} @@ -1706,9 +1706,9 @@ he{ ls{"שעון מערב מקסיקו (חורף)"} } "meta:Mongolia"{ - ld{"שעון אולן בטור (קיץ)"} - lg{"שעון אולן בטור"} - ls{"שעון אולן בטור (חורף)"} + ld{"שעון אולאן באטור (קיץ)"} + lg{"שעון אולאן באטור"} + ls{"שעון אולאן באטור (חורף)"} } "meta:Moscow"{ ld{"שעון מוסקבה (קיץ)"} diff --git a/source/data/zone/hi.txt b/source/data/zone/hi.txt index 2cff072..de6eb51 100644 --- a/source/data/zone/hi.txt +++ b/source/data/zone/hi.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hi{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"अबिदजान"} diff --git a/source/data/zone/hr.txt b/source/data/zone/hr.txt index 6e38214..7738c80 100644 --- a/source/data/zone/hr.txt +++ b/source/data/zone/hr.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hr{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -168,6 +168,9 @@ hr{ "America:Anguilla"{ ec{"Angvila"} } + "America:Antigua"{ + ec{"Antigua"} + } "America:Araguaina"{ ec{"Araguaina"} } @@ -247,7 +250,7 @@ hr{ ec{"Cayenne"} } "America:Cayman"{ - ec{"Kajman"} + ec{"Cayman"} } "America:Chicago"{ ec{"Chicago"} @@ -655,7 +658,7 @@ hr{ ec{"Aktobe"} } "Asia:Ashgabat"{ - ec{"Ashgabat"} + ec{"AÅ¡gabat"} } "Asia:Atyrau"{ ec{"Atyrau"} @@ -688,7 +691,7 @@ hr{ ec{"Kolkata"} } "Asia:Chita"{ - ec{"Chita"} + ec{"Čita"} } "Asia:Choibalsan"{ ec{"Choibalsan"} @@ -880,7 +883,7 @@ hr{ ec{"Jakutsk"} } "Asia:Yekaterinburg"{ - ec{"Ekaterinburg"} + ec{"Jekaterinburg"} } "Asia:Yerevan"{ ec{"Erevan"} @@ -888,6 +891,9 @@ hr{ "Atlantic:Azores"{ ec{"Azorski otoci"} } + "Atlantic:Bermuda"{ + ec{"Bermuda"} + } "Atlantic:Canary"{ ec{"Kanari"} } @@ -961,7 +967,7 @@ hr{ ec{"Andora"} } "Europe:Astrakhan"{ - ec{"Astrakhan"} + ec{"Astrahan"} } "Europe:Athens"{ ec{"Atena"} @@ -1086,7 +1092,7 @@ hr{ ec{"Saratov"} } "Europe:Simferopol"{ - ec{"Simferopol"} + ec{"Simferopolj"} } "Europe:Skopje"{ ec{"Skoplje"} @@ -1544,10 +1550,10 @@ hr{ ls{"standardno vrijeme Fidžija"} } "meta:French_Guiana"{ - ls{"vrijeme Francuske Gvajane"} + ls{"vrijeme Francuske Gijane"} } "meta:French_Southern"{ - ls{"južnofrancusko i antarktičko vrijeme"} + ls{"vrijeme Francuskih južnih i antarktičkih teritorija"} } "meta:GMT"{ ls{"univerzalno vrijeme"} @@ -1670,7 +1676,7 @@ hr{ ls{"lankansko vrijeme"} } "meta:Line_Islands"{ - ls{"vrijeme Otoka Line"} + ls{"vrijeme Ekvatorskih otoka"} } "meta:Lord_Howe"{ ld{"ljetno vrijeme otoka Lord Howe"} @@ -1938,9 +1944,9 @@ hr{ ls{"jakutsko standardno vrijeme"} } "meta:Yekaterinburg"{ - ld{"ekaterinburÅ¡ko ljetno vrijeme"} - lg{"ekaterinburÅ¡ko vrijeme"} - ls{"ekaterinburÅ¡ko standardno vrijeme"} + ld{"jekaterinburÅ¡ko ljetno vrijeme"} + lg{"jekaterinburÅ¡ko vrijeme"} + ls{"jekaterinburÅ¡ko standardno vrijeme"} } fallbackFormat{"{1} ({0})"} gmtFormat{"GMT{0}"} diff --git a/source/data/zone/hsb.txt b/source/data/zone/hsb.txt index 7acc33e..5ef8322 100644 --- a/source/data/zone/hsb.txt +++ b/source/data/zone/hsb.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hsb{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Africa:Accra"{ ec{"Akkra"} diff --git a/source/data/zone/hu.txt b/source/data/zone/hu.txt index e4407dd..aa00edc 100644 --- a/source/data/zone/hu.txt +++ b/source/data/zone/hu.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hu{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -661,7 +661,7 @@ hu{ ec{"Asgabat"} } "Asia:Atyrau"{ - ec{"Atyrau"} + ec{"Atirau"} } "Asia:Baghdad"{ ec{"Bagdad"} @@ -955,7 +955,7 @@ hu{ ec{"Sydney"} } "Etc:UTC"{ - ls{"egyezményes koordinált világidő"} + ls{"Koordinált világidő"} } "Etc:Unknown"{ ec{"Ismeretlen város"} diff --git a/source/data/zone/hy.txt b/source/data/zone/hy.txt index 026c018..8461463 100644 --- a/source/data/zone/hy.txt +++ b/source/data/zone/hy.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License hy{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Ô±Õ¢Õ«Õ»Õ¡Õ¶"} @@ -810,6 +810,9 @@ hy{ "Asia:Qatar"{ ec{"Կատար"} } + "Asia:Qostanay"{ + ec{"Ô¿Õ¸Õ½Õ¿Õ¡Õ¶Õ¡Õµ"} + } "Asia:Qyzylorda"{ ec{"Կիզիլորդա"} } diff --git a/source/data/zone/ia.txt b/source/data/zone/ia.txt index aa982e8..6918589 100644 --- a/source/data/zone/ia.txt +++ b/source/data/zone/ia.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ia{ - Version{"2.1.48.36"} + Version{"36"} zoneStrings{ "Africa:Ceuta"{ ec{"Ceuta"} diff --git a/source/data/zone/id.txt b/source/data/zone/id.txt index 23d6a0d..9a15cbd 100644 --- a/source/data/zone/id.txt +++ b/source/data/zone/id.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License id{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -810,6 +810,9 @@ id{ "Asia:Qatar"{ ec{"Qatar"} } + "Asia:Qostanay"{ + ec{"Kostanay"} + } "Asia:Qyzylorda"{ ec{"Qyzylorda"} } @@ -955,7 +958,7 @@ id{ ls{"Waktu Universal Terkoordinasi"} } "Etc:Unknown"{ - ec{"Tidak Dikenal"} + ec{"Kota Tidak Dikenal"} } "Europe:Amsterdam"{ ec{"Amsterdam"} @@ -1085,6 +1088,9 @@ id{ "Europe:Sarajevo"{ ec{"Sarajevo"} } + "Europe:Saratov"{ + ec{"Saratov"} + } "Europe:Simferopol"{ ec{"Simferopol"} } diff --git a/source/data/zone/ig.txt b/source/data/zone/ig.txt index 99dccc3..bfe5c60 100644 --- a/source/data/zone/ig.txt +++ b/source/data/zone/ig.txt @@ -1,14 +1,50 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ig{ - Version{"2.1.48.45"} + Version{"36"} zoneStrings{ + "America:Araguaina"{ + ec{"Araguaina"} + } "Etc:UTC"{ ls{"Nhazi Oge Ụwa Niile"} } "Etc:Unknown"{ ec{"Obodo Amaghị"} } + "Europe:Dublin"{ + ld{"Oge Okpomọkụ Ireland"} + } + "Europe:London"{ + ld{"Oge Okpomọkụ Britain"} + } + "meta:Afghanistan"{ + ls{"Oge Afghanistan"} + } + "meta:Africa_Central"{ + ls{"Oge Etiti Afrịka"} + } + "meta:Africa_Eastern"{ + ls{"Oge Mpaghara Ọwụwa Anyanwụ Afrịka"} + } + "meta:Africa_Southern"{ + ls{"Oge Izugbe Mpaghara Mgbada Ugwu Afrịka"} + } + "meta:Africa_Western"{ + ld{"Oge Okpomọkụ Mpaghara Ọdịda Anyanwụ Afrịka"} + lg{"Oge Mpaghara Ọdịda Anyanwụ Afrịka"} + ls{"Oge Izugbe Mpaghara Ọdịda Anyanwụ Afrịka"} + } + "meta:Alaska"{ + ld{"Oge Ihe Alaska"} + lg{"Oge Alaska"} + ls{"Oge Izugbe Alaska"} + } + "meta:Amazon"{ + ld{"Oge Okpomọkụ Amazon"} + lg{"Oge Amazon"} + ls{"Oge Izugbe Amazon"} + } "meta:America_Central"{ ld{"Oge Ihe Mpaghara Etiti"} lg{"Oge Mpaghara Etiti"} @@ -29,11 +65,151 @@ ig{ lg{"Oge Mpaghara Pacific"} ls{"Oge Izugbe Mpaghara Pacific"} } + "meta:Apia"{ + ld{"Oge Ihe Apia"} + lg{"Oge Apia"} + ls{"Oge Izugbe Apia"} + } + "meta:Arabian"{ + ld{"Oge Ihe Arab"} + lg{"Oge Arab"} + ls{"Oge Izugbe Arab"} + } + "meta:Argentina"{ + ld{"Oge Okpomọkụ Argentina"} + lg{"Oge Argentina"} + ls{"Oge Izugbe Argentina"} + } + "meta:Argentina_Western"{ + ld{"Oge Okpomọkụ Mpaghara Ọdịda Anyanwụ Argentina"} + lg{"Oge Mpaghara Ọdịda Anyanwụ Argentina"} + ls{"Oge Izugbe Mpaghara Ọdịda Anyanwụ Argentina"} + } + "meta:Armenia"{ + ld{"Oge Okpomọkụ Armenia"} + lg{"Oge Armenia"} + ls{"Oge Izugbe Armenia"} + } "meta:Atlantic"{ ld{"Oge Ihe Mpaghara Atlantic"} lg{"Oge Mpaghara Atlantic"} ls{"Oge Izugbe Mpaghara Atlantic"} } + "meta:Australia_Central"{ + ld{"Oge Ihe Etiti Australia"} + lg{"Oge Etiti Australia"} + ls{"Oge Izugbe Etiti Australia"} + } + "meta:Australia_CentralWestern"{ + ld{"Oge Ihe Mpaghara Ọdịda Anyanwụ Etiti Australia"} + lg{"Oge Mpaghara Ọdịda Anyanwụ Etiti Australia"} + ls{"Oge Izugbe Mpaghara Ọdịda Anyanwụ Etiti Australia"} + } + "meta:Australia_Eastern"{ + ld{"Oge Ihe Mpaghara Ọwụwa Anyanwụ Australia"} + lg{"Oge Mpaghara Ọwụwa Anyanwụ Australia"} + ls{"Oge Izugbe Mpaghara Ọwụwa Anyanwụ Australia"} + } + "meta:Australia_Western"{ + ld{"Oge Ihe Mpaghara Ọdịda Anyanwụ Australia"} + lg{"Oge Mpaghara Ọdịda Anyanwụ Australia"} + ls{"Oge Izugbe Mpaghara Ọdịda Anyanwụ Australia"} + } + "meta:Azerbaijan"{ + ld{"Oge Okpomọkụ Azerbaijan"} + lg{"Oge Azerbaijan"} + ls{"Oge Izugbe Azerbaijan"} + } + "meta:Azores"{ + ld{"Oge Okpomọkụ Azores"} + lg{"Oge Azores"} + ls{"Oge Izugbe Azores"} + } + "meta:Bangladesh"{ + ld{"Oge Okpomọkụ Bangladesh"} + lg{"Oge Bangladesh"} + ls{"Oge Izugbe Bangladesh"} + } + "meta:Bhutan"{ + ls{"Oge Bhutan"} + } + "meta:Bolivia"{ + ls{"Oge Bolivia"} + } + "meta:Brasilia"{ + ld{"Oge Okpomọkụ Brasilia"} + lg{"Oge Brasilia"} + ls{"Oge Izugbe Brasilia"} + } + "meta:Brunei"{ + ls{"Oge Brunei Darussalam"} + } + "meta:Cape_Verde"{ + ld{"Oge Okpomọkụ Cape Verde"} + lg{"Oge Cape Verde"} + ls{"Oge Izugbe Cape Verde"} + } + "meta:Chamorro"{ + ls{"Oge Izugbe Chamorro"} + } + "meta:Chatham"{ + ld{"Oge Ihe Chatham"} + lg{"Oge Chatham"} + ls{"Oge Izugbe Chatham"} + } + "meta:Chile"{ + ld{"Oge Okpomọkụ Chile"} + lg{"Oge Chile"} + ls{"Oge Izugbe Chile"} + } + "meta:China"{ + ld{"Oge Ihe China"} + lg{"Oge China"} + ls{"Oge Izugbe China"} + } + "meta:Choibalsan"{ + ld{"Oge Okpomọkụ Choibals"} + lg{"Oge Choibals"} + ls{"Oge Izugbe Choibals"} + } + "meta:Christmas"{ + ls{"Oge Ekeresimesi Island"} + } + "meta:Cocos"{ + ls{"Oge Cocos Islands"} + } + "meta:Colombia"{ + ld{"Oge Okpomọkụ Columbia"} + lg{"Oge Columbia"} + ls{"Oge Izugbe Columbia"} + } + "meta:Cook"{ + ld{"Oge Ọkara Okpomọkụ Cook Islands"} + lg{"Oge Cook Islands"} + ls{"Oge Izugbe Cook Islands"} + } + "meta:Cuba"{ + ld{"Oge Ihe Mpaghara Cuba"} + lg{"Oge Cuba"} + ls{"Oge Izugbe Cuba"} + } + "meta:Davis"{ + ls{"Oge Davis"} + } + "meta:DumontDUrville"{ + ls{"Oge Dumont-d’Urville"} + } + "meta:East_Timor"{ + ls{"Oge Mpaghara Ọwụwa Anyanwụ Timor"} + } + "meta:Easter"{ + ld{"Oge Okpomọkụ Mpaghara Ọwụwa Anyanwụ Island"} + lg{"Oge Mpaghara Ọwụwa Anyanwụ Island"} + ls{"Oge Izugbe Mpaghara Ọwụwa Anyanwụ Island"} + } + "meta:Ecuador"{ + ls{"Oge Ecuador"} + } "meta:Europe_Central"{ ld{"Oge Okpomọkụ Mpaghara Etiti Europe"} lg{"Oge Mpaghara Etiti Europe"} @@ -49,9 +225,385 @@ ig{ lg{"Oge Mpaghara Ọdịda Anyanwụ Europe"} ls{"Oge Izugbe Mpaghara Ọdịda Anyanwụ Europe"} } + "meta:Falkland"{ + ld{"Oge Okpomọkụ Falkland Islands"} + lg{"Oge Falkland Islands"} + ls{"Oge Izugbe Falkland Islands"} + } + "meta:Fiji"{ + ld{"Oge Okpomọkụ Fiji"} + lg{"Oge Fiji"} + ls{"Oge Izugbe Fiji"} + } + "meta:French_Guiana"{ + ls{"Oge French Guiana"} + } + "meta:French_Southern"{ + ls{"Oge French Southern & Antarctic"} + } "meta:GMT"{ ls{"Oge Mpaghara Greemwich Mean"} } + "meta:Galapagos"{ + ls{"Oge Galapagos"} + } + "meta:Gambier"{ + ls{"Oge Gambier"} + } + "meta:Georgia"{ + ld{"Oge Okpomọkụ Georgia"} + lg{"Oge Georgia"} + ls{"Oge Izugbe Georgia"} + } + "meta:Gilbert_Islands"{ + ls{"Oge Gilbert Islands"} + } + "meta:Greenland_Eastern"{ + ld{"Oge Okpomọkụ Mpaghara Ọwụwa Anyanwụ Greenland"} + lg{"Oge Mpaghara Ọwụwa Anyanwụ Greenland"} + ls{"Oge Izugbe Mpaghara Ọwụwa Anyanwụ Greenland"} + } + "meta:Greenland_Western"{ + ld{"Oge Okpomọkụ Mpaghara Ọdịda Anyanwụ Greenland"} + lg{"Oge Mpaghara Ọdịda Anyanwụ Greenland"} + ls{"Oge Izugbe Mpaghara Ọdịda Anyanwụ Greenland"} + } + "meta:Gulf"{ + ls{"Oge Izugbe Gulf"} + } + "meta:Guyana"{ + ls{"Oge Guyana"} + } + "meta:Hawaii_Aleutian"{ + ld{"Oge Ihe Hawaii-Aleutian"} + lg{"Oge Hawaii-Aleutian"} + ls{"Oge Izugbe Hawaii-Aleutian"} + } + "meta:Hong_Kong"{ + ld{"Oge Okpomọkụ Hong Kong"} + lg{"Oge Hong Kong"} + ls{"Oge Izugbe Hong Kong"} + } + "meta:Hovd"{ + ld{"Oge Okpomọkụ Hovd"} + lg{"Oge Hovd"} + ls{"Oge Izugbe Hovd"} + } + "meta:India"{ + ls{"Oge Izugbe India"} + } + "meta:Indian_Ocean"{ + ls{"Oge Osimiri India"} + } + "meta:Indochina"{ + ls{"Oge Indochina"} + } + "meta:Indonesia_Central"{ + ls{"Oge Etiti Indonesia"} + } + "meta:Indonesia_Eastern"{ + ls{"Oge Mpaghara Ọwụwa Anyanwụ Indonesia"} + } + "meta:Indonesia_Western"{ + ls{"Oge Mpaghara Ọdịda Anyanwụ Indonesia"} + } + "meta:Iran"{ + ld{"Oge Ihe Iran"} + lg{"Oge Iran"} + ls{"Oge Izugbe Iran"} + } + "meta:Irkutsk"{ + ld{"Oge Okpomọkụ Irkutsk"} + lg{"Oge Irkutsk"} + ls{"Oge Izugbe Irkutsk"} + } + "meta:Israel"{ + ld{"Oge Ihe Israel"} + lg{"Oge Israel"} + ls{"Oge Izugbe Israel"} + } + "meta:Japan"{ + ld{"Oge Ihe Japan"} + lg{"Oge Japan"} + ls{"Oge Izugbe Japan"} + } + "meta:Kazakhstan_Eastern"{ + ls{"Oge Mpaghara Ọwụwa Anyanwụ Kazakhstan"} + } + "meta:Kazakhstan_Western"{ + ls{"Oge Mpaghara Ọdịda Anyanwụ Kazakhstan"} + } + "meta:Korea"{ + ld{"Oge Ihe Korea"} + lg{"Oge Korea"} + ls{"Oge Izugbe Korea"} + } + "meta:Kosrae"{ + ls{"Oge Kosrae"} + } + "meta:Krasnoyarsk"{ + ld{"Oge Okpomọkụ Krasnoyarsk"} + lg{"Oge Krasnoyarsk"} + ls{"Oge Izugbe Krasnoyarsk"} + } + "meta:Kyrgystan"{ + ls{"Oge Kyrgyzstan"} + } + "meta:Line_Islands"{ + ls{"Oge Line Islands"} + } + "meta:Lord_Howe"{ + ld{"Oge Ihe Lord Howe"} + lg{"Oge Lord Howe"} + ls{"Oge Izugbe Lord Howe"} + } + "meta:Macquarie"{ + ls{"Oge Macquarie Island"} + } + "meta:Magadan"{ + ld{"Oge Okpomọkụ Magadan"} + lg{"Oge Magadan"} + ls{"Oge Izugbe Magadan"} + } + "meta:Malaysia"{ + ls{"Oge Malaysia"} + } + "meta:Maldives"{ + ls{"Oge Maldives"} + } + "meta:Marquesas"{ + ls{"Oge Marquesas"} + } + "meta:Marshall_Islands"{ + ls{"Oge Marshall Islands"} + } + "meta:Mauritius"{ + ld{"Oge Okpomọkụ Mauritius"} + lg{"Oge Mauritius"} + ls{"Oge Izugbe Mauritius"} + } + "meta:Mawson"{ + ls{"Oge Mawson"} + } + "meta:Mexico_Northwest"{ + ld{"Oge Ihe Northwest Mexico"} + lg{"Oge Northwest Mexico"} + ls{"Oge Izugbe Northwest Mexico"} + } + "meta:Mexico_Pacific"{ + ld{"Oge Ihe Mexican Pacific"} + lg{"Oge Mexican Pacific"} + ls{"Oge Izugbe Mexican Pacific"} + } + "meta:Mongolia"{ + ld{"Oge Okpomọkụ Ulaanbaatar"} + lg{"Oge Ulaanbaatar"} + ls{"Oge Izugbe Ulaanbaatar"} + } + "meta:Moscow"{ + ld{"Oge Okpomọkụ Moscow"} + lg{"Oge Moscow"} + ls{"Oge Izugbe Moscow"} + } + "meta:Myanmar"{ + ls{"Oge Myanmar"} + } + "meta:Nauru"{ + ls{"Oge Nauru"} + } + "meta:Nepal"{ + ls{"Oge Nepal"} + } + "meta:New_Caledonia"{ + ld{"Oge Okpomọkụ New Caledonia"} + lg{"Oge New Caledonia"} + ls{"Oge Izugbe New Caledonia"} + } + "meta:New_Zealand"{ + ld{"Oge Ihe New Zealand"} + lg{"Oge New Zealand"} + ls{"Oge Izugbe New Zealand"} + } + "meta:Newfoundland"{ + ld{"Oge Ihe Newfoundland"} + lg{"Oge Newfoundland"} + ls{"Oge Izugbe Newfoundland"} + } + "meta:Niue"{ + ls{"Oge Niue"} + } + "meta:Norfolk"{ + ls{"Oge Norfolk Island"} + } + "meta:Noronha"{ + ld{"Oge Okpomọkụ Fernando de Noronha"} + lg{"Oge Fernando de Noronha"} + ls{"Oge Izugbe Fernando de Noronha"} + } + "meta:Novosibirsk"{ + ld{"Oge Okpomọkụ Novosibirsk"} + lg{"Oge Novosibirsk"} + ls{"Oge Izugbe Novosibirsk"} + } + "meta:Omsk"{ + ld{"Oge Okpomọkụ Omsk"} + lg{"Oge Omsk"} + ls{"Oge Izugbe Omsk"} + } + "meta:Pakistan"{ + ld{"Oge Okpomọkụ Pakistan"} + lg{"Oge Pakistan"} + ls{"Oge Izugbe Pakistan"} + } + "meta:Palau"{ + ls{"Oge Palau"} + } + "meta:Papua_New_Guinea"{ + ls{"Oge Papua New Guinea"} + } + "meta:Paraguay"{ + ld{"Oge Okpomọkụ Paraguay"} + lg{"Oge Paraguay"} + ls{"Oge Izugbe Paraguay"} + } + "meta:Peru"{ + ld{"Oge Okpomọkụ Peru"} + lg{"Oge Peru"} + ls{"Oge Izugbe Peru"} + } + "meta:Philippines"{ + ld{"Oge Okpomọkụ Philippine"} + lg{"Oge Philippine"} + ls{"Oge Izugbe Philippine"} + } + "meta:Phoenix_Islands"{ + ls{"Oge Phoenix Islands"} + } + "meta:Pierre_Miquelon"{ + ld{"Oge Ihe St. Pierre & Miquelon"} + lg{"Oge St. Pierre & Miquelon"} + ls{"Oge Izugbe St. Pierre & Miquelon"} + } + "meta:Pitcairn"{ + ls{"Oge Pitcairn"} + } + "meta:Ponape"{ + ls{"Oge Ponape"} + } + "meta:Pyongyang"{ + ls{"Oge Pyongyang"} + } + "meta:Reunion"{ + ls{"Oge Réunion"} + } + "meta:Rothera"{ + ls{"Oge Rothera"} + } + "meta:Sakhalin"{ + ld{"Oge Okpomọkụ Sakhalin"} + lg{"Oge Sakhalin"} + ls{"Oge Izugbe Sakhalin"} + } + "meta:Samoa"{ + ld{"Oge Ihe Samoa"} + lg{"Oge Samoa"} + ls{"Oge Izugbe Samoa"} + } + "meta:Seychelles"{ + ls{"Oge Seychelles"} + } + "meta:Singapore"{ + ls{"Oge Izugbe Singapore"} + } + "meta:Solomon"{ + ls{"Oge Solomon Islands"} + } + "meta:South_Georgia"{ + ls{"Oge South Georgia"} + } + "meta:Suriname"{ + ls{"Oge Suriname"} + } + "meta:Syowa"{ + ls{"Oge Syowa"} + } + "meta:Tahiti"{ + ls{"Oge Tahiti"} + } + "meta:Taipei"{ + ld{"Oge Ihe Taipei"} + lg{"Oge Taipei"} + ls{"Oge Izugbe Taipei"} + } + "meta:Tajikistan"{ + ls{"Oge Tajikistan"} + } + "meta:Tokelau"{ + ls{"Oge Tokelau"} + } + "meta:Tonga"{ + ld{"Oge Okpomọkụ Tonga"} + lg{"Oge Tonga"} + ls{"Oge Izugbe Tonga"} + } + "meta:Truk"{ + ls{"Oge Chuuk"} + } + "meta:Turkmenistan"{ + ld{"Oge Okpomọkụ Turkmenist"} + lg{"Oge Turkmenist"} + ls{"Oge Izugbe Turkmenist"} + } + "meta:Tuvalu"{ + ls{"Oge Tuvalu"} + } + "meta:Uruguay"{ + ld{"Oge Okpomọkụ Uruguay"} + lg{"Oge Uruguay"} + ls{"Oge Izugbe Uruguay"} + } + "meta:Uzbekistan"{ + ld{"Oge Okpomọkụ Uzbekist"} + lg{"Oge Uzbekist"} + ls{"Oge Izugbe Uzbekist"} + } + "meta:Vanuatu"{ + ld{"Oge Okpomọkụ Vanuatu"} + lg{"Oge Vanuatu"} + ls{"Oge Izugbe Vanuatu"} + } + "meta:Venezuela"{ + ls{"Oge Venezuela"} + } + "meta:Vladivostok"{ + ld{"Oge Okpomọkụ Vladivostok"} + lg{"Oge Vladivostok"} + ls{"Oge Izugbe Vladivostok"} + } + "meta:Volgograd"{ + ld{"Oge Okpomọkụ Volgograd"} + lg{"Oge Volgograd"} + ls{"Oge Izugbe Volgograd"} + } + "meta:Vostok"{ + ls{"Oge Vostok"} + } + "meta:Wake"{ + ls{"Oge Wake Island"} + } + "meta:Wallis"{ + ls{"Oge Wallis & Futuna"} + } + "meta:Yakutsk"{ + ld{"Oge Okpomọkụ Yakutsk"} + lg{"Oge Yakutsk"} + ls{"Oge Izugbe Yakutsk"} + } + "meta:Yekaterinburg"{ + ld{"Oge Okpomọkụ Yekaterinburg"} + lg{"Oge Yekaterinburg"} + ls{"Oge Izugbe Yekaterinburg"} + } fallbackFormat{"{1} ({0})"} gmtFormat{"GMT{0}"} gmtZeroFormat{"GMT"} diff --git a/source/data/zone/ii.txt b/source/data/zone/ii.txt index a27cc37..a28a3d9 100644 --- a/source/data/zone/ii.txt +++ b/source/data/zone/ii.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ii{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Etc:Unknown"{ ec{"ꅉꀋꐚꌠ"} diff --git a/source/data/zone/is.txt b/source/data/zone/is.txt index 573a3cb..8a60a81 100644 --- a/source/data/zone/is.txt +++ b/source/data/zone/is.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License is{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} diff --git a/source/data/zone/it.txt b/source/data/zone/it.txt index 077c96a..a869c85 100644 --- a/source/data/zone/it.txt +++ b/source/data/zone/it.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License it{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -810,9 +810,6 @@ it{ "Asia:Qatar"{ ec{"Qatar"} } - "Asia:Qostanay"{ - ec{"Qostanay"} - } "Asia:Qyzylorda"{ ec{"Qyzylorda"} } diff --git a/source/data/zone/ja.txt b/source/data/zone/ja.txt index 7bc7b98..f1fa632 100644 --- a/source/data/zone/ja.txt +++ b/source/data/zone/ja.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ja{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"アビジャン"} @@ -810,6 +810,9 @@ ja{ "Asia:Qatar"{ ec{"カタール"} } + "Asia:Qostanay"{ + ec{"コスタナイ"} + } "Asia:Qyzylorda"{ ec{"クズロルダ"} } diff --git a/source/data/zone/jgo.txt b/source/data/zone/jgo.txt index f3abb66..cd2bf44 100644 --- a/source/data/zone/jgo.txt +++ b/source/data/zone/jgo.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License jgo{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ fallbackFormat{"{1} ({0})"} gmtFormat{"GMT{0}"} diff --git a/source/data/zone/jmc.txt b/source/data/zone/jmc.txt index ccac4cd..dae1c69 100644 --- a/source/data/zone/jmc.txt +++ b/source/data/zone/jmc.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License jmc{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/jv.txt b/source/data/zone/jv.txt index cbb3d62..c0f1732 100644 --- a/source/data/zone/jv.txt +++ b/source/data/zone/jv.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License jv{ - Version{"2.1.48.44"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -807,6 +807,9 @@ jv{ "Asia:Qatar"{ ec{"Qatar"} } + "Asia:Qostanay"{ + ec{"Kostanai"} + } "Asia:Qyzylorda"{ ec{"Qyzylorda"} } @@ -907,7 +910,7 @@ jv{ ec{"Georgia Kidul"} } "Atlantic:St_Helena"{ - ec{"Saint Helena"} + ec{"Santa Helena"} } "Atlantic:Stanley"{ ec{"Stanley"} @@ -949,7 +952,7 @@ jv{ ec{"Sydney"} } "Etc:UTC"{ - ls{"Wektu Kordinat Universal"} + ls{"Wektu Universal Kakoordhinasi"} } "Etc:Unknown"{ ec{"Kuto Ora Dikenali"} @@ -1415,7 +1418,7 @@ jv{ ls{"Wektu Standar Tanjung Verde"} } "meta:Chamorro"{ - ls{"Wektu Standar Chamorro"} + ls{"Wektu Chamorro"} } "meta:Chatham"{ ld{"Wektu Ketigo Chatham"} @@ -1781,7 +1784,7 @@ jv{ ls{"Wektu Seichelles"} } "meta:Singapore"{ - ls{"Wektu Standar Singapura"} + ls{"Wektu Singapura"} } "meta:Solomon"{ ls{"Wektu Kepuloan Solomon"} diff --git a/source/data/zone/ka.txt b/source/data/zone/ka.txt index ebd0206..84f9311 100644 --- a/source/data/zone/ka.txt +++ b/source/data/zone/ka.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ka{ - Version{"2.1.48.17"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"აბიჯანი"} @@ -166,7 +166,7 @@ ka{ ec{"ენქორაჯი"} } "America:Anguilla"{ - ec{"ანგილა"} + ec{"ანგილია"} } "America:Antigua"{ ec{"ანტიგუა"} diff --git a/source/data/zone/kab.txt b/source/data/zone/kab.txt index 5af3867..62c9881 100644 --- a/source/data/zone/kab.txt +++ b/source/data/zone/kab.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kab{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/kam.txt b/source/data/zone/kam.txt index 8c67d75..f509aec 100644 --- a/source/data/zone/kam.txt +++ b/source/data/zone/kam.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kam{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/kde.txt b/source/data/zone/kde.txt index 26ff2f9..d673c1f 100644 --- a/source/data/zone/kde.txt +++ b/source/data/zone/kde.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kde{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/kea.txt b/source/data/zone/kea.txt index cecc2ae..32a9605 100644 --- a/source/data/zone/kea.txt +++ b/source/data/zone/kea.txt @@ -1,100 +1,139 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kea{ - Version{"2.1.48.9"} + Version{"36"} zoneStrings{ "America:Blanc-Sablon"{ ec{"Blank-Sablon"} } + "America:Cancun"{ + ec{"Kankun"} + } + "America:Chicago"{ + ec{"Xikagu"} + } + "America:Chihuahua"{ + ec{"Xiuáua"} + } + "America:Costa_Rica"{ + ec{"Kosta Rika"} + } "America:Indianapolis"{ ec{"Indianapolis"} } "Atlantic:Bermuda"{ ec{"Bermuda"} } + "Etc:UTC"{ + ls{"Ora Universal Kordenadu"} + } "Etc:Unknown"{ - ec{"Sidadi Diskonxedu"} + ec{"Sidadi diskonxedu"} + } + "Europe:Dublin"{ + ld{"Ora Padron di Irlanda"} + } + "Europe:London"{ + ld{"Ora di Veron Britániku"} } "meta:Africa_Central"{ - ls{"Ora di Afrika Sentral"} + ls{"Ora di Áfrika Sentral"} } "meta:Africa_Eastern"{ - ls{"Ora di Afrika Oriental"} + ls{"Ora di Áfrika Oriental"} } "meta:Africa_Southern"{ - ls{"Ora di Sul di Afrika"} + ls{"Ora di Sul di Áfrika"} } "meta:Africa_Western"{ - ld{"Ora di Verão di Afrika Osidental"} - lg{"Ora di Afrika Osidental"} - ls{"Ora Padrãu di Afrika Osidental"} + ld{"Ora di Veron di Áfrika Osidental"} + lg{"Ora di Áfrika Osidental"} + ls{"Ora Padron di Áfrika Osidental"} + } + "meta:Alaska"{ + ld{"Ora di Veron di Alaska"} + lg{"Ora di Alaska"} + ls{"Ora Padron di Alaska"} } "meta:America_Central"{ - ld{"Ora Sentral di Verãu"} + ld{"Ora di Veron Sentral"} lg{"Ora Sentral"} - ls{"Ora Sentral Padrãu"} + ls{"Ora Padron Sentral"} } "meta:America_Eastern"{ - ld{"Ora Oriental di Verãu"} + ld{"Ora di Veron Oriental"} lg{"Ora Oriental"} - ls{"Ora Oriental Padrãu"} + ls{"Ora Padron Oriental"} } "meta:America_Mountain"{ - ld{"Ora di Verãu di Montanha"} + ld{"Ora di Veron di Montanha"} lg{"Ora di Montanha"} - ls{"Ora di Montanha Padrãu"} + ls{"Ora Padron di Montanha"} } "meta:America_Pacific"{ - ld{"Ora di Pasifiku di Verãu"} - lg{"Ora di Pasifiku"} - ls{"Ora di Pasifiku Padrãu"} + ld{"Ora di Veron di Pasífiku"} + lg{"Ora di Pasífiku"} + ls{"Ora Padron di Pasífiku"} } "meta:Atlantic"{ - ld{"Ora di Verãu di Atlantiku"} - lg{"Ora di Atlantiku"} - ls{"Ora Padrãu di Atlantiku"} + ld{"Ora di Veron di Atlántiku"} + lg{"Ora di Atlántiku"} + ls{"Ora Padron di Atlántiku"} } "meta:Australia_Central"{ - ld{"Ora di Verãu di Australia Sentral"} - lg{"Ora di Australia Sentral"} - ls{"Ora Padrãu di Australia Sentral"} + ld{"Ora di Veron di Austrália Sentral"} + lg{"Ora di Austrália Sentral"} + ls{"Ora Padron di Austrália Sentral"} } "meta:Australia_CentralWestern"{ - ld{"Ora di Verãu di Australia Sentru-Osidental"} - lg{"Ora di Autralia Sentru-Osidental"} - ls{"Ora Padrãu di Australia Sentru-Osidental"} + ld{"Ora di Veron di Austrália Sentru-Osidental"} + lg{"Ora di Austrália Sentru-Osidental"} + ls{"Ora Padron di Austrália Sentru-Osidental"} } "meta:Australia_Eastern"{ - ld{"Ora di Verãu di Australia Oriental"} - lg{"Ora di Australia Oriental"} - ls{"Ora Padrãu di Australia Oriental"} + ld{"Ora di Veron di Austrália Oriental"} + lg{"Ora di Austrália Oriental"} + ls{"Ora Padron di Austrália Oriental"} } "meta:Australia_Western"{ - ld{"Ora di Verãu di Australia Osidental"} - lg{"Ora di Australia Osidental"} - ls{"Ora Padrãu di Australia Osidental"} + ld{"Ora di Veron di Austrália Osidental"} + lg{"Ora di Austrália Osidental"} + ls{"Ora Padron di Austrália Osidental"} + } + "meta:Cape_Verde"{ + ld{"Ora di Veron de Kabu Verdi"} + lg{"Ora di Kabu Verdi"} + ls{"Ora Padron di Kabu Verdi"} + } + "meta:Cuba"{ + ld{"Ora di Veron di Kuba"} + lg{"Ora di Kuba"} + ls{"Ora Padron di Kuba"} } "meta:Europe_Central"{ - ld{"Ora di Verãu di Europa Sentral"} + ld{"Ora di Veron di Europa Sentral"} lg{"Ora di Europa Sentral"} - ls{"Ora Padrãu di Europa Sentral"} + ls{"Ora Padron di Europa Sentral"} } "meta:Europe_Eastern"{ - ld{"Ora di Verãu di Europa Oriental"} + ld{"Ora di Veron di Europa Oriental"} lg{"Ora di Europa Oriental"} - ls{"Ora Padrãu di Europa Oriental"} + ls{"Ora Padron di Europa Oriental"} } "meta:Europe_Western"{ - ld{"Ora di Verãu di Europa Osidental"} + ld{"Ora di Veron di Europa Osidental"} lg{"Ora di Europa Osidental"} - ls{"Ora Padrãu di Europa Osidental"} + ls{"Ora Padron di Europa Osidental"} + } + "meta:GMT"{ + ls{"Ora Médiu di Greenwich"} } fallbackFormat{"{1} ({0})"} gmtFormat{"GMT{0}"} gmtZeroFormat{"GMT"} hourFormat{"+HH:mm;-HH:mm"} regionFormat{"Ora di {0}"} - regionFormatDaylight{"Ora di {0} (verãu)"} - regionFormatStandard{"Ora di {0} (normal)"} + regionFormatDaylight{"Ora di Veron di {0}"} + regionFormatStandard{"Ora Padron di {0}"} } } diff --git a/source/data/zone/khq.txt b/source/data/zone/khq.txt index a17d5b1..f98bf4a 100644 --- a/source/data/zone/khq.txt +++ b/source/data/zone/khq.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License khq{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/ki.txt b/source/data/zone/ki.txt index 3ffdd5b..f7f986b 100644 --- a/source/data/zone/ki.txt +++ b/source/data/zone/ki.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ki{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/kk.txt b/source/data/zone/kk.txt index 9f07310..9a80bbf 100644 --- a/source/data/zone/kk.txt +++ b/source/data/zone/kk.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kk{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Абиджан"} @@ -397,7 +397,7 @@ kk{ ec{"Лима"} } "America:Los_Angeles"{ - ec{"Лос-Анжелес"} + ec{"Лос-Анджелес"} } "America:Louisville"{ ec{"Луисвилл"} @@ -544,7 +544,7 @@ kk{ ec{"Сан-Паулу"} } "America:Scoresbysund"{ - ec{"Скорсбиссун"} + ec{"Иттоккортоормиит"} } "America:Sitka"{ ec{"Ситка"} @@ -810,6 +810,9 @@ kk{ "Asia:Qatar"{ ec{"Катар"} } + "Asia:Qostanay"{ + ec{"Қостанай"} + } "Asia:Qyzylorda"{ ec{"Қызылорда"} } @@ -862,7 +865,7 @@ kk{ ec{"Томск"} } "Asia:Ulaanbaatar"{ - ec{"Улан-Батор"} + ec{"Ұланбатыр"} } "Asia:Urumqi"{ ec{"Үрімші"} @@ -1007,7 +1010,7 @@ kk{ ec{"Гернси"} } "Europe:Helsinki"{ - ec{"Хелсинки"} + ec{"Хельсинки"} } "Europe:Isle_of_Man"{ ec{"Мэн аралы"} diff --git a/source/data/zone/kkj.txt b/source/data/zone/kkj.txt index 1ba576e..73bad5f 100644 --- a/source/data/zone/kkj.txt +++ b/source/data/zone/kkj.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kkj{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/kl.txt b/source/data/zone/kl.txt index f607e16..14419f8 100644 --- a/source/data/zone/kl.txt +++ b/source/data/zone/kl.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kl{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/kln.txt b/source/data/zone/kln.txt index 4480ec6..c00372a 100644 --- a/source/data/zone/kln.txt +++ b/source/data/zone/kln.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kln{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/km.txt b/source/data/zone/km.txt index c6c7b7b..f80aca3 100644 --- a/source/data/zone/km.txt +++ b/source/data/zone/km.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License km{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"អាប៊ីដ្យាន"} @@ -810,6 +810,9 @@ km{ "Asia:Qatar"{ ec{"កាតា"} } + "Asia:Qostanay"{ + ec{"កូស្ដេណេ"} + } "Asia:Qyzylorda"{ ec{"គីហ្ស៊ីឡូដា"} } diff --git a/source/data/zone/kn.txt b/source/data/zone/kn.txt index 0856f7d..7daee5f 100644 --- a/source/data/zone/kn.txt +++ b/source/data/zone/kn.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kn{ - Version{"2.1.48.17"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"ಅಬಿದ್‌ಜನ್"} @@ -838,7 +838,7 @@ kn{ ec{"ಶಾಂಘೈ"} } "Asia:Singapore"{ - ec{"ಸಿಂಗಾಪೂರ್"} + ec{"ಸಿಂಗಪುರ್"} } "Asia:Srednekolymsk"{ ec{"ಸ್ರೇದ್ನೇಕೋಲೀಮಸ್ಕ"} @@ -1806,7 +1806,7 @@ kn{ ls{"ಸೀಷೆಲ್ಸ್ ಸಮಯ"} } "meta:Singapore"{ - ls{"ಸಿಂಗಾಪುರ್ ಪ್ರಮಾಣಿತ ಸಮಯ"} + ls{"ಸಿಂಗಪುರ್ ಪ್ರಮಾಣಿತ ಸಮಯ"} } "meta:Solomon"{ ls{"ಸಾಲಮನ್ ದ್ವೀಪಗಳ ಸಮಯ"} diff --git a/source/data/zone/ko.txt b/source/data/zone/ko.txt index 845fdd6..ff0682d 100644 --- a/source/data/zone/ko.txt +++ b/source/data/zone/ko.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ko{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"아비장"} diff --git a/source/data/zone/ko_KP.txt b/source/data/zone/ko_KP.txt index 27257ee..b68375c 100644 --- a/source/data/zone/ko_KP.txt +++ b/source/data/zone/ko_KP.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ko_KP{ - Version{"2.1.47.71"} + Version{"36"} zoneStrings{ "meta:Korea"{ ld{"조선 하계 표준시"} diff --git a/source/data/zone/kok.txt b/source/data/zone/kok.txt index e05c719..731cea6 100644 --- a/source/data/zone/kok.txt +++ b/source/data/zone/kok.txt @@ -1,8 +1,164 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kok{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ + "Africa:Abidjan"{ + ec{"अबिदजान"} + } + "Africa:Accra"{ + ec{"आकरा"} + } + "Africa:Addis_Ababa"{ + ec{"आदीस अबाबा"} + } + "Africa:Algiers"{ + ec{"आल्जियार्स"} + } + "Africa:Asmera"{ + ec{"अस्मारा"} + } + "Africa:Bamako"{ + ec{"बामाको"} + } + "Africa:Bangui"{ + ec{"बांगी"} + } + "Africa:Banjul"{ + ec{"बानजुल"} + } + "Africa:Bissau"{ + ec{"बिसाउ"} + } + "Africa:Blantyre"{ + ec{"ब्लानटायर"} + } + "Africa:Brazzaville"{ + ec{"ब्राझाविले"} + } + "Africa:Bujumbura"{ + ec{"बुजुमबुरा"} + } + "Africa:Cairo"{ + ec{"कायरो"} + } + "Africa:Casablanca"{ + ec{"कासाब्लांका"} + } + "Africa:Ceuta"{ + ec{"सेउटा"} + } + "Africa:Conakry"{ + ec{"कोनाक्रा"} + } + "Africa:Dakar"{ + ec{"डकार"} + } + "Africa:Dar_es_Salaam"{ + ec{"दार इ सलाम"} + } + "Africa:Djibouti"{ + ec{"जिबूती"} + } + "Africa:Douala"{ + ec{"डौआला"} + } + "Africa:El_Aaiun"{ + ec{"अल आयुन"} + } + "Africa:Freetown"{ + ec{"फ्रिटावन"} + } + "Africa:Gaborone"{ + ec{"गाबोरोन"} + } + "Africa:Harare"{ + ec{"हरारे"} + } + "Africa:Johannesburg"{ + ec{"जोहान्सबर्ग"} + } + "Africa:Juba"{ + ec{"जुबा"} + } + "Africa:Kampala"{ + ec{"काम्पाला"} + } + "Africa:Khartoum"{ + ec{"खार्टोम"} + } + "Africa:Kigali"{ + ec{"किगाली"} + } + "Africa:Kinshasa"{ + ec{"किनशासा"} + } + "Africa:Lagos"{ + ec{"लागोस"} + } + "Africa:Libreville"{ + ec{"लिब्रेविले"} + } + "Africa:Lome"{ + ec{"लोम"} + } + "Africa:Luanda"{ + ec{"लुआंडा"} + } + "Africa:Lubumbashi"{ + ec{"लुबुमबाशी"} + } + "Africa:Lusaka"{ + ec{"लुसाका"} + } + "Africa:Malabo"{ + ec{"मलाबो"} + } + "Africa:Maputo"{ + ec{"मापुटो"} + } + "Africa:Maseru"{ + ec{"मासेरु"} + } + "Africa:Mbabane"{ + ec{"एमबाबेन"} + } + "Africa:Mogadishu"{ + ec{"मोगादिशू"} + } + "Africa:Monrovia"{ + ec{"मोनरोविया"} + } + "Africa:Nairobi"{ + ec{"नायरोबी"} + } + "Africa:Ndjamena"{ + ec{"एनजामेना"} + } + "Africa:Niamey"{ + ec{"नियामी"} + } + "Africa:Nouakchott"{ + ec{"नवाकसुत"} + } + "Africa:Ouagadougou"{ + ec{"ओगादौगो"} + } + "Africa:Porto-Novo"{ + ec{"पोर्टो-नोवो"} + } + "Africa:Sao_Tome"{ + ec{"साओ टोम"} + } + "Africa:Tripoli"{ + ec{"त्रिपोली"} + } + "Africa:Tunis"{ + ec{"टुनिस"} + } + "Africa:Windhoek"{ + ec{"विंडहोक"} + } "America:Adak"{ ec{"अडाक"} } @@ -355,7 +511,7 @@ kok{ ec{"पुंटा अरेनास"} } "America:Rainy_River"{ - ec{"पावसाळी न्हय"} + ec{"पावसाळी न्हंय"} } "America:Rankin_Inlet"{ ec{"रँकिन इनलॅट"} @@ -444,27 +600,695 @@ kok{ "America:Yellowknife"{ ec{"यलोक्नायफ"} } + "Antarctica:Casey"{ + ec{"केसी"} + } + "Antarctica:Davis"{ + ec{"डेव्हीस"} + } + "Antarctica:DumontDUrville"{ + ec{"द्युमाँ दूरवीय"} + } + "Antarctica:Macquarie"{ + ec{"मॅक्वेरी"} + } + "Antarctica:Mawson"{ + ec{"मॉसन"} + } + "Antarctica:McMurdo"{ + ec{"मॅकमुर्दो"} + } + "Antarctica:Palmer"{ + ec{"पाल्मेर"} + } + "Antarctica:Rothera"{ + ec{"रोथेरा"} + } + "Antarctica:Syowa"{ + ec{"स्योवा"} + } + "Antarctica:Troll"{ + ec{"ट्रोल"} + } + "Antarctica:Vostok"{ + ec{"वोस्तोक"} + } + "Arctic:Longyearbyen"{ + ec{"लोंगयेअरब्येन"} + } + "Asia:Aden"{ + ec{"Aden"} + } + "Asia:Almaty"{ + ec{"अल्माटी"} + } + "Asia:Amman"{ + ec{"अम्मान"} + } + "Asia:Anadyr"{ + ec{"अनादिर"} + } + "Asia:Aqtau"{ + ec{"ऍक्टो"} + } + "Asia:Aqtobe"{ + ec{"अक्टोबे"} + } + "Asia:Ashgabat"{ + ec{"अशगाबाट"} + } + "Asia:Atyrau"{ + ec{"अत्यारो"} + } + "Asia:Baghdad"{ + ec{"बगदाद"} + } + "Asia:Bahrain"{ + ec{"बेहरेन"} + } + "Asia:Baku"{ + ec{"बाकू"} + } + "Asia:Bangkok"{ + ec{"बँकॉक"} + } + "Asia:Barnaul"{ + ec{"बरनौल"} + } + "Asia:Beirut"{ + ec{"बेरूत"} + } + "Asia:Bishkek"{ + ec{"बिश्केक"} + } + "Asia:Brunei"{ + ec{"ब्रूनेई"} + } + "Asia:Calcutta"{ + ec{"कोलकाता"} + } + "Asia:Chita"{ + ec{"चिटा"} + } + "Asia:Choibalsan"{ + ec{"चोईबाल्सन"} + } + "Asia:Colombo"{ + ec{"कोलंबो"} + } + "Asia:Damascus"{ + ec{"दमस्कस"} + } + "Asia:Dhaka"{ + ec{"ढाका"} + } + "Asia:Dili"{ + ec{"दिली"} + } + "Asia:Dubai"{ + ec{"दुबय"} + } + "Asia:Dushanbe"{ + ec{"दुशान्बे"} + } + "Asia:Famagusta"{ + ec{"फमागुस्ता"} + } + "Asia:Gaza"{ + ec{"गाझा"} + } + "Asia:Hebron"{ + ec{"हेब्रॉन"} + } + "Asia:Hong_Kong"{ + ec{"हाँग काँग"} + } + "Asia:Hovd"{ + ec{"होव्हड"} + } + "Asia:Irkutsk"{ + ec{"इर्कुटस्क"} + } + "Asia:Jakarta"{ + ec{"जकार्ता"} + } + "Asia:Jayapura"{ + ec{"जायापुरा"} + } + "Asia:Jerusalem"{ + ec{"जेरुसालेम"} + } + "Asia:Kabul"{ + ec{"काबुल"} + } + "Asia:Kamchatka"{ + ec{"कामचाट्का"} + } + "Asia:Karachi"{ + ec{"कराची"} + } + "Asia:Katmandu"{ + ec{"काठमांडू"} + } + "Asia:Khandyga"{ + ec{"खा़ंडिगा"} + } + "Asia:Krasnoyarsk"{ + ec{"क्रास्नोयार्स्क"} + } + "Asia:Kuala_Lumpur"{ + ec{"कुआलालम्पूर"} + } + "Asia:Kuching"{ + ec{"कुचींग"} + } + "Asia:Kuwait"{ + ec{"कुवेत"} + } + "Asia:Macau"{ + ec{"मकाव"} + } + "Asia:Magadan"{ + ec{"मगादान"} + } + "Asia:Makassar"{ + ec{"मकास्सार"} + } + "Asia:Manila"{ + ec{"मनिला"} + } + "Asia:Muscat"{ + ec{"मस्कट"} + } + "Asia:Nicosia"{ + ec{"निकोसिया"} + } + "Asia:Novokuznetsk"{ + ec{"नोवोकुझनेत्स्क"} + } + "Asia:Novosibirsk"{ + ec{"नोवोसिबिर्स्क"} + } + "Asia:Omsk"{ + ec{"ओम्स्क"} + } + "Asia:Oral"{ + ec{"ओरल"} + } + "Asia:Phnom_Penh"{ + ec{"फ्नोम पेन्ह"} + } + "Asia:Pontianak"{ + ec{"पोण्टीअनाक"} + } + "Asia:Pyongyang"{ + ec{"प्योंगयांग"} + } + "Asia:Qatar"{ + ec{"कतार"} + } + "Asia:Qostanay"{ + ec{"कोस्टानाय"} + } + "Asia:Qyzylorda"{ + ec{"क्य्ज्यलॉरडा"} + } + "Asia:Rangoon"{ + ec{"यानगॉन"} + } + "Asia:Riyadh"{ + ec{"रियाध"} + } + "Asia:Saigon"{ + ec{"हो ची मिन्ह"} + } + "Asia:Sakhalin"{ + ec{"सखलिन"} + } + "Asia:Samarkand"{ + ec{"समरकंद"} + } + "Asia:Seoul"{ + ec{"सोल"} + } + "Asia:Shanghai"{ + ec{"शांघाय"} + } + "Asia:Singapore"{ + ec{"सिंगापूर"} + } + "Asia:Srednekolymsk"{ + ec{"स्रेदनेकॉलय्मस्क"} + } + "Asia:Taipei"{ + ec{"तैपेई"} + } + "Asia:Tashkent"{ + ec{"ताश्कंद"} + } + "Asia:Tbilisi"{ + ec{"तुबलीसी"} + } + "Asia:Tehran"{ + ec{"तेहरान"} + } + "Asia:Thimphu"{ + ec{"थिम्फू"} + } + "Asia:Tokyo"{ + ec{"तोक्यो"} + } + "Asia:Tomsk"{ + ec{"टॉमस्क"} + } + "Asia:Ulaanbaatar"{ + ec{"उलानबतार"} + } + "Asia:Urumqi"{ + ec{"उरुम्की"} + } + "Asia:Ust-Nera"{ + ec{"उस्त नेरा"} + } + "Asia:Vientiane"{ + ec{"व्हिएन्टियन"} + } + "Asia:Vladivostok"{ + ec{"व्लादिवोस्तोक"} + } + "Asia:Yakutsk"{ + ec{"यकुत्स्क"} + } + "Asia:Yekaterinburg"{ + ec{"येकातेरिनबर्ग"} + } + "Asia:Yerevan"{ + ec{"येरेवान"} + } + "Atlantic:Azores"{ + ec{"अझोरेस"} + } "Atlantic:Bermuda"{ ec{"बर्मुडा"} } + "Atlantic:Canary"{ + ec{"कॅनरी"} + } + "Atlantic:Cape_Verde"{ + ec{"केप वर्दे"} + } + "Atlantic:Faeroe"{ + ec{"फैरो"} + } + "Atlantic:Madeira"{ + ec{"मदिरा"} + } + "Atlantic:Reykjavik"{ + ec{"रिक्जेविक"} + } + "Atlantic:South_Georgia"{ + ec{"दक्षिण जॉर्जिया"} + } + "Atlantic:St_Helena"{ + ec{"सें. हेलेना"} + } + "Atlantic:Stanley"{ + ec{"स्टेन्ले"} + } + "Australia:Adelaide"{ + ec{"एडिलेड"} + } + "Australia:Brisbane"{ + ec{"ब्रिस्बेन"} + } + "Australia:Broken_Hill"{ + ec{"ब्रोकन हिल"} + } + "Australia:Currie"{ + ec{"क्युरी"} + } + "Australia:Darwin"{ + ec{"डार्विन"} + } + "Australia:Eucla"{ + ec{"उक्ला"} + } + "Australia:Hobart"{ + ec{"होबार्ट"} + } + "Australia:Lindeman"{ + ec{"लिडेमॅन"} + } + "Australia:Lord_Howe"{ + ec{"लॉर्ड होवे"} + } + "Australia:Melbourne"{ + ec{"मेलबर्न"} + } + "Australia:Perth"{ + ec{"पर्थ"} + } + "Australia:Sydney"{ + ec{"सिडनी"} + } "Etc:UTC"{ ls{"समन्वित वैश्विक वेळ"} } "Etc:Unknown"{ ec{"अज्ञात शार"} } + "Europe:Amsterdam"{ + ec{"ऍम्स्टरडॅम"} + } + "Europe:Andorra"{ + ec{"अंडोरा"} + } + "Europe:Astrakhan"{ + ec{"आस्ट्रखन"} + } + "Europe:Athens"{ + ec{"अथेन्स"} + } + "Europe:Belgrade"{ + ec{"बेलग्रेड"} + } + "Europe:Berlin"{ + ec{"बर्लिन"} + } + "Europe:Bratislava"{ + ec{"ब्राटिस्लाव्हा"} + } + "Europe:Brussels"{ + ec{"ब्रुसेल्स"} + } + "Europe:Bucharest"{ + ec{"बुखारेस्ट"} + } + "Europe:Budapest"{ + ec{"बुडापेस्ट"} + } + "Europe:Busingen"{ + ec{"बुसिंजेन"} + } + "Europe:Chisinau"{ + ec{"चिसीनाऊ"} + } + "Europe:Copenhagen"{ + ec{"कोपनहेगन"} + } "Europe:Dublin"{ + ec{"डब्लिन"} ld{"आयरिश प्रमाणित वेळ"} } + "Europe:Gibraltar"{ + ec{"जिब्राल्टर"} + } + "Europe:Guernsey"{ + ec{"गर्नसी"} + } + "Europe:Helsinki"{ + ec{"हेलसिंकी"} + } + "Europe:Isle_of_Man"{ + ec{"इसले ऑफ मॅन"} + } + "Europe:Istanbul"{ + ec{"इस्तंबूल"} + } + "Europe:Jersey"{ + ec{"जर्सी"} + } + "Europe:Kaliningrad"{ + ec{"कालिनिनग्राड"} + } + "Europe:Kiev"{ + ec{"कीव"} + } + "Europe:Kirov"{ + ec{"किरोव"} + } + "Europe:Lisbon"{ + ec{"लिस्बन"} + } + "Europe:Ljubljana"{ + ec{"जुब्लजाना"} + } "Europe:London"{ + ec{"लंडन"} ld{"ब्रिटिश ग्रीष्म वेळ"} } + "Europe:Luxembourg"{ + ec{"लक्सेमबर्ग"} + } + "Europe:Madrid"{ + ec{"माद्रीद"} + } + "Europe:Malta"{ + ec{"माल्टा"} + } + "Europe:Mariehamn"{ + ec{"मॅरीहाम्न"} + } + "Europe:Minsk"{ + ec{"मिंस्क"} + } + "Europe:Monaco"{ + ec{"मोनॅको"} + } + "Europe:Moscow"{ + ec{"मॉस्को"} + } + "Europe:Oslo"{ + ec{"ओस्लो"} + } + "Europe:Paris"{ + ec{"पॅरिस"} + } + "Europe:Podgorica"{ + ec{"पॉडगोरिका"} + } + "Europe:Prague"{ + ec{"प्राग"} + } + "Europe:Riga"{ + ec{"रीगा"} + } + "Europe:Rome"{ + ec{"रोम"} + } + "Europe:Samara"{ + ec{"समारा"} + } + "Europe:San_Marino"{ + ec{"सॅन मारीनो"} + } + "Europe:Sarajevo"{ + ec{"साराजिवो"} + } + "Europe:Saratov"{ + ec{"साराटोव"} + } + "Europe:Simferopol"{ + ec{"सिमफरोपोल"} + } + "Europe:Skopje"{ + ec{"स्कोप्जे"} + } + "Europe:Sofia"{ + ec{"सोफिया"} + } + "Europe:Stockholm"{ + ec{"स्टॉकहोम"} + } + "Europe:Tallinn"{ + ec{"टॅलिन"} + } + "Europe:Tirane"{ + ec{"तिराना"} + } + "Europe:Ulyanovsk"{ + ec{"उल्यानोव्स्क"} + } + "Europe:Uzhgorod"{ + ec{"उझगोरोड"} + } + "Europe:Vaduz"{ + ec{"वडुज"} + } + "Europe:Vatican"{ + ec{"वॅटिकन"} + } + "Europe:Vienna"{ + ec{"वियेना"} + } + "Europe:Vilnius"{ + ec{"विल्नियस"} + } + "Europe:Volgograd"{ + ec{"व्होल्गोग्राड"} + } + "Europe:Warsaw"{ + ec{"वारसॉ"} + } + "Europe:Zagreb"{ + ec{"झाग्रेब"} + } + "Europe:Zaporozhye"{ + ec{"झापोरोझे"} + } + "Europe:Zurich"{ + ec{"झुरिच"} + } + "Indian:Antananarivo"{ + ec{"अंटानानारिवो"} + } + "Indian:Chagos"{ + ec{"चागोस"} + } + "Indian:Christmas"{ + ec{"क्रिसमस"} + } + "Indian:Cocos"{ + ec{"कोकोस"} + } + "Indian:Comoro"{ + ec{"कोमोरो"} + } + "Indian:Kerguelen"{ + ec{"केरगुलेन"} + } + "Indian:Mahe"{ + ec{"माहे"} + } + "Indian:Maldives"{ + ec{"मालदीव"} + } + "Indian:Mauritius"{ + ec{"मॉरिशस"} + } + "Indian:Mayotte"{ + ec{"मेयोट"} + } + "Indian:Reunion"{ + ec{"रियुनियन"} + } + "Pacific:Apia"{ + ec{"अपिया"} + } + "Pacific:Auckland"{ + ec{"ऑकलँड"} + } + "Pacific:Bougainville"{ + ec{"बोगेनविले"} + } + "Pacific:Chatham"{ + ec{"चॅथम"} + } "Pacific:Easter"{ ec{"ईस्टर"} } + "Pacific:Efate"{ + ec{"इफेट"} + } + "Pacific:Enderbury"{ + ec{"इंडरबरी"} + } + "Pacific:Fakaofo"{ + ec{"फाकाओफो"} + } + "Pacific:Fiji"{ + ec{"फिजी"} + } + "Pacific:Funafuti"{ + ec{"फुनाफुटी"} + } "Pacific:Galapagos"{ ec{"गालापागोस"} } + "Pacific:Gambier"{ + ec{"गाम्बियर"} + } + "Pacific:Guadalcanal"{ + ec{"ग्वादालकॅनाल"} + } + "Pacific:Guam"{ + ec{"गुआम"} + } + "Pacific:Johnston"{ + ec{"जॉन्स्टन"} + } + "Pacific:Kiritimati"{ + ec{"किरितिमाती"} + } + "Pacific:Kosrae"{ + ec{"कोसरे"} + } + "Pacific:Kwajalein"{ + ec{"क्वाजलेन"} + } + "Pacific:Majuro"{ + ec{"माजुरो"} + } + "Pacific:Marquesas"{ + ec{"मार्किसस"} + } + "Pacific:Midway"{ + ec{"मिडवे"} + } + "Pacific:Nauru"{ + ec{"नावरू"} + } + "Pacific:Niue"{ + ec{"नीयू"} + } + "Pacific:Norfolk"{ + ec{"नॉरफोक"} + } + "Pacific:Noumea"{ + ec{"नूमेआ"} + } + "Pacific:Pago_Pago"{ + ec{"पागो पागो"} + } + "Pacific:Palau"{ + ec{"पलाऊ"} + } + "Pacific:Pitcairn"{ + ec{"पिटकॅरन"} + } + "Pacific:Ponape"{ + ec{"पोह्नपेई"} + } + "Pacific:Port_Moresby"{ + ec{"पोर्ट मॉरेस्बी"} + } + "Pacific:Rarotonga"{ + ec{"रारोटोंगा"} + } + "Pacific:Saipan"{ + ec{"सायपान"} + } + "Pacific:Tahiti"{ + ec{"ताहिती"} + } + "Pacific:Tarawa"{ + ec{"तारवा"} + } + "Pacific:Tongatapu"{ + ec{"टोंगाटापू"} + } + "Pacific:Truk"{ + ec{"चुक"} + } + "Pacific:Wake"{ + ec{"वैक"} + } + "Pacific:Wallis"{ + ec{"वालिस"} + } + "meta:Afghanistan"{ + ls{"अफगानिस्तान वेळ"} + } "meta:Africa_Central"{ ls{"मध्य आफ्रिका वेळ"} } @@ -495,7 +1319,7 @@ kok{ ls{"मध्य प्रमाणित वेळ"} } "meta:America_Eastern"{ - ld{"उदेंतेचो डेलायट वेळ"} + ld{"उदेंत डेलायट वेळ"} lg{"उदेंत वेळ"} ls{"उदेंत प्रमाणित वेळ"} } @@ -509,6 +1333,16 @@ kok{ lg{"प्रशांत वेळ"} ls{"प्रशांत प्रमाणित वेळ"} } + "meta:Apia"{ + ld{"अपिया डेलायट वेळ"} + lg{"अपिया वेळ"} + ls{"अपिया प्रमाणित वेळ"} + } + "meta:Arabian"{ + ld{"अरबी डेलायट वेळ"} + lg{"अरबी वेळ"} + ls{"अरबी प्रमाणित वेळ"} + } "meta:Argentina"{ ld{"अर्जेंटिना ग्रीष्म वेळ"} lg{"अर्जेंटिना वेळ"} @@ -519,11 +1353,54 @@ kok{ lg{"अस्तंत अर्जेंटिना वेळ"} ls{"अस्तंत अर्जेंटिना प्रमाणित वेळ"} } + "meta:Armenia"{ + ld{"आर्मेनिया ग्रीष्म वेळ"} + lg{"आर्मेनिया वेळ"} + ls{"आर्मेनिया प्रमाणित वेळ"} + } "meta:Atlantic"{ ld{"अटलांटीक डेलायट वेळ"} lg{"अटलांटीक वेळ"} ls{"अटलांटीक प्रमाणित वेळ"} } + "meta:Australia_Central"{ + ld{"ऑस्ट्रेलीयन मध्य डेलायट वेळ"} + lg{"मध्य ऑस्ट्रेलीया वेळ"} + ls{"ऑस्ट्रेलीयन मध्य प्रमाणित वेळ"} + } + "meta:Australia_CentralWestern"{ + ld{"ऑस्ट्रेलीयन मध्य अस्तंत डेलायट वेळ"} + lg{"ऑस्ट्रेलीयन मध्य अस्तंत वेळ"} + ls{"ऑस्ट्रेलीयन मध्य अस्तंत प्रमाणित वेळ"} + } + "meta:Australia_Eastern"{ + ld{"ऑस्ट्रेलीयन उदेंत डेलायट वेळ"} + lg{"उदेंत ऑस्ट्रेलीया वेळ"} + ls{"ऑस्ट्रेलीयन उदेंत प्रमाणित वेळ"} + } + "meta:Australia_Western"{ + ld{"ऑस्ट्रेलीयन अस्तंत डेलायट वेळ"} + lg{"अस्तंत ऑस्ट्रेलीया वेळ"} + ls{"ऑस्ट्रेलीयन अस्तंत प्रमाणित वेळ"} + } + "meta:Azerbaijan"{ + ld{"अजरबैजान ग्रीष्म वेळ"} + lg{"अजरबैजान वेळ"} + ls{"अजरबैजान प्रमाणित वेळ"} + } + "meta:Azores"{ + ld{"अझोरेस ग्रीष्म वेळ"} + lg{"अझोरेस"} + ls{"अझोरेस प्रमाणित वेळ"} + } + "meta:Bangladesh"{ + ld{"बांगलादेश ग्रीष्म वेळ"} + lg{"बांगलादेश वेळ"} + ls{"बांगलादेश प्रमाणित वेळ"} + } + "meta:Bhutan"{ + ls{"भूतान"} + } "meta:Bolivia"{ ls{"बोलिव्हिया वेळ"} } @@ -532,21 +1409,67 @@ kok{ lg{"ब्राझिलिया वेळ"} ls{"ब्राझिलिया प्रमाणित वेळ"} } + "meta:Brunei"{ + ls{"ब्रुनेइ दारूस्सलाम वेळ"} + } + "meta:Cape_Verde"{ + ld{"केप वर्दे ग्रीष्म वेळ"} + lg{"केप वर्दे वेळ"} + ls{"केप वर्दे प्रमाणित वेळ"} + } + "meta:Chamorro"{ + ls{"कॅमोरा प्रमाणित वेळ"} + } + "meta:Chatham"{ + ld{"चॅथम डेलायट वेळ"} + lg{"चॅथम वेळ"} + ls{"चॅथम प्रमाणित वेळ"} + } "meta:Chile"{ ld{"चिली ग्रीष्म वेळ"} lg{"चिली वेळ"} ls{"चिली प्रमाणित वेळ"} } + "meta:China"{ + ld{"चीन डेलायट वेळ"} + lg{"चीन वेळ"} + ls{"चीन प्रमाणित वेळ"} + } + "meta:Choibalsan"{ + ld{"चोईबाल्सन ग्रीष्म वेळ"} + lg{"चोईबाल्सन वेळ"} + ls{"चोईबाल्सन प्रमाणित वेळ"} + } + "meta:Christmas"{ + ls{"क्रिसमस आयलँड वेळ"} + } + "meta:Cocos"{ + ls{"कोकोस आयलँड वेळ"} + } "meta:Colombia"{ ld{"कोलंबिया ग्रीष्म वेळ"} - lg{"कोलंबिया"} + lg{"कोलंबिया वेळ"} ls{"कोलंबिया प्रमाणित वेळ"} } + "meta:Cook"{ + ld{"कूक आयलँड अर्द ग्रीष्म वेळ"} + lg{"कूक आयलँड वेळ"} + ls{"कूक आयलँड प्रमाणित वेळ"} + } "meta:Cuba"{ ld{"क्युबा डेलायट वेळ"} lg{"क्युबा वेळ"} ls{"क्युबा प्रमाणित वेळ"} } + "meta:Davis"{ + ls{"डेव्हीस वेळ"} + } + "meta:DumontDUrville"{ + ls{"द्युमाँ दूरवीय वेळ"} + } + "meta:East_Timor"{ + ls{"उदेंत तिमोर वेळ"} + } "meta:Easter"{ ld{"ईस्टर आयलँड ग्रीष्म वेळ"} lg{"ईस्टर आयलँड वेळ"} @@ -555,17 +1478,57 @@ kok{ "meta:Ecuador"{ ls{"इक्वेडोर वेळ"} } + "meta:Europe_Central"{ + ld{"मध्य युवरोपियन ग्रीष्म वेळ"} + lg{"मध्य युरोपियन वेळ"} + ls{"मध्य युरोपियन प्रमाणित वेळ"} + } + "meta:Europe_Eastern"{ + ld{"उदेंत युरोपियन ग्रीष्म वेळ"} + lg{"उदेंत युरोपियन वेळ"} + ls{"उदेंत युरोपियन प्रमाणित वेळ"} + } + "meta:Europe_Further_Eastern"{ + ls{"आनीक-उदेंत युरोपियन वेळ"} + } + "meta:Europe_Western"{ + ld{"अस्तंत युरोपियन ग्रीष्म वेळ"} + lg{"अस्तंत युरोपियन वेळ"} + ls{"अस्तंत युरोपियन प्रमाणित वेळ"} + } "meta:Falkland"{ ld{"फॉकलँड आयलँड्स ग्रीष्म वेळ"} lg{"फॉकलँड आयलँड्स वेळ"} ls{"फॉकलँड आयलँड्स प्रमाणित वेळ"} } + "meta:Fiji"{ + ld{"फिजी ग्रीष्म वेळ"} + lg{"फिजी वेळ"} + ls{"फिजी प्रमाणित वेळ"} + } "meta:French_Guiana"{ ls{"फ्रेंच गयाना वेळ"} } + "meta:French_Southern"{ + ls{"फ्रेन्च दक्षिण आनी अंटार्क्टिक वेळ"} + } + "meta:GMT"{ + ls{"ग्रीनविच मध्यc वेळ"} + } "meta:Galapagos"{ ls{"गालापागोस वेळ"} } + "meta:Gambier"{ + ls{"गाम्बियर वेळ"} + } + "meta:Georgia"{ + ld{"जॉर्जिया ग्रीष्म वेळ"} + lg{"जॉर्जिया वेळ"} + ls{"जॉर्जिया प्रमाणित वेळ"} + } + "meta:Gilbert_Islands"{ + ls{"गिल्बर्ट आयलँड वेळ"} + } "meta:Greenland_Eastern"{ ld{"उदेंत ग्रीनलँड ग्रीष्म वेळ"} lg{"उदेंत ग्रीनलँड वेळ"} @@ -576,6 +1539,9 @@ kok{ lg{"अस्तंत ग्रीनलँड वेळ"} ls{"अस्तंत ग्रीनलँड प्रमाणित वेळ"} } + "meta:Gulf"{ + ls{"गल्फ प्रमाणित वेळ"} + } "meta:Guyana"{ ls{"गुयाना वेळ"} } @@ -584,10 +1550,113 @@ kok{ lg{"हवाई-अलेयुशिन वेळ"} ls{"हवाई-अलेयुशिन प्रमाणित वेळ"} } + "meta:Hong_Kong"{ + ld{"हाँग काँग ग्रीष्म वेळ"} + lg{"हाँग काँग वेळ"} + ls{"हाँग काँग प्रमाणित वेळ"} + } + "meta:Hovd"{ + ld{"होव्हड ग्रीष्म वेळ"} + lg{"होव्हड"} + ls{"होव्हड प्रमाणित वेळ"} + } "meta:India"{ - ls{"भारतीय समय"} + ls{"भारतीय प्रमाणित वेळ"} ss{"IST"} } + "meta:Indian_Ocean"{ + ls{"हिंद म्हासागर वेळ"} + } + "meta:Indochina"{ + ls{"इंडोचीन वेळ"} + } + "meta:Indonesia_Central"{ + ls{"मध्य इंडोनेशिया वेळ"} + } + "meta:Indonesia_Eastern"{ + ls{"उदेंत इंडोनेशिया वेळ"} + } + "meta:Indonesia_Western"{ + ls{"अस्तंत इंडोनेशिया वेळ"} + } + "meta:Iran"{ + ld{"इरान डेलायट वेळ"} + lg{"इरान"} + ls{"इरान प्रमाणित वेळ"} + } + "meta:Irkutsk"{ + ld{"ईर्कुटस्क ग्रीष्म वेळ"} + lg{"इर्कुटस्क वेळ"} + ls{"ईर्कुटस्क प्रमाणित वेळ"} + } + "meta:Israel"{ + ld{"इज़राइल डेलायट वेळ"} + lg{"इज़राइल वेळ"} + ls{"इज़राइल प्रमाणित वेळ"} + } + "meta:Japan"{ + ld{"जपान डेलायट वेळ"} + lg{"जपान वेळ"} + ls{"जपान प्रमाणित वेळ"} + } + "meta:Kazakhstan_Eastern"{ + ls{"उदेंत कझाकस्तान वेळ"} + } + "meta:Kazakhstan_Western"{ + ls{"अस्तंत कझाकस्तान वेळ"} + } + "meta:Korea"{ + ld{"कोरियन डेलायट वेळ"} + lg{"कोरियन वेळ"} + ls{"कोरियन प्रमाणित वेळ"} + } + "meta:Kosrae"{ + ls{"कोसरे वेळ"} + } + "meta:Krasnoyarsk"{ + ld{"क्रास्नोयार्स्क ग्रीष्म वेळ"} + lg{"क्रास्नोयार्स्क वेळ"} + ls{"क्रास्नोयार्स्क प्रमाणित वेळ"} + } + "meta:Kyrgystan"{ + ls{"किर्गिज़स्तान वेळ"} + } + "meta:Line_Islands"{ + ls{"लायन आयलँड वेळ"} + } + "meta:Lord_Howe"{ + ld{"लॉर्ड होवे डेलायट वेळ"} + lg{"लॉर्ड होवे वेळ"} + ls{"लॉर्ड होवे प्रमाणित वेळ"} + } + "meta:Macquarie"{ + ls{"मॅक्वेरी आयलँड वेळ"} + } + "meta:Magadan"{ + ld{"मगादान ग्रीष्म वेळ"} + lg{"मगादान वेळ"} + ls{"मगादान प्रमाणित वेळ"} + } + "meta:Malaysia"{ + ls{"मलेशिया वेळ"} + } + "meta:Maldives"{ + ls{"मालदीव वेळ"} + } + "meta:Marquesas"{ + ls{"मार्किसस वेळ"} + } + "meta:Marshall_Islands"{ + ls{"मार्शल आयलँड वेळ"} + } + "meta:Mauritius"{ + ld{"मॉरिशस ग्रीष्म वेळ"} + lg{"मॉरिशस वेळ"} + ls{"मॉरिशस प्रमाणित वेळ"} + } + "meta:Mawson"{ + ls{"मॉसन वेळ"} + } "meta:Mexico_Northwest"{ ld{"वायव्य मेक्सिको डेलायट वेळ"} lg{"वायव्य मेक्सिको वेळ"} @@ -598,16 +1667,72 @@ kok{ lg{"मेक्सिकन प्रशांत वेळ"} ls{"मेक्सिकन प्रशांत प्रमाणित वेळ"} } + "meta:Mongolia"{ + ld{"उलानबतार ग्रीष्म वेळ"} + lg{"उलानबतार वेळ"} + ls{"उलानबतार प्रमाणित वेळ"} + } + "meta:Moscow"{ + ld{"मॉस्को ग्रीष्म वेळ"} + lg{"मॉस्को वेळ"} + ls{"मॉस्को प्रमाणित वेळ"} + } + "meta:Myanmar"{ + ls{"म्यानमार वेळ"} + } + "meta:Nauru"{ + ls{"नरू वेळ"} + } + "meta:Nepal"{ + ls{"नेपाळ वेळ"} + } + "meta:New_Caledonia"{ + ld{"न्यु कॅलेडोनिया ग्रीष्म वेळ"} + lg{"न्यु कॅलेडोनिया वेळ"} + ls{"न्यु कॅलेडोनिया प्रमाणित वेळ"} + } + "meta:New_Zealand"{ + ld{"न्युझीलॅन्ड डेलायट वेळ"} + lg{"न्युझीलॅन्ड वेळ"} + ls{"न्युझीलॅन्ड प्रमाणित वेळ"} + } "meta:Newfoundland"{ ld{"न्युफावंडलँड डेलायट वेळ"} lg{"न्युफावंडलँड वेळ"} ls{"न्युफावंडलँड प्रमाणित वेळ"} } + "meta:Niue"{ + ls{"न्युए वेळ"} + } + "meta:Norfolk"{ + ls{"नॉरफॉक आयलँड वेळ"} + } "meta:Noronha"{ - ld{"Vote फर्नांडो दी नोरोन्हा ग्रीष्म वेळ"} + ld{"फर्नांडो दी नोरोन्हा ग्रीष्म वेळ"} lg{"फर्नांडो दी नोरोन्हा वेळ"} ls{"फर्नांडो दी नोरोन्हा प्रमाणित वेळ"} } + "meta:Novosibirsk"{ + ld{"नोवोसिबिर्स्क ग्रीष्म वेळ"} + lg{"नोवोसिबिर्स्क"} + ls{"नोवोसिबिर्स्क प्रमाणित वेळ"} + } + "meta:Omsk"{ + ld{"ओम्स्क ग्रीष्म वेळ"} + lg{"ओम्स्क वेळ"} + ls{"ओम्स्क प्रमाणित वेळ"} + } + "meta:Pakistan"{ + ld{"पाकिस्तान ग्रीष्म वेळ"} + lg{"पाकिस्तान"} + ls{"पाकिस्तान प्रमाणित वेळ"} + } + "meta:Palau"{ + ls{"पलाऊ वेळ"} + } + "meta:Papua_New_Guinea"{ + ls{"पापुआ न्यु गिनी वेळ"} + } "meta:Paraguay"{ ld{"परागुआ ग्रीष्म वेळ"} lg{"परागुआ वेळ"} @@ -618,25 +1743,139 @@ kok{ lg{"पेरू वेळ"} ls{"पेरू प्रमाणित वेळ"} } + "meta:Philippines"{ + ld{"फिलिपायन ग्रीष्म वेळ"} + lg{"फिलिपायन वेळ"} + ls{"फिलिपायन प्रमाणित वेळ"} + } + "meta:Phoenix_Islands"{ + ls{"फिनिक्स आयलँड वेळ"} + } "meta:Pierre_Miquelon"{ ld{"सेंट पियर आनी मिकलान डेलायट वेळ"} lg{"सेंट पियर आनी मिकलान वेळ"} ls{"सेंट पियर आनी मिकलान प्रमाणित वेळ"} } + "meta:Pitcairn"{ + ls{"पिटकॅरन वेळ"} + } + "meta:Ponape"{ + ls{"पोनेप वेळ"} + } + "meta:Pyongyang"{ + ls{"प्योंगयांग वेळ"} + } + "meta:Reunion"{ + ls{"रियुनियन वेळ"} + } + "meta:Rothera"{ + ls{"रोथेरा वेळ"} + } + "meta:Sakhalin"{ + ld{"सखलिन ग्रीष्म वेळ"} + lg{"सखलिन वेळ"} + ls{"सखलिन प्रमाणित वेळ"} + } + "meta:Samoa"{ + ld{"सामोआ डेलायट वेळ"} + lg{"सामोआ वेळ"} + ls{"सामोआ प्रमाणित वेळ"} + } + "meta:Seychelles"{ + ls{"सेशेल्स वेळ"} + } + "meta:Singapore"{ + ls{"सिंगापूर प्रमाणित वेळ"} + } + "meta:Solomon"{ + ls{"सोलोमन आइलँड्स वेळ"} + } "meta:South_Georgia"{ ls{"दक्षिण जॉर्जिया वेळ"} } "meta:Suriname"{ ls{"सुरिनाम वेळ"} } + "meta:Syowa"{ + ls{"स्योवा वेळ"} + } + "meta:Tahiti"{ + ls{"ताहिती वेळ"} + } + "meta:Taipei"{ + ld{"तैपेई डेलायट वेळ"} + lg{"तैपेई वेळ"} + ls{"तैपेई प्रमाणित वेळ"} + } + "meta:Tajikistan"{ + ls{"तजीकिस्तान वेळ"} + } + "meta:Tokelau"{ + ls{"टोकलाऊ वेळ"} + } + "meta:Tonga"{ + ld{"टोंगा ग्रीष्म वेळ"} + lg{"टोंगा वेळ"} + ls{"टोंगा प्रमाणित वेळ"} + } + "meta:Truk"{ + ls{"चुक वेळ"} + } + "meta:Turkmenistan"{ + ld{"तुर्कमेनिस्तान ग्रीष्म वेळ"} + lg{"तुर्कमेनिस्तान"} + ls{"तुर्कमेनिस्तान प्रमाणित वेळ"} + } + "meta:Tuvalu"{ + ls{"टुवालू वेळ"} + } "meta:Uruguay"{ ld{"उरुग्वे ग्रीष्म वेळ"} lg{"उरुग्वे वेळ"} ls{"उरुग्वे प्रमाणित वेळ"} } + "meta:Uzbekistan"{ + ld{"उज़्बेकिस्तान ग्रीष्म वेळ"} + lg{"उज़्बेकिस्तान वेळ"} + ls{"उज़्बेकिस्तान प्रमाणित वेळ"} + } + "meta:Vanuatu"{ + ld{"वनातू ग्रीष्म वेळ"} + lg{"वनातू वेळ"} + ls{"वनातू प्रमाणित वेळ"} + } "meta:Venezuela"{ ls{"वेनेझुएला वेळ"} } + "meta:Vladivostok"{ + ld{"व्लादिवोस्तोक ग्रीष्म वेळ"} + lg{"व्लादिवोस्तोक वेळ"} + ls{"व्लादिवोस्तोक प्रमाणित वेळ"} + } + "meta:Volgograd"{ + ld{"व्होल्गोग्राड ग्रीष्म वेळ"} + lg{"व्होल्गोग्राड वेळ"} + ls{"व्होल्गोग्राड प्रमाणित वेळ"} + } + "meta:Vostok"{ + ls{"वोस्तोक वेळ"} + } + "meta:Wake"{ + ls{"वैक आयलँड वेळ"} + } + "meta:Wallis"{ + ls{"वालिस आनी फ्यूचूना वेळ"} + } + "meta:Yakutsk"{ + ld{"यकुत्स्क ग्रीष्म वेळ"} + lg{"यकुत्स्क वेळ"} + ls{"यकुत्स्क प्रमाणित वेळ"} + } + "meta:Yekaterinburg"{ + ld{"येकातेरिनबर्ग ग्रीष्म वेळ"} + lg{"येकातेरिनबर्ग वेळ"} + ls{"येकातेरिनबर्ग प्रमाणित वेळ"} + } fallbackFormat{"{1} ({0})"} gmtFormat{"GMT{0}"} gmtZeroFormat{"GMT"} diff --git a/source/data/zone/ks.txt b/source/data/zone/ks.txt index 44a3ec6..7a9b031 100644 --- a/source/data/zone/ks.txt +++ b/source/data/zone/ks.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ks{ - Version{"2.1.47.83"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"عابِدجان"} diff --git a/source/data/zone/ksb.txt b/source/data/zone/ksb.txt index 7162d01..84cdaf3 100644 --- a/source/data/zone/ksb.txt +++ b/source/data/zone/ksb.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ksb{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/ksf.txt b/source/data/zone/ksf.txt index cbde3ac..1ac6b5a 100644 --- a/source/data/zone/ksf.txt +++ b/source/data/zone/ksf.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ksf{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/ksh.txt b/source/data/zone/ksh.txt index 3e45753..47be39d 100644 --- a/source/data/zone/ksh.txt +++ b/source/data/zone/ksh.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ksh{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Africa:Cairo"{ ec{"Kaijro"} diff --git a/source/data/zone/ku.txt b/source/data/zone/ku.txt index 7a2169d..45d6a7f 100644 --- a/source/data/zone/ku.txt +++ b/source/data/zone/ku.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ku{ - Version{"2.1.47.83"} + Version{"36"} } diff --git a/source/data/zone/kw.txt b/source/data/zone/kw.txt index 1ce94ff..63ae5d3 100644 --- a/source/data/zone/kw.txt +++ b/source/data/zone/kw.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License kw{ - Version{"2.1.48.56"} + Version{"36"} } diff --git a/source/data/zone/ky.txt b/source/data/zone/ky.txt index 86168b8..f2c42e7 100644 --- a/source/data/zone/ky.txt +++ b/source/data/zone/ky.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ky{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Абиджан"} @@ -810,6 +810,9 @@ ky{ "Asia:Qatar"{ ec{"Катар"} } + "Asia:Qostanay"{ + ec{"Костанай"} + } "Asia:Qyzylorda"{ ec{"Кызылорда"} } diff --git a/source/data/zone/lag.txt b/source/data/zone/lag.txt index a02e1eb..d535566 100644 --- a/source/data/zone/lag.txt +++ b/source/data/zone/lag.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lag{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/lb.txt b/source/data/zone/lb.txt index 1b61e1c..2b4df69 100644 --- a/source/data/zone/lb.txt +++ b/source/data/zone/lb.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lb{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Accra"{ ec{"Accra"} diff --git a/source/data/zone/lg.txt b/source/data/zone/lg.txt index b4e18c5..d37aa45 100644 --- a/source/data/zone/lg.txt +++ b/source/data/zone/lg.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lg{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/lkt.txt b/source/data/zone/lkt.txt index e67885b..4b036a4 100644 --- a/source/data/zone/lkt.txt +++ b/source/data/zone/lkt.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lkt{ - Version{"2.1.48.22"} + Version{"36"} } diff --git a/source/data/zone/ln.txt b/source/data/zone/ln.txt index 5f7dcf9..7e0cad5 100644 --- a/source/data/zone/ln.txt +++ b/source/data/zone/ln.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ln{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ fallbackFormat{"{1} ({0})"} regionFormat{"Ngonga ya {0}"} diff --git a/source/data/zone/lo.txt b/source/data/zone/lo.txt index 0df1d07..ad862b8 100644 --- a/source/data/zone/lo.txt +++ b/source/data/zone/lo.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lo{ - Version{"2.1.48.17"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"ອາບິດແຈນ"} @@ -397,7 +397,7 @@ lo{ ec{"ລີມາ"} } "America:Los_Angeles"{ - ec{"ລອສ ແອນເຈລີສ"} + ec{"ລອສແອນເຈລີສ"} } "America:Louisville"{ ec{"ຫລຸຍວິວ"} @@ -568,7 +568,7 @@ lo{ ec{"ເຊນ ວິນເຊນ"} } "America:Swift_Current"{ - ec{"ສະວິວ ເຄີເຣນ"} + ec{"ສະວິຟ ເຄີເຣນ"} } "America:Tegucigalpa"{ ec{"ເຕກູຊີການປາ"} @@ -688,7 +688,7 @@ lo{ ec{"ບຣູໄນ"} } "Asia:Calcutta"{ - ec{"ໂຄກາຕາ"} + ec{"ໂກລກາຕາ"} } "Asia:Chita"{ ec{"ຊີຕ່າ"} @@ -810,6 +810,9 @@ lo{ "Asia:Qatar"{ ec{"ກາຕາຣ໌"} } + "Asia:Qostanay"{ + ec{"ຄອສຕາເນ"} + } "Asia:Qyzylorda"{ ec{"ໄຄຊີລໍດາ"} } @@ -1161,7 +1164,7 @@ lo{ ec{"ມາເຮ"} } "Indian:Maldives"{ - ec{"ມັລດີບ"} + ec{"ມັລດີຟ"} } "Indian:Mauritius"{ ec{"ເມົາຣິທຽສ"} @@ -1312,9 +1315,9 @@ lo{ ls{"ເວ​ລາ​ມາດ​ຕະ​ຖານ​ອາ​ຟຣິ​ກາ​ຕາ​ເວັນ​ຕົກ"} } "meta:Alaska"{ - ld{"ເວລາກາງເວັນອະແລສກາ"} - lg{"ເວລາອະແລສກາ"} - ls{"ເວລາມາດຕະຖານອະແລສກາ"} + ld{"ເວລາກາງເວັນອະລັສກາ"} + lg{"ເວລາອະລັສກາ"} + ls{"ເວລາມາດຕະຖານອະລັສກາ"} } "meta:Almaty"{ ld{"ເວລາລະດູຮ້ອນອໍມາຕີ"} @@ -1677,7 +1680,7 @@ lo{ ls{"ເວ​ລາ​ມາ​ເລ​ເຊຍ"} } "meta:Maldives"{ - ls{"ເວລາມັນດີຟ"} + ls{"ເວລາມັລດີຟ"} } "meta:Marquesas"{ ls{"ເວລາມາເຄີຊັສ"} diff --git a/source/data/zone/lrc.txt b/source/data/zone/lrc.txt index 6dde3ce..9b92f85 100644 --- a/source/data/zone/lrc.txt +++ b/source/data/zone/lrc.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lrc{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Etc:Unknown"{ ec{"نادیار"} diff --git a/source/data/zone/lt.txt b/source/data/zone/lt.txt index 7dc2518..a8b9dba 100644 --- a/source/data/zone/lt.txt +++ b/source/data/zone/lt.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lt{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidžanas"} diff --git a/source/data/zone/lu.txt b/source/data/zone/lu.txt index 7c4528f..d6f9778 100644 --- a/source/data/zone/lu.txt +++ b/source/data/zone/lu.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lu{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/luo.txt b/source/data/zone/luo.txt index c0671fb..3f0fb2e 100644 --- a/source/data/zone/luo.txt +++ b/source/data/zone/luo.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License luo{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/luy.txt b/source/data/zone/luy.txt index 7feb78c..05dc25e 100644 --- a/source/data/zone/luy.txt +++ b/source/data/zone/luy.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License luy{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/lv.txt b/source/data/zone/lv.txt index ecfe0cd..c1276b7 100644 --- a/source/data/zone/lv.txt +++ b/source/data/zone/lv.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License lv{ - Version{"2.1.48.43"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidžana"} @@ -810,6 +810,9 @@ lv{ "Asia:Qatar"{ ec{"Katara"} } + "Asia:Qostanay"{ + ec{"Kostanaja"} + } "Asia:Qyzylorda"{ ec{"Kizilorda"} } diff --git a/source/data/zone/mas.txt b/source/data/zone/mas.txt index 3ffb507..93cfd99 100644 --- a/source/data/zone/mas.txt +++ b/source/data/zone/mas.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mas{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/mer.txt b/source/data/zone/mer.txt index 7a8e920..9927413 100644 --- a/source/data/zone/mer.txt +++ b/source/data/zone/mer.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mer{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/mfe.txt b/source/data/zone/mfe.txt index 41c25c6..1aa1c26 100644 --- a/source/data/zone/mfe.txt +++ b/source/data/zone/mfe.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mfe{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/mg.txt b/source/data/zone/mg.txt index e768c6a..d7ae4e8 100644 --- a/source/data/zone/mg.txt +++ b/source/data/zone/mg.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mg{ - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/zone/mgh.txt b/source/data/zone/mgh.txt index 4d5f620..dd39d37 100644 --- a/source/data/zone/mgh.txt +++ b/source/data/zone/mgh.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mgh{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/mgo.txt b/source/data/zone/mgo.txt index 27d3848..d87ca33 100644 --- a/source/data/zone/mgo.txt +++ b/source/data/zone/mgo.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mgo{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ fallbackFormat{"{1} ({0})"} gmtFormat{"GMT{0}"} diff --git a/source/data/zone/mi.txt b/source/data/zone/mi.txt index 9905216..3d9d07d 100644 --- a/source/data/zone/mi.txt +++ b/source/data/zone/mi.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mi{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "America:Araguaina"{ ec{"Araguaina"} diff --git a/source/data/zone/mk.txt b/source/data/zone/mk.txt index 6c0b974..decccd8 100644 --- a/source/data/zone/mk.txt +++ b/source/data/zone/mk.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mk{ - Version{"2.1.48.27"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Абиџан"} diff --git a/source/data/zone/ml.txt b/source/data/zone/ml.txt index 558262c..5552f67 100644 --- a/source/data/zone/ml.txt +++ b/source/data/zone/ml.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ml{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"അബിദ്‌ജാൻ‌"} @@ -583,7 +583,7 @@ ml{ ec{"തിയുവാന"} } "America:Toronto"{ - ec{"ടൊറണ്ടോ"} + ec{"ടൊറന്റോ"} } "America:Tortola"{ ec{"ടോർ‌ട്ടോള"} diff --git a/source/data/zone/mn.txt b/source/data/zone/mn.txt index 39ffba5..5d992b6 100644 --- a/source/data/zone/mn.txt +++ b/source/data/zone/mn.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mn{ - Version{"2.1.48.17"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Абижан"} @@ -10,7 +10,7 @@ mn{ ec{"Аккра"} } "Africa:Addis_Ababa"{ - ec{"Аддис-абеба"} + ec{"Аддис-Aбеба"} } "Africa:Algiers"{ ec{"Алжир"} @@ -217,7 +217,7 @@ mn{ ec{"Белизе"} } "America:Blanc-Sablon"{ - ec{"Бланк-Саблон"} + ec{"Блан-Саблон"} } "America:Boa_Vista"{ ec{"Боа-Виста"} @@ -229,7 +229,7 @@ mn{ ec{"Боисе"} } "America:Buenos_Aires"{ - ec{"Буэнос Айрес"} + ec{"Буэнос-Айрес"} } "America:Cambridge_Bay"{ ec{"Кэмбрижийн булан"} @@ -810,6 +810,9 @@ mn{ "Asia:Qatar"{ ec{"Катар"} } + "Asia:Qostanay"{ + ec{"Костанай"} + } "Asia:Qyzylorda"{ ec{"Кызылорд"} } @@ -895,10 +898,10 @@ mn{ ec{"Канари"} } "Atlantic:Cape_Verde"{ - ec{"Кабо Верде"} + ec{"Кабо-Верде"} } "Atlantic:Faeroe"{ - ec{"Фароэ"} + ec{"Фарер"} } "Atlantic:Madeira"{ ec{"Мадейра"} @@ -1028,7 +1031,7 @@ mn{ ec{"Киров"} } "Europe:Lisbon"{ - ec{"Лисбон"} + ec{"Лиссабон"} } "Europe:Ljubljana"{ ec{"Любляна"} @@ -1080,7 +1083,7 @@ mn{ ec{"Самара"} } "Europe:San_Marino"{ - ec{"Сан Марино"} + ec{"Сан-Марино"} } "Europe:Sarajevo"{ ec{"Сараево"} @@ -1233,10 +1236,10 @@ mn{ ec{"Мажуро"} } "Pacific:Marquesas"{ - ec{"Маркизас"} + ec{"Маркез"} } "Pacific:Midway"{ - ec{"Мидвей"} + ec{"Мидуэй"} } "Pacific:Nauru"{ ec{"Науру"} @@ -1284,7 +1287,7 @@ mn{ ec{"Чүүк"} } "Pacific:Wake"{ - ec{"Уэйк"} + ec{"Уэк"} } "Pacific:Wallis"{ ec{"Уоллис"} @@ -1416,9 +1419,9 @@ mn{ ls{"Бруней Даруссаламын цаг"} } "meta:Cape_Verde"{ - ld{"Кабо Вердийн зуны цаг"} - lg{"Кабо Вердийн цаг"} - ls{"Кабо Вердийн стандарт цаг"} + ld{"Кабо-Вердийн зуны цаг"} + lg{"Кабо-Вердийн цаг"} + ls{"Кабо-Вердийн стандарт цаг"} } "meta:Chamorro"{ ls{"Чаморрогийн цаг"} @@ -1455,9 +1458,9 @@ mn{ ls{"Колумбын стандарт цаг"} } "meta:Cook"{ - ld{"Күүк арлын хагас зуны цаг"} - lg{"Күүк арлын цаг"} - ls{"Күүк арлын стандарт цаг"} + ld{"Күүкийн арлуудын хагас зуны цаг"} + lg{"Күүкийн арлуудын цаг"} + ls{"Күүкийн арлуудын стандарт цаг"} } "meta:Cuba"{ ld{"Кубын зуны цаг"} @@ -1530,20 +1533,20 @@ mn{ ls{"Гүржийн стандарт цаг"} } "meta:Gilbert_Islands"{ - ls{"Жильбер арлын цаг"} + ls{"Гильбертийн арлуудын цаг"} } "meta:Greenland_Eastern"{ - ld{"Зүүн Гринландын зуны цаг"} - lg{"Зүүн Гринландын цаг"} - ls{"Зүүн Гринландын стандарт цаг"} + ld{"Зүүн Гренландын зуны цаг"} + lg{"Зүүн Гренландын цаг"} + ls{"Зүүн Гренландын стандарт цаг"} } "meta:Greenland_Western"{ - ld{"Баруун Гринландын зуны цаг"} - lg{"Баруун Гринландын цаг"} - ls{"Баруун Гринландын стандарт цаг"} + ld{"Баруун Гренландын зуны цаг"} + lg{"Баруун Гренландын цаг"} + ls{"Баруун Гренландын стандарт цаг"} } "meta:Gulf"{ - ls{"Галфийн стандарт цаг"} + ls{"Персийн булангийн цаг"} } "meta:Guyana"{ ls{"Гайанагийн цаг"} @@ -1624,7 +1627,7 @@ mn{ ls{"Киргизийн цаг"} } "meta:Line_Islands"{ - ls{"Лайн арлын цаг"} + ls{"Лайн арлуудын цаг"} } "meta:Lord_Howe"{ ld{"Лорд Хоугийн зуны цаг"} @@ -1646,10 +1649,10 @@ mn{ ls{"Мальдивийн цаг"} } "meta:Marquesas"{ - ls{"Маркесасын цаг"} + ls{"Маркезын арлуудын цаг"} } "meta:Marshall_Islands"{ - ls{"Маршаллын арлын цаг"} + ls{"Маршаллын арлуудын цаг"} } "meta:Mauritius"{ ld{"Маврикийн зуны цаг"} @@ -1754,8 +1757,8 @@ mn{ ls{"Феникс арлын цаг"} } "meta:Pierre_Miquelon"{ - ld{"Сен-Пьер ба Микелоны зуны цаг"} - lg{"Сен-Пьер ба Микелоны цаг"} + ld{"Сент-Пьер ба Микелоны зуны цаг"} + lg{"Сент-Пьер ба Микелоны цаг"} ls{"Сент-Пьер ба Микелоны стандарт цаг"} } "meta:Pitcairn"{ @@ -1793,7 +1796,7 @@ mn{ ls{"Соломоны арлуудын цаг"} } "meta:South_Georgia"{ - ls{"Өмнөд Жоржийн цаг"} + ls{"Өмнөд Жоржиагийн цаг"} } "meta:Suriname"{ ls{"Суринамын цаг"} @@ -1863,7 +1866,7 @@ mn{ ls{"Востокийн цаг"} } "meta:Wake"{ - ls{"Вейк арлын цаг"} + ls{"Уэкийн арлуудын цаг"} } "meta:Wallis"{ ls{"Уоллис ба Футунагийн цаг"} diff --git a/source/data/zone/mr.txt b/source/data/zone/mr.txt index b299964..4a8e451 100644 --- a/source/data/zone/mr.txt +++ b/source/data/zone/mr.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mr{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"अबिद्जान"} diff --git a/source/data/zone/ms.txt b/source/data/zone/ms.txt index e17f45f..09b64e0 100644 --- a/source/data/zone/ms.txt +++ b/source/data/zone/ms.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ms{ - Version{"2.1.49.2"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -810,6 +810,9 @@ ms{ "Asia:Qatar"{ ec{"Qatar"} } + "Asia:Qostanay"{ + ec{"Kostanay"} + } "Asia:Qyzylorda"{ ec{"Qyzylorda"} } @@ -1327,7 +1330,7 @@ ms{ ls{"Waktu Piawai Timur"} } "meta:America_Mountain"{ - ld{"Waktu Hari Siang Pergunungan"} + ld{"Waktu Siang Pergunungan"} lg{"Waktu Pergunungan"} ls{"Waktu Piawai Pergunungan"} } @@ -1346,6 +1349,11 @@ ms{ lg{"Waktu Apia"} ls{"Waktu Piawai Apia"} } + "meta:Aqtau"{ + ld{"Waktu Musim Panas Aqtau"} + lg{"Waktu Aqtau"} + ls{"Waktu Standard Aqtau"} + } "meta:Arabian"{ ld{"Waktu Siang Arab"} lg{"Waktu Arab"} @@ -1522,6 +1530,7 @@ ms{ } "meta:GMT"{ ls{"Waktu Min Greenwich"} + ss{"GMT"} } "meta:Galapagos"{ ls{"Waktu Galapagos"} diff --git a/source/data/zone/mt.txt b/source/data/zone/mt.txt index 0901d9f..18162e0 100644 --- a/source/data/zone/mt.txt +++ b/source/data/zone/mt.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mt{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} diff --git a/source/data/zone/mua.txt b/source/data/zone/mua.txt index 1fbb272..a257b40 100644 --- a/source/data/zone/mua.txt +++ b/source/data/zone/mua.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mua{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/my.txt b/source/data/zone/my.txt index 30df33b..0b23327 100644 --- a/source/data/zone/my.txt +++ b/source/data/zone/my.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License my{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"အာဘီဂျန်"} @@ -244,7 +244,7 @@ my{ ec{"ကာရာကာစ်"} } "America:Catamarca"{ - ec{"ကာတာမာရကွာ"} + ec{"ကာတာမာရကာ"} } "America:Cayenne"{ ec{"ကေညင်န်"} @@ -810,6 +810,9 @@ my{ "Asia:Qatar"{ ec{"ကာတာ"} } + "Asia:Qostanay"{ + ec{"ကော့စ်တနေ"} + } "Asia:Qyzylorda"{ ec{"ကီဇလော်ဒါ"} } diff --git a/source/data/zone/mzn.txt b/source/data/zone/mzn.txt index dc49172..753a2b7 100644 --- a/source/data/zone/mzn.txt +++ b/source/data/zone/mzn.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License mzn{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ fallbackFormat{"{1} ({0})"} gmtFormat{"GMT{0}"} diff --git a/source/data/zone/naq.txt b/source/data/zone/naq.txt index 064d1bc..efcad57 100644 --- a/source/data/zone/naq.txt +++ b/source/data/zone/naq.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License naq{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/nb.txt b/source/data/zone/nb.txt index 04b71be..93361b4 100644 --- a/source/data/zone/nb.txt +++ b/source/data/zone/nb.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nb{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -811,7 +811,7 @@ nb{ ec{"Qatar"} } "Asia:Qostanay"{ - ec{"Kostanay"} + ec{"Kostanaj"} } "Asia:Qyzylorda"{ ec{"Kyzylorda"} diff --git a/source/data/zone/nd.txt b/source/data/zone/nd.txt index f8b360c..5bcd7ea 100644 --- a/source/data/zone/nd.txt +++ b/source/data/zone/nd.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nd{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/nds.txt b/source/data/zone/nds.txt index f032c1f..2ff31d1 100644 --- a/source/data/zone/nds.txt +++ b/source/data/zone/nds.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nds{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/ne.txt b/source/data/zone/ne.txt index fff4976..96ffec8 100644 --- a/source/data/zone/ne.txt +++ b/source/data/zone/ne.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ne{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"अविड्जान"} @@ -810,6 +810,9 @@ ne{ "Asia:Qatar"{ ec{"कतार"} } + "Asia:Qostanay"{ + ec{"कस्टाने"} + } "Asia:Qyzylorda"{ ec{"किजिलोर्डा"} } diff --git a/source/data/zone/ne_IN.txt b/source/data/zone/ne_IN.txt index efc27b8..ffd5fb9 100644 --- a/source/data/zone/ne_IN.txt +++ b/source/data/zone/ne_IN.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ne_IN{ - Version{"2.1.47.71"} + Version{"36"} zoneStrings{ "meta:India"{ ss{"IST"} diff --git a/source/data/zone/nl.txt b/source/data/zone/nl.txt index 56644ff..5c5d802 100644 --- a/source/data/zone/nl.txt +++ b/source/data/zone/nl.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nl{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -552,6 +552,21 @@ nl{ "America:St_Barthelemy"{ ec{"Saint-Barthélemy"} } + "America:St_Johns"{ + ec{"Saint John’s"} + } + "America:St_Kitts"{ + ec{"Saint Kitts"} + } + "America:St_Lucia"{ + ec{"Saint Lucia"} + } + "America:St_Thomas"{ + ec{"Saint Thomas"} + } + "America:St_Vincent"{ + ec{"Saint Vincent"} + } "America:Swift_Current"{ ec{"Swift Current"} } @@ -795,6 +810,9 @@ nl{ "Asia:Qatar"{ ec{"Qatar"} } + "Asia:Qostanay"{ + ec{"Qostanay"} + } "Asia:Qyzylorda"{ ec{"Qyzylorda"} } @@ -938,6 +956,7 @@ nl{ } "Etc:UTC"{ ls{"Gecoördineerde wereldtijd"} + ss{"UTC"} } "Etc:Unknown"{ ec{"onbekende stad"} @@ -1563,7 +1582,7 @@ nl{ ss{"GMT"} } "meta:Galapagos"{ - ls{"Galapagoseilandse standaardtijd"} + ls{"Galapagoseilandse tijd"} } "meta:Gambier"{ ls{"Gambiereilandse tijd"} diff --git a/source/data/zone/nl_SR.txt b/source/data/zone/nl_SR.txt index be75634..30bffe2 100644 --- a/source/data/zone/nl_SR.txt +++ b/source/data/zone/nl_SR.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nl_SR{ - Version{"2.1.47.71"} + Version{"36"} zoneStrings{ "meta:Suriname"{ ss{"SRT"} diff --git a/source/data/zone/nmg.txt b/source/data/zone/nmg.txt index 7a4e239..b68ac40 100644 --- a/source/data/zone/nmg.txt +++ b/source/data/zone/nmg.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nmg{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/nn.txt b/source/data/zone/nn.txt index d24ee3e..b3d92f9 100644 --- a/source/data/zone/nn.txt +++ b/source/data/zone/nn.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nn{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} diff --git a/source/data/zone/nnh.txt b/source/data/zone/nnh.txt index 59db075..382ab37 100644 --- a/source/data/zone/nnh.txt +++ b/source/data/zone/nnh.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nnh{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/nus.txt b/source/data/zone/nus.txt index 9c79237..e81a08c 100644 --- a/source/data/zone/nus.txt +++ b/source/data/zone/nus.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nus{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/nyn.txt b/source/data/zone/nyn.txt index 764b0c1..2c6a764 100644 --- a/source/data/zone/nyn.txt +++ b/source/data/zone/nyn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License nyn{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/om.txt b/source/data/zone/om.txt index 962277b..2ece418 100644 --- a/source/data/zone/om.txt +++ b/source/data/zone/om.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License om{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ gmtFormat{"GMT{0}"} hourFormat{"+HH:mm;-HH:mm"} diff --git a/source/data/zone/or.txt b/source/data/zone/or.txt index 1233756..db27a99 100644 --- a/source/data/zone/or.txt +++ b/source/data/zone/or.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License or{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"ଆବିଦଜାନ"} @@ -807,6 +807,9 @@ or{ "Asia:Qatar"{ ec{"କତାର୍"} } + "Asia:Qostanay"{ + ec{"କୋଷ୍ଟନେ"} + } "Asia:Qyzylorda"{ ec{"କୀଜିଲୋର୍ଡା"} } diff --git a/source/data/zone/os.txt b/source/data/zone/os.txt index 23a886f..cb32f72 100644 --- a/source/data/zone/os.txt +++ b/source/data/zone/os.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License os{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Asia:Tbilisi"{ ec{"Тбилис"} diff --git a/source/data/zone/pa.txt b/source/data/zone/pa.txt index 6f4146e..748fa4c 100644 --- a/source/data/zone/pa.txt +++ b/source/data/zone/pa.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pa{ - Version{"2.1.48.20"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"ਅਬੀਦਜਾਨ"} @@ -811,7 +811,7 @@ pa{ ec{"ਕਤਰ"} } "Asia:Qostanay"{ - ec{"ਕੋਸਟਨੇਏ"} + ec{"ਕੋਸਤਾਨਾਏ"} } "Asia:Qyzylorda"{ ec{"ਕਿਜ਼ੀਲੋਰਡਾ"} diff --git a/source/data/zone/pa_Arab.txt b/source/data/zone/pa_Arab.txt index 2ab8d68..650401f 100644 --- a/source/data/zone/pa_Arab.txt +++ b/source/data/zone/pa_Arab.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pa_Arab{ %%Parent{"root"} - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/pa_Guru.txt b/source/data/zone/pa_Guru.txt index 650b3ed..fb27b98 100644 --- a/source/data/zone/pa_Guru.txt +++ b/source/data/zone/pa_Guru.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pa_Guru{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/zone/pl.txt b/source/data/zone/pl.txt index 85d9611..5475c48 100644 --- a/source/data/zone/pl.txt +++ b/source/data/zone/pl.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pl{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidżan"} @@ -1697,9 +1697,9 @@ pl{ ls{"Ułan Bator (czas standardowy)"} } "meta:Moscow"{ - ld{"Moskwa (letni)"} + ld{"Moskwa (czas letni)"} lg{"Moskwa"} - ls{"Moskwa (standardowy)"} + ls{"Moskwa (czas standardowy)"} } "meta:Myanmar"{ ls{"Mjanma"} diff --git a/source/data/zone/ps.txt b/source/data/zone/ps.txt index bc2de74..841f091 100644 --- a/source/data/zone/ps.txt +++ b/source/data/zone/ps.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ps{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"ابيجان"} @@ -10,25 +10,31 @@ ps{ ec{"اکرا"} } "Africa:Addis_Ababa"{ - ec{"اضافی ابابا"} + ec{"اديس ابابا"} } "Africa:Algiers"{ - ec{"الګیرز"} + ec{"الجييرز"} } "Africa:Asmera"{ - ec{"اساماره"} + ec{"اسماره"} } "Africa:Bamako"{ ec{"بامیکو"} } "Africa:Bangui"{ - ec{"بنوګي"} + ec{"بانګوي"} } "Africa:Banjul"{ ec{"بانجول"} } "Africa:Bissau"{ - ec{"بسو"} + ec{"بساؤ"} + } + "Africa:Blantyre"{ + ec{"بلنټاير"} + } + "Africa:Brazzaville"{ + ec{"برازاويل"} } "Africa:Bujumbura"{ ec{"بجوګورا"} @@ -39,6 +45,9 @@ ps{ "Africa:Casablanca"{ ec{"کاسابلانکا"} } + "Africa:Ceuta"{ + ec{"سيوټا"} + } "Africa:Conakry"{ ec{"کونکري"} } @@ -52,7 +61,7 @@ ps{ ec{"جبوتي"} } "Africa:Douala"{ - ec{"ډالاله"} + ec{"دوالا"} } "Africa:El_Aaiun"{ ec{"الیون"} @@ -67,7 +76,7 @@ ps{ ec{"هرارې"} } "Africa:Johannesburg"{ - ec{"جوهانبرګ"} + ec{"جوهانسبرګ"} } "Africa:Juba"{ ec{"جوبا"} @@ -100,7 +109,7 @@ ps{ ec{"لبوباشي"} } "Africa:Lusaka"{ - ec{"لسیکا"} + ec{"لوساکا"} } "Africa:Malabo"{ ec{"مالابو"} @@ -109,7 +118,10 @@ ps{ ec{"ماپوټو"} } "Africa:Maseru"{ - ec{"مسرو"} + ec{"مسيرو"} + } + "Africa:Mbabane"{ + ec{"مبابانې"} } "Africa:Mogadishu"{ ec{"موگديشو"} @@ -130,7 +142,7 @@ ps{ ec{"نوکوچټ"} } "Africa:Ouagadougou"{ - ec{"اوواګاګواګو"} + ec{"اوګوډوګو"} } "Africa:Porto-Novo"{ ec{"پورټو - نوو"} @@ -163,10 +175,10 @@ ps{ ec{"ارګینیا"} } "America:Argentina:La_Rioja"{ - ec{"لا ریوج"} + ec{"لاريوجا"} } "America:Argentina:Rio_Gallegos"{ - ec{"ریو ګیلیلیګوس"} + ec{"ريو ګيليګوس"} } "America:Argentina:Salta"{ ec{"سالټا"} @@ -226,7 +238,7 @@ ps{ ec{"کمپو ګرډی"} } "America:Cancun"{ - ec{"کینن"} + ec{"کينکن"} } "America:Caracas"{ ec{"کاراکاس"} @@ -250,7 +262,7 @@ ps{ ec{"اتیکوکن"} } "America:Cordoba"{ - ec{"کوډوبا"} + ec{"کورډوبا"} } "America:Costa_Rica"{ ec{"کوستاریکا"} @@ -262,10 +274,10 @@ ps{ ec{"کویابا"} } "America:Curacao"{ - ec{"کیکاو"} + ec{"کوراکاؤ"} } "America:Danmarkshavn"{ - ec{"ډنمارک هاربر"} + ec{"ډنمارکشان"} } "America:Dawson"{ ec{"داوسن"} @@ -300,6 +312,9 @@ ps{ "America:Glace_Bay"{ ec{"ګیسس بيی"} } + "America:Godthab"{ + ec{"نووک"} + } "America:Goose_Bay"{ ec{"گوز بي"} } @@ -316,7 +331,7 @@ ps{ ec{"ګواتمالا"} } "America:Guayaquil"{ - ec{"ګویاګل"} + ec{"ګوياکل"} } "America:Guyana"{ ec{"ګیانا"} @@ -325,34 +340,34 @@ ps{ ec{"هیلفکس"} } "America:Havana"{ - ec{"هایانا"} + ec{"هوانا"} } "America:Hermosillo"{ ec{"هرموسیلو"} } "America:Indiana:Knox"{ - ec{"نکس، اندیانا"} + ec{"نوکس انډيانا"} } "America:Indiana:Marengo"{ - ec{"مارینګ، انډیانا"} + ec{"مورينګو انډيانا"} } "America:Indiana:Petersburg"{ - ec{"پیتربورګ، انډيانا"} + ec{"پيټسبرګ، انډيانا"} } "America:Indiana:Tell_City"{ - ec{"ښار، انډیا ته ووایی"} + ec{"ټل سټي، انډيانا"} } "America:Indiana:Vevay"{ - ec{"ویوی، انډیډا"} + ec{"ویوی، انډيانا"} } "America:Indiana:Vincennes"{ - ec{"وینینسین، انډا"} + ec{"وينسينس، انډيانا"} } "America:Indiana:Winamac"{ - ec{"ویناماسک، انډی"} + ec{"وينامک انډيانا"} } "America:Indianapolis"{ - ec{"انډولپولیس"} + ec{"انډيانا پوليس"} } "America:Inuvik"{ ec{"انوک"} @@ -364,13 +379,13 @@ ps{ ec{"جمایکه"} } "America:Jujuy"{ - ec{"جوجو"} + ec{"جوجوي"} } "America:Juneau"{ ec{"جونو"} } "America:Kentucky:Monticello"{ - ec{"مونټیکیلو، کینیسي"} + ec{"مونټيسيلو، کونټکی"} } "America:Kralendijk"{ ec{"کلینډیزج"} @@ -388,23 +403,26 @@ ps{ ec{"لوئس ویل"} } "America:Lower_Princes"{ - ec{"د کمتر شهزاده درې میاشتنۍ"} + ec{"لوور پرنس کوارټر"} } "America:Maceio"{ - ec{"مایسیو"} + ec{"ماسيو"} } "America:Managua"{ ec{"منګوا"} } "America:Manaus"{ - ec{"منوس"} + ec{"مناوس"} } "America:Marigot"{ - ec{"مارګټ"} + ec{"ميريګاټ"} } "America:Martinique"{ ec{"مارټینیک"} } + "America:Matamoros"{ + ec{"ميټاموروس"} + } "America:Mazatlan"{ ec{"مزاتلان"} } @@ -415,7 +433,7 @@ ps{ ec{"مینومین"} } "America:Merida"{ - ec{"مرده"} + ec{"ميريډا"} } "America:Metlakatla"{ ec{"میتلاکاټلا"} @@ -424,10 +442,10 @@ ps{ ec{"مکسيکو ښار"} } "America:Miquelon"{ - ec{"ميکلين"} + ec{"ميکويلان"} } "America:Moncton"{ - ec{"مونټون"} + ec{"مونکټون"} } "America:Monterrey"{ ec{"منټرري"} @@ -454,10 +472,10 @@ ps{ ec{"نورونها"} } "America:North_Dakota:Beulah"{ - ec{"بيلاه، شمالي داکوتا"} + ec{"بيولا، شمالي ډاکوټا"} } "America:North_Dakota:Center"{ - ec{"مرکز، د شمالي ټاپو"} + ec{"مرکز، شمالي ډاکوټا"} } "America:North_Dakota:New_Salem"{ ec{"نوی سلیم، شمالي داکوتا"} @@ -469,7 +487,7 @@ ps{ ec{"پاناما"} } "America:Pangnirtung"{ - ec{"پيننټيرګ"} + ec{"پينګنرچونګ"} } "America:Paramaribo"{ ec{"پاراماربو"} @@ -496,7 +514,7 @@ ps{ ec{"د باران باران"} } "America:Rankin_Inlet"{ - ec{"رانکين لط"} + ec{"رينکن انلټ"} } "America:Recife"{ ec{"ریسیفي"} @@ -505,7 +523,7 @@ ps{ ec{"ریګینا"} } "America:Resolute"{ - ec{"غوڅ"} + ec{"ريسالوټ"} } "America:Rio_Branco"{ ec{"ریو برانکو"} @@ -529,7 +547,7 @@ ps{ ec{"سینټ بارټیلیم"} } "America:St_Johns"{ - ec{"د سینټ جان"} + ec{"سینټ جانز"} } "America:St_Kitts"{ ec{"سینټ کټس"} @@ -538,13 +556,13 @@ ps{ ec{"سینټ لوسیا"} } "America:St_Thomas"{ - ec{"سایټ توماس"} + ec{"سينټ تهامس"} } "America:St_Vincent"{ ec{"سېنټ ویسنټ"} } "America:Swift_Current"{ - ec{"اوسنی بدلون"} + ec{"سويفټ کرنټ"} } "America:Tegucigalpa"{ ec{"ټګسیګالپا"} @@ -553,10 +571,10 @@ ps{ ec{"تول"} } "America:Thunder_Bay"{ - ec{"د تندر خلیج"} + ec{"تنډر بی"} } "America:Tijuana"{ - ec{"تجهان"} + ec{"تجوانا"} } "America:Toronto"{ ec{"ټورنټو"} @@ -568,49 +586,52 @@ ps{ ec{"وینکوور"} } "America:Whitehorse"{ - ec{"سپین آس"} + ec{"وايټ هارس"} } "America:Winnipeg"{ ec{"وینپیګ"} } "America:Yakutat"{ - ec{"یاکتټ"} + ec{"ياکوټټ"} } "America:Yellowknife"{ - ec{"زرونیف"} + ec{"يلونايف"} } "Antarctica:Casey"{ ec{"کیسي"} } "Antarctica:Davis"{ - ec{"دیویس"} + ec{"ډيوس"} } "Antarctica:DumontDUrville"{ - ec{"ډومونټ ډي اوورول"} + ec{"ډومونټ ډي ارول"} } "Antarctica:Macquarie"{ - ec{"مکاکري"} + ec{"مکواري"} } "Antarctica:Mawson"{ - ec{"مسونسن"} + ec{"ماوسن"} + } + "Antarctica:McMurdo"{ + ec{"مکمرډو"} } "Antarctica:Palmer"{ - ec{"پالر"} + ec{"پالمر"} } "Antarctica:Rothera"{ - ec{"رورها"} + ec{"رودرا"} } "Antarctica:Syowa"{ ec{"سیوا"} } "Antarctica:Troll"{ - ec{"ټول"} + ec{"ټرول"} } "Antarctica:Vostok"{ ec{"واستوک"} } "Arctic:Longyearbyen"{ - ec{"لاندینبیبین"} + ec{"لانګيربين"} } "Asia:Aden"{ ec{"اډن"} @@ -625,7 +646,7 @@ ps{ ec{"اناډير"} } "Asia:Aqtau"{ - ec{"اکاټو"} + ec{"اکټاو"} } "Asia:Aqtobe"{ ec{"اکتوب"} @@ -646,7 +667,7 @@ ps{ ec{"باکو"} } "Asia:Bangkok"{ - ec{"بانکاک"} + ec{"بنکاک"} } "Asia:Barnaul"{ ec{"برنول"} @@ -666,6 +687,9 @@ ps{ "Asia:Chita"{ ec{"چيتا"} } + "Asia:Choibalsan"{ + ec{"چويبلسان"} + } "Asia:Colombo"{ ec{"کولمبو"} } @@ -676,7 +700,7 @@ ps{ ec{"ډهاکه"} } "Asia:Dili"{ - ec{"ديلي"} + ec{"دلي"} } "Asia:Dubai"{ ec{"دوبی"} @@ -684,6 +708,9 @@ ps{ "Asia:Dushanbe"{ ec{"دوشنبي"} } + "Asia:Famagusta"{ + ec{"فاماګستا"} + } "Asia:Gaza"{ ec{"غزه"} } @@ -693,17 +720,20 @@ ps{ "Asia:Hong_Kong"{ ec{"هانګ کانګ"} } + "Asia:Hovd"{ + ec{"هاوډ"} + } "Asia:Irkutsk"{ - ec{"ایرکوټس"} + ec{"ارکوټسک"} } "Asia:Jakarta"{ - ec{"جاکارټا"} + ec{"جکارتا"} } "Asia:Jayapura"{ - ec{"جاپورا"} + ec{"جاياپورا"} } "Asia:Jerusalem"{ - ec{"یهودان"} + ec{"يروشلم"} } "Asia:Kabul"{ ec{"کابل"} @@ -718,19 +748,19 @@ ps{ ec{"کټمنډو"} } "Asia:Khandyga"{ - ec{"خندګي"} + ec{"خنديګا"} } "Asia:Krasnoyarsk"{ - ec{"کریسایویارسک"} + ec{"کريسنويارسک"} } "Asia:Kuala_Lumpur"{ ec{"کولالمپور"} } "Asia:Kuching"{ - ec{"کوچيګ"} + ec{"کوچنګ"} } "Asia:Kuwait"{ - ec{"کویټ"} + ec{"کوېت"} } "Asia:Macau"{ ec{"مکاو"} @@ -745,7 +775,7 @@ ps{ ec{"منیلا"} } "Asia:Muscat"{ - ec{"مسکټ"} + ec{"مسقط"} } "Asia:Nicosia"{ ec{"نیکوسیا"} @@ -754,28 +784,31 @@ ps{ ec{"نووکوزنیټک"} } "Asia:Novosibirsk"{ - ec{"نووسوسبیرک"} + ec{"نووسيبرسک"} } "Asia:Omsk"{ - ec{"اوک"} + ec{"اومسک"} } "Asia:Oral"{ ec{"اورل"} } "Asia:Phnom_Penh"{ - ec{"دوم قلم"} + ec{"پنوم پن"} } "Asia:Pontianak"{ ec{"پونټینیک"} } "Asia:Pyongyang"{ - ec{"پیونگګنګ"} + ec{"پيانګ يانګ"} } "Asia:Qatar"{ ec{"قطر"} } + "Asia:Qostanay"{ + ec{"کوستانې"} + } "Asia:Qyzylorda"{ - ec{"قزیلیلرا"} + ec{"قيزي لورډا"} } "Asia:Rangoon"{ ec{"یانګون"} @@ -784,10 +817,10 @@ ps{ ec{"رياض"} } "Asia:Saigon"{ - ec{"هو چي مينه"} + ec{"هو چي من ښار"} } "Asia:Sakhalin"{ - ec{"سخنین"} + ec{"سخالين"} } "Asia:Samarkand"{ ec{"سمرقند"} @@ -802,13 +835,13 @@ ps{ ec{"سینګاپور"} } "Asia:Srednekolymsk"{ - ec{"سنینیکولوژیک"} + ec{"سريډنيکوليمسک"} } "Asia:Taipei"{ - ec{"تاپي"} + ec{"تايپي"} } "Asia:Tashkent"{ - ec{"تاشکند"} + ec{"تاشقند"} } "Asia:Tbilisi"{ ec{"تبلیسي"} @@ -826,46 +859,52 @@ ps{ ec{"توماس"} } "Asia:Ulaanbaatar"{ - ec{"اللانبیر"} + ec{"اولان باټر"} + } + "Asia:Urumqi"{ + ec{"اورومقي"} } "Asia:Ust-Nera"{ - ec{"اوسترا"} + ec{"اوستنيرا"} } "Asia:Vientiane"{ - ec{"وینټینیا"} + ec{"وينټين"} } "Asia:Vladivostok"{ ec{"ولادیوستاک"} } "Asia:Yakutsk"{ - ec{"یااکټس"} + ec{"ياکوټسک"} } "Asia:Yekaterinburg"{ - ec{"یاراتینینګ برګ"} + ec{"يکاټيرنبرګ"} } "Asia:Yerevan"{ - ec{"ییران"} + ec{"يريوان"} + } + "Atlantic:Azores"{ + ec{"ايزورس"} } "Atlantic:Bermuda"{ ec{"برمودا"} } "Atlantic:Canary"{ - ec{"کیري"} + ec{"کناري"} } "Atlantic:Cape_Verde"{ - ec{"کېپ وردا"} + ec{"کيپ ورډ"} } "Atlantic:Faeroe"{ ec{"فارو"} } "Atlantic:Madeira"{ - ec{"مایررا"} + ec{"مديرا"} } "Atlantic:Reykjavik"{ - ec{"ريکسجيک"} + ec{"ريکجاويک"} } "Atlantic:South_Georgia"{ - ec{"سویل جورجیا"} + ec{"سويلي جورجيا"} } "Atlantic:St_Helena"{ ec{"سینټ هیلینا"} @@ -880,7 +919,7 @@ ps{ ec{"بریسبن"} } "Australia:Broken_Hill"{ - ec{"مات شوی هیل"} + ec{"بروکن هل"} } "Australia:Currie"{ ec{"کرري"} @@ -889,7 +928,7 @@ ps{ ec{"ډارون"} } "Australia:Eucla"{ - ec{"ایولیکا"} + ec{"ايوکلا"} } "Australia:Hobart"{ ec{"هوبارټ"} @@ -898,19 +937,19 @@ ps{ ec{"لینډامین"} } "Australia:Lord_Howe"{ - ec{"رب هیله"} + ec{"لارډ هوي"} } "Australia:Melbourne"{ ec{"میلبورن"} } "Australia:Perth"{ - ec{"پورت"} + ec{"پرت"} } "Australia:Sydney"{ ec{"سډني"} } "Etc:UTC"{ - ls{"همغږۍ نړیواله موده"} + ls{"همغږى نړیوال وخت"} } "Etc:Unknown"{ ec{"نامعلوم ښار"} @@ -925,16 +964,16 @@ ps{ ec{"آسترخان"} } "Europe:Athens"{ - ec{"ایترین"} + ec{"ايتنز"} } "Europe:Belgrade"{ ec{"بلغاد"} } "Europe:Berlin"{ - ec{"برلین"} + ec{"برلن"} } "Europe:Bratislava"{ - ec{"براتسکوا"} + ec{"براټسلاوا"} } "Europe:Brussels"{ ec{"بروسلز"} @@ -943,19 +982,20 @@ ps{ ec{"بخارست"} } "Europe:Budapest"{ - ec{"بوډاپیس"} + ec{"بداپسټ"} } "Europe:Busingen"{ - ec{"بسینګین"} + ec{"بوسينجن"} } "Europe:Chisinau"{ ec{"چیسینو"} } "Europe:Copenhagen"{ - ec{"کوپینګنګ"} + ec{"کوپن هيګن"} } "Europe:Dublin"{ - ec{"ډوبلین"} + ec{"ډبلن"} + ld{"آيرش معياري وخت"} } "Europe:Gibraltar"{ ec{"جبل الطارق"} @@ -970,13 +1010,13 @@ ps{ ec{"د آئل آف مین"} } "Europe:Istanbul"{ - ec{"استانبول"} + ec{"استنبول"} } "Europe:Jersey"{ ec{"جرسی"} } "Europe:Kaliningrad"{ - ec{"کیليینګراډر"} + ec{"کيلنينګراډ"} } "Europe:Kiev"{ ec{"کیو"} @@ -988,11 +1028,11 @@ ps{ ec{"لیسبون"} } "Europe:Ljubljana"{ - ec{"لوججانا"} + ec{"لوبجانا"} } "Europe:London"{ ec{"لندن"} - ld{"د انګلستان سمر وخت"} + ld{"بريتانوي د اوړي وخت"} } "Europe:Luxembourg"{ ec{"لوګزامبورګ"} @@ -1001,10 +1041,10 @@ ps{ ec{"میډریډ"} } "Europe:Malta"{ - ec{"مالتا"} + ec{"مالټا"} } "Europe:Mariehamn"{ - ec{"ماریاهمین"} + ec{"ميريهام"} } "Europe:Minsk"{ ec{"منسک"} @@ -1022,13 +1062,13 @@ ps{ ec{"پاریس"} } "Europe:Podgorica"{ - ec{"پوډورګویکا"} + ec{"پوډګوريکا"} } "Europe:Prague"{ ec{"پراګ"} } "Europe:Riga"{ - ec{"ریګ"} + ec{"ريګا"} } "Europe:Rome"{ ec{"روم"} @@ -1040,7 +1080,7 @@ ps{ ec{"سان مارینو"} } "Europe:Sarajevo"{ - ec{"سرجیو"} + ec{"سيراجيوا"} } "Europe:Saratov"{ ec{"سراتف"} @@ -1060,14 +1100,17 @@ ps{ "Europe:Tallinn"{ ec{"تالين"} } + "Europe:Tirane"{ + ec{"تيران"} + } "Europe:Ulyanovsk"{ - ec{"ایلیانوفس"} + ec{"اليانوسک"} } "Europe:Uzhgorod"{ ec{"یوژورډ"} } "Europe:Vaduz"{ - ec{"وادز"} + ec{"واډوز"} } "Europe:Vatican"{ ec{"ویټیکان"} @@ -1076,10 +1119,10 @@ ps{ ec{"ویانا"} } "Europe:Vilnius"{ - ec{"ویلیونس"} + ec{"ويلنيوس"} } "Europe:Volgograd"{ - ec{"والګراډر"} + ec{"والګوګراډ"} } "Europe:Warsaw"{ ec{"وارسا"} @@ -1094,34 +1137,37 @@ ps{ ec{"زریچ"} } "Indian:Antananarivo"{ - ec{"انتوننارو"} + ec{"انتانناريوو"} } "Indian:Chagos"{ - ec{"چارګوس"} + ec{"چاګوس"} } "Indian:Christmas"{ - ec{"کریمیس"} + ec{"کريسمس"} } "Indian:Cocos"{ - ec{"کوکوس"} + ec{"کوکوز"} } "Indian:Comoro"{ - ec{"کومو"} + ec{"کومورو"} + } + "Indian:Kerguelen"{ + ec{"کرګولين"} } "Indian:Mahe"{ - ec{"مای"} + ec{"ماهي"} } "Indian:Maldives"{ ec{"مالديپ"} } "Indian:Mauritius"{ - ec{"ماوريشوس"} + ec{"ماريشيس"} } "Indian:Mayotte"{ ec{"میټوت"} } "Indian:Reunion"{ - ec{"ریونیو"} + ec{"ري يونين"} } "Pacific:Apia"{ ec{"اپیا"} @@ -1130,31 +1176,34 @@ ps{ ec{"اکلند"} } "Pacific:Chatham"{ - ec{"چامام"} + ec{"چاتام"} } "Pacific:Easter"{ ec{"ایسټر"} } "Pacific:Efate"{ - ec{"ایات"} + ec{"عفات"} + } + "Pacific:Enderbury"{ + ec{"انډربري"} } "Pacific:Fakaofo"{ ec{"فوکافو"} } "Pacific:Fiji"{ - ec{"في جي"} + ec{"فجي"} } "Pacific:Funafuti"{ - ec{"فرهفتی"} + ec{"فونافوتي"} } "Pacific:Galapagos"{ ec{"ګالپګوس"} } "Pacific:Gambier"{ - ec{"ګيمبي"} + ec{"ګيمبير"} } "Pacific:Guadalcanal"{ - ec{"ګالالکنال"} + ec{"ګواډلکينال"} } "Pacific:Guam"{ ec{"ګوام"} @@ -1163,22 +1212,25 @@ ps{ ec{"هینولولو"} } "Pacific:Johnston"{ - ec{"جانستون"} + ec{"جانسټن"} + } + "Pacific:Kiritimati"{ + ec{"کيريټماټي"} } "Pacific:Kosrae"{ - ec{"کوسیرا"} + ec{"کوسراي"} } "Pacific:Kwajalein"{ - ec{"کجیجینین"} + ec{"کواجلين"} } "Pacific:Majuro"{ ec{"مجورو"} } "Pacific:Marquesas"{ - ec{"مارکسونه"} + ec{"مارکيساس"} } "Pacific:Midway"{ - ec{"میډیا"} + ec{"ميډوی"} } "Pacific:Nauru"{ ec{"نایرو"} @@ -1190,37 +1242,40 @@ ps{ ec{"نورفک"} } "Pacific:Noumea"{ - ec{"نواما"} + ec{"نوميا"} } "Pacific:Pago_Pago"{ - ec{"پیگو پیگو"} + ec{"پيګو پيګو"} } "Pacific:Palau"{ - ec{"پلو"} + ec{"پلاو"} + } + "Pacific:Pitcairn"{ + ec{"پيټيکيرن"} } "Pacific:Ponape"{ ec{"پونپي"} } "Pacific:Port_Moresby"{ - ec{"پور موورسبی"} + ec{"پورټ مورسبی"} } "Pacific:Rarotonga"{ - ec{"راروتاګون"} + ec{"راروټونګا"} } "Pacific:Saipan"{ ec{"سيپان"} } "Pacific:Tahiti"{ - ec{"ټیټیټي"} + ec{"ټهيټي"} } "Pacific:Tarawa"{ - ec{"ترارو"} + ec{"تاراوا"} } "Pacific:Tongatapu"{ ec{"ټونګاتاپو"} } "Pacific:Truk"{ - ec{"چکوک"} + ec{"چوک"} } "Pacific:Wake"{ ec{"ویک"} @@ -1246,22 +1301,17 @@ ps{ ls{"لویدیځ افریقایي معیاري وخت"} } "meta:Alaska"{ - ld{"د الاسکا د ورځې روښانه کول"} + ld{"الاسکا د ورځې روښانه وخت"} lg{"الاسکا وخت"} ls{"الاسکا معياري وخت"} } - "meta:Almaty"{ - ld{"∅∅∅"} - lg{"الماتا په وخت"} - ls{"∅∅∅"} - } "meta:Amazon"{ ld{"ایمیزون اوړي وخت"} lg{"ایمیزون وخت"} ls{"ایمیزون معیاری وخت"} } "meta:America_Central"{ - ld{"مرکزي رڼا ورځې وخت"} + ld{"مرکزي د ورځې روښانه وخت"} lg{"مرکزي وخت"} ls{"مرکزي معياري وخت"} } @@ -1281,12 +1331,12 @@ ps{ ls{"د پیسفک معياري وخت"} } "meta:Apia"{ - ld{"د اپیا د ورځې وخت"} - lg{"د اپیا وخت"} - ls{"د اپیا معياري وخت"} + ld{"اپيا د ورځې روښانه وخت"} + lg{"اپیا وخت"} + ls{"اپیا معياري وخت"} } "meta:Arabian"{ - ld{"د عربي ورځپاڼې وخت"} + ld{"عربي د ورځې روښانه وخت"} lg{"عربي وخت"} ls{"عربي معیاري وخت"} } @@ -1296,52 +1346,57 @@ ps{ ls{"ارجنټاین معیاری وخت"} } "meta:Argentina_Western"{ - ld{"غربي ارجنټاین اوړي وخت"} - lg{"غربي ارجنټاین وخت"} - ls{"غربي ارجنټاین معیاری وخت"} + ld{"لوېديځ ارجنټاين اوړي وخت"} + lg{"لوېديځ ارجنټاين وخت"} + ls{"لوېديځ ارجنټاين معياري وخت"} } "meta:Armenia"{ - ld{"ارمنستان سمر وخت"} + ld{"ارمنستان اوړي وخت"} lg{"ارمنستان وخت"} ls{"ارمنستان معياري وخت"} } "meta:Atlantic"{ ld{"اتلانتیک د رڼا ورځې وخت"} - lg{"اتلانتیک د وخت"} + lg{"اتلانتیک وخت"} ls{"اتلانتیک معياري وخت"} } "meta:Australia_Central"{ - ld{"د آسټرالیا مرکزي مرکزی ورځ"} - lg{"د مرکزي آسټر وخت"} - ls{"د اسټرالیا مرکزي مرکزي معیار"} + ld{"آسترالوي مرکزي د ورځې روښانه وخت"} + lg{"مرکزي آستراليا وخت"} + ls{"آسترالوي مرکزي معياري وخت"} } "meta:Australia_CentralWestern"{ - ld{"د آسټرالیا مرکزي مرکزی لویدیځ د وخت وخت"} - lg{"د آسټرالیا مرکزی لویدیځ وخت"} - ls{"د آسټرالیا مرکزي لویدیځ معیاري وخت"} + ld{"آسترالوي مرکزي لوېديځ د ورځې روښانه وخت"} + lg{"آسترالوي مرکزي لوېديځ وخت"} + ls{"آسترالوي مرکزي لوېديځ معياري وخت"} } "meta:Australia_Eastern"{ - ld{"د اسټرالیا ختیځ ختیځ ورځی وخت"} - lg{"د ختیځ آسټر وخت"} - ls{"د آسټرالیا ختیځ معیاري وخت"} + ld{"آسترالوي ختيځ د ورځې روښانه وخت"} + lg{"ختيځ آستراليا وخت"} + ls{"آسترالوي ختيځ معياري وخت"} } "meta:Australia_Western"{ - ld{"د اسټرالیا لویدیځ د ورځې وخت"} - lg{"د لویدیځ آسټرالیا وخت"} - ls{"د اسټرالیا لویدیز معیار"} + ld{"آسترالوي لوېديځ د ورځې روښانه وخت"} + lg{"لوېديځ آستراليا وخت"} + ls{"آسترالوي لوېديځ معياري وخت"} } "meta:Azerbaijan"{ - ld{"د اذرباییجان سمر وخت"} + ld{"اذرباییجان اوړي وخت"} lg{"د آذربايجان وخت"} ls{"آذربايجان معياري وخت"} } + "meta:Azores"{ + ld{"ايزورس اوړي وخت"} + lg{"ايزورس وخت"} + ls{"ايزورس معياري وخت"} + } "meta:Bangladesh"{ - ld{"د بنگله دیش د سمر وخت"} + ld{"بنګله ديش اوړي وخت"} lg{"بنگله دېش وخت"} - ls{"د بنګلادیش معیاري وخت"} + ls{"بنګلادیش معیاري وخت"} } "meta:Bhutan"{ - ls{"د بوتان وخت"} + ls{"بهوټان وخت"} } "meta:Bolivia"{ ls{"بولیویا وخت"} @@ -1352,7 +1407,7 @@ ps{ ls{"برسلیا معیاری وخت"} } "meta:Brunei"{ - ls{"د بروني درسلام وخت"} + ls{"برونايي دارالسلام وخت"} } "meta:Cape_Verde"{ ld{"کیپ وردډ سمر وخت"} @@ -1363,9 +1418,9 @@ ps{ ls{"چمارو معياري وخت"} } "meta:Chatham"{ - ld{"د چتام ورځی وخت"} - lg{"چامام وخت"} - ls{"د چمتم معياري وخت"} + ld{"چاتام د ورځې روښانه وخت"} + lg{"چاتام وخت"} + ls{"چاتام معياري وخت"} } "meta:Chile"{ ld{"چلی اوړي وخت"} @@ -1383,10 +1438,10 @@ ps{ ls{"چوئیبیلسن معیاری وخت"} } "meta:Christmas"{ - ls{"د کریسټ ټاپو وخت"} + ls{"کريسمس ټاپو وخت"} } "meta:Cocos"{ - ls{"د کوکوز ټاپوز وخت"} + ls{"کوکوز ټاپوګانو وخت"} } "meta:Colombia"{ ld{"کولمبیا اوړي وخت"} @@ -1394,23 +1449,23 @@ ps{ ls{"کولمبیا معیاری وخت"} } "meta:Cook"{ - ld{"د کوک ټاپو نیمه سمر وخت"} - lg{"د کوک ټاپوز وخت"} - ls{"د کوک ټاپوز معياري وخت"} + ld{"کوک ټاپوګانو نيم اوړي وخت"} + lg{"کوک ټاپوګانو وخت"} + ls{"کوک ټاپوګانو معياري وخت"} } "meta:Cuba"{ ld{"کیوبا د رڼا ورځې وخت"} - lg{"کیوبا د وخت"} + lg{"کيوبا وخت"} ls{"کیوبا معياري وخت"} } "meta:Davis"{ - ls{"دیوس وخت"} + ls{"ډيوس وخت"} } "meta:DumontDUrville"{ - ls{"ډومونټ-ډیریلوی وخت"} + ls{"ډومونټ ډي ارول"} } "meta:East_Timor"{ - ls{"ختیځ ختیځ تیمور وخت"} + ls{"ختيځ تيمور وخت"} } "meta:Easter"{ ld{"ايستر ټاپو اوړي وخت"} @@ -1422,26 +1477,31 @@ ps{ } "meta:Europe_Central"{ ld{"وسطي اروپايي د اوړي وخت"} - lg{"منځنۍ اروپا وخت"} + lg{"مرکزي اروپايي وخت"} ls{"د مرکزي اروپا معیاري وخت"} } + "meta:Europe_Eastern"{ + ld{"ختيځ اروپايي اوړي وخت"} + lg{"ختيځ اروپايي وخت"} + ls{"ختيځ اروپايي معياري وخت"} + } "meta:Europe_Further_Eastern"{ - ls{"نور ختیځ ختیځ اروپا وخت"} + ls{"لرې ختيځ اروپايي وخت"} } "meta:Europe_Western"{ - ld{"د لودیځې اورپا د اوړي وخت"} - lg{"لوېديزې اروپا وخت"} - ls{"د لودیځې اروپا معیاري وخت"} + ld{"لوېديځ اروپايي اوړي وخت"} + lg{"لوېديځ اروپايي وخت"} + ls{"لوېديځ اروپايي معياري وخت"} } "meta:Falkland"{ ld{"د فوکلنډ ټاپو اوړي وخت"} - lg{"د فوکلنډ ټاپو وخت"} + lg{"فوکلنډ ټاپو وخت"} ls{"د فوکلنډ ټاپو معیاری وخت"} } "meta:Fiji"{ - ld{"د فجی سمر وخت"} + ld{"فجي د اوړي وخت"} lg{"فجی وخت"} - ls{"د فجی معياري وخت"} + ls{"فجی معياري وخت"} } "meta:French_Guiana"{ ls{"د فرانسوي ګانا وخت"} @@ -1450,13 +1510,13 @@ ps{ ls{"د فرانسې سویل او انټارټيک وخت"} } "meta:GMT"{ - ls{"گرينويچ وخت"} + ls{"ګرينويچ معياري وخت"} } "meta:Galapagos"{ ls{"ګالپګوس وخت"} } "meta:Gambier"{ - ls{"د ګیمبریر وخت"} + ls{"ګيمبير وخت"} } "meta:Georgia"{ ld{"د جورجيا د اوړي وخت"} @@ -1464,7 +1524,7 @@ ps{ ls{"جورجیا معیاري وخت"} } "meta:Gilbert_Islands"{ - ls{"د ګیلبرټ جزیره وخت"} + ls{"جلبرټ ټاپوګانو وخت"} } "meta:Greenland_Eastern"{ ld{"د ختیځ ګرینلینډ اوړي وخت"} @@ -1477,7 +1537,7 @@ ps{ ls{"لویدیځ ګرینلینډ معياري وخت"} } "meta:Gulf"{ - ls{"د خلیج معياري وخت"} + ls{"خلیج معياري وخت"} } "meta:Guyana"{ ls{"د ګوانانا وخت"} @@ -1488,9 +1548,9 @@ ps{ ls{"هوایی الیوتین معیاری وخت"} } "meta:Hong_Kong"{ - ld{"د هانګ کانګ اوړي وخت"} - lg{"د هانګ کانګ د وخت"} - ls{"د هانګ کانګ معياري وخت"} + ld{"هانګ کانګ اوړي وخت"} + lg{"هانګ کانګ وخت"} + ls{"هانګ کانګ معياري وخت"} } "meta:Hovd"{ ld{"هاوډ اوړي وخت"} @@ -1498,100 +1558,100 @@ ps{ ls{"هاوډ معیاری وخت"} } "meta:India"{ - ls{"د هند معیاري وخت"} + ls{"هند معیاري وخت"} } "meta:Indian_Ocean"{ ls{"د هند سمندر وخت"} } "meta:Indochina"{ - ls{"د اندوچینا وخت"} + ls{"انډوچاینه وخت"} } "meta:Indonesia_Central"{ - ls{"د اندونیزیا مرکزي وخت"} + ls{"مرکزي ادونيزيا وخت"} } "meta:Indonesia_Eastern"{ - ls{"د اندونیزیا وخت"} + ls{"اندونیزیا وخت"} } "meta:Indonesia_Western"{ - ls{"د لویدیځ اندونیزیا وخت"} + ls{"لویدیځ اندونیزیا وخت"} } "meta:Iran"{ - ld{"د ایران د ورځې وخت"} - lg{"د ایران وخت"} - ls{"د ایران معياري وخت"} + ld{"ايران د ورځې روښانه وخت"} + lg{"ایران وخت"} + ls{"ایران معياري وخت"} } "meta:Irkutsk"{ - ld{"د ایککوټس سمر وخت"} - lg{"د ارکوټس وخت"} - ls{"د ارکوټس معياري وخت"} + ld{"ارکوټسک اوړي وخت"} + lg{"ارکوټسک وخت"} + ls{"ارکوټسک معياري وخت"} } "meta:Israel"{ - ld{"د اسراییلو د ورځې وخت"} - lg{"د اسراییل وخت"} - ls{"د اسراییل معياري وخت"} + ld{"اسراييل د ورځې روښانه وخت"} + lg{"اسراییل وخت"} + ls{"اسراییل معياري وخت"} } "meta:Japan"{ - ld{"جاپان د رڼا ورځې وخت"} - lg{"جاپان د وخت"} - ls{"د جاپان معياري وخت"} + ld{"جاپان د ورځې روښانه وخت"} + lg{"جاپان وخت"} + ls{"جاپان معياري وخت"} } "meta:Kazakhstan_Eastern"{ - ls{"ختیځ د قزاقستان د وخت"} + ls{"ختيځ قازقستان وخت"} } "meta:Kazakhstan_Western"{ ls{"لویدیځ قزاقستان وخت"} } "meta:Korea"{ - ld{"د کوریا د ورځې د ورځې وخت"} - lg{"کوريا وخت"} - ls{"کوريا معياري وخت"} + ld{"کوريايي د ورځې روښانه وخت"} + lg{"کوريايي وخت"} + ls{"کوريايي معياري وخت"} } "meta:Kosrae"{ - ls{"کوسیرا وخت"} + ls{"کوسراي وخت"} } "meta:Krasnoyarsk"{ - ld{"کریسایویارسک سمر وخت"} - lg{"کریسایویسسک وخت"} - ls{"کریسایویارسک معیاري وخت"} + ld{"کريسنويارسک اوړي وخت"} + lg{"کريسنويارسک وخت"} + ls{"کريسنويارسک معياري وخت"} } "meta:Kyrgystan"{ ls{"کرغیزستان وخت"} } "meta:Line_Islands"{ - ls{"د کرښې ټاټوبي وخت"} + ls{"لاين ټاپوګانو وخت"} } "meta:Lord_Howe"{ - ld{"رب هاو د ورځې د رڼا وخت"} - lg{"رب های وخت"} - ls{"رب های معیاري وخت"} + ld{"لارډ هوي د ورځې روښانه وخت"} + lg{"لارډ هوي وخت"} + ls{"لارډ هوي معياري وخت"} } "meta:Macquarie"{ - ls{"د مکاکري ټاپو وخت"} + ls{"مکواري ټاپو وخت"} } "meta:Magadan"{ - ld{"د مګمان سمر وخ"} - lg{"د مګدان وخت"} - ls{"میګډان معياري وخت"} + ld{"ميګډان اوړي وخت"} + lg{"ميګډان وخت"} + ls{"ميګډان معياري وخت"} } "meta:Malaysia"{ ls{"ملائیشیا وخت"} } "meta:Maldives"{ - ls{"مالديف وخت"} + ls{"مالديپ وخت"} } "meta:Marquesas"{ ls{"مارکسس وخت"} } "meta:Marshall_Islands"{ - ls{"مارشیل ټاپو وخت"} + ls{"مارشل ټاپوګانو وخت"} } "meta:Mauritius"{ - ld{"ماریسیس سمر وخت"} - lg{"ماریسیس وخت"} + ld{"ماريشيس د اوړي وخت"} + lg{"ماريشيس وخت"} ls{"ماریشیس معياري وخت"} } "meta:Mawson"{ - ls{"دسونسن وخت"} + ls{"ماوسن وخت"} } "meta:Mexico_Northwest"{ ld{"د شمال لویدیځ مکسیکو رڼا ورځې وخت"} @@ -1604,9 +1664,9 @@ ps{ ls{"مکسیکن پیسفک معیاری وخت"} } "meta:Mongolia"{ - ld{"دلان بیتر سمر وخت"} - lg{"دلانانباټ وخت"} - ls{"اولان بټر معیاري وخت"} + ld{"اولان باټر اوړي وخت"} + lg{"اولان باټر وخت"} + ls{"اولان باټر معیاري وخت"} } "meta:Moscow"{ ld{"ماسکو سمر وخت"} @@ -1614,7 +1674,7 @@ ps{ ls{"ماسکو معياري وخت"} } "meta:Myanmar"{ - ls{"د میانمار وخت"} + ls{"میانمار وخت"} } "meta:Nauru"{ ls{"ناورو وخت"} @@ -1623,18 +1683,18 @@ ps{ ls{"نیپال وخت"} } "meta:New_Caledonia"{ - ld{"د نیو کالیډونیا سمر وخت"} - lg{"د نیو کالیډونیا وخت"} - ls{"نوی کالیډونیا معياري وخت"} + ld{"نيو کايډونيا اوړي وخت"} + lg{"نیو کالیډونیا وخت"} + ls{"نيو کالیډونیا معياري وخت"} } "meta:New_Zealand"{ - ld{"د نیوزی لینڈ د ورځې د رڼا وخت"} - lg{"د نیوزی لینڈ وخت"} - ls{"د نیوزی لینڈ معیاري وخت"} + ld{"نيوزي لېنډ د ورځې روښانه وخت"} + lg{"نيوزي لېنډ وخت"} + ls{"نيوزي لېنډ معياري وخت"} } "meta:Newfoundland"{ - ld{"د نوي فیلډلینډ رڼا ورځې وخت"} - lg{"د نوي فیلډلینډ وخت"} + ld{"نيو فاونډلېنډ د ورځې روښانه وخت"} + lg{"نيو فاونډلېنډ وخت"} ls{"د نوي فیلډلینډ معیاری وخت"} } "meta:Niue"{ @@ -1649,19 +1709,19 @@ ps{ ls{"فرنانڈو دي نورونها معیاری وخت"} } "meta:Novosibirsk"{ - ld{"نووسوسبیرک سمر وخت"} - lg{"د نووسوسبیرک وخت"} - ls{"د نووسوسبیرک معياري وخت"} + ld{"نووسيبرسک اوړي وخت"} + lg{"نووسيبرسک وخت"} + ls{"نووسيبرسک معياري وخت"} } "meta:Omsk"{ - ld{"اوسمک سمر وخت"} - lg{"اوزک وخت"} - ls{"د اوزک معياري وخت"} + ld{"اومسک اوړي وخت"} + lg{"اومسک وخت"} + ls{"اومسک معياري وخت"} } "meta:Pakistan"{ - ld{"د پاکستان سمر وخت"} - lg{"د پاکستان وخت"} - ls{"د پاکستان معیاري وخت"} + ld{"پاکستان اوړي وخت"} + lg{"پاکستان وخت"} + ls{"پاکستان معیاري وخت"} } "meta:Palau"{ ls{"پالاو وخت"} @@ -1671,7 +1731,7 @@ ps{ } "meta:Paraguay"{ ld{"پاراګوای اوړي وخت"} - lg{"پاراګوای د وخت"} + lg{"پيراګوای وخت"} ls{"پیراګوای معياري وخت"} } "meta:Peru"{ @@ -1680,9 +1740,9 @@ ps{ ls{"پیرو معياري وخت"} } "meta:Philippines"{ - ld{"د فلپین سمر وخت"} - lg{"د فلپین وخت"} - ls{"فلپین معياري وخت"} + ld{"فلپاين اوړي وخت"} + lg{"فلپاين وخت"} + ls{"فلپاين معياري وخت"} } "meta:Phoenix_Islands"{ ls{"د فینکس ټاپو وخت"} @@ -1696,35 +1756,35 @@ ps{ ls{"پیټ کارین وخت"} } "meta:Ponape"{ - ls{"پونپپ وخت"} + ls{"پونيپ وخت"} } "meta:Pyongyang"{ - ls{"پیونگګنګ وخت"} + ls{"پيانګ يانګ وخت"} } "meta:Reunion"{ - ls{"د غبرګون وخت"} + ls{"ري يونين وخت"} } "meta:Rothera"{ - ls{"د رورېټا وخت"} + ls{"رودرا وخت"} } "meta:Sakhalin"{ - ld{"د سخلین سمر وخت"} - lg{"د سخنین وخت"} + ld{"سخلين اوړي وخت"} + lg{"سخلين وخت"} ls{"سخلین معياري وخت"} } "meta:Samoa"{ - ld{"د سموا د ورځې روښانه کول"} + ld{"سموا د ورځې روښانه وخت"} lg{"سموا وخت"} - ls{"سموډ معياري وخت"} + ls{"سموا معياري وخت"} } "meta:Seychelles"{ ls{"سیچیلس وخت"} } "meta:Singapore"{ - ls{"د سنګاپور معیاري وخت"} + ls{"سنګاپور معیاري وخت"} } "meta:Solomon"{ - ls{"د سلیمان ټاپوګانو وخت"} + ls{"سلیمان ټاپوګانو وخت"} } "meta:South_Georgia"{ ls{"د سویل جورجیا وخت"} @@ -1736,26 +1796,26 @@ ps{ ls{"سیوا وخت"} } "meta:Tahiti"{ - ls{"ټیټيټي وخت"} + ls{"ټهيټي وخت"} } "meta:Taipei"{ - ld{"د تاپي د رڼا ورځۍ وخت"} - lg{"تاپي وخت"} - ls{"تاپي معياري وخت"} + ld{"تايپي د ورځې روښانه وخت"} + lg{"تايپي وخت"} + ls{"تايپي معياري وخت"} } "meta:Tajikistan"{ - ls{"تاجکستان د وخت"} + ls{"تاجکستان وخت"} } "meta:Tokelau"{ ls{"توکیلاو وخت"} } "meta:Tonga"{ - ld{"د ټونګ سمر وخت"} + ld{"ټونګا اوړي وخت"} lg{"ټونګا وخت"} ls{"د ټونګ معياري وخت"} } "meta:Truk"{ - ls{"د چوکو وخت"} + ls{"چوک وخت"} } "meta:Turkmenistan"{ ld{"ترکمنستان اوړي وخت"} @@ -1763,7 +1823,7 @@ ps{ ls{"ترکمنستان معياري وخت"} } "meta:Tuvalu"{ - ls{"د تووالو وخت"} + ls{"تووالو وخت"} } "meta:Uruguay"{ ld{"یوروګوای اوړي وخت"} @@ -1772,35 +1832,35 @@ ps{ } "meta:Uzbekistan"{ ld{"ازبکستان اوړي وخت"} - lg{"د ازبکستان وخت"} + lg{"ازبکستان وخت"} ls{"ازبکستان معياري وخت"} } "meta:Vanuatu"{ - ld{"وانوات سمر وخت"} + ld{"ونواتو اوړي وخت"} lg{"د وناتو وخت"} - ls{"د وناتو معياري وخت"} + ls{"ونواتو معياري وخت"} } "meta:Venezuela"{ ls{"وینزویلا وخت"} } "meta:Vladivostok"{ - ld{"ولادیوستک سمر وخت"} + ld{"ولاديوستاک اوړي وخت"} lg{"ولادیوستاک وخت"} - ls{"ولادیوستکو معياري وخت"} + ls{"ولاديوستاک معياري وخت"} } "meta:Volgograd"{ - ld{"د والګوګراد د اوړي وخت"} - lg{"د والګوګراد وخت"} - ls{"د والګوګراد معياري وخت"} + ld{"والګوګراد اوړي وخت"} + lg{"والګوګراد وخت"} + ls{"والګوګراد معياري وخت"} } "meta:Vostok"{ - ls{"د واستوک وخت"} + ls{"واستوک وخت"} } "meta:Wake"{ - ls{"دک ټاپو وخت"} + ls{"ويک تاپو وخت"} } "meta:Wallis"{ - ls{"والیس او فوتونا وخت"} + ls{"والس او فوتونا وخت"} } "meta:Yakutsk"{ ld{"ياکوټسک د اوړي وخت"} diff --git a/source/data/zone/ps_PK.txt b/source/data/zone/ps_PK.txt index 63eea37..2a3be2f 100644 --- a/source/data/zone/ps_PK.txt +++ b/source/data/zone/ps_PK.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ps_PK{ - Version{"2.1.49.34"} + Version{"36"} zoneStrings{ "Africa:Harare"{ ec{"هرارے"} diff --git a/source/data/zone/pt.txt b/source/data/zone/pt.txt index eeba6e7..ef7307f 100644 --- a/source/data/zone/pt.txt +++ b/source/data/zone/pt.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pt{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -45,6 +45,9 @@ pt{ "Africa:Casablanca"{ ec{"Casablanca"} } + "Africa:Ceuta"{ + ec{"Ceuta"} + } "Africa:Conakry"{ ec{"Conacri"} } @@ -162,6 +165,9 @@ pt{ "America:Anchorage"{ ec{"Anchorage"} } + "America:Anguilla"{ + ec{"Anguila"} + } "America:Antigua"{ ec{"Antígua"} } @@ -597,62 +603,176 @@ pt{ "America:Yellowknife"{ ec{"Yellowknife"} } + "Antarctica:Casey"{ + ec{"Casey"} + } + "Antarctica:Davis"{ + ec{"Davis"} + } + "Antarctica:Macquarie"{ + ec{"Macquarie"} + } + "Antarctica:Mawson"{ + ec{"Mawson"} + } + "Antarctica:McMurdo"{ + ec{"McMurdo"} + } + "Antarctica:Palmer"{ + ec{"Palmer"} + } + "Antarctica:Rothera"{ + ec{"Rothera"} + } "Antarctica:Syowa"{ - ec{"Showa"} + ec{"Syowa"} + } + "Antarctica:Troll"{ + ec{"Troll"} + } + "Antarctica:Vostok"{ + ec{"Vostok"} + } + "Arctic:Longyearbyen"{ + ec{"Longyearbyen"} } "Asia:Aden"{ - ec{"Adem"} + ec{"Áden"} + } + "Asia:Almaty"{ + ec{"Almaty"} } "Asia:Amman"{ ec{"Amã"} } + "Asia:Anadyr"{ + ec{"Anadyr"} + } + "Asia:Aqtau"{ + ec{"Aktau"} + } "Asia:Aqtobe"{ - ec{"Aqtöbe"} + ec{"Aktobe"} } "Asia:Ashgabat"{ ec{"Asgabate"} } + "Asia:Atyrau"{ + ec{"Atyrau"} + } "Asia:Baghdad"{ ec{"Bagdá"} } "Asia:Bahrain"{ ec{"Bahrein"} } + "Asia:Baku"{ + ec{"Baku"} + } + "Asia:Bangkok"{ + ec{"Bangkok"} + } + "Asia:Barnaul"{ + ec{"Barnaul"} + } "Asia:Beirut"{ ec{"Beirute"} } + "Asia:Bishkek"{ + ec{"Bishkek"} + } + "Asia:Brunei"{ + ec{"Brunei"} + } + "Asia:Calcutta"{ + ec{"Calcutá"} + } + "Asia:Chita"{ + ec{"Chita"} + } + "Asia:Choibalsan"{ + ec{"Choibalsan"} + } + "Asia:Colombo"{ + ec{"Colombo"} + } "Asia:Damascus"{ ec{"Damasco"} } "Asia:Dhaka"{ ec{"Dacca"} } + "Asia:Dili"{ + ec{"Dili"} + } + "Asia:Dubai"{ + ec{"Dubai"} + } "Asia:Dushanbe"{ ec{"Duchambe"} } + "Asia:Famagusta"{ + ec{"Famagusta"} + } + "Asia:Gaza"{ + ec{"Gaza"} + } "Asia:Hebron"{ - ec{"Hebrom"} + ec{"Hebron"} + } + "Asia:Hong_Kong"{ + ec{"Hong Kong"} + } + "Asia:Hovd"{ + ec{"Hovd"} + } + "Asia:Irkutsk"{ + ec{"Irkutsk"} } "Asia:Jakarta"{ ec{"Jacarta"} } + "Asia:Jayapura"{ + ec{"Jayapura"} + } "Asia:Jerusalem"{ ec{"Jerusalém"} } + "Asia:Kabul"{ + ec{"Cabul"} + } + "Asia:Kamchatka"{ + ec{"Kamchatka"} + } "Asia:Karachi"{ - ec{"Carachi"} + ec{"Karachi"} } "Asia:Katmandu"{ - ec{"Catmandu"} + ec{"Katmandu"} + } + "Asia:Khandyga"{ + ec{"Khandyga"} + } + "Asia:Krasnoyarsk"{ + ec{"Krasnoyarsk"} } "Asia:Kuala_Lumpur"{ - ec{"Kuala Lampur"} + ec{"Kuala Lumpur"} + } + "Asia:Kuching"{ + ec{"Kuching"} + } + "Asia:Kuwait"{ + ec{"Kuwait"} } "Asia:Macau"{ ec{"Macau"} } - "Asia:Makassar"{ - ec{"Macáçar"} + "Asia:Magadan"{ + ec{"Magadan"} + } + "Asia:Manila"{ + ec{"Manila"} } "Asia:Muscat"{ ec{"Mascate"} @@ -660,9 +780,39 @@ pt{ "Asia:Nicosia"{ ec{"Nicósia"} } + "Asia:Novokuznetsk"{ + ec{"Novokuznetsk"} + } + "Asia:Novosibirsk"{ + ec{"Novosibirsk"} + } + "Asia:Omsk"{ + ec{"Omsk"} + } + "Asia:Oral"{ + ec{"Oral"} + } + "Asia:Phnom_Penh"{ + ec{"Phnom Penh"} + } + "Asia:Pontianak"{ + ec{"Pontianak"} + } + "Asia:Pyongyang"{ + ec{"Pyongyang"} + } + "Asia:Qatar"{ + ec{"Catar"} + } "Asia:Qostanay"{ ec{"Qostanay"} } + "Asia:Qyzylorda"{ + ec{"Qyzylorda"} + } + "Asia:Rangoon"{ + ec{"Rangum"} + } "Asia:Riyadh"{ ec{"Riade"} } @@ -679,23 +829,56 @@ pt{ ec{"Xangai"} } "Asia:Singapore"{ - ec{"Cingapura"} + ec{"Singapura"} + } + "Asia:Srednekolymsk"{ + ec{"Srednekolymsk"} + } + "Asia:Taipei"{ + ec{"Taipei"} + } + "Asia:Tashkent"{ + ec{"Tashkent"} + } + "Asia:Tbilisi"{ + ec{"Tbilisi"} } "Asia:Tehran"{ ec{"Teerã"} } "Asia:Thimphu"{ - ec{"Timphu"} + ec{"Thimphu"} } "Asia:Tokyo"{ ec{"Tóquio"} } + "Asia:Tomsk"{ + ec{"Tomsk"} + } "Asia:Ulaanbaatar"{ ec{"Ulan Bator"} } + "Asia:Urumqi"{ + ec{"Urumqi"} + } + "Asia:Ust-Nera"{ + ec{"Ust-Nera"} + } + "Asia:Vientiane"{ + ec{"Vientiane"} + } + "Asia:Vladivostok"{ + ec{"Vladivostok"} + } + "Asia:Yakutsk"{ + ec{"Yakutsk"} + } "Asia:Yekaterinburg"{ ec{"Ecaterimburgo"} } + "Asia:Yerevan"{ + ec{"Yerevan"} + } "Atlantic:Azores"{ ec{"Açores"} } @@ -726,6 +909,42 @@ pt{ "Atlantic:Stanley"{ ec{"Stanley"} } + "Australia:Adelaide"{ + ec{"Adelaide"} + } + "Australia:Brisbane"{ + ec{"Brisbane"} + } + "Australia:Broken_Hill"{ + ec{"Broken Hill"} + } + "Australia:Currie"{ + ec{"Currie"} + } + "Australia:Darwin"{ + ec{"Darwin"} + } + "Australia:Eucla"{ + ec{"Eucla"} + } + "Australia:Hobart"{ + ec{"Hobart"} + } + "Australia:Lindeman"{ + ec{"Lindeman"} + } + "Australia:Lord_Howe"{ + ec{"Lord Howe"} + } + "Australia:Melbourne"{ + ec{"Melbourne"} + } + "Australia:Perth"{ + ec{"Perth"} + } + "Australia:Sydney"{ + ec{"Sydney"} + } "Etc:UTC"{ ls{"Horário Universal Coordenado"} } @@ -735,6 +954,9 @@ pt{ "Europe:Amsterdam"{ ec{"Amsterdã"} } + "Europe:Andorra"{ + ec{"Andorra"} + } "Europe:Astrakhan"{ ec{"Astracã"} } @@ -747,6 +969,9 @@ pt{ "Europe:Berlin"{ ec{"Berlim"} } + "Europe:Bratislava"{ + ec{"Bratislava"} + } "Europe:Brussels"{ ec{"Bruxelas"} } @@ -759,12 +984,15 @@ pt{ "Europe:Busingen"{ ec{"Büsingen"} } + "Europe:Chisinau"{ + ec{"Chisinau"} + } "Europe:Copenhagen"{ ec{"Copenhague"} } "Europe:Dublin"{ ec{"Dublin"} - ld{"Horário Padrão da Irlanda"} + ld{"Horário Padrão Irlandês"} } "Europe:Gibraltar"{ ec{"Gibraltar"} @@ -790,6 +1018,9 @@ pt{ "Europe:Kiev"{ ec{"Kiev"} } + "Europe:Kirov"{ + ec{"Kirov"} + } "Europe:Lisbon"{ ec{"Lisboa"} } @@ -809,6 +1040,12 @@ pt{ "Europe:Malta"{ ec{"Malta"} } + "Europe:Mariehamn"{ + ec{"Mariehamn"} + } + "Europe:Minsk"{ + ec{"Minsk"} + } "Europe:Monaco"{ ec{"Mônaco"} } @@ -821,6 +1058,9 @@ pt{ "Europe:Paris"{ ec{"Paris"} } + "Europe:Podgorica"{ + ec{"Podgorica"} + } "Europe:Prague"{ ec{"Praga"} } @@ -830,27 +1070,54 @@ pt{ "Europe:Rome"{ ec{"Roma"} } + "Europe:Samara"{ + ec{"Samara"} + } + "Europe:San_Marino"{ + ec{"San Marino"} + } "Europe:Sarajevo"{ ec{"Sarajevo"} } + "Europe:Saratov"{ + ec{"Saratov"} + } + "Europe:Simferopol"{ + ec{"Simferopol"} + } + "Europe:Skopje"{ + ec{"Skopje"} + } "Europe:Sofia"{ ec{"Sófia"} } "Europe:Stockholm"{ ec{"Estocolmo"} } + "Europe:Tallinn"{ + ec{"Tallinn"} + } "Europe:Tirane"{ ec{"Tirana"} } "Europe:Ulyanovsk"{ ec{"Ulianovsk"} } + "Europe:Uzhgorod"{ + ec{"Uzhgorod"} + } + "Europe:Vaduz"{ + ec{"Vaduz"} + } "Europe:Vatican"{ ec{"Vaticano"} } "Europe:Vienna"{ ec{"Viena"} } + "Europe:Vilnius"{ + ec{"Vilnius"} + } "Europe:Volgograd"{ ec{"Volgogrado"} } @@ -869,9 +1136,21 @@ pt{ "Indian:Antananarivo"{ ec{"Antananarivo"} } + "Indian:Chagos"{ + ec{"Chagos"} + } + "Indian:Christmas"{ + ec{"Christmas"} + } + "Indian:Cocos"{ + ec{"Cocos"} + } "Indian:Comoro"{ ec{"Comores"} } + "Indian:Kerguelen"{ + ec{"Kerguelen"} + } "Indian:Mahe"{ ec{"Mahé"} } @@ -888,7 +1167,16 @@ pt{ ec{"Reunião"} } "Pacific:Apia"{ - ec{"Ápia"} + ec{"Apia"} + } + "Pacific:Auckland"{ + ec{"Auckland"} + } + "Pacific:Bougainville"{ + ec{"Bougainville"} + } + "Pacific:Chatham"{ + ec{"Chatnam"} } "Pacific:Easter"{ ec{"Ilha de Páscoa"} @@ -896,21 +1184,99 @@ pt{ "Pacific:Efate"{ ec{"Éfaté"} } + "Pacific:Enderbury"{ + ec{"Enderbury"} + } + "Pacific:Fakaofo"{ + ec{"Fakaofo"} + } + "Pacific:Fiji"{ + ec{"Fiji"} + } + "Pacific:Funafuti"{ + ec{"Funafuti"} + } "Pacific:Galapagos"{ ec{"Galápagos"} } + "Pacific:Gambier"{ + ec{"Gambier"} + } + "Pacific:Guadalcanal"{ + ec{"Guadalcanal"} + } + "Pacific:Guam"{ + ec{"Guam"} + } "Pacific:Honolulu"{ ec{"Honolulu"} } + "Pacific:Johnston"{ + ec{"Johnston"} + } + "Pacific:Kiritimati"{ + ec{"Kiritimati"} + } + "Pacific:Kosrae"{ + ec{"Kosrae"} + } + "Pacific:Kwajalein"{ + ec{"Kwajalein"} + } + "Pacific:Majuro"{ + ec{"Majuro"} + } + "Pacific:Marquesas"{ + ec{"Marquesas"} + } + "Pacific:Midway"{ + ec{"Midway"} + } + "Pacific:Nauru"{ + ec{"Nauru"} + } + "Pacific:Niue"{ + ec{"Niue"} + } + "Pacific:Norfolk"{ + ec{"Norfolk"} + } "Pacific:Noumea"{ ec{"Nouméa"} } + "Pacific:Pago_Pago"{ + ec{"Pago Pago"} + } + "Pacific:Palau"{ + ec{"Palau"} + } + "Pacific:Pitcairn"{ + ec{"Pitcairn"} + } + "Pacific:Port_Moresby"{ + ec{"Port Moresby"} + } + "Pacific:Rarotonga"{ + ec{"Rarotonga"} + } + "Pacific:Saipan"{ + ec{"Saipan"} + } "Pacific:Tahiti"{ ec{"Taiti"} } "Pacific:Tarawa"{ ec{"Taraua"} } + "Pacific:Tongatapu"{ + ec{"Tongatapu"} + } + "Pacific:Wake"{ + ec{"Wake"} + } + "Pacific:Wallis"{ + ec{"Wallis"} + } "meta:Acre"{ ld{"Horário de Verão do Acre"} lg{"Horário do Acre"} @@ -1169,7 +1535,7 @@ pt{ ls{"Horário da Guiana Francesa"} } "meta:French_Southern"{ - ls{"Horário da Antártida e do Sul da França"} + ls{"Horário dos Territórios Franceses do Sul e Antártida"} } "meta:GMT"{ ls{"Horário do Meridiano de Greenwich"} @@ -1291,7 +1657,7 @@ pt{ ls{"Horário de Lanka"} } "meta:Line_Islands"{ - ls{"Horário das Ilhas Line"} + ls{"Horário das Ilhas da Linha"} } "meta:Lord_Howe"{ ld{"Horário de Verão de Lord Howe"} @@ -1408,7 +1774,7 @@ pt{ ls{"Horário de Palau"} } "meta:Papua_New_Guinea"{ - ls{"Horário de Papua Nova Guiné"} + ls{"Horário de Papua-Nova Guiné"} } "meta:Paraguay"{ ld{"Horário de Verão do Paraguai"} @@ -1429,9 +1795,9 @@ pt{ ls{"Horário das Ilhas Fênix"} } "meta:Pierre_Miquelon"{ - ld{"Horário de Verão de Saint Pierre e Miquelon"} - lg{"Horário de Saint Pierre e Miquelon"} - ls{"Horário Padrão de Saint Pierre e Miquelon"} + ld{"Horário Verão de São Pedro e Miquelão"} + lg{"Horário de São Pedro e Miquelão"} + ls{"Horário Padrão de São Pedro e Miquelão"} } "meta:Pitcairn"{ ls{"Horário de Pitcairn"} diff --git a/source/data/zone/pt_AO.txt b/source/data/zone/pt_AO.txt index 376145c..f59fcb3 100644 --- a/source/data/zone/pt_AO.txt +++ b/source/data/zone/pt_AO.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_AO{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} zoneStrings{ "meta:Azores"{ sd{"∅∅∅"} diff --git a/source/data/zone/pt_CH.txt b/source/data/zone/pt_CH.txt index 623220c..55f6857 100644 --- a/source/data/zone/pt_CH.txt +++ b/source/data/zone/pt_CH.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_CH{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/zone/pt_CV.txt b/source/data/zone/pt_CV.txt index 1246227..1ba5463 100644 --- a/source/data/zone/pt_CV.txt +++ b/source/data/zone/pt_CV.txt @@ -2,11 +2,11 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_CV{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} zoneStrings{ "meta:Azores"{ sd{"∅∅∅"} - sg{"∅∅∅"} + sg{"AZOT"} ss{"∅∅∅"} } "meta:Europe_Central"{ diff --git a/source/data/zone/pt_GQ.txt b/source/data/zone/pt_GQ.txt index 00f271d..1ba7e1f 100644 --- a/source/data/zone/pt_GQ.txt +++ b/source/data/zone/pt_GQ.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_GQ{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/zone/pt_GW.txt b/source/data/zone/pt_GW.txt index 89ca33e..9e3ff3f 100644 --- a/source/data/zone/pt_GW.txt +++ b/source/data/zone/pt_GW.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_GW{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} zoneStrings{ "meta:Azores"{ sd{"∅∅∅"} diff --git a/source/data/zone/pt_LU.txt b/source/data/zone/pt_LU.txt index c20ea4b..19ca221 100644 --- a/source/data/zone/pt_LU.txt +++ b/source/data/zone/pt_LU.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_LU{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/zone/pt_MO.txt b/source/data/zone/pt_MO.txt index 0e6ba71..69daafe 100644 --- a/source/data/zone/pt_MO.txt +++ b/source/data/zone/pt_MO.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_MO{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} zoneStrings{ "meta:Azores"{ sd{"∅∅∅"} diff --git a/source/data/zone/pt_MZ.txt b/source/data/zone/pt_MZ.txt index c7d813d..75f3b72 100644 --- a/source/data/zone/pt_MZ.txt +++ b/source/data/zone/pt_MZ.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_MZ{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} zoneStrings{ "meta:Azores"{ sd{"∅∅∅"} diff --git a/source/data/zone/pt_PT.txt b/source/data/zone/pt_PT.txt index 7689388..3b99a04 100644 --- a/source/data/zone/pt_PT.txt +++ b/source/data/zone/pt_PT.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License pt_PT{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Addis_Ababa"{ ec{"Adis-Abeba"} @@ -9,9 +9,6 @@ pt_PT{ "Africa:Bamako"{ ec{"Bamaco"} } - "Africa:Ceuta"{ - ec{"Ceuta"} - } "Africa:Dakar"{ ec{"Dacar"} } @@ -42,9 +39,6 @@ pt_PT{ "Africa:Tunis"{ ec{"Tunes"} } - "America:Anguilla"{ - ec{"Anguila"} - } "America:Araguaina"{ ec{"Araguaina"} } @@ -69,6 +63,9 @@ pt_PT{ "America:Dominica"{ ec{"Domínica"} } + "America:El_Salvador"{ + ec{"Salvador"} + } "America:Montevideo"{ ec{"Montevideu"} } @@ -90,47 +87,11 @@ pt_PT{ "America:St_Thomas"{ ec{"St. Thomas"} } - "Antarctica:Casey"{ - ec{"Casey"} - } - "Antarctica:Davis"{ - ec{"Davis"} - } "Antarctica:DumontDUrville"{ ec{"Dumont d’Urville"} } - "Antarctica:Macquarie"{ - ec{"Macquarie"} - } - "Antarctica:Mawson"{ - ec{"Mawson"} - } - "Antarctica:McMurdo"{ - ec{"McMurdo"} - } - "Antarctica:Palmer"{ - ec{"Palmer"} - } - "Antarctica:Rothera"{ - ec{"Rothera"} - } - "Antarctica:Syowa"{ - ec{"Syowa"} - } - "Antarctica:Troll"{ - ec{"Troll"} - } - "Antarctica:Vostok"{ - ec{"Vostok"} - } - "Arctic:Longyearbyen"{ - ec{"Longyearbyen"} - } - "Asia:Almaty"{ - ec{"Almaty"} - } - "Asia:Anadyr"{ - ec{"Anadyr"} + "Asia:Aden"{ + ec{"Adem"} } "Asia:Aqtau"{ ec{"Aqtau"} @@ -144,113 +105,26 @@ pt_PT{ "Asia:Bahrain"{ ec{"Barém"} } - "Asia:Baku"{ - ec{"Baku"} - } "Asia:Bangkok"{ ec{"Banguecoque"} } - "Asia:Bishkek"{ - ec{"Bishkek"} - } - "Asia:Brunei"{ - ec{"Brunei"} - } - "Asia:Calcutta"{ - ec{"Calcutá"} - } - "Asia:Chita"{ - ec{"Chita"} - } - "Asia:Choibalsan"{ - ec{"Choibalsan"} - } - "Asia:Colombo"{ - ec{"Colombo"} - } "Asia:Dhaka"{ ec{"Daca"} } - "Asia:Dili"{ - ec{"Dili"} - } - "Asia:Dubai"{ - ec{"Dubai"} - } - "Asia:Gaza"{ - ec{"Gaza"} - } - "Asia:Hebron"{ - ec{"Hebron"} - } - "Asia:Hong_Kong"{ - ec{"Hong Kong"} - } - "Asia:Hovd"{ - ec{"Hovd"} + "Asia:Karachi"{ + ec{"Carachi"} } - "Asia:Irkutsk"{ - ec{"Irkutsk"} - } - "Asia:Jayapura"{ - ec{"Jayapura"} - } - "Asia:Kabul"{ - ec{"Cabul"} - } - "Asia:Kamchatka"{ - ec{"Kamchatka"} - } - "Asia:Khandyga"{ - ec{"Khandyga"} - } - "Asia:Krasnoyarsk"{ - ec{"Krasnoyarsk"} - } - "Asia:Kuala_Lumpur"{ - ec{"Kuala Lumpur"} - } - "Asia:Kuching"{ - ec{"Kuching"} + "Asia:Katmandu"{ + ec{"Catmandu"} } "Asia:Kuwait"{ ec{"Koweit"} } - "Asia:Magadan"{ - ec{"Magadan"} - } "Asia:Makassar"{ ec{"Macassar"} } - "Asia:Manila"{ - ec{"Manila"} - } - "Asia:Novokuznetsk"{ - ec{"Novokuznetsk"} - } - "Asia:Novosibirsk"{ - ec{"Novosibirsk"} - } - "Asia:Omsk"{ - ec{"Omsk"} - } - "Asia:Oral"{ - ec{"Oral"} - } - "Asia:Phnom_Penh"{ - ec{"Phnom Penh"} - } - "Asia:Pontianak"{ - ec{"Pontianak"} - } - "Asia:Pyongyang"{ - ec{"Pyongyang"} - } - "Asia:Qatar"{ - ec{"Catar"} - } - "Asia:Qyzylorda"{ - ec{"Qyzylorda"} + "Asia:Qostanay"{ + ec{"Kostanay"} } "Asia:Rangoon"{ ec{"Yangon"} @@ -258,38 +132,14 @@ pt_PT{ "Asia:Saigon"{ ec{"Cidade de Ho Chi Minh"} } - "Asia:Singapore"{ - ec{"Singapura"} - } - "Asia:Srednekolymsk"{ - ec{"Srednekolymsk"} - } "Asia:Taipei"{ ec{"Taipé"} } - "Asia:Tashkent"{ - ec{"Tashkent"} - } - "Asia:Tbilisi"{ - ec{"Tbilisi"} - } "Asia:Tehran"{ ec{"Teerão"} } - "Asia:Urumqi"{ - ec{"Urumqi"} - } - "Asia:Ust-Nera"{ - ec{"Ust-Nera"} - } - "Asia:Vientiane"{ - ec{"Vientiane"} - } - "Asia:Vladivostok"{ - ec{"Vladivostok"} - } - "Asia:Yakutsk"{ - ec{"Yakutsk"} + "Asia:Thimphu"{ + ec{"Timphu"} } "Asia:Yerevan"{ ec{"Erevan"} @@ -300,60 +150,18 @@ pt_PT{ "Atlantic:Reykjavik"{ ec{"Reiquiavique"} } - "Australia:Adelaide"{ - ec{"Adelaide"} - } - "Australia:Brisbane"{ - ec{"Brisbane"} - } - "Australia:Broken_Hill"{ - ec{"Broken Hill"} - } - "Australia:Currie"{ - ec{"Currie"} - } - "Australia:Darwin"{ - ec{"Darwin"} - } - "Australia:Eucla"{ - ec{"Eucla"} - } - "Australia:Hobart"{ - ec{"Hobart"} - } - "Australia:Lindeman"{ - ec{"Lindeman"} - } "Australia:Lord_Howe"{ ec{"Ilha de Lord Howe"} } - "Australia:Melbourne"{ - ec{"Melbourne"} - } - "Australia:Perth"{ - ec{"Perth"} - } - "Australia:Sydney"{ - ec{"Sydney"} - } "Etc:UTC"{ ls{"Hora Coordenada Universal"} } "Europe:Amsterdam"{ ec{"Amesterdão"} } - "Europe:Andorra"{ - ec{"Andorra"} - } - "Europe:Bratislava"{ - ec{"Bratislava"} - } "Europe:Busingen"{ ec{"Busingen"} } - "Europe:Chisinau"{ - ec{"Chisinau"} - } "Europe:Copenhagen"{ ec{"Copenhaga"} } @@ -372,72 +180,27 @@ pt_PT{ "Europe:Madrid"{ ec{"Madrid"} } - "Europe:Mariehamn"{ - ec{"Mariehamn"} - } - "Europe:Minsk"{ - ec{"Minsk"} - } "Europe:Monaco"{ ec{"Mónaco"} } "Europe:Moscow"{ ec{"Moscovo"} } - "Europe:Podgorica"{ - ec{"Podgorica"} - } - "Europe:Samara"{ - ec{"Samara"} - } "Europe:San_Marino"{ ec{"São Marinho"} } - "Europe:Simferopol"{ - ec{"Simferopol"} - } - "Europe:Skopje"{ - ec{"Skopje"} - } - "Europe:Tallinn"{ - ec{"Tallinn"} - } - "Europe:Uzhgorod"{ - ec{"Uzhgorod"} - } - "Europe:Vaduz"{ - ec{"Vaduz"} - } - "Europe:Vilnius"{ - ec{"Vilnius"} - } - "Indian:Chagos"{ - ec{"Chagos"} - } "Indian:Christmas"{ ec{"Ilha do Natal"} } "Indian:Cocos"{ ec{"Ilhas Cocos"} } - "Indian:Kerguelen"{ - ec{"Kerguelen"} - } "Indian:Mahe"{ ec{"Mahe"} } "Indian:Mauritius"{ ec{"Maurícia"} } - "Pacific:Apia"{ - ec{"Apia"} - } - "Pacific:Auckland"{ - ec{"Auckland"} - } - "Pacific:Bougainville"{ - ec{"Bougainville"} - } "Pacific:Chatham"{ ec{"Chatham"} } @@ -447,93 +210,18 @@ pt_PT{ "Pacific:Efate"{ ec{"Efate"} } - "Pacific:Enderbury"{ - ec{"Enderbury"} - } - "Pacific:Fakaofo"{ - ec{"Fakaofo"} - } - "Pacific:Fiji"{ - ec{"Fiji"} - } - "Pacific:Funafuti"{ - ec{"Funafuti"} - } - "Pacific:Gambier"{ - ec{"Gambier"} - } - "Pacific:Guadalcanal"{ - ec{"Guadalcanal"} - } - "Pacific:Guam"{ - ec{"Guam"} - } - "Pacific:Johnston"{ - ec{"Johnston"} - } - "Pacific:Kiritimati"{ - ec{"Kiritimati"} - } - "Pacific:Kosrae"{ - ec{"Kosrae"} - } - "Pacific:Kwajalein"{ - ec{"Kwajalein"} - } - "Pacific:Majuro"{ - ec{"Majuro"} - } - "Pacific:Marquesas"{ - ec{"Marquesas"} - } - "Pacific:Midway"{ - ec{"Midway"} - } - "Pacific:Nauru"{ - ec{"Nauru"} - } - "Pacific:Niue"{ - ec{"Niue"} - } - "Pacific:Norfolk"{ - ec{"Norfolk"} - } - "Pacific:Pago_Pago"{ - ec{"Pago Pago"} - } - "Pacific:Palau"{ - ec{"Palau"} - } "Pacific:Pitcairn"{ ec{"Ilhas Pitcairn"} } "Pacific:Ponape"{ ec{"Pohnpei"} } - "Pacific:Port_Moresby"{ - ec{"Port Moresby"} - } - "Pacific:Rarotonga"{ - ec{"Rarotonga"} - } - "Pacific:Saipan"{ - ec{"Saipan"} - } "Pacific:Tarawa"{ ec{"Tarawa"} } - "Pacific:Tongatapu"{ - ec{"Tongatapu"} - } "Pacific:Truk"{ ec{"Chuuk"} } - "Pacific:Wake"{ - ec{"Wake"} - } - "Pacific:Wallis"{ - ec{"Wallis"} - } "meta:Acre"{ ld{"Hora de verão do Acre"} lg{"Hora do Acre"} @@ -578,24 +266,24 @@ pt_PT{ ss{"∅∅∅"} } "meta:America_Central"{ - ld{"Hora de verão Central"} - lg{"Hora Central"} - ls{"Hora padrão Central"} + ld{"Hora de verão central norte-americana"} + lg{"Hora central norte-americana"} + ls{"Hora padrão central norte-americana"} } "meta:America_Eastern"{ - ld{"Hora de verão Oriental"} - lg{"Hora Oriental"} - ls{"Hora padrão Oriental"} + ld{"Hora de verão oriental norte-americana"} + lg{"Hora oriental norte-americana"} + ls{"Hora padrão oriental norte-americana"} } "meta:America_Mountain"{ - ld{"Hora de verão da Montanha"} - lg{"Hora da Montanha"} - ls{"Hora padrão da Montanha"} + ld{"Hora de verão de montanha norte-americana"} + lg{"Hora de montanha norte-americana"} + ls{"Hora padrão de montanha norte-americana"} } "meta:America_Pacific"{ - ld{"Hora de verão do Pacífico"} - lg{"Hora do Pacífico"} - ls{"Hora padrão do Pacífico"} + ld{"Hora de verão do Pacífico norte-americana"} + lg{"Hora do Pacífico norte-americana"} + ls{"Hora padrão do Pacífico norte-americana"} } "meta:Anadyr"{ ld{"Hora de verão de Anadyr"} diff --git a/source/data/zone/pt_ST.txt b/source/data/zone/pt_ST.txt index fb7540b..e622c42 100644 --- a/source/data/zone/pt_ST.txt +++ b/source/data/zone/pt_ST.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_ST{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} zoneStrings{ "meta:Azores"{ sd{"∅∅∅"} diff --git a/source/data/zone/pt_TL.txt b/source/data/zone/pt_TL.txt index 58bee7c..04a88e7 100644 --- a/source/data/zone/pt_TL.txt +++ b/source/data/zone/pt_TL.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License pt_TL{ %%Parent{"pt_PT"} - Version{"2.1.47.71"} + Version{"36"} zoneStrings{ "meta:Azores"{ sd{"∅∅∅"} diff --git a/source/data/zone/qu.txt b/source/data/zone/qu.txt index dc3931f..611ffae 100644 --- a/source/data/zone/qu.txt +++ b/source/data/zone/qu.txt @@ -1,19 +1,19 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License qu{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ - ec{"Abidjan"} + ec{"Abiyán"} } "Africa:Accra"{ - ec{"Accra"} + ec{"Acra"} } "Africa:Addis_Ababa"{ - ec{"Addis Ababa"} + ec{"Adís Abeba"} } "Africa:Algiers"{ - ec{"Algiers"} + ec{"Argel"} } "Africa:Asmera"{ ec{"Asmara"} @@ -40,7 +40,7 @@ qu{ ec{"Bujumbura"} } "Africa:Cairo"{ - ec{"Cairo"} + ec{"El Cairo"} } "Africa:Casablanca"{ ec{"Casablanca"} @@ -58,10 +58,10 @@ qu{ ec{"Dar es Salaam"} } "Africa:Djibouti"{ - ec{"Djibouti"} + ec{"Yibuti"} } "Africa:Douala"{ - ec{"Douala"} + ec{"Duala"} } "Africa:El_Aaiun"{ ec{"El Aaiun"} @@ -76,7 +76,7 @@ qu{ ec{"Harare"} } "Africa:Johannesburg"{ - ec{"Johannesburg"} + ec{"Johannesburgo"} } "Africa:Juba"{ ec{"Juba"} @@ -85,7 +85,7 @@ qu{ ec{"Kampala"} } "Africa:Khartoum"{ - ec{"Khartoum"} + ec{"Jartum"} } "Africa:Kigali"{ ec{"Kigali"} @@ -124,7 +124,7 @@ qu{ ec{"Mbabane"} } "Africa:Mogadishu"{ - ec{"Mogadishu"} + ec{"Mogadiscio"} } "Africa:Monrovia"{ ec{"Monrovia"} @@ -154,7 +154,7 @@ qu{ ec{"Tripoli"} } "Africa:Tunis"{ - ec{"Tunis"} + ec{"Tunez"} } "Africa:Windhoek"{ ec{"Windhoek"} @@ -166,7 +166,7 @@ qu{ ec{"Anchorage"} } "America:Anguilla"{ - ec{"Anguilla"} + ec{"Anguila"} } "America:Antigua"{ ec{"Antigua"} @@ -214,7 +214,7 @@ qu{ ec{"Belem"} } "America:Belize"{ - ec{"Belize"} + ec{"Belice"} } "America:Blanc-Sablon"{ ec{"Blanc-Sablon"} @@ -274,7 +274,7 @@ qu{ ec{"Cuiaba"} } "America:Curacao"{ - ec{"Curacao"} + ec{"Curazao"} } "America:Danmarkshavn"{ ec{"Danmarkshavn"} @@ -322,10 +322,10 @@ qu{ ec{"Grand Turk"} } "America:Grenada"{ - ec{"Grenada"} + ec{"Granada"} } "America:Guadeloupe"{ - ec{"Guadeloupe"} + ec{"Guadalupe"} } "America:Guatemala"{ ec{"Guatemala"} @@ -340,7 +340,7 @@ qu{ ec{"Halifax"} } "America:Havana"{ - ec{"Havana"} + ec{"La Habana"} } "America:Hermosillo"{ ec{"Hermosillo"} @@ -418,7 +418,7 @@ qu{ ec{"Marigot"} } "America:Martinique"{ - ec{"Martinique"} + ec{"Martinica"} } "America:Matamoros"{ ec{"Matamoros"} @@ -439,7 +439,7 @@ qu{ ec{"Metlakatla"} } "America:Mexico_City"{ - ec{"Mexico City"} + ec{"Ciudad de Mexico"} } "America:Miquelon"{ ec{"Miquelon"} @@ -496,10 +496,10 @@ qu{ ec{"Phoenix"} } "America:Port-au-Prince"{ - ec{"Port-au-Prince"} + ec{"Puerto Príncipe"} } "America:Port_of_Spain"{ - ec{"Port of Spain"} + ec{"Puerto España"} } "America:Porto_Velho"{ ec{"Porto Velho"} @@ -547,22 +547,22 @@ qu{ ec{"Sitka"} } "America:St_Barthelemy"{ - ec{"St. Barthelemy"} + ec{"San Bartolomé"} } "America:St_Johns"{ - ec{"St. John’s"} + ec{"San Juan de Terranova"} } "America:St_Kitts"{ - ec{"St. Kitts"} + ec{"San Cristobal"} } "America:St_Lucia"{ - ec{"St. Lucia"} + ec{"Santa Lucia"} } "America:St_Thomas"{ - ec{"St. Thomas"} + ec{"Santo Tomas"} } "America:St_Vincent"{ - ec{"St. Vincent"} + ec{"San Vicente"} } "America:Swift_Current"{ ec{"Swift Current"} @@ -643,28 +643,28 @@ qu{ ec{"Almaty"} } "Asia:Amman"{ - ec{"Amman"} + ec{"Amán"} } "Asia:Anadyr"{ ec{"Anadyr"} } "Asia:Aqtau"{ - ec{"Aqtau"} + ec{"Aktau"} } "Asia:Aqtobe"{ - ec{"Aqtobe"} + ec{"Aktobe"} } "Asia:Ashgabat"{ - ec{"Ashgabat"} + ec{"Asjabad"} } "Asia:Atyrau"{ ec{"Atyrau"} } "Asia:Baghdad"{ - ec{"Baghdad"} + ec{"Bagdad"} } "Asia:Bahrain"{ - ec{"Bahrain"} + ec{"Baréin"} } "Asia:Baku"{ ec{"Baku"} @@ -697,7 +697,7 @@ qu{ ec{"Colombo"} } "Asia:Damascus"{ - ec{"Damascus"} + ec{"Damasco"} } "Asia:Dhaka"{ ec{"Dhaka"} @@ -709,7 +709,7 @@ qu{ ec{"Dubai"} } "Asia:Dushanbe"{ - ec{"Dushanbe"} + ec{"Dusambé"} } "Asia:Famagusta"{ ec{"Famagusta"} @@ -730,7 +730,7 @@ qu{ ec{"Irkutsk"} } "Asia:Jakarta"{ - ec{"Jakarta"} + ec{"Yakarta"} } "Asia:Jayapura"{ ec{"Jayapura"} @@ -748,7 +748,7 @@ qu{ ec{"Karachi"} } "Asia:Katmandu"{ - ec{"Kathmandu"} + ec{"Katmandú"} } "Asia:Khandyga"{ ec{"Khandyga"} @@ -766,19 +766,19 @@ qu{ ec{"Kuwait"} } "Asia:Macau"{ - ec{"Macau"} + ec{"Macao"} } "Asia:Magadan"{ ec{"Magadan"} } "Asia:Makassar"{ - ec{"Makassar"} + ec{"Macasar"} } "Asia:Manila"{ ec{"Manila"} } "Asia:Muscat"{ - ec{"Muscat"} + ec{"Mascate"} } "Asia:Nicosia"{ ec{"Nicosia"} @@ -802,19 +802,22 @@ qu{ ec{"Pontianak"} } "Asia:Pyongyang"{ - ec{"Pyongyang"} + ec{"Pionyang"} } "Asia:Qatar"{ - ec{"Qatar"} + ec{"Catar"} + } + "Asia:Qostanay"{ + ec{"Kostanái"} } "Asia:Qyzylorda"{ - ec{"Qyzylorda"} + ec{"Kyzylorda"} } "Asia:Rangoon"{ - ec{"Rangoon"} + ec{"Rangún"} } "Asia:Riyadh"{ - ec{"Riyadh"} + ec{"Riad"} } "Asia:Saigon"{ ec{"Ho Chi Minh"} @@ -823,16 +826,16 @@ qu{ ec{"Sakhalin"} } "Asia:Samarkand"{ - ec{"Samarkand"} + ec{"Samarcanda"} } "Asia:Seoul"{ - ec{"Seoul"} + ec{"Seúl"} } "Asia:Shanghai"{ - ec{"Shanghai"} + ec{"Shangái"} } "Asia:Singapore"{ - ec{"Singapore"} + ec{"Singapur"} } "Asia:Srednekolymsk"{ ec{"Srednekolymsk"} @@ -841,25 +844,25 @@ qu{ ec{"Taipei"} } "Asia:Tashkent"{ - ec{"Tashkent"} + ec{"Taskent"} } "Asia:Tbilisi"{ - ec{"Tbilisi"} + ec{"Tiflis"} } "Asia:Tehran"{ - ec{"Tehran"} + ec{"Teherán"} } "Asia:Thimphu"{ ec{"Thimphu"} } "Asia:Tokyo"{ - ec{"Tokyo"} + ec{"Tokio"} } "Asia:Tomsk"{ ec{"Tomsk"} } "Asia:Ulaanbaatar"{ - ec{"Ulaanbaatar"} + ec{"Ulan Bator"} } "Asia:Urumqi"{ ec{"Urumqi"} @@ -877,10 +880,10 @@ qu{ ec{"Yakutsk"} } "Asia:Yekaterinburg"{ - ec{"Yekaterinburg"} + ec{"Ekaterinburgo"} } "Asia:Yerevan"{ - ec{"Yerevan"} + ec{"Ereván"} } "Atlantic:Azores"{ ec{"Azores"} @@ -889,10 +892,10 @@ qu{ ec{"Bermuda"} } "Atlantic:Canary"{ - ec{"Canary"} + ec{"Canarias"} } "Atlantic:Cape_Verde"{ - ec{"Cape Verde"} + ec{"Cabo Verde"} } "Atlantic:Faeroe"{ ec{"Faroe"} @@ -904,16 +907,16 @@ qu{ ec{"Reykjavik"} } "Atlantic:South_Georgia"{ - ec{"South Georgia"} + ec{"Georgia del Sur"} } "Atlantic:St_Helena"{ - ec{"St. Helena"} + ec{"Santa Elena"} } "Atlantic:Stanley"{ ec{"Stanley"} } "Australia:Adelaide"{ - ec{"Adelaide"} + ec{"Adelaida"} } "Australia:Brisbane"{ ec{"Brisbane"} @@ -946,7 +949,13 @@ qu{ ec{"Perth"} } "Australia:Sydney"{ - ec{"Sydney"} + ec{"Sidney"} + } + "Etc:UTC"{ + ls{"Tiqsimuyuntin Tupachisqa Hora"} + } + "Etc:Unknown"{ + ec{"Mana risisqa llaqta"} } "Europe:Amsterdam"{ ec{"Amsterdam"} @@ -970,10 +979,10 @@ qu{ ec{"Bratislava"} } "Europe:Brussels"{ - ec{"Brussels"} + ec{"Bruselas"} } "Europe:Bucharest"{ - ec{"Bucharest"} + ec{"Bucarest"} } "Europe:Budapest"{ ec{"Budapest"} @@ -985,10 +994,11 @@ qu{ ec{"Chisinau"} } "Europe:Copenhagen"{ - ec{"Copenhagen"} + ec{"Copenhague"} } "Europe:Dublin"{ ec{"Dublin"} + ld{"Hora Estandar de Irlanda"} } "Europe:Gibraltar"{ ec{"Gibraltar"} @@ -1000,16 +1010,16 @@ qu{ ec{"Helsinki"} } "Europe:Isle_of_Man"{ - ec{"Isle of Man"} + ec{"Isla de Man"} } "Europe:Istanbul"{ - ec{"Istanbul"} + ec{"Estambul"} } "Europe:Jersey"{ ec{"Jersey"} } "Europe:Kaliningrad"{ - ec{"Kaliningrad"} + ec{"Kaliningrado"} } "Europe:Kiev"{ ec{"Kiev"} @@ -1018,16 +1028,17 @@ qu{ ec{"Kirov"} } "Europe:Lisbon"{ - ec{"Lisbon"} + ec{"Lisboa"} } "Europe:Ljubljana"{ - ec{"Ljubljana"} + ec{"Liubliana"} } "Europe:London"{ - ec{"London"} + ec{"Londres"} + ld{"Hora de Verano Británico"} } "Europe:Luxembourg"{ - ec{"Luxembourg"} + ec{"Luxemburgo"} } "Europe:Madrid"{ ec{"Madrid"} @@ -1045,7 +1056,7 @@ qu{ ec{"Monaco"} } "Europe:Moscow"{ - ec{"Moscow"} + ec{"Moscú"} } "Europe:Oslo"{ ec{"Oslo"} @@ -1057,13 +1068,13 @@ qu{ ec{"Podgorica"} } "Europe:Prague"{ - ec{"Prague"} + ec{"Praga"} } "Europe:Riga"{ ec{"Riga"} } "Europe:Rome"{ - ec{"Rome"} + ec{"Roma"} } "Europe:Samara"{ ec{"Samara"} @@ -1087,13 +1098,13 @@ qu{ ec{"Sofia"} } "Europe:Stockholm"{ - ec{"Stockholm"} + ec{"Estocolmo"} } "Europe:Tallinn"{ ec{"Tallinn"} } "Europe:Tirane"{ - ec{"Tirane"} + ec{"Tirana"} } "Europe:Ulyanovsk"{ ec{"Ulyanovsk"} @@ -1105,19 +1116,19 @@ qu{ ec{"Vaduz"} } "Europe:Vatican"{ - ec{"Vatican"} + ec{"El Vaticano"} } "Europe:Vienna"{ - ec{"Vienna"} + ec{"Viena"} } "Europe:Vilnius"{ ec{"Vilnius"} } "Europe:Volgograd"{ - ec{"Volgograd"} + ec{"Volgogrado"} } "Europe:Warsaw"{ - ec{"Warsaw"} + ec{"Varsovia"} } "Europe:Zagreb"{ ec{"Zagreb"} @@ -1150,7 +1161,7 @@ qu{ ec{"Mahe"} } "Indian:Maldives"{ - ec{"Maldives"} + ec{"Maldivas"} } "Indian:Mauritius"{ ec{"Mauritius"} @@ -1206,6 +1217,9 @@ qu{ "Pacific:Honolulu"{ ec{"Honolulu"} } + "Pacific:Johnston"{ + ec{"Johnston"} + } "Pacific:Kiritimati"{ ec{"Kiritimati"} } @@ -1276,225 +1290,596 @@ qu{ ec{"Wallis"} } "meta:Afghanistan"{ - ls{"Afghanistan Time"} + ls{"Hora de Afganistán"} + } + "meta:Africa_Central"{ + ls{"Hora de Africa Central"} + } + "meta:Africa_Eastern"{ + ls{"Hora de Africa Oriental"} + } + "meta:Africa_Southern"{ + ls{"Hora de Sudafrica"} + } + "meta:Africa_Western"{ + ld{"Hora Estandar de Verano de Africa Occidental"} + lg{"Hora de Africa Occidental"} + ls{"Hora Estandar de Africa Occidental"} + } + "meta:Alaska"{ + ld{"Hora de Verano de Alaska"} + lg{"Hora de Alaska"} + ls{"Hora Estandar de Alaska"} + } + "meta:Amazon"{ + ld{"Hora de Verano de Amazonas"} + lg{"Hora de Amazonas"} + ls{"Hora Estandar de Amazonas"} + } + "meta:America_Central"{ + ld{"Hora Central de Verano"} + lg{"Hora Central"} + ls{"Estandard Hora Central"} + } + "meta:America_Eastern"{ + ld{"Hora de Verano del Este"} + lg{"Hora del Este"} + ls{"Hora Estandar del Este"} + } + "meta:America_Mountain"{ + ld{"Hora de Verano de la Montaña"} + lg{"Hora de la Montaña"} + ls{"Hora Estandar de la Montaña"} + } + "meta:America_Pacific"{ + ld{"Hora de Verano del Pacífico"} + lg{"Hora del Pacífico"} + ls{"Hora Estandar del Pacífico"} + } + "meta:Apia"{ + ld{"Hora de Verano de Apia"} + lg{"Hora de Apia"} + ls{"Hora Estandar de Apia"} + } + "meta:Arabian"{ + ld{"Hora de Verano de Arabia"} + lg{"Hora de Arabia"} + ls{"Hora Estandar de Arabia"} } "meta:Argentina"{ - ld{"Argentina Summer Time"} - lg{"Argentina Time"} - ls{"Argentina Standard Time"} + ld{"Hora de Verano de Argentina"} + lg{"Hora de Argentina"} + ls{"Hora Estandar de Argentina"} + } + "meta:Argentina_Western"{ + ld{"Hora de Verano del Oeste de Argentina"} + lg{"Hora del Oeste de Argentina"} + ls{"Hora Estandar del Oeste de Argentina"} } "meta:Armenia"{ - ld{"Armenia Summer Time"} - lg{"Armenia Time"} - ls{"Armenia Standard Time"} + ld{"Hora de Verano de Armenia"} + lg{"Hora de Armenia"} + ls{"Hora Estandar de Armenia"} + } + "meta:Atlantic"{ + ld{"Hora De Verano del Atlántico"} + lg{"Hora del Atlántico"} + ls{"Hora Estandar del Atlántico"} + } + "meta:Australia_Central"{ + ld{"Hora de Verano de Australia Central"} + lg{"Hora de Australia Central"} + ls{"Hora Estandar de Australia Central"} + } + "meta:Australia_CentralWestern"{ + ld{"Hora de Verano de Australia Central Occidental"} + lg{"Hora de Australia Central Occidental"} + ls{"Hora Estandar de Australia Central Occidental"} + } + "meta:Australia_Eastern"{ + ld{"Hora de Verano de Australia Oriental"} + lg{"Hora de Australia Oriental"} + ls{"Hora Estandar de Australia Oriental"} + } + "meta:Australia_Western"{ + ld{"Hora de Verano de Australia Occidental"} + lg{"Hora de Australia Occidental"} + ls{"Hora Estandar de Australia Occidental"} } "meta:Azerbaijan"{ - ld{"Azerbaijan Summer Time"} - lg{"Azerbaijan Time"} - ls{"Azerbaijan Standard Time"} + ld{"Hora de Verano de Azerbaiyán"} + lg{"Hora de Azerbaiyán"} + ls{"Hora Estandar de Azerbaiyán"} + } + "meta:Azores"{ + ld{"Hora de Verano de las Azores"} + lg{"Hora de las Azores"} + ls{"Hora Estandar de las Azores"} } "meta:Bangladesh"{ - ld{"Bangladesh Summer Time"} - lg{"Bangladesh Time"} - ls{"Bangladesh Standard Time"} + ld{"Hora de Verano de Bangladesh"} + lg{"Hora de Bangladesh"} + ls{"Hora Estandar de Bangladesh"} } "meta:Bhutan"{ - ls{"Bhutan Time"} + ls{"Hora de Bután"} } "meta:Bolivia"{ ls{"Bolivia Time"} } + "meta:Brasilia"{ + ld{"Hora de Verano de Brasilia"} + lg{"Hora de Brasilia"} + ls{"Hora Estandar de Brasilia"} + } "meta:Brunei"{ - ls{"Brunei Darussalam Time"} + ls{"Hora de Brunei Darussalam"} + } + "meta:Cape_Verde"{ + ld{"Hora de Verano de Cabo Verde"} + lg{"Hora de Cabo Verde"} + ls{"Hora Estandar de Cabo Verde"} + } + "meta:Chamorro"{ + ls{"Hora Estandar de Chamorro"} + } + "meta:Chatham"{ + ld{"Hora de Verano de Chatham"} + lg{"Hora de Chatham"} + ls{"Hora Estandar de Chatham"} } "meta:Chile"{ - ld{"Chile Summer Time"} - lg{"Chile Time"} - ls{"Chile Standard Time"} + ld{"Hora de Verano de Chile"} + lg{"Hora de Chile"} + ls{"Hora Estandar de Chile"} } "meta:China"{ - ld{"China Daylight Time"} - lg{"China Time"} - ls{"China Standard Time"} + ld{"Hora de Verano de China"} + lg{"Hora de China"} + ls{"Hora Estandar de China"} + } + "meta:Choibalsan"{ + ld{"Hora de Verano de Choybalsan"} + lg{"Hora de Choybalsan"} + ls{"Hora Estandar de Choybalsan"} + } + "meta:Christmas"{ + ls{"Hora de Isla Christmas"} + } + "meta:Cocos"{ + ls{"Hora de Islas Cocos"} } "meta:Colombia"{ - ld{"Colombia Summer Time"} - lg{"Colombia Time"} - ls{"Colombia Standard Time"} + ld{"Hora de Verano de Colombia"} + lg{"Hora de Colombia"} + ls{"Hora Estandar de Colombia"} } "meta:Cook"{ - ld{"Cook Islands Half Summer Time"} - lg{"Cook Islands Time"} - ls{"Cook Islands Standard Time"} + ld{"Hora de Verano de Isla Cocos"} + lg{"Hora de Islas Cook"} + ls{"Hora Estandar de Isla Cocos"} } "meta:Cuba"{ - ld{"Cuba Daylight Time"} - lg{"Cuba Time"} - ls{"Cuba Standard Time"} + ld{"Hora de Verano de Cuba"} + lg{"Hora de Cuba"} + ls{"Hora Estandar de Cuba"} + } + "meta:Davis"{ + ls{"Hora de Davis"} + } + "meta:DumontDUrville"{ + ls{"Hora de Dumont-d’Urville"} + } + "meta:East_Timor"{ + ls{"Hora de Timor Oriental"} + } + "meta:Easter"{ + ld{"Hora de Verano de Isla de Pascua"} + lg{"Hora de Isla de Pascua"} + ls{"Hora Estandar de Isla de Pascua"} } "meta:Ecuador"{ - ls{"Ecuador Time"} + ls{"Hora de Ecuador"} + } + "meta:Europe_Central"{ + ld{"Hora de Verano de Europa Central"} + lg{"Hora de Europa Central"} + ls{"Hora Estandar de Europa Central"} + } + "meta:Europe_Eastern"{ + ld{"Hora de Verano de Europa Oriental"} + lg{"Hora de Europa Oriental"} + ls{"Hora Estandar de Europa Oriental"} + } + "meta:Europe_Further_Eastern"{ + ls{"Hora de Verano más Oriental de Europa"} + } + "meta:Europe_Western"{ + ld{"Hora de Verano de Europa Occidental"} + lg{"Hora de Europa Occidental"} + ls{"Hora Estandar de Europa Occidental"} } "meta:Falkland"{ - ld{"Falkland Islands Summer Time"} - lg{"Falkland Islands Time"} - ls{"Falkland Islands Standard Time"} + ld{"Hora de Verano de Islas Malvinas"} + lg{"Hora de Islas Malvinas"} + ls{"Hora Estandar de Islas Malvinas"} } "meta:Fiji"{ - ld{"Fiji Summer Time"} - lg{"Fiji Time"} - ls{"Fiji Standard Time"} + ld{"Hora de Verano de Fiji"} + lg{"Hora de Fiji"} + ls{"Hora Estandar de Fiji"} } "meta:French_Guiana"{ - ls{"French Guiana Time"} + ls{"Hora de Guayana Francesa"} + } + "meta:French_Southern"{ + ls{"Hora Francés meridional y antártico"} + } + "meta:GMT"{ + ls{"Hora del Meridiano de Greenwich"} + } + "meta:Galapagos"{ + ls{"Hora de Islas Galápagos"} + } + "meta:Gambier"{ + ls{"Hora de Gambier"} } "meta:Georgia"{ - ld{"Georgia Summer Time"} - lg{"Georgia Time"} - ls{"Georgia Standard Time"} + ld{"Hora de Verano de Georgia"} + lg{"Hora de Georgia"} + ls{"Hora Estandar de Georgia"} + } + "meta:Gilbert_Islands"{ + ls{"Hora de Islas Gilbert"} } "meta:Greenland_Eastern"{ - ld{"East Greenland Summer Time"} - lg{"East Greenland Time"} - ls{"East Greenland Standard Time"} + ld{"Hora de Verano de Groenlandia"} + lg{"Hora de Groenlandia"} + ls{"Hora Estandar de Groenlandia"} + } + "meta:Greenland_Western"{ + ld{"Hora de Verano de Groenlandia Occidental"} + lg{"Hora de Groenlandia Occidental"} + ls{"Hora Estandar de Groenlandia Occidental"} + } + "meta:Gulf"{ + ls{"Hora Estandar del Golfo"} + } + "meta:Guyana"{ + ls{"Hora de Guyana"} + } + "meta:Hawaii_Aleutian"{ + ld{"Hora de Verano de Hawai-Aleutiano"} + lg{"Hora de Hawai-Aleutiano"} + ls{"Hora Estandar de Hawai-Aleutiano"} } "meta:Hong_Kong"{ - ld{"Hong Kong Summer Time"} - lg{"Hong Kong Time"} - ls{"Hong Kong Standard Time"} + ld{"Hora de Verano de Hong Kong"} + lg{"Hora de Hong Kong"} + ls{"Hora Estandar de Hong Kong"} + } + "meta:Hovd"{ + ld{"Hora de Verano de Hovd"} + lg{"Hora de Hovd"} + ls{"Hora Estandar de Hovd"} } "meta:India"{ - ls{"India Standard Time"} + ls{"Hora Estandar de India"} + } + "meta:Indian_Ocean"{ + ls{"Hora del Oceano Índico"} + } + "meta:Indochina"{ + ls{"Hora de Indochina"} } "meta:Indonesia_Central"{ - ls{"Central Indonesia Time"} + ls{"Hora de Indonesia Central"} } "meta:Indonesia_Eastern"{ - ls{"Eastern Indonesia Time"} + ls{"Hora de Indonesia Oriental"} + } + "meta:Indonesia_Western"{ + ls{"Hora de Indonesia Occidental"} } "meta:Iran"{ - ld{"Iran Daylight Time"} - lg{"Iran Time"} - ls{"Iran Standard Time"} + ld{"Hora de Verano de Irán"} + lg{"Hora de Irán"} + ls{"Hora Estandar de Irán"} + } + "meta:Irkutsk"{ + ld{"Hora de Verano de Irkutsk"} + lg{"Hora de Irkutsk"} + ls{"Hora Estandar de Irkutsk"} } "meta:Israel"{ - ld{"Israel Daylight Time"} - lg{"Israel Time"} - ls{"Israel Standard Time"} + ld{"Hora de Verano de Israel"} + lg{"Hora de Israel"} + ls{"Hora Estandar de Israel"} } "meta:Japan"{ - ld{"Japan Daylight Time"} - lg{"Japan Time"} - ls{"Japan Standard Time"} + ld{"Hora de Verano de Japón"} + lg{"Hora de Japón"} + ls{"Hora Estandar de Japón"} } "meta:Kazakhstan_Eastern"{ - ls{"East Kazakhstan Time"} + ls{"Hora de Kazajistán Oriental"} } "meta:Kazakhstan_Western"{ - ls{"West Kazakhstan Time"} + ls{"Hora de Kazajistán del Oeste"} + } + "meta:Korea"{ + ld{"Hora de Verano de Corea"} + lg{"Hora de Corea"} + ls{"Hora Estandar de Corea"} + } + "meta:Kosrae"{ + ls{"Hora de Kosrae"} + } + "meta:Krasnoyarsk"{ + ld{"Hora de Verano de Krasnoyarsk"} + lg{"Hora de Krasnoyarsk"} + ls{"Hora Estandar de Krasnoyarsk"} + } + "meta:Kyrgystan"{ + ls{"Hora de Kirguistán"} + } + "meta:Line_Islands"{ + ls{"Hora de Espóradas Ecuatoriales"} + } + "meta:Lord_Howe"{ + ld{"Hora de Verano de Lord Howe"} + lg{"Hora de Lord Howe"} + ls{"Hora Estandar de Lord Howe"} + } + "meta:Macquarie"{ + ls{"Hora de Isla Macquarie"} + } + "meta:Magadan"{ + ld{"Hora de Verano de Magadan"} + lg{"Hora de Magadan"} + ls{"Hora Estandar de Magadan"} } "meta:Malaysia"{ - ls{"Malaysia Time"} + ls{"Hora de Malasia"} } "meta:Maldives"{ - ls{"Maldives Time"} + ls{"Hora de Maldivas"} + } + "meta:Marquesas"{ + ls{"Hora de Marquesas"} + } + "meta:Marshall_Islands"{ + ls{"Hora de Islas Marshall"} } "meta:Mauritius"{ - ld{"Mauritius Summer Time"} - lg{"Mauritius Time"} - ls{"Mauritius Standard Time"} + ld{"Hora de Verano de Mauricio"} + lg{"Hora de Mauricio"} + ls{"Hora Estandar de Mauricio"} + } + "meta:Mawson"{ + ls{"Hora de Mawson"} + } + "meta:Mexico_Northwest"{ + ld{"Hora de Verano del Noroeste de México"} + lg{"Hora Estandar de Verano de México"} + ls{"Hora Estandar del Noroeste de México"} + } + "meta:Mexico_Pacific"{ + ld{"Hora de Verano del Pacífico Mexicano"} + lg{"Hora del Pacífico Mexicano"} + ls{"Hora Estandar del Pacífico Mexicano"} + } + "meta:Mongolia"{ + ld{"Hora de Verano de Ulán Bator"} + lg{"Hora de Ulán Bator"} + ls{"Hora Estandar de Ulán Bator"} + } + "meta:Moscow"{ + ld{"Hora de Verano de Moscú"} + lg{"Hora de Moscú"} + ls{"Hora Estandar de Moscú"} } "meta:Myanmar"{ - ls{"Myanmar Time"} + ls{"Hora de Myanmar"} } "meta:Nauru"{ - ls{"Nauru Time"} + ls{"Hora de Nauru"} } "meta:Nepal"{ - ls{"Nepal Time"} + ls{"Hora de Nepal"} } "meta:New_Caledonia"{ - ld{"New Caledonia Summer Time"} - lg{"New Caledonia Time"} - ls{"New Caledonia Standard Time"} + ld{"Hora de Verano de Nueva Caledonia"} + lg{"Hora de Nueva Caledonia"} + ls{"Hora Estandar de Nueva Caledonia"} } "meta:New_Zealand"{ - ld{"New Zealand Daylight Time"} - lg{"New Zealand Time"} - ls{"New Zealand Standard Time"} + ld{"Hora de Verano de Nueva Zelanda"} + lg{"Hora de Nueva Zelanda"} + ls{"Hora Estandar de Nueva Zelanda"} + } + "meta:Newfoundland"{ + ld{"Hora de Verano de Terranova"} + lg{"Hora de Terranova"} + ls{"Hora Estandar de Terranova"} } "meta:Niue"{ - ls{"Niue Time"} + ls{"Hora de Niue"} + } + "meta:Norfolk"{ + ls{"Hora de la Isla Norfolk"} + } + "meta:Noronha"{ + ld{"Hora de Verano de Fernando de Noronha"} + lg{"Hora de Fernando de Noronha"} + ls{"Hora Estandar de Fernando de Noronha"} + } + "meta:Novosibirsk"{ + ld{"Hora de Verano de Novosibirsk"} + lg{"Hora de Novosibirsk"} + ls{"Hora Estandar de Novosibirsk"} + } + "meta:Omsk"{ + ld{"Hora de Verano de Omsk"} + lg{"Hora de Omsk"} + ls{"Hora Estandar de Omsk"} } "meta:Pakistan"{ - ld{"Pakistan Summer Time"} - lg{"Pakistan Time"} - ls{"Pakistan Standard Time"} + ld{"Hora de Verano de Pakistán"} + lg{"Hora de Pakistán"} + ls{"Hora Estandar de Pakistán"} } "meta:Palau"{ - ls{"Palau Time"} + ls{"Hora de Palau"} } "meta:Papua_New_Guinea"{ - ls{"Papua New Guinea Time"} + ls{"Hora de Papua Nueva Guinea"} } "meta:Paraguay"{ - ld{"Paraguay Summer Time"} - lg{"Paraguay Time"} - ls{"Paraguay Standard Time"} + ld{"Hora de Verano de Paraguay"} + lg{"Hora de Paraguay"} + ls{"Hora Estandar de Paraguay"} } "meta:Peru"{ + ld{"Hora de Verano de Perú"} + lg{"Hora de Perú"} + ls{"Hora Estandar de Perú"} sd{"PEST"} sg{"PET"} ss{"PET"} } + "meta:Philippines"{ + ld{"Hora de Verano de Filipinas"} + lg{"Hora de Filipinas"} + ls{"Hora Estandar de Filipinas"} + } + "meta:Phoenix_Islands"{ + ls{"Hora de Islas Phoenix"} + } + "meta:Pierre_Miquelon"{ + ld{"Hora de Verano de San Pedro y Miquelón"} + lg{"Hora de San Pedro y Miquelón"} + ls{"Hora Estandar de San Pedro y Miquelón"} + } + "meta:Pitcairn"{ + ls{"Hora de Pitcairn"} + } + "meta:Ponape"{ + ls{"Hora de Pohnpei"} + } + "meta:Pyongyang"{ + ls{"Hora de Pionyang"} + } "meta:Reunion"{ - ls{"Reunion Time"} + ls{"Hora de Réunion"} + } + "meta:Rothera"{ + ls{"Hora de Rothera"} + } + "meta:Sakhalin"{ + ld{"Hora de Verano de Sakhalin"} + lg{"Hora de Sakhalin"} + ls{"Hora Estandar de Sakhalin"} } "meta:Samoa"{ - ld{"Samoa Daylight Time"} - lg{"Samoa Time"} - ls{"Samoa Standard Time"} + ld{"Hora de Verano de Samoa"} + lg{"Hora de Samoa"} + ls{"Hora Estandar de Samoa"} } "meta:Seychelles"{ - ls{"Seychelles Time"} + ls{"Hora de Seychelles"} } "meta:Singapore"{ - ls{"Singapore Standard Time"} + ls{"Hora Estandar de Singapur"} } "meta:Solomon"{ - ls{"Solomon Islands Time"} + ls{"Hora de Islas Salomón"} + } + "meta:South_Georgia"{ + ls{"Hora de Georgia del Sur"} + } + "meta:Suriname"{ + ls{"Hora de Surinam"} + } + "meta:Syowa"{ + ls{"Hora de Syowa"} + } + "meta:Tahiti"{ + ls{"Hora de Tahiti"} + } + "meta:Taipei"{ + ld{"Hora de Verano de Taipéi"} + lg{"Hora de Taipéi"} + ls{"Hora Estandar de Taipéi"} } "meta:Tajikistan"{ - ls{"Tajikistan Time"} + ls{"Hora de Tayikistán"} } "meta:Tokelau"{ - ls{"Tokelau Time"} + ls{"Hora de Tokelau"} } "meta:Tonga"{ - ld{"Tonga Summer Time"} - lg{"Tonga Time"} - ls{"Tonga Standard Time"} + ld{"Hora de Verano de Tonga"} + lg{"Hora de Tonga"} + ls{"Hora Estandar de Tonga"} + } + "meta:Truk"{ + ls{"Hora de Chuuk"} } "meta:Turkmenistan"{ - ld{"Turkmenistan Summer Time"} - lg{"Turkmenistan Time"} - ls{"Turkmenistan Standard Time"} + ld{"Hora de Verano de Turkmenistán"} + lg{"Hora de Turkmenistán"} + ls{"Hora Estandar de Turkmenistán"} } "meta:Tuvalu"{ - ls{"Tuvalu Time"} + ls{"Hora de Tuvalu"} + } + "meta:Uruguay"{ + ld{"Hora de Verano de Uruguay"} + lg{"Hora de Uruguay"} + ls{"Hora Estandar de Uruguay"} } "meta:Uzbekistan"{ - ld{"Uzbekistan Summer Time"} - lg{"Uzbekistan Time"} - ls{"Uzbekistan Standard Time"} + ld{"Hora de Verano de Uzbekistán"} + lg{"Hora de Uzbekistán"} + ls{"Hora Estandar de Uzbekistán"} } "meta:Vanuatu"{ - ld{"Vanuatu Summer Time"} - lg{"Vanuatu Time"} - ls{"Vanuatu Standard Time"} + ld{"Hora de Verano de Vanuatu"} + lg{"Hora de Vanuatu"} + ls{"Hora Estandar de Vanuatu"} + } + "meta:Venezuela"{ + ls{"Hora de Venezuela"} + } + "meta:Vladivostok"{ + ld{"Hora de Verano de Vladivostok"} + lg{"Hora de Vladivostok"} + ls{"Hora Estandar de Vladivostok"} + } + "meta:Volgograd"{ + ld{"Hora de Verano de Volgogrado"} + lg{"Hora de Volgogrado"} + ls{"Hora Estandar de Volgogrado"} + } + "meta:Vostok"{ + ls{"Hora de Vostok"} + } + "meta:Wake"{ + ls{"Hora de Isla Wake"} } "meta:Wallis"{ - ls{"Wallis & Futuna Time"} + ls{"Hora de Wallis y Futuna"} + } + "meta:Yakutsk"{ + ld{"Hora de Verano de Yakutsk"} + lg{"Hora de Yakutsk"} + ls{"Hora Estandar de Yakutsk"} + } + "meta:Yekaterinburg"{ + ld{"Hora de Verano de Ekaterinburgo"} + lg{"Hora de Ekaterinburgo"} + ls{"Hora Estandar de Ekaterinburgo"} } fallbackFormat{"{1} ({0})"} gmtFormat{"GMT{0}"} diff --git a/source/data/zone/qu_BO.txt b/source/data/zone/qu_BO.txt index 2ef8b34..acd1454 100644 --- a/source/data/zone/qu_BO.txt +++ b/source/data/zone/qu_BO.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License qu_BO{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "meta:Bolivia"{ ss{"BOT"} diff --git a/source/data/zone/qu_EC.txt b/source/data/zone/qu_EC.txt index 951b1ba..6012f6f 100644 --- a/source/data/zone/qu_EC.txt +++ b/source/data/zone/qu_EC.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License qu_EC{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "meta:Ecuador"{ ss{"ECT"} diff --git a/source/data/zone/rm.txt b/source/data/zone/rm.txt index 2c8a102..3be58c5 100644 --- a/source/data/zone/rm.txt +++ b/source/data/zone/rm.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License rm{ - Version{"2.1.48.4"} + Version{"36"} zoneStrings{ "Africa:Addis_Ababa"{ ec{"Addis Abeba"} diff --git a/source/data/zone/rn.txt b/source/data/zone/rn.txt index 58b9736..dde933e 100644 --- a/source/data/zone/rn.txt +++ b/source/data/zone/rn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License rn{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/ro.txt b/source/data/zone/ro.txt index 367efb6..7fedc6b 100644 --- a/source/data/zone/ro.txt +++ b/source/data/zone/ro.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ro{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -768,9 +768,6 @@ ro{ "Asia:Kuwait"{ ec{"Kuweit"} } - "Asia:Macau"{ - ec{"Macao"} - } "Asia:Magadan"{ ec{"Magadan"} } diff --git a/source/data/zone/rof.txt b/source/data/zone/rof.txt index 10f0ba8..e504a62 100644 --- a/source/data/zone/rof.txt +++ b/source/data/zone/rof.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License rof{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/root.txt b/source/data/zone/root.txt index e114b59..e28b3de 100644 --- a/source/data/zone/root.txt +++ b/source/data/zone/root.txt @@ -4,7 +4,7 @@ * ICU source: /common/main/root.xml */ root{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Asmera"{ ec{"Asmara"} diff --git a/source/data/zone/ru.txt b/source/data/zone/ru.txt index bb706ff..f542317 100644 --- a/source/data/zone/ru.txt +++ b/source/data/zone/ru.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ru{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Абиджан"} @@ -403,7 +403,7 @@ ru{ ec{"Луисвилл"} } "America:Lower_Princes"{ - ec{"Лоуэр-Принсес-Куортер"} + ec{"Лоуэр-Принс-Куотер"} } "America:Maceio"{ ec{"Масейо"} @@ -487,7 +487,7 @@ ru{ ec{"Панама"} } "America:Pangnirtung"{ - ec{"Пангниртунг"} + ec{"Пангниртанг"} } "America:Paramaribo"{ ec{"Парамарибо"} diff --git a/source/data/zone/rw.txt b/source/data/zone/rw.txt index 67833bb..59f473a 100644 --- a/source/data/zone/rw.txt +++ b/source/data/zone/rw.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License rw{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ gmtFormat{"GMT{0}"} hourFormat{"+HH:mm;-HH:mm"} diff --git a/source/data/zone/rwk.txt b/source/data/zone/rwk.txt index cc1a443..460b6b7 100644 --- a/source/data/zone/rwk.txt +++ b/source/data/zone/rwk.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License rwk{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/sah.txt b/source/data/zone/sah.txt index 9936be6..3455204 100644 --- a/source/data/zone/sah.txt +++ b/source/data/zone/sah.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sah{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Asia:Almaty"{ ec{"Алматы"} diff --git a/source/data/zone/saq.txt b/source/data/zone/saq.txt index d08677e..6234556 100644 --- a/source/data/zone/saq.txt +++ b/source/data/zone/saq.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License saq{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/sbp.txt b/source/data/zone/sbp.txt index ed45482..b2ebc41 100644 --- a/source/data/zone/sbp.txt +++ b/source/data/zone/sbp.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sbp{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/sd.txt b/source/data/zone/sd.txt index e24543c..cd94901 100644 --- a/source/data/zone/sd.txt +++ b/source/data/zone/sd.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sd{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"ابي جان"} @@ -807,6 +807,9 @@ sd{ "Asia:Qatar"{ ec{"قطر"} } + "Asia:Qostanay"{ + ec{"ڪوٽانسي"} + } "Asia:Qyzylorda"{ ec{"ڪيزلورڊا"} } diff --git a/source/data/zone/se.txt b/source/data/zone/se.txt index 6eebfc7..24e3a91 100644 --- a/source/data/zone/se.txt +++ b/source/data/zone/se.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License se{ - Version{"2.1.48.4"} + Version{"36"} zoneStrings{ "America:Curacao"{ ec{"Curaçao"} diff --git a/source/data/zone/se_FI.txt b/source/data/zone/se_FI.txt index 1006d66..c08b4ba 100644 --- a/source/data/zone/se_FI.txt +++ b/source/data/zone/se_FI.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License se_FI{ - Version{"2.1.47.83"} + Version{"36"} zoneStrings{ "Africa:Cairo"{ ec{"Kairo"} diff --git a/source/data/zone/seh.txt b/source/data/zone/seh.txt index 06278a5..0436c15 100644 --- a/source/data/zone/seh.txt +++ b/source/data/zone/seh.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License seh{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/ses.txt b/source/data/zone/ses.txt index 304c661..604c78a 100644 --- a/source/data/zone/ses.txt +++ b/source/data/zone/ses.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ses{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/sg.txt b/source/data/zone/sg.txt index 5ba5470..123fccc 100644 --- a/source/data/zone/sg.txt +++ b/source/data/zone/sg.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sg{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/shi.txt b/source/data/zone/shi.txt index 1774d71..9d8b41c 100644 --- a/source/data/zone/shi.txt +++ b/source/data/zone/shi.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License shi{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/shi_Latn.txt b/source/data/zone/shi_Latn.txt index a545051..f921144 100644 --- a/source/data/zone/shi_Latn.txt +++ b/source/data/zone/shi_Latn.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License shi_Latn{ %%Parent{"root"} - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/shi_Tfng.txt b/source/data/zone/shi_Tfng.txt index 2e3827e..ea72d32 100644 --- a/source/data/zone/shi_Tfng.txt +++ b/source/data/zone/shi_Tfng.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License shi_Tfng{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/si.txt b/source/data/zone/si.txt index a676fa5..6998841 100644 --- a/source/data/zone/si.txt +++ b/source/data/zone/si.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License si{ - Version{"2.1.48.17"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"අබිජාන්"} @@ -810,6 +810,9 @@ si{ "Asia:Qatar"{ ec{"කටාර්"} } + "Asia:Qostanay"{ + ec{"කොස්තානේ"} + } "Asia:Qyzylorda"{ ec{"ක්යිසිලෝර්ඩා"} } diff --git a/source/data/zone/sk.txt b/source/data/zone/sk.txt index 1ac676d..a9a4379 100644 --- a/source/data/zone/sk.txt +++ b/source/data/zone/sk.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sk{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -956,6 +956,7 @@ sk{ } "Etc:UTC"{ ls{"koordinovaný svetový čas"} + ss{"UTC"} } "Etc:Unknown"{ ec{"neznáme mesto"} diff --git a/source/data/zone/sl.txt b/source/data/zone/sl.txt index 0930a3a..a94f9a7 100644 --- a/source/data/zone/sl.txt +++ b/source/data/zone/sl.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sl{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidžan"} @@ -688,7 +688,7 @@ sl{ ec{"Brunej"} } "Asia:Calcutta"{ - ec{"Kolkata"} + ec{"Kalkuta"} } "Asia:Chita"{ ec{"Čita"} @@ -697,7 +697,7 @@ sl{ ec{"Čojbalsan"} } "Asia:Colombo"{ - ec{"Colombo"} + ec{"Kolombo"} } "Asia:Damascus"{ ec{"Damask"} @@ -810,6 +810,9 @@ sl{ "Asia:Qatar"{ ec{"Katar"} } + "Asia:Qostanay"{ + ec{"Kostanaj"} + } "Asia:Qyzylorda"{ ec{"Kizlorda"} } diff --git a/source/data/zone/smn.txt b/source/data/zone/smn.txt index 677b65c..7128393 100644 --- a/source/data/zone/smn.txt +++ b/source/data/zone/smn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License smn{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/sn.txt b/source/data/zone/sn.txt index 261f0fb..07a99a7 100644 --- a/source/data/zone/sn.txt +++ b/source/data/zone/sn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sn{ - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/zone/so.txt b/source/data/zone/so.txt index 8e31317..ef65fe7 100644 --- a/source/data/zone/so.txt +++ b/source/data/zone/so.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License so{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjaan"} @@ -9,24 +9,15 @@ so{ "Africa:Accra"{ ec{"Akra"} } - "Africa:Addis_Ababa"{ - ec{"Addis Ababa"} - } "Africa:Algiers"{ ec{"Aljeeris"} } - "Africa:Asmera"{ - ec{"Asmara"} - } "Africa:Bamako"{ ec{"Bamaako"} } "Africa:Bangui"{ ec{"Baagi"} } - "Africa:Banjul"{ - ec{"Banjul"} - } "Africa:Bissau"{ ec{"Bisaaw"} } @@ -36,9 +27,6 @@ so{ "Africa:Brazzaville"{ ec{"Barasafil"} } - "Africa:Bujumbura"{ - ec{"Bujumbura"} - } "Africa:Cairo"{ ec{"Qaahira"} } @@ -51,9 +39,6 @@ so{ "Africa:Conakry"{ ec{"Conakri"} } - "Africa:Dakar"{ - ec{"Dakar"} - } "Africa:Dar_es_Salaam"{ ec{"Daresalaam"} } @@ -78,21 +63,12 @@ so{ "Africa:Johannesburg"{ ec{"Johansbaag"} } - "Africa:Juba"{ - ec{"Juba"} - } "Africa:Kampala"{ ec{"Kambaala"} } "Africa:Khartoum"{ ec{"Khartuum"} } - "Africa:Kigali"{ - ec{"Kigali"} - } - "Africa:Kinshasa"{ - ec{"Kinshasa"} - } "Africa:Lagos"{ ec{"Laagoos"} } @@ -111,9 +87,6 @@ so{ "Africa:Lusaka"{ ec{"Lusaaka"} } - "Africa:Malabo"{ - ec{"Malabo"} - } "Africa:Maputo"{ ec{"Mabuuto"} } @@ -159,9 +132,6 @@ so{ "Africa:Windhoek"{ ec{"Windhook"} } - "America:Adak"{ - ec{"Adak"} - } "America:Anchorage"{ ec{"Anjorage"} } @@ -180,9 +150,6 @@ so{ "America:Argentina:Rio_Gallegos"{ ec{"Riyo Jalejos"} } - "America:Argentina:Salta"{ - ec{"Salta"} - } "America:Argentina:San_Juan"{ ec{"San Juwaan"} } @@ -195,9 +162,6 @@ so{ "America:Argentina:Ushuaia"{ ec{"Ushuaay"} } - "America:Aruba"{ - ec{"Aruba"} - } "America:Asuncion"{ ec{"Asunkiyon"} } @@ -207,12 +171,6 @@ so{ "America:Bahia_Banderas"{ ec{"Bahiya Banderas"} } - "America:Barbados"{ - ec{"Barbados"} - } - "America:Belem"{ - ec{"Belem"} - } "America:Belize"{ ec{"Beliise"} } @@ -222,9 +180,6 @@ so{ "America:Boa_Vista"{ ec{"Bow Fista"} } - "America:Bogota"{ - ec{"Bogota"} - } "America:Boise"{ ec{"Boyse"} } @@ -294,9 +249,6 @@ so{ "America:Dominica"{ ec{"Dominiika"} } - "America:Edmonton"{ - ec{"Edmonton"} - } "America:Eirunepe"{ ec{"Iiruneeb"} } @@ -312,9 +264,6 @@ so{ "America:Glace_Bay"{ ec{"Galeys Baay"} } - "America:Godthab"{ - ec{"Nuuk"} - } "America:Goose_Bay"{ ec{"Guus Baay"} } @@ -378,9 +327,6 @@ so{ "America:Jamaica"{ ec{"Jamayka"} } - "America:Jujuy"{ - ec{"Jujuy"} - } "America:Juneau"{ ec{"Juniyuu"} } @@ -420,9 +366,6 @@ so{ "America:Martinique"{ ec{"Maartiniikuyuu"} } - "America:Matamoros"{ - ec{"Matamoros"} - } "America:Mazatlan"{ ec{"Mazaatlan"} } @@ -579,9 +522,6 @@ so{ "America:Tijuana"{ ec{"Tijuwaana"} } - "America:Toronto"{ - ec{"Toronto"} - } "America:Tortola"{ ec{"Tortoola"} } @@ -612,9 +552,6 @@ so{ "Antarctica:Macquarie"{ ec{"Makquwariy"} } - "Antarctica:Mawson"{ - ec{"Mawson"} - } "Antarctica:McMurdo"{ ec{"MakMurdo"} } @@ -651,12 +588,6 @@ so{ "Asia:Aqtau"{ ec{"Aktaw"} } - "Asia:Aqtobe"{ - ec{"Aqtobe"} - } - "Asia:Ashgabat"{ - ec{"Ashgabat"} - } "Asia:Atyrau"{ ec{"Atiyraw"} } @@ -666,9 +597,6 @@ so{ "Asia:Bahrain"{ ec{"Baxreyn"} } - "Asia:Baku"{ - ec{"Baku"} - } "Asia:Bangkok"{ ec{"Bangkook"} } @@ -678,9 +606,6 @@ so{ "Asia:Beirut"{ ec{"Beyruud"} } - "Asia:Bishkek"{ - ec{"Bishkek"} - } "Asia:Brunei"{ ec{"Buruney"} } @@ -702,24 +627,12 @@ so{ "Asia:Dhaka"{ ec{"Dhaaka"} } - "Asia:Dili"{ - ec{"Dili"} - } "Asia:Dubai"{ ec{"Dubay"} } - "Asia:Dushanbe"{ - ec{"Dushanbe"} - } - "Asia:Famagusta"{ - ec{"Famagusta"} - } "Asia:Gaza"{ ec{"Qasa"} } - "Asia:Hebron"{ - ec{"Hebron"} - } "Asia:Hong_Kong"{ ec{"Hoong Koong"} } @@ -789,12 +702,6 @@ so{ "Asia:Novosibirsk"{ ec{"Nofosibirsik"} } - "Asia:Omsk"{ - ec{"Omsk"} - } - "Asia:Oral"{ - ec{"Oral"} - } "Asia:Phnom_Penh"{ ec{"Benom Ben"} } @@ -813,18 +720,12 @@ so{ "Asia:Qyzylorda"{ ec{"Qiyslorda"} } - "Asia:Rangoon"{ - ec{"Yangon"} - } "Asia:Riyadh"{ ec{"Riyaad"} } "Asia:Saigon"{ ec{"Hoo Ji Mih Siti"} } - "Asia:Sakhalin"{ - ec{"Sakhalin"} - } "Asia:Samarkand"{ ec{"Samarkaan"} } @@ -855,21 +756,6 @@ so{ "Asia:Thimphu"{ ec{"Timbu"} } - "Asia:Tokyo"{ - ec{"Tokyo"} - } - "Asia:Tomsk"{ - ec{"Tomsk"} - } - "Asia:Ulaanbaatar"{ - ec{"Ulaanbaatar"} - } - "Asia:Urumqi"{ - ec{"Urumqi"} - } - "Asia:Ust-Nera"{ - ec{"Ust-Nera"} - } "Asia:Vientiane"{ ec{"Fiyaantiyaan"} } @@ -909,9 +795,6 @@ so{ "Atlantic:South_Georgia"{ ec{"Sowt Joorjiya"} } - "Atlantic:St_Helena"{ - ec{"St. Helena"} - } "Atlantic:Stanley"{ ec{"Istaanley"} } @@ -927,18 +810,12 @@ so{ "Australia:Currie"{ ec{"Kuriy"} } - "Australia:Darwin"{ - ec{"Darwin"} - } "Australia:Eucla"{ ec{"Yukla"} } "Australia:Hobart"{ ec{"Hubaart"} } - "Australia:Lindeman"{ - ec{"Lindeman"} - } "Australia:Lord_Howe"{ ec{"Lod How"} } @@ -1000,9 +877,6 @@ so{ ec{"Dhaablin"} ld{"Waqtiga Caadiga Ah ee Ayrishka"} } - "Europe:Gibraltar"{ - ec{"Gibraltar"} - } "Europe:Guernsey"{ ec{"Geernisi"} } @@ -1018,18 +892,12 @@ so{ "Europe:Jersey"{ ec{"Jaarsey"} } - "Europe:Kaliningrad"{ - ec{"Kaliningrad"} - } "Europe:Kiev"{ ec{"Kiyf"} } "Europe:Kirov"{ ec{"Kiroof"} } - "Europe:Lisbon"{ - ec{"Lisbon"} - } "Europe:Ljubljana"{ ec{"Lubalaana"} } @@ -1043,9 +911,6 @@ so{ "Europe:Madrid"{ ec{"Maadriid"} } - "Europe:Malta"{ - ec{"Malta"} - } "Europe:Mariehamn"{ ec{"Maarihaam"} } @@ -1058,9 +923,6 @@ so{ "Europe:Moscow"{ ec{"Moskow"} } - "Europe:Oslo"{ - ec{"Oslo"} - } "Europe:Paris"{ ec{"Baariis"} } @@ -1076,9 +938,6 @@ so{ "Europe:Rome"{ ec{"Rooma"} } - "Europe:Samara"{ - ec{"Samara"} - } "Europe:San_Marino"{ ec{"San Mariino"} } @@ -1127,9 +986,6 @@ so{ "Europe:Volgograd"{ ec{"Folgograd"} } - "Europe:Warsaw"{ - ec{"Warsaw"} - } "Europe:Zagreb"{ ec{"Sagreb"} } @@ -1157,9 +1013,6 @@ so{ "Indian:Kerguelen"{ ec{"Kergalen"} } - "Indian:Mahe"{ - ec{"Mahe"} - } "Indian:Maldives"{ ec{"Maldifis"} } @@ -1187,21 +1040,12 @@ so{ "Pacific:Easter"{ ec{"Iistar"} } - "Pacific:Efate"{ - ec{"Efate"} - } "Pacific:Enderbury"{ ec{"Enderburi"} } "Pacific:Fakaofo"{ ec{"fakofo"} } - "Pacific:Fiji"{ - ec{"Fiji"} - } - "Pacific:Funafuti"{ - ec{"Funafuti"} - } "Pacific:Galapagos"{ ec{"Galabagos"} } @@ -1232,9 +1076,6 @@ so{ "Pacific:Marquesas"{ ec{"Marquwesas"} } - "Pacific:Midway"{ - ec{"Midway"} - } "Pacific:Nauru"{ ec{"Nawroo"} } @@ -1262,27 +1103,15 @@ so{ "Pacific:Port_Moresby"{ ec{"Boort Moresbi"} } - "Pacific:Rarotonga"{ - ec{"Rarotonga"} - } "Pacific:Saipan"{ ec{"Seyban"} } - "Pacific:Tahiti"{ - ec{"Tahiti"} - } - "Pacific:Tarawa"{ - ec{"Tarawa"} - } "Pacific:Tongatapu"{ ec{"Tongatabu"} } "Pacific:Truk"{ ec{"Juuk"} } - "Pacific:Wake"{ - ec{"Wake"} - } "Pacific:Wallis"{ ec{"Walis"} } @@ -1875,10 +1704,6 @@ so{ lg{"Waqtiga Yekaterinbaag"} ls{"Waqtiga Caadiga Ah ee Yekaterinbaag"} } - fallbackFormat{"{1} ({0})"} - gmtFormat{"GMT{0}"} - gmtZeroFormat{"GMT"} - hourFormat{"+HH:mm;-HH:mm"} regionFormat{"Waqtiga {0}"} regionFormatDaylight{"Waqtiga Dharaarta ee {0}"} regionFormatStandard{"Waqtiga Caadiga Ah ee {0}"} diff --git a/source/data/zone/sq.txt b/source/data/zone/sq.txt index 8fa1646..b8106d8 100644 --- a/source/data/zone/sq.txt +++ b/source/data/zone/sq.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sq{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abixhan"} @@ -810,6 +810,9 @@ sq{ "Asia:Qatar"{ ec{"Katar"} } + "Asia:Qostanay"{ + ec{"Kostanaj"} + } "Asia:Qyzylorda"{ ec{"Kizilorda"} } diff --git a/source/data/zone/sr.txt b/source/data/zone/sr.txt index 8d50318..ee37d96 100644 --- a/source/data/zone/sr.txt +++ b/source/data/zone/sr.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sr{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Абиџан"} @@ -274,7 +274,7 @@ sr{ ec{"Куиаба"} } "America:Curacao"{ - ec{"Кирасо"} + ec{"Курасао"} } "America:Danmarkshavn"{ ec{"Данмарксхаген"} @@ -811,7 +811,7 @@ sr{ ec{"Катар"} } "Asia:Qostanay"{ - ec{"Qostanay"} + ec{"Костанај"} } "Asia:Qyzylorda"{ ec{"Кизилорда"} diff --git a/source/data/zone/sr_Cyrl.txt b/source/data/zone/sr_Cyrl.txt index 8a82c60..8ccf74b 100644 --- a/source/data/zone/sr_Cyrl.txt +++ b/source/data/zone/sr_Cyrl.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sr_Cyrl{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/zone/sr_Latn.txt b/source/data/zone/sr_Latn.txt index bba99dd..47ecac6 100644 --- a/source/data/zone/sr_Latn.txt +++ b/source/data/zone/sr_Latn.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License sr_Latn{ %%Parent{"root"} - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidžan"} @@ -275,7 +275,7 @@ sr_Latn{ ec{"Kuiaba"} } "America:Curacao"{ - ec{"Kiraso"} + ec{"Kurasao"} } "America:Danmarkshavn"{ ec{"Danmarkshagen"} @@ -812,7 +812,7 @@ sr_Latn{ ec{"Katar"} } "Asia:Qostanay"{ - ec{"Qostanay"} + ec{"Kostanaj"} } "Asia:Qyzylorda"{ ec{"Kizilorda"} diff --git a/source/data/zone/sv.txt b/source/data/zone/sv.txt index e795d7e..c270a01 100644 --- a/source/data/zone/sv.txt +++ b/source/data/zone/sv.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sv{ - Version{"2.1.48.90"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} diff --git a/source/data/zone/sw.txt b/source/data/zone/sw.txt index 8bef33a..036da32 100644 --- a/source/data/zone/sw.txt +++ b/source/data/zone/sw.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License sw{ - Version{"2.1.48.17"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} diff --git a/source/data/zone/sw_KE.txt b/source/data/zone/sw_KE.txt new file mode 100644 index 0000000..c79d600 --- /dev/null +++ b/source/data/zone/sw_KE.txt @@ -0,0 +1,251 @@ +// © 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License +sw_KE{ + Version{"36"} + zoneStrings{ + "America:Barbados"{ + ec{"Babadosi"} + } + "America:Costa_Rica"{ + ec{"Kostarika"} + } + "America:Dominica"{ + ec{"Dominika"} + } + "America:El_Salvador"{ + ec{"Elsalvado"} + } + "America:Guadeloupe"{ + ec{"Guadalupe"} + } + "America:Jamaica"{ + ec{"Jamaika"} + } + "America:Martinique"{ + ec{"Matinikiu"} + } + "America:North_Dakota:Beulah"{ + ec{"Beulah, Dakota Kaskazini"} + } + "America:North_Dakota:Center"{ + ec{"Center, Dakota Kaskazini"} + } + "America:North_Dakota:New_Salem"{ + ec{"New Salem, Dakota Kaskazini"} + } + "America:Port-au-Prince"{ + ec{"Bandari ya au-Prince"} + } + "America:Port_of_Spain"{ + ec{"Bandari ya Uhispania"} + } + "Antarctica:Macquarie"{ + ec{"Makwuarie"} + } + "Asia:Colombo"{ + ec{"Kolombo"} + } + "Asia:Macau"{ + ec{"Makao"} + } + "Asia:Qostanay"{ + ec{"Kostanay"} + } + "Asia:Rangoon"{ + ec{"Yangon"} + } + "Asia:Saigon"{ + ec{"Jiji la Ho Chi Minh"} + } + "Asia:Singapore"{ + ec{"Singapoo"} + } + "Atlantic:Bermuda"{ + ec{"Bamuda"} + } + "Atlantic:Canary"{ + ec{"Kanari"} + } + "Etc:UTC"{ + ls{"Saa ya Ulimwenguni"} + } + "Indian:Christmas"{ + ec{"Krismasi"} + } + "Indian:Maldives"{ + ec{"Maldivi"} + } + "meta:Afghanistan"{ + ls{"Saa za Afghanistani"} + } + "meta:Argentina"{ + ld{"Saa za Majira Joto za Ajentina"} + lg{"Saa za Ajentina"} + ls{"Saa za Wastani za Ajentina"} + } + "meta:Argentina_Western"{ + ld{"Saa za Majira ya Joto za Magharibi mwa Ajentina"} + lg{"Saa za Magharibi mwa Ajentina"} + ls{"Saa za Wastani za Magharibi mwa Ajentina"} + } + "meta:Australia_CentralWestern"{ + ld{"Saa za Mchana za Magharibi mwa Australia ya Kati"} + lg{"Saa za Magharibi mwa Austrialia ya Kati"} + ls{"Saa za Wastani za Magharibi mwa Australia ya Kati"} + } + "meta:Azerbaijan"{ + ld{"Saa za Majira ya Joto za Azabajani"} + lg{"Saa za Azabajani"} + ls{"Saa za Wastani za Azabajani"} + } + "meta:Bangladesh"{ + ld{"Saa za Majira ya Joto za Bangladeshi"} + lg{"Saa za Bangladeshi"} + ls{"Saa za Wastani za Bangladeshi"} + } + "meta:Bhutan"{ + ls{"Saa za Butani"} + } + "meta:Brasilia"{ + ld{"Saa za Majira ya Joto za Brazili"} + lg{"Saa za Brazili"} + ls{"Saa za Wastani za Brazili"} + } + "meta:Cape_Verde"{ + ld{"Saa za Majira ya Joto za Kepuvede"} + lg{"Saa za Kepuvede"} + ls{"Saa za Wastani za Kepuvede"} + } + "meta:Christmas"{ + ls{"Saa za Kisiwa cha Krismasi"} + } + "meta:Colombia"{ + ld{"Saa za Majira ya Joto za Kolombia"} + lg{"Saa za Kolombia"} + ls{"Saa za Wastani za Kolombia"} + } + "meta:Cook"{ + ld{"Saa za Majira Nusu ya Joto za Visiwa vya Cook"} + lg{"Saa za Visiwa vya Cook"} + ls{"Saa za Wastani za Visiwa vya Cook"} + } + "meta:Cuba"{ + ld{"Saa za Mchana za Kuba"} + lg{"Saa za Kuba"} + ls{"Saa za Wastani za Kuba"} + } + "meta:Easter"{ + ld{"Saa za Majira ya Joto za Kisiwa cha Easter"} + lg{"Saa za Kisiwa cha Easter"} + ls{"Saa za Wastani za Kisiwa cha Easter"} + } + "meta:Ecuador"{ + ls{"Saa za Ekwado"} + } + "meta:French_Guiana"{ + ls{"Saa za Guiana"} + } + "meta:Georgia"{ + ld{"Saa za Majira ya Joto za Jiojia"} + lg{"Saa za Jiojia"} + ls{"Saa za Wastani za Jiojia"} + } + "meta:Gulf"{ + ls{"Saa za Wastani za Ghuba"} + } + "meta:India"{ + ls{"Saa za Wastani za India"} + } + "meta:Iran"{ + ld{"Saa za Mchana za Irani"} + lg{"Saa za Irani"} + ls{"Saa za Wastani za Irani"} + } + "meta:Japan"{ + ld{"Saa za Mchana za Japani"} + lg{"Saa za Japani"} + ls{"Saa za Wastani za Japani"} + } + "meta:Kazakhstan_Eastern"{ + ls{"Saa za Kazakistani Mashariki"} + } + "meta:Kazakhstan_Western"{ + ls{"Saa za Kazakistani Magharibi"} + } + "meta:Macquarie"{ + ls{"Saa za Makwuarie"} + } + "meta:Malaysia"{ + ls{"Saa za Malesia"} + } + "meta:Maldives"{ + ls{"Saa za Maldivi"} + } + "meta:Mexico_Northwest"{ + ld{"Saa za Mchana za Kaskazini Magharibi mwa Meksiko"} + lg{"Saa za Kaskazini Magharibi mwa Meksiko"} + ls{"Saa za Wastani za Kaskazini Magharibi mwa Meksiko"} + } + "meta:Mongolia"{ + ld{"Saa za Majira ya Joto za Ulaanbaatar"} + lg{"Saa za Ulaanbataar"} + ls{"Saa za Wastani za Ulaanbataar"} + } + "meta:Myanmar"{ + ls{"Saa za Myama"} + } + "meta:Nepal"{ + ls{"Saa za Nepali"} + } + "meta:New_Caledonia"{ + ld{"Saa za Majira ya Joto za Kaledonia Mpya"} + lg{"Saa za Kaledonia Mpya"} + ls{"Saa za Wastani za Kaledonia Mpya"} + } + "meta:New_Zealand"{ + ld{"Saa za Mchana za Nyuzilandi"} + lg{"Saa za Nyuzilandi"} + ls{"Saa za Wastani za Nyuzilandi"} + } + "meta:Pakistan"{ + ld{"Saa za Majira ya Joto za Pakistani"} + lg{"Saa za Pakistani"} + ls{"Saa za Wastani za Pakistani"} + } + "meta:Papua_New_Guinea"{ + ls{"Saa za Papua"} + } + "meta:Paraguay"{ + ld{"Saa za Majira ya Joto za Paragwai"} + lg{"Saa za Paragwai"} + ls{"Saa za Wastani za Paragwai"} + } + "meta:Phoenix_Islands"{ + ls{"Saa za Visiwa vya Finiksi"} + } + "meta:Singapore"{ + ls{"Saa za Wastani za Singapoo"} + } + "meta:South_Georgia"{ + ls{"Saa za Jojia Kusini"} + } + "meta:Tajikistan"{ + ls{"Saaza Tajikistani"} + } + "meta:Turkmenistan"{ + ld{"Saa za Majira ya Joto za Turkmenistani"} + lg{"Saa za Turkmenistani"} + ls{"Saa za Wastani za Turkmenistani"} + } + "meta:Uruguay"{ + ld{"Saa za Majira ya Joto za Urugwai"} + lg{"Saa za Uruagwai"} + ls{"Saa za Wastani za Urugwai"} + } + "meta:Uzbekistan"{ + ld{"Saa za Majira ya Joto za Uzbekistani"} + lg{"Saa za Uzbekistani"} + ls{"Saa za wastani za Uzbekistani"} + } + } +} diff --git a/source/data/zone/ta.txt b/source/data/zone/ta.txt index ae53d4d..8ae0757 100644 --- a/source/data/zone/ta.txt +++ b/source/data/zone/ta.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ta{ - Version{"2.1.48.17"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"அபிட்ஜான்"} diff --git a/source/data/zone/ta_MY.txt b/source/data/zone/ta_MY.txt index 33f1feb..449a1e8 100644 --- a/source/data/zone/ta_MY.txt +++ b/source/data/zone/ta_MY.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ta_MY{ - Version{"2.1.47.71"} + Version{"36"} zoneStrings{ "meta:India"{ ss{"∅∅∅"} diff --git a/source/data/zone/ta_SG.txt b/source/data/zone/ta_SG.txt index 1056f13..e5bd606 100644 --- a/source/data/zone/ta_SG.txt +++ b/source/data/zone/ta_SG.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ta_SG{ - Version{"2.1.47.71"} + Version{"36"} zoneStrings{ "meta:India"{ ss{"∅∅∅"} diff --git a/source/data/zone/te.txt b/source/data/zone/te.txt index 882f631..1cd0987 100644 --- a/source/data/zone/te.txt +++ b/source/data/zone/te.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License te{ - Version{"2.1.48.17"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"అబిడ్జాన్"} diff --git a/source/data/zone/teo.txt b/source/data/zone/teo.txt index 3683d55..5c2311d 100644 --- a/source/data/zone/teo.txt +++ b/source/data/zone/teo.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License teo{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/tg.txt b/source/data/zone/tg.txt index 40a5047..0d59798 100644 --- a/source/data/zone/tg.txt +++ b/source/data/zone/tg.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tg{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Asia:Dushanbe"{ ec{"Душанбе"} @@ -29,7 +29,7 @@ tg{ } "meta:America_Pacific"{ ld{"Вақти рӯзонаи Уқёнуси Ором"} - lg{"Вақти Уёнуси Ором"} + lg{"Вақти Уқёнуси Ором"} ls{"Вақти стандартии Уқёнуси Ором"} } "meta:Atlantic"{ diff --git a/source/data/zone/th.txt b/source/data/zone/th.txt index d614145..fb970f6 100644 --- a/source/data/zone/th.txt +++ b/source/data/zone/th.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License th{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"อาบีจาน"} @@ -1938,6 +1938,10 @@ th{ lg{"เวลาเยคาเตรินบูร์ก"} ls{"เวลามาตรฐานเยคาเตรินบูร์ก"} } + fallbackFormat{"{1} ({0})"} + gmtFormat{"GMT{0}"} + gmtZeroFormat{"GMT"} + hourFormat{"+HH:mm;-HH:mm"} regionFormat{"เวลา{0}"} regionFormatDaylight{"เวลาออมแสง{0}"} regionFormatStandard{"เวลามาตรฐาน{0}"} diff --git a/source/data/zone/ti.txt b/source/data/zone/ti.txt index 28f2d2d..b5a5dfb 100644 --- a/source/data/zone/ti.txt +++ b/source/data/zone/ti.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ti{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} diff --git a/source/data/zone/tk.txt b/source/data/zone/tk.txt index c3d0024..b9b361e 100644 --- a/source/data/zone/tk.txt +++ b/source/data/zone/tk.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tk{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abijan"} @@ -15,9 +15,6 @@ tk{ "Africa:Algiers"{ ec{"Alžir"} } - "Africa:Asmera"{ - ec{"Asmera"} - } "Africa:Bamako"{ ec{"Bamako"} } @@ -312,9 +309,6 @@ tk{ "America:Glace_Bay"{ ec{"Gleýs-Beý"} } - "America:Godthab"{ - ec{"Nuk"} - } "America:Goose_Bay"{ ec{"Gus-Beý"} } @@ -523,7 +517,7 @@ tk{ ec{"Rejaýna"} } "America:Resolute"{ - ec{"Rozulýut"} + ec{"Rezolýut"} } "America:Rio_Branco"{ ec{"Riu-Branku"} @@ -553,7 +547,7 @@ tk{ ec{"Sen-Bartelemi"} } "America:St_Johns"{ - ec{"Sent-Džons"} + ec{"Sent-Jons"} } "America:St_Kitts"{ ec{"Sent-Kits"} @@ -594,9 +588,6 @@ tk{ "America:Whitehorse"{ ec{"Waýthors"} } - "America:Winnipeg"{ - ec{"Winipeg"} - } "America:Yakutat"{ ec{"Ýakutat"} } @@ -787,7 +778,7 @@ tk{ ec{"Nikosiýa"} } "Asia:Novokuznetsk"{ - ec{"Nowokuznetsk"} + ec{"Nowokuznesk"} } "Asia:Novosibirsk"{ ec{"Nowosibirsk"} @@ -810,11 +801,14 @@ tk{ "Asia:Qatar"{ ec{"Katar"} } + "Asia:Qostanay"{ + ec{"Kostanaý"} + } "Asia:Qyzylorda"{ ec{"Gyzylorda"} } "Asia:Rangoon"{ - ec{"Rangun"} + ec{"Ýangon"} } "Asia:Riyadh"{ ec{"Er-Riýad"} @@ -1185,7 +1179,7 @@ tk{ ec{"Çatem"} } "Pacific:Easter"{ - ec{"Pashi adasy"} + ec{"Pasha adasy"} } "Pacific:Efate"{ ec{"Efate"} @@ -1530,7 +1524,7 @@ tk{ ls{"Gruziýa standart wagty"} } "meta:Gilbert_Islands"{ - ls{"Gilberta adalary wagty"} + ls{"Gilbert adalary wagty"} } "meta:Greenland_Eastern"{ ld{"Gündogar Grenlandiýa tomusky wagty"} diff --git a/source/data/zone/to.txt b/source/data/zone/to.txt index 93c9c04..fae10f5 100644 --- a/source/data/zone/to.txt +++ b/source/data/zone/to.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License to{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -303,6 +303,9 @@ to{ "America:El_Salvador"{ ec{"El Salvador"} } + "America:Fort_Nelson"{ + ec{"Fort Nelson"} + } "America:Fortaleza"{ ec{"Fortaleza"} } @@ -504,6 +507,9 @@ to{ "America:Puerto_Rico"{ ec{"Puerto Rico"} } + "America:Punta_Arenas"{ + ec{"Punta Arenas"} + } "America:Rainy_River"{ ec{"Rainy River"} } @@ -654,6 +660,9 @@ to{ "Asia:Ashgabat"{ ec{"Ashgabat"} } + "Asia:Atyrau"{ + ec{"Atyrau"} + } "Asia:Baghdad"{ ec{"Baghdad"} } @@ -666,6 +675,9 @@ to{ "Asia:Bangkok"{ ec{"Bangkok"} } + "Asia:Barnaul"{ + ec{"Barnaul"} + } "Asia:Beirut"{ ec{"Beirut"} } @@ -678,6 +690,9 @@ to{ "Asia:Calcutta"{ ec{"Kolkata"} } + "Asia:Chita"{ + ec{"Chita"} + } "Asia:Choibalsan"{ ec{"Choibalsan"} } @@ -699,6 +714,9 @@ to{ "Asia:Dushanbe"{ ec{"Dushanbe"} } + "Asia:Famagusta"{ + ec{"Famagusta"} + } "Asia:Gaza"{ ec{"Gaza"} } @@ -819,6 +837,9 @@ to{ "Asia:Singapore"{ ec{"Singapore"} } + "Asia:Srednekolymsk"{ + ec{"Srednekolymsk"} + } "Asia:Taipei"{ ec{"Taipei"} } @@ -837,6 +858,9 @@ to{ "Asia:Tokyo"{ ec{"Tokyo"} } + "Asia:Tomsk"{ + ec{"Tomsk"} + } "Asia:Ulaanbaatar"{ ec{"Ulaanbaatar"} } @@ -927,6 +951,9 @@ to{ "Australia:Sydney"{ ec{"Senē"} } + "Etc:UTC"{ + ls{"taimi fakaemāmani"} + } "Etc:Unknown"{ ec{"FeituÊ»u taÊ»eÊ»iloa"} } @@ -936,6 +963,9 @@ to{ "Europe:Andorra"{ ec{"Andorra"} } + "Europe:Astrakhan"{ + ec{"Astrakhan"} + } "Europe:Athens"{ ec{"Ê»Atenisi"} } @@ -994,6 +1024,9 @@ to{ "Europe:Kiev"{ ec{"Kiev"} } + "Europe:Kirov"{ + ec{"Kirov"} + } "Europe:Lisbon"{ ec{"Lisbon"} } @@ -1052,6 +1085,9 @@ to{ "Europe:Sarajevo"{ ec{"Sarajevo"} } + "Europe:Saratov"{ + ec{"Saratov"} + } "Europe:Simferopol"{ ec{"Simferopol"} } @@ -1070,6 +1106,9 @@ to{ "Europe:Tirane"{ ec{"Tirane"} } + "Europe:Ulyanovsk"{ + ec{"Ulyanovsk"} + } "Europe:Uzhgorod"{ ec{"Uzhhorod"} } @@ -1139,6 +1178,9 @@ to{ "Pacific:Auckland"{ ec{"Ê»Aokalani"} } + "Pacific:Bougainville"{ + ec{"Pukanivila"} + } "Pacific:Chatham"{ ec{"Chatham"} } @@ -1149,7 +1191,7 @@ to{ ec{"Efate"} } "Pacific:Enderbury"{ - ec{"Enderbury"} + ec{"Ê»EnitipulÄ«"} } "Pacific:Fakaofo"{ ec{"Fakaofo"} @@ -1164,10 +1206,10 @@ to{ ec{"Galapagos"} } "Pacific:Gambier"{ - ec{"Gambier"} + ec{"Kamipiē"} } "Pacific:Guadalcanal"{ - ec{"Guadalcanal"} + ec{"Kuatākanali"} } "Pacific:Guam"{ ec{"Kuami"} @@ -1176,25 +1218,25 @@ to{ ec{"Honolulu"} } "Pacific:Johnston"{ - ec{"Johnston"} + ec{"Sionesitoni"} } "Pacific:Kiritimati"{ - ec{"Kiritimati"} + ec{"Kilisimasi"} } "Pacific:Kosrae"{ ec{"Kosilae"} } "Pacific:Kwajalein"{ - ec{"Kwajalein"} + ec{"Kuasaleni"} } "Pacific:Majuro"{ - ec{"Majuro"} + ec{"Masulo"} } "Pacific:Marquesas"{ - ec{"Marquesas"} + ec{"Malikuesa"} } "Pacific:Midway"{ - ec{"Midway"} + ec{"Mitiuai"} } "Pacific:Nauru"{ ec{"Naulu"} @@ -1215,19 +1257,19 @@ to{ ec{"Palau"} } "Pacific:Pitcairn"{ - ec{"Pitcairn"} + ec{"Pitikeni"} } "Pacific:Ponape"{ ec{"Ponapē"} } "Pacific:Port_Moresby"{ - ec{"Port Moresby"} + ec{"Taulanga Molesipi"} } "Pacific:Rarotonga"{ ec{"Lalotonga"} } "Pacific:Saipan"{ - ec{"Saipan"} + ec{"SaÊ»ipani"} } "Pacific:Tahiti"{ ec{"Tahisi"} @@ -1242,7 +1284,7 @@ to{ ec{"TÅ«ke"} } "Pacific:Wake"{ - ec{"Wake"} + ec{"Ueke"} } "Pacific:Wallis"{ ec{"Ê»Uvea"} @@ -1769,6 +1811,9 @@ to{ "meta:Ponape"{ ls{"houa fakapōnapē"} } + "meta:Pyongyang"{ + ls{"houa fakapiongiangi"} + } "meta:Qyzylorda"{ ld{"houa fakakisilōta taimi liliu"} lg{"houa fakakisilōta"} diff --git a/source/data/zone/tr.txt b/source/data/zone/tr.txt index 34962d8..6cc242c 100644 --- a/source/data/zone/tr.txt +++ b/source/data/zone/tr.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tr{ - Version{"2.1.48.42"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -550,7 +550,7 @@ tr{ ec{"Sitka"} } "America:St_Barthelemy"{ - ec{"Saint Barthélemy"} + ec{"Saint Barthelemy"} } "America:St_Johns"{ ec{"St. John’s"} @@ -810,6 +810,9 @@ tr{ "Asia:Qatar"{ ec{"Katar"} } + "Asia:Qostanay"{ + ec{"Kostanay"} + } "Asia:Qyzylorda"{ ec{"Kızılorda"} } diff --git a/source/data/zone/tt.txt b/source/data/zone/tt.txt index e06e32c..12cf202 100644 --- a/source/data/zone/tt.txt +++ b/source/data/zone/tt.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tt{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Etc:UTC"{ ls{"Бөтендөнья килештерелгән вакыты"} diff --git a/source/data/zone/twq.txt b/source/data/zone/twq.txt index b05bfe6..e10b5c3 100644 --- a/source/data/zone/twq.txt +++ b/source/data/zone/twq.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License twq{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/tzm.txt b/source/data/zone/tzm.txt index e6529a8..4e349f4 100644 --- a/source/data/zone/tzm.txt +++ b/source/data/zone/tzm.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License tzm{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/ug.txt b/source/data/zone/ug.txt index d9e35e6..554d2fd 100644 --- a/source/data/zone/ug.txt +++ b/source/data/zone/ug.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ug{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Sao_Tome"{ ec{"سان-تومې"} diff --git a/source/data/zone/uk.txt b/source/data/zone/uk.txt index bed23ee..72789ef 100644 --- a/source/data/zone/uk.txt +++ b/source/data/zone/uk.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License uk{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Абіджан"} @@ -724,7 +724,7 @@ uk{ ec{"Хеврон"} } "Asia:Hong_Kong"{ - ec{"Гонконґ"} + ec{"Гонконг"} } "Asia:Hovd"{ ec{"Ховд"} @@ -810,6 +810,9 @@ uk{ "Asia:Qatar"{ ec{"Катар"} } + "Asia:Qostanay"{ + ec{"Костанай"} + } "Asia:Qyzylorda"{ ec{"Кизилорда"} } @@ -835,7 +838,7 @@ uk{ ec{"Шанхай"} } "Asia:Singapore"{ - ec{"Сінґапур"} + ec{"Сінгапур"} } "Asia:Srednekolymsk"{ ec{"Середньоколимськ"} @@ -1520,7 +1523,7 @@ uk{ ls{"за стандартним часом на Фіджі"} } "meta:French_Guiana"{ - ls{"за часом Французької Гвіани"} + ls{"за часом Французької Ґвіани"} } "meta:French_Southern"{ ls{"за часом на Французьких Південних і Антарктичних територіях"} diff --git a/source/data/zone/ur.txt b/source/data/zone/ur.txt index 7fc2fdd..9837db9 100644 --- a/source/data/zone/ur.txt +++ b/source/data/zone/ur.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ur{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"عابدجان"} @@ -508,7 +508,7 @@ ur{ ec{"پیورٹو ریکو"} } "America:Punta_Arenas"{ - ec{"پنٹا یریناس"} + ec{"پنٹا اریناس"} } "America:Rainy_River"{ ec{"رینی ریور"} @@ -1025,7 +1025,7 @@ ur{ ec{"کالينينغراد"} } "Europe:Kiev"{ - ec{"کیوو"} + ec{"کیو"} } "Europe:Kirov"{ ec{"کیروف"} @@ -1113,7 +1113,7 @@ ur{ ec{"الیانوسک"} } "Europe:Uzhgorod"{ - ec{"ازگوروڈ"} + ec{"ازہوراڈ"} } "Europe:Vaduz"{ ec{"ویڈوز"} @@ -1317,7 +1317,7 @@ ur{ "meta:Amazon"{ ld{"امیزون کا موسم گرما کا وقت"} lg{"امیزون ٹائم"} - ls{"ایمیزون سٹینڈرڈ ٹائم"} + ls{"ایمیزون کا معیاری وقت"} } "meta:America_Central"{ ld{"سنٹرل ڈے لائٹ ٹائم"} @@ -1355,9 +1355,9 @@ ur{ ls{"عرب کا معیاری وقت"} } "meta:Argentina"{ - ld{"ارجنٹینا سمر ٹائم"} - lg{"ارجنٹینا ٹائم"} - ls{"ارجنٹینا سٹینڈرڈ ٹائم"} + ld{"ارجنٹینا کا موسم گرما کا وقت"} + lg{"ارجنٹینا کا وقت"} + ls{"ارجنٹینا کا معیاری وقت"} } "meta:Argentina_Western"{ ld{"مغربی ارجنٹینا کا موسم گرما کا وقت"} @@ -1443,7 +1443,7 @@ ur{ } "meta:China"{ ld{"چینی ڈے لائٹ ٹائم"} - lg{"چین ٹائم"} + lg{"چین کا وقت"} ls{"چین سٹینڈرڈ ٹائم"} } "meta:Choibalsan"{ @@ -1902,6 +1902,6 @@ ur{ hourFormat{"+HH:mm;-HH:mm"} regionFormat{"{0} وقت"} regionFormatDaylight{"{0} ڈے لائٹ ٹائم"} - regionFormatStandard{"{0} اسٹینڈرڈ ٹائم"} + regionFormatStandard{"{0} معیاری وقت"} } } diff --git a/source/data/zone/ur_IN.txt b/source/data/zone/ur_IN.txt index 5c9214a..cdc4168 100644 --- a/source/data/zone/ur_IN.txt +++ b/source/data/zone/ur_IN.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License ur_IN{ - Version{"2.1.47.71"} + Version{"36"} zoneStrings{ "Africa:Accra"{ ec{"اکرا"} @@ -207,6 +207,5 @@ ur_IN{ } gmtFormat{"GMT{0}"} regionFormatDaylight{"{0} دن کا وقت"} - regionFormatStandard{"{0} معیاری وقت"} } } diff --git a/source/data/zone/uz.txt b/source/data/zone/uz.txt index 5c4b200..9287dc5 100644 --- a/source/data/zone/uz.txt +++ b/source/data/zone/uz.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License uz{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} diff --git a/source/data/zone/uz_Arab.txt b/source/data/zone/uz_Arab.txt index b3d028b..c989ab2 100644 --- a/source/data/zone/uz_Arab.txt +++ b/source/data/zone/uz_Arab.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License uz_Arab{ %%Parent{"root"} - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Asia:Kabul"{ ec{"کابل"} diff --git a/source/data/zone/uz_Cyrl.txt b/source/data/zone/uz_Cyrl.txt index 7873fb1..f78d59b 100644 --- a/source/data/zone/uz_Cyrl.txt +++ b/source/data/zone/uz_Cyrl.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License uz_Cyrl{ %%Parent{"root"} - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Asmera"{ ec{"Asmara"} diff --git a/source/data/zone/uz_Latn.txt b/source/data/zone/uz_Latn.txt index 14301e9..bc68300 100644 --- a/source/data/zone/uz_Latn.txt +++ b/source/data/zone/uz_Latn.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License uz_Latn{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/zone/vai.txt b/source/data/zone/vai.txt index 053af68..8c39cbb 100644 --- a/source/data/zone/vai.txt +++ b/source/data/zone/vai.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License vai{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/vai_Latn.txt b/source/data/zone/vai_Latn.txt index 99c11b4..60d108c 100644 --- a/source/data/zone/vai_Latn.txt +++ b/source/data/zone/vai_Latn.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License vai_Latn{ %%Parent{"root"} - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/vai_Vaii.txt b/source/data/zone/vai_Vaii.txt index d602abb..5390da9 100644 --- a/source/data/zone/vai_Vaii.txt +++ b/source/data/zone/vai_Vaii.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License vai_Vaii{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/vi.txt b/source/data/zone/vi.txt index 21c15f6..23275e4 100644 --- a/source/data/zone/vi.txt +++ b/source/data/zone/vi.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License vi{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"Abidjan"} @@ -811,7 +811,7 @@ vi{ ec{"Qatar"} } "Asia:Qostanay"{ - ec{"Qostanay"} + ec{"Kostanay"} } "Asia:Qyzylorda"{ ec{"Qyzylorda"} @@ -956,7 +956,6 @@ vi{ } "Etc:UTC"{ ls{"Giờ Phối hợp Quốc tế"} - ss{"UTC"} } "Etc:Unknown"{ ec{"Thành phố Không xác định"} @@ -1578,9 +1577,9 @@ vi{ ls{"Giờ Gambier"} } "meta:Georgia"{ - ld{"Giờ Mùa Hè Gruzia"} - lg{"Giờ Gruzia"} - ls{"Giờ Chuẩn Gruzia"} + ld{"Giờ Mùa Hè Georgia"} + lg{"Giờ Georgia"} + ls{"Giờ Chuẩn Georgia"} } "meta:Gilbert_Islands"{ ls{"Giờ Quần Đảo Gilbert"} diff --git a/source/data/zone/vun.txt b/source/data/zone/vun.txt index d8bf009..acce8d0 100644 --- a/source/data/zone/vun.txt +++ b/source/data/zone/vun.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License vun{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/wae.txt b/source/data/zone/wae.txt index 7960f75..b5c19f3 100644 --- a/source/data/zone/wae.txt +++ b/source/data/zone/wae.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License wae{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Africa:Accra"{ ec{"Akra"} diff --git a/source/data/zone/wo.txt b/source/data/zone/wo.txt index c210cdf..8066673 100644 --- a/source/data/zone/wo.txt +++ b/source/data/zone/wo.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License wo{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Dakar"{ ec{"Dakar"} diff --git a/source/data/zone/xh.txt b/source/data/zone/xh.txt index 420acb6..c70fd78 100644 --- a/source/data/zone/xh.txt +++ b/source/data/zone/xh.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License xh{ - Version{"2.1.49.82"} + Version{"36"} } diff --git a/source/data/zone/xog.txt b/source/data/zone/xog.txt index 4fbdaf9..91005d3 100644 --- a/source/data/zone/xog.txt +++ b/source/data/zone/xog.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License xog{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/yav.txt b/source/data/zone/yav.txt index efad47c..2b614e8 100644 --- a/source/data/zone/yav.txt +++ b/source/data/zone/yav.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yav{ - Version{"2.1.47.82"} + Version{"36"} } diff --git a/source/data/zone/yi.txt b/source/data/zone/yi.txt index 67d4abb..f7a4b65 100644 --- a/source/data/zone/yi.txt +++ b/source/data/zone/yi.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yi{ - Version{"2.1.47.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"אַבידזשאַן"} diff --git a/source/data/zone/yo.txt b/source/data/zone/yo.txt index e2df7a8..93fa6f3 100644 --- a/source/data/zone/yo.txt +++ b/source/data/zone/yo.txt @@ -1,17 +1,47 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yo{ - Version{"2.1.48.17"} + Version{"36"} zoneStrings{ - "Africa:Lagos"{ - ec{"Lagos"} - } "Etc:UTC"{ ls{"Àpapọ̀ Àkókò Àgbáyé"} } "Etc:Unknown"{ ec{"Ìlú Àìmọ̀"} } + "Europe:Dublin"{ + ld{"Irish Standard Time"} + } + "Europe:London"{ + ld{"British Summer Time"} + } + "meta:Afghanistan"{ + ls{"Afghanistan Time"} + } + "meta:Africa_Central"{ + ls{"Central Africa Time"} + } + "meta:Africa_Eastern"{ + ls{"East Africa Time"} + } + "meta:Africa_Southern"{ + ls{"South Africa Standard Time"} + } + "meta:Africa_Western"{ + ld{"West Africa Summer Time"} + lg{"West Africa Time"} + ls{"West Africa Standard Time"} + } + "meta:Alaska"{ + ld{"Alaska Daylight Time"} + lg{"Alaska Time"} + ls{"Alaska Standard Time"} + } + "meta:Amazon"{ + ld{"Amazon Summer Time"} + lg{"Amazon Time"} + ls{"Amazon Standard Time"} + } "meta:America_Central"{ ld{"Akókò àárín gbùngbùn ojúmọmọ"} lg{"àkókò àárín gbùngbùn"} @@ -32,11 +62,138 @@ yo{ lg{"Àkókò Pàsífíìkì"} ls{"Àkókò àsikò Pàsífíìkì"} } + "meta:Apia"{ + ld{"Apia Daylight Time"} + lg{"Apia Time"} + ls{"Apia Standard Time"} + } + "meta:Arabian"{ + ld{"Arabian Daylight Time"} + lg{"Arabian Time"} + ls{"Arabian Standard Time"} + } + "meta:Argentina"{ + ld{"Argentina Summer Time"} + lg{"Argentina Time"} + ls{"Argentina Standard Time"} + } + "meta:Argentina_Western"{ + ld{"Western Argentina Summer Time"} + lg{"Western Argentina Time"} + ls{"Western Argentina Standard Time"} + } + "meta:Armenia"{ + ld{"Armenia Summer Time"} + lg{"Armenia Time"} + ls{"Armenia Standard Time"} + } "meta:Atlantic"{ ld{"Àkókò Ìyálẹta Àtìláńtíìkì"} lg{"Àkókò Àtìláńtíìkì"} ls{"Àkókò àsikò Àtìláńtíìkì"} } + "meta:Australia_Central"{ + ld{"Australian Central Daylight Time"} + lg{"Central Australia Time"} + ls{"Australian Central Standard Time"} + } + "meta:Australia_CentralWestern"{ + ld{"Australian Central Western Daylight Time"} + lg{"Australian Central Western Time"} + ls{"Australian Central Western Standard Time"} + } + "meta:Australia_Eastern"{ + ld{"Australian Eastern Daylight Time"} + lg{"Eastern Australia Time"} + ls{"Australian Eastern Standard Time"} + } + "meta:Australia_Western"{ + ld{"Australian Western Daylight Time"} + lg{"Western Australia Time"} + ls{"Australian Western Standard Time"} + } + "meta:Azerbaijan"{ + ld{"Azerbaijan Summer Time"} + lg{"Azerbaijan Time"} + ls{"Azerbaijan Standard Time"} + } + "meta:Azores"{ + ld{"Azores Summer Time"} + lg{"Azores Time"} + ls{"Azores Standard Time"} + } + "meta:Bangladesh"{ + ld{"Bangladesh Summer Time"} + lg{"Bangladesh Time"} + ls{"Bangladesh Standard Time"} + } + "meta:Bhutan"{ + ls{"Bhutan Time"} + } + "meta:Bolivia"{ + ls{"Bolivia Time"} + } + "meta:Brasilia"{ + ld{"Brasilia Summer Time"} + lg{"Brasilia Time"} + ls{"Brasilia Standard Time"} + } + "meta:Brunei"{ + ls{"Brunei Darussalam Time"} + } + "meta:Cape_Verde"{ + ld{"Cape Verde Summer Time"} + lg{"Cape Verde Time"} + ls{"Cape Verde Standard Time"} + } + "meta:Chamorro"{ + ls{"Chamorro Standard Time"} + } + "meta:Chatham"{ + ld{"Chatham Daylight Time"} + lg{"Chatham Time"} + ls{"Chatham Standard Time"} + } + "meta:Chile"{ + ld{"Chile Summer Time"} + lg{"Chile Time"} + ls{"Chile Standard Time"} + } + "meta:Choibalsan"{ + ld{"Choibalsan Summer Time"} + lg{"Choibalsan Time"} + ls{"Choibalsan Standard Time"} + } + "meta:Christmas"{ + ls{"Christmas Island Time"} + } + "meta:Cocos"{ + ls{"Cocos Islands Time"} + } + "meta:Colombia"{ + ld{"Colombia Summer Time"} + lg{"Colombia Time"} + ls{"Colombia Standard Time"} + } + "meta:Cook"{ + ld{"Cook Islands Half Summer Time"} + lg{"Cook Islands Time"} + ls{"Cook Islands Standard Time"} + } + "meta:Davis"{ + ls{"Davis Time"} + } + "meta:DumontDUrville"{ + ls{"Dumont-d’Urville Time"} + } + "meta:Easter"{ + ld{"Easter Island Summer Time"} + lg{"Easter Island Time"} + ls{"Easter Island Standard Time"} + } + "meta:Ecuador"{ + ls{"Ecuador Time"} + } "meta:Europe_Central"{ ld{"Àkókò Àárin Sọmà Europe"} lg{"Àkókò Àárin Europe"} @@ -47,19 +204,357 @@ yo{ lg{"Àkókò Ìhà Ìlà Oòrùn Europe"} ls{"Àkókò àsikò Ìhà Ìlà Oòrùn Europe"} } + "meta:Europe_Further_Eastern"{ + ls{"Further-eastern European Time"} + } "meta:Europe_Western"{ ld{"Àkókò Sọmà Ìhà Ìwọ Oòrùn Europe"} lg{"Àkókò Ìwọ Oòrùn Europe"} ls{"Àkókò àsikò Ìwọ Oòrùn Europe"} } + "meta:Falkland"{ + ld{"Falkland Islands Summer Time"} + lg{"Falkland Islands Time"} + ls{"Falkland Islands Standard Time"} + } + "meta:Fiji"{ + ld{"Fiji Summer Time"} + lg{"Fiji Time"} + ls{"Fiji Standard Time"} + } + "meta:French_Guiana"{ + ls{"French Guiana Time"} + } + "meta:French_Southern"{ + ls{"French Southern & Antarctic Time"} + } "meta:GMT"{ ls{"Greenwich Mean Time"} } + "meta:Galapagos"{ + ls{"Galapagos Time"} + } + "meta:Gambier"{ + ls{"Gambier Time"} + } + "meta:Georgia"{ + ld{"Georgia Summer Time"} + lg{"Georgia Time"} + ls{"Georgia Standard Time"} + } + "meta:Gilbert_Islands"{ + ls{"Gilbert Islands Time"} + } + "meta:Gulf"{ + ls{ + "Gulf Standard Time [translation hint: translate as just \u0022Gulf T" + "ime\u0022]" + } + } + "meta:Guyana"{ + ls{"Guyana Time"} + } + "meta:Hong_Kong"{ + ld{"Hong Kong Summer Time"} + lg{"Hong Kong Time"} + ls{"Hong Kong Standard Time"} + } + "meta:Hovd"{ + ld{"Hovd Summer Time"} + lg{"Hovd Time"} + ls{"Hovd Standard Time"} + } + "meta:India"{ + ls{"India Standard Time"} + } + "meta:Indian_Ocean"{ + ls{"Indian Ocean Time"} + } + "meta:Indonesia_Eastern"{ + ls{"Eastern Indonesia Time"} + } + "meta:Iran"{ + ld{"Iran Daylight Time"} + lg{"Iran Time"} + ls{"Iran Standard Time"} + } + "meta:Irkutsk"{ + ld{"Irkutsk Summer Time"} + lg{"Irkutsk Time"} + ls{"Irkutsk Standard Time"} + } + "meta:Israel"{ + ld{"Israel Daylight Time"} + lg{"Israel Time"} + ls{"Israel Standard Time"} + } + "meta:Japan"{ + ld{"Japan Daylight Time"} + lg{"Japan Time"} + ls{"Japan Standard Time"} + } + "meta:Kazakhstan_Eastern"{ + ls{"East Kazakhstan Time"} + } + "meta:Kazakhstan_Western"{ + ls{"West Kazakhstan Time"} + } + "meta:Korea"{ + ld{"Korean Daylight Time"} + lg{"Korean Time"} + ls{"Korean Standard Time"} + } + "meta:Kosrae"{ + ls{"Kosrae Time"} + } + "meta:Krasnoyarsk"{ + ld{"Krasnoyarsk Summer Time"} + lg{"Krasnoyarsk Time"} + ls{"Krasnoyarsk Standard Time"} + } + "meta:Kyrgystan"{ + ls{"Kyrgyzstan Time"} + } + "meta:Line_Islands"{ + ls{"Line Islands Time"} + } + "meta:Lord_Howe"{ + ld{"Lord Howe Daylight Time"} + lg{"Lord Howe Time"} + ls{"Lord Howe Standard Time"} + } + "meta:Macquarie"{ + ls{"Macquarie Island Time"} + } + "meta:Magadan"{ + ld{"Magadan Summer Time"} + lg{"Magadan Time"} + ls{"Magadan Standard Time"} + } + "meta:Malaysia"{ + ls{"Malaysia Time"} + } + "meta:Maldives"{ + ls{"Maldives Time"} + } + "meta:Marquesas"{ + ls{"Marquesas Time"} + } + "meta:Marshall_Islands"{ + ls{"Marshall Islands Time"} + } + "meta:Mauritius"{ + ld{"Mauritius Summer Time"} + lg{"Mauritius Time"} + ls{"Mauritius Standard Time"} + } + "meta:Mawson"{ + ls{"Mawson Time"} + } + "meta:Mongolia"{ + ld{"Ulaanbaatar Summer Time"} + lg{"Ulaanbaatar Time"} + ls{"Ulaanbaatar Standard Time"} + } + "meta:Moscow"{ + ld{"Moscow Summer Time"} + lg{"Moscow Time"} + ls{"Moscow Standard Time"} + } + "meta:Myanmar"{ + ls{"Myanmar Time"} + } + "meta:Nauru"{ + ls{"Nauru Time"} + } + "meta:Nepal"{ + ls{"Nepal Time"} + } + "meta:New_Caledonia"{ + ld{"New Caledonia Summer Time"} + lg{"New Caledonia Time"} + ls{"New Caledonia Standard Time"} + } + "meta:New_Zealand"{ + ld{"New Zealand Daylight Time"} + lg{"New Zealand Time"} + ls{"New Zealand Standard Time"} + } + "meta:Niue"{ + ls{"Niue Time"} + } + "meta:Norfolk"{ + ls{"Norfolk Island Time"} + } + "meta:Noronha"{ + ld{"Fernando de Noronha Summer Time"} + lg{"Fernando de Noronha Time"} + ls{"Fernando de Noronha Standard Time"} + } + "meta:Novosibirsk"{ + ld{"Novosibirsk Summer Time"} + lg{"Novosibirsk Time"} + ls{"Novosibirsk Standard Time"} + } + "meta:Omsk"{ + ld{"Omsk Summer Time"} + lg{"Omsk Time"} + ls{"Omsk Standard Time"} + } + "meta:Pakistan"{ + ld{"Pakistan Summer Time"} + lg{"Pakistan Time"} + ls{"Pakistan Standard Time"} + } + "meta:Palau"{ + ls{"Palau Time"} + } + "meta:Papua_New_Guinea"{ + ls{"Papua New Guinea Time"} + } + "meta:Paraguay"{ + ld{"Paraguay Summer Time"} + lg{"Paraguay Time"} + ls{"Paraguay Standard Time"} + } + "meta:Peru"{ + ld{"Peru Summer Time"} + lg{"Peru Time"} + ls{"Peru Standard Time"} + } + "meta:Philippines"{ + ld{"Philippine Summer Time"} + lg{"Philippine Time"} + ls{"Philippine Standard Time"} + } + "meta:Phoenix_Islands"{ + ls{"Phoenix Islands Time"} + } + "meta:Pitcairn"{ + ls{"Pitcairn Time"} + } + "meta:Ponape"{ + ls{"Ponape Time"} + } + "meta:Pyongyang"{ + ls{"Pyongyang Time"} + } + "meta:Reunion"{ + ls{"Réunion Time"} + } + "meta:Rothera"{ + ls{"Rothera Time"} + } + "meta:Sakhalin"{ + ld{"Sakhalin Summer Time"} + lg{"Sakhalin Time"} + ls{"Sakhalin Standard Time"} + } + "meta:Samoa"{ + ld{"Samoa Daylight Time"} + lg{"Samoa Time"} + ls{"Samoa Standard Time"} + } + "meta:Seychelles"{ + ls{"Seychelles Time"} + } + "meta:Singapore"{ + ls{"Singapore Standard Time"} + } + "meta:Solomon"{ + ls{"Solomon Islands Time"} + } + "meta:South_Georgia"{ + ls{"South Georgia Time"} + } + "meta:Suriname"{ + ls{"Suriname Time"} + } + "meta:Syowa"{ + ls{"Syowa Time"} + } + "meta:Tahiti"{ + ls{"Tahiti Time"} + } + "meta:Taipei"{ + ld{"Taipei Daylight Time"} + lg{"Taipei Time"} + ls{"Taipei Standard Time"} + } + "meta:Tajikistan"{ + ls{"Tajikistan Time"} + } + "meta:Tokelau"{ + ls{"Tokelau Time"} + } + "meta:Tonga"{ + ld{"Tonga Summer Time"} + lg{"Tonga Time"} + ls{"Tonga Standard Time"} + } + "meta:Truk"{ + ls{"Chuuk Time"} + } + "meta:Turkmenistan"{ + ld{"Turkmenistan Summer Time"} + lg{"Turkmenistan Time"} + ls{"Turkmenistan Standard Time"} + } + "meta:Tuvalu"{ + ls{"Tuvalu Time"} + } + "meta:Uruguay"{ + ld{"Uruguay Summer Time"} + lg{"Uruguay Time"} + ls{"Uruguay Standard Time"} + } + "meta:Uzbekistan"{ + ld{"Uzbekistan Summer Time"} + lg{"Uzbekistan Time"} + ls{"Uzbekistan Standard Time"} + } + "meta:Vanuatu"{ + ld{"Vanuatu Summer Time"} + lg{"Vanuatu Time"} + ls{"Vanuatu Standard Time"} + } + "meta:Venezuela"{ + ls{"Venezuela Time"} + } + "meta:Vladivostok"{ + ld{"Vladivostok Summer Time"} + lg{"Vladivostok Time"} + ls{"Vladivostok Standard Time"} + } + "meta:Volgograd"{ + ld{"Volgograd Summer Time"} + lg{"Volgograd Time"} + ls{"Volgograd Standard Time"} + } + "meta:Vostok"{ + ls{"Vostok Time"} + } + "meta:Wake"{ + ls{"Wake Island Time"} + } + "meta:Wallis"{ + ls{"Wallis & Futuna Time"} + } + "meta:Yakutsk"{ + ld{"Yakutsk Summer Time"} + lg{"Yakutsk Time"} + ls{"Yakutsk Standard Time"} + } + "meta:Yekaterinburg"{ + ld{"Yekaterinburg Summer Time"} + lg{"Yekaterinburg Time"} + ls{"Yekaterinburg Standard Time"} + } fallbackFormat{"{1} ({0})"} gmtFormat{"WAT{0}"} gmtZeroFormat{"WAT"} hourFormat{"+HH:mm;-HH:mm"} - regionFormat{"{0} Ìgbà"} + regionFormat{"Ìgbà {0}"} regionFormatDaylight{"{0} Àkókò ojúmọmọ"} regionFormatStandard{"{0} Ìlànà Àkókò"} } diff --git a/source/data/zone/yo_BJ.txt b/source/data/zone/yo_BJ.txt index dcf5538..c14b071 100644 --- a/source/data/zone/yo_BJ.txt +++ b/source/data/zone/yo_BJ.txt @@ -1,11 +1,8 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yo_BJ{ - Version{"2.1.48.77"} + Version{"36"} zoneStrings{ - "Africa:Lagos"{ - ec{"Lagos"} - } "Etc:UTC"{ ls{"Àpapɔ̀ Àkókò Àgbáyé"} } @@ -52,15 +49,6 @@ yo_BJ{ lg{"Àkókò Ìwɔ Oòrùn Europe"} ls{"Àkókò àsikò Ìwɔ Oòrùn Europe"} } - "meta:GMT"{ - ls{"Greenwich Mean Time"} - } - fallbackFormat{"{1} ({0})"} - gmtFormat{"WAT{0}"} - gmtZeroFormat{"WAT"} - hourFormat{"+HH:mm;-HH:mm"} - regionFormat{"{0} Ìgbà"} regionFormatDaylight{"{0} Àkókò ojúmɔmɔ"} - regionFormatStandard{"{0} Ìlànà Àkókò"} } } diff --git a/source/data/zone/yue.txt b/source/data/zone/yue.txt index 9e94f46..ac110da 100644 --- a/source/data/zone/yue.txt +++ b/source/data/zone/yue.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yue{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"阿比讓"} @@ -810,6 +810,9 @@ yue{ "Asia:Qatar"{ ec{"卡達"} } + "Asia:Qostanay"{ + ec{"科斯塔奈"} + } "Asia:Qyzylorda"{ ec{"克孜勒奧爾達"} } diff --git a/source/data/zone/yue_Hans.txt b/source/data/zone/yue_Hans.txt index 96167ff..428c28f 100644 --- a/source/data/zone/yue_Hans.txt +++ b/source/data/zone/yue_Hans.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License yue_Hans{ %%Parent{"root"} - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"阿比让"} @@ -811,6 +811,9 @@ yue_Hans{ "Asia:Qatar"{ ec{"卡达"} } + "Asia:Qostanay"{ + ec{"科斯塔奈"} + } "Asia:Qyzylorda"{ ec{"克孜勒奥尔达"} } diff --git a/source/data/zone/yue_Hant.txt b/source/data/zone/yue_Hant.txt index 1aaa640..a4fe9d6 100644 --- a/source/data/zone/yue_Hant.txt +++ b/source/data/zone/yue_Hant.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License yue_Hant{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/zone/zgh.txt b/source/data/zone/zgh.txt index f3d4f35..8821a33 100644 --- a/source/data/zone/zgh.txt +++ b/source/data/zone/zgh.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zgh{ - Version{"2.1.48.4"} + Version{"36"} } diff --git a/source/data/zone/zh.txt b/source/data/zone/zh.txt index 2b76d36..1f610aa 100644 --- a/source/data/zone/zh.txt +++ b/source/data/zone/zh.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh{ - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"阿比让"} @@ -790,7 +790,7 @@ zh{ ec{"新库兹涅茨克"} } "Asia:Novosibirsk"{ - ec{"诺沃西比尔斯克"} + ec{"新西伯利亚"} } "Asia:Omsk"{ ec{"鄂木斯克"} @@ -956,7 +956,6 @@ zh{ } "Etc:UTC"{ ls{"协调世界时"} - ss{"UTC"} } "Etc:Unknown"{ ec{"未知城市"} @@ -992,7 +991,7 @@ zh{ ec{"布达佩斯"} } "Europe:Busingen"{ - ec{"布辛根"} + ec{"比辛根"} } "Europe:Chisinau"{ ec{"基希讷乌"} @@ -1014,7 +1013,7 @@ zh{ ec{"赫尔辛基"} } "Europe:Isle_of_Man"{ - ec{"曼岛"} + ec{"马恩岛"} } "Europe:Istanbul"{ ec{"伊斯坦布尔"} diff --git a/source/data/zone/zh_Hans.txt b/source/data/zone/zh_Hans.txt index 2e93fd9..5a74156 100644 --- a/source/data/zone/zh_Hans.txt +++ b/source/data/zone/zh_Hans.txt @@ -1,5 +1,5 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hans{ - Version{"2.1.47.71"} + Version{"36"} } diff --git a/source/data/zone/zh_Hans_SG.txt b/source/data/zone/zh_Hans_SG.txt index 6e9b3fa..d714012 100644 --- a/source/data/zone/zh_Hans_SG.txt +++ b/source/data/zone/zh_Hans_SG.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hans_SG{ - Version{"2.1.47.71"} + Version{"36"} zoneStrings{ "America:Scoresbysund"{ ec{"斯考斯伯松德"} diff --git a/source/data/zone/zh_Hant.txt b/source/data/zone/zh_Hant.txt index c995d96..3dc0c69 100644 --- a/source/data/zone/zh_Hant.txt +++ b/source/data/zone/zh_Hant.txt @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hant{ %%Parent{"root"} - Version{"2.1.49.82"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"阿比讓"} @@ -957,7 +957,6 @@ zh_Hant{ } "Etc:UTC"{ ls{"世界標準時間"} - ss{"UTC"} } "Etc:Unknown"{ ec{"未知城市"} diff --git a/source/data/zone/zh_Hant_HK.txt b/source/data/zone/zh_Hant_HK.txt index 4fa94bc..84a1b47 100644 --- a/source/data/zone/zh_Hant_HK.txt +++ b/source/data/zone/zh_Hant_HK.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hant_HK{ - Version{"2.1.47.86"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"阿比贊"} @@ -530,9 +530,6 @@ zh_Hant_HK{ lg{"北美太平洋時間"} ls{"北美太平洋標準時間"} } - "meta:Aqtau"{ - lg{"阿克陶時間"} - } "meta:Azerbaijan"{ ld{"亞塞拜疆夏令時間"} lg{"亞塞拜疆時間"} @@ -566,9 +563,6 @@ zh_Hant_HK{ "meta:Guyana"{ ls{"圭亞那時間"} } - "meta:Hawaii_Aleutian"{ - lg{"夏威夷-阿留申時間"} - } "meta:India"{ ls{"印度時間"} } diff --git a/source/data/zone/zh_Hant_MO.txt b/source/data/zone/zh_Hant_MO.txt index a0fc4d8..707fe99 100644 --- a/source/data/zone/zh_Hant_MO.txt +++ b/source/data/zone/zh_Hant_MO.txt @@ -2,5 +2,5 @@ // License & terms of use: http://www.unicode.org/copyright.html#License zh_Hant_MO{ %%Parent{"zh_Hant_HK"} - Version{"2.1.47.86"} + Version{"36"} } diff --git a/source/data/zone/zu.txt b/source/data/zone/zu.txt index 4eabc05..a365cd1 100644 --- a/source/data/zone/zu.txt +++ b/source/data/zone/zu.txt @@ -1,7 +1,7 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html#License zu{ - Version{"2.1.48.17"} + Version{"36"} zoneStrings{ "Africa:Abidjan"{ ec{"i-Abidjan"} @@ -559,7 +559,7 @@ zu{ ec{"i-St. Kitts"} } "America:St_Lucia"{ - ec{"i-"} + ec{"I-St. Lucia"} } "America:St_Thomas"{ ec{"i-St. Thomas"} @@ -660,9 +660,6 @@ zu{ "Asia:Ashgabat"{ ec{"i-Ashgabat"} } - "Asia:Atyrau"{ - ec{"Atyrau"} - } "Asia:Baghdad"{ ec{"i-Baghdad"} } @@ -810,6 +807,9 @@ zu{ "Asia:Qatar"{ ec{"i-Qatar"} } + "Asia:Qostanay"{ + ec{"I-Kostanay"} + } "Asia:Qyzylorda"{ ec{"i-Qyzylorda"} } @@ -1146,7 +1146,7 @@ zu{ ec{"i-Chagos"} } "Indian:Christmas"{ - ec{"i-Christmas"} + ec{"Ukhisimusi"} } "Indian:Cocos"{ ec{"i-Cocos"} @@ -1299,12 +1299,12 @@ zu{ ls{"Isikhathi saseMpumalanga Afrika"} } "meta:Africa_Southern"{ - ls{"Isikhathi esijwayelekile saseNingizimu Afrika"} + ls{"Isikhathi esivamile saseNingizimu Afrika"} } "meta:Africa_Western"{ ld{"Isikhathi sasehlobo saseNtshonalanga Afrika"} lg{"Isikhathi saseNtshonalanga Afrika"} - ls{"Isikhathi esijwayelekile saseNtshonalanga Afrika"} + ls{"Isikhathi esivamile saseNtshonalanga Afrika"} } "meta:Alaska"{ ld{"Isikhathi sase-Alaska sasemini"} @@ -1364,7 +1364,7 @@ zu{ "meta:Armenia"{ ld{"Isikhathi sehlobo sase-Armenia"} lg{"Isikhathi saseArmenia"} - ls{"Isikhathi esezingeni sase-Armenia"} + ls{"Isikhathi esivamile sase-Armenia"} } "meta:Atlantic"{ ld{"Isikhathi sase-Atlantic sasemini"} @@ -1426,7 +1426,7 @@ zu{ ls{"Isikhathi esezingeni sase-Cape Verde"} } "meta:Chamorro"{ - ls{"Isikhathi esijwayelekile sase-Chamorro"} + ls{"Isikhathi esivamile sase-Chamorro"} } "meta:Chatham"{ ld{"Isikhathi sasemini sase-Chatham"} @@ -1446,7 +1446,7 @@ zu{ "meta:Choibalsan"{ ld{"Isikhathi sehlobo e-Choibalsan"} lg{"Isikhathi sase-Choibalsan"} - ls{"Isikhathi Esimisiwe sase-Choibalsan"} + ls{"Isikhathi Esivamile sase-Choibalsan"} } "meta:Christmas"{ ls{"Isikhathi sase-Christmas Island"} @@ -1594,7 +1594,7 @@ zu{ "meta:Irkutsk"{ ld{"Isikhathi sasehlobo e-Irkutsk"} lg{"Isikhathi sase-Irkutsk"} - ls{"Isikhathi Esimisiwe sase-Irkutsk"} + ls{"Isikhathi Esivamile sase-Irkutsk"} } "meta:Israel"{ ld{"Isikhathi sasemini sakwa-Israel"} @@ -1620,7 +1620,7 @@ zu{ "meta:Korea"{ ld{"Isikhathi semini sase-Korea"} lg{"Isikhathi sase-Korea"} - ls{"Isikhathi esisezengeni sase-Korea"} + ls{"Isikhathi Esivamile sase-Korea"} } "meta:Kosrae"{ ls{"Isikhathi sase-Kosrae"} @@ -1628,7 +1628,7 @@ zu{ "meta:Krasnoyarsk"{ ld{"Isikhathi sasehlobo e-Krasnoyarsk"} lg{"Isikhathi sase-Krasnoyarsk"} - ls{"Isikhathi Esimisiwe sase-Krasnoyarsk"} + ls{"Isikhathi Esivamile sase-Krasnoyarsk"} } "meta:Kyrgystan"{ ls{"Isikhathi sase-Kyrgystan"} @@ -1647,7 +1647,7 @@ zu{ "meta:Magadan"{ ld{"Isikhathi sasehlobo e-Magadan"} lg{"Isikhathi sase-Magadan"} - ls{"Isikhathi Esimisiwe sase-Magadan"} + ls{"Isikhathi Esivamile sase-Magadan"} } "meta:Malaysia"{ ls{"Isikhathi sase-Malaysia"} @@ -1701,7 +1701,7 @@ zu{ "meta:New_Caledonia"{ ld{"Isikhathi sase-New Caledonia sasehlobo"} lg{"Isikhathi sase-New Caledonia"} - ls{"Isikhathi sase-New Caledonia esijwayelekile"} + ls{"Isikhathi sase-New Caledonia esivamile"} } "meta:New_Zealand"{ ld{"Isikhathi sasemini sase-New Zealand"} @@ -1722,17 +1722,17 @@ zu{ "meta:Noronha"{ ld{"Isikhathi sase-Fernando de Noronha sasehlobo"} lg{"Isikhathi sase-Fernando de Noronha"} - ls{"Isikhathi sase-Fernando de Noronha esijwayelekile"} + ls{"Isikhathi sase-Fernando de Noronha esivamile"} } "meta:Novosibirsk"{ ld{"Isikhathi sasehlobo sase-Novosibirsk"} lg{"Isikhathi sase-Novosibirsk"} - ls{"Isikhathi Esimisiwe sase-Novosibirsk"} + ls{"Isikhathi Esivamile sase-Novosibirsk"} } "meta:Omsk"{ ld{"Isikhathi sasehlobo sase-Omsk"} lg{"Isikhathi sase-Omsk"} - ls{"Isikhathi Esimisiwe sase-Omsk"} + ls{"Isikhathi Esivamile sase-Omsk"} } "meta:Pakistan"{ ld{"Isikhathi sase-Pakistan sasehlobo"} @@ -1748,12 +1748,12 @@ zu{ "meta:Paraguay"{ ld{"Isikhathi sase-Paraguay sasehlobo"} lg{"Isikhathi sase-Paraguay"} - ls{"Isikhathi sase-Paraguay esijwayelekile"} + ls{"Isikhathi sase-Paraguay esivamile"} } "meta:Peru"{ ld{"Isikhathi sase-Peru sasehlobo"} lg{"Isikhathi sase-Peru"} - ls{"Isikhathi sase-Peru esijwayelekile"} + ls{"Isikhathi sase-Peru esivamile"} } "meta:Philippines"{ ld{"Isikhathi sehlobo sase-Philippine"} @@ -1786,7 +1786,7 @@ zu{ "meta:Sakhalin"{ ld{"Isikhathi sasehlobo e-Sakhalin"} lg{"Isikhathi sase-Sakhalin"} - ls{"Isikhathi Esimisiwe sase-Sakhalin"} + ls{"Isikhathi Esivamile sase-Sakhalin"} } "meta:Samara"{ ld{"esase-Samara Summer Time"} @@ -1796,7 +1796,7 @@ zu{ "meta:Samoa"{ ld{"Isikhathi sase-Samoa sasemini"} lg{"Isikhathi sase-Samoa"} - ls{"Isikhathi sase-Samoa esijwayelekile"} + ls{"Isikhathi sase-Samoa esivamile"} } "meta:Seychelles"{ ls{"Isikhathi sase-Seychelles"} @@ -1833,7 +1833,7 @@ zu{ "meta:Tonga"{ ld{"Isikhathi sase-Tonga sasehlobo"} lg{"Isikhathi sase-Tonga"} - ls{"Isikhathi sase-Tonga esijwayelekile"} + ls{"Isikhathi sase-Tonga esivamile"} } "meta:Truk"{ ls{"Isikhathi sase-Chuuk"} @@ -1867,12 +1867,12 @@ zu{ "meta:Vladivostok"{ ld{"Isikhathi sasehlobo e-Vladivostok"} lg{"Isikhathi sase-Vladivostok"} - ls{"Isikhathi Esimisiwe sase-Vladivostok"} + ls{"Isikhathi Esivamile sase-Vladivostok"} } "meta:Volgograd"{ ld{"Isikhathi sase-Volgograd sasehlobo"} lg{"Isikhathi sase-Volgograd"} - ls{"Isikhathi Esimisiwe sase-Volgograd"} + ls{"Isikhathi Esivamile sase-Volgograd"} } "meta:Vostok"{ ls{"Isikhathi sase-Vostok"} @@ -1886,12 +1886,12 @@ zu{ "meta:Yakutsk"{ ld{"Isikhathi sasehlobo e-Yakutsk"} lg{"Isikhathi sase-Yakutsk"} - ls{"Isikhathi Esimisiwe sase-Yakutsk"} + ls{"Isikhathi Esivamile sase-Yakutsk"} } "meta:Yekaterinburg"{ ld{"Isikhathi sasehlobo e-Yekaterinburg"} lg{"Isikhathi sase-Yekaterinburg"} - ls{"Isikhathi Esimisiwe sase-Yekaterinburg"} + ls{"Isikhathi Esivamile sase-Yekaterinburg"} } fallbackFormat{"{1} ({0})"} gmtFormat{"GMT{0}"} diff --git a/source/extra/Makefile.in b/source/extra/Makefile.in index 4dd2818..2e48dba 100644 --- a/source/extra/Makefile.in +++ b/source/extra/Makefile.in @@ -23,7 +23,7 @@ subdir = extra ## Files to remove for 'make clean' CLEANFILES = *~ -SUBDIRS = uconv +SUBDIRS = scrptrun uconv ## List of phony targets .PHONY : all all-local all-recursive install install-local \ diff --git a/source/extra/scrptrun/scrptrun.cpp b/source/extra/scrptrun/scrptrun.cpp index d36ec61..0a438c3 100644 --- a/source/extra/scrptrun/scrptrun.cpp +++ b/source/extra/scrptrun/scrptrun.cpp @@ -19,6 +19,8 @@ #include "cmemory.h" #include "scrptrun.h" +U_NAMESPACE_BEGIN + const char ScriptRun::fgClassID=0; UChar32 ScriptRun::pairedChars[] = { @@ -201,3 +203,4 @@ UBool ScriptRun::next() return true; } +U_NAMESPACE_END diff --git a/source/extra/scrptrun/scrptrun.h b/source/extra/scrptrun/scrptrun.h index 0ef5df2..ac6bfe3 100644 --- a/source/extra/scrptrun/scrptrun.h +++ b/source/extra/scrptrun/scrptrun.h @@ -20,6 +20,8 @@ #include "unicode/uobject.h" #include "unicode/uscript.h" +U_NAMESPACE_BEGIN + struct ScriptRecord { UChar32 startChar; @@ -152,5 +154,6 @@ inline void ScriptRun::reset(const UChar chars[], int32_t start, int32_t length) reset(start, length); } +U_NAMESPACE_END #endif diff --git a/source/extra/scrptrun/srtest.cpp b/source/extra/scrptrun/srtest.cpp index 5792071..8d59fb9 100644 --- a/source/extra/scrptrun/srtest.cpp +++ b/source/extra/scrptrun/srtest.cpp @@ -27,9 +27,9 @@ UChar testChars[] = { int32_t testLength = UPRV_LENGTHOF(testChars); -void main() +int main() { - ScriptRun scriptRun(testChars, 0, testLength); + icu::ScriptRun scriptRun(testChars, 0, testLength); while (scriptRun.next()) { int32_t start = scriptRun.getScriptStart(); @@ -38,4 +38,5 @@ void main() printf("Script '%s' from %d to %d.\n", uscript_getName(code), start, end); } + return 0; } diff --git a/source/extra/uconv/makedata.mak b/source/extra/uconv/makedata.mak index 2cc07d6..b30f597 100644 --- a/source/extra/uconv/makedata.mak +++ b/source/extra/uconv/makedata.mak @@ -17,7 +17,7 @@ CFG=Debug !ENDIF #Here we test if a valid configuration is given -!IF "$(CFG)" != "Release" && "$(CFG)" != "release" && "$(CFG)" != "Debug" && "$(CFG)" != "debug" && "$(CFG)" != "x86\Release" && "$(CFG)" != "x86\Debug" && "$(CFG)" != "x64\Release" && "$(CFG)" != "x64\Debug" +!IF "$(CFG)" != "Release" && "$(CFG)" != "release" && "$(CFG)" != "Debug" && "$(CFG)" != "debug" && "$(CFG)" != "x86\Release" && "$(CFG)" != "x86\Debug" && "$(CFG)" != "x64\Release" && "$(CFG)" != "x64\Debug" && "$(CFG)" != "ARM\Release" && "$(CFG)" != "ARM\Debug" && "$(CFG)" != "ARM64\Release" && "$(CFG)" != "ARM64\Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: @@ -51,7 +51,9 @@ PKGMODE=static ICD=$(ICUDATA)^\ DATA_PATH=$(ICUP)\data^\ -!IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug" +# Use the x64 tools for building ARM and ARM64. +# Note: This is similar to the TOOLS CFG PATH in source\data\makedata.mak +!IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug" || "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" || "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" ICUTOOLS=$(ICUP)\bin64 PATH = $(ICUP)\bin64;$(PATH) !ELSE @@ -59,14 +61,29 @@ ICUTOOLS=$(ICUP)\bin PATH = $(ICUP)\bin;$(PATH) !ENDIF +# If building ARM/ARM, then we need to pass the arch as an argument. +EXTRA_PKGDATA_ARGUMENTS= +!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" +EXTRA_PKGDATA_ARGUMENTS=-a ARM +!ENDIF +!IF "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" +EXTRA_PKGDATA_ARGUMENTS=-a ARM64 +!ENDIF + # Make sure the necessary tools exist before continuing. (This is to prevent cryptic errors from NMAKE). !IF !EXISTS($(ICUTOOLS)\pkgdata.exe) !MESSAGE Unable to find "$(ICUTOOLS)\pkgdata.exe" !ERROR The tool 'pkgdata.exe' does not exist! (Have you built all of ICU yet?). +!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" || "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" +!ERROR Note that the ARM and ARM64 builds require building x64 first. +!ENDIF !ENDIF !IF !EXISTS($(ICUTOOLS)\genrb.exe) !MESSAGE Unable to find "$(ICUTOOLS)\genrb.exe" !ERROR The tool 'genrb.exe' does not exist! (Have you built all of ICU yet?). +!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug" || "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug" +!ERROR Note that the ARM and ARM64 builds require building x64 first. +!ENDIF !ENDIF # Suffixes for data files @@ -98,7 +115,7 @@ ALL : $(OUTPUT) # invoke pkgdata - static "$(DLL_OUTPUT)\$(RESNAME).lib" : $(RB_FILES) $(RESFILES) @echo Building $(RESNAME).lib - @"$(ICUTOOLS)\pkgdata" -f -v -m static -c -p $(RESNAME) -d "$(DLL_OUTPUT)" -s "$(RESDIR)" < <_ProjectFileVersion>10.0.30319.1 - .\x86\Release\ - .\x86\Release\ - false - .\x86\Debug\ - .\x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration) + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + x86\$(Configuration) + + true + false - + - - ..\..\..\include;..\..\common;%(AdditionalIncludeDirectories) - UCONVMSG_LINK;%(PreprocessorDefinitions) - true - Level3 - - - - - copy "$(TargetPath)" ..\..\..\bin - - $(ProjectDir)..\..\..\bin\$(TargetFileName);%(Outputs) - - .\x86\Release/uconv.tlb + $(OutDir)\uconv.tlb - MultiThreadedDLL - true - .\x86\Release/uconv.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ + Level3 Default + true + ..\..\..\include;..\..\common;%(AdditionalIncludeDirectories) + UCONVMSG_LINK;%(PreprocessorDefinitions) + $(OutDir)\uconv.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)\uconv.pdb - uconvmsg.lib;icuuc.lib;icuin.lib;%(AdditionalDependencies) - .\x86\Release/uconv.exe - x86\Release;..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Release/uconv.pdb Console - false - - + $(OutDir)\uconv.exe + uconvmsg.lib;%(AdditionalDependencies) + $(OutDir);..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - copy "$(TargetPath)" ..\..\..\bin - - $(ProjectDir)..\..\..\bin\$(TargetFileName);%(Outputs) + copy "$(TargetPath)" ..\..\..\$(IcuBinOutputDir) + ..\..\..\$(IcuBinOutputDir)\$(TargetFileName);%(Outputs) - - .\x86\Debug/uconv.tlb - + + + + true MultiThreadedDebugDLL - .\x86\Debug/uconv.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ - EditAndContinue - Default - uconvmsg.lib;icuucd.lib;icuind.lib;%(AdditionalDependencies) - .\x86\Debug/uconv.exe - x86\Debug;..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\x86\Debug/uconv.pdb - Console - false - - + icuucd.lib;icuind.lib;%(AdditionalDependencies) - - - copy "$(TargetPath)" ..\..\..\bin64 - - $(ProjectDir)..\..\..\bin64\$(TargetFileName);%(Outputs) - - - .\x64\Release/uconv.tlb - + + MultiThreadedDLL true - .\x64\Release/uconv.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Default - uconvmsg.lib;icuuc.lib;icuin.lib;%(AdditionalDependencies) - .\x64\Release/uconv.exe - x64\Release;..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Release/uconv.pdb - Console - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - $(ProjectDir)..\..\..\bin64\$(TargetFileName);%(Outputs) - - - .\x64\Debug/uconv.tlb - - - MultiThreadedDebugDLL - .\x64\Debug/uconv.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - ProgramDatabase - Default - - - uconvmsg.lib;icuucd.lib;icuind.lib;%(AdditionalDependencies) - .\x64\Debug/uconv.exe - x64\Debug;..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Debug/uconv.pdb - Console + icuuc.lib;icuin.lib;%(AdditionalDependencies) @@ -178,18 +102,8 @@ - nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x86\Debug - - x86\Debug/uconvmsg.lib;%(Outputs) - nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x64\Debug - - x64\Debug/uconvmsg.lib;%(Outputs) - nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x86\Release - - x86\Release/uconvmsg.lib;%(Outputs) - nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x64\Release - - x64\Release/uconvmsg.lib;%(Outputs) + nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=$(MakeCFG) + $(MakeCFG)\uconvmsg.lib;%(Outputs) diff --git a/source/i18n/Makefile.in b/source/i18n/Makefile.in index 2d00187..f22c20e 100644 --- a/source/i18n/Makefile.in +++ b/source/i18n/Makefile.in @@ -103,16 +103,18 @@ number_affixutils.o number_compact.o number_decimalquantity.o \ number_decimfmtprops.o number_fluent.o number_formatimpl.o number_grouping.o \ number_integerwidth.o number_longnames.o number_modifiers.o number_notation.o number_output.o \ number_padding.o number_patternmodifier.o number_patternstring.o \ -number_rounding.o number_scientific.o number_stringbuilder.o number_utils.o number_asformat.o \ +number_rounding.o number_scientific.o number_utils.o number_asformat.o \ number_mapper.o number_multiplier.o number_currencysymbols.o number_skeletons.o number_capi.o \ -double-conversion.o double-conversion-bignum-dtoa.o double-conversion-bignum.o \ -double-conversion-cached-powers.o double-conversion-diy-fp.o \ +double-conversion-string-to-double.o double-conversion-double-to-string.o \ +double-conversion-bignum-dtoa.o double-conversion-bignum.o \ +double-conversion-cached-powers.o \ double-conversion-fast-dtoa.o double-conversion-strtod.o \ -numparse_stringsegment.o numparse_parsednumber.o numparse_impl.o \ +string_segment.o numparse_parsednumber.o numparse_impl.o \ numparse_symbols.o numparse_decimal.o numparse_scientific.o numparse_currency.o \ numparse_affixes.o numparse_compositions.o numparse_validators.o \ numrange_fluent.o numrange_impl.o \ -erarules.o formattedvalue.o formattedval_iterimpl.o formattedval_sbimpl.o +erarules.o \ +formattedvalue.o formattedval_iterimpl.o formattedval_sbimpl.o formatted_string_builder.o ## Header files to install HEADERS = $(srcdir)/unicode/*.h diff --git a/source/i18n/alphaindex.cpp b/source/i18n/alphaindex.cpp index 3950d1a..9c312bd 100644 --- a/source/i18n/alphaindex.cpp +++ b/source/i18n/alphaindex.cpp @@ -260,8 +260,7 @@ AlphabeticIndex::ImmutableIndex *AlphabeticIndex::buildImmutableIndex(UErrorCode // but that would be worth it only if this method is called multiple times, // or called after using the old-style bucket iterator API. LocalPointer immutableBucketList(createBucketList(errorCode)); - LocalPointer coll( - static_cast(collatorPrimaryOnly_->clone())); + LocalPointer coll(collatorPrimaryOnly_->clone()); if (immutableBucketList.isNull() || coll.isNull()) { errorCode = U_MEMORY_ALLOCATION_ERROR; return NULL; @@ -907,7 +906,7 @@ void AlphabeticIndex::init(const Locale *locale, UErrorCode &status) { return; } } - collatorPrimaryOnly_ = static_cast(collator_->clone()); + collatorPrimaryOnly_ = collator_->clone(); if (collatorPrimaryOnly_ == NULL) { status = U_MEMORY_ALLOCATION_ERROR; return; @@ -958,7 +957,7 @@ collatorComparator(const void *context, const void *left, const void *right) { } if (leftString == NULL) { return 1; - }; + } if (rightString == NULL) { return -1; } diff --git a/source/i18n/anytrans.cpp b/source/i18n/anytrans.cpp index 6e382b8..167b018 100644 --- a/source/i18n/anytrans.cpp +++ b/source/i18n/anytrans.cpp @@ -226,7 +226,7 @@ AnyTransliterator::AnyTransliterator(const AnyTransliterator& o) : /** * Transliterator API. */ -Transliterator* AnyTransliterator::clone() const { +AnyTransliterator* AnyTransliterator::clone() const { return new AnyTransliterator(*this); } diff --git a/source/i18n/anytrans.h b/source/i18n/anytrans.h index 703d42b..627dee3 100644 --- a/source/i18n/anytrans.h +++ b/source/i18n/anytrans.h @@ -66,7 +66,7 @@ public: /** * Transliterator API. */ - virtual Transliterator* clone() const; + virtual AnyTransliterator* clone() const; /** * Implements {@link Transliterator#handleTransliterate}. diff --git a/source/i18n/astro.cpp b/source/i18n/astro.cpp index e6dcfe8..f17b6db 100644 --- a/source/i18n/astro.cpp +++ b/source/i18n/astro.cpp @@ -65,10 +65,7 @@ static inline UBool isINVALID(double d) { return(uprv_isNaN(d)); } -static icu::UMutex *ccLock() { - static icu::UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static icu::UMutex ccLock; U_CDECL_BEGIN static UBool calendar_astro_cleanup(void) { @@ -1552,12 +1549,12 @@ int32_t CalendarCache::get(CalendarCache** cache, int32_t key, UErrorCode &statu if(U_FAILURE(status)) { return 0; } - umtx_lock(ccLock()); + umtx_lock(&ccLock); if(*cache == NULL) { createCache(cache, status); if(U_FAILURE(status)) { - umtx_unlock(ccLock()); + umtx_unlock(&ccLock); return 0; } } @@ -1565,7 +1562,7 @@ int32_t CalendarCache::get(CalendarCache** cache, int32_t key, UErrorCode &statu res = uhash_igeti((*cache)->fTable, key); U_DEBUG_ASTRO_MSG(("%p: GET: [%d] == %d\n", (*cache)->fTable, key, res)); - umtx_unlock(ccLock()); + umtx_unlock(&ccLock); return res; } @@ -1573,12 +1570,12 @@ void CalendarCache::put(CalendarCache** cache, int32_t key, int32_t value, UErro if(U_FAILURE(status)) { return; } - umtx_lock(ccLock()); + umtx_lock(&ccLock); if(*cache == NULL) { createCache(cache, status); if(U_FAILURE(status)) { - umtx_unlock(ccLock()); + umtx_unlock(&ccLock); return; } } @@ -1586,7 +1583,7 @@ void CalendarCache::put(CalendarCache** cache, int32_t key, int32_t value, UErro uhash_iputi((*cache)->fTable, key, value, &status); U_DEBUG_ASTRO_MSG(("%p: PUT: [%d] := %d\n", (*cache)->fTable, key, value)); - umtx_unlock(ccLock()); + umtx_unlock(&ccLock); } CalendarCache::CalendarCache(int32_t size, UErrorCode &status) { diff --git a/source/i18n/bocsu.h b/source/i18n/bocsu.h index 6b8ed51..631e29a 100644 --- a/source/i18n/bocsu.h +++ b/source/i18n/bocsu.h @@ -144,14 +144,14 @@ U_NAMESPACE_END * yields negative modulo results and quotients that are one more than * what we need here. */ -#define NEGDIVMOD(n, d, m) { \ +#define NEGDIVMOD(n, d, m) UPRV_BLOCK_MACRO_BEGIN { \ (m)=(n)%(d); \ (n)/=(d); \ if((m)<0) { \ --(n); \ (m)+=(d); \ } \ -} +} UPRV_BLOCK_MACRO_END U_CFUNC UChar32 u_writeIdenticalLevelRun(UChar32 prev, const UChar *s, int32_t length, icu::ByteSink &sink); diff --git a/source/i18n/brktrans.cpp b/source/i18n/brktrans.cpp index ac9e2af..46b0e34 100644 --- a/source/i18n/brktrans.cpp +++ b/source/i18n/brktrans.cpp @@ -64,7 +64,7 @@ BreakTransliterator::BreakTransliterator(const BreakTransliterator& o) : /** * Transliterator API. */ -Transliterator* BreakTransliterator::clone(void) const { +BreakTransliterator* BreakTransliterator::clone() const { return new BreakTransliterator(*this); } diff --git a/source/i18n/brktrans.h b/source/i18n/brktrans.h index 30cf4ea..cb3def9 100644 --- a/source/i18n/brktrans.h +++ b/source/i18n/brktrans.h @@ -54,7 +54,7 @@ public: * Transliterator API. * @return A copy of the object. */ - virtual Transliterator* clone(void) const; + virtual BreakTransliterator* clone() const; virtual const UnicodeString &getInsertion() const; diff --git a/source/i18n/buddhcal.cpp b/source/i18n/buddhcal.cpp index 6fac7a8..6083349 100644 --- a/source/i18n/buddhcal.cpp +++ b/source/i18n/buddhcal.cpp @@ -53,7 +53,7 @@ BuddhistCalendar& BuddhistCalendar::operator= ( const BuddhistCalendar& right) return *this; } -Calendar* BuddhistCalendar::clone(void) const +BuddhistCalendar* BuddhistCalendar::clone() const { return new BuddhistCalendar(*this); } @@ -133,7 +133,7 @@ void BuddhistCalendar::timeToFields(UDate theTime, UBool quick, UErrorCode& stat */ static UDate gSystemDefaultCenturyStart = DBL_MIN; static int32_t gSystemDefaultCenturyStartYear = -1; -static icu::UInitOnce gBCInitOnce; +static icu::UInitOnce gBCInitOnce = U_INITONCE_INITIALIZER; UBool BuddhistCalendar::haveDefaultCentury() const diff --git a/source/i18n/buddhcal.h b/source/i18n/buddhcal.h index 88509ba..0ad0886 100644 --- a/source/i18n/buddhcal.h +++ b/source/i18n/buddhcal.h @@ -94,7 +94,7 @@ public: * @return return a polymorphic copy of this calendar. * @internal */ - virtual Calendar* clone(void) const; + virtual BuddhistCalendar* clone() const; public: /** diff --git a/source/i18n/calendar.cpp b/source/i18n/calendar.cpp index 4f451ee..c043bb3 100644 --- a/source/i18n/calendar.cpp +++ b/source/i18n/calendar.cpp @@ -268,6 +268,8 @@ static ECalType getCalendarTypeForLocale(const char *locid) { // canonicalize, so grandfathered variant will be transformed to keywords // e.g ja_JP_TRADITIONAL -> ja_JP@calendar=japanese + // NOTE: Since ICU-20187, ja_JP_TRADITIONAL no longer canonicalizes, and + // the Gregorian calendar is returned instead. int32_t canonicalLen = uloc_canonicalize(locid, canonicalName, sizeof(canonicalName) - 1, &status); if (U_FAILURE(status)) { return CALTYPE_GREGORIAN; @@ -748,6 +750,7 @@ fSkippedWallTime(UCAL_WALLTIME_LAST) validLocale[0] = 0; actualLocale[0] = 0; if (U_FAILURE(success)) { + delete zone; return; } if(zone == 0) { @@ -2592,7 +2595,7 @@ Calendar::isWeekend(UDate date, UErrorCode &status) const return FALSE; } // clone the calendar so we don't mess with the real one. - Calendar *work = (Calendar*)this->clone(); + Calendar *work = this->clone(); if (work == NULL) { status = U_MEMORY_ALLOCATION_ERROR; return FALSE; @@ -2752,7 +2755,7 @@ Calendar::getActualMinimum(UCalendarDateFields field, UErrorCode& status) const // clone the calendar so we don't mess with the real one, and set it to // accept anything for the field values - Calendar *work = (Calendar*)this->clone(); + Calendar *work = this->clone(); if (work == NULL) { status = U_MEMORY_ALLOCATION_ERROR; return 0; diff --git a/source/i18n/casetrn.cpp b/source/i18n/casetrn.cpp index ac28365..bb650f8 100644 --- a/source/i18n/casetrn.cpp +++ b/source/i18n/casetrn.cpp @@ -125,7 +125,7 @@ CaseMapTransliterator::CaseMapTransliterator(const CaseMapTransliterator& o) : /** * Transliterator API. */ -/*Transliterator* CaseMapTransliterator::clone(void) const { +/*CaseMapTransliterator* CaseMapTransliterator::clone() const { return new CaseMapTransliterator(*this); }*/ diff --git a/source/i18n/casetrn.h b/source/i18n/casetrn.h index 744406e..2ec3e73 100644 --- a/source/i18n/casetrn.h +++ b/source/i18n/casetrn.h @@ -58,7 +58,7 @@ public: * Transliterator API. * @return a copy of the object. */ - virtual Transliterator* clone(void) const = 0; + virtual CaseMapTransliterator* clone() const = 0; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. diff --git a/source/i18n/chnsecal.cpp b/source/i18n/chnsecal.cpp index 2472870..4c03812 100644 --- a/source/i18n/chnsecal.cpp +++ b/source/i18n/chnsecal.cpp @@ -51,10 +51,7 @@ static void debug_chnsecal_msg(const char *pat, ...) // --- The cache -- -static icu::UMutex *astroLock() { // Protects access to gChineseCalendarAstro. - static icu::UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static icu::UMutex astroLock; static icu::CalendarAstronomer *gChineseCalendarAstro = NULL; // Lazy Creation & Access synchronized by class CalendarCache with a mutex. @@ -121,7 +118,7 @@ U_NAMESPACE_BEGIN //------------------------------------------------------------------------- -Calendar* ChineseCalendar::clone() const { +ChineseCalendar* ChineseCalendar::clone() const { return new ChineseCalendar(*this); } @@ -538,14 +535,14 @@ int32_t ChineseCalendar::winterSolstice(int32_t gyear) const { // PST 1298 with a final result of Dec 14 10:31:59 PST 1299. double ms = daysToMillis(Grego::fieldsToDay(gyear, UCAL_DECEMBER, 1)); - umtx_lock(astroLock()); + umtx_lock(&astroLock); if(gChineseCalendarAstro == NULL) { gChineseCalendarAstro = new CalendarAstronomer(); ucln_i18n_registerCleanup(UCLN_I18N_CHINESE_CALENDAR, calendar_chinese_cleanup); } gChineseCalendarAstro->setTime(ms); UDate solarLong = gChineseCalendarAstro->getSunTime(CalendarAstronomer::WINTER_SOLSTICE(), TRUE); - umtx_unlock(astroLock()); + umtx_unlock(&astroLock); // Winter solstice is 270 degrees solar longitude aka Dongzhi cacheValue = (int32_t)millisToDays(solarLong); @@ -568,14 +565,14 @@ int32_t ChineseCalendar::winterSolstice(int32_t gyear) const { */ int32_t ChineseCalendar::newMoonNear(double days, UBool after) const { - umtx_lock(astroLock()); + umtx_lock(&astroLock); if(gChineseCalendarAstro == NULL) { gChineseCalendarAstro = new CalendarAstronomer(); ucln_i18n_registerCleanup(UCLN_I18N_CHINESE_CALENDAR, calendar_chinese_cleanup); } gChineseCalendarAstro->setTime(daysToMillis(days)); UDate newMoon = gChineseCalendarAstro->getMoonTime(CalendarAstronomer::NEW_MOON(), after); - umtx_unlock(astroLock()); + umtx_unlock(&astroLock); return (int32_t) millisToDays(newMoon); } @@ -600,14 +597,14 @@ int32_t ChineseCalendar::synodicMonthsBetween(int32_t day1, int32_t day2) const */ int32_t ChineseCalendar::majorSolarTerm(int32_t days) const { - umtx_lock(astroLock()); + umtx_lock(&astroLock); if(gChineseCalendarAstro == NULL) { gChineseCalendarAstro = new CalendarAstronomer(); ucln_i18n_registerCleanup(UCLN_I18N_CHINESE_CALENDAR, calendar_chinese_cleanup); } gChineseCalendarAstro->setTime(daysToMillis(days)); UDate solarLongitude = gChineseCalendarAstro->getSunLongitude(); - umtx_unlock(astroLock()); + umtx_unlock(&astroLock); // Compute (floor(solarLongitude / (pi/6)) + 2) % 12 int32_t term = ( ((int32_t)(6 * solarLongitude / CalendarAstronomer::PI)) + 2 ) % 12; diff --git a/source/i18n/chnsecal.h b/source/i18n/chnsecal.h index 11a9b43..a0c21b6 100644 --- a/source/i18n/chnsecal.h +++ b/source/i18n/chnsecal.h @@ -144,7 +144,7 @@ class U_I18N_API ChineseCalendar : public Calendar { virtual ~ChineseCalendar(); // clone - virtual Calendar* clone() const; + virtual ChineseCalendar* clone() const; private: diff --git a/source/i18n/choicfmt.cpp b/source/i18n/choicfmt.cpp index 42e1fa2..7e26bb7 100644 --- a/source/i18n/choicfmt.cpp +++ b/source/i18n/choicfmt.cpp @@ -563,7 +563,7 @@ ChoiceFormat::matchStringUntilLimitPart( // ------------------------------------- -Format* +ChoiceFormat* ChoiceFormat::clone() const { ChoiceFormat *aCopy = new ChoiceFormat(*this); diff --git a/source/i18n/coll.cpp b/source/i18n/coll.cpp index 2298f60..7b87b41 100644 --- a/source/i18n/coll.cpp +++ b/source/i18n/coll.cpp @@ -67,7 +67,7 @@ static int32_t availableLocaleListCount; static icu::ICULocaleService* gService = NULL; static icu::UInitOnce gServiceInitOnce = U_INITONCE_INITIALIZER; #endif -static icu::UInitOnce gAvailableLocaleListInitOnce; +static icu::UInitOnce gAvailableLocaleListInitOnce = U_INITONCE_INITIALIZER; /** * Release all static memory held by collator. diff --git a/source/i18n/collationiterator.cpp b/source/i18n/collationiterator.cpp index 961c9e9..18ccf01 100644 --- a/source/i18n/collationiterator.cpp +++ b/source/i18n/collationiterator.cpp @@ -872,7 +872,7 @@ CollationIterator::previousCE(UVector32 &offsets, UErrorCode &errorCode) { // consistent with forward iteration. while(offsets.size() <= ceBuffer.length) { offsets.addElement(limitOffset, errorCode); - }; + } } return ceBuffer.get(--ceBuffer.length); } else { @@ -932,7 +932,7 @@ CollationIterator::previousCEUnsafe(UChar32 c, UVector32 &offsets, UErrorCode &e offset = getOffset(); while(offsets.size() < ceBuffer.length) { offsets.addElement(offset, errorCode); - }; + } } U_ASSERT(offsets.size() == ceBuffer.length); // End offset corresponding to just after the unsafe-backwards segment. diff --git a/source/i18n/compactdecimalformat.cpp b/source/i18n/compactdecimalformat.cpp index 4dd2241..a4c9dad 100644 --- a/source/i18n/compactdecimalformat.cpp +++ b/source/i18n/compactdecimalformat.cpp @@ -30,9 +30,9 @@ CompactDecimalFormat::CompactDecimalFormat(const Locale& inLocale, UNumberCompac : DecimalFormat(new DecimalFormatSymbols(inLocale, status), status) { if (U_FAILURE(status)) return; // Minimal properties: let the non-shim code path do most of the logic for us. - fields->properties->compactStyle = style; - fields->properties->groupingSize = -2; // do not forward grouping information - fields->properties->minimumGroupingDigits = 2; + fields->properties.compactStyle = style; + fields->properties.groupingSize = -2; // do not forward grouping information + fields->properties.minimumGroupingDigits = 2; touch(status); } @@ -45,7 +45,7 @@ CompactDecimalFormat& CompactDecimalFormat::operator=(const CompactDecimalFormat return *this; } -Format* CompactDecimalFormat::clone() const { +CompactDecimalFormat* CompactDecimalFormat::clone() const { return new CompactDecimalFormat(*this); } diff --git a/source/i18n/coptccal.cpp b/source/i18n/coptccal.cpp index ba2040d..9c2b1eb 100644 --- a/source/i18n/coptccal.cpp +++ b/source/i18n/coptccal.cpp @@ -40,7 +40,7 @@ CopticCalendar::~CopticCalendar() { } -Calendar* +CopticCalendar* CopticCalendar::clone() const { return new CopticCalendar(*this); diff --git a/source/i18n/coptccal.h b/source/i18n/coptccal.h index 5c38aa6..e9e812d 100644 --- a/source/i18n/coptccal.h +++ b/source/i18n/coptccal.h @@ -145,7 +145,7 @@ public: * @return return a polymorphic copy of this calendar. * @internal */ - virtual Calendar* clone(void) const; + virtual CopticCalendar* clone() const; /** * return the calendar type, "coptic" diff --git a/source/i18n/cpdtrans.cpp b/source/i18n/cpdtrans.cpp index db2ddb7..82ee54a 100644 --- a/source/i18n/cpdtrans.cpp +++ b/source/i18n/cpdtrans.cpp @@ -323,7 +323,7 @@ CompoundTransliterator& CompoundTransliterator::operator=( /** * Transliterator API. */ -Transliterator* CompoundTransliterator::clone(void) const { +CompoundTransliterator* CompoundTransliterator::clone() const { return new CompoundTransliterator(*this); } diff --git a/source/i18n/cpdtrans.h b/source/i18n/cpdtrans.h index 076296a..a2c7abb 100644 --- a/source/i18n/cpdtrans.h +++ b/source/i18n/cpdtrans.h @@ -98,7 +98,7 @@ public: /** * Transliterator API. */ - virtual Transliterator* clone(void) const; + virtual CompoundTransliterator* clone() const; /** * Returns the number of transliterators in this chain. diff --git a/source/i18n/csdetect.cpp b/source/i18n/csdetect.cpp index 2436760..babb308 100644 --- a/source/i18n/csdetect.cpp +++ b/source/i18n/csdetect.cpp @@ -47,7 +47,7 @@ struct CSRecognizerInfo : public UMemory { U_NAMESPACE_END static icu::CSRecognizerInfo **fCSRecognizers = NULL; -static icu::UInitOnce gCSRecognizersInitOnce; +static icu::UInitOnce gCSRecognizersInitOnce = U_INITONCE_INITIALIZER; static int32_t fCSRecognizers_size = 0; U_CDECL_BEGIN diff --git a/source/i18n/curramt.cpp b/source/i18n/curramt.cpp index d224270..6fd2ea2 100644 --- a/source/i18n/curramt.cpp +++ b/source/i18n/curramt.cpp @@ -38,7 +38,7 @@ CurrencyAmount& CurrencyAmount::operator=(const CurrencyAmount& other) { return *this; } -UObject* CurrencyAmount::clone() const { +CurrencyAmount* CurrencyAmount::clone() const { return new CurrencyAmount(*this); } diff --git a/source/i18n/currfmt.cpp b/source/i18n/currfmt.cpp index 8f20f78..0ad0492 100644 --- a/source/i18n/currfmt.cpp +++ b/source/i18n/currfmt.cpp @@ -33,7 +33,7 @@ CurrencyFormat::CurrencyFormat(const CurrencyFormat& other) : CurrencyFormat::~CurrencyFormat() { } -Format* CurrencyFormat::clone() const { +CurrencyFormat* CurrencyFormat::clone() const { return new CurrencyFormat(*this); } diff --git a/source/i18n/currfmt.h b/source/i18n/currfmt.h index cc9bb3c..69a0319 100644 --- a/source/i18n/currfmt.h +++ b/source/i18n/currfmt.h @@ -57,7 +57,7 @@ class CurrencyFormat : public MeasureFormat { /** * Override Format API. */ - virtual Format* clone() const; + virtual CurrencyFormat* clone() const; using MeasureFormat::format; diff --git a/source/i18n/currunit.cpp b/source/i18n/currunit.cpp index a5b039f..dab6dda 100644 --- a/source/i18n/currunit.cpp +++ b/source/i18n/currunit.cpp @@ -109,7 +109,7 @@ CurrencyUnit& CurrencyUnit::operator=(const CurrencyUnit& other) { return *this; } -UObject* CurrencyUnit::clone() const { +CurrencyUnit* CurrencyUnit::clone() const { return new CurrencyUnit(*this); } diff --git a/source/i18n/dangical.cpp b/source/i18n/dangical.cpp index 73bc421..02db403 100644 --- a/source/i18n/dangical.cpp +++ b/source/i18n/dangical.cpp @@ -65,7 +65,7 @@ DangiCalendar::~DangiCalendar() { } -Calendar* +DangiCalendar* DangiCalendar::clone() const { return new DangiCalendar(*this); diff --git a/source/i18n/dangical.h b/source/i18n/dangical.h index 04bd67b..ece805e 100644 --- a/source/i18n/dangical.h +++ b/source/i18n/dangical.h @@ -66,7 +66,7 @@ class DangiCalendar : public ChineseCalendar { * Clone. * @internal */ - virtual Calendar* clone() const; + virtual DangiCalendar* clone() const; //---------------------------------------------------------------------- // Internal methods & astronomical calculations diff --git a/source/i18n/datefmt.cpp b/source/i18n/datefmt.cpp index 76ec3f4..a0e039c 100644 --- a/source/i18n/datefmt.cpp +++ b/source/i18n/datefmt.cpp @@ -154,7 +154,7 @@ DateFormat& DateFormat::operator=(const DateFormat& other) fCalendar = NULL; } if(other.fNumberFormat) { - fNumberFormat = (NumberFormat*)other.fNumberFormat->clone(); + fNumberFormat = other.fNumberFormat->clone(); } else { fNumberFormat = NULL; } @@ -598,7 +598,7 @@ DateFormat::adoptNumberFormat(NumberFormat* newNumberFormat) void DateFormat::setNumberFormat(const NumberFormat& newNumberFormat) { - NumberFormat* newNumFmtClone = (NumberFormat*)newNumberFormat.clone(); + NumberFormat* newNumFmtClone = newNumberFormat.clone(); if (newNumFmtClone != NULL) { adoptNumberFormat(newNumFmtClone); } diff --git a/source/i18n/decNumberLocal.h b/source/i18n/decNumberLocal.h index f6c291a..e8d1b38 100644 --- a/source/i18n/decNumberLocal.h +++ b/source/i18n/decNumberLocal.h @@ -259,7 +259,7 @@ /* 2,000,000,000 (as is needed for negative exponents of */ /* subnormals). The unsigned integer pow is used as a temporary */ /* variable. */ - #define TODIGIT(u, cut, c, pow) { \ + #define TODIGIT(u, cut, c, pow) UPRV_BLOCK_MACRO_BEGIN { \ *(c)='0'; \ pow=DECPOWERS[cut]*2; \ if ((u)>pow) { \ @@ -272,7 +272,7 @@ if ((u)>=pow) {(u)-=pow; *(c)+=2;} \ pow/=2; \ if ((u)>=pow) {(u)-=pow; *(c)+=1;} \ - } + } UPRV_BLOCK_MACRO_END /* ---------------------------------------------------------------- */ /* Definitions for fixed-precision modules (only valid after */ diff --git a/source/i18n/decimfmt.cpp b/source/i18n/decimfmt.cpp index 741e7a3..d19f651 100644 --- a/source/i18n/decimfmt.cpp +++ b/source/i18n/decimfmt.cpp @@ -95,7 +95,7 @@ DecimalFormat::DecimalFormat(const UnicodeString& pattern, DecimalFormatSymbols* new CurrencyPluralInfo(fields->symbols->getLocale(), status), status); if (U_FAILURE(status)) { return; } - fields->properties->currencyPluralInfo.fPtr.adoptInstead(cpi.orphan()); + fields->properties.currencyPluralInfo.fPtr.adoptInstead(cpi.orphan()); } touch(status); } @@ -111,21 +111,14 @@ DecimalFormat::DecimalFormat(const DecimalFormatSymbols* symbolsToAdopt, UErrorC status = U_MEMORY_ALLOCATION_ERROR; return; } - fields->formatter.adoptInsteadAndCheckErrorCode(new LocalizedNumberFormatter(), status); - fields->properties.adoptInsteadAndCheckErrorCode(new DecimalFormatProperties(), status); - fields->exportedProperties.adoptInsteadAndCheckErrorCode(new DecimalFormatProperties(), status); if (adoptedSymbols.isNull()) { fields->symbols.adoptInsteadAndCheckErrorCode(new DecimalFormatSymbols(status), status); } else { fields->symbols.adoptInsteadAndCheckErrorCode(adoptedSymbols.orphan(), status); } - // In order to simplify error handling logic in the various getters/setters/etc, we do not allow - // any partially populated DecimalFormatFields object. We must have a fully complete fields object - // or else we set it to nullptr. - if (fields->formatter.isNull() || fields->properties.isNull() || fields->exportedProperties.isNull() || fields->symbols.isNull()) { + if (U_FAILURE(status)) { delete fields; fields = nullptr; - status = U_MEMORY_ALLOCATION_ERROR; } } @@ -133,8 +126,8 @@ DecimalFormat::DecimalFormat(const DecimalFormatSymbols* symbolsToAdopt, UErrorC void DecimalFormat::setParseAllInput(UNumberFormatAttributeValue value) { if (fields == nullptr) { return; } - if (value == fields->properties->parseAllInput) { return; } - fields->properties->parseAllInput = value; + if (value == fields->properties.parseAllInput) { return; } + fields->properties.parseAllInput = value; } #endif @@ -379,9 +372,9 @@ void DecimalFormat::setGroupingUsed(UBool enabled) { if (fields == nullptr) { return; } - if (UBOOL_TO_BOOL(enabled) == fields->properties->groupingUsed) { return; } + if (UBOOL_TO_BOOL(enabled) == fields->properties.groupingUsed) { return; } NumberFormat::setGroupingUsed(enabled); // to set field for compatibility - fields->properties->groupingUsed = enabled; + fields->properties.groupingUsed = enabled; touchNoError(); } @@ -389,9 +382,9 @@ void DecimalFormat::setParseIntegerOnly(UBool value) { if (fields == nullptr) { return; } - if (UBOOL_TO_BOOL(value) == fields->properties->parseIntegerOnly) { return; } + if (UBOOL_TO_BOOL(value) == fields->properties.parseIntegerOnly) { return; } NumberFormat::setParseIntegerOnly(value); // to set field for compatibility - fields->properties->parseIntegerOnly = value; + fields->properties.parseIntegerOnly = value; touchNoError(); } @@ -400,9 +393,9 @@ void DecimalFormat::setLenient(UBool enable) { return; } ParseMode mode = enable ? PARSE_MODE_LENIENT : PARSE_MODE_STRICT; - if (!fields->properties->parseMode.isNull() && mode == fields->properties->parseMode.getNoError()) { return; } + if (!fields->properties.parseMode.isNull() && mode == fields->properties.parseMode.getNoError()) { return; } NumberFormat::setLenient(enable); // to set field for compatibility - fields->properties->parseMode = mode; + fields->properties.parseMode = mode; touchNoError(); } @@ -441,19 +434,16 @@ DecimalFormat::DecimalFormat(const DecimalFormat& source) : NumberFormat(source) // Note: it is not safe to copy fields->formatter or fWarehouse directly because fields->formatter might have // dangling pointers to fields inside fWarehouse. The safe thing is to re-construct fields->formatter from // the property bag, despite being somewhat slower. - fields = new DecimalFormatFields(); + fields = new DecimalFormatFields(source.fields->properties); if (fields == nullptr) { return; // no way to report an error. } UErrorCode status = U_ZERO_ERROR; - fields->formatter.adoptInsteadAndCheckErrorCode(new LocalizedNumberFormatter(), status); - fields->properties.adoptInsteadAndCheckErrorCode(new DecimalFormatProperties(*source.fields->properties), status); fields->symbols.adoptInsteadAndCheckErrorCode(new DecimalFormatSymbols(*source.fields->symbols), status); - fields->exportedProperties.adoptInsteadAndCheckErrorCode(new DecimalFormatProperties(), status); // In order to simplify error handling logic in the various getters/setters/etc, we do not allow // any partially populated DecimalFormatFields object. We must have a fully complete fields object // or else we set it to nullptr. - if (fields->formatter.isNull() || fields->properties.isNull() || fields->exportedProperties.isNull() || fields->symbols.isNull()) { + if (U_FAILURE(status)) { delete fields; fields = nullptr; return; @@ -470,8 +460,8 @@ DecimalFormat& DecimalFormat::operator=(const DecimalFormat& rhs) { if (fields == nullptr || rhs.fields == nullptr) { return *this; // unfortunately, no way to report an error. } - *fields->properties = *rhs.fields->properties; - fields->exportedProperties->clear(); + fields->properties = rhs.fields->properties; + fields->exportedProperties.clear(); UErrorCode status = U_ZERO_ERROR; LocalPointer dfs(new DecimalFormatSymbols(*rhs.fields->symbols), status); if (U_FAILURE(status)) { @@ -495,7 +485,7 @@ DecimalFormat::~DecimalFormat() { delete fields; } -Format* DecimalFormat::clone() const { +DecimalFormat* DecimalFormat::clone() const { // can only clone valid objects. if (fields == nullptr) { return nullptr; @@ -517,7 +507,7 @@ UBool DecimalFormat::operator==(const Format& other) const { if (fields == nullptr || otherDF->fields == nullptr) { return false; } - return *fields->properties == *otherDF->fields->properties && *fields->symbols == *otherDF->fields->symbols; + return fields->properties == otherDF->fields->properties && *fields->symbols == *otherDF->fields->symbols; } UnicodeString& DecimalFormat::format(double number, UnicodeString& appendTo, FieldPosition& pos) const { @@ -529,7 +519,7 @@ UnicodeString& DecimalFormat::format(double number, UnicodeString& appendTo, Fie return appendTo; } UErrorCode localStatus = U_ZERO_ERROR; - FormattedNumber output = fields->formatter->formatDouble(number, localStatus); + FormattedNumber output = fields->formatter.formatDouble(number, localStatus); fieldPositionHelper(output, pos, appendTo.length(), localStatus); auto appendable = UnicodeStringAppendable(appendTo); output.appendTo(appendable, localStatus); @@ -550,7 +540,7 @@ UnicodeString& DecimalFormat::format(double number, UnicodeString& appendTo, Fie if (pos.getField() == FieldPosition::DONT_CARE && fastFormatDouble(number, appendTo)) { return appendTo; } - FormattedNumber output = fields->formatter->formatDouble(number, status); + FormattedNumber output = fields->formatter.formatDouble(number, status); fieldPositionHelper(output, pos, appendTo.length(), status); auto appendable = UnicodeStringAppendable(appendTo); output.appendTo(appendable, status); @@ -572,7 +562,7 @@ DecimalFormat::format(double number, UnicodeString& appendTo, FieldPositionItera if (posIter == nullptr && fastFormatDouble(number, appendTo)) { return appendTo; } - FormattedNumber output = fields->formatter->formatDouble(number, status); + FormattedNumber output = fields->formatter.formatDouble(number, status); fieldPositionIteratorHelper(output, posIter, appendTo.length(), status); auto appendable = UnicodeStringAppendable(appendTo); output.appendTo(appendable, status); @@ -603,7 +593,7 @@ UnicodeString& DecimalFormat::format(int64_t number, UnicodeString& appendTo, Fi return appendTo; } UErrorCode localStatus = U_ZERO_ERROR; - FormattedNumber output = fields->formatter->formatInt(number, localStatus); + FormattedNumber output = fields->formatter.formatInt(number, localStatus); fieldPositionHelper(output, pos, appendTo.length(), localStatus); auto appendable = UnicodeStringAppendable(appendTo); output.appendTo(appendable, localStatus); @@ -624,7 +614,7 @@ UnicodeString& DecimalFormat::format(int64_t number, UnicodeString& appendTo, Fi if (pos.getField() == FieldPosition::DONT_CARE && fastFormatInt64(number, appendTo)) { return appendTo; } - FormattedNumber output = fields->formatter->formatInt(number, status); + FormattedNumber output = fields->formatter.formatInt(number, status); fieldPositionHelper(output, pos, appendTo.length(), status); auto appendable = UnicodeStringAppendable(appendTo); output.appendTo(appendable, status); @@ -646,7 +636,7 @@ DecimalFormat::format(int64_t number, UnicodeString& appendTo, FieldPositionIter if (posIter == nullptr && fastFormatInt64(number, appendTo)) { return appendTo; } - FormattedNumber output = fields->formatter->formatInt(number, status); + FormattedNumber output = fields->formatter.formatInt(number, status); fieldPositionIteratorHelper(output, posIter, appendTo.length(), status); auto appendable = UnicodeStringAppendable(appendTo); output.appendTo(appendable, status); @@ -665,7 +655,7 @@ DecimalFormat::format(StringPiece number, UnicodeString& appendTo, FieldPosition appendTo.setToBogus(); return appendTo; } - FormattedNumber output = fields->formatter->formatDecimal(number, status); + FormattedNumber output = fields->formatter.formatDecimal(number, status); fieldPositionIteratorHelper(output, posIter, appendTo.length(), status); auto appendable = UnicodeStringAppendable(appendTo); output.appendTo(appendable, status); @@ -683,7 +673,7 @@ UnicodeString& DecimalFormat::format(const DecimalQuantity& number, UnicodeStrin appendTo.setToBogus(); return appendTo; } - FormattedNumber output = fields->formatter->formatDecimalQuantity(number, status); + FormattedNumber output = fields->formatter.formatDecimalQuantity(number, status); fieldPositionIteratorHelper(output, posIter, appendTo.length(), status); auto appendable = UnicodeStringAppendable(appendTo); output.appendTo(appendable, status); @@ -702,7 +692,7 @@ DecimalFormat::format(const DecimalQuantity& number, UnicodeString& appendTo, Fi appendTo.setToBogus(); return appendTo; } - FormattedNumber output = fields->formatter->formatDecimalQuantity(number, status); + FormattedNumber output = fields->formatter.formatDecimalQuantity(number, status); fieldPositionHelper(output, pos, appendTo.length(), status); auto appendable = UnicodeStringAppendable(appendTo); output.appendTo(appendable, status); @@ -823,7 +813,7 @@ const CurrencyPluralInfo* DecimalFormat::getCurrencyPluralInfo(void) const { if (fields == nullptr) { return nullptr; } - return fields->properties->currencyPluralInfo.fPtr.getAlias(); + return fields->properties.currencyPluralInfo.fPtr.getAlias(); } void DecimalFormat::adoptCurrencyPluralInfo(CurrencyPluralInfo* toAdopt) { @@ -833,7 +823,7 @@ void DecimalFormat::adoptCurrencyPluralInfo(CurrencyPluralInfo* toAdopt) { if (fields == nullptr) { return; } - fields->properties->currencyPluralInfo.fPtr.adoptInstead(cpi.orphan()); + fields->properties.currencyPluralInfo.fPtr.adoptInstead(cpi.orphan()); touchNoError(); } @@ -841,11 +831,11 @@ void DecimalFormat::setCurrencyPluralInfo(const CurrencyPluralInfo& info) { if (fields == nullptr) { return; } - if (fields->properties->currencyPluralInfo.fPtr.isNull()) { + if (fields->properties.currencyPluralInfo.fPtr.isNull()) { // Note: clone() can fail with OOM error, but we have no way to report it. :( - fields->properties->currencyPluralInfo.fPtr.adoptInstead(info.clone()); + fields->properties.currencyPluralInfo.fPtr.adoptInstead(info.clone()); } else { - *fields->properties->currencyPluralInfo.fPtr = info; // copy-assignment operator + *fields->properties.currencyPluralInfo.fPtr = info; // copy-assignment operator } touchNoError(); } @@ -856,7 +846,7 @@ UnicodeString& DecimalFormat::getPositivePrefix(UnicodeString& result) const { return result; } UErrorCode status = U_ZERO_ERROR; - fields->formatter->getAffixImpl(true, false, result, status); + fields->formatter.getAffixImpl(true, false, result, status); if (U_FAILURE(status)) { result.setToBogus(); } return result; } @@ -865,8 +855,8 @@ void DecimalFormat::setPositivePrefix(const UnicodeString& newValue) { if (fields == nullptr) { return; } - if (newValue == fields->properties->positivePrefix) { return; } - fields->properties->positivePrefix = newValue; + if (newValue == fields->properties.positivePrefix) { return; } + fields->properties.positivePrefix = newValue; touchNoError(); } @@ -876,7 +866,7 @@ UnicodeString& DecimalFormat::getNegativePrefix(UnicodeString& result) const { return result; } UErrorCode status = U_ZERO_ERROR; - fields->formatter->getAffixImpl(true, true, result, status); + fields->formatter.getAffixImpl(true, true, result, status); if (U_FAILURE(status)) { result.setToBogus(); } return result; } @@ -885,8 +875,8 @@ void DecimalFormat::setNegativePrefix(const UnicodeString& newValue) { if (fields == nullptr) { return; } - if (newValue == fields->properties->negativePrefix) { return; } - fields->properties->negativePrefix = newValue; + if (newValue == fields->properties.negativePrefix) { return; } + fields->properties.negativePrefix = newValue; touchNoError(); } @@ -896,7 +886,7 @@ UnicodeString& DecimalFormat::getPositiveSuffix(UnicodeString& result) const { return result; } UErrorCode status = U_ZERO_ERROR; - fields->formatter->getAffixImpl(false, false, result, status); + fields->formatter.getAffixImpl(false, false, result, status); if (U_FAILURE(status)) { result.setToBogus(); } return result; } @@ -905,8 +895,8 @@ void DecimalFormat::setPositiveSuffix(const UnicodeString& newValue) { if (fields == nullptr) { return; } - if (newValue == fields->properties->positiveSuffix) { return; } - fields->properties->positiveSuffix = newValue; + if (newValue == fields->properties.positiveSuffix) { return; } + fields->properties.positiveSuffix = newValue; touchNoError(); } @@ -916,7 +906,7 @@ UnicodeString& DecimalFormat::getNegativeSuffix(UnicodeString& result) const { return result; } UErrorCode status = U_ZERO_ERROR; - fields->formatter->getAffixImpl(false, true, result, status); + fields->formatter.getAffixImpl(false, true, result, status); if (U_FAILURE(status)) { result.setToBogus(); } return result; } @@ -925,8 +915,8 @@ void DecimalFormat::setNegativeSuffix(const UnicodeString& newValue) { if (fields == nullptr) { return; } - if (newValue == fields->properties->negativeSuffix) { return; } - fields->properties->negativeSuffix = newValue; + if (newValue == fields->properties.negativeSuffix) { return; } + fields->properties.negativeSuffix = newValue; touchNoError(); } @@ -935,13 +925,13 @@ UBool DecimalFormat::isSignAlwaysShown() const { if (fields == nullptr) { return DecimalFormatProperties::getDefault().signAlwaysShown; } - return fields->properties->signAlwaysShown; + return fields->properties.signAlwaysShown; } void DecimalFormat::setSignAlwaysShown(UBool value) { if (fields == nullptr) { return; } - if (UBOOL_TO_BOOL(value) == fields->properties->signAlwaysShown) { return; } - fields->properties->signAlwaysShown = value; + if (UBOOL_TO_BOOL(value) == fields->properties.signAlwaysShown) { return; } + fields->properties.signAlwaysShown = value; touchNoError(); } @@ -952,7 +942,7 @@ int32_t DecimalFormat::getMultiplier(void) const { // Fallback to using the default instance of DecimalFormatProperties. dfp = &(DecimalFormatProperties::getDefault()); } else { - dfp = fields->properties.getAlias(); + dfp = &fields->properties; } if (dfp->multiplier != 1) { return dfp->multiplier; @@ -984,11 +974,11 @@ void DecimalFormat::setMultiplier(int32_t multiplier) { value = temp; } if (delta != -1) { - fields->properties->magnitudeMultiplier = delta; - fields->properties->multiplier = 1; + fields->properties.magnitudeMultiplier = delta; + fields->properties.multiplier = 1; } else { - fields->properties->magnitudeMultiplier = 0; - fields->properties->multiplier = multiplier; + fields->properties.magnitudeMultiplier = 0; + fields->properties.multiplier = multiplier; } touchNoError(); } @@ -999,13 +989,13 @@ int32_t DecimalFormat::getMultiplierScale() const { // Fallback to using the default instance of DecimalFormatProperties. return DecimalFormatProperties::getDefault().multiplierScale; } - return fields->properties->multiplierScale; + return fields->properties.multiplierScale; } void DecimalFormat::setMultiplierScale(int32_t newValue) { if (fields == nullptr) { return; } - if (newValue == fields->properties->multiplierScale) { return; } - fields->properties->multiplierScale = newValue; + if (newValue == fields->properties.multiplierScale) { return; } + fields->properties.multiplierScale = newValue; touchNoError(); } @@ -1015,13 +1005,13 @@ double DecimalFormat::getRoundingIncrement(void) const { // Fallback to using the default instance of DecimalFormatProperties. return DecimalFormatProperties::getDefault().roundingIncrement; } - return fields->exportedProperties->roundingIncrement; + return fields->exportedProperties.roundingIncrement; } void DecimalFormat::setRoundingIncrement(double newValue) { if (fields == nullptr) { return; } - if (newValue == fields->properties->roundingIncrement) { return; } - fields->properties->roundingIncrement = newValue; + if (newValue == fields->properties.roundingIncrement) { return; } + fields->properties.roundingIncrement = newValue; touchNoError(); } @@ -1032,17 +1022,17 @@ ERoundingMode DecimalFormat::getRoundingMode(void) const { return static_cast(DecimalFormatProperties::getDefault().roundingMode.getNoError()); } // UNumberFormatRoundingMode and ERoundingMode have the same values. - return static_cast(fields->exportedProperties->roundingMode.getNoError()); + return static_cast(fields->exportedProperties.roundingMode.getNoError()); } void DecimalFormat::setRoundingMode(ERoundingMode roundingMode) { if (fields == nullptr) { return; } auto uRoundingMode = static_cast(roundingMode); - if (!fields->properties->roundingMode.isNull() && uRoundingMode == fields->properties->roundingMode.getNoError()) { + if (!fields->properties.roundingMode.isNull() && uRoundingMode == fields->properties.roundingMode.getNoError()) { return; } NumberFormat::setMaximumIntegerDigits(roundingMode); // to set field for compatibility - fields->properties->roundingMode = uRoundingMode; + fields->properties.roundingMode = uRoundingMode; touchNoError(); } @@ -1052,52 +1042,52 @@ int32_t DecimalFormat::getFormatWidth(void) const { // Fallback to using the default instance of DecimalFormatProperties. return DecimalFormatProperties::getDefault().formatWidth; } - return fields->properties->formatWidth; + return fields->properties.formatWidth; } void DecimalFormat::setFormatWidth(int32_t width) { if (fields == nullptr) { return; } - if (width == fields->properties->formatWidth) { return; } - fields->properties->formatWidth = width; + if (width == fields->properties.formatWidth) { return; } + fields->properties.formatWidth = width; touchNoError(); } UnicodeString DecimalFormat::getPadCharacterString() const { - if (fields == nullptr || fields->properties->padString.isBogus()) { + if (fields == nullptr || fields->properties.padString.isBogus()) { // Readonly-alias the static string kFallbackPaddingString return {TRUE, kFallbackPaddingString, -1}; } else { - return fields->properties->padString; + return fields->properties.padString; } } void DecimalFormat::setPadCharacter(const UnicodeString& padChar) { if (fields == nullptr) { return; } - if (padChar == fields->properties->padString) { return; } + if (padChar == fields->properties.padString) { return; } if (padChar.length() > 0) { - fields->properties->padString = UnicodeString(padChar.char32At(0)); + fields->properties.padString = UnicodeString(padChar.char32At(0)); } else { - fields->properties->padString.setToBogus(); + fields->properties.padString.setToBogus(); } touchNoError(); } EPadPosition DecimalFormat::getPadPosition(void) const { - if (fields == nullptr || fields->properties->padPosition.isNull()) { + if (fields == nullptr || fields->properties.padPosition.isNull()) { return EPadPosition::kPadBeforePrefix; } else { // UNumberFormatPadPosition and EPadPosition have the same values. - return static_cast(fields->properties->padPosition.getNoError()); + return static_cast(fields->properties.padPosition.getNoError()); } } void DecimalFormat::setPadPosition(EPadPosition padPos) { if (fields == nullptr) { return; } auto uPadPos = static_cast(padPos); - if (!fields->properties->padPosition.isNull() && uPadPos == fields->properties->padPosition.getNoError()) { + if (!fields->properties.padPosition.isNull() && uPadPos == fields->properties.padPosition.getNoError()) { return; } - fields->properties->padPosition = uPadPos; + fields->properties.padPosition = uPadPos; touchNoError(); } @@ -1107,17 +1097,17 @@ UBool DecimalFormat::isScientificNotation(void) const { // Fallback to using the default instance of DecimalFormatProperties. return (DecimalFormatProperties::getDefault().minimumExponentDigits != -1); } - return (fields->properties->minimumExponentDigits != -1); + return (fields->properties.minimumExponentDigits != -1); } void DecimalFormat::setScientificNotation(UBool useScientific) { if (fields == nullptr) { return; } int32_t minExp = useScientific ? 1 : -1; - if (fields->properties->minimumExponentDigits == minExp) { return; } + if (fields->properties.minimumExponentDigits == minExp) { return; } if (useScientific) { - fields->properties->minimumExponentDigits = 1; + fields->properties.minimumExponentDigits = 1; } else { - fields->properties->minimumExponentDigits = -1; + fields->properties.minimumExponentDigits = -1; } touchNoError(); } @@ -1128,13 +1118,13 @@ int8_t DecimalFormat::getMinimumExponentDigits(void) const { // Fallback to using the default instance of DecimalFormatProperties. return static_cast(DecimalFormatProperties::getDefault().minimumExponentDigits); } - return static_cast(fields->properties->minimumExponentDigits); + return static_cast(fields->properties.minimumExponentDigits); } void DecimalFormat::setMinimumExponentDigits(int8_t minExpDig) { if (fields == nullptr) { return; } - if (minExpDig == fields->properties->minimumExponentDigits) { return; } - fields->properties->minimumExponentDigits = minExpDig; + if (minExpDig == fields->properties.minimumExponentDigits) { return; } + fields->properties.minimumExponentDigits = minExpDig; touchNoError(); } @@ -1144,13 +1134,13 @@ UBool DecimalFormat::isExponentSignAlwaysShown(void) const { // Fallback to using the default instance of DecimalFormatProperties. return DecimalFormatProperties::getDefault().exponentSignAlwaysShown; } - return fields->properties->exponentSignAlwaysShown; + return fields->properties.exponentSignAlwaysShown; } void DecimalFormat::setExponentSignAlwaysShown(UBool expSignAlways) { if (fields == nullptr) { return; } - if (UBOOL_TO_BOOL(expSignAlways) == fields->properties->exponentSignAlwaysShown) { return; } - fields->properties->exponentSignAlwaysShown = expSignAlways; + if (UBOOL_TO_BOOL(expSignAlways) == fields->properties.exponentSignAlwaysShown) { return; } + fields->properties.exponentSignAlwaysShown = expSignAlways; touchNoError(); } @@ -1161,7 +1151,7 @@ int32_t DecimalFormat::getGroupingSize(void) const { // Fallback to using the default instance of DecimalFormatProperties. groupingSize = DecimalFormatProperties::getDefault().groupingSize; } else { - groupingSize = fields->properties->groupingSize; + groupingSize = fields->properties.groupingSize; } if (groupingSize < 0) { return 0; @@ -1171,8 +1161,8 @@ int32_t DecimalFormat::getGroupingSize(void) const { void DecimalFormat::setGroupingSize(int32_t newValue) { if (fields == nullptr) { return; } - if (newValue == fields->properties->groupingSize) { return; } - fields->properties->groupingSize = newValue; + if (newValue == fields->properties.groupingSize) { return; } + fields->properties.groupingSize = newValue; touchNoError(); } @@ -1183,7 +1173,7 @@ int32_t DecimalFormat::getSecondaryGroupingSize(void) const { // Fallback to using the default instance of DecimalFormatProperties. grouping2 = DecimalFormatProperties::getDefault().secondaryGroupingSize; } else { - grouping2 = fields->properties->secondaryGroupingSize; + grouping2 = fields->properties.secondaryGroupingSize; } if (grouping2 < 0) { return 0; @@ -1193,8 +1183,8 @@ int32_t DecimalFormat::getSecondaryGroupingSize(void) const { void DecimalFormat::setSecondaryGroupingSize(int32_t newValue) { if (fields == nullptr) { return; } - if (newValue == fields->properties->secondaryGroupingSize) { return; } - fields->properties->secondaryGroupingSize = newValue; + if (newValue == fields->properties.secondaryGroupingSize) { return; } + fields->properties.secondaryGroupingSize = newValue; touchNoError(); } @@ -1204,13 +1194,13 @@ int32_t DecimalFormat::getMinimumGroupingDigits() const { // Fallback to using the default instance of DecimalFormatProperties. return DecimalFormatProperties::getDefault().minimumGroupingDigits; } - return fields->properties->minimumGroupingDigits; + return fields->properties.minimumGroupingDigits; } void DecimalFormat::setMinimumGroupingDigits(int32_t newValue) { if (fields == nullptr) { return; } - if (newValue == fields->properties->minimumGroupingDigits) { return; } - fields->properties->minimumGroupingDigits = newValue; + if (newValue == fields->properties.minimumGroupingDigits) { return; } + fields->properties.minimumGroupingDigits = newValue; touchNoError(); } @@ -1220,13 +1210,13 @@ UBool DecimalFormat::isDecimalSeparatorAlwaysShown(void) const { // Fallback to using the default instance of DecimalFormatProperties. return DecimalFormatProperties::getDefault().decimalSeparatorAlwaysShown; } - return fields->properties->decimalSeparatorAlwaysShown; + return fields->properties.decimalSeparatorAlwaysShown; } void DecimalFormat::setDecimalSeparatorAlwaysShown(UBool newValue) { if (fields == nullptr) { return; } - if (UBOOL_TO_BOOL(newValue) == fields->properties->decimalSeparatorAlwaysShown) { return; } - fields->properties->decimalSeparatorAlwaysShown = newValue; + if (UBOOL_TO_BOOL(newValue) == fields->properties.decimalSeparatorAlwaysShown) { return; } + fields->properties.decimalSeparatorAlwaysShown = newValue; touchNoError(); } @@ -1236,13 +1226,13 @@ UBool DecimalFormat::isDecimalPatternMatchRequired(void) const { // Fallback to using the default instance of DecimalFormatProperties. return DecimalFormatProperties::getDefault().decimalPatternMatchRequired; } - return fields->properties->decimalPatternMatchRequired; + return fields->properties.decimalPatternMatchRequired; } void DecimalFormat::setDecimalPatternMatchRequired(UBool newValue) { if (fields == nullptr) { return; } - if (UBOOL_TO_BOOL(newValue) == fields->properties->decimalPatternMatchRequired) { return; } - fields->properties->decimalPatternMatchRequired = newValue; + if (UBOOL_TO_BOOL(newValue) == fields->properties.decimalPatternMatchRequired) { return; } + fields->properties.decimalPatternMatchRequired = newValue; touchNoError(); } @@ -1252,13 +1242,13 @@ UBool DecimalFormat::isParseNoExponent() const { // Fallback to using the default instance of DecimalFormatProperties. return DecimalFormatProperties::getDefault().parseNoExponent; } - return fields->properties->parseNoExponent; + return fields->properties.parseNoExponent; } void DecimalFormat::setParseNoExponent(UBool value) { if (fields == nullptr) { return; } - if (UBOOL_TO_BOOL(value) == fields->properties->parseNoExponent) { return; } - fields->properties->parseNoExponent = value; + if (UBOOL_TO_BOOL(value) == fields->properties.parseNoExponent) { return; } + fields->properties.parseNoExponent = value; touchNoError(); } @@ -1268,13 +1258,13 @@ UBool DecimalFormat::isParseCaseSensitive() const { // Fallback to using the default instance of DecimalFormatProperties. return DecimalFormatProperties::getDefault().parseCaseSensitive; } - return fields->properties->parseCaseSensitive; + return fields->properties.parseCaseSensitive; } void DecimalFormat::setParseCaseSensitive(UBool value) { if (fields == nullptr) { return; } - if (UBOOL_TO_BOOL(value) == fields->properties->parseCaseSensitive) { return; } - fields->properties->parseCaseSensitive = value; + if (UBOOL_TO_BOOL(value) == fields->properties.parseCaseSensitive) { return; } + fields->properties.parseCaseSensitive = value; touchNoError(); } @@ -1284,13 +1274,13 @@ UBool DecimalFormat::isFormatFailIfMoreThanMaxDigits() const { // Fallback to using the default instance of DecimalFormatProperties. return DecimalFormatProperties::getDefault().formatFailIfMoreThanMaxDigits; } - return fields->properties->formatFailIfMoreThanMaxDigits; + return fields->properties.formatFailIfMoreThanMaxDigits; } void DecimalFormat::setFormatFailIfMoreThanMaxDigits(UBool value) { if (fields == nullptr) { return; } - if (UBOOL_TO_BOOL(value) == fields->properties->formatFailIfMoreThanMaxDigits) { return; } - fields->properties->formatFailIfMoreThanMaxDigits = value; + if (UBOOL_TO_BOOL(value) == fields->properties.formatFailIfMoreThanMaxDigits) { return; } + fields->properties.formatFailIfMoreThanMaxDigits = value; touchNoError(); } @@ -1305,7 +1295,7 @@ UnicodeString& DecimalFormat::toPattern(UnicodeString& result) const { // so that CurrencyUsage is reflected properly. // TODO: Consider putting this logic in number_patternstring.cpp instead. ErrorCode localStatus; - DecimalFormatProperties tprops(*fields->properties); + DecimalFormatProperties tprops(fields->properties); bool useCurrency = ( !tprops.currency.isNull() || !tprops.currencyPluralInfo.fPtr.isNull() || @@ -1315,9 +1305,9 @@ UnicodeString& DecimalFormat::toPattern(UnicodeString& result) const { AffixUtils::hasCurrencySymbols(tprops.negativePrefixPattern, localStatus) || AffixUtils::hasCurrencySymbols(tprops.negativeSuffixPattern, localStatus)); if (useCurrency) { - tprops.minimumFractionDigits = fields->exportedProperties->minimumFractionDigits; - tprops.maximumFractionDigits = fields->exportedProperties->maximumFractionDigits; - tprops.roundingIncrement = fields->exportedProperties->roundingIncrement; + tprops.minimumFractionDigits = fields->exportedProperties.minimumFractionDigits; + tprops.maximumFractionDigits = fields->exportedProperties.maximumFractionDigits; + tprops.roundingIncrement = fields->exportedProperties.roundingIncrement; } result = PatternStringUtils::propertiesToPatternString(tprops, localStatus); return result; @@ -1373,49 +1363,53 @@ void DecimalFormat::applyLocalizedPattern(const UnicodeString& localizedPattern, void DecimalFormat::setMaximumIntegerDigits(int32_t newValue) { if (fields == nullptr) { return; } - if (newValue == fields->properties->maximumIntegerDigits) { return; } + if (newValue == fields->properties.maximumIntegerDigits) { return; } // For backwards compatibility, conflicting min/max need to keep the most recent setting. - int32_t min = fields->properties->minimumIntegerDigits; + int32_t min = fields->properties.minimumIntegerDigits; if (min >= 0 && min > newValue) { - fields->properties->minimumIntegerDigits = newValue; + fields->properties.minimumIntegerDigits = newValue; } - fields->properties->maximumIntegerDigits = newValue; + fields->properties.maximumIntegerDigits = newValue; touchNoError(); } void DecimalFormat::setMinimumIntegerDigits(int32_t newValue) { if (fields == nullptr) { return; } - if (newValue == fields->properties->minimumIntegerDigits) { return; } + if (newValue == fields->properties.minimumIntegerDigits) { return; } // For backwards compatibility, conflicting min/max need to keep the most recent setting. - int32_t max = fields->properties->maximumIntegerDigits; + int32_t max = fields->properties.maximumIntegerDigits; if (max >= 0 && max < newValue) { - fields->properties->maximumIntegerDigits = newValue; + fields->properties.maximumIntegerDigits = newValue; } - fields->properties->minimumIntegerDigits = newValue; + fields->properties.minimumIntegerDigits = newValue; touchNoError(); } void DecimalFormat::setMaximumFractionDigits(int32_t newValue) { if (fields == nullptr) { return; } - if (newValue == fields->properties->maximumFractionDigits) { return; } + if (newValue == fields->properties.maximumFractionDigits) { return; } + // cap for backward compatibility, formerly 340, now 999 + if (newValue > kMaxIntFracSig) { + newValue = kMaxIntFracSig; + } // For backwards compatibility, conflicting min/max need to keep the most recent setting. - int32_t min = fields->properties->minimumFractionDigits; + int32_t min = fields->properties.minimumFractionDigits; if (min >= 0 && min > newValue) { - fields->properties->minimumFractionDigits = newValue; + fields->properties.minimumFractionDigits = newValue; } - fields->properties->maximumFractionDigits = newValue; + fields->properties.maximumFractionDigits = newValue; touchNoError(); } void DecimalFormat::setMinimumFractionDigits(int32_t newValue) { if (fields == nullptr) { return; } - if (newValue == fields->properties->minimumFractionDigits) { return; } + if (newValue == fields->properties.minimumFractionDigits) { return; } // For backwards compatibility, conflicting min/max need to keep the most recent setting. - int32_t max = fields->properties->maximumFractionDigits; + int32_t max = fields->properties.maximumFractionDigits; if (max >= 0 && max < newValue) { - fields->properties->maximumFractionDigits = newValue; + fields->properties.maximumFractionDigits = newValue; } - fields->properties->minimumFractionDigits = newValue; + fields->properties.minimumFractionDigits = newValue; touchNoError(); } @@ -1425,7 +1419,7 @@ int32_t DecimalFormat::getMinimumSignificantDigits() const { // Fallback to using the default instance of DecimalFormatProperties. return DecimalFormatProperties::getDefault().minimumSignificantDigits; } - return fields->exportedProperties->minimumSignificantDigits; + return fields->exportedProperties.minimumSignificantDigits; } int32_t DecimalFormat::getMaximumSignificantDigits() const { @@ -1434,28 +1428,28 @@ int32_t DecimalFormat::getMaximumSignificantDigits() const { // Fallback to using the default instance of DecimalFormatProperties. return DecimalFormatProperties::getDefault().maximumSignificantDigits; } - return fields->exportedProperties->maximumSignificantDigits; + return fields->exportedProperties.maximumSignificantDigits; } void DecimalFormat::setMinimumSignificantDigits(int32_t value) { if (fields == nullptr) { return; } - if (value == fields->properties->minimumSignificantDigits) { return; } - int32_t max = fields->properties->maximumSignificantDigits; + if (value == fields->properties.minimumSignificantDigits) { return; } + int32_t max = fields->properties.maximumSignificantDigits; if (max >= 0 && max < value) { - fields->properties->maximumSignificantDigits = value; + fields->properties.maximumSignificantDigits = value; } - fields->properties->minimumSignificantDigits = value; + fields->properties.minimumSignificantDigits = value; touchNoError(); } void DecimalFormat::setMaximumSignificantDigits(int32_t value) { if (fields == nullptr) { return; } - if (value == fields->properties->maximumSignificantDigits) { return; } - int32_t min = fields->properties->minimumSignificantDigits; + if (value == fields->properties.maximumSignificantDigits) { return; } + int32_t min = fields->properties.minimumSignificantDigits; if (min >= 0 && min > value) { - fields->properties->minimumSignificantDigits = value; + fields->properties.minimumSignificantDigits = value; } - fields->properties->maximumSignificantDigits = value; + fields->properties.maximumSignificantDigits = value; touchNoError(); } @@ -1466,7 +1460,7 @@ UBool DecimalFormat::areSignificantDigitsUsed() const { // Fallback to using the default instance of DecimalFormatProperties. dfp = &(DecimalFormatProperties::getDefault()); } else { - dfp = fields->properties.getAlias(); + dfp = &fields->properties; } return dfp->minimumSignificantDigits != -1 || dfp->maximumSignificantDigits != -1; } @@ -1476,20 +1470,20 @@ void DecimalFormat::setSignificantDigitsUsed(UBool useSignificantDigits) { // These are the default values from the old implementation. if (useSignificantDigits) { - if (fields->properties->minimumSignificantDigits != -1 || - fields->properties->maximumSignificantDigits != -1) { + if (fields->properties.minimumSignificantDigits != -1 || + fields->properties.maximumSignificantDigits != -1) { return; } } else { - if (fields->properties->minimumSignificantDigits == -1 && - fields->properties->maximumSignificantDigits == -1) { + if (fields->properties.minimumSignificantDigits == -1 && + fields->properties.maximumSignificantDigits == -1) { return; } } int32_t minSig = useSignificantDigits ? 1 : -1; int32_t maxSig = useSignificantDigits ? 6 : -1; - fields->properties->minimumSignificantDigits = minSig; - fields->properties->maximumSignificantDigits = maxSig; + fields->properties.minimumSignificantDigits = minSig; + fields->properties.maximumSignificantDigits = maxSig; touchNoError(); } @@ -1503,11 +1497,11 @@ void DecimalFormat::setCurrency(const char16_t* theCurrency, UErrorCode& ec) { } CurrencyUnit currencyUnit(theCurrency, ec); if (U_FAILURE(ec)) { return; } - if (!fields->properties->currency.isNull() && fields->properties->currency.getNoError() == currencyUnit) { + if (!fields->properties.currency.isNull() && fields->properties.currency.getNoError() == currencyUnit) { return; } NumberFormat::setCurrency(theCurrency, ec); // to set field for compatibility - fields->properties->currency = currencyUnit; + fields->properties.currency = currencyUnit; // TODO: Set values in fields->symbols, too? touchNoError(); } @@ -1525,20 +1519,20 @@ void DecimalFormat::setCurrencyUsage(UCurrencyUsage newUsage, UErrorCode* ec) { *ec = U_MEMORY_ALLOCATION_ERROR; return; } - if (!fields->properties->currencyUsage.isNull() && newUsage == fields->properties->currencyUsage.getNoError()) { + if (!fields->properties.currencyUsage.isNull() && newUsage == fields->properties.currencyUsage.getNoError()) { return; } - fields->properties->currencyUsage = newUsage; + fields->properties.currencyUsage = newUsage; touch(*ec); } UCurrencyUsage DecimalFormat::getCurrencyUsage() const { // CurrencyUsage is not exported, so we have to get it from the input property bag. // TODO: Should we export CurrencyUsage instead? - if (fields == nullptr || fields->properties->currencyUsage.isNull()) { + if (fields == nullptr || fields->properties.currencyUsage.isNull()) { return UCURR_USAGE_STANDARD; } - return fields->properties->currencyUsage.getNoError(); + return fields->properties.currencyUsage.getNoError(); } void @@ -1550,7 +1544,7 @@ DecimalFormat::formatToDecimalQuantity(double number, DecimalQuantity& output, U status = U_MEMORY_ALLOCATION_ERROR; return; } - fields->formatter->formatDouble(number, status).getDecimalQuantity(output, status); + fields->formatter.formatDouble(number, status).getDecimalQuantity(output, status); } void DecimalFormat::formatToDecimalQuantity(const Formattable& number, DecimalQuantity& output, @@ -1564,7 +1558,7 @@ void DecimalFormat::formatToDecimalQuantity(const Formattable& number, DecimalQu } UFormattedNumberData obj; number.populateDecimalQuantity(obj.quantity, status); - fields->formatter->formatImpl(&obj, status); + fields->formatter.formatImpl(&obj, status); output = std::move(obj.quantity); } @@ -1576,12 +1570,7 @@ const number::LocalizedNumberFormatter* DecimalFormat::toNumberFormatter(UErrorC status = U_MEMORY_ALLOCATION_ERROR; return nullptr; } - return &*fields->formatter; -} - -const number::LocalizedNumberFormatter& DecimalFormat::toNumberFormatter() const { - UErrorCode localStatus = U_ZERO_ERROR; - return *toNumberFormatter(localStatus); + return &fields->formatter; } /** Rebuilds the formatter object from the property bag. */ @@ -1608,9 +1597,9 @@ void DecimalFormat::touch(UErrorCode& status) { // Since memory has already been allocated for the formatter, we can move assign a stack-allocated object // and don't need to call new. (Which is slower and could possibly fail). - *fields->formatter = NumberPropertyMapper::create( - *fields->properties, *fields->symbols, fields->warehouse, *fields->exportedProperties, status).locale( - locale); + fields->formatter = NumberPropertyMapper::create( + fields->properties, *fields->symbols, fields->warehouse, fields->exportedProperties, status + ).locale(locale); // Do this after fields->exportedProperties are set up setupFastFormat(); @@ -1620,13 +1609,13 @@ void DecimalFormat::touch(UErrorCode& status) { delete fields->atomicCurrencyParser.exchange(nullptr); // In order for the getters to work, we need to populate some fields in NumberFormat. - NumberFormat::setCurrency(fields->exportedProperties->currency.get(status).getISOCurrency(), status); - NumberFormat::setMaximumIntegerDigits(fields->exportedProperties->maximumIntegerDigits); - NumberFormat::setMinimumIntegerDigits(fields->exportedProperties->minimumIntegerDigits); - NumberFormat::setMaximumFractionDigits(fields->exportedProperties->maximumFractionDigits); - NumberFormat::setMinimumFractionDigits(fields->exportedProperties->minimumFractionDigits); + NumberFormat::setCurrency(fields->exportedProperties.currency.get(status).getISOCurrency(), status); + NumberFormat::setMaximumIntegerDigits(fields->exportedProperties.maximumIntegerDigits); + NumberFormat::setMinimumIntegerDigits(fields->exportedProperties.minimumIntegerDigits); + NumberFormat::setMaximumFractionDigits(fields->exportedProperties.maximumFractionDigits); + NumberFormat::setMinimumFractionDigits(fields->exportedProperties.minimumFractionDigits); // fImpl->properties, not fields->exportedProperties, since this information comes from the pattern: - NumberFormat::setGroupingUsed(fields->properties->groupingUsed); + NumberFormat::setGroupingUsed(fields->properties.groupingUsed); } void DecimalFormat::touchNoError() { @@ -1639,7 +1628,7 @@ void DecimalFormat::setPropertiesFromPattern(const UnicodeString& pattern, int32 if (U_SUCCESS(status)) { // Cast workaround to get around putting the enum in the public header file auto actualIgnoreRounding = static_cast(ignoreRounding); - PatternParser::parseToExistingProperties(pattern, *fields->properties, actualIgnoreRounding, status); + PatternParser::parseToExistingProperties(pattern, fields->properties, actualIgnoreRounding, status); } } @@ -1658,7 +1647,7 @@ const numparse::impl::NumberParserImpl* DecimalFormat::getParser(UErrorCode& sta } // Try computing the parser on our own - auto* temp = NumberParserImpl::createParserFromProperties(*fields->properties, *fields->symbols, false, status); + auto* temp = NumberParserImpl::createParserFromProperties(fields->properties, *fields->symbols, false, status); if (U_FAILURE(status)) { return nullptr; } @@ -1691,7 +1680,7 @@ const numparse::impl::NumberParserImpl* DecimalFormat::getCurrencyParser(UErrorC } // Try computing the parser on our own - auto* temp = NumberParserImpl::createParserFromProperties(*fields->properties, *fields->symbols, true, status); + auto* temp = NumberParserImpl::createParserFromProperties(fields->properties, *fields->symbols, true, status); if (temp == nullptr) { status = U_MEMORY_ALLOCATION_ERROR; // although we may still dereference, call sites should be guarded @@ -1739,7 +1728,7 @@ DecimalFormat::fieldPositionIteratorHelper(const number::FormattedNumber& format void DecimalFormat::setupFastFormat() { // Check the majority of properties: - if (!fields->properties->equalsDefaultExceptFastFormat()) { + if (!fields->properties.equalsDefaultExceptFastFormat()) { trace("no fast format: equality\n"); fields->canUseFastFormat = false; return; @@ -1747,12 +1736,12 @@ void DecimalFormat::setupFastFormat() { // Now check the remaining properties. // Nontrivial affixes: - UBool trivialPP = fields->properties->positivePrefixPattern.isEmpty(); - UBool trivialPS = fields->properties->positiveSuffixPattern.isEmpty(); - UBool trivialNP = fields->properties->negativePrefixPattern.isBogus() || ( - fields->properties->negativePrefixPattern.length() == 1 && - fields->properties->negativePrefixPattern.charAt(0) == u'-'); - UBool trivialNS = fields->properties->negativeSuffixPattern.isEmpty(); + UBool trivialPP = fields->properties.positivePrefixPattern.isEmpty(); + UBool trivialPS = fields->properties.positiveSuffixPattern.isEmpty(); + UBool trivialNP = fields->properties.negativePrefixPattern.isBogus() || ( + fields->properties.negativePrefixPattern.length() == 1 && + fields->properties.negativePrefixPattern.charAt(0) == u'-'); + UBool trivialNS = fields->properties.negativeSuffixPattern.isEmpty(); if (!trivialPP || !trivialPS || !trivialNP || !trivialNS) { trace("no fast format: affixes\n"); fields->canUseFastFormat = false; @@ -1760,8 +1749,8 @@ void DecimalFormat::setupFastFormat() { } // Grouping (secondary grouping is forbidden in equalsDefaultExceptFastFormat): - bool groupingUsed = fields->properties->groupingUsed; - int32_t groupingSize = fields->properties->groupingSize; + bool groupingUsed = fields->properties.groupingUsed; + int32_t groupingSize = fields->properties.groupingSize; bool unusualGroupingSize = groupingSize > 0 && groupingSize != 3; const UnicodeString& groupingString = fields->symbols->getConstSymbol(DecimalFormatSymbols::kGroupingSeparatorSymbol); if (groupingUsed && (unusualGroupingSize || groupingString.length() != 1)) { @@ -1771,8 +1760,8 @@ void DecimalFormat::setupFastFormat() { } // Integer length: - int32_t minInt = fields->exportedProperties->minimumIntegerDigits; - int32_t maxInt = fields->exportedProperties->maximumIntegerDigits; + int32_t minInt = fields->exportedProperties.minimumIntegerDigits; + int32_t maxInt = fields->exportedProperties.maximumIntegerDigits; // Fastpath supports up to only 10 digits (length of INT32_MIN) if (minInt > 10) { trace("no fast format: integer\n"); @@ -1781,7 +1770,7 @@ void DecimalFormat::setupFastFormat() { } // Fraction length (no fraction part allowed in fast path): - int32_t minFrac = fields->exportedProperties->minimumFractionDigits; + int32_t minFrac = fields->exportedProperties.minimumFractionDigits; if (minFrac > 0) { trace("no fast format: fraction\n"); fields->canUseFastFormat = false; diff --git a/source/i18n/double-conversion-bignum-dtoa.cpp b/source/i18n/double-conversion-bignum-dtoa.cpp index 2add399..a95910d 100644 --- a/source/i18n/double-conversion-bignum-dtoa.cpp +++ b/source/i18n/double-conversion-bignum-dtoa.cpp @@ -49,7 +49,7 @@ U_NAMESPACE_BEGIN namespace double_conversion { static int NormalizedExponent(uint64_t significand, int exponent) { - ASSERT(significand != 0); + DOUBLE_CONVERSION_ASSERT(significand != 0); while ((significand & Double::kHiddenBit) == 0) { significand = significand << 1; exponent = exponent - 1; @@ -90,26 +90,26 @@ static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator, // Generates 'requested_digits' after the decimal point. static void BignumToFixed(int requested_digits, int* decimal_point, Bignum* numerator, Bignum* denominator, - Vector(buffer), int* length); + Vector buffer, int* length); // Generates 'count' digits of numerator/denominator. // Once 'count' digits have been produced rounds the result depending on the // remainder (remainders of exactly .5 round upwards). Might update the // decimal_point when rounding up (for example for 0.9999). static void GenerateCountedDigits(int count, int* decimal_point, Bignum* numerator, Bignum* denominator, - Vector(buffer), int* length); + Vector buffer, int* length); void BignumDtoa(double v, BignumDtoaMode mode, int requested_digits, Vector buffer, int* length, int* decimal_point) { - ASSERT(v > 0); - ASSERT(!Double(v).IsSpecial()); + DOUBLE_CONVERSION_ASSERT(v > 0); + DOUBLE_CONVERSION_ASSERT(!Double(v).IsSpecial()); uint64_t significand; int exponent; bool lower_boundary_is_closer; if (mode == BIGNUM_DTOA_SHORTEST_SINGLE) { float f = static_cast(v); - ASSERT(f == v); + DOUBLE_CONVERSION_ASSERT(f == v); significand = Single(f).Significand(); exponent = Single(f).Exponent(); lower_boundary_is_closer = Single(f).LowerBoundaryIsCloser(); @@ -148,7 +148,7 @@ void BignumDtoa(double v, BignumDtoaMode mode, int requested_digits, // 4e-324. In this case the denominator needs fewer than 324*4 binary digits. // The maximum double is 1.7976931348623157e308 which needs fewer than // 308*4 binary digits. - ASSERT(Bignum::kMaxSignificantBits >= 324*4); + DOUBLE_CONVERSION_ASSERT(Bignum::kMaxSignificantBits >= 324*4); InitialScaledStartValues(significand, exponent, lower_boundary_is_closer, estimated_power, need_boundary_deltas, &numerator, &denominator, @@ -177,7 +177,7 @@ void BignumDtoa(double v, BignumDtoaMode mode, int requested_digits, buffer, length); break; default: - UNREACHABLE(); + DOUBLE_CONVERSION_UNREACHABLE(); } buffer[*length] = '\0'; } @@ -209,7 +209,7 @@ static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator, for (;;) { uint16_t digit; digit = numerator->DivideModuloIntBignum(*denominator); - ASSERT(digit <= 9); // digit is a uint16_t and therefore always positive. + DOUBLE_CONVERSION_ASSERT(digit <= 9); // digit is a uint16_t and therefore always positive. // digit = numerator / denominator (integer division). // numerator = numerator % denominator. buffer[(*length)++] = static_cast(digit + '0'); @@ -255,7 +255,7 @@ static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator, // loop would have stopped earlier. // We still have an assert here in case the preconditions were not // satisfied. - ASSERT(buffer[(*length) - 1] != '9'); + DOUBLE_CONVERSION_ASSERT(buffer[(*length) - 1] != '9'); buffer[(*length) - 1]++; } else { // Halfway case. @@ -266,7 +266,7 @@ static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator, if ((buffer[(*length) - 1] - '0') % 2 == 0) { // Round down => Do nothing. } else { - ASSERT(buffer[(*length) - 1] != '9'); + DOUBLE_CONVERSION_ASSERT(buffer[(*length) - 1] != '9'); buffer[(*length) - 1]++; } } @@ -278,9 +278,9 @@ static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator, // Round up. // Note again that the last digit could not be '9' since this would have // stopped the loop earlier. - // We still have an ASSERT here, in case the preconditions were not + // We still have an DOUBLE_CONVERSION_ASSERT here, in case the preconditions were not // satisfied. - ASSERT(buffer[(*length) -1] != '9'); + DOUBLE_CONVERSION_ASSERT(buffer[(*length) -1] != '9'); buffer[(*length) - 1]++; return; } @@ -297,11 +297,11 @@ static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator, static void GenerateCountedDigits(int count, int* decimal_point, Bignum* numerator, Bignum* denominator, Vector buffer, int* length) { - ASSERT(count >= 0); + DOUBLE_CONVERSION_ASSERT(count >= 0); for (int i = 0; i < count - 1; ++i) { uint16_t digit; digit = numerator->DivideModuloIntBignum(*denominator); - ASSERT(digit <= 9); // digit is a uint16_t and therefore always positive. + DOUBLE_CONVERSION_ASSERT(digit <= 9); // digit is a uint16_t and therefore always positive. // digit = numerator / denominator (integer division). // numerator = numerator % denominator. buffer[i] = static_cast(digit + '0'); @@ -314,7 +314,7 @@ static void GenerateCountedDigits(int count, int* decimal_point, if (Bignum::PlusCompare(*numerator, *numerator, *denominator) >= 0) { digit++; } - ASSERT(digit <= 10); + DOUBLE_CONVERSION_ASSERT(digit <= 10); buffer[count - 1] = static_cast(digit + '0'); // Correct bad digits (in case we had a sequence of '9's). Propagate the // carry until we hat a non-'9' or til we reach the first digit. @@ -339,7 +339,7 @@ static void GenerateCountedDigits(int count, int* decimal_point, // Input verifies: 1 <= (numerator + delta) / denominator < 10. static void BignumToFixed(int requested_digits, int* decimal_point, Bignum* numerator, Bignum* denominator, - Vector(buffer), int* length) { + Vector buffer, int* length) { // Note that we have to look at more than just the requested_digits, since // a number could be rounded up. Example: v=0.5 with requested_digits=0. // Even though the power of v equals 0 we can't just stop here. @@ -355,7 +355,7 @@ static void BignumToFixed(int requested_digits, int* decimal_point, } else if (-(*decimal_point) == requested_digits) { // We only need to verify if the number rounds down or up. // Ex: 0.04 and 0.06 with requested_digits == 1. - ASSERT(*decimal_point == -requested_digits); + DOUBLE_CONVERSION_ASSERT(*decimal_point == -requested_digits); // Initially the fraction lies in range (1, 10]. Multiply the denominator // by 10 so that we can compare more easily. denominator->Times10(); @@ -434,7 +434,7 @@ static void InitialScaledStartValuesPositiveExponent( Bignum* numerator, Bignum* denominator, Bignum* delta_minus, Bignum* delta_plus) { // A positive exponent implies a positive power. - ASSERT(estimated_power >= 0); + DOUBLE_CONVERSION_ASSERT(estimated_power >= 0); // Since the estimated_power is positive we simply multiply the denominator // by 10^estimated_power. @@ -520,7 +520,7 @@ static void InitialScaledStartValuesNegativeExponentNegativePower( // numerator = v * 10^-estimated_power * 2 * 2^-exponent. // Remember: numerator has been abused as power_ten. So no need to assign it // to itself. - ASSERT(numerator == power_ten); + DOUBLE_CONVERSION_ASSERT(numerator == power_ten); numerator->MultiplyByUInt64(significand); // denominator = 2 * 2^-exponent with exponent < 0. diff --git a/source/i18n/double-conversion-bignum.cpp b/source/i18n/double-conversion-bignum.cpp index 5356923..996d75c 100644 --- a/source/i18n/double-conversion-bignum.cpp +++ b/source/i18n/double-conversion-bignum.cpp @@ -34,6 +34,9 @@ #include "unicode/utypes.h" #if !UCONFIG_NO_FORMATTING +#include +#include + // ICU PATCH: Customize header file paths for ICU. #include "double-conversion-bignum.h" @@ -44,136 +47,129 @@ U_NAMESPACE_BEGIN namespace double_conversion { -Bignum::Bignum() - : bigits_buffer_(), bigits_(bigits_buffer_, kBigitCapacity), used_digits_(0), exponent_(0) { - for (int i = 0; i < kBigitCapacity; ++i) { - bigits_[i] = 0; - } +Bignum::Chunk& Bignum::RawBigit(const int index) { + DOUBLE_CONVERSION_ASSERT(static_cast(index) < kBigitCapacity); + return bigits_buffer_[index]; +} + + +const Bignum::Chunk& Bignum::RawBigit(const int index) const { + DOUBLE_CONVERSION_ASSERT(static_cast(index) < kBigitCapacity); + return bigits_buffer_[index]; } template -static int BitSize(S value) { +static int BitSize(const S value) { (void) value; // Mark variable as used. return 8 * sizeof(value); } // Guaranteed to lie in one Bigit. -void Bignum::AssignUInt16(uint16_t value) { - ASSERT(kBigitSize >= BitSize(value)); +void Bignum::AssignUInt16(const uint16_t value) { + DOUBLE_CONVERSION_ASSERT(kBigitSize >= BitSize(value)); Zero(); - if (value == 0) return; - - EnsureCapacity(1); - bigits_[0] = value; - used_digits_ = 1; + if (value > 0) { + RawBigit(0) = value; + used_bigits_ = 1; + } } void Bignum::AssignUInt64(uint64_t value) { - const int kUInt64Size = 64; - Zero(); - if (value == 0) return; - - int needed_bigits = kUInt64Size / kBigitSize + 1; - EnsureCapacity(needed_bigits); - for (int i = 0; i < needed_bigits; ++i) { - bigits_[i] = value & kBigitMask; - value = value >> kBigitSize; + for(int i = 0; value > 0; ++i) { + RawBigit(i) = value & kBigitMask; + value >>= kBigitSize; + ++used_bigits_; } - used_digits_ = needed_bigits; - Clamp(); } void Bignum::AssignBignum(const Bignum& other) { exponent_ = other.exponent_; - for (int i = 0; i < other.used_digits_; ++i) { - bigits_[i] = other.bigits_[i]; + for (int i = 0; i < other.used_bigits_; ++i) { + RawBigit(i) = other.RawBigit(i); } - // Clear the excess digits (if there were any). - for (int i = other.used_digits_; i < used_digits_; ++i) { - bigits_[i] = 0; - } - used_digits_ = other.used_digits_; + used_bigits_ = other.used_bigits_; } -static uint64_t ReadUInt64(Vector buffer, - int from, - int digits_to_read) { +static uint64_t ReadUInt64(const Vector buffer, + const int from, + const int digits_to_read) { uint64_t result = 0; for (int i = from; i < from + digits_to_read; ++i) { - int digit = buffer[i] - '0'; - ASSERT(0 <= digit && digit <= 9); + const int digit = buffer[i] - '0'; + DOUBLE_CONVERSION_ASSERT(0 <= digit && digit <= 9); result = result * 10 + digit; } return result; } -void Bignum::AssignDecimalString(Vector value) { +void Bignum::AssignDecimalString(const Vector value) { // 2^64 = 18446744073709551616 > 10^19 - const int kMaxUint64DecimalDigits = 19; + static const int kMaxUint64DecimalDigits = 19; Zero(); int length = value.length(); - unsigned int pos = 0; + unsigned pos = 0; // Let's just say that each digit needs 4 bits. while (length >= kMaxUint64DecimalDigits) { - uint64_t digits = ReadUInt64(value, pos, kMaxUint64DecimalDigits); + const uint64_t digits = ReadUInt64(value, pos, kMaxUint64DecimalDigits); pos += kMaxUint64DecimalDigits; length -= kMaxUint64DecimalDigits; MultiplyByPowerOfTen(kMaxUint64DecimalDigits); AddUInt64(digits); } - uint64_t digits = ReadUInt64(value, pos, length); + const uint64_t digits = ReadUInt64(value, pos, length); MultiplyByPowerOfTen(length); AddUInt64(digits); Clamp(); } -static int HexCharValue(char c) { - if ('0' <= c && c <= '9') return c - '0'; - if ('a' <= c && c <= 'f') return 10 + c - 'a'; - ASSERT('A' <= c && c <= 'F'); +static uint64_t HexCharValue(const int c) { + if ('0' <= c && c <= '9') { + return c - '0'; + } + if ('a' <= c && c <= 'f') { + return 10 + c - 'a'; + } + DOUBLE_CONVERSION_ASSERT('A' <= c && c <= 'F'); return 10 + c - 'A'; } +// Unlike AssignDecimalString(), this function is "only" used +// for unit-tests and therefore not performance critical. void Bignum::AssignHexString(Vector value) { Zero(); - int length = value.length(); - - int needed_bigits = length * 4 / kBigitSize + 1; - EnsureCapacity(needed_bigits); - int string_index = length - 1; - for (int i = 0; i < needed_bigits - 1; ++i) { - // These bigits are guaranteed to be "full". - Chunk current_bigit = 0; - for (int j = 0; j < kBigitSize / 4; j++) { - current_bigit += HexCharValue(value[string_index--]) << (j * 4); + // Required capacity could be reduced by ignoring leading zeros. + EnsureCapacity(((value.length() * 4) + kBigitSize - 1) / kBigitSize); + DOUBLE_CONVERSION_ASSERT(sizeof(uint64_t) * 8 >= kBigitSize + 4); // TODO: static_assert + // Accumulates converted hex digits until at least kBigitSize bits. + // Works with non-factor-of-four kBigitSizes. + uint64_t tmp = 0; // Accumulates converted hex digits until at least + for (int cnt = 0; !value.is_empty(); value.pop_back()) { + tmp |= (HexCharValue(value.last()) << cnt); + if ((cnt += 4) >= kBigitSize) { + RawBigit(used_bigits_++) = (tmp & kBigitMask); + cnt -= kBigitSize; + tmp >>= kBigitSize; } - bigits_[i] = current_bigit; - } - used_digits_ = needed_bigits - 1; - - Chunk most_significant_bigit = 0; // Could be = 0; - for (int j = 0; j <= string_index; ++j) { - most_significant_bigit <<= 4; - most_significant_bigit += HexCharValue(value[j]); } - if (most_significant_bigit != 0) { - bigits_[used_digits_] = most_significant_bigit; - used_digits_++; + if (tmp > 0) { + RawBigit(used_bigits_++) = tmp; } Clamp(); } -void Bignum::AddUInt64(uint64_t operand) { - if (operand == 0) return; +void Bignum::AddUInt64(const uint64_t operand) { + if (operand == 0) { + return; + } Bignum other; other.AssignUInt64(operand); AddBignum(other); @@ -181,8 +177,8 @@ void Bignum::AddUInt64(uint64_t operand) { void Bignum::AddBignum(const Bignum& other) { - ASSERT(IsClamped()); - ASSERT(other.IsClamped()); + DOUBLE_CONVERSION_ASSERT(IsClamped()); + DOUBLE_CONVERSION_ASSERT(other.IsClamped()); // If this has a greater exponent than other append zero-bigits to this. // After this call exponent_ <= other.exponent_. @@ -200,48 +196,52 @@ void Bignum::AddBignum(const Bignum& other) { // cccccccccccc 0000 // In both cases we might need a carry bigit. - EnsureCapacity(1 + Max(BigitLength(), other.BigitLength()) - exponent_); + EnsureCapacity(1 + (std::max)(BigitLength(), other.BigitLength()) - exponent_); Chunk carry = 0; int bigit_pos = other.exponent_ - exponent_; - ASSERT(bigit_pos >= 0); - for (int i = 0; i < other.used_digits_; ++i) { - Chunk sum = bigits_[bigit_pos] + other.bigits_[i] + carry; - bigits_[bigit_pos] = sum & kBigitMask; + DOUBLE_CONVERSION_ASSERT(bigit_pos >= 0); + for (int i = used_bigits_; i < bigit_pos; ++i) { + RawBigit(i) = 0; + } + for (int i = 0; i < other.used_bigits_; ++i) { + const Chunk my = (bigit_pos < used_bigits_) ? RawBigit(bigit_pos) : 0; + const Chunk sum = my + other.RawBigit(i) + carry; + RawBigit(bigit_pos) = sum & kBigitMask; carry = sum >> kBigitSize; - bigit_pos++; + ++bigit_pos; } - while (carry != 0) { - Chunk sum = bigits_[bigit_pos] + carry; - bigits_[bigit_pos] = sum & kBigitMask; + const Chunk my = (bigit_pos < used_bigits_) ? RawBigit(bigit_pos) : 0; + const Chunk sum = my + carry; + RawBigit(bigit_pos) = sum & kBigitMask; carry = sum >> kBigitSize; - bigit_pos++; + ++bigit_pos; } - used_digits_ = Max(bigit_pos, used_digits_); - ASSERT(IsClamped()); + used_bigits_ = (std::max)(bigit_pos, static_cast(used_bigits_)); + DOUBLE_CONVERSION_ASSERT(IsClamped()); } void Bignum::SubtractBignum(const Bignum& other) { - ASSERT(IsClamped()); - ASSERT(other.IsClamped()); + DOUBLE_CONVERSION_ASSERT(IsClamped()); + DOUBLE_CONVERSION_ASSERT(other.IsClamped()); // We require this to be bigger than other. - ASSERT(LessEqual(other, *this)); + DOUBLE_CONVERSION_ASSERT(LessEqual(other, *this)); Align(other); - int offset = other.exponent_ - exponent_; + const int offset = other.exponent_ - exponent_; Chunk borrow = 0; int i; - for (i = 0; i < other.used_digits_; ++i) { - ASSERT((borrow == 0) || (borrow == 1)); - Chunk difference = bigits_[i + offset] - other.bigits_[i] - borrow; - bigits_[i + offset] = difference & kBigitMask; + for (i = 0; i < other.used_bigits_; ++i) { + DOUBLE_CONVERSION_ASSERT((borrow == 0) || (borrow == 1)); + const Chunk difference = RawBigit(i + offset) - other.RawBigit(i) - borrow; + RawBigit(i + offset) = difference & kBigitMask; borrow = difference >> (kChunkSize - 1); } while (borrow != 0) { - Chunk difference = bigits_[i + offset] - borrow; - bigits_[i + offset] = difference & kBigitMask; + const Chunk difference = RawBigit(i + offset) - borrow; + RawBigit(i + offset) = difference & kBigitMask; borrow = difference >> (kChunkSize - 1); ++i; } @@ -249,91 +249,105 @@ void Bignum::SubtractBignum(const Bignum& other) { } -void Bignum::ShiftLeft(int shift_amount) { - if (used_digits_ == 0) return; - exponent_ += shift_amount / kBigitSize; - int local_shift = shift_amount % kBigitSize; - EnsureCapacity(used_digits_ + 1); +void Bignum::ShiftLeft(const int shift_amount) { + if (used_bigits_ == 0) { + return; + } + exponent_ += (shift_amount / kBigitSize); + const int local_shift = shift_amount % kBigitSize; + EnsureCapacity(used_bigits_ + 1); BigitsShiftLeft(local_shift); } -void Bignum::MultiplyByUInt32(uint32_t factor) { - if (factor == 1) return; +void Bignum::MultiplyByUInt32(const uint32_t factor) { + if (factor == 1) { + return; + } if (factor == 0) { Zero(); return; } - if (used_digits_ == 0) return; - + if (used_bigits_ == 0) { + return; + } // The product of a bigit with the factor is of size kBigitSize + 32. // Assert that this number + 1 (for the carry) fits into double chunk. - ASSERT(kDoubleChunkSize >= kBigitSize + 32 + 1); + DOUBLE_CONVERSION_ASSERT(kDoubleChunkSize >= kBigitSize + 32 + 1); DoubleChunk carry = 0; - for (int i = 0; i < used_digits_; ++i) { - DoubleChunk product = static_cast(factor) * bigits_[i] + carry; - bigits_[i] = static_cast(product & kBigitMask); + for (int i = 0; i < used_bigits_; ++i) { + const DoubleChunk product = static_cast(factor) * RawBigit(i) + carry; + RawBigit(i) = static_cast(product & kBigitMask); carry = (product >> kBigitSize); } while (carry != 0) { - EnsureCapacity(used_digits_ + 1); - bigits_[used_digits_] = carry & kBigitMask; - used_digits_++; + EnsureCapacity(used_bigits_ + 1); + RawBigit(used_bigits_) = carry & kBigitMask; + used_bigits_++; carry >>= kBigitSize; } } -void Bignum::MultiplyByUInt64(uint64_t factor) { - if (factor == 1) return; +void Bignum::MultiplyByUInt64(const uint64_t factor) { + if (factor == 1) { + return; + } if (factor == 0) { Zero(); return; } - ASSERT(kBigitSize < 32); + if (used_bigits_ == 0) { + return; + } + DOUBLE_CONVERSION_ASSERT(kBigitSize < 32); uint64_t carry = 0; - uint64_t low = factor & 0xFFFFFFFF; - uint64_t high = factor >> 32; - for (int i = 0; i < used_digits_; ++i) { - uint64_t product_low = low * bigits_[i]; - uint64_t product_high = high * bigits_[i]; - uint64_t tmp = (carry & kBigitMask) + product_low; - bigits_[i] = tmp & kBigitMask; + const uint64_t low = factor & 0xFFFFFFFF; + const uint64_t high = factor >> 32; + for (int i = 0; i < used_bigits_; ++i) { + const uint64_t product_low = low * RawBigit(i); + const uint64_t product_high = high * RawBigit(i); + const uint64_t tmp = (carry & kBigitMask) + product_low; + RawBigit(i) = tmp & kBigitMask; carry = (carry >> kBigitSize) + (tmp >> kBigitSize) + (product_high << (32 - kBigitSize)); } while (carry != 0) { - EnsureCapacity(used_digits_ + 1); - bigits_[used_digits_] = carry & kBigitMask; - used_digits_++; + EnsureCapacity(used_bigits_ + 1); + RawBigit(used_bigits_) = carry & kBigitMask; + used_bigits_++; carry >>= kBigitSize; } } -void Bignum::MultiplyByPowerOfTen(int exponent) { - const uint64_t kFive27 = UINT64_2PART_C(0x6765c793, fa10079d); - const uint16_t kFive1 = 5; - const uint16_t kFive2 = kFive1 * 5; - const uint16_t kFive3 = kFive2 * 5; - const uint16_t kFive4 = kFive3 * 5; - const uint16_t kFive5 = kFive4 * 5; - const uint16_t kFive6 = kFive5 * 5; - const uint32_t kFive7 = kFive6 * 5; - const uint32_t kFive8 = kFive7 * 5; - const uint32_t kFive9 = kFive8 * 5; - const uint32_t kFive10 = kFive9 * 5; - const uint32_t kFive11 = kFive10 * 5; - const uint32_t kFive12 = kFive11 * 5; - const uint32_t kFive13 = kFive12 * 5; - const uint32_t kFive1_to_12[] = +void Bignum::MultiplyByPowerOfTen(const int exponent) { + static const uint64_t kFive27 = DOUBLE_CONVERSION_UINT64_2PART_C(0x6765c793, fa10079d); + static const uint16_t kFive1 = 5; + static const uint16_t kFive2 = kFive1 * 5; + static const uint16_t kFive3 = kFive2 * 5; + static const uint16_t kFive4 = kFive3 * 5; + static const uint16_t kFive5 = kFive4 * 5; + static const uint16_t kFive6 = kFive5 * 5; + static const uint32_t kFive7 = kFive6 * 5; + static const uint32_t kFive8 = kFive7 * 5; + static const uint32_t kFive9 = kFive8 * 5; + static const uint32_t kFive10 = kFive9 * 5; + static const uint32_t kFive11 = kFive10 * 5; + static const uint32_t kFive12 = kFive11 * 5; + static const uint32_t kFive13 = kFive12 * 5; + static const uint32_t kFive1_to_12[] = { kFive1, kFive2, kFive3, kFive4, kFive5, kFive6, kFive7, kFive8, kFive9, kFive10, kFive11, kFive12 }; - ASSERT(exponent >= 0); - if (exponent == 0) return; - if (used_digits_ == 0) return; + DOUBLE_CONVERSION_ASSERT(exponent >= 0); + if (exponent == 0) { + return; + } + if (used_bigits_ == 0) { + return; + } // We shift by exponent at the end just before returning. int remaining_exponent = exponent; while (remaining_exponent >= 27) { @@ -352,8 +366,8 @@ void Bignum::MultiplyByPowerOfTen(int exponent) { void Bignum::Square() { - ASSERT(IsClamped()); - int product_length = 2 * used_digits_; + DOUBLE_CONVERSION_ASSERT(IsClamped()); + const int product_length = 2 * used_bigits_; EnsureCapacity(product_length); // Comba multiplication: compute each column separately. @@ -368,64 +382,64 @@ void Bignum::Square() { // // Assert that the additional number of bits in a DoubleChunk are enough to // sum up used_digits of Bigit*Bigit. - if ((1 << (2 * (kChunkSize - kBigitSize))) <= used_digits_) { - UNIMPLEMENTED(); + if ((1 << (2 * (kChunkSize - kBigitSize))) <= used_bigits_) { + DOUBLE_CONVERSION_UNIMPLEMENTED(); } DoubleChunk accumulator = 0; // First shift the digits so we don't overwrite them. - int copy_offset = used_digits_; - for (int i = 0; i < used_digits_; ++i) { - bigits_[copy_offset + i] = bigits_[i]; + const int copy_offset = used_bigits_; + for (int i = 0; i < used_bigits_; ++i) { + RawBigit(copy_offset + i) = RawBigit(i); } // We have two loops to avoid some 'if's in the loop. - for (int i = 0; i < used_digits_; ++i) { + for (int i = 0; i < used_bigits_; ++i) { // Process temporary digit i with power i. // The sum of the two indices must be equal to i. int bigit_index1 = i; int bigit_index2 = 0; // Sum all of the sub-products. while (bigit_index1 >= 0) { - Chunk chunk1 = bigits_[copy_offset + bigit_index1]; - Chunk chunk2 = bigits_[copy_offset + bigit_index2]; + const Chunk chunk1 = RawBigit(copy_offset + bigit_index1); + const Chunk chunk2 = RawBigit(copy_offset + bigit_index2); accumulator += static_cast(chunk1) * chunk2; bigit_index1--; bigit_index2++; } - bigits_[i] = static_cast(accumulator) & kBigitMask; + RawBigit(i) = static_cast(accumulator) & kBigitMask; accumulator >>= kBigitSize; } - for (int i = used_digits_; i < product_length; ++i) { - int bigit_index1 = used_digits_ - 1; + for (int i = used_bigits_; i < product_length; ++i) { + int bigit_index1 = used_bigits_ - 1; int bigit_index2 = i - bigit_index1; // Invariant: sum of both indices is again equal to i. // Inner loop runs 0 times on last iteration, emptying accumulator. - while (bigit_index2 < used_digits_) { - Chunk chunk1 = bigits_[copy_offset + bigit_index1]; - Chunk chunk2 = bigits_[copy_offset + bigit_index2]; + while (bigit_index2 < used_bigits_) { + const Chunk chunk1 = RawBigit(copy_offset + bigit_index1); + const Chunk chunk2 = RawBigit(copy_offset + bigit_index2); accumulator += static_cast(chunk1) * chunk2; bigit_index1--; bigit_index2++; } - // The overwritten bigits_[i] will never be read in further loop iterations, + // The overwritten RawBigit(i) will never be read in further loop iterations, // because bigit_index1 and bigit_index2 are always greater - // than i - used_digits_. - bigits_[i] = static_cast(accumulator) & kBigitMask; + // than i - used_bigits_. + RawBigit(i) = static_cast(accumulator) & kBigitMask; accumulator >>= kBigitSize; } // Since the result was guaranteed to lie inside the number the // accumulator must be 0 now. - ASSERT(accumulator == 0); + DOUBLE_CONVERSION_ASSERT(accumulator == 0); // Don't forget to update the used_digits and the exponent. - used_digits_ = product_length; + used_bigits_ = product_length; exponent_ *= 2; Clamp(); } -void Bignum::AssignPowerUInt16(uint16_t base, int power_exponent) { - ASSERT(base != 0); - ASSERT(power_exponent >= 0); +void Bignum::AssignPowerUInt16(uint16_t base, const int power_exponent) { + DOUBLE_CONVERSION_ASSERT(base != 0); + DOUBLE_CONVERSION_ASSERT(power_exponent >= 0); if (power_exponent == 0) { AssignUInt16(1); return; @@ -445,7 +459,7 @@ void Bignum::AssignPowerUInt16(uint16_t base, int power_exponent) { tmp_base >>= 1; bit_size++; } - int final_size = bit_size * power_exponent; + const int final_size = bit_size * power_exponent; // 1 extra bigit for the shifting, and one for rounded final_size. EnsureCapacity(final_size / kBigitSize + 2); @@ -466,10 +480,10 @@ void Bignum::AssignPowerUInt16(uint16_t base, int power_exponent) { // Verify that there is enough space in this_value to perform the // multiplication. The first bit_size bits must be 0. if ((power_exponent & mask) != 0) { - ASSERT(bit_size > 0); - uint64_t base_bits_mask = - ~((static_cast(1) << (64 - bit_size)) - 1); - bool high_bits_zero = (this_value & base_bits_mask) == 0; + DOUBLE_CONVERSION_ASSERT(bit_size > 0); + const uint64_t base_bits_mask = + ~((static_cast(1) << (64 - bit_size)) - 1); + const bool high_bits_zero = (this_value & base_bits_mask) == 0; if (high_bits_zero) { this_value *= base; } else { @@ -499,9 +513,9 @@ void Bignum::AssignPowerUInt16(uint16_t base, int power_exponent) { // Precondition: this/other < 16bit. uint16_t Bignum::DivideModuloIntBignum(const Bignum& other) { - ASSERT(IsClamped()); - ASSERT(other.IsClamped()); - ASSERT(other.used_digits_ > 0); + DOUBLE_CONVERSION_ASSERT(IsClamped()); + DOUBLE_CONVERSION_ASSERT(other.IsClamped()); + DOUBLE_CONVERSION_ASSERT(other.used_bigits_ > 0); // Easy case: if we have less digits than the divisor than the result is 0. // Note: this handles the case where this == 0, too. @@ -519,34 +533,34 @@ uint16_t Bignum::DivideModuloIntBignum(const Bignum& other) { // This naive approach is extremely inefficient if `this` divided by other // is big. This function is implemented for doubleToString where // the result should be small (less than 10). - ASSERT(other.bigits_[other.used_digits_ - 1] >= ((1 << kBigitSize) / 16)); - ASSERT(bigits_[used_digits_ - 1] < 0x10000); + DOUBLE_CONVERSION_ASSERT(other.RawBigit(other.used_bigits_ - 1) >= ((1 << kBigitSize) / 16)); + DOUBLE_CONVERSION_ASSERT(RawBigit(used_bigits_ - 1) < 0x10000); // Remove the multiples of the first digit. // Example this = 23 and other equals 9. -> Remove 2 multiples. - result += static_cast(bigits_[used_digits_ - 1]); - SubtractTimes(other, bigits_[used_digits_ - 1]); + result += static_cast(RawBigit(used_bigits_ - 1)); + SubtractTimes(other, RawBigit(used_bigits_ - 1)); } - ASSERT(BigitLength() == other.BigitLength()); + DOUBLE_CONVERSION_ASSERT(BigitLength() == other.BigitLength()); // Both bignums are at the same length now. // Since other has more than 0 digits we know that the access to - // bigits_[used_digits_ - 1] is safe. - Chunk this_bigit = bigits_[used_digits_ - 1]; - Chunk other_bigit = other.bigits_[other.used_digits_ - 1]; + // RawBigit(used_bigits_ - 1) is safe. + const Chunk this_bigit = RawBigit(used_bigits_ - 1); + const Chunk other_bigit = other.RawBigit(other.used_bigits_ - 1); - if (other.used_digits_ == 1) { + if (other.used_bigits_ == 1) { // Shortcut for easy (and common) case. int quotient = this_bigit / other_bigit; - bigits_[used_digits_ - 1] = this_bigit - other_bigit * quotient; - ASSERT(quotient < 0x10000); + RawBigit(used_bigits_ - 1) = this_bigit - other_bigit * quotient; + DOUBLE_CONVERSION_ASSERT(quotient < 0x10000); result += static_cast(quotient); Clamp(); return result; } - int division_estimate = this_bigit / (other_bigit + 1); - ASSERT(division_estimate < 0x10000); + const int division_estimate = this_bigit / (other_bigit + 1); + DOUBLE_CONVERSION_ASSERT(division_estimate < 0x10000); result += static_cast(division_estimate); SubtractTimes(other, division_estimate); @@ -566,7 +580,7 @@ uint16_t Bignum::DivideModuloIntBignum(const Bignum& other) { template static int SizeInHexChars(S number) { - ASSERT(number > 0); + DOUBLE_CONVERSION_ASSERT(number > 0); int result = 0; while (number != 0) { number >>= 4; @@ -576,29 +590,35 @@ static int SizeInHexChars(S number) { } -static char HexCharOfValue(int value) { - ASSERT(0 <= value && value <= 16); - if (value < 10) return static_cast(value + '0'); +static char HexCharOfValue(const int value) { + DOUBLE_CONVERSION_ASSERT(0 <= value && value <= 16); + if (value < 10) { + return static_cast(value + '0'); + } return static_cast(value - 10 + 'A'); } -bool Bignum::ToHexString(char* buffer, int buffer_size) const { - ASSERT(IsClamped()); +bool Bignum::ToHexString(char* buffer, const int buffer_size) const { + DOUBLE_CONVERSION_ASSERT(IsClamped()); // Each bigit must be printable as separate hex-character. - ASSERT(kBigitSize % 4 == 0); - const int kHexCharsPerBigit = kBigitSize / 4; + DOUBLE_CONVERSION_ASSERT(kBigitSize % 4 == 0); + static const int kHexCharsPerBigit = kBigitSize / 4; - if (used_digits_ == 0) { - if (buffer_size < 2) return false; + if (used_bigits_ == 0) { + if (buffer_size < 2) { + return false; + } buffer[0] = '0'; buffer[1] = '\0'; return true; } // We add 1 for the terminating '\0' character. - int needed_chars = (BigitLength() - 1) * kHexCharsPerBigit + - SizeInHexChars(bigits_[used_digits_ - 1]) + 1; - if (needed_chars > buffer_size) return false; + const int needed_chars = (BigitLength() - 1) * kHexCharsPerBigit + + SizeInHexChars(RawBigit(used_bigits_ - 1)) + 1; + if (needed_chars > buffer_size) { + return false; + } int string_index = needed_chars - 1; buffer[string_index--] = '\0'; for (int i = 0; i < exponent_; ++i) { @@ -606,15 +626,15 @@ bool Bignum::ToHexString(char* buffer, int buffer_size) const { buffer[string_index--] = '0'; } } - for (int i = 0; i < used_digits_ - 1; ++i) { - Chunk current_bigit = bigits_[i]; + for (int i = 0; i < used_bigits_ - 1; ++i) { + Chunk current_bigit = RawBigit(i); for (int j = 0; j < kHexCharsPerBigit; ++j) { buffer[string_index--] = HexCharOfValue(current_bigit & 0xF); current_bigit >>= 4; } } // And finally the last bigit. - Chunk most_significant_bigit = bigits_[used_digits_ - 1]; + Chunk most_significant_bigit = RawBigit(used_bigits_ - 1); while (most_significant_bigit != 0) { buffer[string_index--] = HexCharOfValue(most_significant_bigit & 0xF); most_significant_bigit >>= 4; @@ -623,25 +643,37 @@ bool Bignum::ToHexString(char* buffer, int buffer_size) const { } -Bignum::Chunk Bignum::BigitAt(int index) const { - if (index >= BigitLength()) return 0; - if (index < exponent_) return 0; - return bigits_[index - exponent_]; +Bignum::Chunk Bignum::BigitOrZero(const int index) const { + if (index >= BigitLength()) { + return 0; + } + if (index < exponent_) { + return 0; + } + return RawBigit(index - exponent_); } int Bignum::Compare(const Bignum& a, const Bignum& b) { - ASSERT(a.IsClamped()); - ASSERT(b.IsClamped()); - int bigit_length_a = a.BigitLength(); - int bigit_length_b = b.BigitLength(); - if (bigit_length_a < bigit_length_b) return -1; - if (bigit_length_a > bigit_length_b) return +1; - for (int i = bigit_length_a - 1; i >= Min(a.exponent_, b.exponent_); --i) { - Chunk bigit_a = a.BigitAt(i); - Chunk bigit_b = b.BigitAt(i); - if (bigit_a < bigit_b) return -1; - if (bigit_a > bigit_b) return +1; + DOUBLE_CONVERSION_ASSERT(a.IsClamped()); + DOUBLE_CONVERSION_ASSERT(b.IsClamped()); + const int bigit_length_a = a.BigitLength(); + const int bigit_length_b = b.BigitLength(); + if (bigit_length_a < bigit_length_b) { + return -1; + } + if (bigit_length_a > bigit_length_b) { + return +1; + } + for (int i = bigit_length_a - 1; i >= (std::min)(a.exponent_, b.exponent_); --i) { + const Chunk bigit_a = a.BigitOrZero(i); + const Chunk bigit_b = b.BigitOrZero(i); + if (bigit_a < bigit_b) { + return -1; + } + if (bigit_a > bigit_b) { + return +1; + } // Otherwise they are equal up to this digit. Try the next digit. } return 0; @@ -649,14 +681,18 @@ int Bignum::Compare(const Bignum& a, const Bignum& b) { int Bignum::PlusCompare(const Bignum& a, const Bignum& b, const Bignum& c) { - ASSERT(a.IsClamped()); - ASSERT(b.IsClamped()); - ASSERT(c.IsClamped()); + DOUBLE_CONVERSION_ASSERT(a.IsClamped()); + DOUBLE_CONVERSION_ASSERT(b.IsClamped()); + DOUBLE_CONVERSION_ASSERT(c.IsClamped()); if (a.BigitLength() < b.BigitLength()) { return PlusCompare(b, a, c); } - if (a.BigitLength() + 1 < c.BigitLength()) return -1; - if (a.BigitLength() > c.BigitLength()) return +1; + if (a.BigitLength() + 1 < c.BigitLength()) { + return -1; + } + if (a.BigitLength() > c.BigitLength()) { + return +1; + } // The exponent encodes 0-bigits. So if there are more 0-digits in 'a' than // 'b' has digits, then the bigit-length of 'a'+'b' must be equal to the one // of 'a'. @@ -666,92 +702,83 @@ int Bignum::PlusCompare(const Bignum& a, const Bignum& b, const Bignum& c) { Chunk borrow = 0; // Starting at min_exponent all digits are == 0. So no need to compare them. - int min_exponent = Min(Min(a.exponent_, b.exponent_), c.exponent_); + const int min_exponent = (std::min)((std::min)(a.exponent_, b.exponent_), c.exponent_); for (int i = c.BigitLength() - 1; i >= min_exponent; --i) { - Chunk chunk_a = a.BigitAt(i); - Chunk chunk_b = b.BigitAt(i); - Chunk chunk_c = c.BigitAt(i); - Chunk sum = chunk_a + chunk_b; + const Chunk chunk_a = a.BigitOrZero(i); + const Chunk chunk_b = b.BigitOrZero(i); + const Chunk chunk_c = c.BigitOrZero(i); + const Chunk sum = chunk_a + chunk_b; if (sum > chunk_c + borrow) { return +1; } else { borrow = chunk_c + borrow - sum; - if (borrow > 1) return -1; + if (borrow > 1) { + return -1; + } borrow <<= kBigitSize; } } - if (borrow == 0) return 0; + if (borrow == 0) { + return 0; + } return -1; } void Bignum::Clamp() { - while (used_digits_ > 0 && bigits_[used_digits_ - 1] == 0) { - used_digits_--; + while (used_bigits_ > 0 && RawBigit(used_bigits_ - 1) == 0) { + used_bigits_--; } - if (used_digits_ == 0) { + if (used_bigits_ == 0) { // Zero. exponent_ = 0; } } -bool Bignum::IsClamped() const { - return used_digits_ == 0 || bigits_[used_digits_ - 1] != 0; -} - - -void Bignum::Zero() { - for (int i = 0; i < used_digits_; ++i) { - bigits_[i] = 0; - } - used_digits_ = 0; - exponent_ = 0; -} - - void Bignum::Align(const Bignum& other) { if (exponent_ > other.exponent_) { - // If "X" represents a "hidden" digit (by the exponent) then we are in the + // If "X" represents a "hidden" bigit (by the exponent) then we are in the // following case (a == this, b == other): // a: aaaaaaXXXX or a: aaaaaXXX // b: bbbbbbX b: bbbbbbbbXX // We replace some of the hidden digits (X) of a with 0 digits. // a: aaaaaa000X or a: aaaaa0XX - int zero_digits = exponent_ - other.exponent_; - EnsureCapacity(used_digits_ + zero_digits); - for (int i = used_digits_ - 1; i >= 0; --i) { - bigits_[i + zero_digits] = bigits_[i]; + const int zero_bigits = exponent_ - other.exponent_; + EnsureCapacity(used_bigits_ + zero_bigits); + for (int i = used_bigits_ - 1; i >= 0; --i) { + RawBigit(i + zero_bigits) = RawBigit(i); } - for (int i = 0; i < zero_digits; ++i) { - bigits_[i] = 0; + for (int i = 0; i < zero_bigits; ++i) { + RawBigit(i) = 0; } - used_digits_ += zero_digits; - exponent_ -= zero_digits; - ASSERT(used_digits_ >= 0); - ASSERT(exponent_ >= 0); + used_bigits_ += zero_bigits; + exponent_ -= zero_bigits; + + DOUBLE_CONVERSION_ASSERT(used_bigits_ >= 0); + DOUBLE_CONVERSION_ASSERT(exponent_ >= 0); } } -void Bignum::BigitsShiftLeft(int shift_amount) { - ASSERT(shift_amount < kBigitSize); - ASSERT(shift_amount >= 0); +void Bignum::BigitsShiftLeft(const int shift_amount) { + DOUBLE_CONVERSION_ASSERT(shift_amount < kBigitSize); + DOUBLE_CONVERSION_ASSERT(shift_amount >= 0); Chunk carry = 0; - for (int i = 0; i < used_digits_; ++i) { - Chunk new_carry = bigits_[i] >> (kBigitSize - shift_amount); - bigits_[i] = ((bigits_[i] << shift_amount) + carry) & kBigitMask; + for (int i = 0; i < used_bigits_; ++i) { + const Chunk new_carry = RawBigit(i) >> (kBigitSize - shift_amount); + RawBigit(i) = ((RawBigit(i) << shift_amount) + carry) & kBigitMask; carry = new_carry; } if (carry != 0) { - bigits_[used_digits_] = carry; - used_digits_++; + RawBigit(used_bigits_) = carry; + used_bigits_++; } } -void Bignum::SubtractTimes(const Bignum& other, int factor) { - ASSERT(exponent_ <= other.exponent_); +void Bignum::SubtractTimes(const Bignum& other, const int factor) { + DOUBLE_CONVERSION_ASSERT(exponent_ <= other.exponent_); if (factor < 3) { for (int i = 0; i < factor; ++i) { SubtractBignum(other); @@ -759,19 +786,21 @@ void Bignum::SubtractTimes(const Bignum& other, int factor) { return; } Chunk borrow = 0; - int exponent_diff = other.exponent_ - exponent_; - for (int i = 0; i < other.used_digits_; ++i) { - DoubleChunk product = static_cast(factor) * other.bigits_[i]; - DoubleChunk remove = borrow + product; - Chunk difference = bigits_[i + exponent_diff] - (remove & kBigitMask); - bigits_[i + exponent_diff] = difference & kBigitMask; + const int exponent_diff = other.exponent_ - exponent_; + for (int i = 0; i < other.used_bigits_; ++i) { + const DoubleChunk product = static_cast(factor) * other.RawBigit(i); + const DoubleChunk remove = borrow + product; + const Chunk difference = RawBigit(i + exponent_diff) - (remove & kBigitMask); + RawBigit(i + exponent_diff) = difference & kBigitMask; borrow = static_cast((difference >> (kChunkSize - 1)) + (remove >> kBigitSize)); } - for (int i = other.used_digits_ + exponent_diff; i < used_digits_; ++i) { - if (borrow == 0) return; - Chunk difference = bigits_[i] - borrow; - bigits_[i] = difference & kBigitMask; + for (int i = other.used_bigits_ + exponent_diff; i < used_bigits_; ++i) { + if (borrow == 0) { + return; + } + const Chunk difference = RawBigit(i) - borrow; + RawBigit(i) = difference & kBigitMask; borrow = difference >> (kChunkSize - 1); } Clamp(); diff --git a/source/i18n/double-conversion-bignum.h b/source/i18n/double-conversion-bignum.h index d39a3de..bae900a 100644 --- a/source/i18n/double-conversion-bignum.h +++ b/source/i18n/double-conversion-bignum.h @@ -53,26 +53,27 @@ class Bignum { // exponent. static const int kMaxSignificantBits = 3584; - Bignum(); - void AssignUInt16(uint16_t value); + Bignum() : used_bigits_(0), exponent_(0) {} + + void AssignUInt16(const uint16_t value); void AssignUInt64(uint64_t value); void AssignBignum(const Bignum& other); - void AssignDecimalString(Vector value); - void AssignHexString(Vector value); + void AssignDecimalString(const Vector value); + void AssignHexString(const Vector value); - void AssignPowerUInt16(uint16_t base, int exponent); + void AssignPowerUInt16(uint16_t base, const int exponent); - void AddUInt64(uint64_t operand); + void AddUInt64(const uint64_t operand); void AddBignum(const Bignum& other); // Precondition: this >= other. void SubtractBignum(const Bignum& other); void Square(); - void ShiftLeft(int shift_amount); - void MultiplyByUInt32(uint32_t factor); - void MultiplyByUInt64(uint64_t factor); - void MultiplyByPowerOfTen(int exponent); + void ShiftLeft(const int shift_amount); + void MultiplyByUInt32(const uint32_t factor); + void MultiplyByUInt64(const uint64_t factor); + void MultiplyByPowerOfTen(const int exponent); void Times10() { return MultiplyByUInt32(10); } // Pseudocode: // int result = this / other; @@ -80,7 +81,7 @@ class Bignum { // In the worst case this function is in O(this/other). uint16_t DivideModuloIntBignum(const Bignum& other); - bool ToHexString(char* buffer, int buffer_size) const; + bool ToHexString(char* buffer, const int buffer_size) const; // Returns // -1 if a < b, @@ -124,33 +125,40 @@ class Bignum { // grow. There are no checks if the stack-allocated space is sufficient. static const int kBigitCapacity = kMaxSignificantBits / kBigitSize; - void EnsureCapacity(int size) { + static void EnsureCapacity(const int size) { if (size > kBigitCapacity) { - UNREACHABLE(); + DOUBLE_CONVERSION_UNREACHABLE(); } } void Align(const Bignum& other); void Clamp(); - bool IsClamped() const; - void Zero(); + bool IsClamped() const { + return used_bigits_ == 0 || RawBigit(used_bigits_ - 1) != 0; + } + void Zero() { + used_bigits_ = 0; + exponent_ = 0; + } // Requires this to have enough capacity (no tests done). - // Updates used_digits_ if necessary. + // Updates used_bigits_ if necessary. // shift_amount must be < kBigitSize. - void BigitsShiftLeft(int shift_amount); - // BigitLength includes the "hidden" digits encoded in the exponent. - int BigitLength() const { return used_digits_ + exponent_; } - Chunk BigitAt(int index) const; - void SubtractTimes(const Bignum& other, int factor); - + void BigitsShiftLeft(const int shift_amount); + // BigitLength includes the "hidden" bigits encoded in the exponent. + int BigitLength() const { return used_bigits_ + exponent_; } + Chunk& RawBigit(const int index); + const Chunk& RawBigit(const int index) const; + Chunk BigitOrZero(const int index) const; + void SubtractTimes(const Bignum& other, const int factor); + + // The Bignum's value is value(bigits_buffer_) * 2^(exponent_ * kBigitSize), + // where the value of the buffer consists of the lower kBigitSize bits of + // the first used_bigits_ Chunks in bigits_buffer_, first chunk has lowest + // significant bits. + int16_t used_bigits_; + int16_t exponent_; Chunk bigits_buffer_[kBigitCapacity]; - // A vector backed by bigits_buffer_. This way accesses to the array are - // checked for out-of-bounds errors. - Vector bigits_; - int used_digits_; - // The Bignum's value equals value(bigits_) * 2^(exponent_ * kBigitSize). - int exponent_; - - DC_DISALLOW_COPY_AND_ASSIGN(Bignum); + + DOUBLE_CONVERSION_DISALLOW_COPY_AND_ASSIGN(Bignum); }; } // namespace double_conversion diff --git a/source/i18n/double-conversion-cached-powers.cpp b/source/i18n/double-conversion-cached-powers.cpp index e1b66d2..3bc35c8 100644 --- a/source/i18n/double-conversion-cached-powers.cpp +++ b/source/i18n/double-conversion-cached-powers.cpp @@ -49,6 +49,8 @@ U_NAMESPACE_BEGIN namespace double_conversion { +namespace PowersOfTenCache { + struct CachedPower { uint64_t significand; int16_t binary_exponent; @@ -56,103 +58,99 @@ struct CachedPower { }; static const CachedPower kCachedPowers[] = { - {UINT64_2PART_C(0xfa8fd5a0, 081c0288), -1220, -348}, - {UINT64_2PART_C(0xbaaee17f, a23ebf76), -1193, -340}, - {UINT64_2PART_C(0x8b16fb20, 3055ac76), -1166, -332}, - {UINT64_2PART_C(0xcf42894a, 5dce35ea), -1140, -324}, - {UINT64_2PART_C(0x9a6bb0aa, 55653b2d), -1113, -316}, - {UINT64_2PART_C(0xe61acf03, 3d1a45df), -1087, -308}, - {UINT64_2PART_C(0xab70fe17, c79ac6ca), -1060, -300}, - {UINT64_2PART_C(0xff77b1fc, bebcdc4f), -1034, -292}, - {UINT64_2PART_C(0xbe5691ef, 416bd60c), -1007, -284}, - {UINT64_2PART_C(0x8dd01fad, 907ffc3c), -980, -276}, - {UINT64_2PART_C(0xd3515c28, 31559a83), -954, -268}, - {UINT64_2PART_C(0x9d71ac8f, ada6c9b5), -927, -260}, - {UINT64_2PART_C(0xea9c2277, 23ee8bcb), -901, -252}, - {UINT64_2PART_C(0xaecc4991, 4078536d), -874, -244}, - {UINT64_2PART_C(0x823c1279, 5db6ce57), -847, -236}, - {UINT64_2PART_C(0xc2109436, 4dfb5637), -821, -228}, - {UINT64_2PART_C(0x9096ea6f, 3848984f), -794, -220}, - {UINT64_2PART_C(0xd77485cb, 25823ac7), -768, -212}, - {UINT64_2PART_C(0xa086cfcd, 97bf97f4), -741, -204}, - {UINT64_2PART_C(0xef340a98, 172aace5), -715, -196}, - {UINT64_2PART_C(0xb23867fb, 2a35b28e), -688, -188}, - {UINT64_2PART_C(0x84c8d4df, d2c63f3b), -661, -180}, - {UINT64_2PART_C(0xc5dd4427, 1ad3cdba), -635, -172}, - {UINT64_2PART_C(0x936b9fce, bb25c996), -608, -164}, - {UINT64_2PART_C(0xdbac6c24, 7d62a584), -582, -156}, - {UINT64_2PART_C(0xa3ab6658, 0d5fdaf6), -555, -148}, - {UINT64_2PART_C(0xf3e2f893, dec3f126), -529, -140}, - {UINT64_2PART_C(0xb5b5ada8, aaff80b8), -502, -132}, - {UINT64_2PART_C(0x87625f05, 6c7c4a8b), -475, -124}, - {UINT64_2PART_C(0xc9bcff60, 34c13053), -449, -116}, - {UINT64_2PART_C(0x964e858c, 91ba2655), -422, -108}, - {UINT64_2PART_C(0xdff97724, 70297ebd), -396, -100}, - {UINT64_2PART_C(0xa6dfbd9f, b8e5b88f), -369, -92}, - {UINT64_2PART_C(0xf8a95fcf, 88747d94), -343, -84}, - {UINT64_2PART_C(0xb9447093, 8fa89bcf), -316, -76}, - {UINT64_2PART_C(0x8a08f0f8, bf0f156b), -289, -68}, - {UINT64_2PART_C(0xcdb02555, 653131b6), -263, -60}, - {UINT64_2PART_C(0x993fe2c6, d07b7fac), -236, -52}, - {UINT64_2PART_C(0xe45c10c4, 2a2b3b06), -210, -44}, - {UINT64_2PART_C(0xaa242499, 697392d3), -183, -36}, - {UINT64_2PART_C(0xfd87b5f2, 8300ca0e), -157, -28}, - {UINT64_2PART_C(0xbce50864, 92111aeb), -130, -20}, - {UINT64_2PART_C(0x8cbccc09, 6f5088cc), -103, -12}, - {UINT64_2PART_C(0xd1b71758, e219652c), -77, -4}, - {UINT64_2PART_C(0x9c400000, 00000000), -50, 4}, - {UINT64_2PART_C(0xe8d4a510, 00000000), -24, 12}, - {UINT64_2PART_C(0xad78ebc5, ac620000), 3, 20}, - {UINT64_2PART_C(0x813f3978, f8940984), 30, 28}, - {UINT64_2PART_C(0xc097ce7b, c90715b3), 56, 36}, - {UINT64_2PART_C(0x8f7e32ce, 7bea5c70), 83, 44}, - {UINT64_2PART_C(0xd5d238a4, abe98068), 109, 52}, - {UINT64_2PART_C(0x9f4f2726, 179a2245), 136, 60}, - {UINT64_2PART_C(0xed63a231, d4c4fb27), 162, 68}, - {UINT64_2PART_C(0xb0de6538, 8cc8ada8), 189, 76}, - {UINT64_2PART_C(0x83c7088e, 1aab65db), 216, 84}, - {UINT64_2PART_C(0xc45d1df9, 42711d9a), 242, 92}, - {UINT64_2PART_C(0x924d692c, a61be758), 269, 100}, - {UINT64_2PART_C(0xda01ee64, 1a708dea), 295, 108}, - {UINT64_2PART_C(0xa26da399, 9aef774a), 322, 116}, - {UINT64_2PART_C(0xf209787b, b47d6b85), 348, 124}, - {UINT64_2PART_C(0xb454e4a1, 79dd1877), 375, 132}, - {UINT64_2PART_C(0x865b8692, 5b9bc5c2), 402, 140}, - {UINT64_2PART_C(0xc83553c5, c8965d3d), 428, 148}, - {UINT64_2PART_C(0x952ab45c, fa97a0b3), 455, 156}, - {UINT64_2PART_C(0xde469fbd, 99a05fe3), 481, 164}, - {UINT64_2PART_C(0xa59bc234, db398c25), 508, 172}, - {UINT64_2PART_C(0xf6c69a72, a3989f5c), 534, 180}, - {UINT64_2PART_C(0xb7dcbf53, 54e9bece), 561, 188}, - {UINT64_2PART_C(0x88fcf317, f22241e2), 588, 196}, - {UINT64_2PART_C(0xcc20ce9b, d35c78a5), 614, 204}, - {UINT64_2PART_C(0x98165af3, 7b2153df), 641, 212}, - {UINT64_2PART_C(0xe2a0b5dc, 971f303a), 667, 220}, - {UINT64_2PART_C(0xa8d9d153, 5ce3b396), 694, 228}, - {UINT64_2PART_C(0xfb9b7cd9, a4a7443c), 720, 236}, - {UINT64_2PART_C(0xbb764c4c, a7a44410), 747, 244}, - {UINT64_2PART_C(0x8bab8eef, b6409c1a), 774, 252}, - {UINT64_2PART_C(0xd01fef10, a657842c), 800, 260}, - {UINT64_2PART_C(0x9b10a4e5, e9913129), 827, 268}, - {UINT64_2PART_C(0xe7109bfb, a19c0c9d), 853, 276}, - {UINT64_2PART_C(0xac2820d9, 623bf429), 880, 284}, - {UINT64_2PART_C(0x80444b5e, 7aa7cf85), 907, 292}, - {UINT64_2PART_C(0xbf21e440, 03acdd2d), 933, 300}, - {UINT64_2PART_C(0x8e679c2f, 5e44ff8f), 960, 308}, - {UINT64_2PART_C(0xd433179d, 9c8cb841), 986, 316}, - {UINT64_2PART_C(0x9e19db92, b4e31ba9), 1013, 324}, - {UINT64_2PART_C(0xeb96bf6e, badf77d9), 1039, 332}, - {UINT64_2PART_C(0xaf87023b, 9bf0ee6b), 1066, 340}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xfa8fd5a0, 081c0288), -1220, -348}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xbaaee17f, a23ebf76), -1193, -340}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x8b16fb20, 3055ac76), -1166, -332}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xcf42894a, 5dce35ea), -1140, -324}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x9a6bb0aa, 55653b2d), -1113, -316}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xe61acf03, 3d1a45df), -1087, -308}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xab70fe17, c79ac6ca), -1060, -300}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xff77b1fc, bebcdc4f), -1034, -292}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xbe5691ef, 416bd60c), -1007, -284}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x8dd01fad, 907ffc3c), -980, -276}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xd3515c28, 31559a83), -954, -268}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x9d71ac8f, ada6c9b5), -927, -260}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xea9c2277, 23ee8bcb), -901, -252}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xaecc4991, 4078536d), -874, -244}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x823c1279, 5db6ce57), -847, -236}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xc2109436, 4dfb5637), -821, -228}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x9096ea6f, 3848984f), -794, -220}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xd77485cb, 25823ac7), -768, -212}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xa086cfcd, 97bf97f4), -741, -204}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xef340a98, 172aace5), -715, -196}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xb23867fb, 2a35b28e), -688, -188}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x84c8d4df, d2c63f3b), -661, -180}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xc5dd4427, 1ad3cdba), -635, -172}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x936b9fce, bb25c996), -608, -164}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xdbac6c24, 7d62a584), -582, -156}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xa3ab6658, 0d5fdaf6), -555, -148}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xf3e2f893, dec3f126), -529, -140}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xb5b5ada8, aaff80b8), -502, -132}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x87625f05, 6c7c4a8b), -475, -124}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xc9bcff60, 34c13053), -449, -116}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x964e858c, 91ba2655), -422, -108}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xdff97724, 70297ebd), -396, -100}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xa6dfbd9f, b8e5b88f), -369, -92}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xf8a95fcf, 88747d94), -343, -84}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xb9447093, 8fa89bcf), -316, -76}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x8a08f0f8, bf0f156b), -289, -68}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xcdb02555, 653131b6), -263, -60}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x993fe2c6, d07b7fac), -236, -52}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xe45c10c4, 2a2b3b06), -210, -44}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xaa242499, 697392d3), -183, -36}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xfd87b5f2, 8300ca0e), -157, -28}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xbce50864, 92111aeb), -130, -20}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x8cbccc09, 6f5088cc), -103, -12}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xd1b71758, e219652c), -77, -4}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x9c400000, 00000000), -50, 4}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xe8d4a510, 00000000), -24, 12}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xad78ebc5, ac620000), 3, 20}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x813f3978, f8940984), 30, 28}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xc097ce7b, c90715b3), 56, 36}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x8f7e32ce, 7bea5c70), 83, 44}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xd5d238a4, abe98068), 109, 52}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x9f4f2726, 179a2245), 136, 60}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xed63a231, d4c4fb27), 162, 68}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xb0de6538, 8cc8ada8), 189, 76}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x83c7088e, 1aab65db), 216, 84}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xc45d1df9, 42711d9a), 242, 92}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x924d692c, a61be758), 269, 100}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xda01ee64, 1a708dea), 295, 108}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xa26da399, 9aef774a), 322, 116}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xf209787b, b47d6b85), 348, 124}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xb454e4a1, 79dd1877), 375, 132}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x865b8692, 5b9bc5c2), 402, 140}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xc83553c5, c8965d3d), 428, 148}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x952ab45c, fa97a0b3), 455, 156}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xde469fbd, 99a05fe3), 481, 164}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xa59bc234, db398c25), 508, 172}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xf6c69a72, a3989f5c), 534, 180}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xb7dcbf53, 54e9bece), 561, 188}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x88fcf317, f22241e2), 588, 196}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xcc20ce9b, d35c78a5), 614, 204}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x98165af3, 7b2153df), 641, 212}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xe2a0b5dc, 971f303a), 667, 220}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xa8d9d153, 5ce3b396), 694, 228}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xfb9b7cd9, a4a7443c), 720, 236}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xbb764c4c, a7a44410), 747, 244}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x8bab8eef, b6409c1a), 774, 252}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xd01fef10, a657842c), 800, 260}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x9b10a4e5, e9913129), 827, 268}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xe7109bfb, a19c0c9d), 853, 276}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xac2820d9, 623bf429), 880, 284}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x80444b5e, 7aa7cf85), 907, 292}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xbf21e440, 03acdd2d), 933, 300}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x8e679c2f, 5e44ff8f), 960, 308}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xd433179d, 9c8cb841), 986, 316}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0x9e19db92, b4e31ba9), 1013, 324}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xeb96bf6e, badf77d9), 1039, 332}, + {DOUBLE_CONVERSION_UINT64_2PART_C(0xaf87023b, 9bf0ee6b), 1066, 340}, }; static const int kCachedPowersOffset = 348; // -1 * the first decimal_exponent. static const double kD_1_LOG2_10 = 0.30102999566398114; // 1 / lg(10) -// Difference between the decimal exponents in the table above. -const int PowersOfTenCache::kDecimalExponentDistance = 8; -const int PowersOfTenCache::kMinDecimalExponent = -348; -const int PowersOfTenCache::kMaxDecimalExponent = 340; -void PowersOfTenCache::GetCachedPowerForBinaryExponentRange( +void GetCachedPowerForBinaryExponentRange( int min_exponent, int max_exponent, DiyFp* power, @@ -162,30 +160,32 @@ void PowersOfTenCache::GetCachedPowerForBinaryExponentRange( int foo = kCachedPowersOffset; int index = (foo + static_cast(k) - 1) / kDecimalExponentDistance + 1; - ASSERT(0 <= index && index < static_cast(ARRAY_SIZE(kCachedPowers))); + DOUBLE_CONVERSION_ASSERT(0 <= index && index < static_cast(DOUBLE_CONVERSION_ARRAY_SIZE(kCachedPowers))); CachedPower cached_power = kCachedPowers[index]; - ASSERT(min_exponent <= cached_power.binary_exponent); + DOUBLE_CONVERSION_ASSERT(min_exponent <= cached_power.binary_exponent); (void) max_exponent; // Mark variable as used. - ASSERT(cached_power.binary_exponent <= max_exponent); + DOUBLE_CONVERSION_ASSERT(cached_power.binary_exponent <= max_exponent); *decimal_exponent = cached_power.decimal_exponent; *power = DiyFp(cached_power.significand, cached_power.binary_exponent); } -void PowersOfTenCache::GetCachedPowerForDecimalExponent(int requested_exponent, - DiyFp* power, - int* found_exponent) { - ASSERT(kMinDecimalExponent <= requested_exponent); - ASSERT(requested_exponent < kMaxDecimalExponent + kDecimalExponentDistance); +void GetCachedPowerForDecimalExponent(int requested_exponent, + DiyFp* power, + int* found_exponent) { + DOUBLE_CONVERSION_ASSERT(kMinDecimalExponent <= requested_exponent); + DOUBLE_CONVERSION_ASSERT(requested_exponent < kMaxDecimalExponent + kDecimalExponentDistance); int index = (requested_exponent + kCachedPowersOffset) / kDecimalExponentDistance; CachedPower cached_power = kCachedPowers[index]; *power = DiyFp(cached_power.significand, cached_power.binary_exponent); *found_exponent = cached_power.decimal_exponent; - ASSERT(*found_exponent <= requested_exponent); - ASSERT(requested_exponent < *found_exponent + kDecimalExponentDistance); + DOUBLE_CONVERSION_ASSERT(*found_exponent <= requested_exponent); + DOUBLE_CONVERSION_ASSERT(requested_exponent < *found_exponent + kDecimalExponentDistance); } +} // namespace PowersOfTenCache + } // namespace double_conversion // ICU PATCH: Close ICU namespace diff --git a/source/i18n/double-conversion-cached-powers.h b/source/i18n/double-conversion-cached-powers.h index 438746b..ade27ba 100644 --- a/source/i18n/double-conversion-cached-powers.h +++ b/source/i18n/double-conversion-cached-powers.h @@ -46,32 +46,32 @@ U_NAMESPACE_BEGIN namespace double_conversion { -class PowersOfTenCache { - public: +namespace PowersOfTenCache { // Not all powers of ten are cached. The decimal exponent of two neighboring // cached numbers will differ by kDecimalExponentDistance. - static const int kDecimalExponentDistance; + static const int kDecimalExponentDistance = 8; - static const int kMinDecimalExponent; - static const int kMaxDecimalExponent; + static const int kMinDecimalExponent = -348; + static const int kMaxDecimalExponent = 340; // Returns a cached power-of-ten with a binary exponent in the range // [min_exponent; max_exponent] (boundaries included). - static void GetCachedPowerForBinaryExponentRange(int min_exponent, - int max_exponent, - DiyFp* power, - int* decimal_exponent); + void GetCachedPowerForBinaryExponentRange(int min_exponent, + int max_exponent, + DiyFp* power, + int* decimal_exponent); // Returns a cached power of ten x ~= 10^k such that // k <= decimal_exponent < k + kCachedPowersDecimalDistance. // The given decimal_exponent must satisfy // kMinDecimalExponent <= requested_exponent, and // requested_exponent < kMaxDecimalExponent + kDecimalExponentDistance. - static void GetCachedPowerForDecimalExponent(int requested_exponent, - DiyFp* power, - int* found_exponent); -}; + void GetCachedPowerForDecimalExponent(int requested_exponent, + DiyFp* power, + int* found_exponent); + +} // namespace PowersOfTenCache } // namespace double_conversion diff --git a/source/i18n/double-conversion-diy-fp.cpp b/source/i18n/double-conversion-diy-fp.cpp deleted file mode 100644 index f38430c..0000000 --- a/source/i18n/double-conversion-diy-fp.cpp +++ /dev/null @@ -1,74 +0,0 @@ -// © 2018 and later: Unicode, Inc. and others. -// License & terms of use: http://www.unicode.org/copyright.html -// -// From the double-conversion library. Original license: -// -// Copyright 2010 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING -#include "unicode/utypes.h" -#if !UCONFIG_NO_FORMATTING - -// ICU PATCH: Customize header file paths for ICU. - -#include "double-conversion-diy-fp.h" -#include "double-conversion-utils.h" - -// ICU PATCH: Wrap in ICU namespace -U_NAMESPACE_BEGIN - -namespace double_conversion { - -void DiyFp::Multiply(const DiyFp& other) { - // Simply "emulates" a 128 bit multiplication. - // However: the resulting number only contains 64 bits. The least - // significant 64 bits are only used for rounding the most significant 64 - // bits. - const uint64_t kM32 = 0xFFFFFFFFU; - uint64_t a = f_ >> 32; - uint64_t b = f_ & kM32; - uint64_t c = other.f_ >> 32; - uint64_t d = other.f_ & kM32; - uint64_t ac = a * c; - uint64_t bc = b * c; - uint64_t ad = a * d; - uint64_t bd = b * d; - uint64_t tmp = (bd >> 32) + (ad & kM32) + (bc & kM32); - // By adding 1U << 31 to tmp we round the final result. - // Halfway cases will be round up. - tmp += 1U << 31; - uint64_t result_f = ac + (ad >> 32) + (bc >> 32) + (tmp >> 32); - e_ += other.e_ + 64; - f_ = result_f; -} - -} // namespace double_conversion - -// ICU PATCH: Close ICU namespace -U_NAMESPACE_END -#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING diff --git a/source/i18n/double-conversion-diy-fp.h b/source/i18n/double-conversion-diy-fp.h index 2189685..5820abe 100644 --- a/source/i18n/double-conversion-diy-fp.h +++ b/source/i18n/double-conversion-diy-fp.h @@ -50,36 +50,55 @@ namespace double_conversion { // with a uint64 significand and an int exponent. Normalized DiyFp numbers will // have the most significant bit of the significand set. // Multiplication and Subtraction do not normalize their results. -// DiyFp are not designed to contain special doubles (NaN and Infinity). +// DiyFp store only non-negative numbers and are not designed to contain special +// doubles (NaN and Infinity). class DiyFp { public: static const int kSignificandSize = 64; DiyFp() : f_(0), e_(0) {} - DiyFp(uint64_t significand, int exponent) : f_(significand), e_(exponent) {} + DiyFp(const uint64_t significand, const int32_t exponent) : f_(significand), e_(exponent) {} - // this = this - other. + // this -= other. // The exponents of both numbers must be the same and the significand of this - // must be bigger than the significand of other. + // must be greater or equal than the significand of other. // The result will not be normalized. void Subtract(const DiyFp& other) { - ASSERT(e_ == other.e_); - ASSERT(f_ >= other.f_); + DOUBLE_CONVERSION_ASSERT(e_ == other.e_); + DOUBLE_CONVERSION_ASSERT(f_ >= other.f_); f_ -= other.f_; } // Returns a - b. - // The exponents of both numbers must be the same and this must be bigger - // than other. The result will not be normalized. + // The exponents of both numbers must be the same and a must be greater + // or equal than b. The result will not be normalized. static DiyFp Minus(const DiyFp& a, const DiyFp& b) { DiyFp result = a; result.Subtract(b); return result; } - - // this = this * other. - void Multiply(const DiyFp& other); + // this *= other. + void Multiply(const DiyFp& other) { + // Simply "emulates" a 128 bit multiplication. + // However: the resulting number only contains 64 bits. The least + // significant 64 bits are only used for rounding the most significant 64 + // bits. + const uint64_t kM32 = 0xFFFFFFFFU; + const uint64_t a = f_ >> 32; + const uint64_t b = f_ & kM32; + const uint64_t c = other.f_ >> 32; + const uint64_t d = other.f_ & kM32; + const uint64_t ac = a * c; + const uint64_t bc = b * c; + const uint64_t ad = a * d; + const uint64_t bd = b * d; + // By adding 1U << 31 to tmp we round the final result. + // Halfway cases will be rounded up. + const uint64_t tmp = (bd >> 32) + (ad & kM32) + (bc & kM32) + (1U << 31); + e_ += other.e_ + 64; + f_ = ac + (ad >> 32) + (bc >> 32) + (tmp >> 32); + } // returns a * b; static DiyFp Times(const DiyFp& a, const DiyFp& b) { @@ -89,13 +108,13 @@ class DiyFp { } void Normalize() { - ASSERT(f_ != 0); + DOUBLE_CONVERSION_ASSERT(f_ != 0); uint64_t significand = f_; - int exponent = e_; + int32_t exponent = e_; - // This method is mainly called for normalizing boundaries. In general - // boundaries need to be shifted by 10 bits. We thus optimize for this case. - const uint64_t k10MSBits = UINT64_2PART_C(0xFFC00000, 00000000); + // This method is mainly called for normalizing boundaries. In general, + // boundaries need to be shifted by 10 bits, and we optimize for this case. + const uint64_t k10MSBits = DOUBLE_CONVERSION_UINT64_2PART_C(0xFFC00000, 00000000); while ((significand & k10MSBits) == 0) { significand <<= 10; exponent -= 10; @@ -115,16 +134,16 @@ class DiyFp { } uint64_t f() const { return f_; } - int e() const { return e_; } + int32_t e() const { return e_; } void set_f(uint64_t new_value) { f_ = new_value; } - void set_e(int new_value) { e_ = new_value; } + void set_e(int32_t new_value) { e_ = new_value; } private: - static const uint64_t kUint64MSB = UINT64_2PART_C(0x80000000, 00000000); + static const uint64_t kUint64MSB = DOUBLE_CONVERSION_UINT64_2PART_C(0x80000000, 00000000); uint64_t f_; - int e_; + int32_t e_; }; } // namespace double_conversion diff --git a/source/i18n/double-conversion-double-to-string.cpp b/source/i18n/double-conversion-double-to-string.cpp new file mode 100644 index 0000000..44c176f --- /dev/null +++ b/source/i18n/double-conversion-double-to-string.cpp @@ -0,0 +1,450 @@ +// © 2018 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html +// +// From the double-conversion library. Original license: +// +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING +#include "unicode/utypes.h" +#if !UCONFIG_NO_FORMATTING + +#include +#include +#include + +// ICU PATCH: Customize header file paths for ICU. +// The file fixed-dtoa.h is not needed. + +#include "double-conversion-double-to-string.h" + +#include "double-conversion-bignum-dtoa.h" +#include "double-conversion-fast-dtoa.h" +#include "double-conversion-ieee.h" +#include "double-conversion-utils.h" + +// ICU PATCH: Wrap in ICU namespace +U_NAMESPACE_BEGIN + +namespace double_conversion { + +#if 0 // not needed for ICU +const DoubleToStringConverter& DoubleToStringConverter::EcmaScriptConverter() { + int flags = UNIQUE_ZERO | EMIT_POSITIVE_EXPONENT_SIGN; + static DoubleToStringConverter converter(flags, + "Infinity", + "NaN", + 'e', + -6, 21, + 6, 0); + return converter; +} + + +bool DoubleToStringConverter::HandleSpecialValues( + double value, + StringBuilder* result_builder) const { + Double double_inspect(value); + if (double_inspect.IsInfinite()) { + if (infinity_symbol_ == NULL) return false; + if (value < 0) { + result_builder->AddCharacter('-'); + } + result_builder->AddString(infinity_symbol_); + return true; + } + if (double_inspect.IsNan()) { + if (nan_symbol_ == NULL) return false; + result_builder->AddString(nan_symbol_); + return true; + } + return false; +} + + +void DoubleToStringConverter::CreateExponentialRepresentation( + const char* decimal_digits, + int length, + int exponent, + StringBuilder* result_builder) const { + DOUBLE_CONVERSION_ASSERT(length != 0); + result_builder->AddCharacter(decimal_digits[0]); + if (length != 1) { + result_builder->AddCharacter('.'); + result_builder->AddSubstring(&decimal_digits[1], length-1); + } + result_builder->AddCharacter(exponent_character_); + if (exponent < 0) { + result_builder->AddCharacter('-'); + exponent = -exponent; + } else { + if ((flags_ & EMIT_POSITIVE_EXPONENT_SIGN) != 0) { + result_builder->AddCharacter('+'); + } + } + if (exponent == 0) { + result_builder->AddCharacter('0'); + return; + } + DOUBLE_CONVERSION_ASSERT(exponent < 1e4); + // Changing this constant requires updating the comment of DoubleToStringConverter constructor + const int kMaxExponentLength = 5; + char buffer[kMaxExponentLength + 1]; + buffer[kMaxExponentLength] = '\0'; + int first_char_pos = kMaxExponentLength; + while (exponent > 0) { + buffer[--first_char_pos] = '0' + (exponent % 10); + exponent /= 10; + } + // Add prefix '0' to make exponent width >= min(min_exponent_with_, kMaxExponentLength) + // For example: convert 1e+9 -> 1e+09, if min_exponent_with_ is set to 2 + while(kMaxExponentLength - first_char_pos < std::min(min_exponent_width_, kMaxExponentLength)) { + buffer[--first_char_pos] = '0'; + } + result_builder->AddSubstring(&buffer[first_char_pos], + kMaxExponentLength - first_char_pos); +} + + +void DoubleToStringConverter::CreateDecimalRepresentation( + const char* decimal_digits, + int length, + int decimal_point, + int digits_after_point, + StringBuilder* result_builder) const { + // Create a representation that is padded with zeros if needed. + if (decimal_point <= 0) { + // "0.00000decimal_rep" or "0.000decimal_rep00". + result_builder->AddCharacter('0'); + if (digits_after_point > 0) { + result_builder->AddCharacter('.'); + result_builder->AddPadding('0', -decimal_point); + DOUBLE_CONVERSION_ASSERT(length <= digits_after_point - (-decimal_point)); + result_builder->AddSubstring(decimal_digits, length); + int remaining_digits = digits_after_point - (-decimal_point) - length; + result_builder->AddPadding('0', remaining_digits); + } + } else if (decimal_point >= length) { + // "decimal_rep0000.00000" or "decimal_rep.0000". + result_builder->AddSubstring(decimal_digits, length); + result_builder->AddPadding('0', decimal_point - length); + if (digits_after_point > 0) { + result_builder->AddCharacter('.'); + result_builder->AddPadding('0', digits_after_point); + } + } else { + // "decima.l_rep000". + DOUBLE_CONVERSION_ASSERT(digits_after_point > 0); + result_builder->AddSubstring(decimal_digits, decimal_point); + result_builder->AddCharacter('.'); + DOUBLE_CONVERSION_ASSERT(length - decimal_point <= digits_after_point); + result_builder->AddSubstring(&decimal_digits[decimal_point], + length - decimal_point); + int remaining_digits = digits_after_point - (length - decimal_point); + result_builder->AddPadding('0', remaining_digits); + } + if (digits_after_point == 0) { + if ((flags_ & EMIT_TRAILING_DECIMAL_POINT) != 0) { + result_builder->AddCharacter('.'); + } + if ((flags_ & EMIT_TRAILING_ZERO_AFTER_POINT) != 0) { + result_builder->AddCharacter('0'); + } + } +} + + +bool DoubleToStringConverter::ToShortestIeeeNumber( + double value, + StringBuilder* result_builder, + DoubleToStringConverter::DtoaMode mode) const { + DOUBLE_CONVERSION_ASSERT(mode == SHORTEST || mode == SHORTEST_SINGLE); + if (Double(value).IsSpecial()) { + return HandleSpecialValues(value, result_builder); + } + + int decimal_point; + bool sign; + const int kDecimalRepCapacity = kBase10MaximalLength + 1; + char decimal_rep[kDecimalRepCapacity]; + int decimal_rep_length; + + DoubleToAscii(value, mode, 0, decimal_rep, kDecimalRepCapacity, + &sign, &decimal_rep_length, &decimal_point); + + bool unique_zero = (flags_ & UNIQUE_ZERO) != 0; + if (sign && (value != 0.0 || !unique_zero)) { + result_builder->AddCharacter('-'); + } + + int exponent = decimal_point - 1; + if ((decimal_in_shortest_low_ <= exponent) && + (exponent < decimal_in_shortest_high_)) { + CreateDecimalRepresentation(decimal_rep, decimal_rep_length, + decimal_point, + (std::max)(0, decimal_rep_length - decimal_point), + result_builder); + } else { + CreateExponentialRepresentation(decimal_rep, decimal_rep_length, exponent, + result_builder); + } + return true; +} + + +bool DoubleToStringConverter::ToFixed(double value, + int requested_digits, + StringBuilder* result_builder) const { + DOUBLE_CONVERSION_ASSERT(kMaxFixedDigitsBeforePoint == 60); + const double kFirstNonFixed = 1e60; + + if (Double(value).IsSpecial()) { + return HandleSpecialValues(value, result_builder); + } + + if (requested_digits > kMaxFixedDigitsAfterPoint) return false; + if (value >= kFirstNonFixed || value <= -kFirstNonFixed) return false; + + // Find a sufficiently precise decimal representation of n. + int decimal_point; + bool sign; + // Add space for the '\0' byte. + const int kDecimalRepCapacity = + kMaxFixedDigitsBeforePoint + kMaxFixedDigitsAfterPoint + 1; + char decimal_rep[kDecimalRepCapacity]; + int decimal_rep_length; + DoubleToAscii(value, FIXED, requested_digits, + decimal_rep, kDecimalRepCapacity, + &sign, &decimal_rep_length, &decimal_point); + + bool unique_zero = ((flags_ & UNIQUE_ZERO) != 0); + if (sign && (value != 0.0 || !unique_zero)) { + result_builder->AddCharacter('-'); + } + + CreateDecimalRepresentation(decimal_rep, decimal_rep_length, decimal_point, + requested_digits, result_builder); + return true; +} + + +bool DoubleToStringConverter::ToExponential( + double value, + int requested_digits, + StringBuilder* result_builder) const { + if (Double(value).IsSpecial()) { + return HandleSpecialValues(value, result_builder); + } + + if (requested_digits < -1) return false; + if (requested_digits > kMaxExponentialDigits) return false; + + int decimal_point; + bool sign; + // Add space for digit before the decimal point and the '\0' character. + const int kDecimalRepCapacity = kMaxExponentialDigits + 2; + DOUBLE_CONVERSION_ASSERT(kDecimalRepCapacity > kBase10MaximalLength); + char decimal_rep[kDecimalRepCapacity]; +#ifndef NDEBUG + // Problem: there is an assert in StringBuilder::AddSubstring() that + // will pass this buffer to strlen(), and this buffer is not generally + // null-terminated. + memset(decimal_rep, 0, sizeof(decimal_rep)); +#endif + int decimal_rep_length; + + if (requested_digits == -1) { + DoubleToAscii(value, SHORTEST, 0, + decimal_rep, kDecimalRepCapacity, + &sign, &decimal_rep_length, &decimal_point); + } else { + DoubleToAscii(value, PRECISION, requested_digits + 1, + decimal_rep, kDecimalRepCapacity, + &sign, &decimal_rep_length, &decimal_point); + DOUBLE_CONVERSION_ASSERT(decimal_rep_length <= requested_digits + 1); + + for (int i = decimal_rep_length; i < requested_digits + 1; ++i) { + decimal_rep[i] = '0'; + } + decimal_rep_length = requested_digits + 1; + } + + bool unique_zero = ((flags_ & UNIQUE_ZERO) != 0); + if (sign && (value != 0.0 || !unique_zero)) { + result_builder->AddCharacter('-'); + } + + int exponent = decimal_point - 1; + CreateExponentialRepresentation(decimal_rep, + decimal_rep_length, + exponent, + result_builder); + return true; +} + + +bool DoubleToStringConverter::ToPrecision(double value, + int precision, + StringBuilder* result_builder) const { + if (Double(value).IsSpecial()) { + return HandleSpecialValues(value, result_builder); + } + + if (precision < kMinPrecisionDigits || precision > kMaxPrecisionDigits) { + return false; + } + + // Find a sufficiently precise decimal representation of n. + int decimal_point; + bool sign; + // Add one for the terminating null character. + const int kDecimalRepCapacity = kMaxPrecisionDigits + 1; + char decimal_rep[kDecimalRepCapacity]; + int decimal_rep_length; + + DoubleToAscii(value, PRECISION, precision, + decimal_rep, kDecimalRepCapacity, + &sign, &decimal_rep_length, &decimal_point); + DOUBLE_CONVERSION_ASSERT(decimal_rep_length <= precision); + + bool unique_zero = ((flags_ & UNIQUE_ZERO) != 0); + if (sign && (value != 0.0 || !unique_zero)) { + result_builder->AddCharacter('-'); + } + + // The exponent if we print the number as x.xxeyyy. That is with the + // decimal point after the first digit. + int exponent = decimal_point - 1; + + int extra_zero = ((flags_ & EMIT_TRAILING_ZERO_AFTER_POINT) != 0) ? 1 : 0; + if ((-decimal_point + 1 > max_leading_padding_zeroes_in_precision_mode_) || + (decimal_point - precision + extra_zero > + max_trailing_padding_zeroes_in_precision_mode_)) { + // Fill buffer to contain 'precision' digits. + // Usually the buffer is already at the correct length, but 'DoubleToAscii' + // is allowed to return less characters. + for (int i = decimal_rep_length; i < precision; ++i) { + decimal_rep[i] = '0'; + } + + CreateExponentialRepresentation(decimal_rep, + precision, + exponent, + result_builder); + } else { + CreateDecimalRepresentation(decimal_rep, decimal_rep_length, decimal_point, + (std::max)(0, precision - decimal_point), + result_builder); + } + return true; +} +#endif // not needed for ICU + + +static BignumDtoaMode DtoaToBignumDtoaMode( + DoubleToStringConverter::DtoaMode dtoa_mode) { + switch (dtoa_mode) { + case DoubleToStringConverter::SHORTEST: return BIGNUM_DTOA_SHORTEST; + case DoubleToStringConverter::SHORTEST_SINGLE: + return BIGNUM_DTOA_SHORTEST_SINGLE; + case DoubleToStringConverter::FIXED: return BIGNUM_DTOA_FIXED; + case DoubleToStringConverter::PRECISION: return BIGNUM_DTOA_PRECISION; + default: + DOUBLE_CONVERSION_UNREACHABLE(); + } +} + + +void DoubleToStringConverter::DoubleToAscii(double v, + DtoaMode mode, + int requested_digits, + char* buffer, + int buffer_length, + bool* sign, + int* length, + int* point) { + Vector vector(buffer, buffer_length); + DOUBLE_CONVERSION_ASSERT(!Double(v).IsSpecial()); + DOUBLE_CONVERSION_ASSERT(mode == SHORTEST || mode == SHORTEST_SINGLE || requested_digits >= 0); + + if (Double(v).Sign() < 0) { + *sign = true; + v = -v; + } else { + *sign = false; + } + + if (mode == PRECISION && requested_digits == 0) { + vector[0] = '\0'; + *length = 0; + return; + } + + if (v == 0) { + vector[0] = '0'; + vector[1] = '\0'; + *length = 1; + *point = 1; + return; + } + + bool fast_worked; + switch (mode) { + case SHORTEST: + fast_worked = FastDtoa(v, FAST_DTOA_SHORTEST, 0, vector, length, point); + break; +#if 0 // not needed for ICU + case SHORTEST_SINGLE: + fast_worked = FastDtoa(v, FAST_DTOA_SHORTEST_SINGLE, 0, + vector, length, point); + break; + case FIXED: + fast_worked = FastFixedDtoa(v, requested_digits, vector, length, point); + break; + case PRECISION: + fast_worked = FastDtoa(v, FAST_DTOA_PRECISION, requested_digits, + vector, length, point); + break; +#endif // not needed for ICU + default: + fast_worked = false; + DOUBLE_CONVERSION_UNREACHABLE(); + } + if (fast_worked) return; + + // If the fast dtoa didn't succeed use the slower bignum version. + BignumDtoaMode bignum_mode = DtoaToBignumDtoaMode(mode); + BignumDtoa(v, bignum_mode, requested_digits, vector, length, point); + vector[*length] = '\0'; +} + +} // namespace double_conversion + +// ICU PATCH: Close ICU namespace +U_NAMESPACE_END +#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING diff --git a/source/i18n/double-conversion-double-to-string.h b/source/i18n/double-conversion-double-to-string.h new file mode 100644 index 0000000..27bd867 --- /dev/null +++ b/source/i18n/double-conversion-double-to-string.h @@ -0,0 +1,419 @@ +// © 2018 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html +// +// From the double-conversion library. Original license: +// +// Copyright 2012 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING +#include "unicode/utypes.h" +#if !UCONFIG_NO_FORMATTING + +#ifndef DOUBLE_CONVERSION_DOUBLE_TO_STRING_H_ +#define DOUBLE_CONVERSION_DOUBLE_TO_STRING_H_ + +// ICU PATCH: Customize header file paths for ICU. + +#include "double-conversion-utils.h" + +// ICU PATCH: Wrap in ICU namespace +U_NAMESPACE_BEGIN + +namespace double_conversion { + +class DoubleToStringConverter { + public: +#if 0 // not needed for ICU + // When calling ToFixed with a double > 10^kMaxFixedDigitsBeforePoint + // or a requested_digits parameter > kMaxFixedDigitsAfterPoint then the + // function returns false. + static const int kMaxFixedDigitsBeforePoint = 60; + static const int kMaxFixedDigitsAfterPoint = 60; + + // When calling ToExponential with a requested_digits + // parameter > kMaxExponentialDigits then the function returns false. + static const int kMaxExponentialDigits = 120; + + // When calling ToPrecision with a requested_digits + // parameter < kMinPrecisionDigits or requested_digits > kMaxPrecisionDigits + // then the function returns false. + static const int kMinPrecisionDigits = 1; + static const int kMaxPrecisionDigits = 120; + + enum Flags { + NO_FLAGS = 0, + EMIT_POSITIVE_EXPONENT_SIGN = 1, + EMIT_TRAILING_DECIMAL_POINT = 2, + EMIT_TRAILING_ZERO_AFTER_POINT = 4, + UNIQUE_ZERO = 8 + }; + + // Flags should be a bit-or combination of the possible Flags-enum. + // - NO_FLAGS: no special flags. + // - EMIT_POSITIVE_EXPONENT_SIGN: when the number is converted into exponent + // form, emits a '+' for positive exponents. Example: 1.2e+2. + // - EMIT_TRAILING_DECIMAL_POINT: when the input number is an integer and is + // converted into decimal format then a trailing decimal point is appended. + // Example: 2345.0 is converted to "2345.". + // - EMIT_TRAILING_ZERO_AFTER_POINT: in addition to a trailing decimal point + // emits a trailing '0'-character. This flag requires the + // EXMIT_TRAILING_DECIMAL_POINT flag. + // Example: 2345.0 is converted to "2345.0". + // - UNIQUE_ZERO: "-0.0" is converted to "0.0". + // + // Infinity symbol and nan_symbol provide the string representation for these + // special values. If the string is NULL and the special value is encountered + // then the conversion functions return false. + // + // The exponent_character is used in exponential representations. It is + // usually 'e' or 'E'. + // + // When converting to the shortest representation the converter will + // represent input numbers in decimal format if they are in the interval + // [10^decimal_in_shortest_low; 10^decimal_in_shortest_high[ + // (lower boundary included, greater boundary excluded). + // Example: with decimal_in_shortest_low = -6 and + // decimal_in_shortest_high = 21: + // ToShortest(0.000001) -> "0.000001" + // ToShortest(0.0000001) -> "1e-7" + // ToShortest(111111111111111111111.0) -> "111111111111111110000" + // ToShortest(100000000000000000000.0) -> "100000000000000000000" + // ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" + // + // When converting to precision mode the converter may add + // max_leading_padding_zeroes before returning the number in exponential + // format. + // Example with max_leading_padding_zeroes_in_precision_mode = 6. + // ToPrecision(0.0000012345, 2) -> "0.0000012" + // ToPrecision(0.00000012345, 2) -> "1.2e-7" + // Similarily the converter may add up to + // max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid + // returning an exponential representation. A zero added by the + // EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. + // Examples for max_trailing_padding_zeroes_in_precision_mode = 1: + // ToPrecision(230.0, 2) -> "230" + // ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. + // ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. + // + // The min_exponent_width is used for exponential representations. + // The converter adds leading '0's to the exponent until the exponent + // is at least min_exponent_width digits long. + // The min_exponent_width is clamped to 5. + // As such, the exponent may never have more than 5 digits in total. + DoubleToStringConverter(int flags, + const char* infinity_symbol, + const char* nan_symbol, + char exponent_character, + int decimal_in_shortest_low, + int decimal_in_shortest_high, + int max_leading_padding_zeroes_in_precision_mode, + int max_trailing_padding_zeroes_in_precision_mode, + int min_exponent_width = 0) + : flags_(flags), + infinity_symbol_(infinity_symbol), + nan_symbol_(nan_symbol), + exponent_character_(exponent_character), + decimal_in_shortest_low_(decimal_in_shortest_low), + decimal_in_shortest_high_(decimal_in_shortest_high), + max_leading_padding_zeroes_in_precision_mode_( + max_leading_padding_zeroes_in_precision_mode), + max_trailing_padding_zeroes_in_precision_mode_( + max_trailing_padding_zeroes_in_precision_mode), + min_exponent_width_(min_exponent_width) { + // When 'trailing zero after the point' is set, then 'trailing point' + // must be set too. + DOUBLE_CONVERSION_ASSERT(((flags & EMIT_TRAILING_DECIMAL_POINT) != 0) || + !((flags & EMIT_TRAILING_ZERO_AFTER_POINT) != 0)); + } + + // Returns a converter following the EcmaScript specification. + static const DoubleToStringConverter& EcmaScriptConverter(); + + // Computes the shortest string of digits that correctly represent the input + // number. Depending on decimal_in_shortest_low and decimal_in_shortest_high + // (see constructor) it then either returns a decimal representation, or an + // exponential representation. + // Example with decimal_in_shortest_low = -6, + // decimal_in_shortest_high = 21, + // EMIT_POSITIVE_EXPONENT_SIGN activated, and + // EMIT_TRAILING_DECIMAL_POINT deactived: + // ToShortest(0.000001) -> "0.000001" + // ToShortest(0.0000001) -> "1e-7" + // ToShortest(111111111111111111111.0) -> "111111111111111110000" + // ToShortest(100000000000000000000.0) -> "100000000000000000000" + // ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" + // + // Note: the conversion may round the output if the returned string + // is accurate enough to uniquely identify the input-number. + // For example the most precise representation of the double 9e59 equals + // "899999999999999918767229449717619953810131273674690656206848", but + // the converter will return the shorter (but still correct) "9e59". + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except when the input value is special and no infinity_symbol or + // nan_symbol has been given to the constructor. + bool ToShortest(double value, StringBuilder* result_builder) const { + return ToShortestIeeeNumber(value, result_builder, SHORTEST); + } + + // Same as ToShortest, but for single-precision floats. + bool ToShortestSingle(float value, StringBuilder* result_builder) const { + return ToShortestIeeeNumber(value, result_builder, SHORTEST_SINGLE); + } + + + // Computes a decimal representation with a fixed number of digits after the + // decimal point. The last emitted digit is rounded. + // + // Examples: + // ToFixed(3.12, 1) -> "3.1" + // ToFixed(3.1415, 3) -> "3.142" + // ToFixed(1234.56789, 4) -> "1234.5679" + // ToFixed(1.23, 5) -> "1.23000" + // ToFixed(0.1, 4) -> "0.1000" + // ToFixed(1e30, 2) -> "1000000000000000019884624838656.00" + // ToFixed(0.1, 30) -> "0.100000000000000005551115123126" + // ToFixed(0.1, 17) -> "0.10000000000000001" + // + // If requested_digits equals 0, then the tail of the result depends on + // the EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT. + // Examples, for requested_digits == 0, + // let EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT be + // - false and false: then 123.45 -> 123 + // 0.678 -> 1 + // - true and false: then 123.45 -> 123. + // 0.678 -> 1. + // - true and true: then 123.45 -> 123.0 + // 0.678 -> 1.0 + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except for the following cases: + // - the input value is special and no infinity_symbol or nan_symbol has + // been provided to the constructor, + // - 'value' > 10^kMaxFixedDigitsBeforePoint, or + // - 'requested_digits' > kMaxFixedDigitsAfterPoint. + // The last two conditions imply that the result will never contain more than + // 1 + kMaxFixedDigitsBeforePoint + 1 + kMaxFixedDigitsAfterPoint characters + // (one additional character for the sign, and one for the decimal point). + bool ToFixed(double value, + int requested_digits, + StringBuilder* result_builder) const; + + // Computes a representation in exponential format with requested_digits + // after the decimal point. The last emitted digit is rounded. + // If requested_digits equals -1, then the shortest exponential representation + // is computed. + // + // Examples with EMIT_POSITIVE_EXPONENT_SIGN deactivated, and + // exponent_character set to 'e'. + // ToExponential(3.12, 1) -> "3.1e0" + // ToExponential(5.0, 3) -> "5.000e0" + // ToExponential(0.001, 2) -> "1.00e-3" + // ToExponential(3.1415, -1) -> "3.1415e0" + // ToExponential(3.1415, 4) -> "3.1415e0" + // ToExponential(3.1415, 3) -> "3.142e0" + // ToExponential(123456789000000, 3) -> "1.235e14" + // ToExponential(1000000000000000019884624838656.0, -1) -> "1e30" + // ToExponential(1000000000000000019884624838656.0, 32) -> + // "1.00000000000000001988462483865600e30" + // ToExponential(1234, 0) -> "1e3" + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except for the following cases: + // - the input value is special and no infinity_symbol or nan_symbol has + // been provided to the constructor, + // - 'requested_digits' > kMaxExponentialDigits. + // The last condition implies that the result will never contain more than + // kMaxExponentialDigits + 8 characters (the sign, the digit before the + // decimal point, the decimal point, the exponent character, the + // exponent's sign, and at most 3 exponent digits). + bool ToExponential(double value, + int requested_digits, + StringBuilder* result_builder) const; + + // Computes 'precision' leading digits of the given 'value' and returns them + // either in exponential or decimal format, depending on + // max_{leading|trailing}_padding_zeroes_in_precision_mode (given to the + // constructor). + // The last computed digit is rounded. + // + // Example with max_leading_padding_zeroes_in_precision_mode = 6. + // ToPrecision(0.0000012345, 2) -> "0.0000012" + // ToPrecision(0.00000012345, 2) -> "1.2e-7" + // Similarily the converter may add up to + // max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid + // returning an exponential representation. A zero added by the + // EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. + // Examples for max_trailing_padding_zeroes_in_precision_mode = 1: + // ToPrecision(230.0, 2) -> "230" + // ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. + // ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. + // Examples for max_trailing_padding_zeroes_in_precision_mode = 3, and no + // EMIT_TRAILING_ZERO_AFTER_POINT: + // ToPrecision(123450.0, 6) -> "123450" + // ToPrecision(123450.0, 5) -> "123450" + // ToPrecision(123450.0, 4) -> "123500" + // ToPrecision(123450.0, 3) -> "123000" + // ToPrecision(123450.0, 2) -> "1.2e5" + // + // Returns true if the conversion succeeds. The conversion always succeeds + // except for the following cases: + // - the input value is special and no infinity_symbol or nan_symbol has + // been provided to the constructor, + // - precision < kMinPericisionDigits + // - precision > kMaxPrecisionDigits + // The last condition implies that the result will never contain more than + // kMaxPrecisionDigits + 7 characters (the sign, the decimal point, the + // exponent character, the exponent's sign, and at most 3 exponent digits). + bool ToPrecision(double value, + int precision, + StringBuilder* result_builder) const; +#endif // not needed for ICU + + enum DtoaMode { + // Produce the shortest correct representation. + // For example the output of 0.299999999999999988897 is (the less accurate + // but correct) 0.3. + SHORTEST, + // Same as SHORTEST, but for single-precision floats. + SHORTEST_SINGLE, + // Produce a fixed number of digits after the decimal point. + // For instance fixed(0.1, 4) becomes 0.1000 + // If the input number is big, the output will be big. + FIXED, + // Fixed number of digits (independent of the decimal point). + PRECISION + }; + + // The maximal number of digits that are needed to emit a double in base 10. + // A higher precision can be achieved by using more digits, but the shortest + // accurate representation of any double will never use more digits than + // kBase10MaximalLength. + // Note that DoubleToAscii null-terminates its input. So the given buffer + // should be at least kBase10MaximalLength + 1 characters long. + static const int kBase10MaximalLength = 17; + + // Converts the given double 'v' to digit characters. 'v' must not be NaN, + // +Infinity, or -Infinity. In SHORTEST_SINGLE-mode this restriction also + // applies to 'v' after it has been casted to a single-precision float. That + // is, in this mode static_cast(v) must not be NaN, +Infinity or + // -Infinity. + // + // The result should be interpreted as buffer * 10^(point-length). + // + // The digits are written to the buffer in the platform's charset, which is + // often UTF-8 (with ASCII-range digits) but may be another charset, such + // as EBCDIC. + // + // The output depends on the given mode: + // - SHORTEST: produce the least amount of digits for which the internal + // identity requirement is still satisfied. If the digits are printed + // (together with the correct exponent) then reading this number will give + // 'v' again. The buffer will choose the representation that is closest to + // 'v'. If there are two at the same distance, than the one farther away + // from 0 is chosen (halfway cases - ending with 5 - are rounded up). + // In this mode the 'requested_digits' parameter is ignored. + // - SHORTEST_SINGLE: same as SHORTEST but with single-precision. + // - FIXED: produces digits necessary to print a given number with + // 'requested_digits' digits after the decimal point. The produced digits + // might be too short in which case the caller has to fill the remainder + // with '0's. + // Example: toFixed(0.001, 5) is allowed to return buffer="1", point=-2. + // Halfway cases are rounded towards +/-Infinity (away from 0). The call + // toFixed(0.15, 2) thus returns buffer="2", point=0. + // The returned buffer may contain digits that would be truncated from the + // shortest representation of the input. + // - PRECISION: produces 'requested_digits' where the first digit is not '0'. + // Even though the length of produced digits usually equals + // 'requested_digits', the function is allowed to return fewer digits, in + // which case the caller has to fill the missing digits with '0's. + // Halfway cases are again rounded away from 0. + // DoubleToAscii expects the given buffer to be big enough to hold all + // digits and a terminating null-character. In SHORTEST-mode it expects a + // buffer of at least kBase10MaximalLength + 1. In all other modes the + // requested_digits parameter and the padding-zeroes limit the size of the + // output. Don't forget the decimal point, the exponent character and the + // terminating null-character when computing the maximal output size. + // The given length is only used in debug mode to ensure the buffer is big + // enough. + // ICU PATCH: Export this as U_I18N_API for unit tests. + static void U_I18N_API DoubleToAscii(double v, + DtoaMode mode, + int requested_digits, + char* buffer, + int buffer_length, + bool* sign, + int* length, + int* point); + +#if 0 // not needed for ICU + private: + // Implementation for ToShortest and ToShortestSingle. + bool ToShortestIeeeNumber(double value, + StringBuilder* result_builder, + DtoaMode mode) const; + + // If the value is a special value (NaN or Infinity) constructs the + // corresponding string using the configured infinity/nan-symbol. + // If either of them is NULL or the value is not special then the + // function returns false. + bool HandleSpecialValues(double value, StringBuilder* result_builder) const; + // Constructs an exponential representation (i.e. 1.234e56). + // The given exponent assumes a decimal point after the first decimal digit. + void CreateExponentialRepresentation(const char* decimal_digits, + int length, + int exponent, + StringBuilder* result_builder) const; + // Creates a decimal representation (i.e 1234.5678). + void CreateDecimalRepresentation(const char* decimal_digits, + int length, + int decimal_point, + int digits_after_point, + StringBuilder* result_builder) const; + + const int flags_; + const char* const infinity_symbol_; + const char* const nan_symbol_; + const char exponent_character_; + const int decimal_in_shortest_low_; + const int decimal_in_shortest_high_; + const int max_leading_padding_zeroes_in_precision_mode_; + const int max_trailing_padding_zeroes_in_precision_mode_; + const int min_exponent_width_; +#endif // not needed for ICU + + DOUBLE_CONVERSION_DISALLOW_IMPLICIT_CONSTRUCTORS(DoubleToStringConverter); +}; + +} // namespace double_conversion + +// ICU PATCH: Close ICU namespace +U_NAMESPACE_END + +#endif // DOUBLE_CONVERSION_DOUBLE_TO_STRING_H_ +#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING diff --git a/source/i18n/double-conversion-fast-dtoa.cpp b/source/i18n/double-conversion-fast-dtoa.cpp index 8d1499a..87a3d53 100644 --- a/source/i18n/double-conversion-fast-dtoa.cpp +++ b/source/i18n/double-conversion-fast-dtoa.cpp @@ -152,7 +152,7 @@ static bool RoundWeed(Vector buffer, // Conceptually rest ~= too_high - buffer // We need to do the following tests in this order to avoid over- and // underflows. - ASSERT(rest <= unsafe_interval); + DOUBLE_CONVERSION_ASSERT(rest <= unsafe_interval); while (rest < small_distance && // Negated condition 1 unsafe_interval - rest >= ten_kappa && // Negated condition 2 (rest + ten_kappa < small_distance || // buffer{-1} > w_high @@ -198,7 +198,7 @@ static bool RoundWeedCounted(Vector buffer, uint64_t ten_kappa, uint64_t unit, int* kappa) { - ASSERT(rest < ten_kappa); + DOUBLE_CONVERSION_ASSERT(rest < ten_kappa); // The following tests are done in a specific order to avoid overflows. They // will work correctly with any uint64 values of rest < ten_kappa and unit. // @@ -255,7 +255,7 @@ static void BiggestPowerTen(uint32_t number, int number_bits, uint32_t* power, int* exponent_plus_one) { - ASSERT(number < (1u << (number_bits + 1))); + DOUBLE_CONVERSION_ASSERT(number < (1u << (number_bits + 1))); // 1233/4096 is approximately 1/lg(10). int exponent_plus_one_guess = ((number_bits + 1) * 1233 >> 12); // We increment to skip over the first entry in the kPowersOf10 table. @@ -317,9 +317,9 @@ static bool DigitGen(DiyFp low, Vector buffer, int* length, int* kappa) { - ASSERT(low.e() == w.e() && w.e() == high.e()); - ASSERT(low.f() + 1 <= high.f() - 1); - ASSERT(kMinimalTargetExponent <= w.e() && w.e() <= kMaximalTargetExponent); + DOUBLE_CONVERSION_ASSERT(low.e() == w.e() && w.e() == high.e()); + DOUBLE_CONVERSION_ASSERT(low.f() + 1 <= high.f() - 1); + DOUBLE_CONVERSION_ASSERT(kMinimalTargetExponent <= w.e() && w.e() <= kMaximalTargetExponent); // low, w and high are imprecise, but by less than one ulp (unit in the last // place). // If we remove (resp. add) 1 ulp from low (resp. high) we are certain that @@ -361,7 +361,7 @@ static bool DigitGen(DiyFp low, // that is smaller than integrals. while (*kappa > 0) { int digit = integrals / divisor; - ASSERT(digit <= 9); + DOUBLE_CONVERSION_ASSERT(digit <= 9); buffer[*length] = static_cast('0' + digit); (*length)++; integrals %= divisor; @@ -388,16 +388,16 @@ static bool DigitGen(DiyFp low, // data (like the interval or 'unit'), too. // Note that the multiplication by 10 does not overflow, because w.e >= -60 // and thus one.e >= -60. - ASSERT(one.e() >= -60); - ASSERT(fractionals < one.f()); - ASSERT(UINT64_2PART_C(0xFFFFFFFF, FFFFFFFF) / 10 >= one.f()); + DOUBLE_CONVERSION_ASSERT(one.e() >= -60); + DOUBLE_CONVERSION_ASSERT(fractionals < one.f()); + DOUBLE_CONVERSION_ASSERT(DOUBLE_CONVERSION_UINT64_2PART_C(0xFFFFFFFF, FFFFFFFF) / 10 >= one.f()); for (;;) { fractionals *= 10; unit *= 10; unsafe_interval.set_f(unsafe_interval.f() * 10); // Integer division by one. int digit = static_cast(fractionals >> -one.e()); - ASSERT(digit <= 9); + DOUBLE_CONVERSION_ASSERT(digit <= 9); buffer[*length] = static_cast('0' + digit); (*length)++; fractionals &= one.f() - 1; // Modulo by one. @@ -444,9 +444,9 @@ static bool DigitGenCounted(DiyFp w, Vector buffer, int* length, int* kappa) { - ASSERT(kMinimalTargetExponent <= w.e() && w.e() <= kMaximalTargetExponent); - ASSERT(kMinimalTargetExponent >= -60); - ASSERT(kMaximalTargetExponent <= -32); + DOUBLE_CONVERSION_ASSERT(kMinimalTargetExponent <= w.e() && w.e() <= kMaximalTargetExponent); + DOUBLE_CONVERSION_ASSERT(kMinimalTargetExponent >= -60); + DOUBLE_CONVERSION_ASSERT(kMaximalTargetExponent <= -32); // w is assumed to have an error less than 1 unit. Whenever w is scaled we // also scale its error. uint64_t w_error = 1; @@ -472,7 +472,7 @@ static bool DigitGenCounted(DiyFp w, // that is smaller than 'integrals'. while (*kappa > 0) { int digit = integrals / divisor; - ASSERT(digit <= 9); + DOUBLE_CONVERSION_ASSERT(digit <= 9); buffer[*length] = static_cast('0' + digit); (*length)++; requested_digits--; @@ -498,15 +498,15 @@ static bool DigitGenCounted(DiyFp w, // data (the 'unit'), too. // Note that the multiplication by 10 does not overflow, because w.e >= -60 // and thus one.e >= -60. - ASSERT(one.e() >= -60); - ASSERT(fractionals < one.f()); - ASSERT(UINT64_2PART_C(0xFFFFFFFF, FFFFFFFF) / 10 >= one.f()); + DOUBLE_CONVERSION_ASSERT(one.e() >= -60); + DOUBLE_CONVERSION_ASSERT(fractionals < one.f()); + DOUBLE_CONVERSION_ASSERT(DOUBLE_CONVERSION_UINT64_2PART_C(0xFFFFFFFF, FFFFFFFF) / 10 >= one.f()); while (requested_digits > 0 && fractionals > w_error) { fractionals *= 10; w_error *= 10; // Integer division by one. int digit = static_cast(fractionals >> -one.e()); - ASSERT(digit <= 9); + DOUBLE_CONVERSION_ASSERT(digit <= 9); buffer[*length] = static_cast('0' + digit); (*length)++; requested_digits--; @@ -544,11 +544,11 @@ static bool Grisu3(double v, if (mode == FAST_DTOA_SHORTEST) { Double(v).NormalizedBoundaries(&boundary_minus, &boundary_plus); } else { - ASSERT(mode == FAST_DTOA_SHORTEST_SINGLE); + DOUBLE_CONVERSION_ASSERT(mode == FAST_DTOA_SHORTEST_SINGLE); float single_v = static_cast(v); Single(single_v).NormalizedBoundaries(&boundary_minus, &boundary_plus); } - ASSERT(boundary_plus.e() == w.e()); + DOUBLE_CONVERSION_ASSERT(boundary_plus.e() == w.e()); DiyFp ten_mk; // Cached power of ten: 10^-k int mk; // -k int ten_mk_minimal_binary_exponent = @@ -559,7 +559,7 @@ static bool Grisu3(double v, ten_mk_minimal_binary_exponent, ten_mk_maximal_binary_exponent, &ten_mk, &mk); - ASSERT((kMinimalTargetExponent <= w.e() + ten_mk.e() + + DOUBLE_CONVERSION_ASSERT((kMinimalTargetExponent <= w.e() + ten_mk.e() + DiyFp::kSignificandSize) && (kMaximalTargetExponent >= w.e() + ten_mk.e() + DiyFp::kSignificandSize)); @@ -573,7 +573,7 @@ static bool Grisu3(double v, // In other words: let f = scaled_w.f() and e = scaled_w.e(), then // (f-1) * 2^e < w*10^k < (f+1) * 2^e DiyFp scaled_w = DiyFp::Times(w, ten_mk); - ASSERT(scaled_w.e() == + DOUBLE_CONVERSION_ASSERT(scaled_w.e() == boundary_plus.e() + ten_mk.e() + DiyFp::kSignificandSize); // In theory it would be possible to avoid some recomputations by computing // the difference between w and boundary_minus/plus (a power of 2) and to @@ -618,7 +618,7 @@ static bool Grisu3Counted(double v, ten_mk_minimal_binary_exponent, ten_mk_maximal_binary_exponent, &ten_mk, &mk); - ASSERT((kMinimalTargetExponent <= w.e() + ten_mk.e() + + DOUBLE_CONVERSION_ASSERT((kMinimalTargetExponent <= w.e() + ten_mk.e() + DiyFp::kSignificandSize) && (kMaximalTargetExponent >= w.e() + ten_mk.e() + DiyFp::kSignificandSize)); @@ -652,8 +652,8 @@ bool FastDtoa(double v, Vector buffer, int* length, int* decimal_point) { - ASSERT(v > 0); - ASSERT(!Double(v).IsSpecial()); + DOUBLE_CONVERSION_ASSERT(v > 0); + DOUBLE_CONVERSION_ASSERT(!Double(v).IsSpecial()); bool result = false; int decimal_exponent = 0; @@ -667,7 +667,7 @@ bool FastDtoa(double v, buffer, length, &decimal_exponent); break; default: - UNREACHABLE(); + DOUBLE_CONVERSION_UNREACHABLE(); } if (result) { *decimal_point = *length + decimal_exponent; diff --git a/source/i18n/double-conversion-ieee.h b/source/i18n/double-conversion-ieee.h index c83c8d9..f4c62a9 100644 --- a/source/i18n/double-conversion-ieee.h +++ b/source/i18n/double-conversion-ieee.h @@ -55,12 +55,14 @@ static float uint32_to_float(uint32_t d32) { return BitCast(d32); } // Helper functions for doubles. class Double { public: - static const uint64_t kSignMask = UINT64_2PART_C(0x80000000, 00000000); - static const uint64_t kExponentMask = UINT64_2PART_C(0x7FF00000, 00000000); - static const uint64_t kSignificandMask = UINT64_2PART_C(0x000FFFFF, FFFFFFFF); - static const uint64_t kHiddenBit = UINT64_2PART_C(0x00100000, 00000000); + static const uint64_t kSignMask = DOUBLE_CONVERSION_UINT64_2PART_C(0x80000000, 00000000); + static const uint64_t kExponentMask = DOUBLE_CONVERSION_UINT64_2PART_C(0x7FF00000, 00000000); + static const uint64_t kSignificandMask = DOUBLE_CONVERSION_UINT64_2PART_C(0x000FFFFF, FFFFFFFF); + static const uint64_t kHiddenBit = DOUBLE_CONVERSION_UINT64_2PART_C(0x00100000, 00000000); static const int kPhysicalSignificandSize = 52; // Excludes the hidden bit. static const int kSignificandSize = 53; + static const int kExponentBias = 0x3FF + kPhysicalSignificandSize; + static const int kMaxExponent = 0x7FF - kExponentBias; Double() : d64_(0) {} explicit Double(double d) : d64_(double_to_uint64(d)) {} @@ -71,14 +73,14 @@ class Double { // The value encoded by this Double must be greater or equal to +0.0. // It must not be special (infinity, or NaN). DiyFp AsDiyFp() const { - ASSERT(Sign() > 0); - ASSERT(!IsSpecial()); + DOUBLE_CONVERSION_ASSERT(Sign() > 0); + DOUBLE_CONVERSION_ASSERT(!IsSpecial()); return DiyFp(Significand(), Exponent()); } // The value encoded by this Double must be strictly greater than 0. DiyFp AsNormalizedDiyFp() const { - ASSERT(value() > 0.0); + DOUBLE_CONVERSION_ASSERT(value() > 0.0); uint64_t f = Significand(); int e = Exponent(); @@ -174,7 +176,7 @@ class Double { // Precondition: the value encoded by this Double must be greater or equal // than +0.0. DiyFp UpperBoundary() const { - ASSERT(Sign() > 0); + DOUBLE_CONVERSION_ASSERT(Sign() > 0); return DiyFp(Significand() * 2 + 1, Exponent() - 1); } @@ -183,7 +185,7 @@ class Double { // exponent as m_plus. // Precondition: the value encoded by this Double must be greater than 0. void NormalizedBoundaries(DiyFp* out_m_minus, DiyFp* out_m_plus) const { - ASSERT(value() > 0.0); + DOUBLE_CONVERSION_ASSERT(value() > 0.0); DiyFp v = this->AsDiyFp(); DiyFp m_plus = DiyFp::Normalize(DiyFp((v.f() << 1) + 1, v.e() - 1)); DiyFp m_minus; @@ -236,11 +238,9 @@ class Double { } private: - static const int kExponentBias = 0x3FF + kPhysicalSignificandSize; static const int kDenormalExponent = -kExponentBias + 1; - static const int kMaxExponent = 0x7FF - kExponentBias; - static const uint64_t kInfinity = UINT64_2PART_C(0x7FF00000, 00000000); - static const uint64_t kNaN = UINT64_2PART_C(0x7FF80000, 00000000); + static const uint64_t kInfinity = DOUBLE_CONVERSION_UINT64_2PART_C(0x7FF00000, 00000000); + static const uint64_t kNaN = DOUBLE_CONVERSION_UINT64_2PART_C(0x7FF80000, 00000000); const uint64_t d64_; @@ -271,7 +271,7 @@ class Double { (biased_exponent << kPhysicalSignificandSize); } - DC_DISALLOW_COPY_AND_ASSIGN(Double); + DOUBLE_CONVERSION_DISALLOW_COPY_AND_ASSIGN(Double); }; class Single { @@ -290,8 +290,8 @@ class Single { // The value encoded by this Single must be greater or equal to +0.0. // It must not be special (infinity, or NaN). DiyFp AsDiyFp() const { - ASSERT(Sign() > 0); - ASSERT(!IsSpecial()); + DOUBLE_CONVERSION_ASSERT(Sign() > 0); + DOUBLE_CONVERSION_ASSERT(!IsSpecial()); return DiyFp(Significand(), Exponent()); } @@ -354,7 +354,7 @@ class Single { // exponent as m_plus. // Precondition: the value encoded by this Single must be greater than 0. void NormalizedBoundaries(DiyFp* out_m_minus, DiyFp* out_m_plus) const { - ASSERT(value() > 0.0); + DOUBLE_CONVERSION_ASSERT(value() > 0.0); DiyFp v = this->AsDiyFp(); DiyFp m_plus = DiyFp::Normalize(DiyFp((v.f() << 1) + 1, v.e() - 1)); DiyFp m_minus; @@ -372,7 +372,7 @@ class Single { // Precondition: the value encoded by this Single must be greater or equal // than +0.0. DiyFp UpperBoundary() const { - ASSERT(Sign() > 0); + DOUBLE_CONVERSION_ASSERT(Sign() > 0); return DiyFp(Significand() * 2 + 1, Exponent() - 1); } @@ -408,7 +408,7 @@ class Single { const uint32_t d32_; - DC_DISALLOW_COPY_AND_ASSIGN(Single); + DOUBLE_CONVERSION_DISALLOW_COPY_AND_ASSIGN(Single); }; } // namespace double_conversion diff --git a/source/i18n/double-conversion.cpp b/source/i18n/double-conversion-string-to-double.cpp similarity index 63% rename from source/i18n/double-conversion.cpp rename to source/i18n/double-conversion-string-to-double.cpp index 1a60afb..946b2b2 100644 --- a/source/i18n/double-conversion.cpp +++ b/source/i18n/double-conversion-string-to-double.cpp @@ -37,16 +37,13 @@ // ICU PATCH: Do not include std::locale. #include -//#include +// #include #include // ICU PATCH: Customize header file paths for ICU. -// The file fixed-dtoa.h is not needed. -#include "double-conversion.h" +#include "double-conversion-string-to-double.h" -#include "double-conversion-bignum-dtoa.h" -#include "double-conversion-fast-dtoa.h" #include "double-conversion-ieee.h" #include "double-conversion-strtod.h" #include "double-conversion-utils.h" @@ -56,385 +53,6 @@ U_NAMESPACE_BEGIN namespace double_conversion { -#if 0 // not needed for ICU -const DoubleToStringConverter& DoubleToStringConverter::EcmaScriptConverter() { - int flags = UNIQUE_ZERO | EMIT_POSITIVE_EXPONENT_SIGN; - static DoubleToStringConverter converter(flags, - "Infinity", - "NaN", - 'e', - -6, 21, - 6, 0); - return converter; -} - - -bool DoubleToStringConverter::HandleSpecialValues( - double value, - StringBuilder* result_builder) const { - Double double_inspect(value); - if (double_inspect.IsInfinite()) { - if (infinity_symbol_ == NULL) return false; - if (value < 0) { - result_builder->AddCharacter('-'); - } - result_builder->AddString(infinity_symbol_); - return true; - } - if (double_inspect.IsNan()) { - if (nan_symbol_ == NULL) return false; - result_builder->AddString(nan_symbol_); - return true; - } - return false; -} - - -void DoubleToStringConverter::CreateExponentialRepresentation( - const char* decimal_digits, - int length, - int exponent, - StringBuilder* result_builder) const { - ASSERT(length != 0); - result_builder->AddCharacter(decimal_digits[0]); - if (length != 1) { - result_builder->AddCharacter('.'); - result_builder->AddSubstring(&decimal_digits[1], length-1); - } - result_builder->AddCharacter(exponent_character_); - if (exponent < 0) { - result_builder->AddCharacter('-'); - exponent = -exponent; - } else { - if ((flags_ & EMIT_POSITIVE_EXPONENT_SIGN) != 0) { - result_builder->AddCharacter('+'); - } - } - if (exponent == 0) { - result_builder->AddCharacter('0'); - return; - } - ASSERT(exponent < 1e4); - const int kMaxExponentLength = 5; - char buffer[kMaxExponentLength + 1]; - buffer[kMaxExponentLength] = '\0'; - int first_char_pos = kMaxExponentLength; - while (exponent > 0) { - buffer[--first_char_pos] = '0' + (exponent % 10); - exponent /= 10; - } - result_builder->AddSubstring(&buffer[first_char_pos], - kMaxExponentLength - first_char_pos); -} - - -void DoubleToStringConverter::CreateDecimalRepresentation( - const char* decimal_digits, - int length, - int decimal_point, - int digits_after_point, - StringBuilder* result_builder) const { - // Create a representation that is padded with zeros if needed. - if (decimal_point <= 0) { - // "0.00000decimal_rep" or "0.000decimal_rep00". - result_builder->AddCharacter('0'); - if (digits_after_point > 0) { - result_builder->AddCharacter('.'); - result_builder->AddPadding('0', -decimal_point); - ASSERT(length <= digits_after_point - (-decimal_point)); - result_builder->AddSubstring(decimal_digits, length); - int remaining_digits = digits_after_point - (-decimal_point) - length; - result_builder->AddPadding('0', remaining_digits); - } - } else if (decimal_point >= length) { - // "decimal_rep0000.00000" or "decimal_rep.0000". - result_builder->AddSubstring(decimal_digits, length); - result_builder->AddPadding('0', decimal_point - length); - if (digits_after_point > 0) { - result_builder->AddCharacter('.'); - result_builder->AddPadding('0', digits_after_point); - } - } else { - // "decima.l_rep000". - ASSERT(digits_after_point > 0); - result_builder->AddSubstring(decimal_digits, decimal_point); - result_builder->AddCharacter('.'); - ASSERT(length - decimal_point <= digits_after_point); - result_builder->AddSubstring(&decimal_digits[decimal_point], - length - decimal_point); - int remaining_digits = digits_after_point - (length - decimal_point); - result_builder->AddPadding('0', remaining_digits); - } - if (digits_after_point == 0) { - if ((flags_ & EMIT_TRAILING_DECIMAL_POINT) != 0) { - result_builder->AddCharacter('.'); - } - if ((flags_ & EMIT_TRAILING_ZERO_AFTER_POINT) != 0) { - result_builder->AddCharacter('0'); - } - } -} - - -bool DoubleToStringConverter::ToShortestIeeeNumber( - double value, - StringBuilder* result_builder, - DoubleToStringConverter::DtoaMode mode) const { - ASSERT(mode == SHORTEST || mode == SHORTEST_SINGLE); - if (Double(value).IsSpecial()) { - return HandleSpecialValues(value, result_builder); - } - - int decimal_point; - bool sign; - const int kDecimalRepCapacity = kBase10MaximalLength + 1; - char decimal_rep[kDecimalRepCapacity]; - int decimal_rep_length; - - DoubleToAscii(value, mode, 0, decimal_rep, kDecimalRepCapacity, - &sign, &decimal_rep_length, &decimal_point); - - bool unique_zero = (flags_ & UNIQUE_ZERO) != 0; - if (sign && (value != 0.0 || !unique_zero)) { - result_builder->AddCharacter('-'); - } - - int exponent = decimal_point - 1; - if ((decimal_in_shortest_low_ <= exponent) && - (exponent < decimal_in_shortest_high_)) { - CreateDecimalRepresentation(decimal_rep, decimal_rep_length, - decimal_point, - Max(0, decimal_rep_length - decimal_point), - result_builder); - } else { - CreateExponentialRepresentation(decimal_rep, decimal_rep_length, exponent, - result_builder); - } - return true; -} - - -bool DoubleToStringConverter::ToFixed(double value, - int requested_digits, - StringBuilder* result_builder) const { - ASSERT(kMaxFixedDigitsBeforePoint == 60); - const double kFirstNonFixed = 1e60; - - if (Double(value).IsSpecial()) { - return HandleSpecialValues(value, result_builder); - } - - if (requested_digits > kMaxFixedDigitsAfterPoint) return false; - if (value >= kFirstNonFixed || value <= -kFirstNonFixed) return false; - - // Find a sufficiently precise decimal representation of n. - int decimal_point; - bool sign; - // Add space for the '\0' byte. - const int kDecimalRepCapacity = - kMaxFixedDigitsBeforePoint + kMaxFixedDigitsAfterPoint + 1; - char decimal_rep[kDecimalRepCapacity]; - int decimal_rep_length; - DoubleToAscii(value, FIXED, requested_digits, - decimal_rep, kDecimalRepCapacity, - &sign, &decimal_rep_length, &decimal_point); - - bool unique_zero = ((flags_ & UNIQUE_ZERO) != 0); - if (sign && (value != 0.0 || !unique_zero)) { - result_builder->AddCharacter('-'); - } - - CreateDecimalRepresentation(decimal_rep, decimal_rep_length, decimal_point, - requested_digits, result_builder); - return true; -} - - -bool DoubleToStringConverter::ToExponential( - double value, - int requested_digits, - StringBuilder* result_builder) const { - if (Double(value).IsSpecial()) { - return HandleSpecialValues(value, result_builder); - } - - if (requested_digits < -1) return false; - if (requested_digits > kMaxExponentialDigits) return false; - - int decimal_point; - bool sign; - // Add space for digit before the decimal point and the '\0' character. - const int kDecimalRepCapacity = kMaxExponentialDigits + 2; - ASSERT(kDecimalRepCapacity > kBase10MaximalLength); - char decimal_rep[kDecimalRepCapacity]; - int decimal_rep_length; - - if (requested_digits == -1) { - DoubleToAscii(value, SHORTEST, 0, - decimal_rep, kDecimalRepCapacity, - &sign, &decimal_rep_length, &decimal_point); - } else { - DoubleToAscii(value, PRECISION, requested_digits + 1, - decimal_rep, kDecimalRepCapacity, - &sign, &decimal_rep_length, &decimal_point); - ASSERT(decimal_rep_length <= requested_digits + 1); - - for (int i = decimal_rep_length; i < requested_digits + 1; ++i) { - decimal_rep[i] = '0'; - } - decimal_rep_length = requested_digits + 1; - } - - bool unique_zero = ((flags_ & UNIQUE_ZERO) != 0); - if (sign && (value != 0.0 || !unique_zero)) { - result_builder->AddCharacter('-'); - } - - int exponent = decimal_point - 1; - CreateExponentialRepresentation(decimal_rep, - decimal_rep_length, - exponent, - result_builder); - return true; -} - - -bool DoubleToStringConverter::ToPrecision(double value, - int precision, - StringBuilder* result_builder) const { - if (Double(value).IsSpecial()) { - return HandleSpecialValues(value, result_builder); - } - - if (precision < kMinPrecisionDigits || precision > kMaxPrecisionDigits) { - return false; - } - - // Find a sufficiently precise decimal representation of n. - int decimal_point; - bool sign; - // Add one for the terminating null character. - const int kDecimalRepCapacity = kMaxPrecisionDigits + 1; - char decimal_rep[kDecimalRepCapacity]; - int decimal_rep_length; - - DoubleToAscii(value, PRECISION, precision, - decimal_rep, kDecimalRepCapacity, - &sign, &decimal_rep_length, &decimal_point); - ASSERT(decimal_rep_length <= precision); - - bool unique_zero = ((flags_ & UNIQUE_ZERO) != 0); - if (sign && (value != 0.0 || !unique_zero)) { - result_builder->AddCharacter('-'); - } - - // The exponent if we print the number as x.xxeyyy. That is with the - // decimal point after the first digit. - int exponent = decimal_point - 1; - - int extra_zero = ((flags_ & EMIT_TRAILING_ZERO_AFTER_POINT) != 0) ? 1 : 0; - if ((-decimal_point + 1 > max_leading_padding_zeroes_in_precision_mode_) || - (decimal_point - precision + extra_zero > - max_trailing_padding_zeroes_in_precision_mode_)) { - // Fill buffer to contain 'precision' digits. - // Usually the buffer is already at the correct length, but 'DoubleToAscii' - // is allowed to return less characters. - for (int i = decimal_rep_length; i < precision; ++i) { - decimal_rep[i] = '0'; - } - - CreateExponentialRepresentation(decimal_rep, - precision, - exponent, - result_builder); - } else { - CreateDecimalRepresentation(decimal_rep, decimal_rep_length, decimal_point, - Max(0, precision - decimal_point), - result_builder); - } - return true; -} -#endif // not needed for ICU - - -static BignumDtoaMode DtoaToBignumDtoaMode( - DoubleToStringConverter::DtoaMode dtoa_mode) { - switch (dtoa_mode) { - case DoubleToStringConverter::SHORTEST: return BIGNUM_DTOA_SHORTEST; - case DoubleToStringConverter::SHORTEST_SINGLE: - return BIGNUM_DTOA_SHORTEST_SINGLE; - case DoubleToStringConverter::FIXED: return BIGNUM_DTOA_FIXED; - case DoubleToStringConverter::PRECISION: return BIGNUM_DTOA_PRECISION; - default: - UNREACHABLE(); - } -} - - -void DoubleToStringConverter::DoubleToAscii(double v, - DtoaMode mode, - int requested_digits, - char* buffer, - int buffer_length, - bool* sign, - int* length, - int* point) { - Vector vector(buffer, buffer_length); - ASSERT(!Double(v).IsSpecial()); - ASSERT(mode == SHORTEST || mode == SHORTEST_SINGLE || requested_digits >= 0); - - if (Double(v).Sign() < 0) { - *sign = true; - v = -v; - } else { - *sign = false; - } - - if (mode == PRECISION && requested_digits == 0) { - vector[0] = '\0'; - *length = 0; - return; - } - - if (v == 0) { - vector[0] = '0'; - vector[1] = '\0'; - *length = 1; - *point = 1; - return; - } - - bool fast_worked; - switch (mode) { - case SHORTEST: - fast_worked = FastDtoa(v, FAST_DTOA_SHORTEST, 0, vector, length, point); - break; -#if 0 // not needed for ICU - case SHORTEST_SINGLE: - fast_worked = FastDtoa(v, FAST_DTOA_SHORTEST_SINGLE, 0, - vector, length, point); - break; - case FIXED: - fast_worked = FastFixedDtoa(v, requested_digits, vector, length, point); - break; - case PRECISION: - fast_worked = FastDtoa(v, FAST_DTOA_PRECISION, requested_digits, - vector, length, point); - break; -#endif // not needed for ICU - default: - fast_worked = false; - UNREACHABLE(); - } - if (fast_worked) return; - - // If the fast dtoa didn't succeed use the slower bignum version. - BignumDtoaMode bignum_mode = DtoaToBignumDtoaMode(mode); - BignumDtoa(v, bignum_mode, requested_digits, vector, length, point); - vector[*length] = '\0'; -} - - namespace { inline char ToLower(char ch) { @@ -444,7 +62,7 @@ inline char ToLower(char ch) { return cType.tolower(ch); #else (void)ch; - UNREACHABLE(); + DOUBLE_CONVERSION_UNREACHABLE(); #endif } @@ -457,7 +75,7 @@ static inline bool ConsumeSubStringImpl(Iterator* current, Iterator end, const char* substring, Converter converter) { - ASSERT(converter(**current) == *substring); + DOUBLE_CONVERSION_ASSERT(converter(**current) == *substring); for (substring++; *substring != '\0'; substring++) { ++*current; if (*current == end || converter(**current) != *substring) { @@ -474,8 +92,8 @@ template static bool ConsumeSubString(Iterator* current, Iterator end, const char* substring, - bool allow_case_insensibility) { - if (allow_case_insensibility) { + bool allow_case_insensitivity) { + if (allow_case_insensitivity) { return ConsumeSubStringImpl(current, end, substring, ToLower); } else { return ConsumeSubStringImpl(current, end, substring, Pass); @@ -485,8 +103,8 @@ static bool ConsumeSubString(Iterator* current, // Consumes first character of the str is equal to ch inline bool ConsumeFirstCharacter(char ch, const char* str, - bool case_insensibility) { - return case_insensibility ? ToLower(ch) == str[0] : ch == str[0]; + bool case_insensitivity) { + return case_insensitivity ? ToLower(ch) == str[0] : ch == str[0]; } } // namespace @@ -501,15 +119,14 @@ const int kMaxSignificantDigits = 772; static const char kWhitespaceTable7[] = { 32, 13, 10, 9, 11, 12 }; -static const int kWhitespaceTable7Length = ARRAY_SIZE(kWhitespaceTable7); +static const int kWhitespaceTable7Length = DOUBLE_CONVERSION_ARRAY_SIZE(kWhitespaceTable7); static const uc16 kWhitespaceTable16[] = { 160, 8232, 8233, 5760, 6158, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8239, 8287, 12288, 65279 }; -static const int kWhitespaceTable16Length = ARRAY_SIZE(kWhitespaceTable16); - +static const int kWhitespaceTable16Length = DOUBLE_CONVERSION_ARRAY_SIZE(kWhitespaceTable16); static bool isWhitespace(int x) { @@ -609,7 +226,7 @@ static bool IsHexFloatString(Iterator start, Iterator end, uc16 separator, bool allow_trailing_junk) { - ASSERT(start != end); + DOUBLE_CONVERSION_ASSERT(start != end); Iterator current = start; @@ -624,8 +241,8 @@ static bool IsHexFloatString(Iterator start, saw_digit = true; if (Advance(¤t, separator, 16, end)) return false; } - if (!saw_digit) return false; // Only the '.', but no digits. } + if (!saw_digit) return false; if (*current != 'p' && *current != 'P') return false; if (Advance(¤t, separator, 16, end)) return false; if (*current == '+' || *current == '-') { @@ -654,8 +271,8 @@ static double RadixStringToIeee(Iterator* current, double junk_string_value, bool read_as_double, bool* result_is_junk) { - ASSERT(*current != end); - ASSERT(!parse_as_hex_float || + DOUBLE_CONVERSION_ASSERT(*current != end); + DOUBLE_CONVERSION_ASSERT(!parse_as_hex_float || IsHexFloatString(*current, end, separator, allow_trailing_junk)); const int kDoubleSize = Double::kSignificandSize; @@ -693,7 +310,7 @@ static double RadixStringToIeee(Iterator* current, } else if (parse_as_hex_float && **current == '.') { post_decimal = true; Advance(current, separator, radix, end); - ASSERT(*current != end); + DOUBLE_CONVERSION_ASSERT(*current != end); continue; } else if (parse_as_hex_float && (**current == 'p' || **current == 'P')) { break; @@ -728,7 +345,7 @@ static double RadixStringToIeee(Iterator* current, // Just run over the '.'. We are just trying to see whether there is // a non-zero digit somewhere. Advance(current, separator, radix, end); - ASSERT(*current != end); + DOUBLE_CONVERSION_ASSERT(*current != end); post_decimal = true; } if (!isDigit(**current, radix)) break; @@ -763,27 +380,31 @@ static double RadixStringToIeee(Iterator* current, if (Advance(current, separator, radix, end)) break; } - ASSERT(number < ((int64_t)1 << kSignificandSize)); - ASSERT(static_cast(static_cast(number)) == number); + DOUBLE_CONVERSION_ASSERT(number < ((int64_t)1 << kSignificandSize)); + DOUBLE_CONVERSION_ASSERT(static_cast(static_cast(number)) == number); *result_is_junk = false; if (parse_as_hex_float) { - ASSERT(**current == 'p' || **current == 'P'); + DOUBLE_CONVERSION_ASSERT(**current == 'p' || **current == 'P'); Advance(current, separator, radix, end); - ASSERT(*current != end); + DOUBLE_CONVERSION_ASSERT(*current != end); bool is_negative = false; if (**current == '+') { Advance(current, separator, radix, end); - ASSERT(*current != end); + DOUBLE_CONVERSION_ASSERT(*current != end); } else if (**current == '-') { is_negative = true; Advance(current, separator, radix, end); - ASSERT(*current != end); + DOUBLE_CONVERSION_ASSERT(*current != end); } int written_exponent = 0; while (IsDecimalDigitForRadix(**current, 10)) { - written_exponent = 10 * written_exponent + **current - '0'; + // No need to read exponents if they are too big. That could potentially overflow + // the `written_exponent` variable. + if (abs(written_exponent) <= 100 * Double::kMaxExponent) { + written_exponent = 10 * written_exponent + **current - '0'; + } if (Advance(current, separator, radix, end)) break; } if (is_negative) written_exponent = -written_exponent; @@ -798,7 +419,7 @@ static double RadixStringToIeee(Iterator* current, return static_cast(number); } - ASSERT(number != 0); + DOUBLE_CONVERSION_ASSERT(number != 0); double result = Double(DiyFp(number, exponent)).value(); return sign ? -result : result; } @@ -818,7 +439,7 @@ double StringToDoubleConverter::StringToIeee( const bool allow_leading_spaces = (flags_ & ALLOW_LEADING_SPACES) != 0; const bool allow_trailing_spaces = (flags_ & ALLOW_TRAILING_SPACES) != 0; const bool allow_spaces_after_sign = (flags_ & ALLOW_SPACES_AFTER_SIGN) != 0; - const bool allow_case_insensibility = (flags_ & ALLOW_CASE_INSENSIBILITY) != 0; + const bool allow_case_insensitivity = (flags_ & ALLOW_CASE_INSENSITIVITY) != 0; // To make sure that iterator dereferencing is valid the following // convention is used: @@ -868,8 +489,8 @@ double StringToDoubleConverter::StringToIeee( } if (infinity_symbol_ != NULL) { - if (ConsumeFirstCharacter(*current, infinity_symbol_, allow_case_insensibility)) { - if (!ConsumeSubString(¤t, end, infinity_symbol_, allow_case_insensibility)) { + if (ConsumeFirstCharacter(*current, infinity_symbol_, allow_case_insensitivity)) { + if (!ConsumeSubString(¤t, end, infinity_symbol_, allow_case_insensitivity)) { return junk_string_value_; } @@ -880,15 +501,15 @@ double StringToDoubleConverter::StringToIeee( return junk_string_value_; } - ASSERT(buffer_pos == 0); + DOUBLE_CONVERSION_ASSERT(buffer_pos == 0); *processed_characters_count = static_cast(current - input); return sign ? -Double::Infinity() : Double::Infinity(); } } if (nan_symbol_ != NULL) { - if (ConsumeFirstCharacter(*current, nan_symbol_, allow_case_insensibility)) { - if (!ConsumeSubString(¤t, end, nan_symbol_, allow_case_insensibility)) { + if (ConsumeFirstCharacter(*current, nan_symbol_, allow_case_insensitivity)) { + if (!ConsumeSubString(¤t, end, nan_symbol_, allow_case_insensitivity)) { return junk_string_value_; } @@ -899,7 +520,7 @@ double StringToDoubleConverter::StringToIeee( return junk_string_value_; } - ASSERT(buffer_pos == 0); + DOUBLE_CONVERSION_ASSERT(buffer_pos == 0); *processed_characters_count = static_cast(current - input); return sign ? -Double::NaN() : Double::NaN(); } @@ -919,10 +540,11 @@ double StringToDoubleConverter::StringToIeee( (*current == 'x' || *current == 'X')) { ++current; + if (current == end) return junk_string_value_; // "0x" + bool parse_as_hex_float = (flags_ & ALLOW_HEX_FLOATS) && IsHexFloatString(current, end, separator_, allow_trailing_junk); - if (current == end) return junk_string_value_; // "0x" if (!parse_as_hex_float && !isDigit(*current, 16)) { return junk_string_value_; } @@ -958,7 +580,7 @@ double StringToDoubleConverter::StringToIeee( // Copy significant digits of the integer part (if any) to the buffer. while (*current >= '0' && *current <= '9') { if (significant_digits < kMaxSignificantDigits) { - ASSERT(buffer_pos < kBufferSize); + DOUBLE_CONVERSION_ASSERT(buffer_pos < kBufferSize); buffer[buffer_pos++] = static_cast(*current); significant_digits++; // Will later check if it's an octal in the buffer. @@ -1003,7 +625,7 @@ double StringToDoubleConverter::StringToIeee( // We don't emit a '.', but adjust the exponent instead. while (*current >= '0' && *current <= '9') { if (significant_digits < kMaxSignificantDigits) { - ASSERT(buffer_pos < kBufferSize); + DOUBLE_CONVERSION_ASSERT(buffer_pos < kBufferSize); buffer[buffer_pos++] = static_cast(*current); significant_digits++; exponent--; @@ -1061,7 +683,7 @@ double StringToDoubleConverter::StringToIeee( } const int max_exponent = INT_MAX / 2; - ASSERT(-max_exponent / 2 <= exponent && exponent <= max_exponent / 2); + DOUBLE_CONVERSION_ASSERT(-max_exponent / 2 <= exponent && exponent <= max_exponent / 2); int num = 0; do { // Check overflow. @@ -1104,7 +726,7 @@ double StringToDoubleConverter::StringToIeee( junk_string_value_, read_as_double, &result_is_junk); - ASSERT(!result_is_junk); + DOUBLE_CONVERSION_ASSERT(!result_is_junk); *processed_characters_count = static_cast(current - input); return result; } @@ -1114,7 +736,7 @@ double StringToDoubleConverter::StringToIeee( exponent--; } - ASSERT(buffer_pos < kBufferSize); + DOUBLE_CONVERSION_ASSERT(buffer_pos < kBufferSize); buffer[buffer_pos] = '\0'; double converted; diff --git a/source/i18n/double-conversion-string-to-double.h b/source/i18n/double-conversion-string-to-double.h new file mode 100644 index 0000000..2eb0c1f --- /dev/null +++ b/source/i18n/double-conversion-string-to-double.h @@ -0,0 +1,244 @@ +// © 2018 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html +// +// From the double-conversion library. Original license: +// +// Copyright 2012 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING +#include "unicode/utypes.h" +#if !UCONFIG_NO_FORMATTING + +#ifndef DOUBLE_CONVERSION_STRING_TO_DOUBLE_H_ +#define DOUBLE_CONVERSION_STRING_TO_DOUBLE_H_ + +// ICU PATCH: Customize header file paths for ICU. + +#include "double-conversion-utils.h" + +// ICU PATCH: Wrap in ICU namespace +U_NAMESPACE_BEGIN + +namespace double_conversion { + +class StringToDoubleConverter { + public: + // Enumeration for allowing octals and ignoring junk when converting + // strings to numbers. + enum Flags { + NO_FLAGS = 0, + ALLOW_HEX = 1, + ALLOW_OCTALS = 2, + ALLOW_TRAILING_JUNK = 4, + ALLOW_LEADING_SPACES = 8, + ALLOW_TRAILING_SPACES = 16, + ALLOW_SPACES_AFTER_SIGN = 32, + ALLOW_CASE_INSENSITIVITY = 64, + ALLOW_CASE_INSENSIBILITY = 64, // Deprecated + ALLOW_HEX_FLOATS = 128, + }; + + static const uc16 kNoSeparator = '\0'; + + // Flags should be a bit-or combination of the possible Flags-enum. + // - NO_FLAGS: no special flags. + // - ALLOW_HEX: recognizes the prefix "0x". Hex numbers may only be integers. + // Ex: StringToDouble("0x1234") -> 4660.0 + // In StringToDouble("0x1234.56") the characters ".56" are trailing + // junk. The result of the call is hence dependent on + // the ALLOW_TRAILING_JUNK flag and/or the junk value. + // With this flag "0x" is a junk-string. Even with ALLOW_TRAILING_JUNK, + // the string will not be parsed as "0" followed by junk. + // + // - ALLOW_OCTALS: recognizes the prefix "0" for octals: + // If a sequence of octal digits starts with '0', then the number is + // read as octal integer. Octal numbers may only be integers. + // Ex: StringToDouble("01234") -> 668.0 + // StringToDouble("012349") -> 12349.0 // Not a sequence of octal + // // digits. + // In StringToDouble("01234.56") the characters ".56" are trailing + // junk. The result of the call is hence dependent on + // the ALLOW_TRAILING_JUNK flag and/or the junk value. + // In StringToDouble("01234e56") the characters "e56" are trailing + // junk, too. + // - ALLOW_TRAILING_JUNK: ignore trailing characters that are not part of + // a double literal. + // - ALLOW_LEADING_SPACES: skip over leading whitespace, including spaces, + // new-lines, and tabs. + // - ALLOW_TRAILING_SPACES: ignore trailing whitespace. + // - ALLOW_SPACES_AFTER_SIGN: ignore whitespace after the sign. + // Ex: StringToDouble("- 123.2") -> -123.2. + // StringToDouble("+ 123.2") -> 123.2 + // - ALLOW_CASE_INSENSITIVITY: ignore case of characters for special values: + // infinity and nan. + // - ALLOW_HEX_FLOATS: allows hexadecimal float literals. + // This *must* start with "0x" and separate the exponent with "p". + // Examples: 0x1.2p3 == 9.0 + // 0x10.1p0 == 16.0625 + // ALLOW_HEX and ALLOW_HEX_FLOATS are indendent. + // + // empty_string_value is returned when an empty string is given as input. + // If ALLOW_LEADING_SPACES or ALLOW_TRAILING_SPACES are set, then a string + // containing only spaces is converted to the 'empty_string_value', too. + // + // junk_string_value is returned when + // a) ALLOW_TRAILING_JUNK is not set, and a junk character (a character not + // part of a double-literal) is found. + // b) ALLOW_TRAILING_JUNK is set, but the string does not start with a + // double literal. + // + // infinity_symbol and nan_symbol are strings that are used to detect + // inputs that represent infinity and NaN. They can be null, in which case + // they are ignored. + // The conversion routine first reads any possible signs. Then it compares the + // following character of the input-string with the first character of + // the infinity, and nan-symbol. If either matches, the function assumes, that + // a match has been found, and expects the following input characters to match + // the remaining characters of the special-value symbol. + // This means that the following restrictions apply to special-value symbols: + // - they must not start with signs ('+', or '-'), + // - they must not have the same first character. + // - they must not start with digits. + // + // If the separator character is not kNoSeparator, then that specific + // character is ignored when in between two valid digits of the significant. + // It is not allowed to appear in the exponent. + // It is not allowed to lead or trail the number. + // It is not allowed to appear twice next to each other. + // + // Examples: + // flags = ALLOW_HEX | ALLOW_TRAILING_JUNK, + // empty_string_value = 0.0, + // junk_string_value = NaN, + // infinity_symbol = "infinity", + // nan_symbol = "nan": + // StringToDouble("0x1234") -> 4660.0. + // StringToDouble("0x1234K") -> 4660.0. + // StringToDouble("") -> 0.0 // empty_string_value. + // StringToDouble(" ") -> NaN // junk_string_value. + // StringToDouble(" 1") -> NaN // junk_string_value. + // StringToDouble("0x") -> NaN // junk_string_value. + // StringToDouble("-123.45") -> -123.45. + // StringToDouble("--123.45") -> NaN // junk_string_value. + // StringToDouble("123e45") -> 123e45. + // StringToDouble("123E45") -> 123e45. + // StringToDouble("123e+45") -> 123e45. + // StringToDouble("123E-45") -> 123e-45. + // StringToDouble("123e") -> 123.0 // trailing junk ignored. + // StringToDouble("123e-") -> 123.0 // trailing junk ignored. + // StringToDouble("+NaN") -> NaN // NaN string literal. + // StringToDouble("-infinity") -> -inf. // infinity literal. + // StringToDouble("Infinity") -> NaN // junk_string_value. + // + // flags = ALLOW_OCTAL | ALLOW_LEADING_SPACES, + // empty_string_value = 0.0, + // junk_string_value = NaN, + // infinity_symbol = NULL, + // nan_symbol = NULL: + // StringToDouble("0x1234") -> NaN // junk_string_value. + // StringToDouble("01234") -> 668.0. + // StringToDouble("") -> 0.0 // empty_string_value. + // StringToDouble(" ") -> 0.0 // empty_string_value. + // StringToDouble(" 1") -> 1.0 + // StringToDouble("0x") -> NaN // junk_string_value. + // StringToDouble("0123e45") -> NaN // junk_string_value. + // StringToDouble("01239E45") -> 1239e45. + // StringToDouble("-infinity") -> NaN // junk_string_value. + // StringToDouble("NaN") -> NaN // junk_string_value. + // + // flags = NO_FLAGS, + // separator = ' ': + // StringToDouble("1 2 3 4") -> 1234.0 + // StringToDouble("1 2") -> NaN // junk_string_value + // StringToDouble("1 000 000.0") -> 1000000.0 + // StringToDouble("1.000 000") -> 1.0 + // StringToDouble("1.0e1 000") -> NaN // junk_string_value + StringToDoubleConverter(int flags, + double empty_string_value, + double junk_string_value, + const char* infinity_symbol, + const char* nan_symbol, + uc16 separator = kNoSeparator) + : flags_(flags), + empty_string_value_(empty_string_value), + junk_string_value_(junk_string_value), + infinity_symbol_(infinity_symbol), + nan_symbol_(nan_symbol), + separator_(separator) { + } + + // Performs the conversion. + // The output parameter 'processed_characters_count' is set to the number + // of characters that have been processed to read the number. + // Spaces than are processed with ALLOW_{LEADING|TRAILING}_SPACES are included + // in the 'processed_characters_count'. Trailing junk is never included. + double StringToDouble(const char* buffer, + int length, + int* processed_characters_count) const; + + // Same as StringToDouble above but for 16 bit characters. + double StringToDouble(const uc16* buffer, + int length, + int* processed_characters_count) const; + + // Same as StringToDouble but reads a float. + // Note that this is not equivalent to static_cast(StringToDouble(...)) + // due to potential double-rounding. + float StringToFloat(const char* buffer, + int length, + int* processed_characters_count) const; + + // Same as StringToFloat above but for 16 bit characters. + float StringToFloat(const uc16* buffer, + int length, + int* processed_characters_count) const; + + private: + const int flags_; + const double empty_string_value_; + const double junk_string_value_; + const char* const infinity_symbol_; + const char* const nan_symbol_; + const uc16 separator_; + + template + double StringToIeee(Iterator start_pointer, + int length, + bool read_as_double, + int* processed_characters_count) const; + + DOUBLE_CONVERSION_DISALLOW_IMPLICIT_CONSTRUCTORS(StringToDoubleConverter); +}; + +} // namespace double_conversion + +// ICU PATCH: Close ICU namespace +U_NAMESPACE_END + +#endif // DOUBLE_CONVERSION_STRING_TO_DOUBLE_H_ +#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING diff --git a/source/i18n/double-conversion-strtod.cpp b/source/i18n/double-conversion-strtod.cpp index be9b0b3..9cf4854 100644 --- a/source/i18n/double-conversion-strtod.cpp +++ b/source/i18n/double-conversion-strtod.cpp @@ -34,16 +34,15 @@ #include "unicode/utypes.h" #if !UCONFIG_NO_FORMATTING -#include -#include +#include +#include // ICU PATCH: Customize header file paths for ICU. -// The file fixed-dtoa.h is not needed. -#include "double-conversion-strtod.h" #include "double-conversion-bignum.h" #include "double-conversion-cached-powers.h" #include "double-conversion-ieee.h" +#include "double-conversion-strtod.h" // ICU PATCH: Wrap in ICU namespace U_NAMESPACE_BEGIN @@ -67,7 +66,7 @@ static const int kMaxDecimalPower = 309; static const int kMinDecimalPower = -324; // 2^64 = 18446744073709551616 -static const uint64_t kMaxUint64 = UINT64_2PART_C(0xFFFFFFFF, FFFFFFFF); +static const uint64_t kMaxUint64 = DOUBLE_CONVERSION_UINT64_2PART_C(0xFFFFFFFF, FFFFFFFF); static const double exact_powers_of_ten[] = { @@ -96,7 +95,7 @@ static const double exact_powers_of_ten[] = { // 10^22 = 0x21e19e0c9bab2400000 = 0x878678326eac9 * 2^22 10000000000000000000000.0 }; -static const int kExactPowersOfTenSize = ARRAY_SIZE(exact_powers_of_ten); +static const int kExactPowersOfTenSize = DOUBLE_CONVERSION_ARRAY_SIZE(exact_powers_of_ten); // Maximum number of significant digits in the decimal representation. // In fact the value is 772 (see conversions.cc), but to give us some margin @@ -132,7 +131,7 @@ static void CutToMaxSignificantDigits(Vector buffer, } // The input buffer has been trimmed. Therefore the last digit must be // different from '0'. - ASSERT(buffer[buffer.length() - 1] != '0'); + DOUBLE_CONVERSION_ASSERT(buffer[buffer.length() - 1] != '0'); // Set the last digit to be non-zero. This is sufficient to guarantee // correct rounding. significant_buffer[kMaxSignificantDecimalDigits - 1] = '1'; @@ -153,7 +152,7 @@ static void TrimAndCut(Vector buffer, int exponent, exponent += left_trimmed.length() - right_trimmed.length(); if (right_trimmed.length() > kMaxSignificantDecimalDigits) { (void) space_size; // Mark variable as used. - ASSERT(space_size >= kMaxSignificantDecimalDigits); + DOUBLE_CONVERSION_ASSERT(space_size >= kMaxSignificantDecimalDigits); CutToMaxSignificantDigits(right_trimmed, exponent, buffer_copy_space, updated_exponent); *trimmed = Vector(buffer_copy_space, @@ -176,7 +175,7 @@ static uint64_t ReadUint64(Vector buffer, int i = 0; while (i < buffer.length() && result <= (kMaxUint64 / 10 - 1)) { int digit = buffer[i++] - '0'; - ASSERT(0 <= digit && digit <= 9); + DOUBLE_CONVERSION_ASSERT(0 <= digit && digit <= 9); result = 10 * result + digit; } *number_of_read_digits = i; @@ -220,7 +219,7 @@ static bool DoubleStrtod(Vector trimmed, // Note that the ARM simulator is compiled for 32bits. It therefore exhibits // the same problem. return false; -#endif +#else if (trimmed.length() <= kMaxExactDoubleIntegerDecimalDigits) { int read_digits; // The trimmed input fits into a double. @@ -232,14 +231,14 @@ static bool DoubleStrtod(Vector trimmed, if (exponent < 0 && -exponent < kExactPowersOfTenSize) { // 10^-exponent fits into a double. *result = static_cast(ReadUint64(trimmed, &read_digits)); - ASSERT(read_digits == trimmed.length()); + DOUBLE_CONVERSION_ASSERT(read_digits == trimmed.length()); *result /= exact_powers_of_ten[-exponent]; return true; } if (0 <= exponent && exponent < kExactPowersOfTenSize) { // 10^exponent fits into a double. *result = static_cast(ReadUint64(trimmed, &read_digits)); - ASSERT(read_digits == trimmed.length()); + DOUBLE_CONVERSION_ASSERT(read_digits == trimmed.length()); *result *= exact_powers_of_ten[exponent]; return true; } @@ -251,34 +250,35 @@ static bool DoubleStrtod(Vector trimmed, // 10^remaining_digits. As a result the remaining exponent now fits // into a double too. *result = static_cast(ReadUint64(trimmed, &read_digits)); - ASSERT(read_digits == trimmed.length()); + DOUBLE_CONVERSION_ASSERT(read_digits == trimmed.length()); *result *= exact_powers_of_ten[remaining_digits]; *result *= exact_powers_of_ten[exponent - remaining_digits]; return true; } } return false; +#endif } // Returns 10^exponent as an exact DiyFp. // The given exponent must be in the range [1; kDecimalExponentDistance[. static DiyFp AdjustmentPowerOfTen(int exponent) { - ASSERT(0 < exponent); - ASSERT(exponent < PowersOfTenCache::kDecimalExponentDistance); + DOUBLE_CONVERSION_ASSERT(0 < exponent); + DOUBLE_CONVERSION_ASSERT(exponent < PowersOfTenCache::kDecimalExponentDistance); // Simply hardcode the remaining powers for the given decimal exponent // distance. - ASSERT(PowersOfTenCache::kDecimalExponentDistance == 8); + DOUBLE_CONVERSION_ASSERT(PowersOfTenCache::kDecimalExponentDistance == 8); switch (exponent) { - case 1: return DiyFp(UINT64_2PART_C(0xa0000000, 00000000), -60); - case 2: return DiyFp(UINT64_2PART_C(0xc8000000, 00000000), -57); - case 3: return DiyFp(UINT64_2PART_C(0xfa000000, 00000000), -54); - case 4: return DiyFp(UINT64_2PART_C(0x9c400000, 00000000), -50); - case 5: return DiyFp(UINT64_2PART_C(0xc3500000, 00000000), -47); - case 6: return DiyFp(UINT64_2PART_C(0xf4240000, 00000000), -44); - case 7: return DiyFp(UINT64_2PART_C(0x98968000, 00000000), -40); + case 1: return DiyFp(DOUBLE_CONVERSION_UINT64_2PART_C(0xa0000000, 00000000), -60); + case 2: return DiyFp(DOUBLE_CONVERSION_UINT64_2PART_C(0xc8000000, 00000000), -57); + case 3: return DiyFp(DOUBLE_CONVERSION_UINT64_2PART_C(0xfa000000, 00000000), -54); + case 4: return DiyFp(DOUBLE_CONVERSION_UINT64_2PART_C(0x9c400000, 00000000), -50); + case 5: return DiyFp(DOUBLE_CONVERSION_UINT64_2PART_C(0xc3500000, 00000000), -47); + case 6: return DiyFp(DOUBLE_CONVERSION_UINT64_2PART_C(0xf4240000, 00000000), -44); + case 7: return DiyFp(DOUBLE_CONVERSION_UINT64_2PART_C(0x98968000, 00000000), -40); default: - UNREACHABLE(); + DOUBLE_CONVERSION_UNREACHABLE(); } } @@ -307,7 +307,7 @@ static bool DiyFpStrtod(Vector buffer, input.Normalize(); error <<= old_e - input.e(); - ASSERT(exponent <= PowersOfTenCache::kMaxDecimalExponent); + DOUBLE_CONVERSION_ASSERT(exponent <= PowersOfTenCache::kMaxDecimalExponent); if (exponent < PowersOfTenCache::kMinDecimalExponent) { *result = 0.0; return true; @@ -325,7 +325,7 @@ static bool DiyFpStrtod(Vector buffer, if (kMaxUint64DecimalDigits - buffer.length() >= adjustment_exponent) { // The product of input with the adjustment power fits into a 64 bit // integer. - ASSERT(DiyFp::kSignificandSize == 64); + DOUBLE_CONVERSION_ASSERT(DiyFp::kSignificandSize == 64); } else { // The adjustment power is exact. There is hence only an error of 0.5. error += kDenominator / 2; @@ -367,8 +367,8 @@ static bool DiyFpStrtod(Vector buffer, precision_digits_count -= shift_amount; } // We use uint64_ts now. This only works if the DiyFp uses uint64_ts too. - ASSERT(DiyFp::kSignificandSize == 64); - ASSERT(precision_digits_count < 64); + DOUBLE_CONVERSION_ASSERT(DiyFp::kSignificandSize == 64); + DOUBLE_CONVERSION_ASSERT(precision_digits_count < 64); uint64_t one64 = 1; uint64_t precision_bits_mask = (one64 << precision_digits_count) - 1; uint64_t precision_bits = input.f() & precision_bits_mask; @@ -407,14 +407,14 @@ static bool DiyFpStrtod(Vector buffer, static int CompareBufferWithDiyFp(Vector buffer, int exponent, DiyFp diy_fp) { - ASSERT(buffer.length() + exponent <= kMaxDecimalPower + 1); - ASSERT(buffer.length() + exponent > kMinDecimalPower); - ASSERT(buffer.length() <= kMaxSignificantDecimalDigits); + DOUBLE_CONVERSION_ASSERT(buffer.length() + exponent <= kMaxDecimalPower + 1); + DOUBLE_CONVERSION_ASSERT(buffer.length() + exponent > kMinDecimalPower); + DOUBLE_CONVERSION_ASSERT(buffer.length() <= kMaxSignificantDecimalDigits); // Make sure that the Bignum will be able to hold all our numbers. // Our Bignum implementation has a separate field for exponents. Shifts will // consume at most one bigit (< 64 bits). // ln(10) == 3.3219... - ASSERT(((kMaxDecimalPower + 1) * 333 / 100) < Bignum::kMaxSignificantBits); + DOUBLE_CONVERSION_ASSERT(((kMaxDecimalPower + 1) * 333 / 100) < Bignum::kMaxSignificantBits); Bignum buffer_bignum; Bignum diy_fp_bignum; buffer_bignum.AssignDecimalString(buffer); @@ -460,18 +460,33 @@ static bool ComputeGuess(Vector trimmed, int exponent, return false; } -double Strtod(Vector buffer, int exponent) { - char copy_buffer[kMaxSignificantDecimalDigits]; - Vector trimmed; - int updated_exponent; - TrimAndCut(buffer, exponent, copy_buffer, kMaxSignificantDecimalDigits, - &trimmed, &updated_exponent); - exponent = updated_exponent; +#if U_DEBUG // needed for ICU only in debug mode +static bool IsDigit(const char d) { + return ('0' <= d) && (d <= '9'); +} - double guess; - bool is_correct = ComputeGuess(trimmed, exponent, &guess); - if (is_correct) return guess; +static bool IsNonZeroDigit(const char d) { + return ('1' <= d) && (d <= '9'); +} + +static bool AssertTrimmedDigits(const Vector& buffer) { + for(int i = 0; i < buffer.length(); ++i) { + if(!IsDigit(buffer[i])) { + return false; + } + } + return (buffer.length() == 0) || (IsNonZeroDigit(buffer[0]) && IsNonZeroDigit(buffer[buffer.length()-1])); +} +#endif // needed for ICU only in debug mode +double StrtodTrimmed(Vector trimmed, int exponent) { + DOUBLE_CONVERSION_ASSERT(trimmed.length() <= kMaxSignificantDecimalDigits); + DOUBLE_CONVERSION_ASSERT(AssertTrimmedDigits(trimmed)); + double guess; + const bool is_correct = ComputeGuess(trimmed, exponent, &guess); + if (is_correct) { + return guess; + } DiyFp upper_boundary = Double(guess).UpperBoundary(); int comparison = CompareBufferWithDiyFp(trimmed, exponent, upper_boundary); if (comparison < 0) { @@ -486,6 +501,39 @@ double Strtod(Vector buffer, int exponent) { } } +double Strtod(Vector buffer, int exponent) { + char copy_buffer[kMaxSignificantDecimalDigits]; + Vector trimmed; + int updated_exponent; + TrimAndCut(buffer, exponent, copy_buffer, kMaxSignificantDecimalDigits, + &trimmed, &updated_exponent); + return StrtodTrimmed(trimmed, updated_exponent); +} + +static float SanitizedDoubletof(double d) { + DOUBLE_CONVERSION_ASSERT(d >= 0.0); + // ASAN has a sanitize check that disallows casting doubles to floats if + // they are too big. + // https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html#available-checks + // The behavior should be covered by IEEE 754, but some projects use this + // flag, so work around it. + float max_finite = 3.4028234663852885981170418348451692544e+38; + // The half-way point between the max-finite and infinity value. + // Since infinity has an even significand everything equal or greater than + // this value should become infinity. + double half_max_finite_infinity = + 3.40282356779733661637539395458142568448e+38; + if (d >= max_finite) { + if (d >= half_max_finite_infinity) { + return Single::Infinity(); + } else { + return max_finite; + } + } else { + return static_cast(d); + } +} + float Strtof(Vector buffer, int exponent) { char copy_buffer[kMaxSignificantDecimalDigits]; Vector trimmed; @@ -497,7 +545,7 @@ float Strtof(Vector buffer, int exponent) { double double_guess; bool is_correct = ComputeGuess(trimmed, exponent, &double_guess); - float float_guess = static_cast(double_guess); + float float_guess = SanitizedDoubletof(double_guess); if (float_guess == double_guess) { // This shortcut triggers for integer values. return float_guess; @@ -520,18 +568,18 @@ float Strtof(Vector buffer, int exponent) { double double_next = Double(double_guess).NextDouble(); double double_previous = Double(double_guess).PreviousDouble(); - float f1 = static_cast(double_previous); + float f1 = SanitizedDoubletof(double_previous); float f2 = float_guess; - float f3 = static_cast(double_next); + float f3 = SanitizedDoubletof(double_next); float f4; if (is_correct) { f4 = f3; } else { double double_next2 = Double(double_next).NextDouble(); - f4 = static_cast(double_next2); + f4 = SanitizedDoubletof(double_next2); } (void) f2; // Mark variable as used. - ASSERT(f1 <= f2 && f2 <= f3 && f3 <= f4); + DOUBLE_CONVERSION_ASSERT(f1 <= f2 && f2 <= f3 && f3 <= f4); // If the guess doesn't lie near a single-precision boundary we can simply // return its float-value. @@ -539,11 +587,11 @@ float Strtof(Vector buffer, int exponent) { return float_guess; } - ASSERT((f1 != f2 && f2 == f3 && f3 == f4) || + DOUBLE_CONVERSION_ASSERT((f1 != f2 && f2 == f3 && f3 == f4) || (f1 == f2 && f2 != f3 && f3 == f4) || (f1 == f2 && f2 == f3 && f3 != f4)); - // guess and next are the two possible canditates (in the same way that + // guess and next are the two possible candidates (in the same way that // double_guess was the lower candidate for a double-precision guess). float guess = f1; float next = f4; diff --git a/source/i18n/double-conversion-strtod.h b/source/i18n/double-conversion-strtod.h index e2d6d3c..50ef746 100644 --- a/source/i18n/double-conversion-strtod.h +++ b/source/i18n/double-conversion-strtod.h @@ -54,6 +54,11 @@ double Strtod(Vector buffer, int exponent); // contain a dot or a sign. It must not start with '0', and must not be empty. float Strtof(Vector buffer, int exponent); +// For special use cases, the heart of the Strtod() function is also available +// separately, it assumes that 'trimmed' is as produced by TrimAndCut(), i.e. +// no leading or trailing zeros, also no lone zero, and not 'too many' digits. +double StrtodTrimmed(Vector trimmed, int exponent); + } // namespace double_conversion // ICU PATCH: Close ICU namespace diff --git a/source/i18n/double-conversion-utils.h b/source/i18n/double-conversion-utils.h index 1e44fca..0992984 100644 --- a/source/i18n/double-conversion-utils.h +++ b/source/i18n/double-conversion-utils.h @@ -42,10 +42,12 @@ // ICU PATCH: Use U_ASSERT instead of #include "uassert.h" -#define ASSERT U_ASSERT - -#ifndef UNIMPLEMENTED -#define UNIMPLEMENTED() (abort()) +#ifndef DOUBLE_CONVERSION_ASSERT +#define DOUBLE_CONVERSION_ASSERT(condition) \ + U_ASSERT(condition); +#endif +#ifndef DOUBLE_CONVERSION_UNIMPLEMENTED +#define DOUBLE_CONVERSION_UNIMPLEMENTED() (abort()) #endif #ifndef DOUBLE_CONVERSION_NO_RETURN #ifdef _MSC_VER @@ -54,16 +56,23 @@ #define DOUBLE_CONVERSION_NO_RETURN __attribute__((noreturn)) #endif #endif -#ifndef UNREACHABLE +#ifndef DOUBLE_CONVERSION_UNREACHABLE #ifdef _MSC_VER void DOUBLE_CONVERSION_NO_RETURN abort_noreturn(); inline void abort_noreturn() { abort(); } -#define UNREACHABLE() (abort_noreturn()) +#define DOUBLE_CONVERSION_UNREACHABLE() (abort_noreturn()) #else -#define UNREACHABLE() (abort()) +#define DOUBLE_CONVERSION_UNREACHABLE() (abort()) #endif #endif +#ifndef DOUBLE_CONVERSION_UNUSED +#ifdef __GNUC__ +#define DOUBLE_CONVERSION_UNUSED __attribute__((unused)) +#else +#define DOUBLE_CONVERSION_UNUSED +#endif +#endif // Double operations detection based on target architecture. // Linux uses a 80bit wide floating point stack on x86. This induces double @@ -99,9 +108,9 @@ int main(int argc, char** argv) { defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \ defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ defined(__SH4__) || defined(__alpha__) || \ - defined(_MIPS_ARCH_MIPS32R2) || \ + defined(_MIPS_ARCH_MIPS32R2) || defined(__ARMEB__) ||\ defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \ - defined(__riscv) || \ + defined(__riscv) || defined(__e2k__) || \ defined(__or1k__) || defined(__arc__) || \ defined(__EMSCRIPTEN__) #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 @@ -141,24 +150,24 @@ typedef uint16_t uc16; // The following macro works on both 32 and 64-bit platforms. // Usage: instead of writing 0x1234567890123456 -// write UINT64_2PART_C(0x12345678,90123456); -#define UINT64_2PART_C(a, b) (((static_cast(a) << 32) + 0x##b##u)) +// write DOUBLE_CONVERSION_UINT64_2PART_C(0x12345678,90123456); +#define DOUBLE_CONVERSION_UINT64_2PART_C(a, b) (((static_cast(a) << 32) + 0x##b##u)) -// The expression ARRAY_SIZE(a) is a compile-time constant of type +// The expression DOUBLE_CONVERSION_ARRAY_SIZE(a) is a compile-time constant of type // size_t which represents the number of elements of the given -// array. You should only use ARRAY_SIZE on statically allocated +// array. You should only use DOUBLE_CONVERSION_ARRAY_SIZE on statically allocated // arrays. -#ifndef ARRAY_SIZE -#define ARRAY_SIZE(a) \ +#ifndef DOUBLE_CONVERSION_ARRAY_SIZE +#define DOUBLE_CONVERSION_ARRAY_SIZE(a) \ ((sizeof(a) / sizeof(*(a))) / \ static_cast(!(sizeof(a) % sizeof(*(a))))) #endif // A macro to disallow the evil copy constructor and operator= functions // This should be used in the private: declarations for a class -#ifndef DC_DISALLOW_COPY_AND_ASSIGN -#define DC_DISALLOW_COPY_AND_ASSIGN(TypeName) \ +#ifndef DOUBLE_CONVERSION_DISALLOW_COPY_AND_ASSIGN +#define DOUBLE_CONVERSION_DISALLOW_COPY_AND_ASSIGN(TypeName) \ TypeName(const TypeName&); \ void operator=(const TypeName&) #endif @@ -169,10 +178,10 @@ typedef uint16_t uc16; // This should be used in the private: declarations for a class // that wants to prevent anyone from instantiating it. This is // especially useful for classes containing only static methods. -#ifndef DC_DISALLOW_IMPLICIT_CONSTRUCTORS -#define DC_DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \ +#ifndef DOUBLE_CONVERSION_DISALLOW_IMPLICIT_CONSTRUCTORS +#define DOUBLE_CONVERSION_DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \ TypeName(); \ - DC_DISALLOW_COPY_AND_ASSIGN(TypeName) + DOUBLE_CONVERSION_DISALLOW_COPY_AND_ASSIGN(TypeName) #endif // ICU PATCH: Wrap in ICU namespace @@ -180,25 +189,9 @@ U_NAMESPACE_BEGIN namespace double_conversion { -static const int kCharSize = sizeof(char); - -// Returns the maximum of the two parameters. -template -static T Max(T a, T b) { - return a < b ? b : a; -} - - -// Returns the minimum of the two parameters. -template -static T Min(T a, T b) { - return a < b ? a : b; -} - - inline int StrLength(const char* string) { size_t length = strlen(string); - ASSERT(length == static_cast(static_cast(length))); + DOUBLE_CONVERSION_ASSERT(length == static_cast(static_cast(length))); return static_cast(length); } @@ -208,15 +201,15 @@ class Vector { public: Vector() : start_(NULL), length_(0) {} Vector(T* data, int len) : start_(data), length_(len) { - ASSERT(len == 0 || (len > 0 && data != NULL)); + DOUBLE_CONVERSION_ASSERT(len == 0 || (len > 0 && data != NULL)); } // Returns a vector using the same backing storage as this one, // spanning from and including 'from', to but not including 'to'. Vector SubVector(int from, int to) { - ASSERT(to <= length_); - ASSERT(from < to); - ASSERT(0 <= from); + DOUBLE_CONVERSION_ASSERT(to <= length_); + DOUBLE_CONVERSION_ASSERT(from < to); + DOUBLE_CONVERSION_ASSERT(0 <= from); return Vector(start() + from, to - from); } @@ -231,7 +224,7 @@ class Vector { // Access individual vector elements - checks bounds in debug mode. T& operator[](int index) const { - ASSERT(0 <= index && index < length_); + DOUBLE_CONVERSION_ASSERT(0 <= index && index < length_); return start_[index]; } @@ -239,6 +232,11 @@ class Vector { T& last() { return start_[length_ - 1]; } + void pop_back() { + DOUBLE_CONVERSION_ASSERT(!is_empty()); + --length_; + } + private: T* start_; int length_; @@ -259,7 +257,7 @@ class StringBuilder { // Get the current position in the builder. int position() const { - ASSERT(!is_finalized()); + DOUBLE_CONVERSION_ASSERT(!is_finalized()); return position_; } @@ -270,8 +268,8 @@ class StringBuilder { // 0-characters; use the Finalize() method to terminate the string // instead. void AddCharacter(char c) { - ASSERT(c != '\0'); - ASSERT(!is_finalized() && position_ < buffer_.length()); + DOUBLE_CONVERSION_ASSERT(c != '\0'); + DOUBLE_CONVERSION_ASSERT(!is_finalized() && position_ < buffer_.length()); buffer_[position_++] = c; } @@ -284,9 +282,9 @@ class StringBuilder { // Add the first 'n' characters of the given string 's' to the // builder. The input string must have enough characters. void AddSubstring(const char* s, int n) { - ASSERT(!is_finalized() && position_ + n < buffer_.length()); - ASSERT(static_cast(n) <= strlen(s)); - memmove(&buffer_[position_], s, n * kCharSize); + DOUBLE_CONVERSION_ASSERT(!is_finalized() && position_ + n < buffer_.length()); + DOUBLE_CONVERSION_ASSERT(static_cast(n) <= strlen(s)); + memmove(&buffer_[position_], s, n); position_ += n; } @@ -301,13 +299,13 @@ class StringBuilder { // Finalize the string by 0-terminating it and returning the buffer. char* Finalize() { - ASSERT(!is_finalized() && position_ < buffer_.length()); + DOUBLE_CONVERSION_ASSERT(!is_finalized() && position_ < buffer_.length()); buffer_[position_] = '\0'; // Make sure nobody managed to add a 0-character to the // buffer while building the string. - ASSERT(strlen(buffer_.start()) == static_cast(position_)); + DOUBLE_CONVERSION_ASSERT(strlen(buffer_.start()) == static_cast(position_)); position_ = -1; - ASSERT(is_finalized()); + DOUBLE_CONVERSION_ASSERT(is_finalized()); return buffer_.start(); } @@ -317,7 +315,7 @@ class StringBuilder { bool is_finalized() const { return position_ < 0; } - DC_DISALLOW_IMPLICIT_CONSTRUCTORS(StringBuilder); + DOUBLE_CONVERSION_DISALLOW_IMPLICIT_CONSTRUCTORS(StringBuilder); }; // The type-based aliasing rule allows the compiler to assume that pointers of @@ -345,13 +343,14 @@ class StringBuilder { // enough that it can no longer see that you have cast one pointer type to // another thus avoiding the warning. template -inline Dest BitCast(const Source& source) { +Dest BitCast(const Source& source) { // Compile time assertion: sizeof(Dest) == sizeof(Source) // A compile error here means your Dest and Source have different sizes. #if __cplusplus >= 201103L static_assert(sizeof(Dest) == sizeof(Source), "source and destination size mismatch"); #else + DOUBLE_CONVERSION_UNUSED typedef char VerifySizesAreEqual[sizeof(Dest) == sizeof(Source) ? 1 : -1]; #endif @@ -361,7 +360,7 @@ inline Dest BitCast(const Source& source) { } template -inline Dest BitCast(Source* source) { +Dest BitCast(Source* source) { return BitCast(reinterpret_cast(source)); } diff --git a/source/i18n/double-conversion.h b/source/i18n/double-conversion.h index 377c710..eddc387 100644 --- a/source/i18n/double-conversion.h +++ b/source/i18n/double-conversion.h @@ -39,561 +39,8 @@ // ICU PATCH: Customize header file paths for ICU. -#include "double-conversion-utils.h" - -// ICU PATCH: Wrap in ICU namespace -U_NAMESPACE_BEGIN - -namespace double_conversion { - -class DoubleToStringConverter { - public: -#if 0 // not needed for ICU - // When calling ToFixed with a double > 10^kMaxFixedDigitsBeforePoint - // or a requested_digits parameter > kMaxFixedDigitsAfterPoint then the - // function returns false. - static const int kMaxFixedDigitsBeforePoint = 60; - static const int kMaxFixedDigitsAfterPoint = 60; - - // When calling ToExponential with a requested_digits - // parameter > kMaxExponentialDigits then the function returns false. - static const int kMaxExponentialDigits = 120; - - // When calling ToPrecision with a requested_digits - // parameter < kMinPrecisionDigits or requested_digits > kMaxPrecisionDigits - // then the function returns false. - static const int kMinPrecisionDigits = 1; - static const int kMaxPrecisionDigits = 120; - - enum Flags { - NO_FLAGS = 0, - EMIT_POSITIVE_EXPONENT_SIGN = 1, - EMIT_TRAILING_DECIMAL_POINT = 2, - EMIT_TRAILING_ZERO_AFTER_POINT = 4, - UNIQUE_ZERO = 8 - }; - - // Flags should be a bit-or combination of the possible Flags-enum. - // - NO_FLAGS: no special flags. - // - EMIT_POSITIVE_EXPONENT_SIGN: when the number is converted into exponent - // form, emits a '+' for positive exponents. Example: 1.2e+2. - // - EMIT_TRAILING_DECIMAL_POINT: when the input number is an integer and is - // converted into decimal format then a trailing decimal point is appended. - // Example: 2345.0 is converted to "2345.". - // - EMIT_TRAILING_ZERO_AFTER_POINT: in addition to a trailing decimal point - // emits a trailing '0'-character. This flag requires the - // EXMIT_TRAILING_DECIMAL_POINT flag. - // Example: 2345.0 is converted to "2345.0". - // - UNIQUE_ZERO: "-0.0" is converted to "0.0". - // - // Infinity symbol and nan_symbol provide the string representation for these - // special values. If the string is NULL and the special value is encountered - // then the conversion functions return false. - // - // The exponent_character is used in exponential representations. It is - // usually 'e' or 'E'. - // - // When converting to the shortest representation the converter will - // represent input numbers in decimal format if they are in the interval - // [10^decimal_in_shortest_low; 10^decimal_in_shortest_high[ - // (lower boundary included, greater boundary excluded). - // Example: with decimal_in_shortest_low = -6 and - // decimal_in_shortest_high = 21: - // ToShortest(0.000001) -> "0.000001" - // ToShortest(0.0000001) -> "1e-7" - // ToShortest(111111111111111111111.0) -> "111111111111111110000" - // ToShortest(100000000000000000000.0) -> "100000000000000000000" - // ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" - // - // When converting to precision mode the converter may add - // max_leading_padding_zeroes before returning the number in exponential - // format. - // Example with max_leading_padding_zeroes_in_precision_mode = 6. - // ToPrecision(0.0000012345, 2) -> "0.0000012" - // ToPrecision(0.00000012345, 2) -> "1.2e-7" - // Similarily the converter may add up to - // max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid - // returning an exponential representation. A zero added by the - // EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. - // Examples for max_trailing_padding_zeroes_in_precision_mode = 1: - // ToPrecision(230.0, 2) -> "230" - // ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. - // ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. - DoubleToStringConverter(int flags, - const char* infinity_symbol, - const char* nan_symbol, - char exponent_character, - int decimal_in_shortest_low, - int decimal_in_shortest_high, - int max_leading_padding_zeroes_in_precision_mode, - int max_trailing_padding_zeroes_in_precision_mode) - : flags_(flags), - infinity_symbol_(infinity_symbol), - nan_symbol_(nan_symbol), - exponent_character_(exponent_character), - decimal_in_shortest_low_(decimal_in_shortest_low), - decimal_in_shortest_high_(decimal_in_shortest_high), - max_leading_padding_zeroes_in_precision_mode_( - max_leading_padding_zeroes_in_precision_mode), - max_trailing_padding_zeroes_in_precision_mode_( - max_trailing_padding_zeroes_in_precision_mode) { - // When 'trailing zero after the point' is set, then 'trailing point' - // must be set too. - ASSERT(((flags & EMIT_TRAILING_DECIMAL_POINT) != 0) || - !((flags & EMIT_TRAILING_ZERO_AFTER_POINT) != 0)); - } - - // Returns a converter following the EcmaScript specification. - static const DoubleToStringConverter& EcmaScriptConverter(); - - // Computes the shortest string of digits that correctly represent the input - // number. Depending on decimal_in_shortest_low and decimal_in_shortest_high - // (see constructor) it then either returns a decimal representation, or an - // exponential representation. - // Example with decimal_in_shortest_low = -6, - // decimal_in_shortest_high = 21, - // EMIT_POSITIVE_EXPONENT_SIGN activated, and - // EMIT_TRAILING_DECIMAL_POINT deactived: - // ToShortest(0.000001) -> "0.000001" - // ToShortest(0.0000001) -> "1e-7" - // ToShortest(111111111111111111111.0) -> "111111111111111110000" - // ToShortest(100000000000000000000.0) -> "100000000000000000000" - // ToShortest(1111111111111111111111.0) -> "1.1111111111111111e+21" - // - // Note: the conversion may round the output if the returned string - // is accurate enough to uniquely identify the input-number. - // For example the most precise representation of the double 9e59 equals - // "899999999999999918767229449717619953810131273674690656206848", but - // the converter will return the shorter (but still correct) "9e59". - // - // Returns true if the conversion succeeds. The conversion always succeeds - // except when the input value is special and no infinity_symbol or - // nan_symbol has been given to the constructor. - bool ToShortest(double value, StringBuilder* result_builder) const { - return ToShortestIeeeNumber(value, result_builder, SHORTEST); - } - - // Same as ToShortest, but for single-precision floats. - bool ToShortestSingle(float value, StringBuilder* result_builder) const { - return ToShortestIeeeNumber(value, result_builder, SHORTEST_SINGLE); - } - - - // Computes a decimal representation with a fixed number of digits after the - // decimal point. The last emitted digit is rounded. - // - // Examples: - // ToFixed(3.12, 1) -> "3.1" - // ToFixed(3.1415, 3) -> "3.142" - // ToFixed(1234.56789, 4) -> "1234.5679" - // ToFixed(1.23, 5) -> "1.23000" - // ToFixed(0.1, 4) -> "0.1000" - // ToFixed(1e30, 2) -> "1000000000000000019884624838656.00" - // ToFixed(0.1, 30) -> "0.100000000000000005551115123126" - // ToFixed(0.1, 17) -> "0.10000000000000001" - // - // If requested_digits equals 0, then the tail of the result depends on - // the EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT. - // Examples, for requested_digits == 0, - // let EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT be - // - false and false: then 123.45 -> 123 - // 0.678 -> 1 - // - true and false: then 123.45 -> 123. - // 0.678 -> 1. - // - true and true: then 123.45 -> 123.0 - // 0.678 -> 1.0 - // - // Returns true if the conversion succeeds. The conversion always succeeds - // except for the following cases: - // - the input value is special and no infinity_symbol or nan_symbol has - // been provided to the constructor, - // - 'value' > 10^kMaxFixedDigitsBeforePoint, or - // - 'requested_digits' > kMaxFixedDigitsAfterPoint. - // The last two conditions imply that the result will never contain more than - // 1 + kMaxFixedDigitsBeforePoint + 1 + kMaxFixedDigitsAfterPoint characters - // (one additional character for the sign, and one for the decimal point). - bool ToFixed(double value, - int requested_digits, - StringBuilder* result_builder) const; - - // Computes a representation in exponential format with requested_digits - // after the decimal point. The last emitted digit is rounded. - // If requested_digits equals -1, then the shortest exponential representation - // is computed. - // - // Examples with EMIT_POSITIVE_EXPONENT_SIGN deactivated, and - // exponent_character set to 'e'. - // ToExponential(3.12, 1) -> "3.1e0" - // ToExponential(5.0, 3) -> "5.000e0" - // ToExponential(0.001, 2) -> "1.00e-3" - // ToExponential(3.1415, -1) -> "3.1415e0" - // ToExponential(3.1415, 4) -> "3.1415e0" - // ToExponential(3.1415, 3) -> "3.142e0" - // ToExponential(123456789000000, 3) -> "1.235e14" - // ToExponential(1000000000000000019884624838656.0, -1) -> "1e30" - // ToExponential(1000000000000000019884624838656.0, 32) -> - // "1.00000000000000001988462483865600e30" - // ToExponential(1234, 0) -> "1e3" - // - // Returns true if the conversion succeeds. The conversion always succeeds - // except for the following cases: - // - the input value is special and no infinity_symbol or nan_symbol has - // been provided to the constructor, - // - 'requested_digits' > kMaxExponentialDigits. - // The last condition implies that the result will never contain more than - // kMaxExponentialDigits + 8 characters (the sign, the digit before the - // decimal point, the decimal point, the exponent character, the - // exponent's sign, and at most 3 exponent digits). - bool ToExponential(double value, - int requested_digits, - StringBuilder* result_builder) const; - - // Computes 'precision' leading digits of the given 'value' and returns them - // either in exponential or decimal format, depending on - // max_{leading|trailing}_padding_zeroes_in_precision_mode (given to the - // constructor). - // The last computed digit is rounded. - // - // Example with max_leading_padding_zeroes_in_precision_mode = 6. - // ToPrecision(0.0000012345, 2) -> "0.0000012" - // ToPrecision(0.00000012345, 2) -> "1.2e-7" - // Similarily the converter may add up to - // max_trailing_padding_zeroes_in_precision_mode in precision mode to avoid - // returning an exponential representation. A zero added by the - // EMIT_TRAILING_ZERO_AFTER_POINT flag is counted for this limit. - // Examples for max_trailing_padding_zeroes_in_precision_mode = 1: - // ToPrecision(230.0, 2) -> "230" - // ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT. - // ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT. - // Examples for max_trailing_padding_zeroes_in_precision_mode = 3, and no - // EMIT_TRAILING_ZERO_AFTER_POINT: - // ToPrecision(123450.0, 6) -> "123450" - // ToPrecision(123450.0, 5) -> "123450" - // ToPrecision(123450.0, 4) -> "123500" - // ToPrecision(123450.0, 3) -> "123000" - // ToPrecision(123450.0, 2) -> "1.2e5" - // - // Returns true if the conversion succeeds. The conversion always succeeds - // except for the following cases: - // - the input value is special and no infinity_symbol or nan_symbol has - // been provided to the constructor, - // - precision < kMinPericisionDigits - // - precision > kMaxPrecisionDigits - // The last condition implies that the result will never contain more than - // kMaxPrecisionDigits + 7 characters (the sign, the decimal point, the - // exponent character, the exponent's sign, and at most 3 exponent digits). - bool ToPrecision(double value, - int precision, - StringBuilder* result_builder) const; -#endif // not needed for ICU - - enum DtoaMode { - // Produce the shortest correct representation. - // For example the output of 0.299999999999999988897 is (the less accurate - // but correct) 0.3. - SHORTEST, - // Same as SHORTEST, but for single-precision floats. - SHORTEST_SINGLE, - // Produce a fixed number of digits after the decimal point. - // For instance fixed(0.1, 4) becomes 0.1000 - // If the input number is big, the output will be big. - FIXED, - // Fixed number of digits (independent of the decimal point). - PRECISION - }; - - // The maximal number of digits that are needed to emit a double in base 10. - // A higher precision can be achieved by using more digits, but the shortest - // accurate representation of any double will never use more digits than - // kBase10MaximalLength. - // Note that DoubleToAscii null-terminates its input. So the given buffer - // should be at least kBase10MaximalLength + 1 characters long. - static const int kBase10MaximalLength = 17; - - // Converts the given double 'v' to digit characters. 'v' must not be NaN, - // +Infinity, or -Infinity. In SHORTEST_SINGLE-mode this restriction also - // applies to 'v' after it has been casted to a single-precision float. That - // is, in this mode static_cast(v) must not be NaN, +Infinity or - // -Infinity. - // - // The result should be interpreted as buffer * 10^(point-length). - // - // The digits are written to the buffer in the platform's charset, which is - // often UTF-8 (with ASCII-range digits) but may be another charset, such - // as EBCDIC. - // - // The output depends on the given mode: - // - SHORTEST: produce the least amount of digits for which the internal - // identity requirement is still satisfied. If the digits are printed - // (together with the correct exponent) then reading this number will give - // 'v' again. The buffer will choose the representation that is closest to - // 'v'. If there are two at the same distance, than the one farther away - // from 0 is chosen (halfway cases - ending with 5 - are rounded up). - // In this mode the 'requested_digits' parameter is ignored. - // - SHORTEST_SINGLE: same as SHORTEST but with single-precision. - // - FIXED: produces digits necessary to print a given number with - // 'requested_digits' digits after the decimal point. The produced digits - // might be too short in which case the caller has to fill the remainder - // with '0's. - // Example: toFixed(0.001, 5) is allowed to return buffer="1", point=-2. - // Halfway cases are rounded towards +/-Infinity (away from 0). The call - // toFixed(0.15, 2) thus returns buffer="2", point=0. - // The returned buffer may contain digits that would be truncated from the - // shortest representation of the input. - // - PRECISION: produces 'requested_digits' where the first digit is not '0'. - // Even though the length of produced digits usually equals - // 'requested_digits', the function is allowed to return fewer digits, in - // which case the caller has to fill the missing digits with '0's. - // Halfway cases are again rounded away from 0. - // DoubleToAscii expects the given buffer to be big enough to hold all - // digits and a terminating null-character. In SHORTEST-mode it expects a - // buffer of at least kBase10MaximalLength + 1. In all other modes the - // requested_digits parameter and the padding-zeroes limit the size of the - // output. Don't forget the decimal point, the exponent character and the - // terminating null-character when computing the maximal output size. - // The given length is only used in debug mode to ensure the buffer is big - // enough. - // ICU PATCH: Export this as U_I18N_API for unit tests. - static void U_I18N_API DoubleToAscii(double v, - DtoaMode mode, - int requested_digits, - char* buffer, - int buffer_length, - bool* sign, - int* length, - int* point); - -#if 0 // not needed for ICU - private: - // Implementation for ToShortest and ToShortestSingle. - bool ToShortestIeeeNumber(double value, - StringBuilder* result_builder, - DtoaMode mode) const; - - // If the value is a special value (NaN or Infinity) constructs the - // corresponding string using the configured infinity/nan-symbol. - // If either of them is NULL or the value is not special then the - // function returns false. - bool HandleSpecialValues(double value, StringBuilder* result_builder) const; - // Constructs an exponential representation (i.e. 1.234e56). - // The given exponent assumes a decimal point after the first decimal digit. - void CreateExponentialRepresentation(const char* decimal_digits, - int length, - int exponent, - StringBuilder* result_builder) const; - // Creates a decimal representation (i.e 1234.5678). - void CreateDecimalRepresentation(const char* decimal_digits, - int length, - int decimal_point, - int digits_after_point, - StringBuilder* result_builder) const; - - const int flags_; - const char* const infinity_symbol_; - const char* const nan_symbol_; - const char exponent_character_; - const int decimal_in_shortest_low_; - const int decimal_in_shortest_high_; - const int max_leading_padding_zeroes_in_precision_mode_; - const int max_trailing_padding_zeroes_in_precision_mode_; -#endif // not needed for ICU - - DC_DISALLOW_IMPLICIT_CONSTRUCTORS(DoubleToStringConverter); -}; - - -class StringToDoubleConverter { - public: - // Enumeration for allowing octals and ignoring junk when converting - // strings to numbers. - enum Flags { - NO_FLAGS = 0, - ALLOW_HEX = 1, - ALLOW_OCTALS = 2, - ALLOW_TRAILING_JUNK = 4, - ALLOW_LEADING_SPACES = 8, - ALLOW_TRAILING_SPACES = 16, - ALLOW_SPACES_AFTER_SIGN = 32, - ALLOW_CASE_INSENSIBILITY = 64, - ALLOW_HEX_FLOATS = 128, - }; - - static const uc16 kNoSeparator = '\0'; - - // Flags should be a bit-or combination of the possible Flags-enum. - // - NO_FLAGS: no special flags. - // - ALLOW_HEX: recognizes the prefix "0x". Hex numbers may only be integers. - // Ex: StringToDouble("0x1234") -> 4660.0 - // In StringToDouble("0x1234.56") the characters ".56" are trailing - // junk. The result of the call is hence dependent on - // the ALLOW_TRAILING_JUNK flag and/or the junk value. - // With this flag "0x" is a junk-string. Even with ALLOW_TRAILING_JUNK, - // the string will not be parsed as "0" followed by junk. - // - // - ALLOW_OCTALS: recognizes the prefix "0" for octals: - // If a sequence of octal digits starts with '0', then the number is - // read as octal integer. Octal numbers may only be integers. - // Ex: StringToDouble("01234") -> 668.0 - // StringToDouble("012349") -> 12349.0 // Not a sequence of octal - // // digits. - // In StringToDouble("01234.56") the characters ".56" are trailing - // junk. The result of the call is hence dependent on - // the ALLOW_TRAILING_JUNK flag and/or the junk value. - // In StringToDouble("01234e56") the characters "e56" are trailing - // junk, too. - // - ALLOW_TRAILING_JUNK: ignore trailing characters that are not part of - // a double literal. - // - ALLOW_LEADING_SPACES: skip over leading whitespace, including spaces, - // new-lines, and tabs. - // - ALLOW_TRAILING_SPACES: ignore trailing whitespace. - // - ALLOW_SPACES_AFTER_SIGN: ignore whitespace after the sign. - // Ex: StringToDouble("- 123.2") -> -123.2. - // StringToDouble("+ 123.2") -> 123.2 - // - ALLOW_CASE_INSENSIBILITY: ignore case of characters for special values: - // infinity and nan. - // - ALLOW_HEX_FLOATS: allows hexadecimal float literals. - // This *must* start with "0x" and separate the exponent with "p". - // Examples: 0x1.2p3 == 9.0 - // 0x10.1p0 == 16.0625 - // ALLOW_HEX and ALLOW_HEX_FLOATS are indendent. - // - // empty_string_value is returned when an empty string is given as input. - // If ALLOW_LEADING_SPACES or ALLOW_TRAILING_SPACES are set, then a string - // containing only spaces is converted to the 'empty_string_value', too. - // - // junk_string_value is returned when - // a) ALLOW_TRAILING_JUNK is not set, and a junk character (a character not - // part of a double-literal) is found. - // b) ALLOW_TRAILING_JUNK is set, but the string does not start with a - // double literal. - // - // infinity_symbol and nan_symbol are strings that are used to detect - // inputs that represent infinity and NaN. They can be null, in which case - // they are ignored. - // The conversion routine first reads any possible signs. Then it compares the - // following character of the input-string with the first character of - // the infinity, and nan-symbol. If either matches, the function assumes, that - // a match has been found, and expects the following input characters to match - // the remaining characters of the special-value symbol. - // This means that the following restrictions apply to special-value symbols: - // - they must not start with signs ('+', or '-'), - // - they must not have the same first character. - // - they must not start with digits. - // - // If the separator character is not kNoSeparator, then that specific - // character is ignored when in between two valid digits of the significant. - // It is not allowed to appear in the exponent. - // It is not allowed to lead or trail the number. - // It is not allowed to appear twice next to each other. - // - // Examples: - // flags = ALLOW_HEX | ALLOW_TRAILING_JUNK, - // empty_string_value = 0.0, - // junk_string_value = NaN, - // infinity_symbol = "infinity", - // nan_symbol = "nan": - // StringToDouble("0x1234") -> 4660.0. - // StringToDouble("0x1234K") -> 4660.0. - // StringToDouble("") -> 0.0 // empty_string_value. - // StringToDouble(" ") -> NaN // junk_string_value. - // StringToDouble(" 1") -> NaN // junk_string_value. - // StringToDouble("0x") -> NaN // junk_string_value. - // StringToDouble("-123.45") -> -123.45. - // StringToDouble("--123.45") -> NaN // junk_string_value. - // StringToDouble("123e45") -> 123e45. - // StringToDouble("123E45") -> 123e45. - // StringToDouble("123e+45") -> 123e45. - // StringToDouble("123E-45") -> 123e-45. - // StringToDouble("123e") -> 123.0 // trailing junk ignored. - // StringToDouble("123e-") -> 123.0 // trailing junk ignored. - // StringToDouble("+NaN") -> NaN // NaN string literal. - // StringToDouble("-infinity") -> -inf. // infinity literal. - // StringToDouble("Infinity") -> NaN // junk_string_value. - // - // flags = ALLOW_OCTAL | ALLOW_LEADING_SPACES, - // empty_string_value = 0.0, - // junk_string_value = NaN, - // infinity_symbol = NULL, - // nan_symbol = NULL: - // StringToDouble("0x1234") -> NaN // junk_string_value. - // StringToDouble("01234") -> 668.0. - // StringToDouble("") -> 0.0 // empty_string_value. - // StringToDouble(" ") -> 0.0 // empty_string_value. - // StringToDouble(" 1") -> 1.0 - // StringToDouble("0x") -> NaN // junk_string_value. - // StringToDouble("0123e45") -> NaN // junk_string_value. - // StringToDouble("01239E45") -> 1239e45. - // StringToDouble("-infinity") -> NaN // junk_string_value. - // StringToDouble("NaN") -> NaN // junk_string_value. - // - // flags = NO_FLAGS, - // separator = ' ': - // StringToDouble("1 2 3 4") -> 1234.0 - // StringToDouble("1 2") -> NaN // junk_string_value - // StringToDouble("1 000 000.0") -> 1000000.0 - // StringToDouble("1.000 000") -> 1.0 - // StringToDouble("1.0e1 000") -> NaN // junk_string_value - StringToDoubleConverter(int flags, - double empty_string_value, - double junk_string_value, - const char* infinity_symbol, - const char* nan_symbol, - uc16 separator = kNoSeparator) - : flags_(flags), - empty_string_value_(empty_string_value), - junk_string_value_(junk_string_value), - infinity_symbol_(infinity_symbol), - nan_symbol_(nan_symbol), - separator_(separator) { - } - - // Performs the conversion. - // The output parameter 'processed_characters_count' is set to the number - // of characters that have been processed to read the number. - // Spaces than are processed with ALLOW_{LEADING|TRAILING}_SPACES are included - // in the 'processed_characters_count'. Trailing junk is never included. - double StringToDouble(const char* buffer, - int length, - int* processed_characters_count) const; - - // Same as StringToDouble above but for 16 bit characters. - double StringToDouble(const uc16* buffer, - int length, - int* processed_characters_count) const; - - // Same as StringToDouble but reads a float. - // Note that this is not equivalent to static_cast(StringToDouble(...)) - // due to potential double-rounding. - float StringToFloat(const char* buffer, - int length, - int* processed_characters_count) const; - - // Same as StringToFloat above but for 16 bit characters. - float StringToFloat(const uc16* buffer, - int length, - int* processed_characters_count) const; - - private: - const int flags_; - const double empty_string_value_; - const double junk_string_value_; - const char* const infinity_symbol_; - const char* const nan_symbol_; - const uc16 separator_; - - template - double StringToIeee(Iterator start_pointer, - int length, - bool read_as_double, - int* processed_characters_count) const; - - DC_DISALLOW_IMPLICIT_CONSTRUCTORS(StringToDoubleConverter); -}; - -} // namespace double_conversion - -// ICU PATCH: Close ICU namespace -U_NAMESPACE_END +#include "double-conversion-string-to-double.h" +#include "double-conversion-double-to-string.h" #endif // DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_ #endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING diff --git a/source/i18n/dtfmtsym.cpp b/source/i18n/dtfmtsym.cpp index 42cf5c5..690f6a4 100644 --- a/source/i18n/dtfmtsym.cpp +++ b/source/i18n/dtfmtsym.cpp @@ -1246,7 +1246,7 @@ const UnicodeString** DateFormatSymbols::getZoneStrings(int32_t& rowCount, int32_t& columnCount) const { const UnicodeString **result = NULL; - static UMutex LOCK = U_MUTEX_INITIALIZER; + static UMutex LOCK; umtx_lock(&LOCK); if (fZoneStrings == NULL) { @@ -2177,16 +2177,16 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError // The ordering of the following statements is important. if (fLeapMonthPatterns[kLeapMonthPatternFormatAbbrev].isEmpty()) { fLeapMonthPatterns[kLeapMonthPatternFormatAbbrev].setTo(fLeapMonthPatterns[kLeapMonthPatternFormatWide]); - }; + } if (fLeapMonthPatterns[kLeapMonthPatternFormatNarrow].isEmpty()) { fLeapMonthPatterns[kLeapMonthPatternFormatNarrow].setTo(fLeapMonthPatterns[kLeapMonthPatternStandaloneNarrow]); - }; + } if (fLeapMonthPatterns[kLeapMonthPatternStandaloneWide].isEmpty()) { fLeapMonthPatterns[kLeapMonthPatternStandaloneWide].setTo(fLeapMonthPatterns[kLeapMonthPatternFormatWide]); - }; + } if (fLeapMonthPatterns[kLeapMonthPatternStandaloneAbbrev].isEmpty()) { fLeapMonthPatterns[kLeapMonthPatternStandaloneAbbrev].setTo(fLeapMonthPatterns[kLeapMonthPatternFormatAbbrev]); - }; + } // end of hack fLeapMonthPatternsCount = kMonthPatternsCount; } else { @@ -2338,11 +2338,21 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError assignArray(fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount, fShortMonths, fShortMonthsCount); } - // Load AM/PM markers + // Load AM/PM markers; if wide or narrow not available, use short + UErrorCode ampmStatus = U_ZERO_ERROR; initField(&fAmPms, fAmPmsCount, calendarSink, - buildResourcePath(path, gAmPmMarkersTag, status), status); + buildResourcePath(path, gAmPmMarkersTag, ampmStatus), ampmStatus); + if (U_FAILURE(ampmStatus)) { + initField(&fAmPms, fAmPmsCount, calendarSink, + buildResourcePath(path, gAmPmMarkersAbbrTag, status), status); + } + ampmStatus = U_ZERO_ERROR; initField(&fNarrowAmPms, fNarrowAmPmsCount, calendarSink, - buildResourcePath(path, gAmPmMarkersNarrowTag, status), status); + buildResourcePath(path, gAmPmMarkersNarrowTag, ampmStatus), ampmStatus); + if (U_FAILURE(ampmStatus)) { + initField(&fNarrowAmPms, fNarrowAmPmsCount, calendarSink, + buildResourcePath(path, gAmPmMarkersAbbrTag, status), status); + } // Load quarters initField(&fQuarters, fQuartersCount, calendarSink, diff --git a/source/i18n/dtitv_impl.h b/source/i18n/dtitv_impl.h index 36fa173..c7addf3 100644 --- a/source/i18n/dtitv_impl.h +++ b/source/i18n/dtitv_impl.h @@ -88,7 +88,7 @@ #define MAX_E_COUNT 5 #define MAX_M_COUNT 5 //#define MAX_INTERVAL_INDEX 4 -#define MAX_POSITIVE_INT 56632; +#define MAX_POSITIVE_INT 56632 #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/i18n/dtitvfmt.cpp b/source/i18n/dtitvfmt.cpp index 0e124f5..f47e770 100644 --- a/source/i18n/dtitvfmt.cpp +++ b/source/i18n/dtitvfmt.cpp @@ -82,10 +82,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(DateIntervalFormat) // Mutex, protects access to fDateFormat, fFromCalendar and fToCalendar. // Needed because these data members are modified by const methods of DateIntervalFormat. -static UMutex *gFormatterMutex() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static UMutex gFormatterMutex; DateIntervalFormat* U_EXPORT2 DateIntervalFormat::createInstance(const UnicodeString& skeleton, @@ -171,9 +168,9 @@ DateIntervalFormat::operator=(const DateIntervalFormat& itvfmt) { delete fTimePattern; delete fDateTimeFormat; { - Mutex lock(gFormatterMutex()); + Mutex lock(&gFormatterMutex); if ( itvfmt.fDateFormat ) { - fDateFormat = (SimpleDateFormat*)itvfmt.fDateFormat->clone(); + fDateFormat = itvfmt.fDateFormat->clone(); } else { fDateFormat = NULL; } @@ -199,9 +196,9 @@ DateIntervalFormat::operator=(const DateIntervalFormat& itvfmt) { fIntervalPatterns[i] = itvfmt.fIntervalPatterns[i]; } fLocale = itvfmt.fLocale; - fDatePattern = (itvfmt.fDatePattern)? (UnicodeString*)itvfmt.fDatePattern->clone(): NULL; - fTimePattern = (itvfmt.fTimePattern)? (UnicodeString*)itvfmt.fTimePattern->clone(): NULL; - fDateTimeFormat = (itvfmt.fDateTimeFormat)? (UnicodeString*)itvfmt.fDateTimeFormat->clone(): NULL; + fDatePattern = (itvfmt.fDatePattern)? itvfmt.fDatePattern->clone(): NULL; + fTimePattern = (itvfmt.fTimePattern)? itvfmt.fTimePattern->clone(): NULL; + fDateTimeFormat = (itvfmt.fDateTimeFormat)? itvfmt.fDateTimeFormat->clone(): NULL; } return *this; } @@ -218,8 +215,8 @@ DateIntervalFormat::~DateIntervalFormat() { } -Format* -DateIntervalFormat::clone(void) const { +DateIntervalFormat* +DateIntervalFormat::clone() const { return new DateIntervalFormat(*this); } @@ -233,7 +230,7 @@ DateIntervalFormat::operator==(const Format& other) const { if ((fInfo != fmt->fInfo) && (fInfo == NULL || fmt->fInfo == NULL)) {return FALSE;} if (fInfo && fmt->fInfo && (*fInfo != *fmt->fInfo )) {return FALSE;} { - Mutex lock(gFormatterMutex()); + Mutex lock(&gFormatterMutex); if (fDateFormat != fmt->fDateFormat && (fDateFormat == NULL || fmt->fDateFormat == NULL)) {return FALSE;} if (fDateFormat && fmt->fDateFormat && (*fDateFormat != *fmt->fDateFormat)) {return FALSE;} } @@ -295,7 +292,7 @@ DateIntervalFormat::format(const DateInterval* dtInterval, handler.setAcceptFirstOnly(TRUE); int8_t ignore; - Mutex lock(gFormatterMutex()); + Mutex lock(&gFormatterMutex); return formatIntervalImpl(*dtInterval, appendTo, ignore, handler, status); } @@ -312,7 +309,7 @@ FormattedDateInterval DateIntervalFormat::formatToValue( auto handler = result->getHandler(status); handler.setCategory(UFIELD_CATEGORY_DATE); { - Mutex lock(gFormatterMutex()); + Mutex lock(&gFormatterMutex); formatIntervalImpl(dtInterval, string, firstIndex, handler, status); } handler.getError(status); @@ -344,7 +341,7 @@ DateIntervalFormat::format(Calendar& fromCalendar, handler.setAcceptFirstOnly(TRUE); int8_t ignore; - Mutex lock(gFormatterMutex()); + Mutex lock(&gFormatterMutex); return formatImpl(fromCalendar, toCalendar, appendTo, ignore, handler, status); } @@ -362,7 +359,7 @@ FormattedDateInterval DateIntervalFormat::formatToValue( auto handler = result->getHandler(status); handler.setCategory(UFIELD_CATEGORY_DATE); { - Mutex lock(gFormatterMutex()); + Mutex lock(&gFormatterMutex); formatImpl(fromCalendar, toCalendar, string, firstIndex, handler, status); } handler.getError(status); @@ -600,7 +597,7 @@ const TimeZone& DateIntervalFormat::getTimeZone() const { if (fDateFormat != NULL) { - Mutex lock(gFormatterMutex()); + Mutex lock(&gFormatterMutex); return fDateFormat->getTimeZone(); } // If fDateFormat is NULL (unexpected), create default timezone. diff --git a/source/i18n/dtitvinf.cpp b/source/i18n/dtitvinf.cpp index c0a6980..35ee8c1 100644 --- a/source/i18n/dtitvinf.cpp +++ b/source/i18n/dtitvinf.cpp @@ -42,7 +42,9 @@ U_NAMESPACE_BEGIN #ifdef DTITVINF_DEBUG -#define PRINTMESG(msg) { std::cout << "(" << __FILE__ << ":" << __LINE__ << ") " << msg << "\n"; } +#define PRINTMESG(msg) UPRV_BLOCK_MACRO_BEGIN { \ + std::cout << "(" << __FILE__ << ":" << __LINE__ << ") " << msg << "\n"; \ +} UPRV_BLOCK_MACRO_END #endif UOBJECT_DEFINE_RTTI_IMPLEMENTATION(DateIntervalInfo) diff --git a/source/i18n/dtptngen.cpp b/source/i18n/dtptngen.cpp index fcc5977..c5f8618 100644 --- a/source/i18n/dtptngen.cpp +++ b/source/i18n/dtptngen.cpp @@ -28,6 +28,7 @@ #include "unicode/ures.h" #include "unicode/ustring.h" #include "unicode/rep.h" +#include "unicode/region.h" #include "cpputils.h" #include "mutex.h" #include "umutex.h" @@ -613,29 +614,56 @@ U_CFUNC void U_CALLCONV DateTimePatternGenerator::loadAllowedHourFormatsData(UEr ures_getAllItemsWithFallback(rb.getAlias(), "timeData", sink, status); } -void DateTimePatternGenerator::getAllowedHourFormats(const Locale &locale, UErrorCode &status) { - if (U_FAILURE(status)) { return; } - Locale maxLocale(locale); - maxLocale.addLikelySubtags(status); - if (U_FAILURE(status)) { - return; - } - - const char *country = maxLocale.getCountry(); - if (*country == '\0') { country = "001"; } - const char *language = maxLocale.getLanguage(); - +static int32_t* getAllowedHourFormatsLangCountry(const char* language, const char* country, UErrorCode& status) { CharString langCountry; - langCountry.append(language, static_cast(uprv_strlen(language)), status); + langCountry.append(language, status); langCountry.append('_', status); - langCountry.append(country, static_cast(uprv_strlen(country)), status); + langCountry.append(country, status); - int32_t *allowedFormats; + int32_t* allowedFormats; allowedFormats = (int32_t *)uhash_get(localeToAllowedHourFormatsMap, langCountry.data()); if (allowedFormats == nullptr) { allowedFormats = (int32_t *)uhash_get(localeToAllowedHourFormatsMap, const_cast(country)); } + return allowedFormats; +} + +void DateTimePatternGenerator::getAllowedHourFormats(const Locale &locale, UErrorCode &status) { + if (U_FAILURE(status)) { return; } + + const char *language = locale.getLanguage(); + const char *country = locale.getCountry(); + Locale maxLocale; // must be here for correct lifetime + if (*language == '\0' || *country == '\0') { + maxLocale = locale; + UErrorCode localStatus = U_ZERO_ERROR; + maxLocale.addLikelySubtags(localStatus); + if (U_SUCCESS(localStatus)) { + language = maxLocale.getLanguage(); + country = maxLocale.getCountry(); + } + } + if (*language == '\0') { + // Unexpected, but fail gracefully + language = "und"; + } + if (*country == '\0') { + country = "001"; + } + + int32_t* allowedFormats = getAllowedHourFormatsLangCountry(language, country, status); + + // Check if the region has an alias + if (allowedFormats == nullptr) { + UErrorCode localStatus = U_ZERO_ERROR; + const Region* region = Region::getInstance(country, localStatus); + if (U_SUCCESS(localStatus)) { + country = region->getRegionCode(); // the real region code + allowedFormats = getAllowedHourFormatsLangCountry(language, country, status); + } + } + if (allowedFormats != nullptr) { // Lookup is successful // Here allowedFormats points to a list consisting of key for preferredFormat, // followed by one or more keys for allowedFormats, then followed by ALLOWED_HOUR_FORMAT_UNKNOWN. @@ -787,6 +815,7 @@ void DateTimePatternGenerator::getCalendarTypeToUse(const Locale& locale, CharString& destination, UErrorCode& err) { destination.clear().append(DT_DateTimeGregorianTag, -1, err); // initial default if ( U_SUCCESS(err) ) { + UErrorCode localStatus = U_ZERO_ERROR; char localeWithCalendarKey[ULOC_LOCALE_IDENTIFIER_CAPACITY]; // obtain a locale that always has the calendar key value that should be used ures_getFunctionalEquivalent( @@ -798,8 +827,7 @@ DateTimePatternGenerator::getCalendarTypeToUse(const Locale& locale, CharString& locale.getName(), nullptr, FALSE, - &err); - if (U_FAILURE(err)) { return; } + &localStatus); localeWithCalendarKey[ULOC_LOCALE_IDENTIFIER_CAPACITY-1] = 0; // ensure null termination // now get the calendar key value from that locale char calendarType[ULOC_KEYWORDS_CAPACITY]; @@ -808,13 +836,17 @@ DateTimePatternGenerator::getCalendarTypeToUse(const Locale& locale, CharString& "calendar", calendarType, ULOC_KEYWORDS_CAPACITY, - &err); - if (U_FAILURE(err)) { return; } + &localStatus); + // If the input locale was invalid, don't fail with missing resource error, instead + // continue with default of Gregorian. + if (U_FAILURE(localStatus) && localStatus != U_MISSING_RESOURCE_ERROR) { + err = localStatus; + return; + } if (calendarTypeLen < ULOC_KEYWORDS_CAPACITY) { destination.clear().append(calendarType, -1, err); if (U_FAILURE(err)) { return; } } - err = U_ZERO_ERROR; } } @@ -2543,7 +2575,8 @@ UChar SkeletonFields::getFirstChar() const { } -PtnSkeleton::PtnSkeleton() { +PtnSkeleton::PtnSkeleton() + : addedDefaultDayPeriod(FALSE) { } PtnSkeleton::PtnSkeleton(const PtnSkeleton& other) { @@ -2554,6 +2587,7 @@ void PtnSkeleton::copyFrom(const PtnSkeleton& other) { uprv_memcpy(type, other.type, sizeof(type)); original.copyFrom(other.original); baseOriginal.copyFrom(other.baseOriginal); + addedDefaultDayPeriod = other.addedDefaultDayPeriod; } void PtnSkeleton::clear() { diff --git a/source/i18n/esctrn.cpp b/source/i18n/esctrn.cpp index 900bed7..ba0e4c2 100644 --- a/source/i18n/esctrn.cpp +++ b/source/i18n/esctrn.cpp @@ -122,7 +122,7 @@ EscapeTransliterator::~EscapeTransliterator() { /** * Transliterator API. */ -Transliterator* EscapeTransliterator::clone() const { +EscapeTransliterator* EscapeTransliterator::clone() const { return new EscapeTransliterator(*this); } diff --git a/source/i18n/esctrn.h b/source/i18n/esctrn.h index 60ecc74..2a2c6dc 100644 --- a/source/i18n/esctrn.h +++ b/source/i18n/esctrn.h @@ -115,7 +115,7 @@ class EscapeTransliterator : public Transliterator { /** * Transliterator API. */ - virtual Transliterator* clone() const; + virtual EscapeTransliterator* clone() const; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. diff --git a/source/i18n/ethpccal.cpp b/source/i18n/ethpccal.cpp index 995dd6a..7c7c0ba 100644 --- a/source/i18n/ethpccal.cpp +++ b/source/i18n/ethpccal.cpp @@ -46,7 +46,7 @@ EthiopicCalendar::~EthiopicCalendar() { } -Calendar* +EthiopicCalendar* EthiopicCalendar::clone() const { return new EthiopicCalendar(*this); diff --git a/source/i18n/ethpccal.h b/source/i18n/ethpccal.h index acd7c3c..d1e8f42 100644 --- a/source/i18n/ethpccal.h +++ b/source/i18n/ethpccal.h @@ -141,7 +141,7 @@ public: * @return return a polymorphic copy of this calendar. * @internal */ - virtual Calendar* clone() const; + virtual EthiopicCalendar* clone() const; /** * return the calendar type, "ethiopic" diff --git a/source/i18n/fmtable.cpp b/source/i18n/fmtable.cpp index d813424..dbfd3c2 100644 --- a/source/i18n/fmtable.cpp +++ b/source/i18n/fmtable.cpp @@ -736,7 +736,7 @@ CharString *Formattable::internalGetCharString(UErrorCode &status) { fDecimalStr->append("Infinity", status); } else if (fDecimalQuantity->isNaN()) { fDecimalStr->append("NaN", status); - } else if (fDecimalQuantity->isZero()) { + } else if (fDecimalQuantity->isZeroish()) { fDecimalStr->append("0", -1, status); } else if (fType==kLong || fType==kInt64 || // use toPlainString for integer types (fDecimalQuantity->getMagnitude() != INT32_MIN && std::abs(fDecimalQuantity->getMagnitude()) < 5)) { diff --git a/source/i18n/number_stringbuilder.cpp b/source/i18n/formatted_string_builder.cpp similarity index 58% rename from source/i18n/number_stringbuilder.cpp rename to source/i18n/formatted_string_builder.cpp index 03300b3..3024bff 100644 --- a/source/i18n/number_stringbuilder.cpp +++ b/source/i18n/formatted_string_builder.cpp @@ -5,14 +5,9 @@ #if !UCONFIG_NO_FORMATTING -#include "number_stringbuilder.h" -#include "static_unicode_sets.h" +#include "formatted_string_builder.h" +#include "unicode/ustring.h" #include "unicode/utf16.h" -#include "number_utils.h" - -using namespace icu; -using namespace icu::number; -using namespace icu::number::impl; namespace { @@ -34,7 +29,10 @@ inline void uprv_memmove2(void* dest, const void* src, size_t len) { } // namespace -NumberStringBuilder::NumberStringBuilder() { + +U_NAMESPACE_BEGIN + +FormattedStringBuilder::FormattedStringBuilder() { #if U_DEBUG // Initializing the memory to non-zero helps catch some bugs that involve // reading from an improperly terminated string. @@ -44,18 +42,18 @@ NumberStringBuilder::NumberStringBuilder() { #endif } -NumberStringBuilder::~NumberStringBuilder() { +FormattedStringBuilder::~FormattedStringBuilder() { if (fUsingHeap) { uprv_free(fChars.heap.ptr); uprv_free(fFields.heap.ptr); } } -NumberStringBuilder::NumberStringBuilder(const NumberStringBuilder &other) { +FormattedStringBuilder::FormattedStringBuilder(const FormattedStringBuilder &other) { *this = other; } -NumberStringBuilder &NumberStringBuilder::operator=(const NumberStringBuilder &other) { +FormattedStringBuilder &FormattedStringBuilder::operator=(const FormattedStringBuilder &other) { // Check for self-assignment if (this == &other) { return *this; @@ -78,7 +76,7 @@ NumberStringBuilder &NumberStringBuilder::operator=(const NumberStringBuilder &o // UErrorCode is not available; fail silently. uprv_free(newChars); uprv_free(newFields); - *this = NumberStringBuilder(); // can't fail + *this = FormattedStringBuilder(); // can't fail return *this; } @@ -97,15 +95,15 @@ NumberStringBuilder &NumberStringBuilder::operator=(const NumberStringBuilder &o return *this; } -int32_t NumberStringBuilder::length() const { +int32_t FormattedStringBuilder::length() const { return fLength; } -int32_t NumberStringBuilder::codePointCount() const { +int32_t FormattedStringBuilder::codePointCount() const { return u_countChar32(getCharPtr() + fZero, fLength); } -UChar32 NumberStringBuilder::getFirstCodePoint() const { +UChar32 FormattedStringBuilder::getFirstCodePoint() const { if (fLength == 0) { return -1; } @@ -114,7 +112,7 @@ UChar32 NumberStringBuilder::getFirstCodePoint() const { return cp; } -UChar32 NumberStringBuilder::getLastCodePoint() const { +UChar32 FormattedStringBuilder::getLastCodePoint() const { if (fLength == 0) { return -1; } @@ -125,13 +123,13 @@ UChar32 NumberStringBuilder::getLastCodePoint() const { return cp; } -UChar32 NumberStringBuilder::codePointAt(int32_t index) const { +UChar32 FormattedStringBuilder::codePointAt(int32_t index) const { UChar32 cp; U16_GET(getCharPtr() + fZero, 0, index, fLength, cp); return cp; } -UChar32 NumberStringBuilder::codePointBefore(int32_t index) const { +UChar32 FormattedStringBuilder::codePointBefore(int32_t index) const { int32_t offset = index; U16_BACK_1(getCharPtr() + fZero, 0, offset); UChar32 cp; @@ -139,19 +137,15 @@ UChar32 NumberStringBuilder::codePointBefore(int32_t index) const { return cp; } -NumberStringBuilder &NumberStringBuilder::clear() { +FormattedStringBuilder &FormattedStringBuilder::clear() { // TODO: Reset the heap here? fZero = getCapacity() / 2; fLength = 0; return *this; } -int32_t NumberStringBuilder::appendCodePoint(UChar32 codePoint, Field field, UErrorCode &status) { - return insertCodePoint(fLength, codePoint, field, status); -} - int32_t -NumberStringBuilder::insertCodePoint(int32_t index, UChar32 codePoint, Field field, UErrorCode &status) { +FormattedStringBuilder::insertCodePoint(int32_t index, UChar32 codePoint, Field field, UErrorCode &status) { int32_t count = U16_LENGTH(codePoint); int32_t position = prepareForInsert(index, count, status); if (U_FAILURE(status)) { @@ -168,11 +162,7 @@ NumberStringBuilder::insertCodePoint(int32_t index, UChar32 codePoint, Field fie return count; } -int32_t NumberStringBuilder::append(const UnicodeString &unistr, Field field, UErrorCode &status) { - return insert(fLength, unistr, field, status); -} - -int32_t NumberStringBuilder::insert(int32_t index, const UnicodeString &unistr, Field field, +int32_t FormattedStringBuilder::insert(int32_t index, const UnicodeString &unistr, Field field, UErrorCode &status) { if (unistr.length() == 0) { // Nothing to insert. @@ -186,7 +176,7 @@ int32_t NumberStringBuilder::insert(int32_t index, const UnicodeString &unistr, } int32_t -NumberStringBuilder::insert(int32_t index, const UnicodeString &unistr, int32_t start, int32_t end, +FormattedStringBuilder::insert(int32_t index, const UnicodeString &unistr, int32_t start, int32_t end, Field field, UErrorCode &status) { int32_t count = end - start; int32_t position = prepareForInsert(index, count, status); @@ -201,7 +191,7 @@ NumberStringBuilder::insert(int32_t index, const UnicodeString &unistr, int32_t } int32_t -NumberStringBuilder::splice(int32_t startThis, int32_t endThis, const UnicodeString &unistr, +FormattedStringBuilder::splice(int32_t startThis, int32_t endThis, const UnicodeString &unistr, int32_t startOther, int32_t endOther, Field field, UErrorCode& status) { int32_t thisLength = endThis - startThis; int32_t otherLength = endOther - startOther; @@ -224,12 +214,12 @@ NumberStringBuilder::splice(int32_t startThis, int32_t endThis, const UnicodeSt return count; } -int32_t NumberStringBuilder::append(const NumberStringBuilder &other, UErrorCode &status) { +int32_t FormattedStringBuilder::append(const FormattedStringBuilder &other, UErrorCode &status) { return insert(fLength, other, status); } int32_t -NumberStringBuilder::insert(int32_t index, const NumberStringBuilder &other, UErrorCode &status) { +FormattedStringBuilder::insert(int32_t index, const FormattedStringBuilder &other, UErrorCode &status) { if (this == &other) { status = U_ILLEGAL_ARGUMENT_ERROR; return 0; @@ -250,7 +240,7 @@ NumberStringBuilder::insert(int32_t index, const NumberStringBuilder &other, UEr return count; } -void NumberStringBuilder::writeTerminator(UErrorCode& status) { +void FormattedStringBuilder::writeTerminator(UErrorCode& status) { int32_t position = prepareForInsert(fLength, 1, status); if (U_FAILURE(status)) { return; @@ -260,7 +250,7 @@ void NumberStringBuilder::writeTerminator(UErrorCode& status) { fLength--; } -int32_t NumberStringBuilder::prepareForInsert(int32_t index, int32_t count, UErrorCode &status) { +int32_t FormattedStringBuilder::prepareForInsert(int32_t index, int32_t count, UErrorCode &status) { U_ASSERT(index >= 0); U_ASSERT(index <= fLength); U_ASSERT(count >= 0); @@ -279,7 +269,7 @@ int32_t NumberStringBuilder::prepareForInsert(int32_t index, int32_t count, UErr } } -int32_t NumberStringBuilder::prepareForInsertHelper(int32_t index, int32_t count, UErrorCode &status) { +int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t count, UErrorCode &status) { int32_t oldCapacity = getCapacity(); int32_t oldZero = fZero; char16_t *oldChars = getCharPtr(); @@ -342,7 +332,7 @@ int32_t NumberStringBuilder::prepareForInsertHelper(int32_t index, int32_t count return fZero + index; } -int32_t NumberStringBuilder::remove(int32_t index, int32_t count) { +int32_t FormattedStringBuilder::remove(int32_t index, int32_t count) { // TODO: Reset the heap here? (If the string after removal can fit on stack?) int32_t position = index + fZero; uprv_memmove2(getCharPtr() + position, @@ -355,18 +345,18 @@ int32_t NumberStringBuilder::remove(int32_t index, int32_t count) { return position; } -UnicodeString NumberStringBuilder::toUnicodeString() const { +UnicodeString FormattedStringBuilder::toUnicodeString() const { return UnicodeString(getCharPtr() + fZero, fLength); } -const UnicodeString NumberStringBuilder::toTempUnicodeString() const { +const UnicodeString FormattedStringBuilder::toTempUnicodeString() const { // Readonly-alias constructor: return UnicodeString(FALSE, getCharPtr() + fZero, fLength); } -UnicodeString NumberStringBuilder::toDebugString() const { +UnicodeString FormattedStringBuilder::toDebugString() const { UnicodeString sb; - sb.append(u"= UNUM_FIELD_COUNT) { - status = U_ILLEGAL_ARGUMENT_ERROR; - return FALSE; - } - - ConstrainedFieldPosition cfpos; - cfpos.constrainField(UFIELD_CATEGORY_NUMBER, rawField); - cfpos.setState(UFIELD_CATEGORY_NUMBER, rawField, fp.getBeginIndex(), fp.getEndIndex()); - if (nextPosition(cfpos, 0, status)) { - fp.setBeginIndex(cfpos.getStart()); - fp.setEndIndex(cfpos.getLimit()); - return true; - } - - // Special case: fraction should start after integer if fraction is not present - if (rawField == UNUM_FRACTION_FIELD && fp.getEndIndex() == 0) { - bool inside = false; - int32_t i = fZero; - for (; i < fZero + fLength; i++) { - if (isIntOrGroup(getFieldPtr()[i]) || getFieldPtr()[i] == UNUM_DECIMAL_SEPARATOR_FIELD) { - inside = true; - } else if (inside) { - break; - } - } - fp.setBeginIndex(i - fZero); - fp.setEndIndex(i - fZero); - } - - return false; -} - -void NumberStringBuilder::getAllFieldPositions(FieldPositionIteratorHandler& fpih, - UErrorCode& status) const { - ConstrainedFieldPosition cfpos; - while (nextPosition(cfpos, 0, status)) { - fpih.addAttribute(cfpos.getField(), cfpos.getStart(), cfpos.getLimit()); - } -} - -// Signal the end of the string using a field that doesn't exist and that is -// different from UNUM_FIELD_COUNT, which is used for "null number field". -static constexpr Field kEndField = 0xff; - -bool NumberStringBuilder::nextPosition(ConstrainedFieldPosition& cfpos, Field numericField, UErrorCode& /*status*/) const { - auto numericCAF = NumFieldUtils::expand(numericField); - int32_t fieldStart = -1; - Field currField = UNUM_FIELD_COUNT; - for (int32_t i = fZero + cfpos.getLimit(); i <= fZero + fLength; i++) { - Field _field = (i < fZero + fLength) ? getFieldPtr()[i] : kEndField; - // Case 1: currently scanning a field. - if (currField != UNUM_FIELD_COUNT) { - if (currField != _field) { - int32_t end = i - fZero; - // Grouping separators can be whitespace; don't throw them out! - if (currField != UNUM_GROUPING_SEPARATOR_FIELD) { - end = trimBack(i - fZero); - } - if (end <= fieldStart) { - // Entire field position is ignorable; skip. - fieldStart = -1; - currField = UNUM_FIELD_COUNT; - i--; // look at this index again - continue; - } - int32_t start = fieldStart; - if (currField != UNUM_GROUPING_SEPARATOR_FIELD) { - start = trimFront(start); - } - auto caf = NumFieldUtils::expand(currField); - cfpos.setState(caf.category, caf.field, start, end); - return true; - } - continue; - } - // Special case: coalesce the INTEGER if we are pointing at the end of the INTEGER. - if (cfpos.matchesField(UFIELD_CATEGORY_NUMBER, UNUM_INTEGER_FIELD) - && i > fZero - // don't return the same field twice in a row: - && i - fZero > cfpos.getLimit() - && isIntOrGroup(getFieldPtr()[i - 1]) - && !isIntOrGroup(_field)) { - int j = i - 1; - for (; j >= fZero && isIntOrGroup(getFieldPtr()[j]); j--) {} - cfpos.setState(UFIELD_CATEGORY_NUMBER, UNUM_INTEGER_FIELD, j - fZero + 1, i - fZero); - return true; - } - // Special case: coalesce NUMERIC if we are pointing at the end of the NUMERIC. - if (numericField != 0 - && cfpos.matchesField(numericCAF.category, numericCAF.field) - && i > fZero - // don't return the same field twice in a row: - && (i - fZero > cfpos.getLimit() - || cfpos.getCategory() != numericCAF.category - || cfpos.getField() != numericCAF.field) - && isNumericField(getFieldPtr()[i - 1]) - && !isNumericField(_field)) { - int j = i - 1; - for (; j >= fZero && isNumericField(getFieldPtr()[j]); j--) {} - cfpos.setState(numericCAF.category, numericCAF.field, j - fZero + 1, i - fZero); - return true; - } - // Special case: skip over INTEGER; will be coalesced later. - if (_field == UNUM_INTEGER_FIELD) { - _field = UNUM_FIELD_COUNT; - } - // Case 2: no field starting at this position. - if (_field == UNUM_FIELD_COUNT || _field == kEndField) { - continue; - } - // Case 3: check for field starting at this position - auto caf = NumFieldUtils::expand(_field); - if (cfpos.matchesField(caf.category, caf.field)) { - fieldStart = i - fZero; - currField = _field; - } - } - - U_ASSERT(currField == UNUM_FIELD_COUNT); - return false; -} - -bool NumberStringBuilder::containsField(Field field) const { +bool FormattedStringBuilder::containsField(Field field) const { for (int32_t i = 0; i < fLength; i++) { if (field == fieldAt(i)) { return true; @@ -573,27 +434,6 @@ bool NumberStringBuilder::containsField(Field field) const { return false; } -bool NumberStringBuilder::isIntOrGroup(Field field) { - return field == UNUM_INTEGER_FIELD - || field == UNUM_GROUPING_SEPARATOR_FIELD; -} - -bool NumberStringBuilder::isNumericField(Field field) { - return NumFieldUtils::isNumericField(field); -} - -int32_t NumberStringBuilder::trimBack(int32_t limit) const { - return unisets::get(unisets::DEFAULT_IGNORABLES)->spanBack( - getCharPtr() + fZero, - limit, - USET_SPAN_CONTAINED); -} - -int32_t NumberStringBuilder::trimFront(int32_t start) const { - return start + unisets::get(unisets::DEFAULT_IGNORABLES)->span( - getCharPtr() + fZero + start, - fLength - start, - USET_SPAN_CONTAINED); -} +U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/i18n/formatted_string_builder.h b/source/i18n/formatted_string_builder.h new file mode 100644 index 0000000..2949ae7 --- /dev/null +++ b/source/i18n/formatted_string_builder.h @@ -0,0 +1,253 @@ +// © 2017 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html + +#include "unicode/utypes.h" + +#if !UCONFIG_NO_FORMATTING +#ifndef __NUMBER_STRINGBUILDER_H__ +#define __NUMBER_STRINGBUILDER_H__ + + +#include +#include "unicode/unum.h" // for UNUM_FIELD_COUNT +#include "cstring.h" +#include "uassert.h" +#include "fphdlimp.h" + +U_NAMESPACE_BEGIN + +class FormattedValueStringBuilderImpl; + +/** + * A StringBuilder optimized for formatting. It implements the following key + * features beyond a UnicodeString: + * + *
      + *
    1. Efficient prepend as well as append. + *
    2. Keeps tracks of Fields in an efficient manner. + *
    + * + * See also FormattedValueStringBuilderImpl. + * + * @author sffc (Shane Carr) + */ +class U_I18N_API FormattedStringBuilder : public UMemory { + private: + static const int32_t DEFAULT_CAPACITY = 40; + + template + union ValueOrHeapArray { + T value[DEFAULT_CAPACITY]; + struct { + T *ptr; + int32_t capacity; + } heap; + }; + + public: + FormattedStringBuilder(); + + ~FormattedStringBuilder(); + + FormattedStringBuilder(const FormattedStringBuilder &other); + + // Convention: bottom 4 bits for field, top 4 bits for field category. + // Field category 0 implies the number category so that the number field + // literals can be directly passed as a Field type. + // See the helper functions in "StringBuilderFieldUtils" below. + typedef uint8_t Field; + + FormattedStringBuilder &operator=(const FormattedStringBuilder &other); + + int32_t length() const; + + int32_t codePointCount() const; + + inline char16_t charAt(int32_t index) const { + U_ASSERT(index >= 0); + U_ASSERT(index < fLength); + return getCharPtr()[fZero + index]; + } + + inline Field fieldAt(int32_t index) const { + U_ASSERT(index >= 0); + U_ASSERT(index < fLength); + return getFieldPtr()[fZero + index]; + } + + UChar32 getFirstCodePoint() const; + + UChar32 getLastCodePoint() const; + + UChar32 codePointAt(int32_t index) const; + + UChar32 codePointBefore(int32_t index) const; + + FormattedStringBuilder &clear(); + + /** Appends a UTF-16 code unit. */ + inline int32_t appendChar16(char16_t codeUnit, Field field, UErrorCode& status) { + // appendCodePoint handles both code units and code points. + return insertCodePoint(fLength, codeUnit, field, status); + } + + /** Inserts a UTF-16 code unit. Note: insert at index 0 is very efficient. */ + inline int32_t insertChar16(int32_t index, char16_t codeUnit, Field field, UErrorCode& status) { + // insertCodePoint handles both code units and code points. + return insertCodePoint(index, codeUnit, field, status); + } + + /** Appends a Unicode code point. */ + inline int32_t appendCodePoint(UChar32 codePoint, Field field, UErrorCode &status) { + return insertCodePoint(fLength, codePoint, field, status); + } + + /** Inserts a Unicode code point. Note: insert at index 0 is very efficient. */ + int32_t insertCodePoint(int32_t index, UChar32 codePoint, Field field, UErrorCode &status); + + /** Appends a string. */ + inline int32_t append(const UnicodeString &unistr, Field field, UErrorCode &status) { + return insert(fLength, unistr, field, status); + } + + /** Inserts a string. Note: insert at index 0 is very efficient. */ + int32_t insert(int32_t index, const UnicodeString &unistr, Field field, UErrorCode &status); + + /** Inserts a substring. Note: insert at index 0 is very efficient. + * + * @param start Start index of the substring of unistr to be inserted. + * @param end End index of the substring of unistr to be inserted (exclusive). + */ + int32_t insert(int32_t index, const UnicodeString &unistr, int32_t start, int32_t end, Field field, + UErrorCode &status); + + /** Deletes a substring and then inserts a string at that same position. + * Similar to JavaScript Array.prototype.splice(). + * + * @param startThis Start of the span to delete. + * @param endThis End of the span to delete (exclusive). + * @param unistr The string to insert at the deletion position. + * @param startOther Start index of the substring of unistr to be inserted. + * @param endOther End index of the substring of unistr to be inserted (exclusive). + */ + int32_t splice(int32_t startThis, int32_t endThis, const UnicodeString &unistr, + int32_t startOther, int32_t endOther, Field field, UErrorCode& status); + + /** Appends a formatted string. */ + int32_t append(const FormattedStringBuilder &other, UErrorCode &status); + + /** Inserts a formatted string. Note: insert at index 0 is very efficient. */ + int32_t insert(int32_t index, const FormattedStringBuilder &other, UErrorCode &status); + + /** + * Ensures that the string buffer contains a NUL terminator. The NUL terminator does + * not count toward the string length. Any further changes to the string (insert or + * append) may invalidate the NUL terminator. + * + * You should call this method after the formatted string is completely built if you + * plan to return a pointer to the string from a C API. + */ + void writeTerminator(UErrorCode& status); + + /** + * Gets a "safe" UnicodeString that can be used even after the FormattedStringBuilder is destructed. + */ + UnicodeString toUnicodeString() const; + + /** + * Gets an "unsafe" UnicodeString that is valid only as long as the FormattedStringBuilder is alive and + * unchanged. Slightly faster than toUnicodeString(). + */ + const UnicodeString toTempUnicodeString() const; + + UnicodeString toDebugString() const; + + const char16_t *chars() const; + + bool contentEquals(const FormattedStringBuilder &other) const; + + bool containsField(Field field) const; + + private: + bool fUsingHeap = false; + ValueOrHeapArray fChars; + ValueOrHeapArray fFields; + int32_t fZero = DEFAULT_CAPACITY / 2; + int32_t fLength = 0; + + inline char16_t *getCharPtr() { + return fUsingHeap ? fChars.heap.ptr : fChars.value; + } + + inline const char16_t *getCharPtr() const { + return fUsingHeap ? fChars.heap.ptr : fChars.value; + } + + inline Field *getFieldPtr() { + return fUsingHeap ? fFields.heap.ptr : fFields.value; + } + + inline const Field *getFieldPtr() const { + return fUsingHeap ? fFields.heap.ptr : fFields.value; + } + + inline int32_t getCapacity() const { + return fUsingHeap ? fChars.heap.capacity : DEFAULT_CAPACITY; + } + + int32_t prepareForInsert(int32_t index, int32_t count, UErrorCode &status); + + int32_t prepareForInsertHelper(int32_t index, int32_t count, UErrorCode &status); + + int32_t remove(int32_t index, int32_t count); + + friend class FormattedValueStringBuilderImpl; +}; + +/** + * Helper functions for dealing with the Field typedef, which stores fields + * in a compressed format. + */ +class StringBuilderFieldUtils { +public: + struct CategoryFieldPair { + int32_t category; + int32_t field; + }; + + /** Compile-time function to construct a Field from a category and a field */ + template + static constexpr FormattedStringBuilder::Field compress() { + static_assert(category != 0, "cannot use Undefined category in FieldUtils"); + static_assert(category <= 0xf, "only 4 bits for category"); + static_assert(field <= 0xf, "only 4 bits for field"); + return static_cast((category << 4) | field); + } + + /** Runtime inline function to unpack the category and field from the Field */ + static inline CategoryFieldPair expand(FormattedStringBuilder::Field field) { + if (field == UNUM_FIELD_COUNT) { + return {UFIELD_CATEGORY_UNDEFINED, 0}; + } + CategoryFieldPair ret = { + (field >> 4), + (field & 0xf) + }; + if (ret.category == 0) { + ret.category = UFIELD_CATEGORY_NUMBER; + } + return ret; + } + + static inline bool isNumericField(FormattedStringBuilder::Field field) { + int8_t category = field >> 4; + return category == 0 || category == UFIELD_CATEGORY_NUMBER; + } +}; + +U_NAMESPACE_END + + +#endif //__NUMBER_STRINGBUILDER_H__ + +#endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/i18n/formattedval_impl.h b/source/i18n/formattedval_impl.h index ee15ed9..9aab36a 100644 --- a/source/i18n/formattedval_impl.h +++ b/source/i18n/formattedval_impl.h @@ -18,7 +18,7 @@ #include "fphdlimp.h" #include "util.h" #include "uvectr32.h" -#include "number_stringbuilder.h" +#include "formatted_string_builder.h" /** @@ -67,7 +67,9 @@ typedef enum UCFPosConstraintType { U_NAMESPACE_BEGIN -/** Implementation using FieldPositionHandler to accept fields. */ +/** + * Implementation of FormattedValue using FieldPositionHandler to accept fields. + */ class FormattedValueFieldPositionIteratorImpl : public UMemory, public FormattedValue { public: @@ -112,12 +114,21 @@ private: }; -class FormattedValueNumberStringBuilderImpl : public UMemory, public FormattedValue { +/** + * Implementation of FormattedValue based on FormattedStringBuilder. + * + * The implementation currently revolves around numbers and number fields. + * However, it can be generalized in the future when there is a need. + * + * @author sffc (Shane Carr) + */ +// Exported as U_I18N_API for tests +class U_I18N_API FormattedValueStringBuilderImpl : public UMemory, public FormattedValue { public: - FormattedValueNumberStringBuilderImpl(number::impl::Field numericField); + FormattedValueStringBuilderImpl(FormattedStringBuilder::Field numericField); - virtual ~FormattedValueNumberStringBuilderImpl(); + virtual ~FormattedValueStringBuilderImpl(); // Implementation of FormattedValue (const): @@ -126,17 +137,25 @@ public: Appendable& appendTo(Appendable& appendable, UErrorCode& status) const U_OVERRIDE; UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE; - inline number::impl::NumberStringBuilder& getStringRef() { + // Additional helper functions: + UBool nextFieldPosition(FieldPosition& fp, UErrorCode& status) const; + void getAllFieldPositions(FieldPositionIteratorHandler& fpih, UErrorCode& status) const; + inline FormattedStringBuilder& getStringRef() { return fString; } - - inline const number::impl::NumberStringBuilder& getStringRef() const { + inline const FormattedStringBuilder& getStringRef() const { return fString; } private: - number::impl::NumberStringBuilder fString; - number::impl::Field fNumericField; + FormattedStringBuilder fString; + FormattedStringBuilder::Field fNumericField; + + bool nextPositionImpl(ConstrainedFieldPosition& cfpos, FormattedStringBuilder::Field numericField, UErrorCode& status) const; + static bool isIntOrGroup(FormattedStringBuilder::Field field); + static bool isNumericField(FormattedStringBuilder::Field field); + int32_t trimBack(int32_t limit) const; + int32_t trimFront(int32_t start) const; }; diff --git a/source/i18n/formattedval_sbimpl.cpp b/source/i18n/formattedval_sbimpl.cpp index 1fbecf2..ca28f22 100644 --- a/source/i18n/formattedval_sbimpl.cpp +++ b/source/i18n/formattedval_sbimpl.cpp @@ -9,35 +9,203 @@ // Other independent implementations should go into their own cpp file for // better dependency modularization. +#include "unicode/ustring.h" #include "formattedval_impl.h" +#include "number_types.h" +#include "formatted_string_builder.h" +#include "number_utils.h" +#include "static_unicode_sets.h" U_NAMESPACE_BEGIN -FormattedValueNumberStringBuilderImpl::FormattedValueNumberStringBuilderImpl(number::impl::Field numericField) +typedef FormattedStringBuilder::Field Field; + + +FormattedValueStringBuilderImpl::FormattedValueStringBuilderImpl(Field numericField) : fNumericField(numericField) { } -FormattedValueNumberStringBuilderImpl::~FormattedValueNumberStringBuilderImpl() { +FormattedValueStringBuilderImpl::~FormattedValueStringBuilderImpl() { } -UnicodeString FormattedValueNumberStringBuilderImpl::toString(UErrorCode&) const { +UnicodeString FormattedValueStringBuilderImpl::toString(UErrorCode&) const { return fString.toUnicodeString(); } -UnicodeString FormattedValueNumberStringBuilderImpl::toTempString(UErrorCode&) const { +UnicodeString FormattedValueStringBuilderImpl::toTempString(UErrorCode&) const { return fString.toTempUnicodeString(); } -Appendable& FormattedValueNumberStringBuilderImpl::appendTo(Appendable& appendable, UErrorCode&) const { +Appendable& FormattedValueStringBuilderImpl::appendTo(Appendable& appendable, UErrorCode&) const { appendable.appendString(fString.chars(), fString.length()); return appendable; } -UBool FormattedValueNumberStringBuilderImpl::nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const { +UBool FormattedValueStringBuilderImpl::nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const { // NOTE: MSVC sometimes complains when implicitly converting between bool and UBool - return fString.nextPosition(cfpos, fNumericField, status) ? TRUE : FALSE; + return nextPositionImpl(cfpos, fNumericField, status) ? TRUE : FALSE; +} + +UBool FormattedValueStringBuilderImpl::nextFieldPosition(FieldPosition& fp, UErrorCode& status) const { + int32_t rawField = fp.getField(); + + if (rawField == FieldPosition::DONT_CARE) { + return FALSE; + } + + if (rawField < 0 || rawField >= UNUM_FIELD_COUNT) { + status = U_ILLEGAL_ARGUMENT_ERROR; + return FALSE; + } + + ConstrainedFieldPosition cfpos; + cfpos.constrainField(UFIELD_CATEGORY_NUMBER, rawField); + cfpos.setState(UFIELD_CATEGORY_NUMBER, rawField, fp.getBeginIndex(), fp.getEndIndex()); + if (nextPositionImpl(cfpos, 0, status)) { + fp.setBeginIndex(cfpos.getStart()); + fp.setEndIndex(cfpos.getLimit()); + return TRUE; + } + + // Special case: fraction should start after integer if fraction is not present + if (rawField == UNUM_FRACTION_FIELD && fp.getEndIndex() == 0) { + bool inside = false; + int32_t i = fString.fZero; + for (; i < fString.fZero + fString.fLength; i++) { + if (isIntOrGroup(fString.getFieldPtr()[i]) || fString.getFieldPtr()[i] == UNUM_DECIMAL_SEPARATOR_FIELD) { + inside = true; + } else if (inside) { + break; + } + } + fp.setBeginIndex(i - fString.fZero); + fp.setEndIndex(i - fString.fZero); + } + + return FALSE; +} + +void FormattedValueStringBuilderImpl::getAllFieldPositions(FieldPositionIteratorHandler& fpih, + UErrorCode& status) const { + ConstrainedFieldPosition cfpos; + while (nextPositionImpl(cfpos, 0, status)) { + fpih.addAttribute(cfpos.getField(), cfpos.getStart(), cfpos.getLimit()); + } +} + +// Signal the end of the string using a field that doesn't exist and that is +// different from UNUM_FIELD_COUNT, which is used for "null number field". +static constexpr Field kEndField = 0xff; + +bool FormattedValueStringBuilderImpl::nextPositionImpl(ConstrainedFieldPosition& cfpos, Field numericField, UErrorCode& /*status*/) const { + auto numericCAF = StringBuilderFieldUtils::expand(numericField); + int32_t fieldStart = -1; + Field currField = UNUM_FIELD_COUNT; + for (int32_t i = fString.fZero + cfpos.getLimit(); i <= fString.fZero + fString.fLength; i++) { + Field _field = (i < fString.fZero + fString.fLength) ? fString.getFieldPtr()[i] : kEndField; + // Case 1: currently scanning a field. + if (currField != UNUM_FIELD_COUNT) { + if (currField != _field) { + int32_t end = i - fString.fZero; + // Grouping separators can be whitespace; don't throw them out! + if (currField != UNUM_GROUPING_SEPARATOR_FIELD) { + end = trimBack(i - fString.fZero); + } + if (end <= fieldStart) { + // Entire field position is ignorable; skip. + fieldStart = -1; + currField = UNUM_FIELD_COUNT; + i--; // look at this index again + continue; + } + int32_t start = fieldStart; + if (currField != UNUM_GROUPING_SEPARATOR_FIELD) { + start = trimFront(start); + } + auto caf = StringBuilderFieldUtils::expand(currField); + cfpos.setState(caf.category, caf.field, start, end); + return true; + } + continue; + } + // Special case: coalesce the INTEGER if we are pointing at the end of the INTEGER. + if (cfpos.matchesField(UFIELD_CATEGORY_NUMBER, UNUM_INTEGER_FIELD) + && i > fString.fZero + // don't return the same field twice in a row: + && i - fString.fZero > cfpos.getLimit() + && isIntOrGroup(fString.getFieldPtr()[i - 1]) + && !isIntOrGroup(_field)) { + int j = i - 1; + for (; j >= fString.fZero && isIntOrGroup(fString.getFieldPtr()[j]); j--) {} + cfpos.setState( + UFIELD_CATEGORY_NUMBER, + UNUM_INTEGER_FIELD, + j - fString.fZero + 1, + i - fString.fZero); + return true; + } + // Special case: coalesce NUMERIC if we are pointing at the end of the NUMERIC. + if (numericField != 0 + && cfpos.matchesField(numericCAF.category, numericCAF.field) + && i > fString.fZero + // don't return the same field twice in a row: + && (i - fString.fZero > cfpos.getLimit() + || cfpos.getCategory() != numericCAF.category + || cfpos.getField() != numericCAF.field) + && isNumericField(fString.getFieldPtr()[i - 1]) + && !isNumericField(_field)) { + int j = i - 1; + for (; j >= fString.fZero && isNumericField(fString.getFieldPtr()[j]); j--) {} + cfpos.setState( + numericCAF.category, + numericCAF.field, + j - fString.fZero + 1, + i - fString.fZero); + return true; + } + // Special case: skip over INTEGER; will be coalesced later. + if (_field == UNUM_INTEGER_FIELD) { + _field = UNUM_FIELD_COUNT; + } + // Case 2: no field starting at this position. + if (_field == UNUM_FIELD_COUNT || _field == kEndField) { + continue; + } + // Case 3: check for field starting at this position + auto caf = StringBuilderFieldUtils::expand(_field); + if (cfpos.matchesField(caf.category, caf.field)) { + fieldStart = i - fString.fZero; + currField = _field; + } + } + + U_ASSERT(currField == UNUM_FIELD_COUNT); + return false; +} + +bool FormattedValueStringBuilderImpl::isIntOrGroup(Field field) { + return field == UNUM_INTEGER_FIELD + || field == UNUM_GROUPING_SEPARATOR_FIELD; +} + +bool FormattedValueStringBuilderImpl::isNumericField(Field field) { + return StringBuilderFieldUtils::isNumericField(field); +} + +int32_t FormattedValueStringBuilderImpl::trimBack(int32_t limit) const { + return unisets::get(unisets::DEFAULT_IGNORABLES)->spanBack( + fString.getCharPtr() + fString.fZero, + limit, + USET_SPAN_CONTAINED); +} + +int32_t FormattedValueStringBuilderImpl::trimFront(int32_t start) const { + return start + unisets::get(unisets::DEFAULT_IGNORABLES)->span( + fString.getCharPtr() + fString.fZero + start, + fString.fLength - start, + USET_SPAN_CONTAINED); } diff --git a/source/i18n/funcrepl.cpp b/source/i18n/funcrepl.cpp index 01c8754..7dd54ed 100644 --- a/source/i18n/funcrepl.cpp +++ b/source/i18n/funcrepl.cpp @@ -59,7 +59,7 @@ FunctionReplacer::~FunctionReplacer() { /** * Implement UnicodeFunctor */ -UnicodeFunctor* FunctionReplacer::clone() const { +FunctionReplacer* FunctionReplacer::clone() const { return new FunctionReplacer(*this); } diff --git a/source/i18n/funcrepl.h b/source/i18n/funcrepl.h index a835d5b..fe41f6c 100644 --- a/source/i18n/funcrepl.h +++ b/source/i18n/funcrepl.h @@ -70,7 +70,7 @@ class FunctionReplacer : public UnicodeFunctor, public UnicodeReplacer { /** * Implement UnicodeFunctor */ - virtual UnicodeFunctor* clone() const; + virtual FunctionReplacer* clone() const; /** * UnicodeFunctor API. Cast 'this' to a UnicodeReplacer* pointer diff --git a/source/i18n/gender.cpp b/source/i18n/gender.cpp index 50161e1..32ddbf9 100644 --- a/source/i18n/gender.cpp +++ b/source/i18n/gender.cpp @@ -98,7 +98,7 @@ const GenderInfo* GenderInfo::getInstance(const Locale& locale, UErrorCode& stat return NULL; } - static UMutex gGenderMetaLock = U_MUTEX_INITIALIZER; + static UMutex gGenderMetaLock; const GenderInfo* result = NULL; const char* key = locale.getName(); { diff --git a/source/i18n/gregocal.cpp b/source/i18n/gregocal.cpp index 71faeb0..6b15171 100644 --- a/source/i18n/gregocal.cpp +++ b/source/i18n/gregocal.cpp @@ -286,7 +286,7 @@ fIsGregorian(source.fIsGregorian), fInvertGregorian(source.fInvertGregorian) // ------------------------------------- -Calendar* GregorianCalendar::clone() const +GregorianCalendar* GregorianCalendar::clone() const { return new GregorianCalendar(*this); } @@ -324,26 +324,26 @@ GregorianCalendar::setGregorianChange(UDate date, UErrorCode& status) if (U_FAILURE(status)) return; - fGregorianCutover = date; - // Precompute two internal variables which we use to do the actual // cutover computations. These are the normalized cutover, which is the // midnight at or before the cutover, and the cutover year. The // normalized cutover is in pure date milliseconds; it contains no time // of day or timezone component, and it used to compare against other // pure date values. - int32_t cutoverDay = (int32_t)ClockMath::floorDivide(fGregorianCutover, (double)kOneDay); - fNormalizedGregorianCutover = cutoverDay * kOneDay; - - // Handle the rare case of numeric overflow. If the user specifies a - // change of UDate(Long.MIN_VALUE), in order to get a pure Gregorian - // calendar, then the epoch day is -106751991168, which when multiplied - // by ONE_DAY gives 9223372036794351616 -- the negative value is too - // large for 64 bits, and overflows into a positive value. We correct - // this by using the next day, which for all intents is semantically - // equivalent. - if (cutoverDay < 0 && fNormalizedGregorianCutover > 0) { - fNormalizedGregorianCutover = (cutoverDay + 1) * kOneDay; + double cutoverDay = ClockMath::floorDivide(date, (double)kOneDay); + + // Handle the rare case of numeric overflow where the user specifies a time + // outside of INT32_MIN .. INT32_MAX number of days. + + if (cutoverDay <= INT32_MIN) { + cutoverDay = INT32_MIN; + fGregorianCutover = fNormalizedGregorianCutover = cutoverDay * kOneDay; + } else if (cutoverDay >= INT32_MAX) { + cutoverDay = INT32_MAX; + fGregorianCutover = fNormalizedGregorianCutover = cutoverDay * kOneDay; + } else { + fNormalizedGregorianCutover = cutoverDay * kOneDay; + fGregorianCutover = date; } // Normalize the year so BC values are represented as 0 and negative @@ -360,7 +360,7 @@ GregorianCalendar::setGregorianChange(UDate date, UErrorCode& status) fGregorianCutoverYear = cal->get(UCAL_YEAR, status); if (cal->get(UCAL_ERA, status) == BC) fGregorianCutoverYear = 1 - fGregorianCutoverYear; - fCutoverJulianDay = cutoverDay; + fCutoverJulianDay = (int32_t)cutoverDay; delete cal; } diff --git a/source/i18n/hebrwcal.cpp b/source/i18n/hebrwcal.cpp index c025be4..c8fb8a1 100644 --- a/source/i18n/hebrwcal.cpp +++ b/source/i18n/hebrwcal.cpp @@ -169,7 +169,7 @@ const char *HebrewCalendar::getType() const { return "hebrew"; } -Calendar* HebrewCalendar::clone() const { +HebrewCalendar* HebrewCalendar::clone() const { return new HebrewCalendar(*this); } diff --git a/source/i18n/hebrwcal.h b/source/i18n/hebrwcal.h index bde6466..08136de 100644 --- a/source/i18n/hebrwcal.h +++ b/source/i18n/hebrwcal.h @@ -192,7 +192,7 @@ public: * @return return a polymorphic copy of this calendar. * @internal */ - virtual Calendar* clone(void) const; + virtual HebrewCalendar* clone() const; public: /** diff --git a/source/i18n/i18n.vcxproj b/source/i18n/i18n.vcxproj index d2264c1..e939eb5 100644 --- a/source/i18n/i18n.vcxproj +++ b/source/i18n/i18n.vcxproj @@ -35,33 +35,37 @@ <_ProjectFileVersion>10.0.30319.1 - .\..\..\lib\ - .\x86\Release\ - false - .\..\..\lib\ - .\x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false + + $(OutDir)\icuin.tlb + U_ATTRIBUTE_DEPRECATED=;U_I18N_IMPLEMENTATION;%(PreprocessorDefinitions) false Level3 ..\..\include;..\common;%(AdditionalIncludeDirectories) Default + ProgramDatabase + $(OutDir)/icuin.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/icuin.pdb ../common;%(AdditionalIncludeDirectories) - 0x4a900000 + .\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) @@ -72,6 +76,9 @@ icuucd.lib;%(AdditionalDependencies) + ..\..\$(IcuBinOutputDir)\icuin65d.dll + .\..\..\$(IcuLibOutputDir)\icuind.pdb + ..\..\$(IcuLibOutputDir)\icuind.lib
    @@ -82,83 +89,9 @@ icuuc.lib;%(AdditionalDependencies) - -
    - - - .\..\..\lib\icuin.tlb - - - .\x86\Release/i18n.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ - - - ..\..\bin\icuin64.dll - .\..\..\lib;%(AdditionalLibraryDirectories) - .\..\..\lib\icuin.pdb - false - - - ..\..\lib\icuin.lib - - - - - .\..\..\lib\icuind.tlb - - - .\x86\Debug/i18n.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ - true - EditAndContinue - - - ..\..\bin\icuin64d.dll - .\..\..\lib;%(AdditionalLibraryDirectories) - .\..\..\lib\icuind.pdb - false - - - ..\..\lib\icuind.lib - - - - - .\..\..\lib64\icuin.tlb - - - .\x64\Release/i18n.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - - - ..\..\bin64\icuin64.dll - .\..\..\lib64;%(AdditionalLibraryDirectories) - .\..\..\lib64\icuin.pdb - ..\..\lib64\icuin.lib - - - - - .\..\..\lib64\icuind.tlb - - - .\x64\Debug/i18n.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - ProgramDatabase - - - ..\..\bin64\icuin64d.dll - .\..\..\lib64;%(AdditionalLibraryDirectories) - .\..\..\lib64\icuind.pdb - ..\..\lib64\icuind.lib + ..\..\$(IcuBinOutputDir)\icuin65.dll + .\..\..\$(IcuLibOutputDir)\icuin.pdb + ..\..\$(IcuLibOutputDir)\icuin.lib @@ -225,10 +158,10 @@ - + + - @@ -278,14 +211,14 @@ - + - + @@ -442,8 +375,11 @@ + + + @@ -541,7 +477,7 @@ - + @@ -549,7 +485,7 @@ - + diff --git a/source/i18n/i18n.vcxproj.filters b/source/i18n/i18n.vcxproj.filters index 5cf3799..a1813fc 100644 --- a/source/i18n/i18n.vcxproj.filters +++ b/source/i18n/i18n.vcxproj.filters @@ -117,16 +117,16 @@ formatting - + formatting formatting - + formatting - + formatting @@ -585,7 +585,7 @@ formatting - + formatting @@ -606,7 +606,7 @@ formatting - + formatting @@ -776,6 +776,9 @@ formatting + + formatting + formatting @@ -785,6 +788,12 @@ formatting + + formatting + + + formatting + formatting @@ -878,7 +887,7 @@ formatting - + formatting @@ -902,7 +911,7 @@ formatting - + formatting diff --git a/source/i18n/i18n_uwp.vcxproj b/source/i18n/i18n_uwp.vcxproj index 4a62c19..24ac8f3 100644 --- a/source/i18n/i18n_uwp.vcxproj +++ b/source/i18n/i18n_uwp.vcxproj @@ -13,6 +13,10 @@ Debug ARM + + Debug + ARM64 + Release Win32 @@ -25,6 +29,10 @@ Release ARM + + Release + ARM64 + {6786C051-383B-47E0-9E82-B8B994E06A25} @@ -51,20 +59,14 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\ReleaseUWP\ - .\x86\ReleaseUWP\ - .\x86\DebugUWP\ - .\x86\DebugUWP\ - .\x64\ReleaseUWP\ - .\x64\ReleaseUWP\ - .\x64\DebugUWP\ - .\x64\DebugUWP\ - .\arm\ReleaseUWP\ - .\arm\ReleaseUWP\ - .\arm\DebugUWP\ - .\arm\DebugUWP\ - false + .\$(Platform)\$(Configuration)UWP\ + .\$(Platform)\$(Configuration)UWP\ + + .\x86\$(Configuration)UWP\ + .\x86\$(Configuration)UWP\ + true + false @@ -88,6 +90,7 @@ NotUsing false /utf-8 %(AdditionalOptions) + ProgramDatabase 0x0409 @@ -127,7 +130,6 @@ Disabled EnableFastChecks true - EditAndContinue _DEBUG;%(PreprocessorDefinitions) @@ -166,6 +168,17 @@ MachineARM + + + ARM64 + + + ARM64;WIN32;%(PreprocessorDefinitions) + + + MachineARM64 + + .\..\..\lib32uwp\icuin.tlb @@ -177,7 +190,7 @@ .\x86\ReleaseUWP/ - ..\..\bin32uwp\icuin64.dll + ..\..\bin32uwp\icuin65.dll .\..\..\lib32uwp\icuin.pdb ..\..\lib32uwp\icuin.lib ..\..\lib32uwp\icuuc.lib;%(AdditionalDependencies) @@ -194,7 +207,7 @@ .\x86\DebugUWP/ - ..\..\bin32uwp\icuin64d.dll + ..\..\bin32uwp\icuin65d.dll .\..\..\lib32uwp\icuind.pdb ..\..\lib32uwp\icuind.lib ..\..\lib32uwp\icuucd.lib;%(AdditionalDependencies) @@ -211,7 +224,7 @@ .\x64\ReleaseUWP/ - ..\..\bin64uwp\icuin64.dll + ..\..\bin64uwp\icuin65.dll .\..\..\lib64uwp\icuin.pdb ..\..\lib64uwp\icuin.lib ..\..\lib64uwp\icuuc.lib;%(AdditionalDependencies) @@ -228,7 +241,7 @@ .\x64\DebugUWP/ - ..\..\bin64uwp\icuin64d.dll + ..\..\bin64uwp\icuin65d.dll .\..\..\lib64uwp\icuind.pdb ..\..\lib64uwp\icuind.lib ..\..\lib64uwp\icuucd.lib;%(AdditionalDependencies) @@ -245,7 +258,7 @@ .\ARM\ReleaseUWP/ - ..\..\binARMuwp\icuin64.dll + ..\..\binARMuwp\icuin65.dll .\..\..\libARMuwp\icuin.pdb ..\..\libARMuwp\icuin.lib ..\..\libARMuwp\icuuc.lib;%(AdditionalDependencies) @@ -262,12 +275,46 @@ .\ARM\DebugUWP/ - ..\..\binARMuwp\icuin64d.dll + ..\..\binARMuwp\icuin65d.dll .\..\..\libARMuwp\icuind.pdb ..\..\libARMuwp\icuind.lib ..\..\libARMuwp\icuucd.lib;%(AdditionalDependencies) + + + .\..\..\libARM64uwp\icuin.tlb + + + .\ARM64\ReleaseUWP/i18n.pch + .\ARM64\ReleaseUWP/ + .\ARM64\ReleaseUWP/ + .\ARM64\ReleaseUWP/ + + + ..\..\binARM64uwp\icuin65.dll + .\..\..\libARM64uwp\icuin.pdb + ..\..\libARM64uwp\icuin.lib + ..\..\libARM64uwp\icuuc.lib;%(AdditionalDependencies) + + + + + .\..\..\libARM64uwp\icuind.tlb + + + .\ARM64\DebugUWP/i18n.pch + .\ARM64\DebugUWP/ + .\ARM64\DebugUWP/ + .\ARM64\DebugUWP/ + + + ..\..\binARM64uwp\icuin65d.dll + .\..\..\libARM64uwp\icuind.pdb + ..\..\libARM64uwp\icuind.lib + ..\..\libARM64uwp\icuucd.lib;%(AdditionalDependencies) + + @@ -332,10 +379,10 @@ - + + - @@ -385,14 +432,14 @@ - + - + @@ -547,8 +594,11 @@ + + + @@ -646,7 +696,7 @@ - + @@ -654,7 +704,7 @@ - + diff --git a/source/i18n/indiancal.cpp b/source/i18n/indiancal.cpp index ae1098f..f1ab853 100644 --- a/source/i18n/indiancal.cpp +++ b/source/i18n/indiancal.cpp @@ -35,7 +35,7 @@ U_NAMESPACE_BEGIN //------------------------------------------------------------------------- -Calendar* IndianCalendar::clone() const { +IndianCalendar* IndianCalendar::clone() const { return new IndianCalendar(*this); } diff --git a/source/i18n/indiancal.h b/source/i18n/indiancal.h index e36d4eb..e259d9b 100644 --- a/source/i18n/indiancal.h +++ b/source/i18n/indiancal.h @@ -186,7 +186,7 @@ public: // TODO: copy c'tor, etc // clone - virtual Calendar* clone() const; + virtual IndianCalendar* clone() const; private: /** diff --git a/source/i18n/islamcal.cpp b/source/i18n/islamcal.cpp index a024f4c..582b336 100644 --- a/source/i18n/islamcal.cpp +++ b/source/i18n/islamcal.cpp @@ -227,7 +227,7 @@ const char *IslamicCalendar::getType() const { return sType; } -Calendar* IslamicCalendar::clone() const { +IslamicCalendar* IslamicCalendar::clone() const { return new IslamicCalendar(*this); } @@ -470,7 +470,7 @@ double IslamicCalendar::moonAge(UDate time, UErrorCode &status) { double age = 0; - static UMutex astroLock = U_MUTEX_INITIALIZER; // pod bay door lock + static UMutex astroLock; // pod bay door lock umtx_lock(&astroLock); if(gIslamicCalendarAstro == NULL) { gIslamicCalendarAstro = new CalendarAstronomer(); diff --git a/source/i18n/islamcal.h b/source/i18n/islamcal.h index 062733e..fde5847 100644 --- a/source/i18n/islamcal.h +++ b/source/i18n/islamcal.h @@ -230,7 +230,7 @@ class U_I18N_API IslamicCalendar : public Calendar { // TODO: copy c'tor, etc // clone - virtual Calendar* clone() const; + virtual IslamicCalendar* clone() const; private: /** diff --git a/source/i18n/japancal.cpp b/source/i18n/japancal.cpp index 1cb43f3..75a248f 100644 --- a/source/i18n/japancal.cpp +++ b/source/i18n/japancal.cpp @@ -136,7 +136,7 @@ JapaneseCalendar& JapaneseCalendar::operator= ( const JapaneseCalendar& right) return *this; } -Calendar* JapaneseCalendar::clone(void) const +JapaneseCalendar* JapaneseCalendar::clone() const { return new JapaneseCalendar(*this); } diff --git a/source/i18n/japancal.h b/source/i18n/japancal.h index 25409d4..03e6361 100644 --- a/source/i18n/japancal.h +++ b/source/i18n/japancal.h @@ -116,7 +116,7 @@ public: * @return return a polymorphic copy of this calendar. * @internal */ - virtual Calendar* clone(void) const; + virtual JapaneseCalendar* clone() const; /** * Return the extended year defined by the current fields. In the diff --git a/source/i18n/listformatter.cpp b/source/i18n/listformatter.cpp index 802ab0e..2ee5e12 100644 --- a/source/i18n/listformatter.cpp +++ b/source/i18n/listformatter.cpp @@ -144,7 +144,7 @@ const ListFormatInternal* ListFormatter::getListFormatInternal( keyBuffer.append(':', errorCode).append(style, errorCode); UnicodeString key(keyBuffer.data(), -1, US_INV); ListFormatInternal* result = nullptr; - static UMutex listFormatterMutex = U_MUTEX_INITIALIZER; + static UMutex listFormatterMutex; { Mutex m(&listFormatterMutex); if (listPatternHash == nullptr) { @@ -478,8 +478,8 @@ UnicodeString& ListFormatter::format_( if (index == 0) { offset = 0; } - int32_t offsetFirst; - int32_t offsetSecond; + int32_t offsetFirst = 0; + int32_t offsetSecond = 0; int32_t prefixLength = 0; // for n items, there are 2 * (n + 1) boundary including 0 and the upper // edge. diff --git a/source/i18n/measfmt.cpp b/source/i18n/measfmt.cpp index 0b2ba8f..1949f17 100644 --- a/source/i18n/measfmt.cpp +++ b/source/i18n/measfmt.cpp @@ -55,28 +55,23 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MeasureFormat) class NumericDateFormatters : public UMemory { public: // Formats like H:mm - SimpleDateFormat hourMinute; + UnicodeString hourMinute; // formats like M:ss - SimpleDateFormat minuteSecond; + UnicodeString minuteSecond; // formats like H:mm:ss - SimpleDateFormat hourMinuteSecond; + UnicodeString hourMinuteSecond; // Constructor that takes the actual patterns for hour-minute, // minute-second, and hour-minute-second respectively. NumericDateFormatters( const UnicodeString &hm, const UnicodeString &ms, - const UnicodeString &hms, - UErrorCode &status) : - hourMinute(hm, status), - minuteSecond(ms, status), - hourMinuteSecond(hms, status) { - const TimeZone *gmt = TimeZone::getGMT(); - hourMinute.setTimeZone(*gmt); - minuteSecond.setTimeZone(*gmt); - hourMinuteSecond.setTimeZone(*gmt); + const UnicodeString &hms) : + hourMinute(hm), + minuteSecond(ms), + hourMinuteSecond(hms) { } private: NumericDateFormatters(const NumericDateFormatters &other); @@ -233,8 +228,7 @@ static NumericDateFormatters *loadNumericDateFormatters( NumericDateFormatters *result = new NumericDateFormatters( loadNumericDateFormatterPattern(resource, "hm", status), loadNumericDateFormatterPattern(resource, "ms", status), - loadNumericDateFormatterPattern(resource, "hms", status), - status); + loadNumericDateFormatterPattern(resource, "hms", status)); if (U_FAILURE(status)) { delete result; return NULL; @@ -466,7 +460,7 @@ UBool MeasureFormat::operator==(const Format &other) const { **numberFormat == **rhs.numberFormat); } -Format *MeasureFormat::clone() const { +MeasureFormat *MeasureFormat::clone() const { return new MeasureFormat(*this); } @@ -691,9 +685,19 @@ UnicodeString &MeasureFormat::formatMeasure( } auto* df = dynamic_cast(&nf); if (df == nullptr) { - // Don't know how to handle other types of NumberFormat - status = U_UNSUPPORTED_ERROR; - return appendTo; + // Handle other types of NumberFormat using the ICU 63 code, modified to + // get the unitPattern from LongNameHandler and handle fallback to OTHER. + UnicodeString formattedNumber; + StandardPlural::Form pluralForm = QuantityFormatter::selectPlural( + amtNumber, nf, **pluralRules, formattedNumber, pos, status); + UnicodeString pattern = number::impl::LongNameHandler::getUnitPattern(getLocale(status), + amtUnit, getUnitWidth(fWidth), pluralForm, status); + // The above handles fallback from other widths to short, and from other plural forms to OTHER + if (U_FAILURE(status)) { + return appendTo; + } + SimpleFormatter formatter(pattern, 0, 1, status); + return QuantityFormatter::format(formatter, formattedNumber, appendTo, pos, status); } number::FormattedNumber result; if (auto* lnf = df->toNumberFormatter(status)) { @@ -706,135 +710,112 @@ UnicodeString &MeasureFormat::formatMeasure( return appendTo; } -// Formats hours-minutes-seconds as 5:37:23 or similar. + +// Formats numeric time duration as 5:00:47 or 3:54. UnicodeString &MeasureFormat::formatNumeric( const Formattable *hms, // always length 3 - int32_t bitMap, // 1=hourset, 2=minuteset, 4=secondset + int32_t bitMap, // 1=hour set, 2=minute set, 4=second set UnicodeString &appendTo, UErrorCode &status) const { if (U_FAILURE(status)) { return appendTo; } - UDate millis = - (UDate) (((uprv_trunc(hms[0].getDouble(status)) * 60.0 - + uprv_trunc(hms[1].getDouble(status))) * 60.0 - + uprv_trunc(hms[2].getDouble(status))) * 1000.0); - switch (bitMap) { - case 5: // hs - case 7: // hms - return formatNumeric( - millis, - cache->getNumericDateFormatters()->hourMinuteSecond, - UDAT_SECOND_FIELD, - hms[2], - appendTo, - status); - break; - case 6: // ms - return formatNumeric( - millis, - cache->getNumericDateFormatters()->minuteSecond, - UDAT_SECOND_FIELD, - hms[2], - appendTo, - status); - break; - case 3: // hm - return formatNumeric( - millis, - cache->getNumericDateFormatters()->hourMinute, - UDAT_MINUTE_FIELD, - hms[1], - appendTo, - status); - break; - default: - status = U_INTERNAL_PROGRAM_ERROR; - return appendTo; - break; - } -} - -static void appendRange( - const UnicodeString &src, - int32_t start, - int32_t end, - UnicodeString &dest) { - dest.append(src, start, end - start); -} -static void appendRange( - const UnicodeString &src, - int32_t end, - UnicodeString &dest) { - dest.append(src, end, src.length() - end); -} + UnicodeString pattern; -// Formats time like 5:37:23 -UnicodeString &MeasureFormat::formatNumeric( - UDate date, // Time since epoch 1:30:00 would be 5400000 - const DateFormat &dateFmt, // h:mm, m:ss, or h:mm:ss - UDateFormatField smallestField, // seconds in 5:37:23.5 - const Formattable &smallestAmount, // 23.5 for 5:37:23.5 - UnicodeString &appendTo, - UErrorCode &status) const { + double hours = hms[0].getDouble(status); + double minutes = hms[1].getDouble(status); + double seconds = hms[2].getDouble(status); if (U_FAILURE(status)) { return appendTo; } - // Format the smallest amount with this object's NumberFormat - UnicodeString smallestAmountFormatted; - - // We keep track of the integer part of smallest amount so that - // we can replace it later so that we get '0:00:09.3' instead of - // '0:00:9.3' - FieldPosition intFieldPosition(UNUM_INTEGER_FIELD); - (*numberFormat)->format( - smallestAmount, smallestAmountFormatted, intFieldPosition, status); - if ( - intFieldPosition.getBeginIndex() == 0 && - intFieldPosition.getEndIndex() == 0) { + + // All possible combinations: "h", "m", "s", "hm", "hs", "ms", "hms" + if (bitMap == 5 || bitMap == 7) { // "hms" & "hs" (we add minutes if "hs") + pattern = cache->getNumericDateFormatters()->hourMinuteSecond; + hours = uprv_trunc(hours); + minutes = uprv_trunc(minutes); + } else if (bitMap == 3) { // "hm" + pattern = cache->getNumericDateFormatters()->hourMinute; + hours = uprv_trunc(hours); + } else if (bitMap == 6) { // "ms" + pattern = cache->getNumericDateFormatters()->minuteSecond; + minutes = uprv_trunc(minutes); + } else { // h m s, handled outside formatNumeric. No value is also an error. status = U_INTERNAL_PROGRAM_ERROR; return appendTo; } - // Format time. draft becomes something like '5:30:45' - // #13606: DateFormat is not thread-safe, but MeasureFormat advertises itself as thread-safe. - FieldPosition smallestFieldPosition(smallestField); - UnicodeString draft; - static UMutex dateFmtMutex = U_MUTEX_INITIALIZER; - umtx_lock(&dateFmtMutex); - dateFmt.format(date, draft, smallestFieldPosition, status); - umtx_unlock(&dateFmtMutex); - - // If we find field for smallest amount replace it with the formatted - // smallest amount from above taking care to replace the integer part - // with what is in original time. For example, If smallest amount - // is 9.35s and the formatted time is 0:00:09 then 9.35 becomes 09.35 - // and replacing yields 0:00:09.35 - if (smallestFieldPosition.getBeginIndex() != 0 || - smallestFieldPosition.getEndIndex() != 0) { - appendRange(draft, 0, smallestFieldPosition.getBeginIndex(), appendTo); - appendRange( - smallestAmountFormatted, - 0, - intFieldPosition.getBeginIndex(), - appendTo); - appendRange( - draft, - smallestFieldPosition.getBeginIndex(), - smallestFieldPosition.getEndIndex(), - appendTo); - appendRange( - smallestAmountFormatted, - intFieldPosition.getEndIndex(), - appendTo); - appendRange( - draft, - smallestFieldPosition.getEndIndex(), - appendTo); + const DecimalFormat *numberFormatter = dynamic_cast(numberFormat->get()); + if (!numberFormatter) { + status = U_INTERNAL_PROGRAM_ERROR; + return appendTo; + } + number::LocalizedNumberFormatter numberFormatter2; + if (auto* lnf = numberFormatter->toNumberFormatter(status)) { + numberFormatter2 = lnf->integerWidth(number::IntegerWidth::zeroFillTo(2)); } else { - appendTo.append(draft); + return appendTo; } + + FormattedStringBuilder fsb; + + UBool protect = FALSE; + const int32_t patternLength = pattern.length(); + for (int32_t i = 0; i < patternLength; i++) { + char16_t c = pattern[i]; + + // Also set the proper field in this switch + // We don't use DateFormat.Field because this is not a date / time, is a duration. + double value = 0; + switch (c) { + case u'H': value = hours; break; + case u'm': value = minutes; break; + case u's': value = seconds; break; + } + + // For undefined field we use UNUM_FIELD_COUNT, for historical reasons. + // See cleanup bug: https://unicode-org.atlassian.net/browse/ICU-20665 + // But we give it a clear name, to keep "the ugly part" in one place. + constexpr UNumberFormatFields undefinedField = UNUM_FIELD_COUNT; + + // There is not enough info to add Field(s) for the unit because all we have are plain + // text patterns. For example in "21:51" there is no text for something like "hour", + // while in something like "21h51" there is ("h"). But we can't really tell... + switch (c) { + case u'H': + case u'm': + case u's': + if (protect) { + fsb.appendChar16(c, undefinedField, status); + } else { + UnicodeString tmp; + if ((i + 1 < patternLength) && pattern[i + 1] == c) { // doubled + tmp = numberFormatter2.formatDouble(value, status).toString(status); + i++; + } else { + numberFormatter->format(value, tmp, status); + } + // TODO: Use proper Field + fsb.append(tmp, undefinedField, status); + } + break; + case u'\'': + // '' is escaped apostrophe + if ((i + 1 < patternLength) && pattern[i + 1] == c) { + fsb.appendChar16(c, undefinedField, status); + i++; + } else { + protect = !protect; + } + break; + default: + fsb.appendChar16(c, undefinedField, status); + } + } + + appendTo.append(fsb.toTempUnicodeString()); + return appendTo; } diff --git a/source/i18n/measunit.cpp b/source/i18n/measunit.cpp index 9ae7aeb..7a0a606 100644 --- a/source/i18n/measunit.cpp +++ b/source/i18n/measunit.cpp @@ -43,21 +43,22 @@ static const int32_t gOffsets[] = { 29, 328, 339, - 354, - 358, - 366, + 355, + 359, 368, - 372, - 393, - 395, - 409, - 412, + 370, + 374, + 381, + 402, + 404, 418, - 426, - 430, - 434, - 436, - 463 + 421, + 427, + 437, + 441, + 445, + 447, + 474 }; static const int32_t gIndexes[] = { @@ -69,21 +70,22 @@ static const int32_t gIndexes[] = { 29, 29, 40, - 55, - 59, - 67, + 56, + 60, 69, - 73, - 94, - 96, - 110, - 113, + 71, + 75, + 82, + 103, + 105, 119, - 127, - 131, - 135, - 137, - 164 + 122, + 128, + 138, + 142, + 146, + 148, + 175 }; // Must be sorted alphabetically. @@ -100,6 +102,7 @@ static const char * const gTypes[] = { "energy", "force", "frequency", + "graphics", "length", "light", "mass", @@ -456,6 +459,7 @@ static const char * const gSubTypes[] = { "century", "day", "day-person", + "decade", "hour", "microsecond", "millisecond", @@ -480,12 +484,20 @@ static const char * const gSubTypes[] = { "kilocalorie", "kilojoule", "kilowatt-hour", + "therm-us", "newton", "pound-force", "gigahertz", "hertz", "kilohertz", "megahertz", + "dot-per-centimeter", + "dot-per-inch", + "em", + "megapixel", + "pixel", + "pixel-per-centimeter", + "pixel-per-inch", "astronomical-unit", "centimeter", "decimeter", @@ -533,12 +545,14 @@ static const char * const gSubTypes[] = { "milliwatt", "watt", "atmosphere", + "bar", "hectopascal", "inch-hg", "kilopascal", "megapascal", "millibar", "millimeter-of-mercury", + "pascal", "pound-per-square-inch", "kilometer-per-hour", "knot", @@ -581,18 +595,20 @@ static const char * const gSubTypes[] = { // Must be sorted by first value and then second value. static int32_t unitPerUnitToSingleUnit[][4] = { - {379, 342, 18, 0}, - {381, 349, 18, 2}, - {383, 342, 18, 3}, - {383, 452, 4, 2}, - {383, 453, 4, 3}, - {402, 449, 3, 1}, - {405, 12, 17, 7}, - {455, 379, 4, 1} + {378, 382, 12, 5}, + {378, 387, 12, 6}, + {388, 343, 19, 0}, + {390, 350, 19, 2}, + {392, 343, 19, 3}, + {392, 463, 4, 2}, + {392, 464, 4, 3}, + {411, 460, 3, 1}, + {414, 12, 18, 9}, + {466, 388, 4, 1} }; // Shortcuts to the base unit in order to make the default constructor fast -static const int32_t kBaseTypeIdx = 15; +static const int32_t kBaseTypeIdx = 16; static const int32_t kBaseSubTypeIdx = 0; MeasureUnit *MeasureUnit::createGForce(UErrorCode &status) { @@ -939,102 +955,110 @@ MeasureUnit MeasureUnit::getDayPerson() { return MeasureUnit(7, 2); } -MeasureUnit *MeasureUnit::createHour(UErrorCode &status) { +MeasureUnit *MeasureUnit::createDecade(UErrorCode &status) { return MeasureUnit::create(7, 3, status); } -MeasureUnit MeasureUnit::getHour() { +MeasureUnit MeasureUnit::getDecade() { return MeasureUnit(7, 3); } -MeasureUnit *MeasureUnit::createMicrosecond(UErrorCode &status) { +MeasureUnit *MeasureUnit::createHour(UErrorCode &status) { return MeasureUnit::create(7, 4, status); } -MeasureUnit MeasureUnit::getMicrosecond() { +MeasureUnit MeasureUnit::getHour() { return MeasureUnit(7, 4); } -MeasureUnit *MeasureUnit::createMillisecond(UErrorCode &status) { +MeasureUnit *MeasureUnit::createMicrosecond(UErrorCode &status) { return MeasureUnit::create(7, 5, status); } -MeasureUnit MeasureUnit::getMillisecond() { +MeasureUnit MeasureUnit::getMicrosecond() { return MeasureUnit(7, 5); } -MeasureUnit *MeasureUnit::createMinute(UErrorCode &status) { +MeasureUnit *MeasureUnit::createMillisecond(UErrorCode &status) { return MeasureUnit::create(7, 6, status); } -MeasureUnit MeasureUnit::getMinute() { +MeasureUnit MeasureUnit::getMillisecond() { return MeasureUnit(7, 6); } -MeasureUnit *MeasureUnit::createMonth(UErrorCode &status) { +MeasureUnit *MeasureUnit::createMinute(UErrorCode &status) { return MeasureUnit::create(7, 7, status); } -MeasureUnit MeasureUnit::getMonth() { +MeasureUnit MeasureUnit::getMinute() { return MeasureUnit(7, 7); } -MeasureUnit *MeasureUnit::createMonthPerson(UErrorCode &status) { +MeasureUnit *MeasureUnit::createMonth(UErrorCode &status) { return MeasureUnit::create(7, 8, status); } -MeasureUnit MeasureUnit::getMonthPerson() { +MeasureUnit MeasureUnit::getMonth() { return MeasureUnit(7, 8); } -MeasureUnit *MeasureUnit::createNanosecond(UErrorCode &status) { +MeasureUnit *MeasureUnit::createMonthPerson(UErrorCode &status) { return MeasureUnit::create(7, 9, status); } -MeasureUnit MeasureUnit::getNanosecond() { +MeasureUnit MeasureUnit::getMonthPerson() { return MeasureUnit(7, 9); } -MeasureUnit *MeasureUnit::createSecond(UErrorCode &status) { +MeasureUnit *MeasureUnit::createNanosecond(UErrorCode &status) { return MeasureUnit::create(7, 10, status); } -MeasureUnit MeasureUnit::getSecond() { +MeasureUnit MeasureUnit::getNanosecond() { return MeasureUnit(7, 10); } -MeasureUnit *MeasureUnit::createWeek(UErrorCode &status) { +MeasureUnit *MeasureUnit::createSecond(UErrorCode &status) { return MeasureUnit::create(7, 11, status); } -MeasureUnit MeasureUnit::getWeek() { +MeasureUnit MeasureUnit::getSecond() { return MeasureUnit(7, 11); } -MeasureUnit *MeasureUnit::createWeekPerson(UErrorCode &status) { +MeasureUnit *MeasureUnit::createWeek(UErrorCode &status) { return MeasureUnit::create(7, 12, status); } -MeasureUnit MeasureUnit::getWeekPerson() { +MeasureUnit MeasureUnit::getWeek() { return MeasureUnit(7, 12); } -MeasureUnit *MeasureUnit::createYear(UErrorCode &status) { +MeasureUnit *MeasureUnit::createWeekPerson(UErrorCode &status) { return MeasureUnit::create(7, 13, status); } -MeasureUnit MeasureUnit::getYear() { +MeasureUnit MeasureUnit::getWeekPerson() { return MeasureUnit(7, 13); } -MeasureUnit *MeasureUnit::createYearPerson(UErrorCode &status) { +MeasureUnit *MeasureUnit::createYear(UErrorCode &status) { return MeasureUnit::create(7, 14, status); } -MeasureUnit MeasureUnit::getYearPerson() { +MeasureUnit MeasureUnit::getYear() { return MeasureUnit(7, 14); } +MeasureUnit *MeasureUnit::createYearPerson(UErrorCode &status) { + return MeasureUnit::create(7, 15, status); +} + +MeasureUnit MeasureUnit::getYearPerson() { + return MeasureUnit(7, 15); +} + MeasureUnit *MeasureUnit::createAmpere(UErrorCode &status) { return MeasureUnit::create(8, 0, status); } @@ -1131,6 +1155,14 @@ MeasureUnit MeasureUnit::getKilowattHour() { return MeasureUnit(9, 7); } +MeasureUnit *MeasureUnit::createThermUs(UErrorCode &status) { + return MeasureUnit::create(9, 8, status); +} + +MeasureUnit MeasureUnit::getThermUs() { + return MeasureUnit(9, 8); +} + MeasureUnit *MeasureUnit::createNewton(UErrorCode &status) { return MeasureUnit::create(10, 0, status); } @@ -1179,708 +1211,780 @@ MeasureUnit MeasureUnit::getMegahertz() { return MeasureUnit(11, 3); } -MeasureUnit *MeasureUnit::createAstronomicalUnit(UErrorCode &status) { +MeasureUnit *MeasureUnit::createDotPerCentimeter(UErrorCode &status) { return MeasureUnit::create(12, 0, status); } -MeasureUnit MeasureUnit::getAstronomicalUnit() { +MeasureUnit MeasureUnit::getDotPerCentimeter() { return MeasureUnit(12, 0); } -MeasureUnit *MeasureUnit::createCentimeter(UErrorCode &status) { +MeasureUnit *MeasureUnit::createDotPerInch(UErrorCode &status) { return MeasureUnit::create(12, 1, status); } -MeasureUnit MeasureUnit::getCentimeter() { +MeasureUnit MeasureUnit::getDotPerInch() { return MeasureUnit(12, 1); } -MeasureUnit *MeasureUnit::createDecimeter(UErrorCode &status) { +MeasureUnit *MeasureUnit::createEm(UErrorCode &status) { return MeasureUnit::create(12, 2, status); } -MeasureUnit MeasureUnit::getDecimeter() { +MeasureUnit MeasureUnit::getEm() { return MeasureUnit(12, 2); } -MeasureUnit *MeasureUnit::createFathom(UErrorCode &status) { +MeasureUnit *MeasureUnit::createMegapixel(UErrorCode &status) { return MeasureUnit::create(12, 3, status); } -MeasureUnit MeasureUnit::getFathom() { +MeasureUnit MeasureUnit::getMegapixel() { return MeasureUnit(12, 3); } -MeasureUnit *MeasureUnit::createFoot(UErrorCode &status) { +MeasureUnit *MeasureUnit::createPixel(UErrorCode &status) { return MeasureUnit::create(12, 4, status); } -MeasureUnit MeasureUnit::getFoot() { +MeasureUnit MeasureUnit::getPixel() { return MeasureUnit(12, 4); } -MeasureUnit *MeasureUnit::createFurlong(UErrorCode &status) { +MeasureUnit *MeasureUnit::createPixelPerCentimeter(UErrorCode &status) { return MeasureUnit::create(12, 5, status); } -MeasureUnit MeasureUnit::getFurlong() { +MeasureUnit MeasureUnit::getPixelPerCentimeter() { return MeasureUnit(12, 5); } -MeasureUnit *MeasureUnit::createInch(UErrorCode &status) { +MeasureUnit *MeasureUnit::createPixelPerInch(UErrorCode &status) { return MeasureUnit::create(12, 6, status); } -MeasureUnit MeasureUnit::getInch() { +MeasureUnit MeasureUnit::getPixelPerInch() { return MeasureUnit(12, 6); } +MeasureUnit *MeasureUnit::createAstronomicalUnit(UErrorCode &status) { + return MeasureUnit::create(13, 0, status); +} + +MeasureUnit MeasureUnit::getAstronomicalUnit() { + return MeasureUnit(13, 0); +} + +MeasureUnit *MeasureUnit::createCentimeter(UErrorCode &status) { + return MeasureUnit::create(13, 1, status); +} + +MeasureUnit MeasureUnit::getCentimeter() { + return MeasureUnit(13, 1); +} + +MeasureUnit *MeasureUnit::createDecimeter(UErrorCode &status) { + return MeasureUnit::create(13, 2, status); +} + +MeasureUnit MeasureUnit::getDecimeter() { + return MeasureUnit(13, 2); +} + +MeasureUnit *MeasureUnit::createFathom(UErrorCode &status) { + return MeasureUnit::create(13, 3, status); +} + +MeasureUnit MeasureUnit::getFathom() { + return MeasureUnit(13, 3); +} + +MeasureUnit *MeasureUnit::createFoot(UErrorCode &status) { + return MeasureUnit::create(13, 4, status); +} + +MeasureUnit MeasureUnit::getFoot() { + return MeasureUnit(13, 4); +} + +MeasureUnit *MeasureUnit::createFurlong(UErrorCode &status) { + return MeasureUnit::create(13, 5, status); +} + +MeasureUnit MeasureUnit::getFurlong() { + return MeasureUnit(13, 5); +} + +MeasureUnit *MeasureUnit::createInch(UErrorCode &status) { + return MeasureUnit::create(13, 6, status); +} + +MeasureUnit MeasureUnit::getInch() { + return MeasureUnit(13, 6); +} + MeasureUnit *MeasureUnit::createKilometer(UErrorCode &status) { - return MeasureUnit::create(12, 7, status); + return MeasureUnit::create(13, 7, status); } MeasureUnit MeasureUnit::getKilometer() { - return MeasureUnit(12, 7); + return MeasureUnit(13, 7); } MeasureUnit *MeasureUnit::createLightYear(UErrorCode &status) { - return MeasureUnit::create(12, 8, status); + return MeasureUnit::create(13, 8, status); } MeasureUnit MeasureUnit::getLightYear() { - return MeasureUnit(12, 8); + return MeasureUnit(13, 8); } MeasureUnit *MeasureUnit::createMeter(UErrorCode &status) { - return MeasureUnit::create(12, 9, status); + return MeasureUnit::create(13, 9, status); } MeasureUnit MeasureUnit::getMeter() { - return MeasureUnit(12, 9); + return MeasureUnit(13, 9); } MeasureUnit *MeasureUnit::createMicrometer(UErrorCode &status) { - return MeasureUnit::create(12, 10, status); + return MeasureUnit::create(13, 10, status); } MeasureUnit MeasureUnit::getMicrometer() { - return MeasureUnit(12, 10); + return MeasureUnit(13, 10); } MeasureUnit *MeasureUnit::createMile(UErrorCode &status) { - return MeasureUnit::create(12, 11, status); + return MeasureUnit::create(13, 11, status); } MeasureUnit MeasureUnit::getMile() { - return MeasureUnit(12, 11); + return MeasureUnit(13, 11); } MeasureUnit *MeasureUnit::createMileScandinavian(UErrorCode &status) { - return MeasureUnit::create(12, 12, status); + return MeasureUnit::create(13, 12, status); } MeasureUnit MeasureUnit::getMileScandinavian() { - return MeasureUnit(12, 12); + return MeasureUnit(13, 12); } MeasureUnit *MeasureUnit::createMillimeter(UErrorCode &status) { - return MeasureUnit::create(12, 13, status); + return MeasureUnit::create(13, 13, status); } MeasureUnit MeasureUnit::getMillimeter() { - return MeasureUnit(12, 13); + return MeasureUnit(13, 13); } MeasureUnit *MeasureUnit::createNanometer(UErrorCode &status) { - return MeasureUnit::create(12, 14, status); + return MeasureUnit::create(13, 14, status); } MeasureUnit MeasureUnit::getNanometer() { - return MeasureUnit(12, 14); + return MeasureUnit(13, 14); } MeasureUnit *MeasureUnit::createNauticalMile(UErrorCode &status) { - return MeasureUnit::create(12, 15, status); + return MeasureUnit::create(13, 15, status); } MeasureUnit MeasureUnit::getNauticalMile() { - return MeasureUnit(12, 15); + return MeasureUnit(13, 15); } MeasureUnit *MeasureUnit::createParsec(UErrorCode &status) { - return MeasureUnit::create(12, 16, status); + return MeasureUnit::create(13, 16, status); } MeasureUnit MeasureUnit::getParsec() { - return MeasureUnit(12, 16); + return MeasureUnit(13, 16); } MeasureUnit *MeasureUnit::createPicometer(UErrorCode &status) { - return MeasureUnit::create(12, 17, status); + return MeasureUnit::create(13, 17, status); } MeasureUnit MeasureUnit::getPicometer() { - return MeasureUnit(12, 17); + return MeasureUnit(13, 17); } MeasureUnit *MeasureUnit::createPoint(UErrorCode &status) { - return MeasureUnit::create(12, 18, status); + return MeasureUnit::create(13, 18, status); } MeasureUnit MeasureUnit::getPoint() { - return MeasureUnit(12, 18); + return MeasureUnit(13, 18); } MeasureUnit *MeasureUnit::createSolarRadius(UErrorCode &status) { - return MeasureUnit::create(12, 19, status); + return MeasureUnit::create(13, 19, status); } MeasureUnit MeasureUnit::getSolarRadius() { - return MeasureUnit(12, 19); + return MeasureUnit(13, 19); } MeasureUnit *MeasureUnit::createYard(UErrorCode &status) { - return MeasureUnit::create(12, 20, status); + return MeasureUnit::create(13, 20, status); } MeasureUnit MeasureUnit::getYard() { - return MeasureUnit(12, 20); + return MeasureUnit(13, 20); } MeasureUnit *MeasureUnit::createLux(UErrorCode &status) { - return MeasureUnit::create(13, 0, status); + return MeasureUnit::create(14, 0, status); } MeasureUnit MeasureUnit::getLux() { - return MeasureUnit(13, 0); + return MeasureUnit(14, 0); } MeasureUnit *MeasureUnit::createSolarLuminosity(UErrorCode &status) { - return MeasureUnit::create(13, 1, status); + return MeasureUnit::create(14, 1, status); } MeasureUnit MeasureUnit::getSolarLuminosity() { - return MeasureUnit(13, 1); + return MeasureUnit(14, 1); } MeasureUnit *MeasureUnit::createCarat(UErrorCode &status) { - return MeasureUnit::create(14, 0, status); + return MeasureUnit::create(15, 0, status); } MeasureUnit MeasureUnit::getCarat() { - return MeasureUnit(14, 0); + return MeasureUnit(15, 0); } MeasureUnit *MeasureUnit::createDalton(UErrorCode &status) { - return MeasureUnit::create(14, 1, status); + return MeasureUnit::create(15, 1, status); } MeasureUnit MeasureUnit::getDalton() { - return MeasureUnit(14, 1); + return MeasureUnit(15, 1); } MeasureUnit *MeasureUnit::createEarthMass(UErrorCode &status) { - return MeasureUnit::create(14, 2, status); + return MeasureUnit::create(15, 2, status); } MeasureUnit MeasureUnit::getEarthMass() { - return MeasureUnit(14, 2); + return MeasureUnit(15, 2); } MeasureUnit *MeasureUnit::createGram(UErrorCode &status) { - return MeasureUnit::create(14, 3, status); + return MeasureUnit::create(15, 3, status); } MeasureUnit MeasureUnit::getGram() { - return MeasureUnit(14, 3); + return MeasureUnit(15, 3); } MeasureUnit *MeasureUnit::createKilogram(UErrorCode &status) { - return MeasureUnit::create(14, 4, status); + return MeasureUnit::create(15, 4, status); } MeasureUnit MeasureUnit::getKilogram() { - return MeasureUnit(14, 4); + return MeasureUnit(15, 4); } MeasureUnit *MeasureUnit::createMetricTon(UErrorCode &status) { - return MeasureUnit::create(14, 5, status); + return MeasureUnit::create(15, 5, status); } MeasureUnit MeasureUnit::getMetricTon() { - return MeasureUnit(14, 5); + return MeasureUnit(15, 5); } MeasureUnit *MeasureUnit::createMicrogram(UErrorCode &status) { - return MeasureUnit::create(14, 6, status); + return MeasureUnit::create(15, 6, status); } MeasureUnit MeasureUnit::getMicrogram() { - return MeasureUnit(14, 6); + return MeasureUnit(15, 6); } MeasureUnit *MeasureUnit::createMilligram(UErrorCode &status) { - return MeasureUnit::create(14, 7, status); + return MeasureUnit::create(15, 7, status); } MeasureUnit MeasureUnit::getMilligram() { - return MeasureUnit(14, 7); + return MeasureUnit(15, 7); } MeasureUnit *MeasureUnit::createOunce(UErrorCode &status) { - return MeasureUnit::create(14, 8, status); + return MeasureUnit::create(15, 8, status); } MeasureUnit MeasureUnit::getOunce() { - return MeasureUnit(14, 8); + return MeasureUnit(15, 8); } MeasureUnit *MeasureUnit::createOunceTroy(UErrorCode &status) { - return MeasureUnit::create(14, 9, status); + return MeasureUnit::create(15, 9, status); } MeasureUnit MeasureUnit::getOunceTroy() { - return MeasureUnit(14, 9); + return MeasureUnit(15, 9); } MeasureUnit *MeasureUnit::createPound(UErrorCode &status) { - return MeasureUnit::create(14, 10, status); + return MeasureUnit::create(15, 10, status); } MeasureUnit MeasureUnit::getPound() { - return MeasureUnit(14, 10); + return MeasureUnit(15, 10); } MeasureUnit *MeasureUnit::createSolarMass(UErrorCode &status) { - return MeasureUnit::create(14, 11, status); + return MeasureUnit::create(15, 11, status); } MeasureUnit MeasureUnit::getSolarMass() { - return MeasureUnit(14, 11); + return MeasureUnit(15, 11); } MeasureUnit *MeasureUnit::createStone(UErrorCode &status) { - return MeasureUnit::create(14, 12, status); + return MeasureUnit::create(15, 12, status); } MeasureUnit MeasureUnit::getStone() { - return MeasureUnit(14, 12); + return MeasureUnit(15, 12); } MeasureUnit *MeasureUnit::createTon(UErrorCode &status) { - return MeasureUnit::create(14, 13, status); + return MeasureUnit::create(15, 13, status); } MeasureUnit MeasureUnit::getTon() { - return MeasureUnit(14, 13); + return MeasureUnit(15, 13); } MeasureUnit *MeasureUnit::createGigawatt(UErrorCode &status) { - return MeasureUnit::create(16, 0, status); + return MeasureUnit::create(17, 0, status); } MeasureUnit MeasureUnit::getGigawatt() { - return MeasureUnit(16, 0); + return MeasureUnit(17, 0); } MeasureUnit *MeasureUnit::createHorsepower(UErrorCode &status) { - return MeasureUnit::create(16, 1, status); + return MeasureUnit::create(17, 1, status); } MeasureUnit MeasureUnit::getHorsepower() { - return MeasureUnit(16, 1); + return MeasureUnit(17, 1); } MeasureUnit *MeasureUnit::createKilowatt(UErrorCode &status) { - return MeasureUnit::create(16, 2, status); + return MeasureUnit::create(17, 2, status); } MeasureUnit MeasureUnit::getKilowatt() { - return MeasureUnit(16, 2); + return MeasureUnit(17, 2); } MeasureUnit *MeasureUnit::createMegawatt(UErrorCode &status) { - return MeasureUnit::create(16, 3, status); + return MeasureUnit::create(17, 3, status); } MeasureUnit MeasureUnit::getMegawatt() { - return MeasureUnit(16, 3); + return MeasureUnit(17, 3); } MeasureUnit *MeasureUnit::createMilliwatt(UErrorCode &status) { - return MeasureUnit::create(16, 4, status); + return MeasureUnit::create(17, 4, status); } MeasureUnit MeasureUnit::getMilliwatt() { - return MeasureUnit(16, 4); + return MeasureUnit(17, 4); } MeasureUnit *MeasureUnit::createWatt(UErrorCode &status) { - return MeasureUnit::create(16, 5, status); + return MeasureUnit::create(17, 5, status); } MeasureUnit MeasureUnit::getWatt() { - return MeasureUnit(16, 5); + return MeasureUnit(17, 5); } MeasureUnit *MeasureUnit::createAtmosphere(UErrorCode &status) { - return MeasureUnit::create(17, 0, status); + return MeasureUnit::create(18, 0, status); } MeasureUnit MeasureUnit::getAtmosphere() { - return MeasureUnit(17, 0); + return MeasureUnit(18, 0); +} + +MeasureUnit *MeasureUnit::createBar(UErrorCode &status) { + return MeasureUnit::create(18, 1, status); +} + +MeasureUnit MeasureUnit::getBar() { + return MeasureUnit(18, 1); } MeasureUnit *MeasureUnit::createHectopascal(UErrorCode &status) { - return MeasureUnit::create(17, 1, status); + return MeasureUnit::create(18, 2, status); } MeasureUnit MeasureUnit::getHectopascal() { - return MeasureUnit(17, 1); + return MeasureUnit(18, 2); } MeasureUnit *MeasureUnit::createInchHg(UErrorCode &status) { - return MeasureUnit::create(17, 2, status); + return MeasureUnit::create(18, 3, status); } MeasureUnit MeasureUnit::getInchHg() { - return MeasureUnit(17, 2); + return MeasureUnit(18, 3); } MeasureUnit *MeasureUnit::createKilopascal(UErrorCode &status) { - return MeasureUnit::create(17, 3, status); + return MeasureUnit::create(18, 4, status); } MeasureUnit MeasureUnit::getKilopascal() { - return MeasureUnit(17, 3); + return MeasureUnit(18, 4); } MeasureUnit *MeasureUnit::createMegapascal(UErrorCode &status) { - return MeasureUnit::create(17, 4, status); + return MeasureUnit::create(18, 5, status); } MeasureUnit MeasureUnit::getMegapascal() { - return MeasureUnit(17, 4); + return MeasureUnit(18, 5); } MeasureUnit *MeasureUnit::createMillibar(UErrorCode &status) { - return MeasureUnit::create(17, 5, status); + return MeasureUnit::create(18, 6, status); } MeasureUnit MeasureUnit::getMillibar() { - return MeasureUnit(17, 5); + return MeasureUnit(18, 6); } MeasureUnit *MeasureUnit::createMillimeterOfMercury(UErrorCode &status) { - return MeasureUnit::create(17, 6, status); + return MeasureUnit::create(18, 7, status); } MeasureUnit MeasureUnit::getMillimeterOfMercury() { - return MeasureUnit(17, 6); + return MeasureUnit(18, 7); +} + +MeasureUnit *MeasureUnit::createPascal(UErrorCode &status) { + return MeasureUnit::create(18, 8, status); +} + +MeasureUnit MeasureUnit::getPascal() { + return MeasureUnit(18, 8); } MeasureUnit *MeasureUnit::createPoundPerSquareInch(UErrorCode &status) { - return MeasureUnit::create(17, 7, status); + return MeasureUnit::create(18, 9, status); } MeasureUnit MeasureUnit::getPoundPerSquareInch() { - return MeasureUnit(17, 7); + return MeasureUnit(18, 9); } MeasureUnit *MeasureUnit::createKilometerPerHour(UErrorCode &status) { - return MeasureUnit::create(18, 0, status); + return MeasureUnit::create(19, 0, status); } MeasureUnit MeasureUnit::getKilometerPerHour() { - return MeasureUnit(18, 0); + return MeasureUnit(19, 0); } MeasureUnit *MeasureUnit::createKnot(UErrorCode &status) { - return MeasureUnit::create(18, 1, status); + return MeasureUnit::create(19, 1, status); } MeasureUnit MeasureUnit::getKnot() { - return MeasureUnit(18, 1); + return MeasureUnit(19, 1); } MeasureUnit *MeasureUnit::createMeterPerSecond(UErrorCode &status) { - return MeasureUnit::create(18, 2, status); + return MeasureUnit::create(19, 2, status); } MeasureUnit MeasureUnit::getMeterPerSecond() { - return MeasureUnit(18, 2); + return MeasureUnit(19, 2); } MeasureUnit *MeasureUnit::createMilePerHour(UErrorCode &status) { - return MeasureUnit::create(18, 3, status); + return MeasureUnit::create(19, 3, status); } MeasureUnit MeasureUnit::getMilePerHour() { - return MeasureUnit(18, 3); + return MeasureUnit(19, 3); } MeasureUnit *MeasureUnit::createCelsius(UErrorCode &status) { - return MeasureUnit::create(19, 0, status); + return MeasureUnit::create(20, 0, status); } MeasureUnit MeasureUnit::getCelsius() { - return MeasureUnit(19, 0); + return MeasureUnit(20, 0); } MeasureUnit *MeasureUnit::createFahrenheit(UErrorCode &status) { - return MeasureUnit::create(19, 1, status); + return MeasureUnit::create(20, 1, status); } MeasureUnit MeasureUnit::getFahrenheit() { - return MeasureUnit(19, 1); + return MeasureUnit(20, 1); } MeasureUnit *MeasureUnit::createGenericTemperature(UErrorCode &status) { - return MeasureUnit::create(19, 2, status); + return MeasureUnit::create(20, 2, status); } MeasureUnit MeasureUnit::getGenericTemperature() { - return MeasureUnit(19, 2); + return MeasureUnit(20, 2); } MeasureUnit *MeasureUnit::createKelvin(UErrorCode &status) { - return MeasureUnit::create(19, 3, status); + return MeasureUnit::create(20, 3, status); } MeasureUnit MeasureUnit::getKelvin() { - return MeasureUnit(19, 3); + return MeasureUnit(20, 3); } MeasureUnit *MeasureUnit::createNewtonMeter(UErrorCode &status) { - return MeasureUnit::create(20, 0, status); + return MeasureUnit::create(21, 0, status); } MeasureUnit MeasureUnit::getNewtonMeter() { - return MeasureUnit(20, 0); + return MeasureUnit(21, 0); } MeasureUnit *MeasureUnit::createPoundFoot(UErrorCode &status) { - return MeasureUnit::create(20, 1, status); + return MeasureUnit::create(21, 1, status); } MeasureUnit MeasureUnit::getPoundFoot() { - return MeasureUnit(20, 1); + return MeasureUnit(21, 1); } MeasureUnit *MeasureUnit::createAcreFoot(UErrorCode &status) { - return MeasureUnit::create(21, 0, status); + return MeasureUnit::create(22, 0, status); } MeasureUnit MeasureUnit::getAcreFoot() { - return MeasureUnit(21, 0); + return MeasureUnit(22, 0); } MeasureUnit *MeasureUnit::createBarrel(UErrorCode &status) { - return MeasureUnit::create(21, 1, status); + return MeasureUnit::create(22, 1, status); } MeasureUnit MeasureUnit::getBarrel() { - return MeasureUnit(21, 1); + return MeasureUnit(22, 1); } MeasureUnit *MeasureUnit::createBushel(UErrorCode &status) { - return MeasureUnit::create(21, 2, status); + return MeasureUnit::create(22, 2, status); } MeasureUnit MeasureUnit::getBushel() { - return MeasureUnit(21, 2); + return MeasureUnit(22, 2); } MeasureUnit *MeasureUnit::createCentiliter(UErrorCode &status) { - return MeasureUnit::create(21, 3, status); + return MeasureUnit::create(22, 3, status); } MeasureUnit MeasureUnit::getCentiliter() { - return MeasureUnit(21, 3); + return MeasureUnit(22, 3); } MeasureUnit *MeasureUnit::createCubicCentimeter(UErrorCode &status) { - return MeasureUnit::create(21, 4, status); + return MeasureUnit::create(22, 4, status); } MeasureUnit MeasureUnit::getCubicCentimeter() { - return MeasureUnit(21, 4); + return MeasureUnit(22, 4); } MeasureUnit *MeasureUnit::createCubicFoot(UErrorCode &status) { - return MeasureUnit::create(21, 5, status); + return MeasureUnit::create(22, 5, status); } MeasureUnit MeasureUnit::getCubicFoot() { - return MeasureUnit(21, 5); + return MeasureUnit(22, 5); } MeasureUnit *MeasureUnit::createCubicInch(UErrorCode &status) { - return MeasureUnit::create(21, 6, status); + return MeasureUnit::create(22, 6, status); } MeasureUnit MeasureUnit::getCubicInch() { - return MeasureUnit(21, 6); + return MeasureUnit(22, 6); } MeasureUnit *MeasureUnit::createCubicKilometer(UErrorCode &status) { - return MeasureUnit::create(21, 7, status); + return MeasureUnit::create(22, 7, status); } MeasureUnit MeasureUnit::getCubicKilometer() { - return MeasureUnit(21, 7); + return MeasureUnit(22, 7); } MeasureUnit *MeasureUnit::createCubicMeter(UErrorCode &status) { - return MeasureUnit::create(21, 8, status); + return MeasureUnit::create(22, 8, status); } MeasureUnit MeasureUnit::getCubicMeter() { - return MeasureUnit(21, 8); + return MeasureUnit(22, 8); } MeasureUnit *MeasureUnit::createCubicMile(UErrorCode &status) { - return MeasureUnit::create(21, 9, status); + return MeasureUnit::create(22, 9, status); } MeasureUnit MeasureUnit::getCubicMile() { - return MeasureUnit(21, 9); + return MeasureUnit(22, 9); } MeasureUnit *MeasureUnit::createCubicYard(UErrorCode &status) { - return MeasureUnit::create(21, 10, status); + return MeasureUnit::create(22, 10, status); } MeasureUnit MeasureUnit::getCubicYard() { - return MeasureUnit(21, 10); + return MeasureUnit(22, 10); } MeasureUnit *MeasureUnit::createCup(UErrorCode &status) { - return MeasureUnit::create(21, 11, status); + return MeasureUnit::create(22, 11, status); } MeasureUnit MeasureUnit::getCup() { - return MeasureUnit(21, 11); + return MeasureUnit(22, 11); } MeasureUnit *MeasureUnit::createCupMetric(UErrorCode &status) { - return MeasureUnit::create(21, 12, status); + return MeasureUnit::create(22, 12, status); } MeasureUnit MeasureUnit::getCupMetric() { - return MeasureUnit(21, 12); + return MeasureUnit(22, 12); } MeasureUnit *MeasureUnit::createDeciliter(UErrorCode &status) { - return MeasureUnit::create(21, 13, status); + return MeasureUnit::create(22, 13, status); } MeasureUnit MeasureUnit::getDeciliter() { - return MeasureUnit(21, 13); + return MeasureUnit(22, 13); } MeasureUnit *MeasureUnit::createFluidOunce(UErrorCode &status) { - return MeasureUnit::create(21, 14, status); + return MeasureUnit::create(22, 14, status); } MeasureUnit MeasureUnit::getFluidOunce() { - return MeasureUnit(21, 14); + return MeasureUnit(22, 14); } MeasureUnit *MeasureUnit::createFluidOunceImperial(UErrorCode &status) { - return MeasureUnit::create(21, 15, status); + return MeasureUnit::create(22, 15, status); } MeasureUnit MeasureUnit::getFluidOunceImperial() { - return MeasureUnit(21, 15); + return MeasureUnit(22, 15); } MeasureUnit *MeasureUnit::createGallon(UErrorCode &status) { - return MeasureUnit::create(21, 16, status); + return MeasureUnit::create(22, 16, status); } MeasureUnit MeasureUnit::getGallon() { - return MeasureUnit(21, 16); + return MeasureUnit(22, 16); } MeasureUnit *MeasureUnit::createGallonImperial(UErrorCode &status) { - return MeasureUnit::create(21, 17, status); + return MeasureUnit::create(22, 17, status); } MeasureUnit MeasureUnit::getGallonImperial() { - return MeasureUnit(21, 17); + return MeasureUnit(22, 17); } MeasureUnit *MeasureUnit::createHectoliter(UErrorCode &status) { - return MeasureUnit::create(21, 18, status); + return MeasureUnit::create(22, 18, status); } MeasureUnit MeasureUnit::getHectoliter() { - return MeasureUnit(21, 18); + return MeasureUnit(22, 18); } MeasureUnit *MeasureUnit::createLiter(UErrorCode &status) { - return MeasureUnit::create(21, 19, status); + return MeasureUnit::create(22, 19, status); } MeasureUnit MeasureUnit::getLiter() { - return MeasureUnit(21, 19); + return MeasureUnit(22, 19); } MeasureUnit *MeasureUnit::createMegaliter(UErrorCode &status) { - return MeasureUnit::create(21, 20, status); + return MeasureUnit::create(22, 20, status); } MeasureUnit MeasureUnit::getMegaliter() { - return MeasureUnit(21, 20); + return MeasureUnit(22, 20); } MeasureUnit *MeasureUnit::createMilliliter(UErrorCode &status) { - return MeasureUnit::create(21, 21, status); + return MeasureUnit::create(22, 21, status); } MeasureUnit MeasureUnit::getMilliliter() { - return MeasureUnit(21, 21); + return MeasureUnit(22, 21); } MeasureUnit *MeasureUnit::createPint(UErrorCode &status) { - return MeasureUnit::create(21, 22, status); + return MeasureUnit::create(22, 22, status); } MeasureUnit MeasureUnit::getPint() { - return MeasureUnit(21, 22); + return MeasureUnit(22, 22); } MeasureUnit *MeasureUnit::createPintMetric(UErrorCode &status) { - return MeasureUnit::create(21, 23, status); + return MeasureUnit::create(22, 23, status); } MeasureUnit MeasureUnit::getPintMetric() { - return MeasureUnit(21, 23); + return MeasureUnit(22, 23); } MeasureUnit *MeasureUnit::createQuart(UErrorCode &status) { - return MeasureUnit::create(21, 24, status); + return MeasureUnit::create(22, 24, status); } MeasureUnit MeasureUnit::getQuart() { - return MeasureUnit(21, 24); + return MeasureUnit(22, 24); } MeasureUnit *MeasureUnit::createTablespoon(UErrorCode &status) { - return MeasureUnit::create(21, 25, status); + return MeasureUnit::create(22, 25, status); } MeasureUnit MeasureUnit::getTablespoon() { - return MeasureUnit(21, 25); + return MeasureUnit(22, 25); } MeasureUnit *MeasureUnit::createTeaspoon(UErrorCode &status) { - return MeasureUnit::create(21, 26, status); + return MeasureUnit::create(22, 26, status); } MeasureUnit MeasureUnit::getTeaspoon() { - return MeasureUnit(21, 26); + return MeasureUnit(22, 26); } // End generated code @@ -1923,7 +2027,7 @@ MeasureUnit &MeasureUnit::operator=(const MeasureUnit &other) { return *this; } -UObject *MeasureUnit::clone() const { +MeasureUnit *MeasureUnit::clone() const { return new MeasureUnit(*this); } diff --git a/source/i18n/measure.cpp b/source/i18n/measure.cpp index d9084f8..bffa442 100644 --- a/source/i18n/measure.cpp +++ b/source/i18n/measure.cpp @@ -43,12 +43,12 @@ Measure& Measure::operator=(const Measure& other) { if (this != &other) { delete unit; number = other.number; - unit = (MeasureUnit*) other.unit->clone(); + unit = other.unit->clone(); } return *this; } -UObject *Measure::clone() const { +Measure *Measure::clone() const { return new Measure(*this); } diff --git a/source/i18n/msgfmt.cpp b/source/i18n/msgfmt.cpp index e39b26b..3ca368e 100644 --- a/source/i18n/msgfmt.cpp +++ b/source/i18n/msgfmt.cpp @@ -436,7 +436,7 @@ MessageFormat::operator==(const Format& rhs) const // ------------------------------------- // Creates a copy of this MessageFormat, the caller owns the copy. -Format* +MessageFormat* MessageFormat::clone() const { return new MessageFormat(*this); @@ -813,7 +813,7 @@ MessageFormat::getFormats(int32_t& cnt) const // Get total required capacity first (it's refreshed on each call). int32_t totalCapacity = 0; - for (int32_t partIndex = 0; (partIndex = nextTopLevelArgStart(partIndex)) >= 0; ++totalCapacity) {}; + for (int32_t partIndex = 0; (partIndex = nextTopLevelArgStart(partIndex)) >= 0; ++totalCapacity) {} MessageFormat* t = const_cast (this); cnt = 0; @@ -1873,7 +1873,7 @@ UBool MessageFormat::DummyFormat::operator==(const Format&) const { return TRUE; } -Format* MessageFormat::DummyFormat::clone() const { +MessageFormat::DummyFormat* MessageFormat::DummyFormat::clone() const { return new DummyFormat(); } diff --git a/source/i18n/name2uni.cpp b/source/i18n/name2uni.cpp index 69e92b8..52bab80 100644 --- a/source/i18n/name2uni.cpp +++ b/source/i18n/name2uni.cpp @@ -100,7 +100,7 @@ NameUnicodeTransliterator::NameUnicodeTransliterator(const NameUnicodeTransliter /** * Transliterator API. */ -Transliterator* NameUnicodeTransliterator::clone(void) const { +NameUnicodeTransliterator* NameUnicodeTransliterator::clone() const { return new NameUnicodeTransliterator(*this); } diff --git a/source/i18n/name2uni.h b/source/i18n/name2uni.h index 4c743de..44ad85f 100644 --- a/source/i18n/name2uni.h +++ b/source/i18n/name2uni.h @@ -49,7 +49,7 @@ public: * Transliterator API. * @return A copy of the object. */ - virtual Transliterator* clone(void) const; + virtual NameUnicodeTransliterator* clone() const; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. diff --git a/source/i18n/nortrans.cpp b/source/i18n/nortrans.cpp index 589c824..6a8d2c7 100644 --- a/source/i18n/nortrans.cpp +++ b/source/i18n/nortrans.cpp @@ -92,7 +92,7 @@ NormalizationTransliterator::NormalizationTransliterator(const NormalizationTran /** * Transliterator API. */ -Transliterator* NormalizationTransliterator::clone(void) const { +NormalizationTransliterator* NormalizationTransliterator::clone() const { return new NormalizationTransliterator(*this); } diff --git a/source/i18n/nortrans.h b/source/i18n/nortrans.h index d309452..198ed29 100644 --- a/source/i18n/nortrans.h +++ b/source/i18n/nortrans.h @@ -44,7 +44,7 @@ class NormalizationTransliterator : public Transliterator { * Transliterator API. * @return A copy of the object. */ - virtual Transliterator* clone(void) const; + virtual NormalizationTransliterator* clone() const; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. diff --git a/source/i18n/nounit.cpp b/source/i18n/nounit.cpp index db07387..076f76f 100644 --- a/source/i18n/nounit.cpp +++ b/source/i18n/nounit.cpp @@ -29,7 +29,7 @@ NoUnit::NoUnit(const char* subtype) { NoUnit::NoUnit(const NoUnit& other) : MeasureUnit(other) { } -UObject* NoUnit::clone() const { +NoUnit* NoUnit::clone() const { return new NoUnit(*this); } diff --git a/source/i18n/nultrans.cpp b/source/i18n/nultrans.cpp index 62d1290..439cc55 100644 --- a/source/i18n/nultrans.cpp +++ b/source/i18n/nultrans.cpp @@ -24,7 +24,7 @@ NullTransliterator::NullTransliterator() : Transliterator(UNICODE_STRING_SIMPLE( NullTransliterator::~NullTransliterator() {} -Transliterator* NullTransliterator::clone(void) const { +NullTransliterator* NullTransliterator::clone() const { return new NullTransliterator(); } diff --git a/source/i18n/nultrans.h b/source/i18n/nultrans.h index a01b04e..36c92fa 100644 --- a/source/i18n/nultrans.h +++ b/source/i18n/nultrans.h @@ -45,7 +45,7 @@ public: * Transliterator API. * @internal Use transliterator factory methods instead since this class will be removed in that release. */ - virtual Transliterator* clone(void) const; + virtual NullTransliterator* clone() const; /** * Implements {@link Transliterator#handleTransliterate}. diff --git a/source/i18n/number_affixutils.cpp b/source/i18n/number_affixutils.cpp index 3eb9c59..1039a84 100644 --- a/source/i18n/number_affixutils.cpp +++ b/source/i18n/number_affixutils.cpp @@ -156,7 +156,7 @@ Field AffixUtils::getFieldForType(AffixPatternType type) { } int32_t -AffixUtils::unescape(const UnicodeString &affixPattern, NumberStringBuilder &output, int32_t position, +AffixUtils::unescape(const UnicodeString &affixPattern, FormattedStringBuilder &output, int32_t position, const SymbolProvider &provider, Field field, UErrorCode &status) { int32_t length = 0; AffixTag tag; @@ -230,7 +230,7 @@ UnicodeString AffixUtils::replaceType(const UnicodeString &affixPattern, AffixPa UnicodeString output(affixPattern); // copy if (affixPattern.length() == 0) { return output; - }; + } AffixTag tag; while (hasNext(tag, affixPattern)) { tag = nextToken(tag, affixPattern, status); @@ -246,7 +246,7 @@ bool AffixUtils::containsOnlySymbolsAndIgnorables(const UnicodeString& affixPatt const UnicodeSet& ignorables, UErrorCode& status) { if (affixPattern.length() == 0) { return true; - }; + } AffixTag tag; while (hasNext(tag, affixPattern)) { tag = nextToken(tag, affixPattern, status); @@ -262,7 +262,7 @@ void AffixUtils::iterateWithConsumer(const UnicodeString& affixPattern, TokenCon UErrorCode& status) { if (affixPattern.length() == 0) { return; - }; + } AffixTag tag; while (hasNext(tag, affixPattern)) { tag = nextToken(tag, affixPattern, status); diff --git a/source/i18n/number_affixutils.h b/source/i18n/number_affixutils.h index f011a54..5cfde61 100644 --- a/source/i18n/number_affixutils.h +++ b/source/i18n/number_affixutils.h @@ -11,7 +11,7 @@ #include "number_types.h" #include "unicode/stringpiece.h" #include "unicode/unistr.h" -#include "number_stringbuilder.h" +#include "formatted_string_builder.h" #include "unicode/uniset.h" U_NAMESPACE_BEGIN namespace number { @@ -134,16 +134,16 @@ class U_I18N_API AffixUtils { /** * Executes the unescape state machine. Replaces the unquoted characters "-", "+", "%", "‰", and * "¤" with the corresponding symbols provided by the {@link SymbolProvider}, and inserts the - * result into the NumberStringBuilder at the requested location. + * result into the FormattedStringBuilder at the requested location. * *

    Example input: "'-'¤x"; example output: "-$x" * * @param affixPattern The original string to be unescaped. - * @param output The NumberStringBuilder to mutate with the result. - * @param position The index into the NumberStringBuilder to insert the string. + * @param output The FormattedStringBuilder to mutate with the result. + * @param position The index into the FormattedStringBuilder to insert the string. * @param provider An object to generate locale symbols. */ - static int32_t unescape(const UnicodeString& affixPattern, NumberStringBuilder& output, + static int32_t unescape(const UnicodeString& affixPattern, FormattedStringBuilder& output, int32_t position, const SymbolProvider& provider, Field field, UErrorCode& status); diff --git a/source/i18n/number_asformat.cpp b/source/i18n/number_asformat.cpp index 9d3ea69..e876174 100644 --- a/source/i18n/number_asformat.cpp +++ b/source/i18n/number_asformat.cpp @@ -43,7 +43,7 @@ UBool LocalizedNumberFormatterAsFormat::operator==(const Format& other) const { return fFormatter.toSkeleton(localStatus) == _other->fFormatter.toSkeleton(localStatus); } -Format* LocalizedNumberFormatterAsFormat::clone() const { +LocalizedNumberFormatterAsFormat* LocalizedNumberFormatterAsFormat::clone() const { return new LocalizedNumberFormatterAsFormat(*this); } @@ -62,12 +62,12 @@ UnicodeString& LocalizedNumberFormatterAsFormat::format(const Formattable& obj, // always return first occurrence: pos.setBeginIndex(0); pos.setEndIndex(0); - bool found = data.getStringRef().nextFieldPosition(pos, status); + bool found = data.nextFieldPosition(pos, status); if (found && appendTo.length() != 0) { pos.setBeginIndex(pos.getBeginIndex() + appendTo.length()); pos.setEndIndex(pos.getEndIndex() + appendTo.length()); } - appendTo.append(data.getStringRef().toTempUnicodeString()); + appendTo.append(data.toTempString(status)); return appendTo; } @@ -84,10 +84,10 @@ UnicodeString& LocalizedNumberFormatterAsFormat::format(const Formattable& obj, if (U_FAILURE(status)) { return appendTo; } - appendTo.append(data.getStringRef().toTempUnicodeString()); + appendTo.append(data.toTempString(status)); if (posIter != nullptr) { FieldPositionIteratorHandler fpih(posIter, status); - data.getStringRef().getAllFieldPositions(fpih, status); + data.getAllFieldPositions(fpih, status); } return appendTo; } diff --git a/source/i18n/number_asformat.h b/source/i18n/number_asformat.h index bf82d72..7b0a1de 100644 --- a/source/i18n/number_asformat.h +++ b/source/i18n/number_asformat.h @@ -45,7 +45,7 @@ class U_I18N_API LocalizedNumberFormatterAsFormat : public Format { /** * Creates a copy of this object. */ - Format* clone() const U_OVERRIDE; + LocalizedNumberFormatterAsFormat* clone() const U_OVERRIDE; /** * Formats a Number using the wrapped LocalizedNumberFormatter. The provided formattable must be a diff --git a/source/i18n/number_compact.cpp b/source/i18n/number_compact.cpp index f330251..3d25999 100644 --- a/source/i18n/number_compact.cpp +++ b/source/i18n/number_compact.cpp @@ -272,15 +272,15 @@ void CompactHandler::processQuantity(DecimalQuantity &quantity, MicroProps &micr parent->processQuantity(quantity, micros, status); if (U_FAILURE(status)) { return; } - // Treat zero as if it had magnitude 0 + // Treat zero, NaN, and infinity as if they had magnitude 0 int32_t magnitude; - if (quantity.isZero()) { + if (quantity.isZeroish()) { magnitude = 0; micros.rounder.apply(quantity, status); } else { // TODO: Revisit chooseMultiplierAndApply int32_t multiplier = micros.rounder.chooseMultiplierAndApply(quantity, data, status); - magnitude = quantity.isZero() ? 0 : quantity.getMagnitude(); + magnitude = quantity.isZeroish() ? 0 : quantity.getMagnitude(); magnitude -= multiplier; } diff --git a/source/i18n/number_currencysymbols.cpp b/source/i18n/number_currencysymbols.cpp index 0b79d65..4d6fb2c 100644 --- a/source/i18n/number_currencysymbols.cpp +++ b/source/i18n/number_currencysymbols.cpp @@ -53,13 +53,12 @@ UnicodeString CurrencySymbols::getCurrencySymbol(UErrorCode& status) const { UnicodeString CurrencySymbols::loadSymbol(UCurrNameStyle selector, UErrorCode& status) const { const char16_t* isoCode = fCurrency.getISOCurrency(); - UBool ignoredIsChoiceFormatFillIn = FALSE; int32_t symbolLen = 0; const char16_t* symbol = ucurr_getName( isoCode, fLocaleName.data(), selector, - &ignoredIsChoiceFormatFillIn, + nullptr /* isChoiceFormat */, &symbolLen, &status); // If given an unknown currency, ucurr_getName returns the input string, which we can't alias safely! @@ -82,12 +81,11 @@ UnicodeString CurrencySymbols::getIntlCurrencySymbol(UErrorCode&) const { UnicodeString CurrencySymbols::getPluralName(StandardPlural::Form plural, UErrorCode& status) const { const char16_t* isoCode = fCurrency.getISOCurrency(); - UBool isChoiceFormat = FALSE; int32_t symbolLen = 0; const char16_t* symbol = ucurr_getPluralName( isoCode, fLocaleName.data(), - &isChoiceFormat, + nullptr /* isChoiceFormat */, StandardPlural::getKeyword(plural), &symbolLen, &status); diff --git a/source/i18n/number_decimalquantity.cpp b/source/i18n/number_decimalquantity.cpp index d899c27..2c4c2ce 100644 --- a/source/i18n/number_decimalquantity.cpp +++ b/source/i18n/number_decimalquantity.cpp @@ -205,7 +205,7 @@ void DecimalQuantity::roundToIncrement(double roundingIncrement, RoundingMode ro } void DecimalQuantity::multiplyBy(const DecNum& multiplicand, UErrorCode& status) { - if (isInfinite() || isZero() || isNaN()) { + if (isZeroish()) { return; } // Convert to DecNum, multiply, and convert back. @@ -218,7 +218,7 @@ void DecimalQuantity::multiplyBy(const DecNum& multiplicand, UErrorCode& status) } void DecimalQuantity::divideBy(const DecNum& divisor, UErrorCode& status) { - if (isInfinite() || isZero() || isNaN()) { + if (isZeroish()) { return; } // Convert to DecNum, multiply, and convert back. @@ -318,8 +318,14 @@ bool DecimalQuantity::isNegative() const { return (flags & NEGATIVE_FLAG) != 0; } -int8_t DecimalQuantity::signum() const { - return isNegative() ? -1 : isZero() ? 0 : 1; +Signum DecimalQuantity::signum() const { + if (isNegative()) { + return SIGNUM_NEG; + } else if (isZeroish() && !isInfinite()) { + return SIGNUM_ZERO; + } else { + return SIGNUM_POS; + } } bool DecimalQuantity::isInfinite() const { @@ -330,7 +336,7 @@ bool DecimalQuantity::isNaN() const { return (flags & NAN_FLAG) != 0; } -bool DecimalQuantity::isZero() const { +bool DecimalQuantity::isZeroish() const { return precision == 0; } @@ -548,7 +554,10 @@ uint64_t DecimalQuantity::toFractionLong(bool includeTrailingZeros) const { } bool DecimalQuantity::fitsInLong(bool ignoreFraction) const { - if (isZero()) { + if (isInfinite() || isNaN()) { + return false; + } + if (isZeroish()) { return true; } if (scale < 0 && !ignoreFraction) { diff --git a/source/i18n/number_decimalquantity.h b/source/i18n/number_decimalquantity.h index 06cc836..4ec6c5a 100644 --- a/source/i18n/number_decimalquantity.h +++ b/source/i18n/number_decimalquantity.h @@ -146,14 +146,17 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory { */ int32_t getMagnitude() const; - /** @return Whether the value represented by this {@link DecimalQuantity} is zero. */ - bool isZero() const; + /** + * @return Whether the value represented by this {@link DecimalQuantity} is + * zero, infinity, or NaN. + */ + bool isZeroish() const; /** @return Whether the value represented by this {@link DecimalQuantity} is less than zero. */ bool isNegative() const; - /** @return -1 if the value is negative; 1 if positive; or 0 if zero. */ - int8_t signum() const; + /** @return The appropriate value from the Signum enum. */ + Signum signum() const; /** @return Whether the value represented by this {@link DecimalQuantity} is infinite. */ bool isInfinite() const U_OVERRIDE; diff --git a/source/i18n/number_decnum.h b/source/i18n/number_decnum.h index a779347..0c7399d 100644 --- a/source/i18n/number_decnum.h +++ b/source/i18n/number_decnum.h @@ -55,6 +55,8 @@ class U_I18N_API DecNum : public UMemory { bool isZero() const; + void toString(ByteSink& output, UErrorCode& status) const; + inline const decNumber* getRawDecNumber() const { return fData.getAlias(); } diff --git a/source/i18n/number_fluent.cpp b/source/i18n/number_fluent.cpp index 09e0905..2dbd2fa 100644 --- a/source/i18n/number_fluent.cpp +++ b/source/i18n/number_fluent.cpp @@ -696,8 +696,8 @@ void LocalizedNumberFormatter::formatImpl(impl::UFormattedNumberData* results, U void LocalizedNumberFormatter::getAffixImpl(bool isPrefix, bool isNegative, UnicodeString& result, UErrorCode& status) const { - NumberStringBuilder string; - auto signum = static_cast(isNegative ? -1 : 1); + FormattedStringBuilder string; + auto signum = static_cast(isNegative ? SIGNUM_NEG : SIGNUM_POS); // Always return affixes for plural form OTHER. static const StandardPlural::Form plural = StandardPlural::OTHER; int32_t prefixLength; diff --git a/source/i18n/number_formatimpl.cpp b/source/i18n/number_formatimpl.cpp index 08b833b..2e2c4a9 100644 --- a/source/i18n/number_formatimpl.cpp +++ b/source/i18n/number_formatimpl.cpp @@ -72,7 +72,7 @@ NumberFormatterImpl::NumberFormatterImpl(const MacroProps& macros, UErrorCode& s } int32_t NumberFormatterImpl::formatStatic(const MacroProps& macros, DecimalQuantity& inValue, - NumberStringBuilder& outString, UErrorCode& status) { + FormattedStringBuilder& outString, UErrorCode& status) { NumberFormatterImpl impl(macros, false, status); MicroProps& micros = impl.preProcessUnsafe(inValue, status); if (U_FAILURE(status)) { return 0; } @@ -81,9 +81,9 @@ int32_t NumberFormatterImpl::formatStatic(const MacroProps& macros, DecimalQuant return length; } -int32_t NumberFormatterImpl::getPrefixSuffixStatic(const MacroProps& macros, int8_t signum, +int32_t NumberFormatterImpl::getPrefixSuffixStatic(const MacroProps& macros, Signum signum, StandardPlural::Form plural, - NumberStringBuilder& outString, UErrorCode& status) { + FormattedStringBuilder& outString, UErrorCode& status) { NumberFormatterImpl impl(macros, false, status); return impl.getPrefixSuffixUnsafe(signum, plural, outString, status); } @@ -93,7 +93,7 @@ int32_t NumberFormatterImpl::getPrefixSuffixStatic(const MacroProps& macros, int // The "unsafe" method simply re-uses fMicros, eliminating the extra copy operation. // See MicroProps::processQuantity() for details. -int32_t NumberFormatterImpl::format(DecimalQuantity& inValue, NumberStringBuilder& outString, +int32_t NumberFormatterImpl::format(DecimalQuantity& inValue, FormattedStringBuilder& outString, UErrorCode& status) const { MicroProps micros; preProcess(inValue, micros, status); @@ -129,8 +129,8 @@ MicroProps& NumberFormatterImpl::preProcessUnsafe(DecimalQuantity& inValue, UErr return fMicros; } -int32_t NumberFormatterImpl::getPrefixSuffix(int8_t signum, StandardPlural::Form plural, - NumberStringBuilder& outString, UErrorCode& status) const { +int32_t NumberFormatterImpl::getPrefixSuffix(Signum signum, StandardPlural::Form plural, + FormattedStringBuilder& outString, UErrorCode& status) const { if (U_FAILURE(status)) { return 0; } // #13453: DecimalFormat wants the affixes from the pattern only (modMiddle, aka pattern modifier). // Safe path: use fImmutablePatternModifier. @@ -140,8 +140,8 @@ int32_t NumberFormatterImpl::getPrefixSuffix(int8_t signum, StandardPlural::Form return modifier->getPrefixLength(); } -int32_t NumberFormatterImpl::getPrefixSuffixUnsafe(int8_t signum, StandardPlural::Form plural, - NumberStringBuilder& outString, UErrorCode& status) { +int32_t NumberFormatterImpl::getPrefixSuffixUnsafe(Signum signum, StandardPlural::Form plural, + FormattedStringBuilder& outString, UErrorCode& status) { if (U_FAILURE(status)) { return 0; } // #13453: DecimalFormat wants the affixes from the pattern only (modMiddle, aka pattern modifier). // Unsafe path: use fPatternModifier. @@ -215,7 +215,12 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe, if (macros.symbols.isDecimalFormatSymbols()) { fMicros.symbols = macros.symbols.getDecimalFormatSymbols(); } else { - fMicros.symbols = new DecimalFormatSymbols(macros.locale, *ns, status); + auto newSymbols = new DecimalFormatSymbols(macros.locale, *ns, status); + if (newSymbols == nullptr) { + status = U_MEMORY_ALLOCATION_ERROR; + return nullptr; + } + fMicros.symbols = newSymbols; // Give ownership to the NumberFormatterImpl. fSymbols.adoptInstead(fMicros.symbols); } @@ -229,7 +234,11 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe, if (info.exists) { pattern = info.pattern; // It's clunky to clone an object here, but this code is not frequently executed. - auto* symbols = new DecimalFormatSymbols(*fMicros.symbols); + auto symbols = new DecimalFormatSymbols(*fMicros.symbols); + if (symbols == nullptr) { + status = U_MEMORY_ALLOCATION_ERROR; + return nullptr; + } fMicros.symbols = symbols; fSymbols.adoptInstead(symbols); symbols->setSymbol( @@ -260,6 +269,10 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe, pattern = utils::getPatternForStyle(macros.locale, nsName, patternStyle, status); } auto patternInfo = new ParsedPatternInfo(); + if (patternInfo == nullptr) { + status = U_MEMORY_ALLOCATION_ERROR; + return nullptr; + } fPatternInfo.adoptInstead(patternInfo); PatternParser::parseToPatternInfo(UnicodeString(pattern), *patternInfo, status); @@ -337,7 +350,12 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe, // Inner modifier (scientific notation) if (macros.notation.fType == Notation::NTN_SCIENTIFIC) { - fScientificHandler.adoptInstead(new ScientificHandler(¯os.notation, fMicros.symbols, chain)); + auto newScientificHandler = new ScientificHandler(¯os.notation, fMicros.symbols, chain); + if (newScientificHandler == nullptr) { + status = U_MEMORY_ALLOCATION_ERROR; + return nullptr; + } + fScientificHandler.adoptInstead(newScientificHandler); chain = fScientificHandler.getAlias(); } else { // No inner modifier required @@ -346,6 +364,10 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe, // Middle modifier (patterns, positive/negative, currency symbols, percent) auto patternModifier = new MutablePatternModifier(false); + if (patternModifier == nullptr) { + status = U_MEMORY_ALLOCATION_ERROR; + return nullptr; + } fPatternModifier.adoptInstead(patternModifier); patternModifier->setPatternInfo( macros.affixProvider != nullptr ? macros.affixProvider @@ -401,16 +423,20 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe, if (macros.notation.fType == Notation::NTN_COMPACT) { CompactType compactType = (isCurrency && unitWidth != UNUM_UNIT_WIDTH_FULL_NAME) ? CompactType::TYPE_CURRENCY : CompactType::TYPE_DECIMAL; - fCompactHandler.adoptInstead( - new CompactHandler( - macros.notation.fUnion.compactStyle, - macros.locale, - nsName, - compactType, - resolvePluralRules(macros.rules, macros.locale, status), - safe ? patternModifier : nullptr, - chain, - status)); + auto newCompactHandler = new CompactHandler( + macros.notation.fUnion.compactStyle, + macros.locale, + nsName, + compactType, + resolvePluralRules(macros.rules, macros.locale, status), + safe ? patternModifier : nullptr, + chain, + status); + if (newCompactHandler == nullptr) { + status = U_MEMORY_ALLOCATION_ERROR; + return nullptr; + } + fCompactHandler.adoptInstead(newCompactHandler); chain = fCompactHandler.getAlias(); } @@ -430,7 +456,7 @@ NumberFormatterImpl::resolvePluralRules(const PluralRules* rulesPtr, const Local return fRules.getAlias(); } -int32_t NumberFormatterImpl::writeAffixes(const MicroProps& micros, NumberStringBuilder& string, +int32_t NumberFormatterImpl::writeAffixes(const MicroProps& micros, FormattedStringBuilder& string, int32_t start, int32_t end, UErrorCode& status) { // Always apply the inner modifier (which is "strong"). int32_t length = micros.modInner->apply(string, start, end, status); @@ -445,7 +471,7 @@ int32_t NumberFormatterImpl::writeAffixes(const MicroProps& micros, NumberString } int32_t NumberFormatterImpl::writeNumber(const MicroProps& micros, DecimalQuantity& quantity, - NumberStringBuilder& string, int32_t index, + FormattedStringBuilder& string, int32_t index, UErrorCode& status) { int32_t length = 0; if (quantity.isInfinite()) { @@ -487,7 +513,7 @@ int32_t NumberFormatterImpl::writeNumber(const MicroProps& micros, DecimalQuanti } int32_t NumberFormatterImpl::writeIntegerDigits(const MicroProps& micros, DecimalQuantity& quantity, - NumberStringBuilder& string, int32_t index, + FormattedStringBuilder& string, int32_t index, UErrorCode& status) { int length = 0; int integerCount = quantity.getUpperDisplayMagnitude() + 1; @@ -513,7 +539,7 @@ int32_t NumberFormatterImpl::writeIntegerDigits(const MicroProps& micros, Decima } int32_t NumberFormatterImpl::writeFractionDigits(const MicroProps& micros, DecimalQuantity& quantity, - NumberStringBuilder& string, int32_t index, + FormattedStringBuilder& string, int32_t index, UErrorCode& status) { int length = 0; int fractionCount = -quantity.getLowerDisplayMagnitude(); diff --git a/source/i18n/number_formatimpl.h b/source/i18n/number_formatimpl.h index fd8708c..206c5f5 100644 --- a/source/i18n/number_formatimpl.h +++ b/source/i18n/number_formatimpl.h @@ -8,7 +8,7 @@ #define __NUMBER_FORMATIMPL_H__ #include "number_types.h" -#include "number_stringbuilder.h" +#include "formatted_string_builder.h" #include "number_patternstring.h" #include "number_utils.h" #include "number_patternmodifier.h" @@ -35,7 +35,7 @@ class NumberFormatterImpl : public UMemory { * Builds and evaluates an "unsafe" MicroPropsGenerator, which is cheaper but can be used only once. */ static int32_t - formatStatic(const MacroProps ¯os, DecimalQuantity &inValue, NumberStringBuilder &outString, + formatStatic(const MacroProps ¯os, DecimalQuantity &inValue, FormattedStringBuilder &outString, UErrorCode &status); /** @@ -44,14 +44,14 @@ class NumberFormatterImpl : public UMemory { * @return The index into the output at which the prefix ends and the suffix starts; in other words, * the prefix length. */ - static int32_t getPrefixSuffixStatic(const MacroProps& macros, int8_t signum, - StandardPlural::Form plural, NumberStringBuilder& outString, + static int32_t getPrefixSuffixStatic(const MacroProps& macros, Signum signum, + StandardPlural::Form plural, FormattedStringBuilder& outString, UErrorCode& status); /** * Evaluates the "safe" MicroPropsGenerator created by "fromMacros". */ - int32_t format(DecimalQuantity& inValue, NumberStringBuilder& outString, UErrorCode& status) const; + int32_t format(DecimalQuantity& inValue, FormattedStringBuilder& outString, UErrorCode& status) const; /** * Like format(), but saves the result into an output MicroProps without additional processing. @@ -61,7 +61,7 @@ class NumberFormatterImpl : public UMemory { /** * Like getPrefixSuffixStatic() but uses the safe compiled object. */ - int32_t getPrefixSuffix(int8_t signum, StandardPlural::Form plural, NumberStringBuilder& outString, + int32_t getPrefixSuffix(Signum signum, StandardPlural::Form plural, FormattedStringBuilder& outString, UErrorCode& status) const; const MicroProps& getRawMicroProps() const { @@ -73,12 +73,12 @@ class NumberFormatterImpl : public UMemory { * This method formats only the main number, not affixes. */ static int32_t writeNumber(const MicroProps& micros, DecimalQuantity& quantity, - NumberStringBuilder& string, int32_t index, UErrorCode& status); + FormattedStringBuilder& string, int32_t index, UErrorCode& status); /** * Adds the affixes. Intended to be called immediately after formatNumber. */ - static int32_t writeAffixes(const MicroProps& micros, NumberStringBuilder& string, int32_t start, + static int32_t writeAffixes(const MicroProps& micros, FormattedStringBuilder& string, int32_t start, int32_t end, UErrorCode& status); private: @@ -109,8 +109,8 @@ class NumberFormatterImpl : public UMemory { MicroProps& preProcessUnsafe(DecimalQuantity &inValue, UErrorCode &status); - int32_t getPrefixSuffixUnsafe(int8_t signum, StandardPlural::Form plural, - NumberStringBuilder& outString, UErrorCode& status); + int32_t getPrefixSuffixUnsafe(Signum signum, StandardPlural::Form plural, + FormattedStringBuilder& outString, UErrorCode& status); /** * If rulesPtr is non-null, return it. Otherwise, return a PluralRules owned by this object for the @@ -136,11 +136,11 @@ class NumberFormatterImpl : public UMemory { macrosToMicroGenerator(const MacroProps ¯os, bool safe, UErrorCode &status); static int32_t - writeIntegerDigits(const MicroProps µs, DecimalQuantity &quantity, NumberStringBuilder &string, + writeIntegerDigits(const MicroProps µs, DecimalQuantity &quantity, FormattedStringBuilder &string, int32_t index, UErrorCode &status); static int32_t - writeFractionDigits(const MicroProps µs, DecimalQuantity &quantity, NumberStringBuilder &string, + writeFractionDigits(const MicroProps µs, DecimalQuantity &quantity, FormattedStringBuilder &string, int32_t index, UErrorCode &status); }; diff --git a/source/i18n/number_longnames.cpp b/source/i18n/number_longnames.cpp index 0cd1600..817aa0e 100644 --- a/source/i18n/number_longnames.cpp +++ b/source/i18n/number_longnames.cpp @@ -148,12 +148,11 @@ void getCurrencyLongNameData(const Locale &locale, const CurrencyUnit ¤cy, if (pattern.isBogus()) { continue; } - UBool isChoiceFormat = FALSE; int32_t longNameLen = 0; const char16_t *longName = ucurr_getPluralName( currency.getISOCurrency(), locale.getName(), - &isChoiceFormat, + nullptr /* isChoiceFormat */, StandardPlural::getKeyword(static_cast(i)), &longNameLen, &status); @@ -265,6 +264,26 @@ UnicodeString LongNameHandler::getUnitDisplayName( return simpleFormats[DNAM_INDEX]; } +UnicodeString LongNameHandler::getUnitPattern( + const Locale& loc, + const MeasureUnit& unit, + UNumberUnitWidth width, + StandardPlural::Form pluralForm, + UErrorCode& status) { + if (U_FAILURE(status)) { + return ICU_Utility::makeBogusString(); + } + UnicodeString simpleFormats[ARRAY_LENGTH]; + getMeasureData(loc, unit, width, simpleFormats, status); + // The above already handles fallback from other widths to short + if (U_FAILURE(status)) { + return ICU_Utility::makeBogusString(); + } + // Now handle fallback from other plural forms to OTHER + return (!(simpleFormats[pluralForm]).isBogus())? simpleFormats[pluralForm]: + simpleFormats[StandardPlural::Form::OTHER]; +} + LongNameHandler* LongNameHandler::forCurrencyLongNames(const Locale &loc, const CurrencyUnit ¤cy, const PluralRules *rules, const MicroPropsGenerator *parent, @@ -289,7 +308,7 @@ void LongNameHandler::simpleFormatsToModifiers(const UnicodeString *simpleFormat if (U_FAILURE(status)) { return; } SimpleFormatter compiledFormatter(simpleFormat, 0, 1, status); if (U_FAILURE(status)) { return; } - fModifiers[i] = SimpleModifier(compiledFormatter, field, false, {this, 0, plural}); + fModifiers[i] = SimpleModifier(compiledFormatter, field, false, {this, SIGNUM_ZERO, plural}); } } @@ -306,7 +325,7 @@ void LongNameHandler::multiSimpleFormatsToModifiers(const UnicodeString *leadFor if (U_FAILURE(status)) { return; } SimpleFormatter compoundCompiled(compoundFormat, 0, 1, status); if (U_FAILURE(status)) { return; } - fModifiers[i] = SimpleModifier(compoundCompiled, field, false, {this, 0, plural}); + fModifiers[i] = SimpleModifier(compoundCompiled, field, false, {this, SIGNUM_ZERO, plural}); } } @@ -317,7 +336,7 @@ void LongNameHandler::processQuantity(DecimalQuantity &quantity, MicroProps &mic micros.modOuter = &fModifiers[pluralForm]; } -const Modifier* LongNameHandler::getModifier(int8_t /*signum*/, StandardPlural::Form plural) const { +const Modifier* LongNameHandler::getModifier(Signum /*signum*/, StandardPlural::Form plural) const { return &fModifiers[plural]; } diff --git a/source/i18n/number_longnames.h b/source/i18n/number_longnames.h index 76fb82d..a19425a 100644 --- a/source/i18n/number_longnames.h +++ b/source/i18n/number_longnames.h @@ -22,6 +22,13 @@ class LongNameHandler : public MicroPropsGenerator, public ModifierStore, public UNumberUnitWidth width, UErrorCode& status); + static UnicodeString getUnitPattern( + const Locale& loc, + const MeasureUnit& unit, + UNumberUnitWidth width, + StandardPlural::Form pluralForm, + UErrorCode& status); + static LongNameHandler* forCurrencyLongNames(const Locale &loc, const CurrencyUnit ¤cy, const PluralRules *rules, const MicroPropsGenerator *parent, UErrorCode &status); @@ -34,7 +41,7 @@ class LongNameHandler : public MicroPropsGenerator, public ModifierStore, public void processQuantity(DecimalQuantity &quantity, MicroProps µs, UErrorCode &status) const U_OVERRIDE; - const Modifier* getModifier(int8_t signum, StandardPlural::Form plural) const U_OVERRIDE; + const Modifier* getModifier(Signum signum, StandardPlural::Form plural) const U_OVERRIDE; private: SimpleModifier fModifiers[StandardPlural::Form::COUNT]; diff --git a/source/i18n/number_mapper.h b/source/i18n/number_mapper.h index d28e9ce..de7d9c3 100644 --- a/source/i18n/number_mapper.h +++ b/source/i18n/number_mapper.h @@ -126,8 +126,14 @@ struct DecimalFormatWarehouse { * TODO: Make some of these fields by value instead of by LocalPointer? */ struct DecimalFormatFields : public UMemory { + + DecimalFormatFields() {} + + DecimalFormatFields(const DecimalFormatProperties& propsToCopy) + : properties(propsToCopy) {} + /** The property bag corresponding to user-specified settings and settings from the pattern string. */ - LocalPointer properties; + DecimalFormatProperties properties; /** The symbols for the current locale. */ LocalPointer symbols; @@ -136,7 +142,7 @@ struct DecimalFormatFields : public UMemory { * The pre-computed formatter object. Setters cause this to be re-computed atomically. The {@link * #format} method uses the formatter directly without needing to synchronize. */ - LocalPointer formatter; + LocalizedNumberFormatter formatter; /** The lazy-computed parser for .parse() */ std::atomic<::icu::numparse::impl::NumberParserImpl*> atomicParser = {}; @@ -148,7 +154,7 @@ struct DecimalFormatFields : public UMemory { DecimalFormatWarehouse warehouse; /** The effective properties as exported from the formatter object. Used by some getters. */ - LocalPointer exportedProperties; + DecimalFormatProperties exportedProperties; // Data for fastpath bool canUseFastFormat = false; diff --git a/source/i18n/number_modifiers.cpp b/source/i18n/number_modifiers.cpp index 1fcbe7b..3a44f8f 100644 --- a/source/i18n/number_modifiers.cpp +++ b/source/i18n/number_modifiers.cpp @@ -57,7 +57,7 @@ Modifier::Parameters::Parameters() : obj(nullptr) {} Modifier::Parameters::Parameters( - const ModifierStore* _obj, int8_t _signum, StandardPlural::Form _plural) + const ModifierStore* _obj, Signum _signum, StandardPlural::Form _plural) : obj(_obj), signum(_signum), plural(_plural) {} ModifierStore::~ModifierStore() = default; @@ -69,7 +69,7 @@ AdoptingModifierStore::~AdoptingModifierStore() { } -int32_t ConstantAffixModifier::apply(NumberStringBuilder &output, int leftIndex, int rightIndex, +int32_t ConstantAffixModifier::apply(FormattedStringBuilder &output, int leftIndex, int rightIndex, UErrorCode &status) const { // Insert the suffix first since inserting the prefix will change the rightIndex int length = output.insert(rightIndex, fSuffix, fField, status); @@ -154,7 +154,7 @@ SimpleModifier::SimpleModifier() : fField(UNUM_FIELD_COUNT), fStrong(false), fPrefixLength(0), fSuffixLength(0) { } -int32_t SimpleModifier::apply(NumberStringBuilder &output, int leftIndex, int rightIndex, +int32_t SimpleModifier::apply(FormattedStringBuilder &output, int leftIndex, int rightIndex, UErrorCode &status) const { return formatAsPrefixSuffix(output, leftIndex, rightIndex, status); } @@ -203,7 +203,7 @@ bool SimpleModifier::semanticallyEquivalent(const Modifier& other) const { int32_t -SimpleModifier::formatAsPrefixSuffix(NumberStringBuilder &result, int32_t startIndex, int32_t endIndex, +SimpleModifier::formatAsPrefixSuffix(FormattedStringBuilder &result, int32_t startIndex, int32_t endIndex, UErrorCode &status) const { if (fSuffixOffset == -1 && fPrefixLength + fSuffixLength > 0) { // There is no argument for the inner number; overwrite the entire segment with our string. @@ -227,7 +227,7 @@ SimpleModifier::formatAsPrefixSuffix(NumberStringBuilder &result, int32_t startI int32_t -SimpleModifier::formatTwoArgPattern(const SimpleFormatter& compiled, NumberStringBuilder& result, +SimpleModifier::formatTwoArgPattern(const SimpleFormatter& compiled, FormattedStringBuilder& result, int32_t index, int32_t* outPrefixLength, int32_t* outSuffixLength, Field field, UErrorCode& status) { const UnicodeString& compiledPattern = compiled.compiledPattern; @@ -284,7 +284,7 @@ SimpleModifier::formatTwoArgPattern(const SimpleFormatter& compiled, NumberStrin } -int32_t ConstantMultiFieldModifier::apply(NumberStringBuilder &output, int leftIndex, int rightIndex, +int32_t ConstantMultiFieldModifier::apply(FormattedStringBuilder &output, int leftIndex, int rightIndex, UErrorCode &status) const { int32_t length = output.insert(leftIndex, fPrefix, status); if (fOverwrite) { @@ -333,8 +333,8 @@ bool ConstantMultiFieldModifier::semanticallyEquivalent(const Modifier& other) c } -CurrencySpacingEnabledModifier::CurrencySpacingEnabledModifier(const NumberStringBuilder &prefix, - const NumberStringBuilder &suffix, +CurrencySpacingEnabledModifier::CurrencySpacingEnabledModifier(const FormattedStringBuilder &prefix, + const FormattedStringBuilder &suffix, bool overwrite, bool strong, const DecimalFormatSymbols &symbols, @@ -374,7 +374,7 @@ CurrencySpacingEnabledModifier::CurrencySpacingEnabledModifier(const NumberStrin } } -int32_t CurrencySpacingEnabledModifier::apply(NumberStringBuilder &output, int leftIndex, int rightIndex, +int32_t CurrencySpacingEnabledModifier::apply(FormattedStringBuilder &output, int leftIndex, int rightIndex, UErrorCode &status) const { // Currency spacing logic int length = 0; @@ -395,7 +395,7 @@ int32_t CurrencySpacingEnabledModifier::apply(NumberStringBuilder &output, int l } int32_t -CurrencySpacingEnabledModifier::applyCurrencySpacing(NumberStringBuilder &output, int32_t prefixStart, +CurrencySpacingEnabledModifier::applyCurrencySpacing(FormattedStringBuilder &output, int32_t prefixStart, int32_t prefixLen, int32_t suffixStart, int32_t suffixLen, const DecimalFormatSymbols &symbols, @@ -414,7 +414,7 @@ CurrencySpacingEnabledModifier::applyCurrencySpacing(NumberStringBuilder &output } int32_t -CurrencySpacingEnabledModifier::applyCurrencySpacingAffix(NumberStringBuilder &output, int32_t index, +CurrencySpacingEnabledModifier::applyCurrencySpacingAffix(FormattedStringBuilder &output, int32_t index, EAffix affix, const DecimalFormatSymbols &symbols, UErrorCode &status) { diff --git a/source/i18n/number_modifiers.h b/source/i18n/number_modifiers.h index 495128b..c84c6aa 100644 --- a/source/i18n/number_modifiers.h +++ b/source/i18n/number_modifiers.h @@ -12,7 +12,7 @@ #include "unicode/uniset.h" #include "unicode/simpleformatter.h" #include "standardplural.h" -#include "number_stringbuilder.h" +#include "formatted_string_builder.h" #include "number_types.h" U_NAMESPACE_BEGIN namespace number { @@ -28,7 +28,7 @@ class U_I18N_API ConstantAffixModifier : public Modifier, public UObject { bool strong) : fPrefix(prefix), fSuffix(suffix), fField(field), fStrong(strong) {} - int32_t apply(NumberStringBuilder &output, int32_t leftIndex, int32_t rightIndex, + int32_t apply(FormattedStringBuilder &output, int32_t leftIndex, int32_t rightIndex, UErrorCode &status) const U_OVERRIDE; int32_t getPrefixLength() const U_OVERRIDE; @@ -64,7 +64,7 @@ class U_I18N_API SimpleModifier : public Modifier, public UMemory { // Default constructor for LongNameHandler.h SimpleModifier(); - int32_t apply(NumberStringBuilder &output, int32_t leftIndex, int32_t rightIndex, + int32_t apply(FormattedStringBuilder &output, int32_t leftIndex, int32_t rightIndex, UErrorCode &status) const U_OVERRIDE; int32_t getPrefixLength() const U_OVERRIDE; @@ -81,7 +81,7 @@ class U_I18N_API SimpleModifier : public Modifier, public UMemory { /** * TODO: This belongs in SimpleFormatterImpl. The only reason I haven't moved it there yet is because - * NumberStringBuilder is an internal class and SimpleFormatterImpl feels like it should not depend on it. + * FormattedStringBuilder is an internal class and SimpleFormatterImpl feels like it should not depend on it. * *

    * Formats a value that is already stored inside the StringBuilder result between the indices @@ -100,22 +100,22 @@ class U_I18N_API SimpleModifier : public Modifier, public UMemory { * @return The number of characters (UTF-16 code points) that were added to the StringBuilder. */ int32_t - formatAsPrefixSuffix(NumberStringBuilder& result, int32_t startIndex, int32_t endIndex, + formatAsPrefixSuffix(FormattedStringBuilder& result, int32_t startIndex, int32_t endIndex, UErrorCode& status) const; /** * TODO: Like above, this belongs with the rest of the SimpleFormatterImpl code. - * I put it here so that the SimpleFormatter uses in NumberStringBuilder are near each other. + * I put it here so that the SimpleFormatter uses in FormattedStringBuilder are near each other. * *

    - * Applies the compiled two-argument pattern to the NumberStringBuilder. + * Applies the compiled two-argument pattern to the FormattedStringBuilder. * *

    * This method is optimized for the case where the prefix and suffix are often empty, such as * in the range pattern like "{0}-{1}". */ static int32_t - formatTwoArgPattern(const SimpleFormatter& compiled, NumberStringBuilder& result, + formatTwoArgPattern(const SimpleFormatter& compiled, FormattedStringBuilder& result, int32_t index, int32_t* outPrefixLength, int32_t* outSuffixLength, Field field, UErrorCode& status); @@ -131,13 +131,13 @@ class U_I18N_API SimpleModifier : public Modifier, public UMemory { /** * An implementation of {@link Modifier} that allows for multiple types of fields in the same modifier. Constructed - * based on the contents of two {@link NumberStringBuilder} instances (one for the prefix, one for the suffix). + * based on the contents of two {@link FormattedStringBuilder} instances (one for the prefix, one for the suffix). */ class U_I18N_API ConstantMultiFieldModifier : public Modifier, public UMemory { public: ConstantMultiFieldModifier( - const NumberStringBuilder &prefix, - const NumberStringBuilder &suffix, + const FormattedStringBuilder &prefix, + const FormattedStringBuilder &suffix, bool overwrite, bool strong, const Modifier::Parameters parameters) @@ -148,8 +148,8 @@ class U_I18N_API ConstantMultiFieldModifier : public Modifier, public UMemory { fParameters(parameters) {} ConstantMultiFieldModifier( - const NumberStringBuilder &prefix, - const NumberStringBuilder &suffix, + const FormattedStringBuilder &prefix, + const FormattedStringBuilder &suffix, bool overwrite, bool strong) : fPrefix(prefix), @@ -157,7 +157,7 @@ class U_I18N_API ConstantMultiFieldModifier : public Modifier, public UMemory { fOverwrite(overwrite), fStrong(strong) {} - int32_t apply(NumberStringBuilder &output, int32_t leftIndex, int32_t rightIndex, + int32_t apply(FormattedStringBuilder &output, int32_t leftIndex, int32_t rightIndex, UErrorCode &status) const U_OVERRIDE; int32_t getPrefixLength() const U_OVERRIDE; @@ -173,10 +173,10 @@ class U_I18N_API ConstantMultiFieldModifier : public Modifier, public UMemory { bool semanticallyEquivalent(const Modifier& other) const U_OVERRIDE; protected: - // NOTE: In Java, these are stored as array pointers. In C++, the NumberStringBuilder is stored by + // NOTE: In Java, these are stored as array pointers. In C++, the FormattedStringBuilder is stored by // value and is treated internally as immutable. - NumberStringBuilder fPrefix; - NumberStringBuilder fSuffix; + FormattedStringBuilder fPrefix; + FormattedStringBuilder fSuffix; bool fOverwrite; bool fStrong; Modifier::Parameters fParameters; @@ -187,19 +187,19 @@ class U_I18N_API CurrencySpacingEnabledModifier : public ConstantMultiFieldModif public: /** Safe code path */ CurrencySpacingEnabledModifier( - const NumberStringBuilder &prefix, - const NumberStringBuilder &suffix, + const FormattedStringBuilder &prefix, + const FormattedStringBuilder &suffix, bool overwrite, bool strong, const DecimalFormatSymbols &symbols, UErrorCode &status); - int32_t apply(NumberStringBuilder &output, int32_t leftIndex, int32_t rightIndex, + int32_t apply(FormattedStringBuilder &output, int32_t leftIndex, int32_t rightIndex, UErrorCode &status) const U_OVERRIDE; /** Unsafe code path */ static int32_t - applyCurrencySpacing(NumberStringBuilder &output, int32_t prefixStart, int32_t prefixLen, + applyCurrencySpacing(FormattedStringBuilder &output, int32_t prefixStart, int32_t prefixLen, int32_t suffixStart, int32_t suffixLen, const DecimalFormatSymbols &symbols, UErrorCode &status); @@ -218,7 +218,7 @@ class U_I18N_API CurrencySpacingEnabledModifier : public ConstantMultiFieldModif }; /** Unsafe code path */ - static int32_t applyCurrencySpacingAffix(NumberStringBuilder &output, int32_t index, EAffix affix, + static int32_t applyCurrencySpacingAffix(FormattedStringBuilder &output, int32_t index, EAffix affix, const DecimalFormatSymbols &symbols, UErrorCode &status); static UnicodeSet @@ -234,7 +234,7 @@ class U_I18N_API EmptyModifier : public Modifier, public UMemory { public: explicit EmptyModifier(bool isStrong) : fStrong(isStrong) {} - int32_t apply(NumberStringBuilder &output, int32_t leftIndex, int32_t rightIndex, + int32_t apply(FormattedStringBuilder &output, int32_t leftIndex, int32_t rightIndex, UErrorCode &status) const U_OVERRIDE { (void)output; (void)leftIndex; @@ -289,7 +289,7 @@ class U_I18N_API AdoptingModifierStore : public ModifierStore, public UMemory { /** * Sets the Modifier with the specified signum and plural form. */ - void adoptModifier(int8_t signum, StandardPlural::Form plural, const Modifier *mod) { + void adoptModifier(Signum signum, StandardPlural::Form plural, const Modifier *mod) { U_ASSERT(mods[getModIndex(signum, plural)] == nullptr); mods[getModIndex(signum, plural)] = mod; } @@ -298,13 +298,13 @@ class U_I18N_API AdoptingModifierStore : public ModifierStore, public UMemory { * Sets the Modifier with the specified signum. * The modifier will apply to all plural forms. */ - void adoptModifierWithoutPlural(int8_t signum, const Modifier *mod) { + void adoptModifierWithoutPlural(Signum signum, const Modifier *mod) { U_ASSERT(mods[getModIndex(signum, DEFAULT_STANDARD_PLURAL)] == nullptr); mods[getModIndex(signum, DEFAULT_STANDARD_PLURAL)] = mod; } /** Returns a reference to the modifier; no ownership change. */ - const Modifier *getModifier(int8_t signum, StandardPlural::Form plural) const U_OVERRIDE { + const Modifier *getModifier(Signum signum, StandardPlural::Form plural) const U_OVERRIDE { const Modifier* modifier = mods[getModIndex(signum, plural)]; if (modifier == nullptr && plural != DEFAULT_STANDARD_PLURAL) { modifier = mods[getModIndex(signum, DEFAULT_STANDARD_PLURAL)]; @@ -313,7 +313,7 @@ class U_I18N_API AdoptingModifierStore : public ModifierStore, public UMemory { } /** Returns a reference to the modifier; no ownership change. */ - const Modifier *getModifierWithoutPlural(int8_t signum) const { + const Modifier *getModifierWithoutPlural(Signum signum) const { return mods[getModIndex(signum, DEFAULT_STANDARD_PLURAL)]; } @@ -321,7 +321,7 @@ class U_I18N_API AdoptingModifierStore : public ModifierStore, public UMemory { // NOTE: mods is zero-initialized (to nullptr) const Modifier *mods[3 * StandardPlural::COUNT] = {}; - inline static int32_t getModIndex(int8_t signum, StandardPlural::Form plural) { + inline static int32_t getModIndex(Signum signum, StandardPlural::Form plural) { U_ASSERT(signum >= -1 && signum <= 1); U_ASSERT(plural >= 0 && plural < StandardPlural::COUNT); return static_cast(plural) * 3 + (signum + 1); diff --git a/source/i18n/number_output.cpp b/source/i18n/number_output.cpp index 6f4e248..e2f0691 100644 --- a/source/i18n/number_output.cpp +++ b/source/i18n/number_output.cpp @@ -9,6 +9,7 @@ #include "number_utypes.h" #include "util.h" #include "number_decimalquantity.h" +#include "number_decnum.h" U_NAMESPACE_BEGIN namespace number { @@ -20,8 +21,7 @@ UPRV_FORMATTED_VALUE_SUBCLASS_AUTO_IMPL(FormattedNumber) UBool FormattedNumber::nextFieldPosition(FieldPosition& fieldPosition, UErrorCode& status) const { UPRV_FORMATTED_VALUE_METHOD_GUARD(FALSE) - // NOTE: MSVC sometimes complains when implicitly converting between bool and UBool - return fData->getStringRef().nextFieldPosition(fieldPosition, status) ? TRUE : FALSE; + return fData->nextFieldPosition(fieldPosition, status); } void FormattedNumber::getAllFieldPositions(FieldPositionIterator& iterator, UErrorCode& status) const { @@ -29,10 +29,17 @@ void FormattedNumber::getAllFieldPositions(FieldPositionIterator& iterator, UErr getAllFieldPositionsImpl(fpih, status); } +void FormattedNumber::toDecimalNumber(ByteSink& sink, UErrorCode& status) const { + UPRV_FORMATTED_VALUE_METHOD_GUARD(UPRV_NOARG) + impl::DecNum decnum; + fData->quantity.toDecNum(decnum, status); + decnum.toString(sink, status); +} + void FormattedNumber::getAllFieldPositionsImpl(FieldPositionIteratorHandler& fpih, UErrorCode& status) const { UPRV_FORMATTED_VALUE_METHOD_GUARD(UPRV_NOARG) - fData->getStringRef().getAllFieldPositions(fpih, status); + fData->getAllFieldPositions(fpih, status); } void FormattedNumber::getDecimalQuantity(impl::DecimalQuantity& output, UErrorCode& status) const { diff --git a/source/i18n/number_padding.cpp b/source/i18n/number_padding.cpp index 31684d7..c68a987 100644 --- a/source/i18n/number_padding.cpp +++ b/source/i18n/number_padding.cpp @@ -7,7 +7,7 @@ #include "unicode/numberformatter.h" #include "number_types.h" -#include "number_stringbuilder.h" +#include "formatted_string_builder.h" #include "number_decimfmtprops.h" using namespace icu; @@ -17,7 +17,7 @@ using namespace icu::number::impl; namespace { int32_t -addPaddingHelper(UChar32 paddingCp, int32_t requiredPadding, NumberStringBuilder &string, int32_t index, +addPaddingHelper(UChar32 paddingCp, int32_t requiredPadding, FormattedStringBuilder &string, int32_t index, UErrorCode &status) { for (int32_t i = 0; i < requiredPadding; i++) { // TODO: If appending to the end, this will cause actual insertion operations. Improve. @@ -60,7 +60,7 @@ Padder Padder::forProperties(const DecimalFormatProperties& properties) { } int32_t Padder::padAndApply(const Modifier &mod1, const Modifier &mod2, - NumberStringBuilder &string, int32_t leftIndex, int32_t rightIndex, + FormattedStringBuilder &string, int32_t leftIndex, int32_t rightIndex, UErrorCode &status) const { int32_t modLength = mod1.getCodePointCount() + mod2.getCodePointCount(); int32_t requiredPadding = fWidth - modLength - string.codePointCount(); diff --git a/source/i18n/number_patternmodifier.cpp b/source/i18n/number_patternmodifier.cpp index 75de439..724f5b9 100644 --- a/source/i18n/number_patternmodifier.cpp +++ b/source/i18n/number_patternmodifier.cpp @@ -43,7 +43,7 @@ void MutablePatternModifier::setSymbols(const DecimalFormatSymbols* symbols, fRules = rules; } -void MutablePatternModifier::setNumberProperties(int8_t signum, StandardPlural::Form plural) { +void MutablePatternModifier::setNumberProperties(Signum signum, StandardPlural::Form plural) { fSignum = signum; fPlural = plural; } @@ -79,12 +79,12 @@ MutablePatternModifier::createImmutableAndChain(const MicroPropsGenerator* paren if (needsPlurals()) { // Slower path when we require the plural keyword. for (StandardPlural::Form plural : STANDARD_PLURAL_VALUES) { - setNumberProperties(1, plural); - pm->adoptModifier(1, plural, createConstantModifier(status)); - setNumberProperties(0, plural); - pm->adoptModifier(0, plural, createConstantModifier(status)); - setNumberProperties(-1, plural); - pm->adoptModifier(-1, plural, createConstantModifier(status)); + setNumberProperties(SIGNUM_POS, plural); + pm->adoptModifier(SIGNUM_POS, plural, createConstantModifier(status)); + setNumberProperties(SIGNUM_ZERO, plural); + pm->adoptModifier(SIGNUM_ZERO, plural, createConstantModifier(status)); + setNumberProperties(SIGNUM_NEG, plural); + pm->adoptModifier(SIGNUM_NEG, plural, createConstantModifier(status)); } if (U_FAILURE(status)) { delete pm; @@ -93,12 +93,12 @@ MutablePatternModifier::createImmutableAndChain(const MicroPropsGenerator* paren return new ImmutablePatternModifier(pm, fRules, parent); // adopts pm } else { // Faster path when plural keyword is not needed. - setNumberProperties(1, StandardPlural::Form::COUNT); - pm->adoptModifierWithoutPlural(1, createConstantModifier(status)); - setNumberProperties(0, StandardPlural::Form::COUNT); - pm->adoptModifierWithoutPlural(0, createConstantModifier(status)); - setNumberProperties(-1, StandardPlural::Form::COUNT); - pm->adoptModifierWithoutPlural(-1, createConstantModifier(status)); + setNumberProperties(SIGNUM_POS, StandardPlural::Form::COUNT); + pm->adoptModifierWithoutPlural(SIGNUM_POS, createConstantModifier(status)); + setNumberProperties(SIGNUM_ZERO, StandardPlural::Form::COUNT); + pm->adoptModifierWithoutPlural(SIGNUM_ZERO, createConstantModifier(status)); + setNumberProperties(SIGNUM_NEG, StandardPlural::Form::COUNT); + pm->adoptModifierWithoutPlural(SIGNUM_NEG, createConstantModifier(status)); if (U_FAILURE(status)) { delete pm; return nullptr; @@ -108,8 +108,8 @@ MutablePatternModifier::createImmutableAndChain(const MicroPropsGenerator* paren } ConstantMultiFieldModifier* MutablePatternModifier::createConstantModifier(UErrorCode& status) { - NumberStringBuilder a; - NumberStringBuilder b; + FormattedStringBuilder a; + FormattedStringBuilder b; insertPrefix(a, 0, status); insertSuffix(b, 0, status); if (fPatternInfo->hasCurrencySign()) { @@ -140,7 +140,7 @@ void ImmutablePatternModifier::applyToMicros( } } -const Modifier* ImmutablePatternModifier::getModifier(int8_t signum, StandardPlural::Form plural) const { +const Modifier* ImmutablePatternModifier::getModifier(Signum signum, StandardPlural::Form plural) const { if (rules == nullptr) { return pm->getModifierWithoutPlural(signum); } else { @@ -170,7 +170,7 @@ void MutablePatternModifier::processQuantity(DecimalQuantity& fq, MicroProps& mi micros.modMiddle = this; } -int32_t MutablePatternModifier::apply(NumberStringBuilder& output, int32_t leftIndex, int32_t rightIndex, +int32_t MutablePatternModifier::apply(FormattedStringBuilder& output, int32_t leftIndex, int32_t rightIndex, UErrorCode& status) const { // The unsafe code path performs self-mutation, so we need a const_cast. // This method needs to be const because it overrides a const method in the parent class. @@ -248,13 +248,13 @@ bool MutablePatternModifier::semanticallyEquivalent(const Modifier& other) const UPRV_UNREACHABLE; } -int32_t MutablePatternModifier::insertPrefix(NumberStringBuilder& sb, int position, UErrorCode& status) { +int32_t MutablePatternModifier::insertPrefix(FormattedStringBuilder& sb, int position, UErrorCode& status) { prepareAffix(true); int32_t length = AffixUtils::unescape(currentAffix, sb, position, *this, fField, status); return length; } -int32_t MutablePatternModifier::insertSuffix(NumberStringBuilder& sb, int position, UErrorCode& status) { +int32_t MutablePatternModifier::insertSuffix(FormattedStringBuilder& sb, int position, UErrorCode& status) { prepareAffix(false); int32_t length = AffixUtils::unescape(currentAffix, sb, position, *this, fField, status); return length; diff --git a/source/i18n/number_patternmodifier.h b/source/i18n/number_patternmodifier.h index 27e293b..b2c90e0 100644 --- a/source/i18n/number_patternmodifier.h +++ b/source/i18n/number_patternmodifier.h @@ -48,7 +48,7 @@ class U_I18N_API ImmutablePatternModifier : public MicroPropsGenerator, public U void applyToMicros(MicroProps& micros, const DecimalQuantity& quantity, UErrorCode& status) const; - const Modifier* getModifier(int8_t signum, StandardPlural::Form plural) const; + const Modifier* getModifier(Signum signum, StandardPlural::Form plural) const; private: ImmutablePatternModifier(AdoptingModifierStore* pm, const PluralRules* rules, @@ -142,7 +142,7 @@ class U_I18N_API MutablePatternModifier * The plural form of the number, required only if the pattern contains the triple * currency sign, "¤¤¤" (and as indicated by {@link #needsPlurals()}). */ - void setNumberProperties(int8_t signum, StandardPlural::Form plural); + void setNumberProperties(Signum signum, StandardPlural::Form plural); /** * Returns true if the pattern represented by this MurkyModifier requires a plural keyword in order to localize. @@ -184,7 +184,7 @@ class U_I18N_API MutablePatternModifier void processQuantity(DecimalQuantity &, MicroProps µs, UErrorCode &status) const U_OVERRIDE; - int32_t apply(NumberStringBuilder &output, int32_t leftIndex, int32_t rightIndex, + int32_t apply(FormattedStringBuilder &output, int32_t leftIndex, int32_t rightIndex, UErrorCode &status) const U_OVERRIDE; int32_t getPrefixLength() const U_OVERRIDE; @@ -223,7 +223,7 @@ class U_I18N_API MutablePatternModifier const PluralRules *fRules; // Number details (initialized in setNumberProperties) - int8_t fSignum; + Signum fSignum; StandardPlural::Form fPlural; // QuantityChain details (initialized in addToChain) @@ -240,17 +240,17 @@ class U_I18N_API MutablePatternModifier * CREATES A NEW HEAP OBJECT; THE CALLER GETS OWNERSHIP. * * @param a - * A working NumberStringBuilder object; passed from the outside to prevent the need to create many new + * A working FormattedStringBuilder object; passed from the outside to prevent the need to create many new * instances if this method is called in a loop. * @param b - * Another working NumberStringBuilder object. + * Another working FormattedStringBuilder object. * @return The constant modifier object. */ ConstantMultiFieldModifier *createConstantModifier(UErrorCode &status); - int32_t insertPrefix(NumberStringBuilder &sb, int position, UErrorCode &status); + int32_t insertPrefix(FormattedStringBuilder &sb, int position, UErrorCode &status); - int32_t insertSuffix(NumberStringBuilder &sb, int position, UErrorCode &status); + int32_t insertSuffix(FormattedStringBuilder &sb, int position, UErrorCode &status); void prepareAffix(bool isPrefix); }; diff --git a/source/i18n/number_patternstring.cpp b/source/i18n/number_patternstring.cpp index 9075424..c7212c1 100644 --- a/source/i18n/number_patternstring.cpp +++ b/source/i18n/number_patternstring.cpp @@ -352,7 +352,7 @@ void ParsedPatternInfo::consumeIntegerFormat(UErrorCode& status) { result.groupingSizes += 1; result.integerNumerals += 1; result.integerTotal += 1; - if (!result.rounding.isZero() || state.peek() != u'0') { + if (!result.rounding.isZeroish() || state.peek() != u'0') { result.rounding.appendDigit(static_cast(state.peek() - u'0'), 0, true); } break; @@ -532,7 +532,7 @@ PatternParser::patternInfoToProperties(DecimalFormatProperties& properties, Pars properties.roundingIncrement = 0.0; properties.minimumSignificantDigits = positive.integerAtSigns; properties.maximumSignificantDigits = positive.integerAtSigns + positive.integerTrailingHashSigns; - } else if (!positive.rounding.isZero()) { + } else if (!positive.rounding.isZeroish()) { if (!ignoreRounding) { properties.minimumFractionDigits = minFrac; properties.maximumFractionDigits = positive.fractionTotal; @@ -1000,7 +1000,7 @@ PatternStringUtils::convertLocalized(const UnicodeString& input, const DecimalFo } void PatternStringUtils::patternInfoToStringBuilder(const AffixPatternProvider& patternInfo, bool isPrefix, - int8_t signum, UNumberSignDisplay signDisplay, + Signum signum, UNumberSignDisplay signDisplay, StandardPlural::Form plural, bool perMilleReplacesPercent, UnicodeString& output) { @@ -1014,6 +1014,7 @@ void PatternStringUtils::patternInfoToStringBuilder(const AffixPatternProvider& // Should we use the affix from the negative subpattern? (If not, we will use the positive // subpattern.) + // TODO: Deal with signum bool useNegativeAffixPattern = patternInfo.hasNegativeSubpattern() && ( signum == -1 || (patternInfo.negativeHasMinusSign() && plusReplacesMinusSign)); diff --git a/source/i18n/number_patternstring.h b/source/i18n/number_patternstring.h index 0c90867..1191d29 100644 --- a/source/i18n/number_patternstring.h +++ b/source/i18n/number_patternstring.h @@ -295,7 +295,7 @@ class U_I18N_API PatternStringUtils { * substitution, and plural forms for CurrencyPluralInfo. */ static void patternInfoToStringBuilder(const AffixPatternProvider& patternInfo, bool isPrefix, - int8_t signum, UNumberSignDisplay signDisplay, + Signum signum, UNumberSignDisplay signDisplay, StandardPlural::Form plural, bool perMilleReplacesPercent, UnicodeString& output); diff --git a/source/i18n/number_rounding.cpp b/source/i18n/number_rounding.cpp index 9e369f7..813d4b6 100644 --- a/source/i18n/number_rounding.cpp +++ b/source/i18n/number_rounding.cpp @@ -33,7 +33,7 @@ int32_t getRoundingMagnitudeSignificant(const DecimalQuantity &value, int maxSig if (maxSig == -1) { return INT32_MIN; } - int magnitude = value.isZero() ? 0 : value.getMagnitude(); + int magnitude = value.isZeroish() ? 0 : value.getMagnitude(); return magnitude - maxSig + 1; } @@ -45,7 +45,7 @@ int32_t getDisplayMagnitudeFraction(int minFrac) { } int32_t getDisplayMagnitudeSignificant(const DecimalQuantity &value, int minSig) { - int magnitude = value.isZero() ? 0 : value.getMagnitude(); + int magnitude = value.isZeroish() ? 0 : value.getMagnitude(); return magnitude - minSig + 1; } @@ -306,8 +306,8 @@ bool RoundingImpl::isSignificantDigits() const { int32_t RoundingImpl::chooseMultiplierAndApply(impl::DecimalQuantity &input, const impl::MultiplierProducer &producer, UErrorCode &status) { - // Do not call this method with zero. - U_ASSERT(!input.isZero()); + // Do not call this method with zero, NaN, or infinity. + U_ASSERT(!input.isZeroish()); // Perform the first attempt at rounding. int magnitude = input.getMagnitude(); @@ -316,7 +316,7 @@ RoundingImpl::chooseMultiplierAndApply(impl::DecimalQuantity &input, const impl: apply(input, status); // If the number rounded to zero, exit. - if (input.isZero() || U_FAILURE(status)) { + if (input.isZeroish() || U_FAILURE(status)) { return multiplier; } @@ -374,7 +374,7 @@ void RoundingImpl::apply(impl::DecimalQuantity &value, UErrorCode& status) const value.setMinFraction( uprv_max(0, -getDisplayMagnitudeSignificant(value, fPrecision.fUnion.fracSig.fMinSig))); // Make sure that digits are displayed on zero. - if (value.isZero() && fPrecision.fUnion.fracSig.fMinSig > 0) { + if (value.isZeroish() && fPrecision.fUnion.fracSig.fMinSig > 0) { value.setMinInteger(1); } break; @@ -436,7 +436,7 @@ void RoundingImpl::apply(impl::DecimalQuantity &value, UErrorCode& status) const void RoundingImpl::apply(impl::DecimalQuantity &value, int32_t minInt, UErrorCode /*status*/) { // This method is intended for the one specific purpose of helping print "00.000E0". U_ASSERT(isSignificantDigits()); - U_ASSERT(value.isZero()); + U_ASSERT(value.isZeroish()); value.setMinFraction(fPrecision.fUnion.fracSig.fMinSig - minInt); } diff --git a/source/i18n/number_scientific.cpp b/source/i18n/number_scientific.cpp index 7fab29c..f3de741 100644 --- a/source/i18n/number_scientific.cpp +++ b/source/i18n/number_scientific.cpp @@ -8,7 +8,7 @@ #include #include "number_scientific.h" #include "number_utils.h" -#include "number_stringbuilder.h" +#include "formatted_string_builder.h" #include "unicode/unum.h" #include "number_microprops.h" @@ -36,7 +36,7 @@ void ScientificModifier::set(int32_t exponent, const ScientificHandler *handler) fHandler = handler; } -int32_t ScientificModifier::apply(NumberStringBuilder &output, int32_t /*leftIndex*/, int32_t rightIndex, +int32_t ScientificModifier::apply(FormattedStringBuilder &output, int32_t /*leftIndex*/, int32_t rightIndex, UErrorCode &status) const { // FIXME: Localized exponent separator location. int i = rightIndex; @@ -123,9 +123,15 @@ void ScientificHandler::processQuantity(DecimalQuantity &quantity, MicroProps &m fParent->processQuantity(quantity, micros, status); if (U_FAILURE(status)) { return; } + // Do not apply scientific notation to special doubles + if (quantity.isInfinite() || quantity.isNaN()) { + micros.modInner = µs.helpers.emptyStrongModifier; + return; + } + // Treat zero as if it had magnitude 0 int32_t exponent; - if (quantity.isZero()) { + if (quantity.isZeroish()) { if (fSettings.fRequireMinInt && micros.rounder.isSignificantDigits()) { // Show "00.000E0" on pattern "00.000E0" micros.rounder.apply(quantity, fSettings.fEngineeringInterval, status); diff --git a/source/i18n/number_scientific.h b/source/i18n/number_scientific.h index e377bd9..1c9ce1e 100644 --- a/source/i18n/number_scientific.h +++ b/source/i18n/number_scientific.h @@ -21,7 +21,7 @@ class U_I18N_API ScientificModifier : public UMemory, public Modifier { void set(int32_t exponent, const ScientificHandler *handler); - int32_t apply(NumberStringBuilder &output, int32_t leftIndex, int32_t rightIndex, + int32_t apply(FormattedStringBuilder &output, int32_t leftIndex, int32_t rightIndex, UErrorCode &status) const U_OVERRIDE; int32_t getPrefixLength() const U_OVERRIDE; diff --git a/source/i18n/number_skeletons.cpp b/source/i18n/number_skeletons.cpp index 4c280ad..4025539 100644 --- a/source/i18n/number_skeletons.cpp +++ b/source/i18n/number_skeletons.cpp @@ -20,6 +20,7 @@ #include "unicode/numberformatter.h" #include "uinvchar.h" #include "charstr.h" +#include "string_segment.h" using namespace icu; using namespace icu::number; @@ -119,17 +120,17 @@ inline void appendMultiple(UnicodeString& sb, UChar32 cp, int32_t count) { #define CHECK_NULL(seen, field, status) (void)(seen); /* for auto-format line wrapping */ \ -{ \ +UPRV_BLOCK_MACRO_BEGIN { \ if ((seen).field) { \ (status) = U_NUMBER_SKELETON_SYNTAX_ERROR; \ return STATE_NULL; \ } \ (seen).field = true; \ -} +} UPRV_BLOCK_MACRO_END #define SKELETON_UCHAR_TO_CHAR(dest, src, start, end, status) (void)(dest); \ -{ \ +UPRV_BLOCK_MACRO_BEGIN { \ UErrorCode conversionStatus = U_ZERO_ERROR; \ (dest).appendInvariantChars({FALSE, (src).getBuffer() + (start), (end) - (start)}, conversionStatus); \ if (conversionStatus == U_INVARIANT_CONVERSION_ERROR) { \ @@ -140,7 +141,7 @@ inline void appendMultiple(UnicodeString& sb, UChar32 cp, int32_t count) { (status) = conversionStatus; \ return; \ } \ -} +} UPRV_BLOCK_MACRO_END } // anonymous namespace @@ -1217,7 +1218,7 @@ void blueprint_helpers::parseIntegerWidthOption(const StringSegment& segment, Ma maxInt = 0; } for (; offset < segment.length(); offset++) { - if (segment.charAt(offset) == u'#') { + if (maxInt != -1 && segment.charAt(offset) == u'#') { maxInt++; } else { break; diff --git a/source/i18n/number_skeletons.h b/source/i18n/number_skeletons.h index bc228bd..59af771 100644 --- a/source/i18n/number_skeletons.h +++ b/source/i18n/number_skeletons.h @@ -10,10 +10,10 @@ #include "number_types.h" #include "numparse_types.h" #include "unicode/ucharstrie.h" +#include "string_segment.h" -using icu::numparse::impl::StringSegment; - -U_NAMESPACE_BEGIN namespace number { +U_NAMESPACE_BEGIN +namespace number { namespace impl { // Forward-declaration diff --git a/source/i18n/number_stringbuilder.h b/source/i18n/number_stringbuilder.h deleted file mode 100644 index d48f6e1..0000000 --- a/source/i18n/number_stringbuilder.h +++ /dev/null @@ -1,164 +0,0 @@ -// © 2017 and later: Unicode, Inc. and others. -// License & terms of use: http://www.unicode.org/copyright.html - -#include "unicode/utypes.h" - -#if !UCONFIG_NO_FORMATTING -#ifndef __NUMBER_STRINGBUILDER_H__ -#define __NUMBER_STRINGBUILDER_H__ - - -#include -#include "unicode/numfmt.h" -#include "unicode/ustring.h" -#include "cstring.h" -#include "uassert.h" -#include "number_types.h" -#include "fphdlimp.h" - -U_NAMESPACE_BEGIN namespace number { -namespace impl { - -class U_I18N_API NumberStringBuilder : public UMemory { - private: - static const int32_t DEFAULT_CAPACITY = 40; - - template - union ValueOrHeapArray { - T value[DEFAULT_CAPACITY]; - struct { - T *ptr; - int32_t capacity; - } heap; - }; - - public: - NumberStringBuilder(); - - ~NumberStringBuilder(); - - NumberStringBuilder(const NumberStringBuilder &other); - - NumberStringBuilder &operator=(const NumberStringBuilder &other); - - int32_t length() const; - - int32_t codePointCount() const; - - inline char16_t charAt(int32_t index) const { - U_ASSERT(index >= 0); - U_ASSERT(index < fLength); - return getCharPtr()[fZero + index]; - } - - inline Field fieldAt(int32_t index) const { - U_ASSERT(index >= 0); - U_ASSERT(index < fLength); - return getFieldPtr()[fZero + index]; - } - - UChar32 getFirstCodePoint() const; - - UChar32 getLastCodePoint() const; - - UChar32 codePointAt(int32_t index) const; - - UChar32 codePointBefore(int32_t index) const; - - NumberStringBuilder &clear(); - - int32_t appendCodePoint(UChar32 codePoint, Field field, UErrorCode &status); - - int32_t insertCodePoint(int32_t index, UChar32 codePoint, Field field, UErrorCode &status); - - int32_t append(const UnicodeString &unistr, Field field, UErrorCode &status); - - int32_t insert(int32_t index, const UnicodeString &unistr, Field field, UErrorCode &status); - - int32_t insert(int32_t index, const UnicodeString &unistr, int32_t start, int32_t end, Field field, - UErrorCode &status); - - int32_t splice(int32_t startThis, int32_t endThis, const UnicodeString &unistr, - int32_t startOther, int32_t endOther, Field field, UErrorCode& status); - - int32_t append(const NumberStringBuilder &other, UErrorCode &status); - - int32_t insert(int32_t index, const NumberStringBuilder &other, UErrorCode &status); - - void writeTerminator(UErrorCode& status); - - /** - * Gets a "safe" UnicodeString that can be used even after the NumberStringBuilder is destructed. - * */ - UnicodeString toUnicodeString() const; - - /** - * Gets an "unsafe" UnicodeString that is valid only as long as the NumberStringBuilder is alive and - * unchanged. Slightly faster than toUnicodeString(). - */ - const UnicodeString toTempUnicodeString() const; - - UnicodeString toDebugString() const; - - const char16_t *chars() const; - - bool contentEquals(const NumberStringBuilder &other) const; - - bool nextFieldPosition(FieldPosition& fp, UErrorCode& status) const; - - void getAllFieldPositions(FieldPositionIteratorHandler& fpih, UErrorCode& status) const; - - bool nextPosition(ConstrainedFieldPosition& cfpos, Field numericField, UErrorCode& status) const; - - bool containsField(Field field) const; - - private: - bool fUsingHeap = false; - ValueOrHeapArray fChars; - ValueOrHeapArray fFields; - int32_t fZero = DEFAULT_CAPACITY / 2; - int32_t fLength = 0; - - inline char16_t *getCharPtr() { - return fUsingHeap ? fChars.heap.ptr : fChars.value; - } - - inline const char16_t *getCharPtr() const { - return fUsingHeap ? fChars.heap.ptr : fChars.value; - } - - inline Field *getFieldPtr() { - return fUsingHeap ? fFields.heap.ptr : fFields.value; - } - - inline const Field *getFieldPtr() const { - return fUsingHeap ? fFields.heap.ptr : fFields.value; - } - - inline int32_t getCapacity() const { - return fUsingHeap ? fChars.heap.capacity : DEFAULT_CAPACITY; - } - - int32_t prepareForInsert(int32_t index, int32_t count, UErrorCode &status); - - int32_t prepareForInsertHelper(int32_t index, int32_t count, UErrorCode &status); - - int32_t remove(int32_t index, int32_t count); - - static bool isIntOrGroup(Field field); - - static bool isNumericField(Field field); - - int32_t trimBack(int32_t limit) const; - - int32_t trimFront(int32_t start) const; -}; - -} // namespace impl -} // namespace number -U_NAMESPACE_END - - -#endif //__NUMBER_STRINGBUILDER_H__ - -#endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/i18n/number_types.h b/source/i18n/number_types.h index 225d1e5..d62aa6a 100644 --- a/source/i18n/number_types.h +++ b/source/i18n/number_types.h @@ -17,17 +17,16 @@ #include "unicode/platform.h" #include "unicode/uniset.h" #include "standardplural.h" +#include "formatted_string_builder.h" -U_NAMESPACE_BEGIN namespace number { +U_NAMESPACE_BEGIN +namespace number { namespace impl { -// Typedef several enums for brevity and for easier comparison to Java. +// For convenience and historical reasons, import the Field typedef to the namespace. +typedef FormattedStringBuilder::Field Field; -// Convention: bottom 4 bits for field, top 4 bits for field category. -// Field category 0 implies the number category so that the number field -// literals can be directly passed as a Field type. -// See the helper functions in "NumFieldUtils" in number_utils.h -typedef uint8_t Field; +// Typedef several enums for brevity and for easier comparison to Java. typedef UNumberFormatRoundingMode RoundingMode; @@ -49,7 +48,6 @@ static constexpr char16_t kFallbackPaddingString[] = u" "; class Modifier; class MutablePatternModifier; class DecimalQuantity; -class NumberStringBuilder; class ModifierStore; struct MicroProps; @@ -93,6 +91,12 @@ enum CompactType { TYPE_DECIMAL, TYPE_CURRENCY }; +enum Signum { + SIGNUM_NEG = -1, + SIGNUM_ZERO = 0, + SIGNUM_POS = 1 +}; + class U_I18N_API AffixPatternProvider { public: @@ -160,7 +164,7 @@ class U_I18N_API Modifier { * formatted. * @return The number of characters (UTF-16 code units) that were added to the string builder. */ - virtual int32_t apply(NumberStringBuilder& output, int leftIndex, int rightIndex, + virtual int32_t apply(FormattedStringBuilder& output, int leftIndex, int rightIndex, UErrorCode& status) const = 0; /** @@ -196,11 +200,11 @@ class U_I18N_API Modifier { */ struct U_I18N_API Parameters { const ModifierStore* obj = nullptr; - int8_t signum; + Signum signum; StandardPlural::Form plural; Parameters(); - Parameters(const ModifierStore* _obj, int8_t _signum, StandardPlural::Form _plural); + Parameters(const ModifierStore* _obj, Signum _signum, StandardPlural::Form _plural); }; /** @@ -231,7 +235,7 @@ class U_I18N_API ModifierStore { /** * Returns a Modifier with the given parameters (best-effort). */ - virtual const Modifier* getModifier(int8_t signum, StandardPlural::Form plural) const = 0; + virtual const Modifier* getModifier(Signum signum, StandardPlural::Form plural) const = 0; }; diff --git a/source/i18n/number_utils.cpp b/source/i18n/number_utils.cpp index 0983b7b..91d7f33 100644 --- a/source/i18n/number_utils.cpp +++ b/source/i18n/number_utils.cpp @@ -252,4 +252,15 @@ bool DecNum::isZero() const { return decNumberIsZero(fData.getAlias()); } +void DecNum::toString(ByteSink& output, UErrorCode& status) const { + if (U_FAILURE(status)) { + return; + } + // "string must be at least dn->digits+14 characters long" + int32_t minCapacity = fData.getAlias()->digits + 14; + MaybeStackArray buffer(minCapacity); + uprv_decNumberToString(fData, buffer.getAlias()); + output.Append(buffer.getAlias(), static_cast(uprv_strlen(buffer.getAlias()))); +} + #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/i18n/number_utils.h b/source/i18n/number_utils.h index 203dec6..93195f0 100644 --- a/source/i18n/number_utils.h +++ b/source/i18n/number_utils.h @@ -17,6 +17,7 @@ #include "number_roundingutils.h" #include "decNumber.h" #include "charstr.h" +#include "formatted_string_builder.h" U_NAMESPACE_BEGIN @@ -32,52 +33,10 @@ enum CldrPatternStyle { CLDR_PATTERN_STYLE_COUNT, }; - -/** - * Helper functions for dealing with the Field typedef, which stores fields - * in a compressed format. - */ -class NumFieldUtils { -public: - struct CategoryFieldPair { - int32_t category; - int32_t field; - }; - - /** Compile-time function to construct a Field from a category and a field */ - template - static constexpr Field compress() { - static_assert(category != 0, "cannot use Undefined category in NumFieldUtils"); - static_assert(category <= 0xf, "only 4 bits for category"); - static_assert(field <= 0xf, "only 4 bits for field"); - return static_cast((category << 4) | field); - } - - /** Runtime inline function to unpack the category and field from the Field */ - static inline CategoryFieldPair expand(Field field) { - if (field == UNUM_FIELD_COUNT) { - return {UFIELD_CATEGORY_UNDEFINED, 0}; - } - CategoryFieldPair ret = { - (field >> 4), - (field & 0xf) - }; - if (ret.category == 0) { - ret.category = UFIELD_CATEGORY_NUMBER; - } - return ret; - } - - static inline bool isNumericField(Field field) { - int8_t category = field >> 4; - return category == 0 || category == UFIELD_CATEGORY_NUMBER; - } -}; - // Namespace for naked functions namespace utils { -inline int32_t insertDigitFromSymbols(NumberStringBuilder& output, int32_t index, int8_t digit, +inline int32_t insertDigitFromSymbols(FormattedStringBuilder& output, int32_t index, int8_t digit, const DecimalFormatSymbols& symbols, Field field, UErrorCode& status) { if (symbols.getCodePointZero() != -1) { diff --git a/source/i18n/number_utypes.h b/source/i18n/number_utypes.h index 88b493c..6dbe5be 100644 --- a/source/i18n/number_utypes.h +++ b/source/i18n/number_utypes.h @@ -10,7 +10,7 @@ #include "unicode/numberformatter.h" #include "number_types.h" #include "number_decimalquantity.h" -#include "number_stringbuilder.h" +#include "formatted_string_builder.h" #include "formattedval_impl.h" U_NAMESPACE_BEGIN namespace number { @@ -31,9 +31,9 @@ const DecimalQuantity* validateUFormattedNumberToDecimalQuantity( * The DecimalQuantity is not currently being used by FormattedNumber, but at some point it could be used * to add a toDecNumber() or similar method. */ -class UFormattedNumberData : public FormattedValueNumberStringBuilderImpl { +class UFormattedNumberData : public FormattedValueStringBuilderImpl { public: - UFormattedNumberData() : FormattedValueNumberStringBuilderImpl(0) {} + UFormattedNumberData() : FormattedValueStringBuilderImpl(0) {} virtual ~UFormattedNumberData(); DecimalQuantity quantity; diff --git a/source/i18n/numfmt.cpp b/source/i18n/numfmt.cpp index 7adf902..7c3a055 100644 --- a/source/i18n/numfmt.cpp +++ b/source/i18n/numfmt.cpp @@ -569,7 +569,7 @@ NumberFormat::format(const Formattable& obj, if(arg.wasCurrency() && u_strcmp(iso, getCurrency())) { // trying to format a different currency. // Right now, we clone. - LocalPointer cloneFmt((NumberFormat*)this->clone()); + LocalPointer cloneFmt(this->clone()); cloneFmt->setCurrency(iso, status); // next line should NOT recurse, because n is numeric whereas obj was a wrapper around currency amount. return cloneFmt->format(*n, appendTo, pos, status); @@ -624,7 +624,7 @@ NumberFormat::format(const Formattable& obj, if(arg.wasCurrency() && u_strcmp(iso, getCurrency())) { // trying to format a different currency. // Right now, we clone. - LocalPointer cloneFmt((NumberFormat*)this->clone()); + LocalPointer cloneFmt(this->clone()); cloneFmt->setCurrency(iso, status); // next line should NOT recurse, because n is numeric whereas obj was a wrapper around currency amount. return cloneFmt->format(*n, appendTo, posIter, status); @@ -986,15 +986,19 @@ static UBool haveService() { URegistryKey U_EXPORT2 NumberFormat::registerFactory(NumberFormatFactory* toAdopt, UErrorCode& status) { - ICULocaleService *service = getNumberFormatService(); - if (service) { - NFFactory *tempnnf = new NFFactory(toAdopt); - if (tempnnf != NULL) { - return service->registerFactory(tempnnf, status); - } - } - status = U_MEMORY_ALLOCATION_ERROR; - return NULL; + if (U_FAILURE(status)) { + delete toAdopt; + return nullptr; + } + ICULocaleService *service = getNumberFormatService(); + if (service) { + NFFactory *tempnnf = new NFFactory(toAdopt); + if (tempnnf != NULL) { + return service->registerFactory(tempnnf, status); + } + } + status = U_MEMORY_ALLOCATION_ERROR; + return NULL; } // ------------------------------------- @@ -1055,7 +1059,7 @@ NumberFormat::createInstance(const Locale& loc, UNumberFormatStyle kind, UErrorC if (U_FAILURE(status)) { return NULL; } - NumberFormat *result = static_cast((*shared)->clone()); + NumberFormat *result = (*shared)->clone(); shared->removeRef(); if (result == NULL) { status = U_MEMORY_ALLOCATION_ERROR; @@ -1362,7 +1366,7 @@ NumberFormat::makeInstance(const Locale& desiredLocale, // TODO: Bad hash key usage, see ticket #8504. int32_t hashKey = desiredLocale.hashCode(); - static icu::UMutex nscacheMutex = U_MUTEX_INITIALIZER; + static UMutex nscacheMutex; Mutex lock(&nscacheMutex); ns = (NumberingSystem *)uhash_iget(NumberingSystem_cache, hashKey); if (ns == NULL) { diff --git a/source/i18n/numparse_affixes.cpp b/source/i18n/numparse_affixes.cpp index 6e00d9f..cf8bab4 100644 --- a/source/i18n/numparse_affixes.cpp +++ b/source/i18n/numparse_affixes.cpp @@ -13,6 +13,7 @@ #include "numparse_affixes.h" #include "numparse_utils.h" #include "number_utils.h" +#include "string_segment.h" using namespace icu; using namespace icu::numparse; @@ -280,7 +281,9 @@ void AffixMatcherWarehouse::createAffixMatchers(const AffixPatternProvider& patt AffixPatternMatcher* posSuffix = nullptr; // Pre-process the affix strings to resolve LDML rules like sign display. - for (int8_t signum = 1; signum >= -1; signum--) { + for (int8_t signumInt = 1; signumInt >= -1; signumInt--) { + auto signum = static_cast(signumInt); + // Generate Prefix bool hasPrefix = false; PatternStringUtils::patternInfoToStringBuilder( diff --git a/source/i18n/numparse_compositions.cpp b/source/i18n/numparse_compositions.cpp index 19253da..2f7e1ab 100644 --- a/source/i18n/numparse_compositions.cpp +++ b/source/i18n/numparse_compositions.cpp @@ -11,6 +11,7 @@ #include "numparse_types.h" #include "numparse_compositions.h" +#include "string_segment.h" #include "unicode/uniset.h" using namespace icu; diff --git a/source/i18n/numparse_currency.cpp b/source/i18n/numparse_currency.cpp index 598ace5..6b53a73 100644 --- a/source/i18n/numparse_currency.cpp +++ b/source/i18n/numparse_currency.cpp @@ -14,6 +14,7 @@ #include "ucurrimp.h" #include "unicode/errorcode.h" #include "numparse_utils.h" +#include "string_segment.h" using namespace icu; using namespace icu::numparse; diff --git a/source/i18n/numparse_decimal.cpp b/source/i18n/numparse_decimal.cpp index b120c5c..cf1e815 100644 --- a/source/i18n/numparse_decimal.cpp +++ b/source/i18n/numparse_decimal.cpp @@ -16,6 +16,7 @@ #include "unicode/uchar.h" #include "putilimp.h" #include "number_decimalquantity.h" +#include "string_segment.h" using namespace icu; using namespace icu::numparse; diff --git a/source/i18n/numparse_impl.cpp b/source/i18n/numparse_impl.cpp index 412ea89..bf58290 100644 --- a/source/i18n/numparse_impl.cpp +++ b/source/i18n/numparse_impl.cpp @@ -39,7 +39,7 @@ NumberParserImpl::createSimpleParser(const Locale& locale, const UnicodeString& LocalPointer parser(new NumberParserImpl(parseFlags)); DecimalFormatSymbols symbols(locale, status); - parser->fLocalMatchers.ignorables = {unisets::DEFAULT_IGNORABLES}; + parser->fLocalMatchers.ignorables = {parseFlags}; IgnorablesMatcher& ignorables = parser->fLocalMatchers.ignorables; DecimalFormatSymbols dfs(locale, status); @@ -114,6 +114,7 @@ NumberParserImpl::createParserFromProperties(const number::impl::DecimalFormatPr parseFlags |= PARSE_FLAG_STRICT_SEPARATORS; parseFlags |= PARSE_FLAG_USE_FULL_AFFIXES; parseFlags |= PARSE_FLAG_EXACT_AFFIX; + parseFlags |= PARSE_FLAG_STRICT_IGNORABLES; } else { parseFlags |= PARSE_FLAG_INCLUDE_UNPAIRED_AFFIXES; } @@ -129,8 +130,7 @@ NumberParserImpl::createParserFromProperties(const number::impl::DecimalFormatPr LocalPointer parser(new NumberParserImpl(parseFlags)); - parser->fLocalMatchers.ignorables = { - isStrict ? unisets::STRICT_IGNORABLES : unisets::DEFAULT_IGNORABLES}; + parser->fLocalMatchers.ignorables = {parseFlags}; IgnorablesMatcher& ignorables = parser->fLocalMatchers.ignorables; ////////////////////// diff --git a/source/i18n/numparse_impl.h b/source/i18n/numparse_impl.h index 7d5f0b6..380d9aa 100644 --- a/source/i18n/numparse_impl.h +++ b/source/i18n/numparse_impl.h @@ -18,6 +18,7 @@ #include "unicode/localpointer.h" #include "numparse_validators.h" #include "number_multiplier.h" +#include "string_segment.h" U_NAMESPACE_BEGIN diff --git a/source/i18n/numparse_parsednumber.cpp b/source/i18n/numparse_parsednumber.cpp index 3145f71..4b373a3 100644 --- a/source/i18n/numparse_parsednumber.cpp +++ b/source/i18n/numparse_parsednumber.cpp @@ -11,6 +11,7 @@ #include "numparse_types.h" #include "number_decimalquantity.h" +#include "string_segment.h" #include "putilimp.h" #include @@ -73,7 +74,7 @@ double ParsedNumber::getDouble(UErrorCode& status) const { status = U_INVALID_STATE_ERROR; return 0.0; } - if (quantity.isZero() && quantity.isNegative()) { + if (quantity.isZeroish() && quantity.isNegative()) { return -0.0; } @@ -106,7 +107,7 @@ void ParsedNumber::populateFormattable(Formattable& output, parse_flags_t parseF } } U_ASSERT(!quantity.bogus); - if (quantity.isZero() && quantity.isNegative() && !integerOnly) { + if (quantity.isZeroish() && quantity.isNegative() && !integerOnly) { output.setDouble(-0.0); return; } diff --git a/source/i18n/numparse_scientific.cpp b/source/i18n/numparse_scientific.cpp index de38957..4b88cd9 100644 --- a/source/i18n/numparse_scientific.cpp +++ b/source/i18n/numparse_scientific.cpp @@ -12,6 +12,7 @@ #include "numparse_types.h" #include "numparse_scientific.h" #include "static_unicode_sets.h" +#include "string_segment.h" using namespace icu; using namespace icu::numparse; @@ -33,7 +34,8 @@ inline const UnicodeSet& plusSignSet() { ScientificMatcher::ScientificMatcher(const DecimalFormatSymbols& dfs, const Grouper& grouper) : fExponentSeparatorString(dfs.getConstSymbol(DecimalFormatSymbols::kExponentialSymbol)), - fExponentMatcher(dfs, grouper, PARSE_FLAG_INTEGER_ONLY | PARSE_FLAG_GROUPING_DISABLED) { + fExponentMatcher(dfs, grouper, PARSE_FLAG_INTEGER_ONLY | PARSE_FLAG_GROUPING_DISABLED), + fIgnorablesMatcher(PARSE_FLAG_STRICT_IGNORABLES) { const UnicodeString& minusSign = dfs.getConstSymbol(DecimalFormatSymbols::kMinusSignSymbol); if (minusSignSet().contains(minusSign)) { @@ -63,15 +65,25 @@ bool ScientificMatcher::match(StringSegment& segment, ParsedNumber& result, UErr // First match the scientific separator, and then match another number after it. // NOTE: This is guarded by the smoke test; no need to check fExponentSeparatorString length again. - int overlap1 = segment.getCommonPrefixLength(fExponentSeparatorString); - if (overlap1 == fExponentSeparatorString.length()) { + int32_t initialOffset = segment.getOffset(); + int32_t overlap = segment.getCommonPrefixLength(fExponentSeparatorString); + if (overlap == fExponentSeparatorString.length()) { // Full exponent separator match. // First attempt to get a code point, returning true if we can't get one. - if (segment.length() == overlap1) { + if (segment.length() == overlap) { + return true; + } + segment.adjustOffset(overlap); + + // Allow ignorables before the sign. + // Note: call site is guarded by the segment.length() check above. + // Note: the ignorables matcher should not touch the result. + fIgnorablesMatcher.match(segment, result, status); + if (segment.length() == 0) { + segment.setOffset(initialOffset); return true; } - segment.adjustOffset(overlap1); // Allow a sign, and then try to match digits. int8_t exponentSign = 1; @@ -81,24 +93,37 @@ bool ScientificMatcher::match(StringSegment& segment, ParsedNumber& result, UErr } else if (segment.startsWith(plusSignSet())) { segment.adjustOffsetByCodePoint(); } else if (segment.startsWith(fCustomMinusSign)) { - // Note: call site is guarded with startsWith, which returns false on empty string - int32_t overlap2 = segment.getCommonPrefixLength(fCustomMinusSign); - if (overlap2 != fCustomMinusSign.length()) { - // Partial custom sign match; un-match the exponent separator. - segment.adjustOffset(-overlap1); + overlap = segment.getCommonPrefixLength(fCustomMinusSign); + if (overlap != fCustomMinusSign.length()) { + // Partial custom sign match + segment.setOffset(initialOffset); return true; } exponentSign = -1; - segment.adjustOffset(overlap2); + segment.adjustOffset(overlap); } else if (segment.startsWith(fCustomPlusSign)) { - // Note: call site is guarded with startsWith, which returns false on empty string - int32_t overlap2 = segment.getCommonPrefixLength(fCustomPlusSign); - if (overlap2 != fCustomPlusSign.length()) { - // Partial custom sign match; un-match the exponent separator. - segment.adjustOffset(-overlap1); + overlap = segment.getCommonPrefixLength(fCustomPlusSign); + if (overlap != fCustomPlusSign.length()) { + // Partial custom sign match + segment.setOffset(initialOffset); return true; } - segment.adjustOffset(overlap2); + segment.adjustOffset(overlap); + } + + // Return true if the segment is empty. + if (segment.length() == 0) { + segment.setOffset(initialOffset); + return true; + } + + // Allow ignorables after the sign. + // Note: call site is guarded by the segment.length() check above. + // Note: the ignorables matcher should not touch the result. + fIgnorablesMatcher.match(segment, result, status); + if (segment.length() == 0) { + segment.setOffset(initialOffset); + return true; } // We are supposed to accept E0 after NaN, so we need to make sure result.quantity is available. @@ -112,12 +137,12 @@ bool ScientificMatcher::match(StringSegment& segment, ParsedNumber& result, UErr // At least one exponent digit was matched. result.flags |= FLAG_HAS_EXPONENT; } else { - // No exponent digits were matched; un-match the exponent separator. - segment.adjustOffset(-overlap1); + // No exponent digits were matched + segment.setOffset(initialOffset); } return digitsReturnValue; - } else if (overlap1 == segment.length()) { + } else if (overlap == segment.length()) { // Partial exponent separator match return true; } diff --git a/source/i18n/numparse_scientific.h b/source/i18n/numparse_scientific.h index ddecf85..5617c0c 100644 --- a/source/i18n/numparse_scientific.h +++ b/source/i18n/numparse_scientific.h @@ -9,6 +9,7 @@ #include "numparse_types.h" #include "numparse_decimal.h" +#include "numparse_symbols.h" #include "unicode/numberformatter.h" using icu::number::impl::Grouper; @@ -32,6 +33,7 @@ class ScientificMatcher : public NumberParseMatcher, public UMemory { private: UnicodeString fExponentSeparatorString; DecimalMatcher fExponentMatcher; + IgnorablesMatcher fIgnorablesMatcher; UnicodeString fCustomMinusSign; UnicodeString fCustomPlusSign; }; diff --git a/source/i18n/numparse_stringsegment.h b/source/i18n/numparse_stringsegment.h deleted file mode 100644 index 7a84444..0000000 --- a/source/i18n/numparse_stringsegment.h +++ /dev/null @@ -1,24 +0,0 @@ -// © 2018 and later: Unicode, Inc. and others. -// License & terms of use: http://www.unicode.org/copyright.html - -#include "unicode/utypes.h" - -#if !UCONFIG_NO_FORMATTING -#ifndef __NUMPARSE_STRINGSEGMENT_H__ -#define __NUMPARSE_STRINGSEGMENT_H__ - -#include "numparse_types.h" -#include "number_types.h" -#include "unicode/unistr.h" - -U_NAMESPACE_BEGIN -namespace numparse { -namespace impl { - - -} // namespace impl -} // namespace numparse -U_NAMESPACE_END - -#endif //__NUMPARSE_STRINGSEGMENT_H__ -#endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/i18n/numparse_symbols.cpp b/source/i18n/numparse_symbols.cpp index e0daab9..608f4f5 100644 --- a/source/i18n/numparse_symbols.cpp +++ b/source/i18n/numparse_symbols.cpp @@ -12,6 +12,7 @@ #include "numparse_types.h" #include "numparse_symbols.h" #include "numparse_utils.h" +#include "string_segment.h" using namespace icu; using namespace icu::numparse; @@ -68,8 +69,12 @@ UnicodeString SymbolMatcher::toString() const { } -IgnorablesMatcher::IgnorablesMatcher(unisets::Key key) - : SymbolMatcher({}, key) { +IgnorablesMatcher::IgnorablesMatcher(parse_flags_t parseFlags) : + SymbolMatcher( + {}, + (0 != (parseFlags & PARSE_FLAG_STRICT_IGNORABLES)) ? + unisets::STRICT_IGNORABLES : + unisets::DEFAULT_IGNORABLES) { } bool IgnorablesMatcher::isFlexible() const { diff --git a/source/i18n/numparse_symbols.h b/source/i18n/numparse_symbols.h index 8912ee9..beb133f 100644 --- a/source/i18n/numparse_symbols.h +++ b/source/i18n/numparse_symbols.h @@ -50,7 +50,7 @@ class U_I18N_API IgnorablesMatcher : public SymbolMatcher { public: IgnorablesMatcher() = default; // WARNING: Leaves the object in an unusable state - IgnorablesMatcher(unisets::Key key); + IgnorablesMatcher(parse_flags_t parseFlags); bool isFlexible() const override; diff --git a/source/i18n/numparse_types.h b/source/i18n/numparse_types.h index f837d8d..b4007c2 100644 --- a/source/i18n/numparse_types.h +++ b/source/i18n/numparse_types.h @@ -9,12 +9,13 @@ #include "unicode/uobject.h" #include "number_decimalquantity.h" +#include "string_segment.h" -U_NAMESPACE_BEGIN namespace numparse { +U_NAMESPACE_BEGIN +namespace numparse { namespace impl { // Forward-declarations -class StringSegment; class ParsedNumber; typedef int32_t result_flags_t; @@ -50,6 +51,7 @@ enum ParseFlags { // PARSE_FLAG_FORCE_BIG_DECIMAL = 0x1000, // not used in ICU4C PARSE_FLAG_NO_FOREIGN_CURRENCY = 0x2000, PARSE_FLAG_ALLOW_INFINITE_RECURSION = 0x4000, + PARSE_FLAG_STRICT_IGNORABLES = 0x8000, }; @@ -170,115 +172,6 @@ class U_I18N_API ParsedNumber { /** - * A mutable class allowing for a String with a variable offset and length. The charAt, length, and - * subSequence methods all operate relative to the fixed offset into the String. - * - * @author sffc - */ -// Exported as U_I18N_API for tests -class U_I18N_API StringSegment : public UMemory { - public: - StringSegment(const UnicodeString& str, bool ignoreCase); - - int32_t getOffset() const; - - void setOffset(int32_t start); - - /** - * Equivalent to setOffset(getOffset()+delta). - * - *

    - * This method is usually called by a Matcher to register that a char was consumed. If the char is - * strong (it usually is, except for things like whitespace), follow this with a call to - * {@link ParsedNumber#setCharsConsumed}. For more information on strong chars, see that method. - */ - void adjustOffset(int32_t delta); - - /** - * Adjusts the offset by the width of the current code point, either 1 or 2 chars. - */ - void adjustOffsetByCodePoint(); - - void setLength(int32_t length); - - void resetLength(); - - int32_t length() const; - - char16_t charAt(int32_t index) const; - - UChar32 codePointAt(int32_t index) const; - - UnicodeString toUnicodeString() const; - - const UnicodeString toTempUnicodeString() const; - - /** - * Returns the first code point in the string segment, or -1 if the string starts with an invalid - * code point. - * - *

    - * Important: Most of the time, you should use {@link #matches}, which handles case - * folding logic, instead of this method. - */ - UChar32 getCodePoint() const; - - /** - * Returns true if the first code point of this StringSegment equals the given code point. - * - *

    - * This method will perform case folding if case folding is enabled for the parser. - */ - bool startsWith(UChar32 otherCp) const; - - /** - * Returns true if the first code point of this StringSegment is in the given UnicodeSet. - */ - bool startsWith(const UnicodeSet& uniset) const; - - /** - * Returns true if there is at least one code point of overlap between this StringSegment and the - * given UnicodeString. - */ - bool startsWith(const UnicodeString& other) const; - - /** - * Returns the length of the prefix shared by this StringSegment and the given CharSequence. For - * example, if this string segment is "aab", and the char sequence is "aac", this method returns 2, - * since the first 2 characters are the same. - * - *

    - * This method only returns offsets along code point boundaries. - * - *

    - * This method will perform case folding if case folding was enabled in the constructor. - * - *

    - * IMPORTANT: The given UnicodeString must not be empty! It is the caller's responsibility to check. - */ - int32_t getCommonPrefixLength(const UnicodeString& other); - - /** - * Like {@link #getCommonPrefixLength}, but never performs case folding, even if case folding is - * enabled for the parser. - */ - int32_t getCaseSensitivePrefixLength(const UnicodeString& other); - - bool operator==(const UnicodeString& other) const; - - private: - const UnicodeString& fStr; - int32_t fStart; - int32_t fEnd; - bool fFoldCase; - - int32_t getPrefixLengthInternal(const UnicodeString& other, bool foldCase); - - static bool codePointsEqual(UChar32 cp1, UChar32 cp2, bool foldCase); -}; - - -/** * The core interface implemented by all matchers used for number parsing. * * Given a string, there should NOT be more than one way to consume the string with the same matcher diff --git a/source/i18n/numrange_fluent.cpp b/source/i18n/numrange_fluent.cpp index b284561..654cafa 100644 --- a/source/i18n/numrange_fluent.cpp +++ b/source/i18n/numrange_fluent.cpp @@ -382,7 +382,7 @@ UPRV_FORMATTED_VALUE_SUBCLASS_AUTO_IMPL(FormattedNumberRange) UBool FormattedNumberRange::nextFieldPosition(FieldPosition& fieldPosition, UErrorCode& status) const { UPRV_FORMATTED_VALUE_METHOD_GUARD(FALSE) // NOTE: MSVC sometimes complains when implicitly converting between bool and UBool - return fData->getStringRef().nextFieldPosition(fieldPosition, status) ? TRUE : FALSE; + return fData->nextFieldPosition(fieldPosition, status); } void FormattedNumberRange::getAllFieldPositions(FieldPositionIterator& iterator, UErrorCode& status) const { @@ -393,7 +393,7 @@ void FormattedNumberRange::getAllFieldPositions(FieldPositionIterator& iterator, void FormattedNumberRange::getAllFieldPositionsImpl( FieldPositionIteratorHandler& fpih, UErrorCode& status) const { UPRV_FORMATTED_VALUE_METHOD_GUARD(UPRV_NOARG) - fData->getStringRef().getAllFieldPositions(fpih, status); + fData->getAllFieldPositions(fpih, status); } UnicodeString FormattedNumberRange::getFirstDecimal(UErrorCode& status) const { diff --git a/source/i18n/numrange_impl.cpp b/source/i18n/numrange_impl.cpp index 05eb2b8..7d732b3 100644 --- a/source/i18n/numrange_impl.cpp +++ b/source/i18n/numrange_impl.cpp @@ -397,7 +397,7 @@ void NumberRangeFormatterImpl::formatRange(UFormattedNumberRangeData& data, break; } - NumberStringBuilder& string = data.getStringRef(); + FormattedStringBuilder& string = data.getStringRef(); int32_t lengthPrefix = 0; int32_t length1 = 0; int32_t lengthInfix = 0; diff --git a/source/i18n/numrange_impl.h b/source/i18n/numrange_impl.h index dc25dd4..f88e300 100644 --- a/source/i18n/numrange_impl.h +++ b/source/i18n/numrange_impl.h @@ -13,7 +13,7 @@ #include "number_types.h" #include "number_decimalquantity.h" #include "number_formatimpl.h" -#include "number_stringbuilder.h" +#include "formatted_string_builder.h" #include "formattedval_impl.h" U_NAMESPACE_BEGIN namespace number { @@ -29,9 +29,9 @@ namespace impl { * Possible magic number: 0x46445200 * Reads in ASCII as "FDR" (FormatteDnumberRange with room at the end) */ -class UFormattedNumberRangeData : public FormattedValueNumberStringBuilderImpl { +class UFormattedNumberRangeData : public FormattedValueStringBuilderImpl { public: - UFormattedNumberRangeData() : FormattedValueNumberStringBuilderImpl(0) {} + UFormattedNumberRangeData() : FormattedValueStringBuilderImpl(0) {} virtual ~UFormattedNumberRangeData(); DecimalQuantity quantity1; diff --git a/source/i18n/numsys.cpp b/source/i18n/numsys.cpp index d420151..ee530e8 100644 --- a/source/i18n/numsys.cpp +++ b/source/i18n/numsys.cpp @@ -37,7 +37,7 @@ U_NAMESPACE_BEGIN // Useful constants -#define DEFAULT_DIGITS UNICODE_STRING_SIMPLE("0123456789"); +#define DEFAULT_DIGITS UNICODE_STRING_SIMPLE("0123456789") static const char gNumberingSystems[] = "numberingSystems"; static const char gNumberElements[] = "NumberElements"; static const char gDefault[] = "default"; diff --git a/source/i18n/olsontz.cpp b/source/i18n/olsontz.cpp index 7f9fe43..d21e6e9 100644 --- a/source/i18n/olsontz.cpp +++ b/source/i18n/olsontz.cpp @@ -287,8 +287,7 @@ OlsonTimeZone& OlsonTimeZone::operator=(const OlsonTimeZone& other) { typeMapData = other.typeMapData; delete finalZone; - finalZone = (other.finalZone != 0) ? - (SimpleTimeZone*) other.finalZone->clone() : 0; + finalZone = (other.finalZone != 0) ? other.finalZone->clone() : 0; finalStartYear = other.finalStartYear; finalStartMillis = other.finalStartMillis; @@ -319,7 +318,7 @@ UBool OlsonTimeZone::operator==(const TimeZone& other) const { /** * TimeZone API. */ -TimeZone* OlsonTimeZone::clone() const { +OlsonTimeZone* OlsonTimeZone::clone() const { return new OlsonTimeZone(*this); } @@ -816,7 +815,7 @@ OlsonTimeZone::initTransitionRules(UErrorCode& status) { * For now, we do not set the valid start year when the construction time * and create a clone and set the start year when extracting rules. */ - finalZoneWithStartYear = (SimpleTimeZone*)finalZone->clone(); + finalZoneWithStartYear = finalZone->clone(); // Check to make sure finalZone was actually cloned. if (finalZoneWithStartYear == NULL) { status = U_MEMORY_ALLOCATION_ERROR; @@ -837,7 +836,7 @@ OlsonTimeZone::initTransitionRules(UErrorCode& status) { startTime = tzt.getTime(); } else { // final rule with no transitions - finalZoneWithStartYear = (SimpleTimeZone*)finalZone->clone(); + finalZoneWithStartYear = finalZone->clone(); // Check to make sure finalZone was actually cloned. if (finalZoneWithStartYear == NULL) { status = U_MEMORY_ALLOCATION_ERROR; diff --git a/source/i18n/olsontz.h b/source/i18n/olsontz.h index ccc0cf9..a3b7dcc 100644 --- a/source/i18n/olsontz.h +++ b/source/i18n/olsontz.h @@ -151,7 +151,7 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { /** * TimeZone API. */ - virtual TimeZone* clone() const; + virtual OlsonTimeZone* clone() const; /** * TimeZone API. @@ -398,7 +398,7 @@ private: TimeArrayTimeZoneRule **historicRules; int16_t historicRuleCount; SimpleTimeZone *finalZoneWithStartYear; // hack - UInitOnce transitionRulesInitOnce; + UInitOnce transitionRulesInitOnce = U_INITONCE_INITIALIZER; }; inline int16_t diff --git a/source/i18n/persncal.cpp b/source/i18n/persncal.cpp index f38f779..26fd294 100644 --- a/source/i18n/persncal.cpp +++ b/source/i18n/persncal.cpp @@ -74,7 +74,7 @@ const char *PersianCalendar::getType() const { return "persian"; } -Calendar* PersianCalendar::clone() const { +PersianCalendar* PersianCalendar::clone() const { return new PersianCalendar(*this); } diff --git a/source/i18n/persncal.h b/source/i18n/persncal.h index bcfd68a..ce6d739 100644 --- a/source/i18n/persncal.h +++ b/source/i18n/persncal.h @@ -164,7 +164,7 @@ class PersianCalendar : public Calendar { // TODO: copy c'tor, etc // clone - virtual Calendar* clone() const; + virtual PersianCalendar* clone() const; private: /** diff --git a/source/i18n/plurfmt.cpp b/source/i18n/plurfmt.cpp index 678d91b..b994376 100644 --- a/source/i18n/plurfmt.cpp +++ b/source/i18n/plurfmt.cpp @@ -159,7 +159,7 @@ PluralFormat::copyObjects(const PluralFormat& other) { if (other.numberFormat == NULL) { numberFormat = NumberFormat::createInstance(locale, status); } else { - numberFormat = (NumberFormat*)other.numberFormat->clone(); + numberFormat = other.numberFormat->clone(); } if (other.pluralRulesWrapper.pluralRules == NULL) { pluralRulesWrapper.pluralRules = PluralRules::forLocale(locale, status); @@ -277,7 +277,14 @@ PluralFormat::format(const Formattable& numberObject, double number, UnicodeString numberString; auto *decFmt = dynamic_cast(numberFormat); if(decFmt != nullptr) { - decFmt->toNumberFormatter().formatImpl(&data, status); // mutates &data + const number::LocalizedNumberFormatter* lnf = decFmt->toNumberFormatter(status); + if (U_FAILURE(status)) { + return appendTo; + } + lnf->formatImpl(&data, status); // mutates &data + if (U_FAILURE(status)) { + return appendTo; + } numberString = data.getStringRef().toUnicodeString(); } else { if (offset == 0) { @@ -346,7 +353,7 @@ PluralFormat::setNumberFormat(const NumberFormat* format, UErrorCode& status) { if (U_FAILURE(status)) { return; } - NumberFormat* nf = (NumberFormat*)format->clone(); + NumberFormat* nf = format->clone(); if (nf != NULL) { delete numberFormat; numberFormat = nf; @@ -355,7 +362,7 @@ PluralFormat::setNumberFormat(const NumberFormat* format, UErrorCode& status) { } } -Format* +PluralFormat* PluralFormat::clone() const { return new PluralFormat(*this); diff --git a/source/i18n/quant.cpp b/source/i18n/quant.cpp index acf579e..ed33933 100644 --- a/source/i18n/quant.cpp +++ b/source/i18n/quant.cpp @@ -47,7 +47,7 @@ Quantifier::~Quantifier() { /** * Implement UnicodeFunctor */ -UnicodeFunctor* Quantifier::clone() const { +Quantifier* Quantifier::clone() const { return new Quantifier(*this); } diff --git a/source/i18n/quant.h b/source/i18n/quant.h index 1abb0db..d5aa8e5 100644 --- a/source/i18n/quant.h +++ b/source/i18n/quant.h @@ -45,7 +45,7 @@ class Quantifier : public UnicodeFunctor, public UnicodeMatcher { * Implement UnicodeFunctor * @return a copy of the object. */ - virtual UnicodeFunctor* clone() const; + virtual Quantifier* clone() const; /** * Implement UnicodeMatcher diff --git a/source/i18n/quantityformatter.cpp b/source/i18n/quantityformatter.cpp index 9182f9e..e88b70f 100644 --- a/source/i18n/quantityformatter.cpp +++ b/source/i18n/quantityformatter.cpp @@ -26,7 +26,7 @@ #include "uassert.h" #include "number_decimalquantity.h" #include "number_utypes.h" -#include "number_stringbuilder.h" +#include "formatted_string_builder.h" U_NAMESPACE_BEGIN @@ -180,7 +180,7 @@ void QuantityFormatter::formatAndSelect( double quantity, const NumberFormat& fmt, const PluralRules& rules, - number::impl::NumberStringBuilder& output, + FormattedStringBuilder& output, StandardPlural::Form& pluralForm, UErrorCode& status) { UnicodeString pluralKeyword; @@ -188,7 +188,11 @@ void QuantityFormatter::formatAndSelect( if (df != nullptr) { number::impl::UFormattedNumberData fn; fn.quantity.setToDouble(quantity); - df->toNumberFormatter().formatImpl(&fn, status); + const number::LocalizedNumberFormatter* lnf = df->toNumberFormatter(status); + if (U_FAILURE(status)) { + return; + } + lnf->formatImpl(&fn, status); if (U_FAILURE(status)) { return; } diff --git a/source/i18n/quantityformatter.h b/source/i18n/quantityformatter.h index 046eec7..daaef4f 100644 --- a/source/i18n/quantityformatter.h +++ b/source/i18n/quantityformatter.h @@ -26,12 +26,7 @@ class PluralRules; class NumberFormat; class Formattable; class FieldPosition; - -namespace number { -namespace impl { -class NumberStringBuilder; -} -} +class FormattedStringBuilder; /** * A plural aware formatter that is good for expressing a single quantity and @@ -129,7 +124,7 @@ public: /** * Formats a quantity and selects its plural form. The output is appended - * to a NumberStringBuilder in order to retain field information. + * to a FormattedStringBuilder in order to retain field information. * * @param quantity The number to format. * @param fmt The formatter to use to format the number. @@ -144,7 +139,7 @@ public: double quantity, const NumberFormat& fmt, const PluralRules& rules, - number::impl::NumberStringBuilder& output, + FormattedStringBuilder& output, StandardPlural::Form& pluralForm, UErrorCode& status); diff --git a/source/i18n/rbnf.cpp b/source/i18n/rbnf.cpp index 27afc1f..17319fb 100644 --- a/source/i18n/rbnf.cpp +++ b/source/i18n/rbnf.cpp @@ -355,10 +355,16 @@ private: }; #ifdef RBNF_DEBUG -#define ERROR(msg) parseError(msg); return NULL; +#define ERROR(msg) UPRV_BLOCK_MACRO_BEGIN { \ + parseError(msg); \ + return NULL; \ +} UPRV_BLOCK_MACRO_END #define EXPLANATION_ARG explanationArg #else -#define ERROR(msg) parseError(NULL); return NULL; +#define ERROR(msg) UPRV_BLOCK_MACRO_BEGIN { \ + parseError(NULL); \ + return NULL; \ +} UPRV_BLOCK_MACRO_END #define EXPLANATION_ARG #endif @@ -924,8 +930,8 @@ RuleBasedNumberFormat::~RuleBasedNumberFormat() dispose(); } -Format* -RuleBasedNumberFormat::clone(void) const +RuleBasedNumberFormat* +RuleBasedNumberFormat::clone() const { return new RuleBasedNumberFormat(*this); } @@ -1112,45 +1118,6 @@ RuleBasedNumberFormat::findRuleSet(const UnicodeString& name, UErrorCode& status UnicodeString& RuleBasedNumberFormat::format(const DecimalQuantity &number, - UnicodeString &appendTo, - FieldPositionIterator *posIter, - UErrorCode &status) const { - if (U_FAILURE(status)) { - return appendTo; - } - DecimalQuantity copy(number); - if (copy.fitsInLong()) { - format(number.toLong(), appendTo, posIter, status); - } - else { - copy.roundToMagnitude(0, number::impl::RoundingMode::UNUM_ROUND_HALFEVEN, status); - if (copy.fitsInLong()) { - format(number.toDouble(), appendTo, posIter, status); - } - else { - // We're outside of our normal range that this framework can handle. - // The DecimalFormat will provide more accurate results. - - // TODO this section should probably be optimized. The DecimalFormat is shared in ICU4J. - LocalPointer decimalFormat(NumberFormat::createInstance(locale, UNUM_DECIMAL, status), status); - if (decimalFormat.isNull()) { - return appendTo; - } - Formattable f; - LocalPointer decimalQuantity(new DecimalQuantity(number), status); - if (decimalQuantity.isNull()) { - return appendTo; - } - f.adoptDecimalQuantity(decimalQuantity.orphan()); // f now owns decimalQuantity. - decimalFormat->format(f, appendTo, posIter, status); - } - } - return appendTo; -} - - -UnicodeString& -RuleBasedNumberFormat::format(const DecimalQuantity &number, UnicodeString& appendTo, FieldPosition& pos, UErrorCode &status) const { diff --git a/source/i18n/rbt.cpp b/source/i18n/rbt.cpp index b440793..4cef242 100644 --- a/source/i18n/rbt.cpp +++ b/source/i18n/rbt.cpp @@ -191,8 +191,8 @@ RuleBasedTransliterator::~RuleBasedTransliterator() { } } -Transliterator* // Covariant return NOT ALLOWED (for portability) -RuleBasedTransliterator::clone(void) const { +RuleBasedTransliterator* +RuleBasedTransliterator::clone() const { return new RuleBasedTransliterator(*this); } @@ -253,7 +253,7 @@ RuleBasedTransliterator::handleTransliterate(Replaceable& text, UTransPosition& // // TODO(andy): Need a better scheme for handling this. - static UMutex transliteratorDataMutex = U_MUTEX_INITIALIZER; + static UMutex transliteratorDataMutex; UBool needToLock; { Mutex m; diff --git a/source/i18n/rbt.h b/source/i18n/rbt.h index 671149f..97ef01e 100644 --- a/source/i18n/rbt.h +++ b/source/i18n/rbt.h @@ -144,7 +144,7 @@ public: * Implement Transliterator API. * @internal Use transliterator factory methods instead since this class will be removed in that release. */ - virtual Transliterator* clone(void) const; + virtual RuleBasedTransliterator* clone() const; protected: /** diff --git a/source/i18n/rbt_pars.cpp b/source/i18n/rbt_pars.cpp index 9932dbd..1ae5b81 100644 --- a/source/i18n/rbt_pars.cpp +++ b/source/i18n/rbt_pars.cpp @@ -1111,7 +1111,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule, int32_t p = UHASH_FIRST; const UHashElement* he = variableNames.nextElement(p); while (he != NULL) { - UnicodeString* tempus = (UnicodeString*)(((UnicodeString*)(he->value.pointer))->clone()); + UnicodeString* tempus = ((UnicodeString*)(he->value.pointer))->clone(); if (tempus == NULL) { status = U_MEMORY_ALLOCATION_ERROR; return; diff --git a/source/i18n/rbt_rule.cpp b/source/i18n/rbt_rule.cpp index 3569e42..6cc5325 100644 --- a/source/i18n/rbt_rule.cpp +++ b/source/i18n/rbt_rule.cpp @@ -180,13 +180,13 @@ TransliterationRule::TransliterationRule(TransliterationRule& other) : } if (other.anteContext != NULL) { - anteContext = (StringMatcher*) other.anteContext->clone(); + anteContext = other.anteContext->clone(); } if (other.key != NULL) { - key = (StringMatcher*) other.key->clone(); + key = other.key->clone(); } if (other.postContext != NULL) { - postContext = (StringMatcher*) other.postContext->clone(); + postContext = other.postContext->clone(); } output = other.output->clone(); } diff --git a/source/i18n/rbtz.cpp b/source/i18n/rbtz.cpp index 4aa143c..3249a32 100644 --- a/source/i18n/rbtz.cpp +++ b/source/i18n/rbtz.cpp @@ -149,7 +149,7 @@ RuleBasedTimeZone::addTransitionRule(TimeZoneRule* rule, UErrorCode& status) { void RuleBasedTimeZone::completeConst(UErrorCode& status) const { - static UMutex gLock = U_MUTEX_INITIALIZER; + static UMutex gLock; if (U_FAILURE(status)) { return; } @@ -356,8 +356,8 @@ cleanup: fUpToDate = FALSE; } -TimeZone* -RuleBasedTimeZone::clone(void) const { +RuleBasedTimeZone* +RuleBasedTimeZone::clone() const { return new RuleBasedTimeZone(*this); } diff --git a/source/i18n/regexcmp.cpp b/source/i18n/regexcmp.cpp index 2d14aa8..cacc069 100644 --- a/source/i18n/regexcmp.cpp +++ b/source/i18n/regexcmp.cpp @@ -561,7 +561,7 @@ UBool RegexCompile::doParseActions(int32_t action) // sequence; don't change without making updates there too. // // Compiles to - // 1 START_LA dataLoc Saves SP, Input Pos + // 1 LA_START dataLoc Saves SP, Input Pos, Active input region. // 2. STATE_SAVE 4 on failure of lookahead, goto 4 // 3 JMP 6 continue ... // @@ -575,10 +575,14 @@ UBool RegexCompile::doParseActions(int32_t action) // 8. code for parenthesized stuff. // 9. LA_END // - // Two data slots are reserved, for saving the stack ptr and the input position. + // Four data slots are reserved, for saving state on entry to the look-around + // 0: stack pointer on entry. + // 1: input position on entry. + // 2: fActiveStart, the active bounds start on entry. + // 3: fActiveLimit, the active bounds limit on entry. { fixLiterals(); - int32_t dataLoc = allocateData(2); + int32_t dataLoc = allocateData(4); appendOp(URX_LA_START, dataLoc); appendOp(URX_STATE_SAVE, fRXPat->fCompiledPat->size()+ 2); appendOp(URX_JMP, fRXPat->fCompiledPat->size()+ 3); @@ -599,18 +603,23 @@ UBool RegexCompile::doParseActions(int32_t action) case doOpenLookAheadNeg: // Negated Lookahead. (?! stuff ) // Compiles to - // 1. START_LA dataloc + // 1. LA_START dataloc // 2. SAVE_STATE 7 // Fail within look-ahead block restores to this state, // // which continues with the match. // 3. NOP // Std. Open Paren sequence, for possible '|' // 4. code for parenthesized stuff. - // 5. END_LA // Cut back stack, remove saved state from step 2. + // 5. LA_END // Cut back stack, remove saved state from step 2. // 6. BACKTRACK // code in block succeeded, so neg. lookahead fails. // 7. END_LA // Restore match region, in case look-ahead was using // an alternate (transparent) region. + // Four data slots are reserved, for saving state on entry to the look-around + // 0: stack pointer on entry. + // 1: input position on entry. + // 2: fActiveStart, the active bounds start on entry. + // 3: fActiveLimit, the active bounds limit on entry. { fixLiterals(); - int32_t dataLoc = allocateData(2); + int32_t dataLoc = allocateData(4); appendOp(URX_LA_START, dataLoc); appendOp(URX_STATE_SAVE, 0); // dest address will be patched later. appendOp(URX_NOP, 0); @@ -644,14 +653,16 @@ UBool RegexCompile::doParseActions(int32_t action) // Allocate a block of matcher data, to contain (when running a match) // 0: Stack ptr on entry // 1: Input Index on entry - // 2: Start index of match current match attempt. - // 3: Original Input String len. + // 2: fActiveStart, the active bounds start on entry. + // 3: fActiveLimit, the active bounds limit on entry. + // 4: Start index of match current match attempt. + // The first four items must match the layout of data for LA_START / LA_END // Generate match code for any pending literals. fixLiterals(); // Allocate data space - int32_t dataLoc = allocateData(4); + int32_t dataLoc = allocateData(5); // Emit URX_LB_START appendOp(URX_LB_START, dataLoc); @@ -696,14 +707,16 @@ UBool RegexCompile::doParseActions(int32_t action) // Allocate a block of matcher data, to contain (when running a match) // 0: Stack ptr on entry // 1: Input Index on entry - // 2: Start index of match current match attempt. - // 3: Original Input String len. + // 2: fActiveStart, the active bounds start on entry. + // 3: fActiveLimit, the active bounds limit on entry. + // 4: Start index of match current match attempt. + // The first four items must match the layout of data for LA_START / LA_END // Generate match code for any pending literals. fixLiterals(); // Allocate data space - int32_t dataLoc = allocateData(4); + int32_t dataLoc = allocateData(5); // Emit URX_LB_START appendOp(URX_LB_START, dataLoc); @@ -2285,7 +2298,7 @@ void RegexCompile::handleCloseParen() { error(U_REGEX_LOOK_BEHIND_LIMIT); break; } - if (minML == INT32_MAX && maxML == 0) { + if (minML == INT32_MAX) { // This condition happens when no match is possible, such as with a // [set] expression containing no elements. // In principle, the generated code to evaluate the expression could be deleted, @@ -2328,7 +2341,7 @@ void RegexCompile::handleCloseParen() { error(U_REGEX_LOOK_BEHIND_LIMIT); break; } - if (minML == INT32_MAX && maxML == 0) { + if (minML == INT32_MAX) { // This condition happens when no match is possible, such as with a // [set] expression containing no elements. // In principle, the generated code to evaluate the expression could be deleted, @@ -3381,7 +3394,7 @@ int32_t RegexCompile::minMatchLength(int32_t start, int32_t end) { // it assumes that the look-ahead match might be zero-length. // TODO: Positive lookahead could recursively do the block, then continue // with the longer of the block or the value coming in. Ticket 6060 - int32_t depth = (opType == URX_LA_START? 2: 1);; + int32_t depth = (opType == URX_LA_START? 2: 1); for (;;) { loc++; op = (int32_t)fRXPat->fCompiledPat->elementAti(loc); @@ -3463,7 +3476,6 @@ int32_t RegexCompile::maxMatchLength(int32_t start, int32_t end) { U_ASSERT(start <= end); U_ASSERT(end < fRXPat->fCompiledPat->size()); - int32_t loc; int32_t op; int32_t opType; @@ -3672,7 +3684,7 @@ int32_t RegexCompile::maxMatchLength(int32_t start, int32_t end) { case URX_CTR_LOOP: case URX_CTR_LOOP_NG: - // These opcodes will be skipped over by code for URX_CRT_INIT. + // These opcodes will be skipped over by code for URX_CTR_INIT. // We shouldn't encounter them here. UPRV_UNREACHABLE; @@ -3700,21 +3712,15 @@ int32_t RegexCompile::maxMatchLength(int32_t start, int32_t end) { { // Look-behind. Scan forward until the matching look-around end, // without processing the look-behind block. - int32_t depth = 0; - for (;;) { - loc++; + int32_t dataLoc = URX_VAL(op); + for (loc = loc + 1; loc < end; ++loc) { op = (int32_t)fRXPat->fCompiledPat->elementAti(loc); - if (URX_TYPE(op) == URX_LA_START || URX_TYPE(op) == URX_LB_START) { - depth++; - } - if (URX_TYPE(op) == URX_LA_END || URX_TYPE(op)==URX_LBN_END) { - if (depth == 0) { - break; - } - depth--; + int32_t opType = URX_TYPE(op); + if ((opType == URX_LA_END || opType == URX_LBN_END) && (URX_VAL(op) == dataLoc)) { + break; } - U_ASSERT(loc < end); } + U_ASSERT(loc < end); } break; diff --git a/source/i18n/regeximp.h b/source/i18n/regeximp.h index 51db882..590d216 100644 --- a/source/i18n/regeximp.h +++ b/source/i18n/regeximp.h @@ -123,7 +123,7 @@ enum { // saved input position, FAIL rather than taking // the JMP URX_LA_START = 37, // Starting a LookAround expression. - // Save InputPos and SP in static data. + // Save InputPos, SP and active region in static data. // Operand: Static data offset for the save URX_LA_END = 38, // Ending a Lookaround expression. // Restore InputPos and Stack to saved values. diff --git a/source/i18n/region.cpp b/source/i18n/region.cpp index 343ef78..76445ae 100644 --- a/source/i18n/region.cpp +++ b/source/i18n/region.cpp @@ -25,7 +25,6 @@ #include "unicode/uobject.h" #include "unicode/unistr.h" #include "unicode/ures.h" -#include "unicode/decimfmt.h" #include "ucln_in.h" #include "cstring.h" #include "mutex.h" @@ -33,6 +32,7 @@ #include "umutex.h" #include "uresimp.h" #include "region_impl.h" +#include "util.h" #if !UCONFIG_NO_FORMATTING @@ -87,7 +87,6 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { LocalUHashtablePointer newRegionIDMap(uhash_open(uhash_hashUnicodeString, uhash_compareUnicodeString, NULL, &status)); LocalUHashtablePointer newNumericCodeMap(uhash_open(uhash_hashLong,uhash_compareLong,NULL,&status)); LocalUHashtablePointer newRegionAliases(uhash_open(uhash_hashUnicodeString,uhash_compareUnicodeString,NULL,&status)); - LocalPointer df(new DecimalFormat(status), status); LocalPointer continents(new UVector(uprv_deleteUObject, uhash_compareUnicodeString, status), status); LocalPointer groupings(new UVector(uprv_deleteUObject, uhash_compareUnicodeString, status), status); @@ -115,7 +114,6 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { } // now, initialize - df->setParseIntegerOnly(TRUE); uhash_setValueDeleter(newRegionIDMap.getAlias(), deleteRegion); // regionIDMap owns objs uhash_setKeyDeleter(newRegionAliases.getAlias(), uprv_deleteUObject); // regionAliases owns the string keys @@ -192,11 +190,10 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { r->idStr.extract(0,r->idStr.length(),r->id,sizeof(r->id),US_INV); r->fType = URGN_TERRITORY; // Only temporary - figure out the real type later once the aliases are known. - Formattable result; - UErrorCode ps = U_ZERO_ERROR; - df->parse(r->idStr,result,ps); - if ( U_SUCCESS(ps) ) { - r->code = result.getLong(); // Convert string to number + int32_t pos = 0; + int32_t result = ICU_Utility::parseAsciiInteger(r->idStr, pos); + if (pos > 0) { + r->code = result; // Convert string to number uhash_iput(newNumericCodeMap.getAlias(),r->code,(void *)(r.getAlias()),&status); r->fType = URGN_SUBCONTINENT; } else { @@ -230,11 +227,10 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { aliasFromRegion->idStr.setTo(*aliasFromStr); aliasFromRegion->idStr.extract(0,aliasFromRegion->idStr.length(),aliasFromRegion->id,sizeof(aliasFromRegion->id),US_INV); uhash_put(newRegionIDMap.getAlias(),(void *)&(aliasFromRegion->idStr),(void *)aliasFromRegion,&status); - Formattable result; - UErrorCode ps = U_ZERO_ERROR; - df->parse(aliasFromRegion->idStr,result,ps); - if ( U_SUCCESS(ps) ) { - aliasFromRegion->code = result.getLong(); // Convert string to number + int32_t pos = 0; + int32_t result = ICU_Utility::parseAsciiInteger(aliasFromRegion->idStr, pos); + if ( pos > 0 ) { + aliasFromRegion->code = result; // Convert string to number uhash_iput(newNumericCodeMap.getAlias(),aliasFromRegion->code,(void *)aliasFromRegion,&status); } else { aliasFromRegion->code = -1; @@ -279,11 +275,10 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { Region *r = (Region *)uhash_get(newRegionIDMap.getAlias(),(void *)&codeMappingID); if ( r ) { - Formattable result; - UErrorCode ps = U_ZERO_ERROR; - df->parse(codeMappingNumber,result,ps); - if ( U_SUCCESS(ps) ) { - r->code = result.getLong(); // Convert string to number + int32_t pos = 0; + int32_t result = ICU_Utility::parseAsciiInteger(codeMappingNumber, pos); + if ( pos > 0 ) { + r->code = result; // Convert string to number uhash_iput(newNumericCodeMap.getAlias(),r->code,(void *)r,&status); } LocalPointer code3(new UnicodeString(codeMapping3Letter), status); @@ -516,15 +511,8 @@ Region::getInstance (int32_t code, UErrorCode &status) { Region *r = (Region *)uhash_iget(numericCodeMap,code); if ( !r ) { // Just in case there's an alias that's numeric, try to find it. - UnicodeString pat = UNICODE_STRING_SIMPLE("0"); - LocalPointer df(new DecimalFormat(pat,status), status); - if( U_FAILURE(status) ) { - return NULL; - } UnicodeString id; - id.remove(); - FieldPosition posIter; - df->format(code,id, posIter, status); + ICU_Utility::appendNumber(id, code, 10, 1); r = (Region *)uhash_get(regionAliases,&id); } diff --git a/source/i18n/reldatefmt.cpp b/source/i18n/reldatefmt.cpp index 2b58e47..f66092b 100644 --- a/source/i18n/reldatefmt.cpp +++ b/source/i18n/reldatefmt.cpp @@ -43,7 +43,7 @@ #include "standardplural.h" #include "unifiedcache.h" #include "util.h" -#include "number_stringbuilder.h" +#include "formatted_string_builder.h" #include "number_utypes.h" #include "number_modifiers.h" #include "formattedval_impl.h" @@ -315,6 +315,10 @@ struct RelDateTimeFmtDataSink : public ResourceSink { return UDAT_ABSOLUTE_FRIDAY; case SATURDAY: return UDAT_ABSOLUTE_SATURDAY; + case HOUR: + return UDAT_ABSOLUTE_HOUR; + case MINUTE: + return UDAT_ABSOLUTE_MINUTE; default: return -1; } @@ -725,14 +729,14 @@ const RelativeDateTimeCacheData *LocaleCacheKey::crea static constexpr number::impl::Field kRDTNumericField - = number::impl::NumFieldUtils::compress(); + = StringBuilderFieldUtils::compress(); static constexpr number::impl::Field kRDTLiteralField - = number::impl::NumFieldUtils::compress(); + = StringBuilderFieldUtils::compress(); -class FormattedRelativeDateTimeData : public FormattedValueNumberStringBuilderImpl { +class FormattedRelativeDateTimeData : public FormattedValueStringBuilderImpl { public: - FormattedRelativeDateTimeData() : FormattedValueNumberStringBuilderImpl(kRDTNumericField) {} + FormattedRelativeDateTimeData() : FormattedValueStringBuilderImpl(kRDTNumericField) {} virtual ~FormattedRelativeDateTimeData(); }; @@ -1157,6 +1161,8 @@ void RelativeDateTimeFormatter::formatRelativeImpl( case UDAT_REL_UNIT_THURSDAY: absunit = UDAT_ABSOLUTE_THURSDAY; break; case UDAT_REL_UNIT_FRIDAY: absunit = UDAT_ABSOLUTE_FRIDAY; break; case UDAT_REL_UNIT_SATURDAY: absunit = UDAT_ABSOLUTE_SATURDAY; break; + case UDAT_REL_UNIT_HOUR: absunit = UDAT_ABSOLUTE_HOUR; break; + case UDAT_REL_UNIT_MINUTE: absunit = UDAT_ABSOLUTE_MINUTE; break; default: break; } if (direction != UDAT_DIRECTION_COUNT && absunit != UDAT_ABSOLUTE_UNIT_COUNT) { @@ -1184,7 +1190,7 @@ UnicodeString& RelativeDateTimeFormatter::adjustForContext(UnicodeString &str) c // Must guarantee that one thread at a time accesses the shared break // iterator. - static icu::UMutex gBrkIterMutex = U_MUTEX_INITIALIZER; + static UMutex gBrkIterMutex; Mutex lock(&gBrkIterMutex); str.toTitle( fOptBreakIterator->get(), diff --git a/source/i18n/reldtfmt.cpp b/source/i18n/reldtfmt.cpp index 5e7dddd..c8ffd04 100644 --- a/source/i18n/reldtfmt.cpp +++ b/source/i18n/reldtfmt.cpp @@ -51,7 +51,7 @@ RelativeDateFormat::RelativeDateFormat(const RelativeDateFormat& other) : fCapitalizationBrkIter(NULL) { if(other.fDateTimeFormatter != NULL) { - fDateTimeFormatter = (SimpleDateFormat*)other.fDateTimeFormatter->clone(); + fDateTimeFormatter = other.fDateTimeFormatter->clone(); } if(other.fCombinedFormat != NULL) { fCombinedFormat = new SimpleFormatter(*other.fCombinedFormat); @@ -131,7 +131,7 @@ RelativeDateFormat::~RelativeDateFormat() { } -Format* RelativeDateFormat::clone(void) const { +RelativeDateFormat* RelativeDateFormat::clone() const { return new RelativeDateFormat(*this); } diff --git a/source/i18n/reldtfmt.h b/source/i18n/reldtfmt.h index aa5f923..ff48d3b 100644 --- a/source/i18n/reldtfmt.h +++ b/source/i18n/reldtfmt.h @@ -71,7 +71,7 @@ public: * @return A copy of the object. * @internal ICU 3.8 */ - virtual Format* clone(void) const; + virtual RelativeDateFormat* clone() const; /** * Return true if the given Format objects are semantically equal. Objects diff --git a/source/i18n/rematch.cpp b/source/i18n/rematch.cpp index 24a00c3..6d6ea0f 100644 --- a/source/i18n/rematch.cpp +++ b/source/i18n/rematch.cpp @@ -2069,7 +2069,7 @@ int32_t RegexMatcher::split(UText *input, // if (U_FAILURE(status)) { return 0; - }; + } if (destCapacity < 1) { status = U_ILLEGAL_ARGUMENT_ERROR; @@ -3805,11 +3805,13 @@ GC_Done: case URX_LA_START: { - // Entering a lookahead block. + // Entering a look around block. // Save Stack Ptr, Input Pos. - U_ASSERT(opValue>=0 && opValue+1fDataSize); + U_ASSERT(opValue>=0 && opValue+3fDataSize); fData[opValue] = fStack->size(); fData[opValue+1] = fp->fInputIdx; + fData[opValue+2] = fActiveStart; + fData[opValue+3] = fActiveLimit; fActiveStart = fLookStart; // Set the match region change for fActiveLimit = fLookLimit; // transparent bounds. } @@ -3819,7 +3821,7 @@ GC_Done: { // Leaving a look-ahead block. // restore Stack Ptr, Input Pos to positions they had on entry to block. - U_ASSERT(opValue>=0 && opValue+1fDataSize); + U_ASSERT(opValue>=0 && opValue+3fDataSize); int32_t stackSize = fStack->size(); int32_t newStackSize =(int32_t)fData[opValue]; U_ASSERT(stackSize >= newStackSize); @@ -3839,8 +3841,10 @@ GC_Done: // Restore the active region bounds in the input string; they may have // been changed because of transparent bounds on a Region. - fActiveStart = fRegionStart; - fActiveLimit = fRegionLimit; + fActiveStart = fData[opValue+2]; + fActiveLimit = fData[opValue+3]; + U_ASSERT(fActiveStart >= 0); + U_ASSERT(fActiveLimit <= fInputLength); } break; @@ -3916,17 +3920,19 @@ GC_Done: case URX_LB_START: { // Entering a look-behind block. - // Save Stack Ptr, Input Pos. + // Save Stack Ptr, Input Pos and active input region. // TODO: implement transparent bounds. Ticket #6067 - U_ASSERT(opValue>=0 && opValue+1fDataSize); + U_ASSERT(opValue>=0 && opValue+4fDataSize); fData[opValue] = fStack->size(); fData[opValue+1] = fp->fInputIdx; - // Init the variable containing the start index for attempted matches. - fData[opValue+2] = -1; // Save input string length, then reset to pin any matches to end at // the current position. + fData[opValue+2] = fActiveStart; fData[opValue+3] = fActiveLimit; + fActiveStart = fRegionStart; fActiveLimit = fp->fInputIdx; + // Init the variable containing the start index for attempted matches. + fData[opValue+4] = -1; } break; @@ -3949,8 +3955,8 @@ GC_Done: U_ASSERT(minML >= 0); // Fetch (from data) the last input index where a match was attempted. - U_ASSERT(opValue>=0 && opValue+1fDataSize); - int64_t &lbStartIdx = fData[opValue+2]; + U_ASSERT(opValue>=0 && opValue+4fDataSize); + int64_t &lbStartIdx = fData[opValue+4]; if (lbStartIdx < 0) { // First time through loop. lbStartIdx = fp->fInputIdx - minML; @@ -3976,10 +3982,10 @@ GC_Done: // getting a match. Backtrack out, and out of the // Look Behind altogether. fp = (REStackFrame *)fStack->popFrame(fFrameSize); - int64_t restoreInputLen = fData[opValue+3]; - U_ASSERT(restoreInputLen >= fActiveLimit); - U_ASSERT(restoreInputLen <= fInputLength); - fActiveLimit = restoreInputLen; + fActiveStart = fData[opValue+2]; + fActiveLimit = fData[opValue+3]; + U_ASSERT(fActiveStart >= 0); + U_ASSERT(fActiveLimit <= fInputLength); break; } @@ -3993,7 +3999,7 @@ GC_Done: case URX_LB_END: // End of a look-behind block, after a successful match. { - U_ASSERT(opValue>=0 && opValue+1fDataSize); + U_ASSERT(opValue>=0 && opValue+4fDataSize); if (fp->fInputIdx != fActiveLimit) { // The look-behind expression matched, but the match did not // extend all the way to the point that we are looking behind from. @@ -4004,13 +4010,13 @@ GC_Done: break; } - // Look-behind match is good. Restore the orignal input string length, + // Look-behind match is good. Restore the orignal input string region, // which had been truncated to pin the end of the lookbehind match to the // position being looked-behind. - int64_t originalInputLen = fData[opValue+3]; - U_ASSERT(originalInputLen >= fActiveLimit); - U_ASSERT(originalInputLen <= fInputLength); - fActiveLimit = originalInputLen; + fActiveStart = fData[opValue+2]; + fActiveLimit = fData[opValue+3]; + U_ASSERT(fActiveStart >= 0); + U_ASSERT(fActiveLimit <= fInputLength); } break; @@ -4035,8 +4041,8 @@ GC_Done: U_ASSERT(continueLoc > fp->fPatIdx); // Fetch (from data) the last input index where a match was attempted. - U_ASSERT(opValue>=0 && opValue+1fDataSize); - int64_t &lbStartIdx = fData[opValue+2]; + U_ASSERT(opValue>=0 && opValue+4fDataSize); + int64_t &lbStartIdx = fData[opValue+4]; if (lbStartIdx < 0) { // First time through loop. lbStartIdx = fp->fInputIdx - minML; @@ -4061,10 +4067,10 @@ GC_Done: // We have tried all potential match starting points without // getting a match, which means that the negative lookbehind as // a whole has succeeded. Jump forward to the continue location - int64_t restoreInputLen = fData[opValue+3]; - U_ASSERT(restoreInputLen >= fActiveLimit); - U_ASSERT(restoreInputLen <= fInputLength); - fActiveLimit = restoreInputLen; + fActiveStart = fData[opValue+2]; + fActiveLimit = fData[opValue+3]; + U_ASSERT(fActiveStart >= 0); + U_ASSERT(fActiveLimit <= fInputLength); fp->fPatIdx = continueLoc; break; } @@ -4079,7 +4085,7 @@ GC_Done: case URX_LBN_END: // End of a negative look-behind block, after a successful match. { - U_ASSERT(opValue>=0 && opValue+1fDataSize); + U_ASSERT(opValue>=0 && opValue+4fDataSize); if (fp->fInputIdx != fActiveLimit) { // The look-behind expression matched, but the match did not // extend all the way to the point that we are looking behind from. @@ -4096,10 +4102,10 @@ GC_Done: // Restore the orignal input string length, which had been truncated // inorder to pin the end of the lookbehind match // to the position being looked-behind. - int64_t originalInputLen = fData[opValue+3]; - U_ASSERT(originalInputLen >= fActiveLimit); - U_ASSERT(originalInputLen <= fInputLength); - fActiveLimit = originalInputLen; + fActiveStart = fData[opValue+2]; + fActiveLimit = fData[opValue+3]; + U_ASSERT(fActiveStart >= 0); + U_ASSERT(fActiveLimit <= fInputLength); // Restore original stack position, discarding any state saved // by the successful pattern match. @@ -5336,11 +5342,13 @@ GC_Done: case URX_LA_START: { - // Entering a lookahead block. + // Entering a look around block. // Save Stack Ptr, Input Pos. - U_ASSERT(opValue>=0 && opValue+1fDataSize); + U_ASSERT(opValue>=0 && opValue+3fDataSize); fData[opValue] = fStack->size(); fData[opValue+1] = fp->fInputIdx; + fData[opValue+2] = fActiveStart; + fData[opValue+3] = fActiveLimit; fActiveStart = fLookStart; // Set the match region change for fActiveLimit = fLookLimit; // transparent bounds. } @@ -5348,9 +5356,9 @@ GC_Done: case URX_LA_END: { - // Leaving a look-ahead block. + // Leaving a look around block. // restore Stack Ptr, Input Pos to positions they had on entry to block. - U_ASSERT(opValue>=0 && opValue+1fDataSize); + U_ASSERT(opValue>=0 && opValue+3fDataSize); int32_t stackSize = fStack->size(); int32_t newStackSize = (int32_t)fData[opValue]; U_ASSERT(stackSize >= newStackSize); @@ -5370,8 +5378,10 @@ GC_Done: // Restore the active region bounds in the input string; they may have // been changed because of transparent bounds on a Region. - fActiveStart = fRegionStart; - fActiveLimit = fRegionLimit; + fActiveStart = fData[opValue+2]; + fActiveLimit = fData[opValue+3]; + U_ASSERT(fActiveStart >= 0); + U_ASSERT(fActiveLimit <= fInputLength); } break; @@ -5434,17 +5444,19 @@ GC_Done: case URX_LB_START: { // Entering a look-behind block. - // Save Stack Ptr, Input Pos. + // Save Stack Ptr, Input Pos and active input region. // TODO: implement transparent bounds. Ticket #6067 - U_ASSERT(opValue>=0 && opValue+1fDataSize); + U_ASSERT(opValue>=0 && opValue+4fDataSize); fData[opValue] = fStack->size(); fData[opValue+1] = fp->fInputIdx; - // Init the variable containing the start index for attempted matches. - fData[opValue+2] = -1; // Save input string length, then reset to pin any matches to end at // the current position. + fData[opValue+2] = fActiveStart; fData[opValue+3] = fActiveLimit; + fActiveStart = fRegionStart; fActiveLimit = fp->fInputIdx; + // Init the variable containing the start index for attempted matches. + fData[opValue+4] = -1; } break; @@ -5462,8 +5474,8 @@ GC_Done: U_ASSERT(minML >= 0); // Fetch (from data) the last input index where a match was attempted. - U_ASSERT(opValue>=0 && opValue+1fDataSize); - int64_t &lbStartIdx = fData[opValue+2]; + U_ASSERT(opValue>=0 && opValue+4fDataSize); + int64_t &lbStartIdx = fData[opValue+4]; if (lbStartIdx < 0) { // First time through loop. lbStartIdx = fp->fInputIdx - minML; @@ -5485,10 +5497,10 @@ GC_Done: // getting a match. Backtrack out, and out of the // Look Behind altogether. fp = (REStackFrame *)fStack->popFrame(fFrameSize); - int64_t restoreInputLen = fData[opValue+3]; - U_ASSERT(restoreInputLen >= fActiveLimit); - U_ASSERT(restoreInputLen <= fInputLength); - fActiveLimit = restoreInputLen; + fActiveStart = fData[opValue+2]; + fActiveLimit = fData[opValue+3]; + U_ASSERT(fActiveStart >= 0); + U_ASSERT(fActiveLimit <= fInputLength); break; } @@ -5502,7 +5514,7 @@ GC_Done: case URX_LB_END: // End of a look-behind block, after a successful match. { - U_ASSERT(opValue>=0 && opValue+1fDataSize); + U_ASSERT(opValue>=0 && opValue+4fDataSize); if (fp->fInputIdx != fActiveLimit) { // The look-behind expression matched, but the match did not // extend all the way to the point that we are looking behind from. @@ -5513,13 +5525,13 @@ GC_Done: break; } - // Look-behind match is good. Restore the orignal input string length, + // Look-behind match is good. Restore the orignal input string region, // which had been truncated to pin the end of the lookbehind match to the // position being looked-behind. - int64_t originalInputLen = fData[opValue+3]; - U_ASSERT(originalInputLen >= fActiveLimit); - U_ASSERT(originalInputLen <= fInputLength); - fActiveLimit = originalInputLen; + fActiveStart = fData[opValue+2]; + fActiveLimit = fData[opValue+3]; + U_ASSERT(fActiveStart >= 0); + U_ASSERT(fActiveLimit <= fInputLength); } break; @@ -5539,8 +5551,8 @@ GC_Done: U_ASSERT(continueLoc > fp->fPatIdx); // Fetch (from data) the last input index where a match was attempted. - U_ASSERT(opValue>=0 && opValue+1fDataSize); - int64_t &lbStartIdx = fData[opValue+2]; + U_ASSERT(opValue>=0 && opValue+4fDataSize); + int64_t &lbStartIdx = fData[opValue+4]; if (lbStartIdx < 0) { // First time through loop. lbStartIdx = fp->fInputIdx - minML; @@ -5561,10 +5573,10 @@ GC_Done: // We have tried all potential match starting points without // getting a match, which means that the negative lookbehind as // a whole has succeeded. Jump forward to the continue location - int64_t restoreInputLen = fData[opValue+3]; - U_ASSERT(restoreInputLen >= fActiveLimit); - U_ASSERT(restoreInputLen <= fInputLength); - fActiveLimit = restoreInputLen; + fActiveStart = fData[opValue+2]; + fActiveLimit = fData[opValue+3]; + U_ASSERT(fActiveStart >= 0); + U_ASSERT(fActiveLimit <= fInputLength); fp->fPatIdx = continueLoc; break; } @@ -5579,7 +5591,7 @@ GC_Done: case URX_LBN_END: // End of a negative look-behind block, after a successful match. { - U_ASSERT(opValue>=0 && opValue+1fDataSize); + U_ASSERT(opValue>=0 && opValue+4fDataSize); if (fp->fInputIdx != fActiveLimit) { // The look-behind expression matched, but the match did not // extend all the way to the point that we are looking behind from. @@ -5596,10 +5608,10 @@ GC_Done: // Restore the orignal input string length, which had been truncated // inorder to pin the end of the lookbehind match // to the position being looked-behind. - int64_t originalInputLen = fData[opValue+3]; - U_ASSERT(originalInputLen >= fActiveLimit); - U_ASSERT(originalInputLen <= fInputLength); - fActiveLimit = originalInputLen; + fActiveStart = fData[opValue+2]; + fActiveLimit = fData[opValue+3]; + U_ASSERT(fActiveStart >= 0); + U_ASSERT(fActiveLimit <= fInputLength); // Restore original stack position, discarding any state saved // by the successful pattern match. diff --git a/source/i18n/remtrans.cpp b/source/i18n/remtrans.cpp index 70a6ed3..03b8785 100644 --- a/source/i18n/remtrans.cpp +++ b/source/i18n/remtrans.cpp @@ -48,10 +48,10 @@ RemoveTransliterator::RemoveTransliterator() : Transliterator(UnicodeString(TRUE RemoveTransliterator::~RemoveTransliterator() {} -Transliterator* RemoveTransliterator::clone(void) const { - Transliterator* result = new RemoveTransliterator(); +RemoveTransliterator* RemoveTransliterator::clone() const { + RemoveTransliterator* result = new RemoveTransliterator(); if (result != NULL && getFilter() != 0) { - result->adoptFilter((UnicodeFilter*)(getFilter()->clone())); + result->adoptFilter(getFilter()->clone()); } return result; } diff --git a/source/i18n/remtrans.h b/source/i18n/remtrans.h index ed038d5..13de015 100644 --- a/source/i18n/remtrans.h +++ b/source/i18n/remtrans.h @@ -47,7 +47,7 @@ public: * Transliterator API. * @return A copy of the object. */ - virtual Transliterator* clone(void) const; + virtual RemoveTransliterator* clone() const; /** * Implements {@link Transliterator#handleTransliterate}. diff --git a/source/i18n/repattrn.cpp b/source/i18n/repattrn.cpp index b8aee1a..1386d18 100644 --- a/source/i18n/repattrn.cpp +++ b/source/i18n/repattrn.cpp @@ -646,7 +646,7 @@ int32_t RegexPattern::split(const UnicodeString &input, { if (U_FAILURE(status)) { return 0; - }; + } RegexMatcher m(this); int32_t r = 0; @@ -667,7 +667,7 @@ int32_t RegexPattern::split(UText *input, { if (U_FAILURE(status)) { return 0; - }; + } RegexMatcher m(this); int32_t r = 0; diff --git a/source/i18n/rulebasedcollator.cpp b/source/i18n/rulebasedcollator.cpp index 92fa538..60acf17 100644 --- a/source/i18n/rulebasedcollator.cpp +++ b/source/i18n/rulebasedcollator.cpp @@ -220,7 +220,7 @@ RuleBasedCollator::adoptTailoring(CollationTailoring *t, UErrorCode &errorCode) actualLocaleIsSameAsValid = FALSE; } -Collator * +RuleBasedCollator * RuleBasedCollator::clone() const { return new RuleBasedCollator(*this); } diff --git a/source/i18n/scientificnumberformatter.cpp b/source/i18n/scientificnumberformatter.cpp index 03d98dd..6c2cb3a 100644 --- a/source/i18n/scientificnumberformatter.cpp +++ b/source/i18n/scientificnumberformatter.cpp @@ -121,7 +121,7 @@ ScientificNumberFormatter *ScientificNumberFormatter::createInstance( return result; } -ScientificNumberFormatter::Style *ScientificNumberFormatter::SuperscriptStyle::clone() const { +ScientificNumberFormatter::SuperscriptStyle *ScientificNumberFormatter::SuperscriptStyle::clone() const { return new ScientificNumberFormatter::SuperscriptStyle(*this); } @@ -195,7 +195,7 @@ UnicodeString &ScientificNumberFormatter::SuperscriptStyle::format( return appendTo; } -ScientificNumberFormatter::Style *ScientificNumberFormatter::MarkupStyle::clone() const { +ScientificNumberFormatter::MarkupStyle *ScientificNumberFormatter::MarkupStyle::clone() const { return new ScientificNumberFormatter::MarkupStyle(*this); } diff --git a/source/i18n/selfmt.cpp b/source/i18n/selfmt.cpp index 29aee36..47e53d7 100644 --- a/source/i18n/selfmt.cpp +++ b/source/i18n/selfmt.cpp @@ -151,7 +151,7 @@ int32_t SelectFormat::findSubMessage(const MessagePattern& pattern, int32_t part return msgStart; } -Format* SelectFormat::clone() const +SelectFormat* SelectFormat::clone() const { return new SelectFormat(*this); } diff --git a/source/i18n/simpletz.cpp b/source/i18n/simpletz.cpp index cacfa18..7972e2b 100644 --- a/source/i18n/simpletz.cpp +++ b/source/i18n/simpletz.cpp @@ -33,6 +33,7 @@ #include "unicode/gregocal.h" #include "unicode/smpdtfmt.h" +#include "cmemory.h" #include "gregoimp.h" #include "umutex.h" @@ -242,7 +243,7 @@ SimpleTimeZone::operator==(const TimeZone& that) const // ------------------------------------- // Called by TimeZone::createDefault() inside a Mutex - be careful. -TimeZone* +SimpleTimeZone* SimpleTimeZone::clone() const { return new SimpleTimeZone(*this); @@ -1083,7 +1084,7 @@ SimpleTimeZone::checkTransitionRules(UErrorCode& status) const { if (U_FAILURE(status)) { return; } - static UMutex gLock = U_MUTEX_INITIALIZER; + static UMutex gLock; umtx_lock(&gLock); if (!transitionRulesInitialized) { SimpleTimeZone *ncThis = const_cast(this); diff --git a/source/i18n/smpdtfmt.cpp b/source/i18n/smpdtfmt.cpp index e67c453..5fcbb58 100644 --- a/source/i18n/smpdtfmt.cpp +++ b/source/i18n/smpdtfmt.cpp @@ -230,10 +230,7 @@ static const int32_t gFieldRangeBias[] = { static const int32_t HEBREW_CAL_CUR_MILLENIUM_START_YEAR = 5000; static const int32_t HEBREW_CAL_CUR_MILLENIUM_END_YEAR = 6000; -static UMutex *LOCK() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static UMutex LOCK; UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SimpleDateFormat) @@ -623,7 +620,7 @@ SimpleDateFormat& SimpleDateFormat::operator=(const SimpleDateFormat& other) //---------------------------------------------------------------------- -Format* +SimpleDateFormat* SimpleDateFormat::clone() const { return new SimpleDateFormat(*this); @@ -1223,10 +1220,14 @@ _appendSymbolWithMonthPattern(UnicodeString& dst, int32_t value, const UnicodeSt //---------------------------------------------------------------------- static number::LocalizedNumberFormatter* -createFastFormatter(const DecimalFormat* df, int32_t minInt, int32_t maxInt) { - return new number::LocalizedNumberFormatter( - df->toNumberFormatter() - .integerWidth(number::IntegerWidth::zeroFillTo(minInt).truncateAt(maxInt))); +createFastFormatter(const DecimalFormat* df, int32_t minInt, int32_t maxInt, UErrorCode& status) { + const number::LocalizedNumberFormatter* lnfBase = df->toNumberFormatter(status); + if (U_FAILURE(status)) { + return nullptr; + } + return lnfBase->integerWidth( + number::IntegerWidth::zeroFillTo(minInt).truncateAt(maxInt) + ).clone().orphan(); } void SimpleDateFormat::initFastNumberFormatters(UErrorCode& status) { @@ -1237,11 +1238,11 @@ void SimpleDateFormat::initFastNumberFormatters(UErrorCode& status) { if (df == nullptr) { return; } - fFastNumberFormatters[SMPDTFMT_NF_1x10] = createFastFormatter(df, 1, 10); - fFastNumberFormatters[SMPDTFMT_NF_2x10] = createFastFormatter(df, 2, 10); - fFastNumberFormatters[SMPDTFMT_NF_3x10] = createFastFormatter(df, 3, 10); - fFastNumberFormatters[SMPDTFMT_NF_4x10] = createFastFormatter(df, 4, 10); - fFastNumberFormatters[SMPDTFMT_NF_2x2] = createFastFormatter(df, 2, 2); + fFastNumberFormatters[SMPDTFMT_NF_1x10] = createFastFormatter(df, 1, 10, status); + fFastNumberFormatters[SMPDTFMT_NF_2x10] = createFastFormatter(df, 2, 10, status); + fFastNumberFormatters[SMPDTFMT_NF_3x10] = createFastFormatter(df, 3, 10, status); + fFastNumberFormatters[SMPDTFMT_NF_4x10] = createFastFormatter(df, 4, 10, status); + fFastNumberFormatters[SMPDTFMT_NF_2x2] = createFastFormatter(df, 2, 2, status); } void SimpleDateFormat::freeFastNumberFormatters() { @@ -1266,14 +1267,14 @@ SimpleDateFormat::initNumberFormatters(const Locale &locale,UErrorCode &status) if ( fDateOverride.isBogus() && fTimeOverride.isBogus() ) { return; } - umtx_lock(LOCK()); + umtx_lock(&LOCK); if (fSharedNumberFormatters == NULL) { fSharedNumberFormatters = allocSharedNumberFormatters(); if (fSharedNumberFormatters == NULL) { status = U_MEMORY_ALLOCATION_ERROR; } } - umtx_unlock(LOCK()); + umtx_unlock(&LOCK); if (U_FAILURE(status)) { return; @@ -1980,9 +1981,11 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo, break; } if (titlecase) { + BreakIterator* const mutableCapitalizationBrkIter = fCapitalizationBrkIter->clone(); UnicodeString firstField(appendTo, beginOffset); - firstField.toTitle(fCapitalizationBrkIter, fLocale, U_TITLECASE_NO_LOWERCASE | U_TITLECASE_NO_BREAK_ADJUSTMENT); + firstField.toTitle(mutableCapitalizationBrkIter, fLocale, U_TITLECASE_NO_LOWERCASE | U_TITLECASE_NO_BREAK_ADJUSTMENT); appendTo.replaceBetween(beginOffset, appendTo.length(), firstField); + delete mutableCapitalizationBrkIter; } } #endif @@ -2107,7 +2110,7 @@ SimpleDateFormat::zeroPaddingNumber( // Fall back to slow path (clone and mutate the NumberFormat) if (currentNumberFormat != nullptr) { FieldPosition pos(FieldPosition::DONT_CARE); - LocalPointer nf(dynamic_cast(currentNumberFormat->clone())); + LocalPointer nf(currentNumberFormat->clone()); nf->setMinimumIntegerDigits(minDigits); nf->setMaximumIntegerDigits(maxDigits); nf->format(value, appendTo, pos); // 3rd arg is there to speed up processing @@ -3770,7 +3773,7 @@ void SimpleDateFormat::parseInt(const UnicodeString& text, auto* fmtAsDF = dynamic_cast(fmt); LocalPointer df; if (!allowNegative && fmtAsDF != nullptr) { - df.adoptInstead(dynamic_cast(fmtAsDF->clone())); + df.adoptInstead(fmtAsDF->clone()); if (df.isNull()) { // Memory allocation error return; @@ -3901,11 +3904,11 @@ SimpleDateFormat::applyPattern(const UnicodeString& pattern) } else if (fDateOverride.isBogus() && fHasHanYearChar) { // No current override (=> no Gannen numbering) but new pattern needs it; // use procedures from initNUmberFormatters / adoptNumberFormat - umtx_lock(LOCK()); + umtx_lock(&LOCK); if (fSharedNumberFormatters == NULL) { fSharedNumberFormatters = allocSharedNumberFormatters(); } - umtx_unlock(LOCK()); + umtx_unlock(&LOCK); if (fSharedNumberFormatters != NULL) { Locale ovrLoc(fLocale.getLanguage(),fLocale.getCountry(),fLocale.getVariant(),"numbers=jpanyear"); UErrorCode status = U_ZERO_ERROR; @@ -3998,6 +4001,7 @@ void SimpleDateFormat::adoptCalendar(Calendar* calendarToAdopt) DateFormatSymbols *newSymbols = DateFormatSymbols::createForLocale(calLocale, status); if (U_FAILURE(status)) { + delete calendarToAdopt; return; } DateFormat::adoptCalendar(calendarToAdopt); @@ -4237,7 +4241,7 @@ SimpleDateFormat::skipUWhiteSpace(const UnicodeString& text, int32_t pos) const TimeZoneFormat * SimpleDateFormat::tzFormat(UErrorCode &status) const { if (fTimeZoneFormat == NULL) { - umtx_lock(LOCK()); + umtx_lock(&LOCK); { if (fTimeZoneFormat == NULL) { TimeZoneFormat *tzfmt = TimeZoneFormat::createInstance(fLocale, status); @@ -4248,7 +4252,7 @@ SimpleDateFormat::tzFormat(UErrorCode &status) const { const_cast(this)->fTimeZoneFormat = tzfmt; } } - umtx_unlock(LOCK()); + umtx_unlock(&LOCK); } return fTimeZoneFormat; } diff --git a/source/i18n/numparse_stringsegment.cpp b/source/i18n/string_segment.cpp similarity index 96% rename from source/i18n/numparse_stringsegment.cpp rename to source/i18n/string_segment.cpp index 3db4fe6..5d19ac5 100644 --- a/source/i18n/numparse_stringsegment.cpp +++ b/source/i18n/string_segment.cpp @@ -10,14 +10,12 @@ #define UNISTR_FROM_STRING_EXPLICIT #include "numparse_types.h" -#include "numparse_stringsegment.h" +#include "string_segment.h" #include "putilimp.h" #include "unicode/utf16.h" #include "unicode/uniset.h" -using namespace icu; -using namespace icu::numparse; -using namespace icu::numparse::impl; +U_NAMESPACE_BEGIN StringSegment::StringSegment(const UnicodeString& str, bool ignoreCase) @@ -143,4 +141,5 @@ bool StringSegment::operator==(const UnicodeString& other) const { } +U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/i18n/string_segment.h b/source/i18n/string_segment.h new file mode 100644 index 0000000..b581f7e --- /dev/null +++ b/source/i18n/string_segment.h @@ -0,0 +1,134 @@ +// © 2018 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html + +#include "unicode/utypes.h" + +#if !UCONFIG_NO_FORMATTING +#ifndef __NUMPARSE_STRINGSEGMENT_H__ +#define __NUMPARSE_STRINGSEGMENT_H__ + +#include "unicode/unistr.h" +#include "unicode/uniset.h" + +U_NAMESPACE_BEGIN + + +/** + * A mutable UnicodeString wrapper with a variable offset and length and + * support for case folding. The charAt, length, and subSequence methods all + * operate relative to the fixed offset into the UnicodeString. + * + * Intended to be useful for parsing. + * + * CAUTION: Since this class is mutable, it must not be used anywhere that an + * immutable object is required, like in a cache or as the key of a hash map. + * + * @author sffc (Shane Carr) + */ +// Exported as U_I18N_API for tests +class U_I18N_API StringSegment : public UMemory { + public: + StringSegment(const UnicodeString& str, bool ignoreCase); + + int32_t getOffset() const; + + void setOffset(int32_t start); + + /** + * Equivalent to setOffset(getOffset()+delta). + * + *

    + * This method is usually called by a Matcher to register that a char was consumed. If the char is + * strong (it usually is, except for things like whitespace), follow this with a call to + * {@link ParsedNumber#setCharsConsumed}. For more information on strong chars, see that method. + */ + void adjustOffset(int32_t delta); + + /** + * Adjusts the offset by the width of the current code point, either 1 or 2 chars. + */ + void adjustOffsetByCodePoint(); + + void setLength(int32_t length); + + void resetLength(); + + int32_t length() const; + + char16_t charAt(int32_t index) const; + + UChar32 codePointAt(int32_t index) const; + + UnicodeString toUnicodeString() const; + + const UnicodeString toTempUnicodeString() const; + + /** + * Returns the first code point in the string segment, or -1 if the string starts with an invalid + * code point. + * + *

    + * Important: Most of the time, you should use {@link #startsWith}, which handles case + * folding logic, instead of this method. + */ + UChar32 getCodePoint() const; + + /** + * Returns true if the first code point of this StringSegment equals the given code point. + * + *

    + * This method will perform case folding if case folding is enabled for the parser. + */ + bool startsWith(UChar32 otherCp) const; + + /** + * Returns true if the first code point of this StringSegment is in the given UnicodeSet. + */ + bool startsWith(const UnicodeSet& uniset) const; + + /** + * Returns true if there is at least one code point of overlap between this StringSegment and the + * given UnicodeString. + */ + bool startsWith(const UnicodeString& other) const; + + /** + * Returns the length of the prefix shared by this StringSegment and the given UnicodeString. For + * example, if this string segment is "aab", and the char sequence is "aac", this method returns 2, + * since the first 2 characters are the same. + * + *

    + * This method only returns offsets along code point boundaries. + * + *

    + * This method will perform case folding if case folding was enabled in the constructor. + * + *

    + * IMPORTANT: The given UnicodeString must not be empty! It is the caller's responsibility to check. + */ + int32_t getCommonPrefixLength(const UnicodeString& other); + + /** + * Like {@link #getCommonPrefixLength}, but never performs case folding, even if case folding is + * enabled for the parser. + */ + int32_t getCaseSensitivePrefixLength(const UnicodeString& other); + + bool operator==(const UnicodeString& other) const; + + private: + const UnicodeString& fStr; + int32_t fStart; + int32_t fEnd; + bool fFoldCase; + + int32_t getPrefixLengthInternal(const UnicodeString& other, bool foldCase); + + static bool codePointsEqual(UChar32 cp1, UChar32 cp2, bool foldCase); +}; + + +U_NAMESPACE_END + +#endif //__NUMPARSE_STRINGSEGMENT_H__ +#endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/i18n/strmatch.cpp b/source/i18n/strmatch.cpp index aa9e7ae..a20f787 100644 --- a/source/i18n/strmatch.cpp +++ b/source/i18n/strmatch.cpp @@ -58,7 +58,7 @@ StringMatcher::~StringMatcher() { /** * Implement UnicodeFunctor */ -UnicodeFunctor* StringMatcher::clone() const { +StringMatcher* StringMatcher::clone() const { return new StringMatcher(*this); } diff --git a/source/i18n/strmatch.h b/source/i18n/strmatch.h index 8ebdb30..71ae984 100644 --- a/source/i18n/strmatch.h +++ b/source/i18n/strmatch.h @@ -78,7 +78,7 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico * Implement UnicodeFunctor * @return a copy of the object. */ - virtual UnicodeFunctor* clone() const; + virtual StringMatcher* clone() const; /** * UnicodeFunctor API. Cast 'this' to a UnicodeMatcher* pointer diff --git a/source/i18n/strrepl.cpp b/source/i18n/strrepl.cpp index 0eef3d4..9fafeb2 100644 --- a/source/i18n/strrepl.cpp +++ b/source/i18n/strrepl.cpp @@ -87,7 +87,7 @@ StringReplacer::~StringReplacer() { /** * Implement UnicodeFunctor */ -UnicodeFunctor* StringReplacer::clone() const { +StringReplacer* StringReplacer::clone() const { return new StringReplacer(*this); } diff --git a/source/i18n/strrepl.h b/source/i18n/strrepl.h index feec058..7f74d0d 100644 --- a/source/i18n/strrepl.h +++ b/source/i18n/strrepl.h @@ -111,7 +111,7 @@ class StringReplacer : public UnicodeFunctor, public UnicodeReplacer { /** * Implement UnicodeFunctor */ - virtual UnicodeFunctor* clone() const; + virtual StringReplacer* clone() const; /** * UnicodeFunctor API. Cast 'this' to a UnicodeReplacer* pointer diff --git a/source/i18n/stsearch.cpp b/source/i18n/stsearch.cpp index c556567..3e6ed46 100644 --- a/source/i18n/stsearch.cpp +++ b/source/i18n/stsearch.cpp @@ -282,7 +282,7 @@ void StringSearch::reset() usearch_reset(m_strsrch_); } -SearchIterator * StringSearch::safeClone(void) const +StringSearch * StringSearch::safeClone() const { UErrorCode status = U_ZERO_ERROR; StringSearch *result = new StringSearch(m_pattern_, m_text_, diff --git a/source/i18n/taiwncal.cpp b/source/i18n/taiwncal.cpp index dfd5f3c..27352aa 100644 --- a/source/i18n/taiwncal.cpp +++ b/source/i18n/taiwncal.cpp @@ -53,7 +53,7 @@ TaiwanCalendar& TaiwanCalendar::operator= ( const TaiwanCalendar& right) return *this; } -Calendar* TaiwanCalendar::clone(void) const +TaiwanCalendar* TaiwanCalendar::clone() const { return new TaiwanCalendar(*this); } diff --git a/source/i18n/taiwncal.h b/source/i18n/taiwncal.h index a1c25df..01d4d31 100644 --- a/source/i18n/taiwncal.h +++ b/source/i18n/taiwncal.h @@ -91,7 +91,7 @@ public: * @return return a polymorphic copy of this calendar. * @internal */ - virtual Calendar* clone(void) const; + virtual TaiwanCalendar* clone() const; public: /** diff --git a/source/i18n/timezone.cpp b/source/i18n/timezone.cpp index f129d8b..284334e 100644 --- a/source/i18n/timezone.cpp +++ b/source/i18n/timezone.cpp @@ -527,6 +527,8 @@ TimeZone::detectHostTimeZone() // ------------------------------------- +static UMutex gDefaultZoneMutex; + /** * Initialize DEFAULT_ZONE from the system default time zone. * Upon return, DEFAULT_ZONE will not be NULL, unless operator new() @@ -536,6 +538,7 @@ static void U_CALLCONV initDefault() { ucln_i18n_registerCleanup(UCLN_I18N_TIMEZONE, timeZone_cleanup); + Mutex lock(&gDefaultZoneMutex); // If setDefault() has already been called we can skip getting the // default zone information from the system. if (DEFAULT_ZONE != NULL) { @@ -557,9 +560,6 @@ static void U_CALLCONV initDefault() TimeZone *default_zone = TimeZone::detectHostTimeZone(); - // The only way for DEFAULT_ZONE to be non-null at this point is if the user - // made a thread-unsafe call to setDefault() or adoptDefault() in another - // thread while this thread was doing something that required getting the default. U_ASSERT(DEFAULT_ZONE == NULL); DEFAULT_ZONE = default_zone; @@ -571,7 +571,10 @@ TimeZone* U_EXPORT2 TimeZone::createDefault() { umtx_initOnce(gDefaultZoneInitOnce, initDefault); - return (DEFAULT_ZONE != NULL) ? DEFAULT_ZONE->clone() : NULL; + { + Mutex lock(&gDefaultZoneMutex); + return (DEFAULT_ZONE != NULL) ? DEFAULT_ZONE->clone() : NULL; + } } // ------------------------------------- @@ -581,9 +584,12 @@ TimeZone::adoptDefault(TimeZone* zone) { if (zone != NULL) { - TimeZone *old = DEFAULT_ZONE; - DEFAULT_ZONE = zone; - delete old; + { + Mutex lock(&gDefaultZoneMutex); + TimeZone *old = DEFAULT_ZONE; + DEFAULT_ZONE = zone; + delete old; + } ucln_i18n_registerCleanup(UCLN_I18N_TIMEZONE, timeZone_cleanup); } } diff --git a/source/i18n/titletrn.cpp b/source/i18n/titletrn.cpp index 9b37d7f..9c39b46 100644 --- a/source/i18n/titletrn.cpp +++ b/source/i18n/titletrn.cpp @@ -60,7 +60,7 @@ TitlecaseTransliterator::TitlecaseTransliterator(const TitlecaseTransliterator& /** * Transliterator API. */ -Transliterator* TitlecaseTransliterator::clone(void) const { +TitlecaseTransliterator* TitlecaseTransliterator::clone() const { return new TitlecaseTransliterator(*this); } diff --git a/source/i18n/titletrn.h b/source/i18n/titletrn.h index 166378f..4e45ac6 100644 --- a/source/i18n/titletrn.h +++ b/source/i18n/titletrn.h @@ -52,7 +52,7 @@ class TitlecaseTransliterator : public CaseMapTransliterator { * Transliterator API. * @return a copy of the object. */ - virtual Transliterator* clone(void) const; + virtual TitlecaseTransliterator* clone() const; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. diff --git a/source/i18n/tmunit.cpp b/source/i18n/tmunit.cpp index f169c30..910489b 100644 --- a/source/i18n/tmunit.cpp +++ b/source/i18n/tmunit.cpp @@ -102,7 +102,7 @@ TimeUnit::TimeUnit(const TimeUnit& other) : MeasureUnit(other), fTimeUnitField(other.fTimeUnitField) { } -UObject* +TimeUnit* TimeUnit::clone() const { return new TimeUnit(*this); } diff --git a/source/i18n/tmutamt.cpp b/source/i18n/tmutamt.cpp index a69fe57..2546469 100644 --- a/source/i18n/tmutamt.cpp +++ b/source/i18n/tmutamt.cpp @@ -50,7 +50,7 @@ TimeUnitAmount::operator==(const UObject& other) const { return Measure::operator==(other); } -UObject* +TimeUnitAmount* TimeUnitAmount::clone() const { return new TimeUnitAmount(*this); } diff --git a/source/i18n/tmutfmt.cpp b/source/i18n/tmutfmt.cpp index dad8825..231ea57 100644 --- a/source/i18n/tmutfmt.cpp +++ b/source/i18n/tmutfmt.cpp @@ -136,8 +136,8 @@ TimeUnitFormat::~TimeUnitFormat() { } -Format* -TimeUnitFormat::clone(void) const { +TimeUnitFormat* +TimeUnitFormat::clone() const { return new TimeUnitFormat(*this); } @@ -685,7 +685,7 @@ TimeUnitFormat::setNumberFormat(const NumberFormat& format, UErrorCode& status){ if (U_FAILURE(status)) { return; } - adoptNumberFormat((NumberFormat *)format.clone(), status); + adoptNumberFormat(format.clone(), status); } @@ -721,8 +721,8 @@ TimeUnitFormat::copyHash(const Hashtable* source, Hashtable* target, UErrorCode& const UHashTok valueTok = element->value; const MessageFormat** value = (const MessageFormat**)valueTok.pointer; MessageFormat** newVal = (MessageFormat**)uprv_malloc(UTMUTFMT_FORMAT_STYLE_COUNT*sizeof(MessageFormat*)); - newVal[0] = (MessageFormat*)value[0]->clone(); - newVal[1] = (MessageFormat*)value[1]->clone(); + newVal[0] = value[0]->clone(); + newVal[1] = value[1]->clone(); target->put(UnicodeString(*key), newVal, status); if ( U_FAILURE(status) ) { delete newVal[0]; diff --git a/source/i18n/tolowtrn.cpp b/source/i18n/tolowtrn.cpp index 6dae6f1..2893278 100644 --- a/source/i18n/tolowtrn.cpp +++ b/source/i18n/tolowtrn.cpp @@ -58,7 +58,7 @@ LowercaseTransliterator::LowercaseTransliterator(const LowercaseTransliterator& /** * Transliterator API. */ -Transliterator* LowercaseTransliterator::clone(void) const { +LowercaseTransliterator* LowercaseTransliterator::clone() const { return new LowercaseTransliterator(*this); } diff --git a/source/i18n/tolowtrn.h b/source/i18n/tolowtrn.h index e311431..2fbfb90 100644 --- a/source/i18n/tolowtrn.h +++ b/source/i18n/tolowtrn.h @@ -50,7 +50,7 @@ class LowercaseTransliterator : public CaseMapTransliterator { * Transliterator API. * @return a copy of the object. */ - virtual Transliterator* clone(void) const; + virtual LowercaseTransliterator* clone() const; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. diff --git a/source/i18n/toupptrn.cpp b/source/i18n/toupptrn.cpp index 098dba9..2a8b78b 100644 --- a/source/i18n/toupptrn.cpp +++ b/source/i18n/toupptrn.cpp @@ -58,7 +58,7 @@ UppercaseTransliterator::UppercaseTransliterator(const UppercaseTransliterator& /** * Transliterator API. */ -Transliterator* UppercaseTransliterator::clone(void) const { +UppercaseTransliterator* UppercaseTransliterator::clone() const { return new UppercaseTransliterator(*this); } diff --git a/source/i18n/toupptrn.h b/source/i18n/toupptrn.h index 677a04e..e96ca8f 100644 --- a/source/i18n/toupptrn.h +++ b/source/i18n/toupptrn.h @@ -50,7 +50,7 @@ class UppercaseTransliterator : public CaseMapTransliterator { * Transliterator API. * @return a copy of the object. */ - virtual Transliterator* clone(void) const; + virtual UppercaseTransliterator* clone() const; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. diff --git a/source/i18n/translit.cpp b/source/i18n/translit.cpp index 7d9c719..dae87d0 100644 --- a/source/i18n/translit.cpp +++ b/source/i18n/translit.cpp @@ -91,10 +91,7 @@ static const char RB_RULE_BASED_IDS[] = "RuleBasedTransliteratorIDs"; /** * The mutex controlling access to registry object. */ -static icu::UMutex *registryMutex() { - static icu::UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static icu::UMutex registryMutex; /** * System transliterator registry; non-null when initialized. @@ -161,7 +158,7 @@ Transliterator::Transliterator(const Transliterator& other) : if (other.filter != 0) { // We own the filter, so we must have our own copy - filter = (UnicodeFilter*) other.filter->clone(); + filter = other.filter->clone(); } } @@ -178,7 +175,7 @@ Transliterator& Transliterator::operator=(const Transliterator& other) { ID.getTerminatedBuffer(); maximumContextLength = other.maximumContextLength; - adoptFilter((other.filter == 0) ? 0 : (UnicodeFilter*) other.filter->clone()); + adoptFilter((other.filter == 0) ? 0 : other.filter->clone()); return *this; } @@ -926,13 +923,15 @@ Transliterator::createInstance(const UnicodeString& ID, return NULL; } - UnicodeSet* globalFilter; + UnicodeSet* globalFilter = nullptr; // TODO add code for parseError...currently unused, but // later may be used by parsing code... if (!TransliteratorIDParser::parseCompoundID(ID, dir, canonID, list, globalFilter)) { status = U_INVALID_ID; + delete globalFilter; return NULL; } + LocalPointer lpGlobalFilter(globalFilter); TransliteratorIDParser::instantiateList(list, status); if (U_FAILURE(status)) { @@ -956,8 +955,8 @@ Transliterator::createInstance(const UnicodeString& ID, // Check null pointer if (t != NULL) { t->setID(canonID); - if (globalFilter != NULL) { - t->adoptFilter(globalFilter); + if (lpGlobalFilter.isValid()) { + t->adoptFilter(lpGlobalFilter.orphan()); } } else if (U_SUCCESS(status)) { @@ -981,11 +980,11 @@ Transliterator* Transliterator::createBasicInstance(const UnicodeString& id, TransliteratorAlias* alias = 0; Transliterator* t = 0; - umtx_lock(registryMutex()); + umtx_lock(®istryMutex); if (HAVE_REGISTRY(ec)) { t = registry->get(id, alias, ec); } - umtx_unlock(registryMutex()); + umtx_unlock(®istryMutex); if (U_FAILURE(ec)) { delete t; @@ -1013,11 +1012,11 @@ Transliterator* Transliterator::createBasicInstance(const UnicodeString& id, alias = 0; // Step 2. reget - umtx_lock(registryMutex()); + umtx_lock(®istryMutex); if (HAVE_REGISTRY(ec)) { t = registry->reget(id, parser, alias, ec); } - umtx_unlock(registryMutex()); + umtx_unlock(®istryMutex); // Step 3. Loop back around! } else { @@ -1104,6 +1103,10 @@ Transliterator::createFromRules(const UnicodeString& ID, UnicodeString* idBlock = (UnicodeString*)parser.idBlockVector.elementAt(i); if (!idBlock->isEmpty()) { Transliterator* temp = createInstance(*idBlock, UTRANS_FORWARD, parseError, status); + if (U_FAILURE(status)) { + delete temp; + return nullptr; + } if (temp != NULL && typeid(*temp) != typeid(NullTransliterator)) transliterators.addElement(temp, status); else @@ -1117,8 +1120,10 @@ Transliterator::createFromRules(const UnicodeString& ID, data, TRUE); // Check if NULL before adding it to transliterators to avoid future usage of NULL pointer. if (temprbt == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; - return t; + if (U_SUCCESS(status)) { + status = U_MEMORY_ALLOCATION_ERROR; + } + return t; } transliterators.addElement(temprbt, status); } @@ -1215,7 +1220,7 @@ UnicodeSet& Transliterator::getTargetSet(UnicodeSet& result) const { void U_EXPORT2 Transliterator::registerFactory(const UnicodeString& id, Transliterator::Factory factory, Transliterator::Token context) { - Mutex lock(registryMutex()); + Mutex lock(®istryMutex); UErrorCode ec = U_ZERO_ERROR; if (HAVE_REGISTRY(ec)) { _registerFactory(id, factory, context); @@ -1254,7 +1259,7 @@ void Transliterator::_registerSpecialInverse(const UnicodeString& target, * @see #unregister */ void U_EXPORT2 Transliterator::registerInstance(Transliterator* adoptedPrototype) { - Mutex lock(registryMutex()); + Mutex lock(®istryMutex); UErrorCode ec = U_ZERO_ERROR; if (HAVE_REGISTRY(ec)) { _registerInstance(adoptedPrototype); @@ -1268,7 +1273,7 @@ void Transliterator::_registerInstance(Transliterator* adoptedPrototype) { void U_EXPORT2 Transliterator::registerAlias(const UnicodeString& aliasID, const UnicodeString& realID) { - Mutex lock(registryMutex()); + Mutex lock(®istryMutex); UErrorCode ec = U_ZERO_ERROR; if (HAVE_REGISTRY(ec)) { _registerAlias(aliasID, realID); @@ -1290,7 +1295,7 @@ void Transliterator::_registerAlias(const UnicodeString& aliasID, */ void U_EXPORT2 Transliterator::unregister(const UnicodeString& ID) { - Mutex lock(registryMutex()); + Mutex lock(®istryMutex); UErrorCode ec = U_ZERO_ERROR; if (HAVE_REGISTRY(ec)) { registry->remove(ID); @@ -1305,7 +1310,7 @@ void U_EXPORT2 Transliterator::unregister(const UnicodeString& ID) { */ int32_t U_EXPORT2 Transliterator::countAvailableIDs(void) { int32_t retVal = 0; - Mutex lock(registryMutex()); + Mutex lock(®istryMutex); UErrorCode ec = U_ZERO_ERROR; if (HAVE_REGISTRY(ec)) { retVal = registry->countAvailableIDs(); @@ -1321,12 +1326,12 @@ int32_t U_EXPORT2 Transliterator::countAvailableIDs(void) { */ const UnicodeString& U_EXPORT2 Transliterator::getAvailableID(int32_t index) { const UnicodeString* result = NULL; - umtx_lock(registryMutex()); + umtx_lock(®istryMutex); UErrorCode ec = U_ZERO_ERROR; if (HAVE_REGISTRY(ec)) { result = ®istry->getAvailableID(index); } - umtx_unlock(registryMutex()); + umtx_unlock(®istryMutex); U_ASSERT(result != NULL); // fail if no registry return *result; } @@ -1334,11 +1339,11 @@ const UnicodeString& U_EXPORT2 Transliterator::getAvailableID(int32_t index) { StringEnumeration* U_EXPORT2 Transliterator::getAvailableIDs(UErrorCode& ec) { if (U_FAILURE(ec)) return NULL; StringEnumeration* result = NULL; - umtx_lock(registryMutex()); + umtx_lock(®istryMutex); if (HAVE_REGISTRY(ec)) { result = registry->getAvailableIDs(); } - umtx_unlock(registryMutex()); + umtx_unlock(®istryMutex); if (result == NULL) { ec = U_INTERNAL_TRANSLITERATOR_ERROR; } @@ -1346,14 +1351,14 @@ StringEnumeration* U_EXPORT2 Transliterator::getAvailableIDs(UErrorCode& ec) { } int32_t U_EXPORT2 Transliterator::countAvailableSources(void) { - Mutex lock(registryMutex()); + Mutex lock(®istryMutex); UErrorCode ec = U_ZERO_ERROR; return HAVE_REGISTRY(ec) ? _countAvailableSources() : 0; } UnicodeString& U_EXPORT2 Transliterator::getAvailableSource(int32_t index, UnicodeString& result) { - Mutex lock(registryMutex()); + Mutex lock(®istryMutex); UErrorCode ec = U_ZERO_ERROR; if (HAVE_REGISTRY(ec)) { _getAvailableSource(index, result); @@ -1362,7 +1367,7 @@ UnicodeString& U_EXPORT2 Transliterator::getAvailableSource(int32_t index, } int32_t U_EXPORT2 Transliterator::countAvailableTargets(const UnicodeString& source) { - Mutex lock(registryMutex()); + Mutex lock(®istryMutex); UErrorCode ec = U_ZERO_ERROR; return HAVE_REGISTRY(ec) ? _countAvailableTargets(source) : 0; } @@ -1370,7 +1375,7 @@ int32_t U_EXPORT2 Transliterator::countAvailableTargets(const UnicodeString& sou UnicodeString& U_EXPORT2 Transliterator::getAvailableTarget(int32_t index, const UnicodeString& source, UnicodeString& result) { - Mutex lock(registryMutex()); + Mutex lock(®istryMutex); UErrorCode ec = U_ZERO_ERROR; if (HAVE_REGISTRY(ec)) { _getAvailableTarget(index, source, result); @@ -1380,7 +1385,7 @@ UnicodeString& U_EXPORT2 Transliterator::getAvailableTarget(int32_t index, int32_t U_EXPORT2 Transliterator::countAvailableVariants(const UnicodeString& source, const UnicodeString& target) { - Mutex lock(registryMutex()); + Mutex lock(®istryMutex); UErrorCode ec = U_ZERO_ERROR; return HAVE_REGISTRY(ec) ? _countAvailableVariants(source, target) : 0; } @@ -1389,7 +1394,7 @@ UnicodeString& U_EXPORT2 Transliterator::getAvailableVariant(int32_t index, const UnicodeString& source, const UnicodeString& target, UnicodeString& result) { - Mutex lock(registryMutex()); + Mutex lock(®istryMutex); UErrorCode ec = U_ZERO_ERROR; if (HAVE_REGISTRY(ec)) { _getAvailableVariant(index, source, target, result); diff --git a/source/i18n/transreg.cpp b/source/i18n/transreg.cpp index f80df1e..c412a20 100644 --- a/source/i18n/transreg.cpp +++ b/source/i18n/transreg.cpp @@ -131,7 +131,7 @@ Transliterator* TransliteratorAlias::create(UParseError& pe, return 0; } if (compoundFilter != 0) - t->adoptFilter((UnicodeSet*)compoundFilter->clone()); + t->adoptFilter(compoundFilter->clone()); break; case COMPOUND: { @@ -173,8 +173,8 @@ Transliterator* TransliteratorAlias::create(UParseError& pe, if (U_SUCCESS(ec)) { t = new CompoundTransliterator(ID, transliterators, - (compoundFilter ? (UnicodeSet*)(compoundFilter->clone()) : 0), - anonymousRBTs, pe, ec); + (compoundFilter ? compoundFilter->clone() : nullptr), + anonymousRBTs, pe, ec); if (t == 0) { ec = U_MEMORY_ALLOCATION_ERROR; return 0; @@ -946,7 +946,7 @@ void TransliteratorRegistry::registerEntry(const UnicodeString& ID, if (visible) { registerSTV(source, target, variant); if (!availableIDs.contains((void*) &ID)) { - UnicodeString *newID = (UnicodeString *)ID.clone(); + UnicodeString *newID = ID.clone(); // Check to make sure newID was created. if (newID != NULL) { // NUL-terminate the ID string diff --git a/source/i18n/tridpars.cpp b/source/i18n/tridpars.cpp index f54393b..65bfc88 100644 --- a/source/i18n/tridpars.cpp +++ b/source/i18n/tridpars.cpp @@ -50,10 +50,7 @@ static UInitOnce gSpecialInversesInitOnce = U_INITONCE_INITIALIZER; /** * The mutex controlling access to SPECIAL_INVERSES */ -static UMutex *LOCK() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static UMutex LOCK; TransliteratorIDParser::Specs::Specs(const UnicodeString& s, const UnicodeString& t, const UnicodeString& v, UBool sawS, @@ -297,6 +294,7 @@ UnicodeSet* TransliteratorIDParser::parseGlobalFilter(const UnicodeString& id, i pos = ppos.getIndex(); if (withParens == 1 && !ICU_Utility::parseChar(id, pos, CLOSE_REV)) { + delete filter; pos = start; return NULL; } @@ -662,7 +660,7 @@ void TransliteratorIDParser::registerSpecialInverse(const UnicodeString& target, bidirectional = FALSE; } - Mutex lock(LOCK()); + Mutex lock(&LOCK); UnicodeString *tempus = new UnicodeString(inverseTarget); // Used for null pointer check before usage. if (tempus == NULL) { @@ -866,9 +864,9 @@ TransliteratorIDParser::specsToSpecialInverse(const Specs& specs, UErrorCode &st UnicodeString* inverseTarget; - umtx_lock(LOCK()); + umtx_lock(&LOCK); inverseTarget = (UnicodeString*) SPECIAL_INVERSES->get(specs.target); - umtx_unlock(LOCK()); + umtx_unlock(&LOCK); if (inverseTarget != NULL) { // If the original ID contained "Any-" then make the diff --git a/source/i18n/tzfmt.cpp b/source/i18n/tzfmt.cpp index 5aa7af5..f87f0f6 100644 --- a/source/i18n/tzfmt.cpp +++ b/source/i18n/tzfmt.cpp @@ -19,12 +19,15 @@ #include "unicode/udat.h" #include "unicode/ustring.h" #include "unicode/utf16.h" +#include "bytesinkutil.h" +#include "charstr.h" #include "tzgnames.h" #include "cmemory.h" #include "cstring.h" #include "putilimp.h" #include "uassert.h" #include "ucln_in.h" +#include "ulocimp.h" #include "umutex.h" #include "uresimp.h" #include "ureslocs.h" @@ -147,10 +150,7 @@ static icu::UInitOnce gZoneIdTrieInitOnce = U_INITONCE_INITIALIZER; static TextTrieMap *gShortZoneIdTrie = NULL; static icu::UInitOnce gShortZoneIdTrieInitOnce = U_INITONCE_INITIALIZER; -static UMutex *gLock() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static UMutex gLock; U_CDECL_BEGIN /** @@ -327,10 +327,13 @@ TimeZoneFormat::TimeZoneFormat(const Locale& locale, UErrorCode& status) const char* region = fLocale.getCountry(); int32_t regionLen = static_cast(uprv_strlen(region)); if (regionLen == 0) { - char loc[ULOC_FULLNAME_CAPACITY]; - uloc_addLikelySubtags(fLocale.getName(), loc, sizeof(loc), &status); + CharString loc; + { + CharStringByteSink sink(&loc); + ulocimp_addLikelySubtags(fLocale.getName(), sink, &status); + } - regionLen = uloc_getCountry(loc, fTargetRegion, sizeof(fTargetRegion), &status); + regionLen = uloc_getCountry(loc.data(), fTargetRegion, sizeof(fTargetRegion), &status); if (U_SUCCESS(status)) { fTargetRegion[regionLen] = 0; } else { @@ -502,7 +505,7 @@ TimeZoneFormat::operator==(const Format& other) const { return isEqual; } -Format* +TimeZoneFormat* TimeZoneFormat::clone() const { return new TimeZoneFormat(*this); } @@ -1385,12 +1388,12 @@ TimeZoneFormat::getTimeZoneGenericNames(UErrorCode& status) const { return NULL; } - umtx_lock(gLock()); + umtx_lock(&gLock); if (fTimeZoneGenericNames == NULL) { TimeZoneFormat *nonConstThis = const_cast(this); nonConstThis->fTimeZoneGenericNames = TimeZoneGenericNames::createInstance(fLocale, status); } - umtx_unlock(gLock()); + umtx_unlock(&gLock); return fTimeZoneGenericNames; } @@ -1401,7 +1404,7 @@ TimeZoneFormat::getTZDBTimeZoneNames(UErrorCode& status) const { return NULL; } - umtx_lock(gLock()); + umtx_lock(&gLock); if (fTZDBTimeZoneNames == NULL) { TZDBTimeZoneNames *tzdbNames = new TZDBTimeZoneNames(fLocale); if (tzdbNames == NULL) { @@ -1411,7 +1414,7 @@ TimeZoneFormat::getTZDBTimeZoneNames(UErrorCode& status) const { nonConstThis->fTZDBTimeZoneNames = tzdbNames; } } - umtx_unlock(gLock()); + umtx_unlock(&gLock); return fTZDBTimeZoneNames; } @@ -1875,7 +1878,7 @@ TimeZoneFormat::parseOffsetFieldsWithPattern(const UnicodeString& text, int32_t while (len > 0) { UChar32 ch; int32_t chLen; - U16_GET(patStr, 0, 0, len, ch) + U16_GET(patStr, 0, 0, len, ch); if (PatternProps::isWhiteSpace(ch)) { chLen = U16_LENGTH(ch); len -= chLen; diff --git a/source/i18n/tzgnames.cpp b/source/i18n/tzgnames.cpp index 4e3ecb4..e056461 100644 --- a/source/i18n/tzgnames.cpp +++ b/source/i18n/tzgnames.cpp @@ -21,12 +21,15 @@ #include "unicode/strenum.h" #include "unicode/vtzone.h" +#include "bytesinkutil.h" +#include "charstr.h" #include "cmemory.h" #include "cstring.h" #include "mutex.h" #include "uhash.h" #include "uassert.h" #include "umutex.h" +#include "ulocimp.h" #include "uresimp.h" #include "ureslocs.h" #include "zonemeta.h" @@ -269,10 +272,7 @@ GNameSearchHandler::getMatches(int32_t& maxMatchLen) { return results; } -static UMutex *gLock() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static UMutex gLock; class TZGNCore : public UMemory { public: @@ -412,10 +412,13 @@ TZGNCore::initialize(const Locale& locale, UErrorCode& status) { const char* region = fLocale.getCountry(); int32_t regionLen = static_cast(uprv_strlen(region)); if (regionLen == 0) { - char loc[ULOC_FULLNAME_CAPACITY]; - uloc_addLikelySubtags(fLocale.getName(), loc, sizeof(loc), &status); + CharString loc; + { + CharStringByteSink sink(&loc); + ulocimp_addLikelySubtags(fLocale.getName(), sink, &status); + } - regionLen = uloc_getCountry(loc, fTargetRegion, sizeof(fTargetRegion), &status); + regionLen = uloc_getCountry(loc.data(), fTargetRegion, sizeof(fTargetRegion), &status); if (U_SUCCESS(status)) { fTargetRegion[regionLen] = 0; } else { @@ -488,11 +491,11 @@ TZGNCore::getGenericLocationName(const UnicodeString& tzCanonicalID, UnicodeStri const UChar *locname = NULL; TZGNCore *nonConstThis = const_cast(this); - umtx_lock(gLock()); + umtx_lock(&gLock); { locname = nonConstThis->getGenericLocationName(tzCanonicalID); } - umtx_unlock(gLock()); + umtx_unlock(&gLock); if (locname == NULL) { name.setToBogus(); @@ -743,11 +746,11 @@ TZGNCore::getPartialLocationName(const UnicodeString& tzCanonicalID, const UChar *uplname = NULL; TZGNCore *nonConstThis = const_cast(this); - umtx_lock(gLock()); + umtx_lock(&gLock); { uplname = nonConstThis->getPartialLocationName(tzCanonicalID, mzID, isLong, mzDisplayName); } - umtx_unlock(gLock()); + umtx_unlock(&gLock); if (uplname == NULL) { name.setToBogus(); @@ -1010,11 +1013,11 @@ TZGNCore::findLocal(const UnicodeString& text, int32_t start, uint32_t types, UE TZGNCore *nonConstThis = const_cast(this); - umtx_lock(gLock()); + umtx_lock(&gLock); { fGNamesTrie.search(text, start, (TextTrieMapSearchResultHandler *)&handler, status); } - umtx_unlock(gLock()); + umtx_unlock(&gLock); if (U_FAILURE(status)) { return NULL; @@ -1041,7 +1044,7 @@ TZGNCore::findLocal(const UnicodeString& text, int32_t start, uint32_t types, UE // All names are not yet loaded into the local trie. // Load all available names into the trie. This could be very heavy. - umtx_lock(gLock()); + umtx_lock(&gLock); { if (!fGNamesTrieFullyLoaded) { StringEnumeration *tzIDs = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL, NULL, NULL, status); @@ -1063,18 +1066,18 @@ TZGNCore::findLocal(const UnicodeString& text, int32_t start, uint32_t types, UE } } } - umtx_unlock(gLock()); + umtx_unlock(&gLock); if (U_FAILURE(status)) { return NULL; } - umtx_lock(gLock()); + umtx_lock(&gLock); { // now try it again fGNamesTrie.search(text, start, (TextTrieMapSearchResultHandler *)&handler, status); } - umtx_unlock(gLock()); + umtx_unlock(&gLock); results = handler.getMatches(maxLen); if (results != NULL && maxLen > 0) { @@ -1115,10 +1118,7 @@ typedef struct TZGNCoreRef { } TZGNCoreRef; // TZGNCore object cache handling -static UMutex *gTZGNLock() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static UMutex gTZGNLock; static UHashtable *gTZGNCoreCache = NULL; static UBool gTZGNCoreCacheInitialized = FALSE; @@ -1184,13 +1184,13 @@ TimeZoneGenericNames::TimeZoneGenericNames() } TimeZoneGenericNames::~TimeZoneGenericNames() { - umtx_lock(gTZGNLock()); + umtx_lock(&gTZGNLock); { U_ASSERT(fRef->refCount > 0); // Just decrement the reference count fRef->refCount--; } - umtx_unlock(gTZGNLock()); + umtx_unlock(&gTZGNLock); } TimeZoneGenericNames* @@ -1206,7 +1206,7 @@ TimeZoneGenericNames::createInstance(const Locale& locale, UErrorCode& status) { TZGNCoreRef *cacheEntry = NULL; { - Mutex lock(gTZGNLock()); + Mutex lock(&gTZGNLock); if (!gTZGNCoreCacheInitialized) { // Create empty hashtable @@ -1298,13 +1298,13 @@ TimeZoneGenericNames* TimeZoneGenericNames::clone() const { TimeZoneGenericNames* other = new TimeZoneGenericNames(); if (other) { - umtx_lock(gTZGNLock()); + umtx_lock(&gTZGNLock); { // Just increments the reference count fRef->refCount++; other->fRef = fRef; } - umtx_unlock(gTZGNLock()); + umtx_unlock(&gTZGNLock); } return other; } diff --git a/source/i18n/tznames.cpp b/source/i18n/tznames.cpp index acd6aec..d789c12 100644 --- a/source/i18n/tznames.cpp +++ b/source/i18n/tznames.cpp @@ -29,10 +29,7 @@ U_NAMESPACE_BEGIN // TimeZoneNames object cache handling -static UMutex *gTimeZoneNamesLock() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static UMutex gTimeZoneNamesLock; static UHashtable *gTimeZoneNamesCache = NULL; static UBool gTimeZoneNamesCacheInitialized = FALSE; @@ -109,7 +106,7 @@ public: virtual UBool operator==(const TimeZoneNames& other) const; virtual UBool operator!=(const TimeZoneNames& other) const {return !operator==(other);} - virtual TimeZoneNames* clone() const; + virtual TimeZoneNamesDelegate* clone() const; StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const; StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const; @@ -135,7 +132,7 @@ TimeZoneNamesDelegate::TimeZoneNamesDelegate() } TimeZoneNamesDelegate::TimeZoneNamesDelegate(const Locale& locale, UErrorCode& status) { - Mutex lock(gTimeZoneNamesLock()); + Mutex lock(&gTimeZoneNamesLock); if (!gTimeZoneNamesCacheInitialized) { // Create empty hashtable if it is not already initialized. gTimeZoneNamesCache = uhash_open(uhash_hashChars, uhash_compareChars, NULL, &status); @@ -211,7 +208,7 @@ TimeZoneNamesDelegate::TimeZoneNamesDelegate(const Locale& locale, UErrorCode& s } TimeZoneNamesDelegate::~TimeZoneNamesDelegate() { - umtx_lock(gTimeZoneNamesLock()); + umtx_lock(&gTimeZoneNamesLock); { if (fTZnamesCacheEntry) { U_ASSERT(fTZnamesCacheEntry->refCount > 0); @@ -219,7 +216,7 @@ TimeZoneNamesDelegate::~TimeZoneNamesDelegate() { fTZnamesCacheEntry->refCount--; } } - umtx_unlock(gTimeZoneNamesLock()); + umtx_unlock(&gTimeZoneNamesLock); } UBool @@ -236,17 +233,17 @@ TimeZoneNamesDelegate::operator==(const TimeZoneNames& other) const { return FALSE; } -TimeZoneNames* +TimeZoneNamesDelegate* TimeZoneNamesDelegate::clone() const { TimeZoneNamesDelegate* other = new TimeZoneNamesDelegate(); if (other != NULL) { - umtx_lock(gTimeZoneNamesLock()); + umtx_lock(&gTimeZoneNamesLock); { // Just increment the reference count fTZnamesCacheEntry->refCount++; other->fTZnamesCacheEntry = fTZnamesCacheEntry; } - umtx_unlock(gTimeZoneNamesLock()); + umtx_unlock(&gTimeZoneNamesLock); } return other; } diff --git a/source/i18n/tznames_impl.cpp b/source/i18n/tznames_impl.cpp index 5e3b478..186aaaf 100644 --- a/source/i18n/tznames_impl.cpp +++ b/source/i18n/tznames_impl.cpp @@ -21,11 +21,14 @@ #include "unicode/utf16.h" #include "tznames_impl.h" +#include "bytesinkutil.h" +#include "charstr.h" #include "cmemory.h" #include "cstring.h" #include "uassert.h" #include "mutex.h" #include "resource.h" +#include "ulocimp.h" #include "uresimp.h" #include "ureslocs.h" #include "zonemeta.h" @@ -49,10 +52,7 @@ static const UChar NO_NAME[] = { 0 }; // for empty no-fallback time static const char* TZDBNAMES_KEYS[] = {"ss", "sd"}; static const int32_t TZDBNAMES_KEYS_SIZE = UPRV_LENGTHOF(TZDBNAMES_KEYS); -static UMutex *gDataMutex() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static UMutex gDataMutex; static UHashtable* gTZDBNamesMap = NULL; static icu::UInitOnce gTZDBNamesMapInitOnce = U_INITONCE_INITIALIZER; @@ -388,7 +388,7 @@ TextTrieMap::search(const UnicodeString &text, int32_t start, // Don't do unless it's really required. // Mutex for protecting the lazy creation of the Trie node structure on the first call to search(). - static UMutex TextTrieMutex = U_MUTEX_INITIALIZER; + static UMutex TextTrieMutex; Mutex lock(&TextTrieMutex); if (fLazyContents != NULL) { @@ -1113,7 +1113,7 @@ TimeZoneNamesImpl::operator==(const TimeZoneNames& other) const { return FALSE; } -TimeZoneNames* +TimeZoneNamesImpl* TimeZoneNamesImpl::clone() const { UErrorCode status = U_ZERO_ERROR; return new TimeZoneNamesImpl(fLocale, status); @@ -1214,7 +1214,7 @@ TimeZoneNamesImpl::getMetaZoneDisplayName(const UnicodeString& mzID, TimeZoneNamesImpl *nonConstThis = const_cast(this); { - Mutex lock(gDataMutex()); + Mutex lock(&gDataMutex); UErrorCode status = U_ZERO_ERROR; znames = nonConstThis->loadMetaZoneNames(mzID, status); if (U_FAILURE(status)) { return name; } @@ -1240,7 +1240,7 @@ TimeZoneNamesImpl::getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNa TimeZoneNamesImpl *nonConstThis = const_cast(this); { - Mutex lock(gDataMutex()); + Mutex lock(&gDataMutex); UErrorCode status = U_ZERO_ERROR; tznames = nonConstThis->loadTimeZoneNames(tzID, status); if (U_FAILURE(status)) { return name; } @@ -1263,7 +1263,7 @@ TimeZoneNamesImpl::getExemplarLocationName(const UnicodeString& tzID, UnicodeStr TimeZoneNamesImpl *nonConstThis = const_cast(this); { - Mutex lock(gDataMutex()); + Mutex lock(&gDataMutex); UErrorCode status = U_ZERO_ERROR; tznames = nonConstThis->loadTimeZoneNames(tzID, status); if (U_FAILURE(status)) { return name; } @@ -1358,7 +1358,7 @@ TimeZoneNamesImpl::find(const UnicodeString& text, int32_t start, uint32_t types // Synchronize so that data is not loaded multiple times. // TODO: Consider more fine-grained synchronization. { - Mutex lock(gDataMutex()); + Mutex lock(&gDataMutex); // First try of lookup. matches = doFind(handler, text, start, status); @@ -1585,7 +1585,7 @@ void TimeZoneNamesImpl::loadAllDisplayNames(UErrorCode& status) { if (U_FAILURE(status)) return; { - Mutex lock(gDataMutex()); + Mutex lock(&gDataMutex); internalLoadAllDisplayNames(status); } } @@ -1602,7 +1602,7 @@ void TimeZoneNamesImpl::getDisplayNames(const UnicodeString& tzID, // Load the time zone strings { - Mutex lock(gDataMutex()); + Mutex lock(&gDataMutex); tznames = (void*) nonConstThis->loadTimeZoneNames(tzID, status); if (U_FAILURE(status)) { return; } } @@ -1622,7 +1622,7 @@ void TimeZoneNamesImpl::getDisplayNames(const UnicodeString& tzID, } else { // Load the meta zone strings // Mutex is scoped to the "else" statement - Mutex lock(gDataMutex()); + Mutex lock(&gDataMutex); mznames = (void*) nonConstThis->loadMetaZoneNames(mzID, status); if (U_FAILURE(status)) { return; } // Note: when the metazone doesn't exist, in Java, loadMetaZoneNames returns @@ -2135,9 +2135,12 @@ TZDBTimeZoneNames::TZDBTimeZoneNames(const Locale& locale) int32_t regionLen = static_cast(uprv_strlen(region)); if (regionLen == 0) { UErrorCode status = U_ZERO_ERROR; - char loc[ULOC_FULLNAME_CAPACITY]; - uloc_addLikelySubtags(fLocale.getName(), loc, sizeof(loc), &status); - regionLen = uloc_getCountry(loc, fRegion, sizeof(fRegion), &status); + CharString loc; + { + CharStringByteSink sink(&loc); + ulocimp_addLikelySubtags(fLocale.getName(), sink, &status); + } + regionLen = uloc_getCountry(loc.data(), fRegion, sizeof(fRegion), &status); if (U_SUCCESS(status) && regionLen < (int32_t)sizeof(fRegion)) { useWorld = FALSE; } @@ -2162,7 +2165,7 @@ TZDBTimeZoneNames::operator==(const TimeZoneNames& other) const { return FALSE; } -TimeZoneNames* +TZDBTimeZoneNames* TZDBTimeZoneNames::clone() const { return new TZDBTimeZoneNames(fLocale); } @@ -2247,7 +2250,7 @@ TZDBTimeZoneNames::getMetaZoneNames(const UnicodeString& mzID, UErrorCode& statu U_ASSERT(status == U_ZERO_ERROR); // already checked length above mzIDKey[mzID.length()] = 0; - static UMutex gTZDBNamesMapLock = U_MUTEX_INITIALIZER; + static UMutex gTZDBNamesMapLock; umtx_lock(&gTZDBNamesMapLock); { void *cacheVal = uhash_get(gTZDBNamesMap, mzIDKey); diff --git a/source/i18n/tznames_impl.h b/source/i18n/tznames_impl.h index 4db036e..1286eeb 100644 --- a/source/i18n/tznames_impl.h +++ b/source/i18n/tznames_impl.h @@ -174,7 +174,7 @@ public: virtual ~TimeZoneNamesImpl(); virtual UBool operator==(const TimeZoneNames& other) const; - virtual TimeZoneNames* clone() const; + virtual TimeZoneNamesImpl* clone() const; StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const; StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const; @@ -236,7 +236,7 @@ public: virtual ~TZDBTimeZoneNames(); virtual UBool operator==(const TimeZoneNames& other) const; - virtual TimeZoneNames* clone() const; + virtual TZDBTimeZoneNames* clone() const; StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const; StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const; diff --git a/source/i18n/tzrule.cpp b/source/i18n/tzrule.cpp index f4ede7c..759a2d4 100644 --- a/source/i18n/tzrule.cpp +++ b/source/i18n/tzrule.cpp @@ -108,7 +108,7 @@ InitialTimeZoneRule::~InitialTimeZoneRule() { } InitialTimeZoneRule* -InitialTimeZoneRule::clone(void) const { +InitialTimeZoneRule::clone() const { return new InitialTimeZoneRule(*this); } diff --git a/source/i18n/ucal.cpp b/source/i18n/ucal.cpp index 282d84c..927b2d3 100644 --- a/source/i18n/ucal.cpp +++ b/source/i18n/ucal.cpp @@ -34,7 +34,7 @@ U_NAMESPACE_USE static TimeZone* _createTimeZone(const UChar* zoneID, int32_t len, UErrorCode* ec) { TimeZone* zone = NULL; - if (ec!=NULL && U_SUCCESS(*ec)) { + if (ec != NULL && U_SUCCESS(*ec)) { // Note that if zoneID is invalid, we get back GMT. This odd // behavior is by design and goes back to the JDK. The only // failure we will see is a memory allocation failure. @@ -69,7 +69,7 @@ ucal_openCountryTimeZones(const char* country, UErrorCode* ec) { U_CAPI int32_t U_EXPORT2 ucal_getDefaultTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) { int32_t len = 0; - if (ec!=NULL && U_SUCCESS(*ec)) { + if (ec != NULL && U_SUCCESS(*ec)) { TimeZone* zone = TimeZone::createDefault(); if (zone == NULL) { *ec = U_MEMORY_ALLOCATION_ERROR; @@ -91,6 +91,23 @@ ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec) { } } +U_DRAFT int32_t U_EXPORT2 +ucal_getHostTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) { + int32_t len = 0; + if (ec != NULL && U_SUCCESS(*ec)) { + TimeZone *zone = TimeZone::detectHostTimeZone(); + if (zone == NULL) { + *ec = U_MEMORY_ALLOCATION_ERROR; + } else { + UnicodeString id; + zone->getID(id); + delete zone; + len = id.extract(result, resultCapacity, *ec); + } + } + return len; +} + U_CAPI int32_t U_EXPORT2 ucal_getDSTSavings(const UChar* zoneID, UErrorCode* ec) { int32_t result = 0; @@ -140,8 +157,8 @@ ucal_open( const UChar* zoneID, if(U_FAILURE(*status)) return 0; - TimeZone* zone = (zoneID==NULL) ? TimeZone::createDefault() - : _createTimeZone(zoneID, len, status); + LocalPointer zone( (zoneID==NULL) ? TimeZone::createDefault() + : _createTimeZone(zoneID, len, status), *status); if (U_FAILURE(*status)) { return NULL; @@ -157,9 +174,9 @@ ucal_open( const UChar* zoneID, if (U_FAILURE(*status)) { return NULL; } - return (UCalendar*)Calendar::createInstance(zone, Locale(localeBuf), *status); + return (UCalendar*)Calendar::createInstance(zone.orphan(), Locale(localeBuf), *status); } - return (UCalendar*)Calendar::createInstance(zone, Locale(locale), *status); + return (UCalendar*)Calendar::createInstance(zone.orphan(), Locale(locale), *status); } U_CAPI void U_EXPORT2 diff --git a/source/i18n/udat.cpp b/source/i18n/udat.cpp index b47e321..ab91bcf 100644 --- a/source/i18n/udat.cpp +++ b/source/i18n/udat.cpp @@ -167,9 +167,13 @@ udat_open(UDateFormatStyle timeStyle, } } - if(fmt == 0) { + if(fmt == nullptr) { *status = U_MEMORY_ALLOCATION_ERROR; - return 0; + return nullptr; + } + if (U_FAILURE(*status)) { + delete fmt; + return nullptr; } if(tzID != 0) { diff --git a/source/i18n/unesctrn.cpp b/source/i18n/unesctrn.cpp index 86c55d1..0636fe1 100644 --- a/source/i18n/unesctrn.cpp +++ b/source/i18n/unesctrn.cpp @@ -164,7 +164,7 @@ UnescapeTransliterator::~UnescapeTransliterator() { /** * Transliterator API. */ -Transliterator* UnescapeTransliterator::clone() const { +UnescapeTransliterator* UnescapeTransliterator::clone() const { return new UnescapeTransliterator(*this); } diff --git a/source/i18n/unesctrn.h b/source/i18n/unesctrn.h index e8e171f..57dd8d3 100644 --- a/source/i18n/unesctrn.h +++ b/source/i18n/unesctrn.h @@ -77,7 +77,7 @@ class UnescapeTransliterator : public Transliterator { /** * Transliterator API. */ - virtual Transliterator* clone() const; + virtual UnescapeTransliterator* clone() const; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. diff --git a/source/i18n/uni2name.cpp b/source/i18n/uni2name.cpp index a56f1a6..41d5c93 100644 --- a/source/i18n/uni2name.cpp +++ b/source/i18n/uni2name.cpp @@ -60,7 +60,7 @@ UnicodeNameTransliterator::UnicodeNameTransliterator(const UnicodeNameTransliter /** * Transliterator API. */ -Transliterator* UnicodeNameTransliterator::clone(void) const { +UnicodeNameTransliterator* UnicodeNameTransliterator::clone() const { return new UnicodeNameTransliterator(*this); } diff --git a/source/i18n/uni2name.h b/source/i18n/uni2name.h index 4d6eaa0..99309c8 100644 --- a/source/i18n/uni2name.h +++ b/source/i18n/uni2name.h @@ -48,7 +48,7 @@ class UnicodeNameTransliterator : public Transliterator { /** * Transliterator API. */ - virtual Transliterator* clone(void) const; + virtual UnicodeNameTransliterator* clone() const; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. diff --git a/source/i18n/unicode/alphaindex.h b/source/i18n/unicode/alphaindex.h index 91524a1..e3c68ea 100644 --- a/source/i18n/unicode/alphaindex.h +++ b/source/i18n/unicode/alphaindex.h @@ -13,6 +13,9 @@ #define INDEXCHARS_H #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" #include "unicode/locid.h" #include "unicode/unistr.h" @@ -757,4 +760,7 @@ private: U_NAMESPACE_END #endif // !UCONFIG_NO_COLLATION + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/i18n/unicode/basictz.h b/source/i18n/unicode/basictz.h index 3541207..c4d0876 100644 --- a/source/i18n/unicode/basictz.h +++ b/source/i18n/unicode/basictz.h @@ -16,6 +16,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING #include "unicode/timezone.h" @@ -42,6 +44,14 @@ public: virtual ~BasicTimeZone(); /** + * Clones this object polymorphically. + * The caller owns the result and should delete it when done. + * @return clone, or nullptr if an error occurred + * @stable ICU 3.8 + */ + virtual BasicTimeZone* clone() const = 0; + + /** * Gets the first time zone transition after the base time. * @param base The base time. * @param inclusive Whether the base time is inclusive or not. @@ -211,6 +221,8 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // BASICTZ_H //eof diff --git a/source/i18n/unicode/calendar.h b/source/i18n/unicode/calendar.h index 023cf05..2a8c293 100644 --- a/source/i18n/unicode/calendar.h +++ b/source/i18n/unicode/calendar.h @@ -29,6 +29,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Calendar object @@ -184,7 +186,7 @@ class BasicTimeZone; */ class U_I18N_API Calendar : public UObject { public: - +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Field IDs for date and time. Used to specify date/time fields. ERA is calendar * specific. Example ranges given are for illustration only; see specific Calendar @@ -227,6 +229,7 @@ public: FIELD_COUNT = UCAL_FIELD_COUNT // See ucal.h for other fields. #endif /* U_HIDE_DEPRECATED_API */ }; +#endif // U_FORCE_HIDE_DEPRECATED_API #ifndef U_HIDE_DEPRECATED_API /** @@ -287,7 +290,7 @@ public: * @return a polymorphic copy of this calendar. * @stable ICU 2.0 */ - virtual Calendar* clone(void) const = 0; + virtual Calendar* clone() const = 0; /** * Creates a Calendar using the default timezone and locale. Clients are responsible @@ -518,6 +521,7 @@ public: */ UBool after(const Calendar& when, UErrorCode& status) const; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * UDate Arithmetic function. Adds the specified (signed) amount of time to the given * time field, based on the calendar's rules. For example, to subtract 5 days from @@ -539,6 +543,7 @@ public: * @deprecated ICU 2.6. use add(UCalendarDateFields field, int32_t amount, UErrorCode& status) instead. */ virtual void add(EDateFields field, int32_t amount, UErrorCode& status); +#endif // U_FORCE_HIDE_DEPRECATED_API /** * UDate Arithmetic function. Adds the specified (signed) amount of time to the given @@ -632,6 +637,7 @@ public: */ inline void roll(UCalendarDateFields field, UBool up, UErrorCode& status); +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Time Field Rolling function. Rolls by the given amount on the given * time field. For example, to roll the current date up by one day, call @@ -664,6 +670,7 @@ public: * @deprecated ICU 2.6. Use roll(UCalendarDateFields field, int32_t amount, UErrorCode& status) instead. */ virtual void roll(EDateFields field, int32_t amount, UErrorCode& status); +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Time Field Rolling function. Rolls by the given amount on the given @@ -698,6 +705,7 @@ public: */ virtual void roll(UCalendarDateFields field, int32_t amount, UErrorCode& status); +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Return the difference between the given time and the time this * calendar object is set to. If this calendar is set @@ -754,6 +762,7 @@ public: * @deprecated ICU 2.6. Use fieldDifference(UDate when, UCalendarDateFields field, UErrorCode& status). */ virtual int32_t fieldDifference(UDate when, EDateFields field, UErrorCode& status); +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Return the difference between the given time and the time this @@ -1010,6 +1019,7 @@ public: */ uint8_t getMinimalDaysInFirstWeek(void) const; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Gets the minimum value for the given time field. e.g., for Gregorian * DAY_OF_MONTH, 1. @@ -1019,6 +1029,7 @@ public: * @deprecated ICU 2.6. Use getMinimum(UCalendarDateFields field) instead. */ virtual int32_t getMinimum(EDateFields field) const; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Gets the minimum value for the given time field. e.g., for Gregorian @@ -1030,6 +1041,7 @@ public: */ virtual int32_t getMinimum(UCalendarDateFields field) const; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Gets the maximum value for the given time field. e.g. for Gregorian DAY_OF_MONTH, * 31. @@ -1039,6 +1051,7 @@ public: * @deprecated ICU 2.6. Use getMaximum(UCalendarDateFields field) instead. */ virtual int32_t getMaximum(EDateFields field) const; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Gets the maximum value for the given time field. e.g. for Gregorian DAY_OF_MONTH, @@ -1050,6 +1063,7 @@ public: */ virtual int32_t getMaximum(UCalendarDateFields field) const; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Gets the highest minimum value for the given field if varies. Otherwise same as * getMinimum(). For Gregorian, no difference. @@ -1059,6 +1073,7 @@ public: * @deprecated ICU 2.6. Use getGreatestMinimum(UCalendarDateFields field) instead. */ virtual int32_t getGreatestMinimum(EDateFields field) const; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Gets the highest minimum value for the given field if varies. Otherwise same as @@ -1070,6 +1085,7 @@ public: */ virtual int32_t getGreatestMinimum(UCalendarDateFields field) const; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Gets the lowest maximum value for the given field if varies. Otherwise same as * getMaximum(). e.g., for Gregorian DAY_OF_MONTH, 28. @@ -1079,6 +1095,7 @@ public: * @deprecated ICU 2.6. Use getLeastMaximum(UCalendarDateFields field) instead. */ virtual int32_t getLeastMaximum(EDateFields field) const; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Gets the lowest maximum value for the given field if varies. Otherwise same as @@ -1895,11 +1912,13 @@ protected: */ int32_t fFields[UCAL_FIELD_COUNT]; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * The flags which tell if a specified time field for the calendar is set. * @deprecated ICU 2.8 use (fStamp[n]!=kUnset) */ UBool fIsSet[UCAL_FIELD_COUNT]; +#endif // U_FORCE_HIDE_DEPRECATED_API /** Special values of stamp[] * @stable ICU 2.0 @@ -2281,7 +2300,6 @@ private: * should only be called if this calendar is not lenient. * @see #isLenient * @see #validateField(int, int&) - * @internal */ void validateFields(UErrorCode &status); @@ -2291,7 +2309,6 @@ private: * U_ILLEGAL_ARGUMENT_ERROR will be set. Subclasses may * use this method in their implementation of {@link * #validateField(int, int&)}. - * @internal */ void validateField(UCalendarDateFields field, int32_t min, int32_t max, UErrorCode& status); @@ -2529,4 +2546,6 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _CALENDAR diff --git a/source/i18n/unicode/choicfmt.h b/source/i18n/unicode/choicfmt.h index c9f0f11..3b2f48c 100644 --- a/source/i18n/unicode/choicfmt.h +++ b/source/i18n/unicode/choicfmt.h @@ -26,13 +26,14 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Choice Format. */ #if !UCONFIG_NO_FORMATTING -#ifndef U_HIDE_DEPRECATED_API #include "unicode/fieldpos.h" #include "unicode/format.h" @@ -40,6 +41,8 @@ #include "unicode/numfmt.h" #include "unicode/unistr.h" +#ifndef U_HIDE_DEPRECATED_API + U_NAMESPACE_BEGIN class MessageFormat; @@ -248,7 +251,7 @@ public: * @return a copy of this object * @deprecated ICU 49 Use MessageFormat instead, with plural and select arguments. */ - virtual Format* clone(void) const; + virtual ChoiceFormat* clone() const; /** * Returns true if the given Format objects are semantically equal. @@ -592,5 +595,7 @@ U_NAMESPACE_END #endif // U_HIDE_DEPRECATED_API #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // CHOICFMT_H //eof diff --git a/source/i18n/unicode/coleitr.h b/source/i18n/unicode/coleitr.h index f2bd2ec..e3ec0e0 100644 --- a/source/i18n/unicode/coleitr.h +++ b/source/i18n/unicode/coleitr.h @@ -35,6 +35,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_COLLATION #include "unicode/unistr.h" @@ -404,4 +406,6 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_COLLATION */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/i18n/unicode/coll.h b/source/i18n/unicode/coll.h index 653434f..f5564c7 100644 --- a/source/i18n/unicode/coll.h +++ b/source/i18n/unicode/coll.h @@ -54,6 +54,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_COLLATION #include "unicode/uobject.h" @@ -204,6 +206,7 @@ public: // Cannot use #ifndef U_HIDE_DEPRECATED_API for the following, it is // used by virtual methods that cannot have that conditional. +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * LESS is returned if source string is compared to be less than target * string in the compare() method. @@ -220,6 +223,7 @@ public: EQUAL = UCOL_EQUAL, // 0 GREATER = UCOL_GREATER // 1 }; +#endif // U_FORCE_HIDE_DEPRECATED_API // Collator public destructor ----------------------------------------- @@ -265,7 +269,7 @@ public: * @return a copy of this object, owned by the caller * @stable ICU 2.0 */ - virtual Collator* clone(void) const = 0; + virtual Collator* clone() const = 0; /** * Creates the Collator object for the current default locale. @@ -323,6 +327,7 @@ public: */ static Collator* U_EXPORT2 createInstance(const Locale& loc, UErrorCode& err); +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * The comparison function compares the character data stored in two * different strings. Returns information about whether a string is less @@ -336,6 +341,7 @@ public: */ virtual EComparisonResult compare(const UnicodeString& source, const UnicodeString& target) const; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * The comparison function compares the character data stored in two @@ -353,6 +359,7 @@ public: const UnicodeString& target, UErrorCode &status) const = 0; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Does the same thing as compare but limits the comparison to a specified * length @@ -368,6 +375,7 @@ public: virtual EComparisonResult compare(const UnicodeString& source, const UnicodeString& target, int32_t length) const; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Does the same thing as compare but limits the comparison to a specified @@ -387,6 +395,7 @@ public: int32_t length, UErrorCode &status) const = 0; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * The comparison function compares the character data stored in two * different string arrays. Returns information about whether a string array @@ -423,6 +432,7 @@ public: virtual EComparisonResult compare(const char16_t* source, int32_t sourceLength, const char16_t* target, int32_t targetLength) const; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * The comparison function compares the character data stored in two @@ -527,6 +537,7 @@ public: */ virtual int32_t hashCode(void) const = 0; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Gets the locale of the Collator * @@ -540,6 +551,7 @@ public: * in ICU 3.0. */ virtual Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const = 0; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Convenience method for comparing two strings based on the collation rules. @@ -576,6 +588,7 @@ public: */ UBool equals(const UnicodeString& source, const UnicodeString& target) const; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Determines the minimum strength that will be used in comparison or * transformation. @@ -607,6 +620,7 @@ public: * @deprecated ICU 2.6 Use setAttribute(UCOL_STRENGTH...) instead */ virtual void setStrength(ECollationStrength newStrength); +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Retrieves the reordering codes for this collator. @@ -904,6 +918,7 @@ public: */ virtual UColReorderCode getMaxVariable() const; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Sets the variable top to the primary weight of the specified string. * @@ -951,6 +966,7 @@ public: * @deprecated ICU 53 Call setMaxVariable() instead. */ virtual void setVariableTop(uint32_t varTop, UErrorCode &status) = 0; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Gets the variable top value of a Collator. @@ -972,6 +988,7 @@ public: */ virtual UnicodeSet *getTailoredSet(UErrorCode &status) const; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Same as clone(). * The base class implementation simply calls clone(). @@ -979,7 +996,8 @@ public: * @see clone() * @deprecated ICU 50 no need to have two methods for cloning */ - virtual Collator* safeClone(void) const; + virtual Collator* safeClone() const; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Get the sort key as an array of bytes from a UnicodeString. @@ -1271,4 +1289,6 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_COLLATION */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/i18n/unicode/compactdecimalformat.h b/source/i18n/unicode/compactdecimalformat.h index 9c1e918..9c1e200 100644 --- a/source/i18n/unicode/compactdecimalformat.h +++ b/source/i18n/unicode/compactdecimalformat.h @@ -14,6 +14,9 @@ #define __COMPACT_DECIMAL_FORMAT_H__ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Compatibility APIs for compact decimal number formatting. @@ -102,7 +105,7 @@ public: * @return a polymorphic copy of this CompactDecimalFormat. * @stable ICU 51 */ - Format* clone() const U_OVERRIDE; + CompactDecimalFormat* clone() const U_OVERRIDE; using DecimalFormat::format; @@ -187,5 +190,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __COMPACT_DECIMAL_FORMAT_H__ //eof diff --git a/source/i18n/unicode/curramt.h b/source/i18n/unicode/curramt.h index e321df8..5cfe1cf 100644 --- a/source/i18n/unicode/curramt.h +++ b/source/i18n/unicode/curramt.h @@ -15,6 +15,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING #include "unicode/measure.h" @@ -79,7 +81,7 @@ class U_I18N_API CurrencyAmount: public Measure { * have the same class as returned by getDynamicClassID(). * @stable ICU 3.0 */ - virtual UObject* clone() const; + virtual CurrencyAmount* clone() const; /** * Destructor @@ -129,4 +131,7 @@ inline const char16_t* CurrencyAmount::getISOCurrency() const { U_NAMESPACE_END #endif // !UCONFIG_NO_FORMATTING + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __CURRENCYAMOUNT_H__ diff --git a/source/i18n/unicode/currpinf.h b/source/i18n/unicode/currpinf.h index 7741c60..fb0b2a7 100644 --- a/source/i18n/unicode/currpinf.h +++ b/source/i18n/unicode/currpinf.h @@ -11,6 +11,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Currency Plural Information used by Decimal Format @@ -266,5 +268,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _CURRPINFO //eof diff --git a/source/i18n/unicode/currunit.h b/source/i18n/unicode/currunit.h index 408d8d3..d536e2f 100644 --- a/source/i18n/unicode/currunit.h +++ b/source/i18n/unicode/currunit.h @@ -15,6 +15,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING #include "unicode/measunit.h" @@ -94,7 +96,7 @@ class U_I18N_API CurrencyUnit: public MeasureUnit { * have the same class as returned by getDynamicClassID(). * @stable ICU 3.0 */ - virtual UObject* clone() const; + virtual CurrencyUnit* clone() const; /** * Destructor @@ -140,4 +142,7 @@ inline const char16_t* CurrencyUnit::getISOCurrency() const { U_NAMESPACE_END #endif // !UCONFIG_NO_FORMATTING + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __CURRENCYUNIT_H__ diff --git a/source/i18n/unicode/datefmt.h b/source/i18n/unicode/datefmt.h index 81eb8f9..f106e82 100644 --- a/source/i18n/unicode/datefmt.h +++ b/source/i18n/unicode/datefmt.h @@ -23,6 +23,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING #include "unicode/udat.h" @@ -222,6 +224,14 @@ public: virtual ~DateFormat(); /** + * Clones this object polymorphically. + * The caller owns the result and should delete it when done. + * @return clone, or nullptr if an error occurred + * @stable ICU 2.0 + */ + virtual DateFormat* clone() const = 0; + + /** * Equality operator. Returns true if the two formats have the same behavior. * @stable ICU 2.0 */ @@ -953,5 +963,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _DATEFMT //eof diff --git a/source/i18n/unicode/dcfmtsym.h b/source/i18n/unicode/dcfmtsym.h index 55e3d8a..e1e0ab6 100644 --- a/source/i18n/unicode/dcfmtsym.h +++ b/source/i18n/unicode/dcfmtsym.h @@ -28,10 +28,12 @@ #define DCFMTSYM_H #include "unicode/utypes.h" -#include "unicode/uchar.h" + +#if U_SHOW_CPLUSPLUS_API #if !UCONFIG_NO_FORMATTING +#include "unicode/uchar.h" #include "unicode/uobject.h" #include "unicode/locid.h" #include "unicode/numsys.h" @@ -455,13 +457,11 @@ private: * to non-resource bundle strings, * then regular UnicodeString copies must be used instead of fastCopyFrom(). * - * @internal */ UnicodeString fSymbols[kFormatSymbolCount]; /** * Non-symbol variable for getConstSymbol(). Always empty. - * @internal */ UnicodeString fNoSymbol; @@ -582,5 +582,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _DCFMTSYM //eof diff --git a/source/i18n/unicode/decimfmt.h b/source/i18n/unicode/decimfmt.h index 6b6a939..c33ec80 100644 --- a/source/i18n/unicode/decimfmt.h +++ b/source/i18n/unicode/decimfmt.h @@ -28,6 +28,9 @@ #define DECIMFMT_H #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Compatibility APIs for decimal formatting. @@ -896,7 +899,7 @@ class U_I18N_API DecimalFormat : public NumberFormat { * @return a polymorphic copy of this DecimalFormat. * @stable ICU 2.0 */ - Format* clone(void) const U_OVERRIDE; + DecimalFormat* clone() const U_OVERRIDE; /** * Return true if the given Format objects are semantically equal. @@ -1331,7 +1334,6 @@ class U_I18N_API DecimalFormat : public NumberFormat { */ virtual void setMultiplier(int32_t newValue); -#ifndef U_HIDE_DRAFT_API /** * Gets the power of ten by which number should be multiplied before formatting, which * can be combined with setMultiplier() to multiply by any arbitrary decimal value. @@ -1342,7 +1344,7 @@ class U_I18N_API DecimalFormat : public NumberFormat { * This method is analogous to UNUM_SCALE in getAttribute. * * @return the current value of the power-of-ten multiplier. - * @draft ICU 62 + * @stable ICU 62 */ int32_t getMultiplierScale(void) const; @@ -1363,10 +1365,9 @@ class U_I18N_API DecimalFormat : public NumberFormat { * This method is analogous to UNUM_SCALE in setAttribute. * * @param newValue the new value of the power-of-ten multiplier. - * @draft ICU 62 + * @stable ICU 62 */ void setMultiplierScale(int32_t newValue); -#endif /* U_HIDE_DRAFT_API */ /** * Get the rounding increment. @@ -2020,12 +2021,14 @@ class U_I18N_API DecimalFormat : public NumberFormat { */ void setCurrency(const char16_t* theCurrency, UErrorCode& ec) U_OVERRIDE; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Sets the currency used to display currency amounts. See * setCurrency(const char16_t*, UErrorCode&). * @deprecated ICU 3.0. Use setCurrency(const char16_t*, UErrorCode&). */ virtual void setCurrency(const char16_t* theCurrency); +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Sets the `Currency Usage` object used to display currency. @@ -2113,22 +2116,6 @@ class U_I18N_API DecimalFormat : public NumberFormat { const number::LocalizedNumberFormatter* toNumberFormatter(UErrorCode& status) const; #endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DEPRECATED_API - /** - * Deprecated: Like {@link #toNumberFormatter(UErrorCode&) const}, - * but does not take an error code. - * - * The new signature should be used in case an error occurs while returning the - * LocalizedNumberFormatter. - * - * This old signature will be removed in ICU 65. - * - * @return A reference to an internal object. - * @deprecated ICU 64 - */ - const number::LocalizedNumberFormatter& toNumberFormatter() const; -#endif /* U_HIDE_DEPRECATED_API */ - /** * Return the class ID for this class. This is useful only for * comparing to a return value from getDynamicClassID(). For example: @@ -2216,5 +2203,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _DECIMFMT //eof diff --git a/source/i18n/unicode/dtfmtsym.h b/source/i18n/unicode/dtfmtsym.h index fe914b4..c6d76fe 100644 --- a/source/i18n/unicode/dtfmtsym.h +++ b/source/i18n/unicode/dtfmtsym.h @@ -22,6 +22,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING #include "unicode/calendar.h" @@ -1011,5 +1013,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _DTFMTSYM //eof diff --git a/source/i18n/unicode/dtitvfmt.h b/source/i18n/unicode/dtitvfmt.h index 42d77d0..23fc02e 100644 --- a/source/i18n/unicode/dtitvfmt.h +++ b/source/i18n/unicode/dtitvfmt.h @@ -16,6 +16,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Format and parse date interval in a language-independent manner. @@ -432,7 +434,7 @@ public: * @return A copy of the object. * @stable ICU 4.0 */ - virtual Format* clone(void) const; + virtual DateIntervalFormat* clone() const; /** * Return true if the given Format objects are semantically equal. Objects @@ -1151,5 +1153,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _DTITVFMT_H__ //eof diff --git a/source/i18n/unicode/dtitvinf.h b/source/i18n/unicode/dtitvinf.h index a5b7f8f..a894d12 100644 --- a/source/i18n/unicode/dtitvinf.h +++ b/source/i18n/unicode/dtitvinf.h @@ -16,6 +16,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Date/Time interval patterns for formatting date/time interval @@ -195,7 +197,7 @@ public: * @return a copy of the object * @stable ICU 4.0 */ - virtual DateIntervalInfo* clone(void) const; + virtual DateIntervalInfo* clone() const; /** * Destructor. @@ -515,5 +517,7 @@ U_NAMESPACE_END #endif +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/i18n/unicode/dtptngen.h b/source/i18n/unicode/dtptngen.h index e50c01b..a71938b 100644 --- a/source/i18n/unicode/dtptngen.h +++ b/source/i18n/unicode/dtptngen.h @@ -14,6 +14,10 @@ #ifndef __DTPTNGEN_H__ #define __DTPTNGEN_H__ +#include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/datefmt.h" #include "unicode/locid.h" #include "unicode/udat.h" @@ -279,7 +283,7 @@ public: * * @param field The desired UDateTimePatternField, such as UDATPG_ERA_FIELD. * @param width The desired UDateTimePGDisplayWidth, such as UDATPG_ABBREVIATED. - * @return. The display name for field + * @return The display name for field * @stable ICU 61 */ UnicodeString getFieldDisplayName(UDateTimePatternField field, UDateTimePGDisplayWidth width) const; @@ -561,12 +565,10 @@ private: void setDateTimeFromCalendar(const Locale& locale, UErrorCode& status); void setDecimalSymbols(const Locale& locale, UErrorCode& status); UDateTimePatternField getAppendFormatNumber(const char* field) const; -#ifndef U_HIDE_DRAFT_API - // The following three have to be U_HIDE_DRAFT_API (though private) because UDateTimePGDisplayWidth is + // Note for the next 3: UDateTimePGDisplayWidth is now stable ICU 61 UDateTimePatternField getFieldAndWidthIndices(const char* key, UDateTimePGDisplayWidth* widthP) const; void setFieldDisplayName(UDateTimePatternField field, UDateTimePGDisplayWidth width, const UnicodeString& value); UnicodeString& getMutableFieldDisplayName(UDateTimePatternField field, UDateTimePGDisplayWidth width); -#endif // U_HIDE_DRAFT_API void getAppendName(UDateTimePatternField field, UnicodeString& value); UnicodeString mapSkeletonMetacharacters(const UnicodeString& patternForm, int32_t* flags, UErrorCode& status); const UnicodeString* getBestRaw(DateTimeMatcher& source, int32_t includeMask, DistanceInfo* missingFields, UErrorCode& status, const PtnSkeleton** specifiedSkeletonPtr = 0); @@ -587,4 +589,6 @@ private: U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/i18n/unicode/dtrule.h b/source/i18n/unicode/dtrule.h index 0767249..adab896 100644 --- a/source/i18n/unicode/dtrule.h +++ b/source/i18n/unicode/dtrule.h @@ -11,6 +11,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Rule for specifying date and time in an year @@ -126,7 +128,7 @@ public: * @return A copy of the object. * @stable ICU 3.8 */ - DateTimeRule* clone(void) const; + DateTimeRule* clone() const; /** * Assignment operator. @@ -248,5 +250,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // DTRULE_H //eof diff --git a/source/i18n/unicode/fieldpos.h b/source/i18n/unicode/fieldpos.h index 0bcc8da..23ee386 100644 --- a/source/i18n/unicode/fieldpos.h +++ b/source/i18n/unicode/fieldpos.h @@ -26,6 +26,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: FieldPosition identifies the fields in a formatted output. @@ -290,5 +292,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _FIELDPOS //eof diff --git a/source/i18n/unicode/fmtable.h b/source/i18n/unicode/fmtable.h index a06c23d..7bec4f6 100644 --- a/source/i18n/unicode/fmtable.h +++ b/source/i18n/unicode/fmtable.h @@ -19,6 +19,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Formattable is a thin wrapper for primitive types used for formatting and parsing @@ -751,5 +753,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif //_FMTABLE //eof diff --git a/source/i18n/unicode/format.h b/source/i18n/unicode/format.h index b05318d..96883a8 100644 --- a/source/i18n/unicode/format.h +++ b/source/i18n/unicode/format.h @@ -26,6 +26,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Base class for all formats. @@ -303,5 +305,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _FORMAT //eof diff --git a/source/i18n/unicode/formattedvalue.h b/source/i18n/unicode/formattedvalue.h index 60f97ed..5c47264 100644 --- a/source/i18n/unicode/formattedvalue.h +++ b/source/i18n/unicode/formattedvalue.h @@ -5,8 +5,10 @@ #define __FORMATTEDVALUE_H__ #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING -#ifndef U_HIDE_DRAFT_API #include "unicode/appendable.h" #include "unicode/fpositer.h" @@ -24,6 +26,10 @@ U_NAMESPACE_BEGIN */ +// The following cannot have #ifndef U_HIDE_DRAFT_API because +// class FormattedValue depends on it, and FormattedValue cannot be +// hidden becauseclass FormattedNumber (stable ICU 60) depends on it. +#ifndef U_FORCE_HIDE_DRAFT_API /** * Represents a span of a string containing a given field. * @@ -52,6 +58,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory { /** @draft ICU 64 */ ~ConstrainedFieldPosition(); +#ifndef U_HIDE_DRAFT_API /** * Resets this ConstrainedFieldPosition to its initial state, as if it were newly created: * @@ -221,17 +228,23 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory { int32_t field, int32_t start, int32_t limit); +#endif /* U_HIDE_DRAFT_API */ private: int64_t fContext = 0LL; int32_t fField = 0; int32_t fStart = 0; int32_t fLimit = 0; +#ifndef U_HIDE_DRAFT_API int32_t fCategory = UFIELD_CATEGORY_UNDEFINED; +#else /* U_HIDE_DRAFT_API */ + int32_t fCategory = 0; +#endif /* U_HIDE_DRAFT_API */ int8_t fConstraint = 0; }; - +// The following cannot have #ifndef U_HIDE_DRAFT_API because +// class FormattedNumber (stable ICU 60) depends on it. /** * An abstract formatted value: a string with associated field attributes. * Many formatters format to classes implementing FormattedValue. @@ -308,10 +321,12 @@ class U_I18N_API FormattedValue /* not : public UObject because this is an inter */ virtual UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const = 0; }; - +#endif // U_FORCE_HIDE_DRAFT_API U_NAMESPACE_END -#endif /* U_HIDE_DRAFT_API */ #endif /* #if !UCONFIG_NO_FORMATTING */ + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __FORMATTEDVALUE_H__ diff --git a/source/i18n/unicode/fpositer.h b/source/i18n/unicode/fpositer.h index d9c8eff..3e8a010 100644 --- a/source/i18n/unicode/fpositer.h +++ b/source/i18n/unicode/fpositer.h @@ -19,6 +19,9 @@ #define FPOSITER_H #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" /** @@ -116,4 +119,6 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // FPOSITER_H diff --git a/source/i18n/unicode/gender.h b/source/i18n/unicode/gender.h index d2773eb..cf7fee9 100644 --- a/source/i18n/unicode/gender.h +++ b/source/i18n/unicode/gender.h @@ -25,6 +25,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING #include "unicode/locid.h" @@ -114,5 +116,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _GENDER //eof diff --git a/source/i18n/unicode/gregocal.h b/source/i18n/unicode/gregocal.h index 2b4fe1d..4ce40da 100644 --- a/source/i18n/unicode/gregocal.h +++ b/source/i18n/unicode/gregocal.h @@ -28,6 +28,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING #include "unicode/calendar.h" @@ -301,7 +303,7 @@ public: * @return return a polymorphic copy of this calendar. * @stable ICU 2.0 */ - virtual Calendar* clone(void) const; + virtual GregorianCalendar* clone() const; /** * Sets the GregorianCalendar change date. This is the point when the switch from @@ -350,6 +352,7 @@ public: */ virtual UBool isEquivalentTo(const Calendar& other) const; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * (Overrides Calendar) Rolls up or down by the given amount in the specified field. * For more information, see the documentation for Calendar::roll(). @@ -362,6 +365,7 @@ public: * @deprecated ICU 2.6. Use roll(UCalendarDateFields field, int32_t amount, UErrorCode& status) instead. */ virtual void roll(EDateFields field, int32_t amount, UErrorCode& status); +#endif // U_FORCE_HIDE_DEPRECATED_API /** * (Overrides Calendar) Rolls up or down by the given amount in the specified field. @@ -774,6 +778,8 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _GREGOCAL //eof diff --git a/source/i18n/unicode/listformatter.h b/source/i18n/unicode/listformatter.h index 9ce8ec8..88fc46c 100644 --- a/source/i18n/unicode/listformatter.h +++ b/source/i18n/unicode/listformatter.h @@ -21,6 +21,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #include "unicode/unistr.h" #include "unicode/locid.h" #include "unicode/formattedvalue.h" @@ -237,7 +239,7 @@ class U_I18N_API ListFormatter : public UObject{ UnicodeString& format(const UnicodeString items[], int32_t n_items, UnicodeString & appendTo, FieldPositionIterator* posIter, UErrorCode& errorCode) const; -#endif /* U_HIDE_DRAFT_API */ +#endif // U_HIDE_DRAFT_API #if !UCONFIG_NO_FORMATTING #ifndef U_HIDE_DRAFT_API @@ -298,4 +300,6 @@ class U_I18N_API ListFormatter : public UObject{ U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __LISTFORMATTER_H__ diff --git a/source/i18n/unicode/measfmt.h b/source/i18n/unicode/measfmt.h index 12101d6..b4f9048 100644 --- a/source/i18n/unicode/measfmt.h +++ b/source/i18n/unicode/measfmt.h @@ -15,6 +15,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING #include "unicode/format.h" @@ -151,7 +153,7 @@ class U_I18N_API MeasureFormat : public Format { * Clones this object polymorphically. * @stable ICU 53 */ - virtual Format *clone() const; + virtual MeasureFormat *clone() const; /** * Formats object to produce a string. @@ -163,6 +165,7 @@ class U_I18N_API MeasureFormat : public Format { FieldPosition &pos, UErrorCode &status) const; +#ifndef U_FORCE_HIDE_DRAFT_API /** * Parse a string to produce an object. This implementation sets * status to U_UNSUPPORTED_ERROR. @@ -173,6 +176,7 @@ class U_I18N_API MeasureFormat : public Format { const UnicodeString &source, Formattable &reslt, ParsePosition &pos) const; +#endif // U_FORCE_HIDE_DRAFT_API /** * Formats measure objects to produce a string. An example of such a @@ -382,17 +386,12 @@ class U_I18N_API MeasureFormat : public Format { int32_t bitMap, // 1=hour set, 2=minute set, 4=second set UnicodeString &appendTo, UErrorCode &status) const; - - UnicodeString &formatNumeric( - UDate date, - const DateFormat &dateFmt, - UDateFormatField smallestField, - const Formattable &smallestAmount, - UnicodeString &appendTo, - UErrorCode &status) const; }; U_NAMESPACE_END #endif // #if !UCONFIG_NO_FORMATTING + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // #ifndef MEASUREFORMAT_H diff --git a/source/i18n/unicode/measunit.h b/source/i18n/unicode/measunit.h index 93d9b07..dbcad62 100644 --- a/source/i18n/unicode/measunit.h +++ b/source/i18n/unicode/measunit.h @@ -15,6 +15,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING #include "unicode/unistr.h" @@ -62,7 +64,7 @@ class U_I18N_API MeasureUnit: public UObject { * have the same class as returned by getDynamicClassID(). * @stable ICU 3.0 */ - virtual UObject* clone() const; + virtual MeasureUnit* clone() const; /** * Destructor @@ -604,16 +606,14 @@ class U_I18N_API MeasureUnit: public UObject { static MeasureUnit getPartPerMillion(); #endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of concentr: percent. * Caller owns returned value and must free it. * Also see {@link #getPercent()}. * @param status ICU error code. - * @draft ICU 63 + * @stable ICU 63 */ static MeasureUnit *createPercent(UErrorCode &status); -#endif /* U_HIDE_DRAFT_API */ #ifndef U_HIDE_DRAFT_API /** @@ -624,16 +624,14 @@ class U_I18N_API MeasureUnit: public UObject { static MeasureUnit getPercent(); #endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of concentr: permille. * Caller owns returned value and must free it. * Also see {@link #getPermille()}. * @param status ICU error code. - * @draft ICU 63 + * @stable ICU 63 */ static MeasureUnit *createPermille(UErrorCode &status); -#endif /* U_HIDE_DRAFT_API */ #ifndef U_HIDE_DRAFT_API /** @@ -878,16 +876,14 @@ class U_I18N_API MeasureUnit: public UObject { static MeasureUnit getMegabyte(); #endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of digital: petabyte. * Caller owns returned value and must free it. * Also see {@link #getPetabyte()}. * @param status ICU error code. - * @draft ICU 63 + * @stable ICU 63 */ static MeasureUnit *createPetabyte(UErrorCode &status); -#endif /* U_HIDE_DRAFT_API */ #ifndef U_HIDE_DRAFT_API /** @@ -979,9 +975,7 @@ class U_I18N_API MeasureUnit: public UObject { * @draft ICU 64 */ static MeasureUnit *createDayPerson(UErrorCode &status); -#endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by value, unit of duration: day-person. * Also see {@link #createDayPerson()}. @@ -990,6 +984,24 @@ class U_I18N_API MeasureUnit: public UObject { static MeasureUnit getDayPerson(); #endif /* U_HIDE_DRAFT_API */ +#ifndef U_HIDE_DRAFT_API + /** + * Returns by pointer, unit of duration: decade. + * Caller owns returned value and must free it. + * Also see {@link #getDecade()}. + * @param status ICU error code. + * @draft ICU 65 + */ + static MeasureUnit *createDecade(UErrorCode &status); + + /** + * Returns by value, unit of duration: decade. + * Also see {@link #createDecade()}. + * @draft ICU 65 + */ + static MeasureUnit getDecade(); +#endif /* U_HIDE_DRAFT_API */ + /** * Returns by pointer, unit of duration: hour. * Caller owns returned value and must free it. @@ -1089,9 +1101,7 @@ class U_I18N_API MeasureUnit: public UObject { * @draft ICU 64 */ static MeasureUnit *createMonthPerson(UErrorCode &status); -#endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by value, unit of duration: month-person. * Also see {@link #createMonthPerson()}. @@ -1163,9 +1173,7 @@ class U_I18N_API MeasureUnit: public UObject { * @draft ICU 64 */ static MeasureUnit *createWeekPerson(UErrorCode &status); -#endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by value, unit of duration: week-person. * Also see {@link #createWeekPerson()}. @@ -1201,9 +1209,7 @@ class U_I18N_API MeasureUnit: public UObject { * @draft ICU 64 */ static MeasureUnit *createYearPerson(UErrorCode &status); -#endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by value, unit of duration: year-person. * Also see {@link #createYearPerson()}. @@ -1430,6 +1436,24 @@ class U_I18N_API MeasureUnit: public UObject { #ifndef U_HIDE_DRAFT_API /** + * Returns by pointer, unit of energy: therm-us. + * Caller owns returned value and must free it. + * Also see {@link #getThermUs()}. + * @param status ICU error code. + * @draft ICU 65 + */ + static MeasureUnit *createThermUs(UErrorCode &status); + + /** + * Returns by value, unit of energy: therm-us. + * Also see {@link #createThermUs()}. + * @draft ICU 65 + */ + static MeasureUnit getThermUs(); +#endif /* U_HIDE_DRAFT_API */ + +#ifndef U_HIDE_DRAFT_API + /** * Returns by pointer, unit of force: newton. * Caller owns returned value and must free it. * Also see {@link #getNewton()}. @@ -1536,6 +1560,132 @@ class U_I18N_API MeasureUnit: public UObject { static MeasureUnit getMegahertz(); #endif /* U_HIDE_DRAFT_API */ +#ifndef U_HIDE_DRAFT_API + /** + * Returns by pointer, unit of graphics: dot-per-centimeter. + * Caller owns returned value and must free it. + * Also see {@link #getDotPerCentimeter()}. + * @param status ICU error code. + * @draft ICU 65 + */ + static MeasureUnit *createDotPerCentimeter(UErrorCode &status); + + /** + * Returns by value, unit of graphics: dot-per-centimeter. + * Also see {@link #createDotPerCentimeter()}. + * @draft ICU 65 + */ + static MeasureUnit getDotPerCentimeter(); +#endif /* U_HIDE_DRAFT_API */ + +#ifndef U_HIDE_DRAFT_API + /** + * Returns by pointer, unit of graphics: dot-per-inch. + * Caller owns returned value and must free it. + * Also see {@link #getDotPerInch()}. + * @param status ICU error code. + * @draft ICU 65 + */ + static MeasureUnit *createDotPerInch(UErrorCode &status); + + /** + * Returns by value, unit of graphics: dot-per-inch. + * Also see {@link #createDotPerInch()}. + * @draft ICU 65 + */ + static MeasureUnit getDotPerInch(); +#endif /* U_HIDE_DRAFT_API */ + +#ifndef U_HIDE_DRAFT_API + /** + * Returns by pointer, unit of graphics: em. + * Caller owns returned value and must free it. + * Also see {@link #getEm()}. + * @param status ICU error code. + * @draft ICU 65 + */ + static MeasureUnit *createEm(UErrorCode &status); + + /** + * Returns by value, unit of graphics: em. + * Also see {@link #createEm()}. + * @draft ICU 65 + */ + static MeasureUnit getEm(); +#endif /* U_HIDE_DRAFT_API */ + +#ifndef U_HIDE_DRAFT_API + /** + * Returns by pointer, unit of graphics: megapixel. + * Caller owns returned value and must free it. + * Also see {@link #getMegapixel()}. + * @param status ICU error code. + * @draft ICU 65 + */ + static MeasureUnit *createMegapixel(UErrorCode &status); + + /** + * Returns by value, unit of graphics: megapixel. + * Also see {@link #createMegapixel()}. + * @draft ICU 65 + */ + static MeasureUnit getMegapixel(); +#endif /* U_HIDE_DRAFT_API */ + +#ifndef U_HIDE_DRAFT_API + /** + * Returns by pointer, unit of graphics: pixel. + * Caller owns returned value and must free it. + * Also see {@link #getPixel()}. + * @param status ICU error code. + * @draft ICU 65 + */ + static MeasureUnit *createPixel(UErrorCode &status); + + /** + * Returns by value, unit of graphics: pixel. + * Also see {@link #createPixel()}. + * @draft ICU 65 + */ + static MeasureUnit getPixel(); +#endif /* U_HIDE_DRAFT_API */ + +#ifndef U_HIDE_DRAFT_API + /** + * Returns by pointer, unit of graphics: pixel-per-centimeter. + * Caller owns returned value and must free it. + * Also see {@link #getPixelPerCentimeter()}. + * @param status ICU error code. + * @draft ICU 65 + */ + static MeasureUnit *createPixelPerCentimeter(UErrorCode &status); + + /** + * Returns by value, unit of graphics: pixel-per-centimeter. + * Also see {@link #createPixelPerCentimeter()}. + * @draft ICU 65 + */ + static MeasureUnit getPixelPerCentimeter(); +#endif /* U_HIDE_DRAFT_API */ + +#ifndef U_HIDE_DRAFT_API + /** + * Returns by pointer, unit of graphics: pixel-per-inch. + * Caller owns returned value and must free it. + * Also see {@link #getPixelPerInch()}. + * @param status ICU error code. + * @draft ICU 65 + */ + static MeasureUnit *createPixelPerInch(UErrorCode &status); + + /** + * Returns by value, unit of graphics: pixel-per-inch. + * Also see {@link #createPixelPerInch()}. + * @draft ICU 65 + */ + static MeasureUnit getPixelPerInch(); +#endif /* U_HIDE_DRAFT_API */ + /** * Returns by pointer, unit of length: astronomical-unit. * Caller owns returned value and must free it. @@ -2310,16 +2460,14 @@ class U_I18N_API MeasureUnit: public UObject { static MeasureUnit getWatt(); #endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of pressure: atmosphere. * Caller owns returned value and must free it. * Also see {@link #getAtmosphere()}. * @param status ICU error code. - * @draft ICU 63 + * @stable ICU 63 */ static MeasureUnit *createAtmosphere(UErrorCode &status); -#endif /* U_HIDE_DRAFT_API */ #ifndef U_HIDE_DRAFT_API /** @@ -2330,6 +2478,24 @@ class U_I18N_API MeasureUnit: public UObject { static MeasureUnit getAtmosphere(); #endif /* U_HIDE_DRAFT_API */ +#ifndef U_HIDE_DRAFT_API + /** + * Returns by pointer, unit of pressure: bar. + * Caller owns returned value and must free it. + * Also see {@link #getBar()}. + * @param status ICU error code. + * @draft ICU 65 + */ + static MeasureUnit *createBar(UErrorCode &status); + + /** + * Returns by value, unit of pressure: bar. + * Also see {@link #createBar()}. + * @draft ICU 65 + */ + static MeasureUnit getBar(); +#endif /* U_HIDE_DRAFT_API */ + /** * Returns by pointer, unit of pressure: hectopascal. * Caller owns returned value and must free it. @@ -2438,6 +2604,24 @@ class U_I18N_API MeasureUnit: public UObject { static MeasureUnit getMillimeterOfMercury(); #endif /* U_HIDE_DRAFT_API */ +#ifndef U_HIDE_DRAFT_API + /** + * Returns by pointer, unit of pressure: pascal. + * Caller owns returned value and must free it. + * Also see {@link #getPascal()}. + * @param status ICU error code. + * @draft ICU 65 + */ + static MeasureUnit *createPascal(UErrorCode &status); + + /** + * Returns by value, unit of pressure: pascal. + * Also see {@link #createPascal()}. + * @draft ICU 65 + */ + static MeasureUnit getPascal(); +#endif /* U_HIDE_DRAFT_API */ + /** * Returns by pointer, unit of pressure: pound-per-square-inch. * Caller owns returned value and must free it. @@ -3164,4 +3348,7 @@ private: U_NAMESPACE_END #endif // !UNCONFIG_NO_FORMATTING + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __MEASUREUNIT_H__ diff --git a/source/i18n/unicode/measure.h b/source/i18n/unicode/measure.h index 99b7d7a..fa9c293 100644 --- a/source/i18n/unicode/measure.h +++ b/source/i18n/unicode/measure.h @@ -15,6 +15,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: MeasureUnit object. @@ -72,7 +74,7 @@ class U_I18N_API Measure: public UObject { * have the same class as returned by getDynamicClassID(). * @stable ICU 3.0 */ - virtual UObject* clone() const; + virtual Measure* clone() const; /** * Destructor @@ -158,4 +160,7 @@ inline const MeasureUnit& Measure::getUnit() const { U_NAMESPACE_END #endif // !UCONFIG_NO_FORMATTING + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __MEASURE_H__ diff --git a/source/i18n/unicode/msgfmt.h b/source/i18n/unicode/msgfmt.h index 8e1bf9b..99b0eae 100644 --- a/source/i18n/unicode/msgfmt.h +++ b/source/i18n/unicode/msgfmt.h @@ -21,6 +21,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Formats messages in a language-neutral way. @@ -184,7 +186,7 @@ class NumberFormat; * argSkeletonText * NumberFormatter::forSkeleton(argSkeletonText, status).locale(getLocale()).toFormat(status) * - * date + * date * (none) * DateFormat.createDateInstance(kDefault, getLocale(), status) * @@ -418,7 +420,7 @@ public: * result and should delete it when done. * @stable ICU 2.0 */ - virtual Format* clone(void) const; + virtual MessageFormat* clone() const; /** * Returns true if the given Format objects are semantically equal. @@ -1087,7 +1089,7 @@ private: class U_I18N_API DummyFormat : public Format { public: virtual UBool operator==(const Format&) const; - virtual Format* clone() const; + virtual DummyFormat* clone() const; virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, UErrorCode& status) const; @@ -1111,5 +1113,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _MSGFMT //eof diff --git a/source/i18n/unicode/nounit.h b/source/i18n/unicode/nounit.h index 879849b..61b5c16 100644 --- a/source/i18n/unicode/nounit.h +++ b/source/i18n/unicode/nounit.h @@ -12,11 +12,14 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING -#ifndef U_HIDE_DRAFT_API #include "unicode/measunit.h" +#ifndef U_HIDE_DRAFT_API + /** * \file * \brief C++ API: units for percent and permille @@ -72,7 +75,7 @@ public: * have the same class as returned by getDynamicClassID(). * @draft ICU 60 */ - virtual UObject* clone() const; + virtual NoUnit* clone() const; /** * Returns a unique class ID for this object POLYMORPHICALLY. @@ -106,6 +109,8 @@ U_NAMESPACE_END #endif /* U_HIDE_DRAFT_API */ #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __NOUNIT_H__ //eof // diff --git a/source/i18n/unicode/numberformatter.h b/source/i18n/unicode/numberformatter.h index e9fe39a..6d48f18 100644 --- a/source/i18n/unicode/numberformatter.h +++ b/source/i18n/unicode/numberformatter.h @@ -1,15 +1,19 @@ // © 2017 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html +#ifndef __NUMBERFORMATTER_H__ +#define __NUMBERFORMATTER_H__ + #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING -#ifndef __NUMBERFORMATTER_H__ -#define __NUMBERFORMATTER_H__ #include "unicode/appendable.h" -#include "unicode/dcfmtsym.h" +#include "unicode/bytestream.h" #include "unicode/currunit.h" +#include "unicode/dcfmtsym.h" #include "unicode/fieldpos.h" #include "unicode/formattedvalue.h" #include "unicode/fpositer.h" @@ -22,8 +26,6 @@ #include "unicode/unumberformatter.h" #include "unicode/uobject.h" -#ifndef U_HIDE_DRAFT_API - /** * \file * \brief C++ API: Library for localized number formatting introduced in ICU 60. @@ -85,6 +87,7 @@ U_NAMESPACE_BEGIN // Forward declarations: class IFixedDecimal; class FieldPositionIteratorHandler; +class FormattedStringBuilder; namespace numparse { namespace impl { @@ -142,7 +145,6 @@ class MultiplierProducer; class RoundingImpl; class ScientificHandler; class Modifier; -class NumberStringBuilder; class AffixPatternProvider; class NumberPropertyMapper; struct DecimalFormatProperties; @@ -167,21 +169,21 @@ void touchRangeLocales(impl::RangeMacroProps& macros); /** * Extra name reserved in case it is needed in the future. * - * @draft ICU 63 + * @stable ICU 63 */ typedef Notation CompactNotation; /** * Extra name reserved in case it is needed in the future. * - * @draft ICU 63 + * @stable ICU 63 */ typedef Notation SimpleNotation; /** * A class that defines the notation style to be used when formatting numbers in NumberFormatter. * - * @draft ICU 60 + * @stable ICU 60 */ class U_I18N_API Notation : public UMemory { public: @@ -207,7 +209,7 @@ class U_I18N_API Notation : public UMemory { * * * @return A ScientificNotation for chaining or passing to the NumberFormatter notation() setter. - * @draft ICU 60 + * @stable ICU 60 */ static ScientificNotation scientific(); @@ -231,7 +233,7 @@ class U_I18N_API Notation : public UMemory { * * * @return A ScientificNotation for chaining or passing to the NumberFormatter notation() setter. - * @draft ICU 60 + * @stable ICU 60 */ static ScientificNotation engineering(); @@ -274,7 +276,7 @@ class U_I18N_API Notation : public UMemory { * * * @return A CompactNotation for passing to the NumberFormatter notation() setter. - * @draft ICU 60 + * @stable ICU 60 */ static CompactNotation compactShort(); @@ -298,7 +300,7 @@ class U_I18N_API Notation : public UMemory { * * * @return A CompactNotation for passing to the NumberFormatter notation() setter. - * @draft ICU 60 + * @stable ICU 60 */ static CompactNotation compactLong(); @@ -324,7 +326,7 @@ class U_I18N_API Notation : public UMemory { * * * @return A SimpleNotation for passing to the NumberFormatter notation() setter. - * @draft ICU 60 + * @stable ICU 60 */ static SimpleNotation simple(); @@ -391,7 +393,7 @@ class U_I18N_API Notation : public UMemory { *

    * To create a ScientificNotation, use one of the factory methods in {@link Notation}. * - * @draft ICU 60 + * @stable ICU 60 */ class U_I18N_API ScientificNotation : public Notation { public: @@ -406,7 +408,7 @@ class U_I18N_API ScientificNotation : public Notation { * @param minExponentDigits * The minimum number of digits to show in the exponent. * @return A ScientificNotation, for chaining. - * @draft ICU 60 + * @stable ICU 60 */ ScientificNotation withMinExponentDigits(int32_t minExponentDigits) const; @@ -421,7 +423,7 @@ class U_I18N_API ScientificNotation : public Notation { * @param exponentSignDisplay * The strategy for displaying the sign in the exponent. * @return A ScientificNotation, for chaining. - * @draft ICU 60 + * @stable ICU 60 */ ScientificNotation withExponentSignDisplay(UNumberSignDisplay exponentSignDisplay) const; @@ -442,7 +444,7 @@ class U_I18N_API ScientificNotation : public Notation { /** * Extra name reserved in case it is needed in the future. * - * @draft ICU 63 + * @stable ICU 63 */ typedef Precision SignificantDigitsPrecision; @@ -452,7 +454,7 @@ typedef Precision SignificantDigitsPrecision; *

    * To create a Precision, use one of the factory methods. * - * @draft ICU 60 + * @stable ICU 60 */ class U_I18N_API Precision : public UMemory { @@ -472,7 +474,7 @@ class U_I18N_API Precision : public UMemory { * http://www.serpentine.com/blog/2011/06/29/here-be-dragons-advances-in-problems-you-didnt-even-know-you-had/ * * @return A Precision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 60 + * @stable ICU 60 */ static Precision unlimited(); @@ -480,7 +482,7 @@ class U_I18N_API Precision : public UMemory { * Show numbers rounded if necessary to the nearest integer. * * @return A FractionPrecision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 60 + * @stable ICU 60 */ static FractionPrecision integer(); @@ -509,7 +511,7 @@ class U_I18N_API Precision : public UMemory { * The minimum and maximum number of numerals to display after the decimal separator (rounding if too * long or padding with zeros if too short). * @return A FractionPrecision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 60 + * @stable ICU 60 */ static FractionPrecision fixedFraction(int32_t minMaxFractionPlaces); @@ -524,7 +526,7 @@ class U_I18N_API Precision : public UMemory { * The minimum number of numerals to display after the decimal separator (padding with zeros if * necessary). * @return A FractionPrecision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 60 + * @stable ICU 60 */ static FractionPrecision minFraction(int32_t minFractionPlaces); @@ -536,7 +538,7 @@ class U_I18N_API Precision : public UMemory { * @param maxFractionPlaces * The maximum number of numerals to display after the decimal mark (rounding if necessary). * @return A FractionPrecision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 60 + * @stable ICU 60 */ static FractionPrecision maxFraction(int32_t maxFractionPlaces); @@ -551,7 +553,7 @@ class U_I18N_API Precision : public UMemory { * @param maxFractionPlaces * The maximum number of numerals to display after the decimal separator (rounding if necessary). * @return A FractionPrecision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 60 + * @stable ICU 60 */ static FractionPrecision minMaxFraction(int32_t minFractionPlaces, int32_t maxFractionPlaces); @@ -566,7 +568,7 @@ class U_I18N_API Precision : public UMemory { * The minimum and maximum number of significant digits to display (rounding if too long or padding with * zeros if too short). * @return A precision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 62 + * @stable ICU 62 */ static SignificantDigitsPrecision fixedSignificantDigits(int32_t minMaxSignificantDigits); @@ -580,7 +582,7 @@ class U_I18N_API Precision : public UMemory { * @param minSignificantDigits * The minimum number of significant digits to display (padding with zeros if too short). * @return A precision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 62 + * @stable ICU 62 */ static SignificantDigitsPrecision minSignificantDigits(int32_t minSignificantDigits); @@ -590,7 +592,7 @@ class U_I18N_API Precision : public UMemory { * @param maxSignificantDigits * The maximum number of significant digits to display (rounding if too long). * @return A precision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 62 + * @stable ICU 62 */ static SignificantDigitsPrecision maxSignificantDigits(int32_t maxSignificantDigits); @@ -603,7 +605,7 @@ class U_I18N_API Precision : public UMemory { * @param maxSignificantDigits * The maximum number of significant digits to display (rounding if necessary). * @return A precision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 62 + * @stable ICU 62 */ static SignificantDigitsPrecision minMaxSignificantDigits(int32_t minSignificantDigits, int32_t maxSignificantDigits); @@ -625,7 +627,7 @@ class U_I18N_API Precision : public UMemory { * @param roundingIncrement * The increment to which to round numbers. * @return A precision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 60 + * @stable ICU 60 */ static IncrementPrecision increment(double roundingIncrement); @@ -644,7 +646,7 @@ class U_I18N_API Precision : public UMemory { * Either STANDARD (for digital transactions) or CASH (for transactions where the rounding increment may * be limited by the available denominations of cash or coins). * @return A CurrencyPrecision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 60 + * @stable ICU 60 */ static CurrencyPrecision currency(UCurrencyUsage currencyUsage); @@ -771,7 +773,7 @@ class U_I18N_API Precision : public UMemory { *

    * To create a FractionPrecision, use one of the factory methods on Precision. * - * @draft ICU 60 + * @stable ICU 60 */ class U_I18N_API FractionPrecision : public Precision { public: @@ -789,7 +791,7 @@ class U_I18N_API FractionPrecision : public Precision { * @param minSignificantDigits * The number of significant figures to guarantee. * @return A precision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 60 + * @stable ICU 60 */ Precision withMinDigits(int32_t minSignificantDigits) const; @@ -808,7 +810,7 @@ class U_I18N_API FractionPrecision : public Precision { * @param maxSignificantDigits * Round the number to no more than this number of significant figures. * @return A precision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 60 + * @stable ICU 60 */ Precision withMaxDigits(int32_t maxSignificantDigits) const; @@ -827,7 +829,7 @@ class U_I18N_API FractionPrecision : public Precision { *

    * To create a CurrencyPrecision, use one of the factory methods on Precision. * - * @draft ICU 60 + * @stable ICU 60 */ class U_I18N_API CurrencyPrecision : public Precision { public: @@ -846,7 +848,7 @@ class U_I18N_API CurrencyPrecision : public Precision { * @param currency * The currency to associate with this rounding precision. * @return A precision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 60 + * @stable ICU 60 */ Precision withCurrency(const CurrencyUnit ¤cy) const; @@ -865,7 +867,7 @@ class U_I18N_API CurrencyPrecision : public Precision { *

    * To create an IncrementPrecision, use one of the factory methods on Precision. * - * @draft ICU 60 + * @stable ICU 60 */ class U_I18N_API IncrementPrecision : public Precision { public: @@ -882,7 +884,7 @@ class U_I18N_API IncrementPrecision : public Precision { * * @param minFrac The minimum number of digits after the decimal separator. * @return A precision for chaining or passing to the NumberFormatter precision() setter. - * @draft ICU 60 + * @stable ICU 60 */ Precision withMinFraction(int32_t minFrac) const; @@ -900,7 +902,7 @@ class U_I18N_API IncrementPrecision : public Precision { *

    * To create an IntegerWidth, use one of the factory methods. * - * @draft ICU 60 + * @stable ICU 60 * @see NumberFormatter */ class U_I18N_API IntegerWidth : public UMemory { @@ -914,7 +916,7 @@ class U_I18N_API IntegerWidth : public UMemory { * @param minInt * The minimum number of places before the decimal separator. * @return An IntegerWidth for chaining or passing to the NumberFormatter integerWidth() setter. - * @draft ICU 60 + * @stable ICU 60 */ static IntegerWidth zeroFillTo(int32_t minInt); @@ -927,7 +929,7 @@ class U_I18N_API IntegerWidth : public UMemory { * The maximum number of places before the decimal separator. maxInt == -1 means no * truncation. * @return An IntegerWidth for passing to the NumberFormatter integerWidth() setter. - * @draft ICU 60 + * @stable ICU 60 */ IntegerWidth truncateAt(int32_t maxInt); @@ -994,7 +996,7 @@ class U_I18N_API IntegerWidth : public UMemory { *

    * To create a Scale, use one of the factory methods. * - * @draft ICU 62 + * @stable ICU 62 */ class U_I18N_API Scale : public UMemory { public: @@ -1002,7 +1004,7 @@ class U_I18N_API Scale : public UMemory { * Do not change the value of numbers when formatting or parsing. * * @return A Scale to prevent any multiplication. - * @draft ICU 62 + * @stable ICU 62 */ static Scale none(); @@ -1014,7 +1016,7 @@ class U_I18N_API Scale : public UMemory { * * * @return A Scale for passing to the setter in NumberFormatter. - * @draft ICU 62 + * @stable ICU 62 */ static Scale powerOfTen(int32_t power); @@ -1028,7 +1030,7 @@ class U_I18N_API Scale : public UMemory { * Also see the version of this method that takes a double. * * @return A Scale for passing to the setter in NumberFormatter. - * @draft ICU 62 + * @stable ICU 62 */ static Scale byDecimal(StringPiece multiplicand); @@ -1038,7 +1040,7 @@ class U_I18N_API Scale : public UMemory { * This method takes a double; also see the version of this method that takes an exact decimal. * * @return A Scale for passing to the setter in NumberFormatter. - * @draft ICU 62 + * @stable ICU 62 */ static Scale byDouble(double multiplicand); @@ -1046,26 +1048,26 @@ class U_I18N_API Scale : public UMemory { * Multiply a number by both a power of ten and by an arbitrary double value. * * @return A Scale for passing to the setter in NumberFormatter. - * @draft ICU 62 + * @stable ICU 62 */ static Scale byDoubleAndPowerOfTen(double multiplicand, int32_t power); // We need a custom destructor for the DecNum, which means we need to declare // the copy/move constructor/assignment quartet. - /** @draft ICU 62 */ + /** @stable ICU 62 */ Scale(const Scale& other); - /** @draft ICU 62 */ + /** @stable ICU 62 */ Scale& operator=(const Scale& other); - /** @draft ICU 62 */ + /** @stable ICU 62 */ Scale(Scale&& src) U_NOEXCEPT; - /** @draft ICU 62 */ + /** @stable ICU 62 */ Scale& operator=(Scale&& src) U_NOEXCEPT; - /** @draft ICU 62 */ + /** @stable ICU 62 */ ~Scale(); #ifndef U_HIDE_INTERNAL_API @@ -1343,7 +1345,7 @@ class U_I18N_API Padder : public UMemory { } int32_t padAndApply(const impl::Modifier &mod1, const impl::Modifier &mod2, - impl::NumberStringBuilder &string, int32_t leftIndex, int32_t rightIndex, + FormattedStringBuilder &string, int32_t leftIndex, int32_t rightIndex, UErrorCode &status) const; // To allow MacroProps/MicroProps to initialize empty instances: @@ -1465,7 +1467,7 @@ class U_I18N_API NumberFormatterSettings { * The notation strategy to use. * @return The fluent chain. * @see Notation - * @draft ICU 60 + * @stable ICU 60 */ Derived notation(const Notation ¬ation) const &; @@ -1476,7 +1478,7 @@ class U_I18N_API NumberFormatterSettings { * The notation strategy to use. * @return The fluent chain. * @see #notation - * @draft ICU 62 + * @stable ICU 62 */ Derived notation(const Notation ¬ation) &&; @@ -1521,7 +1523,7 @@ class U_I18N_API NumberFormatterSettings { * @see Currency * @see NoUnit * @see #perUnit - * @draft ICU 60 + * @stable ICU 60 */ Derived unit(const icu::MeasureUnit &unit) const &; @@ -1532,7 +1534,7 @@ class U_I18N_API NumberFormatterSettings { * The unit to render. * @return The fluent chain. * @see #unit - * @draft ICU 62 + * @stable ICU 62 */ Derived unit(const icu::MeasureUnit &unit) &&; @@ -1547,7 +1549,7 @@ class U_I18N_API NumberFormatterSettings { * @return The fluent chain. * @see #unit * @see MeasureUnit - * @draft ICU 60 + * @stable ICU 60 */ Derived adoptUnit(icu::MeasureUnit *unit) const &; @@ -1558,7 +1560,7 @@ class U_I18N_API NumberFormatterSettings { * The unit to render. * @return The fluent chain. * @see #adoptUnit - * @draft ICU 62 + * @stable ICU 62 */ Derived adoptUnit(icu::MeasureUnit *unit) &&; @@ -1582,7 +1584,7 @@ class U_I18N_API NumberFormatterSettings { * The unit to render in the denominator. * @return The fluent chain * @see #unit - * @draft ICU 61 + * @stable ICU 61 */ Derived perUnit(const icu::MeasureUnit &perUnit) const &; @@ -1593,7 +1595,7 @@ class U_I18N_API NumberFormatterSettings { * The unit to render in the denominator. * @return The fluent chain. * @see #perUnit - * @draft ICU 62 + * @stable ICU 62 */ Derived perUnit(const icu::MeasureUnit &perUnit) &&; @@ -1608,7 +1610,7 @@ class U_I18N_API NumberFormatterSettings { * @return The fluent chain. * @see #perUnit * @see MeasureUnit - * @draft ICU 61 + * @stable ICU 61 */ Derived adoptPerUnit(icu::MeasureUnit *perUnit) const &; @@ -1619,7 +1621,7 @@ class U_I18N_API NumberFormatterSettings { * The unit to render in the denominator. * @return The fluent chain. * @see #adoptPerUnit - * @draft ICU 62 + * @stable ICU 62 */ Derived adoptPerUnit(icu::MeasureUnit *perUnit) &&; @@ -1651,7 +1653,7 @@ class U_I18N_API NumberFormatterSettings { * The rounding precision to use. * @return The fluent chain. * @see Precision - * @draft ICU 62 + * @stable ICU 62 */ Derived precision(const Precision& precision) const &; @@ -1662,7 +1664,7 @@ class U_I18N_API NumberFormatterSettings { * The rounding precision to use. * @return The fluent chain. * @see #precision - * @draft ICU 62 + * @stable ICU 62 */ Derived precision(const Precision& precision) &&; @@ -1682,7 +1684,7 @@ class U_I18N_API NumberFormatterSettings { * * @param roundingMode The rounding mode to use. * @return The fluent chain. - * @draft ICU 62 + * @stable ICU 62 */ Derived roundingMode(UNumberFormatRoundingMode roundingMode) const &; @@ -1692,7 +1694,7 @@ class U_I18N_API NumberFormatterSettings { * @param roundingMode The rounding mode to use. * @return The fluent chain. * @see #roundingMode - * @draft ICU 62 + * @stable ICU 62 */ Derived roundingMode(UNumberFormatRoundingMode roundingMode) &&; @@ -1721,7 +1723,7 @@ class U_I18N_API NumberFormatterSettings { * @param strategy * The grouping strategy to use. * @return The fluent chain. - * @draft ICU 61 + * @stable ICU 61 */ Derived grouping(UNumberGroupingStrategy strategy) const &; @@ -1732,7 +1734,7 @@ class U_I18N_API NumberFormatterSettings { * The grouping strategy to use. * @return The fluent chain. * @see #grouping - * @draft ICU 62 + * @stable ICU 62 */ Derived grouping(UNumberGroupingStrategy strategy) &&; @@ -1758,7 +1760,7 @@ class U_I18N_API NumberFormatterSettings { * The integer width to use. * @return The fluent chain. * @see IntegerWidth - * @draft ICU 60 + * @stable ICU 60 */ Derived integerWidth(const IntegerWidth &style) const &; @@ -1769,7 +1771,7 @@ class U_I18N_API NumberFormatterSettings { * The integer width to use. * @return The fluent chain. * @see #integerWidth - * @draft ICU 62 + * @stable ICU 62 */ Derived integerWidth(const IntegerWidth &style) &&; @@ -1811,7 +1813,7 @@ class U_I18N_API NumberFormatterSettings { * The DecimalFormatSymbols to use. * @return The fluent chain. * @see DecimalFormatSymbols - * @draft ICU 60 + * @stable ICU 60 */ Derived symbols(const DecimalFormatSymbols &symbols) const &; @@ -1822,7 +1824,7 @@ class U_I18N_API NumberFormatterSettings { * The DecimalFormatSymbols to use. * @return The fluent chain. * @see #symbols - * @draft ICU 62 + * @stable ICU 62 */ Derived symbols(const DecimalFormatSymbols &symbols) &&; @@ -1857,7 +1859,7 @@ class U_I18N_API NumberFormatterSettings { * The NumberingSystem to use. * @return The fluent chain. * @see NumberingSystem - * @draft ICU 60 + * @stable ICU 60 */ Derived adoptSymbols(NumberingSystem *symbols) const &; @@ -1868,7 +1870,7 @@ class U_I18N_API NumberFormatterSettings { * The NumberingSystem to use. * @return The fluent chain. * @see #adoptSymbols - * @draft ICU 62 + * @stable ICU 62 */ Derived adoptSymbols(NumberingSystem *symbols) &&; @@ -1895,7 +1897,7 @@ class U_I18N_API NumberFormatterSettings { * The width to use when rendering numbers. * @return The fluent chain * @see UNumberUnitWidth - * @draft ICU 60 + * @stable ICU 60 */ Derived unitWidth(UNumberUnitWidth width) const &; @@ -1906,7 +1908,7 @@ class U_I18N_API NumberFormatterSettings { * The width to use when rendering numbers. * @return The fluent chain. * @see #unitWidth - * @draft ICU 62 + * @stable ICU 62 */ Derived unitWidth(UNumberUnitWidth width) &&; @@ -1933,7 +1935,7 @@ class U_I18N_API NumberFormatterSettings { * The sign display strategy to use when rendering numbers. * @return The fluent chain * @see UNumberSignDisplay - * @draft ICU 60 + * @stable ICU 60 */ Derived sign(UNumberSignDisplay style) const &; @@ -1944,7 +1946,7 @@ class U_I18N_API NumberFormatterSettings { * The sign display strategy to use when rendering numbers. * @return The fluent chain. * @see #sign - * @draft ICU 62 + * @stable ICU 62 */ Derived sign(UNumberSignDisplay style) &&; @@ -1971,7 +1973,7 @@ class U_I18N_API NumberFormatterSettings { * The decimal separator display strategy to use when rendering numbers. * @return The fluent chain * @see UNumberDecimalSeparatorDisplay - * @draft ICU 60 + * @stable ICU 60 */ Derived decimal(UNumberDecimalSeparatorDisplay style) const &; @@ -1982,7 +1984,7 @@ class U_I18N_API NumberFormatterSettings { * The decimal separator display strategy to use when rendering numbers. * @return The fluent chain. * @see #decimal - * @draft ICU 62 + * @stable ICU 62 */ Derived decimal(UNumberDecimalSeparatorDisplay style) &&; @@ -2008,7 +2010,7 @@ class U_I18N_API NumberFormatterSettings { * @param scale * The scale to apply when rendering numbers. * @return The fluent chain - * @draft ICU 62 + * @stable ICU 62 */ Derived scale(const Scale &scale) const &; @@ -2019,7 +2021,7 @@ class U_I18N_API NumberFormatterSettings { * The scale to apply when rendering numbers. * @return The fluent chain. * @see #scale - * @draft ICU 62 + * @stable ICU 62 */ Derived scale(const Scale &scale) &&; @@ -2076,10 +2078,11 @@ class U_I18N_API NumberFormatterSettings { * behavior should produce the same skeleton. * * @return A number skeleton string with behavior corresponding to this number formatter. - * @draft ICU 62 + * @stable ICU 62 */ UnicodeString toSkeleton(UErrorCode& status) const; +#ifndef U_HIDE_DRAFT_API /** * Returns the current (Un)LocalizedNumberFormatter as a LocalPointer * wrapping a heap-allocated copy of the current object. @@ -2101,12 +2104,13 @@ class U_I18N_API NumberFormatterSettings { * @draft ICU 64 */ LocalPointer clone() &&; +#endif /* U_HIDE_DRAFT_API */ /** * Sets the UErrorCode if an error occurred in the fluent chain. * Preserves older error codes in the outErrorCode. * @return TRUE if U_FAILURE(outErrorCode) - * @draft ICU 60 + * @stable ICU 60 */ UBool copyErrorTo(UErrorCode &outErrorCode) const { if (U_FAILURE(outErrorCode)) { @@ -2139,7 +2143,7 @@ class U_I18N_API NumberFormatterSettings { * Instances of this class are immutable and thread-safe. * * @see NumberFormatter - * @draft ICU 60 + * @stable ICU 60 */ class U_I18N_API UnlocalizedNumberFormatter : public NumberFormatterSettings, public UMemory { @@ -2152,7 +2156,7 @@ class U_I18N_API UnlocalizedNumberFormatter * @param locale * The locale to use when loading data for number formatting. * @return The fluent chain. - * @draft ICU 60 + * @stable ICU 60 */ LocalizedNumberFormatter locale(const icu::Locale &locale) const &; @@ -2163,40 +2167,40 @@ class U_I18N_API UnlocalizedNumberFormatter * The locale to use when loading data for number formatting. * @return The fluent chain. * @see #locale - * @draft ICU 62 + * @stable ICU 62 */ LocalizedNumberFormatter locale(const icu::Locale &locale) &&; /** * Default constructor: puts the formatter into a valid but undefined state. * - * @draft ICU 62 + * @stable ICU 62 */ UnlocalizedNumberFormatter() = default; /** * Returns a copy of this UnlocalizedNumberFormatter. - * @draft ICU 60 + * @stable ICU 60 */ UnlocalizedNumberFormatter(const UnlocalizedNumberFormatter &other); /** * Move constructor: * The source UnlocalizedNumberFormatter will be left in a valid but undefined state. - * @draft ICU 62 + * @stable ICU 62 */ UnlocalizedNumberFormatter(UnlocalizedNumberFormatter&& src) U_NOEXCEPT; /** * Copy assignment operator. - * @draft ICU 62 + * @stable ICU 62 */ UnlocalizedNumberFormatter& operator=(const UnlocalizedNumberFormatter& other); /** * Move assignment operator: * The source UnlocalizedNumberFormatter will be left in a valid but undefined state. - * @draft ICU 62 + * @stable ICU 62 */ UnlocalizedNumberFormatter& operator=(UnlocalizedNumberFormatter&& src) U_NOEXCEPT; @@ -2219,7 +2223,7 @@ class U_I18N_API UnlocalizedNumberFormatter * Instances of this class are immutable and thread-safe. * * @see NumberFormatter - * @draft ICU 60 + * @stable ICU 60 */ class U_I18N_API LocalizedNumberFormatter : public NumberFormatterSettings, public UMemory { @@ -2233,7 +2237,7 @@ class U_I18N_API LocalizedNumberFormatter * @param status * Set to an ErrorCode if one occurred in the setter chain or during formatting. * @return A FormattedNumber object; call .toString() to get the string. - * @draft ICU 60 + * @stable ICU 60 */ FormattedNumber formatInt(int64_t value, UErrorCode &status) const; @@ -2246,7 +2250,7 @@ class U_I18N_API LocalizedNumberFormatter * @param status * Set to an ErrorCode if one occurred in the setter chain or during formatting. * @return A FormattedNumber object; call .toString() to get the string. - * @draft ICU 60 + * @stable ICU 60 */ FormattedNumber formatDouble(double value, UErrorCode &status) const; @@ -2262,7 +2266,7 @@ class U_I18N_API LocalizedNumberFormatter * @param status * Set to an ErrorCode if one occurred in the setter chain or during formatting. * @return A FormattedNumber object; call .toString() to get the string. - * @draft ICU 60 + * @stable ICU 60 */ FormattedNumber formatDecimal(StringPiece value, UErrorCode& status) const; @@ -2303,40 +2307,40 @@ class U_I18N_API LocalizedNumberFormatter * The caller owns the returned object and must delete it when finished. * * @return A Format wrapping this LocalizedNumberFormatter. - * @draft ICU 62 + * @stable ICU 62 */ Format* toFormat(UErrorCode& status) const; /** * Default constructor: puts the formatter into a valid but undefined state. * - * @draft ICU 62 + * @stable ICU 62 */ LocalizedNumberFormatter() = default; /** * Returns a copy of this LocalizedNumberFormatter. - * @draft ICU 60 + * @stable ICU 60 */ LocalizedNumberFormatter(const LocalizedNumberFormatter &other); /** * Move constructor: * The source LocalizedNumberFormatter will be left in a valid but undefined state. - * @draft ICU 62 + * @stable ICU 62 */ LocalizedNumberFormatter(LocalizedNumberFormatter&& src) U_NOEXCEPT; /** * Copy assignment operator. - * @draft ICU 62 + * @stable ICU 62 */ LocalizedNumberFormatter& operator=(const LocalizedNumberFormatter& other); /** * Move assignment operator: * The source LocalizedNumberFormatter will be left in a valid but undefined state. - * @draft ICU 62 + * @stable ICU 62 */ LocalizedNumberFormatter& operator=(LocalizedNumberFormatter&& src) U_NOEXCEPT; @@ -2360,7 +2364,7 @@ class U_I18N_API LocalizedNumberFormatter /** * Destruct this LocalizedNumberFormatter, cleaning up any memory it might own. - * @draft ICU 60 + * @stable ICU 60 */ ~LocalizedNumberFormatter(); @@ -2401,27 +2405,30 @@ class U_I18N_API LocalizedNumberFormatter * * Instances of this class are immutable and thread-safe. * - * @draft ICU 60 + * @stable ICU 60 */ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue { public: + // Default constructor cannot have #ifndef U_HIDE_DRAFT_API +#ifndef U_FORCE_HIDE_DRAFT_API /** * Default constructor; makes an empty FormattedNumber. * @draft ICU 64 */ FormattedNumber() : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {} +#endif // U_FORCE_HIDE_DRAFT_API /** * Move constructor: Leaves the source FormattedNumber in an undefined state. - * @draft ICU 62 + * @stable ICU 62 */ FormattedNumber(FormattedNumber&& src) U_NOEXCEPT; /** * Destruct an instance of FormattedNumber. - * @draft ICU 60 + * @stable ICU 60 */ virtual ~FormattedNumber() U_OVERRIDE; @@ -2433,7 +2440,7 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue { /** * Move assignment: Leaves the source FormattedNumber in an undefined state. - * @draft ICU 62 + * @stable ICU 62 */ FormattedNumber& operator=(FormattedNumber&& src) U_NOEXCEPT; @@ -2443,7 +2450,7 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue { * * For more information, see FormattedValue::toString() * - * @draft ICU 62 + * @stable ICU 62 */ UnicodeString toString(UErrorCode& status) const U_OVERRIDE; @@ -2457,7 +2464,7 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue { * * For more information, see FormattedValue::appendTo() * - * @draft ICU 62 + * @stable ICU 62 */ Appendable &appendTo(Appendable& appendable, UErrorCode& status) const U_OVERRIDE; @@ -2465,6 +2472,7 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue { /** @copydoc FormattedValue::nextPosition() */ UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE; +#ifndef U_HIDE_DRAFT_API /** * Determines the start (inclusive) and end (exclusive) indices of the next occurrence of the given * field in the output string. This allows you to determine the locations of, for example, @@ -2516,6 +2524,30 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue { * @see UNumberFormatFields */ void getAllFieldPositions(FieldPositionIterator &iterator, UErrorCode &status) const; +#endif /* U_HIDE_DRAFT_API */ + +#ifndef U_HIDE_DRAFT_API + /** + * Export the formatted number as a "numeric string" conforming to the + * syntax defined in the Decimal Arithmetic Specification, available at + * http://speleotrove.com/decimal + * + * This endpoint is useful for obtaining the exact number being printed + * after scaling and rounding have been applied by the number formatter. + * + * Example call site: + * + * auto decimalNumber = fn.toDecimalNumber(status); + * + * @tparam StringClass A string class compatible with StringByteSink; + * for example, std::string. + * @param status Set if an error occurs. + * @return A StringClass containing the numeric string. + * @draft ICU 65 + */ + template + inline StringClass toDecimalNumber(UErrorCode& status) const; +#endif // U_HIDE_DRAFT_API #ifndef U_HIDE_INTERNAL_API @@ -2550,6 +2582,9 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue { explicit FormattedNumber(UErrorCode errorCode) : fData(nullptr), fErrorCode(errorCode) {} + // TODO(ICU-20775): Propose this as API. + void toDecimalNumber(ByteSink& sink, UErrorCode& status) const; + // To give LocalizedNumberFormatter format methods access to this class's constructor: friend class LocalizedNumberFormatter; @@ -2557,10 +2592,21 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue { friend struct impl::UFormattedNumberImpl; }; +#ifndef U_HIDE_DRAFT_API +// Note: This is draft ICU 65 +template +StringClass FormattedNumber::toDecimalNumber(UErrorCode& status) const { + StringClass result; + StringByteSink sink(&result); + toDecimalNumber(sink, status); + return result; +}; +#endif // U_HIDE_DRAFT_API + /** * See the main description in numberformatter.h for documentation and examples. * - * @draft ICU 60 + * @stable ICU 60 */ class U_I18N_API NumberFormatter final { public: @@ -2569,7 +2615,7 @@ class U_I18N_API NumberFormatter final { * the call site. * * @return An {@link UnlocalizedNumberFormatter}, to be used for chaining. - * @draft ICU 60 + * @stable ICU 60 */ static UnlocalizedNumberFormatter with(); @@ -2580,7 +2626,7 @@ class U_I18N_API NumberFormatter final { * @param locale * The locale from which to load formats and symbols for number formatting. * @return A {@link LocalizedNumberFormatter}, to be used for chaining. - * @draft ICU 60 + * @stable ICU 60 */ static LocalizedNumberFormatter withLocale(const Locale &locale); @@ -2596,10 +2642,11 @@ class U_I18N_API NumberFormatter final { * @param status * Set to U_NUMBER_SKELETON_SYNTAX_ERROR if the skeleton was invalid. * @return An UnlocalizedNumberFormatter, to be used for chaining. - * @draft ICU 62 + * @stable ICU 62 */ static UnlocalizedNumberFormatter forSkeleton(const UnicodeString& skeleton, UErrorCode& status); +#ifndef U_HIDE_DRAFT_API /** * Call this method at the beginning of a NumberFormatter fluent chain to create an instance based * on a given number skeleton string. @@ -2619,6 +2666,7 @@ class U_I18N_API NumberFormatter final { */ static UnlocalizedNumberFormatter forSkeleton(const UnicodeString& skeleton, UParseError& perror, UErrorCode& status); +#endif /** * Use factory methods instead of the constructor to create a NumberFormatter. @@ -2629,8 +2677,9 @@ class U_I18N_API NumberFormatter final { } // namespace number U_NAMESPACE_END -#endif // U_HIDE_DRAFT_API +#endif /* #if !UCONFIG_NO_FORMATTING */ + +#endif /* U_SHOW_CPLUSPLUS_API */ #endif // __NUMBERFORMATTER_H__ -#endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/i18n/unicode/numberrangeformatter.h b/source/i18n/unicode/numberrangeformatter.h index a67ee72..0f0d2af 100644 --- a/source/i18n/unicode/numberrangeformatter.h +++ b/source/i18n/unicode/numberrangeformatter.h @@ -1,10 +1,15 @@ // © 2018 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -#if !UCONFIG_NO_FORMATTING #ifndef __NUMBERRANGEFORMATTER_H__ #define __NUMBERRANGEFORMATTER_H__ +#include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + +#if !UCONFIG_NO_FORMATTING + #include #include "unicode/appendable.h" #include "unicode/fieldpos.h" @@ -12,8 +17,6 @@ #include "unicode/fpositer.h" #include "unicode/numberformatter.h" -#ifndef U_HIDE_DRAFT_API - /** * \file * \brief C++ API: Library for localized formatting of number, currency, and unit ranges. @@ -44,7 +47,7 @@ /** * Defines how to merge fields that are identical across the range sign. * - * @draft ICU 63 + * @stable ICU 63 */ typedef enum UNumberRangeCollapse { /** @@ -53,14 +56,14 @@ typedef enum UNumberRangeCollapse { * * The heuristics used for this option are subject to change over time. * - * @draft ICU 63 + * @stable ICU 63 */ UNUM_RANGE_COLLAPSE_AUTO, /** * Do not collapse any part of the number. Example: "3.2 thousand kilograms – 5.3 thousand kilograms" * - * @draft ICU 63 + * @stable ICU 63 */ UNUM_RANGE_COLLAPSE_NONE, @@ -68,7 +71,7 @@ typedef enum UNumberRangeCollapse { * Collapse the unit part of the number, but not the notation, if present. Example: "3.2 thousand – 5.3 thousand * kilograms" * - * @draft ICU 63 + * @stable ICU 63 */ UNUM_RANGE_COLLAPSE_UNIT, @@ -76,7 +79,7 @@ typedef enum UNumberRangeCollapse { * Collapse any field that is equal across the range sign. May introduce ambiguity on the magnitude of the * number. Example: "3.2 – 5.3 thousand kilograms" * - * @draft ICU 63 + * @stable ICU 63 */ UNUM_RANGE_COLLAPSE_ALL } UNumberRangeCollapse; @@ -85,14 +88,14 @@ typedef enum UNumberRangeCollapse { * Defines the behavior when the two numbers in the range are identical after rounding. To programmatically detect * when the identity fallback is used, compare the lower and upper BigDecimals via FormattedNumber. * - * @draft ICU 63 + * @stable ICU 63 * @see NumberRangeFormatter */ typedef enum UNumberRangeIdentityFallback { /** * Show the number as a single value rather than a range. Example: "$5" * - * @draft ICU 63 + * @stable ICU 63 */ UNUM_IDENTITY_FALLBACK_SINGLE_VALUE, @@ -100,7 +103,7 @@ typedef enum UNumberRangeIdentityFallback { * Show the number using a locale-sensitive approximation pattern. If the numbers were the same before rounding, * show the single value. Example: "~$5" or "$5" * - * @draft ICU 63 + * @stable ICU 63 */ UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUE, @@ -108,7 +111,7 @@ typedef enum UNumberRangeIdentityFallback { * Show the number using a locale-sensitive approximation pattern. Use the range pattern always, even if the * inputs are the same. Example: "~$5" * - * @draft ICU 63 + * @stable ICU 63 */ UNUM_IDENTITY_FALLBACK_APPROXIMATELY, @@ -116,7 +119,7 @@ typedef enum UNumberRangeIdentityFallback { * Show the number as the range of two equal values. Use the range pattern always, even if the inputs are the * same. Example (with RangeCollapse.NONE): "$5 – $5" * - * @draft ICU 63 + * @stable ICU 63 */ UNUM_IDENTITY_FALLBACK_RANGE } UNumberRangeIdentityFallback; @@ -125,14 +128,14 @@ typedef enum UNumberRangeIdentityFallback { * Used in the result class FormattedNumberRange to indicate to the user whether the numbers formatted in the range * were equal or not, and whether or not the identity fallback was applied. * - * @draft ICU 63 + * @stable ICU 63 * @see NumberRangeFormatter */ typedef enum UNumberRangeIdentityResult { /** * Used to indicate that the two numbers in the range were equal, even before any rounding rules were applied. * - * @draft ICU 63 + * @stable ICU 63 * @see NumberRangeFormatter */ UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDING, @@ -140,7 +143,7 @@ typedef enum UNumberRangeIdentityResult { /** * Used to indicate that the two numbers in the range were equal, but only after rounding rules were applied. * - * @draft ICU 63 + * @stable ICU 63 * @see NumberRangeFormatter */ UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDING, @@ -148,7 +151,7 @@ typedef enum UNumberRangeIdentityResult { /** * Used to indicate that the two numbers in the range were not equal, even after rounding rules were applied. * - * @draft ICU 63 + * @stable ICU 63 * @see NumberRangeFormatter */ UNUM_IDENTITY_RESULT_NOT_EQUAL, @@ -254,7 +257,7 @@ class U_I18N_API NumberRangeFormatterSettings { * @param formatter * The formatter to use for both numbers in the range. * @return The fluent chain. - * @draft ICU 63 + * @stable ICU 63 */ Derived numberFormatterBoth(const UnlocalizedNumberFormatter &formatter) const &; @@ -265,7 +268,7 @@ class U_I18N_API NumberRangeFormatterSettings { * The formatter to use for both numbers in the range. * @return The fluent chain. * @see #numberFormatterBoth - * @draft ICU 63 + * @stable ICU 63 */ Derived numberFormatterBoth(const UnlocalizedNumberFormatter &formatter) &&; @@ -276,7 +279,7 @@ class U_I18N_API NumberRangeFormatterSettings { * The formatter to use for both numbers in the range. * @return The fluent chain. * @see #numberFormatterBoth - * @draft ICU 63 + * @stable ICU 63 */ Derived numberFormatterBoth(UnlocalizedNumberFormatter &&formatter) const &; @@ -287,7 +290,7 @@ class U_I18N_API NumberRangeFormatterSettings { * The formatter to use for both numbers in the range. * @return The fluent chain. * @see #numberFormatterBoth - * @draft ICU 63 + * @stable ICU 63 */ Derived numberFormatterBoth(UnlocalizedNumberFormatter &&formatter) &&; @@ -300,7 +303,7 @@ class U_I18N_API NumberRangeFormatterSettings { * @param formatterFirst * The formatter to use for the first number in the range. * @return The fluent chain. - * @draft ICU 63 + * @stable ICU 63 */ Derived numberFormatterFirst(const UnlocalizedNumberFormatter &formatterFirst) const &; @@ -311,7 +314,7 @@ class U_I18N_API NumberRangeFormatterSettings { * The formatter to use for the first number in the range. * @return The fluent chain. * @see #numberFormatterFirst - * @draft ICU 63 + * @stable ICU 63 */ Derived numberFormatterFirst(const UnlocalizedNumberFormatter &formatterFirst) &&; @@ -322,7 +325,7 @@ class U_I18N_API NumberRangeFormatterSettings { * The formatter to use for the first number in the range. * @return The fluent chain. * @see #numberFormatterFirst - * @draft ICU 63 + * @stable ICU 63 */ Derived numberFormatterFirst(UnlocalizedNumberFormatter &&formatterFirst) const &; @@ -333,7 +336,7 @@ class U_I18N_API NumberRangeFormatterSettings { * The formatter to use for the first number in the range. * @return The fluent chain. * @see #numberFormatterFirst - * @draft ICU 63 + * @stable ICU 63 */ Derived numberFormatterFirst(UnlocalizedNumberFormatter &&formatterFirst) &&; @@ -346,7 +349,7 @@ class U_I18N_API NumberRangeFormatterSettings { * @param formatterSecond * The formatter to use for the second number in the range. * @return The fluent chain. - * @draft ICU 63 + * @stable ICU 63 */ Derived numberFormatterSecond(const UnlocalizedNumberFormatter &formatterSecond) const &; @@ -357,7 +360,7 @@ class U_I18N_API NumberRangeFormatterSettings { * The formatter to use for the second number in the range. * @return The fluent chain. * @see #numberFormatterSecond - * @draft ICU 63 + * @stable ICU 63 */ Derived numberFormatterSecond(const UnlocalizedNumberFormatter &formatterSecond) &&; @@ -368,7 +371,7 @@ class U_I18N_API NumberRangeFormatterSettings { * The formatter to use for the second number in the range. * @return The fluent chain. * @see #numberFormatterSecond - * @draft ICU 63 + * @stable ICU 63 */ Derived numberFormatterSecond(UnlocalizedNumberFormatter &&formatterSecond) const &; @@ -379,7 +382,7 @@ class U_I18N_API NumberRangeFormatterSettings { * The formatter to use for the second number in the range. * @return The fluent chain. * @see #numberFormatterSecond - * @draft ICU 63 + * @stable ICU 63 */ Derived numberFormatterSecond(UnlocalizedNumberFormatter &&formatterSecond) &&; @@ -398,7 +401,7 @@ class U_I18N_API NumberRangeFormatterSettings { * @param collapse * The collapsing strategy to use for this range. * @return The fluent chain. - * @draft ICU 63 + * @stable ICU 63 */ Derived collapse(UNumberRangeCollapse collapse) const &; @@ -409,7 +412,7 @@ class U_I18N_API NumberRangeFormatterSettings { * The collapsing strategy to use for this range. * @return The fluent chain. * @see #collapse - * @draft ICU 63 + * @stable ICU 63 */ Derived collapse(UNumberRangeCollapse collapse) &&; @@ -431,7 +434,7 @@ class U_I18N_API NumberRangeFormatterSettings { * @param identityFallback * The strategy to use when formatting two numbers that end up being the same. * @return The fluent chain. - * @draft ICU 63 + * @stable ICU 63 */ Derived identityFallback(UNumberRangeIdentityFallback identityFallback) const &; @@ -442,10 +445,11 @@ class U_I18N_API NumberRangeFormatterSettings { * The strategy to use when formatting two numbers that end up being the same. * @return The fluent chain. * @see #identityFallback - * @draft ICU 63 + * @stable ICU 63 */ Derived identityFallback(UNumberRangeIdentityFallback identityFallback) &&; +#ifndef U_HIDE_DRAFT_API /** * Returns the current (Un)LocalizedNumberRangeFormatter as a LocalPointer * wrapping a heap-allocated copy of the current object. @@ -467,12 +471,13 @@ class U_I18N_API NumberRangeFormatterSettings { * @draft ICU 64 */ LocalPointer clone() &&; +#endif /* U_HIDE_DRAFT_API */ /** * Sets the UErrorCode if an error occurred in the fluent chain. * Preserves older error codes in the outErrorCode. * @return TRUE if U_FAILURE(outErrorCode) - * @draft ICU 63 + * @stable ICU 63 */ UBool copyErrorTo(UErrorCode &outErrorCode) const { if (U_FAILURE(outErrorCode)) { @@ -501,7 +506,7 @@ class U_I18N_API NumberRangeFormatterSettings { * Instances of this class are immutable and thread-safe. * * @see NumberRangeFormatter - * @draft ICU 63 + * @stable ICU 63 */ class U_I18N_API UnlocalizedNumberRangeFormatter : public NumberRangeFormatterSettings, public UMemory { @@ -514,7 +519,7 @@ class U_I18N_API UnlocalizedNumberRangeFormatter * @param locale * The locale to use when loading data for number formatting. * @return The fluent chain. - * @draft ICU 63 + * @stable ICU 63 */ LocalizedNumberRangeFormatter locale(const icu::Locale &locale) const &; @@ -525,40 +530,40 @@ class U_I18N_API UnlocalizedNumberRangeFormatter * The locale to use when loading data for number formatting. * @return The fluent chain. * @see #locale - * @draft ICU 63 + * @stable ICU 63 */ LocalizedNumberRangeFormatter locale(const icu::Locale &locale) &&; /** * Default constructor: puts the formatter into a valid but undefined state. * - * @draft ICU 63 + * @stable ICU 63 */ UnlocalizedNumberRangeFormatter() = default; /** * Returns a copy of this UnlocalizedNumberRangeFormatter. - * @draft ICU 63 + * @stable ICU 63 */ UnlocalizedNumberRangeFormatter(const UnlocalizedNumberRangeFormatter &other); /** * Move constructor: * The source UnlocalizedNumberRangeFormatter will be left in a valid but undefined state. - * @draft ICU 63 + * @stable ICU 63 */ UnlocalizedNumberRangeFormatter(UnlocalizedNumberRangeFormatter&& src) U_NOEXCEPT; /** * Copy assignment operator. - * @draft ICU 63 + * @stable ICU 63 */ UnlocalizedNumberRangeFormatter& operator=(const UnlocalizedNumberRangeFormatter& other); /** * Move assignment operator: * The source UnlocalizedNumberRangeFormatter will be left in a valid but undefined state. - * @draft ICU 63 + * @stable ICU 63 */ UnlocalizedNumberRangeFormatter& operator=(UnlocalizedNumberRangeFormatter&& src) U_NOEXCEPT; @@ -582,7 +587,7 @@ class U_I18N_API UnlocalizedNumberRangeFormatter * Instances of this class are immutable and thread-safe. * * @see NumberFormatter - * @draft ICU 63 + * @stable ICU 63 */ class U_I18N_API LocalizedNumberRangeFormatter : public NumberRangeFormatterSettings, public UMemory { @@ -598,7 +603,7 @@ class U_I18N_API LocalizedNumberRangeFormatter * @param status * Set if an error occurs while formatting. * @return A FormattedNumberRange object; call .toString() to get the string. - * @draft ICU 63 + * @stable ICU 63 */ FormattedNumberRange formatFormattableRange( const Formattable& first, const Formattable& second, UErrorCode& status) const; @@ -606,33 +611,33 @@ class U_I18N_API LocalizedNumberRangeFormatter /** * Default constructor: puts the formatter into a valid but undefined state. * - * @draft ICU 63 + * @stable ICU 63 */ LocalizedNumberRangeFormatter() = default; /** * Returns a copy of this LocalizedNumberRangeFormatter. - * @draft ICU 63 + * @stable ICU 63 */ LocalizedNumberRangeFormatter(const LocalizedNumberRangeFormatter &other); /** * Move constructor: * The source LocalizedNumberRangeFormatter will be left in a valid but undefined state. - * @draft ICU 63 + * @stable ICU 63 */ LocalizedNumberRangeFormatter(LocalizedNumberRangeFormatter&& src) U_NOEXCEPT; /** * Copy assignment operator. - * @draft ICU 63 + * @stable ICU 63 */ LocalizedNumberRangeFormatter& operator=(const LocalizedNumberRangeFormatter& other); /** * Move assignment operator: * The source LocalizedNumberRangeFormatter will be left in a valid but undefined state. - * @draft ICU 63 + * @stable ICU 63 */ LocalizedNumberRangeFormatter& operator=(LocalizedNumberRangeFormatter&& src) U_NOEXCEPT; @@ -651,11 +656,11 @@ class U_I18N_API LocalizedNumberRangeFormatter void formatImpl(impl::UFormattedNumberRangeData& results, bool equalBeforeRounding, UErrorCode& status) const; -#endif +#endif /* U_HIDE_INTERNAL_API */ /** * Destruct this LocalizedNumberRangeFormatter, cleaning up any memory it might own. - * @draft ICU 63 + * @stable ICU 63 */ ~LocalizedNumberRangeFormatter(); @@ -690,7 +695,7 @@ class U_I18N_API LocalizedNumberRangeFormatter * * Instances of this class are immutable and thread-safe. * - * @draft ICU 63 + * @stable ICU 63 */ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue { public: @@ -700,7 +705,7 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue { * * For more information, see FormattedValue::toString() * - * @draft ICU 63 + * @stable ICU 63 */ UnicodeString toString(UErrorCode& status) const U_OVERRIDE; @@ -714,7 +719,7 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue { * * For more information, see FormattedValue::appendTo() * - * @draft ICU 63 + * @stable ICU 63 */ Appendable &appendTo(Appendable &appendable, UErrorCode& status) const U_OVERRIDE; @@ -722,6 +727,7 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue { /** @copydoc FormattedValue::nextPosition() */ UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE; +#ifndef U_HIDE_DRAFT_API /** * Determines the start (inclusive) and end (exclusive) indices of the next occurrence of the given * field in the output string. This allows you to determine the locations of, for example, @@ -799,6 +805,7 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue { * @see #getFirstDecimal */ UnicodeString getSecondDecimal(UErrorCode& status) const; +#endif // U_HIDE_DRAFT_API /** * Returns whether the pair of numbers was successfully formatted as a range or whether an identity fallback was @@ -806,7 +813,7 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue { * identity fallback was used. * * @return An indication the resulting identity situation in the formatted number range. - * @draft ICU 63 + * @stable ICU 63 * @see UNumberRangeIdentityFallback */ UNumberRangeIdentityResult getIdentityResult(UErrorCode& status) const; @@ -824,20 +831,20 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue { /** * Move constructor: * Leaves the source FormattedNumberRange in an undefined state. - * @draft ICU 63 + * @stable ICU 63 */ FormattedNumberRange(FormattedNumberRange&& src) U_NOEXCEPT; /** * Move assignment: * Leaves the source FormattedNumberRange in an undefined state. - * @draft ICU 63 + * @stable ICU 63 */ FormattedNumberRange& operator=(FormattedNumberRange&& src) U_NOEXCEPT; /** * Destruct an instance of FormattedNumberRange, cleaning up any memory it might own. - * @draft ICU 63 + * @stable ICU 63 */ ~FormattedNumberRange(); @@ -850,7 +857,6 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue { /** * Internal constructor from data type. Adopts the data pointer. - * @internal */ explicit FormattedNumberRange(impl::UFormattedNumberRangeData *results) : fData(results), fErrorCode(U_ZERO_ERROR) {} @@ -867,7 +873,7 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue { /** * See the main description in numberrangeformatter.h for documentation and examples. * - * @draft ICU 63 + * @stable ICU 63 */ class U_I18N_API NumberRangeFormatter final { public: @@ -876,7 +882,7 @@ class U_I18N_API NumberRangeFormatter final { * known at the call site. * * @return An {@link UnlocalizedNumberRangeFormatter}, to be used for chaining. - * @draft ICU 63 + * @stable ICU 63 */ static UnlocalizedNumberRangeFormatter with(); @@ -887,7 +893,7 @@ class U_I18N_API NumberRangeFormatter final { * @param locale * The locale from which to load formats and symbols for number range formatting. * @return A {@link LocalizedNumberRangeFormatter}, to be used for chaining. - * @draft ICU 63 + * @stable ICU 63 */ static LocalizedNumberRangeFormatter withLocale(const Locale &locale); @@ -900,8 +906,9 @@ class U_I18N_API NumberRangeFormatter final { } // namespace number U_NAMESPACE_END -#endif // U_HIDE_DRAFT_API +#endif /* #if !UCONFIG_NO_FORMATTING */ + +#endif /* U_SHOW_CPLUSPLUS_API */ #endif // __NUMBERRANGEFORMATTER_H__ -#endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/i18n/unicode/numfmt.h b/source/i18n/unicode/numfmt.h index ba2b7d1..722e6b7 100644 --- a/source/i18n/unicode/numfmt.h +++ b/source/i18n/unicode/numfmt.h @@ -26,6 +26,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Compatibility APIs for number formatting. @@ -261,6 +263,14 @@ public: virtual ~NumberFormat(); /** + * Clones this object polymorphically. + * The caller owns the result and should delete it when done. + * @return clone, or nullptr if an error occurred + * @stable ICU 2.0 + */ + virtual NumberFormat* clone() const = 0; + + /** * Return true if the given Format objects are semantically equal. * Objects of different subclasses are considered unequal. * @return true if the given Format objects are semantically equal. @@ -639,7 +649,9 @@ public: * @param result Formattable to be set to the parse result. * If parse fails, return contents are undefined. * @param status Output parameter set to a failure error code - * when a failure occurs. + * when a failure occurs. The error code when the + * string fails to parse is U_INVALID_FORMAT_ERROR, + * unless overridden by a subclass. * @see NumberFormat::isParseIntegerOnly * @stable ICU 2.0 */ @@ -1255,5 +1267,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _NUMFMT //eof diff --git a/source/i18n/unicode/numsys.h b/source/i18n/unicode/numsys.h index 0ced6f4..b2b16fa 100644 --- a/source/i18n/unicode/numsys.h +++ b/source/i18n/unicode/numsys.h @@ -20,6 +20,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: NumberingSystem object @@ -210,5 +212,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _NUMSYS //eof diff --git a/source/i18n/unicode/plurfmt.h b/source/i18n/unicode/plurfmt.h index cb901b0..2c21165 100644 --- a/source/i18n/unicode/plurfmt.h +++ b/source/i18n/unicode/plurfmt.h @@ -16,6 +16,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: PluralFormat object @@ -448,7 +450,7 @@ public: * result and should delete it when done. * @stable ICU 4.0 */ - virtual Format* clone(void) const; + virtual PluralFormat* clone() const; /** * Formats a plural message for a number taken from a Formattable object. @@ -522,7 +524,7 @@ public: private: /** - * @internal + * @internal (private) */ class U_I18N_API PluralSelector : public UMemory { public: @@ -534,14 +536,11 @@ private: * @param number The number to be plural-formatted. * @param ec Error code. * @return The selected PluralFormat keyword. - * @internal + * @internal (private) */ virtual UnicodeString select(void *context, double number, UErrorCode& ec) const = 0; }; - /** - * @internal - */ class U_I18N_API PluralSelectorAdapter : public PluralSelector { public: PluralSelectorAdapter() : pluralRules(NULL) { @@ -549,7 +548,7 @@ private: virtual ~PluralSelectorAdapter(); - virtual UnicodeString select(void *context, double number, UErrorCode& /*ec*/) const; /**< @internal */ + virtual UnicodeString select(void *context, double number, UErrorCode& /*ec*/) const; void reset(); @@ -573,7 +572,7 @@ private: UnicodeString& format(const Formattable& numberObject, double number, UnicodeString& appendTo, FieldPosition& pos, - UErrorCode& status) const; /**< @internal */ + UErrorCode& status) const; /** * Finds the PluralFormat sub-message for the given number, or the "other" sub-message. @@ -601,5 +600,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _PLURFMT //eof diff --git a/source/i18n/unicode/plurrule.h b/source/i18n/unicode/plurrule.h index 04bf397..a155356 100644 --- a/source/i18n/unicode/plurrule.h +++ b/source/i18n/unicode/plurrule.h @@ -20,6 +20,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: PluralRules object @@ -533,5 +535,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _PLURRULE //eof diff --git a/source/i18n/unicode/rbnf.h b/source/i18n/unicode/rbnf.h index d6ba523..62b0232 100644 --- a/source/i18n/unicode/rbnf.h +++ b/source/i18n/unicode/rbnf.h @@ -12,6 +12,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Rule Based Number Format @@ -696,7 +698,7 @@ public: * @return A copy of the object. * @stable ICU 2.6 */ - virtual Format* clone(void) const; + virtual RuleBasedNumberFormat* clone() const; /** * Return true if the given Format objects are semantically equal. @@ -877,28 +879,6 @@ protected: * @param number The number, a DigitList format Decimal Floating Point. * @param appendTo Output parameter to receive result. * Result is appended to existing contents. - * @param posIter On return, can be used to iterate over positions - * of fields generated by this format call. - * @param status Output param filled with success/failure status. - * @return Reference to 'appendTo' parameter. - * @internal - */ - virtual UnicodeString& format(const number::impl::DecimalQuantity &number, - UnicodeString& appendTo, - FieldPositionIterator* posIter, - UErrorCode& status) const; - - /** - * Format a decimal number. - * The number is a DigitList wrapper onto a floating point decimal number. - * The default implementation in NumberFormat converts the decimal number - * to a double and formats that. Subclasses of NumberFormat that want - * to specifically handle big decimal numbers must override this method. - * class DecimalFormat does so. - * - * @param number The number, a DigitList format Decimal Floating Point. - * @param appendTo Output parameter to receive result. - * Result is appended to existing contents. * @param pos On input: an alignment field, if desired. * On output: the offsets of the alignment field. * @param status Output param filled with success/failure status. @@ -1135,5 +1115,7 @@ U_NAMESPACE_END /* U_HAVE_RBNF */ #endif +#endif /* U_SHOW_CPLUSPLUS_API */ + /* RBNF_H */ #endif diff --git a/source/i18n/unicode/rbtz.h b/source/i18n/unicode/rbtz.h index 6d652f6..d66e1f0 100644 --- a/source/i18n/unicode/rbtz.h +++ b/source/i18n/unicode/rbtz.h @@ -11,6 +11,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Rule based customizable time zone @@ -121,7 +123,7 @@ public: * @return A new copy of this TimeZone object. * @stable ICU 3.8 */ - virtual TimeZone* clone(void) const; + virtual RuleBasedTimeZone* clone() const; /** * Returns the TimeZone's adjusted GMT offset (i.e., the number of milliseconds to add @@ -224,6 +226,7 @@ public: */ virtual UBool useDaylightTime(void) const; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Queries if the given date is in daylight savings time in * this time zone. @@ -238,6 +241,7 @@ public: * @deprecated ICU 2.4. Use Calendar::inDaylightTime() instead. */ virtual UBool inDaylightTime(UDate date, UErrorCode& status) const; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Returns true if this zone has the same rule and offset as another zone. @@ -359,6 +363,8 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // RBTZ_H //eof diff --git a/source/i18n/unicode/regex.h b/source/i18n/unicode/regex.h index 07c5927..69fb7ec 100644 --- a/source/i18n/unicode/regex.h +++ b/source/i18n/unicode/regex.h @@ -44,6 +44,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_REGULAR_EXPRESSIONS #include "unicode/uobject.h" @@ -1876,4 +1878,7 @@ private: U_NAMESPACE_END #endif // UCONFIG_NO_REGULAR_EXPRESSIONS + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/i18n/unicode/region.h b/source/i18n/unicode/region.h index 4014025..9ec8dd4 100644 --- a/source/i18n/unicode/region.h +++ b/source/i18n/unicode/region.h @@ -16,10 +16,12 @@ */ #include "unicode/utypes.h" -#include "unicode/uregion.h" + +#if U_SHOW_CPLUSPLUS_API #if !UCONFIG_NO_FORMATTING +#include "unicode/uregion.h" #include "unicode/uobject.h" #include "unicode/uniset.h" #include "unicode/unistr.h" @@ -219,6 +221,9 @@ private: U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // REGION_H //eof diff --git a/source/i18n/unicode/reldatefmt.h b/source/i18n/unicode/reldatefmt.h index 16ae91a..044465b 100644 --- a/source/i18n/unicode/reldatefmt.h +++ b/source/i18n/unicode/reldatefmt.h @@ -15,6 +15,9 @@ #define __RELDATEFMT_H #include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/uobject.h" #include "unicode/udisplaycontext.h" #include "unicode/ureldatefmt.h" @@ -166,12 +169,24 @@ typedef enum UDateAbsoluteUnit { */ UDAT_ABSOLUTE_NOW, -#ifndef U_HIDE_DRAFT_API /** * Quarter - * @draft ICU 63 + * @stable ICU 63 */ UDAT_ABSOLUTE_QUARTER, + +#ifndef U_HIDE_DRAFT_API + /** + * Hour + * @draft ICU 65 + */ + UDAT_ABSOLUTE_HOUR, + + /** + * Minute + * @draft ICU 65 + */ + UDAT_ABSOLUTE_MINUTE, #endif // U_HIDE_DRAFT_API #ifndef U_HIDE_DEPRECATED_API @@ -179,7 +194,7 @@ typedef enum UDateAbsoluteUnit { * One more than the highest normal UDateAbsoluteUnit value. * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420. */ - UDAT_ABSOLUTE_UNIT_COUNT = UDAT_ABSOLUTE_NOW + 2 + UDAT_ABSOLUTE_UNIT_COUNT = UDAT_ABSOLUTE_NOW + 4 #endif // U_HIDE_DEPRECATED_API } UDateAbsoluteUnit; @@ -246,6 +261,7 @@ class SharedPluralRules; class SharedBreakIterator; class NumberFormat; class UnicodeString; +class FormattedRelativeDateTime; class FormattedRelativeDateTimeData; #ifndef U_HIDE_DRAFT_API @@ -743,4 +759,7 @@ U_NAMESPACE_END #endif /* !UCONFIG_NO_BREAK_ITERATION */ #endif /* !UCONFIG_NO_FORMATTING */ + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif /* __RELDATEFMT_H */ diff --git a/source/i18n/unicode/scientificnumberformatter.h b/source/i18n/unicode/scientificnumberformatter.h index 6c34d2c..7f860d4 100644 --- a/source/i18n/unicode/scientificnumberformatter.h +++ b/source/i18n/unicode/scientificnumberformatter.h @@ -11,6 +11,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING @@ -157,7 +159,7 @@ public: class U_I18N_API SuperscriptStyle : public Style { public: - virtual Style *clone() const; + virtual SuperscriptStyle *clone() const; protected: virtual UnicodeString &format( const UnicodeString &original, @@ -175,7 +177,7 @@ public: : Style(), fBeginMarkup(beginMarkup), fEndMarkup(endMarkup) { } - virtual Style *clone() const; + virtual MarkupStyle *clone() const; protected: virtual UnicodeString &format( const UnicodeString &original, @@ -214,4 +216,7 @@ U_NAMESPACE_END #endif /* !UCONFIG_NO_FORMATTING */ + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/i18n/unicode/search.h b/source/i18n/unicode/search.h index 65f7f10..2865366 100644 --- a/source/i18n/unicode/search.h +++ b/source/i18n/unicode/search.h @@ -14,6 +14,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: SearchIterator object. @@ -70,8 +72,7 @@ U_NAMESPACE_BEGIN * UErrorCode error = U_ZERO_ERROR; * for (int pos = iter->first(error); pos != USEARCH_DONE; * pos = iter->next(error)) { - * printf("Found match at %d pos, length is %d\n", pos, - * iter.getMatchLength()); + * printf("Found match at %d pos, length is %d\n", pos, iter.getMatchedLength()); * } * * @@ -573,5 +574,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_COLLATION */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/i18n/unicode/selfmt.h b/source/i18n/unicode/selfmt.h index 08e9d44..9b98f6d 100755 --- a/source/i18n/unicode/selfmt.h +++ b/source/i18n/unicode/selfmt.h @@ -18,9 +18,12 @@ #ifndef SELFMT #define SELFMT +#include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/messagepattern.h" #include "unicode/numfmt.h" -#include "unicode/utypes.h" /** * \file @@ -272,7 +275,7 @@ public: * result and should delete it when done. * @stable ICU 4.4 */ - virtual Format* clone(void) const; + virtual SelectFormat* clone() const; /** * Format an object to produce a string. @@ -365,5 +368,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _SELFMT //eof diff --git a/source/i18n/unicode/simpletz.h b/source/i18n/unicode/simpletz.h index 3ae0807..980a1b8 100644 --- a/source/i18n/unicode/simpletz.h +++ b/source/i18n/unicode/simpletz.h @@ -28,6 +28,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: SimpleTimeZone is a concrete subclass of TimeZone. @@ -672,6 +674,7 @@ public: */ virtual UBool useDaylightTime(void) const; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Returns true if the given date is within the period when daylight savings time * is in effect; false otherwise. If the TimeZone doesn't observe daylight savings @@ -687,6 +690,7 @@ public: * @deprecated ICU 2.4. Use Calendar::inDaylightTime() instead. */ virtual UBool inDaylightTime(UDate date, UErrorCode& status) const; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Return true if this zone has the same rules and offset as another zone. @@ -703,7 +707,7 @@ public: * @return A new copy of this TimeZone object. * @stable ICU 2.0 */ - virtual TimeZone* clone(void) const; + virtual SimpleTimeZone* clone() const; /** * Gets the first time zone transition after the base time. @@ -929,4 +933,6 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _SIMPLETZ diff --git a/source/i18n/unicode/smpdtfmt.h b/source/i18n/unicode/smpdtfmt.h index a015c5b..79fa817 100644 --- a/source/i18n/unicode/smpdtfmt.h +++ b/source/i18n/unicode/smpdtfmt.h @@ -28,6 +28,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Format and parse dates in a language-independent manner. @@ -865,7 +867,7 @@ public: * @return A copy of the object. * @stable ICU 2.0 */ - virtual Format* clone(void) const; + virtual SimpleDateFormat* clone() const; /** * Return true if the given Format objects are semantically equal. Objects @@ -1643,7 +1645,7 @@ private: UBool fHaveDefaultCentury; - BreakIterator* fCapitalizationBrkIter; + const BreakIterator* fCapitalizationBrkIter; }; inline UDate @@ -1656,5 +1658,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // _SMPDTFMT //eof diff --git a/source/i18n/unicode/sortkey.h b/source/i18n/unicode/sortkey.h index 1f42460..34ed7ee 100644 --- a/source/i18n/unicode/sortkey.h +++ b/source/i18n/unicode/sortkey.h @@ -25,6 +25,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Keys for comparing strings multiple times. @@ -337,4 +339,6 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_COLLATION */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/i18n/unicode/stsearch.h b/source/i18n/unicode/stsearch.h index 57b5b32..fcb5dbf 100644 --- a/source/i18n/unicode/stsearch.h +++ b/source/i18n/unicode/stsearch.h @@ -14,6 +14,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Service for searching text based on RuleBasedCollator. @@ -119,8 +121,7 @@ U_NAMESPACE_BEGIN * pos != USEARCH_DONE; * pos = iter.next(error)) * { - * printf("Found match at %d pos, length is %d\n", pos, - * iter.getMatchLength()); + * printf("Found match at %d pos, length is %d\n", pos, iter.getMatchedLength()); * } * *

    @@ -412,7 +413,7 @@ public: * @return cloned object * @stable ICU 2.0 */ - virtual SearchIterator * safeClone(void) const; + virtual StringSearch * safeClone() const; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. @@ -502,5 +503,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_COLLATION */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/i18n/unicode/tblcoll.h b/source/i18n/unicode/tblcoll.h index 24ba213..f5dc135 100644 --- a/source/i18n/unicode/tblcoll.h +++ b/source/i18n/unicode/tblcoll.h @@ -64,6 +64,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_COLLATION #include "unicode/coll.h" @@ -228,7 +230,7 @@ public: * @return a copy of this object, owned by the caller * @stable ICU 2.0 */ - virtual Collator* clone(void) const; + virtual RuleBasedCollator* clone() const; /** * Creates a collation element iterator for the source string. The caller of @@ -389,6 +391,7 @@ public: */ virtual int32_t hashCode() const; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Gets the locale of the Collator * @param type can be either requested, valid or actual locale. For more @@ -400,6 +403,7 @@ public: * @deprecated ICU 2.8 likely to change in ICU 3.0, based on feedback */ virtual Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Gets the tailoring rules for this collator. @@ -545,6 +549,7 @@ public: */ virtual UColReorderCode getMaxVariable() const; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Sets the variable top to the primary weight of the specified string. * @@ -592,6 +597,7 @@ public: * @deprecated ICU 53 Call setMaxVariable() instead. */ virtual void setVariableTop(uint32_t varTop, UErrorCode &status); +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Gets the variable top value of a Collator. @@ -874,4 +880,7 @@ private: U_NAMESPACE_END #endif // !UCONFIG_NO_COLLATION + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // TBLCOLL_H diff --git a/source/i18n/unicode/timezone.h b/source/i18n/unicode/timezone.h index de558f9..433e3b5 100644 --- a/source/i18n/unicode/timezone.h +++ b/source/i18n/unicode/timezone.h @@ -31,6 +31,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: TimeZone object @@ -321,10 +323,6 @@ public: * zone is set to the default host time zone. This call adopts the TimeZone object * passed in; the client is no longer responsible for deleting it. * - *

    This function is not thread safe. It is an error for multiple threads - * to concurrently attempt to set the default time zone, or for any thread - * to attempt to reference the default zone while another thread is setting it. - * * @param zone A pointer to the new TimeZone object to use as the default. * @stable ICU 2.0 */ @@ -335,8 +333,6 @@ public: * Same as adoptDefault(), except that the TimeZone object passed in is NOT adopted; * the caller remains responsible for deleting it. * - *

    See the thread safety note under adoptDefault(). - * * @param zone The given timezone. * @system * @stable ICU 2.0 @@ -726,6 +722,7 @@ public: */ virtual UBool useDaylightTime(void) const = 0; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Queries if the given date is in daylight savings time in * this time zone. @@ -740,6 +737,7 @@ public: * @deprecated ICU 2.4. Use Calendar::inDaylightTime() instead. */ virtual UBool inDaylightTime(UDate date, UErrorCode& status) const = 0; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Returns true if this zone has the same rule and offset as another zone. @@ -758,7 +756,7 @@ public: * @return A new copy of this TimeZone object. * @stable ICU 2.0 */ - virtual TimeZone* clone(void) const = 0; + virtual TimeZone* clone() const = 0; /** * Return the class ID for this class. This is useful only for @@ -972,5 +970,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif //_TIMEZONE //eof diff --git a/source/i18n/unicode/tmunit.h b/source/i18n/unicode/tmunit.h index fa59f10..2e949dd 100644 --- a/source/i18n/unicode/tmunit.h +++ b/source/i18n/unicode/tmunit.h @@ -16,6 +16,9 @@ * \brief C++ API: time unit object */ +#include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API #include "unicode/measunit.h" @@ -70,7 +73,7 @@ public: * Override clone. * @stable ICU 4.2 */ - virtual UObject* clone() const; + virtual TimeUnit* clone() const; /** * Copy operator. @@ -132,6 +135,8 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __TMUNIT_H__ //eof // diff --git a/source/i18n/unicode/tmutamt.h b/source/i18n/unicode/tmutamt.h index 274bfa6..8bcc684 100644 --- a/source/i18n/unicode/tmutamt.h +++ b/source/i18n/unicode/tmutamt.h @@ -16,11 +16,15 @@ * \brief C++ API: time unit amount object. */ -#include "unicode/measure.h" -#include "unicode/tmunit.h" +#include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API #if !UCONFIG_NO_FORMATTING +#include "unicode/measure.h" +#include "unicode/tmunit.h" + U_NAMESPACE_BEGIN @@ -83,7 +87,7 @@ public: * @return a polymorphic clone of this object. The result will have the same class as returned by getDynamicClassID(). * @stable ICU 4.2 */ - virtual UObject* clone() const; + virtual TimeUnitAmount* clone() const; /** @@ -165,6 +169,8 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __TMUTAMT_H__ //eof // diff --git a/source/i18n/unicode/tmutfmt.h b/source/i18n/unicode/tmutfmt.h index 8f24585..ad871f7 100644 --- a/source/i18n/unicode/tmutfmt.h +++ b/source/i18n/unicode/tmutfmt.h @@ -18,8 +18,9 @@ */ +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING -#ifndef U_HIDE_DEPRECATED_API #include "unicode/unistr.h" #include "unicode/tmunit.h" @@ -28,6 +29,7 @@ #include "unicode/numfmt.h" #include "unicode/plurrule.h" +#ifndef U_HIDE_DEPRECATED_API /** * Constants for various styles. @@ -124,7 +126,7 @@ public: * @return A copy of the object. * @deprecated ICU 53 */ - virtual Format* clone(void) const; + virtual TimeUnitFormat* clone() const; /** * Assignment operator @@ -244,5 +246,7 @@ U_NAMESPACE_END #endif /* U_HIDE_DEPRECATED_API */ #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // __TMUTFMT_H__ //eof diff --git a/source/i18n/unicode/translit.h b/source/i18n/unicode/translit.h index 6b48881..fe2568d 100644 --- a/source/i18n/unicode/translit.h +++ b/source/i18n/unicode/translit.h @@ -14,6 +14,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: Tranforms text from one format to another. @@ -1588,4 +1590,6 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_TRANSLITERATION */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/i18n/unicode/tzfmt.h b/source/i18n/unicode/tzfmt.h index d2aa768..6d3863b 100644 --- a/source/i18n/unicode/tzfmt.h +++ b/source/i18n/unicode/tzfmt.h @@ -16,6 +16,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING #include "unicode/format.h" @@ -305,7 +307,7 @@ public: * @return A copy of the object * @stable ICU 50 */ - virtual Format* clone() const; + virtual TimeZoneFormat* clone() const; /** * Creates an instance of TimeZoneFormat for the given locale. @@ -1094,4 +1096,7 @@ private: U_NAMESPACE_END #endif /* !UCONFIG_NO_FORMATTING */ + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/i18n/unicode/tznames.h b/source/i18n/unicode/tznames.h index 399265d..8604942 100644 --- a/source/i18n/unicode/tznames.h +++ b/source/i18n/unicode/tznames.h @@ -15,6 +15,8 @@ */ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING #include "unicode/uloc.h" @@ -411,4 +413,7 @@ public: U_NAMESPACE_END #endif + +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/i18n/unicode/tzrule.h b/source/i18n/unicode/tzrule.h index 1647fda..795806d 100644 --- a/source/i18n/unicode/tzrule.h +++ b/source/i18n/unicode/tzrule.h @@ -16,6 +16,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING #include "unicode/uobject.h" @@ -45,7 +47,7 @@ public: * @return A copy of the object. * @stable ICU 3.8 */ - virtual TimeZoneRule* clone(void) const = 0; + virtual TimeZoneRule* clone() const = 0; /** * Return true if the given TimeZoneRule objects are semantically equal. Objects @@ -229,7 +231,7 @@ public: * @return A copy of the object. * @stable ICU 3.8 */ - virtual InitialTimeZoneRule* clone(void) const; + virtual InitialTimeZoneRule* clone() const; /** * Assignment operator. @@ -440,7 +442,7 @@ public: * @return A copy of the object. * @stable ICU 3.8 */ - virtual AnnualTimeZoneRule* clone(void) const; + virtual AnnualTimeZoneRule* clone() const; /** * Assignment operator. @@ -656,7 +658,7 @@ public: * @return A copy of the object. * @stable ICU 3.8 */ - virtual TimeArrayTimeZoneRule* clone(void) const; + virtual TimeArrayTimeZoneRule* clone() const; /** * Assignment operator. @@ -825,6 +827,8 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // TZRULE_H //eof diff --git a/source/i18n/unicode/tztrans.h b/source/i18n/unicode/tztrans.h index a476c68..217d711 100644 --- a/source/i18n/unicode/tztrans.h +++ b/source/i18n/unicode/tztrans.h @@ -16,6 +16,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + #if !UCONFIG_NO_FORMATTING #include "unicode/uobject.h" @@ -68,7 +70,7 @@ public: * @return A copy of the object. * @stable ICU 3.8 */ - TimeZoneTransition* clone(void) const; + TimeZoneTransition* clone() const; /** * Assignment operator. @@ -192,6 +194,8 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // TZTRANS_H //eof diff --git a/source/i18n/unicode/ucal.h b/source/i18n/unicode/ucal.h index f31a257..c198450 100644 --- a/source/i18n/unicode/ucal.h +++ b/source/i18n/unicode/ucal.h @@ -441,11 +441,13 @@ enum UCalendarDateFields { /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API, * it is needed for layout of Calendar, DateFormat, and other objects */ +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * One more than the highest normal UCalendarDateFields value. * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420. */ - UCAL_FIELD_COUNT, + UCAL_FIELD_COUNT, +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Field number indicating the @@ -657,6 +659,42 @@ ucal_getDefaultTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec); U_STABLE void U_EXPORT2 ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec); +#ifndef U_HIDE_DRAFT_API + +/** + * Return the current host time zone. The host time zone is detected from + * the current host system configuration by querying the host operating + * system. If the host system detection routines fail, or if they specify + * a TimeZone or TimeZone offset which is not recognized, then the special + * TimeZone "Etc/Unknown" is returned. + * + * Note that host time zone and the ICU default time zone can be different. + * + * The ICU default time zone does not change once initialized unless modified + * by calling `ucal_setDefaultTimeZone()` or with the C++ TimeZone API, + * `TimeZone::adoptDefault(TimeZone*)`. + * + * If the host operating system configuration has changed since ICU has + * initialized then the returned value can be different than the ICU default + * time zone, even if the default has not changed. + * + *

    This function is not thread safe.

    + * + * @param result A buffer to receive the result, or NULL + * @param resultCapacity The capacity of the result buffer + * @param ec input/output error code + * @return The result string length, not including the terminating + * null + * + * @see #UCAL_UNKNOWN_ZONE_ID + * + * @draft ICU 65 + */ +U_DRAFT int32_t U_EXPORT2 +ucal_getHostTimeZone(UChar *result, int32_t resultCapacity, UErrorCode *ec); + +#endif // U_HIDE_DRAFT_API + /** * Return the amount of time in milliseconds that the clock is * advanced during daylight savings time for the given time zone, or diff --git a/source/i18n/unicode/ucol.h b/source/i18n/unicode/ucol.h index dbac48e..673af1c 100644 --- a/source/i18n/unicode/ucol.h +++ b/source/i18n/unicode/ucol.h @@ -344,11 +344,13 @@ typedef enum { /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API, * it is needed for layout of RuleBasedCollator object. */ +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * One more than the highest normal UColAttribute value. * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420. */ UCOL_ATTRIBUTE_COUNT +#endif // U_FORCE_HIDE_DEPRECATED_API } UColAttribute; /** Options for retrieving the rule string diff --git a/source/i18n/unicode/udat.h b/source/i18n/unicode/udat.h index c67a6d6..bdbd080 100644 --- a/source/i18n/unicode/udat.h +++ b/source/i18n/unicode/udat.h @@ -923,11 +923,13 @@ typedef enum UDateFormatBooleanAttribute { /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API, * it is needed for layout of DateFormat object. */ +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * One more than the highest normal UDateFormatBooleanAttribute value. * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420. */ UDAT_BOOLEAN_ATTRIBUTE_COUNT = 4 +#endif // U_FORCE_HIDE_DEPRECATED_API } UDateFormatBooleanAttribute; /** diff --git a/source/i18n/unicode/udatpg.h b/source/i18n/unicode/udatpg.h index fc25d57..7f28b5a 100644 --- a/source/i18n/unicode/udatpg.h +++ b/source/i18n/unicode/udatpg.h @@ -88,11 +88,13 @@ typedef enum UDateTimePatternField { /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API, * it is needed for layout of DateTimePatternGenerator object. */ +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * One more than the highest normal UDateTimePatternField value. * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420. */ UDATPG_FIELD_COUNT +#endif // U_FORCE_HIDE_DEPRECATED_API } UDateTimePatternField; /** diff --git a/source/i18n/unicode/uformattedvalue.h b/source/i18n/unicode/uformattedvalue.h index eaa4f28..0b289e3 100644 --- a/source/i18n/unicode/uformattedvalue.h +++ b/source/i18n/unicode/uformattedvalue.h @@ -7,10 +7,11 @@ #include "unicode/utypes.h" #if !UCONFIG_NO_FORMATTING -#ifndef U_HIDE_DRAFT_API #include "unicode/ufieldpositer.h" +#ifndef U_HIDE_DRAFT_API + /** * \file * \brief C API: Abstract operations for localized strings. diff --git a/source/i18n/unicode/ulistformatter.h b/source/i18n/unicode/ulistformatter.h index 2afc50d..1a39008 100644 --- a/source/i18n/unicode/ulistformatter.h +++ b/source/i18n/unicode/ulistformatter.h @@ -41,7 +41,7 @@ struct UFormattedList; * @draft ICU 64 */ typedef struct UFormattedList UFormattedList; -#endif /* U_HIDE_DRAFT_API */ +#endif /* U_HIDE_DRAFT_API */ #ifndef U_HIDE_DRAFT_API /** @@ -61,7 +61,7 @@ typedef enum UListFormatterField { */ ULISTFMT_ELEMENT_FIELD } UListFormatterField; -#endif // U_HIDE_DRAFT_API +#endif /* U_HIDE_DRAFT_API */ /** * Open a new UListFormatter object using the rules for a given locale. diff --git a/source/i18n/unicode/unirepl.h b/source/i18n/unicode/unirepl.h index ddcb0ad..1ec627a 100644 --- a/source/i18n/unicode/unirepl.h +++ b/source/i18n/unicode/unirepl.h @@ -14,6 +14,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: UnicodeReplacer @@ -96,4 +98,6 @@ class U_I18N_API UnicodeReplacer /* not : public UObject because this is an inte U_NAMESPACE_END +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/i18n/unicode/unum.h b/source/i18n/unicode/unum.h index 28e1308..4304538 100644 --- a/source/i18n/unicode/unum.h +++ b/source/i18n/unicode/unum.h @@ -338,11 +338,13 @@ enum UCurrencySpacing { /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API, * it is needed for layout of DecimalFormatSymbols object. */ +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * One more than the highest normal UCurrencySpacing value. * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420. */ UNUM_CURRENCY_SPACING_COUNT +#endif // U_FORCE_HIDE_DEPRECATED_API }; typedef enum UCurrencySpacing UCurrencySpacing; /**< @stable ICU 4.8 */ @@ -409,7 +411,7 @@ typedef enum UNumberFormatFields { * respectively. * *

    NOTE:: New users with are strongly encouraged to - * use unumf_openWithSkeletonAndLocale instead of unum_open. + * use unumf_openForSkeletonAndLocale instead of unum_open. * * @param pattern A pattern specifying the format to use. * This parameter is ignored unless the style is diff --git a/source/i18n/unicode/unumberformatter.h b/source/i18n/unicode/unumberformatter.h index e4c21a4..b27507f 100644 --- a/source/i18n/unicode/unumberformatter.h +++ b/source/i18n/unicode/unumberformatter.h @@ -77,8 +77,6 @@ * */ - -#ifndef U_HIDE_DRAFT_API /** * An enum declaring how to render units, including currencies. Example outputs when formatting 123 USD and 123 * meters in en-CA: @@ -95,7 +93,7 @@ *

    * This enum is similar to {@link UMeasureFormatWidth}. * - * @draft ICU 60 + * @stable ICU 60 */ typedef enum UNumberUnitWidth { /** @@ -107,7 +105,7 @@ typedef enum UNumberUnitWidth { * In CLDR, this option corresponds to the "Narrow" format for measure units and the "¤¤¤¤¤" placeholder for * currencies. * - * @draft ICU 60 + * @stable ICU 60 */ UNUM_UNIT_WIDTH_NARROW, @@ -123,7 +121,7 @@ typedef enum UNumberUnitWidth { * In CLDR, this option corresponds to the "Short" format for measure units and the "¤" placeholder for * currencies. * - * @draft ICU 60 + * @stable ICU 60 */ UNUM_UNIT_WIDTH_SHORT, @@ -134,7 +132,7 @@ typedef enum UNumberUnitWidth { * In CLDR, this option corresponds to the default format for measure units and the "¤¤¤" placeholder for * currencies. * - * @draft ICU 60 + * @stable ICU 60 */ UNUM_UNIT_WIDTH_FULL_NAME, @@ -145,7 +143,7 @@ typedef enum UNumberUnitWidth { *

    * In CLDR, this option corresponds to the "¤¤" placeholder for currencies. * - * @draft ICU 60 + * @stable ICU 60 */ UNUM_UNIT_WIDTH_ISO_CODE, @@ -154,7 +152,7 @@ typedef enum UNumberUnitWidth { * monetary symbols and formats as with SHORT, but omit the currency symbol. For measure units, the behavior is * equivalent to not specifying the unit at all. * - * @draft ICU 60 + * @stable ICU 60 */ UNUM_UNIT_WIDTH_HIDDEN, @@ -165,9 +163,7 @@ typedef enum UNumberUnitWidth { */ UNUM_UNIT_WIDTH_COUNT } UNumberUnitWidth; -#endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * An enum declaring the strategy for when and how to display grouping separators (i.e., the * separator, often a comma or period, after every 2-3 powers of ten). The choices are several @@ -192,13 +188,13 @@ typedef enum UNumberUnitWidth { * Note: This enum specifies the strategy for grouping sizes. To set which character to use as the * grouping separator, use the "symbols" setter. * - * @draft ICU 63 + * @stable ICU 63 */ typedef enum UNumberGroupingStrategy { /** * Do not display grouping separators in any locale. * - * @draft ICU 61 + * @stable ICU 61 */ UNUM_GROUPING_OFF, @@ -214,7 +210,7 @@ typedef enum UNumberGroupingStrategy { * Locale data is used to determine whether to separate larger numbers into groups of 2 * (customary in South Asia) or groups of 3 (customary in Europe and the Americas). * - * @draft ICU 61 + * @stable ICU 61 */ UNUM_GROUPING_MIN2, @@ -229,7 +225,7 @@ typedef enum UNumberGroupingStrategy { * Locale data is used to determine whether to separate larger numbers into groups of 2 * (customary in South Asia) or groups of 3 (customary in Europe and the Americas). * - * @draft ICU 61 + * @stable ICU 61 */ UNUM_GROUPING_AUTO, @@ -245,7 +241,7 @@ typedef enum UNumberGroupingStrategy { * Locale data is used to determine whether to separate larger numbers into groups of 2 * (customary in South Asia) or groups of 3 (customary in Europe and the Americas). * - * @draft ICU 61 + * @stable ICU 61 */ UNUM_GROUPING_ON_ALIGNED, @@ -253,7 +249,7 @@ typedef enum UNumberGroupingStrategy { * Use the Western defaults: groups of 3 and enabled for all numbers 1000 or greater. Do not use * locale data for determining the grouping strategy. * - * @draft ICU 61 + * @stable ICU 61 */ UNUM_GROUPING_THOUSANDS @@ -269,10 +265,6 @@ typedef enum UNumberGroupingStrategy { } UNumberGroupingStrategy; - -#endif /* U_HIDE_DRAFT_API */ - -#ifndef U_HIDE_DRAFT_API /** * An enum declaring how to denote positive and negative numbers. Example outputs when formatting * 123, 0, and -123 in en-US: @@ -290,14 +282,14 @@ typedef enum UNumberGroupingStrategy { *

    * The exact format, including the position and the code point of the sign, differ by locale. * - * @draft ICU 60 + * @stable ICU 60 */ typedef enum UNumberSignDisplay { /** * Show the minus sign on negative numbers, and do not show the sign on positive numbers. This is the default * behavior. * - * @draft ICU 60 + * @stable ICU 60 */ UNUM_SIGN_AUTO, @@ -305,14 +297,14 @@ typedef enum UNumberSignDisplay { * Show the minus sign on negative numbers and the plus sign on positive numbers, including zero. * To hide the sign on zero, see {@link UNUM_SIGN_EXCEPT_ZERO}. * - * @draft ICU 60 + * @stable ICU 60 */ UNUM_SIGN_ALWAYS, /** * Do not show the sign on positive or negative numbers. * - * @draft ICU 60 + * @stable ICU 60 */ UNUM_SIGN_NEVER, @@ -328,7 +320,7 @@ typedef enum UNumberSignDisplay { * AUTO sign display strategy when formatting without a currency unit. This limitation may be lifted in the * future. * - * @draft ICU 60 + * @stable ICU 60 */ UNUM_SIGN_ACCOUNTING, @@ -338,24 +330,25 @@ typedef enum UNumberSignDisplay { * ACCOUNTING sign display strategy. To hide the sign on zero, see * {@link UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO}. * - * @draft ICU 60 + * @stable ICU 60 */ UNUM_SIGN_ACCOUNTING_ALWAYS, /** * Show the minus sign on negative numbers and the plus sign on positive numbers. Do not show a - * sign on zero. + * sign on zero or NaN, unless the sign bit is set (-0.0 gets a sign). * - * @draft ICU 61 + * @stable ICU 61 */ UNUM_SIGN_EXCEPT_ZERO, /** * Use the locale-dependent accounting format on negative numbers, and show the plus sign on - * positive numbers. Do not show a sign on zero. For more information on the accounting format, - * see the ACCOUNTING sign display strategy. + * positive numbers. Do not show a sign on zero or NaN, unless the sign bit is set (-0.0 gets a + * sign). For more information on the accounting format, see the ACCOUNTING sign display + * strategy. * - * @draft ICU 61 + * @stable ICU 61 */ UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO, @@ -366,9 +359,7 @@ typedef enum UNumberSignDisplay { */ UNUM_SIGN_COUNT } UNumberSignDisplay; -#endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * An enum declaring how to render the decimal separator. * @@ -378,21 +369,21 @@ typedef enum UNumberSignDisplay { *

  • UNUM_DECIMAL_SEPARATOR_ALWAYS: "1.", "1.1" * * - * @draft ICU 60 + * @stable ICU 60 */ typedef enum UNumberDecimalSeparatorDisplay { /** * Show the decimal separator when there are one or more digits to display after the separator, and do not show * it otherwise. This is the default behavior. * - * @draft ICU 60 + * @stable ICU 60 */ UNUM_DECIMAL_SEPARATOR_AUTO, /** * Always show the decimal separator, even if there are no digits to display after the separator. * - * @draft ICU 60 + * @stable ICU 60 */ UNUM_DECIMAL_SEPARATOR_ALWAYS, @@ -403,7 +394,6 @@ typedef enum UNumberDecimalSeparatorDisplay { */ UNUM_DECIMAL_SEPARATOR_COUNT } UNumberDecimalSeparatorDisplay; -#endif /* U_HIDE_DRAFT_API */ struct UNumberFormatter; /** @@ -649,6 +639,13 @@ unumf_resultGetAllFieldPositions(const UFormattedNumber* uresult, UFieldPosition UErrorCode* ec); +// TODO(ICU-20775): Propose this as API. +// NOTE: This is not currently implemented. +// U_DRAFT int32_t U_EXPORT2 +// unumf_resultToDecimalNumber(const UFormattedNumber* uresult, char* buffer, int32_t bufferCapacity, +// UErrorCode* ec); + + /** * Releases the UNumberFormatter created by unumf_openForSkeletonAndLocale(). * diff --git a/source/i18n/unicode/usearch.h b/source/i18n/unicode/usearch.h index 3a7c311..080528e 100644 --- a/source/i18n/unicode/usearch.h +++ b/source/i18n/unicode/usearch.h @@ -24,7 +24,7 @@ * \file * \brief C API: StringSearch * - * C Apis for an engine that provides language-sensitive text searching based + * C APIs for an engine that provides language-sensitive text searching based * on the comparison rules defined in a UCollator data struct, * see ucol.h. This ensures that language eccentricity can be * handled, e.g. for the German collator, characters ß and SS will be matched @@ -55,7 +55,7 @@ *

    * This search has APIs similar to that of other text iteration mechanisms * such as the break iterators in ubrk.h. Using these - * APIs, it is easy to scan through text looking for all occurances of + * APIs, it is easy to scan through text looking for all occurrences of * a given pattern. This search iterator allows changing of direction by * calling a reset followed by a next or previous. * Though a direction change can occur without calling reset first, @@ -130,7 +130,7 @@ * pos = usearch_next(search, &status)) * { * printf("Found match at %d pos, length is %d\n", pos, - * usearch_getMatchLength(search)); + * usearch_getMatchedLength(search)); * } * } * @@ -479,7 +479,7 @@ U_STABLE int32_t U_EXPORT2 usearch_getMatchedLength( * possible. If the buffer fits the matched text exactly, a null-termination * is not possible, then a U_STRING_NOT_TERMINATED_ERROR set in status. * Pre-flighting can be either done with length = 0 or the API -* usearch_getMatchLength. +* usearch_getMatchedLength. * @param strsrch search iterator data struct * @param result UChar buffer to store the matched string * @param resultCapacity length of the result buffer @@ -766,7 +766,7 @@ U_STABLE void U_EXPORT2 usearch_reset(UStringSearch *strsrch); #ifndef U_HIDE_INTERNAL_API /** * Simple forward search for the pattern, starting at a specified index, - * and using using a default set search options. + * and using a default set search options. * * This is an experimental function, and is not an official part of the * ICU API. @@ -783,7 +783,7 @@ U_STABLE void U_EXPORT2 usearch_reset(UStringSearch *strsrch); * are part of a combining sequence, as described below. * * A match will not include a partial combining sequence. Combining - * character sequences are considered to be inseperable units, + * character sequences are considered to be inseparable units, * and either match the pattern completely, or are considered to not match * at all. Thus, for example, an A followed a combining accent mark will * not be found when searching for a plain (unaccented) A. (unless @@ -792,7 +792,7 @@ U_STABLE void U_EXPORT2 usearch_reset(UStringSearch *strsrch); * When beginning a search, the initial starting position, startIdx, * is assumed to be an acceptable match boundary with respect to * combining characters. A combining sequence that spans across the - * starting point will not supress a match beginning at startIdx. + * starting point will not suppress a match beginning at startIdx. * * Characters that expand to multiple collation elements * (German sharp-S becoming 'ss', or the composed forms of accented @@ -843,7 +843,7 @@ U_INTERNAL UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, * are part of a combining sequence, as described below. * * A match will not include a partial combining sequence. Combining - * character sequences are considered to be inseperable units, + * character sequences are considered to be inseparable units, * and either match the pattern completely, or are considered to not match * at all. Thus, for example, an A followed a combining accent mark will * not be found when searching for a plain (unaccented) A. (unless @@ -852,7 +852,7 @@ U_INTERNAL UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, * When beginning a search, the initial starting position, startIdx, * is assumed to be an acceptable match boundary with respect to * combining characters. A combining sequence that spans across the - * starting point will not supress a match beginning at startIdx. + * starting point will not suppress a match beginning at startIdx. * * Characters that expand to multiple collation elements * (German sharp-S becoming 'ss', or the composed forms of accented diff --git a/source/i18n/unicode/uspoof.h b/source/i18n/unicode/uspoof.h index d15ba4b..63a1338 100644 --- a/source/i18n/unicode/uspoof.h +++ b/source/i18n/unicode/uspoof.h @@ -353,6 +353,8 @@ * @stable ICU 4.6 */ +U_CDECL_BEGIN + struct USpoofChecker; /** * @stable ICU 4.2 @@ -471,7 +473,6 @@ typedef enum USpoofChecks { */ USPOOF_MIXED_NUMBERS = 128, -#ifndef U_HIDE_DRAFT_API /** * Check that an identifier does not have a combining character following a character in which that * combining character would be hidden; for example 'i' followed by a U+0307 combining dot. @@ -489,10 +490,9 @@ typedef enum USpoofChecks { * * This list and the number of combing characters considered by this check may grow over time. * - * @draft ICU 62 + * @stable ICU 62 */ USPOOF_HIDDEN_OVERLAY = 256, -#endif /* U_HIDE_DRAFT_API */ /** * Enable all spoof checks. @@ -674,25 +674,6 @@ uspoof_openFromSource(const char *confusables, int32_t confusablesLen, U_STABLE void U_EXPORT2 uspoof_close(USpoofChecker *sc); -#if U_SHOW_CPLUSPLUS_API - -U_NAMESPACE_BEGIN - -/** - * \class LocalUSpoofCheckerPointer - * "Smart pointer" class, closes a USpoofChecker via uspoof_close(). - * For most methods see the LocalPointerBase base class. - * - * @see LocalPointerBase - * @see LocalPointer - * @stable ICU 4.4 - */ -U_DEFINE_LOCAL_OPEN_POINTER(LocalUSpoofCheckerPointer, USpoofChecker, uspoof_close); - -U_NAMESPACE_END - -#endif - /** * Clone a Spoof Checker. The clone will be set to perform the same checks * as the original source. @@ -901,54 +882,6 @@ U_STABLE const USet * U_EXPORT2 uspoof_getAllowedChars(const USpoofChecker *sc, UErrorCode *status); -#if U_SHOW_CPLUSPLUS_API -/** - * Limit the acceptable characters to those specified by a Unicode Set. - * Any previously specified character limit is - * is replaced by the new settings. This includes limits on - * characters that were set with the uspoof_setAllowedLocales() function. - * - * The USPOOF_CHAR_LIMIT test is automatically enabled for this - * USoofChecker by this function. - * - * @param sc The USpoofChecker - * @param chars A Unicode Set containing the list of - * characters that are permitted. Ownership of the set - * remains with the caller. The incoming set is cloned by - * this function, so there are no restrictions on modifying - * or deleting the UnicodeSet after calling this function. - * @param status The error code, set if this function encounters a problem. - * @stable ICU 4.2 - */ -U_STABLE void U_EXPORT2 -uspoof_setAllowedUnicodeSet(USpoofChecker *sc, const icu::UnicodeSet *chars, UErrorCode *status); - - -/** - * Get a UnicodeSet for the characters permitted in an identifier. - * This corresponds to the limits imposed by the Set Allowed Characters / - * UnicodeSet functions. Limitations imposed by other checks will not be - * reflected in the set returned by this function. - * - * The returned set will be frozen, meaning that it cannot be modified - * by the caller. - * - * Ownership of the returned set remains with the Spoof Detector. The - * returned set will become invalid if the spoof detector is closed, - * or if a new set of allowed characters is specified. - * - * - * @param sc The USpoofChecker - * @param status The error code, set if this function encounters a problem. - * @return A UnicodeSet containing the characters that are permitted by - * the USPOOF_CHAR_LIMIT test. - * @stable ICU 4.2 - */ -U_STABLE const icu::UnicodeSet * U_EXPORT2 -uspoof_getAllowedUnicodeSet(const USpoofChecker *sc, UErrorCode *status); -#endif - - /** * Check the specified string for possible security issues. * The text to be checked will typically be an identifier of some sort. @@ -1027,43 +960,6 @@ uspoof_checkUTF8(const USpoofChecker *sc, UErrorCode *status); -#if U_SHOW_CPLUSPLUS_API -/** - * Check the specified string for possible security issues. - * The text to be checked will typically be an identifier of some sort. - * The set of checks to be performed is specified with uspoof_setChecks(). - * - * \note - * Consider using the newer API, {@link uspoof_check2UnicodeString}, instead. - * The newer API exposes additional information from the check procedure - * and is otherwise identical to this method. - * - * @param sc The USpoofChecker - * @param id A identifier to be checked for possible security issues. - * @param position Deprecated in ICU 51. Always returns zero. - * Originally, an out parameter for the index of the first - * string position that failed a check. - * This parameter may be NULL. - * @param status The error code, set if an error occurred while attempting to - * perform the check. - * Spoofing or security issues detected with the input string are - * not reported here, but through the function's return value. - * @return An integer value with bits set for any potential security - * or spoofing issues detected. The bits are defined by - * enum USpoofChecks. (returned_value & USPOOF_ALL_CHECKS) - * will be zero if the input string passes all of the - * enabled checks. - * @see uspoof_check2UnicodeString - * @stable ICU 4.2 - */ -U_STABLE int32_t U_EXPORT2 -uspoof_checkUnicodeString(const USpoofChecker *sc, - const icu::UnicodeString &id, - int32_t *position, - UErrorCode *status); -#endif - - /** * Check the specified string for possible security issues. * The text to be checked will typically be an identifier of some sort. @@ -1135,39 +1031,6 @@ uspoof_check2UTF8(const USpoofChecker *sc, USpoofCheckResult* checkResult, UErrorCode *status); -#if U_SHOW_CPLUSPLUS_API -/** - * Check the specified string for possible security issues. - * The text to be checked will typically be an identifier of some sort. - * The set of checks to be performed is specified with uspoof_setChecks(). - * - * @param sc The USpoofChecker - * @param id A identifier to be checked for possible security issues. - * @param checkResult An instance of USpoofCheckResult to be filled with - * details about the identifier. Can be NULL. - * @param status The error code, set if an error occurred while attempting to - * perform the check. - * Spoofing or security issues detected with the input string are - * not reported here, but through the function's return value. - * @return An integer value with bits set for any potential security - * or spoofing issues detected. The bits are defined by - * enum USpoofChecks. (returned_value & USPOOF_ALL_CHECKS) - * will be zero if the input string passes all of the - * enabled checks. Any information in this bitmask will be - * consistent with the information saved in the optional - * checkResult parameter. - * @see uspoof_openCheckResult - * @see uspoof_check2 - * @see uspoof_check2UTF8 - * @stable ICU 58 - */ -U_STABLE int32_t U_EXPORT2 -uspoof_check2UnicodeString(const USpoofChecker *sc, - const icu::UnicodeString &id, - USpoofCheckResult* checkResult, - UErrorCode *status); -#endif - /** * Create a USpoofCheckResult, used by the {@link uspoof_check2} class of functions to return * information about the identifier. Information includes: @@ -1199,32 +1062,6 @@ uspoof_openCheckResult(UErrorCode *status); U_STABLE void U_EXPORT2 uspoof_closeCheckResult(USpoofCheckResult *checkResult); -#if U_SHOW_CPLUSPLUS_API - -U_NAMESPACE_BEGIN - -/** - * \class LocalUSpoofCheckResultPointer - * "Smart pointer" class, closes a USpoofCheckResult via `uspoof_closeCheckResult()`. - * For most methods see the LocalPointerBase base class. - * - * @see LocalPointerBase - * @see LocalPointer - * @stable ICU 58 - */ - -/** - * \cond - * Note: Doxygen is giving a bogus warning on this U_DEFINE_LOCAL_OPEN_POINTER. - * For now, suppress with a Doxygen cond - */ -U_DEFINE_LOCAL_OPEN_POINTER(LocalUSpoofCheckResultPointer, USpoofCheckResult, uspoof_closeCheckResult); -/** \endcond */ - -U_NAMESPACE_END - -#endif - /** * Indicates which of the spoof check(s) have failed. The value is a bitwise OR of the constants for the tests * in question: USPOOF_RESTRICTION_LEVEL, USPOOF_CHAR_LIMIT, and so on. @@ -1355,36 +1192,6 @@ uspoof_areConfusableUTF8(const USpoofChecker *sc, -#if U_SHOW_CPLUSPLUS_API -/** - * A version of {@link uspoof_areConfusable} accepting UnicodeStrings. - * - * @param sc The USpoofChecker - * @param s1 The first of the two identifiers to be compared for - * confusability. The strings are in UTF-8 format. - * @param s2 The second of the two identifiers to be compared for - * confusability. The strings are in UTF-8 format. - * @param status The error code, set if an error occurred while attempting to - * perform the check. - * Confusability of the identifiers is not reported here, - * but through this function's return value. - * @return An integer value with bit(s) set corresponding to - * the type of confusability found, as defined by - * enum USpoofChecks. Zero is returned if the identifiers - * are not confusable. - * - * @stable ICU 4.2 - * - * @see uspoof_areConfusable - */ -U_STABLE int32_t U_EXPORT2 -uspoof_areConfusableUnicodeString(const USpoofChecker *sc, - const icu::UnicodeString &s1, - const icu::UnicodeString &s2, - UErrorCode *status); -#endif - - /** * Get the "skeleton" for an identifier. * Skeletons are a transformation of the input identifier; @@ -1463,38 +1270,6 @@ uspoof_getSkeletonUTF8(const USpoofChecker *sc, char *dest, int32_t destCapacity, UErrorCode *status); -#if U_SHOW_CPLUSPLUS_API -/** - * Get the "skeleton" for an identifier. - * Skeletons are a transformation of the input identifier; - * Two identifiers are confusable if their skeletons are identical. - * See Unicode UAX #39 for additional information. - * - * Using skeletons directly makes it possible to quickly check - * whether an identifier is confusable with any of some large - * set of existing identifiers, by creating an efficiently - * searchable collection of the skeletons. - * - * @param sc The USpoofChecker. - * @param type Deprecated in ICU 58. You may pass any number. - * Originally, controlled which of the Unicode confusable data - * tables to use. - * @param id The input identifier whose skeleton will be computed. - * @param dest The output identifier, to receive the skeleton string. - * @param status The error code, set if an error occurred while attempting to - * perform the check. - * @return A reference to the destination (skeleton) string. - * - * @stable ICU 4.2 - */ -U_I18N_API icu::UnicodeString & U_EXPORT2 -uspoof_getSkeletonUnicodeString(const USpoofChecker *sc, - uint32_t type, - const icu::UnicodeString &id, - icu::UnicodeString &dest, - UErrorCode *status); -#endif /* U_SHOW_CPLUSPLUS_API */ - /** * Get the set of Candidate Characters for Inclusion in Identifiers, as defined * in http://unicode.org/Public/security/latest/xidmodifications.txt @@ -1525,8 +1300,243 @@ uspoof_getInclusionSet(UErrorCode *status); U_STABLE const USet * U_EXPORT2 uspoof_getRecommendedSet(UErrorCode *status); +/** + * Serialize the data for a spoof detector into a chunk of memory. + * The flattened spoof detection tables can later be used to efficiently + * instantiate a new Spoof Detector. + * + * The serialized spoof checker includes only the data compiled from the + * Unicode data tables by uspoof_openFromSource(); it does not include + * include any other state or configuration that may have been set. + * + * @param sc the Spoof Detector whose data is to be serialized. + * @param data a pointer to 32-bit-aligned memory to be filled with the data, + * can be NULL if capacity==0 + * @param capacity the number of bytes available at data, + * or 0 for preflighting + * @param status an in/out ICU UErrorCode; possible errors include: + * - U_BUFFER_OVERFLOW_ERROR if the data storage block is too small for serialization + * - U_ILLEGAL_ARGUMENT_ERROR the data or capacity parameters are bad + * @return the number of bytes written or needed for the spoof data + * + * @see utrie2_openFromSerialized() + * @stable ICU 4.2 + */ +U_STABLE int32_t U_EXPORT2 +uspoof_serialize(USpoofChecker *sc, + void *data, int32_t capacity, + UErrorCode *status); + +U_CDECL_END + #if U_SHOW_CPLUSPLUS_API +U_NAMESPACE_BEGIN + +/** + * \class LocalUSpoofCheckerPointer + * "Smart pointer" class, closes a USpoofChecker via uspoof_close(). + * For most methods see the LocalPointerBase base class. + * + * @see LocalPointerBase + * @see LocalPointer + * @stable ICU 4.4 + */ +/** + * \cond + * Note: Doxygen is giving a bogus warning on this U_DEFINE_LOCAL_OPEN_POINTER. + * For now, suppress with a Doxygen cond + */ +U_DEFINE_LOCAL_OPEN_POINTER(LocalUSpoofCheckerPointer, USpoofChecker, uspoof_close); +/** \endcond */ + +/** + * \class LocalUSpoofCheckResultPointer + * "Smart pointer" class, closes a USpoofCheckResult via `uspoof_closeCheckResult()`. + * For most methods see the LocalPointerBase base class. + * + * @see LocalPointerBase + * @see LocalPointer + * @stable ICU 58 + */ + +/** + * \cond + * Note: Doxygen is giving a bogus warning on this U_DEFINE_LOCAL_OPEN_POINTER. + * For now, suppress with a Doxygen cond + */ +U_DEFINE_LOCAL_OPEN_POINTER(LocalUSpoofCheckResultPointer, USpoofCheckResult, uspoof_closeCheckResult); +/** \endcond */ + +U_NAMESPACE_END + +/** + * Limit the acceptable characters to those specified by a Unicode Set. + * Any previously specified character limit is + * is replaced by the new settings. This includes limits on + * characters that were set with the uspoof_setAllowedLocales() function. + * + * The USPOOF_CHAR_LIMIT test is automatically enabled for this + * USoofChecker by this function. + * + * @param sc The USpoofChecker + * @param chars A Unicode Set containing the list of + * characters that are permitted. Ownership of the set + * remains with the caller. The incoming set is cloned by + * this function, so there are no restrictions on modifying + * or deleting the UnicodeSet after calling this function. + * @param status The error code, set if this function encounters a problem. + * @stable ICU 4.2 + */ +U_STABLE void U_EXPORT2 +uspoof_setAllowedUnicodeSet(USpoofChecker *sc, const icu::UnicodeSet *chars, UErrorCode *status); + + +/** + * Get a UnicodeSet for the characters permitted in an identifier. + * This corresponds to the limits imposed by the Set Allowed Characters / + * UnicodeSet functions. Limitations imposed by other checks will not be + * reflected in the set returned by this function. + * + * The returned set will be frozen, meaning that it cannot be modified + * by the caller. + * + * Ownership of the returned set remains with the Spoof Detector. The + * returned set will become invalid if the spoof detector is closed, + * or if a new set of allowed characters is specified. + * + * + * @param sc The USpoofChecker + * @param status The error code, set if this function encounters a problem. + * @return A UnicodeSet containing the characters that are permitted by + * the USPOOF_CHAR_LIMIT test. + * @stable ICU 4.2 + */ +U_STABLE const icu::UnicodeSet * U_EXPORT2 +uspoof_getAllowedUnicodeSet(const USpoofChecker *sc, UErrorCode *status); + +/** + * Check the specified string for possible security issues. + * The text to be checked will typically be an identifier of some sort. + * The set of checks to be performed is specified with uspoof_setChecks(). + * + * \note + * Consider using the newer API, {@link uspoof_check2UnicodeString}, instead. + * The newer API exposes additional information from the check procedure + * and is otherwise identical to this method. + * + * @param sc The USpoofChecker + * @param id A identifier to be checked for possible security issues. + * @param position Deprecated in ICU 51. Always returns zero. + * Originally, an out parameter for the index of the first + * string position that failed a check. + * This parameter may be NULL. + * @param status The error code, set if an error occurred while attempting to + * perform the check. + * Spoofing or security issues detected with the input string are + * not reported here, but through the function's return value. + * @return An integer value with bits set for any potential security + * or spoofing issues detected. The bits are defined by + * enum USpoofChecks. (returned_value & USPOOF_ALL_CHECKS) + * will be zero if the input string passes all of the + * enabled checks. + * @see uspoof_check2UnicodeString + * @stable ICU 4.2 + */ +U_STABLE int32_t U_EXPORT2 +uspoof_checkUnicodeString(const USpoofChecker *sc, + const icu::UnicodeString &id, + int32_t *position, + UErrorCode *status); + +/** + * Check the specified string for possible security issues. + * The text to be checked will typically be an identifier of some sort. + * The set of checks to be performed is specified with uspoof_setChecks(). + * + * @param sc The USpoofChecker + * @param id A identifier to be checked for possible security issues. + * @param checkResult An instance of USpoofCheckResult to be filled with + * details about the identifier. Can be NULL. + * @param status The error code, set if an error occurred while attempting to + * perform the check. + * Spoofing or security issues detected with the input string are + * not reported here, but through the function's return value. + * @return An integer value with bits set for any potential security + * or spoofing issues detected. The bits are defined by + * enum USpoofChecks. (returned_value & USPOOF_ALL_CHECKS) + * will be zero if the input string passes all of the + * enabled checks. Any information in this bitmask will be + * consistent with the information saved in the optional + * checkResult parameter. + * @see uspoof_openCheckResult + * @see uspoof_check2 + * @see uspoof_check2UTF8 + * @stable ICU 58 + */ +U_STABLE int32_t U_EXPORT2 +uspoof_check2UnicodeString(const USpoofChecker *sc, + const icu::UnicodeString &id, + USpoofCheckResult* checkResult, + UErrorCode *status); + +/** + * A version of {@link uspoof_areConfusable} accepting UnicodeStrings. + * + * @param sc The USpoofChecker + * @param s1 The first of the two identifiers to be compared for + * confusability. The strings are in UTF-8 format. + * @param s2 The second of the two identifiers to be compared for + * confusability. The strings are in UTF-8 format. + * @param status The error code, set if an error occurred while attempting to + * perform the check. + * Confusability of the identifiers is not reported here, + * but through this function's return value. + * @return An integer value with bit(s) set corresponding to + * the type of confusability found, as defined by + * enum USpoofChecks. Zero is returned if the identifiers + * are not confusable. + * + * @stable ICU 4.2 + * + * @see uspoof_areConfusable + */ +U_STABLE int32_t U_EXPORT2 +uspoof_areConfusableUnicodeString(const USpoofChecker *sc, + const icu::UnicodeString &s1, + const icu::UnicodeString &s2, + UErrorCode *status); + +/** + * Get the "skeleton" for an identifier. + * Skeletons are a transformation of the input identifier; + * Two identifiers are confusable if their skeletons are identical. + * See Unicode UAX #39 for additional information. + * + * Using skeletons directly makes it possible to quickly check + * whether an identifier is confusable with any of some large + * set of existing identifiers, by creating an efficiently + * searchable collection of the skeletons. + * + * @param sc The USpoofChecker. + * @param type Deprecated in ICU 58. You may pass any number. + * Originally, controlled which of the Unicode confusable data + * tables to use. + * @param id The input identifier whose skeleton will be computed. + * @param dest The output identifier, to receive the skeleton string. + * @param status The error code, set if an error occurred while attempting to + * perform the check. + * @return A reference to the destination (skeleton) string. + * + * @stable ICU 4.2 + */ +U_I18N_API icu::UnicodeString & U_EXPORT2 +uspoof_getSkeletonUnicodeString(const USpoofChecker *sc, + uint32_t type, + const icu::UnicodeString &id, + icu::UnicodeString &dest, + UErrorCode *status); + /** * Get the set of Candidate Characters for Inclusion in Identifiers, as defined * in http://unicode.org/Public/security/latest/xidmodifications.txt @@ -1559,34 +1569,6 @@ uspoof_getRecommendedUnicodeSet(UErrorCode *status); #endif /* U_SHOW_CPLUSPLUS_API */ -/** - * Serialize the data for a spoof detector into a chunk of memory. - * The flattened spoof detection tables can later be used to efficiently - * instantiate a new Spoof Detector. - * - * The serialized spoof checker includes only the data compiled from the - * Unicode data tables by uspoof_openFromSource(); it does not include - * include any other state or configuration that may have been set. - * - * @param sc the Spoof Detector whose data is to be serialized. - * @param data a pointer to 32-bit-aligned memory to be filled with the data, - * can be NULL if capacity==0 - * @param capacity the number of bytes available at data, - * or 0 for preflighting - * @param status an in/out ICU UErrorCode; possible errors include: - * - U_BUFFER_OVERFLOW_ERROR if the data storage block is too small for serialization - * - U_ILLEGAL_ARGUMENT_ERROR the data or capacity parameters are bad - * @return the number of bytes written or needed for the spoof data - * - * @see utrie2_openFromSerialized() - * @stable ICU 4.2 - */ -U_STABLE int32_t U_EXPORT2 -uspoof_serialize(USpoofChecker *sc, - void *data, int32_t capacity, - UErrorCode *status); - - -#endif +#endif /* UCONFIG_NO_NORMALIZATION */ #endif /* USPOOF_H */ diff --git a/source/i18n/unicode/utrans.h b/source/i18n/unicode/utrans.h index 697681a..021af49 100644 --- a/source/i18n/unicode/utrans.h +++ b/source/i18n/unicode/utrans.h @@ -142,7 +142,7 @@ typedef struct UTransPosition { int32_t contextLimit; /** - * Beginning index, inclusive, of the text to be transliteratd. + * Beginning index, inclusive, of the text to be transliterated. * INPUT/OUTPUT parameter: This parameter is advanced past * characters that have already been transliterated by a * transliteration operation. @@ -151,7 +151,7 @@ typedef struct UTransPosition { int32_t start; /** - * Ending index, exclusive, of the text to be transliteratd. + * Ending index, exclusive, of the text to be transliterated. * INPUT/OUTPUT parameter: This parameter is updated to reflect * changes in the length of the text, but points to the same * logical position in the text. @@ -389,7 +389,7 @@ utrans_trans(const UTransliterator* trans, /** * Transliterate the portion of the UReplaceable text buffer that can - * be transliterated unambiguosly. This method is typically called + * be transliterated unambiguously. This method is typically called * after new text has been inserted, e.g. as a result of a keyboard * event. The transliterator will try to transliterate characters of * rep between index.cursor and @@ -454,8 +454,7 @@ utrans_transIncremental(const UTransliterator* trans, * zero-terminated. Upon return, the new length is stored in * *textLength. If textLength is NULL then the string is assumed to * be zero-terminated. - * @param textCapacity a pointer to the length of the text buffer. - * Upon return, + * @param textCapacity the length of the text buffer * @param start the beginning index, inclusive; 0 <= start <= * limit. * @param limit pointer to the ending index, exclusive; start <= @@ -479,7 +478,7 @@ utrans_transUChars(const UTransliterator* trans, /** * Transliterate the portion of the UChar* text buffer that can be - * transliterated unambiguosly. See utrans_transIncremental(). The + * transliterated unambiguously. See utrans_transIncremental(). The * string is passed in in a UChar* buffer. The string is modified in * place. If the result is longer than textCapacity, it is truncated. * The actual length of the result is returned in *textLength, if diff --git a/source/i18n/unicode/vtzone.h b/source/i18n/unicode/vtzone.h index 18265d3..2743b6c 100644 --- a/source/i18n/unicode/vtzone.h +++ b/source/i18n/unicode/vtzone.h @@ -11,6 +11,8 @@ #include "unicode/utypes.h" +#if U_SHOW_CPLUSPLUS_API + /** * \file * \brief C++ API: RFC2445 VTIMEZONE support @@ -185,7 +187,7 @@ public: * @return A new copy of this TimeZone object. * @stable ICU 3.8 */ - virtual TimeZone* clone(void) const; + virtual VTimeZone* clone() const; /** * Returns the TimeZone's adjusted GMT offset (i.e., the number of milliseconds to add @@ -288,6 +290,7 @@ public: */ virtual UBool useDaylightTime(void) const; +#ifndef U_FORCE_HIDE_DEPRECATED_API /** * Queries if the given date is in daylight savings time in * this time zone. @@ -302,6 +305,7 @@ public: * @deprecated ICU 2.4. Use Calendar::inDaylightTime() instead. */ virtual UBool inDaylightTime(UDate date, UErrorCode& status) const; +#endif // U_FORCE_HIDE_DEPRECATED_API /** * Returns true if this zone has the same rule and offset as another zone. @@ -453,5 +457,7 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif // VTZONE_H //eof diff --git a/source/i18n/unum.cpp b/source/i18n/unum.cpp index c0bb9cb..cce3db7 100644 --- a/source/i18n/unum.cpp +++ b/source/i18n/unum.cpp @@ -135,6 +135,11 @@ unum_open( UNumberFormatStyle style, *status = U_MEMORY_ALLOCATION_ERROR; } + if (U_FAILURE(*status) && retVal != NULL) { + delete retVal; + retVal = NULL; + } + return reinterpret_cast(retVal); } diff --git a/source/i18n/usearch.cpp b/source/i18n/usearch.cpp index 187ea8e..8866de7 100644 --- a/source/i18n/usearch.cpp +++ b/source/i18n/usearch.cpp @@ -317,7 +317,7 @@ inline uint16_t initializePatternCETable(UStringSearch *strsrch, uprv_free(pattern->ces); } - uint16_t offset = 0; + uint32_t offset = 0; uint16_t result = 0; int32_t ce; @@ -388,7 +388,7 @@ inline uint16_t initializePatternPCETable(UStringSearch *strsrch, uprv_free(pattern->pces); } - uint16_t offset = 0; + uint32_t offset = 0; uint16_t result = 0; int64_t pce; @@ -1351,7 +1351,7 @@ inline int getUnblockedAccentIndex(UChar *accents, int32_t *accentsindex) * @param destinationlength target array size, returning the appended length * @param source1 null-terminated first array * @param source2 second array -* @param source2length length of seond array +* @param source2length length of second array * @param source3 null-terminated third array * @param status error status if any * @return new destination array, destination if there was no new allocation @@ -1560,7 +1560,7 @@ inline void cleanUpSafeText(const UStringSearch *strsrch, UChar *safetext, /** * Take the rearranged end accents and tries matching. If match failed at -* a seperate preceding set of accents (seperated from the rearranged on by +* a separate preceding set of accents (separated from the rearranged on by * at least a base character) then we rearrange the preceding accents and * tries matching again. * We allow skipping of the ends of the accent set if the ces do not match. @@ -2220,7 +2220,7 @@ int32_t doPreviousCanonicalSuffixMatch(UStringSearch *strsrch, /** * Take the rearranged start accents and tries matching. If match failed at -* a seperate following set of accents (seperated from the rearranged on by +* a separate following set of accents (separated from the rearranged on by * at least a base character) then we rearrange the preceding accents and * tries matching again. * We allow skipping of the ends of the accent set if the ces do not match. @@ -3544,7 +3544,12 @@ const CEI *CEIBuffer::get(int32_t index) { // Verify that it is the next one in sequence, which is all // that is allowed. if (index != limitIx) { - UPRV_UNREACHABLE; + U_ASSERT(FALSE); + // TODO: In ICU 64 the above assert was changed to use UPRV_UNREACHABLE instead + // which unconditionally calls abort(). However, there were cases where this was + // being hit. This change is reverted for now, restoring the existing behavior. + // ICU-20792 tracks the follow-up work/further investigation on this. + return NULL; } // Manage the circular CE buffer indexing @@ -3581,7 +3586,12 @@ const CEI *CEIBuffer::getPrevious(int32_t index) { // Verify that it is the next one in sequence, which is all // that is allowed. if (index != limitIx) { - UPRV_UNREACHABLE; + U_ASSERT(FALSE); + // TODO: In ICU 64 the above assert was changed to use UPRV_UNREACHABLE instead + // which unconditionally calls abort(). However, there were cases where this was + // being hit. This change is reverted for now, restoring the existing behavior. + // ICU-20792 tracks the follow-up work/further investigation on this. + return NULL; } // Manage the circular CE buffer indexing @@ -3852,7 +3862,7 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, #endif // Input parameter sanity check. - // TODO: should input indicies clip to the text length + // TODO: should input indices clip to the text length // in the same way that UText does. if(strsrch->pattern.cesLength == 0 || startIdx < 0 || @@ -4014,7 +4024,7 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, // Check for the start of the match being within an Collation Element Expansion, // meaning that the first char of the match is only partially matched. - // With exapnsions, the first CE will report the index of the source + // With expansions, the first CE will report the index of the source // character, and all subsequent (expansions) CEs will report the source index of the // _following_ character. int32_t secondIx = firstCEI->highIndex; diff --git a/source/i18n/uspoof.cpp b/source/i18n/uspoof.cpp index a6be2e0..5b7b326 100644 --- a/source/i18n/uspoof.cpp +++ b/source/i18n/uspoof.cpp @@ -349,7 +349,7 @@ uspoof_setAllowedUnicodeSet(USpoofChecker *sc, const UnicodeSet *chars, UErrorCo *status = U_ILLEGAL_ARGUMENT_ERROR; return; } - UnicodeSet *clonedSet = static_cast(chars->clone()); + UnicodeSet *clonedSet = chars->clone(); if (clonedSet == NULL || clonedSet->isBogus()) { *status = U_MEMORY_ALLOCATION_ERROR; return; diff --git a/source/i18n/uspoof_impl.cpp b/source/i18n/uspoof_impl.cpp index 5087637..88245b7 100644 --- a/source/i18n/uspoof_impl.cpp +++ b/source/i18n/uspoof_impl.cpp @@ -82,7 +82,7 @@ SpoofImpl::SpoofImpl(const SpoofImpl &src, UErrorCode &status) : if (src.fSpoofData != NULL) { fSpoofData = src.fSpoofData->addReference(); } - fAllowedCharsSet = static_cast(src.fAllowedCharsSet->clone()); + fAllowedCharsSet = src.fAllowedCharsSet->clone(); fAllowedLocales = uprv_strdup(src.fAllowedLocales); if (fAllowedCharsSet == NULL || fAllowedLocales == NULL) { status = U_MEMORY_ALLOCATION_ERROR; @@ -193,7 +193,7 @@ void SpoofImpl::setAllowedLocales(const char *localesList, UErrorCode &status) { } // Store the updated spoof checker state. - tmpSet = static_cast(allowedChars.clone()); + tmpSet = allowedChars.clone(); const char *tmpLocalesList = uprv_strdup(localesList); if (tmpSet == NULL || tmpLocalesList == NULL) { status = U_MEMORY_ALLOCATION_ERROR; diff --git a/source/i18n/vtzone.cpp b/source/i18n/vtzone.cpp index cb84c62..fa8c339 100644 --- a/source/i18n/vtzone.cpp +++ b/source/i18n/vtzone.cpp @@ -965,7 +965,7 @@ VTimeZone::VTimeZone(const VTimeZone& source) tzurl(source.tzurl), lastmod(source.lastmod), olsonzid(source.olsonzid), icutzver(source.icutzver) { if (source.tz != NULL) { - tz = (BasicTimeZone*)source.tz->clone(); + tz = source.tz->clone(); } if (source.vtzlines != NULL) { UErrorCode status = U_ZERO_ERROR; @@ -1007,7 +1007,7 @@ VTimeZone::operator=(const VTimeZone& right) { tz = NULL; } if (right.tz != NULL) { - tz = (BasicTimeZone*)right.tz->clone(); + tz = right.tz->clone(); } if (vtzlines != NULL) { delete vtzlines; @@ -1092,7 +1092,7 @@ VTimeZone::createVTimeZoneFromBasicTimeZone(const BasicTimeZone& basic_time_zone status = U_MEMORY_ALLOCATION_ERROR; return NULL; } - vtz->tz = (BasicTimeZone *)basic_time_zone.clone(); + vtz->tz = basic_time_zone.clone(); if (vtz->tz == NULL) { status = U_MEMORY_ALLOCATION_ERROR; delete vtz; @@ -1177,8 +1177,8 @@ VTimeZone::writeSimple(UDate time, UnicodeString& result, UErrorCode& status) co writeSimple(time, writer, status); } -TimeZone* -VTimeZone::clone(void) const { +VTimeZone* +VTimeZone::clone() const { return new VTimeZone(*this); } @@ -1957,7 +1957,7 @@ VTimeZone::writeZone(VTZWriter& w, BasicTimeZone& basictz, && (atzrule = dynamic_cast(tzt.getTo())) != NULL && atzrule->getEndYear() == AnnualTimeZoneRule::MAX_YEAR ) { - finalDstRule = (AnnualTimeZoneRule*)tzt.getTo()->clone(); + finalDstRule = atzrule->clone(); } if (dstCount > 0) { if (year == dstStartYear + dstCount @@ -2008,7 +2008,7 @@ VTimeZone::writeZone(VTZWriter& w, BasicTimeZone& basictz, && (atzrule = dynamic_cast(tzt.getTo())) != NULL && atzrule->getEndYear() == AnnualTimeZoneRule::MAX_YEAR ) { - finalStdRule = (AnnualTimeZoneRule*)tzt.getTo()->clone(); + finalStdRule = atzrule->clone(); } if (stdCount > 0) { if (year == stdStartYear + stdCount diff --git a/source/i18n/windtfmt.cpp b/source/i18n/windtfmt.cpp index 6a3779a..bcf272b 100644 --- a/source/i18n/windtfmt.cpp +++ b/source/i18n/windtfmt.cpp @@ -213,7 +213,7 @@ Win32DateFormat &Win32DateFormat::operator=(const Win32DateFormat &other) return *this; } -Format *Win32DateFormat::clone(void) const +Win32DateFormat *Win32DateFormat::clone() const { return new Win32DateFormat(*this); } diff --git a/source/i18n/windtfmt.h b/source/i18n/windtfmt.h index 3306905..7fe7f68 100644 --- a/source/i18n/windtfmt.h +++ b/source/i18n/windtfmt.h @@ -48,7 +48,7 @@ public: virtual ~Win32DateFormat(); - virtual Format *clone(void) const; + virtual Win32DateFormat *clone() const; Win32DateFormat &operator=(const Win32DateFormat &other); diff --git a/source/i18n/winnmfmt.cpp b/source/i18n/winnmfmt.cpp index 5637a0f..72da1be 100644 --- a/source/i18n/winnmfmt.cpp +++ b/source/i18n/winnmfmt.cpp @@ -294,7 +294,7 @@ Win32NumberFormat &Win32NumberFormat::operator=(const Win32NumberFormat &other) return *this; } -Format *Win32NumberFormat::clone(void) const +Win32NumberFormat *Win32NumberFormat::clone() const { return new Win32NumberFormat(*this); } diff --git a/source/i18n/winnmfmt.h b/source/i18n/winnmfmt.h index 6139c1f..99571d2 100644 --- a/source/i18n/winnmfmt.h +++ b/source/i18n/winnmfmt.h @@ -44,7 +44,7 @@ public: virtual ~Win32NumberFormat(); - virtual Format *clone(void) const; + virtual Win32NumberFormat *clone() const; Win32NumberFormat &operator=(const Win32NumberFormat &other); diff --git a/source/i18n/zonemeta.cpp b/source/i18n/zonemeta.cpp index 0e3ee89..72c590f 100644 --- a/source/i18n/zonemeta.cpp +++ b/source/i18n/zonemeta.cpp @@ -30,10 +30,7 @@ #include "olsontz.h" #include "uinvchar.h" -static icu::UMutex *gZoneMetaLock() { - static icu::UMutex m = U_MUTEX_INITIALIZER; - return &m; -} +static icu::UMutex gZoneMetaLock; // CLDR Canonical ID mapping table static UHashtable *gCanonicalIDCache = NULL; @@ -266,11 +263,11 @@ ZoneMeta::getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status) { } // Check if it was already cached - umtx_lock(gZoneMetaLock()); + umtx_lock(&gZoneMetaLock); { canonicalID = (const UChar *)uhash_get(gCanonicalIDCache, utzid); } - umtx_unlock(gZoneMetaLock()); + umtx_unlock(&gZoneMetaLock); if (canonicalID != NULL) { return canonicalID; @@ -351,7 +348,7 @@ ZoneMeta::getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status) { U_ASSERT(canonicalID != NULL); // canocanilD must be non-NULL here // Put the resolved canonical ID to the cache - umtx_lock(gZoneMetaLock()); + umtx_lock(&gZoneMetaLock); { const UChar* idInCache = (const UChar *)uhash_get(gCanonicalIDCache, utzid); if (idInCache == NULL) { @@ -371,7 +368,7 @@ ZoneMeta::getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status) { } } } - umtx_unlock(gZoneMetaLock()); + umtx_unlock(&gZoneMetaLock); } return canonicalID; @@ -449,14 +446,14 @@ ZoneMeta::getCanonicalCountry(const UnicodeString &tzid, UnicodeString &country, // Check if it was already cached UBool cached = FALSE; UBool singleZone = FALSE; - umtx_lock(gZoneMetaLock()); + umtx_lock(&gZoneMetaLock); { singleZone = cached = gSingleZoneCountries->contains((void*)region); if (!cached) { cached = gMultiZonesCountries->contains((void*)region); } } - umtx_unlock(gZoneMetaLock()); + umtx_unlock(&gZoneMetaLock); if (!cached) { // We need to go through all zones associated with the region. @@ -475,7 +472,7 @@ ZoneMeta::getCanonicalCountry(const UnicodeString &tzid, UnicodeString &country, delete ids; // Cache the result - umtx_lock(gZoneMetaLock()); + umtx_lock(&gZoneMetaLock); { UErrorCode ec = U_ZERO_ERROR; if (singleZone) { @@ -488,7 +485,7 @@ ZoneMeta::getCanonicalCountry(const UnicodeString &tzid, UnicodeString &country, } } } - umtx_unlock(gZoneMetaLock()); + umtx_unlock(&gZoneMetaLock); } if (singleZone) { @@ -575,11 +572,11 @@ ZoneMeta::getMetazoneMappings(const UnicodeString &tzid) { // get the mapping from cache const UVector *result = NULL; - umtx_lock(gZoneMetaLock()); + umtx_lock(&gZoneMetaLock); { result = (UVector*) uhash_get(gOlsonToMeta, tzidUChars); } - umtx_unlock(gZoneMetaLock()); + umtx_unlock(&gZoneMetaLock); if (result != NULL) { return result; @@ -593,7 +590,7 @@ ZoneMeta::getMetazoneMappings(const UnicodeString &tzid) { } // put the new one into the cache - umtx_lock(gZoneMetaLock()); + umtx_lock(&gZoneMetaLock); { // make sure it's already created result = (UVector*) uhash_get(gOlsonToMeta, tzidUChars); @@ -621,7 +618,7 @@ ZoneMeta::getMetazoneMappings(const UnicodeString &tzid) { delete tmpResult; } } - umtx_unlock(gZoneMetaLock()); + umtx_unlock(&gZoneMetaLock); return result; } diff --git a/source/io/io.vcxproj b/source/io/io.vcxproj index 4ce537c..3fca55f 100644 --- a/source/io/io.vcxproj +++ b/source/io/io.vcxproj @@ -35,126 +35,64 @@ <_ProjectFileVersion>10.0.30319.1 - .\..\..\lib\ - .\x86\Release\ - false - .\..\..\lib\ - .\x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false + + $(OutDir)\icuio.tlb + ..\..\include;..\common;%(AdditionalIncludeDirectories) U_IO_IMPLEMENTATION;%(PreprocessorDefinitions) false Level3 + Default + ProgramDatabase + $(OutDir)/icuio.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/icuio.pdb ..\common;%(AdditionalIncludeDirectories) - 0x4ab00000 + ..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - .\..\..\lib\icuio.tlb - + + - MultiThreadedDLL - true - .\x86\Release/icuio.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ - Default - - - ..\..\bin\icuio64.dll - icuuc.lib;icuin.lib;%(AdditionalDependencies) - ..\..\lib;%(AdditionalLibraryDirectories) - .\..\..\lib\icuio.pdb - false - - - ..\..\lib\icuio.lib - - - - - .\..\..\lib\icuio.tlb - - - MultiThreadedDebugDLL - .\x86\Debug/icuio.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ true - EditAndContinue - Default + MultiThreadedDebugDLL - ..\..\bin\icuio64d.dll - icuucd.lib;icuind.lib;%(AdditionalDependencies) - ..\..\lib;%(AdditionalLibraryDirectories) true - .\..\..\lib\icuiod.pdb - false - - - ..\..\lib\icuiod.lib + ..\..\$(IcuBinOutputDir)\icuio65d.dll + ..\..\$(IcuLibOutputDir)\icuiod.pdb + ..\..\$(IcuLibOutputDir)\icuiod.lib + icuucd.lib;icuind.lib;%(AdditionalDependencies) - - - .\..\..\lib64\icuio.tlb - + + MultiThreadedDLL true - .\x64\Release/icuio.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Default - ..\..\bin64\icuio64.dll + ..\..\$(IcuBinOutputDir)\icuio65.dll + ..\..\$(IcuLibOutputDir)\icuio.pdb + ..\..\$(IcuLibOutputDir)\icuio.lib icuuc.lib;icuin.lib;%(AdditionalDependencies) - ..\..\lib64;%(AdditionalLibraryDirectories) - .\..\..\lib64\icuio.pdb - ..\..\lib64\icuio.lib - - - - - .\..\..\lib64\icuio.tlb - - - MultiThreadedDebugDLL - .\x64\Debug/icuio.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - true - ProgramDatabase - Default - - - ..\..\bin64\icuio64d.dll - icuucd.lib;icuind.lib;%(AdditionalDependencies) - ..\..\lib64;%(AdditionalLibraryDirectories) - true - .\..\..\lib64\icuiod.pdb - ..\..\lib64\icuiod.lib diff --git a/source/io/locbund.cpp b/source/io/locbund.cpp index c4ef195..46c97bc 100644 --- a/source/io/locbund.cpp +++ b/source/io/locbund.cpp @@ -47,7 +47,7 @@ U_CDECL_END static inline UNumberFormat * copyInvariantFormatter(ULocaleBundle *result, UNumberFormatStyle style) { U_NAMESPACE_USE - static UMutex gLock = U_MUTEX_INITIALIZER; + static UMutex gLock; Mutex lock(&gLock); if (result->fNumberFormat[style-1] == NULL) { if (gPosixNumberFormat[style-1] == NULL) { diff --git a/source/io/ucln_io.cpp b/source/io/ucln_io.cpp index 7a7216b..5cd367c 100644 --- a/source/io/ucln_io.cpp +++ b/source/io/ucln_io.cpp @@ -16,6 +16,7 @@ * created by: George Rhoten */ +#include "unicode/utypes.h" #include "mutex.h" #include "ucln.h" #include "ucln_io.h" diff --git a/source/io/unicode/ustream.h b/source/io/unicode/ustream.h index c10ce6a..927342c 100644 --- a/source/io/unicode/ustream.h +++ b/source/io/unicode/ustream.h @@ -17,6 +17,10 @@ #ifndef USTREAM_H #define USTREAM_H +#include "unicode/utypes.h" + +#if U_SHOW_CPLUSPLUS_API + #include "unicode/unistr.h" #if !UCONFIG_NO_CONVERSION // not available without conversion @@ -60,4 +64,6 @@ U_NAMESPACE_END /* No operator for UChar because it can conflict with wchar_t */ +#endif /* U_SHOW_CPLUSPLUS_API */ + #endif diff --git a/source/layoutex/layoutex.vcxproj b/source/layoutex/layoutex.vcxproj index c7ae3b6..efa1a33 100644 --- a/source/layoutex/layoutex.vcxproj +++ b/source/layoutex/layoutex.vcxproj @@ -54,9 +54,6 @@ U_LAYOUTEX_IMPLEMENTATION;%(PreprocessorDefinitions) Level3 - - 0x4ac80000 - @@ -73,11 +70,10 @@ Default - ..\..\bin\iculx64.dll + ..\..\bin\iculx65.dll icuuc.lib;%(AdditionalDependencies) .\..\..\lib;%(AdditionalLibraryDirectories) .\..\..\lib\iculx.pdb - false ..\..\lib\iculx.lib @@ -99,12 +95,11 @@ Default - ..\..\bin\iculx64d.dll + ..\..\bin\iculx65d.dll icuucd.lib;%(AdditionalDependencies) .\..\..\lib;%(AdditionalLibraryDirectories) true .\..\..\lib\iculxd.pdb - false ..\..\lib\iculxd.lib @@ -125,7 +120,7 @@ Default - ..\..\bin64\iculx64.dll + ..\..\bin64\iculx65.dll icuuc.lib;%(AdditionalDependencies) .\..\..\lib64;%(AdditionalLibraryDirectories) .\..\..\lib64\iculx.pdb @@ -148,7 +143,7 @@ Default - ..\..\bin64\iculx64d.dll + ..\..\bin64\iculx65d.dll icuucd.lib;%(AdditionalDependencies) .\..\..\lib64;%(AdditionalLibraryDirectories) true diff --git a/source/data/buildtool/renderers/windows_exec.py b/source/python/icutools/__init__.py similarity index 53% rename from source/data/buildtool/renderers/windows_exec.py rename to source/python/icutools/__init__.py index 680fc24..514ea27 100644 --- a/source/data/buildtool/renderers/windows_exec.py +++ b/source/python/icutools/__init__.py @@ -1,7 +1,4 @@ -# Copyright (C) 2018 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html - -from . import common_exec - -def run(**kwargs): - return common_exec.run(is_windows=True, **kwargs) +# Copyright (C) 2018 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +# This is the root ICU namespace for build tools. diff --git a/source/data/buildtool/__init__.py b/source/python/icutools/databuilder/__init__.py similarity index 97% rename from source/data/buildtool/__init__.py rename to source/python/icutools/databuilder/__init__.py index 7d7bdb7..be93616 100644 --- a/source/data/buildtool/__init__.py +++ b/source/python/icutools/databuilder/__init__.py @@ -1,16 +1,16 @@ -# Copyright (C) 2018 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html - -from collections import namedtuple - -LocalFile = namedtuple("LocalFile", ["dirname", "filename"]) -SrcFile = namedtuple("SrcFile", ["filename"]) -InFile = namedtuple("InFile", ["filename"]) -TmpFile = namedtuple("TmpFile", ["filename"]) -OutFile = namedtuple("OutFile", ["filename"]) -PkgFile = namedtuple("PkgFile", ["filename"]) - -IcuTool = namedtuple("IcuTool", ["name"]) -SystemTool = namedtuple("SystemTool", ["name"]) - -DepTarget = namedtuple("DepTarget", ["name"]) +# Copyright (C) 2018 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +from collections import namedtuple + +LocalFile = namedtuple("LocalFile", ["dirname", "filename"]) +SrcFile = namedtuple("SrcFile", ["filename"]) +InFile = namedtuple("InFile", ["filename"]) +TmpFile = namedtuple("TmpFile", ["filename"]) +OutFile = namedtuple("OutFile", ["filename"]) +PkgFile = namedtuple("PkgFile", ["filename"]) + +IcuTool = namedtuple("IcuTool", ["name"]) +SystemTool = namedtuple("SystemTool", ["name"]) + +DepTarget = namedtuple("DepTarget", ["name"]) diff --git a/source/data/buildtool/__main__.py b/source/python/icutools/databuilder/__main__.py similarity index 75% rename from source/data/buildtool/__main__.py rename to source/python/icutools/databuilder/__main__.py index d50792b..5d843d9 100644 --- a/source/data/buildtool/__main__.py +++ b/source/python/icutools/databuilder/__main__.py @@ -1,292 +1,347 @@ -# Copyright (C) 2018 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html - -# Python 2/3 Compatibility (ICU-20299) -# TODO(ICU-20301): Remove this. -from __future__ import print_function - -import argparse -import glob as pyglob -import json -import os -import sys - -from . import * -from .comment_stripper import CommentStripper -from .request_types import CopyRequest -from .renderers import makefile, unix_exec, windows_exec -from . import filtration, utils -import BUILDRULES - -flag_parser = argparse.ArgumentParser( - description = """Generates rules for building ICU binary data files from text -and other input files in source control. - -Use the --mode option to declare how to execute those rules, either exporting -the rules to a Makefile or spawning child processes to run them immediately: - - --mode=gnumake prints a Makefile to standard out. - --mode=unix-exec spawns child processes in a Unix-like environment. - --mode=windows-exec spawns child processes in a Windows-like environment. - -Tips for --mode=unix-exec -========================= - -Create two empty directories for out_dir and tmp_dir. They will get filled -with a lot of intermediate files. - -Set LD_LIBRARY_PATH to include the lib directory. e.g., from icu4c/source: - - $ LD_LIBRARY_PATH=lib PYTHONPATH=data python3 -m buildtool ... - -Once buildtool finishes, you have compiled the data, but you have not packaged -it into a .dat or .so file. This is done by the separate pkgdata tool in bin. -Read the docs of pkgdata: - - $ LD_LIBRARY_PATH=lib ./bin/pkgdata --help - -Example command line to call pkgdata: - - $ LD_LIBRARY_PATH=lib ./bin/pkgdata -m common -p icudt63l -c \\ - -O data/icupkg.inc -s $OUTDIR -d $TMPDIR $TMPDIR/icudata.lst - -where $OUTDIR and $TMPDIR are your out and tmp directories, respectively. -The above command will create icudt63l.dat in the tmpdir. - -Command-Line Arguments -====================== -""", - formatter_class = argparse.RawDescriptionHelpFormatter -) - -arg_group_required = flag_parser.add_argument_group("required arguments") -arg_group_required.add_argument( - "--mode", - help = "What to do with the generated rules.", - choices = ["gnumake", "unix-exec", "windows-exec"], - required = True -) - -flag_parser.add_argument( - "--src_dir", - help = "Path to data source folder (icu4c/source/data).", - default = "." -) -flag_parser.add_argument( - "--filter_file", - metavar = "PATH", - help = "Path to an ICU data filter JSON file.", - default = None -) -flag_parser.add_argument( - "--include_uni_core_data", - help = "Include the full Unicode core data in the dat file.", - default = False, - action = "store_true" -) -flag_parser.add_argument( - "--seqmode", - help = "Whether to optimize rules to be run sequentially (fewer threads) or in parallel (many threads). Defaults to 'sequential', which is better for unix-exec and windows-exec modes. 'parallel' is often better for massively parallel build systems.", - choices = ["sequential", "parallel"], - default = "sequential" -) - -arg_group_exec = flag_parser.add_argument_group("arguments for unix-exec and windows-exec modes") -arg_group_exec.add_argument( - "--out_dir", - help = "Path to where to save output data files.", - default = "icudata" -) -arg_group_exec.add_argument( - "--tmp_dir", - help = "Path to where to save temporary files.", - default = "icutmp" -) -arg_group_exec.add_argument( - "--tool_dir", - help = "Path to where to find binary tools (genrb, etc).", - default = "../bin" -) -arg_group_exec.add_argument( - "--tool_cfg", - help = "The build configuration of the tools. Used in 'windows-exec' mode only.", - default = "x86/Debug" -) - - -class Config(object): - - def __init__(self, args): - # Process arguments - self.max_parallel = (args.seqmode == "parallel") - - # Boolean: Whether to include core Unicode data files in the .dat file - self.include_uni_core_data = args.include_uni_core_data - - # Default fields before processing filter file - self.filters_json_data = {} - - # Process filter file - if args.filter_file: - try: - with open(args.filter_file, "r") as f: - print("Note: Applying filters from %s." % args.filter_file, file=sys.stderr) - self._parse_filter_file(f) - except IOError: - print("Error: Could not read filter file %s." % args.filter_file, file=sys.stderr) - exit(1) - - # Either "unihan" or "implicithan" - self.coll_han_type = "unihan" - if "collationUCAData" in self.filters_json_data: - self.coll_han_type = self.filters_json_data["collationUCAData"] - - def _parse_filter_file(self, f): - # Use the Hjson parser if it is available; otherwise, use vanilla JSON. - try: - import hjson - self.filters_json_data = hjson.load(f) - except ImportError: - self.filters_json_data = json.load(CommentStripper(f)) - - # Optionally pre-validate the JSON schema before further processing. - # Some schema errors will be caught later, but this step ensures - # maximal validity. - try: - import jsonschema - schema_path = os.path.join(os.path.dirname(__file__), "filtration_schema.json") - with open(schema_path) as schema_f: - schema = json.load(CommentStripper(schema_f)) - validator = jsonschema.Draft4Validator(schema) - for error in validator.iter_errors(self.filters_json_data, schema): - print("WARNING: ICU data filter JSON file:", error.message, - "at", "".join( - "[%d]" % part if isinstance(part, int) else ".%s" % part - for part in error.absolute_path - ), - file=sys.stderr) - except ImportError: - print("Tip: to validate your filter file, install the Pip package 'jsonschema'", file=sys.stderr) - pass - - -def add_copy_input_requests(requests, config, common_vars): - files_to_copy = set() - for request in requests: - for f in request.all_input_files(): - if isinstance(f, InFile): - files_to_copy.add(f) - - result = [] - id = 0 - - json_data = config.filters_json_data["fileReplacements"] - dirname = json_data["directory"] - for directive in json_data["replacements"]: - input_file = LocalFile(dirname, directive["src"]) - output_file = InFile(directive["dest"]) - result += [ - CopyRequest( - name = "input_copy_%d" % id, - input_file = input_file, - output_file = output_file - ) - ] - files_to_copy.remove(output_file) - id += 1 - - for f in files_to_copy: - result += [ - CopyRequest( - name = "input_copy_%d" % id, - input_file = SrcFile(f.filename), - output_file = f - ) - ] - id += 1 - - result += requests - return result - - -def main(): - args = flag_parser.parse_args() - config = Config(args) - - if args.mode == "gnumake": - makefile_vars = { - "SRC_DIR": "$(srcdir)", - "IN_DIR": "$(srcdir)", - "INDEX_NAME": "res_index" - } - makefile_env = ["ICUDATA_CHAR", "OUT_DIR", "TMP_DIR"] - common = { - key: "$(%s)" % key - for key in list(makefile_vars.keys()) + makefile_env - } - common["GLOB_DIR"] = args.src_dir - else: - common = { - # GLOB_DIR is used now, whereas IN_DIR is used during execution phase. - # There is no useful distinction in unix-exec or windows-exec mode. - "GLOB_DIR": args.src_dir, - "SRC_DIR": args.src_dir, - "IN_DIR": args.src_dir, - "OUT_DIR": args.out_dir, - "TMP_DIR": args.tmp_dir, - "INDEX_NAME": "res_index", - # TODO: Pull this from configure script: - "ICUDATA_CHAR": "l" - } - - def glob(pattern): - result_paths = pyglob.glob("{GLOB_DIR}/{PATTERN}".format( - GLOB_DIR = args.src_dir, - PATTERN = pattern - )) - # For the purposes of buildtool, force Unix-style directory separators. - return [v.replace("\\", "/")[len(args.src_dir)+1:] for v in sorted(result_paths)] - - requests = BUILDRULES.generate(config, glob, common) - requests = filtration.apply_filters(requests, config) - requests = utils.flatten_requests(requests, config, common) - - if "fileReplacements" in config.filters_json_data: - tmp_in_dir = "{TMP_DIR}/in".format(**common) - if makefile_vars: - makefile_vars["IN_DIR"] = tmp_in_dir - else: - common["IN_DIR"] = tmp_in_dir - requests = add_copy_input_requests(requests, config, common) - - build_dirs = utils.compute_directories(requests) - - if args.mode == "gnumake": - print(makefile.get_gnumake_rules( - build_dirs, - requests, - makefile_vars, - common_vars = common - )) - elif args.mode == "windows-exec": - return windows_exec.run( - build_dirs = build_dirs, - requests = requests, - common_vars = common, - tool_dir = args.tool_dir, - tool_cfg = args.tool_cfg - ) - elif args.mode == "unix-exec": - return unix_exec.run( - build_dirs = build_dirs, - requests = requests, - common_vars = common, - tool_dir = args.tool_dir - ) - else: - print("Mode not supported: %s" % args.mode) - return 1 - return 0 - -if __name__ == "__main__": - exit(main()) +# Copyright (C) 2018 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +# Python 2/3 Compatibility (ICU-20299) +# TODO(ICU-20301): Remove this. +from __future__ import print_function + +import argparse +import glob as pyglob +import json +import os +import sys + +from . import * +from .comment_stripper import CommentStripper +from .request_types import CopyRequest +from .renderers import makefile, common_exec +from . import filtration, utils + +flag_parser = argparse.ArgumentParser( + description = """Generates rules for building ICU binary data files from text +and other input files in source control. + +Use the --mode option to declare how to execute those rules, either exporting +the rules to a Makefile or spawning child processes to run them immediately: + + --mode=gnumake prints a Makefile to standard out. + --mode=unix-exec spawns child processes in a Unix-like environment. + --mode=windows-exec spawns child processes in a Windows-like environment. + +Tips for --mode=unix-exec +========================= + +Create two empty directories for out_dir and tmp_dir. They will get filled +with a lot of intermediate files. + +Set LD_LIBRARY_PATH to include the lib directory. e.g., from icu4c/source: + + $ LD_LIBRARY_PATH=lib PYTHONPATH=python python3 -m icutools.databuilder ... + +Once icutools.databuilder finishes, you have compiled the data, but you have +not packaged it into a .dat or .so file. This is done by the separate pkgdata +tool in bin. Read the docs of pkgdata: + + $ LD_LIBRARY_PATH=lib ./bin/pkgdata --help + +Example command line to call pkgdata: + + $ LD_LIBRARY_PATH=lib ./bin/pkgdata -m common -p icudt63l -c \\ + -O data/icupkg.inc -s $OUTDIR -d $TMPDIR $TMPDIR/icudata.lst + +where $OUTDIR and $TMPDIR are your out and tmp directories, respectively. +The above command will create icudt63l.dat in the tmpdir. + +Command-Line Arguments +====================== +""", + formatter_class = argparse.RawDescriptionHelpFormatter +) + +arg_group_required = flag_parser.add_argument_group("required arguments") +arg_group_required.add_argument( + "--mode", + help = "What to do with the generated rules.", + choices = ["gnumake", "unix-exec", "windows-exec", "bazel-exec"], + required = True +) + +flag_parser.add_argument( + "--src_dir", + help = "Path to data source folder (icu4c/source/data).", + default = "." +) +flag_parser.add_argument( + "--filter_file", + metavar = "PATH", + help = "Path to an ICU data filter JSON file.", + default = None +) +flag_parser.add_argument( + "--include_uni_core_data", + help = "Include the full Unicode core data in the dat file.", + default = False, + action = "store_true" +) +flag_parser.add_argument( + "--seqmode", + help = "Whether to optimize rules to be run sequentially (fewer threads) or in parallel (many threads). Defaults to 'sequential', which is better for unix-exec and windows-exec modes. 'parallel' is often better for massively parallel build systems.", + choices = ["sequential", "parallel"], + default = "sequential" +) +flag_parser.add_argument( + "--verbose", + help = "Print more verbose output (default false).", + default = False, + action = "store_true" +) + +arg_group_exec = flag_parser.add_argument_group("arguments for unix-exec and windows-exec modes") +arg_group_exec.add_argument( + "--out_dir", + help = "Path to where to save output data files.", + default = "icudata" +) +arg_group_exec.add_argument( + "--tmp_dir", + help = "Path to where to save temporary files.", + default = "icutmp" +) +arg_group_exec.add_argument( + "--tool_dir", + help = "Path to where to find binary tools (genrb, etc).", + default = "../bin" +) +arg_group_exec.add_argument( + "--tool_cfg", + help = "The build configuration of the tools. Used in 'windows-exec' mode only.", + default = "x86/Debug" +) + + +class Config(object): + + def __init__(self, args): + # Process arguments + self.max_parallel = (args.seqmode == "parallel") + + # Boolean: Whether to include core Unicode data files in the .dat file + self.include_uni_core_data = args.include_uni_core_data + + # Default fields before processing filter file + self.filters_json_data = {} + self.filter_dir = "ERROR_NO_FILTER_FILE" + + # Process filter file + if args.filter_file: + try: + with open(args.filter_file, "r") as f: + print("Note: Applying filters from %s." % args.filter_file, file=sys.stderr) + self._parse_filter_file(f) + except IOError: + print("Error: Could not read filter file %s." % args.filter_file, file=sys.stderr) + exit(1) + self.filter_dir = os.path.abspath(os.path.dirname(args.filter_file)) + + # Either "unihan" or "implicithan" + self.coll_han_type = "unihan" + if "collationUCAData" in self.filters_json_data: + self.coll_han_type = self.filters_json_data["collationUCAData"] + + # Either "additive" or "subtractive" + self.strategy = "subtractive" + if "strategy" in self.filters_json_data: + self.strategy = self.filters_json_data["strategy"] + + # True or False (could be extended later to support enum/list) + self.use_pool_bundle = True + if "usePoolBundle" in self.filters_json_data: + self.use_pool_bundle = self.filters_json_data["usePoolBundle"] + + def _parse_filter_file(self, f): + # Use the Hjson parser if it is available; otherwise, use vanilla JSON. + try: + import hjson + self.filters_json_data = hjson.load(f) + except ImportError: + self.filters_json_data = json.load(CommentStripper(f)) + + # Optionally pre-validate the JSON schema before further processing. + # Some schema errors will be caught later, but this step ensures + # maximal validity. + try: + import jsonschema + schema_path = os.path.join(os.path.dirname(__file__), "filtration_schema.json") + with open(schema_path) as schema_f: + schema = json.load(CommentStripper(schema_f)) + validator = jsonschema.Draft4Validator(schema) + for error in validator.iter_errors(self.filters_json_data, schema): + print("WARNING: ICU data filter JSON file:", error.message, + "at", "".join( + "[%d]" % part if isinstance(part, int) else ".%s" % part + for part in error.absolute_path + ), + file=sys.stderr) + except ImportError: + print("Tip: to validate your filter file, install the Pip package 'jsonschema'", file=sys.stderr) + pass + + +def add_copy_input_requests(requests, config, common_vars): + files_to_copy = set() + for request in requests: + request_files = request.all_input_files() + # Also add known dependency txt files as possible inputs. + # This is required for translit rule files. + if hasattr(request, "dep_targets"): + request_files += [ + f for f in request.dep_targets if isinstance(f, InFile) + ] + for f in request_files: + if isinstance(f, InFile): + files_to_copy.add(f) + + result = [] + id = 0 + + json_data = config.filters_json_data["fileReplacements"] + dirname = json_data["directory"] + for directive in json_data["replacements"]: + if type(directive) == str: + input_file = LocalFile(dirname, directive) + output_file = InFile(directive) + else: + input_file = LocalFile(dirname, directive["src"]) + output_file = InFile(directive["dest"]) + result += [ + CopyRequest( + name = "input_copy_%d" % id, + input_file = input_file, + output_file = output_file + ) + ] + files_to_copy.remove(output_file) + id += 1 + + for f in files_to_copy: + result += [ + CopyRequest( + name = "input_copy_%d" % id, + input_file = SrcFile(f.filename), + output_file = f + ) + ] + id += 1 + + result += requests + return result + + +def main(argv): + args = flag_parser.parse_args(argv) + config = Config(args) + + if args.mode == "gnumake": + makefile_vars = { + "SRC_DIR": "$(srcdir)", + "IN_DIR": "$(srcdir)", + "INDEX_NAME": "res_index" + } + makefile_env = ["ICUDATA_CHAR", "OUT_DIR", "TMP_DIR"] + common = { + key: "$(%s)" % key + for key in list(makefile_vars.keys()) + makefile_env + } + common["GLOB_DIR"] = args.src_dir + common["FILTERS_DIR"] = config.filter_dir + common["CWD_DIR"] = os.getcwd() + else: + makefile_vars = None + common = { + # GLOB_DIR is used now, whereas IN_DIR is used during execution phase. + # There is no useful distinction in unix-exec or windows-exec mode. + "GLOB_DIR": args.src_dir, + "SRC_DIR": args.src_dir, + "IN_DIR": args.src_dir, + "OUT_DIR": args.out_dir, + "TMP_DIR": args.tmp_dir, + "FILTERS_DIR": config.filter_dir, + "CWD_DIR": os.getcwd(), + "INDEX_NAME": "res_index", + # TODO: Pull this from configure script: + "ICUDATA_CHAR": "l" + } + + def glob(pattern): + result_paths = pyglob.glob("{GLOB_DIR}/{PATTERN}".format( + GLOB_DIR = args.src_dir, + PATTERN = pattern + )) + # For the purposes of icutools.databuilder, force Unix-style directory separators. + return [v.replace("\\", "/")[len(args.src_dir)+1:] for v in sorted(result_paths)] + + # Automatically load BUILDRULES from the src_dir + sys.path.append(args.src_dir) + try: + import BUILDRULES + except ImportError: + print("Cannot find BUILDRULES! Did you set your --src_dir?", file=sys.stderr) + sys.exit(1) + + requests = BUILDRULES.generate(config, glob, common) + + if "fileReplacements" in config.filters_json_data: + tmp_in_dir = "{TMP_DIR}/in".format(**common) + if makefile_vars: + makefile_vars["IN_DIR"] = tmp_in_dir + else: + common["IN_DIR"] = tmp_in_dir + requests = add_copy_input_requests(requests, config, common) + + requests = filtration.apply_filters(requests, config) + requests = utils.flatten_requests(requests, config, common) + + build_dirs = utils.compute_directories(requests) + + if args.mode == "gnumake": + print(makefile.get_gnumake_rules( + build_dirs, + requests, + makefile_vars, + common_vars = common + )) + elif args.mode == "windows-exec": + return common_exec.run( + platform = "windows", + build_dirs = build_dirs, + requests = requests, + common_vars = common, + tool_dir = args.tool_dir, + tool_cfg = args.tool_cfg, + verbose = args.verbose, + ) + elif args.mode == "unix-exec": + return common_exec.run( + platform = "unix", + build_dirs = build_dirs, + requests = requests, + common_vars = common, + tool_dir = args.tool_dir, + verbose = args.verbose, + ) + elif args.mode == "bazel-exec": + return common_exec.run( + platform = "bazel", + build_dirs = build_dirs, + requests = requests, + common_vars = common, + tool_dir = args.tool_dir, + verbose = args.verbose, + ) + else: + print("Mode not supported: %s" % args.mode) + return 1 + return 0 + +if __name__ == "__main__": + exit(main(sys.argv[1:])) diff --git a/source/data/buildtool/comment_stripper.py b/source/python/icutools/databuilder/comment_stripper.py similarity index 97% rename from source/data/buildtool/comment_stripper.py rename to source/python/icutools/databuilder/comment_stripper.py index 19c013e..4001f2f 100644 --- a/source/data/buildtool/comment_stripper.py +++ b/source/python/icutools/databuilder/comment_stripper.py @@ -1,51 +1,51 @@ -# Copyright (C) 2018 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html - -import io - -class CommentStripper(object): - """Removes lines starting with "//" from a file stream.""" - - def __init__(self, f): - self.f = f - self.state = 0 - - def read(self, size=-1): - bytes = self.f.read(size) - # TODO: Do we need to read more bytes if comments were stripped - # in order to obey the size request? - return "".join(self._strip_comments(bytes)) - - def _strip_comments(self, bytes): - for byte in bytes: - if self.state == 0: - # state 0: start of a line - if byte == "/": - self.state = 1 - elif byte == "\n": - self.state = 0 - yield byte - else: - self.state = 2 - yield byte - elif self.state == 1: - # state 1: read a single '/' - if byte == "/": - self.state = 3 - elif byte == "\n": - self.state = 0 - yield "/" # the one that was skipped - yield "\n" - else: - self.state = 2 - yield "/" # the one that was skipped - yield byte - elif self.state == 2: - # state 2: middle of a line, no comment - if byte == "\n": - self.state = 0 - yield byte - elif self.state == 3: - # state 3: inside a comment - if byte == "\n": - self.state = 0 +# Copyright (C) 2018 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +import io + +class CommentStripper(object): + """Removes lines starting with "//" from a file stream.""" + + def __init__(self, f): + self.f = f + self.state = 0 + + def read(self, size=-1): + bytes = self.f.read(size) + # TODO: Do we need to read more bytes if comments were stripped + # in order to obey the size request? + return "".join(self._strip_comments(bytes)) + + def _strip_comments(self, bytes): + for byte in bytes: + if self.state == 0: + # state 0: start of a line + if byte == "/": + self.state = 1 + elif byte == "\n": + self.state = 0 + yield byte + else: + self.state = 2 + yield byte + elif self.state == 1: + # state 1: read a single '/' + if byte == "/": + self.state = 3 + elif byte == "\n": + self.state = 0 + yield "/" # the one that was skipped + yield "\n" + else: + self.state = 2 + yield "/" # the one that was skipped + yield byte + elif self.state == 2: + # state 2: middle of a line, no comment + if byte == "\n": + self.state = 0 + yield byte + elif self.state == 3: + # state 3: inside a comment + if byte == "\n": + self.state = 0 diff --git a/source/data/buildtool/filtration.py b/source/python/icutools/databuilder/filtration.py similarity index 91% rename from source/data/buildtool/filtration.py rename to source/python/icutools/databuilder/filtration.py index 78edcc8..0eff5b9 100644 --- a/source/data/buildtool/filtration.py +++ b/source/python/icutools/databuilder/filtration.py @@ -1,385 +1,401 @@ -# Copyright (C) 2018 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html - -# Python 2/3 Compatibility (ICU-20299) -# TODO(ICU-20301): Remove this. -from __future__ import print_function - -from abc import abstractmethod -from collections import defaultdict -import re -import sys - -from . import * -from . import utils -from .locale_dependencies import data as DEPENDENCY_DATA -from .request_types import * - - -# Note: for this to be a proper abstract class, it should extend abc.ABC. -# There is no nice way to do this that works in both Python 2 and 3. -# TODO(ICU-20301): Make this inherit from abc.ABC. -class Filter(object): - @staticmethod - def create_from_json(json_data): - if "filterType" in json_data: - filter_type = json_data["filterType"] - else: - filter_type = "file-stem" - - if filter_type == "file-stem": - return FileStemFilter(json_data) - elif filter_type == "language": - return LanguageFilter(json_data) - elif filter_type == "regex": - return RegexFilter(json_data) - elif filter_type == "exclude": - return ExclusionFilter() - elif filter_type == "union": - return UnionFilter(json_data) - elif filter_type == "locale": - return LocaleFilter(json_data) - else: - print("Error: Unknown filterType option: %s" % filter_type, file=sys.stderr) - return None - - def filter(self, request): - if not request.apply_file_filter(self): - return [] - for file in request.all_input_files(): - assert self.match(file) - return [request] - - @classmethod - def _file_to_file_stem(cls, file): - start = file.filename.rfind("/") - limit = file.filename.rfind(".") - return file.filename[start+1:limit] - - @abstractmethod - def match(self, file): - pass - - -class InclusionFilter(Filter): - def match(self, file): - return True - - -class ExclusionFilter(Filter): - def match(self, file): - return False - - -class WhitelistBlacklistFilter(Filter): - def __init__(self, json_data): - if "whitelist" in json_data: - self.is_whitelist = True - self.whitelist = json_data["whitelist"] - else: - assert "blacklist" in json_data, "Need either whitelist or blacklist: %s" % str(json_data) - self.is_whitelist = False - self.blacklist = json_data["blacklist"] - - def match(self, file): - file_stem = self._file_to_file_stem(file) - return self._should_include(file_stem) - - @abstractmethod - def _should_include(self, file_stem): - pass - - -class FileStemFilter(WhitelistBlacklistFilter): - def _should_include(self, file_stem): - if self.is_whitelist: - return file_stem in self.whitelist - else: - return file_stem not in self.blacklist - - -class LanguageFilter(WhitelistBlacklistFilter): - def _should_include(self, file_stem): - language = file_stem.split("_")[0] - if language == "root": - # Always include root.txt - return True - if self.is_whitelist: - return language in self.whitelist - else: - return language not in self.blacklist - - -class RegexFilter(WhitelistBlacklistFilter): - def __init__(self, *args): - # TODO(ICU-20301): Change this to: super().__init__(*args) - super(RegexFilter, self).__init__(*args) - if self.is_whitelist: - self.whitelist = [re.compile(pat) for pat in self.whitelist] - else: - self.blacklist = [re.compile(pat) for pat in self.blacklist] - - def _should_include(self, file_stem): - if self.is_whitelist: - for pattern in self.whitelist: - if pattern.match(file_stem): - return True - return False - else: - for pattern in self.blacklist: - if pattern.match(file_stem): - return False - return True - - -class UnionFilter(Filter): - def __init__(self, json_data): - # Collect the sub-filters. - self.sub_filters = [] - for filter_json in json_data["unionOf"]: - self.sub_filters.append(Filter.create_from_json(filter_json)) - - def match(self, file): - """Match iff any of the sub-filters match.""" - for filter in self.sub_filters: - if filter.match(file): - return True - return False - - -LANGUAGE_SCRIPT_REGEX = re.compile(r"^([a-z]{2,3})_[A-Z][a-z]{3}$") -LANGUAGE_ONLY_REGEX = re.compile(r"^[a-z]{2,3}$") - -class LocaleFilter(Filter): - def __init__(self, json_data): - self.locales_requested = set() - self.locales_required = set() - self.include_children = json_data.get("includeChildren", True) - self.include_scripts = json_data.get("includeScripts", False) - - # Compute the requested and required locales. - for locale in json_data["whitelist"]: - self._add_locale_and_parents(locale) - - def _add_locale_and_parents(self, locale): - # Store the locale as *requested* - self.locales_requested.add(locale) - # Store the locale and its dependencies as *required* - while locale is not None: - self.locales_required.add(locale) - locale = self._get_parent_locale(locale) - - def match(self, file): - locale = self._file_to_file_stem(file) - - # A locale is *required* if it is *requested* or an ancestor of a - # *requested* locale. - if locale in self.locales_required: - return True - - # Resolve include_scripts and include_children. - return self._match_recursive(locale) - - def _match_recursive(self, locale): - # Base case: return True if we reached a *requested* locale, - # or False if we ascend out of the locale tree. - if locale is None: - return False - if locale in self.locales_requested: - return True - - # Check for alternative scripts. - # This causes sr_Latn to check sr instead of going directly to root. - if self.include_scripts: - match = LANGUAGE_SCRIPT_REGEX.match(locale) - if match and self._match_recursive(match.group(1)): - return True - - # Check if we are a descendant of a *requested* locale. - if self.include_children: - parent = self._get_parent_locale(locale) - if self._match_recursive(parent): - return True - - # No matches. - return False - - @classmethod - def _get_parent_locale(cls, locale): - if locale in DEPENDENCY_DATA["parents"]: - return DEPENDENCY_DATA["parents"][locale] - if locale in DEPENDENCY_DATA["aliases"]: - return DEPENDENCY_DATA["aliases"][locale] - if LANGUAGE_ONLY_REGEX.match(locale): - return "root" - i = locale.rfind("_") - if i < 0: - return None - return locale[:i] - - -def apply_filters(requests, config): - """Runs the filters and returns a new list of requests.""" - requests = _apply_file_filters(requests, config) - requests = _apply_resource_filters(requests, config) - return requests - - -def _apply_file_filters(old_requests, config): - """Filters out entire files.""" - filters = _preprocess_file_filters(old_requests, config) - new_requests = [] - for request in old_requests: - category = request.category - if category in filters: - new_requests += filters[category].filter(request) - else: - new_requests.append(request) - return new_requests - - -def _preprocess_file_filters(requests, config): - all_categories = set( - request.category - for request in requests - ) - all_categories.remove(None) - all_categories = list(sorted(all_categories)) - json_data = config.filters_json_data - filters = {} - for category in all_categories: - if "featureFilters" in json_data and category in json_data["featureFilters"]: - filters[category] = Filter.create_from_json( - json_data["featureFilters"][category] - ) - elif "localeFilter" in json_data and category[-5:] == "_tree": - filters[category] = Filter.create_from_json( - json_data["localeFilter"] - ) - if "featureFilters" in json_data: - for category in json_data["featureFilters"]: - if category not in all_categories: - print("Warning: category %s is not known" % category, file=sys.stderr) - return filters - - -class ResourceFilterInfo(object): - def __init__(self, category): - self.category = category - self.filter_tmp_dir = "filters/%s" % category - self.input_files = None - self.filter_files = None - self.rules_by_file = None - - def apply_to_requests(self, all_requests): - # Call this method only once per list of requests. - assert self.input_files is None - for request in all_requests: - if request.category != self.category: - continue - if not isinstance(request, AbstractExecutionRequest): - continue - if request.tool != IcuTool("genrb"): - continue - if not request.input_files: - continue - self._set_files(request.input_files) - request.dep_targets += [self.filter_files[:]] - arg_str = "--filterDir {TMP_DIR}/%s" % self.filter_tmp_dir - request.args = "%s %s" % (arg_str, request.args) - - # Make sure we found the target request - if self.input_files is None: - print("WARNING: Category not found: %s" % self.category, file=sys.stderr) - self.input_files = [] - self.filter_files = [] - self.rules_by_file = [] - - def _set_files(self, files): - # Note: The input files to genrb for a certain category should always - # be the same. For example, there are often two genrb calls: one for - # --writePoolBundle, and the other for --usePoolBundle. They are both - # expected to have the same list of input files. - if self.input_files is not None: - assert self.input_files == files - return - self.input_files = list(files) - self.filter_files = [ - TmpFile("%s/%s" % (self.filter_tmp_dir, basename)) - for basename in ( - file.filename[file.filename.rfind("/")+1:] - for file in files - ) - ] - self.rules_by_file = [[] for _ in range(len(files))] - - def add_rules(self, file_filter, rules): - for file, rule_list in zip(self.input_files, self.rules_by_file): - if file_filter.match(file): - rule_list += rules - - def make_requests(self): - # Map from rule list to filter files with that rule list - unique_rules = defaultdict(list) - for filter_file, rules in zip(self.filter_files, self.rules_by_file): - unique_rules[tuple(rules)].append(filter_file) - - new_requests = [] - i = 0 - for rules, filter_files in unique_rules.items(): - base_filter_file = filter_files[0] - new_requests += [ - PrintFileRequest( - name = "%s_print_%d" % (self.category, i), - output_file = base_filter_file, - content = self._generate_resource_filter_txt(rules) - ) - ] - i += 1 - for filter_file in filter_files[1:]: - new_requests += [ - CopyRequest( - name = "%s_copy_%d" % (self.category, i), - input_file = base_filter_file, - output_file = filter_file - ) - ] - i += 1 - return new_requests - - @classmethod - def _generate_resource_filter_txt(cls, rules): - result = "# Caution: This file is automatically generated\n\n" - result += "\n".join(rules) - return result - - -def _apply_resource_filters(all_requests, config): - """Creates filters for looking within resource bundle files.""" - json_data = config.filters_json_data - if "resourceFilters" not in json_data: - return all_requests - - collected = {} - for entry in json_data["resourceFilters"]: - if "files" in entry: - file_filter = Filter.create_from_json(entry["files"]) - else: - file_filter = InclusionFilter() - for category in entry["categories"]: - # not defaultdict because we need to pass arguments to the constructor - if category not in collected: - filter_info = ResourceFilterInfo(category) - filter_info.apply_to_requests(all_requests) - collected[category] = filter_info - else: - filter_info = collected[category] - filter_info.add_rules(file_filter, entry["rules"]) - - # Add the filter generation requests to the beginning so that by default - # they are made before genrb gets run (order is required by windirect) - new_requests = [] - for filter_info in collected.values(): - new_requests += filter_info.make_requests() - new_requests += all_requests - return new_requests +# Copyright (C) 2018 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +# Python 2/3 Compatibility (ICU-20299) +# TODO(ICU-20301): Remove this. +from __future__ import print_function + +from abc import abstractmethod +from collections import defaultdict +import re +import sys + +from . import * +from . import utils +from .locale_dependencies import data as DEPENDENCY_DATA +from .request_types import * + + +# Note: for this to be a proper abstract class, it should extend abc.ABC. +# There is no nice way to do this that works in both Python 2 and 3. +# TODO(ICU-20301): Make this inherit from abc.ABC. +class Filter(object): + @staticmethod + def create_from_json(json_data): + if "filterType" in json_data: + filter_type = json_data["filterType"] + else: + filter_type = "file-stem" + + if filter_type == "file-stem": + return FileStemFilter(json_data) + elif filter_type == "language": + return LanguageFilter(json_data) + elif filter_type == "regex": + return RegexFilter(json_data) + elif filter_type == "exclude": + return ExclusionFilter() + elif filter_type == "union": + return UnionFilter(json_data) + elif filter_type == "locale": + return LocaleFilter(json_data) + else: + print("Error: Unknown filterType option: %s" % filter_type, file=sys.stderr) + return None + + def filter(self, request): + if not request.apply_file_filter(self): + return [] + for file in request.all_input_files(): + assert self.match(file) + return [request] + + @classmethod + def _file_to_file_stem(cls, file): + start = file.filename.rfind("/") + limit = file.filename.rfind(".") + return file.filename[start+1:limit] + + @abstractmethod + def match(self, file): + pass + + +class InclusionFilter(Filter): + def match(self, file): + return True + + +class ExclusionFilter(Filter): + def match(self, file): + return False + + +class WhitelistBlacklistFilter(Filter): + def __init__(self, json_data): + if "whitelist" in json_data: + self.is_whitelist = True + self.whitelist = json_data["whitelist"] + else: + assert "blacklist" in json_data, "Need either whitelist or blacklist: %s" % str(json_data) + self.is_whitelist = False + self.blacklist = json_data["blacklist"] + + def match(self, file): + file_stem = self._file_to_file_stem(file) + return self._should_include(file_stem) + + @abstractmethod + def _should_include(self, file_stem): + pass + + +class FileStemFilter(WhitelistBlacklistFilter): + def _should_include(self, file_stem): + if self.is_whitelist: + return file_stem in self.whitelist + else: + return file_stem not in self.blacklist + + +class LanguageFilter(WhitelistBlacklistFilter): + def _should_include(self, file_stem): + language = file_stem.split("_")[0] + if language == "root": + # Always include root.txt + return True + if self.is_whitelist: + return language in self.whitelist + else: + return language not in self.blacklist + + +class RegexFilter(WhitelistBlacklistFilter): + def __init__(self, *args): + # TODO(ICU-20301): Change this to: super().__init__(*args) + super(RegexFilter, self).__init__(*args) + if self.is_whitelist: + self.whitelist = [re.compile(pat) for pat in self.whitelist] + else: + self.blacklist = [re.compile(pat) for pat in self.blacklist] + + def _should_include(self, file_stem): + if self.is_whitelist: + for pattern in self.whitelist: + if pattern.match(file_stem): + return True + return False + else: + for pattern in self.blacklist: + if pattern.match(file_stem): + return False + return True + + +class UnionFilter(Filter): + def __init__(self, json_data): + # Collect the sub-filters. + self.sub_filters = [] + for filter_json in json_data["unionOf"]: + self.sub_filters.append(Filter.create_from_json(filter_json)) + + def match(self, file): + """Match iff any of the sub-filters match.""" + for filter in self.sub_filters: + if filter.match(file): + return True + return False + + +LANGUAGE_SCRIPT_REGEX = re.compile(r"^([a-z]{2,3})_[A-Z][a-z]{3}$") +LANGUAGE_ONLY_REGEX = re.compile(r"^[a-z]{2,3}$") + +class LocaleFilter(Filter): + def __init__(self, json_data): + self.locales_requested = set() + self.locales_required = set() + self.include_children = json_data.get("includeChildren", True) + self.include_scripts = json_data.get("includeScripts", False) + + # Compute the requested and required locales. + for locale in json_data["whitelist"]: + self._add_locale_and_parents(locale) + + def _add_locale_and_parents(self, locale): + # Store the locale as *requested* + self.locales_requested.add(locale) + # Store the locale and its dependencies as *required* + while locale is not None: + self.locales_required.add(locale) + locale = self._get_parent_locale(locale) + + def match(self, file): + locale = self._file_to_file_stem(file) + + # A locale is *required* if it is *requested* or an ancestor of a + # *requested* locale. + if locale in self.locales_required: + return True + + # Resolve include_scripts and include_children. + return self._match_recursive(locale) + + def _match_recursive(self, locale): + # Base case: return True if we reached a *requested* locale, + # or False if we ascend out of the locale tree. + if locale is None: + return False + if locale in self.locales_requested: + return True + + # Check for alternative scripts. + # This causes sr_Latn to check sr instead of going directly to root. + if self.include_scripts: + match = LANGUAGE_SCRIPT_REGEX.match(locale) + if match and self._match_recursive(match.group(1)): + return True + + # Check if we are a descendant of a *requested* locale. + if self.include_children: + parent = self._get_parent_locale(locale) + if self._match_recursive(parent): + return True + + # No matches. + return False + + @classmethod + def _get_parent_locale(cls, locale): + if locale in DEPENDENCY_DATA["parents"]: + return DEPENDENCY_DATA["parents"][locale] + if locale in DEPENDENCY_DATA["aliases"]: + return DEPENDENCY_DATA["aliases"][locale] + if LANGUAGE_ONLY_REGEX.match(locale): + return "root" + i = locale.rfind("_") + if i < 0: + return None + return locale[:i] + + +def apply_filters(requests, config): + """Runs the filters and returns a new list of requests.""" + requests = _apply_file_filters(requests, config) + requests = _apply_resource_filters(requests, config) + return requests + + +def _apply_file_filters(old_requests, config): + """Filters out entire files.""" + filters = _preprocess_file_filters(old_requests, config) + new_requests = [] + for request in old_requests: + category = request.category + if category in filters: + new_requests += filters[category].filter(request) + else: + new_requests.append(request) + return new_requests + + +def _preprocess_file_filters(requests, config): + all_categories = set( + request.category + for request in requests + ) + all_categories.remove(None) + all_categories = list(sorted(all_categories)) + json_data = config.filters_json_data + filters = {} + default_filter_json = "exclude" if config.strategy == "additive" else "include" + for category in all_categories: + filter_json = default_filter_json + # Figure out the correct filter to create + if "featureFilters" in json_data and category in json_data["featureFilters"]: + filter_json = json_data["featureFilters"][category] + if filter_json == "include" and "localeFilter" in json_data and category.endswith("_tree"): + filter_json = json_data["localeFilter"] + # Resolve the filter JSON into a filter object + if filter_json == "exclude": + filters[category] = ExclusionFilter() + elif filter_json == "include": + pass # no-op + else: + filters[category] = Filter.create_from_json(filter_json) + if "featureFilters" in json_data: + for category in json_data["featureFilters"]: + if category not in all_categories: + print("Warning: category %s is not known" % category, file=sys.stderr) + return filters + + +class ResourceFilterInfo(object): + def __init__(self, category, strategy): + self.category = category + self.strategy = strategy + self.filter_tmp_dir = "filters/%s" % category + self.input_files = None + self.filter_files = None + self.rules_by_file = None + + def apply_to_requests(self, all_requests): + # Call this method only once per list of requests. + assert self.input_files is None + for request in all_requests: + if request.category != self.category: + continue + if not isinstance(request, AbstractExecutionRequest): + continue + if request.tool != IcuTool("genrb"): + continue + if not request.input_files: + continue + self._set_files(request.input_files) + request.dep_targets += [self.filter_files[:]] + arg_str = "--filterDir {TMP_DIR}/%s" % self.filter_tmp_dir + request.args = "%s %s" % (arg_str, request.args) + + # Make sure we found the target request + if self.input_files is None: + print("WARNING: Category not found: %s" % self.category, file=sys.stderr) + self.input_files = [] + self.filter_files = [] + self.rules_by_file = [] + + def _set_files(self, files): + # Note: The input files to genrb for a certain category should always + # be the same. For example, there are often two genrb calls: one for + # --writePoolBundle, and the other for --usePoolBundle. They are both + # expected to have the same list of input files. + if self.input_files is not None: + assert self.input_files == files + return + self.input_files = list(files) + self.filter_files = [ + TmpFile("%s/%s" % (self.filter_tmp_dir, basename)) + for basename in ( + file.filename[file.filename.rfind("/")+1:] + for file in files + ) + ] + if self.strategy == "additive": + self.rules_by_file = [ + [r"-/", r"+/%%ALIAS", r"+/%%Parent"] + for _ in range(len(files)) + ] + else: + self.rules_by_file = [ + [r"+/"] + for _ in range(len(files)) + ] + + def add_rules(self, file_filter, rules): + for file, rule_list in zip(self.input_files, self.rules_by_file): + if file_filter.match(file): + rule_list += rules + + def make_requests(self): + # Map from rule list to filter files with that rule list + unique_rules = defaultdict(list) + for filter_file, rules in zip(self.filter_files, self.rules_by_file): + unique_rules[tuple(rules)].append(filter_file) + + new_requests = [] + i = 0 + for rules, filter_files in unique_rules.items(): + base_filter_file = filter_files[0] + new_requests += [ + PrintFileRequest( + name = "%s_print_%d" % (self.category, i), + output_file = base_filter_file, + content = self._generate_resource_filter_txt(rules) + ) + ] + i += 1 + for filter_file in filter_files[1:]: + new_requests += [ + CopyRequest( + name = "%s_copy_%d" % (self.category, i), + input_file = base_filter_file, + output_file = filter_file + ) + ] + i += 1 + return new_requests + + @classmethod + def _generate_resource_filter_txt(cls, rules): + result = "# Caution: This file is automatically generated\n\n" + result += "\n".join(rules) + return result + + +def _apply_resource_filters(all_requests, config): + """Creates filters for looking within resource bundle files.""" + json_data = config.filters_json_data + if "resourceFilters" not in json_data: + return all_requests + + collected = {} + for entry in json_data["resourceFilters"]: + if "files" in entry: + file_filter = Filter.create_from_json(entry["files"]) + else: + file_filter = InclusionFilter() + for category in entry["categories"]: + # not defaultdict because we need to pass arguments to the constructor + if category not in collected: + filter_info = ResourceFilterInfo(category, config.strategy) + filter_info.apply_to_requests(all_requests) + collected[category] = filter_info + else: + filter_info = collected[category] + filter_info.add_rules(file_filter, entry["rules"]) + + # Add the filter generation requests to the beginning so that by default + # they are made before genrb gets run (order is required by windirect) + new_requests = [] + for filter_info in collected.values(): + new_requests += filter_info.make_requests() + new_requests += all_requests + return new_requests diff --git a/source/data/buildtool/filtration_schema.json b/source/python/icutools/databuilder/filtration_schema.json similarity index 78% rename from source/data/buildtool/filtration_schema.json rename to source/python/icutools/databuilder/filtration_schema.json index fb84688..2b7ff99 100644 --- a/source/data/buildtool/filtration_schema.json +++ b/source/python/icutools/databuilder/filtration_schema.json @@ -1,146 +1,169 @@ -// Copyright (C) 2018 and later: Unicode, Inc. and others. -// License & terms of use: http://www.unicode.org/copyright.html - -{ - "$id": "http://unicode.org/icu-filter-schema", - "$schema": "http://json-schema.org/draft-04/schema#", - "description": "JSON Schema for an ICU data filter file", - "type": "object", - "properties": { - "localeFilter": { "$ref": "#/definitions/filter" }, - "featureFilters": { - "type": "object", - "additionalProperties": { "$ref": "#/definitions/filter" } - }, - "resourceFilters": { - "type": "array", - "items": { - "type": "object", - "properties": { - "categories": { - "type": "array", - "items": { "type": "string" } - }, - "files": { "$ref": "#/definitions/filter" }, - "rules": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[+-]/((\\w+|\\*)(/\\w+|/\\*)*)?$" - } - } - }, - "required": ["categories", "rules"], - "additionalProperties": false - } - }, - "fileReplacements": { - "type": "object", - "properties": { - "directory": { "type": "string" }, - "replacements": { - "type": "array", - "items": { - "type": "object", - "properties": { - "src": { "type": "string" }, - "dest": { "type": "string" } - }, - "additionalProperties": false, - "required": ["src", "dest"] - } - } - }, - "additionalProperties": false, - "required": ["directory", "replacements"] - }, - "collationUCAData": { - "type": "string", - "enum": ["unihan", "implicithan"] - } - }, - "additionalProperties": false, - "definitions": { - "filter": { - "type": "object", - "oneOf": [ - { - "properties": { - "filterType": { - "$ref": "#/definitions/blacklistWhitelistFilterTypes" - }, - "whitelist": { "$ref": "#/definitions/stringList" } - }, - "required": ["whitelist"], - "additionalProperties": false - }, - { - "properties": { - "filterType": { - "$ref": "#/definitions/blacklistWhitelistFilterTypes" - }, - "blacklist": { "$ref": "#/definitions/stringList" } - }, - "required": ["blacklist"], - "additionalProperties": false - }, - { - "properties": { - "filterType": { - "type": "string", - "enum": ["exclude"] - } - }, - "required": ["filterType"], - "additionalProperties": false - }, - { - "properties": { - "filterType": { - "type": "string", - "enum": ["locale"] - }, - "includeChildren": { - "type": "boolean" - }, - "includeScripts": { - "type": "boolean" - }, - "whitelist": { "$ref": "#/definitions/stringList" } - }, - "required": ["filterType", "whitelist"], - "additionalProperties": false - }, - { - "properties": { - "filterType": { - "type": "string", - "enum": ["union"] - }, - "unionOf": { - "type": "array", - "items": { "$ref": "#/definitions/filter" } - } - }, - "required": ["filterType", "unionOf"], - "additionalProperties": false - } - ] - }, - "blacklistWhitelistFilterTypes": { - "type": "string", - "enum": [ - "language", - "regex" - ] - }, - "stringList": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "uniqueItems": true - } - } -} +// Copyright (C) 2018 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html + +{ + "$id": "http://unicode.org/icu-filter-schema", + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "JSON Schema for an ICU data filter file", + "type": "object", + "properties": { + "strategy": { + "type": "string", + "enum": ["additive", "subtractive"] + }, + "localeFilter": { "$ref": "#/definitions/filter" }, + "featureFilters": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { "$ref": "#/definitions/filter" }, + { + "type": "string", + "enum": ["include", "exclude"] + } + ] + } + }, + "resourceFilters": { + "type": "array", + "items": { + "type": "object", + "properties": { + "categories": { + "type": "array", + "items": { "type": "string" } + }, + "files": { "$ref": "#/definitions/filter" }, + "rules": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[+-]/[\\S]*$" + } + } + }, + "required": ["categories", "rules"], + "additionalProperties": false + } + }, + "fileReplacements": { + "type": "object", + "properties": { + "directory": { + "type": "string", + "pattern": "^(\\$SRC|\\$FILTERS|\\$CWD|/$|/[^/]+)(/[^/]+)*$" + }, + "replacements": { + "type": "array", + "items": { + "oneOf": [ + { "type": "string" }, + { + "type": "object", + "properties": { + "src": { "type": "string" }, + "dest": { "type": "string" } + }, + "additionalProperties": false, + "required": ["src", "dest"] + } + ] + } + } + }, + "additionalProperties": false, + "required": ["directory", "replacements"] + }, + "collationUCAData": { + "type": "string", + "enum": ["unihan", "implicithan"] + }, + "usePoolBundle": { + "type": "boolean" + } + }, + "additionalProperties": false, + "definitions": { + "filter": { + "type": "object", + "oneOf": [ + { + "properties": { + "filterType": { + "$ref": "#/definitions/blacklistWhitelistFilterTypes" + }, + "whitelist": { "$ref": "#/definitions/stringList" } + }, + "required": ["whitelist"], + "additionalProperties": false + }, + { + "properties": { + "filterType": { + "$ref": "#/definitions/blacklistWhitelistFilterTypes" + }, + "blacklist": { "$ref": "#/definitions/stringList" } + }, + "required": ["blacklist"], + "additionalProperties": false + }, + { + "properties": { + "filterType": { + "type": "string", + "enum": ["exclude"] + } + }, + "required": ["filterType"], + "additionalProperties": false + }, + { + "properties": { + "filterType": { + "type": "string", + "enum": ["locale"] + }, + "includeChildren": { + "type": "boolean" + }, + "includeScripts": { + "type": "boolean" + }, + "whitelist": { "$ref": "#/definitions/stringList" } + }, + "required": ["filterType", "whitelist"], + "additionalProperties": false + }, + { + "properties": { + "filterType": { + "type": "string", + "enum": ["union"] + }, + "unionOf": { + "type": "array", + "items": { "$ref": "#/definitions/filter" } + } + }, + "required": ["filterType", "unionOf"], + "additionalProperties": false + } + ] + }, + "blacklistWhitelistFilterTypes": { + "type": "string", + "enum": [ + "language", + "regex" + ] + }, + "stringList": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1, + "uniqueItems": true + } + } +} diff --git a/source/data/buildtool/locale_dependencies.py b/source/python/icutools/databuilder/locale_dependencies.py similarity index 96% rename from source/data/buildtool/locale_dependencies.py rename to source/python/icutools/databuilder/locale_dependencies.py index 33c73cf..1f8670d 100644 --- a/source/data/buildtool/locale_dependencies.py +++ b/source/python/icutools/databuilder/locale_dependencies.py @@ -1,224 +1,224 @@ -# -*- coding: utf-8 -*- -# © 2019 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html#License - -data = { - "cldrVersion": "35.1", - "aliases": { - "ars": "ar_SA", - "az_AZ": "az_Latn_AZ", - "bs_BA": "bs_Latn_BA", - "en_NH": "en_VU", - "en_RH": "en_ZW", - "ff_CM": "ff_Latn_CM", - "ff_GN": "ff_Latn_GN", - "ff_MR": "ff_Latn_MR", - "ff_SN": "ff_Latn_SN", - "in": "id", - "in_ID": "id_ID", - "iw": "he", - "iw_IL": "he_IL", - "mo": "ro", - "no_NO": "nb_NO", - "no_NO_NY": "nn_NO", - "no": "nb", - "pa_IN": "pa_Guru_IN", - "pa_PK": "pa_Arab_PK", - "sh": "sr_Latn", - "sh_BA": "sr_Latn_BA", - "sh_CS": "sr_Latn_RS", - "sh_YU": "sr_Latn_RS", - "shi_MA": "shi_Tfng_MA", - "sr_BA": "sr_Cyrl_BA", - "sr_CS": "sr_Cyrl_RS", - "sr_ME": "sr_Latn_ME", - "sr_RS": "sr_Cyrl_RS", - "sr_XK": "sr_Cyrl_XK", - "sr_YU": "sr_Cyrl_RS", - "sr_Cyrl_YU": "sr_Cyrl_RS", - "sr_Cyrl_CS": "sr_Cyrl_RS", - "sr_Latn_YU": "sr_Latn_RS", - "sr_Latn_CS": "sr_Latn_RS", - "tl": "fil", - "tl_PH": "fil_PH", - "uz_AF": "uz_Arab_AF", - "uz_UZ": "uz_Latn_UZ", - "vai_LR": "vai_Vaii_LR", - "yue_CN": "yue_Hans_CN", - "yue_HK": "yue_Hant_HK", - "zh_CN": "zh_Hans_CN", - "zh_HK": "zh_Hant_HK", - "zh_MO": "zh_Hant_MO", - "zh_SG": "zh_Hans_SG", - "zh_TW": "zh_Hant_TW" - }, - "parents": { - "ff_Adlm": "root", - "en_CM": "en_001", - "so_Arab": "root", - "en_KY": "en_001", - "en_TC": "en_001", - "yue_Hans": "root", - "en_CX": "en_001", - "es_EC": "es_419", - "es_US": "es_419", - "byn_Latn": "root", - "en_CY": "en_001", - "en_LC": "en_001", - "en_TK": "en_001", - "tg_Arab": "root", - "es_UY": "es_419", - "ky_Latn": "root", - "en_TO": "en_001", - "en_TT": "en_001", - "en_DE": "en_150", - "es_MX": "es_419", - "en_TV": "en_001", - "en_DG": "en_001", - "pt_ST": "pt_PT", - "en_DM": "en_001", - "en_LR": "en_001", - "en_TZ": "en_001", - "en_LS": "en_001", - "en_DK": "en_150", - "blt_Latn": "root", - "es_VE": "es_419", - "es_NI": "es_419", - "sd_Khoj": "root", - "pt_AO": "pt_PT", - "en_UG": "en_001", - "yo_Arab": "root", - "dje_Arab": "root", - "en_MG": "en_001", - "en_MO": "en_001", - "en_MU": "en_001", - "en_MS": "en_001", - "en_MT": "en_001", - "shi_Latn": "root", - "es_BR": "es_419", - "en_AU": "en_001", - "en_ZM": "en_001", - "en_AT": "en_150", - "es_BZ": "es_419", - "uz_Arab": "root", - "az_Cyrl": "root", - "es_SV": "es_419", - "en_ZW": "en_001", - "en_JE": "en_001", - "en_BB": "en_001", - "sd_Deva": "root", - "pa_Arab": "root", - "en_RW": "en_001", - "es_CO": "es_419", - "en_JM": "en_001", - "en_BE": "en_150", - "dyo_Arab": "root", - "es_CL": "es_419", - "en_BM": "en_001", - "en_SC": "en_001", - "es_CR": "es_419", - "en_150": "en_001", - "en_BS": "en_001", - "en_SD": "en_001", - "pt_GQ": "pt_PT", - "en_SB": "en_001", - "es_CU": "es_419", - "en_SG": "en_001", - "uz_Cyrl": "root", - "en_BW": "en_001", - "en_SH": "en_001", - "en_SE": "en_150", - "pt_GW": "pt_PT", - "ky_Arab": "root", - "en_BZ": "en_001", - "en_SL": "en_001", - "en_SI": "en_150", - "ff_Arab": "root", - "en_KE": "en_001", - "bm_Nkoo": "root", - "en_CC": "en_001", - "en_SS": "en_001", - "iu_Latn": "root", - "en_CA": "en_001", - "en_KI": "en_001", - "es_DO": "es_419", - "en_SX": "en_001", - "en_CH": "en_150", - "en_KN": "en_001", - "en_CK": "en_001", - "ml_Arab": "root", - "en_SZ": "en_001", - "pt_FR": "pt_PT", - "ug_Cyrl": "root", - "en_GY": "en_001", - "en_PH": "en_001", - "en_PG": "en_001", - "en_PK": "en_001", - "cu_Glag": "root", - "en_PN": "en_001", - "kk_Arab": "root", - "en_HK": "en_001", - "zh_Hant": "root", - "en_PW": "en_001", - "es_AR": "es_419", - "pt_MZ": "pt_PT", - "sd_Sind": "root", - "en_Shaw": "root", - "en_IE": "en_001", - "ms_Arab": "root", - "en_IM": "en_001", - "en_IN": "en_001", - "es_BO": "es_419", - "en_IL": "en_001", - "en_AI": "en_001", - "az_Arab": "root", - "en_AG": "en_001", - "en_IO": "en_001", - "en_ZA": "en_001", - "en_MY": "en_001", - "en_ER": "en_001", - "en_VC": "en_001", - "mn_Mong": "root", - "vai_Latn": "root", - "en_MW": "en_001", - "pt_LU": "pt_PT", - "bs_Cyrl": "root", - "en_VG": "en_001", - "en_NA": "en_001", - "en_NF": "en_001", - "en_NG": "en_001", - "ha_Arab": "root", - "en_NL": "en_150", - "zh_Hant_MO": "zh_Hant_HK", - "en_VU": "en_001", - "en_FJ": "en_001", - "en_NR": "en_001", - "en_FK": "en_001", - "es_GT": "es_419", - "en_FI": "en_150", - "ku_Arab": "root", - "pt_MO": "pt_PT", - "en_FM": "en_001", - "en_NU": "en_001", - "en_NZ": "en_001", - "pt_CH": "pt_PT", - "en_Dsrt": "root", - "es_PE": "es_419", - "es_PA": "es_419", - "pt_CV": "pt_PT", - "wo_Arab": "root", - "en_WS": "en_001", - "en_GD": "en_001", - "en_GB": "en_001", - "es_HN": "es_419", - "pt_TL": "pt_PT", - "en_GG": "en_001", - "en_GH": "en_001", - "es_PR": "es_419", - "sw_Arab": "root", - "en_GI": "en_001", - "sr_Latn": "root", - "en_GM": "en_001", - "es_PY": "es_419" - } -} +# -*- coding: utf-8 -*- +# © 2019 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html#License + +data = { + "cldrVersion": "36", + "aliases": { + "ars": "ar_SA", + "az_AZ": "az_Latn_AZ", + "bs_BA": "bs_Latn_BA", + "en_NH": "en_VU", + "en_RH": "en_ZW", + "ff_CM": "ff_Latn_CM", + "ff_GN": "ff_Latn_GN", + "ff_MR": "ff_Latn_MR", + "ff_SN": "ff_Latn_SN", + "in": "id", + "in_ID": "id_ID", + "iw": "he", + "iw_IL": "he_IL", + "mo": "ro", + "no_NO": "nb_NO", + "no_NO_NY": "nn_NO", + "no": "nb", + "pa_IN": "pa_Guru_IN", + "pa_PK": "pa_Arab_PK", + "sh": "sr_Latn", + "sh_BA": "sr_Latn_BA", + "sh_CS": "sr_Latn_RS", + "sh_YU": "sr_Latn_RS", + "shi_MA": "shi_Tfng_MA", + "sr_BA": "sr_Cyrl_BA", + "sr_CS": "sr_Cyrl_RS", + "sr_ME": "sr_Latn_ME", + "sr_RS": "sr_Cyrl_RS", + "sr_XK": "sr_Cyrl_XK", + "sr_YU": "sr_Cyrl_RS", + "sr_Cyrl_YU": "sr_Cyrl_RS", + "sr_Cyrl_CS": "sr_Cyrl_RS", + "sr_Latn_YU": "sr_Latn_RS", + "sr_Latn_CS": "sr_Latn_RS", + "tl": "fil", + "tl_PH": "fil_PH", + "uz_AF": "uz_Arab_AF", + "uz_UZ": "uz_Latn_UZ", + "vai_LR": "vai_Vaii_LR", + "yue_CN": "yue_Hans_CN", + "yue_HK": "yue_Hant_HK", + "zh_CN": "zh_Hans_CN", + "zh_HK": "zh_Hant_HK", + "zh_MO": "zh_Hant_MO", + "zh_SG": "zh_Hans_SG", + "zh_TW": "zh_Hant_TW" + }, + "parents": { + "ff_Adlm": "root", + "en_CM": "en_001", + "so_Arab": "root", + "en_KY": "en_001", + "en_TC": "en_001", + "yue_Hans": "root", + "en_CX": "en_001", + "es_EC": "es_419", + "es_US": "es_419", + "byn_Latn": "root", + "en_CY": "en_001", + "en_LC": "en_001", + "en_TK": "en_001", + "tg_Arab": "root", + "es_UY": "es_419", + "ky_Latn": "root", + "en_TO": "en_001", + "en_TT": "en_001", + "en_DE": "en_150", + "es_MX": "es_419", + "en_TV": "en_001", + "en_DG": "en_001", + "pt_ST": "pt_PT", + "en_DM": "en_001", + "en_LR": "en_001", + "en_TZ": "en_001", + "en_LS": "en_001", + "en_DK": "en_150", + "blt_Latn": "root", + "es_VE": "es_419", + "es_NI": "es_419", + "sd_Khoj": "root", + "pt_AO": "pt_PT", + "en_UG": "en_001", + "yo_Arab": "root", + "dje_Arab": "root", + "en_MG": "en_001", + "en_MO": "en_001", + "en_MU": "en_001", + "en_MS": "en_001", + "en_MT": "en_001", + "shi_Latn": "root", + "es_BR": "es_419", + "en_AU": "en_001", + "en_ZM": "en_001", + "en_AT": "en_150", + "es_BZ": "es_419", + "uz_Arab": "root", + "az_Cyrl": "root", + "es_SV": "es_419", + "en_ZW": "en_001", + "en_JE": "en_001", + "en_BB": "en_001", + "sd_Deva": "root", + "pa_Arab": "root", + "en_RW": "en_001", + "es_CO": "es_419", + "en_JM": "en_001", + "en_BE": "en_150", + "dyo_Arab": "root", + "es_CL": "es_419", + "en_BM": "en_001", + "en_SC": "en_001", + "es_CR": "es_419", + "en_150": "en_001", + "en_BS": "en_001", + "en_SD": "en_001", + "pt_GQ": "pt_PT", + "en_SB": "en_001", + "es_CU": "es_419", + "en_SG": "en_001", + "uz_Cyrl": "root", + "en_BW": "en_001", + "en_SH": "en_001", + "en_SE": "en_150", + "pt_GW": "pt_PT", + "ky_Arab": "root", + "en_BZ": "en_001", + "en_SL": "en_001", + "en_SI": "en_150", + "ff_Arab": "root", + "en_KE": "en_001", + "bm_Nkoo": "root", + "en_CC": "en_001", + "en_SS": "en_001", + "iu_Latn": "root", + "en_CA": "en_001", + "en_KI": "en_001", + "es_DO": "es_419", + "en_SX": "en_001", + "en_CH": "en_150", + "en_KN": "en_001", + "en_CK": "en_001", + "ml_Arab": "root", + "en_SZ": "en_001", + "pt_FR": "pt_PT", + "ug_Cyrl": "root", + "en_GY": "en_001", + "en_PH": "en_001", + "en_PG": "en_001", + "en_PK": "en_001", + "cu_Glag": "root", + "en_PN": "en_001", + "kk_Arab": "root", + "en_HK": "en_001", + "zh_Hant": "root", + "en_PW": "en_001", + "es_AR": "es_419", + "pt_MZ": "pt_PT", + "sd_Sind": "root", + "en_Shaw": "root", + "en_IE": "en_001", + "ms_Arab": "root", + "en_IM": "en_001", + "en_IN": "en_001", + "es_BO": "es_419", + "en_IL": "en_001", + "en_AI": "en_001", + "az_Arab": "root", + "en_AG": "en_001", + "en_IO": "en_001", + "en_ZA": "en_001", + "en_MY": "en_001", + "en_ER": "en_001", + "en_VC": "en_001", + "mn_Mong": "root", + "vai_Latn": "root", + "en_MW": "en_001", + "pt_LU": "pt_PT", + "bs_Cyrl": "root", + "en_VG": "en_001", + "en_NA": "en_001", + "en_NF": "en_001", + "en_NG": "en_001", + "ha_Arab": "root", + "en_NL": "en_150", + "zh_Hant_MO": "zh_Hant_HK", + "en_VU": "en_001", + "en_FJ": "en_001", + "en_NR": "en_001", + "en_FK": "en_001", + "es_GT": "es_419", + "en_FI": "en_150", + "ku_Arab": "root", + "pt_MO": "pt_PT", + "en_FM": "en_001", + "en_NU": "en_001", + "en_NZ": "en_001", + "pt_CH": "pt_PT", + "en_Dsrt": "root", + "es_PE": "es_419", + "es_PA": "es_419", + "pt_CV": "pt_PT", + "wo_Arab": "root", + "en_WS": "en_001", + "en_GD": "en_001", + "en_GB": "en_001", + "es_HN": "es_419", + "pt_TL": "pt_PT", + "en_GG": "en_001", + "en_GH": "en_001", + "es_PR": "es_419", + "sw_Arab": "root", + "en_GI": "en_001", + "sr_Latn": "root", + "en_GM": "en_001", + "es_PY": "es_419" + } +} diff --git a/source/data/buildtool/renderers/__init__.py b/source/python/icutools/databuilder/renderers/__init__.py similarity index 97% rename from source/data/buildtool/renderers/__init__.py rename to source/python/icutools/databuilder/renderers/__init__.py index 591372a..7c402c2 100644 --- a/source/data/buildtool/renderers/__init__.py +++ b/source/python/icutools/databuilder/renderers/__init__.py @@ -1,10 +1,10 @@ -# Copyright (C) 2018 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html - -from collections import namedtuple - -MakeRule = namedtuple("MakeRule", ["name", "dep_literals", "dep_files", "output_file", "cmds"]) - -MakeFilesVar = namedtuple("MakeFilesVar", ["name", "files"]) - -MakeStringVar = namedtuple("MakeStringVar", ["name", "content"]) +# Copyright (C) 2018 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +from collections import namedtuple + +MakeRule = namedtuple("MakeRule", ["name", "dep_literals", "dep_files", "output_file", "cmds"]) + +MakeFilesVar = namedtuple("MakeFilesVar", ["name", "files"]) + +MakeStringVar = namedtuple("MakeStringVar", ["name", "content"]) diff --git a/source/python/icutools/databuilder/renderers/common_exec.py b/source/python/icutools/databuilder/renderers/common_exec.py new file mode 100644 index 0000000..838b121 --- /dev/null +++ b/source/python/icutools/databuilder/renderers/common_exec.py @@ -0,0 +1,146 @@ +# Copyright (C) 2018 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +from . import * +from .. import * +from .. import utils +from ..request_types import * + +import os +import shutil +import subprocess +import sys + +def run(build_dirs, requests, common_vars, verbose=True, **kwargs): + for bd in build_dirs: + makedirs(bd.format(**common_vars)) + for request in requests: + status = run_helper(request, common_vars, verbose=verbose, **kwargs) + if status != 0: + print("!!! ERROR executing above command line: exit code %d" % status) + return 1 + if verbose: + print("All data build commands executed") + return 0 + +def makedirs(dirs): + """makedirs compatible between Python 2 and 3""" + try: + # Python 3 version + os.makedirs(dirs, exist_ok=True) + except TypeError as e: + # Python 2 version + try: + os.makedirs(dirs) + except OSError as e: + if e.errno != errno.EEXIST: + raise e + +def run_helper(request, common_vars, platform, tool_dir, verbose, tool_cfg=None, **kwargs): + if isinstance(request, PrintFileRequest): + output_path = "{DIRNAME}/{FILENAME}".format( + DIRNAME = utils.dir_for(request.output_file).format(**common_vars), + FILENAME = request.output_file.filename, + ) + if verbose: + print("Printing to file: %s" % output_path) + with open(output_path, "w") as f: + f.write(request.content) + return 0 + if isinstance(request, CopyRequest): + input_path = "{DIRNAME}/{FILENAME}".format( + DIRNAME = utils.dir_for(request.input_file).format(**common_vars), + FILENAME = request.input_file.filename, + ) + output_path = "{DIRNAME}/{FILENAME}".format( + DIRNAME = utils.dir_for(request.output_file).format(**common_vars), + FILENAME = request.output_file.filename, + ) + if verbose: + print("Copying file to: %s" % output_path) + shutil.copyfile(input_path, output_path) + return 0 + if isinstance(request, VariableRequest): + # No-op + return 0 + + assert isinstance(request.tool, IcuTool) + if platform == "windows": + cmd_template = "{TOOL_DIR}/{TOOL}/{TOOL_CFG}/{TOOL}.exe {{ARGS}}".format( + TOOL_DIR = tool_dir, + TOOL_CFG = tool_cfg, + TOOL = request.tool.name, + **common_vars + ) + elif platform == "unix": + cmd_template = "{TOOL_DIR}/{TOOL} {{ARGS}}".format( + TOOL_DIR = tool_dir, + TOOL = request.tool.name, + **common_vars + ) + elif platform == "bazel": + cmd_template = "{TOOL_DIR}/{TOOL}/{TOOL} {{ARGS}}".format( + TOOL_DIR = tool_dir, + TOOL = request.tool.name, + **common_vars + ) + else: + raise ValueError("Unknown platform: %s" % platform) + + if isinstance(request, RepeatedExecutionRequest): + for loop_vars in utils.repeated_execution_request_looper(request): + command_line = utils.format_repeated_request_command( + request, + cmd_template, + loop_vars, + common_vars + ) + if platform == "windows": + # Note: this / to \ substitution may be too aggressive? + command_line = command_line.replace("/", "\\") + returncode = run_shell_command(command_line, platform, verbose) + if returncode != 0: + return returncode + return 0 + if isinstance(request, SingleExecutionRequest): + command_line = utils.format_single_request_command( + request, + cmd_template, + common_vars + ) + if platform == "windows": + # Note: this / to \ substitution may be too aggressive? + command_line = command_line.replace("/", "\\") + returncode = run_shell_command(command_line, platform, verbose) + return returncode + assert False + +def run_shell_command(command_line, platform, verbose): + changed_windows_comspec = False + # If the command line length on Windows exceeds the absolute maximum that CMD supports (8191), then + # we temporarily switch over to use PowerShell for the command, and then switch back to CMD. + # We don't want to use PowerShell for everything though, as it tends to be slower. + if (platform == "windows") and (len(command_line) > 8190): + if verbose: + print("Command length exceeds the max length for CMD on Windows, using PowerShell instead.") + previous_comspec = os.environ["COMSPEC"] + os.environ["COMSPEC"] = 'powershell' + changed_windows_comspec = True + if verbose: + print("Running: %s" % command_line) + returncode = subprocess.call( + command_line, + shell = True + ) + else: + # Pipe output to /dev/null in quiet mode + with open(os.devnull, "w") as devnull: + returncode = subprocess.call( + command_line, + shell = True, + stdout = devnull, + stderr = devnull + ) + if changed_windows_comspec: + os.environ["COMSPEC"] = previous_comspec + return returncode diff --git a/source/data/buildtool/renderers/makefile.py b/source/python/icutools/databuilder/renderers/makefile.py similarity index 97% rename from source/data/buildtool/renderers/makefile.py rename to source/python/icutools/databuilder/renderers/makefile.py index f4c75e3..9b2005b 100644 --- a/source/data/buildtool/renderers/makefile.py +++ b/source/python/icutools/databuilder/renderers/makefile.py @@ -1,245 +1,245 @@ -# Copyright (C) 2018 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html - -# Python 2/3 Compatibility (ICU-20299) -# TODO(ICU-20301): Remove this. -from __future__ import print_function - -from . import * -from .. import * -from .. import utils -from ..request_types import * - -def get_gnumake_rules(build_dirs, requests, makefile_vars, **kwargs): - makefile_string = "" - - # Common Variables - common_vars = kwargs["common_vars"] - for key, value in sorted(makefile_vars.items()): - makefile_string += "{KEY} = {VALUE}\n".format( - KEY = key, - VALUE = value - ) - makefile_string += "\n" - - # Directories - dirs_timestamp_file = "{TMP_DIR}/dirs.timestamp".format(**common_vars) - makefile_string += "DIRS = {TIMESTAMP_FILE}\n\n".format( - TIMESTAMP_FILE = dirs_timestamp_file - ) - makefile_string += "{TIMESTAMP_FILE}:\n\t$(MKINSTALLDIRS) {ALL_DIRS}\n\techo timestamp > {TIMESTAMP_FILE}\n\n".format( - TIMESTAMP_FILE = dirs_timestamp_file, - ALL_DIRS = " ".join(build_dirs).format(**common_vars) - ) - - # Generate Rules - make_rules = [] - for request in requests: - make_rules += get_gnumake_rules_helper(request, **kwargs) - - # Main Commands - for rule in make_rules: - if isinstance(rule, MakeFilesVar): - makefile_string += "{NAME} = {FILE_LIST}\n\n".format( - NAME = rule.name, - FILE_LIST = files_to_makefile(rule.files, wrap = True, **kwargs), - ) - continue - - if isinstance(rule, MakeStringVar): - makefile_string += "define {NAME}\n{CONTENT}\nendef\nexport {NAME}\n\n".format( - NAME = rule.name, - CONTENT = rule.content - ) - continue - - assert isinstance(rule, MakeRule) - header_line = "{OUT_FILE}: {DEP_FILES} {DEP_LITERALS} | $(DIRS)".format( - OUT_FILE = files_to_makefile([rule.output_file], **kwargs), - DEP_FILES = files_to_makefile(rule.dep_files, wrap = True, **kwargs), - DEP_LITERALS = " ".join(rule.dep_literals) - ) - - if len(rule.cmds) == 0: - makefile_string += "%s\n\n" % header_line - continue - - makefile_string += "{HEADER_LINE}\n{RULE_LINES}\n\n".format( - HEADER_LINE = header_line, - RULE_LINES = "\n".join("\t%s" % cmd for cmd in rule.cmds) - ) - - return makefile_string - -def files_to_makefile(files, common_vars, wrap = False, **kwargs): - if len(files) == 0: - return "" - dirnames = [utils.dir_for(file).format(**common_vars) for file in files] - join_str = " \\\n\t\t" if wrap and len(files) > 2 else " " - if len(files) == 1: - return "%s/%s" % (dirnames[0], files[0].filename) - elif len(set(dirnames)) == 1: - return "$(addprefix %s/,%s)" % (dirnames[0], join_str.join(file.filename for file in files)) - else: - return join_str.join("%s/%s" % (d, f.filename) for d,f in zip(dirnames, files)) - -def get_gnumake_rules_helper(request, common_vars, **kwargs): - - if isinstance(request, PrintFileRequest): - var_name = "%s_CONTENT" % request.name.upper() - return [ - MakeStringVar( - name = var_name, - content = request.content - ), - MakeRule( - name = request.name, - dep_literals = [], - dep_files = [], - output_file = request.output_file, - cmds = [ - "echo \"$${VAR_NAME}\" > {MAKEFILENAME}".format( - VAR_NAME = var_name, - MAKEFILENAME = files_to_makefile([request.output_file], common_vars), - **common_vars - ) - ] - ) - ] - - - if isinstance(request, CopyRequest): - return [ - MakeRule( - name = request.name, - dep_literals = [], - dep_files = [request.input_file], - output_file = request.output_file, - cmds = ["cp %s %s" % ( - files_to_makefile([request.input_file], common_vars), - files_to_makefile([request.output_file], common_vars)) - ] - ) - ] - - if isinstance(request, VariableRequest): - return [ - MakeFilesVar( - name = request.name.upper(), - files = request.input_files - ) - ] - - if request.tool.name == "make": - cmd_template = "$(MAKE) {ARGS}" - elif request.tool.name == "gentest": - cmd_template = "$(INVOKE) $(GENTEST) {ARGS}" - else: - assert isinstance(request.tool, IcuTool) - cmd_template = "$(INVOKE) $(TOOLBINDIR)/{TOOL} {{ARGS}}".format( - TOOL = request.tool.name - ) - - if isinstance(request, SingleExecutionRequest): - cmd = utils.format_single_request_command(request, cmd_template, common_vars) - dep_files = request.all_input_files() - - if len(request.output_files) > 1: - # Special case for multiple output files: Makefile rules should have only one - # output file apiece. More information: - # https://www.gnu.org/software/automake/manual/html_node/Multiple-Outputs.html - timestamp_var_name = "%s_ALL" % request.name.upper() - timestamp_file = TmpFile("%s.timestamp" % request.name) - rules = [ - MakeFilesVar( - name = timestamp_var_name, - files = [timestamp_file] - ), - MakeRule( - name = "%s_all" % request.name, - dep_literals = [], - dep_files = dep_files, - output_file = timestamp_file, - cmds = [ - cmd, - "echo timestamp > {MAKEFILENAME}".format( - MAKEFILENAME = files_to_makefile([timestamp_file], common_vars) - ) - ] - ) - ] - for i, file in enumerate(request.output_files): - rules += [ - MakeRule( - name = "%s_%d" % (request.name, i), - dep_literals = ["$(%s)" % timestamp_var_name], - dep_files = [], - output_file = file, - cmds = [] - ) - ] - return rules - - elif len(dep_files) > 5: - # For nicer printing, for long input lists, use a helper variable. - dep_var_name = "%s_DEPS" % request.name.upper() - return [ - MakeFilesVar( - name = dep_var_name, - files = dep_files - ), - MakeRule( - name = request.name, - dep_literals = ["$(%s)" % dep_var_name], - dep_files = [], - output_file = request.output_files[0], - cmds = [cmd] - ) - ] - - else: - return [ - MakeRule( - name = request.name, - dep_literals = [], - dep_files = dep_files, - output_file = request.output_files[0], - cmds = [cmd] - ) - ] - - if isinstance(request, RepeatedExecutionRequest): - rules = [] - dep_literals = [] - # To keep from repeating the same dep files many times, make a variable. - if len(request.common_dep_files) > 0: - dep_var_name = "%s_DEPS" % request.name.upper() - dep_literals = ["$(%s)" % dep_var_name] - rules += [ - MakeFilesVar( - name = dep_var_name, - files = request.common_dep_files - ) - ] - # Add a rule for each individual file. - for loop_vars in utils.repeated_execution_request_looper(request): - (_, specific_dep_files, input_file, output_file) = loop_vars - name_suffix = input_file[input_file.filename.rfind("/")+1:input_file.filename.rfind(".")] - cmd = utils.format_repeated_request_command( - request, - cmd_template, - loop_vars, - common_vars - ) - rules += [ - MakeRule( - name = "%s_%s" % (request.name, name_suffix), - dep_literals = dep_literals, - dep_files = specific_dep_files + [input_file], - output_file = output_file, - cmds = [cmd] - ) - ] - return rules - - assert False +# Copyright (C) 2018 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +# Python 2/3 Compatibility (ICU-20299) +# TODO(ICU-20301): Remove this. +from __future__ import print_function + +from . import * +from .. import * +from .. import utils +from ..request_types import * + +def get_gnumake_rules(build_dirs, requests, makefile_vars, **kwargs): + makefile_string = "" + + # Common Variables + common_vars = kwargs["common_vars"] + for key, value in sorted(makefile_vars.items()): + makefile_string += "{KEY} = {VALUE}\n".format( + KEY = key, + VALUE = value + ) + makefile_string += "\n" + + # Directories + dirs_timestamp_file = "{TMP_DIR}/dirs.timestamp".format(**common_vars) + makefile_string += "DIRS = {TIMESTAMP_FILE}\n\n".format( + TIMESTAMP_FILE = dirs_timestamp_file + ) + makefile_string += "{TIMESTAMP_FILE}:\n\t$(MKINSTALLDIRS) {ALL_DIRS}\n\techo timestamp > {TIMESTAMP_FILE}\n\n".format( + TIMESTAMP_FILE = dirs_timestamp_file, + ALL_DIRS = " ".join(build_dirs).format(**common_vars) + ) + + # Generate Rules + make_rules = [] + for request in requests: + make_rules += get_gnumake_rules_helper(request, **kwargs) + + # Main Commands + for rule in make_rules: + if isinstance(rule, MakeFilesVar): + makefile_string += "{NAME} = {FILE_LIST}\n\n".format( + NAME = rule.name, + FILE_LIST = files_to_makefile(rule.files, wrap = True, **kwargs), + ) + continue + + if isinstance(rule, MakeStringVar): + makefile_string += "define {NAME}\n{CONTENT}\nendef\nexport {NAME}\n\n".format( + NAME = rule.name, + CONTENT = rule.content + ) + continue + + assert isinstance(rule, MakeRule) + header_line = "{OUT_FILE}: {DEP_FILES} {DEP_LITERALS} | $(DIRS)".format( + OUT_FILE = files_to_makefile([rule.output_file], **kwargs), + DEP_FILES = files_to_makefile(rule.dep_files, wrap = True, **kwargs), + DEP_LITERALS = " ".join(rule.dep_literals) + ) + + if len(rule.cmds) == 0: + makefile_string += "%s\n\n" % header_line + continue + + makefile_string += "{HEADER_LINE}\n{RULE_LINES}\n\n".format( + HEADER_LINE = header_line, + RULE_LINES = "\n".join("\t%s" % cmd for cmd in rule.cmds) + ) + + return makefile_string + +def files_to_makefile(files, common_vars, wrap = False, **kwargs): + if len(files) == 0: + return "" + dirnames = [utils.dir_for(file).format(**common_vars) for file in files] + join_str = " \\\n\t\t" if wrap and len(files) > 2 else " " + if len(files) == 1: + return "%s/%s" % (dirnames[0], files[0].filename) + elif len(set(dirnames)) == 1: + return "$(addprefix %s/,%s)" % (dirnames[0], join_str.join(file.filename for file in files)) + else: + return join_str.join("%s/%s" % (d, f.filename) for d,f in zip(dirnames, files)) + +def get_gnumake_rules_helper(request, common_vars, **kwargs): + + if isinstance(request, PrintFileRequest): + var_name = "%s_CONTENT" % request.name.upper() + return [ + MakeStringVar( + name = var_name, + content = request.content + ), + MakeRule( + name = request.name, + dep_literals = [], + dep_files = [], + output_file = request.output_file, + cmds = [ + "echo \"$${VAR_NAME}\" > {MAKEFILENAME}".format( + VAR_NAME = var_name, + MAKEFILENAME = files_to_makefile([request.output_file], common_vars), + **common_vars + ) + ] + ) + ] + + + if isinstance(request, CopyRequest): + return [ + MakeRule( + name = request.name, + dep_literals = [], + dep_files = [request.input_file], + output_file = request.output_file, + cmds = ["cp %s %s" % ( + files_to_makefile([request.input_file], common_vars), + files_to_makefile([request.output_file], common_vars)) + ] + ) + ] + + if isinstance(request, VariableRequest): + return [ + MakeFilesVar( + name = request.name.upper(), + files = request.input_files + ) + ] + + if request.tool.name == "make": + cmd_template = "$(MAKE) {ARGS}" + elif request.tool.name == "gentest": + cmd_template = "$(INVOKE) $(GENTEST) {ARGS}" + else: + assert isinstance(request.tool, IcuTool) + cmd_template = "$(INVOKE) $(TOOLBINDIR)/{TOOL} {{ARGS}}".format( + TOOL = request.tool.name + ) + + if isinstance(request, SingleExecutionRequest): + cmd = utils.format_single_request_command(request, cmd_template, common_vars) + dep_files = request.all_input_files() + + if len(request.output_files) > 1: + # Special case for multiple output files: Makefile rules should have only one + # output file apiece. More information: + # https://www.gnu.org/software/automake/manual/html_node/Multiple-Outputs.html + timestamp_var_name = "%s_ALL" % request.name.upper() + timestamp_file = TmpFile("%s.timestamp" % request.name) + rules = [ + MakeFilesVar( + name = timestamp_var_name, + files = [timestamp_file] + ), + MakeRule( + name = "%s_all" % request.name, + dep_literals = [], + dep_files = dep_files, + output_file = timestamp_file, + cmds = [ + cmd, + "echo timestamp > {MAKEFILENAME}".format( + MAKEFILENAME = files_to_makefile([timestamp_file], common_vars) + ) + ] + ) + ] + for i, file in enumerate(request.output_files): + rules += [ + MakeRule( + name = "%s_%d" % (request.name, i), + dep_literals = ["$(%s)" % timestamp_var_name], + dep_files = [], + output_file = file, + cmds = [] + ) + ] + return rules + + elif len(dep_files) > 5: + # For nicer printing, for long input lists, use a helper variable. + dep_var_name = "%s_DEPS" % request.name.upper() + return [ + MakeFilesVar( + name = dep_var_name, + files = dep_files + ), + MakeRule( + name = request.name, + dep_literals = ["$(%s)" % dep_var_name], + dep_files = [], + output_file = request.output_files[0], + cmds = [cmd] + ) + ] + + else: + return [ + MakeRule( + name = request.name, + dep_literals = [], + dep_files = dep_files, + output_file = request.output_files[0], + cmds = [cmd] + ) + ] + + if isinstance(request, RepeatedExecutionRequest): + rules = [] + dep_literals = [] + # To keep from repeating the same dep files many times, make a variable. + if len(request.common_dep_files) > 0: + dep_var_name = "%s_DEPS" % request.name.upper() + dep_literals = ["$(%s)" % dep_var_name] + rules += [ + MakeFilesVar( + name = dep_var_name, + files = request.common_dep_files + ) + ] + # Add a rule for each individual file. + for loop_vars in utils.repeated_execution_request_looper(request): + (_, specific_dep_files, input_file, output_file) = loop_vars + name_suffix = input_file[input_file.filename.rfind("/")+1:input_file.filename.rfind(".")] + cmd = utils.format_repeated_request_command( + request, + cmd_template, + loop_vars, + common_vars + ) + rules += [ + MakeRule( + name = "%s_%s" % (request.name, name_suffix), + dep_literals = dep_literals, + dep_files = specific_dep_files + [input_file], + output_file = output_file, + cmds = [cmd] + ) + ] + return rules + + assert False diff --git a/source/data/buildtool/request_types.py b/source/python/icutools/databuilder/request_types.py similarity index 82% rename from source/data/buildtool/request_types.py rename to source/python/icutools/databuilder/request_types.py index e726f21..aa70f8d 100644 --- a/source/data/buildtool/request_types.py +++ b/source/python/icutools/databuilder/request_types.py @@ -1,331 +1,364 @@ -# Copyright (C) 2018 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html - -# Python 2/3 Compatibility (ICU-20299) -# TODO(ICU-20301): Remove this. -from __future__ import print_function - -from abc import abstractmethod -import copy -import sys - -from . import * -from . import utils - - -# TODO(ICU-20301): Remove arguments from all instances of super() in this file - -# Note: for this to be a proper abstract class, it should extend abc.ABC. -# There is no nice way to do this that works in both Python 2 and 3. -# TODO(ICU-20301): Make this inherit from abc.ABC. -class AbstractRequest(object): - def __init__(self, **kwargs): - - # Used for identification purposes - self.name = None - - # The filter category that applies to this request - self.category = None - - self._set_fields(kwargs) - - def _set_fields(self, kwargs): - for key, value in list(kwargs.items()): - if hasattr(self, key): - if isinstance(value, list): - value = copy.copy(value) - elif isinstance(value, dict): - value = copy.deepcopy(value) - setattr(self, key, value) - else: - raise ValueError("Unknown argument: %s" % key) - - def apply_file_filter(self, filter): - """ - Returns True if this request still has input files after filtering, - or False if the request is "empty" after filtering. - """ - return True - - def flatten(self, config, all_requests, common_vars): - return [self] - - def all_input_files(self): - return [] - - def all_output_files(self): - return [] - - -class AbstractExecutionRequest(AbstractRequest): - def __init__(self, **kwargs): - - # Names of targets (requests) or files that this request depends on. - # The entries of dep_targets may be any of the following types: - # - # 1. DepTarget, for the output of an execution request. - # 2. InFile, TmpFile, etc., for a specific file. - # 3. A list of InFile, TmpFile, etc., where the list is the same - # length as self.input_files and self.output_files. - # - # In cases 1 and 2, the dependency is added to all rules that the - # request generates. In case 3, the dependency is added only to the - # rule that generates the output file at the same array index. - self.dep_targets = [] - - # Computed during self.flatten(); don't edit directly. - self.common_dep_files = [] - - # Primary input files - self.input_files = [] - - # Output files; for some subclasses, this must be the same length - # as input_files - self.output_files = [] - - # What tool to execute - self.tool = None - - # Argument string to pass to the tool with optional placeholders - self.args = "" - - # Placeholders to substitute into the argument string; if any of these - # have a list type, the list must be equal in length to input_files - self.format_with = {} - - super(AbstractExecutionRequest, self).__init__(**kwargs) - - def apply_file_filter(self, filter): - i = 0 - while i < len(self.input_files): - if filter.match(self.input_files[i]): - i += 1 - continue - self._del_at(i) - return i > 0 - - def _del_at(self, i): - del self.input_files[i] - for _, v in self.format_with.items(): - if isinstance(v, list): - assert len(v) == len(self.input_files) + 1 - del v[i] - for v in self.dep_targets: - if isinstance(v, list): - assert len(v) == len(self.input_files) + 1 - del v[i] - - def flatten(self, config, all_requests, common_vars): - self._dep_targets_to_files(all_requests) - return super(AbstractExecutionRequest, self).flatten(config, all_requests, common_vars) - - def _dep_targets_to_files(self, all_requests): - if not self.dep_targets: - return - for dep_target in self.dep_targets: - if isinstance(dep_target, list): - if hasattr(self, "specific_dep_files"): - assert len(dep_target) == len(self.specific_dep_files) - for file, out_list in zip(dep_target, self.specific_dep_files): - assert hasattr(file, "filename") - out_list.append(file) - else: - self.common_dep_files += dep_target - continue - if not isinstance(dep_target, DepTarget): - # Copy file entries directly to dep_files. - assert hasattr(dep_target, "filename") - self.common_dep_files.append(dep_target) - continue - # For DepTarget entries, search for the target. - for request in all_requests: - if request.name == dep_target.name: - self.common_dep_files += request.all_output_files() - break - else: - print("Warning: Unable to find target %s, a dependency of %s" % ( - dep_target.name, - self.name - ), file=sys.stderr) - - def all_input_files(self): - return self.common_dep_files + self.input_files - - def all_output_files(self): - return self.output_files - - -class SingleExecutionRequest(AbstractExecutionRequest): - def __init__(self, **kwargs): - super(SingleExecutionRequest, self).__init__(**kwargs) - - -class RepeatedExecutionRequest(AbstractExecutionRequest): - def __init__(self, **kwargs): - - # Placeholders to substitute into the argument string unique to each - # iteration; all values must be lists equal in length to input_files - self.repeat_with = {} - - # Lists for dep files that are specific to individual resource bundle files - self.specific_dep_files = [[] for _ in range(len(kwargs["input_files"]))] - - super(RepeatedExecutionRequest, self).__init__(**kwargs) - - def _del_at(self, i): - super(RepeatedExecutionRequest, self)._del_at(i) - del self.output_files[i] - for _, v in self.repeat_with.items(): - if isinstance(v, list): - del v[i] - - def all_input_files(self): - files = super(RepeatedExecutionRequest, self).all_input_files() - for specific_file_list in self.specific_dep_files: - files += specific_file_list - return files - - -class RepeatedOrSingleExecutionRequest(AbstractExecutionRequest): - def __init__(self, **kwargs): - self.repeat_with = {} - super(RepeatedOrSingleExecutionRequest, self).__init__(**kwargs) - - def flatten(self, config, all_requests, common_vars): - if config.max_parallel: - new_request = RepeatedExecutionRequest( - name = self.name, - category = self.category, - dep_targets = self.dep_targets, - input_files = self.input_files, - output_files = self.output_files, - tool = self.tool, - args = self.args, - format_with = self.format_with, - repeat_with = self.repeat_with - ) - else: - new_request = SingleExecutionRequest( - name = self.name, - category = self.category, - dep_targets = self.dep_targets, - input_files = self.input_files, - output_files = self.output_files, - tool = self.tool, - args = self.args, - format_with = utils.concat_dicts(self.format_with, self.repeat_with) - ) - return new_request.flatten(config, all_requests, common_vars) - - def _del_at(self, i): - super(RepeatedOrSingleExecutionRequest, self)._del_at(i) - del self.output_files[i] - for _, v in self.repeat_with.items(): - if isinstance(v, list): - del v[i] - - -class PrintFileRequest(AbstractRequest): - def __init__(self, **kwargs): - self.output_file = None - self.content = None - super(PrintFileRequest, self).__init__(**kwargs) - - def all_output_files(self): - return [self.output_file] - - -class CopyRequest(AbstractRequest): - def __init__(self, **kwargs): - self.input_file = None - self.output_file = None - super(CopyRequest, self).__init__(**kwargs) - - def all_input_files(self): - return [self.input_file] - - def all_output_files(self): - return [self.output_file] - - -class VariableRequest(AbstractRequest): - def __init__(self, **kwargs): - self.input_files = [] - super(VariableRequest, self).__init__(**kwargs) - - def all_input_files(self): - return self.input_files - - -class ListRequest(AbstractRequest): - def __init__(self, **kwargs): - self.variable_name = None - self.output_file = None - self.include_tmp = None - super(ListRequest, self).__init__(**kwargs) - - def flatten(self, config, all_requests, common_vars): - list_files = list(sorted(utils.get_all_output_files(all_requests))) - if self.include_tmp: - variable_files = list(sorted(utils.get_all_output_files(all_requests, include_tmp=True))) - else: - # Always include the list file itself - variable_files = list_files + [self.output_file] - return PrintFileRequest( - name = self.name, - output_file = self.output_file, - content = "\n".join(file.filename for file in list_files) - ).flatten(config, all_requests, common_vars) + VariableRequest( - name = self.variable_name, - input_files = variable_files - ).flatten(config, all_requests, common_vars) - - def all_output_files(self): - return [self.output_file] - - -class IndexTxtRequest(AbstractRequest): - def __init__(self, **kwargs): - self.input_files = [] - self.output_file = None - self.cldr_version = "" - super(IndexTxtRequest, self).__init__(**kwargs) - - def apply_file_filter(self, filter): - i = 0 - while i < len(self.input_files): - if filter.match(self.input_files[i]): - i += 1 - continue - del self.input_files[i] - return i > 0 - - def flatten(self, config, all_requests, common_vars): - return PrintFileRequest( - name = self.name, - output_file = self.output_file, - content = self._generate_index_file(common_vars) - ).flatten(config, all_requests, common_vars) - - def _generate_index_file(self, common_vars): - locales = [f.filename[f.filename.rfind("/")+1:-4] for f in self.input_files] - formatted_version = " CLDRVersion { \"%s\" }\n" % self.cldr_version if self.cldr_version else "" - formatted_locales = "\n".join([" %s {\"\"}" % v for v in locales]) - # TODO: CLDRVersion is required only in the base file - return ("// Warning this file is automatically generated\n" - "{INDEX_NAME}:table(nofallback) {{\n" - "{FORMATTED_VERSION}" - " InstalledLocales {{\n" - "{FORMATTED_LOCALES}\n" - " }}\n" - "}}").format( - FORMATTED_VERSION = formatted_version, - FORMATTED_LOCALES = formatted_locales, - **common_vars - ) - - def all_input_files(self): - return self.input_files - - def all_output_files(self): - return [self.output_file] +# Copyright (C) 2018 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +# Python 2/3 Compatibility (ICU-20299) +# TODO(ICU-20301): Remove this. +from __future__ import print_function + +from abc import abstractmethod +import copy +import sys + +from . import * +from . import utils + + +# TODO(ICU-20301): Remove arguments from all instances of super() in this file + +# Note: for this to be a proper abstract class, it should extend abc.ABC. +# There is no nice way to do this that works in both Python 2 and 3. +# TODO(ICU-20301): Make this inherit from abc.ABC. +class AbstractRequest(object): + def __init__(self, **kwargs): + + # Used for identification purposes + self.name = None + + # The filter category that applies to this request + self.category = None + + self._set_fields(kwargs) + + def _set_fields(self, kwargs): + for key, value in list(kwargs.items()): + if hasattr(self, key): + if isinstance(value, list): + value = copy.copy(value) + elif isinstance(value, dict): + value = copy.deepcopy(value) + setattr(self, key, value) + else: + raise ValueError("Unknown argument: %s" % key) + + def apply_file_filter(self, filter): + """ + Returns True if this request still has input files after filtering, + or False if the request is "empty" after filtering. + """ + return True + + def flatten(self, config, all_requests, common_vars): + return [self] + + def all_input_files(self): + return [] + + def all_output_files(self): + return [] + + +class AbstractExecutionRequest(AbstractRequest): + def __init__(self, **kwargs): + + # Names of targets (requests) or files that this request depends on. + # The entries of dep_targets may be any of the following types: + # + # 1. DepTarget, for the output of an execution request. + # 2. InFile, TmpFile, etc., for a specific file. + # 3. A list of InFile, TmpFile, etc., where the list is the same + # length as self.input_files and self.output_files. + # + # In cases 1 and 2, the dependency is added to all rules that the + # request generates. In case 3, the dependency is added only to the + # rule that generates the output file at the same array index. + self.dep_targets = [] + + # Computed during self.flatten(); don't edit directly. + self.common_dep_files = [] + + # Primary input files + self.input_files = [] + + # Output files; for some subclasses, this must be the same length + # as input_files + self.output_files = [] + + # What tool to execute + self.tool = None + + # Argument string to pass to the tool with optional placeholders + self.args = "" + + # Placeholders to substitute into the argument string; if any of these + # have a list type, the list must be equal in length to input_files + self.format_with = {} + + super(AbstractExecutionRequest, self).__init__(**kwargs) + + def apply_file_filter(self, filter): + i = 0 + while i < len(self.input_files): + if filter.match(self.input_files[i]): + i += 1 + else: + self._del_at(i) + return i > 0 + + def _del_at(self, i): + del self.input_files[i] + for _, v in self.format_with.items(): + if isinstance(v, list): + assert len(v) == len(self.input_files) + 1 + del v[i] + for v in self.dep_targets: + if isinstance(v, list): + assert len(v) == len(self.input_files) + 1 + del v[i] + + def flatten(self, config, all_requests, common_vars): + self._dep_targets_to_files(all_requests) + return super(AbstractExecutionRequest, self).flatten(config, all_requests, common_vars) + + def _dep_targets_to_files(self, all_requests): + if not self.dep_targets: + return + for dep_target in self.dep_targets: + if isinstance(dep_target, list): + if hasattr(self, "specific_dep_files"): + assert len(dep_target) == len(self.specific_dep_files) + for file, out_list in zip(dep_target, self.specific_dep_files): + assert hasattr(file, "filename") + out_list.append(file) + else: + self.common_dep_files += dep_target + continue + if not isinstance(dep_target, DepTarget): + # Copy file entries directly to dep_files. + assert hasattr(dep_target, "filename") + self.common_dep_files.append(dep_target) + continue + # For DepTarget entries, search for the target. + for request in all_requests: + if request.name == dep_target.name: + self.common_dep_files += request.all_output_files() + break + else: + print("Warning: Unable to find target %s, a dependency of %s" % ( + dep_target.name, + self.name + ), file=sys.stderr) + self.dep_targets = [] + + def all_input_files(self): + return self.common_dep_files + self.input_files + + def all_output_files(self): + return self.output_files + + +class SingleExecutionRequest(AbstractExecutionRequest): + def __init__(self, **kwargs): + super(SingleExecutionRequest, self).__init__(**kwargs) + + +class RepeatedExecutionRequest(AbstractExecutionRequest): + def __init__(self, **kwargs): + + # Placeholders to substitute into the argument string unique to each + # iteration; all values must be lists equal in length to input_files + self.repeat_with = {} + + # Lists for dep files that are specific to individual resource bundle files + self.specific_dep_files = [[] for _ in range(len(kwargs["input_files"]))] + + super(RepeatedExecutionRequest, self).__init__(**kwargs) + + def _del_at(self, i): + super(RepeatedExecutionRequest, self)._del_at(i) + del self.output_files[i] + del self.specific_dep_files[i] + for _, v in self.repeat_with.items(): + if isinstance(v, list): + del v[i] + + def all_input_files(self): + files = super(RepeatedExecutionRequest, self).all_input_files() + for specific_file_list in self.specific_dep_files: + files += specific_file_list + return files + + +class RepeatedOrSingleExecutionRequest(AbstractExecutionRequest): + def __init__(self, **kwargs): + self.repeat_with = {} + super(RepeatedOrSingleExecutionRequest, self).__init__(**kwargs) + + def flatten(self, config, all_requests, common_vars): + if config.max_parallel: + new_request = RepeatedExecutionRequest( + name = self.name, + category = self.category, + dep_targets = self.dep_targets, + input_files = self.input_files, + output_files = self.output_files, + tool = self.tool, + args = self.args, + format_with = self.format_with, + repeat_with = self.repeat_with + ) + else: + new_request = SingleExecutionRequest( + name = self.name, + category = self.category, + dep_targets = self.dep_targets, + input_files = self.input_files, + output_files = self.output_files, + tool = self.tool, + args = self.args, + format_with = utils.concat_dicts(self.format_with, self.repeat_with) + ) + return new_request.flatten(config, all_requests, common_vars) + + def _del_at(self, i): + super(RepeatedOrSingleExecutionRequest, self)._del_at(i) + del self.output_files[i] + for _, v in self.repeat_with.items(): + if isinstance(v, list): + del v[i] + + +class PrintFileRequest(AbstractRequest): + def __init__(self, **kwargs): + self.output_file = None + self.content = None + super(PrintFileRequest, self).__init__(**kwargs) + + def all_output_files(self): + return [self.output_file] + + +class CopyRequest(AbstractRequest): + def __init__(self, **kwargs): + self.input_file = None + self.output_file = None + super(CopyRequest, self).__init__(**kwargs) + + def all_input_files(self): + return [self.input_file] + + def all_output_files(self): + return [self.output_file] + + +class VariableRequest(AbstractRequest): + def __init__(self, **kwargs): + self.input_files = [] + super(VariableRequest, self).__init__(**kwargs) + + def all_input_files(self): + return self.input_files + + +class ListRequest(AbstractRequest): + def __init__(self, **kwargs): + self.variable_name = None + self.output_file = None + self.include_tmp = None + super(ListRequest, self).__init__(**kwargs) + + def flatten(self, config, all_requests, common_vars): + list_files = list(sorted(utils.get_all_output_files(all_requests))) + if self.include_tmp: + variable_files = list(sorted(utils.get_all_output_files(all_requests, include_tmp=True))) + else: + # Always include the list file itself + variable_files = list_files + [self.output_file] + return PrintFileRequest( + name = self.name, + output_file = self.output_file, + content = "\n".join(file.filename for file in list_files) + ).flatten(config, all_requests, common_vars) + VariableRequest( + name = self.variable_name, + input_files = variable_files + ).flatten(config, all_requests, common_vars) + + def all_output_files(self): + return [self.output_file] + + +class IndexRequest(AbstractRequest): + def __init__(self, **kwargs): + self.installed_files = [] + self.alias_files = [] + self.txt_file = None + self.output_file = None + self.cldr_version = "" + self.args = "" + self.format_with = {} + super(IndexRequest, self).__init__(**kwargs) + + def apply_file_filter(self, filter): + i = 0 + while i < len(self.installed_files): + if filter.match(self.installed_files[i]): + i += 1 + else: + del self.installed_files[i] + j = 0 + while j < len(self.alias_files): + if filter.match(self.alias_files[j]): + j += 1 + else: + del self.alias_files[j] + return i + j > 0 + + def flatten(self, config, all_requests, common_vars): + return ( + PrintFileRequest( + name = self.name, + output_file = self.txt_file, + content = self._generate_index_file(common_vars) + ).flatten(config, all_requests, common_vars) + + SingleExecutionRequest( + name = "%s_res" % self.name, + category = self.category, + input_files = [self.txt_file], + output_files = [self.output_file], + tool = IcuTool("genrb"), + args = self.args, + format_with = self.format_with + ).flatten(config, all_requests, common_vars) + ) + + def _generate_index_file(self, common_vars): + installed_locales = [IndexRequest.locale_file_stem(f) for f in self.installed_files] + alias_locales = [IndexRequest.locale_file_stem(f) for f in self.alias_files] + formatted_version = " CLDRVersion { \"%s\" }\n" % self.cldr_version if self.cldr_version else "" + formatted_installed_locales = "\n".join([" %s {\"\"}" % v for v in installed_locales]) + formatted_alias_locales = "\n".join([" %s {\"\"}" % v for v in alias_locales]) + # TODO: CLDRVersion is required only in the base file + return ("// Warning this file is automatically generated\n" + "{INDEX_NAME}:table(nofallback) {{\n" + "{FORMATTED_VERSION}" + " InstalledLocales:table {{\n" + "{FORMATTED_INSTALLED_LOCALES}\n" + " }}\n" + " AliasLocales:table {{\n" + "{FORMATTED_ALIAS_LOCALES}\n" + " }}\n" + "}}").format( + FORMATTED_VERSION = formatted_version, + FORMATTED_INSTALLED_LOCALES = formatted_installed_locales, + FORMATTED_ALIAS_LOCALES = formatted_alias_locales, + **common_vars + ) + + def all_input_files(self): + return self.installed_files + self.alias_files + + def all_output_files(self): + return [self.output_file] + + @staticmethod + def locale_file_stem(f): + return f.filename[f.filename.rfind("/")+1:-4] diff --git a/source/data/buildtool/test/__init__.py b/source/python/icutools/databuilder/test/__init__.py similarity index 98% rename from source/data/buildtool/test/__init__.py rename to source/python/icutools/databuilder/test/__init__.py index e01c472..dd12bfa 100644 --- a/source/data/buildtool/test/__init__.py +++ b/source/python/icutools/databuilder/test/__init__.py @@ -1,2 +1,2 @@ -# Copyright (C) 2018 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html +# Copyright (C) 2018 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html diff --git a/source/data/buildtool/test/__main__.py b/source/python/icutools/databuilder/test/__main__.py similarity index 96% rename from source/data/buildtool/test/__main__.py rename to source/python/icutools/databuilder/test/__main__.py index ed0e8d4..6ae2c0f 100644 --- a/source/data/buildtool/test/__main__.py +++ b/source/python/icutools/databuilder/test/__main__.py @@ -1,14 +1,14 @@ -# Copyright (C) 2018 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html - -import unittest - -from . import filtration_test - -def load_tests(loader, tests, pattern): - suite = unittest.TestSuite() - suite.addTest(filtration_test.suite) - return suite - -if __name__ == '__main__': - unittest.main() +# Copyright (C) 2018 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +import unittest + +from . import filtration_test + +def load_tests(loader, tests, pattern): + suite = unittest.TestSuite() + suite.addTest(filtration_test.suite) + return suite + +if __name__ == '__main__': + unittest.main() diff --git a/source/data/buildtool/test/filtration_test.py b/source/python/icutools/databuilder/test/filtration_test.py similarity index 96% rename from source/data/buildtool/test/filtration_test.py rename to source/python/icutools/databuilder/test/filtration_test.py index 33f0038..5687006 100644 --- a/source/data/buildtool/test/filtration_test.py +++ b/source/python/icutools/databuilder/test/filtration_test.py @@ -1,353 +1,353 @@ -# Copyright (C) 2018 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html - -import unittest - -from .. import InFile -from ..filtration import Filter - -EXAMPLE_FILE_STEMS = [ - "af_NA", - "af_ZA", - "af", - "ar", - "ar_SA", - "ars", - "bs_BA", - "bs_Cyrl_BA", - "bs_Cyrl", - "bs_Latn_BA", - "bs_Latn", - "bs", - "en_001", - "en_150", - "en_DE", - "en_GB", - "en_US", - "root", - "sr_BA", - "sr_CS", - "sr_Cyrl_BA", - "sr_Cyrl_CS", - "sr_Cyrl_ME", - "sr_Cyrl", - "sr_Latn_BA", - "sr_Latn_CS", - "sr_Latn_ME", - "sr_Latn", - "sr_ME", - "sr", - "vai_Latn_LR", - "vai_Latn", - "vai_LR", - "vai_Vaii_LR", - "vai_Vaii", - "vai", - "zh_CN", - "zh_Hans_CN", - "zh_Hans_HK", - "zh_Hans_MO", - "zh_Hans_SG", - "zh_Hans", - "zh_Hant_HK", - "zh_Hant_MO", - "zh_Hant_TW", - "zh_Hant", - "zh_HK", - "zh_MO", - "zh_SG", - "zh_TW", - "zh" -] - -class FiltrationTest(unittest.TestCase): - - def test_exclude(self): - self._check_filter(Filter.create_from_json({ - "filterType": "exclude" - }), [ - ]) - - def test_default_whitelist(self): - self._check_filter(Filter.create_from_json({ - "whitelist": [ - "ars", - "zh_Hans" - ] - }), [ - "ars", - "zh_Hans" - ]) - - def test_default_blacklist(self): - expected_matches = set(EXAMPLE_FILE_STEMS) - expected_matches.remove("ars") - expected_matches.remove("zh_Hans") - self._check_filter(Filter.create_from_json({ - "blacklist": [ - "ars", - "zh_Hans" - ] - }), expected_matches) - - def test_language_whitelist(self): - self._check_filter(Filter.create_from_json({ - "filterType": "language", - "whitelist": [ - "af", - "bs" - ] - }), [ - "root", - "af_NA", - "af_ZA", - "af", - "bs_BA", - "bs_Cyrl_BA", - "bs_Cyrl", - "bs_Latn_BA", - "bs_Latn", - "bs" - ]) - - def test_language_blacklist(self): - expected_matches = set(EXAMPLE_FILE_STEMS) - expected_matches.remove("af_NA") - expected_matches.remove("af_ZA") - expected_matches.remove("af") - self._check_filter(Filter.create_from_json({ - "filterType": "language", - "blacklist": [ - "af" - ] - }), expected_matches) - - def test_regex_whitelist(self): - self._check_filter(Filter.create_from_json({ - "filterType": "regex", - "whitelist": [ - r"^ar.*$", - r"^zh$" - ] - }), [ - "ar", - "ar_SA", - "ars", - "zh" - ]) - - def test_regex_blacklist(self): - expected_matches = set(EXAMPLE_FILE_STEMS) - expected_matches.remove("ar") - expected_matches.remove("ar_SA") - expected_matches.remove("ars") - expected_matches.remove("zh") - self._check_filter(Filter.create_from_json({ - "filterType": "regex", - "blacklist": [ - r"^ar.*$", - r"^zh$" - ] - }), expected_matches) - - def test_locale_basic(self): - self._check_filter(Filter.create_from_json({ - "filterType": "locale", - "whitelist": [ - # Default scripts: - # sr => Cyrl - # vai => Vaii - # zh => Hans - "bs_BA", # is an alias to bs_Latn_BA - "en_DE", - "sr", # Language with no script - "vai_Latn", # Language with non-default script - "zh_Hans" # Language with default script - ] - }), [ - "root", - # bs: should include the full dependency tree of bs_BA - "bs_BA", - "bs_Latn_BA", - "bs_Latn", - "bs", - # en: should include the full dependency tree of en_DE - "en", - "en_DE", - "en_150", - "en_001", - # sr: include Cyrl, the default, but not Latn. - "sr", - "sr_BA", - "sr_CS", - "sr_Cyrl", - "sr_Cyrl_BA", - "sr_Cyrl_CS", - "sr_Cyrl_ME", - # vai: include Latn but NOT Vaii. - "vai_Latn", - "vai_Latn_LR", - # zh: include Hans but NOT Hant. - "zh", - "zh_CN", - "zh_SG", - "zh_Hans", - "zh_Hans_CN", - "zh_Hans_HK", - "zh_Hans_MO", - "zh_Hans_SG" - ]) - - def test_locale_no_children(self): - self._check_filter(Filter.create_from_json({ - "filterType": "locale", - "includeChildren": False, - "whitelist": [ - # See comments in test_locale_basic. - "bs_BA", - "en_DE", - "sr", - "vai_Latn", - "zh_Hans" - ] - }), [ - "root", - "bs_BA", - "bs_Latn_BA", - "bs_Latn", - "bs", - "en", - "en_DE", - "en_150", - "en_001", - "sr", - "vai_Latn", - "zh", - "zh_Hans", - ]) - - def test_locale_include_scripts(self): - self._check_filter(Filter.create_from_json({ - "filterType": "locale", - "includeScripts": True, - "whitelist": [ - # See comments in test_locale_basic. - "bs_BA", - "en_DE", - "sr", - "vai_Latn", - "zh_Hans" - ] - }), [ - "root", - # bs: includeScripts only works for language-only (without region) - "bs_BA", - "bs_Latn_BA", - "bs_Latn", - "bs", - # en: should include the full dependency tree of en_DE - "en", - "en_DE", - "en_150", - "en_001", - # sr: include Latn, since no particular script was requested. - "sr_BA", - "sr_CS", - "sr_Cyrl_BA", - "sr_Cyrl_CS", - "sr_Cyrl_ME", - "sr_Cyrl", - "sr_Latn_BA", - "sr_Latn_CS", - "sr_Latn_ME", - "sr_Latn", - "sr_ME", - "sr", - # vai: do NOT include Vaii; the script was explicitly requested. - "vai_Latn_LR", - "vai_Latn", - # zh: do NOT include Hant; the script was explicitly requested. - "zh_CN", - "zh_SG", - "zh_Hans_CN", - "zh_Hans_HK", - "zh_Hans_MO", - "zh_Hans_SG", - "zh_Hans", - "zh" - ]) - - def test_locale_no_children_include_scripts(self): - self._check_filter(Filter.create_from_json({ - "filterType": "locale", - "includeChildren": False, - "includeScripts": True, - "whitelist": [ - # See comments in test_locale_basic. - "bs_BA", - "en_DE", - "sr", - "vai_Latn", - "zh_Hans" - ] - }), [ - "root", - # bs: includeScripts only works for language-only (without region) - "bs_BA", - "bs_Latn_BA", - "bs_Latn", - "bs", - # en: should include the full dependency tree of en_DE - "en", - "en_DE", - "en_150", - "en_001", - # sr: include Cyrl and Latn but no other children - "sr", - "sr_Cyrl", - "sr_Latn", - # vai: include only the requested script - "vai_Latn", - # zh: include only the requested script - "zh", - "zh_Hans", - ]) - - def test_union(self): - self._check_filter(Filter.create_from_json({ - "filterType": "union", - "unionOf": [ - { - "whitelist": [ - "ars", - "zh_Hans" - ] - }, - { - "filterType": "regex", - "whitelist": [ - r"^bs.*$", - r"^zh$" - ] - } - ] - }), [ - "ars", - "zh_Hans", - "bs_BA", - "bs_Cyrl_BA", - "bs_Cyrl", - "bs_Latn_BA", - "bs_Latn", - "bs", - "zh" - ]) - - def _check_filter(self, filter, expected_matches): - for file_stem in EXAMPLE_FILE_STEMS: - is_match = filter.match(InFile("locales/%s.txt" % file_stem)) - expected_match = file_stem in expected_matches - self.assertEqual(is_match, expected_match, file_stem) - -# Export the test for the runner -suite = unittest.makeSuite(FiltrationTest) +# Copyright (C) 2018 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +import unittest + +from .. import InFile +from ..filtration import Filter + +EXAMPLE_FILE_STEMS = [ + "af_NA", + "af_ZA", + "af", + "ar", + "ar_SA", + "ars", + "bs_BA", + "bs_Cyrl_BA", + "bs_Cyrl", + "bs_Latn_BA", + "bs_Latn", + "bs", + "en_001", + "en_150", + "en_DE", + "en_GB", + "en_US", + "root", + "sr_BA", + "sr_CS", + "sr_Cyrl_BA", + "sr_Cyrl_CS", + "sr_Cyrl_ME", + "sr_Cyrl", + "sr_Latn_BA", + "sr_Latn_CS", + "sr_Latn_ME", + "sr_Latn", + "sr_ME", + "sr", + "vai_Latn_LR", + "vai_Latn", + "vai_LR", + "vai_Vaii_LR", + "vai_Vaii", + "vai", + "zh_CN", + "zh_Hans_CN", + "zh_Hans_HK", + "zh_Hans_MO", + "zh_Hans_SG", + "zh_Hans", + "zh_Hant_HK", + "zh_Hant_MO", + "zh_Hant_TW", + "zh_Hant", + "zh_HK", + "zh_MO", + "zh_SG", + "zh_TW", + "zh" +] + +class FiltrationTest(unittest.TestCase): + + def test_exclude(self): + self._check_filter(Filter.create_from_json({ + "filterType": "exclude" + }), [ + ]) + + def test_default_whitelist(self): + self._check_filter(Filter.create_from_json({ + "whitelist": [ + "ars", + "zh_Hans" + ] + }), [ + "ars", + "zh_Hans" + ]) + + def test_default_blacklist(self): + expected_matches = set(EXAMPLE_FILE_STEMS) + expected_matches.remove("ars") + expected_matches.remove("zh_Hans") + self._check_filter(Filter.create_from_json({ + "blacklist": [ + "ars", + "zh_Hans" + ] + }), expected_matches) + + def test_language_whitelist(self): + self._check_filter(Filter.create_from_json({ + "filterType": "language", + "whitelist": [ + "af", + "bs" + ] + }), [ + "root", + "af_NA", + "af_ZA", + "af", + "bs_BA", + "bs_Cyrl_BA", + "bs_Cyrl", + "bs_Latn_BA", + "bs_Latn", + "bs" + ]) + + def test_language_blacklist(self): + expected_matches = set(EXAMPLE_FILE_STEMS) + expected_matches.remove("af_NA") + expected_matches.remove("af_ZA") + expected_matches.remove("af") + self._check_filter(Filter.create_from_json({ + "filterType": "language", + "blacklist": [ + "af" + ] + }), expected_matches) + + def test_regex_whitelist(self): + self._check_filter(Filter.create_from_json({ + "filterType": "regex", + "whitelist": [ + r"^ar.*$", + r"^zh$" + ] + }), [ + "ar", + "ar_SA", + "ars", + "zh" + ]) + + def test_regex_blacklist(self): + expected_matches = set(EXAMPLE_FILE_STEMS) + expected_matches.remove("ar") + expected_matches.remove("ar_SA") + expected_matches.remove("ars") + expected_matches.remove("zh") + self._check_filter(Filter.create_from_json({ + "filterType": "regex", + "blacklist": [ + r"^ar.*$", + r"^zh$" + ] + }), expected_matches) + + def test_locale_basic(self): + self._check_filter(Filter.create_from_json({ + "filterType": "locale", + "whitelist": [ + # Default scripts: + # sr => Cyrl + # vai => Vaii + # zh => Hans + "bs_BA", # is an alias to bs_Latn_BA + "en_DE", + "sr", # Language with no script + "vai_Latn", # Language with non-default script + "zh_Hans" # Language with default script + ] + }), [ + "root", + # bs: should include the full dependency tree of bs_BA + "bs_BA", + "bs_Latn_BA", + "bs_Latn", + "bs", + # en: should include the full dependency tree of en_DE + "en", + "en_DE", + "en_150", + "en_001", + # sr: include Cyrl, the default, but not Latn. + "sr", + "sr_BA", + "sr_CS", + "sr_Cyrl", + "sr_Cyrl_BA", + "sr_Cyrl_CS", + "sr_Cyrl_ME", + # vai: include Latn but NOT Vaii. + "vai_Latn", + "vai_Latn_LR", + # zh: include Hans but NOT Hant. + "zh", + "zh_CN", + "zh_SG", + "zh_Hans", + "zh_Hans_CN", + "zh_Hans_HK", + "zh_Hans_MO", + "zh_Hans_SG" + ]) + + def test_locale_no_children(self): + self._check_filter(Filter.create_from_json({ + "filterType": "locale", + "includeChildren": False, + "whitelist": [ + # See comments in test_locale_basic. + "bs_BA", + "en_DE", + "sr", + "vai_Latn", + "zh_Hans" + ] + }), [ + "root", + "bs_BA", + "bs_Latn_BA", + "bs_Latn", + "bs", + "en", + "en_DE", + "en_150", + "en_001", + "sr", + "vai_Latn", + "zh", + "zh_Hans", + ]) + + def test_locale_include_scripts(self): + self._check_filter(Filter.create_from_json({ + "filterType": "locale", + "includeScripts": True, + "whitelist": [ + # See comments in test_locale_basic. + "bs_BA", + "en_DE", + "sr", + "vai_Latn", + "zh_Hans" + ] + }), [ + "root", + # bs: includeScripts only works for language-only (without region) + "bs_BA", + "bs_Latn_BA", + "bs_Latn", + "bs", + # en: should include the full dependency tree of en_DE + "en", + "en_DE", + "en_150", + "en_001", + # sr: include Latn, since no particular script was requested. + "sr_BA", + "sr_CS", + "sr_Cyrl_BA", + "sr_Cyrl_CS", + "sr_Cyrl_ME", + "sr_Cyrl", + "sr_Latn_BA", + "sr_Latn_CS", + "sr_Latn_ME", + "sr_Latn", + "sr_ME", + "sr", + # vai: do NOT include Vaii; the script was explicitly requested. + "vai_Latn_LR", + "vai_Latn", + # zh: do NOT include Hant; the script was explicitly requested. + "zh_CN", + "zh_SG", + "zh_Hans_CN", + "zh_Hans_HK", + "zh_Hans_MO", + "zh_Hans_SG", + "zh_Hans", + "zh" + ]) + + def test_locale_no_children_include_scripts(self): + self._check_filter(Filter.create_from_json({ + "filterType": "locale", + "includeChildren": False, + "includeScripts": True, + "whitelist": [ + # See comments in test_locale_basic. + "bs_BA", + "en_DE", + "sr", + "vai_Latn", + "zh_Hans" + ] + }), [ + "root", + # bs: includeScripts only works for language-only (without region) + "bs_BA", + "bs_Latn_BA", + "bs_Latn", + "bs", + # en: should include the full dependency tree of en_DE + "en", + "en_DE", + "en_150", + "en_001", + # sr: include Cyrl and Latn but no other children + "sr", + "sr_Cyrl", + "sr_Latn", + # vai: include only the requested script + "vai_Latn", + # zh: include only the requested script + "zh", + "zh_Hans", + ]) + + def test_union(self): + self._check_filter(Filter.create_from_json({ + "filterType": "union", + "unionOf": [ + { + "whitelist": [ + "ars", + "zh_Hans" + ] + }, + { + "filterType": "regex", + "whitelist": [ + r"^bs.*$", + r"^zh$" + ] + } + ] + }), [ + "ars", + "zh_Hans", + "bs_BA", + "bs_Cyrl_BA", + "bs_Cyrl", + "bs_Latn_BA", + "bs_Latn", + "bs", + "zh" + ]) + + def _check_filter(self, filter, expected_matches): + for file_stem in EXAMPLE_FILE_STEMS: + is_match = filter.match(InFile("locales/%s.txt" % file_stem)) + expected_match = file_stem in expected_matches + self.assertEqual(is_match, expected_match, file_stem) + +# Export the test for the runner +suite = unittest.makeSuite(FiltrationTest) diff --git a/source/data/buildtool/utils.py b/source/python/icutools/databuilder/utils.py similarity index 79% rename from source/data/buildtool/utils.py rename to source/python/icutools/databuilder/utils.py index 6a3c4d2..c596590 100644 --- a/source/data/buildtool/utils.py +++ b/source/python/icutools/databuilder/utils.py @@ -1,104 +1,130 @@ -# Copyright (C) 2018 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html - -# Python 2/3 Compatibility (ICU-20299) -# TODO(ICU-20301): Remove this. -from __future__ import print_function - -import sys - -from . import * - - -def dir_for(file): - if isinstance(file, LocalFile): - return file.dirname - if isinstance(file, SrcFile): - return "{SRC_DIR}" - if isinstance(file, InFile): - return "{IN_DIR}" - if isinstance(file, TmpFile): - return "{TMP_DIR}" - if isinstance(file, OutFile): - return "{OUT_DIR}" - if isinstance(file, PkgFile): - return "{PKG_DIR}" - assert False - - -def concat_dicts(*dicts): - # There is not a super great way to do this in Python: - new_dict = {} - for dict in dicts: - new_dict.update(dict) - return new_dict - - -def repeated_execution_request_looper(request): - # dictionary of lists to list of dictionaries: - ld = [ - dict(zip(request.repeat_with, t)) - for t in zip(*request.repeat_with.values()) - ] - if not ld: - # No special options given in repeat_with - ld = [{} for _ in range(len(request.input_files))] - return zip(ld, request.specific_dep_files, request.input_files, request.output_files) - - -def format_single_request_command(request, cmd_template, common_vars): - return cmd_template.format( - ARGS = request.args.format( - INPUT_FILES = [file.filename for file in request.input_files], - OUTPUT_FILES = [file.filename for file in request.output_files], - **concat_dicts(common_vars, request.format_with) - ) - ) - - -def format_repeated_request_command(request, cmd_template, loop_vars, common_vars): - (iter_vars, _, input_file, output_file) = loop_vars - return cmd_template.format( - ARGS = request.args.format( - INPUT_FILE = input_file.filename, - OUTPUT_FILE = output_file.filename, - **concat_dicts(common_vars, request.format_with, iter_vars) - ) - ) - - -def flatten_requests(requests, config, common_vars): - result = [] - for request in requests: - result += request.flatten(config, requests, common_vars) - return result - - -def get_all_output_files(requests, include_tmp=False): - files = [] - for request in requests: - files += request.all_output_files() - - # Filter out all files but those in OUT_DIR if necessary. - # It is also easy to filter for uniqueness; do it right now and return. - if not include_tmp: - files = (file for file in files if isinstance(file, OutFile)) - return list(set(files)) - - # Filter for unique values. NOTE: Cannot use set() because we need to accept same filename as - # OutFile and TmpFile as different, and by default they evaluate as equal. - return [f for _, f in set((type(f), f) for f in files)] - - -def compute_directories(requests): - dirs = set() - for file in get_all_output_files(requests, include_tmp=True): - path = "%s/%s" % (dir_for(file), file.filename) - dirs.add(path[:path.rfind("/")]) - return list(sorted(dirs)) - - -class SpaceSeparatedList(list): - """A list that joins itself with spaces when converted to a string.""" - def __str__(self): - return " ".join(self) +# Copyright (C) 2018 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +# Python 2/3 Compatibility (ICU-20299) +# TODO(ICU-20301): Remove this. +from __future__ import print_function + +import sys + +from . import * + + +def dir_for(file): + if isinstance(file, LocalFile): + return get_local_dirname(file.dirname) + if isinstance(file, SrcFile): + return "{SRC_DIR}" + if isinstance(file, InFile): + return "{IN_DIR}" + if isinstance(file, TmpFile): + return "{TMP_DIR}" + if isinstance(file, OutFile): + return "{OUT_DIR}" + if isinstance(file, PkgFile): + return "{PKG_DIR}" + assert False + + +LOCAL_DIRNAME_SUBSTITUTIONS = { + "SRC": "{SRC_DIR}", + "FILTERS": "{FILTERS_DIR}", + "CWD": "{CWD_DIR}" +} + + +def get_local_dirname(dirname): + if dirname.startswith("/"): + return dirname + elif dirname.startswith("$"): + # Note: directory separator substitution happens later + sep_idx = dirname.find("/") + if sep_idx == -1: + sep_idx = len(dirname) + variable = dirname[1:sep_idx] + if variable in LOCAL_DIRNAME_SUBSTITUTIONS: + return LOCAL_DIRNAME_SUBSTITUTIONS[variable] + dirname[sep_idx:] + print( + "Error: Local directory must be absolute, or relative to one of: " + + (", ".join("$%s" % v for v in LOCAL_DIRNAME_SUBSTITUTIONS.keys())), + file=sys.stderr + ) + exit(1) + + +def concat_dicts(*dicts): + # There is not a super great way to do this in Python: + new_dict = {} + for dict in dicts: + new_dict.update(dict) + return new_dict + + +def repeated_execution_request_looper(request): + # dictionary of lists to list of dictionaries: + ld = [ + dict(zip(request.repeat_with, t)) + for t in zip(*request.repeat_with.values()) + ] + if not ld: + # No special options given in repeat_with + ld = [{} for _ in range(len(request.input_files))] + return zip(ld, request.specific_dep_files, request.input_files, request.output_files) + + +def format_single_request_command(request, cmd_template, common_vars): + return cmd_template.format( + ARGS = request.args.format( + INPUT_FILES = [file.filename for file in request.input_files], + OUTPUT_FILES = [file.filename for file in request.output_files], + **concat_dicts(common_vars, request.format_with) + ) + ) + + +def format_repeated_request_command(request, cmd_template, loop_vars, common_vars): + (iter_vars, _, input_file, output_file) = loop_vars + return cmd_template.format( + ARGS = request.args.format( + INPUT_FILE = input_file.filename, + OUTPUT_FILE = output_file.filename, + **concat_dicts(common_vars, request.format_with, iter_vars) + ) + ) + + +def flatten_requests(requests, config, common_vars): + result = [] + for request in requests: + result += request.flatten(config, requests, common_vars) + return result + + +def get_all_output_files(requests, include_tmp=False): + files = [] + for request in requests: + files += request.all_output_files() + + # Filter out all files but those in OUT_DIR if necessary. + # It is also easy to filter for uniqueness; do it right now and return. + if not include_tmp: + files = (file for file in files if isinstance(file, OutFile)) + return list(set(files)) + + # Filter for unique values. NOTE: Cannot use set() because we need to accept same filename as + # OutFile and TmpFile as different, and by default they evaluate as equal. + return [f for _, f in set((type(f), f) for f in files)] + + +def compute_directories(requests): + dirs = set() + for file in get_all_output_files(requests, include_tmp=True): + path = "%s/%s" % (dir_for(file), file.filename) + dirs.add(path[:path.rfind("/")]) + return list(sorted(dirs)) + + +class SpaceSeparatedList(list): + """A list that joins itself with spaces when converted to a string.""" + def __str__(self): + return " ".join(self) diff --git a/source/samples/break/break.vcxproj b/source/samples/break/break.vcxproj index 165f95a..5cf80d7 100644 --- a/source/samples/break/break.vcxproj +++ b/source/samples/break/break.vcxproj @@ -75,7 +75,6 @@ ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/break.pdb Console - false @@ -102,7 +101,6 @@ ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/break.pdb Console - false @@ -130,7 +128,6 @@ true .\x86\Debug/break.pdb Console - false @@ -158,7 +155,6 @@ true .\x64\Debug/break.pdb Console - false diff --git a/source/samples/cal/cal.c b/source/samples/cal/cal.c index eb606a9..bb096bf 100644 --- a/source/samples/cal/cal.c +++ b/source/samples/cal/cal.c @@ -697,7 +697,7 @@ print_year(UCalendar *c, if(left_current == 0) { break; } - }; + } /* If the current day isn't 0, indent to make up for missing days at the end of the month */ @@ -745,7 +745,7 @@ print_year(UCalendar *c, break; } - }; + } /* Output a newline */ putc('\n', stdout); diff --git a/source/samples/cal/cal.vcxproj b/source/samples/cal/cal.vcxproj index a1fd6c6..00c8ef6 100644 --- a/source/samples/cal/cal.vcxproj +++ b/source/samples/cal/cal.vcxproj @@ -76,7 +76,6 @@ ../../../lib;%(AdditionalLibraryDirectories) .\x86\Release/cal.pdb Console - false @@ -103,7 +102,6 @@ ../../../lib64;%(AdditionalLibraryDirectories) .\x64\Release/cal.pdb Console - false @@ -132,7 +130,6 @@ true .\x86\Debug/cal.pdb Console - false @@ -160,7 +157,6 @@ true .\x64\Debug/cal.pdb Console - false diff --git a/source/samples/case/case.vcxproj b/source/samples/case/case.vcxproj index f58dd01..7620fa5 100644 --- a/source/samples/case/case.vcxproj +++ b/source/samples/case/case.vcxproj @@ -59,7 +59,7 @@ .\x86\Debug/case.tlb - MultiThreadedDebug + MultiThreadedDebugDLL .\x86\Debug/case.pch @@ -75,7 +75,6 @@ ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Debug/case.pdb Console - false @@ -85,7 +84,7 @@ .\x64\Debug/case.tlb - MultiThreadedDebug + MultiThreadedDebugDLL .\x64\Debug/case.pch @@ -103,7 +102,6 @@ true .\x64\Debug/case.pdb Console - false @@ -114,7 +112,7 @@ OnlyExplicitInline - MultiThreaded + MultiThreadedDLL true @@ -130,7 +128,6 @@ ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/case.pdb Console - false @@ -141,7 +138,7 @@ OnlyExplicitInline - MultiThreaded + MultiThreadedDLL true @@ -157,7 +154,6 @@ ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/case.pdb Console - false diff --git a/source/samples/citer/citer.cpp b/source/samples/citer/citer.cpp index 43e5a00..4d5a3bb 100644 --- a/source/samples/citer/citer.cpp +++ b/source/samples/citer/citer.cpp @@ -59,7 +59,7 @@ void Test::TestUChariter() { const UChar *testText = testString.getTerminatedBuffer(); UCharCharacterIterator iter(testText, u_strlen(testText)); - UCharCharacterIterator* test2 = (UCharCharacterIterator*)iter.clone(); + UCharCharacterIterator* test2 = iter.clone(); u_fprintf(out, "testText = %s", testChars); @@ -126,7 +126,7 @@ void Test::TestStringiter() { const UChar *testText = testString.getTerminatedBuffer(); StringCharacterIterator iter(testText, u_strlen(testText)); - StringCharacterIterator* test2 = (StringCharacterIterator*)iter.clone(); + StringCharacterIterator* test2 = iter.clone(); if (iter != *test2 ) { u_fprintf(out, "clone() or equals() failed: Two clones tested unequal\n"); diff --git a/source/samples/citer/citer.vcxproj b/source/samples/citer/citer.vcxproj index b7a9ca1..c6bf105 100644 --- a/source/samples/citer/citer.vcxproj +++ b/source/samples/citer/citer.vcxproj @@ -63,7 +63,6 @@ true $(OutDir)citer.pdb Console - false @@ -85,7 +84,6 @@ true $(OutDir)citer.pdb Console - false @@ -106,7 +104,6 @@ true Console true - false @@ -127,7 +124,6 @@ true Console true - false diff --git a/source/samples/coll/coll.vcxproj b/source/samples/coll/coll.vcxproj index 86e03ed..a486491 100644 --- a/source/samples/coll/coll.vcxproj +++ b/source/samples/coll/coll.vcxproj @@ -70,7 +70,6 @@ ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/coll.pdb Console - false @@ -99,7 +98,6 @@ ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/coll.pdb Console - false @@ -130,7 +128,6 @@ true .\x86\Debug/coll.pdb Console - false @@ -161,7 +158,6 @@ true .\x64\Debug/coll.pdb Console - false diff --git a/source/samples/csdet/csdet.vcxproj b/source/samples/csdet/csdet.vcxproj index d0e5fba..803a514 100644 --- a/source/samples/csdet/csdet.vcxproj +++ b/source/samples/csdet/csdet.vcxproj @@ -65,7 +65,6 @@ true $(OutDir)csdet.pdb Console - false @@ -92,7 +91,6 @@ true $(OutDir)csdet.pdb Console - false @@ -113,7 +111,6 @@ true Console true - false @@ -134,7 +131,6 @@ true Console true - false diff --git a/source/samples/date/date.vcxproj b/source/samples/date/date.vcxproj index 3cb82d9..d0308a3 100644 --- a/source/samples/date/date.vcxproj +++ b/source/samples/date/date.vcxproj @@ -70,7 +70,6 @@ ../../../lib;%(AdditionalLibraryDirectories) .\x86\Release/date.pdb Console - false @@ -98,7 +97,6 @@ ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/date.pdb Console - false @@ -128,7 +126,6 @@ true .\x86\Debug/date.pdb Console - false @@ -156,7 +153,6 @@ true .\x64\Debug/date.pdb Console - false diff --git a/source/samples/datefmt/datefmt.vcxproj b/source/samples/datefmt/datefmt.vcxproj index 854032e..e22dde6 100644 --- a/source/samples/datefmt/datefmt.vcxproj +++ b/source/samples/datefmt/datefmt.vcxproj @@ -70,7 +70,6 @@ true .\x86\Debug/datefmt.pdb Console - false @@ -99,7 +98,6 @@ true .\x64\Debug/datefmt.pdb Console - false @@ -128,7 +126,6 @@ ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/datefmt.pdb Console - false @@ -157,7 +154,6 @@ ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/datefmt.pdb Console - false diff --git a/source/samples/layout/layout.vcxproj b/source/samples/layout/layout.vcxproj index 4b1fb1a..f6114bb 100644 --- a/source/samples/layout/layout.vcxproj +++ b/source/samples/layout/layout.vcxproj @@ -78,7 +78,6 @@ true .\x86\Release/layout.pdb Windows - false @@ -116,7 +115,6 @@ true .\x64\Release/layout.pdb Windows - false MachineX64 @@ -155,7 +153,6 @@ true .\x86\Debug/layout.pdb Windows - false @@ -194,7 +191,6 @@ true .\x64\Debug/layout.pdb Windows - false MachineX64 diff --git a/source/samples/legacy/legacy.vcxproj b/source/samples/legacy/legacy.vcxproj index 2436983..e96fa91 100644 --- a/source/samples/legacy/legacy.vcxproj +++ b/source/samples/legacy/legacy.vcxproj @@ -115,7 +115,6 @@ ../../../lib;%(AdditionalLibraryDirectories) .\x86\Release/legacy.pdb Console - false @@ -154,7 +153,6 @@ ../../../lib64;%(AdditionalLibraryDirectories) .\x64\Release/legacy.pdb Console - false MachineX64 @@ -194,7 +192,6 @@ true .\x86\Debug/legacy.pdb Console - false @@ -234,7 +231,6 @@ true .\x64\Debug/legacy.pdb Console - false MachineX64 diff --git a/source/samples/msgfmt/msgfmt.vcxproj b/source/samples/msgfmt/msgfmt.vcxproj index 8e649a7..8b7a951 100644 --- a/source/samples/msgfmt/msgfmt.vcxproj +++ b/source/samples/msgfmt/msgfmt.vcxproj @@ -71,7 +71,6 @@ ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/msgfmt.pdb Console - false @@ -100,7 +99,6 @@ ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/msgfmt.pdb Console - false @@ -130,7 +128,6 @@ true .\x86\Debug/msgfmt.pdb Console - false @@ -160,7 +157,6 @@ true .\x64\Debug/msgfmt.pdb Console - false diff --git a/source/samples/numfmt/numfmt.vcxproj b/source/samples/numfmt/numfmt.vcxproj index 61b90fe..e345627 100644 --- a/source/samples/numfmt/numfmt.vcxproj +++ b/source/samples/numfmt/numfmt.vcxproj @@ -70,7 +70,6 @@ true .\x86\Debug/numfmt.pdb Console - false @@ -103,7 +102,6 @@ true .\x64\Debug/numfmt.pdb Console - false @@ -132,7 +130,6 @@ ../../../lib;%(AdditionalLibraryDirectories) .\x86\Release/numfmt.pdb Console - false @@ -161,7 +158,6 @@ ../../../lib64;%(AdditionalLibraryDirectories) .\x64\Release/numfmt.pdb Console - false diff --git a/source/samples/props/props.vcxproj b/source/samples/props/props.vcxproj index 6137a48..5225c4a 100644 --- a/source/samples/props/props.vcxproj +++ b/source/samples/props/props.vcxproj @@ -74,7 +74,6 @@ ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/props.pdb Console - false @@ -108,7 +107,6 @@ ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/props.pdb Console - false @@ -143,7 +141,6 @@ true .\x86\Debug/props.pdb Console - false @@ -178,7 +175,6 @@ true .\x64\Debug/props.pdb Console - false diff --git a/source/samples/strsrch/strsrch.vcxproj b/source/samples/strsrch/strsrch.vcxproj index bf8df52..021bf22 100644 --- a/source/samples/strsrch/strsrch.vcxproj +++ b/source/samples/strsrch/strsrch.vcxproj @@ -73,7 +73,6 @@ true .\x86\Debug/strsrch.pdb Console - false @@ -103,7 +102,6 @@ true .\x64\Debug/strsrch.pdb Console - false @@ -133,7 +131,6 @@ ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/strsrch.pdb Console - false @@ -164,7 +161,6 @@ ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/strsrch.pdb Console - false diff --git a/source/samples/translit/translit.vcxproj b/source/samples/translit/translit.vcxproj index bd747ef..fe91ee7 100644 --- a/source/samples/translit/translit.vcxproj +++ b/source/samples/translit/translit.vcxproj @@ -75,7 +75,6 @@ true .\x86\Debug/translit.pdb Console - false @@ -102,7 +101,6 @@ true .\x64\Debug/translit.pdb Console - false @@ -129,7 +127,6 @@ ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/translit.pdb Console - false @@ -156,7 +153,6 @@ ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/translit.pdb Console - false diff --git a/source/samples/uciter8/uciter8.vcxproj b/source/samples/uciter8/uciter8.vcxproj index 39e3256..b417be3 100644 --- a/source/samples/uciter8/uciter8.vcxproj +++ b/source/samples/uciter8/uciter8.vcxproj @@ -75,7 +75,6 @@ true .\x86\Debug/uciter8.pdb Console - false @@ -102,7 +101,6 @@ true .\x64\Debug/uciter8.pdb Console - false @@ -129,7 +127,6 @@ ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/uciter8.pdb Console - false @@ -156,7 +153,6 @@ ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/uciter8.pdb Console - false diff --git a/source/samples/ucnv/ucnv.vcxproj b/source/samples/ucnv/ucnv.vcxproj index e17e555..65d4dbe 100644 --- a/source/samples/ucnv/ucnv.vcxproj +++ b/source/samples/ucnv/ucnv.vcxproj @@ -75,7 +75,6 @@ true .\x86\Debug/ucnv.pdb Console - false @@ -102,7 +101,6 @@ true .\x64\Debug/ucnv.pdb Console - false @@ -129,7 +127,6 @@ ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/ucnv.pdb Console - false @@ -156,7 +153,6 @@ ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/ucnv.pdb Console - false diff --git a/source/samples/udata/reader.vcxproj b/source/samples/udata/reader.vcxproj index 24408b7..32c11f9 100644 --- a/source/samples/udata/reader.vcxproj +++ b/source/samples/udata/reader.vcxproj @@ -76,7 +76,6 @@ true .\reader_Win32_Debug/reader.pdb Console - false @@ -105,7 +104,6 @@ true .\reader_x64_Debug/reader.pdb Console - false @@ -134,7 +132,6 @@ ../../../lib;%(AdditionalLibraryDirectories) .\reader_Win32_Release/reader.pdb Console - false @@ -164,7 +161,6 @@ ../../../lib64;%(AdditionalLibraryDirectories) .\reader_x64_Release/reader.pdb Console - false diff --git a/source/samples/udata/writer.vcxproj b/source/samples/udata/writer.vcxproj index ee57b61..0bb8320 100644 --- a/source/samples/udata/writer.vcxproj +++ b/source/samples/udata/writer.vcxproj @@ -76,7 +76,6 @@ true .\x86\Debug/writer.pdb Console - false @@ -107,7 +106,6 @@ true .\x64\Debug/writer.pdb Console - false @@ -136,7 +134,6 @@ ../../../lib;%(AdditionalLibraryDirectories) .\x86\Release/writer.pdb Console - false @@ -165,7 +162,6 @@ ../../../lib64;%(AdditionalLibraryDirectories) .\x64\Release\writer.pdb Console - false diff --git a/source/samples/ufortune/ufortune.vcxproj b/source/samples/ufortune/ufortune.vcxproj index 7eb88ca..8e04935 100644 --- a/source/samples/ufortune/ufortune.vcxproj +++ b/source/samples/ufortune/ufortune.vcxproj @@ -70,7 +70,6 @@ ../../../lib;%(AdditionalLibraryDirectories) true Console - false @@ -101,7 +100,6 @@ true ../../../lib;%(AdditionalLibraryDirectories) Console - false diff --git a/source/samples/ugrep/ugrep.vcxproj b/source/samples/ugrep/ugrep.vcxproj index 5d7416f..39ab564 100644 --- a/source/samples/ugrep/ugrep.vcxproj +++ b/source/samples/ugrep/ugrep.vcxproj @@ -74,7 +74,6 @@ ../../../lib;%(AdditionalLibraryDirectories) .\x86\Release/ugrep.pdb Console - false @@ -109,7 +108,6 @@ ../../../lib64;%(AdditionalLibraryDirectories) .\x64\Release/ugrep.pdb Console - false @@ -143,7 +141,6 @@ true .\x86\Debug/ugrep.pdb Console - false @@ -175,7 +172,6 @@ true .\x64\Debug/ugrep.pdb Console - false diff --git a/source/samples/uresb/uresb.vcxproj b/source/samples/uresb/uresb.vcxproj index 49c9a1b..6e6e96b 100644 --- a/source/samples/uresb/uresb.vcxproj +++ b/source/samples/uresb/uresb.vcxproj @@ -78,7 +78,6 @@ ../../../lib/;../../tools/toolutil/;%(AdditionalLibraryDirectories) .\x86\Release/uresb.pdb Console - false @@ -109,7 +108,6 @@ ../../../lib64/;../../tools/toolutil/;%(AdditionalLibraryDirectories) .\x64\Release/uresb.pdb Console - false @@ -140,7 +138,6 @@ true .\x86\Debug/uresb.pdb Console - false @@ -170,7 +167,6 @@ true .\x64\Debug/uresb.pdb Console - false diff --git a/source/samples/ustring/ustring.vcxproj b/source/samples/ustring/ustring.vcxproj index d7b03d4..7e2882d 100644 --- a/source/samples/ustring/ustring.vcxproj +++ b/source/samples/ustring/ustring.vcxproj @@ -75,7 +75,6 @@ ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/ustring.pdb Console - false @@ -103,7 +102,6 @@ ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/ustring.pdb Console - false @@ -130,7 +128,6 @@ true .\x86\Debug/ustring.pdb Console - false @@ -157,7 +154,6 @@ true .\x64\Debug/ustring.pdb Console - false diff --git a/source/stubdata/stubdata.vcxproj b/source/stubdata/stubdata.vcxproj index 43a1f0f..751bba0 100644 --- a/source/stubdata/stubdata.vcxproj +++ b/source/stubdata/stubdata.vcxproj @@ -35,29 +35,31 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\Release\ - .\x86\Release\ - false - false - .\x86\Debug\ - .\x86\Debug\ - false - .\x64\Release\ - .\x64\Release\ - false - false - .\x64\Debug\ - .\x64\Debug\ - false + false + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false + + $(OutDir)\icudt.tlb + ..\common;%(AdditionalIncludeDirectories) STUBDATA_BUILD;%(PreprocessorDefinitions) true Level3 Default + $(OutDir)/icudt.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/icudt.pdb STUBDATA_BUILD;%(PreprocessorDefinitions) @@ -66,11 +68,13 @@ echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." > "$(ProjectDir)stubdatabuilt.txt" - 0x4ad00000 true true - false true + + ..\..\$(IcuBinOutputDir)\icudt65.dll + .\..\..\$(IcuLibOutputDir)\icudt.pdb + ..\..\$(IcuLibOutputDir)\icudt.lib @@ -85,80 +89,6 @@ MultiThreadedDLL - - - .\x86\Release\icudt.tlb - - - - - .\x86\Release\stubdata.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ - - - ..\..\bin\icudt64.dll - true - .\x86\Release\icudt.pdb - - - ..\..\lib\icudt.lib - - - - - .\x86\Debug/icudt.tlb - - - .\x86\Debug/stubdata.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ - - - ..\..\bin\icudt64.dll - .\x86\Debug/icudt.pdb - - - ..\..\lib\icudt.lib - - - - - .\x64\Release\icudt.tlb - - - - - .\x64\Release\stubdata.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - - - ..\..\bin64\icudt64.dll - true - .\x64\Release\icudt.pdb - ..\..\lib64\icudt.lib - - - - - .\x64\Debug/icudt.tlb - - - .\x64\Debug/stubdata.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - - - ..\..\bin64\icudt64.dll - .\x64\Debug/icudt.pdb - ..\..\lib64\icudt.lib - - diff --git a/source/test/Makefile.in b/source/test/Makefile.in index 7bb5b22..5affa11 100644 --- a/source/test/Makefile.in +++ b/source/test/Makefile.in @@ -15,6 +15,8 @@ include $(top_builddir)/icudefs.mk ## Build directory information subdir = test +@FUZZER_TRUE@FUZZER=fuzzer + @ICUIO_TRUE@IOTEST = iotest # the letest directory depends on layoutex. @@ -32,7 +34,7 @@ STATUS_FULL = $(shell pwd)/$(STATUS_TMP) ## Files to remove for 'make clean' CLEANFILES = *~ $(STATUS_TMP) -SUBDIRS = $(TESTDATA) intltest $(IOTEST) cintltst $(LETEST) +SUBDIRS = $(TESTDATA) intltest $(IOTEST) cintltst $(LETEST) $(FUZZER) ## List of phony targets .PHONY : everything all all-local all-recursive install install-local \ @@ -140,6 +142,8 @@ pcheck: $(STATUS_FILES) @goods=; \ bads=; \ echo "----------------------------------------"; \ + echo $SUBDIRS \ + echo "----------------------------------------"; \ for subdir in $(SUBDIRS); do \ if [ -s "$(MYSTATUS_R).$$subdir" ]; then \ echo "-------------" ; \ diff --git a/source/test/cintltst/bocu1tst.c b/source/test/cintltst/bocu1tst.c index a8edc18..edfe650 100644 --- a/source/test/cintltst/bocu1tst.c +++ b/source/test/cintltst/bocu1tst.c @@ -212,14 +212,14 @@ bocu1TrailToByte[BOCU1_TRAIL_CONTROLS_COUNT]={ * @param d Divisor. * @param m Output variable for the rest (modulo result). */ -#define NEGDIVMOD(n, d, m) { \ +#define NEGDIVMOD(n, d, m) UPRV_BLOCK_MACRO_BEGIN { \ (m)=(n)%(d); \ (n)/=(d); \ if((m)<0) { \ --(n); \ (m)+=(d); \ } \ -} +} UPRV_BLOCK_MACRO_END /* State for BOCU-1 decoder function. */ struct Bocu1Rx { diff --git a/source/test/cintltst/callcoll.c b/source/test/cintltst/callcoll.c index 791f4e0..c7c9067 100644 --- a/source/test/cintltst/callcoll.c +++ b/source/test/cintltst/callcoll.c @@ -219,7 +219,7 @@ UBool hasCollationElements(const char *locName) { UErrorCode status = U_ZERO_ERROR; - UResourceBundle *loc = ures_open(U_ICUDATA_NAME U_TREE_SEPARATOR_STRING "coll", locName, &status);; + UResourceBundle *loc = ures_open(U_ICUDATA_NAME U_TREE_SEPARATOR_STRING "coll", locName, &status); if(U_SUCCESS(status)) { status = U_ZERO_ERROR; diff --git a/source/test/cintltst/capitst.c b/source/test/cintltst/capitst.c index bf751b1..f328b8a 100644 --- a/source/test/cintltst/capitst.c +++ b/source/test/cintltst/capitst.c @@ -42,6 +42,7 @@ static void TestBengaliSortKey(void); static char* U_EXPORT2 ucol_sortKeyToString(const UCollator *coll, const uint8_t *sortkey, char *buffer, uint32_t len) { + (void)coll; // suppress compiler warnings about unused variable uint32_t position = 0; uint8_t b; @@ -530,8 +531,8 @@ void TestRuleBasedColl() } while (TRUE) { /* testing with en since thai has its own tailoring */ - uint32_t ce = ucol_next(iter1, &status); - uint32_t ce2 = ucol_next(iter2, &status); + int32_t ce = ucol_next(iter1, &status); + int32_t ce2 = ucol_next(iter2, &status); if(U_FAILURE(status)) { log_err("ERROR: CollationElement iterator creation failed.: %s\n", myErrorName(status)); return; @@ -848,7 +849,7 @@ void TestCloneBinary(){ ucol_getSortKey(col, t, -1, k2, l2); if (strcmp((char *)k1,(char *)k2) != 0){ log_err("ucol_openBinary - new collator should equal to old one\n"); - }; + } free(k1); free(k2); } @@ -1544,64 +1545,64 @@ void TestBounds() { }; struct teststruct tests[] = { - {"\\u010CAKI MIHALJ" } , - {"\\u010CAKI MIHALJ" } , - {"\\u010CAKI PIRO\\u0160KA" }, - {"\\u010CABAI ANDRIJA" } , - {"\\u010CABAI LAJO\\u0160" } , - {"\\u010CABAI MARIJA" } , - {"\\u010CABAI STEVAN" } , - {"\\u010CABAI STEVAN" } , - {"\\u010CABARKAPA BRANKO" } , - {"\\u010CABARKAPA MILENKO" } , - {"\\u010CABARKAPA MIROSLAV" } , - {"\\u010CABARKAPA SIMO" } , - {"\\u010CABARKAPA STANKO" } , - {"\\u010CABARKAPA TAMARA" } , - {"\\u010CABARKAPA TOMA\\u0160" } , - {"\\u010CABDARI\\u0106 NIKOLA" } , - {"\\u010CABDARI\\u0106 ZORICA" } , - {"\\u010CABI NANDOR" } , - {"\\u010CABOVI\\u0106 MILAN" } , - {"\\u010CABRADI AGNEZIJA" } , - {"\\u010CABRADI IVAN" } , - {"\\u010CABRADI JELENA" } , - {"\\u010CABRADI LJUBICA" } , - {"\\u010CABRADI STEVAN" } , - {"\\u010CABRDA MARTIN" } , - {"\\u010CABRILO BOGDAN" } , - {"\\u010CABRILO BRANISLAV" } , - {"\\u010CABRILO LAZAR" } , - {"\\u010CABRILO LJUBICA" } , - {"\\u010CABRILO SPASOJA" } , - {"\\u010CADE\\u0160 ZDENKA" } , - {"\\u010CADESKI BLAGOJE" } , - {"\\u010CADOVSKI VLADIMIR" } , - {"\\u010CAGLJEVI\\u0106 TOMA" } , - {"\\u010CAGOROVI\\u0106 VLADIMIR" } , - {"\\u010CAJA VANKA" } , - {"\\u010CAJI\\u0106 BOGOLJUB" } , - {"\\u010CAJI\\u0106 BORISLAV" } , - {"\\u010CAJI\\u0106 RADOSLAV" } , - {"\\u010CAK\\u0160IRAN MILADIN" } , - {"\\u010CAKAN EUGEN" } , - {"\\u010CAKAN EVGENIJE" } , - {"\\u010CAKAN IVAN" } , - {"\\u010CAKAN JULIJAN" } , - {"\\u010CAKAN MIHAJLO" } , - {"\\u010CAKAN STEVAN" } , - {"\\u010CAKAN VLADIMIR" } , - {"\\u010CAKAN VLADIMIR" } , - {"\\u010CAKAN VLADIMIR" } , - {"\\u010CAKARA ANA" } , - {"\\u010CAKAREVI\\u0106 MOMIR" } , - {"\\u010CAKAREVI\\u0106 NEDELJKO" } , - {"\\u010CAKI \\u0160ANDOR" } , - {"\\u010CAKI AMALIJA" } , - {"\\u010CAKI ANDRA\\u0160" } , - {"\\u010CAKI LADISLAV" } , - {"\\u010CAKI LAJO\\u0160" } , - {"\\u010CAKI LASLO" } , + {"\\u010CAKI MIHALJ", {0}}, + {"\\u010CAKI MIHALJ", {0}}, + {"\\u010CAKI PIRO\\u0160KA", {0}}, + {"\\u010CABAI ANDRIJA", {0}}, + {"\\u010CABAI LAJO\\u0160", {0}}, + {"\\u010CABAI MARIJA", {0}}, + {"\\u010CABAI STEVAN", {0}}, + {"\\u010CABAI STEVAN", {0}}, + {"\\u010CABARKAPA BRANKO", {0}}, + {"\\u010CABARKAPA MILENKO", {0}}, + {"\\u010CABARKAPA MIROSLAV", {0}}, + {"\\u010CABARKAPA SIMO", {0}}, + {"\\u010CABARKAPA STANKO", {0}}, + {"\\u010CABARKAPA TAMARA", {0}}, + {"\\u010CABARKAPA TOMA\\u0160", {0}}, + {"\\u010CABDARI\\u0106 NIKOLA", {0}}, + {"\\u010CABDARI\\u0106 ZORICA", {0}}, + {"\\u010CABI NANDOR", {0}}, + {"\\u010CABOVI\\u0106 MILAN", {0}}, + {"\\u010CABRADI AGNEZIJA", {0}}, + {"\\u010CABRADI IVAN", {0}}, + {"\\u010CABRADI JELENA", {0}}, + {"\\u010CABRADI LJUBICA", {0}}, + {"\\u010CABRADI STEVAN", {0}}, + {"\\u010CABRDA MARTIN", {0}}, + {"\\u010CABRILO BOGDAN", {0}}, + {"\\u010CABRILO BRANISLAV", {0}}, + {"\\u010CABRILO LAZAR", {0}}, + {"\\u010CABRILO LJUBICA", {0}}, + {"\\u010CABRILO SPASOJA", {0}}, + {"\\u010CADE\\u0160 ZDENKA", {0}}, + {"\\u010CADESKI BLAGOJE", {0}}, + {"\\u010CADOVSKI VLADIMIR", {0}}, + {"\\u010CAGLJEVI\\u0106 TOMA", {0}}, + {"\\u010CAGOROVI\\u0106 VLADIMIR", {0}}, + {"\\u010CAJA VANKA", {0}}, + {"\\u010CAJI\\u0106 BOGOLJUB", {0}}, + {"\\u010CAJI\\u0106 BORISLAV", {0}}, + {"\\u010CAJI\\u0106 RADOSLAV", {0}}, + {"\\u010CAK\\u0160IRAN MILADIN", {0}}, + {"\\u010CAKAN EUGEN", {0}}, + {"\\u010CAKAN EVGENIJE", {0}}, + {"\\u010CAKAN IVAN", {0}}, + {"\\u010CAKAN JULIJAN", {0}}, + {"\\u010CAKAN MIHAJLO", {0}}, + {"\\u010CAKAN STEVAN", {0}}, + {"\\u010CAKAN VLADIMIR", {0}}, + {"\\u010CAKAN VLADIMIR", {0}}, + {"\\u010CAKAN VLADIMIR", {0}}, + {"\\u010CAKARA ANA", {0}}, + {"\\u010CAKAREVI\\u0106 MOMIR", {0}}, + {"\\u010CAKAREVI\\u0106 NEDELJKO", {0}}, + {"\\u010CAKI \\u0160ANDOR", {0}}, + {"\\u010CAKI AMALIJA", {0}}, + {"\\u010CAKI ANDRA\\u0160", {0}}, + {"\\u010CAKI LADISLAV", {0}}, + {"\\u010CAKI LAJO\\u0160", {0}}, + {"\\u010CAKI LASLO", {0}}, }; diff --git a/source/test/cintltst/cbiapts.c b/source/test/cintltst/cbiapts.c index 92e6c1a..c72de75 100644 --- a/source/test/cintltst/cbiapts.c +++ b/source/test/cintltst/cbiapts.c @@ -35,11 +35,17 @@ #include "cbiapts.h" #include "cmemory.h" -#define TEST_ASSERT_SUCCESS(status) {if (U_FAILURE(status)) { \ -log_data_err("Failure at file %s, line %d, error = %s (Are you missing data?)\n", __FILE__, __LINE__, u_errorName(status));}} - -#define TEST_ASSERT(expr) {if ((expr)==FALSE) { \ -log_data_err("Test Failure at file %s, line %d (Are you missing data?)\n", __FILE__, __LINE__);}} +#define TEST_ASSERT_SUCCESS(status) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(status)) { \ + log_data_err("Failure at file %s, line %d, error = %s (Are you missing data?)\n", __FILE__, __LINE__, u_errorName(status)); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define TEST_ASSERT(expr) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expr)==FALSE) { \ + log_data_err("Test Failure at file %s, line %d (Are you missing data?)\n", __FILE__, __LINE__); \ + } \ +} UPRV_BLOCK_MACRO_END #if !UCONFIG_NO_FILE_IO static void TestBreakIteratorSafeClone(void); @@ -99,7 +105,7 @@ static UChar* toUChar(const char *src, void **freeHook) { UErrorCode status = U_ZERO_ERROR; if (src == NULL) { return NULL; - }; + } cnv = ucnv_open(NULL, &status); if(U_FAILURE(status) || cnv == NULL) { @@ -532,7 +538,7 @@ static UBreakIterator * testOpenRules(char *rules) { if (U_FAILURE(status)) { log_data_err("FAIL: ubrk_openRules: ICU Error \"%s\" (Are you missing data?)\n", u_errorName(status)); bi = 0; - }; + } freeToUCharStrings(&strCleanUp); return bi; @@ -566,7 +572,7 @@ static void TestBreakIteratorRules() { ubrk_setText(bi, uData, -1, &status); pos = ubrk_first(bi); - for (i=0; i= sizeof(columns)) + if (k >= (int32_t)sizeof(columns)) c = '+'; else c = columns[k]; @@ -1287,11 +1287,12 @@ _testReordering(UBiDi *pBiDi, int testNumber) { } } -#define RETURN_IF_BAD_ERRCODE(x) \ +#define RETURN_IF_BAD_ERRCODE(x) UPRV_BLOCK_MACRO_BEGIN { \ if (U_FAILURE(errorCode)) { \ log_err("\nbad errorCode %d at %s\n", errorCode, (x)); \ return; \ } \ +} UPRV_BLOCK_MACRO_END #define STRING_TEST_CASE(s) { (s), UPRV_LENGTHOF(s) } @@ -4630,7 +4631,7 @@ static char * formatMap(const int32_t * map, int len, char * buffer) k = map[i]; if (k < 0) c = '-'; - else if (k >= sizeof(columns)) + else if (k >= (int32_t)sizeof(columns)) c = '+'; else c = columns[k]; diff --git a/source/test/cintltst/ccaltst.c b/source/test/cintltst/ccaltst.c index ce84ddd..44cf712 100644 --- a/source/test/cintltst/ccaltst.c +++ b/source/test/cintltst/ccaltst.c @@ -40,7 +40,7 @@ void TestGetTZTransition(void); void TestGetWindowsTimeZoneID(void); void TestGetTimeZoneIDByWindowsID(void); -void TestJpnCalAddSetNextEra(); +void TestJpnCalAddSetNextEra(void); void addCalTest(TestNode** root); @@ -114,7 +114,8 @@ static void TestCalendar() UChar *result = 0; int32_t resultlength, resultlengthneeded; char tempMsgBuf[1024]; // u_austrcpy() of some formatted dates & times. - UChar zone1[32], zone2[32]; + char tempMsgBuf2[256]; // u_austrcpy() of some formatted dates & times. + UChar zone1[64], zone2[64]; const char *tzver = 0; UChar canonicalID[64]; UBool isSystemID = FALSE; @@ -228,10 +229,10 @@ static void TestCalendar() log_err("FAIL: ucal_getDSTSavings(PST) => %d, expect %d\n", i, 1*60*60*1000); } - /*Test ucal_set/getDefaultTimeZone*/ + /*Test ucal_set/getDefaultTimeZone and ucal_getHostTimeZone */ status = U_ZERO_ERROR; i = ucal_getDefaultTimeZone(zone1, UPRV_LENGTHOF(zone1), &status); - if (U_FAILURE(status)) { + if (U_FAILURE(status) || status == U_STRING_NOT_TERMINATED_WARNING) { log_err("FAIL: ucal_getDefaultTimeZone() => %s\n", u_errorName(status)); } else { @@ -247,6 +248,17 @@ static void TestCalendar() } else { if (u_strcmp(zone2, EUROPE_PARIS) != 0) { log_data_err("FAIL: ucal_getDefaultTimeZone() did not return Europe/Paris (Are you missing data?)\n"); + } else { + // Redetect the host timezone, it should be the same as zone1 even though ICU's default timezone has been changed. + i = ucal_getHostTimeZone(zone2, UPRV_LENGTHOF(zone2), &status); + if (U_FAILURE(status) || status == U_STRING_NOT_TERMINATED_WARNING) { + log_err("FAIL: ucal_getHostTimeZone() => %s\n", u_errorName(status)); + } else { + if (u_strcmp(zone1, zone2) != 0) { + log_err("FAIL: ucal_getHostTimeZone() should give the same host timezone even if the default changed. (Got '%s', Expected '%s').\n", + u_austrcpy(tempMsgBuf, zone2), u_austrcpy(tempMsgBuf2, zone1)); + } + } } } } @@ -346,6 +358,11 @@ static void TestCalendar() datdef=udat_open(UDAT_FULL,UDAT_FULL ,NULL, NULL, 0,NULL,0,&status); if(U_FAILURE(status)){ log_data_err("FAIL: error in creating the dateformat : %s (Are you missing data?)\n", u_errorName(status)); + ucal_close(caldef2); + ucal_close(calfr); + ucal_close(calit); + ucal_close(calfrclone); + ucal_close(caldef); return; } log_verbose("PASS: The current date and time fetched is %s\n", u_austrcpy(tempMsgBuf, myDateFormat(datdef, now)) ); @@ -525,6 +542,10 @@ static void TestGetSetDateAPI() if(U_FAILURE(status)) { log_data_err("error in creating the dateformat : %s (Are you missing data?)\n", u_errorName(status)); + ucal_close(caldef); + ucal_close(caldef2); + ucal_close(caldef3); + udat_close(datdef); return; } @@ -935,7 +956,7 @@ static void TestAddRollExtensive() u_uastrcpy(tzID, "PST"); /*open the calendar used */ - cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_GREGORIAN, &status);; + cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_GREGORIAN, &status); if (U_FAILURE(status)) { log_data_err("ucal_open() failed : %s - (Are you missing data?)\n", u_errorName(status)); return; @@ -1123,7 +1144,7 @@ static void TestGetLimits() u_uastrcpy(tzID, "PST"); /*open the calendar used */ - cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_GREGORIAN, &status);; + cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_GREGORIAN, &status); if (U_FAILURE(status)) { log_data_err("ucal_open() for gregorian calendar failed in TestGetLimits: %s - (Are you missing data?)\n", u_errorName(status)); return; @@ -1221,7 +1242,7 @@ static void TestDOWProgression() char tempMsgBuf[256]; u_strcpy(tzID, fgGMTID); /*open the calendar used */ - cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_TRADITIONAL, &status);; + cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_TRADITIONAL, &status); if (U_FAILURE(status)) { log_data_err("ucal_open failed: %s - (Are you missing data?)\n", u_errorName(status)); return; @@ -1238,30 +1259,33 @@ static void TestDOWProgression() log_verbose("\nTesting the DOW progression\n"); initialDOW = ucal_get(cal, UCAL_DAY_OF_WEEK, &status); - if (U_FAILURE(status)) { log_data_err("ucal_get() failed: %s (Are you missing data?)\n", u_errorName(status) ); return; } - newDOW = initialDOW; - do { - DOW = newDOW; - log_verbose("DOW = %d...\n", DOW); - date1=ucal_getMillis(cal, &status); - if(U_FAILURE(status)){ log_err("ucal_getMiilis() failed: %s\n", u_errorName(status)); return;} - log_verbose("%s\n", u_austrcpy(tempMsgBuf, myDateFormat(datfor, date1))); - - ucal_add(cal,UCAL_DAY_OF_WEEK, delta, &status); - if (U_FAILURE(status)) { log_err("ucal_add() failed: %s\n", u_errorName(status)); return; } - - newDOW = ucal_get(cal, UCAL_DAY_OF_WEEK, &status); - if (U_FAILURE(status)) { log_err("ucal_get() failed: %s\n", u_errorName(status)); return; } - expectedDOW = 1 + (DOW + delta - 1) % 7; - date1=ucal_getMillis(cal, &status); - if(U_FAILURE(status)){ log_err("ucal_getMiilis() failed: %s\n", u_errorName(status)); return;} - if (newDOW != expectedDOW) { - log_err("Day of week should be %d instead of %d on %s", expectedDOW, newDOW, - u_austrcpy(tempMsgBuf, myDateFormat(datfor, date1)) ); - return; + if (U_FAILURE(status)) { + log_data_err("ucal_get() failed: %s (Are you missing data?)\n", u_errorName(status) ); + } else { + newDOW = initialDOW; + do { + DOW = newDOW; + log_verbose("DOW = %d...\n", DOW); + date1=ucal_getMillis(cal, &status); + if(U_FAILURE(status)){ log_err("ucal_getMiilis() failed: %s\n", u_errorName(status)); break;} + log_verbose("%s\n", u_austrcpy(tempMsgBuf, myDateFormat(datfor, date1))); + + ucal_add(cal,UCAL_DAY_OF_WEEK, delta, &status); + if (U_FAILURE(status)) { log_err("ucal_add() failed: %s\n", u_errorName(status)); break; } + + newDOW = ucal_get(cal, UCAL_DAY_OF_WEEK, &status); + if (U_FAILURE(status)) { log_err("ucal_get() failed: %s\n", u_errorName(status)); break; } + expectedDOW = 1 + (DOW + delta - 1) % 7; + date1=ucal_getMillis(cal, &status); + if(U_FAILURE(status)){ log_err("ucal_getMiilis() failed: %s\n", u_errorName(status)); break;} + if (newDOW != expectedDOW) { + log_err("Day of week should be %d instead of %d on %s", expectedDOW, newDOW, + u_austrcpy(tempMsgBuf, myDateFormat(datfor, date1)) ); + break; + } } + while (newDOW != initialDOW); } - while (newDOW != initialDOW); ucal_close(cal); udat_close(datfor); @@ -1294,16 +1318,16 @@ static void testZones(int32_t yr, int32_t mo, int32_t dt, int32_t hr, int32_t mn char tempMsgBuf[256]; u_strcpy(tzID, fgGMTID); - gmtcal=ucal_open(tzID, 3, "en_US", UCAL_TRADITIONAL, &status);; + gmtcal=ucal_open(tzID, 3, "en_US", UCAL_TRADITIONAL, &status); if (U_FAILURE(status)) { log_data_err("ucal_open failed: %s - (Are you missing data?)\n", u_errorName(status)); - return; + goto cleanup; } u_uastrcpy(tzID, "PST"); cal = ucal_open(tzID, 3, "en_US", UCAL_TRADITIONAL, &status); if (U_FAILURE(status)) { log_err("ucal_open failed: %s\n", u_errorName(status)); - return; + goto cleanup; } datfor=udat_open(UDAT_MEDIUM,UDAT_MEDIUM ,NULL, fgGMTID,-1,NULL, 0, &status); @@ -1314,13 +1338,13 @@ static void testZones(int32_t yr, int32_t mo, int32_t dt, int32_t hr, int32_t mn ucal_setDateTime(gmtcal, yr, mo - 1, dt, hr, mn, sc, &status); if (U_FAILURE(status)) { log_data_err("ucal_setDateTime failed: %s (Are you missing data?)\n", u_errorName(status)); - return; + goto cleanup; } ucal_set(gmtcal, UCAL_MILLISECOND, 0); date1 = ucal_getMillis(gmtcal, &status); if (U_FAILURE(status)) { log_err("ucal_getMillis failed: %s\n", u_errorName(status)); - return; + goto cleanup; } log_verbose("date = %s\n", u_austrcpy(tempMsgBuf, myDateFormat(datfor, date1)) ); @@ -1328,7 +1352,7 @@ static void testZones(int32_t yr, int32_t mo, int32_t dt, int32_t hr, int32_t mn ucal_setMillis(cal, date1, &status); if (U_FAILURE(status)) { log_err("ucal_setMillis() failed: %s\n", u_errorName(status)); - return; + goto cleanup; } offset = ucal_get(cal, UCAL_ZONE_OFFSET, &status); @@ -1336,7 +1360,7 @@ static void testZones(int32_t yr, int32_t mo, int32_t dt, int32_t hr, int32_t mn if (U_FAILURE(status)) { log_err("ucal_get() failed: %s\n", u_errorName(status)); - return; + goto cleanup; } temp=(double)((double)offset / 1000.0 / 60.0 / 60.0); /*printf("offset for %s %f hr\n", austrdup(myDateFormat(datfor, date1)), temp);*/ @@ -1347,7 +1371,7 @@ static void testZones(int32_t yr, int32_t mo, int32_t dt, int32_t hr, int32_t mn ucal_get(cal, UCAL_MILLISECOND, &status) - offset; if (U_FAILURE(status)) { log_err("ucal_get() failed: %s\n", u_errorName(status)); - return; + goto cleanup; } expected = ((hr * 60 + mn) * 60 + sc) * 1000; @@ -1357,6 +1381,8 @@ static void testZones(int32_t yr, int32_t mo, int32_t dt, int32_t hr, int32_t mn } else log_verbose("PASS: the offset between local and GMT is correct\n"); + +cleanup: ucal_close(gmtcal); ucal_close(cal); udat_close(datfor); @@ -2379,6 +2405,11 @@ static const UChar tzTronto[] = /* America/Toronto */ static const UChar sBogus[] = /* Bogus */ {0x42,0x6F,0x67,0x75,0x73,0x00}; +#ifndef U_DEBUG +static const UChar sBogusWithVariantCharacters[] = /* Bogus with Variant characters: Hèℓℓô Wôřℓδ */ + {0x48,0xE8,0x2113,0x2113,0xF4,0x20,0x57,0xF4,0x159,0x2113,0x3B4,0x00}; +#endif + void TestGetWindowsTimeZoneID() { UErrorCode status; UChar winID[64]; @@ -2445,7 +2476,6 @@ void TestGetTimeZoneIDByWindowsID() { log_err("FAIL: TZ ID for Eastern Standard Time - CA\n"); } } - { status = U_ZERO_ERROR; len = ucal_getTimeZoneIDForWindowsID(sBogus, -1, NULL, tzID, UPRV_LENGTHOF(tzID), &status); @@ -2455,6 +2485,15 @@ void TestGetTimeZoneIDByWindowsID() { log_err("FAIL: TZ ID for Bogus\n"); } } +#ifndef U_DEBUG + // This test is only for release mode because it will cause an assertion failure in debug builds. + // We don't check the API result for errors as the only purpose of this test is to ensure that + // input variant characters don't cause abort() to be called and/or that ICU doesn't crash. + { + status = U_ZERO_ERROR; + len = ucal_getTimeZoneIDForWindowsID(sBogusWithVariantCharacters, -1, NULL, tzID, UPRV_LENGTHOF(tzID), &status); + } +#endif } // The following currently assumes that Reiwa is the last known/valid era. diff --git a/source/test/cintltst/ccapitst.c b/source/test/cintltst/ccapitst.c index 22785b3..73663f1 100644 --- a/source/test/cintltst/ccapitst.c +++ b/source/test/cintltst/ccapitst.c @@ -35,6 +35,9 @@ #define MAX_FILE_LEN 1024*20 #define UCS_FILE_NAME_SIZE 512 +/* Similar to C++ alignof(type) */ +#define ALIGNOF(type) offsetof (struct { char c; type member; }, member) + /*returns an action other than the one provided*/ #if !UCONFIG_NO_LEGACY_CONVERSION static UConverterFromUCallback otherUnicodeAction(UConverterFromUCallback MIA); @@ -1367,6 +1370,11 @@ static void TSCC_fromU(const void *context, UConverterCallbackReason reason, UErrorCode * err) { + // suppress compiler warnings about unused variables + (void)codeUnits; + (void)length; + (void)codePoint; + TSCCContext *ctx = (TSCCContext*)context; UConverterFromUCallback junkFrom; @@ -1413,6 +1421,10 @@ static void TSCC_toU(const void *context, UConverterCallbackReason reason, UErrorCode * err) { + // suppress compiler warnings about unused variables + (void)codeUnits; + (void)length; + TSCCContext *ctx = (TSCCContext*)context; UConverterToUCallback junkFrom; @@ -1821,7 +1833,7 @@ static void TestConvertSafeClone() /* close the original immediately to make sure that the clone works by itself */ ucnv_close(cnv); - if( actualSizes[idx] <= (bufferSizes[j] - (int32_t)sizeof(UAlignedMemory)) && + if( actualSizes[idx] <= (bufferSizes[j] - (int32_t)ALIGNOF(UConverter)) && err == U_SAFECLONE_ALLOCATED_WARNING ) { log_err("ucnv_safeClone(%s) did a heap clone although the buffer was large enough\n", names[idx]); @@ -2194,10 +2206,10 @@ convertExStreaming(UConverter *srcCnv, UConverter *targetCnv, if(errorCode==U_BUFFER_OVERFLOW_ERROR) { /* continue converting another chunk */ errorCode=U_ZERO_ERROR; - if(targetLength+chunkSize<=sizeof(targetBuffer)) { + if(targetLength+chunkSize<=(int32_t)sizeof(targetBuffer)) { targetLimit=target+chunkSize; } else { - targetLimit=targetBuffer+sizeof(targetBuffer); + targetLimit=targetBuffer+(int32_t)sizeof(targetBuffer); } } else if(U_FAILURE(errorCode)) { /* failure */ @@ -2519,6 +2531,12 @@ static void testFromTruncatedUTF8(UConverter *utf8Cnv, UConverter *cnv, const ch char charUTF8[4], int32_t charUTF8Length, char char0[8], int32_t char0Length, char char1[8], int32_t char1Length) { + // suppress compiler warnings about unused variables + (void)char0; + (void)char0Length; + (void)char1; + (void)char1Length; + char utf8[16]; int32_t utf8Length; diff --git a/source/test/cintltst/cdtdptst.c b/source/test/cintltst/cdtdptst.c index 447bd89..d7126ec 100644 --- a/source/test/cintltst/cdtdptst.c +++ b/source/test/cintltst/cdtdptst.c @@ -207,6 +207,7 @@ void TestRunTogetherPattern985() format = udat_open(UDAT_PATTERN, UDAT_PATTERN, NULL, NULL, 0,pattern, u_strlen(pattern), &status); if(U_FAILURE(status)){ log_data_err("FAIL: Error in date format construction with pattern: %s - (Are you missing data?)\n", myErrorName(status)); + free(pattern); return; } date1 = ucal_getNow(); @@ -304,10 +305,12 @@ void TestCzechMonths459() */ void TestQuotePattern161() { - UDateFormat *format; - UCalendar *cal; + UDateFormat *format = NULL; + UCalendar *cal = NULL; UDate currentTime_1; - UChar *pattern, *tzID, *exp; + UChar *pattern = NULL; + UChar *tzID = NULL; + UChar *exp = NULL; UChar *dateString; UErrorCode status = U_ZERO_ERROR; const char* expStr = "04/13/1999 at 10:42:28 AM "; @@ -323,27 +326,27 @@ void TestQuotePattern161() format= udat_open(UDAT_PATTERN, UDAT_PATTERN,"en_US", NULL, 0,pattern, u_strlen(pattern), &status); if(U_FAILURE(status)){ log_data_err("error in udat_open: %s - (Are you missing data?)\n", myErrorName(status)); - return; - } - tzID=(UChar*)malloc(sizeof(UChar) * 4); - u_uastrcpy(tzID, "PST"); - /* this is supposed to open default date format, but later on it treats it like it is "en_US" - - very bad if you try to run the tests on machine where default locale is NOT "en_US" */ - /* cal=ucal_open(tzID, u_strlen(tzID), NULL, UCAL_TRADITIONAL, &status); */ - cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_TRADITIONAL, &status); - if(U_FAILURE(status)){ log_err("error in ucal_open cal : %s\n", myErrorName(status)); } - - ucal_setDateTime(cal, 1999, UCAL_APRIL, 13, 10, 42, 28, &status); - currentTime_1 = ucal_getMillis(cal, &status); - - dateString = myDateFormat(format, currentTime_1); - exp=(UChar*)malloc(sizeof(UChar) * (strlen(expStr) + 1) ); - u_uastrcpy(exp, expStr); - - log_verbose("%s\n", austrdup(dateString) ); - if(u_strncmp(dateString, exp, (int32_t)strlen(expStr)) !=0) - log_err("Error in formatting a pattern with single quotes\n"); + } else { + tzID=(UChar*)malloc(sizeof(UChar) * 4); + u_uastrcpy(tzID, "PST"); + /* this is supposed to open default date format, but later on it treats it like it is "en_US" + - very bad if you try to run the tests on machine where default locale is NOT "en_US" */ + /* cal=ucal_open(tzID, u_strlen(tzID), NULL, UCAL_TRADITIONAL, &status); */ + cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_TRADITIONAL, &status); + if(U_FAILURE(status)){ log_err("error in ucal_open cal : %s\n", myErrorName(status)); } + + ucal_setDateTime(cal, 1999, UCAL_APRIL, 13, 10, 42, 28, &status); + currentTime_1 = ucal_getMillis(cal, &status); + dateString = myDateFormat(format, currentTime_1); + exp=(UChar*)malloc(sizeof(UChar) * (strlen(expStr) + 1) ); + u_uastrcpy(exp, expStr); + + log_verbose("%s\n", austrdup(dateString) ); + if(u_strncmp(dateString, exp, (int32_t)strlen(expStr)) !=0) { + log_err("Error in formatting a pattern with single quotes\n"); + } + } udat_close(format); ucal_close(cal); free(exp); diff --git a/source/test/cintltst/cdtrgtst.c b/source/test/cintltst/cdtrgtst.c index 66ca85b..e88327d 100644 --- a/source/test/cintltst/cdtrgtst.c +++ b/source/test/cintltst/cdtrgtst.c @@ -166,6 +166,7 @@ void Test4056591() if(U_FAILURE(status)) { log_data_err("FAIL: error in creating the dateformat using u_openPattern(): %s - (Are you missing data?)\n", myErrorName(status)); + ucal_close(cal); return; } start = 1800; diff --git a/source/test/cintltst/cintltst.c b/source/test/cintltst/cintltst.c index aaa187f..4983613 100644 --- a/source/test/cintltst/cintltst.c +++ b/source/test/cintltst/cintltst.c @@ -743,4 +743,18 @@ U_CFUNC UBool assertIntEquals(const char* message, int64_t expected, int64_t act return TRUE; } +U_CFUNC UBool assertPtrEquals(const char* message, const void* expected, const void* actual) { + if (expected != actual) { + log_err("FAIL: %s; got 0x%llx; expected 0x%llx\n", + message, actual, expected); + return FALSE; + } +#ifdef VERBOSE_ASSERTIONS + else { + log_verbose("Ok: %s; got 0x%llx\n", message, actual); + } +#endif + return TRUE; +} + #endif diff --git a/source/test/cintltst/cintltst.h b/source/test/cintltst/cintltst.h index edb60eb..f66e4c6 100644 --- a/source/test/cintltst/cintltst.h +++ b/source/test/cintltst/cintltst.h @@ -147,6 +147,12 @@ U_CFUNC UBool assertUEquals(const char* msg, const UChar* expectedString, */ U_CFUNC UBool assertIntEquals(const char* msg, int64_t expected, int64_t actual); +/** + * Assert that the addresses of the two pointers are the same, returning + * TRUE if they are equal. + */ +U_CFUNC UBool assertPtrEquals(const char* msg, const void* expected, const void* actual); + /* * note - isICUVersionBefore and isICUVersionAtLeast have been removed. * use log_knownIssue() instead. diff --git a/source/test/cintltst/cintltst.vcxproj b/source/test/cintltst/cintltst.vcxproj index bb5a2a7..9444d3a 100644 --- a/source/test/cintltst/cintltst.vcxproj +++ b/source/test/cintltst/cintltst.vcxproj @@ -33,124 +33,55 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\Debug\ - .\x86\Debug\ - true - .\x86\Release\ - .\x86\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - + - - ..\..\..\include;..\..\tools\ctestfw;..\..\common;..\..\i18n;..\..\tools\toolutil;%(AdditionalIncludeDirectories) - U_ATTRIBUTE_DEPRECATED=;%(PreprocessorDefinitions) - false - Level3 - - - - - .\x86\Debug/cintltst.tlb - - - MultiThreadedDebug - .\x86\Debug/cintltst.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ - true - EditAndContinue - Default - - - .\x86\Debug/cintltst.exe - icuucd.lib;icuind.lib;icutestd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Debug/cintltst.pdb - Console - false - false - - - - - - .\x86\Release/cintltst.tlb + $(OutDir)\cintltst.tlb - MultiThreaded - true - true - .\x86\Release/cintltst.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ + Level3 Default + false + ..\..\..\include;..\..\tools\ctestfw;..\..\common;..\..\i18n;..\..\tools\toolutil;%(AdditionalIncludeDirectories) + U_ATTRIBUTE_DEPRECATED=;%(PreprocessorDefinitions) + $(OutDir)\cintltst.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)\cintltst.pdb - .\x86\Release/cintltst.exe - icuuc.lib;icuin.lib;icutest.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\x86\Release/cintltst.pdb Console - false - - + $(OutDir)\cintltst.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - .\x64\Debug/cintltst.tlb - + + - MultiThreadedDebug - .\x64\Debug/cintltst.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ true - ProgramDatabase - Default + MultiThreadedDebugDLL - .\x64\Debug/cintltst.exe icuucd.lib;icuind.lib;icutestd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Debug/cintltst.pdb - Console - false - - - .\x64\Release/cintltst.tlb - + + - MultiThreaded - true + MultiThreadedDLL true - .\x64\Release/cintltst.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Default - .\x64\Release/cintltst.exe icuuc.lib;icuin.lib;icutest.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Release/cintltst.pdb - Console diff --git a/source/test/cintltst/citertst.c b/source/test/cintltst/citertst.c index c93c19c..5ffc714 100644 --- a/source/test/cintltst/citertst.c +++ b/source/test/cintltst/citertst.c @@ -1076,7 +1076,7 @@ static void TestDiscontiguos() { log_verbose("count %d\n", count); for (;;) { - uint32_t ce; + int32_t ce; UChar *e = u_strchr(s, 0x20); if (e == 0) { e = u_strchr(s, 0); @@ -1088,7 +1088,7 @@ static void TestDiscontiguos() { return; } while (ce != UCOL_NULLORDER) { - if (ce != (uint32_t)ucol_next(iter, &status) || + if (ce != ucol_next(iter, &status) || U_FAILURE(status)) { log_err("Discontiguos contraction test mismatch\n"); return; diff --git a/source/test/cintltst/cldrtest.c b/source/test/cintltst/cldrtest.c index 1c0f8e2..87ae093 100644 --- a/source/test/cintltst/cldrtest.c +++ b/source/test/cintltst/cldrtest.c @@ -454,6 +454,7 @@ static void testLCID(UResourceBundle *currentBundle, const char *localeName) { + (void)currentBundle; // suppress compiler warnings about unused variables UErrorCode status = U_ZERO_ERROR; uint32_t expectedLCID; char lcidStringC[64] = {0}; diff --git a/source/test/cintltst/cloctst.c b/source/test/cintltst/cloctst.c index 4809f5c..0a1a0ae 100644 --- a/source/test/cintltst/cloctst.c +++ b/source/test/cintltst/cloctst.c @@ -218,6 +218,7 @@ void addLocaleTest(TestNode** root) TESTCASE(TestSimpleResourceInfo); TESTCASE(TestDisplayNames); TESTCASE(TestGetAvailableLocales); + TESTCASE(TestGetAvailableLocalesByType); TESTCASE(TestDataDirectory); #if !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION TESTCASE(TestISOFunctions); @@ -255,8 +256,8 @@ void addLocaleTest(TestNode** root) TESTCASE(TestLikelySubtags); TESTCASE(TestToLanguageTag); TESTCASE(TestBug20132); + TESTCASE(TestBug20149); TESTCASE(TestForLanguageTag); - TESTCASE(TestInvalidLanguageTag); TESTCASE(TestLangAndRegionCanonicalize); TESTCASE(TestTrailingNull); TESTCASE(TestUnicodeDefines); @@ -834,6 +835,77 @@ static void TestGetAvailableLocales() } } +static void TestGetAvailableLocalesByType() { + UErrorCode status = U_ZERO_ERROR; + + UEnumeration* uenum = uloc_openAvailableByType(ULOC_AVAILABLE_DEFAULT, &status); + assertSuccess("Constructing the UEnumeration", &status); + + assertIntEquals("countAvailable() should be same in old and new methods", + uloc_countAvailable(), + uenum_count(uenum, &status)); + + for (int32_t i = 0; i < uloc_countAvailable(); i++) { + const char* old = uloc_getAvailable(i); + int32_t len = 0; + const char* new = uenum_next(uenum, &len, &status); + assertEquals("Old and new strings should equal", old, new); + assertIntEquals("String length should be correct", uprv_strlen(old), len); + } + assertPtrEquals("Should get nullptr on the last string", + NULL, uenum_next(uenum, NULL, &status)); + + uenum_close(uenum); + + uenum = uloc_openAvailableByType(ULOC_AVAILABLE_ONLY_LEGACY_ALIASES, &status); + UBool found_he = FALSE; + UBool found_iw = FALSE; + const char* loc; + while ((loc = uenum_next(uenum, NULL, &status))) { + if (uprv_strcmp("he", loc) == 0) { + found_he = TRUE; + } + if (uprv_strcmp("iw", loc) == 0) { + found_iw = TRUE; + } + } + assertTrue("Should NOT have found he amongst the legacy/alias locales", !found_he); + assertTrue("Should have found iw amongst the legacy/alias locales", found_iw); + uenum_close(uenum); + + uenum = uloc_openAvailableByType(ULOC_AVAILABLE_WITH_LEGACY_ALIASES, &status); + found_he = FALSE; + found_iw = FALSE; + const UChar* uloc; // test the UChar conversion + int32_t count = 0; + while ((uloc = uenum_unext(uenum, NULL, &status))) { + if (u_strcmp(u"iw", uloc) == 0) { + found_iw = TRUE; + } + if (u_strcmp(u"he", uloc) == 0) { + found_he = TRUE; + } + count++; + } + assertTrue("Should have found he amongst all locales", found_he); + assertTrue("Should have found iw amongst all locales", found_iw); + assertIntEquals("Should return as many strings as claimed", + count, uenum_count(uenum, &status)); + + // Reset the enumeration and it should still work + uenum_reset(uenum, &status); + count = 0; + while ((loc = uenum_next(uenum, NULL, &status))) { + count++; + } + assertIntEquals("After reset, should return as many strings as claimed", + count, uenum_count(uenum, &status)); + + uenum_close(uenum); + + assertSuccess("No errors should have occurred", &status); +} + /* test for u_getDataDirectory, u_setDataDirectory, uloc_getISO3Language */ static void TestDataDirectory() { @@ -1783,6 +1855,7 @@ static void TestKeywordVariants(void) status = U_ZERO_ERROR; resultLen = uloc_getName(testCases[i].localeID, buffer, 256, &status); + (void)resultLen; U_ASSERT(resultLen < 256); if (U_SUCCESS(status)) { if (testCases[i].expectedLocaleID == 0) { @@ -2003,7 +2076,7 @@ static void TestKeywordSet(void) resultLen = uloc_getKeywordValue(kwSetTestCases[i].x, kwSetTestCases[i].k, buffer, 1023, &status); if(U_FAILURE(status)) { log_err("Err on test case %d for getKeywordValue: got error %s\n", i, u_errorName(status)); - } else if (resultLen != uprv_strlen(kwSetTestCases[i].v) || uprv_strcmp(buffer, kwSetTestCases[i].v) != 0) { + } else if (resultLen != (int32_t)uprv_strlen(kwSetTestCases[i].v) || uprv_strcmp(buffer, kwSetTestCases[i].v) != 0) { log_err("FAIL: #%d getKeywordValue: got %s (%d) expected %s (%d)\n", i, buffer, resultLen, kwSetTestCases[i].v, uprv_strlen(kwSetTestCases[i].v)); } @@ -2347,6 +2420,7 @@ static void TestDisplayKeywords(void) displayKeywordLen = uloc_getDisplayKeyword(keyword, testCases[i].displayLocale, displayKeyword, displayKeywordLen, &status); if(U_FAILURE(status)){ log_err("uloc_getDisplayKeyword filed for keyword : %s in locale id: %s for display locale: %s \n", testCases[i].localeID, keyword, testCases[i].displayLocale, u_errorName(status)); + free(displayKeyword); break; } if(u_strncmp(displayKeyword, testCases[i].displayKeyword, displayKeywordLen)!=0){ @@ -2355,6 +2429,7 @@ static void TestDisplayKeywords(void) } else { log_err("uloc_getDisplayKeyword did not get the expected value for keyword : %s in locale id: %s for display locale: %s \n", testCases[i].localeID, keyword, testCases[i].displayLocale); } + free(displayKeyword); break; } }else{ @@ -2430,6 +2505,7 @@ static void TestDisplayKeywordValues(void){ displayKeywordValueLen = uloc_getDisplayKeywordValue(testCases[i].localeID, keyword, testCases[i].displayLocale, displayKeywordValue, displayKeywordValueLen, &status); if(U_FAILURE(status)){ log_err("uloc_getDisplayKeywordValue failed for keyword : %s in locale id: %s for display locale: %s with error : %s \n", testCases[i].localeID, keyword, testCases[i].displayLocale, u_errorName(status)); + free(displayKeywordValue); break; } if(u_strncmp(displayKeywordValue, testCases[i].displayKeywordValue, displayKeywordValueLen)!=0){ @@ -2438,6 +2514,7 @@ static void TestDisplayKeywordValues(void){ } else { log_err("uloc_getDisplayKeywordValue did not return the expected value keyword : %s in locale id: %s for display locale: %s with error : %s \n", testCases[i].localeID, keyword, testCases[i].displayLocale, u_errorName(status)); } + free(displayKeywordValue); break; } }else{ @@ -2483,6 +2560,7 @@ static void TestDisplayKeywordValues(void){ displayKeywordValueLen = uloc_getDisplayKeywordValue(localeID, keyword, displayLocale, displayKeywordValue, displayKeywordValueLen, &status); if(U_FAILURE(status)){ log_err("uloc_getDisplayKeywordValue failed for keyword : %s in locale id: %s for display locale: %s with error : %s \n", localeID, keyword, displayLocale, u_errorName(status)); + free(displayKeywordValue); break; } if(u_strncmp(displayKeywordValue, expected[keywordCount], displayKeywordValueLen)!=0){ @@ -2491,6 +2569,7 @@ static void TestDisplayKeywordValues(void){ } else { log_err("uloc_getDisplayKeywordValue did not return the expected value keyword : %s in locale id: %s for display locale: %s \n", localeID, keyword, displayLocale); } + free(displayKeywordValue); break; } }else{ @@ -3396,7 +3475,7 @@ static void TestGetLocaleForLCID() { continue; } - if (length != uprv_strlen(temp2)) { + if (length != (int32_t)uprv_strlen(temp2)) { log_err(" returned length %d not correct for uloc_getLocaleForLCID(%#04x), expected %d\n", length, lcid, uprv_strlen(temp2)); } @@ -6200,35 +6279,6 @@ static void TestForLanguageTag(void) { } } -/* See https://unicode-org.atlassian.net/browse/ICU-20149 . - * Depending on the resolution of that bug, this test may have - * to be revised. - */ -static void TestInvalidLanguageTag(void) { - static const char* invalid_lang_tags[] = { - "zh-u-foo-foo-co-pinyin", /* duplicate attribute in U extension */ - "zh-cmn-hans-u-foo-foo-co-pinyin", /* duplicate attribute in U extension */ -#if 0 - /* - * These do not lead to an error. Instead, parsing stops at the 1st - * invalid subtag. - */ - "de-DE-1901-1901", /* duplicate variant */ - "en-a-bbb-a-ccc", /* duplicate extension */ -#endif - NULL - }; - char locale[256]; - for (const char** tag = invalid_lang_tags; *tag != NULL; tag++) { - UErrorCode status = U_ZERO_ERROR; - uloc_forLanguageTag(*tag, locale, sizeof(locale), NULL, &status); - if (status != U_ILLEGAL_ARGUMENT_ERROR) { - log_err("Error returned by uloc_forLanguageTag for input language tag [%s] : %s - expected error: %s\n", - *tag, u_errorName(status), u_errorName(U_ILLEGAL_ARGUMENT_ERROR)); - } - } -} - static const struct { const char *input; const char *canonical; @@ -6558,3 +6608,18 @@ static void TestBug20370() { log_err("FAIL: Expected LCID value of 0 for invalid localeID input."); } } + +// Test case for ICU-20149 +// Handle the duplicate U extension attribute +static void TestBug20149() { + const char *localeID = "zh-u-foo-foo-co-pinyin"; + char locale[256]; + UErrorCode status = U_ZERO_ERROR; + int32_t parsedLen; + locale[0] = '\0'; + uloc_forLanguageTag(localeID, locale, sizeof(locale), &parsedLen, &status); + if (U_FAILURE(status) || + 0 !=strcmp("zh@attribute=foo;collation=pinyin", locale)) { + log_err("ERROR: in uloc_forLanguageTag %s return %s\n", myErrorName(status), locale); + } +} diff --git a/source/test/cintltst/cloctst.h b/source/test/cintltst/cloctst.h index f415dbb..be61de1 100644 --- a/source/test/cintltst/cloctst.h +++ b/source/test/cintltst/cloctst.h @@ -36,7 +36,8 @@ static void TestDisplayNames(void); /** * Test getAvailableLocales **/ - static void TestGetAvailableLocales(void); +static void TestGetAvailableLocales(void); +static void TestGetAvailableLocalesByType(void); /** * Test functions to set and access a custom data directory **/ @@ -124,7 +125,6 @@ static void TestLikelySubtags(void); * language tag */ static void TestForLanguageTag(void); -static void TestInvalidLanguageTag(void); static void TestToLanguageTag(void); static void TestBug20132(void); static void TestLangAndRegionCanonicalize(void); @@ -133,6 +133,7 @@ static void TestToUnicodeLocaleKey(void); static void TestToLegacyKey(void); static void TestToUnicodeLocaleType(void); static void TestToLegacyType(void); +static void TestBug20149(void); /** * locale data diff --git a/source/test/cintltst/cmsccoll.c b/source/test/cintltst/cmsccoll.c index 8d7f6cb..bc7a766 100644 --- a/source/test/cintltst/cmsccoll.c +++ b/source/test/cintltst/cmsccoll.c @@ -588,11 +588,13 @@ static void TestComposeDecompose(void) { coll = ucol_open("", &status); if (U_FAILURE(status)) { log_data_err("Error opening collator -> %s (Are you missing data?)\n", u_errorName(status)); + uset_close(charsToTest); return; } charsToTestSize = uset_size(charsToTest); if (charsToTestSize <= 0) { log_err("Set was zero. Missing data?\n"); + uset_close(charsToTest); return; } t = (tester **)malloc(charsToTestSize * sizeof(tester *)); @@ -1454,14 +1456,14 @@ static void TestContraction(void) { UCollationElements *iter2 = ucol_openElements(coll, &(testdata[i][j]), 1, &status); - uint32_t ce; + int32_t ce; if (U_FAILURE(status)) { log_err("Collation iterator creation failed\n"); return; } ce = ucol_next(iter2, &status); while (ce != UCOL_NULLORDER) { - if ((uint32_t)ucol_next(iter1, &status) != ce) { + if (ucol_next(iter1, &status) != ce) { log_err("Collation elements in contraction split does not match\n"); return; } diff --git a/source/test/cintltst/cmsgtst.c b/source/test/cintltst/cmsgtst.c index 1673009..06952d8 100644 --- a/source/test/cintltst/cmsgtst.c +++ b/source/test/cintltst/cmsgtst.c @@ -189,6 +189,7 @@ static void MessageFormatTest( void ) if(U_FAILURE(ec)){ log_data_err("umsg_open() failed for testCasePattens[0]. -> %s (Are you missing data?)\n", u_errorName(ec)); + umsg_close(formatter); return; } for(i = 0;i %s\n", pat[p], u_errorName(status)); + free(upat); + upat = NULL; continue; } lneed= u_strlen(upat) + 1; diff --git a/source/test/cintltst/cnormtst.c b/source/test/cintltst/cnormtst.c index fe7237a..a71a3f3 100644 --- a/source/test/cintltst/cnormtst.c +++ b/source/test/cintltst/cnormtst.c @@ -484,6 +484,7 @@ static void TestQuickCheckStringResult() UNORM_YES) { log_data_err("ERROR in NFD quick check for string at count %d - (Are you missing data?)\n", count); + free(d); free(c); return; } @@ -491,6 +492,7 @@ static void TestQuickCheckStringResult() UNORM_NO) { log_err("ERROR in NFC quick check for string at count %d\n", count); + free(d); free(c); return; } @@ -506,6 +508,7 @@ static void TestQuickCheckStringResult() UNORM_YES) { log_data_err("ERROR in NFKD quick check for string at count %d\n", count); + free(d); free(c); return; } @@ -513,6 +516,7 @@ static void TestQuickCheckStringResult() UNORM_YES) { log_err("ERROR in NFKC quick check for string at count %d\n", count); + free(d); free(c); return; } @@ -661,7 +665,7 @@ void TestCheckFCD() for (count = 0; count < 50; count ++) { int size = 0; - UBool testresult = UNORM_YES; + UNormalizationCheckResult testresult = UNORM_YES; UChar data[20]; UChar norm[100]; UChar nfd[100]; @@ -1413,6 +1417,7 @@ TestQuickCheckPerCP() { log_data_err("%s:%d errorCode=%s\n", __FILE__, __LINE__, u_errorName(errorCode)); break; } + /* length-length == 0 is used to get around a compiler warning. */ U16_GET(nfd, 0, length-length, length, lead); U16_GET(nfd, 0, length-1, length, trail); diff --git a/source/test/cintltst/cnumtst.c b/source/test/cintltst/cnumtst.c index 214362c..dbbac08 100644 --- a/source/test/cintltst/cnumtst.c +++ b/source/test/cintltst/cnumtst.c @@ -73,6 +73,7 @@ static void Test12052_NullPointer(void); static void TestParseCases(void); static void TestSetMaxFracAndRoundIncr(void); static void TestIgnorePadding(void); +static void TestSciNotationMaxFracCap(void); #define TESTCASE(x) addTest(root, &x, "tsformat/cnumtst/" #x) @@ -112,6 +113,7 @@ void addNumForTest(TestNode** root) TESTCASE(TestParseCases); TESTCASE(TestSetMaxFracAndRoundIncr); TESTCASE(TestIgnorePadding); + TESTCASE(TestSciNotationMaxFracCap); } /* test Parse int 64 */ @@ -498,7 +500,7 @@ free(result); pattern=unum_open(UNUM_IGNORE,temp1, u_strlen(temp1), NULL, NULL,&status); if(U_FAILURE(status)) { - log_err("error in unum_openPattern(): %s\n", myErrorName(status) );; + log_err("error in unum_openPattern(): %s\n", myErrorName(status) ); } else log_verbose("Pass: unum_openPattern() works fine\n"); @@ -881,9 +883,9 @@ free(result); log_err("File %s, Line %d, (expected, acutal) = (\"%s\", \"%s\")\n", __FILE__, __LINE__, numFormatted, desta); } - if (strlen(numFormatted) != resultSize) { + if ((int32_t)strlen(numFormatted) != resultSize) { log_err("File %s, Line %d, (expected, actual) = (%d, %d)\n", - __FILE__, __LINE__, strlen(numFormatted), resultSize); + __FILE__, __LINE__, (int32_t)strlen(numFormatted), resultSize); } /* Format with a FieldPosition parameter */ @@ -922,9 +924,9 @@ free(result); log_verbose("File %s, Line %d, got expected = \"%s\"\n", __FILE__, __LINE__, desta); } - if (strlen(parseExpected) != resultSize) { + if ((int32_t)strlen(parseExpected) != resultSize) { log_err("File %s, Line %d, (expected, actual) = (%d, %d)\n", - __FILE__, __LINE__, strlen(parseExpected), resultSize); + __FILE__, __LINE__, (int32_t)strlen(parseExpected), resultSize); } /* Parse with a parsePos parameter */ @@ -944,9 +946,9 @@ free(result); log_verbose("File %s, Line %d, got expected = \"%s\"\n", __FILE__, __LINE__, desta); } - if (strlen(numFormatted) != parsePos) { + if ((int32_t)strlen(numFormatted) != parsePos) { log_err("File %s, Line %d, parsePos (expected, actual) = (\"%d\", \"%d\")\n", - __FILE__, __LINE__, strlen(parseExpected), parsePos); + __FILE__, __LINE__, (int32_t)strlen(parseExpected), parsePos); } unum_close(fmt); @@ -1323,7 +1325,7 @@ static void TestNumberFormatPadding() pattern=unum_open(UNUM_IGNORE,temp1, u_strlen(temp1), "en_US",NULL, &status); if(U_FAILURE(status)) { - log_err_status(status, "error in padding unum_openPattern(%s): %s\n", temp1, myErrorName(status) );; + log_err_status(status, "error in padding unum_openPattern(%s): %s\n", temp1, myErrorName(status) ); } else { log_verbose("Pass: padding unum_openPattern() works fine\n"); @@ -1625,7 +1627,7 @@ static void test_fmt(UNumberFormat* fmt, UBool isDecimal) { /* set the default ruleset to the first one found, and retry */ if (len > 0) { - for (i = 0; i < len && temp[i] != ';'; ++i){}; + for (i = 0; i < len && temp[i] != ';'; ++i){} if (i < len) { buffer[i] = 0; unum_setTextAttribute(fmt, UNUM_DEFAULT_RULESET, buffer, -1, &status); @@ -1836,6 +1838,7 @@ static void TestRBNFRounding() { } len = unum_formatDouble(fmt, 10.123456789, fmtbuf, FORMAT_BUF_CAPACITY, NULL, &status); U_ASSERT(len < FORMAT_BUF_CAPACITY); + (void)len; if (U_FAILURE(status)) { log_err_status(status, "unum_formatDouble 10.123456789 failed with %s\n", u_errorName(status)); } @@ -2564,8 +2567,8 @@ static void TestCurrencyIsoPluralFormat(void) { {"zh_CN", "1234.56", "USD", "US$1,234.56", "US$1,234.56", "US$1,234.56", "USD\\u00A01,234.56", "1,234.56\\u00A0\\u7F8E\\u5143"}, // {"zh_CN", "1", "CHY", "CHY1.00", "CHY1.00", "CHY1.00", "CHY1.00", "1.00 CHY"}, // wrong ISO code // {"zh_CN", "1234.56", "CHY", "CHY1,234.56", "CHY1,234.56", "CHY1,234.56", "CHY1,234.56", "1,234.56 CHY"}, // wrong ISO code - {"zh_CN", "1", "CNY", "\\uFFE51.00", "\\uFFE51.00", "\\uFFE51.00", "CNY\\u00A01.00", "1.00\\u00A0\\u4EBA\\u6C11\\u5E01"}, - {"zh_CN", "1234.56", "CNY", "\\uFFE51,234.56", "\\uFFE51,234.56", "\\uFFE51,234.56", "CNY\\u00A01,234.56", "1,234.56\\u00A0\\u4EBA\\u6C11\\u5E01"}, + {"zh_CN", "1", "CNY", "\\u00A51.00", "\\u00A51.00", "\\u00A51.00", "CNY\\u00A01.00", "1.00\\u00A0\\u4EBA\\u6C11\\u5E01"}, + {"zh_CN", "1234.56", "CNY", "\\u00A51,234.56", "\\u00A51,234.56", "\\u00A51,234.56", "CNY\\u00A01,234.56", "1,234.56\\u00A0\\u4EBA\\u6C11\\u5E01"}, {"ru_RU", "1", "RUB", "1,00\\u00A0\\u20BD", "1,00\\u00A0\\u20BD", "1,00\\u00A0\\u20BD", "1,00\\u00A0RUB", "1,00 \\u0440\\u043E\\u0441\\u0441\\u0438\\u0439\\u0441\\u043A\\u043E\\u0433\\u043E " "\\u0440\\u0443\\u0431\\u043B\\u044F"}, {"ru_RU", "2", "RUB", "2,00\\u00A0\\u20BD", "2,00\\u00A0\\u20BD", "2,00\\u00A0\\u20BD", "2,00\\u00A0RUB", "2,00 \\u0440\\u043E\\u0441\\u0441\\u0438\\u0439\\u0441\\u043A\\u043E\\u0433\\u043E " @@ -3235,6 +3238,7 @@ static void TestParseCases(void) { status = U_ZERO_ERROR; decstr[0] = 0; dclen = unum_parseDecimal(unumDec, itemPtr->text, -1, &parsePos, decstr, 32, &status); + (void)dclen; if (status != itemPtr->decStatus || parsePos != itemPtr->decPos || uprv_strcmp(decstr,itemPtr->decString) != 0) { char btext[32]; u_austrcpy(btext, itemPtr->text); @@ -3366,6 +3370,7 @@ static void TestSetMaxFracAndRoundIncr(void) { status = U_ZERO_ERROR; ulen = unum_toPattern(unf, FALSE, ubuf, kUBufMax, &status); + (void)ulen; if ( U_FAILURE(status) ) { log_err("test %s: unum_toPattern fails with %s\n", itemPtr->descrip, u_errorName(status)); } else if (u_strcmp(ubuf,itemPtr->expPattern)!=0) { @@ -3436,4 +3441,38 @@ static void TestIgnorePadding(void) { } } +static void TestSciNotationMaxFracCap(void) { + static const UChar* pat1 = u"#.##E+00;-#.##E+00"; + UErrorCode status = U_ZERO_ERROR; + UNumberFormat* unum = unum_open(UNUM_PATTERN_DECIMAL, pat1, -1, "en_US", NULL, &status); + if ( U_FAILURE(status) ) { + log_data_err("unum_open UNUM_PATTERN_DECIMAL with scientific pattern for \"en_US\" fails with %s\n", u_errorName(status)); + } else { + double value; + UChar ubuf[kUBufMax]; + char bbuf[kBBufMax]; + int32_t ulen; + + unum_setAttribute(unum, UNUM_MIN_FRACTION_DIGITS, 0); + unum_setAttribute(unum, UNUM_MAX_FRACTION_DIGITS, 2147483647); + ulen = unum_toPattern(unum, FALSE, ubuf, kUBufMax, &status); + if ( U_SUCCESS(status) ) { + u_austrncpy(bbuf, ubuf, kUBufMax); + log_info("unum_toPattern (%d): %s\n", ulen, bbuf); + } + + for (value = 10.0; value < 1000000000.0; value *= 10.0) { + status = U_ZERO_ERROR; + ulen = unum_formatDouble(unum, value, ubuf, kUBufMax, NULL, &status); + if ( U_FAILURE(status) ) { + log_err("unum_formatDouble value %.1f status %s\n", value, u_errorName(status)); + } else if (u_strncmp(ubuf,u"1E+0",4) != 0) { + u_austrncpy(bbuf, ubuf, kUBufMax); + log_err("unum_formatDouble value %.1f expected result to begin with 1E+0, got %s\n", value, bbuf); + } + } + unum_close(unum); + } +} + #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/cintltst/crelativedateformattest.c b/source/test/cintltst/crelativedateformattest.c index 46c98a7..8b5c90f 100644 --- a/source/test/cintltst/crelativedateformattest.c +++ b/source/test/cintltst/crelativedateformattest.c @@ -171,8 +171,8 @@ static const char* en_decDef_long_midSent_min[kNumOffsets*2] = { "2 minutes ago", "2 minutes ago", /* -2 */ "1 minute ago", "1 minute ago", /* -1 */ "0.7 minutes ago", "0.7 minutes ago", /* -0.7 */ - "0 minutes ago", "0 minutes ago", /* -0 */ - "in 0 minutes", "in 0 minutes", /* 0 */ + "this minute", "0 minutes ago", /* -0 */ + "this minute", "in 0 minutes", /* 0 */ "in 0.7 minutes", "in 0.7 minutes", /* 0.7 */ "in 1 minute", "in 1 minute", /* 1 */ "in 2 minutes", "in 2 minutes", /* 2 */ @@ -186,8 +186,8 @@ static const FieldsDat en_attrDef_long_midSent_min[kNumOffsets*2] = { {UDAT_REL_NUMERIC_FIELD, 0, 1}, {UDAT_REL_NUMERIC_FIELD, 0, 1}, /* "2 minutes ago", "2 minutes ago", -2 */ {UDAT_REL_NUMERIC_FIELD, 0, 1}, {UDAT_REL_NUMERIC_FIELD, 0, 1}, /* "1 minute ago", "1 minute ago", -1 */ {UDAT_REL_NUMERIC_FIELD, 0, 3}, {UDAT_REL_NUMERIC_FIELD, 0, 3}, /* "0.7 minutes ago", "0.7 minutes ago", -0.7 */ - {UDAT_REL_NUMERIC_FIELD, 0, 1}, {UDAT_REL_NUMERIC_FIELD, 0, 1}, /* "0 minutes ago", "0 minutes ago", -0 */ - {UDAT_REL_NUMERIC_FIELD, 3, 4}, {UDAT_REL_NUMERIC_FIELD, 3, 4}, /* "in 0 minutes", "in 0 minutes", 0 */ + {-1, -1, -1}, {UDAT_REL_NUMERIC_FIELD, 0, 1}, /* "this minute", "0 minutes ago", -0 */ + {-1, -1, -1}, {UDAT_REL_NUMERIC_FIELD, 3, 4}, /* "this minute", "in 0 minutes", 0 */ {UDAT_REL_NUMERIC_FIELD, 3, 6}, {UDAT_REL_NUMERIC_FIELD, 3, 6}, /* "in 0.7 minutes", "in 0.7 minutes", 0.7 */ {UDAT_REL_NUMERIC_FIELD, 3, 4}, {UDAT_REL_NUMERIC_FIELD, 3, 4}, /* "in 1 minute", "in 1 minute", 1 */ {UDAT_REL_NUMERIC_FIELD, 3, 4}, {UDAT_REL_NUMERIC_FIELD, 3, 4}, /* "in 2 minutes", "in 2 minutes", 2 */ diff --git a/source/test/cintltst/crestst.c b/source/test/cintltst/crestst.c index 3409f6c..b7af6ea 100644 --- a/source/test/cintltst/crestst.c +++ b/source/test/cintltst/crestst.c @@ -55,9 +55,23 @@ enum E_Where typedef enum E_Where E_Where; /*****************************************************************************/ -#define CONFIRM_EQ(actual,expected) if (u_strcmp(expected,actual)==0){ record_pass(); } else { record_fail(); log_err("%s returned %s instead of %s\n", action, austrdup(actual), austrdup(expected)); } - -#define CONFIRM_ErrorCode(actual,expected) if ((expected)==(actual)) { record_pass(); } else { record_fail(); log_err("%s returned %s instead of %s\n", action, myErrorName(actual), myErrorName(expected)); } +#define CONFIRM_EQ(actual,expected) UPRV_BLOCK_MACRO_BEGIN { \ + if (u_strcmp(expected,actual)==0) { \ + record_pass(); \ + } else { \ + record_fail(); \ + log_err("%s returned %s instead of %s\n", action, austrdup(actual), austrdup(expected)); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define CONFIRM_ErrorCode(actual,expected) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expected)==(actual)) { \ + record_pass(); \ + } else { \ + record_fail(); \ + log_err("%s returned %s instead of %s\n", action, myErrorName(actual), myErrorName(expected)); \ + } \ +} UPRV_BLOCK_MACRO_END /* Array of our test objects */ @@ -534,7 +548,7 @@ TestOpenDirect(void) { } ures_close(idna_rules); - errorCode = U_USING_FALLBACK_WARNING;; + errorCode = U_USING_FALLBACK_WARNING; idna_rules=ures_openDirect("testdata", "idna_rules", &errorCode); if(U_FAILURE(errorCode)) { log_data_err("ures_openDirect(\"idna_rules\") failed when U_USING_FALLBACK_WARNING was set prior to call: %s\n", u_errorName(errorCode)); diff --git a/source/test/cintltst/creststn.c b/source/test/cintltst/creststn.c index a19723b..4f25a69 100644 --- a/source/test/cintltst/creststn.c +++ b/source/test/cintltst/creststn.c @@ -62,7 +62,7 @@ randul() } /* Assume rand has at least 12 bits of precision */ - for (i=0; i> 4); return l; } @@ -132,10 +132,38 @@ enum E_Where typedef enum E_Where E_Where; /*****************************************************************************/ -#define CONFIRM_EQ(actual,expected) if (u_strcmp(expected,actual)==0){ record_pass(); } else { record_fail(); log_err("%s returned %s instead of %s\n", action, austrdup(actual), austrdup(expected)); } -#define CONFIRM_INT_EQ(actual,expected) if ((expected)==(actual)) { record_pass(); } else { record_fail(); log_err("%s returned %d instead of %d\n", action, actual, expected); } -#define CONFIRM_INT_GE(actual,expected) if ((actual)>=(expected)) { record_pass(); } else { record_fail(); log_err("%s returned %d instead of x >= %d\n", action, actual, expected); } -#define CONFIRM_INT_NE(actual,expected) if ((expected)!=(actual)) { record_pass(); } else { record_fail(); log_err("%s returned %d instead of x != %d\n", action, actual, expected); } +#define CONFIRM_EQ(actual,expected) UPRV_BLOCK_MACRO_BEGIN { \ + if (u_strcmp(expected,actual)==0) { \ + record_pass(); \ + } else { \ + record_fail(); \ + log_err("%s returned %s instead of %s\n", action, austrdup(actual), austrdup(expected)); \ + } \ +} UPRV_BLOCK_MACRO_END +#define CONFIRM_INT_EQ(actual,expected) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expected)==(actual)) { \ + record_pass(); \ + } else { \ + record_fail(); \ + log_err("%s returned %d instead of %d\n", action, actual, expected); \ + } \ +} UPRV_BLOCK_MACRO_END +#define CONFIRM_INT_GE(actual,expected) UPRV_BLOCK_MACRO_BEGIN { \ + if ((actual)>=(expected)) { \ + record_pass(); \ + } else { \ + record_fail(); \ + log_err("%s returned %d instead of x >= %d\n", action, actual, expected); \ + } \ +} UPRV_BLOCK_MACRO_END +#define CONFIRM_INT_NE(actual,expected) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expected)!=(actual)) { \ + record_pass(); \ + } else { \ + record_fail(); \ + log_err("%s returned %d instead of x != %d\n", action, actual, expected); \ + } \ +} UPRV_BLOCK_MACRO_END /*#define CONFIRM_ErrorCode(actual,expected) if ((expected)==(actual)) { record_pass(); } else { record_fail(); log_err("%s returned %s instead of %s\n", action, myErrorName(actual), myErrorName(expected)); } */ static void CONFIRM_ErrorCode(UErrorCode actual,UErrorCode expected) @@ -2137,7 +2165,7 @@ static void TestFallback() UResourceBundle* tResB; UResourceBundle* zoneResource; const UChar* version = NULL; - static const UChar versionStr[] = { 0x0032, 0x002E, 0x0031, 0x002E, 0x0034, 0x0037, 0x002E, 0x0038, 0x0032, 0x0000}; // 2.1.47.82 in nn_NO + static const UChar versionStr[] = u"36"; // 36 in nn_NO if(err != U_ZERO_ERROR){ log_data_err("Expected U_ZERO_ERROR when trying to test no_NO_NY aliased to nn_NO for Version err=%s\n",u_errorName(err)); @@ -2946,7 +2974,7 @@ tres_getString(const UResourceBundle *resB, } /* verify NUL-termination */ - if((p8 != buffer8 || length8 < sizeof(buffer8)) && s8[length8] != 0) { + if((p8 != buffer8 || length8 < (int32_t)sizeof(buffer8)) && s8[length8] != 0) { log_err("ures_getUTF8String(%p, %ld, '%s') did not NUL-terminate\n", resB, (long)idx, key); } diff --git a/source/test/cintltst/cstrcase.c b/source/test/cintltst/cstrcase.c index e526b54..0a9ec2c 100644 --- a/source/test/cintltst/cstrcase.c +++ b/source/test/cintltst/cstrcase.c @@ -442,7 +442,7 @@ TestCaseFolding(void) { /* test simple case folding */ p=simple; - for(i=0; i?_"; +static const UChar *asciiInvChars = + u"ABCDEFGHIJKLMNOPQRSTUVWXYZ" + u"abcdefghijklmnopqrstuvwxyz" + u"0123456789 \"%&'()*+,-./:;<=>?_"; + +static void +TestLocaleAtSign() { + static const char *invLocale = "de-Latn_DE@PHONEBOOK"; + for (int32_t i = 0;; ++i) { + char ic = invLocale[i]; + if (ic == 0) { break; } + UBool expected = i == 10; + UBool actual = uprv_isAtSign(ic); + if (actual != expected) { + log_err("uprv_isAtSign('%c')=%d is wrong\n", ic, (int)actual); + } + } +} + +// The at sign is not an invariant character. +static void +TestNoInvariantAtSign() { + for (int32_t i = 0;; ++i) { + char ic = nativeInvChars[i]; + UBool actual = uprv_isAtSign(ic); + if (actual) { + log_err("uprv_isAtSign(invariant '%c')=TRUE is wrong\n", ic); + } + if (ic == 0) { break; } + } +} + +static void +TestInvCharToAscii() { + for (int32_t i = 0;; ++i) { + char ic = nativeInvChars[i]; + uint8_t ac = asciiInvChars[i]; + uint8_t actual = uprv_invCharToAscii(ic); + if (actual != ac) { + log_err("uprv_invCharToAscii('%c') did not convert to ASCII 0x%02x\n", ic, (int)ac); + } + if (ic == 0) { break; } + } +} diff --git a/source/test/cintltst/cucdtst.c b/source/test/cintltst/cucdtst.c index 7a77863..cd09732 100644 --- a/source/test/cintltst/cucdtst.c +++ b/source/test/cintltst/cucdtst.c @@ -963,6 +963,7 @@ unicodeDataLineFn(void *context, char *fields[][2], int32_t fieldCount, UErrorCode *pErrorCode) { + (void)fieldCount; // suppress compiler warnings about unused variable char buffer[100]; const char *d; char *end; @@ -1022,7 +1023,7 @@ unicodeDataLineFn(void *context, /* get BiDi category, field 4 */ *fields[4][1]=0; i=MakeDir(fields[4][0]); - if(i!=u_charDirection(c) || i!=u_getIntPropertyValue(c, UCHAR_BIDI_CLASS)) { + if(i!=(int32_t)u_charDirection(c) || i!=u_getIntPropertyValue(c, UCHAR_BIDI_CLASS)) { log_err("error: u_charDirection(U+%04lx)==%u instead of %u (%s)\n", c, u_charDirection(c), MakeDir(fields[4][0]), fields[4][0]); } @@ -1217,6 +1218,8 @@ enumTypeRange(const void *context, UChar32 start, UChar32 limit, UCharCategory t static UBool U_CALLCONV enumDefaultsRange(const void *context, UChar32 start, UChar32 limit, UCharCategory type) { + (void)context; // suppress compiler warnings about unused variable + /* default Bidi classes for unassigned code points, from the DerivedBidiClass.txt header */ static const int32_t defaultBidi[][2]={ /* { limit, class } */ { 0x0590, U_LEFT_TO_RIGHT }, @@ -1292,7 +1295,7 @@ enumDefaultsRange(const void *context, UChar32 start, UChar32 limit, UCharCatego } if( u_charDirection(c)!=shouldBeDir || - u_getIntPropertyValue(c, UCHAR_BIDI_CLASS)!=shouldBeDir + (UCharDirection)u_getIntPropertyValue(c, UCHAR_BIDI_CLASS)!=shouldBeDir ) { log_err("error: u_charDirection(unassigned/PUA U+%04lx)=%s should be %s\n", c, dirStrings[u_charDirection(c)], dirStrings[shouldBeDir]); @@ -1651,28 +1654,28 @@ static const struct { uint32_t code; const char *name, *oldName, *extName, *alias; } names[]={ - {0x0061, "LATIN SMALL LETTER A", "", "LATIN SMALL LETTER A"}, + {0x0061, "LATIN SMALL LETTER A", "", "LATIN SMALL LETTER A", NULL}, {0x01a2, "LATIN CAPITAL LETTER OI", "", "LATIN CAPITAL LETTER OI", "LATIN CAPITAL LETTER GHA"}, {0x0284, "LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK", "", - "LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK" }, + "LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK", NULL}, {0x0fd0, "TIBETAN MARK BSKA- SHOG GI MGO RGYAN", "", "TIBETAN MARK BSKA- SHOG GI MGO RGYAN", "TIBETAN MARK BKA- SHOG GI MGO RGYAN"}, - {0x3401, "CJK UNIFIED IDEOGRAPH-3401", "", "CJK UNIFIED IDEOGRAPH-3401" }, - {0x7fed, "CJK UNIFIED IDEOGRAPH-7FED", "", "CJK UNIFIED IDEOGRAPH-7FED" }, - {0xac00, "HANGUL SYLLABLE GA", "", "HANGUL SYLLABLE GA" }, - {0xd7a3, "HANGUL SYLLABLE HIH", "", "HANGUL SYLLABLE HIH" }, - {0xd800, "", "", "" }, - {0xdc00, "", "", "" }, - {0xff08, "FULLWIDTH LEFT PARENTHESIS", "", "FULLWIDTH LEFT PARENTHESIS" }, - {0xffe5, "FULLWIDTH YEN SIGN", "", "FULLWIDTH YEN SIGN" }, - {0xffff, "", "", "" }, + {0x3401, "CJK UNIFIED IDEOGRAPH-3401", "", "CJK UNIFIED IDEOGRAPH-3401", NULL}, + {0x7fed, "CJK UNIFIED IDEOGRAPH-7FED", "", "CJK UNIFIED IDEOGRAPH-7FED", NULL}, + {0xac00, "HANGUL SYLLABLE GA", "", "HANGUL SYLLABLE GA", NULL}, + {0xd7a3, "HANGUL SYLLABLE HIH", "", "HANGUL SYLLABLE HIH", NULL}, + {0xd800, "", "", "", NULL}, + {0xdc00, "", "", "", NULL}, + {0xff08, "FULLWIDTH LEFT PARENTHESIS", "", "FULLWIDTH LEFT PARENTHESIS", NULL}, + {0xffe5, "FULLWIDTH YEN SIGN", "", "FULLWIDTH YEN SIGN", NULL}, + {0xffff, "", "", "", NULL}, {0x1d0c5, "BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS", "", "BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS", "BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS"}, - {0x23456, "CJK UNIFIED IDEOGRAPH-23456", "", "CJK UNIFIED IDEOGRAPH-23456" } + {0x23456, "CJK UNIFIED IDEOGRAPH-23456", "", "CJK UNIFIED IDEOGRAPH-23456", NULL} }; static UBool @@ -1908,7 +1911,8 @@ TestCharNames() { uset_add, uset_addRange, uset_addString, - NULL /* don't need remove() */ + NULL, /* don't need remove() */ + NULL /* don't need removeRange() */ }; sa.set=set; uprv_getCharNameCharacters(&sa); @@ -3418,6 +3422,8 @@ static void U_CALLCONV caseFoldingLineFn(void *context, char *fields[][2], int32_t fieldCount, UErrorCode *pErrorCode) { + (void)fieldCount; // suppress compiler warnings about unused variable + CaseFoldingData *pData=(CaseFoldingData *)context; char *end; UChar full[32]; @@ -3525,7 +3531,7 @@ caseFoldingLineFn(void *context, static void TestCaseFolding() { - CaseFoldingData data={ NULL }; + CaseFoldingData data={ NULL, 0, 0, {0}, 0, 0 }; char *fields[3][2]; UErrorCode errorCode; diff --git a/source/test/cintltst/currtest.c b/source/test/cintltst/currtest.c index 64df672..514278a 100644 --- a/source/test/cintltst/currtest.c +++ b/source/test/cintltst/currtest.c @@ -122,7 +122,7 @@ static int32_t checkItemCount(uint32_t currencyType) { originalCount = uenum_count(en, &status); for (count=0;;count++) { const char *str = uenum_next(en, &len, &status); - if (str == NULL || len != expectedLen || strlen(str) != expectedLen) { + if (str == NULL || len != expectedLen || (int32_t)strlen(str) != expectedLen) { break; } } diff --git a/source/test/cintltst/custrtrn.c b/source/test/cintltst/custrtrn.c index 73a995e..895022e 100644 --- a/source/test/cintltst/custrtrn.c +++ b/source/test/cintltst/custrtrn.c @@ -748,7 +748,7 @@ static void Test_UChar_UTF8_API(void){ withTrail16, u_strlen(withTrail16), 0xfffd, &numSubstitutions, &err); - if(U_FAILURE(err) || u8DestLen!=uprv_strlen((const char *)withTrail8SubFFFD) || + if(U_FAILURE(err) || u8DestLen!=(int32_t)uprv_strlen((const char *)withTrail8SubFFFD) || 0!=uprv_memcmp((const char *)withTrail8SubFFFD, out8, u8DestLen+1) || numSubstitutions!=1) { log_err("error: u_strToUTF8WithSub(length) failed\n"); @@ -763,7 +763,7 @@ static void Test_UChar_UTF8_API(void){ withTrail16, -1, 0x1a, &numSubstitutions, &err); - if(U_FAILURE(err) || u8DestLen!=uprv_strlen((const char *)withTrail8Sub1A) || + if(U_FAILURE(err) || u8DestLen!=(int32_t)uprv_strlen((const char *)withTrail8Sub1A) || 0!=uprv_memcmp((const char *)withTrail8Sub1A, out8, u8DestLen+1) || numSubstitutions!=1) { log_err("error: u_strToUTF8WithSub(NUL termination) failed\n"); @@ -778,7 +778,7 @@ static void Test_UChar_UTF8_API(void){ withTrail16, -1, 0xfffd, &numSubstitutions, &err); - if(err!=U_BUFFER_OVERFLOW_ERROR || u8DestLen!=uprv_strlen((const char *)withTrail8SubFFFD) || + if(err!=U_BUFFER_OVERFLOW_ERROR || u8DestLen!=(int32_t)uprv_strlen((const char *)withTrail8SubFFFD) || numSubstitutions!=1) { log_err("error: u_strToUTF8WithSub(preflight/NUL termination) failed\n"); } diff --git a/source/test/cintltst/hpmufn.c b/source/test/cintltst/hpmufn.c index 4cdf377..15ee5b4 100644 --- a/source/test/cintltst/hpmufn.c +++ b/source/test/cintltst/hpmufn.c @@ -42,17 +42,20 @@ addHeapMutexTest(TestNode** root) static int32_t gMutexFailures = 0; -#define TEST_STATUS(status, expected) \ -if (status != expected) { \ -log_err_status(status, "FAIL at %s:%d. Actual status = \"%s\"; Expected status = \"%s\"\n", \ - __FILE__, __LINE__, u_errorName(status), u_errorName(expected)); gMutexFailures++; } +#define TEST_STATUS(status, expected) UPRV_BLOCK_MACRO_BEGIN { \ + if (status != expected) { \ + log_err_status(status, "FAIL at %s:%d. Actual status = \"%s\"; Expected status = \"%s\"\n", \ + __FILE__, __LINE__, u_errorName(status), u_errorName(expected)); gMutexFailures++; \ + } \ +} UPRV_BLOCK_MACRO_END -#define TEST_ASSERT(expr) \ -if (!(expr)) { \ - log_err("FAILED Assertion \"" #expr "\" at %s:%d.\n", __FILE__, __LINE__); \ - gMutexFailures++; \ -} +#define TEST_ASSERT(expr) UPRV_BLOCK_MACRO_BEGIN { \ + if (!(expr)) { \ + log_err("FAILED Assertion \"" #expr "\" at %s:%d.\n", __FILE__, __LINE__); \ + gMutexFailures++; \ + } \ +} UPRV_BLOCK_MACRO_END /* These tests do cleanup and reinitialize ICU in the course of their operation. @@ -83,6 +86,7 @@ int gBlockCount = 0; const void *gContext; static void * U_CALLCONV myMemAlloc(const void *context, size_t size) { + (void)context; // suppress compiler warnings about unused variable char *retPtr = (char *)malloc(size+sizeof(ctest_AlignedMemory)); if (retPtr != NULL) { retPtr += sizeof(ctest_AlignedMemory); @@ -92,6 +96,7 @@ static void * U_CALLCONV myMemAlloc(const void *context, size_t size) { } static void U_CALLCONV myMemFree(const void *context, void *mem) { + (void)context; // suppress compiler warnings about unused variable char *freePtr = (char *)mem; if (freePtr != NULL) { freePtr -= sizeof(ctest_AlignedMemory); @@ -102,6 +107,7 @@ static void U_CALLCONV myMemFree(const void *context, void *mem) { static void * U_CALLCONV myMemRealloc(const void *context, void *mem, size_t size) { + (void)context; // suppress compiler warnings about unused variable char *p = (char *)mem; char *retPtr; diff --git a/source/test/cintltst/nccbtst.c b/source/test/cintltst/nccbtst.c index 55780d5..66551a7 100644 --- a/source/test/cintltst/nccbtst.c +++ b/source/test/cintltst/nccbtst.c @@ -914,7 +914,7 @@ static void TestSkip(int32_t inputsize, int32_t outputsize) if(!testConvertToUnicode(sampleText1, UPRV_LENGTHOF(sampleText1), expected1, UPRV_LENGTHOF(expected1),"utf8", UCNV_TO_U_CALLBACK_SKIP, offsets1, NULL, 0 )) - log_err("utf8->u with skip did not match.\n");; + log_err("utf8->u with skip did not match.\n"); } log_verbose("Testing toUnicode for SCSU with UCNV_TO_U_CALLBACK_SKIP \n"); @@ -1330,7 +1330,7 @@ static void TestStop(int32_t inputsize, int32_t outputsize) if(!testConvertToUnicode(sampleText1, UPRV_LENGTHOF(sampleText1), expected1, UPRV_LENGTHOF(expected1),"utf8", UCNV_TO_U_CALLBACK_STOP, offsets1, NULL, 0 )) - log_err("utf8->u with stop did not match.\n");; + log_err("utf8->u with stop did not match.\n"); } log_verbose("Testing toUnicode for SCSU with UCNV_TO_U_CALLBACK_STOP \n"); { @@ -1341,7 +1341,7 @@ static void TestStop(int32_t inputsize, int32_t outputsize) if(!testConvertToUnicode(sampleText1, UPRV_LENGTHOF(sampleText1), expected1, UPRV_LENGTHOF(expected1),"SCSU", UCNV_TO_U_CALLBACK_STOP, offsets1, NULL, 0 )) - log_err("scsu->u with stop did not match.\n");; + log_err("scsu->u with stop did not match.\n"); } } @@ -1620,7 +1620,7 @@ static void TestSub(int32_t inputsize, int32_t outputsize) if(!testConvertToUnicode(sampleText1, UPRV_LENGTHOF(sampleText1), expected1, UPRV_LENGTHOF(expected1),"utf8", UCNV_TO_U_CALLBACK_SUBSTITUTE, offsets1, NULL, 0 )) - log_err("utf8->u with substitute did not match.\n");; + log_err("utf8->u with substitute did not match.\n"); } log_verbose("Testing toUnicode for SCSU with UCNV_TO_U_CALLBACK_SUBSTITUTE \n"); { @@ -1631,7 +1631,7 @@ static void TestSub(int32_t inputsize, int32_t outputsize) if(!testConvertToUnicode(sampleText1, UPRV_LENGTHOF(sampleText1), expected1, UPRV_LENGTHOF(expected1),"SCSU", UCNV_TO_U_CALLBACK_SUBSTITUTE, offsets1, NULL, 0 )) - log_err("scsu->u with stop did not match.\n");; + log_err("scsu->u with stop did not match.\n"); } #if !UCONFIG_NO_LEGACY_CONVERSION diff --git a/source/test/cintltst/ncnvtst.c b/source/test/cintltst/ncnvtst.c index 255020a..77f7fbc 100644 --- a/source/test/cintltst/ncnvtst.c +++ b/source/test/cintltst/ncnvtst.c @@ -699,7 +699,7 @@ static void TestRegressionUTF8(){ offset16 = 0; offset8 = 0; while(currCh <= UNICODE_LIMIT - && offset16 < (MAX_LENGTH/sizeof(UChar) - MAX_UTF16_LEN) + && offset16 < ((int32_t)(MAX_LENGTH/sizeof(UChar) - MAX_UTF16_LEN)) && offset8 < (MAX_LENGTH - MAX_UTF8_LEN)) { if (currCh == SURROGATE_HIGH_START) { @@ -770,8 +770,8 @@ static void TestRegressionUTF32(){ offset16 = 0; offset32 = 0; while(currCh <= UNICODE_LIMIT - && offset16 < (MAX_LENGTH/sizeof(UChar) - MAX_UTF16_LEN) - && offset32 < (MAX_LENGTH/sizeof(UChar32) - MAX_UTF32_LEN)) + && offset16 < ((int32_t)(MAX_LENGTH/sizeof(UChar) - MAX_UTF16_LEN)) + && offset32 < ((int32_t)(MAX_LENGTH/sizeof(UChar32) - MAX_UTF32_LEN))) { if (currCh == SURROGATE_HIGH_START) { currCh = SURROGATE_LOW_END + 1; /* Skip surrogate range */ @@ -968,7 +968,7 @@ static void TestWithBufferSize(int32_t insize, int32_t outsize){ if(!testConvertToU(sampleText1, sizeof(sampleText1), expected1, UPRV_LENGTHOF(expected1),"utf8", UCNV_TO_U_CALLBACK_SUBSTITUTE, offsets1,FALSE)) - log_err("utf8->u with substitute did not match.\n");; + log_err("utf8->u with substitute did not match.\n"); } #if !UCONFIG_NO_LEGACY_CONVERSION diff --git a/source/test/cintltst/nucnvtst.c b/source/test/cintltst/nucnvtst.c index ba8d131..e85c4d0 100644 --- a/source/test/cintltst/nucnvtst.c +++ b/source/test/cintltst/nucnvtst.c @@ -3095,17 +3095,18 @@ TestHZ() { UChar *uTarget; char *cTarget; const char *cTargetLimit; - char *cBuf; - UChar *uBuf,*test; + char *cBuf = NULL; + UChar *uBuf = NULL; + UChar *test; int32_t uBufSize = 120; UErrorCode errorCode=U_ZERO_ERROR; - UConverter *cnv; + UConverter *cnv = NULL; int32_t* offsets = (int32_t*) malloc(uBufSize * sizeof(int32_t) * 5); int32_t* myOff= offsets; cnv=ucnv_open("HZ", &errorCode); if(U_FAILURE(errorCode)) { log_data_err("Unable to open HZ converter: %s\n", u_errorName(errorCode)); - return; + goto cleanup; } uBuf = (UChar*)malloc(uBufSize * sizeof(UChar)*5); @@ -3119,7 +3120,7 @@ TestHZ() { ucnv_fromUnicode( cnv , &cTarget, cTargetLimit,&uSource,uSourceLimit,myOff,TRUE, &errorCode); if(U_FAILURE(errorCode)){ log_err("ucnv_fromUnicode conversion failed reason %s\n", u_errorName(errorCode)); - return; + goto cleanup; } cSource = cBuf; cSourceLimit =cTarget; @@ -3128,7 +3129,7 @@ TestHZ() { ucnv_toUnicode(cnv,&uTarget,uTargetLimit,&cSource,cSourceLimit,myOff,TRUE,&errorCode); if(U_FAILURE(errorCode)){ log_err("ucnv_toUnicode conversion failed reason %s\n", u_errorName(errorCode)); - return; + goto cleanup; } uSource = (const UChar*)in; while(uSource UCNV_IRREGULAR) { return; } diff --git a/source/test/cintltst/putiltst.c b/source/test/cintltst/putiltst.c index 9bb5d18..e455dd5 100644 --- a/source/test/cintltst/putiltst.c +++ b/source/test/cintltst/putiltst.c @@ -36,7 +36,7 @@ static void TestSignedRightShiftIsArithmetic(void) { int32_t m=-1; int32_t x4=x>>4; int32_t m1=m>>1; - UBool signedRightShiftIsArithmetic= x4==0xffff5fff && m1==-1; + UBool signedRightShiftIsArithmetic= (x4==(int32_t)0xffff5fff && m1==-1); if(signedRightShiftIsArithmetic==U_SIGNED_RIGHT_SHIFT_IS_ARITHMETIC) { log_info("signed right shift is Arithmetic Shift Right: %d\n", signedRightShiftIsArithmetic); diff --git a/source/test/cintltst/reapits.c b/source/test/cintltst/reapits.c index b712669..73bc59a 100644 --- a/source/test/cintltst/reapits.c +++ b/source/test/cintltst/reapits.c @@ -33,11 +33,17 @@ #include "cintltst.h" #include "cmemory.h" -#define TEST_ASSERT_SUCCESS(status) {if (U_FAILURE(status)) { \ -log_data_err("Failure at file %s:%d - error = %s (Are you missing data?)\n", __FILE__, __LINE__, u_errorName(status));}} - -#define TEST_ASSERT(expr) {if ((expr)==FALSE) { \ -log_err("Test Failure at file %s:%d - ASSERT(%s) failed.\n", __FILE__, __LINE__, #expr);}} +#define TEST_ASSERT_SUCCESS(status) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(status)) { \ + log_data_err("Failure at file %s:%d - error = %s (Are you missing data?)\n", __FILE__, __LINE__, u_errorName(status)); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define TEST_ASSERT(expr) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expr)==FALSE) { \ + log_err("Test Failure at file %s:%d - ASSERT(%s) failed.\n", __FILE__, __LINE__, #expr); \ + } \ +} UPRV_BLOCK_MACRO_END /* * TEST_SETUP and TEST_TEARDOWN @@ -50,7 +56,7 @@ log_err("Test Failure at file %s:%d - ASSERT(%s) failed.\n", __FILE__, __LINE__, * Put arbitrary test code between SETUP and TEARDOWN. * 're" is the compiled, ready-to-go regular expression. */ -#define TEST_SETUP(pattern, testString, flags) { \ +#define TEST_SETUP(pattern, testString, flags) UPRV_BLOCK_MACRO_BEGIN { \ UChar *srcString = NULL; \ status = U_ZERO_ERROR; \ re = uregex_openC(pattern, flags, NULL, &status); \ @@ -60,14 +66,15 @@ log_err("Test Failure at file %s:%d - ASSERT(%s) failed.\n", __FILE__, __LINE__, u_uastrncpy(srcString, testString, testStringLen + 1); \ uregex_setText(re, srcString, -1, &status); \ TEST_ASSERT_SUCCESS(status); \ - if (U_SUCCESS(status)) { - + if (U_SUCCESS(status)) { \ + UPRV_BLOCK_MACRO_BEGIN {} UPRV_BLOCK_MACRO_END + #define TEST_TEARDOWN \ } \ TEST_ASSERT_SUCCESS(status); \ uregex_close(re); \ free(srcString); \ - } +} UPRV_BLOCK_MACRO_END /** @@ -691,7 +698,7 @@ static void TestRegexCAPI(void) { /* SetRegion(), getRegion() do something */ - TEST_SETUP(".*", "0123456789ABCDEF", 0) + TEST_SETUP(".*", "0123456789ABCDEF", 0); UChar resultString[40]; TEST_ASSERT(uregex_regionStart(re, &status) == 0); TEST_ASSERT(uregex_regionEnd(re, &status) == 16); @@ -699,7 +706,7 @@ static void TestRegexCAPI(void) { TEST_ASSERT(uregex_regionStart(re, &status) == 3); TEST_ASSERT(uregex_regionEnd(re, &status) == 6); TEST_ASSERT(uregex_findNext(re, &status)); - TEST_ASSERT(uregex_group(re, 0, resultString, UPRV_LENGTHOF(resultString), &status) == 3) + TEST_ASSERT(uregex_group(re, 0, resultString, UPRV_LENGTHOF(resultString), &status) == 3); TEST_ASSERT_STRING("345", resultString, TRUE); TEST_TEARDOWN; @@ -1322,7 +1329,7 @@ static void TestRegexCAPI(void) { * to be invoked. The nested '+' operators give exponential time * behavior with increasing string length. */ - TEST_SETUP("((.)+\\2)+x", "aaaaaaaaaaaaaaaaaaab", 0) + TEST_SETUP("((.)+\\2)+x", "aaaaaaaaaaaaaaaaaaab", 0); callBackContext cbInfo = {4, 0, 0}; const void *pContext = &cbInfo; URegexMatchCallback *returnedFn = &TestCallbackFn; @@ -2253,10 +2260,16 @@ static void TestBug8421(void) { } static UBool U_CALLCONV FindCallback(const void* context , int64_t matchIndex) { + // suppress compiler warnings about unused variables + (void)context; + (void)matchIndex; return FALSE; } static UBool U_CALLCONV MatchCallback(const void *context, int32_t steps) { + // suppress compiler warnings about unused variables + (void)context; + (void)steps; return FALSE; } diff --git a/source/test/cintltst/sorttest.c b/source/test/cintltst/sorttest.c index 79d1773..d4d8136 100644 --- a/source/test/cintltst/sorttest.c +++ b/source/test/cintltst/sorttest.c @@ -109,6 +109,7 @@ typedef struct Line { static void printLines(const Line *lines) { + (void)lines; // suppress compiler warnings about unused variable #if 0 int32_t i, j; for(i=0; i 0); TEST_ASSERT(gTraceExitCount > 0); diff --git a/source/test/cintltst/trie2test.c b/source/test/cintltst/trie2test.c index aa7e7c6..845e3fe 100644 --- a/source/test/cintltst/trie2test.c +++ b/source/test/cintltst/trie2test.c @@ -75,6 +75,7 @@ getSpecialValues(const CheckRange checkRanges[], int32_t countCheckRanges, /* utrie2_enum() callback, modifies a value */ static uint32_t U_CALLCONV testEnumValue(const void *context, uint32_t value) { + (void)context; // suppress compiler warnings about unused variable return value^0x5555; } @@ -98,6 +99,7 @@ static void testTrieEnum(const char *testName, const UTrie2 *trie, const CheckRange checkRanges[], int32_t countCheckRanges) { + (void)testName; // suppress compiler warnings about unused variable /* skip over special values */ while(countCheckRanges>0 && checkRanges[0].limit<=0) { ++checkRanges; @@ -430,7 +432,7 @@ testTrieUTF8(const char *testName, values[countValues++]=value; } /* write an illegal byte sequence */ - if(i8text, 1, length, f)) { + if (length != (int32_t)fread(tt->text, 1, length, f)) { log_err("error reading %ld bytes from test text file\n", (long)length); length = 0; uprv_free(tt->text); @@ -386,7 +386,7 @@ static void TestSelector() return; } if (!text_open(&text)) { - releaseAvailableNames();; + releaseAvailableNames(); } excluded_sets[0] = uset_openEmpty(); diff --git a/source/test/cintltst/ucptrietest.c b/source/test/cintltst/ucptrietest.c index 299ef90..9d2e489 100644 --- a/source/test/cintltst/ucptrietest.c +++ b/source/test/cintltst/ucptrietest.c @@ -67,6 +67,7 @@ getSpecialValues(const CheckRange checkRanges[], int32_t countCheckRanges, /* ucptrie_enum() callback, modifies a value */ static uint32_t U_CALLCONV testFilter(const void *context, uint32_t value) { + (void)context; // suppress compiler warnings about unused variable return value ^ 0x5555; } @@ -568,7 +569,7 @@ testTrieUTF8(const char *testName, values[countValues++]=value; } /* write an illegal byte sequence */ - if(i8size>=20 && pInfo->isBigEndian==U_IS_BIG_ENDIAN && @@ -590,6 +591,7 @@ static UBool U_CALLCONV isAcceptable2(void *context, const char *type, const char *name, const UDataInfo *pInfo){ + (void)context; // suppress compiler warnings about unused variable UVersionInfo unicodeVersion; u_getUnicodeVersion(unicodeVersion); @@ -618,6 +620,7 @@ static UBool U_CALLCONV isAcceptable3(void *context, const char *type, const char *name, const UDataInfo *pInfo){ + (void)context; // suppress compiler warnings about unused variable if( pInfo->size>=20 && pInfo->isBigEndian==U_IS_BIG_ENDIAN && @@ -1233,7 +1236,8 @@ static const struct { {0x31, 0x31, 0x31, 0x31}, /* dataFormat="1111" */ {0, 0, 0, 0}, /* formatVersion */ - {0, 0, 0, 0}} /* dataVersion */ + {0, 0, 0, 0}}, /* dataVersion */ + 0 }; #endif @@ -1395,6 +1399,7 @@ static const struct { static void U_CALLCONV printError(void *context, const char *fmt, va_list args) { + (void)context; // suppress compiler warnings about unused variable vlog_info("[swap] ", fmt, args); log_err("\n"); /* Register error */ } diff --git a/source/test/cintltst/uenumtst.c b/source/test/cintltst/uenumtst.c index 39e2494..8ce05e9 100644 --- a/source/test/cintltst/uenumtst.c +++ b/source/test/cintltst/uenumtst.c @@ -59,11 +59,13 @@ chArrayClose(UEnumeration *en) { static int32_t U_CALLCONV chArrayCount(UEnumeration *en, UErrorCode *status) { + (void)status; // suppress compiler warnings about unused variable return cont->maxIndex; } static const UChar* U_CALLCONV chArrayUNext(UEnumeration *en, int32_t *resultLength, UErrorCode *status) { + (void)status; // suppress compiler warnings about unused variable if(cont->currIndex >= cont->maxIndex) { return NULL; } @@ -81,6 +83,7 @@ chArrayUNext(UEnumeration *en, int32_t *resultLength, UErrorCode *status) { static const char* U_CALLCONV chArrayNext(UEnumeration *en, int32_t *resultLength, UErrorCode *status) { + (void)status; // suppress compiler warnings about unused variable if(cont->currIndex >= cont->maxIndex) { return NULL; } @@ -93,6 +96,7 @@ chArrayNext(UEnumeration *en, int32_t *resultLength, UErrorCode *status) { static void U_CALLCONV chArrayReset(UEnumeration *en, UErrorCode *status) { + (void)status; // suppress compiler warnings about unused variable cont->currIndex = 0; } @@ -160,11 +164,13 @@ uchArrayClose(UEnumeration *en) { static int32_t U_CALLCONV uchArrayCount(UEnumeration *en, UErrorCode *status) { + (void)status; // suppress compiler warnings about unused variable return ucont->maxIndex; } static const UChar* U_CALLCONV uchArrayUNext(UEnumeration *en, int32_t *resultLength, UErrorCode *status) { + (void)status; // suppress compiler warnings about unused variable if(ucont->currIndex >= ucont->maxIndex) { return NULL; } @@ -177,6 +183,7 @@ uchArrayUNext(UEnumeration *en, int32_t *resultLength, UErrorCode *status) { static void U_CALLCONV uchArrayReset(UEnumeration *en, UErrorCode *status) { + (void)status; // suppress compiler warnings about unused variable ucont->currIndex = 0; } @@ -343,7 +350,7 @@ static void verifyEnumeration(int line, UEnumeration *u, const char * const * co log_verbose("%s:%d: OK: string #%d got '%s'\n", __FILE__, line, i, c); } - if(len!=strlen(compareToChar[i])) { + if(len!=(int32_t)strlen(compareToChar[i])) { log_err("%s:%d: FAIL: string #%d expected len %d got %d\n", __FILE__, line, i, strlen(compareToChar[i]), len); } else { log_verbose("%s:%d: OK: string #%d got len %d\n", __FILE__, line, i, len); @@ -380,7 +387,7 @@ static void verifyEnumeration(int line, UEnumeration *u, const char * const * co log_verbose("%s:%d: OK: ustring #%d got '%s'\n", __FILE__, line, i, compareToChar[i]); } - if(len!=strlen(compareToChar[i])) { + if(len!=(int32_t)strlen(compareToChar[i])) { log_err("%s:%d: FAIL: ustring #%d expected len %d got %d\n", __FILE__, line, i, strlen(compareToChar[i]), len); } else { log_verbose("%s:%d: OK: ustring #%d got len %d\n", __FILE__, line, i, len); diff --git a/source/test/cintltst/uformattedvaluetst.c b/source/test/cintltst/uformattedvaluetst.c index a5e3786..392d76e 100644 --- a/source/test/cintltst/uformattedvaluetst.c +++ b/source/test/cintltst/uformattedvaluetst.c @@ -213,6 +213,7 @@ void checkFormattedValue( UFieldCategory expectedCategory, const UFieldPosition* expectedFieldPositions, int32_t expectedFieldPositionsLength) { + (void)expectedFieldPositionsLength; // suppress compiler warnings about unused variable UErrorCode ec = U_ZERO_ERROR; checkFormattedValueString(message, fv, expectedString, &ec); if (U_FAILURE(ec)) { return; } @@ -244,6 +245,7 @@ void checkMixedFormattedValue( const UChar* expectedString, const UFieldPositionWithCategory* expectedFieldPositions, int32_t length) { + (void)length; // suppress compiler warnings about unused variable UErrorCode ec = U_ZERO_ERROR; checkFormattedValueString(message, fv, expectedString, &ec); if (U_FAILURE(ec)) { return; } diff --git a/source/test/cintltst/unumberformattertst.c b/source/test/cintltst/unumberformattertst.c index b450650..2e296f0 100644 --- a/source/test/cintltst/unumberformattertst.c +++ b/source/test/cintltst/unumberformattertst.c @@ -96,7 +96,7 @@ static void TestSkeletonFormatToFields() { if (assertSuccessCheck("unumf_formatInt() failed", &ec, TRUE)) { // field position test: - UFieldPosition ufpos = {UNUM_DECIMAL_SEPARATOR_FIELD}; + UFieldPosition ufpos = {UNUM_DECIMAL_SEPARATOR_FIELD, 0, 0}; unumf_resultNextFieldPosition(uresult, &ufpos, &ec); assertIntEquals("Field position should be correct", 14, ufpos.beginIndex); assertIntEquals("Field position should be correct", 15, ufpos.endIndex); @@ -118,7 +118,7 @@ static void TestSkeletonFormatToFields() { {UNUM_MEASURE_UNIT_FIELD, 18, 19} }; UFieldPosition actual; - for (int32_t i = 0; i < sizeof(expectedFields) / sizeof(*expectedFields); i++) { + for (int32_t i = 0; i < (int32_t)(sizeof(expectedFields) / sizeof(*expectedFields)); i++) { // Iterate using the UFieldPosition to hold state... UFieldPosition expected = expectedFields[i]; actual.field = ufieldpositer_next(ufpositer, &actual.beginIndex, &actual.endIndex); diff --git a/source/test/cintltst/usrchtst.c b/source/test/cintltst/usrchtst.c index d9c3066..7a683a0 100644 --- a/source/test/cintltst/usrchtst.c +++ b/source/test/cintltst/usrchtst.c @@ -362,7 +362,7 @@ static UBool assertEqualWithUStringSearch( UStringSearch *strsrch, matchlength = search.size[count]; usearch_next(strsrch, &status); if (matchindex != usearch_getMatchedStart(strsrch) || - matchlength != (uint32_t)usearch_getMatchedLength(strsrch)) { + matchlength != usearch_getMatchedLength(strsrch)) { char *str = toCharString(usearch_getText(strsrch, &textlength)); log_err("Text: %s\n", str); str = toCharString(usearch_getPattern(strsrch, &textlength)); @@ -375,7 +375,7 @@ static UBool assertEqualWithUStringSearch( UStringSearch *strsrch, count ++; if (usearch_getMatchedText(strsrch, matchtext, 128, &status) != - (int32_t) matchlength || U_FAILURE(status) || + matchlength || U_FAILURE(status) || memcmp(matchtext, usearch_getText(strsrch, &textlength) + matchindex, matchlength * sizeof(UChar)) != 0) { @@ -404,7 +404,7 @@ static UBool assertEqualWithUStringSearch( UStringSearch *strsrch, matchlength = search.size[count]; usearch_previous(strsrch, &status); if (matchindex != usearch_getMatchedStart(strsrch) || - matchlength != (uint32_t)usearch_getMatchedLength(strsrch)) { + matchlength != usearch_getMatchedLength(strsrch)) { char *str = toCharString(usearch_getText(strsrch, &textlength)); log_err("Text: %s\n", str); str = toCharString(usearch_getPattern(strsrch, &textlength)); @@ -416,7 +416,7 @@ static UBool assertEqualWithUStringSearch( UStringSearch *strsrch, } if (usearch_getMatchedText(strsrch, matchtext, 128, &status) != - (int32_t) matchlength || U_FAILURE(status) || + matchlength || U_FAILURE(status) || memcmp(matchtext, usearch_getText(strsrch, &textlength) + matchindex, matchlength * sizeof(UChar)) != 0) { @@ -1255,10 +1255,10 @@ static void TestGetSetOffset(void) ucol_setStrength(usearch_getCollator(strsrch), search.strength); usearch_reset(strsrch); while (U_SUCCESS(status) && matchindex >= 0) { - uint32_t matchlength = search.size[count]; + int32_t matchlength = search.size[count]; usearch_next(strsrch, &status); if (matchindex != usearch_getMatchedStart(strsrch) || - matchlength != (uint32_t)usearch_getMatchedLength(strsrch)) { + matchlength != usearch_getMatchedLength(strsrch)) { char *str = toCharString(usearch_getText(strsrch, &textlength)); log_err("Text: %s\n", str); @@ -1272,7 +1272,7 @@ static void TestGetSetOffset(void) usearch_setOffset(strsrch, matchindex + matchlength, &status); usearch_previous(strsrch, &status); if (matchindex != usearch_getMatchedStart(strsrch) || - matchlength != (uint32_t)usearch_getMatchedLength(strsrch)) { + matchlength != usearch_getMatchedLength(strsrch)) { char *str = toCharString(usearch_getText(strsrch, &textlength)); log_err("Text: %s\n", str); @@ -1459,23 +1459,23 @@ static void TestGetMatch(void) } status = U_ZERO_ERROR; if (usearch_getMatchedText(strsrch, NULL, 0, &status) != - (int32_t)matchlength || U_SUCCESS(status)){ + matchlength || U_SUCCESS(status)){ log_err("Error pre-flighting match length\n"); } status = U_ZERO_ERROR; if (usearch_getMatchedText(strsrch, matchtext, 0, &status) != - (int32_t)matchlength || U_SUCCESS(status)){ + matchlength || U_SUCCESS(status)){ log_err("Error getting match text with buffer size 0\n"); } status = U_ZERO_ERROR; if (usearch_getMatchedText(strsrch, matchtext, matchlength, &status) - != (int32_t)matchlength || matchtext[matchlength - 1] == 0 || + != matchlength || matchtext[matchlength - 1] == 0 || U_FAILURE(status)){ log_err("Error getting match text with exact size\n"); } status = U_ZERO_ERROR; if (usearch_getMatchedText(strsrch, matchtext, 128, &status) != - (int32_t) matchlength || U_FAILURE(status) || + matchlength || U_FAILURE(status) || memcmp(matchtext, usearch_getText(strsrch, &textlength) + matchindex, matchlength * sizeof(UChar)) != 0 || @@ -2313,10 +2313,10 @@ static void TestGetSetOffsetCanonical(void) usearch_setText(strsrch, text, -1, &status); usearch_setPattern(strsrch, pattern, -1, &status); while (U_SUCCESS(status) && matchindex >= 0) { - uint32_t matchlength = search.size[count]; + int32_t matchlength = search.size[count]; usearch_next(strsrch, &status); if (matchindex != usearch_getMatchedStart(strsrch) || - matchlength != (uint32_t)usearch_getMatchedLength(strsrch)) { + matchlength != usearch_getMatchedLength(strsrch)) { char *str = toCharString(usearch_getText(strsrch, &textlength)); log_err("Text: %s\n", str); @@ -2506,9 +2506,11 @@ exitTestForwardBackward : } } -#define TEST_ASSERT(x) \ - {if (U_FAILURE(x)) {log_err_status(x, "%s:%d: FAIL: test assertion failure \n", __FILE__, __LINE__);\ - }} +#define TEST_ASSERT(x) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(x)) { \ + log_err_status(x, "%s:%d: FAIL: test assertion failure \n", __FILE__, __LINE__); \ + } \ +} UPRV_BLOCK_MACRO_END static void TestSearchForNull(void) { UCollator *coll; @@ -2892,6 +2894,43 @@ exit: return; } +static void TestUInt16Overflow(void) { + const int32_t uint16_overflow = UINT16_MAX + 1; + UChar* pattern = (UChar*)uprv_malloc(uint16_overflow * sizeof(UChar)); + if (pattern == NULL) + { + log_err("Err: uprv_malloc returned NULL\n"); + return; + } + u_memset(pattern, 'A', uint16_overflow); + UChar text[] = { 'B' }; + + UErrorCode errorCode = U_ZERO_ERROR; + UStringSearch* usearch = usearch_open(pattern, uint16_overflow, text, 1, "en-US", NULL, &errorCode); + + if (U_SUCCESS(errorCode)) + { + int32_t match = usearch_first(usearch, &errorCode); + + if (U_SUCCESS(errorCode)) + { + if (match != USEARCH_DONE) + { + log_err("Err: match was not expected, got %d\n", match); + } + } + else + { + log_err("usearch_first error %s\n", u_errorName(errorCode)); + } + usearch_close(usearch); + } + else + { + log_err("usearch_open error %s\n", u_errorName(errorCode)); + } + uprv_free(pattern); +} static void TestPCEBuffer_100df(void) { UChar search[] = @@ -3068,6 +3107,7 @@ void addSearchTest(TestNode** root) addTest(root, &TestPCEBuffer_2surr, "tscoll/usrchtst/TestPCEBuffer/2_dfff"); addTest(root, &TestMatchFollowedByIgnorables, "tscoll/usrchtst/TestMatchFollowedByIgnorables"); addTest(root, &TestIndicPrefixMatch, "tscoll/usrchtst/TestIndicPrefixMatch"); + addTest(root, &TestUInt16Overflow, "tscoll/usrchtst/TestUInt16Overflow"); } #endif /* #if !UCONFIG_NO_COLLATION */ diff --git a/source/test/cintltst/utexttst.c b/source/test/cintltst/utexttst.c index 5707cc1..8c70f0e 100644 --- a/source/test/cintltst/utexttst.c +++ b/source/test/cintltst/utexttst.c @@ -34,17 +34,21 @@ addUTextTest(TestNode** root) } -#define TEST_ASSERT(x) \ - {if ((x)==FALSE) {log_err("Test failure in file %s at line %d\n", __FILE__, __LINE__);\ - gFailed = TRUE;\ - }} - - -#define TEST_SUCCESS(status) \ - {if (U_FAILURE(status)) {log_err("Test failure in file %s at line %d. Error = \"%s\"\n", \ - __FILE__, __LINE__, u_errorName(status)); \ - gFailed = TRUE;\ - }} +#define TEST_ASSERT(x) UPRV_BLOCK_MACRO_BEGIN { \ + if ((x)==FALSE) { \ + log_err("Test failure in file %s at line %d\n", __FILE__, __LINE__); \ + gFailed = TRUE; \ + } \ +} UPRV_BLOCK_MACRO_END + + +#define TEST_SUCCESS(status) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(status)) { \ + log_err("Test failure in file %s at line %d. Error = \"%s\"\n", \ + __FILE__, __LINE__, u_errorName(status)); \ + gFailed = TRUE; \ + } \ +} UPRV_BLOCK_MACRO_END diff --git a/source/test/cintltst/utf8tst.c b/source/test/cintltst/utf8tst.c index 9f4109c..4884be4 100644 --- a/source/test/cintltst/utf8tst.c +++ b/source/test/cintltst/utf8tst.c @@ -35,7 +35,7 @@ * the macros below do not attempt to assemble such pairs. */ -#define L8_NEXT(s, i, length, c) { \ +#define L8_NEXT(s, i, length, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(uint8_t)(s)[(i)++]; \ if((c)>=0x80) { \ if(U8_IS_LEAD(c)) { \ @@ -44,9 +44,9 @@ (c)=U_SENTINEL; \ } \ } \ -} +} UPRV_BLOCK_MACRO_END -#define L8_PREV(s, start, i, c) { \ +#define L8_PREV(s, start, i, c) UPRV_BLOCK_MACRO_BEGIN { \ (c)=(uint8_t)(s)[--(i)]; \ if((c)>=0x80) { \ if((c)<=0xbf) { \ @@ -55,7 +55,7 @@ (c)=U_SENTINEL; \ } \ } \ -} +} UPRV_BLOCK_MACRO_END /* -------------------------------------------------------------------------- */ @@ -884,13 +884,13 @@ static void TestSetChar() { } #if !U_HIDE_OBSOLETE_UTF_OLD_H setOffset=offset; - UTF8_SET_CHAR_LIMIT_SAFE(input,0, setOffset, sizeof(input)); + UTF8_SET_CHAR_LIMIT_SAFE(input,0, setOffset, (int32_t)sizeof(input)); if(setOffset != limit_safe[i]){ log_err("ERROR: UTF8_SET_CHAR_LIMIT_SAFE failed for offset=%ld. Expected:%ld Got:%ld\n", offset, limit_safe[i], setOffset); } #endif setOffset=offset; - U8_SET_CP_LIMIT(input,0, setOffset, sizeof(input)); + U8_SET_CP_LIMIT(input,0, setOffset, (int32_t)sizeof(input)); if(setOffset != limit_safe[i]){ log_err("ERROR: U8_SET_CP_LIMIT failed for offset=%ld. Expected:%ld Got:%ld\n", offset, limit_safe[i], setOffset); } diff --git a/source/test/cintltst/utmstest.c b/source/test/cintltst/utmstest.c index 122ba30..c25b79a 100644 --- a/source/test/cintltst/utmstest.c +++ b/source/test/cintltst/utmstest.c @@ -52,7 +52,7 @@ static uint64_t randomInt64(void) } /* Assume rand has at least 12 bits of precision */ - for (i = 0; i < sizeof(ran); i += 1) { + for (i = 0; i < (int32_t)sizeof(ran); i += 1) { ((char*)&ran)[i] = (char)((rand() & 0x0FF0) >> 4); } diff --git a/source/test/depstest/dependencies.txt b/source/test/depstest/dependencies.txt index 466e642..1d726b6 100644 --- a/source/test/depstest/dependencies.txt +++ b/source/test/depstest/dependencies.txt @@ -20,7 +20,7 @@ system_symbols: c_strings c_string_formatting int_functions floating_point trigonometry stdlib_qsort - pthread system_locale + system_locale stdio_input stdio_output file_io readlink_function dir_io mmap_functions dlfcn # C++ cplusplus iostream @@ -82,10 +82,6 @@ group: trigonometry group: stdlib_qsort qsort -group: pthread - pthread_mutex_init pthread_mutex_destroy pthread_mutex_lock pthread_mutex_unlock - pthread_cond_wait pthread_cond_broadcast pthread_cond_signal - group: system_locale getenv nl_langinfo setlocale newlocale freelocale @@ -94,7 +90,7 @@ group: system_locale group: stdio_input fopen fclose fgets fread fseek ftell rewind feof fileno # Additional symbols in an optimized build. - __fgets_chk __fread_chk + __fgets_chk __fread_chk fread_unlocked group: stdio_output fflush fwrite @@ -188,7 +184,7 @@ library: common uinit utypes errorcode icuplug platform - localebuilder + localebuilder localematcher group: pluralmap # TODO: Move to i18n library, ticket #11926. @@ -635,7 +631,7 @@ group: resourcebundle # We can probably only disentangle basic locale ID handling from resource bundle code # by hardcoding all of the locale ID data. locid.o locmap.o wintz.o - # Do we need class LocaleBased? http://bugs.icu-project.org/trac/ticket/8608 + # Do we need class LocaleBased? https://unicode-org.atlassian.net/browse/ICU-8608 locbased.o loclikely.o deps @@ -643,18 +639,45 @@ group: resourcebundle sort stringenumeration uhash uvector uscript_props propname bytesinkutil + errorcode group: localebuilder localebuilder.o deps resourcebundle +group: localematcher + localematcher.o + deps + localebuilder localeprioritylist loclikelysubtags locdistance lsr + +group: localeprioritylist + localeprioritylist.o + deps + resourcebundle + +group: locdistance + locdistance.o + deps + loclikelysubtags + +group: loclikelysubtags + loclikelysubtags.o + deps + lsr resourcebundle + +group: lsr + lsr.o + deps + platform + group: udata - udata.o ucmndata.o udatamem.o + udata.o ucmndata.o udatamem.o restrace.o umapfile.o deps uhash platform stubdata file_io mmap_functions + icu_utility group: unifiedcache unifiedcache.o @@ -831,7 +854,7 @@ group: platform # The "platform" group has no ICU dependencies. PIC system_misc system_debug malloc_functions ubsan c_strings c_string_formatting - floating_point pthread system_locale + floating_point system_locale stdio_input readlink_function dir_io dlfcn # Move related code into icuplug.c? cplusplus @@ -853,7 +876,7 @@ library: i18n group: region region.o uregion.o deps - formatting # Temporary, TODO: Ticket #9982 class Region should use low-level ASCII-integer functions, and probably be moved to the common library. + icu_utility resourcebundle uvector uclean_i18n @@ -925,14 +948,17 @@ group: listformatter resourcebundle simpleformatter format uclean_i18n formatted_value_iterimpl group: double_conversion - double-conversion.o double-conversion-bignum.o double-conversion-bignum-dtoa.o - double-conversion-cached-powers.o double-conversion-diy-fp.o - double-conversion-fast-dtoa.o double-conversion-strtod.o + double-conversion-bignum.o double-conversion-double-to-string.o + double-conversion-bignum-dtoa.o double-conversion-cached-powers.o + double-conversion-string-to-double.o double-conversion-fast-dtoa.o + double-conversion-strtod.o deps platform group: number_representation - number_decimalquantity.o number_stringbuilder.o numparse_stringsegment.o number_utils.o + number_decimalquantity.o string_segment.o number_utils.o + # TODO(ICU-20429) Move formatted_string_builder to its own unit. + formatted_string_builder.o deps decnumber double_conversion # for trimming whitespace around fields @@ -1020,6 +1046,7 @@ group: formatting trigonometry # for astro.o sharedbreakiterator # for reldatefmt.o uclean_i18n + region group: sharedbreakiterator sharedbreakiterator.o diff --git a/source/test/depstest/depstest.py b/source/test/depstest/depstest.py index 4d05f06..83dbfc0 100755 --- a/source/test/depstest/depstest.py +++ b/source/test/depstest/depstest.py @@ -105,10 +105,13 @@ def _ReadLibrary(root_path, library_name): # in a limited (not transitive) context. List of (file_name, symbol) # TODO: Move this data to dependencies.txt? allowed_errors = ( - ("common/umutex.o", "operator new(unsigned long)"), - ("common/umutex.o", "std::__throw_bad_alloc()"), ("common/umutex.o", "std::__throw_system_error(int)"), ("common/umutex.o", "std::uncaught_exception()"), + ("common/umutex.o", "std::__once_callable"), + ("common/umutex.o", "std::__once_call"), + ("common/umutex.o", "__once_proxy"), + ("common/umutex.o", "__tls_get_addr"), + ("common/unifiedcache.o", "std::__throw_system_error(int)"), ) def _Resolve(name, parents): diff --git a/source/test/fuzzer/Makefile.in b/source/test/fuzzer/Makefile.in new file mode 100644 index 0000000..37c609d --- /dev/null +++ b/source/test/fuzzer/Makefile.in @@ -0,0 +1,99 @@ +# © 2019 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html +#****************************************************************************** +## Makefile.in for ICU - test/fuzzer + +## Source directory information +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ + +top_builddir = ../.. + +## All the flags and other definitions are included here. +include $(top_builddir)/icudefs.mk + +## Build directory information +subdir = test/fuzzer + +## Extra files to remove for 'make clean' +CLEANFILES = *~ $(DEPS) $(TESTXML) + +## Target information +TARGET = all_fuzzers + +BUILDDIR := $(CURR_SRCCODE_FULL_DIR)/../../ +# Simplify the path for Unix +BUILDDIR := $(BUILDDIR:test/fuzzer/../../=) +# Simplify the path for Windows +BUILDDIR := $(BUILDDIR:test\\fuzzer/../../=) +# Simplify the path for Windows 98 +BUILDDIR := $(BUILDDIR:TEST\\FUZZER/../../=) + +CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/ctestfw -I$(top_srcdir)/io +DEFS += -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"' +LIBS = $(LIBCTESTFW) $(LIBICUTOOLUTIL) $(LIBICUIO) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M) + +FUZZER_TARGETS = break_iterator_fuzzer collator_compare_fuzzer collator_rulebased_fuzzer converter_fuzzer locale_fuzzer number_format_fuzzer ucasemap_fuzzer uloc_canonicalize_fuzzer uloc_for_language_tag_fuzzer uloc_get_name_fuzzer uloc_is_right_to_left_fuzzer uloc_open_keywords_fuzzer unicode_string_codepage_create_fuzzer uregex_open_fuzzer + +OBJECTS = $(FUZZER_TARGETS:%=%.o) +OBJECTS += fuzzer_driver.o locale_util.o + +DEPS = $(OBJECTS:.o=.d) + +-include Makefile.local + +## List of phony targets +.PHONY : all all-local install install-local clean clean-local \ +distclean distclean-local dist dist-local check check-local xcheck \ +check-exhaustive check-exhaustive-local all_fuzzers + +## Clear suffix list +.SUFFIXES : + +## List of standard targets +all: all-local +install: install-local +clean: clean-local +distclean : distclean-local +dist: dist-local +check: all check-local +xcheck: all xcheck-local + +all-local: $(TARGET) + +install-local: + +dist-local: + +clean-local: + test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES) + $(RMV) $(OBJECTS) $(TARGET) $(FUZZER_TARGETS) + +distclean-local: clean-local + $(RMV) Makefile + +check-local: all-local + $(foreach trgt,$(FUZZER_TARGETS), echo $(trgt); $(INVOKE) ./$(trgt) \ + $(TEST_OUTPUT_OPTS) || exit \ + $(IOTEST_OPTS);) + +xcheck-local: check-local + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +all_fuzzers: $(FUZZER_TARGETS) + +%_fuzzer: %_fuzzer.o fuzzer_driver.o locale_util.o + $(LINK.cc) $(OUTOPT)$@ $^ $(LIBS) + +ifeq (,$(MAKECMDGOALS)) +-include $(DEPS) +else +ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),) +ifneq ($(patsubst %install,,$(MAKECMDGOALS)),) +-include $(DEPS) +endif +endif +endif diff --git a/source/test/fuzzer/break_iterator_fuzzer.cc b/source/test/fuzzer/break_iterator_fuzzer.cpp similarity index 98% rename from source/test/fuzzer/break_iterator_fuzzer.cc rename to source/test/fuzzer/break_iterator_fuzzer.cpp index 73dc29e..a2c9a3e 100644 --- a/source/test/fuzzer/break_iterator_fuzzer.cc +++ b/source/test/fuzzer/break_iterator_fuzzer.cpp @@ -1,6 +1,7 @@ // © 2019 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html +#include #include #include #include diff --git a/source/test/fuzzer/collator_compare_fuzzer.cpp b/source/test/fuzzer/collator_compare_fuzzer.cpp new file mode 100644 index 0000000..87b2ea9 --- /dev/null +++ b/source/test/fuzzer/collator_compare_fuzzer.cpp @@ -0,0 +1,35 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html + +#include + +#include "fuzzer_utils.h" +#include "unicode/coll.h" +#include "unicode/localpointer.h" +#include "unicode/locid.h" + +IcuEnvironment* env = new IcuEnvironment(); + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + UErrorCode status = U_ZERO_ERROR; + + if (size < 2) + return 0; + + std::unique_ptr compbuff1(new char16_t[size/4]); + std::memcpy(compbuff1.get(), data, (size/4)*2); + data = data + size/2; + std::unique_ptr compbuff2(new char16_t[size/4]); + std::memcpy(compbuff2.get(), data, (size/4)*2); + + icu::LocalPointer fuzzCollator( + icu::Collator::createInstance(icu::Locale::getUS(), status), status); + if (U_FAILURE(status)) + return 0; + fuzzCollator->setStrength(icu::Collator::TERTIARY); + + fuzzCollator->compare(compbuff1.get(), size/4, + compbuff2.get(), size/4); + + return 0; +} diff --git a/source/test/fuzzer/collator_rulebased_fuzzer.cpp b/source/test/fuzzer/collator_rulebased_fuzzer.cpp new file mode 100644 index 0000000..9878500 --- /dev/null +++ b/source/test/fuzzer/collator_rulebased_fuzzer.cpp @@ -0,0 +1,26 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html + +#include + +#include "fuzzer_utils.h" +#include "unicode/coll.h" +#include "unicode/localpointer.h" +#include "unicode/locid.h" +#include "unicode/tblcoll.h" + +IcuEnvironment* env = new IcuEnvironment(); + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + UErrorCode status = U_ZERO_ERROR; + + size_t unistr_size = size/2; + std::unique_ptr fuzzbuff(new char16_t[unistr_size]); + std::memcpy(fuzzbuff.get(), data, unistr_size * 2); + icu::UnicodeString fuzzstr(false, fuzzbuff.get(), unistr_size); + + icu::LocalPointer col1( + new icu::RuleBasedCollator(fuzzstr, status)); + + return 0; +} diff --git a/source/test/fuzzer/collator_rulebased_fuzzer_seed_corpus.txt b/source/test/fuzzer/collator_rulebased_fuzzer_seed_corpus.txt new file mode 100644 index 0000000000000000000000000000000000000000..241b803795aa492c8c11ca5755603932b27db05e GIT binary patch literal 316 zcmYk1$xZ@M5JgW|_E)&F6QZGa#H1JW0166%BJ;wYoNz!;TH(|DH=+8a7Nl}3@6=09 zs{VHzbH)*_B;rK6rxY9Vl@ddNQfeqPJu|(IC8kh3sg!FfJa~oX-;;S6n{Uafq#`LM zj-i^8hfg4`It|Xbph=5Mu4vQYnl3$VxTVh>1BQ$kGg0qUz4vO0h)HCNj0YZh;+Yrb qyz<67A1wG}$%-%8XHCuzziiaBRntuV9I2}8V#^K1l{s$d4{Hy7 #include +#include +#include #include #include diff --git a/source/test/fuzzer/fuzzer_driver.cpp b/source/test/fuzzer/fuzzer_driver.cpp new file mode 100644 index 0000000..820ed85 --- /dev/null +++ b/source/test/fuzzer/fuzzer_driver.cpp @@ -0,0 +1,20 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html + +#include +#include + +#include "cmemory.h" + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size); + +int main(int argc, char* argv[]) +{ + (void) argc; + (void) argv; + const char *fuzzer_data = "abc123"; + + LLVMFuzzerTestOneInput((const uint8_t *) fuzzer_data, strlen(fuzzer_data)); + + return 0; +} diff --git a/source/test/fuzzer/locale_fuzzer.cc b/source/test/fuzzer/locale_fuzzer.cpp similarity index 100% rename from source/test/fuzzer/locale_fuzzer.cc rename to source/test/fuzzer/locale_fuzzer.cpp diff --git a/source/test/fuzzer/locale_util.cc b/source/test/fuzzer/locale_util.cpp similarity index 100% rename from source/test/fuzzer/locale_util.cc rename to source/test/fuzzer/locale_util.cpp diff --git a/source/test/fuzzer/number_format_fuzzer.cc b/source/test/fuzzer/number_format_fuzzer.cpp similarity index 96% rename from source/test/fuzzer/number_format_fuzzer.cc rename to source/test/fuzzer/number_format_fuzzer.cpp index febc509..4be2f97 100644 --- a/source/test/fuzzer/number_format_fuzzer.cc +++ b/source/test/fuzzer/number_format_fuzzer.cpp @@ -3,8 +3,10 @@ // Fuzzer for NumberFormat::parse. +#include #include #include +#include #include #include "fuzzer_utils.h" #include "unicode/numfmt.h" diff --git a/source/test/fuzzer/ucasemap_fuzzer.cc b/source/test/fuzzer/ucasemap_fuzzer.cpp similarity index 97% rename from source/test/fuzzer/ucasemap_fuzzer.cc rename to source/test/fuzzer/ucasemap_fuzzer.cpp index 896d0ed..ddb0386 100644 --- a/source/test/fuzzer/ucasemap_fuzzer.cc +++ b/source/test/fuzzer/ucasemap_fuzzer.cpp @@ -3,9 +3,11 @@ // Fuzzer for ucasemap. +#include +#include +#include #include #include -#include #include "fuzzer_utils.h" #include "unicode/ucasemap.h" diff --git a/source/test/fuzzer/uloc_canonicalize_fuzzer.cc b/source/test/fuzzer/uloc_canonicalize_fuzzer.cpp similarity index 100% rename from source/test/fuzzer/uloc_canonicalize_fuzzer.cc rename to source/test/fuzzer/uloc_canonicalize_fuzzer.cpp diff --git a/source/test/fuzzer/uloc_for_language_tag_fuzzer.cc b/source/test/fuzzer/uloc_for_language_tag_fuzzer.cpp similarity index 100% rename from source/test/fuzzer/uloc_for_language_tag_fuzzer.cc rename to source/test/fuzzer/uloc_for_language_tag_fuzzer.cpp diff --git a/source/test/fuzzer/uloc_get_name_fuzzer.cc b/source/test/fuzzer/uloc_get_name_fuzzer.cpp similarity index 100% rename from source/test/fuzzer/uloc_get_name_fuzzer.cc rename to source/test/fuzzer/uloc_get_name_fuzzer.cpp diff --git a/source/test/fuzzer/uloc_is_right_to_left_fuzzer.cc b/source/test/fuzzer/uloc_is_right_to_left_fuzzer.cpp similarity index 100% rename from source/test/fuzzer/uloc_is_right_to_left_fuzzer.cc rename to source/test/fuzzer/uloc_is_right_to_left_fuzzer.cpp diff --git a/source/test/fuzzer/uloc_open_keywords_fuzzer.cc b/source/test/fuzzer/uloc_open_keywords_fuzzer.cpp similarity index 100% rename from source/test/fuzzer/uloc_open_keywords_fuzzer.cc rename to source/test/fuzzer/uloc_open_keywords_fuzzer.cpp diff --git a/source/test/fuzzer/unicode_string_codepage_create_fuzzer.cc b/source/test/fuzzer/unicode_string_codepage_create_fuzzer.cpp similarity index 98% rename from source/test/fuzzer/unicode_string_codepage_create_fuzzer.cc rename to source/test/fuzzer/unicode_string_codepage_create_fuzzer.cpp index ed75f35..d58b879 100644 --- a/source/test/fuzzer/unicode_string_codepage_create_fuzzer.cc +++ b/source/test/fuzzer/unicode_string_codepage_create_fuzzer.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include diff --git a/source/test/fuzzer/uregex_open_fuzzer.cc b/source/test/fuzzer/uregex_open_fuzzer.cpp similarity index 96% rename from source/test/fuzzer/uregex_open_fuzzer.cc rename to source/test/fuzzer/uregex_open_fuzzer.cpp index e984e7e..4cf4cea 100644 --- a/source/test/fuzzer/uregex_open_fuzzer.cc +++ b/source/test/fuzzer/uregex_open_fuzzer.cpp @@ -3,6 +3,8 @@ #include #include +#include + #include "fuzzer_utils.h" #include "unicode/regex.h" @@ -12,11 +14,13 @@ IcuEnvironment* env = new IcuEnvironment(); extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { UParseError pe = { 0 }; UErrorCode status = U_ZERO_ERROR; + URegularExpression* re = uregex_open(reinterpret_cast(data), static_cast(size) / sizeof(UChar), 0, &pe, &status); + if (re) uregex_close(re); - + return 0; } diff --git a/source/test/hdrtst/Makefile.in b/source/test/hdrtst/Makefile.in index 55e8339..60a8e72 100644 --- a/source/test/hdrtst/Makefile.in +++ b/source/test/hdrtst/Makefile.in @@ -17,9 +17,8 @@ ## ## .. etc. Anything other than zero is an error. (except for the deprecation tests, where '1' is the correct value) ## -## -## If a header fails the C compile because it's a C++ header, add it to the -## file named 'cxxfiles.txt' in this directory. +## If a header fails the C compile test it is likely because the header is a +## C++ header and isn't properly guarded by the U_SHOW_CPLUSPLUS_API macro. ## ## If a header fails because it is deprecated, add it to the 'dfiles.txt' ## @@ -33,135 +32,84 @@ top_builddir = ../.. subdir = test/hdrtst include $(shell icu-config --incfile) -DIRS=$(prefix)/include/unicode -LDIRS=$(prefix)/include/layout -ECHO_T=@ECHO_T@ -ECHO_C=@ECHO_C@ -ECHO_N=@ECHO_N@ all: @echo Please read this Makefile for more information. @echo run \'$(MAKE) check\' to run the test "(use -k if you don't want to stop on errs)" -E_NUM=8 -E_D="[1/$(E_NUM)] Deprecated: " -E_C="[2/$(E_NUM)] C : " -E_CXX="[3/$(E_NUM)] C++: " -E_CXX_L="[4/$(E_NUM)] C++ layout: " -E_DRF="[5/$(E_NUM)] Hide Draft: " -E_DEP="[6/$(E_NUM)] Hide Deprecated: " -E_INT="[7/$(E_NUM)] Hide Internal: " -E_OBS="[8/$(E_NUM)] Hide Obsolete: " - -check: dtest ctest cpptest doclean drafttest deprtest internaltest obsoletetest -ifeq ($(MAKECMDGOALS),check) - $(MAKE) clean -else - @echo "(not cleaning automatically)" -endif - -# break dependency -doclean: - make clean - -cpptest: - @FAIL=0;for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \ - incfile=`basename $$file .h` ; \ - echo "$@ unicode/$$incfile.h" ; \ - echo '#include "'unicode/$$incfile'.h"' > ht_$$incfile.cpp ; \ - echo 'void junk(){}' >> ht_$$incfile.cpp ; \ - $(COMPILE.cc) -c $(cppflags) ht_$$incfile.cpp || FAIL=1 ; \ - done ;\ - exit $$FAIL - -# layout is removed +check: dtest ctest cpptest drafttest deprtest internaltest obsoletetest -dtest: - @FAIL=0;NONE="(No deprecated headers)";for stub in `cat $(srcdir)/dfiles.txt | grep -v '^#'` ; do \ - file=unicode/$$stub ; \ - NONE="" ; \ - incfile=`basename $$file .h` ; \ - echo "$@ unicode/$$incfile.h" ; \ - echo '#include "'unicode/$$incfile'.h"' > ht_$$incfile.cpp ; \ - echo 'void junk(){}' >> ht_$$incfile.cpp ; \ - echo > ht_dep.junk ; \ - $(COMPILE.cc) -c $(cppflags) ht_$$incfile.cpp 2>&1 | sed -e 's/^.*#error[^"]*"//' | fgrep -v ht_ | tee ht_dep.junk | fgrep -v "$$incfile.h header is obsolete" ; \ - RES=$$? ; \ - echo $$RES ; \ - fgrep -q "$$incfile.h header is obsolete" ht_dep.junk || echo "** FAIL Header unicode/$$incfile.h is not obsoleted properly" ; \ - fgrep -q "$$incfile.h header is obsolete" ht_dep.junk || FAIL=1 ; \ - rm -f unicode/$$stub ; \ +headertest: + @FAIL=0;stub=ht_stub_$(NAME.headers).$(SUFFIX.headers); for file in "$(prefix)/include/unicode"/*.h ; do \ + incfile=`basename $$file` ; \ + echo "$(NAME.headers) unicode/$$incfile" ; \ + echo "#include " > $$stub ; \ + echo 'void junk(){}' >> $$stub ; \ + $(COMPILE.headers) $(cppflags) $(FLAGS.headers) $$stub || FAIL=1 ; \ + rm -f $$stub; \ done ; \ - echo "$@: $$NONE - exit status $$FAIL" ; \ exit $$FAIL -# < ht_dep.junk && ; \ - - ctest: - @echo Building test harness for header files in ../../common and ../../i18n - @FAIL=0;for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/cxxfiles.txt | tee cfiles.txt`; do \ - incfile=`basename $$file .h` ; \ - echo "$@ unicode/$$incfile.h" ; \ - echo '#include "'unicode/$$incfile'.h"' > ht_$$incfile.c ; \ - echo 'void junk(void);' >> ht_$$incfile.c ; \ - echo 'void junk(){}' >> ht_$$incfile.c ; \ - $(COMPILE.c) -c $(cppflags) ht_$$incfile.c || FAIL=1 ; \ - done ;\ - exit $$FAIL + $(MAKE) headertest \ + NAME.headers=$@ \ + COMPILE.headers="$(COMPILE.c)" \ + SUFFIX.headers=c \ + FLAGS.headers= + +cpptest: + $(MAKE) headertest \ + NAME.headers=$@ \ + COMPILE.headers="$(COMPILE.cc)" \ + SUFFIX.headers=cpp \ + FLAGS.headers= drafttest: - @FAIL=0;for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \ - incfile=`basename $$file .h` ; \ - echo "$@ unicode/$$incfile.h" ; \ - echo '#define U_HIDE_DRAFT_API' > hd_$$incfile.cpp ; \ - echo '#include "'unicode/$$incfile'.h"' >> hd_$$incfile.cpp ; \ - echo 'void junk(void);' >> hd_$$incfile.cpp ; \ - echo 'void junk(){}' >> hd_$$incfile.cpp ; \ - $(COMPILE.cc) -c $(cppflags) hd_$$incfile.cpp ||FAIL=1 ; \ - done ;\ - exit $$FAIL + $(MAKE) headertest \ + NAME.headers=$@ \ + COMPILE.headers="$(COMPILE.cc)" \ + SUFFIX.headers=cpp \ + FLAGS.headers="-DU_HIDE_DRAFT_API" deprtest: - @FAIL=0; for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \ - incfile=`basename $$file .h` ; \ - echo "$@ unicode/$$incfile.h" ; \ - echo '#define U_HIDE_DEPRECATED_API' > hdp_$$incfile.cpp ; \ - echo '#include "'unicode/$$incfile'.h"' >> hdp_$$incfile.cpp ; \ - echo 'void junk(void);' >> hdp_$$incfile.cpp ; \ - echo 'void junk(){}' >> hdp_$$incfile.cpp ; \ - $(COMPILE.cc) -c $(cppflags) hdp_$$incfile.cpp || FAIL=1; \ - done ; \ - exit $$FAIL + $(MAKE) headertest \ + NAME.headers=$@ \ + COMPILE.headers="$(COMPILE.cc)" \ + SUFFIX.headers=cpp \ + FLAGS.headers="-DU_HIDE_DEPRECATED_API" internaltest: - @FAIL=0;\ - for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \ - incfile=`basename $$file .h` ; \ - echo "$@ unicode/$$incfile.h" ; \ - echo '#define U_HIDE_INTERNAL_API' > hin_$$incfile.cpp ; \ - echo '#include "'unicode/$$incfile'.h"' >> hin_$$incfile.cpp ; \ - echo 'void junk(void);' >> hin_$$incfile.cpp ; \ - echo 'void junk(){}' >> hin_$$incfile.cpp ; \ - $(COMPILE.cc) -c $(cppflags) hin_$$incfile.cpp || FAIL=1 ; \ - done ; \ - exit $$FAIL + $(MAKE) headertest \ + NAME.headers=$@ \ + COMPILE.headers="$(COMPILE.cc)" \ + SUFFIX.headers=cpp \ + FLAGS.headers="-DU_HIDE_INTERNAL_API" obsoletetest: - @FAIL=0;for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \ - incfile=`basename $$file .h` ; \ - echo "$@ unicode/$$incfile.h" ; \ - echo '#define U_HIDE_OBSOLETE_API' > hob_$$incfile.cpp ; \ - echo '#include "'unicode/$$incfile'.h"' >> hob_$$incfile.cpp ; \ - echo 'void junk(void);' >> hob_$$incfile.cpp ; \ - echo 'void junk(){}' >> hob_$$incfile.cpp ; \ - $(COMPILE.cc) -c $(cppflags) hob_$$incfile.cpp || FAIL=1 ; \ + $(MAKE) headertest \ + NAME.headers=$@ \ + COMPILE.headers="$(COMPILE.cc)" \ + SUFFIX.headers=cpp \ + FLAGS.headers="-DU_HIDE_OBSOLETE_API" + +dtest: + @FAIL=0;NONE="(No deprecated headers)";stub=ht_stub_dtest.cpp;for incfile in `cat $(srcdir)/dfiles.txt | grep -v '^#' | sort` ; do \ + NONE= ; \ + echo "$@ unicode/$$incfile" ; \ + echo "#include " > $$stub ; \ + echo 'void junk(){}' >> $$stub ; \ + $(COMPILE.cc) $(cppflags) $$stub 2>&1 | tee $$stub.out || FAIL=1 ; \ + if ! cat $$stub.out | sed -e 's/^.*#error[^"]*"//' | grep -v ht_ | grep -v "$$incfile header is obsolete"; then \ + echo "** FAIL Header unicode/$$incfile is not obsoleted properly" ; \ + FAIL=1 ; \ + fi ; \ + rm -f $$stub*; \ done ; \ + echo "$@: $$NONE - exit status $$FAIL" ; \ exit $$FAIL clean: - -@echo cleaning.. - -@rm -f *.h *.c *.cpp *.o *.junk cfiles.txt + -@rm -f ht_* distclean: clean -@rm -f Makefile @@ -170,5 +118,4 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -.PHONY: doclean check all cpptest dtest ctest clean distclean - +.PHONY: doclean check all headertest cpptest dtest ctest clean distclean diff --git a/source/test/hdrtst/cxxfiles.txt b/source/test/hdrtst/cxxfiles.txt deleted file mode 100644 index 02151de..0000000 --- a/source/test/hdrtst/cxxfiles.txt +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright (C) 2016 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# Copyright (c) 2001-2016 International Business Machines -# Corporation and others. All Rights Reserved. -# Begin temporary addition. -# These are very bad "C" APIs that do not work with a C compiler and -# violate many ICU coding guidelines. These were added with ticket #5996. -# Temporarily marked as C++ for the hdrtst to pass. -# These are gone in ICU 50.1, remove -#vzone.h -#zrule.h -#ztrans.h -# End temporary addition. -# common & i18n -alphaindex.h -appendable.h -bidi.h -basictz.h -bmsearch.h -brkiter.h -bytestream.h -bytestrie.h -bytestriebuilder.h -calendar.h -caniter.h -casemap.h -char16ptr.h -chariter.h -choicfmt.h -coleitr.h -coll.h -colldata.h -compactdecimalformat.h -convert.h -cpdtrans.h -curramt.h -currunit.h -currpinf.h -datefmt.h -dbbi.h -dcfmtsym.h -decimfmt.h -dtintrv.h -dtitvinf.h -dtitvfmt.h -dtfmtsym.h -dtptngen.h -dtrule.h -edits.h -enumset.h -errorcode.h -fieldpos.h -filteredbrk.h -fmtable.h -format.h -formattedvalue.h -fpositer.h -gender.h -gregocal.h -idna.h -listformatter.h -localebuilder.h -locdspnm.h -locid.h -measfmt.h -measunit.h -measure.h -messagepattern.h -msgfmt.h -normalizer2.h -normlzr.h -nounit.h -numberformatter.h -numberrangeformatter.h -numfmt.h -numsys.h -parsepos.h -plurfmt.h -plurrule.h -rbbi.h -rbnf.h -rbtz.h -regex.h -region.h -reldatefmt.h -rep.h -resbund.h -schriter.h -scientificformathelper.h -scientificnumberformatter.h -search.h -selfmt.h -simpleformatter.h -simpletz.h -smpdtfmt.h -sortkey.h -std_string.h -strenum.h -stringtriebuilder.h -stringpiece.h -stsearch.h -symtable.h -tblcoll.h -timezone.h -tmunit.h -tmutamt.h -tmutfmt.h -translit.h -tzfmt.h -tznames.h -tzrule.h -tztrans.h -ucharstrie.h -ucharstriebuilder.h -uchriter.h -unifilt.h -unifunct.h -unimatch.h -unirepl.h -uniset.h -unistr.h -uobject.h -usetiter.h -vtzone.h -# io library -ustream.h -# layout & layoutex -LayoutEngine.h -LEFontInstance.h -LEGlyphFilter.h -LEGlyphStorage.h -LELanguages.h -LEScripts.h -LESwaps.h -# LETypes.h -- C header -# loengine.h -- C header -ParagraphLayout.h -RunArrays.h diff --git a/source/test/hdrtst/pfiles.txt b/source/test/hdrtst/pfiles.txt deleted file mode 100644 index 7b20c49..0000000 --- a/source/test/hdrtst/pfiles.txt +++ /dev/null @@ -1,5 +0,0 @@ -# Copyright (C) 2016 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# Copyright (c) 2001-2016 International Business Machines -# Corporation and others. All Rights Reserved. -# ICU 49 and later: no more platform-specific headers diff --git a/source/test/hdrtst/testtagsguards.sh b/source/test/hdrtst/testtagsguards.sh new file mode 100755 index 0000000..928707c --- /dev/null +++ b/source/test/hdrtst/testtagsguards.sh @@ -0,0 +1,94 @@ +# Copyright © 2019 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +# Run this script from $ICU_ROOT/icu4c. +# ~/icu/mine/src/icu4c$ source/test/hdrtest/testtagsguards.sh + +# set -x # echo on + +DEF=-DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1 +INCL="-Isource/common -Isource/i18n -Isource/io" +TMPDIR=`mktemp -d` +DIFF="diff -u --minimal" + +echo "*** testtagsguards.sh TMPDIR=$TMPDIR" + +for file in source/common/unicode/*.h source/i18n/unicode/*.h source/io/unicode/*.h ; do + base=`basename $file` + echo $file + echo '#include "unicode/'$base'"' > $TMPDIR/ht-$base.cpp + # Preprocess only. + clang++ $INCL -C -E $DEF -o $TMPDIR/ht-$base-normal.i $TMPDIR/ht-$base.cpp + + # When hiding @draft, none should be in the output. + TAG=draft + GUARD=DRAFT + echo " @$TAG" + clang++ $INCL -C -E -DU_HIDE_${GUARD}_API=1 -DU_FORCE_HIDE_${GUARD}_API=1 $DEF -o $TMPDIR/ht-$base-$TAG.i $TMPDIR/ht-$base.cpp + if grep "@$TAG" -C 5 $TMPDIR/ht-$base-$TAG.i; then + echo "*** error: @$TAG not hidden in $TMPDIR/ht-$base-$TAG.i" + exit 1 + fi + # Only @draft should be hidden. + # Except: Ok to hide nested @internal/@system/@obsolete. + $DIFF $TMPDIR/ht-$base-normal.i $TMPDIR/ht-$base-$TAG.i > $TMPDIR/ht-$base-normal-$TAG.txt + if egrep '^-.*@(stable|deprecated)' -C 5 $TMPDIR/ht-$base-normal-$TAG.txt; then + echo "*** error: Non-@$TAG hidden in $TMPDIR/ht-$base-$TAG.i see $TMPDIR/ht-$base-normal-$TAG.txt" + cat $TMPDIR/ht-$base-normal-$TAG.txt + exit 1 + fi + + # @deprecated + TAG=deprecated + GUARD=DEPRECATED + echo " @$TAG" + clang++ $INCL -C -E -DU_HIDE_${GUARD}_API=1 -DU_FORCE_HIDE_${GUARD}_API=1 $DEF -o $TMPDIR/ht-$base-$TAG.i $TMPDIR/ht-$base.cpp + if grep "@$TAG" -C 5 $TMPDIR/ht-$base-$TAG.i; then + echo "*** error: @$TAG not hidden in $TMPDIR/ht-$base-$TAG.i" + exit 1 + fi + # In the egrep: All tags except $TAG and @internal & similar. + $DIFF $TMPDIR/ht-$base-normal.i $TMPDIR/ht-$base-$TAG.i > $TMPDIR/ht-$base-normal-$TAG.txt + if egrep '^-.*@(stable|draft)' -C 5 $TMPDIR/ht-$base-normal-$TAG.txt; then + echo "*** error: Non-@$TAG hidden in $TMPDIR/ht-$base-$TAG.i see $TMPDIR/ht-$base-normal-$TAG.txt" + cat $TMPDIR/ht-$base-normal-$TAG.txt + exit 1 + fi + + # TODO: @internal + # Hiding some @internal definitions, in particular in platform.h and similar, + # tends to break even preprocessing of other headers. + + # @system + TAG=system + GUARD=SYSTEM + echo " @$TAG" + clang++ $INCL -C -E -DU_HIDE_${GUARD}_API=1 -DU_FORCE_HIDE_${GUARD}_API=1 $DEF -o $TMPDIR/ht-$base-$TAG.i $TMPDIR/ht-$base.cpp + if grep "@$TAG" -C 5 $TMPDIR/ht-$base-$TAG.i; then + echo "*** error: @$TAG not hidden in $TMPDIR/ht-$base-$TAG.i" + exit 1 + fi + # @system is orthogonal to @stable / @deprecated etc., + # so we don't check that none of those are hidden. + + # @obsolete + TAG=obsolete + GUARD=OBSOLETE + echo " @$TAG" + clang++ $INCL -C -E -DU_HIDE_${GUARD}_API=1 -DU_FORCE_HIDE_${GUARD}_API=1 $DEF -o $TMPDIR/ht-$base-$TAG.i $TMPDIR/ht-$base.cpp + if grep "@$TAG" -C 5 $TMPDIR/ht-$base-$TAG.i; then + echo "*** error: @$TAG not hidden in $TMPDIR/ht-$base-$TAG.i" + exit 1 + fi + # In the egrep: All tags except $TAG and @internal & similar. + $DIFF $TMPDIR/ht-$base-normal.i $TMPDIR/ht-$base-$TAG.i > $TMPDIR/ht-$base-normal-$TAG.txt + if egrep '^-.*@(stable|draft|deprecated)' -C 5 $TMPDIR/ht-$base-normal-$TAG.txt; then + echo "*** error: Non-@$TAG hidden in $TMPDIR/ht-$base-$TAG.i see $TMPDIR/ht-$base-normal-$TAG.txt" + cat $TMPDIR/ht-$base-normal-$TAG.txt + exit 1 + fi +done + +echo "pass" +rm -rf $TMPDIR + diff --git a/source/test/intltest/Makefile.in b/source/test/intltest/Makefile.in index b4cf918..bcab2c9 100644 --- a/source/test/intltest/Makefile.in +++ b/source/test/intltest/Makefile.in @@ -44,7 +44,8 @@ caltztst.o canittst.o citrtest.o colldata.o convtest.o currcoll.o collationtest. fldset.o dadrfmt.o dadrcal.o dcfmapts.o decoll.o dtfmapts.o dtfmrgts.o dtfmtrtts.o dtfmttst.o \ dtptngts.o encoll.o escoll.o ficoll.o frcoll.o g7coll.o intltest.o \ itercoll.o itformat.o itmajor.o itutil.o jacoll.o lcukocol.o \ -loctest.o localebuildertest.o miscdtfm.o mnkytst.o msfmrgts.o nmfmapts.o nmfmtrt.o \ +loctest.o localebuildertest.o localematchertest.o \ +miscdtfm.o mnkytst.o msfmrgts.o nmfmapts.o nmfmtrt.o \ numfmtst.o numrgts.o plurults.o plurfmts.o pptest.o regcoll.o restest.o restsnew.o \ sdtfmtts.o svccoll.o tchcfmt.o selfmts.o \ tfsmalls.o tmsgfmt.o trcoll.o tscoll.o tsdate.o tsdcfmsy.o tsdtfmsy.o \ @@ -64,10 +65,10 @@ scientificnumberformattertest.o datadrivennumberformattestsuite.o \ numberformattesttuple.o pluralmaptest.o \ numbertest_affixutils.o numbertest_api.o numbertest_decimalquantity.o \ numbertest_modifiers.o numbertest_patternmodifier.o numbertest_patternstring.o \ -numbertest_stringbuilder.o numbertest_stringsegment.o \ +string_segment_test.o \ numbertest_parse.o numbertest_doubleconversion.o numbertest_skeletons.o \ static_unisets_test.o numfmtdatadriventest.o numbertest_range.o erarulestest.o \ -formattedvaluetest.o +formattedvaluetest.o formatted_string_builder_test.o numbertest_permutation.o DEPS = $(OBJECTS:.o=.d) diff --git a/source/test/intltest/alphaindextst.cpp b/source/test/intltest/alphaindextst.cpp index 8a4edb2..f1b9b13 100644 --- a/source/test/intltest/alphaindextst.cpp +++ b/source/test/intltest/alphaindextst.cpp @@ -71,10 +71,19 @@ void AlphabeticIndexTest::runIndexedTest( int32_t index, UBool exec, const char* TESTCASE_AUTO_END; } -#define TEST_CHECK_STATUS {if (U_FAILURE(status)) {dataerrln("%s:%d: Test failure. status=%s", \ - __FILE__, __LINE__, u_errorName(status)); return;}} - -#define TEST_ASSERT(expr) {if ((expr)==FALSE) {errln("%s:%d: Test failure \n", __FILE__, __LINE__);};} +#define TEST_CHECK_STATUS UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(status)) { \ + dataerrln("%s:%d: Test failure. status=%s", \ + __FILE__, __LINE__, u_errorName(status)); \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END + +#define TEST_ASSERT(expr) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expr)==FALSE) { \ + errln("%s:%d: Test failure \n", __FILE__, __LINE__); \ + } \ +} UPRV_BLOCK_MACRO_END // // APITest. Invoke every function at least once, and check that it does something. @@ -87,34 +96,35 @@ void AlphabeticIndexTest::APITest() { UErrorCode status = U_ZERO_ERROR; int32_t lc = 0; int32_t i = 0; - AlphabeticIndex *index = new AlphabeticIndex(Locale::getEnglish(), status); + LocalPointer index(new AlphabeticIndex(Locale::getEnglish(), status)); TEST_CHECK_STATUS; lc = index->getBucketCount(status); TEST_CHECK_STATUS; TEST_ASSERT(28 == lc); // 26 letters plus two under/overflow labels. //printf("getBucketCount() == %d\n", lc); - delete index; + index.adoptInstead(nullptr); // Constructor from a Collator // status = U_ZERO_ERROR; - RuleBasedCollator *coll = dynamic_cast( - Collator::createInstance(Locale::getGerman(), status)); + LocalPointer coll(dynamic_cast( + Collator::createInstance(Locale::getGerman(), status)), status); TEST_CHECK_STATUS; - TEST_ASSERT(coll != NULL); - index = new AlphabeticIndex(coll, status); + TEST_ASSERT(coll.isValid()); + RuleBasedCollator *originalColl = coll.getAlias(); + index.adoptInstead(new AlphabeticIndex(coll.orphan(), status)); TEST_CHECK_STATUS; - TEST_ASSERT(coll == &index->getCollator()); + TEST_ASSERT(originalColl == &index->getCollator()); assertEquals("only the underflow label in an index built from a collator", 1, index->getBucketCount(status)); TEST_CHECK_STATUS; - delete index; + index.adoptInstead(nullptr); // addLabels() status = U_ZERO_ERROR; - index = new AlphabeticIndex(Locale::getEnglish(), status); + index.adoptInstead(new AlphabeticIndex(Locale::getEnglish(), status)); TEST_CHECK_STATUS; UnicodeSet additions; additions.add((UChar32)0x410).add((UChar32)0x415); // A couple of Cyrillic letters @@ -125,32 +135,31 @@ void AlphabeticIndexTest::APITest() { assertEquals("underflow, A-Z, inflow, 2 Cyrillic, overflow", 31, index->getBucketCount(status)); // std::cout << lc << std::endl; - delete index; + index.adoptInstead(nullptr); // addLabels(Locale) status = U_ZERO_ERROR; - index = new AlphabeticIndex(Locale::getEnglish(), status); + index.adoptInstead(new AlphabeticIndex(Locale::getEnglish(), status)); TEST_CHECK_STATUS; AlphabeticIndex &aip = index->addLabels(Locale::getJapanese(), status); - TEST_ASSERT(&aip == index); + TEST_ASSERT(&aip == index.getAlias()); TEST_CHECK_STATUS; lc = index->getBucketCount(status); TEST_CHECK_STATUS; TEST_ASSERT(35 < lc); // Japanese should add a bunch. Don't rely on the exact value. - delete index; + index.adoptInstead(nullptr); // GetCollator(), Get under/in/over flow labels status = U_ZERO_ERROR; - index = new AlphabeticIndex(Locale::getGerman(), status); + index.adoptInstead(new AlphabeticIndex(Locale::getGerman(), status)); TEST_CHECK_STATUS; - Collator *germanCol = Collator::createInstance(Locale::getGerman(), status); + LocalPointer germanCol(Collator::createInstance(Locale::getGerman(), status)); TEST_CHECK_STATUS; const RuleBasedCollator &indexCol = index->getCollator(); TEST_ASSERT(*germanCol == indexCol); - delete germanCol; UnicodeString ELLIPSIS; ELLIPSIS.append((UChar32)0x2026); UnicodeString s = index->getUnderflowLabel(); @@ -171,7 +180,7 @@ void AlphabeticIndexTest::APITest() { - delete index; + index.adoptInstead(nullptr); @@ -185,7 +194,7 @@ void AlphabeticIndexTest::APITest() { // addRecord(), verify that it comes back out. // status = U_ZERO_ERROR; - index = new AlphabeticIndex(Locale::getEnglish(), status); + index.adoptInstead(new AlphabeticIndex(Locale::getEnglish(), status)); TEST_CHECK_STATUS; index->addRecord(UnicodeString("Adam"), this, status); UBool b; @@ -208,12 +217,12 @@ void AlphabeticIndexTest::APITest() { const void *itemContext = index->getRecordData(); TEST_ASSERT(itemContext == this); - delete index; + index.adoptInstead(nullptr); // clearRecords, addRecord(), Iteration status = U_ZERO_ERROR; - index = new AlphabeticIndex(Locale::getEnglish(), status); + index.adoptInstead(new AlphabeticIndex(Locale::getEnglish(), status)); TEST_CHECK_STATUS; while (index->nextBucket(status)) { TEST_CHECK_STATUS; @@ -256,12 +265,12 @@ void AlphabeticIndexTest::APITest() { } } TEST_CHECK_STATUS; - delete index; + index.adoptInstead(nullptr); // getBucketLabel(), getBucketType() status = U_ZERO_ERROR; - index = new AlphabeticIndex(Locale::getEnglish(), status); + index.adoptInstead(new AlphabeticIndex(Locale::getEnglish(), status)); TEST_CHECK_STATUS; index->setUnderflowLabel(adam, status).setOverflowLabel(charlie, status); TEST_CHECK_STATUS; @@ -285,12 +294,12 @@ void AlphabeticIndexTest::APITest() { } } TEST_ASSERT(i==28); - delete index; + index.adoptInstead(nullptr); // getBucketIndex() status = U_ZERO_ERROR; - index = new AlphabeticIndex(Locale::getEnglish(), status); + index.adoptInstead(new AlphabeticIndex(Locale::getEnglish(), status)); TEST_CHECK_STATUS; int32_t n = index->getBucketIndex(adam, status); TEST_CHECK_STATUS; @@ -310,8 +319,8 @@ void AlphabeticIndexTest::APITest() { } TEST_ASSERT(i == 28); - delete index; - index = new AlphabeticIndex(Locale::createFromName("ru"), status); + index.adoptInstead(nullptr); + index.adoptInstead(new AlphabeticIndex(Locale::createFromName("ru"), status)); TEST_CHECK_STATUS; assertEquals("Russian index.getBucketCount()", 32, index->getBucketCount(status)); // Latin-script names should go into the underflow label (0) @@ -333,8 +342,6 @@ void AlphabeticIndexTest::APITest() { n = index->getBucketIndex(zed, status); assertEquals("Russian index.getBucketIndex(zed)", expectedLatinIndex, n); - delete index; - } @@ -497,7 +504,7 @@ static const char *localeAndIndexCharactersLists[][2] = { /* Greek*/ {"el", "\\u0391:\\u0392:\\u0393:\\u0394:\\u0395:\\u0396:\\u0397:\\u0398:\\u0399:\\u039A:\\u039B:\\u039C:\\u039D:\\u039E:\\u039F:\\u03A0:\\u03A1:\\u03A3:\\u03A4:\\u03A5:\\u03A6:\\u03A7:\\u03A8:\\u03A9"}, /* English*/ {"en", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z"}, /* Spanish*/ {"es", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:\\u00D1:O:P:Q:R:S:T:U:V:W:X:Y:Z"}, - /* Estonian*/ {"et", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:\\u0160:Z:\\u017D:T:U:V:\\u00D5:\\u00C4:\\u00D6:\\u00DC:X:Y"}, + /* Estonian*/ {"et", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:\\u0160:Z:\\u017D:T:U:V:W:\\u00D5:\\u00C4:\\u00D6:\\u00DC:X:Y"}, /* Basque*/ {"eu", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z"}, /* Finnish*/ {"fi", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:\\u00C5:\\u00C4:\\u00D6"}, /* Filipino*/ {"fil", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:\\u00D1:Ng:O:P:Q:R:S:T:U:V:W:X:Y:Z"}, diff --git a/source/test/intltest/apicoll.cpp b/source/test/intltest/apicoll.cpp index b08211a..88eefa9 100644 --- a/source/test/intltest/apicoll.cpp +++ b/source/test/intltest/apicoll.cpp @@ -2000,7 +2000,7 @@ void CollationAPITest::TestUClassID() class TestCollator : public Collator { public: - virtual Collator* clone(void) const; + virtual TestCollator* clone() const; using Collator::compare; @@ -2048,9 +2048,9 @@ public: virtual UBool operator==(const Collator& other) const; // Collator::operator!= calls !Collator::operator== which works for all subclasses. virtual void setLocales(const Locale& requestedLocale, const Locale& validLocale, const Locale& actualLocale); - TestCollator() : Collator() {}; + TestCollator() : Collator() {} TestCollator(UCollationStrength collationStrength, - UNormalizationMode decompositionMode) : Collator(collationStrength, decompositionMode) {}; + UNormalizationMode decompositionMode) : Collator(collationStrength, decompositionMode) {} }; inline UBool TestCollator::operator==(const Collator& other) const { @@ -2065,7 +2065,7 @@ inline UBool TestCollator::operator==(const Collator& other) const { // (compare this vs. o's subclass fields) } -Collator* TestCollator::clone() const +TestCollator* TestCollator::clone() const { return new TestCollator(); } @@ -2345,7 +2345,7 @@ void CollationAPITest::TestClone() { dump("c1", c1, status); logln("\ninit c2"); - RuleBasedCollator* c2 = (RuleBasedCollator*)c1->clone(); + RuleBasedCollator* c2 = c1->clone(); val = c2->getAttribute(UCOL_CASE_FIRST, status); if(val == UCOL_LOWER_FIRST){ c2->setAttribute(UCOL_CASE_FIRST, UCOL_UPPER_FIRST, status); diff --git a/source/test/intltest/astrotst.cpp b/source/test/intltest/astrotst.cpp index 87ae7d2..059e645 100644 --- a/source/test/intltest/astrotst.cpp +++ b/source/test/intltest/astrotst.cpp @@ -44,7 +44,12 @@ void AstroTest::runIndexedTest( int32_t index, UBool exec, const char* &name, ch #undef CASE -#define ASSERT_OK(x) if(U_FAILURE(x)) { dataerrln("%s:%d: %s\n", __FILE__, __LINE__, u_errorName(x)); return; } +#define ASSERT_OK(x) UPRV_BLOCK_MACRO_BEGIN { \ + if(U_FAILURE(x)) { \ + dataerrln("%s:%d: %s\n", __FILE__, __LINE__, u_errorName(x)); \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END void AstroTest::initAstro(UErrorCode &status) { @@ -256,7 +261,7 @@ void AstroTest::TestSunriseTimes(void) { logln("Sunrise/Sunset times for Toronto, Canada"); // long = 79 25", lat = 43 40" - CalendarAstronomer *astro3 = new CalendarAstronomer(-(79+25/60), 43+40/60); + CalendarAstronomer astro3(-(79+25/60), 43+40/60); // As of ICU4J 2.8 the ICU4J time zones implement pass-through // to the underlying JDK. Because of variation in the @@ -266,46 +271,47 @@ void AstroTest::TestSunriseTimes(void) { // [aliu 10/15/03] // TimeZone tz = TimeZone.getTimeZone("America/Montreal"); - TimeZone *tz = new SimpleTimeZone(-18000000 + 3600000, "Montreal(FIXED)"); - - GregorianCalendar *cal = new GregorianCalendar(tz->clone(), Locale::getUS(), status); - GregorianCalendar *cal2 = new GregorianCalendar(tz->clone(), Locale::getUS(), status); - cal->clear(); - cal->set(UCAL_YEAR, 2001); - cal->set(UCAL_MONTH, UCAL_APRIL); - cal->set(UCAL_DAY_OF_MONTH, 1); - cal->set(UCAL_HOUR_OF_DAY, 12); // must be near local noon for getSunRiseSet to work - - DateFormat *df_t = DateFormat::createTimeInstance(DateFormat::MEDIUM,Locale::getUS()); - DateFormat *df_d = DateFormat::createDateInstance(DateFormat::MEDIUM,Locale::getUS()); - DateFormat *df_dt = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::MEDIUM, Locale::getUS()); - if(!df_t || !df_d || !df_dt) { - dataerrln("couldn't create dateformats."); - return; + SimpleTimeZone tz(-18000000 + 3600000, "Montreal(FIXED)"); + + GregorianCalendar cal(tz.clone(), Locale::getUS(), status); + GregorianCalendar cal2(tz.clone(), Locale::getUS(), status); + cal.clear(); + cal.set(UCAL_YEAR, 2001); + cal.set(UCAL_MONTH, UCAL_APRIL); + cal.set(UCAL_DAY_OF_MONTH, 1); + cal.set(UCAL_HOUR_OF_DAY, 12); // must be near local noon for getSunRiseSet to work + + LocalPointer df_t(DateFormat::createTimeInstance(DateFormat::MEDIUM,Locale::getUS())); + LocalPointer df_d(DateFormat::createDateInstance(DateFormat::MEDIUM,Locale::getUS())); + LocalPointer df_dt(DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::MEDIUM, Locale::getUS())); + if(!df_t.isValid() || !df_d.isValid() || !df_dt.isValid()) { + dataerrln("couldn't create dateformats."); + closeAstro(status); + return; } - df_t->adoptTimeZone(tz->clone()); - df_d->adoptTimeZone(tz->clone()); - df_dt->adoptTimeZone(tz->clone()); + df_t->adoptTimeZone(tz.clone()); + df_d->adoptTimeZone(tz.clone()); + df_dt->adoptTimeZone(tz.clone()); for (int32_t i=0; i < 30; i++) { logln("setDate\n"); - astro3->setDate(cal->getTime(status)); + astro3.setDate(cal.getTime(status)); logln("getRiseSet(TRUE)\n"); - UDate sunrise = astro3->getSunRiseSet(TRUE); + UDate sunrise = astro3.getSunRiseSet(TRUE); logln("getRiseSet(FALSE)\n"); - UDate sunset = astro3->getSunRiseSet(FALSE); + UDate sunset = astro3.getSunRiseSet(FALSE); logln("end of getRiseSet\n"); - cal2->setTime(cal->getTime(status), status); - cal2->set(UCAL_SECOND, 0); - cal2->set(UCAL_MILLISECOND, 0); + cal2.setTime(cal.getTime(status), status); + cal2.set(UCAL_SECOND, 0); + cal2.set(UCAL_MILLISECOND, 0); - cal2->set(UCAL_HOUR_OF_DAY, USNO[4*i+0]); - cal2->set(UCAL_MINUTE, USNO[4*i+1]); - UDate exprise = cal2->getTime(status); - cal2->set(UCAL_HOUR_OF_DAY, USNO[4*i+2]); - cal2->set(UCAL_MINUTE, USNO[4*i+3]); - UDate expset = cal2->getTime(status); + cal2.set(UCAL_HOUR_OF_DAY, USNO[4*i+0]); + cal2.set(UCAL_MINUTE, USNO[4*i+1]); + UDate exprise = cal2.getTime(status); + cal2.set(UCAL_HOUR_OF_DAY, USNO[4*i+2]); + cal2.set(UCAL_MINUTE, USNO[4*i+3]); + UDate expset = cal2.getTime(status); // Compute delta of what we got to the USNO data, in seconds int32_t deltarise = (int32_t)uprv_fabs((sunrise - exprise) / 1000); int32_t deltaset = (int32_t)uprv_fabs((sunset - expset) / 1000); @@ -318,34 +324,34 @@ void AstroTest::TestSunriseTimes(void) { UnicodeString s1, s2, s3, s4, s5; if (deltarise > MAX_DEV || deltaset > MAX_DEV) { if (deltarise > MAX_DEV) { - errln("FAIL: (rise) " + df_d->format(cal->getTime(status),s1) + + errln("FAIL: (rise) " + df_d->format(cal.getTime(status),s1) + ", Sunrise: " + df_dt->format(sunrise, s2) + " (USNO " + df_t->format(exprise,s3) + " d=" + deltarise + "s)"); } else { - logln(df_d->format(cal->getTime(status),s1) + + logln(df_d->format(cal.getTime(status),s1) + ", Sunrise: " + df_dt->format(sunrise,s2) + " (USNO " + df_t->format(exprise,s3) + ")"); } s1.remove(); s2.remove(); s3.remove(); s4.remove(); s5.remove(); if (deltaset > MAX_DEV) { - errln("FAIL: (set) " + df_d->format(cal->getTime(status),s1) + + errln("FAIL: (set) " + df_d->format(cal.getTime(status),s1) + ", Sunset: " + df_dt->format(sunset,s2) + " (USNO " + df_t->format(expset,s3) + " d=" + deltaset + "s)"); } else { - logln(df_d->format(cal->getTime(status),s1) + + logln(df_d->format(cal.getTime(status),s1) + ", Sunset: " + df_dt->format(sunset,s2) + " (USNO " + df_t->format(expset,s3) + ")"); } } else { - logln(df_d->format(cal->getTime(status),s1) + + logln(df_d->format(cal.getTime(status),s1) + ", Sunrise: " + df_dt->format(sunrise,s2) + " (USNO " + df_t->format(exprise,s3) + ")" + ", Sunset: " + df_dt->format(sunset,s4) + " (USNO " + df_t->format(expset,s5) + ")"); } - cal->add(UCAL_DATE, 1, status); + cal.add(UCAL_DATE, 1, status); } // CalendarAstronomer a = new CalendarAstronomer(-(71+5/60), 42+37/60); @@ -358,13 +364,6 @@ void AstroTest::TestSunriseTimes(void) { // cal.set(cal.DATE, 27); // a.setDate(cal.getTime()); // long r = a.getSunRiseSet2(true); - delete astro3; - delete tz; - delete cal; - delete cal2; - delete df_t; - delete df_d; - delete df_dt; closeAstro(status); ASSERT_OK(status); } @@ -380,38 +379,43 @@ void AstroTest::TestBasics(void) { } // Check that our JD computation is the same as the book's (p. 88) - GregorianCalendar *cal3 = new GregorianCalendar(TimeZone::getGMT()->clone(), Locale::getUS(), status); - DateFormat *d3 = DateFormat::createDateTimeInstance(DateFormat::MEDIUM,DateFormat::MEDIUM,Locale::getUS()); + GregorianCalendar cal3(TimeZone::getGMT()->clone(), Locale::getUS(), status); + LocalPointer d3(DateFormat::createDateTimeInstance(DateFormat::MEDIUM,DateFormat::MEDIUM,Locale::getUS())); + if (d3.isNull()) { + dataerrln("Got error: %s", u_errorName(status)); + closeAstro(status); + return; + } d3->setTimeZone(*TimeZone::getGMT()); - cal3->clear(); - cal3->set(UCAL_YEAR, 1980); - cal3->set(UCAL_MONTH, UCAL_JULY); - cal3->set(UCAL_DATE, 2); - logln("cal3[a]=%.1lf, d=%d\n", cal3->getTime(status), cal3->get(UCAL_JULIAN_DAY,status)); + cal3.clear(); + cal3.set(UCAL_YEAR, 1980); + cal3.set(UCAL_MONTH, UCAL_JULY); + cal3.set(UCAL_DATE, 2); + logln("cal3[a]=%.1lf, d=%d\n", cal3.getTime(status), cal3.get(UCAL_JULIAN_DAY,status)); { UnicodeString s; - logln(UnicodeString("cal3[a] = ") + d3->format(cal3->getTime(status),s)); + logln(UnicodeString("cal3[a] = ") + d3->format(cal3.getTime(status),s)); } - cal3->clear(); - cal3->set(UCAL_YEAR, 1980); - cal3->set(UCAL_MONTH, UCAL_JULY); - cal3->set(UCAL_DATE, 27); - logln("cal3=%.1lf, d=%d\n", cal3->getTime(status), cal3->get(UCAL_JULIAN_DAY,status)); + cal3.clear(); + cal3.set(UCAL_YEAR, 1980); + cal3.set(UCAL_MONTH, UCAL_JULY); + cal3.set(UCAL_DATE, 27); + logln("cal3=%.1lf, d=%d\n", cal3.getTime(status), cal3.get(UCAL_JULIAN_DAY,status)); ASSERT_OK(status); { UnicodeString s; - logln(UnicodeString("cal3 = ") + d3->format(cal3->getTime(status),s)); + logln(UnicodeString("cal3 = ") + d3->format(cal3.getTime(status),s)); } - astro->setTime(cal3->getTime(status)); + astro->setTime(cal3.getTime(status)); double jd = astro->getJulianDay() - 2447891.5; double exp = -3444.; if (jd == exp) { UnicodeString s; - logln(d3->format(cal3->getTime(status),s) + " => " + jd); + logln(d3->format(cal3.getTime(status),s) + " => " + jd); } else { UnicodeString s; - errln("FAIL: " + d3->format(cal3->getTime(status), s) + " => " + jd + + errln("FAIL: " + d3->format(cal3.getTime(status), s) + " => " + jd + ", expected " + exp); } @@ -423,8 +427,6 @@ void AstroTest::TestBasics(void) { // astro.setDate(cal3.getTime()); // astro.foo(); - delete cal3; - delete d3; ASSERT_OK(status); closeAstro(status); ASSERT_OK(status); diff --git a/source/test/intltest/bytestrietest.cpp b/source/test/intltest/bytestrietest.cpp index 8a2ac2c..bdf0b90 100644 --- a/source/test/intltest/bytestrietest.cpp +++ b/source/test/intltest/bytestrietest.cpp @@ -64,6 +64,7 @@ public: void checkFirst(BytesTrie &trie, const StringAndValue data[], int32_t dataLength); void checkNext(BytesTrie &trie, const StringAndValue data[], int32_t dataLength); void checkNextWithState(BytesTrie &trie, const StringAndValue data[], int32_t dataLength); + void checkNextWithState64(BytesTrie &trie, const StringAndValue data[], int32_t dataLength); void checkNextString(BytesTrie &trie, const StringAndValue data[], int32_t dataLength); void checkIterator(const BytesTrie &trie, const StringAndValue data[], int32_t dataLength); void checkIterator(BytesTrie::Iterator &iter, const StringAndValue data[], int32_t dataLength); @@ -613,6 +614,7 @@ void BytesTrieTest::checkData(const StringAndValue data[], int32_t dataLength, U checkFirst(*trie, data, dataLength); checkNext(*trie, data, dataLength); checkNextWithState(*trie, data, dataLength); + checkNextWithState64(*trie, data, dataLength); checkNextString(*trie, data, dataLength); checkIterator(*trie, data, dataLength); } @@ -825,6 +827,61 @@ void BytesTrieTest::checkNextWithState(BytesTrie &trie, } } +void BytesTrieTest::checkNextWithState64(BytesTrie &trie, + const StringAndValue data[], int32_t dataLength) { + assertTrue("trie(initial state).getState64()!=0", trie.getState64() != 0); + for(int32_t i=0; i(strlen(expectedString)); + int32_t partialLength = stringLength / 3; + for(int32_t j=0; jclone() ; + GregorianCalendar *cal2 = cal1->clone() ; printdate(cal1, "cal1: ") ; printdate(cal2, "cal2 - cloned(): ") ; @@ -1455,31 +1456,26 @@ void CalendarRegressionTest::test4118384() void CalendarRegressionTest::test4125881() { UErrorCode status = U_ZERO_ERROR; - GregorianCalendar *cal = (GregorianCalendar*) Calendar::createInstance(status); + LocalPointer cal((GregorianCalendar*) Calendar::createInstance(status), status); if(U_FAILURE(status)) { - dataerrln("Error creating calendar %s", u_errorName(status)); - delete cal; - return; + dataerrln("Error creating calendar %s", u_errorName(status)); + return; } - DateFormat *fmt = new SimpleDateFormat(UnicodeString("MMMM d, yyyy G"),status); + SimpleDateFormat fmt(UnicodeString("MMMM d, yyyy G"),status); if(U_FAILURE(status)) { - dataerrln("Error creating SimpleDateFormat - %s", u_errorName(status)); - delete cal; - return; + dataerrln("Error creating SimpleDateFormat - %s", u_errorName(status)); + return; } cal->clear(); for (int32_t y=-20; y<=10; ++y) { cal->set(UCAL_ERA, y < 1 ? GregorianCalendar::BC : GregorianCalendar::AD); cal->set(UCAL_YEAR, y < 1 ? 1 - y : y); UnicodeString temp; - logln(UnicodeString("") + y + UnicodeString(" = ") + fmt->format(cal->getTime(status), temp) + " " + + logln(UnicodeString("") + y + UnicodeString(" = ") + fmt.format(cal->getTime(status), temp) + " " + cal->isLeapYear(y)); if (cal->isLeapYear(y) != ((y+40)%4 == 0)) errln("Leap years broken"); } - - delete cal; - delete fmt; } /** @@ -1489,17 +1485,15 @@ void CalendarRegressionTest::test4125881() */ void CalendarRegressionTest::test4125892() { UErrorCode status = U_ZERO_ERROR; - GregorianCalendar *cal = (GregorianCalendar*) Calendar::createInstance(status); + LocalPointer cal((GregorianCalendar*) Calendar::createInstance(status), status); if(U_FAILURE(status)) { - dataerrln("Error creating calendar %s", u_errorName(status)); - delete cal; - return; + dataerrln("Error creating calendar %s", u_errorName(status)); + return; } - DateFormat *fmt = new SimpleDateFormat(UnicodeString("MMMM d, yyyy G"),status); + SimpleDateFormat fmt(UnicodeString("MMMM d, yyyy G"),status); if(U_FAILURE(status)) { - dataerrln("Error creating SimpleDateFormat - %s", u_errorName(status)); - delete cal; - return; + dataerrln("Error creating SimpleDateFormat - %s", u_errorName(status)); + return; } cal->clear(); cal->set(UCAL_ERA, GregorianCalendar::BC); @@ -1513,8 +1507,6 @@ void CalendarRegressionTest::test4125892() { !cal->isLeapYear(-80)) // -80 == 81 BC errln("Calendar not proleptic"); - delete cal; - delete fmt; } /** @@ -1530,7 +1522,7 @@ void CalendarRegressionTest::test4141665() delete cal; return; } - GregorianCalendar *cal2 = (GregorianCalendar*)cal->clone(); + GregorianCalendar *cal2 = cal->clone(); UDate cut = cal->getGregorianChange(); UDate cut2 = cut + 100*24*60*60*1000.0; // 100 days later if (*cal != *cal2) { @@ -1545,6 +1537,41 @@ void CalendarRegressionTest::test4141665() delete cal2; } +const UDate MILLIS_IN_DAY = 86400000.0; +/** + * ICU-13745 + * GregorianCalendar::setGregorianChange() overflow + */ +void CalendarRegressionTest::Test13745() +{ + UErrorCode status = U_ZERO_ERROR; + GregorianCalendar *cal = new GregorianCalendar(status); + if(U_FAILURE(status)) { + dataerrln("Error creating calendar %s", u_errorName(status)); + delete cal; + return; + } + + // this line would overflow before fix 13745 + cal->setGregorianChange(((double)INT32_MAX+1.0) * MILLIS_IN_DAY, status); + if(U_FAILURE(status)) { + errln("%s:%d Failure setting INT32_MAX+1 change on calendar: %s\n", __FILE__, __LINE__, u_errorName(status)); + return; + } + assertEquals("getGregorianChange()", (double)INT32_MAX * MILLIS_IN_DAY, cal->getGregorianChange()); + + // test underflow + cal->setGregorianChange(((double)INT32_MIN-1.0) * MILLIS_IN_DAY, status); + if(U_FAILURE(status)) { + errln("%s:%d Failure setting INT32_MAX-1 change on calendar: %s\n", __FILE__, __LINE__, u_errorName(status)); + return; + } + assertEquals("getGregorianChange()", (double)INT32_MIN * MILLIS_IN_DAY, cal->getGregorianChange()); + + delete cal; +} + + /** * @bug 4142933 * Bug states that ArrayIndexOutOfBoundsException is thrown by GregorianCalendar::roll() @@ -1913,22 +1940,21 @@ CalendarRegressionTest::Test4167060() { UErrorCode status = U_ZERO_ERROR; UCalendarDateFields field = UCAL_YEAR; - DateFormat *format = new SimpleDateFormat(UnicodeString("EEE MMM dd HH:mm:ss zzz yyyy G"), - Locale::getUS(), status); + LocalPointer format (new SimpleDateFormat(UnicodeString("EEE MMM dd HH:mm:ss zzz yyyy G"), + Locale::getUS(), status)); if(U_FAILURE(status)) { dataerrln("Couldn't create SimpleDateFormat - %s", u_errorName(status)); return; } - GregorianCalendar *calendars [] = { - new GregorianCalendar(100, UCAL_NOVEMBER, 1, status), - new GregorianCalendar(-99 /*100BC*/, UCAL_JANUARY, 1, status), - new GregorianCalendar(1996, UCAL_FEBRUARY, 29, status), + GregorianCalendar calendars [] = { + {100, UCAL_NOVEMBER, 1, status}, + {-99 /*100BC*/, UCAL_JANUARY, 1, status}, + {1996, UCAL_FEBRUARY, 29, status} }; if(U_FAILURE(status)) { errln("Couldn't create GregorianCalendars"); return; - // could leak } UnicodeString id [] = { "Hybrid", "Gregorian", "Julian" }; @@ -1937,7 +1963,7 @@ CalendarRegressionTest::Test4167060() logln("--- " + id[k] + " ---"); for (int32_t j=0; j < 3; ++j) { - GregorianCalendar *calendar = calendars[j]; + GregorianCalendar *calendar = &calendars[j]; if (k == 1) { calendar->setGregorianChange(EARLIEST_SUPPORTED_MILLIS, status); } @@ -1947,7 +1973,7 @@ CalendarRegressionTest::Test4167060() if(U_FAILURE(status)) errln("setGregorianChange() failed"); - format->adoptCalendar((Calendar*)calendar->clone()); + format->adoptCalendar(calendar->clone()); UDate dateBefore = calendar->getTime(status); if(U_FAILURE(status)) @@ -1988,11 +2014,6 @@ CalendarRegressionTest::Test4167060() } } } - - delete format; - delete calendars[0]; - delete calendars[1]; - delete calendars[2]; } /** @@ -2283,15 +2304,18 @@ void CalendarRegressionTest::TestJ438(void) { 1999, UCAL_JUNE, 4, 1964, UCAL_SEPTEMBER, 7, }; int32_t DATA_length = UPRV_LENGTHOF(DATA); - Calendar* pcal = Calendar::createInstance(Locale::getUS(), ec); + LocalPointer pcal(Calendar::createInstance(Locale::getUS(), ec)); if(U_FAILURE(ec)) { - dataerrln("Error creating calendar %s", u_errorName(ec)); - delete pcal; - return; + dataerrln("Error creating calendar %s", u_errorName(ec)); + return; } Calendar& cal = *pcal; int32_t i; SimpleDateFormat fmt(UnicodeString("MMM dd yyyy",""), ec); + if (U_FAILURE(ec)) { + dataerrln("Error creating calendar %s", u_errorName(ec)); + return; + } fmt.setCalendar(cal); UnicodeString s, t, u; if (U_SUCCESS(ec)) { @@ -2323,7 +2347,7 @@ void CalendarRegressionTest::TestJ438(void) { break; { - Calendar *cal2 = cal.clone(); + LocalPointer cal2(cal.clone()); UErrorCode ec2 = U_ZERO_ERROR; cal2->setTime(date1, ec2); @@ -2338,7 +2362,6 @@ void CalendarRegressionTest::TestJ438(void) { (dy2 != dy)){ errln("fieldDifference(UCAL_...) and fieldDifference(Calendar::...) give different results!\n"); } - delete cal2; } @@ -2374,7 +2397,6 @@ void CalendarRegressionTest::TestJ438(void) { } else { dataerrln("Error creating SimpleDateFormat - %s", u_errorName(ec)); } - delete pcal; } void CalendarRegressionTest::TestT5555() diff --git a/source/test/intltest/calregts.h b/source/test/intltest/calregts.h index b4166a0..6fc4bdd 100644 --- a/source/test/intltest/calregts.h +++ b/source/test/intltest/calregts.h @@ -82,6 +82,8 @@ public: void TestIslamicCalOverflow(void); void TestWeekOfYear13548(void); + void Test13745(void); + void printdate(GregorianCalendar *cal, const char *string); void dowTest(UBool lenient) ; diff --git a/source/test/intltest/caltest.cpp b/source/test/intltest/caltest.cpp index e1c9fda..677c98a 100644 --- a/source/test/intltest/caltest.cpp +++ b/source/test/intltest/caltest.cpp @@ -25,23 +25,33 @@ #define mkcstr(U) u_austrcpy(calloc(8, u_strlen(U) + 1), U) -#define TEST_CHECK_STATUS { \ +#define TEST_CHECK_STATUS UPRV_BLOCK_MACRO_BEGIN { \ if (U_FAILURE(status)) { \ if (status == U_MISSING_RESOURCE_ERROR) { \ dataerrln("%s:%d: Test failure. status=%s", __FILE__, __LINE__, u_errorName(status)); \ } else { \ errln("%s:%d: Test failure. status=%s", __FILE__, __LINE__, u_errorName(status)); \ - } return;}} + } \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END -#define TEST_CHECK_STATUS_LOCALE(testlocale) { \ +#define TEST_CHECK_STATUS_LOCALE(testlocale) UPRV_BLOCK_MACRO_BEGIN { \ if (U_FAILURE(status)) { \ if (status == U_MISSING_RESOURCE_ERROR) { \ dataerrln("%s:%d: Test failure, locale %s. status=%s", __FILE__, __LINE__, testlocale, u_errorName(status)); \ } else { \ errln("%s:%d: Test failure, locale %s. status=%s", __FILE__, __LINE__, testlocale, u_errorName(status)); \ - } return;}} + } \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END -#define TEST_ASSERT(expr) {if ((expr)==FALSE) {errln("%s:%d: Test failure \n", __FILE__, __LINE__);};} +#define TEST_ASSERT(expr) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expr)==FALSE) { \ + errln("%s:%d: Test failure \n", __FILE__, __LINE__); \ + } \ +} UPRV_BLOCK_MACRO_END // ***************************************************************************** // class CalendarTest @@ -740,7 +750,7 @@ CalendarTest::TestClonesUnique908() UErrorCode status = U_ZERO_ERROR; Calendar *c = Calendar::createInstance(status); if (failure(status, "Calendar::createInstance", TRUE)) return; - Calendar *d = (Calendar*) c->clone(); + Calendar *d = c->clone(); c->set(UCAL_MILLISECOND, 123); d->set(UCAL_MILLISECOND, 456); if (c->get(UCAL_MILLISECOND, status) != 123 || @@ -1110,7 +1120,11 @@ CalendarTest::TestAddRollExtensive() status = U_ZERO_ERROR; for (i = 0; i < limit; i++) { temp->add(e, 1, status); - if (U_FAILURE(status)) { limit = i; status = U_ZERO_ERROR; } + if (U_FAILURE(status)) { + limit = i; + status = U_ZERO_ERROR; + break; // Suppress compile warning. Shouldn't be necessary, but it is. + } } for (i = 0; i < limit; i++) { temp->add(e, -1, status); @@ -1718,7 +1732,7 @@ void CalendarTest::marchByDelta(Calendar* cal, int32_t delta) { UErrorCode status = U_ZERO_ERROR; - Calendar *cur = (Calendar*) cal->clone(); + Calendar *cur = cal->clone(); int32_t initialDOW = cur->get(UCAL_DAY_OF_WEEK, status); if (U_FAILURE(status)) { errln("Calendar::get failed"); return; } int32_t DOW, newDOW = initialDOW; @@ -1743,11 +1757,12 @@ CalendarTest::marchByDelta(Calendar* cal, int32_t delta) delete cur; } -#define CHECK(status, msg) \ +#define CHECK(status, msg) UPRV_BLOCK_MACRO_BEGIN { \ if (U_FAILURE(status)) { \ errcheckln(status, msg); \ return; \ - } + } \ +} UPRV_BLOCK_MACRO_END void CalendarTest::TestWOY(void) { /* @@ -2169,7 +2184,7 @@ int32_t CalendarTest::testLocaleCount() if(gLocaleCount < 0) { int32_t i; for(i=0;testLocaleID(i) != NULL;i++) { - ; + // do nothing } gLocaleCount = i; } diff --git a/source/test/intltest/citrtest.cpp b/source/test/intltest/citrtest.cpp index 84a2b69..dfd45aa 100644 --- a/source/test/intltest/citrtest.cpp +++ b/source/test/intltest/citrtest.cpp @@ -36,7 +36,7 @@ public: } - virtual ~SCharacterIterator(){}; + virtual ~SCharacterIterator(){} void setText(const UnicodeString& newText){ @@ -57,7 +57,7 @@ public: return TRUE; } - virtual CharacterIterator* clone(void) const { + virtual SCharacterIterator* clone(void) const { return NULL; } virtual int32_t hashCode(void) const{ @@ -65,19 +65,19 @@ public: } virtual UChar nextPostInc(void){ return text.charAt(pos++);} virtual UChar32 next32PostInc(void){return text.char32At(pos++);} - virtual UBool hasNext() { return TRUE;}; - virtual UChar first(){return DONE;}; - virtual UChar32 first32(){return DONE;}; - virtual UChar last(){return DONE;}; - virtual UChar32 last32(){return DONE;}; - virtual UChar setIndex(int32_t /*pos*/){return DONE;}; - virtual UChar32 setIndex32(int32_t /*pos*/){return DONE;}; - virtual UChar current() const{return DONE;}; - virtual UChar32 current32() const{return DONE;}; - virtual UChar next(){return DONE;}; - virtual UChar32 next32(){return DONE;}; - virtual UChar previous(){return DONE;}; - virtual UChar32 previous32(){return DONE;}; + virtual UBool hasNext() { return TRUE;} + virtual UChar first(){return DONE;} + virtual UChar32 first32(){return DONE;} + virtual UChar last(){return DONE;} + virtual UChar32 last32(){return DONE;} + virtual UChar setIndex(int32_t /*pos*/){return DONE;} + virtual UChar32 setIndex32(int32_t /*pos*/){return DONE;} + virtual UChar current() const{return DONE;} + virtual UChar32 current32() const{return DONE;} + virtual UChar next(){return DONE;} + virtual UChar32 next32(){return DONE;} + virtual UChar previous(){return DONE;} + virtual UChar32 previous32(){return DONE;} virtual int32_t move(int32_t delta,CharacterIterator::EOrigin origin){ switch(origin) { case kStart: @@ -100,7 +100,7 @@ public: } return pos; - }; + } virtual int32_t move32(int32_t delta, CharacterIterator::EOrigin origin){ switch(origin) { case kStart: @@ -127,8 +127,8 @@ public: } return pos; - }; - virtual UBool hasPrevious() {return TRUE;}; + } + virtual UBool hasPrevious() {return TRUE;} SCharacterIterator& operator=(const SCharacterIterator& that){ text = that.text; @@ -198,7 +198,7 @@ void CharIterTest::TestConstructionAndEquality() { UnicodeString testText2("Don't bother using this string."); UnicodeString result1, result2, result3; - CharacterIterator* test1 = new StringCharacterIterator(testText); + StringCharacterIterator* test1 = new StringCharacterIterator(testText); CharacterIterator* test1b= new StringCharacterIterator(testText, -1); CharacterIterator* test1c= new StringCharacterIterator(testText, 100); CharacterIterator* test1d= new StringCharacterIterator(testText, -2, 100, 5); @@ -257,7 +257,7 @@ void CharIterTest::TestConstructionAndEquality() { StringCharacterIterator* testChar1=new StringCharacterIterator(testText); StringCharacterIterator* testChar2=new StringCharacterIterator(testText2); - StringCharacterIterator* testChar3=(StringCharacterIterator*)test1->clone(); + StringCharacterIterator* testChar3=test1->clone(); testChar1->getText(result1); testChar2->getText(result2); @@ -292,7 +292,7 @@ void CharIterTest::TestConstructionAndEqualityUChariter() { UCharCharacterIterator* test2 = new UCharCharacterIterator(testText, u_strlen(testText), 5); UCharCharacterIterator* test3 = new UCharCharacterIterator(testText, u_strlen(testText), 2, 20, 5); UCharCharacterIterator* test4 = new UCharCharacterIterator(testText2, u_strlen(testText2)); - UCharCharacterIterator* test5 = (UCharCharacterIterator*)test1->clone(); + UCharCharacterIterator* test5 = test1->clone(); UCharCharacterIterator* test6 = new UCharCharacterIterator(*test1); // j785: length=-1 will use u_strlen() diff --git a/source/test/intltest/compactdecimalformattest.cpp b/source/test/intltest/compactdecimalformattest.cpp index c38ae58..5f25ced 100644 --- a/source/test/intltest/compactdecimalformattest.cpp +++ b/source/test/intltest/compactdecimalformattest.cpp @@ -168,21 +168,21 @@ static ExpectedResult kArabicLong[] = { {-5300.0, "\\u061C-\\u0665\\u066B\\u0663 \\u0623\\u0644\\u0641"}}; static ExpectedResult kChineseCurrencyTestData[] = { - {1.0, "\\uFFE51"}, - {12.0, "\\uFFE512"}, - {123.0, "\\uFFE5120"}, - {1234.0, "\\uFFE51200"}, - {12345.0, "\\uFFE51.2\\u4E07"}, - {123456.0, "\\uFFE512\\u4E07"}, - {1234567.0, "\\uFFE5120\\u4E07"}, - {12345678.0, "\\uFFE51200\\u4E07"}, - {123456789.0, "\\uFFE51.2\\u4EBF"}, - {1234567890.0, "\\uFFE512\\u4EBF"}, - {12345678901.0, "\\uFFE5120\\u4EBF"}, - {123456789012.0, "\\uFFE51200\\u4EBF"}, - {1234567890123.0, "\\uFFE51.2\\u5146"}, - {12345678901234.0, "\\uFFE512\\u5146"}, - {123456789012345.0, "\\uFFE5120\\u5146"}, + {1.0, "\\u00A51"}, + {12.0, "\\u00A512"}, + {123.0, "\\u00A5120"}, + {1234.0, "\\u00A51200"}, + {12345.0, "\\u00A51.2\\u4E07"}, + {123456.0, "\\u00A512\\u4E07"}, + {1234567.0, "\\u00A5120\\u4E07"}, + {12345678.0, "\\u00A51200\\u4E07"}, + {123456789.0, "\\u00A51.2\\u4EBF"}, + {1234567890.0, "\\u00A512\\u4EBF"}, + {12345678901.0, "\\u00A5120\\u4EBF"}, + {123456789012.0, "\\u00A51200\\u4EBF"}, + {1234567890123.0, "\\u00A51.2\\u4E07\\u4EBF"}, + {12345678901234.0, "\\u00A512\\u4E07\\u4EBF"}, + {123456789012345.0, "\\u00A5120\\u4E07\\u4EBF"}, }; static ExpectedResult kGermanCurrencyTestData[] = { {1.0, u8"1\\u00A0\\u20AC"}, diff --git a/source/test/intltest/convtest.cpp b/source/test/intltest/convtest.cpp index edadb12..53d8cfd 100644 --- a/source/test/intltest/convtest.cpp +++ b/source/test/intltest/convtest.cpp @@ -651,26 +651,26 @@ ConversionTest::TestDefaultIgnorableCallback() { const char *pattern_ignorable = "[:Default_Ignorable_Code_Point:]"; const char *pattern_not_ignorable = "[:^Default_Ignorable_Code_Point:]"; - UnicodeSet *set_ignorable = new UnicodeSet(pattern_ignorable, status); + LocalPointer set_ignorable(new UnicodeSet(pattern_ignorable, status)); if (U_FAILURE(status)) { dataerrln("Unable to create Unicodeset: %s - %s\n", pattern_ignorable, u_errorName(status)); return; } - UnicodeSet *set_not_ignorable = new UnicodeSet(pattern_not_ignorable, status); + LocalPointer set_not_ignorable(new UnicodeSet(pattern_not_ignorable, status)); if (U_FAILURE(status)) { dataerrln("Unable to create Unicodeset: %s - %s\n", pattern_not_ignorable, u_errorName(status)); return; } - UConverter *cnv = cnv_open(cnv_name, status); + LocalUConverterPointer cnv(cnv_open(cnv_name, status)); if (U_FAILURE(status)) { dataerrln("Unable to open converter: %s - %s\n", cnv_name, u_errorName(status)); return; } // set callback for the converter - ucnv_setFromUCallBack(cnv, UCNV_FROM_U_CALLBACK_SUBSTITUTE, NULL, NULL, NULL, &status); + ucnv_setFromUCallBack(cnv.getAlias(), UCNV_FROM_U_CALLBACK_SUBSTITUTE, NULL, NULL, NULL, &status); UChar32 input[1]; char output[10]; @@ -684,7 +684,7 @@ ConversionTest::TestDefaultIgnorableCallback() { input[0] = set_ignorable->charAt(i); - outputLength = ucnv_fromUChars(cnv, output, 10, UnicodeString::fromUTF32(input, 1).getTerminatedBuffer(), -1, &status); + outputLength = ucnv_fromUChars(cnv.getAlias(), output, 10, UnicodeString::fromUTF32(input, 1).getTerminatedBuffer(), -1, &status); if (U_FAILURE(status) || outputLength != 0) { errln("Ignorable code point: U+%04X not skipped as expected - %s", input[0], u_errorName(status)); } @@ -702,15 +702,11 @@ ConversionTest::TestDefaultIgnorableCallback() { continue; } - outputLength = ucnv_fromUChars(cnv, output, 10, UnicodeString::fromUTF32(input, 1).getTerminatedBuffer(), -1, &status); + outputLength = ucnv_fromUChars(cnv.getAlias(), output, 10, UnicodeString::fromUTF32(input, 1).getTerminatedBuffer(), -1, &status); if (U_FAILURE(status) || outputLength <= 0) { errln("Non-ignorable code point: U+%04X skipped unexpectedly - %s", input[0], u_errorName(status)); } } - - ucnv_close(cnv); - delete set_not_ignorable; - delete set_ignorable; } void diff --git a/source/test/intltest/cpdtrtst.cpp b/source/test/intltest/cpdtrtst.cpp index b569194..fbc4457 100644 --- a/source/test/intltest/cpdtrtst.cpp +++ b/source/test/intltest/cpdtrtst.cpp @@ -159,10 +159,10 @@ void CompoundTransliteratorTest::TestCloneEqual(){ errln("Error: =operator or copy constructor failed"); } - CompoundTransliterator *clonect1a=(CompoundTransliterator*)ct1->clone(); - CompoundTransliterator *clonect1b=(CompoundTransliterator*)equalct1.clone(); - CompoundTransliterator *clonect2a=(CompoundTransliterator*)ct2->clone(); - CompoundTransliterator *clonect2b=(CompoundTransliterator*)copyct2->clone(); + CompoundTransliterator *clonect1a=ct1->clone(); + CompoundTransliterator *clonect1b=equalct1.clone(); + CompoundTransliterator *clonect2a=ct2->clone(); + CompoundTransliterator *clonect2b=copyct2->clone(); if(clonect1a->getID() != ct1->getID() || clonect1a->getCount() != ct1->getCount() || diff --git a/source/test/intltest/csdetest.cpp b/source/test/intltest/csdetest.cpp index 4edacad..4068df3 100644 --- a/source/test/intltest/csdetest.cpp +++ b/source/test/intltest/csdetest.cpp @@ -20,6 +20,7 @@ #include "xmlparser.h" +#include #include #include @@ -27,18 +28,22 @@ #include #endif -#define NEW_ARRAY(type,count) (type *) /*uprv_*/malloc((count) * sizeof(type)) -#define DELETE_ARRAY(array) /*uprv_*/free((void *) (array)) #define CH_SPACE 0x0020 #define CH_SLASH 0x002F -#define TEST_ASSERT(x) {if (!(x)) { \ - errln("Failure in file %s, line %d", __FILE__, __LINE__);}} +#define TEST_ASSERT(x) UPRV_BLOCK_MACRO_BEGIN { \ + if (!(x)) { \ + errln("Failure in file %s, line %d", __FILE__, __LINE__); \ + } \ +} UPRV_BLOCK_MACRO_END -#define TEST_ASSERT_SUCCESS(errcode) { if (U_FAILURE(errcode)) { \ - errcheckln(errcode, "Failure in file %s, line %d, status = \"%s\"", __FILE__, __LINE__, u_errorName(errcode));\ - return;}} +#define TEST_ASSERT_SUCCESS(errcode) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(errcode)) { \ + errcheckln(errcode, "Failure in file %s, line %d, status = \"%s\"", __FILE__, __LINE__, u_errorName(errcode)); \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END //--------------------------------------------------------------------------- @@ -142,23 +147,18 @@ static char *extractBytes(const UnicodeString &source, const char *codepage, int length = source.extract(0, sLength, NULL, codepage); if (length > 0) { - bytes = NEW_ARRAY(char, length + 1); + bytes = new char[length + 1]; source.extract(0, sLength, bytes, codepage); } return bytes; } -static void freeBytes(char *bytes) -{ - DELETE_ARRAY(bytes); -} - void CharsetDetectionTest::checkEncoding(const UnicodeString &testString, const UnicodeString &encoding, const UnicodeString &id) { int32_t splits = 0; int32_t testLength = testString.length(); - UnicodeString *eSplit = split(encoding, CH_SLASH, splits); + std::unique_ptr eSplit(split(encoding, CH_SLASH, splits)); UErrorCode status = U_ZERO_ERROR; int32_t cpLength = eSplit[0].length(); char codepage[64]; @@ -169,16 +169,16 @@ void CharsetDetectionTest::checkEncoding(const UnicodeString &testString, const LocalUCharsetDetectorPointer csd(ucsdet_open(&status)); int32_t byteLength = 0; - char *bytes = extractBytes(testString, codepage, byteLength); + std::unique_ptr bytes(extractBytes(testString, codepage, byteLength)); - if (bytes == NULL) { + if (! bytes) { #if !UCONFIG_NO_LEGACY_CONVERSION dataerrln("Can't open a " + encoding + " converter for " + id); #endif return; } - ucsdet_setText(csd.getAlias(), bytes, byteLength, &status); + ucsdet_setText(csd.getAlias(), bytes.get(), byteLength, &status); int32_t matchCount = 0; const UCharsetMatch **matches = ucsdet_detectAll(csd.getAlias(), &matchCount, &status); @@ -191,7 +191,7 @@ void CharsetDetectionTest::checkEncoding(const UnicodeString &testString, const if (matchCount == 0) { errln("Encoding detection failure for " + id + ": expected " + eSplit[0] + ", got no matches"); - goto bail; + return; } if (name.compare(eSplit[0]) != 0) { @@ -206,15 +206,15 @@ void CharsetDetectionTest::checkEncoding(const UnicodeString &testString, const printf("%s (%s) %d\n", name, lang, confidence); } #endif - goto bail; + return; } if (splits > 1 && lang.compare(eSplit[1]) != 0) { errln("Language detection failure for " + id + ", " + eSplit[0] + ": expected " + eSplit[1] + ", got " + lang); - goto bail; + return; } - decoded = NEW_ARRAY(UChar, testLength); + decoded = new UChar[testLength]; dLength = ucsdet_getUChars(matches[0], decoded, testLength, &status); if (testString.compare(decoded, dLength) != 0) { @@ -231,11 +231,7 @@ void CharsetDetectionTest::checkEncoding(const UnicodeString &testString, const } - DELETE_ARRAY(decoded); - -bail: - freeBytes(bytes); - delete[] eSplit; + delete[] decoded; } const char *CharsetDetectionTest::getPath(char buffer[2048], const char *filename) { @@ -328,7 +324,7 @@ void CharsetDetectionTest::UTF8Test() char *bytes = extractBytes(s, "UTF-8", byteLength); UCharsetDetector *csd = ucsdet_open(&status); const UCharsetMatch *match; - UChar *detected = NEW_ARRAY(UChar, sLength); + UChar *detected = new UChar[sLength]; ucsdet_setText(csd, bytes, byteLength, &status); match = ucsdet_detect(csd, &status); @@ -347,8 +343,8 @@ void CharsetDetectionTest::UTF8Test() ucsdet_setDeclaredEncoding(csd, "UTF-8", 5, &status); /* for coverage */ bail: - DELETE_ARRAY(detected); - freeBytes(bytes); + delete[] detected; + delete[] bytes; ucsdet_close(csd); } @@ -364,66 +360,55 @@ void CharsetDetectionTest::UTF16Test() 0x064a, 0x062a, 0x0000}; UnicodeString s(chars); int32_t beLength = 0, leLength = 0; - char *beBytes = extractBytes(s, "UTF-16BE", beLength); - char *leBytes = extractBytes(s, "UTF-16LE", leLength); - UCharsetDetector *csd = ucsdet_open(&status); + std::unique_ptrbeBytes(extractBytes(s, "UTF-16BE", beLength)); + std::unique_ptrleBytes(extractBytes(s, "UTF-16LE", leLength)); + LocalUCharsetDetectorPointer csd(ucsdet_open(&status)); const UCharsetMatch *match; const char *name; int32_t conf; - ucsdet_setText(csd, beBytes, beLength, &status); - match = ucsdet_detect(csd, &status); + ucsdet_setText(csd.getAlias(), beBytes.get(), beLength, &status); + match = ucsdet_detect(csd.getAlias(), &status); if (match == NULL) { errln("Encoding detection failure for UTF-16BE: got no matches."); - goto try_le; - } - - name = ucsdet_getName(match, &status); - conf = ucsdet_getConfidence(match, &status); + } else { - if (strcmp(name, "UTF-16BE") != 0) { - errln("Encoding detection failure for UTF-16BE: got %s", name); - goto try_le; // no point in looking at confidence if we got the wrong character set. - } + name = ucsdet_getName(match, &status); + conf = ucsdet_getConfidence(match, &status); - if (conf != 100) { - errln("Did not get 100%% confidence for UTF-16BE: got %d", conf); + if (strcmp(name, "UTF-16BE") != 0) { + errln("Encoding detection failure for UTF-16BE: got %s", name); + } else if (conf != 100) { + errln("Did not get 100%% confidence for UTF-16BE: got %d", conf); + } } -try_le: - ucsdet_setText(csd, leBytes, leLength, &status); - match = ucsdet_detect(csd, &status); + ucsdet_setText(csd.getAlias(), leBytes.get(), leLength, &status); + match = ucsdet_detect(csd.getAlias(), &status); if (match == NULL) { errln("Encoding detection failure for UTF-16LE: got no matches."); - goto bail; + return; } name = ucsdet_getName(match, &status); conf = ucsdet_getConfidence(match, &status); - if (strcmp(name, "UTF-16LE") != 0) { errln("Enconding detection failure for UTF-16LE: got %s", name); - goto bail; // no point in looking at confidence if we got the wrong character set. + return; } if (conf != 100) { errln("Did not get 100%% confidence for UTF-16LE: got %d", conf); } - -bail: - freeBytes(leBytes); - freeBytes(beBytes); - ucsdet_close(csd); } void CharsetDetectionTest::InputFilterTest() { UErrorCode status = U_ZERO_ERROR; - UnicodeString ss = " Un tr\\u00E8s petit peu de Fran\\u00E7ais. "; - UnicodeString s = ss.unescape(); + UnicodeString s(u" Un très petit peu de Français. "); int32_t byteLength = 0; char *bytes = extractBytes(s, "ISO-8859-1", byteLength); UCharsetDetector *csd = ucsdet_open(&status); @@ -480,7 +465,7 @@ turn_off: } bail: - freeBytes(bytes); + delete[] bytes; ucsdet_close(csd); } @@ -527,8 +512,8 @@ void CharsetDetectionTest::C1BytesTest() } bail: - freeBytes(bWindows); - freeBytes(bISO); + delete[] bWindows; + delete[] bISO; ucsdet_close(csd); #endif @@ -674,8 +659,8 @@ void CharsetDetectionTest::IBM424Test() } bail: - freeBytes(bytes); - freeBytes(bytes_r); + delete[] bytes; + delete[] bytes_r; ucsdet_close(csd); #endif } @@ -764,8 +749,8 @@ void CharsetDetectionTest::IBM420Test() } bail: - freeBytes(bytes); - freeBytes(bytes_r); + delete[] bytes; + delete[] bytes_r; ucsdet_close(csd); #endif } @@ -825,23 +810,23 @@ void CharsetDetectionTest::Ticket6954Test() { "It also includes some \\u201CC1\\u201D bytes.", -1, US_INV); UnicodeString sWindows = ssWindows.unescape(); int32_t lISO = 0, lWindows = 0; - char *bISO = extractBytes(sISO, "ISO-8859-1", lISO); - char *bWindows = extractBytes(sWindows, "windows-1252", lWindows); + std::unique_ptr bISO(extractBytes(sISO, "ISO-8859-1", lISO)); + std::unique_ptr bWindows(extractBytes(sWindows, "windows-1252", lWindows)); // First do a plain vanilla detect of 1252 text - UCharsetDetector *csd1 = ucsdet_open(&status); - ucsdet_setText(csd1, bWindows, lWindows, &status); - const UCharsetMatch *match1 = ucsdet_detect(csd1, &status); + LocalUCharsetDetectorPointer csd1(ucsdet_open(&status)); + ucsdet_setText(csd1.getAlias(), bWindows.get(), lWindows, &status); + const UCharsetMatch *match1 = ucsdet_detect(csd1.getAlias(), &status); const char *name1 = ucsdet_getName(match1, &status); TEST_ASSERT_SUCCESS(status); TEST_ASSERT(strcmp(name1, "windows-1252")==0); // Next, using a completely separate detector, detect some 8859-1 text - UCharsetDetector *csd2 = ucsdet_open(&status); - ucsdet_setText(csd2, bISO, lISO, &status); - const UCharsetMatch *match2 = ucsdet_detect(csd2, &status); + LocalUCharsetDetectorPointer csd2(ucsdet_open(&status)); + ucsdet_setText(csd2.getAlias(), bISO.get(), lISO, &status); + const UCharsetMatch *match2 = ucsdet_detect(csd2.getAlias(), &status); const char *name2 = ucsdet_getName(match2, &status); TEST_ASSERT_SUCCESS(status); TEST_ASSERT(strcmp(name2, "ISO-8859-1")==0); @@ -852,10 +837,5 @@ void CharsetDetectionTest::Ticket6954Test() { name1 = ucsdet_getName(match1, &status); TEST_ASSERT_SUCCESS(status); TEST_ASSERT(strcmp(name1, "windows-1252")==0); - - ucsdet_close(csd1); - ucsdet_close(csd2); - freeBytes(bISO); - freeBytes(bWindows); #endif } diff --git a/source/test/intltest/dadrcal.cpp b/source/test/intltest/dadrcal.cpp index 658d652..08c9cec 100644 --- a/source/test/intltest/dadrcal.cpp +++ b/source/test/intltest/dadrcal.cpp @@ -366,7 +366,7 @@ void DataDrivenCalendarTest::testConvert(int32_t n, void DataDrivenCalendarTest::testConvert(TestData *testData, const DataMap *settings, UBool forward) { UErrorCode status = U_ZERO_ERROR; - Calendar *toCalendar= NULL; + LocalPointer toCalendar; const DataMap *currentCase= NULL; char toCalLoc[256] = ""; char fromCalLoc[256] = ""; @@ -374,7 +374,7 @@ void DataDrivenCalendarTest::testConvert(TestData *testData, UnicodeString testSetting = settings->getString("ToCalendar", status); if (U_SUCCESS(status)) { testSetting.extract(0, testSetting.length(), toCalLoc, (const char*)0); - toCalendar = Calendar::createInstance(toCalLoc, status); + toCalendar.adoptInstead(Calendar::createInstance(toCalLoc, status)); if (U_FAILURE(status)) { dataerrln(UnicodeString("Unable to instantiate ToCalendar for ")+testSetting); return; @@ -393,11 +393,11 @@ void DataDrivenCalendarTest::testConvert(TestData *testData, int n = 0; while (testData->nextCase(currentCase, status)) { ++n; - Calendar *fromCalendar= NULL; + LocalPointer fromCalendar; UnicodeString locale = currentCase->getString("locale", status); if (U_SUCCESS(status)) { locale.extract(0, locale.length(), fromCalLoc, (const char*)0); // default codepage. Invariant codepage doesn't have '@'! - fromCalendar = Calendar::createInstance(fromCalLoc, status); + fromCalendar.adoptInstead(Calendar::createInstance(fromCalLoc, status)); if (U_FAILURE(status)) { errln("Unable to instantiate fromCalendar for "+locale); return; @@ -435,16 +435,13 @@ void DataDrivenCalendarTest::testConvert(TestData *testData, if (forward) { logln((UnicodeString)"#"+n+" "+locale+"/"+from+" >>> "+toCalLoc+"/" +to); - testConvert(n, fromSet, fromCalendar, toSet, toCalendar, forward); + testConvert(n, fromSet, fromCalendar.getAlias(), toSet, toCalendar.getAlias(), forward); } else { logln((UnicodeString)"#"+n+" "+locale+"/"+from+" <<< "+toCalLoc+"/" +to); - testConvert(n, toSet, toCalendar, fromSet, fromCalendar, forward); + testConvert(n, toSet, toCalendar.getAlias(), fromSet, fromCalendar.getAlias(), forward); } - - delete fromCalendar; } - delete toCalendar; } void DataDrivenCalendarTest::processTest(TestData *testData) { diff --git a/source/test/intltest/datadrivennumberformattestsuite.cpp b/source/test/intltest/datadrivennumberformattestsuite.cpp index c8f10d1..22a72f3 100644 --- a/source/test/intltest/datadrivennumberformattestsuite.cpp +++ b/source/test/intltest/datadrivennumberformattestsuite.cpp @@ -38,7 +38,7 @@ void DataDrivenNumberFormatTestSuite::run(const char *fileName, UBool runAllTest } UnicodeString columnValues[kNumberFormatTestTupleFieldCount]; ENumberFormatTestTupleField columnTypes[kNumberFormatTestTupleFieldCount]; - int32_t columnCount; + int32_t columnCount = 0; int32_t state = 0; while(U_SUCCESS(status)) { // Read a new line if necessary. diff --git a/source/test/intltest/dcfmapts.cpp b/source/test/intltest/dcfmapts.cpp index 5973a9e..c8bf97a 100644 --- a/source/test/intltest/dcfmapts.cpp +++ b/source/test/intltest/dcfmapts.cpp @@ -453,9 +453,10 @@ void IntlTestDecimalFormatAPI::testAPI(/*char *par*/) void IntlTestDecimalFormatAPI::TestCurrencyPluralInfo(){ UErrorCode status = U_ZERO_ERROR; - CurrencyPluralInfo *cpi = new CurrencyPluralInfo(status); + LocalPointercpi(new CurrencyPluralInfo(status), status); if(U_FAILURE(status)) { errln((UnicodeString)"ERROR: CurrencyPluralInfo(UErrorCode) could not be created"); + return; } CurrencyPluralInfo cpi1 = *cpi; @@ -479,19 +480,18 @@ void IntlTestDecimalFormatAPI::TestCurrencyPluralInfo(){ errln((UnicodeString)"ERROR: CurrencyPluralInfo::setPluralRules"); } - DecimalFormat *df = new DecimalFormat(status); + LocalPointerdf(new DecimalFormat(status)); if(U_FAILURE(status)) { errcheckln(status, "ERROR: Could not create DecimalFormat - %s", u_errorName(status)); return; } - df->adoptCurrencyPluralInfo(cpi); + df->adoptCurrencyPluralInfo(cpi.orphan()); df->getCurrencyPluralInfo(); df->setCurrencyPluralInfo(cpi1); - delete df; } void IntlTestDecimalFormatAPI::testRounding(/*char *par*/) @@ -642,14 +642,15 @@ void IntlTestDecimalFormatAPI::TestScale() } -#define ASSERT_EQUAL(expect, actual) { \ +#define ASSERT_EQUAL(expect, actual) UPRV_BLOCK_MACRO_BEGIN { \ /* ICU-20080: Use temporary variables to avoid strange compiler behaviour \ (with the nice side-effect of avoiding repeated function calls too). */ \ auto lhs = (expect); \ auto rhs = (actual); \ char tmp[200]; \ sprintf(tmp, "(%g==%g)", (double)lhs, (double)rhs); \ - assertTrue(tmp, (lhs==rhs), FALSE, TRUE, __FILE__, __LINE__); } + assertTrue(tmp, (lhs==rhs), FALSE, TRUE, __FILE__, __LINE__); \ +} UPRV_BLOCK_MACRO_END #if defined(_MSC_VER) // Ignore the noisy warning 4805 (comparisons between int and bool) in the function below as we use the ICU TRUE/FALSE macros diff --git a/source/test/intltest/dcfmtest.cpp b/source/test/intltest/dcfmtest.cpp index 4b41663..0f4c943 100644 --- a/source/test/intltest/dcfmtest.cpp +++ b/source/test/intltest/dcfmtest.cpp @@ -79,21 +79,41 @@ void DecimalFormatTest::runIndexedTest( int32_t index, UBool exec, const char* & // Error Checking / Reporting macros used in all of the tests. // //--------------------------------------------------------------------------- -#define DF_CHECK_STATUS {if (U_FAILURE(status)) \ - {dataerrln("DecimalFormatTest failure at line %d. status=%s", \ - __LINE__, u_errorName(status)); return 0;}} - -#define DF_ASSERT(expr) {if ((expr)==FALSE) {errln("DecimalFormatTest failure at line %d.\n", __LINE__);};} - -#define DF_ASSERT_FAIL(expr, errcode) {UErrorCode status=U_ZERO_ERROR; (expr);\ -if (status!=errcode) {dataerrln("DecimalFormatTest failure at line %d. Expected status=%s, got %s", \ - __LINE__, u_errorName(errcode), u_errorName(status));};} - -#define DF_CHECK_STATUS_L(line) {if (U_FAILURE(status)) {errln( \ - "DecimalFormatTest failure at line %d, from %d. status=%d\n",__LINE__, (line), status); }} - -#define DF_ASSERT_L(expr, line) {if ((expr)==FALSE) { \ - errln("DecimalFormatTest failure at line %d, from %d.", __LINE__, (line)); return;}} +#define DF_CHECK_STATUS UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(status)) { \ + dataerrln("DecimalFormatTest failure at line %d. status=%s", \ + __LINE__, u_errorName(status)); \ + return 0; \ + } \ +} UPRV_BLOCK_MACRO_END + +#define DF_ASSERT(expr) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expr)==FALSE) { \ + errln("DecimalFormatTest failure at line %d.\n", __LINE__); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define DF_ASSERT_FAIL(expr, errcode) UPRV_BLOCK_MACRO_BEGIN { \ + UErrorCode status=U_ZERO_ERROR; \ + (expr); \ + if (status!=errcode) { \ + dataerrln("DecimalFormatTest failure at line %d. Expected status=%s, got %s", \ + __LINE__, u_errorName(errcode), u_errorName(status)); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define DF_CHECK_STATUS_L(line) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(status)) { \ + errln("DecimalFormatTest failure at line %d, from %d. status=%d\n",__LINE__, (line), status); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define DF_ASSERT_L(expr, line) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expr)==FALSE) { \ + errln("DecimalFormatTest failure at line %d, from %d.", __LINE__, (line)); \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END @@ -106,7 +126,7 @@ if (status!=errcode) {dataerrln("DecimalFormatTest failure at line %d. Expected class InvariantStringPiece: public StringPiece { public: InvariantStringPiece(const UnicodeString &s); - ~InvariantStringPiece() {}; + ~InvariantStringPiece() {} private: MaybeStackArray buf; }; @@ -130,7 +150,7 @@ InvariantStringPiece::InvariantStringPiece(const UnicodeString &s) { class UnicodeStringPiece: public StringPiece { public: UnicodeStringPiece(const UnicodeString &s); - ~UnicodeStringPiece() {}; + ~UnicodeStringPiece() {} private: MaybeStackArray buf; }; @@ -546,7 +566,7 @@ cleanUpAndReturn: errln("ICU Error \"%s\"\n", u_errorName(status)); delete retPtr; retPtr = NULL; - }; + } return retPtr; } diff --git a/source/test/intltest/dtfmapts.cpp b/source/test/intltest/dtfmapts.cpp index 928a722..361c35c 100644 --- a/source/test/intltest/dtfmapts.cpp +++ b/source/test/intltest/dtfmapts.cpp @@ -235,7 +235,7 @@ if (fr != NULL && it != NULL && de != NULL) } const NumberFormat *nf = def->getNumberFormat(); - NumberFormat *newNf = (NumberFormat*) nf->clone(); + NumberFormat *newNf = nf->clone(); de->adoptNumberFormat(newNf); it->setNumberFormat(*newNf); if( *(de->getNumberFormat()) != *(it->getNumberFormat())) { diff --git a/source/test/intltest/dtfmrgts.cpp b/source/test/intltest/dtfmrgts.cpp index 5e04379..7b772f1 100644 --- a/source/test/intltest/dtfmrgts.cpp +++ b/source/test/intltest/dtfmrgts.cpp @@ -290,23 +290,17 @@ void DateFormatRegressionTest::Test4059917(void) { UErrorCode status = U_ZERO_ERROR; - SimpleDateFormat *fmt; UnicodeString myDate; - fmt = new SimpleDateFormat( UnicodeString("yyyy/MM/dd"), status ); + SimpleDateFormat fmt(UnicodeString(u"yyyy/MM/dd"), status ); if (failure(status, "new SimpleDateFormat", TRUE)) return; myDate = "1997/01/01"; - aux917( fmt, myDate ); - - delete fmt; - fmt = NULL; - - fmt = new SimpleDateFormat( UnicodeString("yyyyMMdd"), status ); + aux917( &fmt, myDate ); + + SimpleDateFormat fmt2( UnicodeString(u"yyyyMMdd"), status ); if(failure(status, "new SimpleDateFormat")) return; myDate = "19970101"; - aux917( fmt, myDate ); - - delete fmt; + aux917(&fmt2, myDate ); } void DateFormatRegressionTest::aux917( SimpleDateFormat *fmt, UnicodeString& str ) { @@ -349,23 +343,22 @@ void DateFormatRegressionTest::Test4060212(void) logln( "dateString= " + dateString ); logln("Using yyyy-DDD.hh:mm:ss"); UErrorCode status = U_ZERO_ERROR; - SimpleDateFormat *formatter = new SimpleDateFormat(UnicodeString("yyyy-DDD.hh:mm:ss"), status); + SimpleDateFormat formatter(UnicodeString("yyyy-DDD.hh:mm:ss"), status); if (failure(status, "new SimpleDateFormat", TRUE)) return; ParsePosition pos(0); - UDate myDate = formatter->parse( dateString, pos ); + UDate myDate = formatter.parse( dateString, pos ); UnicodeString myString; - DateFormat *fmt = DateFormat::createDateTimeInstance( DateFormat::FULL, - DateFormat::LONG); - if (fmt == NULL) { + LocalPointer fmt(DateFormat::createDateTimeInstance( DateFormat::FULL, + DateFormat::LONG)); + if (!fmt.isValid()) { dataerrln("Error calling DateFormat::createDateTimeInstance"); - delete formatter; return; } myString = fmt->format( myDate, myString); logln( myString ); - Calendar *cal = new GregorianCalendar(status); + LocalPointer cal(new GregorianCalendar(status)); failure(status, "new GregorianCalendar"); cal->setTime(myDate, status); failure(status, "cal->setTime"); @@ -376,12 +369,10 @@ void DateFormatRegressionTest::Test4060212(void) // this is an odd usage of "ddd" and it doesn't // work now that date values are range checked per #3579. logln("Using yyyy-ddd.hh:mm:ss"); - delete formatter; - formatter = NULL; - formatter = new SimpleDateFormat(UnicodeString("yyyy-ddd.hh:mm:ss"), status); + SimpleDateFormat formatter2(UnicodeString(u"yyyy-ddd.hh:mm:ss"), status); if(failure(status, "new SimpleDateFormat")) return; pos.setIndex(0); - myDate = formatter->parse( dateString, pos ); + myDate = formatter2.parse( dateString, pos ); myString = fmt->format( myDate, myString ); logln( myString ); cal->setTime(myDate, status); @@ -389,10 +380,6 @@ void DateFormatRegressionTest::Test4060212(void) if ((cal->get(UCAL_DAY_OF_YEAR, status) != 40) || failure(status, "cal->get")) errln((UnicodeString) "Fail: Got " + cal->get(UCAL_DAY_OF_YEAR, status) + " Want 40"); - - delete formatter; - delete fmt; - delete cal; } /** @@ -719,22 +706,20 @@ void DateFormatRegressionTest::Test4100302(void) void DateFormatRegressionTest::Test4101483(void) { UErrorCode status = U_ZERO_ERROR; - SimpleDateFormat *sdf = new SimpleDateFormat(UnicodeString("z"), Locale::getUS(), status); + SimpleDateFormat sdf(UnicodeString("z"), Locale::getUS(), status); if (failure(status, "new SimpleDateFormat", TRUE)) return; FieldPosition fp(UDAT_TIMEZONE_FIELD); //Date d = date(9234567890L); UDate d = 9234567890.0; //StringBuffer buf = new StringBuffer(""); UnicodeString buf; - sdf->format(d, buf, fp); + sdf.format(d, buf, fp); //logln(sdf.format(d, buf, fp).toString()); logln(dateToString(d) + " => " + buf); logln(UnicodeString("beginIndex = ") + fp.getBeginIndex()); logln(UnicodeString("endIndex = ") + fp.getEndIndex()); if (fp.getBeginIndex() == fp.getEndIndex()) errln("Fail: Empty field"); - - delete sdf; } /** @@ -752,22 +737,20 @@ void DateFormatRegressionTest::Test4103340(void) // choose a date that is the FIRST of some month // and some arbitrary time UDate d = date(97, 3, 1, 1, 1, 1); - SimpleDateFormat *df = new SimpleDateFormat(UnicodeString("MMMM"), Locale::getUS(), status); + SimpleDateFormat df(UnicodeString(u"MMMM"), Locale::getUS(), status); if (failure(status, "new SimpleDateFormat", TRUE)) return; UnicodeString s; s = dateToString(d, s); UnicodeString s2; FieldPosition pos(FieldPosition::DONT_CARE); - s2 = df->format(d, s2, pos); + s2 = df.format(d, s2, pos); logln("Date=" + s); logln("DF=" + s2); UnicodeString substr; s2.extract(0,2, substr); if (s.indexOf(substr) == -1) - errln("Months should match"); - - delete df; + errln("Months should match"); } /** @@ -775,29 +758,23 @@ void DateFormatRegressionTest::Test4103340(void) */ void DateFormatRegressionTest::Test4103341(void) { - TimeZone *saveZone =TimeZone::createDefault(); - //try { - + LocalPointer saveZone(TimeZone::createDefault()); + if (!saveZone.isValid()) { + dataerrln("TimeZone::createDefault() failed."); + return; + } // {sfb} changed from setDefault to adoptDefault TimeZone::adoptDefault(TimeZone::createTimeZone("CST")); UErrorCode status = U_ZERO_ERROR; - SimpleDateFormat *simple = new SimpleDateFormat(UnicodeString("MM/dd/yyyy HH:mm"), status); + SimpleDateFormat simple(UnicodeString("MM/dd/yyyy HH:mm"), status); if(U_FAILURE(status)) { - dataerrln("Couldn't create SimpleDateFormat, error %s", u_errorName(status)); - delete simple; - return; - } - failure(status, "new SimpleDateFormat"); - TimeZone *temp = TimeZone::createDefault(); - if(simple->getTimeZone() != *temp) + dataerrln("Couldn't create SimpleDateFormat, error %s", u_errorName(status)); + } else { + LocalPointer temp(TimeZone::createDefault()); + if(simple.getTimeZone() != *temp) errln("Fail: SimpleDateFormat not using default zone"); - //} - //finally { - TimeZone::adoptDefault(saveZone); - //} - - delete temp; - delete simple; + } + TimeZone::adoptDefault(saveZone.orphan()); } /** @@ -1018,17 +995,15 @@ void DateFormatRegressionTest::Test4134203(void) { UErrorCode status = U_ZERO_ERROR; UnicodeString dateFormat = "MM/dd/yy HH:mm:ss zzz"; - SimpleDateFormat *fmt = new SimpleDateFormat(dateFormat, status); + SimpleDateFormat fmt (dateFormat, status); if (failure(status, "new SimpleDateFormat", TRUE)) return; ParsePosition p0(0); - UDate d = fmt->parse("01/22/92 04:52:00 GMT", p0); + UDate d = fmt.parse("01/22/92 04:52:00 GMT", p0); logln(dateToString(d)); if(p0 == ParsePosition(0)) errln("Fail: failed to parse 'GMT'"); // In the failure case an exception is thrown by parse(); // if no exception is thrown, the test passes. - - delete fmt; } /** @@ -1040,19 +1015,17 @@ void DateFormatRegressionTest::Test4151631(void) UnicodeString pattern = "'TO_DATE('''dd'-'MM'-'yyyy HH:mm:ss''' , ''DD-MM-YYYY HH:MI:SS'')'"; logln("pattern=" + pattern); UErrorCode status = U_ZERO_ERROR; - SimpleDateFormat *format = new SimpleDateFormat(pattern, Locale::getUS(), status); + SimpleDateFormat format(pattern, Locale::getUS(), status); if (failure(status, "new SimpleDateFormat", TRUE)) return; UnicodeString result; FieldPosition pos(FieldPosition::DONT_CARE); - result = format->format(date(1998-1900, UCAL_JUNE, 30, 13, 30, 0), result, pos); + result = format.format(date(1998-1900, UCAL_JUNE, 30, 13, 30, 0), result, pos); if (result != "TO_DATE('30-06-1998 13:30:00' , 'DD-MM-YYYY HH:MI:SS')") { errln("Fail: result=" + result); } else { logln("Pass: result=" + result); } - - delete format; } /** @@ -1461,7 +1434,7 @@ void DateFormatRegressionTest::Test5554(void) if (U_FAILURE(status)) { errln("Error getting time to format"); return; - }; + } sdf->adoptCalendar(cal); UnicodeString result; UnicodeString correct("-0330", ""); diff --git a/source/test/intltest/dtfmttst.cpp b/source/test/intltest/dtfmttst.cpp index 8954094..9684e88 100644 --- a/source/test/intltest/dtfmttst.cpp +++ b/source/test/intltest/dtfmttst.cpp @@ -29,7 +29,12 @@ #include "windttst.h" #endif -#define ASSERT_OK(status) if(U_FAILURE(status)) {errcheckln(status, #status " = %s @ %s:%d", u_errorName(status), __FILE__, __LINE__); return; } +#define ASSERT_OK(status) UPRV_BLOCK_MACRO_BEGIN { \ + if(U_FAILURE(status)) { \ + errcheckln(status, #status " = %s @ %s:%d", u_errorName(status), __FILE__, __LINE__); \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END // ***************************************************************************** // class DateFormatTest @@ -122,6 +127,7 @@ void DateFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &nam TESTCASE_AUTO(TestMinuteSecondFieldsInOddPlaces); TESTCASE_AUTO(TestDayPeriodParsing); TESTCASE_AUTO(TestParseRegression13744); + TESTCASE_AUTO(TestAdoptCalendarLeak); TESTCASE_AUTO_END; } @@ -377,12 +383,12 @@ void DateFormatTest::TestTwoDigitYearDSTParse(void) { UErrorCode status = U_ZERO_ERROR; - SimpleDateFormat* fullFmt = new SimpleDateFormat((UnicodeString)"EEE MMM dd HH:mm:ss.SSS zzz yyyy G", status); - SimpleDateFormat *fmt = new SimpleDateFormat((UnicodeString)"dd-MMM-yy h:mm:ss 'o''clock' a z", Locale::getEnglish(), status); + SimpleDateFormat fullFmt((UnicodeString)"EEE MMM dd HH:mm:ss.SSS zzz yyyy G", status); + SimpleDateFormat fmt((UnicodeString)"dd-MMM-yy h:mm:ss 'o''clock' a z", Locale::getEnglish(), status); //DateFormat* fmt = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL, Locale::ENGLISH); - UnicodeString* s = new UnicodeString("03-Apr-04 2:20:47 o'clock AM PST", ""); - TimeZone* defaultTZ = TimeZone::createDefault(); - TimeZone* PST = TimeZone::createTimeZone("PST"); + UnicodeString s(u"03-Apr-04 2:20:47 o'clock AM PST"); + LocalPointer defaultTZ(TimeZone::createDefault()); + LocalPointer PST(TimeZone::createTimeZone("PST")); int32_t defaultOffset = defaultTZ->getRawOffset(); int32_t PSTOffset = PST->getRawOffset(); int32_t hour = 2 + (defaultOffset - PSTOffset) / (60*60*1000); @@ -396,8 +402,8 @@ DateFormatTest::TestTwoDigitYearDSTParse(void) return; } - UDate d = fmt->parse(*s, status); - logln(*s + " P> " + ((DateFormat*)fullFmt)->format(d, str)); + UDate d = fmt.parse(s, status); + logln(s + " P> " + fullFmt.format(d, str)); int32_t y, m, day, hr, min, sec; dateToFields(d, y, m, day, hr, min, sec); hour += defaultTZ->inDaylightTime(d, status) ? 1 : 0; @@ -407,12 +413,6 @@ DateFormatTest::TestTwoDigitYearDSTParse(void) if (U_FAILURE(status)) errln((UnicodeString)"FAIL: " + (int32_t)status); - - delete s; - delete fmt; - delete fullFmt; - delete PST; - delete defaultTZ; } // ------------------------------------- @@ -1290,18 +1290,17 @@ DateFormatTest::TestDateFormatZone146() int32_t DATA_length = UPRV_LENGTHOF(DATA); for (int32_t i=0; isetCalendar(*greenwichcalendar); + fmt.setCalendar(*greenwichcalendar); UnicodeString result; - result = fmt->format(greenwichdate, result); + result = fmt.format(greenwichdate, result); logln(DATA[i] + result); if (result != DATA[i+1]) errln("FAIL: Expected " + DATA[i+1] + ", got " + result); - delete fmt; } } //} @@ -3406,7 +3405,7 @@ void DateFormatTest::TestTimeZoneDisplayName() }; UErrorCode status = U_ZERO_ERROR; - Calendar *cal = GregorianCalendar::createInstance(status); + LocalPointer cal(GregorianCalendar::createInstance(status)); if (failure(status, "GregorianCalendar::createInstance", TRUE)) return; SimpleDateFormat testfmt(UnicodeString("yyyy-MM-dd'T'HH:mm:ss'Z'"), status); if (failure(status, "SimpleDateFormat constructor", TRUE)) return; @@ -3434,13 +3433,12 @@ void DateFormatTest::TestTimeZoneDisplayName() cal->adoptTimeZone(tz); UnicodeString result; FieldPosition pos(FieldPosition::DONT_CARE); - fmt.format(*cal,result,pos); + fmt.format(*cal.getAlias(), result,pos); if (result != info[4]) { errln(info[0] + ";" + info[1] + ";" + info[2] + ";" + info[3] + " expected: '" + info[4] + "' but got: '" + result + "'"); } } - delete cal; } void DateFormatTest::TestRoundtripWithCalendar(void) { @@ -3590,98 +3588,94 @@ void DateFormatTest::Test6338(void) { UErrorCode status = U_ZERO_ERROR; - SimpleDateFormat *fmt1 = new SimpleDateFormat(UnicodeString("y-M-d"), Locale("ar"), status); + SimpleDateFormat fmt1(UnicodeString(u"y-M-d"), Locale("ar"), status); if (failure(status, "new SimpleDateFormat", TRUE)) return; UDate dt1 = date(2008-1900, UCAL_JUNE, 10, 12, 00); UnicodeString str1; - str1 = fmt1->format(dt1, str1); + str1 = fmt1.format(dt1, str1); logln(str1); - UDate dt11 = fmt1->parse(str1, status); + UDate dt11 = fmt1.parse(str1, status); failure(status, "fmt->parse"); UnicodeString str11; - str11 = fmt1->format(dt11, str11); + str11 = fmt1.format(dt11, str11); logln(str11); if (str1 != str11) { errln((UnicodeString)"FAIL: Different dates str1:" + str1 + " str2:" + str11); } - delete fmt1; ///////////////// status = U_ZERO_ERROR; - SimpleDateFormat *fmt2 = new SimpleDateFormat(UnicodeString("y M d"), Locale("ar"), status); + SimpleDateFormat fmt2(UnicodeString(u"y M d"), Locale("ar"), status); failure(status, "new SimpleDateFormat"); UDate dt2 = date(2008-1900, UCAL_JUNE, 10, 12, 00); UnicodeString str2; - str2 = fmt2->format(dt2, str2); + str2 = fmt2.format(dt2, str2); logln(str2); - UDate dt22 = fmt2->parse(str2, status); + UDate dt22 = fmt2.parse(str2, status); failure(status, "fmt->parse"); UnicodeString str22; - str22 = fmt2->format(dt22, str22); + str22 = fmt2.format(dt22, str22); logln(str22); if (str2 != str22) { errln((UnicodeString)"FAIL: Different dates str1:" + str2 + " str2:" + str22); } - delete fmt2; ///////////////// status = U_ZERO_ERROR; - SimpleDateFormat *fmt3 = new SimpleDateFormat(UnicodeString("y-M-d"), Locale("en-us"), status); + SimpleDateFormat fmt3(UnicodeString("y-M-d"), Locale("en-us"), status); failure(status, "new SimpleDateFormat"); UDate dt3 = date(2008-1900, UCAL_JUNE, 10, 12, 00); UnicodeString str3; - str3 = fmt3->format(dt3, str3); + str3 = fmt3.format(dt3, str3); logln(str3); - UDate dt33 = fmt3->parse(str3, status); + UDate dt33 = fmt3.parse(str3, status); failure(status, "fmt->parse"); UnicodeString str33; - str33 = fmt3->format(dt33, str33); + str33 = fmt3.format(dt33, str33); logln(str33); if (str3 != str33) { errln((UnicodeString)"FAIL: Different dates str1:" + str3 + " str2:" + str33); } - delete fmt3; ///////////////// status = U_ZERO_ERROR; - SimpleDateFormat *fmt4 = new SimpleDateFormat(UnicodeString("y M d"), Locale("en-us"), status); + SimpleDateFormat fmt4(UnicodeString("y M d"), Locale("en-us"), status); failure(status, "new SimpleDateFormat"); UDate dt4 = date(2008-1900, UCAL_JUNE, 10, 12, 00); UnicodeString str4; - str4 = fmt4->format(dt4, str4); + str4 = fmt4.format(dt4, str4); logln(str4); - UDate dt44 = fmt4->parse(str4, status); + UDate dt44 = fmt4.parse(str4, status); failure(status, "fmt->parse"); UnicodeString str44; - str44 = fmt4->format(dt44, str44); + str44 = fmt4.format(dt44, str44); logln(str44); if (str4 != str44) { errln((UnicodeString)"FAIL: Different dates str1:" + str4 + " str2:" + str44); } - delete fmt4; } @@ -3857,15 +3851,15 @@ void DateFormatTest::TestNumberAsStringParsing() for (itemPtr = items; itemPtr->localeStr != NULL; itemPtr++ ) { Locale locale = Locale::createFromName(itemPtr->localeStr); UErrorCode status = U_ZERO_ERROR; - SimpleDateFormat *formatter = new SimpleDateFormat(itemPtr->datePattern, locale, status); - if (formatter == NULL || U_FAILURE(status)) { + SimpleDateFormat formatter(itemPtr->datePattern, locale, status); + if (U_FAILURE(status)) { dataerrln("Unable to create SimpleDateFormat - %s", u_errorName(status)); return; } - formatter->setLenient(itemPtr->lenient); - formatter->setBooleanAttribute(UDAT_PARSE_ALLOW_WHITESPACE, itemPtr->lenient, status).setBooleanAttribute(UDAT_PARSE_ALLOW_NUMERIC, itemPtr->lenient, status); - UDate date1 = formatter->parse(itemPtr->dateString, status); + formatter.setLenient(itemPtr->lenient); + formatter.setBooleanAttribute(UDAT_PARSE_ALLOW_WHITESPACE, itemPtr->lenient, status).setBooleanAttribute(UDAT_PARSE_ALLOW_NUMERIC, itemPtr->lenient, status); + UDate date1 = formatter.parse(itemPtr->dateString, status); if (U_FAILURE(status)) { if (!itemPtr->expectFail) { errln("FAIL, err when expected success: Locale \"" + UnicodeString(itemPtr->localeStr) + "\", lenient " + itemPtr->lenient + @@ -3876,14 +3870,12 @@ void DateFormatTest::TestNumberAsStringParsing() ": using pattern \"" + itemPtr->datePattern + "\", did parse \"" + itemPtr->dateString + "\"." ); } else if (!itemPtr->lenient) { UnicodeString formatted; - formatter->format(date1, formatted); + formatter.format(date1, formatted); if (formatted != itemPtr->dateString) { errln("FAIL, mismatch formatting parsed date: Locale \"" + UnicodeString(itemPtr->localeStr) + "\", lenient " + itemPtr->lenient + ": using pattern \"" + itemPtr->datePattern + "\", did parse \"" + itemPtr->dateString + "\", formatted result \"" + formatted + "\"."); } } - - delete formatter; } } @@ -3935,20 +3927,19 @@ void DateFormatTest::TestISOEra() { void DateFormatTest::TestFormalChineseDate() { UErrorCode status = U_ZERO_ERROR; - UnicodeString pattern ("y\\u5e74M\\u6708d\\u65e5", -1, US_INV ); - pattern = pattern.unescape(); - UnicodeString override ("y=hanidec;M=hans;d=hans", -1, US_INV ); + UnicodeString pattern(u"y\u5e74M\u6708d\u65e5"); + UnicodeString numsys_override(u"y=hanidec;M=hans;d=hans"); // create formatter - SimpleDateFormat *sdf = new SimpleDateFormat(pattern,override,Locale::getChina(),status); - if (failure(status, "new SimpleDateFormat with override", TRUE)) { + SimpleDateFormat sdf(pattern, numsys_override, Locale::getChina(),status); + if (failure(status, "new SimpleDateFormat with override", true)) { return; } UDate thedate = date(2009-1900, UCAL_JULY, 28); FieldPosition pos(FieldPosition::DONT_CARE); UnicodeString result; - sdf->format(thedate,result,pos); + sdf.format(thedate,result,pos); UnicodeString expected = "\\u4e8c\\u3007\\u3007\\u4e5d\\u5e74\\u4e03\\u6708\\u4e8c\\u5341\\u516b\\u65e5"; expected = expected.unescape(); @@ -3956,37 +3947,34 @@ void DateFormatTest::TestFormalChineseDate() { dataerrln((UnicodeString)"FAIL: -> " + result + " expected -> " + expected); } - UDate parsedate = sdf->parse(expected,status); + UDate parsedate = sdf.parse(expected,status); if ( parsedate != thedate ) { UnicodeString pat1 ("yyyy-MM-dd'T'HH:mm:ss'Z'", -1, US_INV ); - SimpleDateFormat *usf = new SimpleDateFormat(pat1,Locale::getEnglish(),status); + SimpleDateFormat usf(pat1, Locale::getEnglish(), status); UnicodeString parsedres,expres; - usf->format(parsedate,parsedres,pos); - usf->format(thedate,expres,pos); + usf.format(parsedate,parsedres,pos); + usf.format(thedate,expres,pos); dataerrln((UnicodeString)"FAIL: parsed -> " + parsedres + " expected -> " + expres); - delete usf; } - delete sdf; } // Test case for #8675 // Incorrect parse offset with stand alone GMT string on 2nd or later iteration. void DateFormatTest::TestStandAloneGMTParse() { UErrorCode status = U_ZERO_ERROR; - SimpleDateFormat *sdf = new SimpleDateFormat("ZZZZ", Locale(""), status); + SimpleDateFormat sdf("ZZZZ", Locale(""), status); if (U_SUCCESS(status)) { - UnicodeString inText("GMT$$$"); + UnicodeString inText(u"GMT$$$"); for (int32_t i = 0; i < 10; i++) { ParsePosition pos(0); - sdf->parse(inText, pos); + sdf.parse(inText, pos); if (pos.getIndex() != 3) { errln((UnicodeString)"FAIL: Incorrect output parse position: actual=" + pos.getIndex() + " expected=3"); } } - delete sdf; } else { dataerrln("Unable to create SimpleDateFormat - %s", u_errorName(status)); } @@ -4011,7 +3999,7 @@ void DateFormatTest::TestParsePosition() { for (int32_t i = 0; TestData[i][0]; i++) { UErrorCode status = U_ZERO_ERROR; - SimpleDateFormat *sdf = new SimpleDateFormat(UnicodeString(TestData[i][0]), status); + SimpleDateFormat sdf(UnicodeString(TestData[i][0]), status); if (failure(status, "new SimpleDateFormat", TRUE)) return; int32_t startPos, resPos; @@ -4029,14 +4017,12 @@ void DateFormatTest::TestParsePosition() { ParsePosition pos(startPos); //UDate d = sdf->parse(input, pos); - (void)sdf->parse(input, pos); + (void)sdf.parse(input, pos); if (pos.getIndex() != resPos) { errln(UnicodeString("FAIL: Parsing [") + input + "] with pattern [" + TestData[i][0] + "] returns position - " + pos.getIndex() + ", expected - " + resPos); } - - delete sdf; } } @@ -4308,20 +4294,20 @@ void DateFormatTest::TestNonGregoFmtParse() const TestNonGregoItem * itemPtr; for (itemPtr = items; itemPtr->locale != NULL; itemPtr++) { Locale locale = Locale::createFromName(itemPtr->locale); - DateFormat * dfmt = NULL; + LocalPointer dfmt; UErrorCode status = U_ZERO_ERROR; if (itemPtr->style != DateFormat::kNone) { - dfmt = DateFormat::createDateInstance(itemPtr->style, locale); + dfmt.adoptInstead(DateFormat::createDateInstance(itemPtr->style, locale)); } else { - dfmt = new SimpleDateFormat(itemPtr->pattern, locale, status); + dfmt.adoptInstead(new SimpleDateFormat(itemPtr->pattern, locale, status)); } if (U_FAILURE(status)) { dataerrln("new SimpleDateFormat fails for locale %s", itemPtr->locale); - } else if (dfmt == NULL) { + } else if (!dfmt.isValid()) { dataerrln("DateFormat::createDateInstance fails for locale %s", itemPtr->locale); } else { - Calendar * cal = (dfmt->getCalendar())->clone(); - if (cal == NULL) { + LocalPointercal((dfmt->getCalendar())->clone()); + if (!cal.isValid()) { dataerrln("(DateFormat::getCalendar)->clone() fails for locale %s", itemPtr->locale); } else { const CalAndFmtTestItem * caftItemPtr; @@ -4357,9 +4343,7 @@ void DateFormatTest::TestNonGregoFmtParse() } } } - delete cal; } - delete dfmt; } } } @@ -4789,7 +4773,7 @@ void DateFormatTest::TestNumberFormatOverride() { FieldPosition pos(FieldPosition::DONT_CARE); fmt->format(test_date,result, pos); - UnicodeString expected = ((UnicodeString)DATA[i][1]).unescape();; + UnicodeString expected = ((UnicodeString)DATA[i][1]).unescape(); if (result != expected) errln("FAIL: Expected " + expected + " get: " + result); @@ -5247,7 +5231,7 @@ void DateFormatTest::TestDayPeriodWithLocales() { sdf.setTimeZone(*tz); sdf.applyPattern(UnicodeString("hh:mm:ss BBBB")); - assertEquals("hh:mm:ss BBBB | 01:00:00 | es_CO", UnicodeString("01:00:00 a.\\u00A0m.").unescape(), + assertEquals("hh:mm:ss BBBB | 01:00:00 | es_CO", u"01:00:00 de la mañana", sdf.format(k010000, out.remove())); sdf = SimpleDateFormat(UnicodeString(), Locale("es"), errorCode); @@ -5557,6 +5541,20 @@ void DateFormatTest::TestParseRegression13744() { assertEquals("Error index", inDate.length(), pos.getErrorIndex()); } +void DateFormatTest::TestAdoptCalendarLeak() { + UErrorCode status = U_ZERO_ERROR; + // This test relies on the locale fullName exceeding ULOC_FULLNAME_CAPACITY + // in order for setKeywordValue to fail. + SimpleDateFormat sdf( + "d.M.y", + Locale("de__POSIX@colstrength=primary;currency=eur;em=default;" + "hours=h23;lb=strict;lw=normal;measure=metric;numbers=latn;" + "rg=atzzzz;sd=atat1;ss=none;timezone=Europe/Vienna"), + status); + ASSERT_OK(status); + sdf.adoptCalendar(Calendar::createInstance(status)); +} + #endif /* #if !UCONFIG_NO_FORMATTING */ //eof diff --git a/source/test/intltest/dtfmttst.h b/source/test/intltest/dtfmttst.h index efc5673..fd07b5a 100644 --- a/source/test/intltest/dtfmttst.h +++ b/source/test/intltest/dtfmttst.h @@ -262,6 +262,7 @@ public: void TestMinuteSecondFieldsInOddPlaces(); void TestDayPeriodParsing(); void TestParseRegression13744(); + void TestAdoptCalendarLeak(); private: UBool showParse(DateFormat &format, const UnicodeString &formattedString); diff --git a/source/test/intltest/dtifmtts.cpp b/source/test/intltest/dtifmtts.cpp index d230673..e2a9faa 100644 --- a/source/test/intltest/dtifmtts.cpp +++ b/source/test/intltest/dtifmtts.cpp @@ -132,7 +132,7 @@ void DateIntervalFormatTest::testAPI() { status = U_ZERO_ERROR; logln("Testing DateIntervalFormat clone"); - DateIntervalFormat* another = (DateIntervalFormat*)dtitvfmt->clone(); + DateIntervalFormat* another = dtitvfmt->clone(); if ( (*another) != (*dtitvfmt) ) { dataerrln("%s:%d ERROR: clone failed", __FILE__, __LINE__); } @@ -224,7 +224,7 @@ void DateIntervalFormatTest::testAPI() { } status = U_ZERO_ERROR; - DateFormat* nonConstFmt = (DateFormat*)fmt->clone(); + DateFormat* nonConstFmt = fmt->clone(); dtitvfmt->adoptDateFormat(nonConstFmt, status); anotherFmt = dtitvfmt->getDateFormat(); if ( (*fmt) != (*anotherFmt) || U_FAILURE(status) ) { @@ -250,7 +250,7 @@ void DateIntervalFormatTest::testAPI() { logln("Testing DateIntervalFormat constructor and assigment operator"); status = U_ZERO_ERROR; - DateFormat* constFmt = (constFmt*)dtitvfmt->getDateFormat()->clone(); + DateFormat* constFmt = dtitvfmt->getDateFormat()->clone(); inf = dtitvfmt->getDateIntervalInfo()->clone(); @@ -1483,7 +1483,7 @@ void DateIntervalFormatTest::stress(const char** data, int32_t data_length, GregorianCalendar* gregCal = new GregorianCalendar(loc, ec); if (!assertSuccess("GregorianCalendar()", ec)) return; const DateFormat* dformat = dtitvfmt->getDateFormat(); - DateFormat* newOne = (DateFormat*)dformat->clone(); + DateFormat* newOne = dformat->clone(); newOne->adoptCalendar(gregCal); //dtitvfmt->adoptDateFormat(newOne, ec); dtitvfmt->setDateFormat(*newOne, ec); @@ -1640,7 +1640,7 @@ void DateIntervalFormatTest::testTicket12065() { dataerrln("FAIL: DateIntervalFormat::createInstance failed for Locale::getEnglish()"); return; } - LocalPointer clone(dynamic_cast(formatter->clone())); + LocalPointer clone(formatter->clone()); if (*formatter != *clone) { errln("%s:%d DateIntervalFormat and clone are not equal.", __FILE__, __LINE__); return; @@ -1689,6 +1689,49 @@ void DateIntervalFormatTest::testFormattedDateInterval() { UPRV_LENGTHOF(expectedFieldPositions)); } + { + const char16_t* message = u"FormattedDateInterval identical dates test: no span field"; + const char16_t* expectedString = u"July 20, 2018"; + LocalPointer input1(Calendar::createInstance("en-GB", status)); + input1->set(2018, 6, 20); + FormattedDateInterval result = fmt->formatToValue(*input1, *input1, status); + static const UFieldPositionWithCategory expectedFieldPositions[] = { + // field, begin index, end index + {UFIELD_CATEGORY_DATE, UDAT_MONTH_FIELD, 0, 4}, + {UFIELD_CATEGORY_DATE, UDAT_DATE_FIELD, 5, 7}, + {UFIELD_CATEGORY_DATE, UDAT_YEAR_FIELD, 9, 13}}; + checkMixedFormattedValue( + message, + result, + expectedString, + expectedFieldPositions, + UPRV_LENGTHOF(expectedFieldPositions)); + } + + // Test sample code + { + LocalPointer input1(Calendar::createInstance("en-GB", status)); + LocalPointer input2(Calendar::createInstance("en-GB", status)); + input1->set(2018, 6, 20); + input2->set(2018, 7, 3); + + // Let fmt be a DateIntervalFormat for locale en-US and skeleton dMMMMy + // Let input1 be July 20, 2018 and input2 be August 3, 2018: + FormattedDateInterval result = fmt->formatToValue(*input1, *input2, status); + assertEquals("Expected output from format", + u"July 20 \u2013 August 3, 2018", result.toString(status)); + ConstrainedFieldPosition cfpos; + cfpos.constrainField(UFIELD_CATEGORY_DATE_INTERVAL_SPAN, 0); + if (result.nextPosition(cfpos, status)) { + assertEquals("Expect start index", 0, cfpos.getStart()); + assertEquals("Expect end index", 7, cfpos.getLimit()); + } else { + // No such span: can happen if input dates are equal. + } + assertFalse("No more than one occurrence of the field", + result.nextPosition(cfpos, status)); + } + // To test the fallback pattern behavior, make a custom DateIntervalInfo. DateIntervalInfo dtitvinf(status); dtitvinf.setFallbackIntervalPattern("<< {1} --- {0} >>", status); diff --git a/source/test/intltest/dtptngts.cpp b/source/test/intltest/dtptngts.cpp index 1827f21..02745c1 100644 --- a/source/test/intltest/dtptngts.cpp +++ b/source/test/intltest/dtptngts.cpp @@ -41,11 +41,13 @@ void IntlTestDateTimePatternGeneratorAPI::runIndexedTest( int32_t index, UBool e TESTCASE(5, testSkeletonsWithDayPeriods); TESTCASE(6, testGetFieldDisplayNames); TESTCASE(7, testJjMapping); + TESTCASE(8, test20640_HourCyclArsEnNH); + TESTCASE(9, testFallbackWithDefaultRootLocale); default: name = ""; break; } } -#define MAX_LOCALE 11 +#define MAX_LOCALE 12 /** * Test various generic API methods of DateTimePatternGenerator for API coverage. @@ -84,11 +86,12 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) {"zh", "Hans", "CN", ""}, // 7 {"zh", "TW", "", "calendar=roc"}, // 8 {"ru", "", "", ""}, // 9 - {"zh", "", "", "calendar=chinese"}, // 10 + {"zh", "", "", "calendar=chinese"}, // 10 + {"ja", "JP", "TRADITIONAL", ""}, // 11 }; // For Weds, Jan 13, 1999, 23:58:59 - UnicodeString patternResults[] = { + UnicodeString patternResults_en_US[] = { // en_US // 0 en_US UnicodeString("1/1999"), // 00: yM UnicodeString("Jan 1999"), // 01: yMMM @@ -107,7 +110,9 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) UnicodeString("13 Wed"), // 14: Ed -> d EEE UnicodeString("11:58:59.123 PM"), // 15: jmmssSSS -> "h:mm:ss.SSS a" UnicodeString("11:58"), // 16: JJmm + }; + UnicodeString patternResults_en_US_japanese[] = { // en_US@calendar=japanese // 1 en_US@calendar=japanese UnicodeString("1/11 H"), // 0: yM UnicodeString("Jan 11 Heisei"), // 1: yMMM @@ -126,7 +131,9 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) UnicodeString("13 Wed"), // 14: Ed -> d EEE UnicodeString("11:58:59.123 PM"), // 15: jmmssSSS -> "h:mm:ss.SSS a" UnicodeString("11:58"), // 16: JJmm + }; + UnicodeString patternResults_de_DE[] = { // de_DE // 2 de_DE UnicodeString("1.1999"), // 00: yM UnicodeString("Jan. 1999"), // 01: yMMM @@ -145,7 +152,9 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) UnicodeString("Mi., 13."), // 14: Ed -> EEE d. UnicodeString("23:58:59,123"), // 15: jmmssSSS -> "HH:mm:ss,SSS" UnicodeString("23:58"), // 16: JJmm + }; + UnicodeString patternResults_fi[] = { // fi // 3 fi UnicodeString("1.1999"), // 00: yM (fixed expected result per ticket:6626:) UnicodeString("tammi 1999"), // 01: yMMM @@ -164,7 +173,9 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) UnicodeString("ke 13."), // 14: Ed -> ccc d. UnicodeString("23.58.59,123"), // 15: jmmssSSS -> "H.mm.ss,SSS" UnicodeString("23.58"), // 16: JJmm + }; + UnicodeString patternResults_es[] = { // es // 4 es UnicodeString("1/1999"), // 00: yM -> "M/y" UnicodeString("ene. 1999"), // 01: yMMM -> "MMM y" @@ -183,7 +194,9 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) CharsToUnicodeString("mi\\u00E9. 13"), // 14: Ed -> "EEE d" UnicodeString("23:58:59,123"), // 15: jmmssSSS -> "H:mm:ss,SSS" UnicodeString("23:58"), // 16: JJmm + }; + UnicodeString patternResults_ja[] = { // ja // 5 ja UnicodeString("1999/1"), // 00: yM -> y/M CharsToUnicodeString("1999\\u5E741\\u6708"), // 01: yMMM -> y\u5E74M\u6708 @@ -202,7 +215,9 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) CharsToUnicodeString("13\\u65E5(\\u6C34)"), // 14: Ed -> d\u65E5(EEE) UnicodeString("23:58:59.123"), // 15: jmmssSSS -> "H:mm:ss.SSS" UnicodeString("23:58"), // 16: JJmm + }; + UnicodeString patternResults_ja_japanese[] = { // ja@calendar=japanese // 6 ja@calendar=japanese UnicodeString("H11/1"), // 00: yM -> GGGGGy/m CharsToUnicodeString("\\u5E73\\u621011\\u5E741\\u6708"), // 01: yMMM -> Gy\u5E74M\u6708 @@ -221,7 +236,9 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) CharsToUnicodeString("13\\u65E5(\\u6C34)"), // 14: Ed -> d\u65E5(EEE) UnicodeString("23:58:59.123"), // 15: jmmssSSS -> "H:mm:ss.SSS" UnicodeString("23:58"), // 16: JJmm + }; + UnicodeString patternResults_zh_Hans_CN[] = { // zh_Hans_CN // 7 zh_Hans_CN CharsToUnicodeString("1999\\u5E741\\u6708"), // 00: yM -> y\u5E74M\u6708 CharsToUnicodeString("1999\\u5E741\\u6708"), // 01: yMMM -> yyyy\u5E74MMM (fixed expected result per ticket:6626:) @@ -240,7 +257,9 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) 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 + }; + UnicodeString patternResults_zh_TW_roc[] = { // zh_TW@calendar=roc // 8 zh_TW@calendar=roc CharsToUnicodeString("\\u6C11\\u570B88/1"), // 00: yM -> Gy/M CharsToUnicodeString("\\u6C11\\u570B88\\u5E741\\u6708"), // 01: yMMM -> Gy\u5E74M\u6708 @@ -259,7 +278,9 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) CharsToUnicodeString("13 \\u9031\\u4E09"), // 14: Ed -> d E CharsToUnicodeString("\\u4E0B\\u534811:58:59.123"), // 15: jmmssSSS -> "ah:mm:ss.SSS" UnicodeString("11:58"), // 16: JJmm + }; + UnicodeString patternResults_ru[] = { // ru // 9 ru UnicodeString("01.1999"), // 00: yM -> MM.y CharsToUnicodeString("\\u044F\\u043D\\u0432. 1999 \\u0433."), // 01: yMMM -> LLL y @@ -278,7 +299,9 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) CharsToUnicodeString("\\u0441\\u0440, 13"), // 14: Ed -> EEE, d UnicodeString("23:58:59,123"), // 15: jmmssSSS -> "H:mm:ss,SSS" UnicodeString("23:58"), // 16: JJmm + }; + UnicodeString patternResults_zh_chinese[] = { // zh@calendar=chinese // 10 zh@calendar=chinese CharsToUnicodeString("1998\\u620A\\u5BC5\\u5E74\\u5341\\u4E00\\u6708"), // 00: yMMM CharsToUnicodeString("1998\\u620A\\u5BC5\\u5E74\\u5341\\u4E00\\u6708"), // 01: yMMM @@ -297,8 +320,42 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) CharsToUnicodeString("26\\u65E5\\u5468\\u4E09"), // 14: Ed -> d\u65E5EEE CharsToUnicodeString("\\u4E0B\\u534811:58:59.123"), // 15: jmmssSS UnicodeString("11:58"), // 16: JJmm + }; - UnicodeString(), + UnicodeString patternResults_ja_jp_traditional[] = { + // ja_JP_TRADITIONAL // 11 ja_JP_TRADITIONAL + u"AD1999/1", // 00: yM + u"西暦1999å¹´1月", // 01: yMMM + u"1999å¹´1月13日", // 02: yMd + u"西暦1999å¹´1月13日", // 03: yMMMd + u"1/13", // 04: Md + u"1月13日", // 05: MMMd + u"1月13日", // 06: MMMMd + u"西暦1999/Q1", // 07: yQQQ + u"午後11:58", // 08: hhmm + u"23:58", // 09: HHmm + u"23:58", // 10: jjmm + u"58:59", // 11: mmss + u"西暦1999å¹´1月", // 12: yyyyMMMM + u"1月13日(æ°´)", // 13: MMMEd + u"13日(æ°´)", // 14: Ed + u"23:58:59.123", // 15: jmmssSSS + u"23:58", // 16: JJmm + }; + + UnicodeString* patternResults[] = { + patternResults_en_US, // 0 + patternResults_en_US_japanese, // 1 + patternResults_de_DE, // 2 + patternResults_fi, // 3 + patternResults_es, // 4 + patternResults_ja, // 5 + patternResults_ja_japanese, // 6 + patternResults_zh_Hans_CN, // 7 + patternResults_zh_TW_roc, // 8 + patternResults_ru, // 9 + patternResults_zh_chinese, // 10 + patternResults_ja_jp_traditional, // 11 }; UnicodeString patternTests2[] = { @@ -634,6 +691,7 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) UDate testDate= LocaleTest::date(99, 0, 13, 23, 58, 59) + 123.0; while (localeIndex < MAX_LOCALE ) { + resultIndex=0; int32_t dataIndex=0; UnicodeString bestPattern; @@ -652,9 +710,12 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) SimpleDateFormat sdf(bestPattern, loc, status); resultDate.remove(); resultDate = sdf.format(testDate, resultDate); - if ( resultDate != patternResults[resultIndex] ) { + if ( resultDate != patternResults[localeIndex][resultIndex] ) { + auto* calendar = sdf.getCalendar(); errln(UnicodeString("\nERROR: Test various skeletons[") + (dataIndex-1) + UnicodeString("], localeIndex ") + localeIndex + - UnicodeString(". Got: \"") + resultDate + UnicodeString("\" Expected: \"") + patternResults[resultIndex] + "\"" ); + u". Got: \"" + resultDate + + u"\" with calendar " + calendar->getType() + + u" Expected: \"" + patternResults[localeIndex][resultIndex] + u"\""); } resultIndex++; @@ -1328,12 +1389,13 @@ void IntlTestDateTimePatternGeneratorAPI::testJjMapping() { for (; *charPtr != (UChar)0; charPtr++) { if (jPatSkeleton.indexOf(*charPtr) >= 0) { if (shortPatSkeleton.indexOf(*charPtr) < 0) { - char jcBuf[2], spBuf[32]; + char jcBuf[2], spBuf[32], jpBuf[32]; u_austrncpy(jcBuf, charPtr, 1); jcBuf[1] = 0; shortPattern.extract(0, shortPattern.length(), spBuf, 32); + jPattern.extract(0, jPattern.length(), jpBuf, 32); const char* dfmtCalType = (dfmt->getCalendar())->getType(); - errln("ERROR: locale %s, expected j resolved char %s to occur in short time pattern %s for %s", localeID, jcBuf, spBuf, dfmtCalType); + errln("ERROR: locale %s, expected j resolved char %s to occur in short time pattern '%s' for %s (best pattern: '%s')", localeID, jcBuf, spBuf, dfmtCalType, jpBuf); } break; } @@ -1341,4 +1403,77 @@ void IntlTestDateTimePatternGeneratorAPI::testJjMapping() { } } +void IntlTestDateTimePatternGeneratorAPI::test20640_HourCyclArsEnNH() { + IcuTestErrorCode status(*this, "test20640_HourCyclArsEnNH"); + + const struct TestCase { + const char* localeName; + const char16_t* expectedDtpgPattern; + const char16_t* expectedTimePattern; + } cases[] = { + // ars is interesting because it does not have a region, but it aliases + // to ar_SA, which has a region. + {"ars", u"h a", u"h:mm a"}, + // en_NH is interesting because NH is a deprecated region code; + // formerly New Hebrides, now Vanuatu => VU => h. + {"en_NH", u"h a", u"h:mm a"}, + // ch_ZH is a typo (should be zh_CN), but we should fail gracefully. + // {"cn_ZH", u"HH", u"H:mm"}, // TODO(ICU-20653): Desired behavior + {"cn_ZH", u"HH", u"h:mm a"}, // Actual behavior + // a non-BCP47 locale without a country code should not fail + {"ja_TRADITIONAL", u"H時", u"H:mm"}, + }; + + for (auto& cas : cases) { + status.setScope(cas.localeName); + + Locale loc(cas.localeName); + LocalPointer dtf(DateFormat::createTimeInstance(DateFormat::kShort, loc), status); + LocalPointer dtpg(DateTimePatternGenerator::createInstance(loc, status)); + if (status.errIfFailureAndReset()) { + return; + } + + UnicodeString timePattern; + dynamic_cast(dtf.getAlias())->toPattern(timePattern); + UnicodeString dtpgPattern = dtpg->getBestPattern(u"j", status); + if (status.errIfFailureAndReset()) { + return; + } + + assertEquals(UnicodeString("dtpgPattern ") + cas.localeName, + cas.expectedDtpgPattern, dtpgPattern); + assertEquals(UnicodeString("timePattern ") + cas.localeName, + cas.expectedTimePattern, timePattern); + } + +} + +void IntlTestDateTimePatternGeneratorAPI::testFallbackWithDefaultRootLocale() { + UErrorCode status = U_ZERO_ERROR; + char original[ULOC_FULLNAME_CAPACITY]; + + uprv_strcpy(original, uloc_getDefault()); + uloc_setDefault("root", &status); + if (U_FAILURE(status)) { + errln("ERROR: Failed to change the default locale to root! Default is: %s\n", uloc_getDefault()); + } + + DateTimePatternGenerator* dtpg = icu::DateTimePatternGenerator::createInstance("abcdedf", status); + + if (U_FAILURE(status)) { + errln("ERROR: expected createInstance with invalid locale to succeed. Status: %s", u_errorName(status)); + } + if (status != U_USING_DEFAULT_WARNING) { + errln("ERROR: expected createInstance to return U_USING_DEFAULT_WARNING for invalid locale and default root locale. Status: %s", u_errorName(status)); + } + + delete dtpg; + + uloc_setDefault(original, &status); + if (U_FAILURE(status)) { + errln("ERROR: Failed to change the default locale back to %s\n", original); + } +} + #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/dtptngts.h b/source/test/intltest/dtptngts.h index 93842a2..c0bebcc 100644 --- a/source/test/intltest/dtptngts.h +++ b/source/test/intltest/dtptngts.h @@ -33,6 +33,8 @@ private: void testSkeletonsWithDayPeriods(); void testGetFieldDisplayNames(); void testJjMapping(); + void test20640_HourCyclArsEnNH(); + void testFallbackWithDefaultRootLocale(); }; #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/erarulestest.cpp b/source/test/intltest/erarulestest.cpp index b550361..115e7ea 100644 --- a/source/test/intltest/erarulestest.cpp +++ b/source/test/intltest/erarulestest.cpp @@ -8,6 +8,7 @@ #include "unicode/calendar.h" #include "unicode/localpointer.h" #include "unicode/unistr.h" +#include "unicode/timezone.h" #include "erarules.h" #include "erarulestest.h" @@ -73,7 +74,7 @@ void EraRulesTest::testAPIs() { + calId); } - LocalPointer cal(Calendar::createInstance("en", status)); + LocalPointer cal(Calendar::createInstance(*TimeZone::getGMT(), "en", status)); if (U_FAILURE(status)) { errln("Failed to create a Calendar instance."); continue; diff --git a/source/test/intltest/numbertest_stringbuilder.cpp b/source/test/intltest/formatted_string_builder_test.cpp similarity index 78% rename from source/test/intltest/numbertest_stringbuilder.cpp rename to source/test/intltest/formatted_string_builder_test.cpp index eaf9a7a..4ce63da 100644 --- a/source/test/intltest/numbertest_stringbuilder.cpp +++ b/source/test/intltest/formatted_string_builder_test.cpp @@ -5,8 +5,28 @@ #if !UCONFIG_NO_FORMATTING +#include "unicode/utf16.h" #include "putilimp.h" -#include "numbertest.h" +#include "intltest.h" +#include "formatted_string_builder.h" +#include "formattedval_impl.h" + + +class FormattedStringBuilderTest : public IntlTest { + public: + void testInsertAppendUnicodeString(); + void testSplice(); + void testInsertAppendCodePoint(); + void testCopy(); + void testFields(); + void testUnlimitedCapacity(); + void testCodePoints(); + + void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0); + + private: + void assertEqualsImpl(const UnicodeString &a, const FormattedStringBuilder &b); +}; static const char16_t *EXAMPLE_STRINGS[] = { u"", @@ -17,9 +37,9 @@ static const char16_t *EXAMPLE_STRINGS[] = { u"with combining characters like 🇦🇧🇨🇩", u"A very very very very very very very very very very long string to force heap"}; -void NumberStringBuilderTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char *) { +void FormattedStringBuilderTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char *) { if (exec) { - logln("TestSuite NumberStringBuilderTest: "); + logln("TestSuite FormattedStringBuilderTest: "); } TESTCASE_AUTO_BEGIN; TESTCASE_AUTO(testInsertAppendUnicodeString); @@ -32,14 +52,14 @@ void NumberStringBuilderTest::runIndexedTest(int32_t index, UBool exec, const ch TESTCASE_AUTO_END; } -void NumberStringBuilderTest::testInsertAppendUnicodeString() { +void FormattedStringBuilderTest::testInsertAppendUnicodeString() { UErrorCode status = U_ZERO_ERROR; UnicodeString sb1; - NumberStringBuilder sb2; + FormattedStringBuilder sb2; for (const char16_t* strPtr : EXAMPLE_STRINGS) { UnicodeString str(strPtr); - NumberStringBuilder sb3; + FormattedStringBuilder sb3; sb1.append(str); // Note: UNUM_FIELD_COUNT is like passing null in Java sb2.append(str, UNUM_FIELD_COUNT, status); @@ -50,7 +70,7 @@ void NumberStringBuilderTest::testInsertAppendUnicodeString() { assertEqualsImpl(str, sb3); UnicodeString sb4; - NumberStringBuilder sb5; + FormattedStringBuilder sb5; sb4.append(u"😇"); sb4.append(str); sb4.append(u"xx"); @@ -68,7 +88,7 @@ void NumberStringBuilderTest::testInsertAppendUnicodeString() { assertEqualsImpl(sb4, sb5); UnicodeString sb4cp(sb4); - NumberStringBuilder sb5cp(sb5); + FormattedStringBuilder sb5cp(sb5); sb4.append(sb4cp); sb5.append(sb5cp, status); assertSuccess("Appending again to sb5", status); @@ -76,7 +96,7 @@ void NumberStringBuilderTest::testInsertAppendUnicodeString() { } } -void NumberStringBuilderTest::testSplice() { +void FormattedStringBuilderTest::testSplice() { static const struct TestCase { const char16_t* input; const int32_t startThis; @@ -94,7 +114,7 @@ void NumberStringBuilderTest::testSplice() { UErrorCode status = U_ZERO_ERROR; UnicodeString sb1; - NumberStringBuilder sb2; + FormattedStringBuilder sb2; for (auto cas : cases) { for (const char16_t* replacementPtr : EXAMPLE_STRINGS) { UnicodeString replacement(replacementPtr); @@ -125,14 +145,14 @@ void NumberStringBuilderTest::testSplice() { } } -void NumberStringBuilderTest::testInsertAppendCodePoint() { +void FormattedStringBuilderTest::testInsertAppendCodePoint() { static const UChar32 cases[] = { 0, 1, 60, 127, 128, 0x7fff, 0x8000, 0xffff, 0x10000, 0x1f000, 0x10ffff}; UErrorCode status = U_ZERO_ERROR; UnicodeString sb1; - NumberStringBuilder sb2; + FormattedStringBuilder sb2; for (UChar32 cas : cases) { - NumberStringBuilder sb3; + FormattedStringBuilder sb3; sb1.append(cas); sb2.appendCodePoint(cas, UNUM_FIELD_COUNT, status); assertSuccess("Appending to sb2", status); @@ -147,7 +167,7 @@ void NumberStringBuilderTest::testInsertAppendCodePoint() { sb3.charAt(0)); UnicodeString sb4; - NumberStringBuilder sb5; + FormattedStringBuilder sb5; sb4.append(u"😇xx"); sb4.insert(2, cas); sb5.append(u"😇xx", UNUM_FIELD_COUNT, status); @@ -155,16 +175,28 @@ void NumberStringBuilderTest::testInsertAppendCodePoint() { sb5.insertCodePoint(2, cas, UNUM_FIELD_COUNT, status); assertSuccess("Inserting into sb5", status); assertEqualsImpl(sb4, sb5); + + UnicodeString sb6; + FormattedStringBuilder sb7; + sb6.append(cas); + if (U_IS_SUPPLEMENTARY(cas)) { + sb7.appendChar16(U16_TRAIL(cas), UNUM_FIELD_COUNT, status); + sb7.insertChar16(0, U16_LEAD(cas), UNUM_FIELD_COUNT, status); + } else { + sb7.insertChar16(0, cas, UNUM_FIELD_COUNT, status); + } + assertSuccess("Insert/append into sb7", status); + assertEqualsImpl(sb6, sb7); } } -void NumberStringBuilderTest::testCopy() { +void FormattedStringBuilderTest::testCopy() { UErrorCode status = U_ZERO_ERROR; for (UnicodeString str : EXAMPLE_STRINGS) { - NumberStringBuilder sb1; + FormattedStringBuilder sb1; sb1.append(str, UNUM_FIELD_COUNT, status); assertSuccess("Appending to sb1 first time", status); - NumberStringBuilder sb2(sb1); + FormattedStringBuilder sb2(sb1); assertTrue("Content should equal itself", sb1.contentEquals(sb2)); sb1.append("12345", UNUM_FIELD_COUNT, status); @@ -173,25 +205,28 @@ void NumberStringBuilderTest::testCopy() { } } -void NumberStringBuilderTest::testFields() { +void FormattedStringBuilderTest::testFields() { UErrorCode status = U_ZERO_ERROR; // Note: This is a C++11 for loop that calls the UnicodeString constructor on each iteration. for (UnicodeString str : EXAMPLE_STRINGS) { - NumberStringBuilder sb; + FormattedValueStringBuilderImpl sbi(0); + FormattedStringBuilder& sb = sbi.getStringRef(); sb.append(str, UNUM_FIELD_COUNT, status); assertSuccess("Appending to sb", status); sb.append(str, UNUM_CURRENCY_FIELD, status); assertSuccess("Appending to sb", status); assertEquals("Reference string copied twice", str.length() * 2, sb.length()); for (int32_t i = 0; i < str.length(); i++) { - assertEquals("Null field first", (Field) UNUM_FIELD_COUNT, sb.fieldAt(i)); - assertEquals("Currency field second", (Field) UNUM_CURRENCY_FIELD, sb.fieldAt(i + str.length())); + assertEquals("Null field first", + (FormattedStringBuilder::Field) UNUM_FIELD_COUNT, sb.fieldAt(i)); + assertEquals("Currency field second", + (FormattedStringBuilder::Field) UNUM_CURRENCY_FIELD, sb.fieldAt(i + str.length())); } // Very basic FieldPosition test. More robust tests happen in NumberFormatTest. // Let NumberFormatTest also take care of FieldPositionIterator material. FieldPosition fp(UNUM_CURRENCY_FIELD); - sb.nextFieldPosition(fp, status); + sbi.nextFieldPosition(fp, status); assertSuccess("Populating the FieldPosition", status); assertEquals("Currency start position", str.length(), fp.getBeginIndex()); assertEquals("Currency end position", str.length() * 2, fp.getEndIndex()); @@ -200,17 +235,17 @@ void NumberStringBuilderTest::testFields() { sb.insertCodePoint(2, 100, UNUM_INTEGER_FIELD, status); assertSuccess("Inserting code point into sb", status); assertEquals("New length", str.length() * 2 + 1, sb.length()); - assertEquals("Integer field", (Field) UNUM_INTEGER_FIELD, sb.fieldAt(2)); + assertEquals("Integer field", (FormattedStringBuilder::Field) UNUM_INTEGER_FIELD, sb.fieldAt(2)); } - NumberStringBuilder old(sb); + FormattedStringBuilder old(sb); sb.append(old, status); assertSuccess("Appending to myself", status); int32_t numNull = 0; int32_t numCurr = 0; int32_t numInt = 0; for (int32_t i = 0; i < sb.length(); i++) { - Field field = sb.fieldAt(i); + FormattedStringBuilder::Field field = sb.fieldAt(i); assertEquals("Field should equal location in old", old.fieldAt(i % old.length()), field); if (field == UNUM_FIELD_COUNT) { numNull++; @@ -228,9 +263,9 @@ void NumberStringBuilderTest::testFields() { } } -void NumberStringBuilderTest::testUnlimitedCapacity() { +void FormattedStringBuilderTest::testUnlimitedCapacity() { UErrorCode status = U_ZERO_ERROR; - NumberStringBuilder builder; + FormattedStringBuilder builder; // The builder should never fail upon repeated appends. for (int i = 0; i < 1000; i++) { UnicodeString message("Iteration #"); @@ -242,9 +277,9 @@ void NumberStringBuilderTest::testUnlimitedCapacity() { } } -void NumberStringBuilderTest::testCodePoints() { +void FormattedStringBuilderTest::testCodePoints() { UErrorCode status = U_ZERO_ERROR; - NumberStringBuilder nsb; + FormattedStringBuilder nsb; assertEquals("First is -1 on empty string", -1, nsb.getFirstCodePoint()); assertEquals("Last is -1 on empty string", -1, nsb.getLastCodePoint()); assertEquals("Length is 0 on empty string", 0, nsb.codePointCount()); @@ -268,7 +303,7 @@ void NumberStringBuilderTest::testCodePoints() { assertEquals("Code point count is 2", 2, nsb.codePointCount()); } -void NumberStringBuilderTest::assertEqualsImpl(const UnicodeString &a, const NumberStringBuilder &b) { +void FormattedStringBuilderTest::assertEqualsImpl(const UnicodeString &a, const FormattedStringBuilder &b) { // TODO: Why won't this compile without the IntlTest:: qualifier? IntlTest::assertEquals("Lengths should be the same", a.length(), b.length()); IntlTest::assertEquals("Code point counts should be the same", a.countChar32(), b.codePointCount()); @@ -285,4 +320,9 @@ void NumberStringBuilderTest::assertEqualsImpl(const UnicodeString &a, const Num } } + +extern IntlTest *createFormattedStringBuilderTest() { + return new FormattedStringBuilderTest(); +} + #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/idnaconf.cpp b/source/test/intltest/idnaconf.cpp index 6db4f8d..cc8d89a 100644 --- a/source/test/intltest/idnaconf.cpp +++ b/source/test/intltest/idnaconf.cpp @@ -173,7 +173,7 @@ UBool IdnaConfTest::ReadOneLine(UnicodeString& buf){ curOffset += 1 + t; // BACKSLAH and NewlineMark continue; } - }; + } buf.append(c); curOffset++; } diff --git a/source/test/intltest/idnaref.cpp b/source/test/intltest/idnaref.cpp index 9e79103..afec7c9 100644 --- a/source/test/intltest/idnaref.cpp +++ b/source/test/intltest/idnaref.cpp @@ -198,6 +198,17 @@ CLEANUP: return b2Len; } + +static NamePrepTransform* getInstance(UErrorCode& status){ + TestIDNA *thisTest = dynamic_cast(IntlTest::gTest); + if (thisTest == nullptr && U_SUCCESS(status)) { + status = U_INTERNAL_PROGRAM_ERROR; + } + if (U_FAILURE(status)) return nullptr; + return thisTest->getInstance(status); +} + + static int32_t convertFromPuny( const UChar* src, int32_t srcLength, UChar* dest, int32_t destCapacity, UErrorCode& status){ @@ -288,7 +299,7 @@ idnaref_toASCII(const UChar* src, int32_t srcLength, b1[b1Len++] = src[j]; } - NamePrepTransform* prep = TestIDNA::getInstance(*status); + NamePrepTransform* prep = getInstance(*status); if(U_FAILURE(*status)){ goto CLEANUP; } @@ -439,7 +450,7 @@ idnaref_toUnicode(const UChar* src, int32_t srcLength, reqLength=0; // UParseError parseError; - NamePrepTransform* prep = TestIDNA::getInstance(*status); + NamePrepTransform* prep = getInstance(*status); b1Len = 0; UBool* caseFlags = NULL; @@ -694,7 +705,7 @@ idnaref_IDNToASCII( const UChar* src, int32_t srcLength, int32_t reqLength = 0; // UParseError parseError; - NamePrepTransform* prep = TestIDNA::getInstance(*status); + NamePrepTransform* prep = getInstance(*status); //initialize pointers to stack buffers UChar b1Stack[MAX_LABEL_BUFFER_SIZE]; @@ -850,7 +861,7 @@ idnaref_IDNToUnicode( const UChar* src, int32_t srcLength, UBool done = FALSE; - NamePrepTransform* prep = TestIDNA::getInstance(*status); + NamePrepTransform* prep = getInstance(*status); //initialize pointers to stack buffers UChar b1Stack[MAX_LABEL_BUFFER_SIZE]; diff --git a/source/test/intltest/incaltst.cpp b/source/test/intltest/incaltst.cpp index 60c699d..4c58644 100644 --- a/source/test/intltest/incaltst.cpp +++ b/source/test/intltest/incaltst.cpp @@ -22,11 +22,12 @@ #include #include "caltest.h" -#define CHECK(status, msg) \ +#define CHECK(status, msg) UPRV_BLOCK_MACRO_BEGIN { \ if (U_FAILURE(status)) { \ - dataerrln((UnicodeString(u_errorName(status)) + UnicodeString(" : " ) )+ msg); \ + dataerrln((UnicodeString(u_errorName(status)) + UnicodeString(" : " ) )+ msg); \ return; \ - } + } \ +} UPRV_BLOCK_MACRO_END static UnicodeString escape( const UnicodeString&src) @@ -417,34 +418,28 @@ void IntlCalendarTest::TestBuddhistFormat() { // First, a contrived English test.. UDate aDate = 999932400000.0; - SimpleDateFormat *fmt = new SimpleDateFormat(UnicodeString("MMMM d, yyyy G"), Locale("en_US@calendar=buddhist"), status); + SimpleDateFormat fmt(UnicodeString("MMMM d, yyyy G"), Locale("en_US@calendar=buddhist"), status); CHECK(status, "creating date format instance"); - SimpleDateFormat *fmt2 = new SimpleDateFormat(UnicodeString("MMMM d, yyyy G"), Locale("en_US@calendar=gregorian"), status); + SimpleDateFormat fmt2(UnicodeString("MMMM d, yyyy G"), Locale("en_US@calendar=gregorian"), status); CHECK(status, "creating gregorian date format instance"); - if(!fmt) { - errln("Couldn't create en_US instance"); + UnicodeString str; + fmt2.format(aDate, str); + logln(UnicodeString() + "Test Date: " + str); + str.remove(); + fmt.format(aDate, str); + logln(UnicodeString() + "as Buddhist Calendar: " + escape(str)); + UnicodeString expected("September 8, 2544 BE"); + if(str != expected) { + errln("Expected " + escape(expected) + " but got " + escape(str)); + } + UDate otherDate = fmt.parse(expected, status); + if(otherDate != aDate) { + UnicodeString str3; + fmt.format(otherDate, str3); + errln("Parse incorrect of " + escape(expected) + " - wanted " + aDate + " but got " + otherDate + ", " + escape(str3)); } else { - UnicodeString str; - fmt2->format(aDate, str); - logln(UnicodeString() + "Test Date: " + str); - str.remove(); - fmt->format(aDate, str); - logln(UnicodeString() + "as Buddhist Calendar: " + escape(str)); - UnicodeString expected("September 8, 2544 BE"); - if(str != expected) { - errln("Expected " + escape(expected) + " but got " + escape(str)); - } - UDate otherDate = fmt->parse(expected, status); - if(otherDate != aDate) { - UnicodeString str3; - fmt->format(otherDate, str3); - errln("Parse incorrect of " + escape(expected) + " - wanted " + aDate + " but got " + otherDate + ", " + escape(str3)); - } else { - logln("Parsed OK: " + expected); - } - delete fmt; + logln("Parsed OK: " + expected); } - delete fmt2; CHECK(status, "Error occurred testing Buddhist Calendar in English "); @@ -491,81 +486,68 @@ void IntlCalendarTest::TestBuddhistFormat() { void IntlCalendarTest::TestJapaneseFormat() { - Calendar *cal; + LocalPointer cal; UErrorCode status = U_ZERO_ERROR; - cal = Calendar::createInstance("ja_JP@calendar=japanese", status); + cal.adoptInstead(Calendar::createInstance("ja_JP@calendar=japanese", status)); CHECK(status, UnicodeString("Creating ja_JP@calendar=japanese calendar")); - Calendar *cal2 = cal->clone(); - delete cal; - cal = NULL; + LocalPointer cal2(cal->clone()); + cal.adoptInstead(nullptr); // Test simple parse/format with adopt UDate aDate = 999932400000.0; - SimpleDateFormat *fmt = new SimpleDateFormat(UnicodeString("MMMM d, yy G"), Locale("en_US@calendar=japanese"), status); - SimpleDateFormat *fmt2 = new SimpleDateFormat(UnicodeString("MMMM d, yyyy G"), Locale("en_US@calendar=gregorian"), status); + SimpleDateFormat fmt(UnicodeString("MMMM d, yy G"), Locale("en_US@calendar=japanese"), status); + SimpleDateFormat fmt2(UnicodeString("MMMM d, yyyy G"), Locale("en_US@calendar=gregorian"), status); CHECK(status, "creating date format instance"); - if(!fmt) { - errln("Couldn't create en_US instance"); + UnicodeString str; + fmt2.format(aDate, str); + logln(UnicodeString() + "Test Date: " + str); + str.remove(); + fmt.format(aDate, str); + logln(UnicodeString() + "as Japanese Calendar: " + str); + UnicodeString expected("September 8, 13 Heisei"); + if(str != expected) { + errln("Expected " + expected + " but got " + str); + } + UDate otherDate = fmt.parse(expected, status); + if(otherDate != aDate) { + UnicodeString str3; + ParsePosition pp; + fmt.parse(expected, *cal2, pp); + fmt.format(otherDate, str3); + errln("Parse incorrect of " + expected + " - wanted " + aDate + " but got " + " = " + otherDate + ", " + str3 + " = " + CalendarTest::calToStr(*cal2) ); + } else { - UnicodeString str; - fmt2->format(aDate, str); - logln(UnicodeString() + "Test Date: " + str); - str.remove(); - fmt->format(aDate, str); - logln(UnicodeString() + "as Japanese Calendar: " + str); - UnicodeString expected("September 8, 13 Heisei"); - if(str != expected) { - errln("Expected " + expected + " but got " + str); - } - UDate otherDate = fmt->parse(expected, status); - if(otherDate != aDate) { - UnicodeString str3; - ParsePosition pp; - fmt->parse(expected, *cal2, pp); - fmt->format(otherDate, str3); - errln("Parse incorrect of " + expected + " - wanted " + aDate + " but got " + " = " + otherDate + ", " + str3 + " = " + CalendarTest::calToStr(*cal2) ); - - } else { - logln("Parsed OK: " + expected); - } - delete fmt; + logln("Parsed OK: " + expected); } // Test parse with incomplete information - fmt = new SimpleDateFormat(UnicodeString("G y"), Locale("en_US@calendar=japanese"), status); + SimpleDateFormat fmti(UnicodeString("G y"), Locale("en_US@calendar=japanese"), status); aDate = -3197117222000.0; CHECK(status, "creating date format instance"); - if(!fmt) { - errln("Coudln't create en_US instance"); - } else { - UnicodeString str; - fmt2->format(aDate, str); - logln(UnicodeString() + "Test Date: " + str); - str.remove(); - fmt->format(aDate, str); - logln(UnicodeString() + "as Japanese Calendar: " + str); - UnicodeString expected("Meiji 1"); - if(str != expected) { - errln("Expected " + expected + " but got " + str); - } - UDate otherDate = fmt->parse(expected, status); - if(otherDate != aDate) { - UnicodeString str3; - ParsePosition pp; - fmt->parse(expected, *cal2, pp); - fmt->format(otherDate, str3); - errln("Parse incorrect of " + expected + " - wanted " + aDate + " but got " + " = " + + str.remove(); + fmt2.format(aDate, str); + logln(UnicodeString() + "Test Date: " + str); + str.remove(); + fmti.format(aDate, str); + logln(UnicodeString() + "as Japanese Calendar: " + str); + expected = u"Meiji 1"; + if(str != expected) { + errln("Expected " + expected + " but got " + str); + } + otherDate = fmti.parse(expected, status); + if(otherDate != aDate) { + UnicodeString str3; + ParsePosition pp; + fmti.parse(expected, *cal2, pp); + fmti.format(otherDate, str3); + errln("Parse incorrect of " + expected + " - wanted " + aDate + " but got " + " = " + otherDate + ", " + str3 + " = " + CalendarTest::calToStr(*cal2) ); - } else { - logln("Parsed OK: " + expected); - } - delete fmt; + } else { + logln("Parsed OK: " + expected); } - delete cal2; - delete fmt2; CHECK(status, "Error occurred"); // Now, try in Japanese @@ -625,98 +607,83 @@ void IntlCalendarTest::TestJapaneseFormat() { void IntlCalendarTest::TestJapanese3860() { - Calendar *cal; + LocalPointer cal; UErrorCode status = U_ZERO_ERROR; - cal = Calendar::createInstance("ja_JP@calendar=japanese", status); + cal.adoptInstead(Calendar::createInstance("ja_JP@calendar=japanese", status)); CHECK(status, UnicodeString("Creating ja_JP@calendar=japanese calendar")); - Calendar *cal2 = cal->clone(); - SimpleDateFormat *fmt2 = new SimpleDateFormat(UnicodeString("HH:mm:ss.S MMMM d, yyyy G"), Locale("en_US@calendar=gregorian"), status); + LocalPointer cal2(cal->clone()); + SimpleDateFormat fmt2(UnicodeString("HH:mm:ss.S MMMM d, yyyy G"), Locale("en_US@calendar=gregorian"), status); UnicodeString str; - { // Test simple parse/format with adopt UDate aDate = 0; - + // Test parse with missing era (should default to current era, heisei) // Test parse with incomplete information logln("Testing parse w/ missing era..."); - SimpleDateFormat *fmt = new SimpleDateFormat(UnicodeString("y/M/d"), Locale("ja_JP@calendar=japanese"), status); + SimpleDateFormat fmt(UnicodeString("y/M/d"), Locale("ja_JP@calendar=japanese"), status); CHECK(status, "creating date format instance"); - if(!fmt) { - errln("Couldn't create en_US instance"); - } else { - UErrorCode s2 = U_ZERO_ERROR; - cal2->clear(); - UnicodeString samplestr("1/5/9"); - logln(UnicodeString() + "Test Year: " + samplestr); - aDate = fmt->parse(samplestr, s2); - ParsePosition pp=0; - fmt->parse(samplestr, *cal2, pp); - CHECK(s2, "parsing the 1/5/9 string"); - logln("*cal2 after 159 parse:"); - str.remove(); - fmt2->format(aDate, str); - logln(UnicodeString() + "as Gregorian Calendar: " + str); - - cal2->setTime(aDate, s2); - int32_t gotYear = cal2->get(UCAL_YEAR, s2); - int32_t gotEra = cal2->get(UCAL_ERA, s2); - int32_t expectYear = 1; - int32_t expectEra = JapaneseCalendar::getCurrentEra(); - if((gotYear!=1) || (gotEra != expectEra)) { - errln(UnicodeString("parse "+samplestr+" of 'y/M/d' as Japanese Calendar, expected year ") + expectYear + + UErrorCode s2 = U_ZERO_ERROR; + cal2->clear(); + UnicodeString samplestr("1/5/9"); + logln(UnicodeString() + "Test Year: " + samplestr); + aDate = fmt.parse(samplestr, s2); + ParsePosition pp=0; + fmt.parse(samplestr, *cal2, pp); + CHECK(s2, "parsing the 1/5/9 string"); + logln("*cal2 after 159 parse:"); + str.remove(); + fmt2.format(aDate, str); + logln(UnicodeString() + "as Gregorian Calendar: " + str); + + cal2->setTime(aDate, s2); + int32_t gotYear = cal2->get(UCAL_YEAR, s2); + int32_t gotEra = cal2->get(UCAL_ERA, s2); + int32_t expectYear = 1; + int32_t expectEra = JapaneseCalendar::getCurrentEra(); + if((gotYear!=1) || (gotEra != expectEra)) { + errln(UnicodeString("parse "+samplestr+" of 'y/M/d' as Japanese Calendar, expected year ") + expectYear + UnicodeString(" and era ") + expectEra +", but got year " + gotYear + " and era " + gotEra + " (Gregorian:" + str +")"); - } else { - logln(UnicodeString() + " year: " + gotYear + ", era: " + gotEra); - } - delete fmt; + } else { + logln(UnicodeString() + " year: " + gotYear + ", era: " + gotEra); } } { // Test simple parse/format with adopt UDate aDate = 0; - + // Test parse with missing era (should default to current era, heisei) // Test parse with incomplete information logln("Testing parse w/ just year..."); - SimpleDateFormat *fmt = new SimpleDateFormat(UnicodeString("y"), Locale("ja_JP@calendar=japanese"), status); + SimpleDateFormat fmt(UnicodeString("y"), Locale("ja_JP@calendar=japanese"), status); CHECK(status, "creating date format instance"); - if(!fmt) { - errln("Couldn't create en_US instance"); - } else { - UErrorCode s2 = U_ZERO_ERROR; - cal2->clear(); - UnicodeString samplestr("1"); - logln(UnicodeString() + "Test Year: " + samplestr); - aDate = fmt->parse(samplestr, s2); - ParsePosition pp=0; - fmt->parse(samplestr, *cal2, pp); - CHECK(s2, "parsing the 1 string"); - logln("*cal2 after 1 parse:"); - str.remove(); - fmt2->format(aDate, str); - logln(UnicodeString() + "as Gregorian Calendar: " + str); - - cal2->setTime(aDate, s2); - int32_t gotYear = cal2->get(UCAL_YEAR, s2); - int32_t gotEra = cal2->get(UCAL_ERA, s2); - int32_t expectYear = 1; - int32_t expectEra = JapaneseCalendar::getCurrentEra(); - if((gotYear!=1) || (gotEra != expectEra)) { - errln(UnicodeString("parse "+samplestr+" of 'y' as Japanese Calendar, expected year ") + expectYear + + UErrorCode s2 = U_ZERO_ERROR; + cal2->clear(); + UnicodeString samplestr("1"); + logln(UnicodeString() + "Test Year: " + samplestr); + aDate = fmt.parse(samplestr, s2); + ParsePosition pp=0; + fmt.parse(samplestr, *cal2, pp); + CHECK(s2, "parsing the 1 string"); + logln("*cal2 after 1 parse:"); + str.remove(); + fmt2.format(aDate, str); + logln(UnicodeString() + "as Gregorian Calendar: " + str); + + cal2->setTime(aDate, s2); + int32_t gotYear = cal2->get(UCAL_YEAR, s2); + int32_t gotEra = cal2->get(UCAL_ERA, s2); + int32_t expectYear = 1; + int32_t expectEra = JapaneseCalendar::getCurrentEra(); + if((gotYear!=1) || (gotEra != expectEra)) { + errln(UnicodeString("parse "+samplestr+" of 'y' as Japanese Calendar, expected year ") + expectYear + UnicodeString(" and era ") + expectEra +", but got year " + gotYear + " and era " + gotEra + " (Gregorian:" + str +")"); - } else { - logln(UnicodeString() + " year: " + gotYear + ", era: " + gotEra); - } - delete fmt; + } else { + logln(UnicodeString() + " year: " + gotYear + ", era: " + gotEra); } } - - delete cal2; - delete cal; - delete fmt2; } void IntlCalendarTest::TestForceGannenNumbering() @@ -908,48 +875,42 @@ void IntlCalendarTest::TestPersian() { void IntlCalendarTest::TestPersianFormat() { UErrorCode status = U_ZERO_ERROR; - SimpleDateFormat *fmt = new SimpleDateFormat(UnicodeString("MMMM d, yyyy G"), Locale(" en_US@calendar=persian"), status); + SimpleDateFormat fmt(UnicodeString("MMMM d, yyyy G"), Locale(" en_US@calendar=persian"), status); CHECK(status, "creating date format instance"); - SimpleDateFormat *fmt2 = new SimpleDateFormat(UnicodeString("MMMM d, yyyy G"), Locale("en_US@calendar=gregorian"), status); + SimpleDateFormat fmt2(UnicodeString("MMMM d, yyyy G"), Locale("en_US@calendar=gregorian"), status); CHECK(status, "creating gregorian date format instance"); UnicodeString gregorianDate("January 18, 2007 AD"); - UDate aDate = fmt2->parse(gregorianDate, status); - if(!fmt) { - errln("Couldn't create en_US instance"); + UDate aDate = fmt2.parse(gregorianDate, status); + UnicodeString str; + fmt.format(aDate, str); + logln(UnicodeString() + "as Persian Calendar: " + escape(str)); + UnicodeString expected("Dey 28, 1385 AP"); + if(str != expected) { + errln("Expected " + escape(expected) + " but got " + escape(str)); + } + UDate otherDate = fmt.parse(expected, status); + if(otherDate != aDate) { + UnicodeString str3; + fmt.format(otherDate, str3); + errln("Parse incorrect of " + escape(expected) + " - wanted " + aDate + " but got " + otherDate + ", " + escape(str3)); } else { - UnicodeString str; - fmt->format(aDate, str); - logln(UnicodeString() + "as Persian Calendar: " + escape(str)); - UnicodeString expected("Dey 28, 1385 AP"); - if(str != expected) { - errln("Expected " + escape(expected) + " but got " + escape(str)); - } - UDate otherDate = fmt->parse(expected, status); - if(otherDate != aDate) { - UnicodeString str3; - fmt->format(otherDate, str3); - errln("Parse incorrect of " + escape(expected) + " - wanted " + aDate + " but got " + otherDate + ", " + escape(str3)); - } else { - logln("Parsed OK: " + expected); - } - // Two digit year parsing problem #4732 - fmt->applyPattern("yy-MM-dd"); - str.remove(); - fmt->format(aDate, str); - expected.setTo("85-10-28"); - if(str != expected) { - errln("Expected " + escape(expected) + " but got " + escape(str)); - } - otherDate = fmt->parse(expected, status); - if (otherDate != aDate) { - errln("Parse incorrect of " + escape(expected) + " - wanted " + aDate + " but got " + otherDate); - } else { - logln("Parsed OK: " + expected); - } - delete fmt; + logln("Parsed OK: " + expected); } - delete fmt2; - + // Two digit year parsing problem #4732 + fmt.applyPattern("yy-MM-dd"); + str.remove(); + fmt.format(aDate, str); + expected.setTo("85-10-28"); + if(str != expected) { + errln("Expected " + escape(expected) + " but got " + escape(str)); + } + otherDate = fmt.parse(expected, status); + if (otherDate != aDate) { + errln("Parse incorrect of " + escape(expected) + " - wanted " + aDate + " but got " + otherDate); + } else { + logln("Parsed OK: " + expected); + } + CHECK(status, "Error occured testing Persian Calendar in English "); } diff --git a/source/test/intltest/intltest.cpp b/source/test/intltest/intltest.cpp index 201c546..15cd2d3 100644 --- a/source/test/intltest/intltest.cpp +++ b/source/test/intltest/intltest.cpp @@ -593,6 +593,7 @@ void IntlTest::setCaller( IntlTest* callingTest ) quick = caller->quick; threadCount = caller->threadCount; testoutfp = caller->testoutfp; + write_golden_data = caller->write_golden_data; LL_indentlevel = caller->LL_indentlevel + indentLevel_offset; numProps = caller->numProps; for (int32_t i = 0; i < numProps; i++) { @@ -637,6 +638,13 @@ UBool IntlTest::setWarnOnMissingData( UBool warn_on_missing_dataVal ) return rval; } +UBool IntlTest::setWriteGoldenData( UBool write_golden_data ) +{ + UBool rval = this->write_golden_data; + this->write_golden_data = write_golden_data; + return rval; +} + UBool IntlTest::setNoErrMsg( UBool no_err_msgVal ) { UBool rval = this->no_err_msg; @@ -1116,7 +1124,7 @@ void IntlTest::LL_message( UnicodeString message, UBool newline ) // All error messages generated by tests funnel through here. // Multithreaded tests can concurrently generate errors, requiring synchronization // to keep each message together. - static UMutex messageMutex = U_MUTEX_INITIALIZER; + static UMutex messageMutex; Mutex lock(&messageMutex); // string that starts with a LineFeed character and continues @@ -1224,6 +1232,7 @@ main(int argc, char* argv[]) UBool utf8 = FALSE; const char *summary_file = NULL; UBool warnOnMissingData = FALSE; + UBool writeGoldenData = FALSE; UBool defaultDataFound = FALSE; int32_t threadCount = 12; UErrorCode errorCode = U_ZERO_ERROR; @@ -1265,6 +1274,9 @@ main(int argc, char* argv[]) else if (strcmp("notime", str) == 0 || strcmp("T", str) == 0) no_time = TRUE; + else if (strcmp("goldens", str) == 0 || + strcmp("G", str) == 0) + writeGoldenData = TRUE; else if (strncmp("E", str, 1) == 0) summary_file = str+1; else if (strcmp("x", str)==0) { @@ -1338,6 +1350,7 @@ main(int argc, char* argv[]) major.setLeaks( leaks ); major.setThreadCount( threadCount ); major.setWarnOnMissingData( warnOnMissingData ); + major.setWriteGoldenData( writeGoldenData ); major.setNotime (no_time); for (int32_t i = 0; i < nProps; i++) { major.setProperty(props[i]); @@ -1371,9 +1384,10 @@ main(int argc, char* argv[]) fprintf(stdout, " Exhaustive (e) : %s\n", (!quick? "On" : "Off")); fprintf(stdout, " Leaks (l) : %s\n", (leaks? "On" : "Off")); fprintf(stdout, " utf-8 (u) : %s\n", (utf8? "On" : "Off")); - fprintf(stdout, " notime (T) : %s\n", (no_time? "On" : "Off")); - fprintf(stdout, " noknownissues (K) : %s\n", (noKnownIssues? "On" : "Off")); + fprintf(stdout, " notime (T) : %s\n", (no_time? "On" : "Off")); + fprintf(stdout, " noknownissues (K) : %s\n", (noKnownIssues? "On" : "Off")); fprintf(stdout, " Warn on missing data (w) : %s\n", (warnOnMissingData? "On" : "Off")); + fprintf(stdout, " Write golden data (G) : %s\n", (writeGoldenData? "On" : "Off")); fprintf(stdout, " Threads : %d\n", threadCount); for (int32_t i = 0; i < nProps; i++) { fprintf(stdout, " Custom property (prop:) : %s\n", props[i]); @@ -2105,6 +2119,42 @@ UBool IntlTest::assertEquals(const char* message, } #endif +std::string vectorToString(const std::vector& strings) { + std::string result = "{"; + bool first = true; + for (auto element : strings) { + if (first) { + first = false; + } else { + result += ", "; + } + result += "\""; + result += element; + result += "\""; + } + result += "}"; + return result; +} + +UBool IntlTest::assertEquals(const char* message, + const std::vector& expected, + const std::vector& actual) { + if (expected != actual) { + std::string expectedAsString = vectorToString(expected); + std::string actualAsString = vectorToString(actual); + errln((UnicodeString)"FAIL: " + message + + "; got " + actualAsString.c_str() + + "; expected " + expectedAsString.c_str()); + return FALSE; + } +#ifdef VERBOSE_ASSERTIONS + else { + logln((UnicodeString)"Ok: " + message + "; got " + vectorToString(actual).c_str()); + } +#endif + return TRUE; +} + static char ASSERT_BUF[256]; static const char* extractToAssertBuf(const UnicodeString& message) { @@ -2169,6 +2219,11 @@ UBool IntlTest::assertEquals(const UnicodeString& message, const UnicodeSet& actual) { return assertEquals(extractToAssertBuf(message), expected, actual); } +UBool IntlTest::assertEquals(const UnicodeString& message, + const std::vector& expected, + const std::vector& actual) { + return assertEquals(extractToAssertBuf(message), expected, actual); +} #if !UCONFIG_NO_FORMATTING UBool IntlTest::assertEquals(const UnicodeString& message, diff --git a/source/test/intltest/intltest.h b/source/test/intltest/intltest.h index 37227ba..027ebaa 100644 --- a/source/test/intltest/intltest.h +++ b/source/test/intltest/intltest.h @@ -18,6 +18,9 @@ #include "unicode/testlog.h" #include "unicode/uniset.h" +#include +#include + U_NAMESPACE_USE #if U_PLATFORM == U_PF_OS390 @@ -84,7 +87,7 @@ UnicodeString toString(UBool b); //| TESTCASE_AUTO_END; //| } #define TESTCASE_AUTO_BEGIN \ - for(;;) { \ + do { \ int32_t testCaseAutoNumber = 0 #define TESTCASE_AUTO(test) \ @@ -96,7 +99,7 @@ UnicodeString toString(UBool b); test(); \ } \ break; \ - } + } else (void)0 #define TESTCASE_AUTO_CLASS(TestClass) \ if (index == testCaseAutoNumber++) { \ @@ -108,7 +111,7 @@ UnicodeString toString(UBool b); callTest(test, par); \ } \ break; \ - } + } else (void)0 #define TESTCASE_AUTO_CREATE_CLASS(TestClass) \ if (index == testCaseAutoNumber++) { \ @@ -120,12 +123,12 @@ UnicodeString toString(UBool b); callTest(*test, par); \ } \ break; \ - } + } else (void)0 #define TESTCASE_AUTO_END \ name = ""; \ break; \ - } + } while (TRUE) // WHERE Macro yields a literal string of the form "source_file_name:line number " @@ -147,6 +150,7 @@ public: virtual UBool setLeaks( UBool leaks = TRUE ); virtual UBool setNotime( UBool no_time = TRUE ); virtual UBool setWarnOnMissingData( UBool warn_on_missing_data = TRUE ); + virtual UBool setWriteGoldenData( UBool write_golden_data = TRUE ); virtual int32_t setThreadCount( int32_t count = 1); virtual int32_t getErrors( void ); @@ -297,6 +301,8 @@ public: UBool assertEquals(const char* message, double expected, double actual); UBool assertEquals(const char* message, UErrorCode expected, UErrorCode actual); UBool assertEquals(const char* message, const UnicodeSet& expected, const UnicodeSet& actual); + UBool assertEquals(const char* message, + const std::vector& expected, const std::vector& actual); #if !UCONFIG_NO_FORMATTING UBool assertEquals(const char* message, const Formattable& expected, const Formattable& actual, UBool possibleDataError=FALSE); @@ -315,6 +321,8 @@ public: UBool assertEquals(const UnicodeString& message, double expected, double actual); UBool assertEquals(const UnicodeString& message, UErrorCode expected, UErrorCode actual); UBool assertEquals(const UnicodeString& message, const UnicodeSet& expected, const UnicodeSet& actual); + UBool assertEquals(const UnicodeString& message, + const std::vector& expected, const std::vector& actual); virtual void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ); // overide ! @@ -332,6 +340,7 @@ public: UBool quick; UBool leaks; UBool warn_on_missing_data; + UBool write_golden_data; UBool no_time; int32_t threadCount; diff --git a/source/test/intltest/intltest.vcxproj b/source/test/intltest/intltest.vcxproj index 5e82ef3..dbdb3e0 100644 --- a/source/test/intltest/intltest.vcxproj +++ b/source/test/intltest/intltest.vcxproj @@ -34,121 +34,55 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\Debug\ - .\x86\Debug\ - true - .\x64\Debug\ - .\x64\Debug\ - true - .\x86\Release\ - .\x86\Release\ - false - .\x64\Release\ - .\x64\Release\ - false + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false + + $(OutDir)\intltest.tlb + ..\..\..\include;..\..\common;..\..\i18n;..\..\tools\toolutil;..\..\tools\ctestfw;%(AdditionalIncludeDirectories) U_ATTRIBUTE_DEPRECATED=;%(PreprocessorDefinitions) false Level3 - - - - - .\x86\Debug/intltest.tlb - - - MultiThreadedDebug - .\x86\Debug/intltest.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ - true - EditAndContinue Default + $(OutDir)/intltest.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/intltest.pdb - .\x86\Debug/intltest.exe - icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Debug/intltest.pdb Console - false - false - - + $(OutDir)/intltest.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - .\x64\Debug/intltest.tlb - + + - MultiThreadedDebug - .\x64\Debug/intltest.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ true - ProgramDatabase - Default + MultiThreadedDebugDLL - .\x64\Debug/intltest.exe icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Debug/intltest.pdb - Console - false - - - .\x86\Release/intltest.tlb - + + - MultiThreaded - .\x86\Release/intltest.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ - Default + MultiThreadedDLL + true - .\x86\Release/intltest.exe icuuc.lib;icuin.lib;icutu.lib;icutest.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\x86\Release/intltest.pdb - Console - false - - - - - - - .\x64\Release/intltest.tlb - - - MultiThreaded - .\x64\Release/intltest.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Default - - - .\x64\Release/intltest.exe - icuuc.lib;icuin.lib;icutu.lib;icutest.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Release/intltest.pdb - Console @@ -232,6 +166,7 @@ + @@ -251,12 +186,12 @@ - - + + @@ -365,6 +300,7 @@ + diff --git a/source/test/intltest/intltest.vcxproj.filters b/source/test/intltest/intltest.vcxproj.filters index bed26bc..0bf336b 100644 --- a/source/test/intltest/intltest.vcxproj.filters +++ b/source/test/intltest/intltest.vcxproj.filters @@ -217,6 +217,9 @@ formatting + + formatting + formatting @@ -274,10 +277,7 @@ formatting - - formatting - - + formatting @@ -292,6 +292,9 @@ formatting + + formatting + formatting @@ -540,9 +543,13 @@ formatting + locales & resources + + locales & resources + diff --git a/source/test/intltest/itformat.cpp b/source/test/intltest/itformat.cpp index 1c993fc..870728a 100644 --- a/source/test/intltest/itformat.cpp +++ b/source/test/intltest/itformat.cpp @@ -72,6 +72,8 @@ extern IntlTest *createMeasureFormatTest(); extern IntlTest *createNumberFormatSpecificationTest(); extern IntlTest *createScientificNumberFormatterTest(); extern IntlTest *createFormattedValueTest(); +extern IntlTest *createFormattedStringBuilderTest(); +extern IntlTest *createStringSegmentTest(); #define TESTCLASS(id, TestClass) \ @@ -227,6 +229,24 @@ void IntlTestFormat::runIndexedTest( int32_t index, UBool exec, const char* &nam callTest(*test, par); } break; + case 54: + name = "FormattedStringBuilderTest"; + if (exec) { + logln("FormattedStringBuilderTest test---"); + logln((UnicodeString)""); + LocalPointer test(createFormattedStringBuilderTest()); + callTest(*test, par); + } + break; + case 55: + name = "StringSegmentTest"; + if (exec) { + logln("StringSegmentTest test---"); + logln((UnicodeString)""); + LocalPointer test(createStringSegmentTest()); + callTest(*test, par); + } + break; default: name = ""; break; //needed to end loop } if (exec) { diff --git a/source/test/intltest/itrbnf.cpp b/source/test/intltest/itrbnf.cpp index 549f24c..ed4e865 100644 --- a/source/test/intltest/itrbnf.cpp +++ b/source/test/intltest/itrbnf.cpp @@ -166,7 +166,7 @@ IntlTestRBNF::TestAPI() { // test clone { logln("Testing Clone"); - RuleBasedNumberFormat* rbnfClone = (RuleBasedNumberFormat *)formatter->clone(); + RuleBasedNumberFormat* rbnfClone = formatter->clone(); if(rbnfClone != NULL) { if(!(*rbnfClone == *formatter)) { errln("Clone should be semantically equivalent to the original!"); diff --git a/source/test/intltest/itspoof.cpp b/source/test/intltest/itspoof.cpp index f799617..13861cc 100644 --- a/source/test/intltest/itspoof.cpp +++ b/source/test/intltest/itspoof.cpp @@ -29,22 +29,37 @@ #include #include -#define TEST_ASSERT_SUCCESS(status) {if (U_FAILURE(status)) { \ - errcheckln(status, "Failure at file %s, line %d, error = %s", __FILE__, __LINE__, u_errorName(status));}} - -#define TEST_ASSERT(expr) {if ((expr)==FALSE) { \ - errln("Test Failure at file %s, line %d: \"%s\" is false.", __FILE__, __LINE__, #expr);};} - -#define TEST_ASSERT_MSG(expr, msg) {if ((expr)==FALSE) { \ - dataerrln("Test Failure at file %s, line %d, %s: \"%s\" is false.", __FILE__, __LINE__, msg, #expr);};} - -#define TEST_ASSERT_EQ(a, b) { if ((a) != (b)) { \ - errln("Test Failure at file %s, line %d: \"%s\" (%d) != \"%s\" (%d)", \ - __FILE__, __LINE__, #a, (a), #b, (b)); }} - -#define TEST_ASSERT_NE(a, b) { if ((a) == (b)) { \ - errln("Test Failure at file %s, line %d: \"%s\" (%d) == \"%s\" (%d)", \ - __FILE__, __LINE__, #a, (a), #b, (b)); }} +#define TEST_ASSERT_SUCCESS(status) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(status)) { \ + errcheckln(status, "Failure at file %s, line %d, error = %s", __FILE__, __LINE__, u_errorName(status)); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define TEST_ASSERT(expr) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expr)==FALSE) { \ + errln("Test Failure at file %s, line %d: \"%s\" is false.", __FILE__, __LINE__, #expr); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define TEST_ASSERT_MSG(expr, msg) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expr)==FALSE) { \ + dataerrln("Test Failure at file %s, line %d, %s: \"%s\" is false.", __FILE__, __LINE__, msg, #expr); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define TEST_ASSERT_EQ(a, b) UPRV_BLOCK_MACRO_BEGIN { \ + if ((a) != (b)) { \ + errln("Test Failure at file %s, line %d: \"%s\" (%d) != \"%s\" (%d)", \ + __FILE__, __LINE__, #a, (a), #b, (b)); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define TEST_ASSERT_NE(a, b) UPRV_BLOCK_MACRO_BEGIN { \ + if ((a) == (b)) { \ + errln("Test Failure at file %s, line %d: \"%s\" (%d) == \"%s\" (%d)", \ + __FILE__, __LINE__, #a, (a), #b, (b)); \ + } \ +} UPRV_BLOCK_MACRO_END /* * TEST_SETUP and TEST_TEARDOWN @@ -52,7 +67,7 @@ * Put arbitrary test code between SETUP and TEARDOWN. * "sc" is the ready-to-go SpoofChecker for use in the tests. */ -#define TEST_SETUP { \ +#define TEST_SETUP UPRV_BLOCK_MACRO_BEGIN { \ UErrorCode status = U_ZERO_ERROR; \ USpoofChecker *sc; \ sc = uspoof_open(&status); \ @@ -67,7 +82,7 @@ TEST_ASSERT_SUCCESS(status); \ uspoof_closeCheckResult(checkResult); \ uspoof_close(sc); \ -} +} UPRV_BLOCK_MACRO_END @@ -128,9 +143,9 @@ void IntlTestSpoof::testSpoofAPI() { } -#define CHECK_SKELETON(type, input, expected) { \ +#define CHECK_SKELETON(type, input, expected) UPRV_BLOCK_MACRO_BEGIN { \ checkSkeleton(sc, type, input, expected, __LINE__); \ - } +} UPRV_BLOCK_MACRO_END // testSkeleton. Spot check a number of confusable skeleton substitutions from the @@ -639,7 +654,7 @@ void IntlTestSpoof::testMixedNumbers() { TEST_ASSERT_MSG((expectedSet.size() > 1) == mixedNumberFailure, msgBuf); const UnicodeSet* actualSet = UnicodeSet::fromUSet(uspoof_getCheckResultNumerics(checkResult, &status)); TEST_ASSERT_MSG(expectedSet == *actualSet, msgBuf); - TEST_TEARDOWN + TEST_TEARDOWN; } } diff --git a/source/test/intltest/itutil.cpp b/source/test/intltest/itutil.cpp index 3cda39d..228dbf2 100644 --- a/source/test/intltest/itutil.cpp +++ b/source/test/intltest/itutil.cpp @@ -35,6 +35,7 @@ #include "usettest.h" extern IntlTest *createBytesTrieTest(); +extern IntlTest *createLocaleMatcherTest(); static IntlTest *createLocalPointerTest(); extern IntlTest *createUCharsTrieTest(); static IntlTest *createEnumSetTest(); @@ -46,113 +47,40 @@ extern IntlTest *createPluralMapTest(); extern IntlTest *createStaticUnicodeSetsTest(); #endif - -#define CASE(id, test) case id: \ - name = #test; \ - if (exec) { \ - logln(#test "---"); logln(); \ - test t; \ - callTest(t, par); \ - } \ - break - void IntlTestUtilities::runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ) { if (exec) logln("TestSuite Utilities: "); - switch (index) { - CASE(0, MultithreadTest); - CASE(1, StringTest); - CASE(2, UnicodeStringTest); - CASE(3, LocaleTest); - CASE(4, CharIterTest); - CASE(5, UObjectTest); - CASE(6, UnicodeTest); - CASE(7, ResourceBundleTest); - CASE(8, NewResourceBundleTest); - CASE(9, PUtilTest); - CASE(10, UVector32Test); - CASE(11, UVectorTest); - CASE(12, UTextTest); - CASE(13, LocaleAliasTest); - CASE(14, UnicodeSetTest); - CASE(15, ErrorCodeTest); - case 16: - name = "LocalPointerTest"; - if (exec) { - logln("TestSuite LocalPointerTest---"); logln(); - LocalPointer test(createLocalPointerTest()); - callTest(*test, par); - } - break; - case 17: - name = "BytesTrieTest"; - if (exec) { - logln("TestSuite BytesTrieTest---"); logln(); - LocalPointer test(createBytesTrieTest()); - callTest(*test, par); - } - break; - case 18: - name = "UCharsTrieTest"; - if (exec) { - logln("TestSuite UCharsTrieTest---"); logln(); - LocalPointer test(createUCharsTrieTest()); - callTest(*test, par); - } - break; - case 19: - name = "EnumSetTest"; - if (exec) { - logln("TestSuite EnumSetTest---"); logln(); - LocalPointer test(createEnumSetTest()); - callTest(*test, par); - } - break; - case 20: - name = "SimpleFormatterTest"; - if (exec) { - logln("TestSuite SimpleFormatterTest---"); logln(); - LocalPointer test(createSimpleFormatterTest()); - callTest(*test, par); - } - break; - case 21: - name = "UnifiedCacheTest"; - if (exec) { - logln("TestSuite UnifiedCacheTest---"); logln(); - LocalPointer test(createUnifiedCacheTest()); - callTest(*test, par); - } - break; - case 22: - name = "QuantityFormatterTest"; - if (exec) { - logln("TestSuite QuantityFormatterTest---"); logln(); - LocalPointer test(createQuantityFormatterTest()); - callTest(*test, par); - } - break; - case 23: - name = "PluralMapTest"; - if (exec) { - logln("TestSuite PluralMapTest---"); logln(); - LocalPointer test(createPluralMapTest()); - callTest(*test, par); - } - break; - case 24: - name = "StaticUnicodeSetsTest"; + TESTCASE_AUTO_BEGIN; + TESTCASE_AUTO_CLASS(MultithreadTest); + TESTCASE_AUTO_CLASS(StringTest); + TESTCASE_AUTO_CLASS(UnicodeStringTest); + TESTCASE_AUTO_CLASS(LocaleTest); + TESTCASE_AUTO_CLASS(CharIterTest); + TESTCASE_AUTO_CLASS(UObjectTest); + TESTCASE_AUTO_CLASS(UnicodeTest); + TESTCASE_AUTO_CLASS(ResourceBundleTest); + TESTCASE_AUTO_CLASS(NewResourceBundleTest); + TESTCASE_AUTO_CLASS(PUtilTest); + TESTCASE_AUTO_CLASS(UVector32Test); + TESTCASE_AUTO_CLASS(UVectorTest); + TESTCASE_AUTO_CLASS(UTextTest); + TESTCASE_AUTO_CLASS(LocaleAliasTest); + TESTCASE_AUTO_CLASS(UnicodeSetTest); + TESTCASE_AUTO_CLASS(ErrorCodeTest); + TESTCASE_AUTO_CREATE_CLASS(LocalPointerTest); + TESTCASE_AUTO_CREATE_CLASS(BytesTrieTest); + TESTCASE_AUTO_CREATE_CLASS(UCharsTrieTest); + TESTCASE_AUTO_CREATE_CLASS(EnumSetTest); + TESTCASE_AUTO_CREATE_CLASS(SimpleFormatterTest); + TESTCASE_AUTO_CREATE_CLASS(UnifiedCacheTest); + TESTCASE_AUTO_CREATE_CLASS(QuantityFormatterTest); + TESTCASE_AUTO_CREATE_CLASS(PluralMapTest); #if !UCONFIG_NO_FORMATTING - if (exec) { - logln("TestSuite StaticUnicodeSetsTest---"); logln(); - LocalPointer test(createStaticUnicodeSetsTest()); - callTest(*test, par); - } + TESTCASE_AUTO_CREATE_CLASS(StaticUnicodeSetsTest); #endif - break; - CASE(25, LocaleBuilderTest); - default: name = ""; break; //needed to end loop - } + TESTCASE_AUTO_CLASS(LocaleBuilderTest); + TESTCASE_AUTO_CREATE_CLASS(LocaleMatcherTest); + TESTCASE_AUTO_END; } void ErrorCodeTest::runIndexedTest(int32_t index, UBool exec, const char* &name, char* /*par*/) { diff --git a/source/test/intltest/localebuildertest.cpp b/source/test/intltest/localebuildertest.cpp index cf3bd74..b551bf8 100644 --- a/source/test/intltest/localebuildertest.cpp +++ b/source/test/intltest/localebuildertest.cpp @@ -55,10 +55,21 @@ void LocaleBuilderTest::runIndexedTest( int32_t index, UBool exec, const char* & void LocaleBuilderTest::Verify(LocaleBuilder& bld, const char* expected, const char* msg) { UErrorCode status = U_ZERO_ERROR; + UErrorCode copyStatus = U_ZERO_ERROR; + UErrorCode errorStatus = U_ILLEGAL_ARGUMENT_ERROR; + if (bld.copyErrorTo(copyStatus)) { + errln(msg, u_errorName(copyStatus)); + } + if (!bld.copyErrorTo(errorStatus) || errorStatus != U_ILLEGAL_ARGUMENT_ERROR) { + errln("Should always get the previous error and return FALSE"); + } Locale loc = bld.build(status); if (U_FAILURE(status)) { errln(msg, u_errorName(status)); } + if (status != copyStatus) { + errln(msg, u_errorName(status)); + } std::string tag = loc.toLanguageTag(status); if (U_FAILURE(status)) { errln("loc.toLanguageTag() got Error: %s\n", @@ -190,39 +201,67 @@ void LocaleBuilderTest::TestLocaleBuilder() { status = U_ZERO_ERROR; bld.clear(); while (true) { + status = U_ZERO_ERROR; + UErrorCode copyStatus = U_ZERO_ERROR; method = testCase[i++]; if (strcmp("L", method) == 0) { - bld.setLanguage(testCase[i++]).build(status); + bld.setLanguage(testCase[i++]); + bld.copyErrorTo(copyStatus); + bld.build(status); } else if (strcmp("S", method) == 0) { - bld.setScript(testCase[i++]).build(status); + bld.setScript(testCase[i++]); + bld.copyErrorTo(copyStatus); + bld.build(status); } else if (strcmp("R", method) == 0) { - bld.setRegion(testCase[i++]).build(status); + bld.setRegion(testCase[i++]); + bld.copyErrorTo(copyStatus); + bld.build(status); } else if (strcmp("V", method) == 0) { - bld.setVariant(testCase[i++]).build(status); + bld.setVariant(testCase[i++]); + bld.copyErrorTo(copyStatus); + bld.build(status); } else if (strcmp("K", method) == 0) { const char* key = testCase[i++]; const char* type = testCase[i++]; - bld.setUnicodeLocaleKeyword(key, type).build(status); + bld.setUnicodeLocaleKeyword(key, type); + bld.copyErrorTo(copyStatus); + bld.build(status); } else if (strcmp("A", method) == 0) { - bld.addUnicodeLocaleAttribute(testCase[i++]).build(status); + bld.addUnicodeLocaleAttribute(testCase[i++]); + bld.copyErrorTo(copyStatus); + bld.build(status); } else if (strcmp("E", method) == 0) { const char* key = testCase[i++]; const char* value = testCase[i++]; - bld.setExtension(key[0], value).build(status); + bld.setExtension(key[0], value); + bld.copyErrorTo(copyStatus); + bld.build(status); } else if (strcmp("P", method) == 0) { - bld.setExtension('x', testCase[i++]).build(status); + bld.setExtension('x', testCase[i++]); + bld.copyErrorTo(copyStatus); + bld.build(status); } else if (strcmp("U", method) == 0) { - bld.setLocale(Locale(testCase[i++])).build(status); + bld.setLocale(Locale(testCase[i++])); + bld.copyErrorTo(copyStatus); + bld.build(status); } else if (strcmp("B", method) == 0) { - bld.setLanguageTag(testCase[i++]).build(status); + bld.setLanguageTag(testCase[i++]); + bld.copyErrorTo(copyStatus); + bld.build(status); } // clear / remove else if (strcmp("C", method) == 0) { - bld.clear().build(status); + bld.clear(); + bld.copyErrorTo(copyStatus); + bld.build(status); } else if (strcmp("N", method) == 0) { - bld.clearExtensions().build(status); + bld.clearExtensions(); + bld.copyErrorTo(copyStatus); + bld.build(status); } else if (strcmp("D", method) == 0) { - bld.removeUnicodeLocaleAttribute(testCase[i++]).build(status); + bld.removeUnicodeLocaleAttribute(testCase[i++]); + bld.copyErrorTo(copyStatus); + bld.build(status); } // result else if (strcmp("X", method) == 0) { @@ -232,6 +271,9 @@ void LocaleBuilderTest::TestLocaleBuilder() { } else if (strcmp("T", method) == 0) { status = U_ZERO_ERROR; Locale loc = bld.build(status); + if (status != copyStatus) { + errln("copyErrorTo not matching"); + } if (U_FAILURE(status) || strcmp(loc.getName(), testCase[i + 1]) != 0) { errln("FAIL: Wrong locale ID - %s %s %s", loc.getName(), @@ -248,6 +290,9 @@ void LocaleBuilderTest::TestLocaleBuilder() { errln("Unknown test case method: There is an error in the test case data."); break; } + if (status != copyStatus) { + errln("copyErrorTo not matching"); + } if (U_FAILURE(status)) { if (strcmp("X", testCase[i]) == 0) { // This failure is expected @@ -1183,7 +1228,7 @@ void LocaleBuilderTest::TestSetExtensionValidateUWellFormed() { errln("setExtension('u', \"%s\") got Error: %s\n", extension, u_errorName(status)); } - }; + } } void LocaleBuilderTest::TestSetExtensionValidateUIllFormed() { @@ -1319,7 +1364,7 @@ void LocaleBuilderTest::TestSetExtensionValidateTWellFormed() { errln("setExtension('t', \"%s\") got Error: %s\n", extension, u_errorName(status)); } - }; + } } void LocaleBuilderTest::TestSetExtensionValidateTIllFormed() { @@ -1424,7 +1469,7 @@ void LocaleBuilderTest::TestSetExtensionValidatePUWellFormed() { errln("setExtension('x', \"%s\") got Error: %s\n", extension, u_errorName(status)); } - }; + } } void LocaleBuilderTest::TestSetExtensionValidatePUIllFormed() { @@ -1513,7 +1558,7 @@ void LocaleBuilderTest::TestSetExtensionValidateOthersWellFormed() { errln("setExtension('%c', \"%s\") got Error: %s\n", ch, extension, u_errorName(status)); } - }; + } const char* someChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`~!@#$%^&*()-_=+;:,.<>?"; diff --git a/source/test/intltest/localematchertest.cpp b/source/test/intltest/localematchertest.cpp new file mode 100644 index 0000000..f8cb7a3 --- /dev/null +++ b/source/test/intltest/localematchertest.cpp @@ -0,0 +1,589 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html#License + +// localematchertest.cpp +// created: 2019jul04 Markus W. Scherer + +#include +#include + +#include "unicode/utypes.h" +#include "unicode/localematcher.h" +#include "unicode/locid.h" +#include "charstr.h" +#include "cmemory.h" +#include "intltest.h" +#include "localeprioritylist.h" +#include "ucbuf.h" + +#define ARRAY_RANGE(array) (array), ((array) + UPRV_LENGTHOF(array)) + +namespace { + +const char *locString(const Locale *loc) { + return loc != nullptr ? loc->getName() : "(null)"; +} + +struct TestCase { + int32_t lineNr = 0; + + CharString supported; + CharString def; + UnicodeString favor; + UnicodeString threshold; + CharString desired; + CharString expMatch; + CharString expDesired; + CharString expCombined; + + void reset() { + supported.clear(); + def.clear(); + favor.remove(); + threshold.remove(); + } +}; + +} // namespace + +class LocaleMatcherTest : public IntlTest { +public: + LocaleMatcherTest() {} + + void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=NULL); + + void testEmpty(); + void testCopyErrorTo(); + void testBasics(); + void testSupportedDefault(); + void testUnsupportedDefault(); + void testDemotion(); + void testMatch(); + void testResolvedLocale(); + void testDataDriven(); + +private: + UBool dataDriven(const TestCase &test, IcuTestErrorCode &errorCode); +}; + +extern IntlTest *createLocaleMatcherTest() { + return new LocaleMatcherTest(); +} + +void LocaleMatcherTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char * /*par*/) { + if(exec) { + logln("TestSuite LocaleMatcherTest: "); + } + TESTCASE_AUTO_BEGIN; + TESTCASE_AUTO(testEmpty); + TESTCASE_AUTO(testCopyErrorTo); + TESTCASE_AUTO(testBasics); + TESTCASE_AUTO(testSupportedDefault); + TESTCASE_AUTO(testUnsupportedDefault); + TESTCASE_AUTO(testDemotion); + TESTCASE_AUTO(testMatch); + TESTCASE_AUTO(testResolvedLocale); + TESTCASE_AUTO(testDataDriven); + TESTCASE_AUTO_END; +} + +void LocaleMatcherTest::testEmpty() { + IcuTestErrorCode errorCode(*this, "testEmpty"); + LocaleMatcher matcher = LocaleMatcher::Builder().build(errorCode); + const Locale *best = matcher.getBestMatch(Locale::getFrench(), errorCode); + assertEquals("getBestMatch(fr)", "(null)", locString(best)); + LocaleMatcher::Result result = matcher.getBestMatchResult("fr", errorCode); + assertEquals("getBestMatchResult(fr).des", "(null)", locString(result.getDesiredLocale())); + assertEquals("getBestMatchResult(fr).desIndex", -1, result.getDesiredIndex()); + assertEquals("getBestMatchResult(fr).supp", + "(null)", locString(result.getSupportedLocale())); + assertEquals("getBestMatchResult(fr).suppIndex", + -1, result.getSupportedIndex()); +} + +void LocaleMatcherTest::testCopyErrorTo() { + IcuTestErrorCode errorCode(*this, "testCopyErrorTo"); + // The builder does not set any errors except out-of-memory. + // Test what we can. + LocaleMatcher::Builder builder; + UErrorCode success = U_ZERO_ERROR; + assertFalse("no error", builder.copyErrorTo(success)); + assertTrue("still success", U_SUCCESS(success)); + UErrorCode failure = U_INVALID_FORMAT_ERROR; + assertTrue("failure passed in", builder.copyErrorTo(failure)); + assertEquals("same failure", U_INVALID_FORMAT_ERROR, failure); +} + +void LocaleMatcherTest::testBasics() { + IcuTestErrorCode errorCode(*this, "testBasics"); + Locale locales[] = { "fr", "en_GB", "en" }; + { + LocaleMatcher matcher = LocaleMatcher::Builder(). + setSupportedLocales(ARRAY_RANGE(locales)).build(errorCode); + const Locale *best = matcher.getBestMatch("en_GB", errorCode); + assertEquals("fromRange.getBestMatch(en_GB)", "en_GB", locString(best)); + best = matcher.getBestMatch("en_US", errorCode); + assertEquals("fromRange.getBestMatch(en_US)", "en", locString(best)); + best = matcher.getBestMatch("fr_FR", errorCode); + assertEquals("fromRange.getBestMatch(fr_FR)", "fr", locString(best)); + best = matcher.getBestMatch("ja_JP", errorCode); + assertEquals("fromRange.getBestMatch(ja_JP)", "fr", locString(best)); + } + // Code coverage: Variations of setting supported locales. + { + std::vector locales{ "fr", "en_GB", "en" }; + LocaleMatcher matcher = LocaleMatcher::Builder(). + setSupportedLocales(locales.begin(), locales.end()).build(errorCode); + const Locale *best = matcher.getBestMatch("en_GB", errorCode); + assertEquals("fromRange.getBestMatch(en_GB)", "en_GB", locString(best)); + best = matcher.getBestMatch("en_US", errorCode); + assertEquals("fromRange.getBestMatch(en_US)", "en", locString(best)); + best = matcher.getBestMatch("fr_FR", errorCode); + assertEquals("fromRange.getBestMatch(fr_FR)", "fr", locString(best)); + best = matcher.getBestMatch("ja_JP", errorCode); + assertEquals("fromRange.getBestMatch(ja_JP)", "fr", locString(best)); + } + { + Locale::RangeIterator iter(ARRAY_RANGE(locales)); + LocaleMatcher matcher = LocaleMatcher::Builder(). + setSupportedLocales(iter).build(errorCode); + const Locale *best = matcher.getBestMatch("en_GB", errorCode); + assertEquals("fromIter.getBestMatch(en_GB)", "en_GB", locString(best)); + best = matcher.getBestMatch("en_US", errorCode); + assertEquals("fromIter.getBestMatch(en_US)", "en", locString(best)); + best = matcher.getBestMatch("fr_FR", errorCode); + assertEquals("fromIter.getBestMatch(fr_FR)", "fr", locString(best)); + best = matcher.getBestMatch("ja_JP", errorCode); + assertEquals("fromIter.getBestMatch(ja_JP)", "fr", locString(best)); + } + { + Locale *pointers[] = { locales, locales + 1, locales + 2 }; + // Lambda with explicit reference return type to prevent copy-constructing a temporary + // which would be destructed right away. + LocaleMatcher matcher = LocaleMatcher::Builder(). + setSupportedLocalesViaConverter( + ARRAY_RANGE(pointers), [](const Locale *p) -> const Locale & { return *p; }). + build(errorCode); + const Locale *best = matcher.getBestMatch("en_GB", errorCode); + assertEquals("viaConverter.getBestMatch(en_GB)", "en_GB", locString(best)); + best = matcher.getBestMatch("en_US", errorCode); + assertEquals("viaConverter.getBestMatch(en_US)", "en", locString(best)); + best = matcher.getBestMatch("fr_FR", errorCode); + assertEquals("viaConverter.getBestMatch(fr_FR)", "fr", locString(best)); + best = matcher.getBestMatch("ja_JP", errorCode); + assertEquals("viaConverter.getBestMatch(ja_JP)", "fr", locString(best)); + } + { + LocaleMatcher matcher = LocaleMatcher::Builder(). + addSupportedLocale(locales[0]). + addSupportedLocale(locales[1]). + addSupportedLocale(locales[2]). + build(errorCode); + const Locale *best = matcher.getBestMatch("en_GB", errorCode); + assertEquals("added.getBestMatch(en_GB)", "en_GB", locString(best)); + best = matcher.getBestMatch("en_US", errorCode); + assertEquals("added.getBestMatch(en_US)", "en", locString(best)); + best = matcher.getBestMatch("fr_FR", errorCode); + assertEquals("added.getBestMatch(fr_FR)", "fr", locString(best)); + best = matcher.getBestMatch("ja_JP", errorCode); + assertEquals("added.getBestMatch(ja_JP)", "fr", locString(best)); + } + { + LocaleMatcher matcher = LocaleMatcher::Builder(). + setSupportedLocalesFromListString( + " el, fr;q=0.555555, en-GB ; q = 0.88 , el; q =0, en;q=0.88 , fr "). + build(errorCode); + const Locale *best = matcher.getBestMatchForListString("el, fr, fr;q=0, en-GB", errorCode); + assertEquals("fromList.getBestMatch(en_GB)", "en_GB", locString(best)); + best = matcher.getBestMatch("en_US", errorCode); + assertEquals("fromList.getBestMatch(en_US)", "en", locString(best)); + best = matcher.getBestMatch("fr_FR", errorCode); + assertEquals("fromList.getBestMatch(fr_FR)", "fr", locString(best)); + best = matcher.getBestMatch("ja_JP", errorCode); + assertEquals("fromList.getBestMatch(ja_JP)", "fr", locString(best)); + } + // more API coverage + { + LocalePriorityList list("fr, en-GB", errorCode); + LocalePriorityList::Iterator iter(list.iterator()); + LocaleMatcher matcher = LocaleMatcher::Builder(). + setSupportedLocales(iter). + addSupportedLocale(Locale::getEnglish()). + setDefaultLocale(&Locale::getGerman()). + build(errorCode); + const Locale *best = matcher.getBestMatch("en_GB", errorCode); + assertEquals("withDefault.getBestMatch(en_GB)", "en_GB", locString(best)); + best = matcher.getBestMatch("en_US", errorCode); + assertEquals("withDefault.getBestMatch(en_US)", "en", locString(best)); + best = matcher.getBestMatch("fr_FR", errorCode); + assertEquals("withDefault.getBestMatch(fr_FR)", "fr", locString(best)); + best = matcher.getBestMatch("ja_JP", errorCode); + assertEquals("withDefault.getBestMatch(ja_JP)", "de", locString(best)); + + Locale desired("en_GB"); // distinct object from Locale.UK + LocaleMatcher::Result result = matcher.getBestMatchResult(desired, errorCode); + assertTrue("withDefault: exactly desired en-GB object", + &desired == result.getDesiredLocale()); + assertEquals("withDefault: en-GB desired index", 0, result.getDesiredIndex()); + assertEquals("withDefault: en-GB supported", + "en_GB", locString(result.getSupportedLocale())); + assertEquals("withDefault: en-GB supported index", 1, result.getSupportedIndex()); + + LocalePriorityList list2("ja-JP, en-US", errorCode); + LocalePriorityList::Iterator iter2(list2.iterator()); + result = matcher.getBestMatchResult(iter2, errorCode); + assertEquals("withDefault: ja-JP, en-US desired index", 1, result.getDesiredIndex()); + assertEquals("withDefault: ja-JP, en-US desired", + "en_US", locString(result.getDesiredLocale())); + + desired = Locale("en", "US"); // distinct object from Locale.US + result = matcher.getBestMatchResult(desired, errorCode); + assertTrue("withDefault: exactly desired en-US object", + &desired == result.getDesiredLocale()); + assertEquals("withDefault: en-US desired index", 0, result.getDesiredIndex()); + assertEquals("withDefault: en-US supported", "en", locString(result.getSupportedLocale())); + assertEquals("withDefault: en-US supported index", 2, result.getSupportedIndex()); + + result = matcher.getBestMatchResult("ja_JP", errorCode); + assertEquals("withDefault: ja-JP desired", "(null)", locString(result.getDesiredLocale())); + assertEquals("withDefault: ja-JP desired index", -1, result.getDesiredIndex()); + assertEquals("withDefault: ja-JP supported", "de", locString(result.getSupportedLocale())); + assertEquals("withDefault: ja-JP supported index", -1, result.getSupportedIndex()); + } +} + +void LocaleMatcherTest::testSupportedDefault() { + // The default locale is one of the supported locales. + IcuTestErrorCode errorCode(*this, "testSupportedDefault"); + Locale locales[] = { "fr", "en_GB", "en" }; + LocaleMatcher matcher = LocaleMatcher::Builder(). + setSupportedLocales(ARRAY_RANGE(locales)). + setDefaultLocale(&locales[1]). + build(errorCode); + const Locale *best = matcher.getBestMatch("en_GB", errorCode); + assertEquals("getBestMatch(en_GB)", "en_GB", locString(best)); + best = matcher.getBestMatch("en_US", errorCode); + assertEquals("getBestMatch(en_US)", "en", locString(best)); + best = matcher.getBestMatch("fr_FR", errorCode); + assertEquals("getBestMatch(fr_FR)", "fr", locString(best)); + best = matcher.getBestMatch("ja_JP", errorCode); + assertEquals("getBestMatch(ja_JP)", "en_GB", locString(best)); + LocaleMatcher::Result result = matcher.getBestMatchResult("ja_JP", errorCode); + assertEquals("getBestMatchResult(ja_JP).supp", + "en_GB", locString(result.getSupportedLocale())); + assertEquals("getBestMatchResult(ja_JP).suppIndex", + 1, result.getSupportedIndex()); +} + +void LocaleMatcherTest::testUnsupportedDefault() { + // The default locale does not match any of the supported locales. + IcuTestErrorCode errorCode(*this, "testUnsupportedDefault"); + Locale locales[] = { "fr", "en_GB", "en" }; + Locale def("de"); + LocaleMatcher matcher = LocaleMatcher::Builder(). + setSupportedLocales(ARRAY_RANGE(locales)). + setDefaultLocale(&def). + build(errorCode); + const Locale *best = matcher.getBestMatch("en_GB", errorCode); + assertEquals("getBestMatch(en_GB)", "en_GB", locString(best)); + best = matcher.getBestMatch("en_US", errorCode); + assertEquals("getBestMatch(en_US)", "en", locString(best)); + best = matcher.getBestMatch("fr_FR", errorCode); + assertEquals("getBestMatch(fr_FR)", "fr", locString(best)); + best = matcher.getBestMatch("ja_JP", errorCode); + assertEquals("getBestMatch(ja_JP)", "de", locString(best)); + LocaleMatcher::Result result = matcher.getBestMatchResult("ja_JP", errorCode); + assertEquals("getBestMatchResult(ja_JP).supp", + "de", locString(result.getSupportedLocale())); + assertEquals("getBestMatchResult(ja_JP).suppIndex", + -1, result.getSupportedIndex()); +} + +void LocaleMatcherTest::testDemotion() { + IcuTestErrorCode errorCode(*this, "testDemotion"); + Locale supported[] = { "fr", "de-CH", "it" }; + Locale desired[] = { "fr-CH", "de-CH", "it" }; + { + LocaleMatcher noDemotion = LocaleMatcher::Builder(). + setSupportedLocales(ARRAY_RANGE(supported)). + setDemotionPerDesiredLocale(ULOCMATCH_DEMOTION_NONE).build(errorCode); + Locale::RangeIterator desiredIter(ARRAY_RANGE(desired)); + assertEquals("no demotion", + "de_CH", locString(noDemotion.getBestMatch(desiredIter, errorCode))); + } + + { + LocaleMatcher regionDemotion = LocaleMatcher::Builder(). + setSupportedLocales(ARRAY_RANGE(supported)). + setDemotionPerDesiredLocale(ULOCMATCH_DEMOTION_REGION).build(errorCode); + Locale::RangeIterator desiredIter(ARRAY_RANGE(desired)); + assertEquals("region demotion", + "fr", locString(regionDemotion.getBestMatch(desiredIter, errorCode))); + } +} + +void LocaleMatcherTest::testMatch() { + IcuTestErrorCode errorCode(*this, "testMatch"); + LocaleMatcher matcher = LocaleMatcher::Builder().build(errorCode); + + // Java test function testMatch_exact() + Locale en_CA("en_CA"); + assertEquals("exact match", 1.0, matcher.internalMatch(en_CA, en_CA, errorCode)); + + // testMatch_none + Locale ar_MK("ar_MK"); + double match = matcher.internalMatch(ar_MK, en_CA, errorCode); + assertTrue("mismatch: 0<=match<0.2", 0 <= match && match < 0.2); + + // testMatch_matchOnMaximized + Locale und_TW("und_TW"); + Locale zh("zh"); + Locale zh_Hant("zh_Hant"); + double matchZh = matcher.internalMatch(und_TW, zh, errorCode); + double matchZhHant = matcher.internalMatch(und_TW, zh_Hant, errorCode); + assertTrue("und_TW should be closer to zh_Hant than to zh", + matchZh < matchZhHant); + Locale en_Hant_TW("en_Hant_TW"); + double matchEnHantTw = matcher.internalMatch(en_Hant_TW, zh_Hant, errorCode); + assertTrue("zh_Hant should be closer to und_TW than to en_Hant_TW", + matchEnHantTw < matchZhHant); + assertTrue("zh should be closer to und_TW than to en_Hant_TW", + matchEnHantTw < matchZh); +} + +void LocaleMatcherTest::testResolvedLocale() { + IcuTestErrorCode errorCode(*this, "testResolvedLocale"); + LocaleMatcher matcher = LocaleMatcher::Builder(). + addSupportedLocale("ar-EG"). + build(errorCode); + Locale desired("ar-SA-u-nu-latn"); + LocaleMatcher::Result result = matcher.getBestMatchResult(desired, errorCode); + assertEquals("best", "ar_EG", locString(result.getSupportedLocale())); + Locale resolved = result.makeResolvedLocale(errorCode); + assertEquals("ar-EG + ar-SA-u-nu-latn = ar-SA-u-nu-latn", + "ar-SA-u-nu-latn", + resolved.toLanguageTag(errorCode).data()); +} + +namespace { + +bool toInvariant(const UnicodeString &s, CharString &inv, ErrorCode &errorCode) { + if (errorCode.isSuccess()) { + inv.clear().appendInvariantChars(s, errorCode); + return errorCode.isSuccess(); + } + return false; +} + +bool getSuffixAfterPrefix(const UnicodeString &s, int32_t limit, + const UnicodeString &prefix, UnicodeString &suffix) { + if (prefix.length() <= limit && s.startsWith(prefix)) { + suffix.setTo(s, prefix.length(), limit - prefix.length()); + return true; + } else { + return false; + } +} + +bool getInvariantSuffixAfterPrefix(const UnicodeString &s, int32_t limit, + const UnicodeString &prefix, CharString &suffix, + ErrorCode &errorCode) { + UnicodeString u_suffix; + return getSuffixAfterPrefix(s, limit, prefix, u_suffix) && + toInvariant(u_suffix, suffix, errorCode); +} + +bool readTestCase(const UnicodeString &line, TestCase &test, IcuTestErrorCode &errorCode) { + if (errorCode.isFailure()) { return false; } + ++test.lineNr; + // Start of comment, or end of line, minus trailing spaces. + int32_t limit = line.indexOf(u'#'); + if (limit < 0) { + limit = line.length(); + // Remove trailing CR LF. + char16_t c; + while (limit > 0 && ((c = line.charAt(limit - 1)) == u'\n' || c == u'\r')) { + --limit; + } + } + // Remove spaces before comment or at the end of the line. + char16_t c; + while (limit > 0 && ((c = line.charAt(limit - 1)) == u' ' || c == u'\t')) { + --limit; + } + if (limit == 0) { // empty line + return false; + } + if (line.startsWith(u"** test: ")) { + test.reset(); + } else if (getInvariantSuffixAfterPrefix(line, limit, u"@supported=", + test.supported, errorCode)) { + } else if (getInvariantSuffixAfterPrefix(line, limit, u"@default=", + test.def, errorCode)) { + } else if (getSuffixAfterPrefix(line, limit, u"@favor=", test.favor)) { + } else if (getSuffixAfterPrefix(line, limit, u"@threshold=", test.threshold)) { + } else { + int32_t matchSep = line.indexOf(u">>"); + // >> before an inline comment, and followed by more than white space. + if (0 <= matchSep && (matchSep + 2) < limit) { + toInvariant(line.tempSubStringBetween(0, matchSep).trim(), test.desired, errorCode); + test.expDesired.clear(); + test.expCombined.clear(); + int32_t start = matchSep + 2; + int32_t expLimit = line.indexOf(u'|', start); + if (expLimit < 0) { + toInvariant(line.tempSubStringBetween(start, limit).trim(), + test.expMatch, errorCode); + } else { + toInvariant(line.tempSubStringBetween(start, expLimit).trim(), + test.expMatch, errorCode); + start = expLimit + 1; + expLimit = line.indexOf(u'|', start); + if (expLimit < 0) { + toInvariant(line.tempSubStringBetween(start, limit).trim(), + test.expDesired, errorCode); + } else { + toInvariant(line.tempSubStringBetween(start, expLimit).trim(), + test.expDesired, errorCode); + toInvariant(line.tempSubStringBetween(expLimit + 1, limit).trim(), + test.expCombined, errorCode); + } + } + return errorCode.isSuccess(); + } else { + errorCode.set(U_INVALID_FORMAT_ERROR); + } + } + return false; +} + +Locale *getLocaleOrNull(const CharString &s, Locale &locale) { + if (s == "null") { + return nullptr; + } else { + return &(locale = Locale(s.data())); + } +} + +} // namespace + +UBool LocaleMatcherTest::dataDriven(const TestCase &test, IcuTestErrorCode &errorCode) { + LocaleMatcher::Builder builder; + builder.setSupportedLocalesFromListString(test.supported.toStringPiece()); + if (!test.def.isEmpty()) { + Locale defaultLocale(test.def.data()); + builder.setDefaultLocale(&defaultLocale); + } + if (!test.favor.isEmpty()) { + ULocMatchFavorSubtag favor; + if (test.favor == u"normal") { + favor = ULOCMATCH_FAVOR_LANGUAGE; + } else if (test.favor == u"script") { + favor = ULOCMATCH_FAVOR_SCRIPT; + } else { + errln(UnicodeString(u"unsupported FavorSubtag value ") + test.favor); + return FALSE; + } + builder.setFavorSubtag(favor); + } + if (!test.threshold.isEmpty()) { + infoln("skipping test case on line %d with non-default threshold: not exposed via API", + (int)test.lineNr); + return TRUE; + // int32_t threshold = Integer.valueOf(test.threshold); + // builder.internalSetThresholdDistance(threshold); + } + LocaleMatcher matcher = builder.build(errorCode); + if (errorCode.errIfFailureAndReset("LocaleMatcher::Builder::build()")) { + return FALSE; + } + + Locale expMatchLocale(""); + Locale *expMatch = getLocaleOrNull(test.expMatch, expMatchLocale); + if (test.expDesired.isEmpty() && test.expCombined.isEmpty()) { + StringPiece desiredSP = test.desired.toStringPiece(); + const Locale *bestSupported = matcher.getBestMatchForListString(desiredSP, errorCode); + if (!assertEquals("bestSupported from string", + locString(expMatch), locString(bestSupported))) { + return FALSE; + } + LocalePriorityList desired(test.desired.toStringPiece(), errorCode); + LocalePriorityList::Iterator desiredIter = desired.iterator(); + if (desired.getLength() == 1) { + const Locale &desiredLocale = desiredIter.next(); + bestSupported = matcher.getBestMatch(desiredLocale, errorCode); + UBool ok = assertEquals("bestSupported from Locale", + locString(expMatch), locString(bestSupported)); + + LocaleMatcher::Result result = matcher.getBestMatchResult(desiredLocale, errorCode); + return ok & assertEquals("result.getSupportedLocale from Locale", + locString(expMatch), locString(result.getSupportedLocale())); + } else { + bestSupported = matcher.getBestMatch(desiredIter, errorCode); + return assertEquals("bestSupported from Locale iterator", + locString(expMatch), locString(bestSupported)); + } + } else { + LocalePriorityList desired(test.desired.toStringPiece(), errorCode); + LocalePriorityList::Iterator desiredIter = desired.iterator(); + LocaleMatcher::Result result = matcher.getBestMatchResult(desiredIter, errorCode); + UBool ok = assertEquals("result.getSupportedLocale from Locales", + locString(expMatch), locString(result.getSupportedLocale())); + if (!test.expDesired.isEmpty()) { + Locale expDesiredLocale(""); + Locale *expDesired = getLocaleOrNull(test.expDesired, expDesiredLocale); + ok &= assertEquals("result.getDesiredLocale from Locales", + locString(expDesired), locString(result.getDesiredLocale())); + } + if (!test.expCombined.isEmpty()) { + if (test.expMatch.contains("-u-")) { + logKnownIssue("20727", + UnicodeString(u"ignoring makeResolvedLocale() line ") + test.lineNr); + return ok; + } + Locale expCombinedLocale(""); + Locale *expCombined = getLocaleOrNull(test.expCombined, expCombinedLocale); + Locale combined = result.makeResolvedLocale(errorCode); + ok &= assertEquals("combined Locale from Locales", + locString(expCombined), locString(&combined)); + } + return ok; + } +} + +void LocaleMatcherTest::testDataDriven() { + IcuTestErrorCode errorCode(*this, "testDataDriven"); + CharString path(getSourceTestData(errorCode), errorCode); + path.appendPathPart("localeMatcherTest.txt", errorCode); + const char *codePage = "UTF-8"; + LocalUCHARBUFPointer f(ucbuf_open(path.data(), &codePage, TRUE, FALSE, errorCode)); + if(errorCode.errIfFailureAndReset("ucbuf_open(localeMatcherTest.txt)")) { + return; + } + int32_t lineLength; + const UChar *p; + UnicodeString line; + TestCase test; + int32_t numPassed = 0; + while ((p = ucbuf_readline(f.getAlias(), &lineLength, errorCode)) != nullptr && + errorCode.isSuccess()) { + line.setTo(FALSE, p, lineLength); + if (!readTestCase(line, test, errorCode)) { + if (errorCode.errIfFailureAndReset( + "test data syntax error on line %d", (int)test.lineNr)) { + infoln(line); + } + continue; + } + UBool ok = dataDriven(test, errorCode); + if (errorCode.errIfFailureAndReset("test error on line %d", (int)test.lineNr)) { + infoln(line); + } else if (!ok) { + infoln("test failure on line %d", (int)test.lineNr); + infoln(line); + } else { + ++numPassed; + } + } + infoln("number of passing test cases: %d", (int)numPassed); +} diff --git a/source/test/intltest/locnmtst.cpp b/source/test/intltest/locnmtst.cpp index a9ed5e6..26f730d 100644 --- a/source/test/intltest/locnmtst.cpp +++ b/source/test/intltest/locnmtst.cpp @@ -20,13 +20,12 @@ the macro is ugly but makes the tests pretty. */ -#define test_assert(test) \ - { \ - if(!(test)) \ - errln("FAIL: " #test " was not true. In " __FILE__ " on line %d", __LINE__ ); \ - else \ - logln("PASS: asserted " #test); \ - } +#define test_assert(test) UPRV_BLOCK_MACRO_BEGIN { \ + if(!(test)) \ + errln("FAIL: " #test " was not true. In " __FILE__ " on line %d", __LINE__ ); \ + else \ + logln("PASS: asserted " #test); \ +} UPRV_BLOCK_MACRO_END /* Usage: @@ -38,25 +37,25 @@ the macro is ugly but makes the tests pretty. */ -#define test_assert_print(test,print) \ - { \ - if(!(test)) \ - errln("FAIL: " #test " was not true. " + UnicodeString(print) ); \ - else \ - logln("PASS: asserted " #test "-> " + UnicodeString(print)); \ - } +#define test_assert_print(test,print) UPRV_BLOCK_MACRO_BEGIN { \ + if(!(test)) \ + errln("FAIL: " #test " was not true. " + UnicodeString(print) ); \ + else \ + logln("PASS: asserted " #test "-> " + UnicodeString(print)); \ +} UPRV_BLOCK_MACRO_END -#define test_assert_equal(target,value) \ - { \ +#define test_assert_equal(target,value) UPRV_BLOCK_MACRO_BEGIN { \ if (UnicodeString(target)!=(value)) { \ - logln("unexpected value '" + (value) + "'"); \ - dataerrln("FAIL: " #target " == " #value " was not true. In " __FILE__ " on line %d", __LINE__); \ + logln("unexpected value '" + (value) + "'"); \ + dataerrln("FAIL: " #target " == " #value " was not true. In " __FILE__ " on line %d", __LINE__); \ } else { \ - logln("PASS: asserted " #target " == " #value); \ + logln("PASS: asserted " #target " == " #value); \ } \ - } +} UPRV_BLOCK_MACRO_END -#define test_dumpLocale(l) { logln(#l " = " + UnicodeString(l.getName(), "")); } +#define test_dumpLocale(l) UPRV_BLOCK_MACRO_BEGIN { \ + logln(#l " = " + UnicodeString(l.getName(), "")); \ +} UPRV_BLOCK_MACRO_END LocaleDisplayNamesTest::LocaleDisplayNamesTest() { } @@ -82,6 +81,7 @@ void LocaleDisplayNamesTest::runIndexedTest(int32_t index, UBool exec, const cha TESTCASE(11, TestPrivateUse); TESTCASE(12, TestUldnDisplayContext); TESTCASE(13, TestUldnWithGarbage); + TESTCASE(14, TestSubstituteHandling); #endif default: name = ""; @@ -422,4 +422,161 @@ void LocaleDisplayNamesTest::TestRootEtc() { delete ldn; } +static const char unknown_region[] = "wx"; +static const char unknown_lang[] = "xy"; +static const char unknown_script[] = "wxyz"; +static const char unknown_variant[] = "abc"; +static const char unknown_key[] = "efg"; +static const char unknown_ca_value[] = "ijk"; +static const char known_lang_unknown_script[] = "en-wxyz"; +static const char unknown_lang_unknown_script[] = "xy-wxyz"; +static const char unknown_lang_known_script[] = "xy-Latn"; +static const char unknown_lang_unknown_region[] = "xy-wx"; +static const char known_lang_unknown_region[] = "en-wx"; +static const char unknown_lang_known_region[] = "xy-US"; +static const char unknown_lang_unknown_script_unknown_region[] = "xy-wxyz-wx"; +static const char known_lang_unknown_script_unknown_region[] = "en-wxyz-wx"; +static const char unknown_lang_known_script_unknown_region[] = "xy-Latn-wx"; +static const char unknown_lang_known_script_known_region[] = "xy-wxyz-US"; +static const char known_lang[] = "en"; +static const char known_lang_known_script[] = "en-Latn"; +static const char known_lang_known_region[] = "en-US"; +static const char known_lang_known_script_known_region[] = "en-Latn-US"; + +void LocaleDisplayNamesTest::VerifySubstitute(LocaleDisplayNames* ldn) { + UnicodeString temp; + // Ensure the default is UDISPCTX_SUBSTITUTE + UDisplayContext context = ldn->getContext(UDISPCTX_TYPE_SUBSTITUTE_HANDLING); + test_assert(UDISPCTX_SUBSTITUTE == context); + + ldn->regionDisplayName(unknown_region, temp); + test_assert_equal(unknown_region, temp); + ldn->languageDisplayName(unknown_lang, temp); + test_assert_equal(unknown_lang, temp); + ldn->scriptDisplayName(unknown_script, temp); + test_assert_equal(unknown_script, temp); + ldn->variantDisplayName(unknown_variant, temp); + test_assert_equal(unknown_variant, temp); + ldn->keyDisplayName(unknown_key, temp); + test_assert_equal(unknown_key, temp); + ldn->keyValueDisplayName("ca", unknown_ca_value, temp); + test_assert_equal(unknown_ca_value, temp); + + ldn->localeDisplayName(unknown_lang, temp); + test_assert_equal(unknown_lang, temp); + ldn->localeDisplayName(known_lang_unknown_script, temp); + test_assert_equal("Englisch (Wxyz)", temp); + ldn->localeDisplayName(unknown_lang_unknown_script, temp); + test_assert_equal("xy (Wxyz)", temp); + ldn->localeDisplayName(unknown_lang_known_script, temp); + test_assert_equal("xy (Lateinisch)", temp); + ldn->localeDisplayName(unknown_lang_unknown_region, temp); + test_assert_equal("xy (WX)", temp); + ldn->localeDisplayName(known_lang_unknown_region, temp); + test_assert_equal("Englisch (WX)", temp); + ldn->localeDisplayName(unknown_lang_known_region, temp); + test_assert_equal("xy (Vereinigte Staaten)", temp); + ldn->localeDisplayName(unknown_lang_unknown_script_unknown_region, temp); + test_assert_equal("xy (Wxyz, WX)", temp); + ldn->localeDisplayName(known_lang_unknown_script_unknown_region, temp); + test_assert_equal("Englisch (Wxyz, WX)", temp); + ldn->localeDisplayName(unknown_lang_known_script_unknown_region, temp); + test_assert_equal("xy (Lateinisch, WX)", temp); + ldn->localeDisplayName(unknown_lang_known_script_known_region, temp); + test_assert_equal("xy (Wxyz, Vereinigte Staaten)", temp); + + ldn->localeDisplayName(known_lang, temp); + test_assert_equal("Englisch", temp); + ldn->localeDisplayName(known_lang_known_script, temp); + test_assert_equal("Englisch (Lateinisch)", temp); + ldn->localeDisplayName(known_lang_known_region, temp); + test_assert_equal("Englisch (Vereinigte Staaten)", temp); + ldn->localeDisplayName(known_lang_known_script_known_region, temp); + test_assert_equal("Englisch (Lateinisch, Vereinigte Staaten)", temp); +} + +void LocaleDisplayNamesTest::VerifyNoSubstitute(LocaleDisplayNames* ldn) { + UnicodeString temp(""); + std::string utf8; + // Ensure the default is UDISPCTX_SUBSTITUTE + UDisplayContext context = ldn->getContext(UDISPCTX_TYPE_SUBSTITUTE_HANDLING); + test_assert(UDISPCTX_NO_SUBSTITUTE == context); + + ldn->regionDisplayName(unknown_region, temp); + test_assert(TRUE == temp.isBogus()); + ldn->languageDisplayName(unknown_lang, temp); + test_assert(TRUE == temp.isBogus()); + ldn->scriptDisplayName(unknown_script, temp); + test_assert(TRUE == temp.isBogus()); + ldn->variantDisplayName(unknown_variant, temp); + test_assert(TRUE == temp.isBogus()); + ldn->keyDisplayName(unknown_key, temp); + test_assert(TRUE == temp.isBogus()); + ldn->keyValueDisplayName("ca", unknown_ca_value, temp); + test_assert(TRUE == temp.isBogus()); + + ldn->localeDisplayName(unknown_lang, temp); + test_assert(TRUE == temp.isBogus()); + ldn->localeDisplayName(known_lang_unknown_script, temp); + test_assert(TRUE == temp.isBogus()); + ldn->localeDisplayName(unknown_lang_unknown_script, temp); + test_assert(TRUE == temp.isBogus()); + ldn->localeDisplayName(unknown_lang_known_script, temp); + test_assert(TRUE == temp.isBogus()); + ldn->localeDisplayName(unknown_lang_unknown_region, temp); + test_assert(TRUE == temp.isBogus()); + ldn->localeDisplayName(known_lang_unknown_region, temp); + test_assert(TRUE == temp.isBogus()); + ldn->localeDisplayName(unknown_lang_known_region, temp); + test_assert(TRUE == temp.isBogus()); + ldn->localeDisplayName(unknown_lang_unknown_script_unknown_region, temp); + test_assert(TRUE == temp.isBogus()); + ldn->localeDisplayName(known_lang_unknown_script_unknown_region, temp); + test_assert(TRUE == temp.isBogus()); + ldn->localeDisplayName(unknown_lang_known_script_unknown_region, temp); + test_assert(TRUE == temp.isBogus()); + ldn->localeDisplayName(unknown_lang_known_script_known_region, temp); + test_assert(TRUE == temp.isBogus()); + + ldn->localeDisplayName(known_lang, temp); + test_assert_equal("Englisch", temp); + ldn->localeDisplayName(known_lang_known_script, temp); + test_assert_equal("Englisch (Lateinisch)", temp); + ldn->localeDisplayName(known_lang_known_region, temp); + test_assert_equal("Englisch (Vereinigte Staaten)", temp); + ldn->localeDisplayName(known_lang_known_script_known_region, temp); + test_assert_equal("Englisch (Lateinisch, Vereinigte Staaten)", temp); +} + +void LocaleDisplayNamesTest::TestSubstituteHandling() { + // With substitute as default + logln("Context: none\n"); + std::unique_ptr ldn(LocaleDisplayNames::createInstance(Locale::getGermany())); + VerifySubstitute(ldn.get()); + + // With explicit set substitute, and standard names + logln("Context: UDISPCTX_SUBSTITUTE, UDISPCTX_STANDARD_NAMES\n"); + UDisplayContext context_1[] = { UDISPCTX_SUBSTITUTE, UDISPCTX_STANDARD_NAMES }; + ldn.reset(LocaleDisplayNames::createInstance(Locale::getGermany(), context_1, 2)); + VerifySubstitute(ldn.get()); + + // With explicit set substitute and dialect names + logln("Context: UDISPCTX_SUBSTITUTE, UDISPCTX_DIALECT_NAMES\n"); + UDisplayContext context_2[] = { UDISPCTX_SUBSTITUTE, UDISPCTX_DIALECT_NAMES }; + ldn.reset(LocaleDisplayNames::createInstance(Locale::getGermany(), context_2, 2)); + VerifySubstitute(ldn.get()); + + // With explicit set no_substitute, and standard names + logln("Context: UDISPCTX_NO_SUBSTITUTE, UDISPCTX_STANDARD_NAMES\n"); + UDisplayContext context_3[] = { UDISPCTX_NO_SUBSTITUTE, UDISPCTX_STANDARD_NAMES }; + ldn.reset(LocaleDisplayNames::createInstance(Locale::getGermany(), context_3, 2)); + VerifyNoSubstitute(ldn.get()); + + // With explicit set no_substitute and dialect names + logln("Context: UDISPCTX_NO_SUBSTITUTE, UDISPCTX_DIALECT_NAMES\n"); + UDisplayContext context_4[] = { UDISPCTX_NO_SUBSTITUTE, UDISPCTX_DIALECT_NAMES }; + ldn.reset(LocaleDisplayNames::createInstance(Locale::getGermany(), context_4, 2)); + VerifyNoSubstitute(ldn.get()); +} + #endif /* UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/locnmtst.h b/source/test/intltest/locnmtst.h index 0f84f98..ad0af46 100644 --- a/source/test/intltest/locnmtst.h +++ b/source/test/intltest/locnmtst.h @@ -37,5 +37,10 @@ public: void TestPrivateUse(void); void TestUldnDisplayContext(void); void TestUldnWithGarbage(void); + void TestSubstituteHandling(void); + + void VerifySubstitute(LocaleDisplayNames* ldn); + void VerifyNoSubstitute(LocaleDisplayNames* ldn); #endif + }; diff --git a/source/test/intltest/loctest.cpp b/source/test/intltest/loctest.cpp index 8db52c6..98612a1 100644 --- a/source/test/intltest/loctest.cpp +++ b/source/test/intltest/loctest.cpp @@ -6,6 +6,7 @@ * others. All Rights Reserved. ********************************************************************/ +#include #include #include #include @@ -146,13 +147,12 @@ static const char* const rawData[33][8] = { the macro is ugly but makes the tests pretty. */ -#define test_assert(test) \ - { \ - if(!(test)) \ - errln("FAIL: " #test " was not true. In " __FILE__ " on line %d", __LINE__ ); \ - else \ - logln("PASS: asserted " #test); \ - } +#define test_assert(test) UPRV_BLOCK_MACRO_BEGIN { \ + if(!(test)) \ + errln("FAIL: " #test " was not true. In " __FILE__ " on line %d", __LINE__ ); \ + else \ + logln("PASS: asserted " #test); \ +} UPRV_BLOCK_MACRO_END /* Usage: @@ -164,16 +164,17 @@ static const char* const rawData[33][8] = { the macro is ugly but makes the tests pretty. */ -#define test_assert_print(test,print) \ - { \ - if(!(test)) \ - errln("FAIL: " #test " was not true. " + UnicodeString(print) ); \ - else \ - logln("PASS: asserted " #test "-> " + UnicodeString(print)); \ - } +#define test_assert_print(test,print) UPRV_BLOCK_MACRO_BEGIN { \ + if(!(test)) \ + errln("FAIL: " #test " was not true. " + UnicodeString(print) ); \ + else \ + logln("PASS: asserted " #test "-> " + UnicodeString(print)); \ +} UPRV_BLOCK_MACRO_END -#define test_dumpLocale(l) { logln(#l " = " + UnicodeString(l.getName(), "")); } +#define test_dumpLocale(l) UPRV_BLOCK_MACRO_BEGIN { \ + logln(#l " = " + UnicodeString(l.getName(), "")); \ +} UPRV_BLOCK_MACRO_END LocaleTest::LocaleTest() : dataTable(NULL) @@ -221,6 +222,7 @@ void LocaleTest::runIndexedTest( int32_t index, UBool exec, const char* &name, c TESTCASE_AUTO(Test4147317); TESTCASE_AUTO(Test4147552); TESTCASE_AUTO(TestVariantParsing); + TESTCASE_AUTO(Test20639_DeprecatesISO3Language); #if !UCONFIG_NO_FORMATTING TESTCASE_AUTO(Test4105828); #endif @@ -233,7 +235,9 @@ void LocaleTest::runIndexedTest( int32_t index, UBool exec, const char* &name, c TESTCASE_AUTO(TestCreateUnicodeKeywords); TESTCASE_AUTO(TestKeywordVariantParsing); TESTCASE_AUTO(TestCreateKeywordSet); + TESTCASE_AUTO(TestCreateKeywordSetEmpty); TESTCASE_AUTO(TestCreateUnicodeKeywordSet); + TESTCASE_AUTO(TestCreateUnicodeKeywordSetEmpty); TESTCASE_AUTO(TestGetKeywordValueStdString); TESTCASE_AUTO(TestGetUnicodeKeywordValueStdString); TESTCASE_AUTO(TestSetKeywordValue); @@ -251,6 +255,7 @@ void LocaleTest::runIndexedTest( int32_t index, UBool exec, const char* &name, c TESTCASE_AUTO(TestBug13277); TESTCASE_AUTO(TestBug13554); TESTCASE_AUTO(TestBug20410); + TESTCASE_AUTO(TestConstructorAcceptsBCP47); TESTCASE_AUTO(TestForLanguageTag); TESTCASE_AUTO(TestToLanguageTag); TESTCASE_AUTO(TestMoveAssign); @@ -262,6 +267,10 @@ void LocaleTest::runIndexedTest( int32_t index, UBool exec, const char* &name, c TESTCASE_AUTO(TestUndScript); TESTCASE_AUTO(TestUndRegion); TESTCASE_AUTO(TestUndCAPI); + TESTCASE_AUTO(TestRangeIterator); + TESTCASE_AUTO(TestPointerConvertingIterator); + TESTCASE_AUTO(TestTagConvertingIterator); + TESTCASE_AUTO(TestCapturingTagConvertingIterator); TESTCASE_AUTO_END; } @@ -898,8 +907,8 @@ LocaleTest::TestGetLangsAndCountries() ; /* TODO: Change this test to be more like the cloctst version? */ - if (testCount != 595) - errln("Expected getISOLanguages() to return 595 languages; it returned %d", testCount); + if (testCount != 596) + errln("Expected getISOLanguages() to return 596 languages; it returned %d", testCount); else { for (i = 0; i < 15; i++) { int32_t j; @@ -1574,6 +1583,27 @@ LocaleTest::TestVariantParsing() } } +void LocaleTest::Test20639_DeprecatesISO3Language() { + IcuTestErrorCode status(*this, "Test20639_DeprecatesISO3Language"); + + const struct TestCase { + const char* localeName; + const char* expectedISO3Language; + } cases[] = { + {"nb", "nob"}, + {"no", "nor"}, // why not nob? + {"he", "heb"}, + {"iw", "heb"}, + {"ro", "ron"}, + {"mo", "mol"}, + }; + for (auto& cas : cases) { + Locale loc(cas.localeName); + const char* actual = loc.getISO3Language(); + assertEquals(cas.localeName, cas.expectedISO3Language, actual); + } +} + #if !UCONFIG_NO_FORMATTING /** @@ -1913,6 +1943,21 @@ LocaleTest::TestCreateKeywordSet(void) { } void +LocaleTest::TestCreateKeywordSetEmpty(void) { + IcuTestErrorCode status(*this, "TestCreateKeywordSetEmpty()"); + + static const Locale l("de"); + + std::set result; + l.getKeywords( + std::insert_iterator(result, result.begin()), + status); + status.errIfFailureAndReset("\"%s\"", l.getName()); + + assertEquals("set::size()", 0, static_cast(result.size())); +} + +void LocaleTest::TestCreateUnicodeKeywordSet(void) { IcuTestErrorCode status(*this, "TestCreateUnicodeKeywordSet()"); @@ -1932,6 +1977,21 @@ LocaleTest::TestCreateUnicodeKeywordSet(void) { } void +LocaleTest::TestCreateUnicodeKeywordSetEmpty(void) { + IcuTestErrorCode status(*this, "TestCreateUnicodeKeywordSetEmpty()"); + + static const Locale l("de"); + + std::set result; + l.getUnicodeKeywords( + std::insert_iterator(result, result.begin()), + status); + status.errIfFailureAndReset("\"%s\"", l.getName()); + + assertEquals("set::size()", 0, static_cast(result.size())); +} + +void LocaleTest::TestGetKeywordValueStdString(void) { IcuTestErrorCode status(*this, "TestGetKeywordValueStdString()"); @@ -2640,7 +2700,7 @@ void LocaleTest::TestCurrencyByDate(void) #if !UCONFIG_NO_FORMATTING UErrorCode status = U_ZERO_ERROR; UDate date = uprv_getUTCtime(); - UChar TMP[4]; + UChar TMP[4] = {0, 0, 0, 0}; int32_t index = 0; int32_t resLen = 0; UnicodeString tempStr, resultStr; @@ -3046,6 +3106,45 @@ void LocaleTest::TestBug20410() { assertEquals(locid4, expected4.getName(), result4.getName()); } +void LocaleTest::TestConstructorAcceptsBCP47() { + IcuTestErrorCode status(*this, "TestConstructorAcceptsBCP47"); + + Locale loc1("ar-EG-u-nu-latn"); + Locale loc2("ar-EG@numbers=latn"); + Locale loc3("ar-EG"); + std::string val; + + // Check getKeywordValue "numbers" + val = loc1.getKeywordValue("numbers", status); + assertEquals("BCP47 syntax has ICU keyword value", "latn", val.c_str()); + + val = loc2.getKeywordValue("numbers", status); + assertEquals("ICU syntax has ICU keyword value", "latn", val.c_str()); + + val = loc3.getKeywordValue("numbers", status); + assertEquals("Default, ICU keyword", "", val.c_str()); + + // Check getUnicodeKeywordValue "nu" + val = loc1.getUnicodeKeywordValue("nu", status); + assertEquals("BCP47 syntax has short unicode keyword value", "latn", val.c_str()); + + val = loc2.getUnicodeKeywordValue("nu", status); + assertEquals("ICU syntax has short unicode keyword value", "latn", val.c_str()); + + val = loc3.getUnicodeKeywordValue("nu", status); + status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR, "Default, short unicode keyword"); + + // Check getUnicodeKeywordValue "numbers" + val = loc1.getUnicodeKeywordValue("numbers", status); + assertEquals("BCP47 syntax has long unicode keyword value", "latn", val.c_str()); + + val = loc2.getUnicodeKeywordValue("numbers", status); + assertEquals("ICU syntax has long unicode keyword value", "latn", val.c_str()); + + val = loc3.getUnicodeKeywordValue("numbers", status); + status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR, "Default, long unicode keyword"); +} + void LocaleTest::TestForLanguageTag() { IcuTestErrorCode status(*this, "TestForLanguageTag()"); @@ -3738,3 +3837,118 @@ void LocaleTest::TestUndCAPI() { assertTrue("reslen >= 0", reslen >= 0); assertEquals("uloc_getLanguage()", empty, tmp); } + +#define ARRAY_RANGE(array) (array), ((array) + UPRV_LENGTHOF(array)) + +void LocaleTest::TestRangeIterator() { + IcuTestErrorCode status(*this, "TestRangeIterator"); + Locale locales[] = { "fr", "en_GB", "en" }; + Locale::RangeIterator iter(ARRAY_RANGE(locales)); + + assertTrue("0.hasNext()", iter.hasNext()); + const Locale &l0 = iter.next(); + assertEquals("0.next()", "fr", l0.getName()); + assertTrue("&0.next()", &l0 == &locales[0]); + + assertTrue("1.hasNext()", iter.hasNext()); + const Locale &l1 = iter.next(); + assertEquals("1.next()", "en_GB", l1.getName()); + assertTrue("&1.next()", &l1 == &locales[1]); + + assertTrue("2.hasNext()", iter.hasNext()); + const Locale &l2 = iter.next(); + assertEquals("2.next()", "en", l2.getName()); + assertTrue("&2.next()", &l2 == &locales[2]); + + assertFalse("3.hasNext()", iter.hasNext()); +} + +void LocaleTest::TestPointerConvertingIterator() { + IcuTestErrorCode status(*this, "TestPointerConvertingIterator"); + Locale locales[] = { "fr", "en_GB", "en" }; + Locale *pointers[] = { locales, locales + 1, locales + 2 }; + // Lambda with explicit reference return type to prevent copy-constructing a temporary + // which would be destructed right away. + Locale::ConvertingIterator> iter( + ARRAY_RANGE(pointers), [](const Locale *p) -> const Locale & { return *p; }); + + assertTrue("0.hasNext()", iter.hasNext()); + const Locale &l0 = iter.next(); + assertEquals("0.next()", "fr", l0.getName()); + assertTrue("&0.next()", &l0 == pointers[0]); + + assertTrue("1.hasNext()", iter.hasNext()); + const Locale &l1 = iter.next(); + assertEquals("1.next()", "en_GB", l1.getName()); + assertTrue("&1.next()", &l1 == pointers[1]); + + assertTrue("2.hasNext()", iter.hasNext()); + const Locale &l2 = iter.next(); + assertEquals("2.next()", "en", l2.getName()); + assertTrue("&2.next()", &l2 == pointers[2]); + + assertFalse("3.hasNext()", iter.hasNext()); +} + +namespace { + +class LocaleFromTag { +public: + LocaleFromTag() : locale(Locale::getRoot()) {} + const Locale &operator()(const char *tag) { return locale = Locale(tag); } + +private: + // Store the locale in the converter, rather than return a reference to a temporary, + // or a value which could go out of scope with the caller's reference to it. + Locale locale; +}; + +} // namespace + +void LocaleTest::TestTagConvertingIterator() { + IcuTestErrorCode status(*this, "TestTagConvertingIterator"); + const char *tags[] = { "fr", "en_GB", "en" }; + LocaleFromTag converter; + Locale::ConvertingIterator iter(ARRAY_RANGE(tags), converter); + + assertTrue("0.hasNext()", iter.hasNext()); + const Locale &l0 = iter.next(); + assertEquals("0.next()", "fr", l0.getName()); + + assertTrue("1.hasNext()", iter.hasNext()); + const Locale &l1 = iter.next(); + assertEquals("1.next()", "en_GB", l1.getName()); + + assertTrue("2.hasNext()", iter.hasNext()); + const Locale &l2 = iter.next(); + assertEquals("2.next()", "en", l2.getName()); + + assertFalse("3.hasNext()", iter.hasNext()); +} + +void LocaleTest::TestCapturingTagConvertingIterator() { + IcuTestErrorCode status(*this, "TestCapturingTagConvertingIterator"); + const char *tags[] = { "fr", "en_GB", "en" }; + // Store the converted locale in a locale variable, + // rather than return a reference to a temporary, + // or a value which could go out of scope with the caller's reference to it. + Locale locale; + // Lambda with explicit reference return type to prevent copy-constructing a temporary + // which would be destructed right away. + Locale::ConvertingIterator> iter( + ARRAY_RANGE(tags), [&](const char *tag) -> const Locale & { return locale = Locale(tag); }); + + assertTrue("0.hasNext()", iter.hasNext()); + const Locale &l0 = iter.next(); + assertEquals("0.next()", "fr", l0.getName()); + + assertTrue("1.hasNext()", iter.hasNext()); + const Locale &l1 = iter.next(); + assertEquals("1.next()", "en_GB", l1.getName()); + + assertTrue("2.hasNext()", iter.hasNext()); + const Locale &l2 = iter.next(); + assertEquals("2.next()", "en", l2.getName()); + + assertFalse("3.hasNext()", iter.hasNext()); +} diff --git a/source/test/intltest/loctest.h b/source/test/intltest/loctest.h index 85da54f..065213e 100644 --- a/source/test/intltest/loctest.h +++ b/source/test/intltest/loctest.h @@ -69,6 +69,8 @@ public: void Test4147315(void); void Test4147317(void); void Test4147552(void); + + void Test20639_DeprecatesISO3Language(); void TestVariantParsing(void); @@ -79,7 +81,9 @@ public: /* Test getting keyword values */ void TestKeywordVariantParsing(void); void TestCreateKeywordSet(void); + void TestCreateKeywordSetEmpty(void); void TestCreateUnicodeKeywordSet(void); + void TestCreateUnicodeKeywordSetEmpty(void); void TestGetKeywordValueStdString(void); void TestGetUnicodeKeywordValueStdString(void); @@ -115,6 +119,7 @@ public: void TestBug13277(); void TestBug13554(); void TestBug20410(); + void TestConstructorAcceptsBCP47(); void TestAddLikelySubtags(); void TestMinimizeSubtags(); @@ -136,6 +141,10 @@ public: void TestUndScript(); void TestUndRegion(); void TestUndCAPI(); + void TestRangeIterator(); + void TestPointerConvertingIterator(); + void TestTagConvertingIterator(); + void TestCapturingTagConvertingIterator(); private: void _checklocs(const char* label, diff --git a/source/test/intltest/measfmttest.cpp b/source/test/intltest/measfmttest.cpp index 1b73f54..2b53f8b 100644 --- a/source/test/intltest/measfmttest.cpp +++ b/source/test/intltest/measfmttest.cpp @@ -28,6 +28,7 @@ #include "charstr.h" #include "cstr.h" #include "unicode/reldatefmt.h" +#include "unicode/rbnf.h" struct ExpectedResult { const Measure *measures; @@ -52,6 +53,7 @@ private: void TestCompatible59(); void TestCompatible63(); void TestCompatible64(); + void TestCompatible65(); void TestGetAvailable(); void TestExamplesInDocs(); void TestFormatPeriodEn(); @@ -75,6 +77,8 @@ private: void TestUnitPerUnitResolution(); void TestIndividualPluralFallback(); void Test20332_PersonUnits(); + void TestNumericTime(); + void TestNumericTimeSomeSpecialFormats(); void verifyFormat( const char *description, const MeasureFormat &fmt, @@ -152,6 +156,7 @@ void MeasureFormatTest::runIndexedTest( TESTCASE_AUTO(TestCompatible59); TESTCASE_AUTO(TestCompatible63); TESTCASE_AUTO(TestCompatible64); + TESTCASE_AUTO(TestCompatible65); TESTCASE_AUTO(TestGetAvailable); TESTCASE_AUTO(TestExamplesInDocs); TESTCASE_AUTO(TestFormatPeriodEn); @@ -175,6 +180,8 @@ void MeasureFormatTest::runIndexedTest( TESTCASE_AUTO(TestUnitPerUnitResolution); TESTCASE_AUTO(TestIndividualPluralFallback); TESTCASE_AUTO(Test20332_PersonUnits); + TESTCASE_AUTO(TestNumericTime); + TESTCASE_AUTO(TestNumericTimeSomeSpecialFormats); TESTCASE_AUTO_END; } @@ -1522,6 +1529,357 @@ void MeasureFormatTest::TestCompatible64() { assertSuccess("", status); } +void MeasureFormatTest::TestCompatible65() { + 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::createKarat(status)); + measureUnitValue = MeasureUnit::getKarat(); + 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::createPartPerMillion(status)); + measureUnitValue = MeasureUnit::getPartPerMillion(); + measureUnit.adoptInstead(MeasureUnit::createPercent(status)); + measureUnitValue = MeasureUnit::getPercent(); + measureUnit.adoptInstead(MeasureUnit::createPermille(status)); + measureUnitValue = MeasureUnit::getPermille(); + 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::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::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::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::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::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::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::createLiter(status)); + measureUnitValue = MeasureUnit::getLiter(); + measureUnit.adoptInstead(MeasureUnit::createMegaliter(status)); + measureUnitValue = MeasureUnit::getMegaliter(); + measureUnit.adoptInstead(MeasureUnit::createMilliliter(status)); + measureUnitValue = MeasureUnit::getMilliliter(); + 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::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); @@ -1539,7 +1897,7 @@ void MeasureFormatTest::TestBasic() { if (!(*ptr1 != *ptr3)) { errln("Expect != to work."); } - MeasureUnit *ptr4 = (MeasureUnit *) ptr1->clone(); + MeasureUnit *ptr4 = ptr1->clone(); if (*ptr1 != *ptr4) { errln("Expect clone to work."); } @@ -1695,6 +2053,10 @@ void MeasureFormatTest::TestExamplesInDocs() { void MeasureFormatTest::TestFormatPeriodEn() { UErrorCode status = U_ZERO_ERROR; + Measure t_1y[] = {Measure((double)1, MeasureUnit::createYear(status), status)}; + Measure t_5M[] = {Measure((double)5, MeasureUnit::createMonth(status), status)}; + Measure t_4d[] = {Measure((double)4, MeasureUnit::createDay(status), status)}; + Measure t_2h[] = {Measure((double)2, MeasureUnit::createHour(status), status)}; Measure t_19m[] = {Measure((double)19, MeasureUnit::createMinute(status), status)}; Measure t_1h_23_5s[] = { Measure((double)1.0, MeasureUnit::createHour(status), status), @@ -1837,6 +2199,46 @@ void MeasureFormatTest::TestFormatPeriodEn() { {t_6h_56_92m, UPRV_LENGTHOF(t_6h_56_92m), "6:56,92"}, {t_3h_5h, UPRV_LENGTHOF(t_3h_5h), "3 Std., 5 Std."}}; + ExpectedResult numericDataBn[] = { + {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "\\u09E7:\\u09EB\\u09EF.\\u09EF\\u09EF\\u09EF\\u09EC"}, + {t_19m, UPRV_LENGTHOF(t_19m), "\\u09E7\\u09EF \\u09AE\\u09BF\\u0983"}, + {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "\\u09E7:\\u09E6\\u09E6:\\u09E8\\u09E9.\\u09EB"}, + {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "\\u09E7:\\u09E6\\u09E6:\\u09E8\\u09E9"}, + {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "\\u09E7:\\u09E8\\u09E9.\\u09EB"}, + {t_5h_17m, UPRV_LENGTHOF(t_5h_17m), "\\u09EB:\\u09E7\\u09ED"}, + {t_19m_28s, UPRV_LENGTHOF(t_19m_28s), "\\u09E7\\u09EF:\\u09E8\\u09EE"}, + {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "\\u09E8 \\u09AC\\u099B\\u09B0, \\u09EB \\u09AE\\u09BE\\u09B8, \\u09E9 \\u09B8\\u09AA\\u09CD\\u09A4\\u09BE\\u09B9, \\u09EA \\u09A6\\u09BF\\u09A8"}, + {t_0h_0m_17s, UPRV_LENGTHOF(t_0h_0m_17s), "\\u09E6:\\u09E6\\u09E6:\\u09E7\\u09ED"}, + {t_6h_56_92m, UPRV_LENGTHOF(t_6h_56_92m), "\\u09EC:\\u09EB\\u09EC.\\u09EF\\u09E8"}, + {t_3h_5h, UPRV_LENGTHOF(t_3h_5h), "\\u09E9 \\u0998\\u0983, \\u09EB \\u0998\\u0983"}}; + + ExpectedResult numericDataBnLatn[] = { + {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1:59.9996"}, + {t_19m, UPRV_LENGTHOF(t_19m), "19 \\u09AE\\u09BF\\u0983"}, + {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1:00:23.5"}, + {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1:00:23"}, + {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1:23.5"}, + {t_5h_17m, UPRV_LENGTHOF(t_5h_17m), "5:17"}, + {t_19m_28s, UPRV_LENGTHOF(t_19m_28s), "19:28"}, + {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2 \\u09AC\\u099B\\u09B0, 5 \\u09AE\\u09BE\\u09B8, 3 \\u09B8\\u09AA\\u09CD\\u09A4\\u09BE\\u09B9, 4 \\u09A6\\u09BF\\u09A8"}, + {t_0h_0m_17s, UPRV_LENGTHOF(t_0h_0m_17s), "0:00:17"}, + {t_6h_56_92m, UPRV_LENGTHOF(t_6h_56_92m), "6:56.92"}, + {t_3h_5h, UPRV_LENGTHOF(t_3h_5h), "3 \\u0998\\u0983, 5 \\u0998\\u0983"}}; + + ExpectedResult fullDataSpellout[] = { + {t_1y, UPRV_LENGTHOF(t_1y), "one year"}, + {t_5M, UPRV_LENGTHOF(t_5M), "five months"}, + {t_4d, UPRV_LENGTHOF(t_4d), "four days"}, + {t_2h, UPRV_LENGTHOF(t_2h), "two hours"}, + {t_19m, UPRV_LENGTHOF(t_19m), "nineteen minutes"}}; + + ExpectedResult fullDataSpelloutFr[] = { + {t_1y, UPRV_LENGTHOF(t_1y), "un\\u00A0an"}, + {t_5M, UPRV_LENGTHOF(t_5M), "cinq\\u00A0mois"}, + {t_4d, UPRV_LENGTHOF(t_4d), "quatre\\u00A0jours"}, + {t_2h, UPRV_LENGTHOF(t_2h), "deux\\u00A0heures"}, + {t_19m, UPRV_LENGTHOF(t_19m), "dix-neuf minutes"}}; + Locale en(Locale::getEnglish()); LocalPointer nf(NumberFormat::createInstance(en, status)); if (U_FAILURE(status)) { @@ -1844,7 +2246,7 @@ void MeasureFormatTest::TestFormatPeriodEn() { return; } nf->setMaximumFractionDigits(4); - MeasureFormat mf(en, UMEASFMT_WIDTH_WIDE, (NumberFormat *) nf->clone(), status); + MeasureFormat mf(en, UMEASFMT_WIDTH_WIDE, nf->clone(), status); if (!assertSuccess("Error creating measure format en WIDE", status)) { return; } @@ -1857,21 +2259,21 @@ void MeasureFormatTest::TestFormatPeriodEn() { } // exercise clone { - MeasureFormat *mf3 = (MeasureFormat *) mf.clone(); + MeasureFormat *mf3 = mf.clone(); verifyFormat("en WIDE copy", *mf3, fullData, UPRV_LENGTHOF(fullData)); delete mf3; } - mf = MeasureFormat(en, UMEASFMT_WIDTH_SHORT, (NumberFormat *) nf->clone(), status); + mf = MeasureFormat(en, UMEASFMT_WIDTH_SHORT, nf->clone(), status); if (!assertSuccess("Error creating measure format en SHORT", status)) { return; } verifyFormat("en SHORT", mf, abbrevData, UPRV_LENGTHOF(abbrevData)); - mf = MeasureFormat(en, UMEASFMT_WIDTH_NARROW, (NumberFormat *) nf->clone(), status); + mf = MeasureFormat(en, UMEASFMT_WIDTH_NARROW, nf->clone(), status); if (!assertSuccess("Error creating measure format en NARROW", status)) { return; } verifyFormat("en NARROW", mf, narrowData, UPRV_LENGTHOF(narrowData)); - mf = MeasureFormat(en, UMEASFMT_WIDTH_NUMERIC, (NumberFormat *) nf->clone(), status); + mf = MeasureFormat(en, UMEASFMT_WIDTH_NUMERIC, nf->clone(), status); if (!assertSuccess("Error creating measure format en NUMERIC", status)) { return; } @@ -1883,16 +2285,64 @@ void MeasureFormatTest::TestFormatPeriodEn() { return; } nf->setMaximumFractionDigits(4); - mf = MeasureFormat(de, UMEASFMT_WIDTH_WIDE, (NumberFormat *) nf->clone(), status); + mf = MeasureFormat(de, UMEASFMT_WIDTH_WIDE, nf->clone(), status); if (!assertSuccess("Error creating measure format de WIDE", status)) { return; } verifyFormat("de WIDE", mf, fullDataDe, UPRV_LENGTHOF(fullDataDe)); - mf = MeasureFormat(de, UMEASFMT_WIDTH_NUMERIC, (NumberFormat *) nf->clone(), status); + mf = MeasureFormat(de, UMEASFMT_WIDTH_NUMERIC, nf->clone(), status); if (!assertSuccess("Error creating measure format de NUMERIC", status)) { return; } verifyFormat("de NUMERIC", mf, numericDataDe, UPRV_LENGTHOF(numericDataDe)); + + Locale bengali("bn"); + nf.adoptInstead(NumberFormat::createInstance(bengali, status)); + if (!assertSuccess("Error creating number format de object", status)) { + return; + } + nf->setMaximumFractionDigits(4); + mf = MeasureFormat(bengali, UMEASFMT_WIDTH_NUMERIC, nf->clone(), status); + if (!assertSuccess("Error creating measure format bn NUMERIC", status)) { + return; + } + verifyFormat("bn NUMERIC", mf, numericDataBn, UPRV_LENGTHOF(numericDataBn)); + + Locale bengaliLatin("bn-u-nu-latn"); + nf.adoptInstead(NumberFormat::createInstance(bengaliLatin, status)); + if (!assertSuccess("Error creating number format de object", status)) { + return; + } + nf->setMaximumFractionDigits(4); + mf = MeasureFormat(bengaliLatin, UMEASFMT_WIDTH_NUMERIC, nf->clone(), status); + if (!assertSuccess("Error creating measure format bn-u-nu-latn NUMERIC", status)) { + return; + } + verifyFormat("bn-u-nu-latn NUMERIC", mf, numericDataBnLatn, UPRV_LENGTHOF(numericDataBnLatn)); + + status = U_ZERO_ERROR; + LocalPointer rbnf(new RuleBasedNumberFormat(URBNF_SPELLOUT, en, status)); + if (U_FAILURE(status)) { + dataerrln("Error creating rbnf en object - %s", u_errorName(status)); + return; + } + mf = MeasureFormat(en, UMEASFMT_WIDTH_WIDE, rbnf->clone(), status); + if (!assertSuccess("Error creating measure format en WIDE with rbnf", status)) { + return; + } + verifyFormat("en WIDE rbnf", mf, fullDataSpellout, UPRV_LENGTHOF(fullDataSpellout)); + + Locale fr(Locale::getFrench()); + LocalPointer rbnffr(new RuleBasedNumberFormat(URBNF_SPELLOUT, fr, status)); + if (U_FAILURE(status)) { + dataerrln("Error creating rbnf fr object - %s", u_errorName(status)); + return; + } + mf = MeasureFormat(fr, UMEASFMT_WIDTH_WIDE, rbnffr->clone(), status); + if (!assertSuccess("Error creating measure format fr WIDE with rbnf", status)) { + return; + } + verifyFormat("fr WIDE rbnf", mf, fullDataSpelloutFr, UPRV_LENGTHOF(fullDataSpellout)); } void MeasureFormatTest::Test10219FractionalPlurals() { @@ -1967,7 +2417,7 @@ void MeasureFormatTest::TestGreek() { "1 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B1", "1 \\u03B5\\u03B2\\u03B4.", "1 \\u03BC\\u03AE\\u03BD.", - "1 \\u03AD\\u03C4.", // year (one) + "1 \\u03AD\\u03C4.", // year (one) // "el_GR" 7 wide "7 \\u03B4\\u03B5\\u03C5\\u03C4\\u03B5\\u03C1\\u03CC\\u03BB\\u03B5\\u03C0\\u03C4\\u03B1", "7 \\u03BB\\u03B5\\u03C0\\u03C4\\u03AC", @@ -1979,7 +2429,7 @@ void MeasureFormatTest::TestGreek() { // "el_GR" 7 short "7 \\u03B4\\u03B5\\u03C5\\u03C4.", "7 \\u03BB\\u03B5\\u03C0.", - "7 \\u03CE\\u03C1.", // hour (other) + "7 \\u03CE\\u03C1.", // hour (other) "7 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B5\\u03C2", "7 \\u03B5\\u03B2\\u03B4.", "7 \\u03BC\\u03AE\\u03BD.", @@ -2000,7 +2450,7 @@ void MeasureFormatTest::TestGreek() { "1 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B1", "1 \\u03B5\\u03B2\\u03B4.", "1 \\u03BC\\u03AE\\u03BD.", - "1 \\u03AD\\u03C4.", // year (one) + "1 \\u03AD\\u03C4.", // year (one) // "el" 7 wide "7 \\u03B4\\u03B5\\u03C5\\u03C4\\u03B5\\u03C1\\u03CC\\u03BB\\u03B5\\u03C0\\u03C4\\u03B1", "7 \\u03BB\\u03B5\\u03C0\\u03C4\\u03AC", @@ -2012,7 +2462,7 @@ void MeasureFormatTest::TestGreek() { // "el" 7 short "7 \\u03B4\\u03B5\\u03C5\\u03C4.", "7 \\u03BB\\u03B5\\u03C0.", - "7 \\u03CE\\u03C1.", // hour (other) + "7 \\u03CE\\u03C1.", // hour (other) "7 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B5\\u03C2", "7 \\u03B5\\u03B2\\u03B4.", "7 \\u03BC\\u03AE\\u03BD.", @@ -2194,7 +2644,7 @@ void MeasureFormatTest::helperTestSimplePer( if (!assertSuccess("Error creating format object", status)) { return; } - Measure measure(value, (MeasureUnit *) unit.clone(), status); + Measure measure(value, unit.clone(), status); if (!assertSuccess("Error creating measure object", status)) { return; } @@ -2267,7 +2717,7 @@ void MeasureFormatTest::TestManyLocaleDurations() { if (!assertSuccess("Error creating measures", status)) { return; } - helperTestManyLocaleDurations("da", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5 t og 37 min"); + helperTestManyLocaleDurations("da", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5 t og 37 m"); helperTestManyLocaleDurations("da", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5.37"); helperTestManyLocaleDurations("de", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5 Std., 37 Min."); helperTestManyLocaleDurations("de", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); @@ -2275,7 +2725,7 @@ void MeasureFormatTest::TestManyLocaleDurations() { helperTestManyLocaleDurations("en", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); helperTestManyLocaleDurations("en_GB", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5h 37m"); helperTestManyLocaleDurations("en_GB", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); - helperTestManyLocaleDurations("es", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5h 37min"); + helperTestManyLocaleDurations("es", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5 h 37 min"); helperTestManyLocaleDurations("es", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); helperTestManyLocaleDurations("fi", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5t 37min"); helperTestManyLocaleDurations("fi", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5.37"); @@ -2691,6 +3141,80 @@ void MeasureFormatTest::Test20332_PersonUnits() { } } +void MeasureFormatTest::TestNumericTime() { + IcuTestErrorCode status(*this, "TestNumericTime"); + + MeasureFormat fmt("en", UMEASFMT_WIDTH_NUMERIC, status); + + Measure hours(112, MeasureUnit::createHour(status), status); + Measure minutes(113, MeasureUnit::createMinute(status), status); + Measure seconds(114, MeasureUnit::createSecond(status), status); + Measure fhours(112.8765, MeasureUnit::createHour(status), status); + Measure fminutes(113.8765, MeasureUnit::createMinute(status), status); + Measure fseconds(114.8765, MeasureUnit::createSecond(status), status); + if (status.errDataIfFailureAndReset(WHERE)) return; + + verifyFormat("hours", fmt, &hours, 1, "112h"); + verifyFormat("minutes", fmt, &minutes, 1, "113m"); + verifyFormat("seconds", fmt, &seconds, 1, "114s"); + + verifyFormat("fhours", fmt, &fhours, 1, "112.876h"); + verifyFormat("fminutes", fmt, &fminutes, 1, "113.876m"); + verifyFormat("fseconds", fmt, &fseconds, 1, "114.876s"); + + Measure hoursMinutes[2] = {hours, minutes}; + verifyFormat("hoursMinutes", fmt, hoursMinutes, 2, "112:113"); + Measure hoursSeconds[2] = {hours, seconds}; + verifyFormat("hoursSeconds", fmt, hoursSeconds, 2, "112:00:114"); + Measure minutesSeconds[2] = {minutes, seconds}; + verifyFormat("minutesSeconds", fmt, minutesSeconds, 2, "113:114"); + + Measure hoursFminutes[2] = {hours, fminutes}; + verifyFormat("hoursFminutes", fmt, hoursFminutes, 2, "112:113.876"); + Measure hoursFseconds[2] = {hours, fseconds}; + verifyFormat("hoursFseconds", fmt, hoursFseconds, 2, "112:00:114.876"); + Measure minutesFseconds[2] = {minutes, fseconds}; + verifyFormat("hoursMminutesFsecondsinutes", fmt, minutesFseconds, 2, "113:114.876"); + + Measure fhoursMinutes[2] = {fhours, minutes}; + verifyFormat("fhoursMinutes", fmt, fhoursMinutes, 2, "112:113"); + Measure fhoursSeconds[2] = {fhours, seconds}; + verifyFormat("fhoursSeconds", fmt, fhoursSeconds, 2, "112:00:114"); + Measure fminutesSeconds[2] = {fminutes, seconds}; + verifyFormat("fminutesSeconds", fmt, fminutesSeconds, 2, "113:114"); + + Measure fhoursFminutes[2] = {fhours, fminutes}; + verifyFormat("fhoursFminutes", fmt, fhoursFminutes, 2, "112:113.876"); + Measure fhoursFseconds[2] = {fhours, fseconds}; + verifyFormat("fhoursFseconds", fmt, fhoursFseconds, 2, "112:00:114.876"); + Measure fminutesFseconds[2] = {fminutes, fseconds}; + verifyFormat("fminutesFseconds", fmt, fminutesFseconds, 2, "113:114.876"); + + Measure hoursMinutesSeconds[3] = {hours, minutes, seconds}; + verifyFormat("hoursMinutesSeconds", fmt, hoursMinutesSeconds, 3, "112:113:114"); + Measure fhoursFminutesFseconds[3] = {fhours, fminutes, fseconds}; + verifyFormat("fhoursFminutesFseconds", fmt, fhoursFminutesFseconds, 3, "112:113:114.876"); +} + +void MeasureFormatTest::TestNumericTimeSomeSpecialFormats() { + IcuTestErrorCode status(*this, "TestNumericTimeSomeSpecialFormats"); + + Measure fhours(2.8765432, MeasureUnit::createHour(status), status); + Measure fminutes(3.8765432, MeasureUnit::createMinute(status), status); + if (status.errDataIfFailureAndReset(WHERE)) return; + + Measure fhoursFminutes[2] = {fhours, fminutes}; + + // Latvian is one of the very few locales 0-padding the hour + MeasureFormat fmtLt("lt", UMEASFMT_WIDTH_NUMERIC, status); + if (status.errDataIfFailureAndReset(WHERE)) return; + verifyFormat("Latvian fhoursFminutes", fmtLt, fhoursFminutes, 2, "02:03,877"); + + // Danish is one of the very few locales using '.' as separator + MeasureFormat fmtDa("da", UMEASFMT_WIDTH_NUMERIC, status); + verifyFormat("Danish fhoursFminutes", fmtDa, fhoursFminutes, 2, "2.03,877"); +} + void MeasureFormatTest::verifyFieldPosition( const char *description, diff --git a/source/test/intltest/miscdtfm.cpp b/source/test/intltest/miscdtfm.cpp index a623326..134f913 100644 --- a/source/test/intltest/miscdtfm.cpp +++ b/source/test/intltest/miscdtfm.cpp @@ -113,8 +113,8 @@ DateFormatMiscTests::test4097450() };*/ UErrorCode status = U_ZERO_ERROR; - SimpleDateFormat *formatter; - SimpleDateFormat *resultFormatter = new SimpleDateFormat((UnicodeString)"yyyy", status); + LocalPointer formatter; + SimpleDateFormat resultFormatter((UnicodeString)u"yyyy", status); if (U_FAILURE(status)) { dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); return; @@ -125,24 +125,21 @@ DateFormatMiscTests::test4097450() for (int i = 0; i < 14/*dstring.length*/; i++) { log(dformat[i] + "\t" + dstring[i] + "\t"); - formatter = new SimpleDateFormat(dformat[i], status); + formatter.adoptInstead(new SimpleDateFormat(dformat[i], status)); if(failure(status, "new SimpleDateFormat")) return; //try { UnicodeString str; FieldPosition pos(FieldPosition::DONT_CARE); - logln(resultFormatter->format(formatter->parse(dstring[i], status), str, pos)); - failure(status, "resultFormatter->format"); + logln(resultFormatter.format(formatter->parse(dstring[i], status), str, pos)); + failure(status, "resultFormatter.format"); //if ( !dresult[i] ) System.out.print(" <-- error!"); /*} catch (ParseException exception) { //if ( dresult[i] ) System.out.print(" <-- error!"); System.out.print("exception --> " + exception); }*/ - delete formatter; logln(); } - - delete resultFormatter; } /* diff --git a/source/test/intltest/msfmrgts.cpp b/source/test/intltest/msfmrgts.cpp index c35e85d..1b83b10 100644 --- a/source/test/intltest/msfmrgts.cpp +++ b/source/test/intltest/msfmrgts.cpp @@ -32,29 +32,29 @@ void MessageFormatRegressionTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) { TESTCASE_AUTO_BEGIN; - TESTCASE_AUTO(Test4074764) + TESTCASE_AUTO(Test4074764); //TESTCASE_AUTO(Test4058973) -- disabled/obsolete in ICU 4.8 - TESTCASE_AUTO(Test4031438) - TESTCASE_AUTO(Test4052223) - TESTCASE_AUTO(Test4104976) - TESTCASE_AUTO(Test4106659) - TESTCASE_AUTO(Test4106660) - TESTCASE_AUTO(Test4111739) - TESTCASE_AUTO(Test4114743) - TESTCASE_AUTO(Test4116444) - TESTCASE_AUTO(Test4114739) - TESTCASE_AUTO(Test4113018) - TESTCASE_AUTO(Test4106661) - TESTCASE_AUTO(Test4094906) - TESTCASE_AUTO(Test4118592) - TESTCASE_AUTO(Test4118594) - TESTCASE_AUTO(Test4105380) - TESTCASE_AUTO(Test4120552) - TESTCASE_AUTO(Test4142938) - TESTCASE_AUTO(TestChoicePatternQuote) - TESTCASE_AUTO(Test4112104) - TESTCASE_AUTO(TestICU12584) - TESTCASE_AUTO(TestAPI) + TESTCASE_AUTO(Test4031438); + TESTCASE_AUTO(Test4052223); + TESTCASE_AUTO(Test4104976); + TESTCASE_AUTO(Test4106659); + TESTCASE_AUTO(Test4106660); + TESTCASE_AUTO(Test4111739); + TESTCASE_AUTO(Test4114743); + TESTCASE_AUTO(Test4116444); + TESTCASE_AUTO(Test4114739); + TESTCASE_AUTO(Test4113018); + TESTCASE_AUTO(Test4106661); + TESTCASE_AUTO(Test4094906); + TESTCASE_AUTO(Test4118592); + TESTCASE_AUTO(Test4118594); + TESTCASE_AUTO(Test4105380); + TESTCASE_AUTO(Test4120552); + TESTCASE_AUTO(Test4142938); + TESTCASE_AUTO(TestChoicePatternQuote); + TESTCASE_AUTO(Test4112104); + TESTCASE_AUTO(TestICU12584); + TESTCASE_AUTO(TestAPI); TESTCASE_AUTO_END; } diff --git a/source/test/intltest/nmfmapts.cpp b/source/test/intltest/nmfmapts.cpp index 07b2044..e5b69e4 100644 --- a/source/test/intltest/nmfmapts.cpp +++ b/source/test/intltest/nmfmapts.cpp @@ -274,7 +274,7 @@ public: virtual NumberFormat* createFormat(const Locale& /* loc */, UNumberFormatStyle formatType) { if (formatType == UNUM_CURRENCY) { - return (NumberFormat*)currencyStyle->clone(); + return currencyStyle->clone(); } return NULL; } @@ -310,7 +310,7 @@ IntlTestNumberFormatAPI::testRegistration() LocalPointer f3a(NumberFormat::createCurrencyInstance(SRC_LOC, status)); LocalPointer f4(NumberFormat::createInstance(SRC_LOC, status)); - StringEnumeration* locs = NumberFormat::getAvailableLocales(); + LocalPointer locs(NumberFormat::getAvailableLocales()); LocalUNumberFormatPointer uf3(unum_open(UNUM_CURRENCY, NULL, 0, SRC_LOC.getName(), NULL, &status)); LocalUNumberFormatPointer uf4(unum_open(UNUM_DEFAULT, NULL, 0, SRC_LOC.getName(), NULL, &status)); @@ -325,7 +325,7 @@ IntlTestNumberFormatAPI::testRegistration() LocalUNumberFormatPointer uf5(unum_open(UNUM_CURRENCY, NULL, 0, SRC_LOC.getName(), NULL, &status)); if (U_FAILURE(status)) { - dataerrln("Error creating instnaces."); + dataerrln("Error creating instanaces."); return; } else { float n = 1234.567f; @@ -391,8 +391,6 @@ IntlTestNumberFormatAPI::testRegistration() for (res = locs->snext(status); res; res = locs->snext(status)) { logln(*res); } - - delete locs; #endif } diff --git a/source/test/intltest/nptrans.cpp b/source/test/intltest/nptrans.cpp index 6c1c7be..160cf51 100644 --- a/source/test/intltest/nptrans.cpp +++ b/source/test/intltest/nptrans.cpp @@ -47,11 +47,10 @@ NamePrepTransform* NamePrepTransform::createInstance(UParseError& parseError, UE //constructor NamePrepTransform::NamePrepTransform(UParseError& parseError, UErrorCode& status) -: unassigned(), prohibited(), labelSeparatorSet(){ + : mapping(nullptr), unassigned(), prohibited(), labelSeparatorSet(), bundle(nullptr) { - mapping = NULL; - bundle = NULL; - + LocalPointer lmapping; + LocalUResourceBundlePointer lbundle; const char* testDataName = IntlTest::loadTestData(status); @@ -59,31 +58,31 @@ NamePrepTransform::NamePrepTransform(UParseError& parseError, UErrorCode& status return; } - bundle = ures_openDirect(testDataName,"idna_rules",&status); + lbundle.adoptInstead(ures_openDirect(testDataName,"idna_rules",&status)); - if(bundle != NULL && U_SUCCESS(status)){ + if(lbundle.isValid() && U_SUCCESS(status)){ // create the mapping transliterator int32_t ruleLen = 0; - const UChar* ruleUChar = ures_getStringByKey(bundle, "MapNFKC",&ruleLen, &status); + const UChar* ruleUChar = ures_getStringByKey(lbundle.getAlias(), "MapNFKC",&ruleLen, &status); int32_t mapRuleLen = 0; - const UChar *mapRuleUChar = ures_getStringByKey(bundle, "MapNoNormalization", &mapRuleLen, &status); + const UChar *mapRuleUChar = ures_getStringByKey(lbundle.getAlias(), "MapNoNormalization", &mapRuleLen, &status); UnicodeString rule(mapRuleUChar, mapRuleLen); rule.append(ruleUChar, ruleLen); - mapping = Transliterator::createFromRules(UnicodeString("NamePrepTransform", ""), rule, - UTRANS_FORWARD, parseError,status); + lmapping.adoptInstead( Transliterator::createFromRules(UnicodeString("NamePrepTransform", ""), rule, + UTRANS_FORWARD, parseError,status)); if(U_FAILURE(status)) { - return; + return; } //create the unassigned set int32_t patternLen =0; - const UChar* pattern = ures_getStringByKey(bundle,"UnassignedSet",&patternLen, &status); + const UChar* pattern = ures_getStringByKey(lbundle.getAlias(),"UnassignedSet",&patternLen, &status); unassigned.applyPattern(UnicodeString(pattern, patternLen), status); //create prohibited set patternLen=0; - pattern = ures_getStringByKey(bundle,"ProhibitedSet",&patternLen, &status); + pattern = ures_getStringByKey(lbundle.getAlias(),"ProhibitedSet",&patternLen, &status); UnicodeString test(pattern,patternLen); prohibited.applyPattern(test,status); #ifdef NPTRANS_DEBUG @@ -107,20 +106,18 @@ NamePrepTransform::NamePrepTransform(UParseError& parseError, UErrorCode& status //create label separator set patternLen=0; - pattern = ures_getStringByKey(bundle,"LabelSeparatorSet",&patternLen, &status); + pattern = ures_getStringByKey(lbundle.getAlias(), "LabelSeparatorSet", &patternLen, &status); labelSeparatorSet.applyPattern(UnicodeString(pattern,patternLen),status); } - if(U_SUCCESS(status) && - (mapping == NULL) - ){ + if(U_SUCCESS(status) && (lmapping.isNull())) { status = U_MEMORY_ALLOCATION_ERROR; - delete mapping; - ures_close(bundle); - mapping = NULL; - bundle = NULL; } - + if (U_FAILURE(status)) { + return; + } + mapping = lmapping.orphan(); + bundle = lbundle.orphan(); } diff --git a/source/test/intltest/numbertest.h b/source/test/intltest/numbertest.h index e1c90a7..7f5bcdf 100644 --- a/source/test/intltest/numbertest.h +++ b/source/test/intltest/numbertest.h @@ -6,11 +6,11 @@ #if !UCONFIG_NO_FORMATTING #pragma once -#include "number_stringbuilder.h" +#include "formatted_string_builder.h" #include "intltest.h" #include "itformat.h" #include "number_affixutils.h" -#include "numparse_stringsegment.h" +#include "string_segment.h" #include "numrange_impl.h" #include "unicode/locid.h" #include "unicode/numberformatter.h" @@ -68,9 +68,11 @@ class NumberFormatterApiTest : public IntlTestWithFieldPosition { // TODO: Add this method if currency symbols override support is added. //void symbolsOverride(); void sign(); + void signCoverage(); void decimal(); void scale(); void locale(); + void skeletonUserGuideExamples(); void formatTypes(); void fieldPositionLogic(); void fieldPositionCoverage(); @@ -80,6 +82,7 @@ class NumberFormatterApiTest : public IntlTestWithFieldPosition { void copyMove(); void localPointerCAPI(); void toObject(); + void toDecimalNumber(); void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0); @@ -173,7 +176,7 @@ class ModifiersTest : public IntlTest { UnicodeString expectedChars, UnicodeString expectedFields, UErrorCode &status); - void assertModifierEquals(const Modifier &mod, NumberStringBuilder &sb, int32_t expectedPrefixLength, + void assertModifierEquals(const Modifier &mod, FormattedStringBuilder &sb, int32_t expectedPrefixLength, bool expectedStrong, UnicodeString expectedChars, UnicodeString expectedFields, UErrorCode &status); }; @@ -203,33 +206,6 @@ class PatternStringTest : public IntlTest { private: }; -class NumberStringBuilderTest : public IntlTest { - public: - void testInsertAppendUnicodeString(); - void testSplice(); - void testInsertAppendCodePoint(); - void testCopy(); - void testFields(); - void testUnlimitedCapacity(); - void testCodePoints(); - - void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0); - - private: - void assertEqualsImpl(const UnicodeString &a, const NumberStringBuilder &b); -}; - -class StringSegmentTest : public IntlTest { - public: - void testOffset(); - void testLength(); - void testCharAt(); - void testGetCodePoint(); - void testCommonPrefixLength(); - - void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0); -}; - class NumberParserTest : public IntlTest { public: void testBasic(); @@ -312,6 +288,13 @@ class NumberRangeFormatterTest : public IntlTestWithFieldPosition { const char16_t* expected); }; +class NumberPermutationTest : public IntlTest { + public: + void testPermutations(); + + void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0); +}; + // NOTE: This macro is identical to the one in itformat.cpp #define TESTCLASS(id, TestClass) \ @@ -339,12 +322,11 @@ class NumberTest : public IntlTest { TESTCLASS(3, ModifiersTest); TESTCLASS(4, PatternModifierTest); TESTCLASS(5, PatternStringTest); - TESTCLASS(6, NumberStringBuilderTest); - TESTCLASS(7, DoubleConversionTest); - TESTCLASS(8, StringSegmentTest); - TESTCLASS(9, NumberParserTest); - TESTCLASS(10, NumberSkeletonTest); - TESTCLASS(11, NumberRangeFormatterTest); + TESTCLASS(6, DoubleConversionTest); + TESTCLASS(7, NumberParserTest); + TESTCLASS(8, NumberSkeletonTest); + TESTCLASS(9, NumberRangeFormatterTest); + TESTCLASS(10, NumberPermutationTest); default: name = ""; break; // needed to end loop } } diff --git a/source/test/intltest/numbertest_affixutils.cpp b/source/test/intltest/numbertest_affixutils.cpp index eefded6..7f29ad1 100644 --- a/source/test/intltest/numbertest_affixutils.cpp +++ b/source/test/intltest/numbertest_affixutils.cpp @@ -217,7 +217,7 @@ void AffixUtilsTest::testUnescapeWithSymbolProvider() { NumericSymbolProvider provider; UErrorCode status = U_ZERO_ERROR; - NumberStringBuilder sb; + FormattedStringBuilder sb; for (auto& cas : cases) { UnicodeString input(cas[0]); UnicodeString expected(cas[1]); @@ -239,7 +239,7 @@ void AffixUtilsTest::testUnescapeWithSymbolProvider() { UnicodeString AffixUtilsTest::unescapeWithDefaults(const SymbolProvider &defaultProvider, UnicodeString input, UErrorCode &status) { - NumberStringBuilder nsb; + FormattedStringBuilder nsb; int32_t length = AffixUtils::unescape(input, nsb, 0, defaultProvider, UNUM_FIELD_COUNT, status); assertEquals("Return value of unescape", nsb.length(), length); return nsb.toUnicodeString(); diff --git a/source/test/intltest/numbertest_api.cpp b/source/test/intltest/numbertest_api.cpp index 68a0e7b..4e4f0b7 100644 --- a/source/test/intltest/numbertest_api.cpp +++ b/source/test/intltest/numbertest_api.cpp @@ -86,9 +86,11 @@ void NumberFormatterApiTest::runIndexedTest(int32_t index, UBool exec, const cha // TODO: Add this method if currency symbols override support is added. //TESTCASE_AUTO(symbolsOverride); TESTCASE_AUTO(sign); + TESTCASE_AUTO(signCoverage); TESTCASE_AUTO(decimal); TESTCASE_AUTO(scale); TESTCASE_AUTO(locale); + TESTCASE_AUTO(skeletonUserGuideExamples); TESTCASE_AUTO(formatTypes); TESTCASE_AUTO(fieldPositionLogic); TESTCASE_AUTO(fieldPositionCoverage); @@ -102,6 +104,7 @@ void NumberFormatterApiTest::runIndexedTest(int32_t index, UBool exec, const cha TESTCASE_AUTO(copyMove); TESTCASE_AUTO(localPointerCAPI); TESTCASE_AUTO(toObject); + TESTCASE_AUTO(toDecimalNumber); TESTCASE_AUTO_END; } @@ -215,6 +218,22 @@ void NumberFormatterApiTest::notationScientific() { Locale::getEnglish(), -1000000, u"-1E6"); + + assertFormatSingle( + u"Scientific Infinity", + u"scientific", + NumberFormatter::with().notation(Notation::scientific()), + Locale::getEnglish(), + -uprv_getInfinity(), + u"-∞"); + + assertFormatSingle( + u"Scientific NaN", + u"scientific", + NumberFormatter::with().notation(Notation::scientific()), + Locale::getEnglish(), + uprv_getNaN(), + u"NaN"); } void NumberFormatterApiTest::notationCompact() { @@ -431,6 +450,22 @@ void NumberFormatterApiTest::notationCompact() { 1e7, u"1000\u842C"); + assertFormatSingle( + u"Compact Infinity", + u"compact-short", + NumberFormatter::with().notation(Notation::compactShort()), + Locale::getEnglish(), + -uprv_getInfinity(), + u"-∞"); + + assertFormatSingle( + u"Compact NaN", + u"compact-short", + NumberFormatter::with().notation(Notation::compactShort()), + Locale::getEnglish(), + uprv_getNaN(), + u"NaN"); + // NOTE: There is no API for compact custom data in C++ // and thus no "Compact Somali No Figure" test } @@ -1345,17 +1380,18 @@ void NumberFormatterApiTest::grouping() { u"8.765", u"0"); - // NOTE: Hungarian is interesting because it has minimumGroupingDigits=4 in locale data + // NOTE: Polish is interesting because it has minimumGroupingDigits=2 in locale data + // (Most locales have either 1 or 2) // If this test breaks due to data changes, find another locale that has minimumGroupingDigits. assertFormatDescendingBig( - u"Hungarian Grouping", + u"Polish Grouping", u"group-auto", NumberFormatter::with().grouping(UNUM_GROUPING_AUTO), - Locale("hu"), + Locale("pl"), u"87 650 000", u"8 765 000", - u"876500", - u"87650", + u"876 500", + u"87 650", u"8765", u"876,5", u"87,65", @@ -1363,14 +1399,14 @@ void NumberFormatterApiTest::grouping() { u"0"); assertFormatDescendingBig( - u"Hungarian Grouping, Min 2", + u"Polish Grouping, Min 2", u"group-min2", NumberFormatter::with().grouping(UNUM_GROUPING_MIN2), - Locale("hu"), + Locale("pl"), u"87 650 000", u"8 765 000", - u"876500", - u"87650", + u"876 500", + u"87 650", u"8765", u"876,5", u"87,65", @@ -1378,10 +1414,10 @@ void NumberFormatterApiTest::grouping() { u"0"); assertFormatDescendingBig( - u"Hungarian Grouping, Always", + u"Polish Grouping, Always", u"group-on-aligned", NumberFormatter::with().grouping(UNUM_GROUPING_ON_ALIGNED), - Locale("hu"), + Locale("pl"), u"87 650 000", u"8 765 000", u"876 500", @@ -2068,6 +2104,39 @@ void NumberFormatterApiTest::sign() { u"-444,444.00 US dollars"); } +void NumberFormatterApiTest::signCoverage() { + // https://unicode-org.atlassian.net/browse/ICU-20708 + IcuTestErrorCode status(*this, "signCoverage"); + const struct TestCase { + UNumberSignDisplay sign; + const char16_t* expectedStrings[8]; + } cases[] = { + { UNUM_SIGN_AUTO, { u"-∞", u"-1", u"-0", u"0", u"1", u"∞", u"NaN", u"-NaN" } }, + { UNUM_SIGN_ALWAYS, { u"-∞", u"-1", u"-0", u"+0", u"+1", u"+∞", u"+NaN", u"-NaN" } }, + { UNUM_SIGN_NEVER, { u"∞", u"1", u"0", u"0", u"1", u"∞", u"NaN", u"NaN" } }, + { UNUM_SIGN_EXCEPT_ZERO, { u"-∞", u"-1", u"-0", u"0", u"+1", u"+∞", u"NaN", u"-NaN" } }, + }; + double negNaN = std::copysign(uprv_getNaN(), -0.0); + const double inputs[] = { + -uprv_getInfinity(), -1, -0.0, 0, 1, uprv_getInfinity(), uprv_getNaN(), negNaN + }; + for (auto& cas : cases) { + auto sign = cas.sign; + for (int32_t i = 0; i < UPRV_LENGTHOF(inputs); i++) { + auto input = inputs[i]; + auto expected = cas.expectedStrings[i]; + auto actual = NumberFormatter::with() + .sign(sign) + .locale(Locale::getUS()) + .formatDouble(input, status) + .toString(status); + assertEquals( + DoubleToUnicodeString(input) + " " + Int64ToUnicodeString(sign), + expected, actual); + } + } +} + void NumberFormatterApiTest::decimal() { assertFormatDescending( u"Decimal Default", @@ -2232,6 +2301,47 @@ void NumberFormatterApiTest::locale() { assertEquals("Locale withLocale()", u"1\u202f234", actual); } +void NumberFormatterApiTest::skeletonUserGuideExamples() { + IcuTestErrorCode status(*this, "skeletonUserGuideExamples"); + + // Test the skeleton examples in userguide/format_parse/numbers/skeletons.md + struct TestCase { + const char16_t* skeleton; + double input; + const char16_t* expected; + } cases[] = { + {u"percent", 25, u"25%"}, + {u".00", 25, u"25.00"}, + {u"percent .00", 25, u"25.00%"}, + {u"scale/100", 0.3, u"30"}, + {u"percent scale/100", 0.3, u"30%"}, + {u"measure-unit/length-meter", 5, u"5 m"}, + {u"measure-unit/length-meter unit-width-full-name", 5, u"5 meters"}, + {u"currency/CAD", 10, u"CA$10.00"}, + {u"currency/CAD unit-width-narrow", 10, u"$10.00"}, + {u"compact-short", 5000, u"5K"}, + {u"compact-long", 5000, u"5 thousand"}, + {u"compact-short currency/CAD", 5000, u"CA$5K"}, + {u"", 5000, u"5,000"}, + {u"group-min2", 5000, u"5000"}, + {u"group-min2", 15000, u"15,000"}, + {u"sign-always", 60, u"+60"}, + {u"sign-always", 0, u"+0"}, + {u"sign-except-zero", 60, u"+60"}, + {u"sign-except-zero", 0, u"0"}, + {u"sign-accounting currency/CAD", -40, u"(CA$40.00)"} + }; + + for (const auto& cas : cases) { + status.setScope(cas.skeleton); + FormattedNumber actual = NumberFormatter::forSkeleton(cas.skeleton, status) + .locale("en-US") + .formatDouble(cas.input, status); + assertEquals(cas.skeleton, cas.expected, actual.toTempString(status)); + status.errIfFailureAndReset(); + } +} + void NumberFormatterApiTest::formatTypes() { UErrorCode status = U_ZERO_ERROR; LocalizedNumberFormatter formatter = NumberFormatter::withLocale(Locale::getEnglish()); @@ -2711,7 +2821,7 @@ void NumberFormatterApiTest::validRanges() { #define EXPECTED_MAX_INT_FRAC_SIG 999 -#define VALID_RANGE_ASSERT(status, method, lowerBound, argument) { \ +#define VALID_RANGE_ASSERT(status, method, lowerBound, argument) UPRV_BLOCK_MACRO_BEGIN { \ UErrorCode expectedStatus = ((lowerBound <= argument) && (argument <= EXPECTED_MAX_INT_FRAC_SIG)) \ ? U_ZERO_ERROR \ : U_NUMBER_ARG_OUTOFBOUNDS_ERROR; \ @@ -2720,17 +2830,17 @@ void NumberFormatterApiTest::validRanges() { + Int64ToUnicodeString(argument), \ expectedStatus, \ status); \ -} +} UPRV_BLOCK_MACRO_END -#define VALID_RANGE_ONEARG(setting, method, lowerBound) { \ +#define VALID_RANGE_ONEARG(setting, method, lowerBound) UPRV_BLOCK_MACRO_BEGIN { \ for (int32_t argument = -2; argument <= EXPECTED_MAX_INT_FRAC_SIG + 2; argument++) { \ UErrorCode status = U_ZERO_ERROR; \ NumberFormatter::with().setting(method(argument)).copyErrorTo(status); \ VALID_RANGE_ASSERT(status, method, lowerBound, argument); \ } \ -} +} UPRV_BLOCK_MACRO_END -#define VALID_RANGE_TWOARGS(setting, method, lowerBound) { \ +#define VALID_RANGE_TWOARGS(setting, method, lowerBound) UPRV_BLOCK_MACRO_BEGIN { \ for (int32_t argument = -2; argument <= EXPECTED_MAX_INT_FRAC_SIG + 2; argument++) { \ UErrorCode status = U_ZERO_ERROR; \ /* Pass EXPECTED_MAX_INT_FRAC_SIG as the second argument so arg1 <= arg2 in expected cases */ \ @@ -2746,7 +2856,7 @@ void NumberFormatterApiTest::validRanges() { U_NUMBER_ARG_OUTOFBOUNDS_ERROR, \ status); \ } \ -} +} UPRV_BLOCK_MACRO_END VALID_RANGE_ONEARG(precision, Precision::fixedFraction, 0); VALID_RANGE_ONEARG(precision, Precision::minFraction, 0); @@ -2925,6 +3035,18 @@ void NumberFormatterApiTest::toObject() { } } +void NumberFormatterApiTest::toDecimalNumber() { + IcuTestErrorCode status(*this, "toDecimalNumber"); + FormattedNumber fn = NumberFormatter::withLocale("bn-BD") + .scale(Scale::powerOfTen(2)) + .precision(Precision::maxSignificantDigits(5)) + .formatDouble(9.87654321e12, status); + assertEquals("Should have expected localized string result", + u"৯৮,৭৬,৫০,০০,০০,০০,০০০", fn.toString(status)); + assertEquals(u"Should have expected toDecimalNumber string result", + "9.8765E+14", fn.toDecimalNumber(status).c_str()); +} + void NumberFormatterApiTest::assertFormatDescending(const char16_t* umessage, const char16_t* uskeleton, const UnlocalizedNumberFormatter& f, Locale locale, diff --git a/source/test/intltest/numbertest_decimalquantity.cpp b/source/test/intltest/numbertest_decimalquantity.cpp index 9e9b49b..d0ccfe0 100644 --- a/source/test/intltest/numbertest_decimalquantity.cpp +++ b/source/test/intltest/numbertest_decimalquantity.cpp @@ -18,7 +18,7 @@ void DecimalQuantityTest::runIndexedTest(int32_t index, UBool exec, const char * } TESTCASE_AUTO_BEGIN; TESTCASE_AUTO(testDecimalQuantityBehaviorStandalone); - TESTCASE_AUTO(testSwitchStorage);; + TESTCASE_AUTO(testSwitchStorage); TESTCASE_AUTO(testCopyMove); TESTCASE_AUTO(testAppend); if (!quick) { diff --git a/source/test/intltest/numbertest_modifiers.cpp b/source/test/intltest/numbertest_modifiers.cpp index 52f4f49..90144ad 100644 --- a/source/test/intltest/numbertest_modifiers.cpp +++ b/source/test/intltest/numbertest_modifiers.cpp @@ -7,7 +7,7 @@ #include "putilimp.h" #include "intltest.h" -#include "number_stringbuilder.h" +#include "formatted_string_builder.h" #include "number_modifiers.h" #include "numbertest.h" @@ -36,8 +36,8 @@ void ModifiersTest::testConstantAffixModifier() { void ModifiersTest::testConstantMultiFieldModifier() { UErrorCode status = U_ZERO_ERROR; - NumberStringBuilder prefix; - NumberStringBuilder suffix; + FormattedStringBuilder prefix; + FormattedStringBuilder suffix; ConstantMultiFieldModifier mod1(prefix, suffix, false, true); assertModifierEquals(mod1, 0, true, u"|", u"n", status); assertSuccess("Spot 1", status); @@ -87,7 +87,7 @@ void ModifiersTest::testSimpleModifier() { // Test strange insertion positions for (int32_t j = 0; j < NUM_OUTPUTS; j++) { - NumberStringBuilder output; + FormattedStringBuilder output; output.append(outputs[j].baseString, UNUM_FIELD_COUNT, status); mod.apply(output, outputs[j].leftIndex, outputs[j].rightIndex, status); UnicodeString expected = expecteds[j][i]; @@ -105,8 +105,8 @@ void ModifiersTest::testCurrencySpacingEnabledModifier() { return; } - NumberStringBuilder prefix; - NumberStringBuilder suffix; + FormattedStringBuilder prefix; + FormattedStringBuilder suffix; CurrencySpacingEnabledModifier mod1(prefix, suffix, false, true, symbols, status); assertSuccess("Spot 2", status); assertModifierEquals(mod1, 0, true, u"|", u"n", status); @@ -120,15 +120,15 @@ void ModifiersTest::testCurrencySpacingEnabledModifier() { assertSuccess("Spot 6", status); // Test the default currency spacing rules - NumberStringBuilder sb; + FormattedStringBuilder sb; sb.append("123", UNUM_INTEGER_FIELD, status); assertSuccess("Spot 7", status); - NumberStringBuilder sb1(sb); + FormattedStringBuilder sb1(sb); assertModifierEquals(mod2, sb1, 3, true, u"USD\u00A0123", u"$$$niii", status); assertSuccess("Spot 8", status); // Compare with the unsafe code path - NumberStringBuilder sb2(sb); + FormattedStringBuilder sb2(sb); sb2.insert(0, "USD", UNUM_CURRENCY_FIELD, status); assertSuccess("Spot 9", status); CurrencySpacingEnabledModifier::applyCurrencySpacing(sb2, 0, 3, 6, 0, symbols, status); @@ -149,14 +149,14 @@ void ModifiersTest::testCurrencySpacingEnabledModifier() { void ModifiersTest::assertModifierEquals(const Modifier &mod, int32_t expectedPrefixLength, bool expectedStrong, UnicodeString expectedChars, UnicodeString expectedFields, UErrorCode &status) { - NumberStringBuilder sb; + FormattedStringBuilder sb; sb.appendCodePoint('|', UNUM_FIELD_COUNT, status); assertModifierEquals( mod, sb, expectedPrefixLength, expectedStrong, expectedChars, expectedFields, status); } -void ModifiersTest::assertModifierEquals(const Modifier &mod, NumberStringBuilder &sb, +void ModifiersTest::assertModifierEquals(const Modifier &mod, FormattedStringBuilder &sb, int32_t expectedPrefixLength, bool expectedStrong, UnicodeString expectedChars, UnicodeString expectedFields, UErrorCode &status) { @@ -171,7 +171,7 @@ void ModifiersTest::assertModifierEquals(const Modifier &mod, NumberStringBuilde } UnicodeString debugString; - debugString.append(u"apply(nsb1, 0, 0, status); assertSuccess("Spot 3", status); - NumberStringBuilder nsb2; + FormattedStringBuilder nsb2; MicroProps micros2; LocalPointer immutable(mod.createImmutable(status)); immutable->applyToMicros(micros2, fq, status); micros2.modMiddle->apply(nsb2, 0, 0, status); assertSuccess("Spot 4", status); - NumberStringBuilder nsb3; + FormattedStringBuilder nsb3; MicroProps micros3; mod.addToChain(µs3); mod.setPatternAttributes(UNUM_SIGN_ALWAYS, false); @@ -168,14 +168,14 @@ void PatternModifierTest::testMutableEqualsImmutable() { } UnicodeString PatternModifierTest::getPrefix(const MutablePatternModifier &mod, UErrorCode &status) { - NumberStringBuilder nsb; + FormattedStringBuilder nsb; mod.apply(nsb, 0, 0, status); int32_t prefixLength = mod.getPrefixLength(); return UnicodeString(nsb.toUnicodeString(), 0, prefixLength); } UnicodeString PatternModifierTest::getSuffix(const MutablePatternModifier &mod, UErrorCode &status) { - NumberStringBuilder nsb; + FormattedStringBuilder nsb; mod.apply(nsb, 0, 0, status); int32_t prefixLength = mod.getPrefixLength(); return UnicodeString(nsb.toUnicodeString(), prefixLength, nsb.length() - prefixLength); diff --git a/source/test/intltest/numbertest_permutation.cpp b/source/test/intltest/numbertest_permutation.cpp new file mode 100644 index 0000000..85f32d5 --- /dev/null +++ b/source/test/intltest/numbertest_permutation.cpp @@ -0,0 +1,198 @@ +// © 2019 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html + +#include "unicode/utypes.h" + +#if !UCONFIG_NO_FORMATTING + +#include +#include +#include + +#include "numbertest.h" +#include "ucbuf.h" +#include "unicode/numberformatter.h" + +void NumberPermutationTest::runIndexedTest(int32_t index, UBool exec, const char*& name, char*) { + if (exec) { + logln("TestSuite NumberPermutationTest: "); + } + TESTCASE_AUTO_BEGIN; + TESTCASE_AUTO(testPermutations); + TESTCASE_AUTO_END; +} + +static const char16_t* kSkeletonParts[] = { + // Notation + u"compact-short", + u"scientific/+ee/sign-always", + nullptr, + // Unit + u"percent", + u"currency/EUR", + u"measure-unit/length-furlong", + nullptr, + // Unit Width + u"unit-width-narrow", + u"unit-width-full-name", + nullptr, + // Precision + u"precision-integer", + u".000", + u".##/@@@+", + u"@@", + nullptr, + // Rounding Mode + u"rounding-mode-floor", + nullptr, + // Integer Width + u"integer-width/##00", + nullptr, + // Scale + u"scale/0.5", + nullptr, + // Grouping + u"group-on-aligned", + nullptr, + // Symbols + u"latin", + nullptr, + // Sign Display + u"sign-accounting-except-zero", + nullptr, + // Decimal Separator Display + u"decimal-always", + nullptr, +}; + +static const double kNumbersToTest[]{0, 91827.3645, -0.22222}; + +/** + * Test permutations of 3 orthogonal skeleton parts from the list above. + * Compare the results against the golden data file: + * numberpermutationtest.txt + * To regenerate that file, run intltest with the -G option. + */ +void NumberPermutationTest::testPermutations() { + IcuTestErrorCode status(*this, "testPermutations"); + + const struct LocaleData { + Locale locale; + const char16_t* ustring; + } localesToTest[] = { + {"es-MX", u"es-MX"}, + {"zh-TW", u"zh-TW"}, + {"bn-BD", u"bn-BD"}, + }; + + // Convert kSkeletonParts to a more convenient data structure + auto skeletonParts = std::vector>(); + auto currentSection = std::vector(); + for (int32_t i = 0; i < UPRV_LENGTHOF(kSkeletonParts); i++) { + const char16_t* skeletonPart = kSkeletonParts[i]; + if (skeletonPart == nullptr) { + skeletonParts.push_back(currentSection); + currentSection.clear(); + } else { + currentSection.push_back(skeletonPart); + } + } + + // Build up the golden data string as we evaluate all permutations + std::vector resultLines; + resultLines.push_back(u"# © 2019 and later: Unicode, Inc. and others."); + resultLines.push_back(u"# License & terms of use: http://www.unicode.org/copyright.html"); + resultLines.push_back(UnicodeString()); + + // Take combinations of 3 orthogonal options + for (size_t i = 0; i < skeletonParts.size() - 2; i++) { + const auto& skeletons1 = skeletonParts[i]; + for (size_t j = i + 1; j < skeletonParts.size() - 1; j++) { + const auto& skeletons2 = skeletonParts[j]; + for (size_t k = j + 1; k < skeletonParts.size(); k++) { + const auto& skeletons3 = skeletonParts[k]; + + // Evaluate all combinations of skeletons for these options + for (const auto& skel1 : skeletons1) { + for (const auto& skel2 : skeletons2) { + for (const auto& skel3 : skeletons3) { + // Compute the skeleton + UnicodeString skeleton; + skeleton + .append(skel1) // + .append(u' ') // + .append(skel2) // + .append(u' ') // + .append(skel3); + resultLines.push_back(skeleton); + + // Check several locales and several numbers in each locale + for (const auto& locData : localesToTest) { + auto lnf = NumberFormatter::forSkeleton(skeleton, status) + .locale(locData.locale); + resultLines.push_back(UnicodeString(u" ").append(locData.ustring)); + for (const auto& input : kNumbersToTest) { + resultLines.push_back(UnicodeString(u" ").append( + lnf.formatDouble(input, status).toTempString(status))); + } + } + + resultLines.push_back(UnicodeString()); + } + } + } + } + + // Quick mode: test all fields at least once but stop early. + if (quick) { + infoln(u"Quick mode: stopped after " + Int64ToUnicodeString(resultLines.size()) + + u" lines"); + goto outerEnd; + } + } + } +outerEnd: + void(); + + CharString goldenFilePath(getSourceTestData(status), status); + goldenFilePath.appendPathPart("numberpermutationtest.txt", status); + + // Compare it to the golden file + const char* codePage = "UTF-8"; + LocalUCHARBUFPointer f(ucbuf_open(goldenFilePath.data(), &codePage, TRUE, FALSE, status)); + if (!assertSuccess("Can't open data file", status)) { + return; + } + + int32_t lineNumber = 1; + int32_t lineLength; + for (const auto& actualLine : resultLines) { + const UChar* lineBuf = ucbuf_readline(f.getAlias(), &lineLength, status); + if (lineBuf == nullptr) { + errln("More lines generated than are in the data file!"); + break; + } + UnicodeString expectedLine(lineBuf, lineLength - 1); + assertEquals(u"Line #" + Int64ToUnicodeString(lineNumber) + u" differs", // + expectedLine, actualLine); + lineNumber++; + } + // Quick mode: test all fields at least once but stop early. + if (!quick && ucbuf_readline(f.getAlias(), &lineLength, status) != nullptr) { + errln("Fewer lines generated than are in the data file!"); + } + + // Overwrite the golden data if requested + if (write_golden_data) { + std::ofstream outFile; + outFile.open(goldenFilePath.data()); + for (const auto& uniLine : resultLines) { + std::string byteLine; + uniLine.toUTF8String(byteLine); + outFile << byteLine << std::endl; + } + outFile.close(); + } +} + +#endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/numbertest_skeletons.cpp b/source/test/intltest/numbertest_skeletons.cpp index 33cd7ae..635ea87 100644 --- a/source/test/intltest/numbertest_skeletons.cpp +++ b/source/test/intltest/numbertest_skeletons.cpp @@ -149,6 +149,8 @@ void NumberSkeletonTest::invalidTokens() { u"integer-width/xxx", u"integer-width/0+", u"integer-width/+0#", + u"integer-width/+#", + u"integer-width/+#0", u"scientific/foo"}; expectedErrorSkeleton(cases, UPRV_LENGTHOF(cases)); diff --git a/source/test/intltest/numfmtst.cpp b/source/test/intltest/numfmtst.cpp index 5c0e849..bc9fc7f 100644 --- a/source/test/intltest/numfmtst.cpp +++ b/source/test/intltest/numfmtst.cpp @@ -81,8 +81,18 @@ static const UChar ISO_CURRENCY_USD[] = {0x55, 0x53, 0x44, 0}; // "USD" // class NumberFormatTest // ***************************************************************************** -#define CHECK(status,str) if (U_FAILURE(status)) { errcheckln(status, UnicodeString("FAIL: ") + str + " - " + u_errorName(status)); return; } -#define CHECK_DATA(status,str) if (U_FAILURE(status)) { dataerrln(UnicodeString("FAIL: ") + str + " - " + u_errorName(status)); return; } +#define CHECK(status,str) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(status)) { \ + errcheckln(status, UnicodeString("FAIL: ") + str + " - " + u_errorName(status)); \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END +#define CHECK_DATA(status,str) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(status)) { \ + dataerrln(UnicodeString("FAIL: ") + str + " - " + u_errorName(status)); \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END void NumberFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) { @@ -169,6 +179,7 @@ void NumberFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &n TESTCASE_AUTO(TestRoundingScientific10542); TESTCASE_AUTO(TestZeroScientific10547); TESTCASE_AUTO(TestAccountingCurrency); + TESTCASE_AUTO(TestCurrencyFormatForMissingLocale); TESTCASE_AUTO(TestEquality); TESTCASE_AUTO(TestCurrencyUsage); TESTCASE_AUTO(TestDoubleLimit11439); @@ -287,7 +298,7 @@ NumberFormatTest::TestAPI(void) class StubNumberFormat :public NumberFormat{ public: - StubNumberFormat(){}; + StubNumberFormat(){} virtual UnicodeString& format(double ,UnicodeString& appendTo,FieldPosition& ) const { return appendTo; } @@ -310,7 +321,7 @@ public: static char classID = 0; return (UClassID)&classID; } - virtual Format* clone() const {return NULL;} + virtual StubNumberFormat* clone() const {return NULL;} }; void @@ -321,7 +332,7 @@ NumberFormatTest::TestCoverage(void){ int64_t num = 4; if (stub.format(num, agent, pos) != UnicodeString("agent3")){ errln("NumberFormat::format(int64, UnicodString&, FieldPosition&) should delegate to (int32, ,)"); - }; + } } void NumberFormatTest::TestLocalizedPatternSymbolCoverage() { @@ -2213,7 +2224,7 @@ void NumberFormatTest::TestCurrencyUnit(void){ errln("CurrencyUnit copy constructed object should be same"); } - CurrencyUnit * cu3 = (CurrencyUnit *)cu.clone(); + CurrencyUnit * cu3 = cu.clone(); if (!(*cu3 == cu)){ errln("CurrencyUnit cloned object should be same"); } @@ -2281,7 +2292,7 @@ void NumberFormatTest::TestCurrencyAmount(void){ errln("CurrencyAmount assigned object should be same"); } - CurrencyAmount *ca3 = (CurrencyAmount *)ca.clone(); + CurrencyAmount *ca3 = ca.clone(); if (!(*ca3 == ca)){ errln("CurrencyAmount cloned object should be same"); } @@ -3172,7 +3183,7 @@ void NumberFormatTest::TestCurrencyFormat() dataerrln("FAIL: Status %s", u_errorName(status)); return; } - cloneObj = (MeasureFormat *)measureObj->clone(); + cloneObj = measureObj->clone(); if (cloneObj == NULL) { errln("Clone doesn't work"); return; @@ -3482,7 +3493,7 @@ void NumberFormatTest::TestNumberingSystems() { continue; } // Clone to test ticket #10682 - NumberFormat *fmt = (NumberFormat *) origFmt->clone(); + NumberFormat *fmt = origFmt->clone(); delete origFmt; @@ -3543,9 +3554,9 @@ NumberFormatTest::TestMultiCurrencySign() { {"en_US", "\\u00A4#,##0.00;-\\u00A4#,##0.00", "-1234.56", "-$1,234.56", "-USD\\u00A01,234.56", "-US dollars\\u00A01,234.56"}, {"en_US", "\\u00A4#,##0.00;-\\u00A4#,##0.00", "1", "$1.00", "USD\\u00A01.00", "US dollars\\u00A01.00"}, // for CHINA locale - {"zh_CN", "\\u00A4#,##0.00;(\\u00A4#,##0.00)", "1234.56", "\\uFFE51,234.56", "CNY\\u00A01,234.56", "\\u4EBA\\u6C11\\u5E01\\u00A01,234.56"}, - {"zh_CN", "\\u00A4#,##0.00;(\\u00A4#,##0.00)", "-1234.56", "(\\uFFE51,234.56)", "(CNY\\u00A01,234.56)", "(\\u4EBA\\u6C11\\u5E01\\u00A01,234.56)"}, - {"zh_CN", "\\u00A4#,##0.00;(\\u00A4#,##0.00)", "1", "\\uFFE51.00", "CNY\\u00A01.00", "\\u4EBA\\u6C11\\u5E01\\u00A01.00"} + {"zh_CN", "\\u00A4#,##0.00;(\\u00A4#,##0.00)", "1234.56", "\\u00A51,234.56", "CNY\\u00A01,234.56", "\\u4EBA\\u6C11\\u5E01\\u00A01,234.56"}, + {"zh_CN", "\\u00A4#,##0.00;(\\u00A4#,##0.00)", "-1234.56", "(\\u00A51,234.56)", "(CNY\\u00A01,234.56)", "(\\u4EBA\\u6C11\\u5E01\\u00A01,234.56)"}, + {"zh_CN", "\\u00A4#,##0.00;(\\u00A4#,##0.00)", "1", "\\u00A51.00", "CNY\\u00A01.00", "\\u4EBA\\u6C11\\u5E01\\u00A01.00"} }; const UChar doubleCurrencySign[] = {0xA4, 0xA4, 0}; @@ -3760,8 +3771,8 @@ NumberFormatTest::TestCurrencyIsoPluralFormat() { {"en_US", "-1234.56", "USD", "-$1,234.56", "-USD\\u00A01,234.56", "-1,234.56 US dollars"}, {"zh_CN", "1", "USD", "US$1.00", "USD\\u00A01.00", "1.00\\u00A0\\u7F8E\\u5143"}, {"zh_CN", "1234.56", "USD", "US$1,234.56", "USD\\u00A01,234.56", "1,234.56\\u00A0\\u7F8E\\u5143"}, - {"zh_CN", "1", "CNY", "\\uFFE51.00", "CNY\\u00A01.00", "1.00\\u00A0\\u4EBA\\u6C11\\u5E01"}, - {"zh_CN", "1234.56", "CNY", "\\uFFE51,234.56", "CNY\\u00A01,234.56", "1,234.56\\u00A0\\u4EBA\\u6C11\\u5E01"}, + {"zh_CN", "1", "CNY", "\\u00A51.00", "CNY\\u00A01.00", "1.00\\u00A0\\u4EBA\\u6C11\\u5E01"}, + {"zh_CN", "1234.56", "CNY", "\\u00A51,234.56", "CNY\\u00A01,234.56", "1,234.56\\u00A0\\u4EBA\\u6C11\\u5E01"}, {"ru_RU", "1", "RUB", "1,00\\u00A0\\u20BD", "1,00\\u00A0RUB", "1,00 \\u0440\\u043E\\u0441\\u0441\\u0438\\u0439\\u0441\\u043A\\u043E\\u0433\\u043E \\u0440\\u0443\\u0431\\u043B\\u044F"}, {"ru_RU", "2", "RUB", "2,00\\u00A0\\u20BD", "2,00\\u00A0RUB", "2,00 \\u0440\\u043E\\u0441\\u0441\\u0438\\u0439\\u0441\\u043A\\u043E\\u0433\\u043E \\u0440\\u0443\\u0431\\u043B\\u044F"}, {"ru_RU", "5", "RUB", "5,00\\u00A0\\u20BD", "5,00\\u00A0RUB", "5,00 \\u0440\\u043E\\u0441\\u0441\\u0438\\u0439\\u0441\\u043A\\u043E\\u0433\\u043E \\u0440\\u0443\\u0431\\u043B\\u044F"}, @@ -3864,7 +3875,7 @@ NumberFormatTest::TestCurrencyParsing() { {"it_IT", "1", "USD", "1,00\\u00a0USD", "1,00\\u00a0USD", "1,00 dollari statunitensi"}, {"ko_KR", "1", "USD", "US$\\u00A01.00", "USD\\u00A01.00", "1.00 \\ubbf8\\uad6d \\ub2ec\\ub7ec"}, {"ja_JP", "1", "USD", "$1.00", "USD\\u00A01.00", "1.00\\u00A0\\u7c73\\u30c9\\u30eb"}, - {"zh_CN", "1", "CNY", "\\uFFE51.00", "CNY\\u00A001.00", "1.00\\u00A0\\u4EBA\\u6C11\\u5E01"}, + {"zh_CN", "1", "CNY", "\\u00A51.00", "CNY\\u00A001.00", "1.00\\u00A0\\u4EBA\\u6C11\\u5E01"}, {"zh_TW", "1", "CNY", "CN\\u00A51.00", "CNY\\u00A01.00", "1.00 \\u4eba\\u6c11\\u5e63"}, {"zh_Hant", "1", "CNY", "CN\\u00A51.00", "CNY\\u00A01.00", "1.00 \\u4eba\\u6c11\\u5e63"}, {"zh_Hant", "1", "JPY", "\\u00A51.00", "JPY\\u00A01.00", "1 \\u65E5\\u5713"}, @@ -6743,12 +6754,12 @@ const char* attrString(int32_t attrId) { // API test, not a comprehensive test. // See DecimalFormatTest/DataDrivenTests // -#define ASSERT_SUCCESS(status) { \ +#define ASSERT_SUCCESS(status) UPRV_BLOCK_MACRO_BEGIN { \ assertSuccess(UnicodeString("file ") + __FILE__ + ", line " + __LINE__, (status)); \ -} -#define ASSERT_EQUALS(expected, actual) { \ +} UPRV_BLOCK_MACRO_END +#define ASSERT_EQUALS(expected, actual) UPRV_BLOCK_MACRO_BEGIN { \ assertEquals(UnicodeString("file ") + __FILE__ + ", line " + __LINE__, (expected), (actual)); \ -} +} UPRV_BLOCK_MACRO_END void NumberFormatTest::TestDecimal() { { @@ -7003,7 +7014,7 @@ void NumberFormatTest::TestExplicitParents() { void NumberFormatTest::TestAvailableNumberingSystems() { IcuTestErrorCode status(*this, "TestAvailableNumberingSystems"); StringEnumeration *availableNumberingSystems = NumberingSystem::getAvailableNames(status); - CHECK_DATA(status, "NumberingSystem::getAvailableNames()") + CHECK_DATA(status, "NumberingSystem::getAvailableNames()"); int32_t nsCount = availableNumberingSystems->count(status); if ( nsCount < 74 ) { @@ -7473,7 +7484,7 @@ void NumberFormatTest::TestSignificantDigits(void) { Locale locale("en_US"); LocalPointer numberFormat(static_cast( NumberFormat::createInstance(locale, status))); - CHECK_DATA(status,"NumberFormat::createInstance") + CHECK_DATA(status,"NumberFormat::createInstance"); numberFormat->setSignificantDigitsUsed(TRUE); numberFormat->setMinimumSignificantDigits(3); @@ -7526,7 +7537,7 @@ void NumberFormatTest::TestShowZero() { Locale locale("en_US"); LocalPointer numberFormat(static_cast( NumberFormat::createInstance(locale, status))); - CHECK_DATA(status, "NumberFormat::createInstance") + CHECK_DATA(status, "NumberFormat::createInstance"); numberFormat->setSignificantDigitsUsed(TRUE); numberFormat->setMaximumSignificantDigits(3); @@ -7577,7 +7588,7 @@ void NumberFormatTest::TestBug9936() { void NumberFormatTest::TestParseNegativeWithFaLocale() { UErrorCode status = U_ZERO_ERROR; DecimalFormat *test = (DecimalFormat *) NumberFormat::createInstance("fa", status); - CHECK_DATA(status, "NumberFormat::createInstance") + CHECK_DATA(status, "NumberFormat::createInstance"); test->setLenient(TRUE); Formattable af; ParsePosition ppos; @@ -7593,7 +7604,7 @@ void NumberFormatTest::TestParseNegativeWithFaLocale() { void NumberFormatTest::TestParseNegativeWithAlternateMinusSign() { UErrorCode status = U_ZERO_ERROR; DecimalFormat *test = (DecimalFormat *) NumberFormat::createInstance("en", status); - CHECK_DATA(status, "NumberFormat::createInstance") + CHECK_DATA(status, "NumberFormat::createInstance"); test->setLenient(TRUE); Formattable af; ParsePosition ppos; @@ -8014,6 +8025,52 @@ void NumberFormatTest::TestAccountingCurrency() { (Formattable)(double)-1000.5, UnicodeString("(\\uFFE51,000)").unescape(), FALSE, status); expect(NumberFormat::createInstance("de_DE", style, status), (Formattable)(double)-23456.7, UnicodeString("-23.456,70\\u00A0\\u20AC").unescape(), TRUE, status); + expect(NumberFormat::createInstance("en_ID", style, status), + (Formattable)(double)0, UnicodeString("IDR\\u00A00.00").unescape(), TRUE, status); + expect(NumberFormat::createInstance("en_ID", style, status), + (Formattable)(double)-0.2, UnicodeString("(IDR\\u00A00.20)").unescape(), TRUE, status); + expect(NumberFormat::createInstance("sh_ME", style, status), + (Formattable)(double)0, UnicodeString("0,00\\u00A0\\u20AC").unescape(), TRUE, status); + expect(NumberFormat::createInstance("sh_ME", style, status), + (Formattable)(double)-0.2, UnicodeString("(0,20\\u00A0\\u20AC)").unescape(), TRUE, status); +} + +/** + * ICU4J has the behavior explained below, but ICU4C is not affected. Test is added to prevent regression. + * + * en_ID/sh_ME uses language only locales en/sh which requires NumberFormatServiceShim to fill in the currency, but + * prior to ICU-20631, currency was not filled in for accounting, cash and standard, so currency placeholder was + * used instead of the desired locale's currency. + */ +void NumberFormatTest::TestCurrencyFormatForMissingLocale() { + IcuTestErrorCode status(*this, "TestCurrencyFormatForMissingLocale"); + Locale locale = Locale::createCanonical("sh_ME"); + + LocalPointer curFmt(NumberFormat::createInstance(locale, UNUM_CURRENCY, status)); + // Fail here with missing data. + if (!assertTrue(WHERE, curFmt.isValid(), false, true)) {return;}; + assertEquals("Currency instance is not for the desired locale for CURRENCYSTYLE", curFmt->getCurrency(), "EUR"); + UnicodeString currBuf; + curFmt->format(-1234.5, currBuf); + assertEquals("NumberFormat format outputs wrong value for CURRENCYSTYLE", u"-1.234,50\u00A0\u20AC", currBuf); + + LocalPointer accFmt(NumberFormat::createInstance(locale, UNUM_CURRENCY_ACCOUNTING, status)); + assertEquals("Currency instance is not for the desired locale for ACCOUNTINGCURRENCYSTYLE", accFmt->getCurrency(), "EUR"); + UnicodeString accBuf; + accFmt->format(-1234.5, accBuf); + assertEquals("NumberFormat format outputs wrong value for ACCOUNTINGCURRENCYSTYLE", u"(1.234,50\u00A0\u20AC)", accBuf); + + LocalPointer cashFmt(NumberFormat::createInstance(locale, UNUM_CASH_CURRENCY, status)); + assertEquals("Currency instance is not for the desired locale for CASHCURRENCYSTYLE", cashFmt->getCurrency(), "EUR"); + UnicodeString cashBuf; + cashFmt->format(-1234.5, cashBuf); + assertEquals("NumberFormat format outputs wrong value for CASHCURRENCYSTYLE", u"-1.234,50\u00A0\u20AC", cashBuf); + + LocalPointer stdFmt(NumberFormat::createInstance(locale, UNUM_CURRENCY_STANDARD, status)); + assertEquals("Currency instance is not for the desired locale for STANDARDCURRENCYSTYLE", stdFmt->getCurrency(), "EUR"); + UnicodeString stdBuf; + stdFmt->format(-1234.5, stdBuf); + assertEquals("NumberFormat format outputs wrong value for STANDARDCURRENCYSTYLE", u"-1.234,50\u00A0\u20AC", stdBuf); } // for #5186 @@ -8031,7 +8088,7 @@ void NumberFormatTest::TestEquality() { return; } - DecimalFormat* fmtClone = (DecimalFormat*)fmtBase.clone(); + DecimalFormat* fmtClone = fmtBase.clone(); fmtClone->setFormatWidth(fmtBase.getFormatWidth() + 32); if (*fmtClone == fmtBase) { errln("Error: DecimalFormat == does not distinguish objects that differ only in FormatWidth"); diff --git a/source/test/intltest/numfmtst.h b/source/test/intltest/numfmtst.h index 7dbd31c..66c4b2d 100644 --- a/source/test/intltest/numfmtst.h +++ b/source/test/intltest/numfmtst.h @@ -231,6 +231,7 @@ class NumberFormatTest: public CalendarTimeZoneTest { void TestRoundingScientific10542(); void TestZeroScientific10547(); void TestAccountingCurrency(); + void TestCurrencyFormatForMissingLocale(); void TestEquality(); void TestCurrencyUsage(); diff --git a/source/test/intltest/numrgts.cpp b/source/test/intltest/numrgts.cpp index fe244ba..7bdb5f8 100644 --- a/source/test/intltest/numrgts.cpp +++ b/source/test/intltest/numrgts.cpp @@ -78,7 +78,7 @@ public: { NumberFormat::parse(text, result, status); } - virtual Format* clone() const + virtual MyNumberFormatTest* clone() const { return NULL; } virtual UnicodeString& format(int32_t, @@ -850,15 +850,15 @@ void NumberFormatRegressionTest::Test4092480 (void) void NumberFormatRegressionTest::Test4087244 (void) { UErrorCode status = U_ZERO_ERROR; char loc[256] = {0}; + uloc_canonicalize("pt_PT@currency=PTE", loc, 256, &status); - Locale *de = new Locale(loc); - NumberFormat *nf = NumberFormat::createCurrencyInstance(*de, status); + Locale de(loc); + LocalPointer nf(NumberFormat::createCurrencyInstance(de, status)); if(U_FAILURE(status)) { - dataerrln("Error creating DecimalFormat: %s", u_errorName(status)); - delete nf; - return; + dataerrln("Error creating DecimalFormat: %s", u_errorName(status)); + return; } - DecimalFormat *df = dynamic_cast(nf); + DecimalFormat *df = dynamic_cast(nf.getAlias()); if(df == NULL) { errln("expected DecimalFormat!"); return; @@ -887,8 +887,6 @@ void NumberFormatRegressionTest::Test4087244 (void) { monStr + "\" and not \"" + decStr + '"'); } - delete de; - delete nf; } /* @bug 4070798 * Number format data rounding errors for locale FR @@ -998,7 +996,7 @@ void NumberFormatRegressionTest::Test4071005 (void) if (failure(status, "NumberFormat::createInstance", Locale::getCanadaFrench(), TRUE)){ delete formatter; return; - }; + } tempString = formatter->format (-5789.9876, tempString); if (tempString == expectedDefault) { @@ -1132,7 +1130,7 @@ void NumberFormatRegressionTest::Test4071859 (void) if (failure(status, "NumberFormat::createNumberInstance", TRUE)){ delete formatter; return; - }; + } tempString = formatter->format (-5789.9876, tempString); if (tempString == expectedDefault) { @@ -1942,7 +1940,7 @@ void NumberFormatRegressionTest::Test4145457() { if (failure(status, "NumberFormat::createInstance", TRUE)){ delete nff; return; - }; + } DecimalFormat *nf = dynamic_cast(nff); if(nf == NULL) { errln("DecimalFormat needed to continue"); @@ -2185,7 +2183,7 @@ void NumberFormatRegressionTest::Test4167494(void) { if (failure(status, "NumberFormat::createInstance", TRUE)){ delete fmt; return; - }; + } double a = DBL_MAX * 0.99; // DBL_MAX itself overflows to +Inf UnicodeString s; @@ -2515,7 +2513,7 @@ void NumberFormatRegressionTest::Test4216742(void) { if (failure(status, "createInstance", Locale::getUS(), TRUE)){ delete fmt; return; - }; + } int32_t DATA[] = { INT32_MIN, INT32_MAX, -100000000, 100000000 }; int DATA_length = UPRV_LENGTHOF(DATA); for (int i=0; isetMaximumFractionDigits(2); for (int i=0; isetMinimumFractionDigits(1); nf->setMaximumFractionDigits(1); double a = -0.09; @@ -2681,18 +2679,18 @@ void NumberFormatRegressionTest::TestJ691(void) { Locale loc("fr", "CH"); // set up the input date string & expected output - UnicodeString udt("11.10.2000", ""); - UnicodeString exp("11.10.00", ""); + UnicodeString udt(u"11.10.2000"); + UnicodeString exp(u"11.10.00"); // create a Calendar for this locale - Calendar *cal = Calendar::createInstance(loc, status); + LocalPointer cal(Calendar::createInstance(loc, status)); if (U_FAILURE(status)) { dataerrln("FAIL: Calendar::createInstance() returned " + (UnicodeString)u_errorName(status)); return; } // create a NumberFormat for this locale - NumberFormat *nf = NumberFormat::createInstance(loc, status); + LocalPointer nf(NumberFormat::createInstance(loc, status)); if (U_FAILURE(status)) { dataerrln("FAIL: NumberFormat::createInstance() returned " + (UnicodeString)u_errorName(status)); return; @@ -2705,14 +2703,14 @@ void NumberFormatRegressionTest::TestJ691(void) { // so they are done in DateFormat::adoptNumberFormat // create the DateFormat - DateFormat *df = DateFormat::createDateInstance(DateFormat::kShort, loc); + LocalPointer df(DateFormat::createDateInstance(DateFormat::kShort, loc)); if (U_FAILURE(status)) { errln("FAIL: DateFormat::createInstance() returned " + (UnicodeString)u_errorName(status)); return; } - df->adoptCalendar(cal); - df->adoptNumberFormat(nf); + df->adoptCalendar(cal.orphan()); + df->adoptNumberFormat(nf.orphan()); // set parsing to lenient & parse df->setLenient(TRUE); @@ -2725,8 +2723,6 @@ void NumberFormatRegressionTest::TestJ691(void) { if (outString != exp) { errln("FAIL: " + udt + " => " + outString); } - - delete df; } //--------------------------------------------------------------------------- @@ -2734,27 +2730,28 @@ void NumberFormatRegressionTest::TestJ691(void) { // Error Checking / Reporting macros // //--------------------------------------------------------------------------- -#define TEST_CHECK_STATUS(status) { \ +#define TEST_CHECK_STATUS(status) UPRV_BLOCK_MACRO_BEGIN { \ if (U_FAILURE(status)) { \ if (status == U_MISSING_RESOURCE_ERROR) { \ dataerrln("File %s, Line %d: status=%s", __FILE__, __LINE__, u_errorName(status)); \ } else { \ errln("File %s, Line %d: status=%s", __FILE__, __LINE__, u_errorName(status)); \ } return; \ - }} + } \ +} UPRV_BLOCK_MACRO_END -#define TEST_ASSERT(expr) \ +#define TEST_ASSERT(expr) UPRV_BLOCK_MACRO_BEGIN { \ if ((expr)==FALSE) {\ errln("File %s, line %d: Assertion Failed: " #expr "\n", __FILE__, __LINE__);\ - } -#define TEST_ASSERT_EQUALS(x,y) \ - { \ + } \ +} UPRV_BLOCK_MACRO_END +#define TEST_ASSERT_EQUALS(x,y) UPRV_BLOCK_MACRO_BEGIN { \ char _msg[1000]; \ int32_t len = sprintf (_msg,"File %s, line %d: " #x "==" #y, __FILE__, __LINE__); \ (void)len; \ U_ASSERT(len < (int32_t) sizeof(_msg)); \ assertEquals((const char*) _msg, x,y); \ - } +} UPRV_BLOCK_MACRO_END // Ticket 8199: Parse failure for numbers in the range of 1E10 - 1E18 @@ -2911,7 +2908,7 @@ void NumberFormatRegressionTest::Test9780(void) { if (failure(status, "NumberFormat::createInstance", TRUE)){ delete nf; return; - }; + } DecimalFormat *df = dynamic_cast(nf); if(df == NULL) { errln("DecimalFormat needed to continue"); @@ -3025,7 +3022,6 @@ void NumberFormatRegressionTest::Test9677(void) { errln("FAIL: with different neg prefix , parse error %s\n", u_errorName(status)); status = U_ZERO_ERROR; } else { -; if(n!=-123456789) { errln("FAIL: with different neg prefix , unum_parse status %s, result %d expected -123456789\n", u_errorName(status), n); } else { diff --git a/source/test/intltest/plurfmts.cpp b/source/test/intltest/plurfmts.cpp index 034190e..30ecb40 100644 --- a/source/test/intltest/plurfmts.cpp +++ b/source/test/intltest/plurfmts.cpp @@ -124,7 +124,7 @@ void PluralFormatTest::pluralFormatBasicTest(/*char *par*/) } if ( U_SUCCESS(status[1]) ) { - plFmt[2] = (PluralFormat*) plFmt[1]->clone(); + plFmt[2] = plFmt[1]->clone(); if (plFmt[1]!=NULL) { if ( *plFmt[1] != *plFmt[2] ) { @@ -194,7 +194,7 @@ void PluralFormatTest::pluralFormatUnitTest(/*char *par*/) UErrorCode status = U_ZERO_ERROR; UnicodeString oddAndEvenRule = UNICODE_STRING_SIMPLE("odd: n mod 2 is 1"); - PluralRules* plRules = PluralRules::createRules(oddAndEvenRule, status); + LocalPointerplRules(PluralRules::createRules(oddAndEvenRule, status)); if (U_FAILURE(status)) { dataerrln("ERROR: create PluralRules instance failed in unit tests.- exitting"); return; @@ -223,7 +223,7 @@ void PluralFormatTest::pluralFormatUnitTest(/*char *par*/) status = U_ZERO_ERROR; UBool overwrite[PLURAL_PATTERN_DATA] = {FALSE, FALSE, TRUE, TRUE}; - NumberFormat *numFmt = NumberFormat::createInstance(status); + LocalPointer numFmt(NumberFormat::createInstance(status)); UnicodeString message=UnicodeString("ERROR: PluralFormat tests various pattern ..."); if (U_FAILURE(status)) { dataerrln("ERROR: Could not create NumberFormat instance with default locale "); @@ -240,37 +240,33 @@ void PluralFormatTest::pluralFormatUnitTest(/*char *par*/) errln("ERROR: PluralFormat failed to apply pattern- "+patternTestData[i]); continue; } - numberFormatTest(&plFmt, numFmt, 1, 10, (UnicodeString *)&patternOddTestResult[i], + numberFormatTest(&plFmt, numFmt.getAlias(), 1, 10, (UnicodeString *)&patternOddTestResult[i], (UnicodeString *)&patternEvenTestResult[i], overwrite[i], &message); } - delete plRules; - delete numFmt; // ======= Test set locale status = U_ZERO_ERROR; - plRules = PluralRules::createRules(UNICODE_STRING_SIMPLE("odd: n mod 2 is 1"), status); + plRules.adoptInstead(PluralRules::createRules(UNICODE_STRING_SIMPLE("odd: n mod 2 is 1"), status)); PluralFormat pluralFmt = PluralFormat(*plRules, status); if (U_FAILURE(status)) { dataerrln("ERROR: Could not create PluralFormat instance in setLocale() test - exitting. "); - delete plRules; return; } pluralFmt.applyPattern(UNICODE_STRING_SIMPLE("odd{odd} other{even}"), status); pluralFmt.setLocale(Locale::getEnglish(), status); if (U_FAILURE(status)) { dataerrln("ERROR: Could not setLocale() with English locale "); - delete plRules; return; } message = UNICODE_STRING_SIMPLE("Error set locale: pattern is not reset!"); // Check that pattern gets deleted. logln("\n Test setLocale() ..\n"); - numFmt = NumberFormat::createInstance(Locale::getEnglish(), status); + numFmt.adoptInstead(NumberFormat::createInstance(Locale::getEnglish(), status)); if (U_FAILURE(status)) { dataerrln("ERROR: Could not create NumberFormat instance with English locale "); } - numberFormatTest(&pluralFmt, numFmt, 5, 5, NULL, NULL, FALSE, &message); + numberFormatTest(&pluralFmt, numFmt.getAlias(), 5, 5, NULL, NULL, FALSE, &message); pluralFmt.applyPattern(UNICODE_STRING_SIMPLE("odd__{odd} other{even}"), status); if (pluralFmt.format((int32_t)1, status) != UNICODE_STRING_SIMPLE("even")) { errln("SetLocale should reset rules but did not."); @@ -302,9 +298,6 @@ void PluralFormatTest::pluralFormatUnitTest(/*char *par*/) if (pluralFmt != dupPFmt) { errln("Failed in PluralFormat copy constructor or == operator"); } - - delete plRules; - delete numFmt; } diff --git a/source/test/intltest/plurults.cpp b/source/test/intltest/plurults.cpp index 1afb9c4..a70c362 100644 --- a/source/test/intltest/plurults.cpp +++ b/source/test/intltest/plurults.cpp @@ -69,9 +69,9 @@ class US { US(const UnicodeString &us) { int32_t bufLen = us.extract((int32_t)0, us.length(), (char *)NULL, (uint32_t)0) + 1; buf = (char *)uprv_malloc(bufLen); - us.extract(0, us.length(), buf, bufLen); }; - const char *cstr() {return buf;}; - ~US() { uprv_free(buf);}; + us.extract(0, us.length(), buf, bufLen); } + const char *cstr() {return buf;} + ~US() { uprv_free(buf);} }; @@ -1037,12 +1037,34 @@ void PluralRulesTest::testSelectTrailingZeros() { } } +void PluralRulesTest::compareLocaleResults(const char* loc1, const char* loc2, const char* loc3) { + UErrorCode status = U_ZERO_ERROR; + LocalPointer rules1(PluralRules::forLocale(loc1, status)); + LocalPointer rules2(PluralRules::forLocale(loc2, status)); + LocalPointer rules3(PluralRules::forLocale(loc3, status)); + if (U_FAILURE(status)) { + dataerrln("Failed to create PluralRules for one of %s, %s, %s: %s\n", loc1, loc2, loc3, u_errorName(status)); + return; + } + for (int32_t value = 0; value <= 12; value++) { + UnicodeString result1 = rules1->select(value); + UnicodeString result2 = rules2->select(value); + UnicodeString result3 = rules3->select(value); + if (result1 != result2 || result1 != result3) { + errln("PluralRules.select(%d) does not return the same values for %s, %s, %s\n", value, loc1, loc2, loc3); + } + } +} + void PluralRulesTest::testLocaleExtension() { IcuTestErrorCode errorCode(*this, "testLocaleExtension"); LocalPointer rules(PluralRules::forLocale("pt@calendar=gregorian", errorCode)); if (errorCode.errIfFailureAndReset("PluralRules::forLocale()")) { return; } UnicodeString key = rules->select(1); assertEquals("pt@calendar=gregorian select(1)", u"one", key); + compareLocaleResults("ar", "ar_SA", "ar_SA@calendar=gregorian"); + compareLocaleResults("ru", "ru_UA", "ru-u-cu-RUB"); + compareLocaleResults("fr", "fr_CH", "fr@ms=uksystem"); } #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/plurults.h b/source/test/intltest/plurults.h index 91df27b..784b0d3 100644 --- a/source/test/intltest/plurults.h +++ b/source/test/intltest/plurults.h @@ -45,6 +45,7 @@ private: double expected); void checkSelect(const LocalPointer &rules, UErrorCode &status, int32_t line, const char *keyword, ...); + void compareLocaleResults(const char* loc1, const char* loc2, const char* loc3); }; #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/pptest.cpp b/source/test/intltest/pptest.cpp index 75bc094..0f619d0 100644 --- a/source/test/intltest/pptest.cpp +++ b/source/test/intltest/pptest.cpp @@ -182,7 +182,7 @@ void ParsePositionTest::TestFieldPosition_example() if (failure(status, "NumberFormat::createInstance", TRUE)){ delete nf; return; - }; + } DecimalFormat *fmt = dynamic_cast(nf); if(fmt == NULL) { diff --git a/source/test/intltest/quantityformattertest.cpp b/source/test/intltest/quantityformattertest.cpp index 2d4f0c0..9fc57e4 100644 --- a/source/test/intltest/quantityformattertest.cpp +++ b/source/test/intltest/quantityformattertest.cpp @@ -17,6 +17,12 @@ #include "unicode/numfmt.h" #include "unicode/plurrule.h" +#define ASSERT_OK(status) UPRV_BLOCK_MACRO_BEGIN { \ + if(U_FAILURE(status)) { \ + errcheckln(status, #status " = %s @ %s:%d", u_errorName(status), __FILE__, __LINE__); \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END class QuantityFormatterTest : public IntlTest { public: @@ -117,6 +123,7 @@ void QuantityFormatterTest::TestBasic() { NumberFormat::createInstance(Locale::getEnglish(), status)); LocalPointer plurrule( PluralRules::forLocale("en", status)); + ASSERT_OK(status); FieldPosition pos(FieldPosition::DONT_CARE); UnicodeString appendTo; assertEquals( diff --git a/source/test/intltest/rbbiapts.cpp b/source/test/intltest/rbbiapts.cpp index 5d8ea00..ecc10e8 100644 --- a/source/test/intltest/rbbiapts.cpp +++ b/source/test/intltest/rbbiapts.cpp @@ -34,11 +34,17 @@ */ -#define TEST_ASSERT_SUCCESS(status) {if (U_FAILURE(status)) {\ -dataerrln("Failure at file %s, line %d, error = %s", __FILE__, __LINE__, u_errorName(status));}} - -#define TEST_ASSERT(expr) {if ((expr) == FALSE) { \ - errln("Test Failure at file %s, line %d: \"%s\" is false.\n", __FILE__, __LINE__, #expr);};} +#define TEST_ASSERT_SUCCESS(status) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(status)) { \ + dataerrln("Failure at file %s, line %d, error = %s", __FILE__, __LINE__, u_errorName(status)); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define TEST_ASSERT(expr) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expr) == FALSE) { \ + errln("Test Failure at file %s, line %d: \"%s\" is false.\n", __FILE__, __LINE__, #expr); \ + } \ +} UPRV_BLOCK_MACRO_END void RBBIAPITest::TestCloneEquals() { @@ -126,8 +132,8 @@ void RBBIAPITest::TestCloneEquals() logln((UnicodeString)"Testing clone()"); - RuleBasedBreakIterator* bi1clone = dynamic_cast(bi1->clone()); - RuleBasedBreakIterator* bi2clone = dynamic_cast(bi2->clone()); + RuleBasedBreakIterator* bi1clone = bi1->clone(); + RuleBasedBreakIterator* bi2clone = bi2->clone(); if(*bi1clone != *bi1 || *bi1clone != *biequal || *bi1clone == *bi3 || *bi1clone == *bi2) @@ -197,7 +203,7 @@ void RBBIAPITest::TestgetRules() UnicodeString text(u"Hello there"); bi1->setText(text); - LocalPointer bi3((RuleBasedBreakIterator*)bi1->clone()); + LocalPointer bi3(bi1->clone()); UnicodeString temp=bi1->getRules(); UnicodeString temp2=bi2->getRules(); @@ -232,8 +238,8 @@ void RBBIAPITest::TestHashCode() bi2->setText((UnicodeString)"Hash code"); bi3->setText((UnicodeString)"Hash code"); - RuleBasedBreakIterator* bi1clone= (RuleBasedBreakIterator*)bi1->clone(); - RuleBasedBreakIterator* bi2clone= (RuleBasedBreakIterator*)bi2->clone(); + RuleBasedBreakIterator* bi1clone= bi1->clone(); + RuleBasedBreakIterator* bi2clone= bi2->clone(); if(bi1->hashCode() != bi1clone->hashCode() || bi1->hashCode() != bi3->hashCode() || bi1clone->hashCode() != bi3->hashCode() || bi2->hashCode() != bi2clone->hashCode()) @@ -294,7 +300,7 @@ void RBBIAPITest::TestGetSetAdoptText() TEST_ASSERT(tstr == str1); - LocalPointer rb((RuleBasedBreakIterator*)wordIter1->clone()); + LocalPointer rb(wordIter1->clone()); rb->adoptText(text1); if(rb->getText() != *text1) errln((UnicodeString)"ERROR:1 error in adoptText "); @@ -1041,7 +1047,7 @@ void RBBIAPITest::RoundtripRule(const char *dataFile) { __FILE__, __LINE__, u_errorName(status), parseError.line, parseError.offset); errln(UnicodeString(builtSource)); return; - }; + } rbbiRules = brkItr->getBinaryRules(length); logln("Comparing \"%s\" len=%d", dataFile, length); if (memcmp(builtRules, rbbiRules, (int32_t)length) != 0) { diff --git a/source/test/intltest/rbbimonkeytest.cpp b/source/test/intltest/rbbimonkeytest.cpp index 16fe3bb..2b91ab3 100644 --- a/source/test/intltest/rbbimonkeytest.cpp +++ b/source/test/intltest/rbbimonkeytest.cpp @@ -135,13 +135,13 @@ CharClass *BreakRules::addCharClass(const UnicodeString &name, const UnicodeStri printf("epandedDef: %s\n", CStr(expandedDef)()); } - UnicodeSet *s = new UnicodeSet(expandedDef, USET_IGNORE_SPACE, NULL, status); + LocalPointer s(new UnicodeSet(expandedDef, USET_IGNORE_SPACE, NULL, status), status); if (U_FAILURE(status)) { - IntlTest::gTest->errln("%s:%d: error %s creating UnicodeSet %s", __FILE__, __LINE__, - u_errorName(status), CStr(name)()); - return NULL; + IntlTest::gTest->errln("%s:%d: error %s creating UnicodeSet %s\n Expanded set definition: %s", + __FILE__, __LINE__, u_errorName(status), CStr(name)(), CStr(expandedDef)()); + return nullptr; } - CharClass *cclass = new CharClass(name, definition, expandedDef, s); + CharClass *cclass = new CharClass(name, definition, expandedDef, s.orphan()); CharClass *previousClass = static_cast(uhash_put(fCharClasses.getAlias(), new UnicodeString(name), // Key, owned by hash table. cclass, // Value, owned by hash table. @@ -660,12 +660,12 @@ void RBBIMonkeyImpl::join() { } -#define MONKEY_ERROR(msg, index) { \ +#define MONKEY_ERROR(msg, index) UPRV_BLOCK_MACRO_BEGIN { \ IntlTest::gTest->errln("%s:%d %s at index %d. Parameters to reproduce: @rules=%s,seed=%u,loop=1,verbose ", \ __FILE__, __LINE__, msg, index, fRuleFileName, fTestData->fRandomSeed); \ if (fVerbose) { fTestData->dump(index); } \ status = U_INVALID_STATE_ERROR; \ -} +} UPRV_BLOCK_MACRO_END void RBBIMonkeyImpl::runTest() { UErrorCode status = U_ZERO_ERROR; diff --git a/source/test/intltest/rbbimonkeytest.h b/source/test/intltest/rbbimonkeytest.h index 54d23fc..cff731a 100644 --- a/source/test/intltest/rbbimonkeytest.h +++ b/source/test/intltest/rbbimonkeytest.h @@ -148,8 +148,8 @@ class BreakRules: public UObject { class MonkeyTestData: public UObject { public: - MonkeyTestData() {}; - ~MonkeyTestData() {}; + MonkeyTestData() {} + ~MonkeyTestData() {} void set(BreakRules *rules, IntlTest::icu_rand &rand, UErrorCode &status); void clearActualBreaks(); void dump(int32_t around = -1) const; @@ -216,8 +216,8 @@ class RBBIMonkeyImpl: public UObject { private: RBBIMonkeyImpl *fMonkeyImpl; public: - RBBIMonkeyThread(RBBIMonkeyImpl *impl) : fMonkeyImpl(impl) {}; - void run() U_OVERRIDE { fMonkeyImpl->runTest(); }; + RBBIMonkeyThread(RBBIMonkeyImpl *impl) : fMonkeyImpl(impl) {} + void run() U_OVERRIDE { fMonkeyImpl->runTest(); } }; private: void openBreakRules(const char *fileName, UErrorCode &status); diff --git a/source/test/intltest/rbbitst.cpp b/source/test/intltest/rbbitst.cpp index 0f81a9e..8f063d0 100644 --- a/source/test/intltest/rbbitst.cpp +++ b/source/test/intltest/rbbitst.cpp @@ -51,11 +51,17 @@ #include "unicode/filteredbrk.h" #endif // !UCONFIG_NO_FILTERED_BREAK_ITERATION -#define TEST_ASSERT(x) {if (!(x)) { \ - errln("Failure in file %s, line %d", __FILE__, __LINE__);}} - -#define TEST_ASSERT_SUCCESS(errcode) { if (U_FAILURE(errcode)) { \ - errcheckln(errcode, "Failure in file %s, line %d, status = \"%s\"", __FILE__, __LINE__, u_errorName(errcode));}} +#define TEST_ASSERT(x) UPRV_BLOCK_MACRO_BEGIN { \ + if (!(x)) { \ + errln("Failure in file %s, line %d", __FILE__, __LINE__); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define TEST_ASSERT_SUCCESS(errcode) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(errcode)) { \ + errcheckln(errcode, "Failure in file %s, line %d, status = \"%s\"", __FILE__, __LINE__, u_errorName(errcode)); \ + } \ +} UPRV_BLOCK_MACRO_END //--------------------------------------------- // runIndexedTest @@ -736,7 +742,7 @@ void RBBITest::TestExtended() { int32_t tagValue = 0; // The numeric value of a tag. UnicodeString rules; // Holds rules from a ... block - int32_t rulesFirstLine; // Line number of the start of current block + int32_t rulesFirstLine = 0; // Line number of the start of current block for (charIdx = 0; charIdx < len; ) { status = U_ZERO_ERROR; @@ -1237,7 +1243,7 @@ cleanUpAndReturn: delete []retPtr; retPtr = 0; ulen = 0; - }; + } return retPtr; } @@ -1611,6 +1617,9 @@ private: UnicodeSet *fLVTSet; UnicodeSet *fHangulSet; UnicodeSet *fExtendedPictSet; + UnicodeSet *fViramaSet; + UnicodeSet *fLinkingConsonantSet; + UnicodeSet *fExtCccZwjSet; UnicodeSet *fAnySet; const UnicodeString *fText; @@ -1643,6 +1652,11 @@ RBBICharMonkey::RBBICharMonkey() { fHangulSet->addAll(*fLVTSet); fExtendedPictSet = new UnicodeSet(u"[:Extended_Pictographic:]", status); + fViramaSet = new UnicodeSet(u"[\\p{Gujr}\\p{sc=Telu}\\p{sc=Mlym}\\p{sc=Orya}\\p{sc=Beng}\\p{sc=Deva}&" + "\\p{Indic_Syllabic_Category=Virama}]", status); + fLinkingConsonantSet = new UnicodeSet(u"[\\p{Gujr}\\p{sc=Telu}\\p{sc=Mlym}\\p{sc=Orya}\\p{sc=Beng}\\p{sc=Deva}&" + "\\p{Indic_Syllabic_Category=Consonant}]", status); + fExtCccZwjSet = new UnicodeSet(u"[[\\p{gcb=Extend}-\\p{ccc=0}] \\p{gcb=ZWJ}]", status); fAnySet = new UnicodeSet(0, 0x10ffff); fSets = new UVector(status); @@ -1658,6 +1672,9 @@ RBBICharMonkey::RBBICharMonkey() { fSets->addElement(fAnySet, status); fSets->addElement(fZWJSet, status); fSets->addElement(fExtendedPictSet, status); + fSets->addElement(fViramaSet, status); + fSets->addElement(fLinkingConsonantSet, status); + fSets->addElement(fExtCccZwjSet, status); if (U_FAILURE(status)) { deferredStatus = status; } @@ -1777,6 +1794,22 @@ int32_t RBBICharMonkey::next(int32_t prevPos) { continue; } + // Rule (GB9.3) LinkingConsonant ExtCccZwj* Virama ExtCccZwj* × LinkingConsonant + // Note: Viramas are also included in the ExtCccZwj class. + if (fLinkingConsonantSet->contains(c2)) { + int pi = p1; + bool sawVirama = false; + while (pi > 0 && fExtCccZwjSet->contains(fText->char32At(pi))) { + if (fViramaSet->contains(fText->char32At(pi))) { + sawVirama = true; + } + pi = fText->moveIndex32(pi, -1); + } + if (sawVirama && fLinkingConsonantSet->contains(fText->char32At(pi))) { + continue; + } + } + // Rule (GB11) Extended_Pictographic Extend * ZWJ x Extended_Pictographic if (fExtendedPictSet->contains(cBase) && fZWJSet->contains(c1) && fExtendedPictSet->contains(c2)) { continue; @@ -1827,7 +1860,9 @@ RBBICharMonkey::~RBBICharMonkey() { delete fAnySet; delete fZWJSet; delete fExtendedPictSet; -} + delete fViramaSet; + delete fLinkingConsonantSet; + delete fExtCccZwjSet;} //------------------------------------------------------------------------------------------ // @@ -2004,7 +2039,7 @@ int32_t RBBIWordMonkey::next(int32_t prevPos) { c3 = fText->char32At(p3); if (fCRSet->contains(c2) || fLFSet->contains(c2) || fNewlineSet->contains(c2)) { break; - }; + } } while (fFormatSet->contains(c3) || fExtendSet->contains(c3) || fZWJSet->contains(c3)); @@ -2030,10 +2065,10 @@ int32_t RBBIWordMonkey::next(int32_t prevPos) { // if (fCRSet->contains(c1) || fLFSet->contains(c1) || fNewlineSet->contains(c1)) { break; - }; + } if (fCRSet->contains(c2) || fLFSet->contains(c2) || fNewlineSet->contains(c2)) { break; - }; + } // Rule (3c) ZWJ x Extended_Pictographic // Not ignoring extend chars, so peek into input text to @@ -4397,11 +4432,11 @@ void RBBITest::TestBug12519() { assertTrue(WHERE, Locale::getFrench() == biFr->getLocale(ULOC_VALID_LOCALE, status)); assertTrue(WHERE "Locales do not participate in BreakIterator equality.", *biEn == *biFr); - LocalPointercloneEn((RuleBasedBreakIterator *)biEn->clone()); + LocalPointercloneEn(biEn->clone()); assertTrue(WHERE, *biEn == *cloneEn); assertTrue(WHERE, Locale::getEnglish() == cloneEn->getLocale(ULOC_VALID_LOCALE, status)); - LocalPointercloneFr((RuleBasedBreakIterator *)biFr->clone()); + LocalPointercloneFr(biFr->clone()); assertTrue(WHERE, *biFr == *cloneFr); assertTrue(WHERE, Locale::getFrench() == cloneFr->getLocale(ULOC_VALID_LOCALE, status)); diff --git a/source/test/intltest/regcoll.cpp b/source/test/intltest/regcoll.cpp index 766a72e..67c95a6 100644 --- a/source/test/intltest/regcoll.cpp +++ b/source/test/intltest/regcoll.cpp @@ -142,7 +142,7 @@ void CollationRegressionTest::Test4054238(/* char* par */) { const UChar chars3[] = {0x61, 0x00FC, 0x62, 0x65, 0x63, 0x6b, 0x20, 0x47, 0x72, 0x00F6, 0x00DF, 0x65, 0x20, 0x4c, 0x00FC, 0x62, 0x63, 0x6b, 0}; const UnicodeString test3(chars3); - RuleBasedCollator *c = (RuleBasedCollator *) en_us->clone(); + RuleBasedCollator *c = en_us->clone(); // NOTE: The Java code uses en_us to create the CollationElementIterators // but I'm pretty sure that's wrong, so I've changed this to use c. @@ -184,7 +184,7 @@ void CollationRegressionTest::Test4054734(/* char* par */) UErrorCode status = U_ZERO_ERROR; - RuleBasedCollator *c = (RuleBasedCollator *) en_us->clone(); + RuleBasedCollator *c = en_us->clone(); c->setStrength(Collator::IDENTICAL); @@ -201,7 +201,7 @@ void CollationRegressionTest::Test4054734(/* char* par */) void CollationRegressionTest::Test4054736(/* char* par */) { UErrorCode status = U_ZERO_ERROR; - RuleBasedCollator *c = (RuleBasedCollator *) en_us->clone(); + RuleBasedCollator *c = en_us->clone(); c->setStrength(Collator::SECONDARY); c->setAttribute(UCOL_NORMALIZATION_MODE, UCOL_ON, status); @@ -425,11 +425,11 @@ void CollationRegressionTest::Test4066189(/* char* par */) // NOTE: The java code used en_us to create the // CollationElementIterator's. I'm pretty sure that // was wrong, so I've change the code to use c1 and c2 - RuleBasedCollator *c1 = (RuleBasedCollator *) en_us->clone(); + RuleBasedCollator *c1 = en_us->clone(); c1->setAttribute(UCOL_NORMALIZATION_MODE, UCOL_ON, status); CollationElementIterator *i1 = c1->createCollationElementIterator(test1); - RuleBasedCollator *c2 = (RuleBasedCollator *) en_us->clone(); + RuleBasedCollator *c2 = en_us->clone(); c2->setAttribute(UCOL_NORMALIZATION_MODE, UCOL_OFF, status); CollationElementIterator *i2 = c2->createCollationElementIterator(test2); @@ -495,7 +495,7 @@ void CollationRegressionTest::Test4076676(/* char* par */) static const UChar s1[] = {0x41, 0x0301, 0x0302, 0x0300, 0}; static const UChar s2[] = {0x41, 0x0302, 0x0300, 0x0301, 0}; - RuleBasedCollator *c = (RuleBasedCollator *) en_us->clone(); + RuleBasedCollator *c = en_us->clone(); c->setStrength(Collator::TERTIARY); if (c->compare(s1,s2) == 0) @@ -573,7 +573,7 @@ void CollationRegressionTest::Test4081866(/* char* par */) static const UChar s2[] = {0x41, 0x0327, 0x0316, 0x0315, 0x0300, 0}; UErrorCode status = U_ZERO_ERROR; - RuleBasedCollator *c = (RuleBasedCollator *) en_us->clone(); + RuleBasedCollator *c = en_us->clone(); c->setStrength(Collator::TERTIARY); // Now that the default collators are set to NO_DECOMPOSITION @@ -628,7 +628,7 @@ void CollationRegressionTest::Test4087241(/* char* par */) // void CollationRegressionTest::Test4087243(/* char* par */) { - RuleBasedCollator *c = (RuleBasedCollator *) en_us->clone(); + RuleBasedCollator *c = en_us->clone(); c->setStrength(Collator::TERTIARY); static const UChar tests[][CollationRegressionTest::MAX_TOKEN_LEN] = @@ -738,7 +738,7 @@ void CollationRegressionTest::Test4101940(/* char* par */) // void CollationRegressionTest::Test4103436(/* char* par */) { - RuleBasedCollator *c = (RuleBasedCollator *) en_us->clone(); + RuleBasedCollator *c = en_us->clone(); c->setStrength(Collator::TERTIARY); static const UChar tests[][CollationRegressionTest::MAX_TOKEN_LEN] = @@ -759,7 +759,7 @@ void CollationRegressionTest::Test4103436(/* char* par */) void CollationRegressionTest::Test4114076(/* char* par */) { UErrorCode status = U_ZERO_ERROR; - RuleBasedCollator *c = (RuleBasedCollator *) en_us->clone(); + RuleBasedCollator *c = en_us->clone(); c->setStrength(Collator::TERTIARY); // @@ -884,7 +884,7 @@ void CollationRegressionTest::Test4114077(/* char* par */) // as we do with it on.... UErrorCode status = U_ZERO_ERROR; - RuleBasedCollator *c = (RuleBasedCollator *) en_us->clone(); + RuleBasedCollator *c = en_us->clone(); c->setStrength(Collator::TERTIARY); static const UChar test1[][CollationRegressionTest::MAX_TOKEN_LEN] = @@ -1253,7 +1253,7 @@ void CollationRegressionTest::TestT7189() { } void CollationRegressionTest::TestCaseFirstCompression() { - RuleBasedCollator *col = (RuleBasedCollator *) en_us->clone(); + RuleBasedCollator *col = en_us->clone(); UErrorCode status = U_ZERO_ERROR; // default diff --git a/source/test/intltest/regextst.cpp b/source/test/intltest/regextst.cpp index b1d191c..b6391d2 100644 --- a/source/test/intltest/regextst.cpp +++ b/source/test/intltest/regextst.cpp @@ -177,29 +177,56 @@ const char* RegexTest::extractToAssertBuf(const UnicodeString& message) { return ASSERT_BUF; } -#define REGEX_VERBOSE_TEXT(text) {char buf[200];utextToPrintable(buf,UPRV_LENGTHOF(buf),text);logln("%s:%d: UText %s=\"%s\"", __FILE__, __LINE__, #text, buf);} - -#define REGEX_CHECK_STATUS {if (U_FAILURE(status)) {dataerrln("%s:%d: RegexTest failure. status=%s", \ - __FILE__, __LINE__, u_errorName(status)); return;}} - -#define REGEX_ASSERT(expr) {if ((expr)==FALSE) {errln("%s:%d: RegexTest failure: REGEX_ASSERT(%s) failed \n", __FILE__, __LINE__, #expr);};} - -#define REGEX_ASSERT_FAIL(expr, errcode) {UErrorCode status=U_ZERO_ERROR; (expr);\ -if (status!=errcode) {dataerrln("RegexTest failure at line %d. Expected status=%s, got %s", \ - __LINE__, u_errorName(errcode), u_errorName(status));};} - -#define REGEX_CHECK_STATUS_L(line) {if (U_FAILURE(status)) {errln( \ - "RegexTest failure at line %d, from %d. status=%d\n",__LINE__, (line), status); }} - -#define REGEX_ASSERT_L(expr, line) {if ((expr)==FALSE) { \ - errln("RegexTest failure at line %d, from %d.", __LINE__, (line)); return;}} +#define REGEX_VERBOSE_TEXT(text) UPRV_BLOCK_MACRO_BEGIN { \ + char buf[200]; \ + utextToPrintable(buf,UPRV_LENGTHOF(buf),text); \ + logln("%s:%d: UText %s=\"%s\"", __FILE__, __LINE__, #text, buf); \ +} UPRV_BLOCK_MACRO_END + +#define REGEX_CHECK_STATUS UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(status)) { \ + dataerrln("%s:%d: RegexTest failure. status=%s", \ + __FILE__, __LINE__, u_errorName(status)); \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END + +#define REGEX_ASSERT(expr) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expr)==FALSE) { \ + errln("%s:%d: RegexTest failure: REGEX_ASSERT(%s) failed \n", __FILE__, __LINE__, #expr); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define REGEX_ASSERT_FAIL(expr, errcode) UPRV_BLOCK_MACRO_BEGIN { \ + UErrorCode status=U_ZERO_ERROR; \ + (expr); \ + if (status!=errcode) { \ + dataerrln("RegexTest failure at line %d. Expected status=%s, got %s", \ + __LINE__, u_errorName(errcode), u_errorName(status)); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define REGEX_CHECK_STATUS_L(line) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(status)) { \ + errln("RegexTest failure at line %d, from %d. status=%d\n",__LINE__, (line), status); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define REGEX_ASSERT_L(expr, line) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expr)==FALSE) { \ + errln("RegexTest failure at line %d, from %d.", __LINE__, (line)); \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END // expected: const char * , restricted to invariant characters. // actual: const UnicodeString & -#define REGEX_ASSERT_UNISTR(expected, actual) { \ +#define REGEX_ASSERT_UNISTR(expected, actual) UPRV_BLOCK_MACRO_BEGIN { \ if (UnicodeString(expected, -1, US_INV) != (actual)) { \ errln("%s:%d: RegexTest failure: REGEX_ASSERT_UNISTR(%s, %s) failed \n", \ - __FILE__, __LINE__, expected, extractToAssertBuf(actual));};} + __FILE__, __LINE__, expected, extractToAssertBuf(actual)); \ + } \ +} UPRV_BLOCK_MACRO_END static UBool testUTextEqual(UText *uta, UText *utb) { @@ -329,7 +356,10 @@ static UText* regextst_openUTF8FromInvariant(UText *ut, const char *inv, int64_t // //--------------------------------------------------------------------------- -#define REGEX_TESTLM(pat, text, looking, match) {doRegexLMTest(pat, text, looking, match, __LINE__);doRegexLMTestUTF8(pat, text, looking, match, __LINE__);} +#define REGEX_TESTLM(pat, text, looking, match) UPRV_BLOCK_MACRO_BEGIN { \ + doRegexLMTest(pat, text, looking, match, __LINE__); \ + doRegexLMTestUTF8(pat, text, looking, match, __LINE__); \ +} UPRV_BLOCK_MACRO_END UBool RegexTest::doRegexLMTest(const char *pat, const char *text, UBool looking, UBool match, int32_t line) { const UnicodeString pattern(pat, -1, US_INV); @@ -481,7 +511,7 @@ UBool RegexTest::doRegexLMTestUTF8(const char *pat, const char *text, UBool look // REGEX_ERR("pattern", expected error line, column, expected status); // //--------------------------------------------------------------------------- -#define REGEX_ERR(pat, line, col, status) regex_err(pat, line, col, status, __LINE__); +#define REGEX_ERR(pat, line, col, status) regex_err(pat, line, col, status, __LINE__) void RegexTest::regex_err(const char *pat, int32_t errLine, int32_t errCol, UErrorCode expectedStatus, int32_t line) { @@ -3495,11 +3525,16 @@ void RegexTest::regex_find(const UnicodeString &pattern, } } parseMatcher->appendTail(deTaggedInput); - REGEX_ASSERT_L(groupStarts.size() == groupEnds.size(), line); + + if (groupStarts.size() != groupEnds.size()) { + errln("Error at line %d: mismatched group tags in expected results.", line); + failed = true; + goto cleanupAndReturn; + } if ((regionStart>=0 || regionEnd>=0) && (regionStart<0 || regionStart>regionEnd)) { - errln("mismatched tags"); - failed = TRUE; - goto cleanupAndReturn; + errln("mismatched tags"); + failed = TRUE; + goto cleanupAndReturn; } // @@ -3928,7 +3963,7 @@ cleanUpAndReturn: delete []retPtr; retPtr = 0; ulen = 0; - }; + } return retPtr; } @@ -4755,7 +4790,7 @@ struct callBackContext { int32_t maxCalls; int32_t numCalls; int32_t lastSteps; - void reset(int32_t max) {maxCalls=max; numCalls=0; lastSteps=0;}; + void reset(int32_t max) {maxCalls=max; numCalls=0; lastSteps=0;} }; U_CDECL_BEGIN @@ -4858,7 +4893,7 @@ struct progressCallBackContext { int64_t lastIndex; int32_t maxCalls; int32_t numCalls; - void reset(int32_t max) {maxCalls=max; numCalls=0;lastIndex=0;}; + void reset(int32_t max) {maxCalls=max; numCalls=0;lastIndex=0;} }; // call-back function for find(). diff --git a/source/test/intltest/reldatefmttest.cpp b/source/test/intltest/reldatefmttest.cpp index baccceb..661228d 100644 --- a/source/test/intltest/reldatefmttest.cpp +++ b/source/test/intltest/reldatefmttest.cpp @@ -286,6 +286,8 @@ static WithoutQuantityExpected kEnglishNoQuantity[] = { {UDAT_DIRECTION_THIS, UDAT_ABSOLUTE_FRIDAY, "this Friday"}, {UDAT_DIRECTION_THIS, UDAT_ABSOLUTE_SATURDAY, "this Saturday"}, {UDAT_DIRECTION_THIS, UDAT_ABSOLUTE_SUNDAY, "this Sunday"}, + {UDAT_DIRECTION_THIS, UDAT_ABSOLUTE_HOUR, "this hour"}, + {UDAT_DIRECTION_THIS, UDAT_ABSOLUTE_MINUTE, "this minute"}, {UDAT_DIRECTION_PLAIN, UDAT_ABSOLUTE_DAY, "day"}, {UDAT_DIRECTION_PLAIN, UDAT_ABSOLUTE_WEEK, "week"}, @@ -299,6 +301,8 @@ static WithoutQuantityExpected kEnglishNoQuantity[] = { {UDAT_DIRECTION_PLAIN, UDAT_ABSOLUTE_FRIDAY, "Friday"}, {UDAT_DIRECTION_PLAIN, UDAT_ABSOLUTE_SATURDAY, "Saturday"}, {UDAT_DIRECTION_PLAIN, UDAT_ABSOLUTE_SUNDAY, "Sunday"}, + {UDAT_DIRECTION_PLAIN, UDAT_ABSOLUTE_HOUR, "hour"}, + {UDAT_DIRECTION_PLAIN, UDAT_ABSOLUTE_MINUTE, "minute"}, {UDAT_DIRECTION_PLAIN, UDAT_ABSOLUTE_NOW, "now"} }; @@ -623,11 +627,11 @@ static WithQuantityExpectedRelativeDateTimeUnit kEnglishFormat[] = { {0.5, UDAT_REL_UNIT_SECOND, "in 0.5 seconds"}, {1.0, UDAT_REL_UNIT_SECOND, "in 1 second"}, {2.0, UDAT_REL_UNIT_SECOND, "in 2 seconds"}, - {0.0, UDAT_REL_UNIT_MINUTE, "in 0 minutes"}, + {0.0, UDAT_REL_UNIT_MINUTE, "this minute"}, {0.5, UDAT_REL_UNIT_MINUTE, "in 0.5 minutes"}, {1.0, UDAT_REL_UNIT_MINUTE, "in 1 minute"}, {2.0, UDAT_REL_UNIT_MINUTE, "in 2 minutes"}, - {0.0, UDAT_REL_UNIT_HOUR, "in 0 hours"}, + {0.0, UDAT_REL_UNIT_HOUR, "this hour"}, {0.5, UDAT_REL_UNIT_HOUR, "in 0.5 hours"}, {1.0, UDAT_REL_UNIT_HOUR, "in 1 hour"}, {2.0, UDAT_REL_UNIT_HOUR, "in 2 hours"}, @@ -684,11 +688,11 @@ static WithQuantityExpectedRelativeDateTimeUnit kEnglishFormat[] = { {-0.5, UDAT_REL_UNIT_SECOND, "0.5 seconds ago"}, {-1.0, UDAT_REL_UNIT_SECOND, "1 second ago"}, {-2.0, UDAT_REL_UNIT_SECOND, "2 seconds ago"}, - {-0.0, UDAT_REL_UNIT_MINUTE, "0 minutes ago"}, + {-0.0, UDAT_REL_UNIT_MINUTE, "this minute"}, {-0.5, UDAT_REL_UNIT_MINUTE, "0.5 minutes ago"}, {-1.0, UDAT_REL_UNIT_MINUTE, "1 minute ago"}, {-2.0, UDAT_REL_UNIT_MINUTE, "2 minutes ago"}, - {-0.0, UDAT_REL_UNIT_HOUR, "0 hours ago"}, + {-0.0, UDAT_REL_UNIT_HOUR, "this hour"}, {-0.5, UDAT_REL_UNIT_HOUR, "0.5 hours ago"}, {-1.0, UDAT_REL_UNIT_HOUR, "1 hour ago"}, {-2.0, UDAT_REL_UNIT_HOUR, "2 hours ago"}, @@ -742,6 +746,26 @@ static WithQuantityExpectedRelativeDateTimeUnit kEnglishFormat[] = { {-2.0, UDAT_REL_UNIT_SATURDAY, "2 Saturdays ago"} }; +static WithQuantityExpected kAfrikaans[] = { + {1.0, UDAT_DIRECTION_NEXT, UDAT_RELATIVE_MONTHS, "oor 1 maand"}, + {2.0, UDAT_DIRECTION_NEXT, UDAT_RELATIVE_MONTHS, "oor 2 maande"}, + {1.0, UDAT_DIRECTION_LAST, UDAT_RELATIVE_MONTHS, "1 maand gelede"}, + {2.0, UDAT_DIRECTION_LAST, UDAT_RELATIVE_MONTHS, "2 maande gelede"}, +}; + +static WithoutQuantityExpected kAfrikaansNoQuantity[] = { + {UDAT_DIRECTION_NEXT, UDAT_ABSOLUTE_MONTH, "volgende maand"}, + {UDAT_DIRECTION_LAST, UDAT_ABSOLUTE_MONTH, "verlede maand"}, +}; + +static WithQuantityExpectedRelativeDateTimeUnit kAfrikaansFormatNumeric[] = { + {0.0, UDAT_REL_UNIT_MONTH, "oor 0 maande"}, + {1.0, UDAT_REL_UNIT_MONTH, "oor 1 maand"}, + {2.0, UDAT_REL_UNIT_MONTH, "oor 2 maande"}, + {-0.0, UDAT_REL_UNIT_MONTH, "0 maande gelede"}, + {-1.0, UDAT_REL_UNIT_MONTH, "1 maand gelede"}, + {-2.0, UDAT_REL_UNIT_MONTH, "2 maande gelede"}, +}; class RelativeDateTimeFormatterTest : public IntlTestWithFieldPosition { public: @@ -761,6 +785,7 @@ private: void TestEnglishNoQuantityShort(); void TestEnglishNoQuantityNarrow(); void TestSpanishNoQuantity(); + void TestAfrikaans(); void TestFormatWithQuantityIllegalArgument(); void TestFormatWithoutQuantityIllegalArgument(); void TestCustomNumberFormat(); @@ -853,6 +878,7 @@ void RelativeDateTimeFormatterTest::runIndexedTest( TESTCASE_AUTO(TestEnglishNoQuantityShort); TESTCASE_AUTO(TestEnglishNoQuantityNarrow); TESTCASE_AUTO(TestSpanishNoQuantity); + TESTCASE_AUTO(TestAfrikaans); TESTCASE_AUTO(TestFormatWithQuantityIllegalArgument); TESTCASE_AUTO(TestFormatWithoutQuantityIllegalArgument); TESTCASE_AUTO(TestCustomNumberFormat); @@ -951,6 +977,12 @@ void RelativeDateTimeFormatterTest::TestSpanishNoQuantity() { RunTest("es", kSpanishNoQuantity, UPRV_LENGTHOF(kSpanishNoQuantity)); } +void RelativeDateTimeFormatterTest::TestAfrikaans() { + RunTest("af", kAfrikaans, UPRV_LENGTHOF(kAfrikaans)); + RunTest("af", kAfrikaansNoQuantity, UPRV_LENGTHOF(kAfrikaansNoQuantity)); + RunTest("af", kAfrikaansFormatNumeric, UPRV_LENGTHOF(kAfrikaansFormatNumeric), true); +} + void RelativeDateTimeFormatterTest::TestFormatWithQuantityIllegalArgument() { UErrorCode status = U_ZERO_ERROR; RelativeDateTimeFormatter fmt("en", status); @@ -984,7 +1016,7 @@ void RelativeDateTimeFormatterTest::TestCustomNumberFormat() { "Failure creating format object - %s", u_errorName(status)); return; } - nf = (NumberFormat *) fmt.getNumberFormat().clone(); + nf = fmt.getNumberFormat().clone(); } nf->setMinimumFractionDigits(1); nf->setMaximumFractionDigits(1); @@ -1284,7 +1316,7 @@ void RelativeDateTimeFormatterTest::TestSidewaysDataLoading(void) { fmt.format(-3.0, UDAT_DIRECTION_LAST, UDAT_RELATIVE_DAYS, actual.remove(), status); assertEquals("3 days ago (negative 3.0): ", expected, actual); - expected = "next yr."; + expected = "next yr"; fmt.format(UDAT_DIRECTION_NEXT, UDAT_ABSOLUTE_YEAR, actual.remove(), status); assertEquals("next year: ", expected, actual); @@ -1294,7 +1326,7 @@ void RelativeDateTimeFormatterTest::TestSidewaysDataLoading(void) { expected = "now"; fmtshort.format(0.0, UDAT_DIRECTION_NEXT, UDAT_RELATIVE_SECONDS, actual.remove(), status); - expected = "next yr."; + expected = "next yr"; fmt.format(UDAT_DIRECTION_NEXT, UDAT_ABSOLUTE_YEAR, actual.remove(), status); assertEquals("next year: ", expected, actual); } diff --git a/source/test/intltest/reptest.cpp b/source/test/intltest/reptest.cpp index 35a3f5d..bf4a722 100644 --- a/source/test/intltest/reptest.cpp +++ b/source/test/intltest/reptest.cpp @@ -71,7 +71,7 @@ public: this->styles = s; } - virtual Replaceable *clone() const { + virtual TestReplaceable *clone() const { return new TestReplaceable(chars, styles); } @@ -289,7 +289,7 @@ void ReplaceableTest::check(const UnicodeString& transliteratorName, pe, status); // test clone() - TestReplaceable *tr2 = (TestReplaceable *)tr->clone(); + TestReplaceable *tr2 = tr->clone(); if(tr2 != NULL) { delete tr; tr = tr2; diff --git a/source/test/intltest/restest.cpp b/source/test/intltest/restest.cpp index 44a9ac3..839c560 100644 --- a/source/test/intltest/restest.cpp +++ b/source/test/intltest/restest.cpp @@ -37,11 +37,35 @@ enum E_Where //*************************************************************************************** -#define CONFIRM_EQ(actual, expected, myAction) if ((expected)==(actual)) { record_pass(myAction); } else { record_fail(myAction + (UnicodeString)" returned " + (actual) + (UnicodeString)" instead of " + (expected) + "\n");} -#define CONFIRM_GE(actual, expected, myAction) if ((actual)>=(expected)) { record_pass(myAction); } else { record_fail(myAction + (UnicodeString)" returned " + (actual) + (UnicodeString)" instead of x >= " + (expected) + "\n");} -#define CONFIRM_NE(actual, expected, myAction) if ((expected)!=(actual)) { record_pass(myAction); } else { record_fail(myAction + (UnicodeString)" returned " + (actual) + (UnicodeString)" instead of x != " + (expected) + "\n");} - -#define CONFIRM_UErrorCode(actual, expected, myAction) if ((expected)==(actual)) { record_pass(myAction); } else { record_fail(myAction + (UnicodeString)" returned " + u_errorName(actual) + " instead of " + u_errorName(expected) + "\n"); } +#define CONFIRM_EQ(actual, expected, myAction) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expected)==(actual)) { \ + record_pass(myAction); \ + } else { \ + record_fail(myAction + (UnicodeString)" returned " + (actual) + (UnicodeString)" instead of " + (expected) + "\n"); \ + } \ +} UPRV_BLOCK_MACRO_END +#define CONFIRM_GE(actual, expected, myAction) UPRV_BLOCK_MACRO_BEGIN { \ + if ((actual)>=(expected)) { \ + record_pass(myAction); \ + } else { \ + record_fail(myAction + (UnicodeString)" returned " + (actual) + (UnicodeString)" instead of x >= " + (expected) + "\n"); \ + } \ +} UPRV_BLOCK_MACRO_END +#define CONFIRM_NE(actual, expected, myAction) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expected)!=(actual)) { \ + record_pass(myAction); \ + } else { \ + record_fail(myAction + (UnicodeString)" returned " + (actual) + (UnicodeString)" instead of x != " + (expected) + "\n"); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define CONFIRM_UErrorCode(actual, expected, myAction) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expected)==(actual)) { \ + record_pass(myAction); \ + } else { \ + record_fail(myAction + (UnicodeString)" returned " + u_errorName(actual) + " instead of " + u_errorName(expected) + "\n"); \ + } \ +} UPRV_BLOCK_MACRO_END //*************************************************************************************** diff --git a/source/test/intltest/restsnew.cpp b/source/test/intltest/restsnew.cpp index 1c19fc8..c55f223 100644 --- a/source/test/intltest/restsnew.cpp +++ b/source/test/intltest/restsnew.cpp @@ -11,12 +11,42 @@ #include "cstring.h" #include "unicode/unistr.h" #include "unicode/resbund.h" +#include "unicode/brkiter.h" +#include "unicode/utrace.h" +#include "unicode/ucurr.h" #include "restsnew.h" #include #include #include #include +#include +#include + +//*************************************************************************************** + +void NewResourceBundleTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) +{ + if (exec) logln("TestSuite ResourceBundleTest: "); + TESTCASE_AUTO_BEGIN; + +#if !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION + TESTCASE_AUTO(TestResourceBundles); + TESTCASE_AUTO(TestConstruction); + TESTCASE_AUTO(TestIteration); + TESTCASE_AUTO(TestOtherAPI); + TESTCASE_AUTO(TestNewTypes); +#endif + + TESTCASE_AUTO(TestGetByFallback); + TESTCASE_AUTO(TestFilter); + +#if U_ENABLE_TRACING + TESTCASE_AUTO(TestTrace); +#endif + + TESTCASE_AUTO_END; +} //*************************************************************************************** @@ -36,11 +66,39 @@ enum E_Where //*************************************************************************************** -#define CONFIRM_EQ(actual,expected) if ((expected)==(actual)) { record_pass(); } else { record_fail(); errln(action + (UnicodeString)" returned " + (actual) + (UnicodeString)" instead of " + (expected)); } -#define CONFIRM_GE(actual,expected) if ((actual)>=(expected)) { record_pass(); } else { record_fail(); errln(action + (UnicodeString)" returned " + (actual) + (UnicodeString)" instead of x >= " + (expected)); } -#define CONFIRM_NE(actual,expected) if ((expected)!=(actual)) { record_pass(); } else { record_fail(); errln(action + (UnicodeString)" returned " + (actual) + (UnicodeString)" instead of x != " + (expected)); } - -#define CONFIRM_UErrorCode(actual,expected) if ((expected)==(actual)) { record_pass(); } else { record_fail(); errln(action + (UnicodeString)" returned " + (UnicodeString)u_errorName(actual) + (UnicodeString)" instead of " + (UnicodeString)u_errorName(expected)); } +#define CONFIRM_EQ(actual,expected) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expected)==(actual)) { \ + record_pass(); \ + } else { \ + record_fail(); \ + errln(action + (UnicodeString)" returned " + (actual) + (UnicodeString)" instead of " + (expected)); \ + } \ +} UPRV_BLOCK_MACRO_END +#define CONFIRM_GE(actual,expected) UPRV_BLOCK_MACRO_BEGIN { \ + if ((actual)>=(expected)) { \ + record_pass(); \ + } else { \ + record_fail(); \ + errln(action + (UnicodeString)" returned " + (actual) + (UnicodeString)" instead of x >= " + (expected)); \ + } \ +} UPRV_BLOCK_MACRO_END +#define CONFIRM_NE(actual,expected) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expected)!=(actual)) { \ + record_pass(); \ + } else { \ + record_fail(); \ + errln(action + (UnicodeString)" returned " + (actual) + (UnicodeString)" instead of x != " + (expected)); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define CONFIRM_UErrorCode(actual,expected) UPRV_BLOCK_MACRO_BEGIN { \ + if ((expected)==(actual)) { \ + record_pass(); \ + } else { \ + record_fail(); \ + errln(action + (UnicodeString)" returned " + (UnicodeString)u_errorName(actual) + (UnicodeString)" instead of " + (UnicodeString)u_errorName(expected)); \ + } \ +} UPRV_BLOCK_MACRO_END //*************************************************************************************** @@ -180,27 +238,6 @@ NewResourceBundleTest::~NewResourceBundleTest() } } -void NewResourceBundleTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) -{ - if (exec) logln("TestSuite ResourceBundleTest: "); - switch (index) { -#if !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION - case 0: name = "TestResourceBundles"; if (exec) TestResourceBundles(); break; - case 1: name = "TestConstruction"; if (exec) TestConstruction(); break; - case 2: name = "TestIteration"; if (exec) TestIteration(); break; - case 3: name = "TestOtherAPI"; if(exec) TestOtherAPI(); break; - case 4: name = "TestNewTypes"; if(exec) TestNewTypes(); break; -#else - case 0: case 1: case 2: case 3: case 4: name = "skip"; break; -#endif - - case 5: name = "TestGetByFallback"; if(exec) TestGetByFallback(); break; - case 6: name = "TestFilter"; if(exec) TestFilter(); break; - - default: name = ""; break; //needed to end loop - } -} - //*************************************************************************************** void @@ -1202,17 +1239,17 @@ NewResourceBundleTest::TestGetByFallback() { } -#define REQUIRE_SUCCESS(status) { \ +#define REQUIRE_SUCCESS(status) UPRV_BLOCK_MACRO_BEGIN { \ if (status.errIfFailureAndReset("line %d", __LINE__)) { \ return; \ } \ -} +} UPRV_BLOCK_MACRO_END -#define REQUIRE_ERROR(expected, status) { \ +#define REQUIRE_ERROR(expected, status) UPRV_BLOCK_MACRO_BEGIN { \ if (!status.expectErrorAndReset(expected, "line %d", __LINE__)) { \ return; \ } \ -} +} UPRV_BLOCK_MACRO_END /** * Tests the --filterDir option in genrb. @@ -1261,13 +1298,11 @@ void NewResourceBundleTest::TestFilter() { assertEquals("fornia", fornia.getType(), URES_TABLE); { + // Filter: hawaii should not be included based on parent inheritance ResourceBundle hawaii = fornia.get("hawaii", status); - REQUIRE_SUCCESS(status); - assertEquals("hawaii", hawaii.getType(), URES_STRING); - assertEquals("hawaii", u"idaho", hawaii.getString(status)); - REQUIRE_SUCCESS(status); + REQUIRE_ERROR(U_MISSING_RESOURCE_ERROR, status); - // Filter: illinois should not be included + // Filter: illinois should not be included based on direct rule ResourceBundle illinois = fornia.get("illinois", status); REQUIRE_ERROR(U_MISSING_RESOURCE_ERROR, status); } @@ -1341,7 +1376,101 @@ void NewResourceBundleTest::TestFilter() { REQUIRE_ERROR(U_MISSING_RESOURCE_ERROR, status); } } + + // Filter: northCarolina should be included based on direct rule, + // and so should its child, northDakota + ResourceBundle northCarolina = rb.get("northCarolina", status); + REQUIRE_SUCCESS(status); + assertEquals("northCarolina", northCarolina.getType(), URES_TABLE); + + { + ResourceBundle northDakota = northCarolina.get("northDakota", status); + REQUIRE_SUCCESS(status); + assertEquals("northDakota", northDakota.getType(), URES_STRING); + assertEquals("northDakota", u"west-virginia", northDakota.getString(status)); + REQUIRE_SUCCESS(status); + } +} + +#if U_ENABLE_TRACING + +static std::vector gResourcePathsTraced; +static std::vector gDataFilesTraced; +static std::vector gBundlesTraced; + +static void U_CALLCONV traceData( + const void*, + int32_t fnNumber, + int32_t, + const char *, + va_list args) { + + // NOTE: Whether this test is run in isolation affects whether or not + // *.res files are opened. For stability, ignore *.res file opens. + + if (fnNumber == UTRACE_UDATA_RESOURCE) { + va_arg(args, const char*); // type + va_arg(args, const char*); // file + const char* resourcePath = va_arg(args, const char*); + gResourcePathsTraced.push_back(resourcePath); + } else if (fnNumber == UTRACE_UDATA_BUNDLE) { + const char* filePath = va_arg(args, const char*); + gBundlesTraced.push_back(filePath); + } else if (fnNumber == UTRACE_UDATA_DATA_FILE) { + const char* filePath = va_arg(args, const char*); + gDataFilesTraced.push_back(filePath); + } else if (fnNumber == UTRACE_UDATA_RES_FILE) { + // ignore + } +} + +void NewResourceBundleTest::TestTrace() { + IcuTestErrorCode status(*this, "TestTrace"); + + assertEquals("Start position stability coverage", 0x3000, UTRACE_UDATA_START); + + const void* context; + utrace_setFunctions(context, nullptr, nullptr, traceData); + utrace_setLevel(UTRACE_VERBOSE); + + { + LocalPointer brkitr(BreakIterator::createWordInstance("zh-CN", status)); + + assertEquals("Should touch expected resource paths", + { "/boundaries", "/boundaries/word", "/boundaries/word" }, + gResourcePathsTraced); + assertEquals("Should touch expected resource bundles", + { U_ICUDATA_NAME "-brkitr/zh.res" }, + gBundlesTraced); + assertEquals("Should touch expected data files", + { U_ICUDATA_NAME "-brkitr/word.brk" }, + gDataFilesTraced); + gResourcePathsTraced.clear(); + gDataFilesTraced.clear(); + gBundlesTraced.clear(); + } + + { + ucurr_getDefaultFractionDigits(u"USD", status); + + assertEquals("Should touch expected resource paths", + { "/CurrencyMeta", "/CurrencyMeta/DEFAULT", "/CurrencyMeta/DEFAULT" }, + gResourcePathsTraced); + assertEquals("Should touch expected resource bundles", + { U_ICUDATA_NAME "-curr/supplementalData.res" }, + gBundlesTraced); + assertEquals("Should touch expected data files", + { }, + gDataFilesTraced); + gResourcePathsTraced.clear(); + gDataFilesTraced.clear(); + gBundlesTraced.clear(); + } + + utrace_setFunctions(context, nullptr, nullptr, nullptr); } +#endif + //eof diff --git a/source/test/intltest/restsnew.h b/source/test/intltest/restsnew.h index e951587..9ae3bf0 100644 --- a/source/test/intltest/restsnew.h +++ b/source/test/intltest/restsnew.h @@ -40,6 +40,10 @@ public: void TestFilter(void); +#if U_ENABLE_TRACING + void TestTrace(void); +#endif + private: /** * The assignment operator has no real implementation. diff --git a/source/test/intltest/selfmts.cpp b/source/test/intltest/selfmts.cpp index 81b73ae..3bf1be6 100644 --- a/source/test/intltest/selfmts.cpp +++ b/source/test/intltest/selfmts.cpp @@ -23,8 +23,13 @@ #define EXP_FORMAT_RESULT_DATA 12 #define NUM_OF_FORMAT_ARGS 3 -#define VERBOSE_INT(x) {logln("%s:%d: int %s=%d\n", __FILE__, __LINE__, #x, (x));} -#define VERBOSE_USTRING(text) {logln("%s:%d: UnicodeString %s(%d) = ", __FILE__, __LINE__, #text, text.length()); logln(UnicodeString(" \"")+text+UnicodeString("\";"));} +#define VERBOSE_INT(x) UPRV_BLOCK_MACRO_BEGIN { \ + logln("%s:%d: int %s=%d\n", __FILE__, __LINE__, #x, (x)); \ +} UPRV_BLOCK_MACRO_END +#define VERBOSE_USTRING(text) UPRV_BLOCK_MACRO_BEGIN { \ + logln("%s:%d: UnicodeString %s(%d) = ", __FILE__, __LINE__, #text, text.length()); \ + logln(UnicodeString(" \"")+text+UnicodeString("\";")); \ +} UPRV_BLOCK_MACRO_END void SelectFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) @@ -230,7 +235,7 @@ void SelectFormatTest::selectFormatAPITest(/*char *par*/) // ======= Test clone && == operator. logln("SelectFormat API test: Testing clone and == operator ..."); if ( U_SUCCESS(status[0]) ) { - selFmt[1] = (SelectFormat*)selFmt[0]->clone(); + selFmt[1] = selFmt[0]->clone(); if (selFmt[1]!=NULL) { if ( *selFmt[1] != *selFmt[0] ) { errln("ERROR: SelectFormat API test clone test failed!"); diff --git a/source/test/intltest/simplethread.cpp b/source/test/intltest/simplethread.cpp index 4f833bb..f308958 100755 --- a/source/test/intltest/simplethread.cpp +++ b/source/test/intltest/simplethread.cpp @@ -36,7 +36,7 @@ void SimpleThread::join() { class ThreadPoolThread: public SimpleThread { public: - ThreadPoolThread(ThreadPoolBase *pool, int32_t threadNum) : fPool(pool), fNum(threadNum) {}; + ThreadPoolThread(ThreadPoolBase *pool, int32_t threadNum) : fPool(pool), fNum(threadNum) {} virtual void run() {fPool->callFn(fNum); } ThreadPoolBase *fPool; int32_t fNum; diff --git a/source/test/intltest/simplethread.h b/source/test/intltest/simplethread.h index fae418d..22f245a 100755 --- a/source/test/intltest/simplethread.h +++ b/source/test/intltest/simplethread.h @@ -76,8 +76,8 @@ class ThreadPool : public ThreadPoolBase { void (TestClass::*fRunFnPtr)(int32_t); public: ThreadPool(TestClass *test, int howMany, void (TestClass::*runFnPtr)(int32_t threadNumber)) : - ThreadPoolBase(test, howMany), fRunFnPtr(runFnPtr) {}; - virtual ~ThreadPool() {}; + ThreadPoolBase(test, howMany), fRunFnPtr(runFnPtr) {} + virtual ~ThreadPool() {} private: virtual void callFn(int32_t param) { TestClass *test = dynamic_cast(fIntlTest); diff --git a/source/test/intltest/srchtest.cpp b/source/test/intltest/srchtest.cpp index a7534dd..573158a 100644 --- a/source/test/intltest/srchtest.cpp +++ b/source/test/intltest/srchtest.cpp @@ -769,7 +769,7 @@ void StringSearchTest::TestInitialization() } delete copy; - copy = (StringSearch *)result->safeClone(); + copy = result->safeClone(); if (*(copy->getCollator()) != *(result->getCollator()) || copy->getBreakIterator() != result->getBreakIterator() || copy->getMatchedLength() != result->getMatchedLength() || @@ -2452,11 +2452,11 @@ void StringSearchTest::TestSubclass() class StubSearchIterator:public SearchIterator{ public: StubSearchIterator(){} - virtual void setOffset(int32_t , UErrorCode &) {}; - virtual int32_t getOffset(void) const {return 0;}; - virtual SearchIterator* safeClone(void) const {return NULL;}; - virtual int32_t handleNext(int32_t , UErrorCode &){return 0;}; - virtual int32_t handlePrev(int32_t , UErrorCode &) {return 0;}; + virtual void setOffset(int32_t , UErrorCode &) {} + virtual int32_t getOffset(void) const {return 0;} + virtual SearchIterator* safeClone(void) const {return NULL;} + virtual int32_t handleNext(int32_t , UErrorCode &){return 0;} + virtual int32_t handlePrev(int32_t , UErrorCode &) {return 0;} virtual UClassID getDynamicClassID() const { static char classID = 0; return (UClassID)&classID; diff --git a/source/test/intltest/ssearch.cpp b/source/test/intltest/ssearch.cpp index 5a68838..41483f5 100644 --- a/source/test/intltest/ssearch.cpp +++ b/source/test/intltest/ssearch.cpp @@ -32,15 +32,25 @@ char testId[100]; -#define TEST_ASSERT(x) {if (!(x)) { \ - errln("Failure in file %s, line %d, test ID = \"%s\"", __FILE__, __LINE__, testId);}} - -#define TEST_ASSERT_M(x, m) {if (!(x)) { \ - dataerrln("Failure in file %s, line %d. \"%s\"", __FILE__, __LINE__, m);return;}} - -#define TEST_ASSERT_SUCCESS(errcode) {if (U_FAILURE(errcode)) { \ - dataerrln("Failure in file %s, line %d, test ID \"%s\", status = \"%s\"", \ - __FILE__, __LINE__, testId, u_errorName(errcode));}} +#define TEST_ASSERT(x) UPRV_BLOCK_MACRO_BEGIN { \ + if (!(x)) { \ + errln("Failure in file %s, line %d, test ID = \"%s\"", __FILE__, __LINE__, testId); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define TEST_ASSERT_M(x, m) UPRV_BLOCK_MACRO_BEGIN { \ + if (!(x)) { \ + dataerrln("Failure in file %s, line %d. \"%s\"", __FILE__, __LINE__, m); \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END + +#define TEST_ASSERT_SUCCESS(errcode) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(errcode)) { \ + dataerrln("Failure in file %s, line %d, test ID \"%s\", status = \"%s\"", \ + __FILE__, __LINE__, testId, u_errorName(errcode)); \ + } \ +} UPRV_BLOCK_MACRO_END #define NEW_ARRAY(type, count) (type *) uprv_malloc((count) * sizeof(type)) #define DELETE_ARRAY(array) uprv_free((void *) (array)) @@ -173,7 +183,7 @@ void SSearchTest::searchTest() // This assert is a little deceiving in that strength can be // any of the allowed values, not just TERTIARY, but it will // do the job of getting the error output. - TEST_ASSERT(*strength=="TERTIARY") + TEST_ASSERT(*strength=="TERTIARY"); } // @@ -201,7 +211,7 @@ void SSearchTest::searchTest() const UnicodeString *locale = testCase->getAttribute("locale"); if (locale == NULL || locale->length()==0) { locale = &defLocale; - }; + } locale->extract(0, locale->length(), clocale, sizeof(clocale), NULL); diff --git a/source/test/intltest/numbertest_stringsegment.cpp b/source/test/intltest/string_segment_test.cpp similarity index 91% rename from source/test/intltest/numbertest_stringsegment.cpp rename to source/test/intltest/string_segment_test.cpp index dc5774f..0548d9a 100644 --- a/source/test/intltest/numbertest_stringsegment.cpp +++ b/source/test/intltest/string_segment_test.cpp @@ -5,8 +5,19 @@ #if !UCONFIG_NO_FORMATTING -#include "numbertest.h" -#include "numparse_stringsegment.h" +#include "string_segment.h" +#include "intltest.h" + +class StringSegmentTest : public IntlTest { + public: + void testOffset(); + void testLength(); + void testCharAt(); + void testGetCodePoint(); + void testCommonPrefixLength(); + + void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0); +}; static const char16_t* SAMPLE_STRING = u"📻 radio 📻"; @@ -101,4 +112,9 @@ void StringSegmentTest::testCommonPrefixLength() { assertEquals("", 0, segment.getCommonPrefixLength(u"foo")); } + +extern IntlTest *createStringSegmentTest() { + return new StringSegmentTest(); +} + #endif diff --git a/source/test/intltest/strtest.cpp b/source/test/intltest/strtest.cpp index b95b525..7bb9662 100644 --- a/source/test/intltest/strtest.cpp +++ b/source/test/intltest/strtest.cpp @@ -14,6 +14,11 @@ * created by: Markus W. Scherer */ +#ifdef U_HAVE_STRING_VIEW +#include +#endif + +#include #include #include "unicode/utypes.h" @@ -28,6 +33,7 @@ #include "cstr.h" #include "intltest.h" #include "strtest.h" +#include "uinvchar.h" StringTest::~StringTest() {} @@ -142,6 +148,64 @@ StringTest::Test_UNICODE_STRING_SIMPLE() { } } +namespace { + +// See U_CHARSET_FAMILY in unicode/platform.h. +const char *nativeInvChars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789 \"%&'()*+,-./:;<=>?_"; +const char16_t *asciiInvChars = + u"ABCDEFGHIJKLMNOPQRSTUVWXYZ" + u"abcdefghijklmnopqrstuvwxyz" + u"0123456789 \"%&'()*+,-./:;<=>?_"; + +} // namespace + +void +StringTest::TestUpperOrdinal() { + for (int32_t i = 0;; ++i) { + char ic = nativeInvChars[i]; + uint8_t ac = asciiInvChars[i]; + int32_t expected = ac - 'A'; + int32_t actual = uprv_upperOrdinal(ic); + if (0 <= expected && expected <= 25) { + if (actual != expected) { + errln("uprv_upperOrdinal('%c')=%d != expected %d", + ic, (int)actual, (int)expected); + } + } else { + if (0 <= actual && actual <= 25) { + errln("uprv_upperOrdinal('%c')=%d should have been outside 0..25", + ic, (int)actual); + } + } + if (ic == 0) { break; } + } +} + +void +StringTest::TestLowerOrdinal() { + for (int32_t i = 0;; ++i) { + char ic = nativeInvChars[i]; + uint8_t ac = asciiInvChars[i]; + int32_t expected = ac - 'a'; + int32_t actual = uprv_lowerOrdinal(ic); + if (0 <= expected && expected <= 25) { + if (actual != expected) { + errln("uprv_lowerOrdinal('%c')=%d != expected %d", + ic, (int)actual, (int)expected); + } + } else { + if (0 <= actual && actual <= 25) { + errln("uprv_lowerOrdinal('%c')=%d should have been outside 0..25", + ic, (int)actual); + } + } + if (ic == 0) { break; } + } +} + void StringTest::Test_UTF8_COUNT_TRAIL_BYTES() { #if !U_HIDE_OBSOLETE_UTF_OLD_H @@ -173,10 +237,16 @@ void StringTest::runIndexedTest(int32_t index, UBool exec, const char *&name, ch TESTCASE_AUTO(Test_U_STRING); TESTCASE_AUTO(Test_UNICODE_STRING); TESTCASE_AUTO(Test_UNICODE_STRING_SIMPLE); + TESTCASE_AUTO(TestUpperOrdinal); + TESTCASE_AUTO(TestLowerOrdinal); TESTCASE_AUTO(Test_UTF8_COUNT_TRAIL_BYTES); TESTCASE_AUTO(TestSTLCompatibility); TESTCASE_AUTO(TestStringPiece); TESTCASE_AUTO(TestStringPieceComparisons); + TESTCASE_AUTO(TestStringPieceOther); +#ifdef U_HAVE_STRING_VIEW + TESTCASE_AUTO(TestStringPieceStringView); +#endif TESTCASE_AUTO(TestByteSink); TESTCASE_AUTO(TestCheckedArrayByteSink); TESTCASE_AUTO(TestStringByteSink); @@ -346,6 +416,36 @@ StringTest::TestStringPieceComparisons() { } } +void +StringTest::TestStringPieceOther() { + static constexpr char msg[] = "Kapow!"; + + // Another string piece implementation. + struct Other { + const char* data() { return msg; } + size_t size() { return sizeof msg - 1; } + }; + + Other other; + StringPiece piece(other); + + assertEquals("size()", piece.size(), other.size()); + assertEquals("data()", piece.data(), other.data()); +} + +#ifdef U_HAVE_STRING_VIEW +void +StringTest::TestStringPieceStringView() { + static constexpr char msg[] = "Kapow!"; + + std::string_view view(msg); // C++17 + StringPiece piece(view); + + assertEquals("size()", piece.size(), view.size()); + assertEquals("data()", piece.data(), view.data()); +} +#endif + // Verify that ByteSink is subclassable and Flush() overridable. class SimpleByteSink : public ByteSink { public: diff --git a/source/test/intltest/strtest.h b/source/test/intltest/strtest.h index 5462afb..040c0b0 100644 --- a/source/test/intltest/strtest.h +++ b/source/test/intltest/strtest.h @@ -39,9 +39,15 @@ private: void Test_U_STRING(); void Test_UNICODE_STRING(); void Test_UNICODE_STRING_SIMPLE(); + void TestUpperOrdinal(); + void TestLowerOrdinal(); void Test_UTF8_COUNT_TRAIL_BYTES(); void TestStringPiece(); void TestStringPieceComparisons(); + void TestStringPieceOther(); +#ifdef U_HAVE_STRING_VIEW + void TestStringPieceStringView(); +#endif void TestByteSink(); void TestCheckedArrayByteSink(); void TestStringByteSink(); diff --git a/source/test/intltest/tchcfmt.cpp b/source/test/intltest/tchcfmt.cpp index 942119e..89526b9 100644 --- a/source/test/intltest/tchcfmt.cpp +++ b/source/test/intltest/tchcfmt.cpp @@ -311,7 +311,7 @@ TestChoiceFormat::TestComplexExample( void ) it_errln("*** operator!="); } - ChoiceFormat* form_A3 = (ChoiceFormat*) form_A->clone(); + ChoiceFormat* form_A3 = form_A->clone(); if (!form_A3) { it_errln("*** ChoiceFormat->clone is nil."); }else{ diff --git a/source/test/intltest/testidna.cpp b/source/test/intltest/testidna.cpp index e5eb44e..4b4b2d4 100644 --- a/source/test/intltest/testidna.cpp +++ b/source/test/intltest/testidna.cpp @@ -1597,25 +1597,22 @@ void TestIDNA::TestRefIDNA(){ void TestIDNA::TestDataFile(){ testData(*this); } + TestIDNA::~TestIDNA(){ - if(gPrep!=NULL){ - delete gPrep; - gPrep = NULL; - } + delete gPrep; + gPrep = NULL; } -NamePrepTransform* TestIDNA::gPrep = NULL; - NamePrepTransform* TestIDNA::getInstance(UErrorCode& status){ - if(TestIDNA::gPrep == NULL){ + if(gPrep == NULL){ UParseError parseError; - TestIDNA::gPrep = NamePrepTransform::createInstance(parseError, status); - if(TestIDNA::gPrep ==NULL){ + gPrep = NamePrepTransform::createInstance(parseError, status); + if(gPrep == NULL){ //status = U_MEMORY_ALLOCATION_ERROR; return NULL; } } - return TestIDNA::gPrep; + return gPrep; } #endif /* #if !UCONFIG_NO_IDNA */ diff --git a/source/test/intltest/testidna.h b/source/test/intltest/testidna.h index 250a3f8..676d2e2 100644 --- a/source/test/intltest/testidna.h +++ b/source/test/intltest/testidna.h @@ -66,8 +66,9 @@ public: void TestRefIDNA(); void TestIDNAMonkeyTest(); void TestConformance(); - static NamePrepTransform* getInstance(UErrorCode& status); - static NamePrepTransform* gPrep; + NamePrepTransform* getInstance(UErrorCode& status); + NamePrepTransform* gPrep; + TestIDNA() : gPrep(nullptr) {} virtual ~TestIDNA(); private: diff --git a/source/test/intltest/tmsgfmt.cpp b/source/test/intltest/tmsgfmt.cpp index 89f3222..335bcf0 100644 --- a/source/test/intltest/tmsgfmt.cpp +++ b/source/test/intltest/tmsgfmt.cpp @@ -185,7 +185,7 @@ void TestMessageFormat::testBug2() // {sfb} use double format in pattern, so result will match (not strictly necessary) const UnicodeString pattern = "There {0,choice,0#are no files|1#is one file|1 fmt(new MessageFormat(pattern, status)); if (U_FAILURE(status)) { dataerrln("MessageFormat pattern creation failed. - %s", u_errorName(status)); return; @@ -194,7 +194,6 @@ void TestMessageFormat::testBug2() if (pattern != result) { errln("MessageFormat::toPattern() failed."); } - delete fmt; } #if 0 @@ -300,10 +299,10 @@ void TestMessageFormat::PatternTest() for (int32_t i = 0; i < 9; ++i) { //it_out << "\nPat in: " << testCases[i]); - MessageFormat *form = 0; + LocalPointer form; UErrorCode success = U_ZERO_ERROR; UnicodeString buffer; - form = new MessageFormat(testCases[i], Locale::getUS(), success); + form.adoptInstead(new MessageFormat(testCases[i], Locale::getUS(), success)); if (U_FAILURE(success)) { dataerrln("MessageFormat creation failed.#1 - %s", u_errorName(success)); logln(((UnicodeString)"MessageFormat for ") + testCases[i] + " creation failed.\n"); @@ -368,7 +367,6 @@ void TestMessageFormat::PatternTest() if (failed) errln("MessageFormat failed test #6"); #endif - delete form; } } @@ -676,13 +674,13 @@ MessageFormat* TestMessageFormat::internalCreate( UnicodeString pattern ,Locale locale ,UErrorCode &status , char* errMsg) { //Create the MessageFormat with simple SelectFormat - MessageFormat* msgFmt = new MessageFormat(pattern, locale, status); + LocalPointer msgFmt(new MessageFormat(pattern, locale, status)); if (U_FAILURE(status)) { dataerrln( "%s error while constructing with ErrorCode as %s" ,errMsg, u_errorName(status) ); logln(UnicodeString("TestMessageFormat::testMsgFormatSelect #1 with error code ")+(int32_t)status); - return NULL; + return nullptr; } - return msgFmt; + return msgFmt.orphan(); } void TestMessageFormat::testMsgFormatSelect(/* char* par */) @@ -809,7 +807,8 @@ void TestMessageFormat::testMsgFormatSelect(/* char* par */) //Select, plural, and number formats heavily nested UnicodeString t6("{0} und {1, select, female {{2, plural, one {{3, select, female {ihre Freundin} other {ihr Freund}} } other {ihre {2, number, integer} {3, select, female {Freundinnen} other {Freunde}} } }} other{{2, plural, one {{3, select, female {seine Freundin} other {sein Freund}}} other {seine {2, number, integer} {3, select, female {Freundinnen} other {Freunde}}}}} } gingen nach Paris."); //Create the MessageFormat with Select, plural, and number formats heavily nested - MessageFormat* msgFmt6 = internalCreate(t6, Locale("de"),err,(char*)"From TestMessageFormat::TestSelectFormat create t6"); + LocalPointer msgFmt6( + internalCreate(t6, Locale("de"),err,(char*)"From TestMessageFormat::TestSelectFormat create t6")); if (!U_FAILURE(err)) { //Arguments Formattable testArgs10[] = {"Kirti","other",(int32_t)1,"other"}; @@ -848,10 +847,9 @@ void TestMessageFormat::testMsgFormatSelect(/* char* par */) }; //Format for( int i=0; i< 14; i++){ - internalFormat( msgFmt6 , testArgs[i], 4, exp[i] ,(char*)"From TestMessageFormat::testSelectFormat format t6"); + internalFormat( msgFmt6.getAlias(), testArgs[i], 4, exp[i] ,(char*)"From TestMessageFormat::testSelectFormat format t6"); } } - delete msgFmt6; } //--------------------------------- @@ -923,7 +921,7 @@ void TestMessageFormat::testClone() MessageFormat *x = new MessageFormat("There are {0} files on {1}", success); MessageFormat *z = new MessageFormat("There are {0} files on {1} created", success); MessageFormat *y = 0; - y = (MessageFormat*)x->clone(); + y = x->clone(); if ( (*x == *y) && (*x != *z) && (*y != *z) ) @@ -1435,8 +1433,8 @@ static void _testCopyConstructor2() goto cleanup; } - fmt3 = (MessageFormat*) fmt1->clone(); - fmt4 = (MessageFormat*) fmt2->clone(); + fmt3 = fmt1->clone(); + fmt4 = fmt2->clone(); if (fmt3 == NULL) { it_err("testCopyConstructor2: (fmt3 != NULL)"); diff --git a/source/test/intltest/transapi.cpp b/source/test/intltest/transapi.cpp index 0e56a0f..4b59ecf 100644 --- a/source/test/intltest/transapi.cpp +++ b/source/test/intltest/transapi.cpp @@ -712,7 +712,7 @@ int gTestFilter3ClassID = 0; */ class TestFilter1 : public UnicodeFilter { UClassID getDynamicClassID()const { return &gTestFilter1ClassID; } - virtual UnicodeFunctor* clone() const { + virtual TestFilter1* clone() const { return new TestFilter1(*this); } virtual UBool contains(UChar32 c) const { @@ -733,7 +733,7 @@ class TestFilter1 : public UnicodeFilter { }; class TestFilter2 : public UnicodeFilter { UClassID getDynamicClassID()const { return &gTestFilter2ClassID; } - virtual UnicodeFunctor* clone() const { + virtual TestFilter2* clone() const { return new TestFilter2(*this); } virtual UBool contains(UChar32 c) const { @@ -754,7 +754,7 @@ class TestFilter2 : public UnicodeFilter { }; class TestFilter3 : public UnicodeFilter { UClassID getDynamicClassID()const { return &gTestFilter3ClassID; } - virtual UnicodeFunctor* clone() const { + virtual TestFilter3* clone() const { return new TestFilter3(*this); } virtual UBool contains(UChar32 c) const { @@ -915,8 +915,12 @@ void TransliteratorAPITest::doTest(const UnicodeString& message, const UnicodeSt // transliterator, just to verify that they don't fail in some // destructive way. // -#define CEASSERT(a) {if (!(a)) { \ -errln("FAIL at line %d from line %d: %s", __LINE__, line, #a); return; }} +#define CEASSERT(a) UPRV_BLOCK_MACRO_BEGIN { \ + if (!(a)) { \ + errln("FAIL at line %d from line %d: %s", __LINE__, line, #a); \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END void TransliteratorAPITest::callEverything(const Transliterator *tr, int line) { Transliterator *clonedTR = tr->clone(); @@ -970,7 +974,7 @@ class MyUnicodeFunctorTestClass : public UnicodeFunctor { public: virtual UnicodeFunctor* clone() const {return NULL;} static UClassID getStaticClassID(void) {return (UClassID)&MyUnicodeFunctorTestClassID;} - virtual UClassID getDynamicClassID(void) const {return getStaticClassID();}; + virtual UClassID getDynamicClassID(void) const {return getStaticClassID();} virtual void setData(const TransliterationRuleData*) {} }; diff --git a/source/test/intltest/transrt.cpp b/source/test/intltest/transrt.cpp index 7517577..c1c30d3 100644 --- a/source/test/intltest/transrt.cpp +++ b/source/test/intltest/transrt.cpp @@ -1034,11 +1034,14 @@ void TransliteratorRoundTripTest::TestHangul() { } -#define ASSERT_SUCCESS(status) {if (U_FAILURE(status)) { \ - errcheckln(status, "error at file %s, line %d, status = %s", __FILE__, __LINE__, \ - u_errorName(status)); \ - return;}} - +#define ASSERT_SUCCESS(status) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(status)) { \ + errcheckln(status, "error at file %s, line %d, status = %s", __FILE__, __LINE__, \ + u_errorName(status)); \ + return; \ + } \ +} UPRV_BLOCK_MACRO_END + static void writeStringInU8(FILE *out, const UnicodeString &s) { int i; @@ -1049,6 +1052,7 @@ static void writeStringInU8(FILE *out, const UnicodeString &s) { int32_t destIdx = 0; U8_APPEND(bufForOneChar, destIdx, (int32_t)sizeof(bufForOneChar), c, isError); U_ASSERT(!isError); + (void)isError; fwrite(bufForOneChar, 1, destIdx, out); } } @@ -1059,7 +1063,10 @@ static void writeStringInU8(FILE *out, const UnicodeString &s) { void TransliteratorRoundTripTest::TestHan() { UErrorCode status = U_ZERO_ERROR; LocalULocaleDataPointer uld(ulocdata_open("zh",&status)); - LocalUSetPointer USetExemplars(ulocdata_getExemplarSet(uld.getAlias(), uset_openEmpty(), 0, ULOCDATA_ES_STANDARD, &status)); + LocalUSetPointer USetExemplars(uset_openEmpty()); + assertTrue("", USetExemplars.isValid(), false, false, __FILE__, __LINE__); + if (! USetExemplars.isValid()) return; + ulocdata_getExemplarSet(uld.getAlias(), USetExemplars.getAlias(), 0, ULOCDATA_ES_STANDARD, &status); ASSERT_SUCCESS(status); UnicodeString source; @@ -1281,7 +1288,7 @@ class LegalIndic :public Legal{ public: LegalIndic(); virtual UBool is(const UnicodeString& sourceString) const; - virtual ~LegalIndic() {}; + virtual ~LegalIndic() {} }; UBool LegalIndic::is(const UnicodeString& sourceString) const{ int cp=sourceString.charAt(0); diff --git a/source/test/intltest/transtst.cpp b/source/test/intltest/transtst.cpp index b2c496d..965fca8 100644 --- a/source/test/intltest/transtst.cpp +++ b/source/test/intltest/transtst.cpp @@ -657,7 +657,7 @@ int gTestFilterClassID = 0; * Used by TestFiltering(). */ class TestFilter : public UnicodeFilter { - virtual UnicodeFunctor* clone() const { + virtual TestFilter* clone() const { return new TestFilter(*this); } virtual UBool contains(UChar32 c) const { @@ -1947,7 +1947,7 @@ class TestTrans : public Transliterator { public: TestTrans(const UnicodeString& id) : Transliterator(id, 0) { } - virtual Transliterator* clone(void) const { + virtual TestTrans* clone(void) const { return new TestTrans(getID()); } virtual void handleTransliterate(Replaceable& /*text*/, UTransPosition& offsets, @@ -2340,17 +2340,17 @@ void TransliteratorTest::TestCompoundFilterID(void) { exp = CharsToUnicodeString(DATA[i+3]); } UBool expOk = (DATA[i+1] != NULL); - Transliterator* t = NULL; + LocalPointer t; UParseError pe; UErrorCode ec = U_ZERO_ERROR; if (id.charAt(0) == 0x23/*#*/) { - t = Transliterator::createFromRules("ID", id, direction, pe, ec); + t.adoptInstead(Transliterator::createFromRules("ID", id, direction, pe, ec)); } else { - t = Transliterator::createInstance(id, direction, pe, ec); + t.adoptInstead(Transliterator::createInstance(id, direction, pe, ec)); } - UBool ok = (t != NULL && U_SUCCESS(ec)); + UBool ok = (t.isValid() && U_SUCCESS(ec)); UnicodeString transID; - if (t!=0) { + if (t.isValid()) { transID = t->getID(); } else { @@ -2362,7 +2362,6 @@ void TransliteratorTest::TestCompoundFilterID(void) { if (source.length() != 0) { expect(*t, source, exp); } - delete t; } else { dataerrln((UnicodeString)"FAIL: " + id + " => " + transID + ", " + u_errorName(ec)); @@ -3176,12 +3175,12 @@ void TransliteratorTest::TestToRulesMark() { UParseError pe; UErrorCode ec = U_ZERO_ERROR; - Transliterator *t2 = Transliterator::createFromRules("source-target", UnicodeString(testRules, -1, US_INV), UTRANS_FORWARD, pe, ec); - Transliterator *t3 = Transliterator::createFromRules("target-source", UnicodeString(testRules, -1, US_INV), UTRANS_REVERSE, pe, ec); + LocalPointer t2( + Transliterator::createFromRules("source-target", UnicodeString(testRules, -1, US_INV), UTRANS_FORWARD, pe, ec)); + LocalPointer t3( + Transliterator::createFromRules("target-source", UnicodeString(testRules, -1, US_INV), UTRANS_REVERSE, pe, ec)); if (U_FAILURE(ec)) { - delete t2; - delete t3; dataerrln((UnicodeString)"FAIL: createFromRules => " + u_errorName(ec)); return; } @@ -3191,9 +3190,6 @@ void TransliteratorTest::TestToRulesMark() { checkRules("Failed toRules FORWARD", *t2, UnicodeString(testRulesForward, -1, US_INV)); checkRules("Failed toRules BACKWARD", *t3, UnicodeString(testRulesBackward, -1, US_INV)); - - delete t2; - delete t3; } /** @@ -4066,7 +4062,7 @@ void TransliteratorTest::TestAllCodepoints(){ } -#define TEST_TRANSLIT_ID(id, cls) { \ +#define TEST_TRANSLIT_ID(id, cls) UPRV_BLOCK_MACRO_BEGIN { \ UErrorCode ec = U_ZERO_ERROR; \ Transliterator* t = Transliterator::createInstance(id, UTRANS_FORWARD, ec); \ if (U_FAILURE(ec)) { \ @@ -4078,9 +4074,9 @@ void TransliteratorTest::TestAllCodepoints(){ /* *t = *t; */ /*can't do this: coverage test for assignment op*/ \ } \ delete t; \ -} +} UPRV_BLOCK_MACRO_END -#define TEST_TRANSLIT_RULE(rule, cls) { \ +#define TEST_TRANSLIT_RULE(rule, cls) UPRV_BLOCK_MACRO_BEGIN { \ UErrorCode ec = U_ZERO_ERROR; \ UParseError pe; \ Transliterator* t = Transliterator::createFromRules("_", rule, UTRANS_FORWARD, pe, ec); \ @@ -4093,7 +4089,7 @@ void TransliteratorTest::TestAllCodepoints(){ /* *t = *t; */ /*can't do this: coverage test for assignment op*/ \ } \ delete t; \ -} +} UPRV_BLOCK_MACRO_END void TransliteratorTest::TestBoilerplate() { TEST_TRANSLIT_ID("Any-Latin", AnyTransliterator); diff --git a/source/test/intltest/tsdate.cpp b/source/test/intltest/tsdate.cpp index 596ce97..79e61e8 100644 --- a/source/test/intltest/tsdate.cpp +++ b/source/test/intltest/tsdate.cpp @@ -164,14 +164,22 @@ void IntlTestDateFormat::tryDate(UDate theDate) date[0] = theDate; fFormat->format(theDate, string[0]); + UErrorCode status = U_ZERO_ERROR; + const char* locID = "??"; + Locale loc = fFormat->getCalendar()->getLocale(ULOC_VALID_LOCALE, status); + if (U_SUCCESS(status)) { + locID = loc.getName(); + } + for (i=1; iparse(string[i-1], status); if (U_FAILURE(status)) { describeTest(); - errln("**** FAIL: Parse of " + prettify(string[i-1], FALSE) + " failed."); + errln("**** FAIL, locale " + UnicodeString(locID,-1,US_INV) + + ": Parse of " + prettify(string[i-1], FALSE) + " failed."); dump = TRUE; break; } @@ -181,7 +189,8 @@ void IntlTestDateFormat::tryDate(UDate theDate) else if (dateMatch > 0 && date[i] != date[i-1]) { describeTest(); - errln("**** FAIL: Date mismatch after match for " + string[i]); + errln("**** FAIL, locale " + UnicodeString(locID,-1,US_INV) + + ": Date mismatch after match for " + string[i]); dump = TRUE; break; } @@ -190,7 +199,8 @@ void IntlTestDateFormat::tryDate(UDate theDate) else if (stringMatch > 0 && string[i] != string[i-1]) { describeTest(); - errln("**** FAIL: String mismatch after match for " + string[i]); + errln("**** FAIL, locale " + UnicodeString(locID,-1,US_INV) + + ": String mismatch after match for " + string[i]); dump = TRUE; break; } diff --git a/source/test/intltest/tsmthred.cpp b/source/test/intltest/tsmthred.cpp index 2c7528f..98e0486 100644 --- a/source/test/intltest/tsmthred.cpp +++ b/source/test/intltest/tsmthred.cpp @@ -62,7 +62,6 @@ void MultithreadTest::runIndexedTest( int32_t index, UBool exec, TESTCASE_AUTO_BEGIN; TESTCASE_AUTO(TestThreads); - TESTCASE_AUTO(TestMutex); #if !UCONFIG_NO_FORMATTING TESTCASE_AUTO(TestThreadedIntl); #endif @@ -72,7 +71,6 @@ void MultithreadTest::runIndexedTest( int32_t index, UBool exec, TESTCASE_AUTO(TestString); TESTCASE_AUTO(TestArabicShapingThreads); TESTCASE_AUTO(TestAnyTranslit); - TESTCASE_AUTO(TestConditionVariables); TESTCASE_AUTO(TestUnifiedCache); #if !UCONFIG_NO_TRANSLITERATION TESTCASE_AUTO(TestBreakTranslit); @@ -81,7 +79,7 @@ void MultithreadTest::runIndexedTest( int32_t index, UBool exec, TESTCASE_AUTO(Test20104); #endif /* #if !UCONFIG_NO_FORMATTING */ #endif /* #if !UCONFIG_NO_TRANSLITERATION */ - TESTCASE_AUTO_END + TESTCASE_AUTO_END; } @@ -160,8 +158,8 @@ void MultithreadTest::TestThreads() class TestArabicShapeThreads : public SimpleThread { public: - TestArabicShapeThreads() {}; - virtual void run() { doTailTest(); }; + TestArabicShapeThreads() {} + virtual void run() { doTailTest(); } private: void doTailTest(); }; @@ -232,109 +230,6 @@ void MultithreadTest::TestArabicShapingThreads() } -//----------------------------------------------------------------------- -// -// TestMutex - a simple (non-stress) test to verify that ICU mutexes -// and condition variables are functioning. Does not test the use of -// mutexes within ICU services, but rather that the -// platform's mutex support is at least superficially there. -// -//---------------------------------------------------------------------- -static UMutex *gTestMutexA() { - static UMutex m = U_MUTEX_INITIALIZER; - return &m; -} -static UConditionVar *gThreadsCountChanged() { - static UConditionVar cv = U_CONDITION_INITIALIZER; - return &cv; -} - -static int gThreadsStarted = 0; -static int gThreadsInMiddle = 0; -static int gThreadsDone = 0; - -static const int TESTMUTEX_THREAD_COUNT = 40; - -class TestMutexThread : public SimpleThread -{ -public: - virtual void run() { - // This is the code that each of the spawned threads runs. - // All threads move together throught the started - middle - done sequence together, - // waiting for all other threads to reach each point before advancing. - umtx_lock(gTestMutexA()); - gThreadsStarted += 1; - umtx_condBroadcast(gThreadsCountChanged()); - while (gThreadsStarted < TESTMUTEX_THREAD_COUNT) { - if (gThreadsInMiddle != 0) { - IntlTest::gTest->errln( - "%s:%d gThreadsInMiddle = %d. Expected 0.", __FILE__, __LINE__, gThreadsInMiddle); - return; - } - umtx_condWait(gThreadsCountChanged(), gTestMutexA()); - } - - gThreadsInMiddle += 1; - umtx_condBroadcast(gThreadsCountChanged()); - while (gThreadsInMiddle < TESTMUTEX_THREAD_COUNT) { - if (gThreadsDone != 0) { - IntlTest::gTest->errln( - "%s:%d gThreadsDone = %d. Expected 0.", __FILE__, __LINE__, gThreadsDone); - return; - } - umtx_condWait(gThreadsCountChanged(), gTestMutexA()); - } - - gThreadsDone += 1; - umtx_condBroadcast(gThreadsCountChanged()); - while (gThreadsDone < TESTMUTEX_THREAD_COUNT) { - umtx_condWait(gThreadsCountChanged(), gTestMutexA()); - } - umtx_unlock(gTestMutexA()); - } -}; - -void MultithreadTest::TestMutex() -{ - gThreadsStarted = 0; - gThreadsInMiddle = 0; - gThreadsDone = 0; - int32_t i = 0; - TestMutexThread threads[TESTMUTEX_THREAD_COUNT]; - umtx_lock(gTestMutexA()); - for (i=0; ierrln("File %s, Line %d: Error, gStartedThreads = %d, gFinishedThreads = %d", - __FILE__, __LINE__, gStartedThreads, gFinishedThreads); - } - umtx_condWait(gCTConditionVar(), gCTMutex()); - } - - gFinishedThreads += gConditionTestOne; - fFinished = true; - umtx_condBroadcast(gCTConditionVar()); - - while (gFinishedThreads < NUMTHREADS) { - umtx_condWait(gCTConditionVar(), gCTMutex()); - } - umtx_unlock(gCTMutex()); -} - -void MultithreadTest::TestConditionVariables() { - gStartedThreads = 0; - gFinishedThreads = 0; - int i; - - umtx_lock(gCTMutex()); - CondThread *threads[NUMTHREADS]; - for (i=0; istart(); - } - - while (gStartedThreads < NUMTHREADS) { - umtx_condWait(gCTConditionVar(), gCTMutex()); - } - - while (gFinishedThreads < NUMTHREADS) { - umtx_condWait(gCTConditionVar(), gCTMutex()); - } - - umtx_unlock(gCTMutex()); - - for (i=0; ifFinished); - } - - for (i=0; ijoin(); - delete threads[i]; - } -} - // // Unified Cache Test @@ -1277,6 +1081,9 @@ class UCTMultiThreadItem : public SharedObject { U_NAMESPACE_BEGIN +static std::mutex *gCTMutex = nullptr; +static std::condition_variable *gCTConditionVar = nullptr; + template<> U_EXPORT const UCTMultiThreadItem *LocaleCacheKey::createObject( const void *context, UErrorCode &status) const { @@ -1292,21 +1099,23 @@ const UCTMultiThreadItem *LocaleCacheKey::createObject( return result; } - umtx_lock(gCTMutex()); - bool firstObject = (gObjectsCreated == 0); - if (firstObject) { - // Force the first object creation that comes through to wait - // until other have completed. Verifies that cache doesn't - // deadlock when a creation is slow. - - // Note that gObjectsCreated needs to be incremeneted from 0 to 1 - // early, to keep subsequent threads from entering this path. - gObjectsCreated = 1; - while (gObjectsCreated < 3) { - umtx_condWait(gCTConditionVar(), gCTMutex()); + bool firstObject = false; + { + std::unique_lock lock(*gCTMutex); + firstObject = (gObjectsCreated == 0); + if (firstObject) { + // Force the first object creation that comes through to wait + // until other have completed. Verifies that cache doesn't + // deadlock when a creation is slow. + + // Note that gObjectsCreated needs to be incremeneted from 0 to 1 + // early, to keep subsequent threads from entering this path. + gObjectsCreated = 1; + while (gObjectsCreated < 3) { + gCTConditionVar->wait(lock); + } } } - umtx_unlock(gCTMutex()); const UCTMultiThreadItem *result = new UCTMultiThreadItem(fLoc.getLanguage()); @@ -1318,12 +1127,13 @@ const UCTMultiThreadItem *LocaleCacheKey::createObject( // Log that we created an object. The first object was already counted, // don't do it again. - umtx_lock(gCTMutex()); - if (!firstObject) { - gObjectsCreated += 1; + { + std::unique_lock lock(*gCTMutex); + if (!firstObject) { + gObjectsCreated += 1; + } + gCTConditionVar->notify_all(); } - umtx_condBroadcast(gCTConditionVar()); - umtx_unlock(gCTMutex()); return result; } @@ -1335,8 +1145,8 @@ class UnifiedCacheThread: public SimpleThread { UnifiedCacheThread( const UnifiedCache *cache, const char *loc, - const char *loc2) : fCache(cache), fLoc(loc), fLoc2(loc2) {}; - ~UnifiedCacheThread() {}; + const char *loc2) : fCache(cache), fLoc(loc), fLoc2(loc2) {} + ~UnifiedCacheThread() {} void run(); void exerciseByLocale(const Locale &); const UnifiedCache *fCache; @@ -1385,7 +1195,9 @@ void MultithreadTest::TestUnifiedCache() { cache.setEvictionPolicy(2, 0, status); U_ASSERT(U_SUCCESS(status)); - gFinishedThreads = 0; + gCTMutex = new std::mutex(); + gCTConditionVar = new std::condition_variable(); + gObjectsCreated = 0; UnifiedCacheThread *threads[CACHE_LOAD][UPRV_LENGTHOF(gCacheLocales)]; @@ -1427,6 +1239,8 @@ void MultithreadTest::TestUnifiedCache() { delete threads[i][j]; } } + delete gCTMutex; + delete gCTConditionVar; } #if !UCONFIG_NO_TRANSLITERATION @@ -1441,8 +1255,8 @@ static const UnicodeString *gTranslitExpected; class BreakTranslitThread: public SimpleThread { public: - BreakTranslitThread() {}; - ~BreakTranslitThread() {}; + BreakTranslitThread() {} + ~BreakTranslitThread() {} void run(); }; @@ -1491,7 +1305,7 @@ void MultithreadTest::TestBreakTranslit() { class TestIncDecThread : public SimpleThread { public: - TestIncDecThread() { }; + TestIncDecThread() {} virtual void run(); }; @@ -1524,7 +1338,7 @@ static Calendar *gSharedCalendar = {}; class Test20104Thread : public SimpleThread { public: - Test20104Thread() { }; + Test20104Thread() {} virtual void run(); }; diff --git a/source/test/intltest/tsmthred.h b/source/test/intltest/tsmthred.h index 565080a..d3983cf 100644 --- a/source/test/intltest/tsmthred.h +++ b/source/test/intltest/tsmthred.h @@ -36,10 +36,6 @@ public: **/ void TestArabicShapingThreads(void); - /** - * test that mutexes work - **/ - void TestMutex(void); #if !UCONFIG_NO_FORMATTING /** * test that intl functions work in a multithreaded context @@ -49,7 +45,6 @@ public: void TestCollators(void); void TestString(); void TestAnyTranslit(); - void TestConditionVariables(); void TestUnifiedCache(); void TestBreakTranslit(); void TestIncDec(); diff --git a/source/test/intltest/tstnorm.cpp b/source/test/intltest/tstnorm.cpp index 56df7ca..b3f4185 100644 --- a/source/test/intltest/tstnorm.cpp +++ b/source/test/intltest/tstnorm.cpp @@ -1369,7 +1369,7 @@ initExpectedSkippables(UnicodeSet skipSets[UNORM_MODE_COUNT], UErrorCode &errorC // We need not look at control codes, Han characters nor Hangul LVT syllables because they // do not combine forward. LV syllables are already removed. UnicodeSet notInteresting("[[:C:][:Unified_Ideograph:][:HST=LVT:]]", errorCode); - LocalPointer unsure(&((UnicodeSet *)(skipSets[UNORM_NFC].clone()))->removeAll(notInteresting)); + LocalPointer unsure(&(skipSets[UNORM_NFC].clone())->removeAll(notInteresting)); // System.out.format("unsure.size()=%d\n", unsure.size()); // For each character about which we are unsure, see if it changes when we add diff --git a/source/test/intltest/tufmtts.cpp b/source/test/intltest/tufmtts.cpp index 91a2667..3a0d7b6 100644 --- a/source/test/intltest/tufmtts.cpp +++ b/source/test/intltest/tufmtts.cpp @@ -171,7 +171,7 @@ void TimeUnitTest::testAPI() { TimeUnit* tmunit = TimeUnit::createInstance(TimeUnit::UTIMEUNIT_YEAR, status); if (!assertSuccess("TimeUnit::createInstance", status)) return; - TimeUnit* another = (TimeUnit*)tmunit->clone(); + TimeUnit* another = tmunit->clone(); TimeUnit third(*tmunit); TimeUnit fourth = third; @@ -239,7 +239,7 @@ void TimeUnitTest::testAPI() { TimeUnitAmount second(tma); TimeUnitAmount third_tma = tma; - TimeUnitAmount* fourth_tma = (TimeUnitAmount*)tma.clone(); + TimeUnitAmount* fourth_tma = tma.clone(); assertTrue("orig and copy are equal", (second == tma)); assertTrue("clone and assigned are equal", (third_tma == *fourth_tma)); @@ -266,7 +266,7 @@ void TimeUnitTest::testAPI() { TimeUnitFormat tmf_copy(tmf_fr); assertTrue("TimeUnitFormat: orig and copy are equal", (tmf_fr == tmf_copy)); - TimeUnitFormat* tmf_clone = (TimeUnitFormat*)tmf_en->clone(); + TimeUnitFormat* tmf_clone = tmf_en->clone(); assertTrue("TimeUnitFormat: orig and clone are equal", (*tmf_en == *tmf_clone)); delete tmf_clone; @@ -386,7 +386,7 @@ void TimeUnitTest::testGreekWithFallback() { unitIndex < UPRV_LENGTHOF(tunits); ++unitIndex ) { - TimeUnitAmount *tamt = new TimeUnitAmount(numbers[numberIndex], tunits[unitIndex], status); + LocalPointertamt(new TimeUnitAmount(numbers[numberIndex], tunits[unitIndex], status)); if (U_FAILURE(status)) { dataerrln("generating TimeUnitAmount Object failed."); #ifdef TUFMTTS_DEBUG @@ -395,7 +395,7 @@ void TimeUnitTest::testGreekWithFallback() { return; } - TimeUnitFormat *tfmt = new TimeUnitFormat(l, styles[styleIndex], status); + LocalPointer tfmt(new TimeUnitFormat(l, styles[styleIndex], status)); if (U_FAILURE(status)) { dataerrln("generating TimeUnitAmount Object failed."); #ifdef TUFMTTS_DEBUG @@ -407,10 +407,9 @@ void TimeUnitTest::testGreekWithFallback() { Formattable fmt; UnicodeString str; - fmt.adoptObject(tamt); - str = ((Format *)tfmt)->format(fmt, str, status); + fmt.adoptObject(tamt.orphan()); + str = ((Format *)tfmt.getAlias())->format(fmt, str, status); if (!assertSuccess("formatting relative time failed", status)) { - delete tfmt; #ifdef TUFMTTS_DEBUG std::cout << "Failed to format" << "\n"; #endif @@ -426,11 +425,9 @@ void TimeUnitTest::testGreekWithFallback() { std::cout << "Formatted string : " << tmp << " expected : " << tmp1 << "\n"; #endif if (!assertEquals("formatted time string is not expected, locale: " + UnicodeString(locales[locIndex]) + " style: " + (int)styles[styleIndex] + " units: " + (int)tunits[unitIndex], expected[counter], str)) { - delete tfmt; str.remove(); return; } - delete tfmt; str.remove(); ++counter; } diff --git a/source/test/intltest/tzfmttst.cpp b/source/test/intltest/tzfmttst.cpp index 46a640a..40362aa 100644 --- a/source/test/intltest/tzfmttst.cpp +++ b/source/test/intltest/tzfmttst.cpp @@ -85,6 +85,7 @@ TimeZoneFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &name TESTCASE(5, TestFormatTZDBNames); TESTCASE(6, TestFormatCustomZone); TESTCASE(7, TestFormatTZDBNamesAllZoneCoverage); + TESTCASE(8, TestAdoptDefaultThreadSafe); default: name = ""; break; } } @@ -409,7 +410,7 @@ struct LocaleData { for (int i=0; i threads(this, threadCount, &TimeZoneFormatTest::RunAdoptDefaultThreadSafeTests); + threads.start(); // Start all threads. + threads.join(); // Wait for all threads to finish. +} + +static const int32_t kAdoptDefaultIteration = 10; +static const int32_t kCreateDefaultIteration = 5000; +static const int64_t kStartTime = 1557288964845; + +void TimeZoneFormatTest::RunAdoptDefaultThreadSafeTests(int32_t threadNumber) { + UErrorCode status = U_ZERO_ERROR; + if (threadNumber % 2 == 0) { + for (int32_t i = 0; i < kAdoptDefaultIteration; i++) { + std::unique_ptr timezones( + icu::TimeZone::createEnumeration()); + // Fails with missing data. + if (!assertTrue(WHERE, (bool)timezones, false, true)) {return;} + while (const icu::UnicodeString* timezone = timezones->snext(status)) { + status = U_ZERO_ERROR; + icu::TimeZone::adoptDefault(icu::TimeZone::createTimeZone(*timezone)); + } + } + } else { + int32_t rawOffset; + int32_t dstOffset; + int64_t date = kStartTime; + for (int32_t i = 0; i < kCreateDefaultIteration; i++) { + date += 6000 * i; + std::unique_ptr tz(icu::TimeZone::createDefault()); + status = U_ZERO_ERROR; + tz->getOffset(date, TRUE, rawOffset, dstOffset, status); + status = U_ZERO_ERROR; + tz->getOffset(date, FALSE, rawOffset, dstOffset, status); + } + } +} typedef struct { const char* text; @@ -1301,5 +1340,4 @@ TimeZoneFormatTest::TestFormatTZDBNamesAllZoneCoverage(void) { } } } - #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/tzfmttst.h b/source/test/intltest/tzfmttst.h index 89ece5e..1335a08 100644 --- a/source/test/intltest/tzfmttst.h +++ b/source/test/intltest/tzfmttst.h @@ -29,8 +29,10 @@ class TimeZoneFormatTest : public IntlTest { void TestFormatTZDBNames(void); void TestFormatCustomZone(void); void TestFormatTZDBNamesAllZoneCoverage(void); + void TestAdoptDefaultThreadSafe(void); void RunTimeRoundTripTests(int32_t threadNumber); + void RunAdoptDefaultThreadSafeTests(int32_t threadNumber); }; #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/tzregts.cpp b/source/test/intltest/tzregts.cpp index c5f59d9..5268254 100644 --- a/source/test/intltest/tzregts.cpp +++ b/source/test/intltest/tzregts.cpp @@ -352,7 +352,7 @@ UBool TimeZoneRegressionTest::checkCalendar314(GregorianCalendar *testCal, TimeZone *testTZ) { UErrorCode status = U_ZERO_ERROR; - // GregorianCalendar testCal = (GregorianCalendar)aCal.clone(); + // GregorianCalendar testCal = aCal.clone(); int32_t tzOffset, tzRawOffset; float tzOffsetFloat,tzRawOffsetFloat; @@ -922,26 +922,26 @@ void TimeZoneRegressionTest::Test4176686() { // that does have a DST savings (which should be ignored). UErrorCode status = U_ZERO_ERROR; int32_t offset = 90 * 60000; // 1:30 - SimpleTimeZone* z1 = new SimpleTimeZone(offset, "_std_zone_"); - z1->setDSTSavings(45 * 60000, status); // 0:45 + SimpleTimeZone z1(offset, "_std_zone_"); + z1.setDSTSavings(45 * 60000, status); // 0:45 // Construct a zone that observes DST for the first 6 months. - SimpleTimeZone* z2 = new SimpleTimeZone(offset, "_dst_zone_"); - z2->setDSTSavings(45 * 60000, status); // 0:45 - z2->setStartRule(UCAL_JANUARY, 1, 0, status); - z2->setEndRule(UCAL_JULY, 1, 0, status); + SimpleTimeZone z2(offset, "_dst_zone_"); + z2.setDSTSavings(45 * 60000, status); // 0:45 + z2.setStartRule(UCAL_JANUARY, 1, 0, status); + z2.setEndRule(UCAL_JULY, 1, 0, status); // Also check DateFormat - DateFormat* fmt1 = new SimpleDateFormat(UnicodeString("z"), status); + SimpleDateFormat fmt1(UnicodeString(u"z"), status); if (U_FAILURE(status)) { dataerrln("Failure trying to construct: %s", u_errorName(status)); return; } - fmt1->setTimeZone(*z1); // Format uses standard zone - DateFormat* fmt2 = new SimpleDateFormat(UnicodeString("z"), status); + fmt1.setTimeZone(z1); // Format uses standard zone + SimpleDateFormat fmt2(UnicodeString(u"z"), status); if(!assertSuccess("trying to construct", status))return; - fmt2->setTimeZone(*z2); // Format uses DST zone - Calendar* tempcal = Calendar::createInstance(status); + fmt2.setTimeZone(z2); // Format uses DST zone + LocalPointer tempcal(Calendar::createInstance(status)); tempcal->clear(); tempcal->set(1970, UCAL_FEBRUARY, 1); UDate dst = tempcal->getTime(status); // Time in DST @@ -951,26 +951,26 @@ void TimeZoneRegressionTest::Test4176686() { // Description, Result, Expected Result UnicodeString a,b,c,d,e,f,g,h,i,j,k,l; UnicodeString DATA[] = { - "z1->getDisplayName(false, SHORT)/std zone", - z1->getDisplayName(FALSE, TimeZone::SHORT, a), "GMT+1:30", - "z1->getDisplayName(false, LONG)/std zone", - z1->getDisplayName(FALSE, TimeZone::LONG, b), "GMT+01:30", - "z1->getDisplayName(true, SHORT)/std zone", - z1->getDisplayName(TRUE, TimeZone::SHORT, c), "GMT+1:30", - "z1->getDisplayName(true, LONG)/std zone", - z1->getDisplayName(TRUE, TimeZone::LONG, d ), "GMT+01:30", - "z2->getDisplayName(false, SHORT)/dst zone", - z2->getDisplayName(FALSE, TimeZone::SHORT, e), "GMT+1:30", - "z2->getDisplayName(false, LONG)/dst zone", - z2->getDisplayName(FALSE, TimeZone::LONG, f ), "GMT+01:30", - "z2->getDisplayName(true, SHORT)/dst zone", - z2->getDisplayName(TRUE, TimeZone::SHORT, g), "GMT+2:15", - "z2->getDisplayName(true, LONG)/dst zone", - z2->getDisplayName(TRUE, TimeZone::LONG, h ), "GMT+02:15", - "DateFormat.format(std)/std zone", fmt1->format(std, i), "GMT+1:30", - "DateFormat.format(dst)/std zone", fmt1->format(dst, j), "GMT+1:30", - "DateFormat.format(std)/dst zone", fmt2->format(std, k), "GMT+1:30", - "DateFormat.format(dst)/dst zone", fmt2->format(dst, l), "GMT+2:15", + "z1.getDisplayName(false, SHORT)/std zone", + z1.getDisplayName(FALSE, TimeZone::SHORT, a), "GMT+1:30", + "z1.getDisplayName(false, LONG)/std zone", + z1.getDisplayName(FALSE, TimeZone::LONG, b), "GMT+01:30", + "z1.getDisplayName(true, SHORT)/std zone", + z1.getDisplayName(TRUE, TimeZone::SHORT, c), "GMT+1:30", + "z1.getDisplayName(true, LONG)/std zone", + z1.getDisplayName(TRUE, TimeZone::LONG, d ), "GMT+01:30", + "z2.getDisplayName(false, SHORT)/dst zone", + z2.getDisplayName(FALSE, TimeZone::SHORT, e), "GMT+1:30", + "z2.getDisplayName(false, LONG)/dst zone", + z2.getDisplayName(FALSE, TimeZone::LONG, f ), "GMT+01:30", + "z2.getDisplayName(true, SHORT)/dst zone", + z2.getDisplayName(TRUE, TimeZone::SHORT, g), "GMT+2:15", + "z2.getDisplayName(true, LONG)/dst zone", + z2.getDisplayName(TRUE, TimeZone::LONG, h ), "GMT+02:15", + "DateFormat.format(std)/std zone", fmt1.format(std, i), "GMT+1:30", + "DateFormat.format(dst)/std zone", fmt1.format(dst, j), "GMT+1:30", + "DateFormat.format(std)/dst zone", fmt2.format(std, k), "GMT+1:30", + "DateFormat.format(dst)/dst zone", fmt2.format(dst, l), "GMT+2:15", }; for (int32_t idx=0; idx " + DATA[idx+1] + ", exp " + DATA[idx+2]); } } - delete z1; - delete z2; - delete fmt1; - delete fmt2; - delete tempcal; } /** diff --git a/source/test/intltest/tzrulets.cpp b/source/test/intltest/tzrulets.cpp index cc699bb..dc64432 100644 --- a/source/test/intltest/tzrulets.cpp +++ b/source/test/intltest/tzrulets.cpp @@ -266,7 +266,7 @@ TimeZoneRuleTest::TestSimpleRuleBasedTimeZone(void) { if (rbtz1->hasSameRules(*rbtz3)) { errln("FAIL: rbtz1 and rbtz3 have different rules, but returned true."); } - RuleBasedTimeZone *rbtz1c = (RuleBasedTimeZone*)rbtz1->clone(); + RuleBasedTimeZone *rbtz1c = rbtz1->clone(); if (!rbtz1->hasSameRules(*rbtz1c)) { errln("FAIL: Cloned RuleBasedTimeZone must have the same rules with the original."); } @@ -548,7 +548,7 @@ TimeZoneRuleTest::TestHistoricalRuleBasedTimeZone(void) { if (ny->hasSameRules(*rbtz) || rbtz->hasSameRules(*ny)) { errln("FAIL: hasSameRules must return false"); } - RuleBasedTimeZone *rbtzc = (RuleBasedTimeZone*)rbtz->clone(); + RuleBasedTimeZone *rbtzc = rbtz->clone(); if (!rbtz->hasSameRules(*rbtzc) || !rbtz->hasEquivalentTransitions(*rbtzc, jan1_1950, jan1_2010, TRUE, status)) { errln("FAIL: hasSameRules/hasEquivalentTransitions must return true for cloned RBTZs"); } @@ -742,7 +742,7 @@ TimeZoneRuleTest::TestHasEquivalentTransitions(void) { } // Cloned TimeZone - BasicTimeZone *newyork2 = (BasicTimeZone*)newyork->clone(); + BasicTimeZone *newyork2 = newyork->clone(); if (!newyork->hasEquivalentTransitions(*newyork2, jan1_1971, jan1_2011, FALSE, status)) { errln("FAIL: Cloned TimeZone must have the same transitions"); } @@ -1695,7 +1695,7 @@ TimeZoneRuleTest::TestVTimeZoneCoverage(void) { // setRawOffset const int32_t RAW = -10*HOUR; - VTimeZone *tmpvtz = (VTimeZone*)vtz->clone(); + VTimeZone *tmpvtz = vtz->clone(); tmpvtz->setRawOffset(RAW); if (tmpvtz->getRawOffset() != RAW) { logln("setRawOffset is implemented in VTimeZone"); diff --git a/source/test/intltest/tztest.cpp b/source/test/intltest/tztest.cpp index 6b7746f..a3873bc 100644 --- a/source/test/intltest/tztest.cpp +++ b/source/test/intltest/tztest.cpp @@ -423,7 +423,7 @@ TimeZoneTest::TestGetAvailableIDs913() #endif UnicodeString str; - UnicodeString *buf = new UnicodeString("TimeZone::createEnumeration() = { "); + UnicodeString buf(u"TimeZone::createEnumeration() = { "); int32_t s_length; StringEnumeration* s = TimeZone::createEnumeration(); if (s == NULL) { @@ -432,11 +432,11 @@ TimeZoneTest::TestGetAvailableIDs913() } s_length = s->count(ec); for (i = 0; i < s_length;++i) { - if (i > 0) *buf += ", "; + if (i > 0) buf += ", "; if ((i & 1) == 0) { - *buf += *s->snext(ec); + buf += *s->snext(ec); } else { - *buf += UnicodeString(s->next(NULL, ec), ""); + buf += UnicodeString(s->next(NULL, ec), ""); } if((i % 5) == 4) { @@ -450,8 +450,8 @@ TimeZoneTest::TestGetAvailableIDs913() } } } - *buf += " };"; - logln(*buf); + buf += " };"; + logln(buf); /* Confirm that the following zones can be retrieved: The first * zone, the last zone, and one in-between. This tests the binary @@ -478,31 +478,31 @@ TimeZoneTest::TestGetAvailableIDs913() } delete s; - buf->truncate(0); - *buf += "TimeZone::createEnumeration(GMT+01:00) = { "; + buf.truncate(0); + buf += "TimeZone::createEnumeration(GMT+01:00) = { "; s = TimeZone::createEnumeration(1 * U_MILLIS_PER_HOUR); s_length = s->count(ec); for (i = 0; i < s_length;++i) { - if (i > 0) *buf += ", "; - *buf += *s->snext(ec); + if (i > 0) buf += ", "; + buf += *s->snext(ec); } delete s; - *buf += " };"; - logln(*buf); + buf += " };"; + logln(buf); - buf->truncate(0); - *buf += "TimeZone::createEnumeration(US) = { "; + buf.truncate(0); + buf += "TimeZone::createEnumeration(US) = { "; s = TimeZone::createEnumeration("US"); s_length = s->count(ec); for (i = 0; i < s_length;++i) { - if (i > 0) *buf += ", "; - *buf += *s->snext(ec); + if (i > 0) buf += ", "; + buf += *s->snext(ec); } - *buf += " };"; - logln(*buf); + buf += " };"; + logln(buf); TimeZone *tz = TimeZone::createTimeZone("PST"); if (tz != 0) logln("getTimeZone(PST) = " + tz->getID(str)); @@ -522,7 +522,6 @@ TimeZoneTest::TestGetAvailableIDs913() errln("FAIL: getTimeZone(NON_EXISTENT) = " + temp); delete tz; - delete buf; delete s; } diff --git a/source/test/intltest/ucharstrietest.cpp b/source/test/intltest/ucharstrietest.cpp index 316880e..394c48b 100644 --- a/source/test/intltest/ucharstrietest.cpp +++ b/source/test/intltest/ucharstrietest.cpp @@ -71,6 +71,7 @@ public: void checkFirst(UCharsTrie &trie, const StringAndValue data[], int32_t dataLength); void checkNext(UCharsTrie &trie, const StringAndValue data[], int32_t dataLength); void checkNextWithState(UCharsTrie &trie, const StringAndValue data[], int32_t dataLength); + void checkNextWithState64(UCharsTrie &trie, const StringAndValue data[], int32_t dataLength); void checkNextString(UCharsTrie &trie, const StringAndValue data[], int32_t dataLength); void checkIterator(UCharsTrie &trie, const StringAndValue data[], int32_t dataLength); void checkIterator(UCharsTrie::Iterator &iter, const StringAndValue data[], int32_t dataLength); @@ -762,6 +763,7 @@ void UCharsTrieTest::checkData(const StringAndValue data[], int32_t dataLength, checkFirst(*trie, data, dataLength); checkNext(*trie, data, dataLength); checkNextWithState(*trie, data, dataLength); + checkNextWithState64(*trie, data, dataLength); checkNextString(*trie, data, dataLength); checkIterator(*trie, data, dataLength); } @@ -987,6 +989,61 @@ void UCharsTrieTest::checkNextWithState(UCharsTrie &trie, } } +void UCharsTrieTest::checkNextWithState64(UCharsTrie &trie, + const StringAndValue data[], int32_t dataLength) { + assertTrue("trie(initial state).getState64()!=0", trie.getState64() != 0); + for(int32_t i=0; igetDynamicClassID(): NULL); \ if(U_FAILURE(status)) { \ dataerrln(UnicodeString(#c " - " #f " - got err status ") + UnicodeString(u_errorName(status))); \ status = U_ZERO_ERROR; \ } \ -} +} UPRV_BLOCK_MACRO_END #define MAX_CLASS_ID 200 @@ -509,19 +509,15 @@ void UObjectTest::testIDs() void UObjectTest::testUMemory() { // additional tests for code coverage #if U_OVERRIDE_CXX_ALLOCATION && U_HAVE_PLACEMENT_NEW - union { - UAlignedMemory align_; - char bytes_[sizeof(UnicodeString)]; - } stackMemory; - char *bytes = stackMemory.bytes_; + alignas(UnicodeString) char bytes[sizeof(UnicodeString)]; UnicodeString *p; enum { len=20 }; - p=new(bytes) UnicodeString(len, (UChar32)0x20ac, len); + p=new(bytes) UnicodeString(len, (UChar32)U'€', len); if((void *)p!=(void *)bytes) { errln("placement new did not place the object at the expected address"); } - if(p->length()!=len || p->charAt(0)!=0x20ac || p->charAt(len-1)!=0x20ac) { + if(p->length()!=len || p->charAt(0)!=u'€' || p->charAt(len-1)!=u'€') { errln("constructor used with placement new did not work right"); } diff --git a/source/test/intltest/usettest.cpp b/source/test/intltest/usettest.cpp index eafddd1..b8dbae7 100644 --- a/source/test/intltest/usettest.cpp +++ b/source/test/intltest/usettest.cpp @@ -29,12 +29,18 @@ #include "cmemory.h" #include "hash.h" -#define TEST_ASSERT_SUCCESS(status) {if (U_FAILURE(status)) { \ - dataerrln("fail in file \"%s\", line %d: \"%s\"", __FILE__, __LINE__, \ - u_errorName(status));}} - -#define TEST_ASSERT(expr) {if (!(expr)) { \ - dataerrln("fail in file \"%s\", line %d", __FILE__, __LINE__); }} +#define TEST_ASSERT_SUCCESS(status) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(status)) { \ + dataerrln("fail in file \"%s\", line %d: \"%s\"", __FILE__, __LINE__, \ + u_errorName(status)); \ + } \ +} UPRV_BLOCK_MACRO_END + +#define TEST_ASSERT(expr) UPRV_BLOCK_MACRO_BEGIN { \ + if (!(expr)) { \ + dataerrln("fail in file \"%s\", line %d", __FILE__, __LINE__); \ + } \ +} UPRV_BLOCK_MACRO_END UnicodeString operator+(const UnicodeString& left, const UnicodeSet& set) { UnicodeString pat; @@ -358,8 +364,8 @@ UnicodeSetTest::TestCloneEqualHash(void) { } logln("Testing clone()"); - UnicodeSet *set1clone=(UnicodeSet*)set1->clone(); - UnicodeSet *set2clone=(UnicodeSet*)set2->clone(); + UnicodeSet *set1clone=set1->clone(); + UnicodeSet *set2clone=set2->clone(); if(*set1clone != *set1 || *set1clone != *set1copy || *set1clone != set1equal || *set2clone != *set2 || *set2clone == *set1copy || *set2clone != set2equal || *set2clone == *set1 || *set2clone == set1equal || *set2clone == *set1clone){ @@ -2249,7 +2255,7 @@ void UnicodeSetTest::TestFreezable() { errln("FAIL: copying a frozen set results in a thawed one"); } - UnicodeSet *cloned=(UnicodeSet *)frozen.clone(); + UnicodeSet *cloned=frozen.clone(); if(!cloned->isFrozen() || *cloned!=frozen || cloned->containsSome(0xd802, 0xd805)) { errln("FAIL: clone() failed"); } @@ -2259,7 +2265,7 @@ void UnicodeSetTest::TestFreezable() { } delete cloned; - UnicodeSet *thawed=(UnicodeSet *)frozen.cloneAsThawed(); + UnicodeSet *thawed=frozen.cloneAsThawed(); if(thawed->isFrozen() || *thawed!=frozen || thawed->containsSome(0xd802, 0xd805)) { errln("FAIL: cloneAsThawed() failed"); } @@ -3686,11 +3692,11 @@ void UnicodeSetTest::TestSpan() { // Intermediate set: Test cloning of a frozen set. UnicodeSet *fast=new UnicodeSet(*sets[SLOW]); fast->freeze(); - sets[FAST]=(UnicodeSet *)fast->clone(); + sets[FAST]=fast->clone(); delete fast; UnicodeSet *fastNot=new UnicodeSet(*sets[SLOW_NOT]); fastNot->freeze(); - sets[FAST_NOT]=(UnicodeSet *)fastNot->clone(); + sets[FAST_NOT]=fastNot->clone(); delete fastNot; for(j=0; jclone(); + UnicodeString *c=test->clone(); workingBuffer[1] = 0x109; if(test->charAt(1) != 0x109) { diff --git a/source/test/intltest/utxttest.cpp b/source/test/intltest/utxttest.cpp index 2a779b2..09e7b60 100644 --- a/source/test/intltest/utxttest.cpp +++ b/source/test/intltest/utxttest.cpp @@ -29,17 +29,21 @@ static int gTestNum = 0; // Forward decl UText *openFragmentedUnicodeString(UText *ut, UnicodeString *s, UErrorCode *status); -#define TEST_ASSERT(x) \ -{ if ((x)==FALSE) {errln("Test #%d failure in file %s at line %d\n", gTestNum, __FILE__, __LINE__);\ - gFailed = TRUE;\ - }} - - -#define TEST_SUCCESS(status) \ -{ if (U_FAILURE(status)) {errln("Test #%d failure in file %s at line %d. Error = \"%s\"\n", \ - gTestNum, __FILE__, __LINE__, u_errorName(status)); \ - gFailed = TRUE;\ - }} +#define TEST_ASSERT(x) UPRV_BLOCK_MACRO_BEGIN { \ + if ((x)==FALSE) { \ + errln("Test #%d failure in file %s at line %d\n", gTestNum, __FILE__, __LINE__); \ + gFailed = TRUE; \ + } \ +} UPRV_BLOCK_MACRO_END + + +#define TEST_SUCCESS(status) UPRV_BLOCK_MACRO_BEGIN { \ + if (U_FAILURE(status)) { \ + errln("Test #%d failure in file %s at line %d. Error = \"%s\"\n", \ + gTestNum, __FILE__, __LINE__, u_errorName(status)); \ + gFailed = TRUE; \ + } \ +} UPRV_BLOCK_MACRO_END UTextTest::UTextTest() { } @@ -266,7 +270,7 @@ void UTextTest::TestString(const UnicodeString &s) { i = 0; // native utf-8 index for (j=0; j <_ProjectFileVersion>10.0.30319.1 - .\x86\Debug\ - .\x86\Debug\ - - .\x86\Release\ - .\x86\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - - .\x64\Release\ - .\x64\Release\ - false + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - + + + $(OutDir)\iotest.tlb + ..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories) U_ATTRIBUTE_DEPRECATED=;%(PreprocessorDefinitions) true Level3 - - - - - .\x86\Debug/iotest.tlb - - - - - MultiThreadedDebugDLL - true - .\x86\Debug/iotest.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ - true - EditAndContinue - Default - - - .\x86\Debug/iotest.exe - icuucd.lib;icuind.lib;icuiod.lib;icutestd.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\x86\Debug/iotest.pdb - Console - false - - - - - - - .\x86\Release/iotest.tlb - - - MultiThreadedDLL - .\x86\Release/iotest.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ Default + $(OutDir)\iotest.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)\iotest.pdb - .\x86\Release/iotest.exe - icuuc.lib;icuin.lib;icuio.lib;icutest.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Release/iotest.pdb Console - false - - + $(OutDir)\iotest.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - .\x64\Debug/iotest.tlb - - - + + - MultiThreadedDebugDLL - .\x64\Debug/iotest.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ true - ProgramDatabase - Default + MultiThreadedDebugDLL - .\x64\Debug/iotest.exe icuucd.lib;icuind.lib;icuiod.lib;icutestd.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Debug/iotest.pdb - Console - - - .\x64\Release/iotest.tlb - + + MultiThreadedDLL - .\x64\Release/iotest.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Default + true - .\x64\Release/iotest.exe icuuc.lib;icuin.lib;icuio.lib;icutest.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Release/iotest.pdb - Console diff --git a/source/test/iotest/strtst.c b/source/test/iotest/strtst.c index ce38aff..ee67b4c 100644 --- a/source/test/iotest/strtst.c +++ b/source/test/iotest/strtst.c @@ -313,7 +313,7 @@ static void TestLocalizedString(void) { } #if !UCONFIG_NO_FORMATTING -#define Test_u_snprintf(limit, format, value, expectedSize, expectedStr) \ +#define Test_u_snprintf(limit, format, value, expectedSize, expectedStr) UPRV_BLOCK_MACRO_BEGIN { \ u_uastrncpy(testStr, "xxxxxxxxxxxxxx", UPRV_LENGTHOF(testStr));\ size = u_snprintf(testStr, limit, format, value);\ u_austrncpy(cTestResult, testStr, UPRV_LENGTHOF(cTestResult));\ @@ -324,6 +324,7 @@ static void TestLocalizedString(void) { else {\ log_verbose("Got: %s\n", cTestResult);\ }\ +} UPRV_BLOCK_MACRO_END #endif @@ -358,7 +359,7 @@ static void TestSnprintf(void) { #endif } -#define TestSPrintFormat(uFormat, uValue, cFormat, cValue) \ +#define TestSPrintFormat(uFormat, uValue, cFormat, cValue) UPRV_BLOCK_MACRO_BEGIN { \ /* Reinitialize the buffer to verify null termination works. */\ u_memset(uBuffer, 0x2a, UPRV_LENGTHOF(uBuffer));\ memset(buffer, '*', UPRV_LENGTHOF(buffer));\ @@ -375,6 +376,7 @@ static void TestSnprintf(void) { if (buffer[uNumPrinted+1] != '*') {\ log_err("%" uFormat " too much stored\n");\ }\ +} UPRV_BLOCK_MACRO_END static void TestSprintfFormat(void) { #if !UCONFIG_NO_FORMATTING @@ -687,6 +689,7 @@ static void TestSScanset(void) { static void TestBadSScanfFormat(const char *format, const UChar *uValue, const char *cValue) { #if !UCONFIG_NO_FORMATTING + (void)cValue; // suppress compiler warnings about unused variable UChar uBuffer[256]; int32_t uNumScanned; diff --git a/source/test/letest/gendata.vcxproj b/source/test/letest/gendata.vcxproj index 0e564b9..5a0b943 100644 --- a/source/test/letest/gendata.vcxproj +++ b/source/test/letest/gendata.vcxproj @@ -114,7 +114,6 @@ true .\x86\Debug/gendata.pdb Console - false @@ -153,7 +152,6 @@ true .\x64\Debug/gendata.pdb Console - false MachineX64 @@ -191,7 +189,6 @@ true .\x86\Release/gendata.pdb Console - false @@ -229,7 +226,6 @@ true .\x64\Release/gendata.pdb Console - false MachineX64 diff --git a/source/test/letest/letest.cpp b/source/test/letest/letest.cpp index bb94a09..35c326f 100644 --- a/source/test/letest/letest.cpp +++ b/source/test/letest/letest.cpp @@ -244,7 +244,7 @@ static void U_CALLCONV AccessTest(void) SimpleFontInstance *font = new SimpleFontInstance(12, status); LayoutEngine *engine = LayoutEngine::layoutEngineFactory(font, arabScriptCode, -1, status); le_int32 glyphCount; - LEGlyphID glyphs[6], extraBitGlyphs[6];; + LEGlyphID glyphs[6], extraBitGlyphs[6]; le_int32 biasedIndices[6], indices[6], glyph; float positions[6 * 2 + 2]; LEUnicode chars[] = { diff --git a/source/test/letest/letest.vcxproj b/source/test/letest/letest.vcxproj index 0a83aac..e2a5499 100644 --- a/source/test/letest/letest.vcxproj +++ b/source/test/letest/letest.vcxproj @@ -114,7 +114,6 @@ .\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/letest.pdb Console - false @@ -154,7 +153,6 @@ true .\x86\Debug/letest.pdb Console - false diff --git a/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj b/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj index 3eacbcf..c03f396 100644 --- a/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj +++ b/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj @@ -95,7 +95,6 @@ - false MachineX86 diff --git a/source/test/perf/charperf/charperf.vcxproj b/source/test/perf/charperf/charperf.vcxproj index 42fce51..1128037 100644 --- a/source/test/perf/charperf/charperf.vcxproj +++ b/source/test/perf/charperf/charperf.vcxproj @@ -115,7 +115,6 @@ true .\x86\Debug/charperf.pdb Console - false @@ -157,7 +156,6 @@ true .\x64\Debug/charperf.pdb Console - false MachineX64 @@ -198,7 +196,6 @@ ..\..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/charperf.pdb Console - false MachineX86 @@ -240,7 +237,6 @@ ..\..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/charperf.pdb Console - false MachineX64 diff --git a/source/test/perf/collperf/collperf.vcxproj b/source/test/perf/collperf/collperf.vcxproj index 062b24c..807894d 100644 --- a/source/test/perf/collperf/collperf.vcxproj +++ b/source/test/perf/collperf/collperf.vcxproj @@ -113,7 +113,6 @@ true .\x86\Debug/collperf.pdb Console - false @@ -153,7 +152,6 @@ true .\x64\Debug/collperf.pdb Console - false MachineX64 @@ -192,7 +190,6 @@ ..\..\..\..\lib\;%(AdditionalLibraryDirectories) .\x86\Release/collperf.pdb Console - false MachineX86 @@ -232,7 +229,6 @@ ..\..\..\..\lib64\;%(AdditionalLibraryDirectories) .\x64\Release/collperf.pdb Console - false MachineX64 diff --git a/source/test/perf/collperf2/collperf2.vcxproj b/source/test/perf/collperf2/collperf2.vcxproj index 3cc4bfc..cb6cb11 100644 --- a/source/test/perf/collperf2/collperf2.vcxproj +++ b/source/test/perf/collperf2/collperf2.vcxproj @@ -113,7 +113,6 @@ true .\x86\Debug/collperf2.pdb Console - false @@ -153,7 +152,6 @@ true .\x64\Debug/collperf2.pdb Console - false MachineX64 @@ -192,7 +190,6 @@ ..\..\..\..\lib\;%(AdditionalLibraryDirectories) .\x86\Release/collperf2.pdb Console - false MachineX86 @@ -232,7 +229,6 @@ ..\..\..\..\lib64\;%(AdditionalLibraryDirectories) .\x64\Release/collperf2.pdb Console - false MachineX64 diff --git a/source/test/perf/convperf/convperf.vcxproj b/source/test/perf/convperf/convperf.vcxproj index 1cc62da..41bdd92 100644 --- a/source/test/perf/convperf/convperf.vcxproj +++ b/source/test/perf/convperf/convperf.vcxproj @@ -114,7 +114,6 @@ ..\..\..\..\lib\;%(AdditionalLibraryDirectories) .\x86\Release/convperf.pdb Console - false MachineX86 @@ -156,7 +155,6 @@ ..\..\..\..\lib64\;%(AdditionalLibraryDirectories) .\x64\Release/convperf.pdb Console - false MachineX64 @@ -198,7 +196,6 @@ true .\x86\Debug/convperf.pdb Console - false @@ -240,7 +237,6 @@ true .\x64\Debug/convperf.pdb Console - false MachineX64 diff --git a/source/test/perf/normperf/dtfmtrtperf.vcxproj b/source/test/perf/normperf/dtfmtrtperf.vcxproj index d97e050..689ce06 100644 --- a/source/test/perf/normperf/dtfmtrtperf.vcxproj +++ b/source/test/perf/normperf/dtfmtrtperf.vcxproj @@ -118,7 +118,6 @@ true .\x86\Debug/dtfmtrtperf.pdb Console - false @@ -158,7 +157,6 @@ ..\..\..\..\lib\;%(AdditionalLibraryDirectories) .\x86\Release/normperf.pdb Console - false MachineX86 @@ -201,7 +199,6 @@ true .\x64\Debug/normperf.pdb Console - false MachineX64 @@ -243,7 +240,6 @@ ..\..\..\..\lib64\;%(AdditionalLibraryDirectories) .\x64\Release/normperf.pdb Console - false MachineX64 diff --git a/source/test/perf/normperf/normperf.vcxproj b/source/test/perf/normperf/normperf.vcxproj index 9e78807..62c9aad 100644 --- a/source/test/perf/normperf/normperf.vcxproj +++ b/source/test/perf/normperf/normperf.vcxproj @@ -115,7 +115,6 @@ true .\x86\Debug/normperf.pdb Console - false @@ -157,7 +156,6 @@ true .\x64\Debug/normperf.pdb Console - false MachineX64 @@ -198,7 +196,6 @@ ..\..\..\..\lib\;%(AdditionalLibraryDirectories) .\x86\Release/normperf.pdb Console - false MachineX86 @@ -240,7 +237,6 @@ ..\..\..\..\lib64\;%(AdditionalLibraryDirectories) .\x64\Release/normperf.pdb Console - false MachineX64 diff --git a/source/test/perf/strsrchperf/strsrchperf.vcxproj b/source/test/perf/strsrchperf/strsrchperf.vcxproj index e317c8d..89f2ccd 100644 --- a/source/test/perf/strsrchperf/strsrchperf.vcxproj +++ b/source/test/perf/strsrchperf/strsrchperf.vcxproj @@ -115,7 +115,6 @@ true .\x86\Debug/strsrchperf.pdb Console - false @@ -157,7 +156,6 @@ true .\x64\Debug/strsrchperf.pdb Console - false MachineX64 @@ -198,7 +196,6 @@ ..\..\..\..\lib\;%(AdditionalLibraryDirectories) .\x86\Release/strsrchperf.pdb Console - false MachineX86 @@ -240,7 +237,6 @@ ..\..\..\..\lib64\;%(AdditionalLibraryDirectories) .\x64\Release/strsrchperf.pdb Console - false MachineX64 diff --git a/source/test/perf/ubrkperf/ubrkperf.vcxproj b/source/test/perf/ubrkperf/ubrkperf.vcxproj index a354c35..f38d9b4 100644 --- a/source/test/perf/ubrkperf/ubrkperf.vcxproj +++ b/source/test/perf/ubrkperf/ubrkperf.vcxproj @@ -113,7 +113,6 @@ true .\x86\Debug/ubrkperf.pdb Console - false @@ -151,7 +150,6 @@ ..\..\..\..\lib\;%(AdditionalLibraryDirectories) .\x86\Release/ubrkperf24.pdb Console - false MachineX86 @@ -192,7 +190,6 @@ true .\x64\Debug/ubrkperf.pdb Console - false MachineX64 @@ -232,7 +229,6 @@ ..\..\..\..\lib64\;%(AdditionalLibraryDirectories) .\x64\Release/ubrkperf24.pdb Console - false MachineX64 diff --git a/source/test/perf/unisetperf/unisetperf.vcxproj b/source/test/perf/unisetperf/unisetperf.vcxproj index d72b556..7e68901 100644 --- a/source/test/perf/unisetperf/unisetperf.vcxproj +++ b/source/test/perf/unisetperf/unisetperf.vcxproj @@ -112,7 +112,6 @@ true .\x86\Debug/unisetperf.pdb Console - false MachineX86 @@ -152,7 +151,6 @@ true .\x64\Debug/unisetperf.pdb Console - false MachineX64 @@ -191,7 +189,6 @@ ..\..\..\..\lib\;%(AdditionalLibraryDirectories) .\x86\Release/unisetperf.pdb Console - false MachineX86 @@ -231,7 +228,6 @@ ..\..\..\..\lib64\;%(AdditionalLibraryDirectories) .\x64\Release/unisetperf.pdb Console - false MachineX64 diff --git a/source/test/perf/usetperf/usetperf.vcxproj b/source/test/perf/usetperf/usetperf.vcxproj index cdc254c..801b8a8 100644 --- a/source/test/perf/usetperf/usetperf.vcxproj +++ b/source/test/perf/usetperf/usetperf.vcxproj @@ -112,7 +112,6 @@ ..\..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/usetperf.pdb Console - false MachineX86 @@ -152,7 +151,6 @@ ..\..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/usetperf.pdb Console - false MachineX64 @@ -191,7 +189,6 @@ true .\x86\Debug/usetperf.pdb Console - false @@ -230,7 +227,6 @@ true .\x64\Debug/usetperf.pdb Console - false MachineX64 diff --git a/source/test/perf/ustrperf/stringperf.vcxproj b/source/test/perf/ustrperf/stringperf.vcxproj index 7e791e8..a6b4e5c 100644 --- a/source/test/perf/ustrperf/stringperf.vcxproj +++ b/source/test/perf/ustrperf/stringperf.vcxproj @@ -114,7 +114,6 @@ ..\..\..\..\lib\;%(AdditionalLibraryDirectories) .\x86\Release/stringperf.pdb Console - false MachineX86 @@ -156,7 +155,6 @@ ..\..\..\..\lib64\;%(AdditionalLibraryDirectories) .\x64\Release/stringperf.pdb Console - false MachineX64 @@ -198,7 +196,6 @@ true .\x86\Debug/stringperf.pdb Console - false @@ -240,7 +237,6 @@ true .\x64\Debug/stringperf.pdb Console - false MachineX64 diff --git a/source/test/perf/utfperf/utfperf.vcxproj b/source/test/perf/utfperf/utfperf.vcxproj index 9815de9..0d0eef7 100644 --- a/source/test/perf/utfperf/utfperf.vcxproj +++ b/source/test/perf/utfperf/utfperf.vcxproj @@ -112,7 +112,6 @@ true .\x86\Debug/utfperf.pdb Console - false @@ -151,7 +150,6 @@ true .\x64\Debug/utfperf.pdb Console - false MachineX64 @@ -190,7 +188,6 @@ ..\..\..\..\lib\;%(AdditionalLibraryDirectories) .\x86\Release/utfperf.pdb Console - false MachineX86 @@ -230,7 +227,6 @@ ..\..\..\..\lib64\;%(AdditionalLibraryDirectories) .\x64\Release/utfperf.pdb Console - false MachineX64 diff --git a/source/test/perf/utrie2perf/utrie2perf.vcxproj b/source/test/perf/utrie2perf/utrie2perf.vcxproj index b7bffee..bca5958 100644 --- a/source/test/perf/utrie2perf/utrie2perf.vcxproj +++ b/source/test/perf/utrie2perf/utrie2perf.vcxproj @@ -112,7 +112,6 @@ true .\x86\Debug/utrie2perf.pdb Console - false @@ -151,7 +150,6 @@ true .\x64\Debug/utrie2perf.pdb Console - false MachineX64 @@ -190,7 +188,6 @@ ..\..\..\..\lib\;%(AdditionalLibraryDirectories) .\x86\Release/utrie2perf.pdb Console - false MachineX86 @@ -230,7 +227,6 @@ ..\..\..\..\lib64\;%(AdditionalLibraryDirectories) .\x64\Release/utrie2perf.pdb Console - false MachineX64 diff --git a/source/test/testdata/BUILDRULES.py b/source/test/testdata/BUILDRULES.py index d599e33..2a5eed8 100644 --- a/source/test/testdata/BUILDRULES.py +++ b/source/test/testdata/BUILDRULES.py @@ -1,10 +1,8 @@ # Copyright (C) 2018 and later: Unicode, Inc. and others. # License & terms of use: http://www.unicode.org/copyright.html -from distutils.sysconfig import parse_makefile - -from buildtool import * -from buildtool.request_types import * +from icutools.databuilder import * +from icutools.databuilder.request_types import * def generate(config, glob, common_vars): @@ -28,24 +26,24 @@ def generate(config, glob, common_vars): def generate_rb(config, glob, common_vars): - mk_vars = parse_makefile("{GLOB_DIR}/tstfiles.mk".format(**common_vars)) - basenames = [v[:-4] for v in mk_vars["TEST_RES_SOURCE"].split()] - basenames += [ + basenames = [ + "calendar", "casing", + "conversion", + "format", + "icuio", + "idna_rules", "mc", "root", - "sh", "sh_YU", - "te", - "te_IN", + "sh", + "structLocale", "te_IN_REVISED", - "testtypes", + "te_IN", + "te", "testaliases", "testempty", - "structLocale", - "idna_rules", - "conversion", - "icuio", + "testtypes", # "metaZones", # "timezoneTypes", # "windowsZones", diff --git a/source/test/testdata/GraphemeBreakTest.txt b/source/test/testdata/GraphemeBreakTest.txt index fb4fec9..6f8ca3a 100644 --- a/source/test/testdata/GraphemeBreakTest.txt +++ b/source/test/testdata/GraphemeBreakTest.txt @@ -1,5 +1,5 @@ -# GraphemeBreakTest-12.1.0.txt -# Date: 2019-03-10, 10:53:12 GMT +# GraphemeBreakTest-12.0.0.txt +# Date: 2019-02-21, 07:57:26 GMT # © 2019 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see http://www.unicode.org/terms_of_use.html @@ -48,10 +48,14 @@ ÷ 0020 × 0308 ÷ AC00 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0020 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0020 × 0308 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 0020 ÷ 0915 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 0020 × 0308 ÷ 0915 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ 0020 ÷ 231A ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0020 × 0308 ÷ 231A ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0020 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0020 × 0308 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 0020 × 094D ÷ # ÷ [0.2] SPACE (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 0020 × 0308 × 094D ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ 0020 × 200D ÷ # ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0020 × 0308 × 200D ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0020 ÷ 0378 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] (Other) ÷ [0.3] @@ -82,10 +86,14 @@ ÷ 000D ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 000D ÷ AC01 ÷ # ÷ [0.2] (CR) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 000D ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 000D ÷ 0915 ÷ # ÷ [0.2] (CR) ÷ [4.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 000D ÷ 0308 ÷ 0915 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ 000D ÷ 231A ÷ # ÷ [0.2] (CR) ÷ [4.0] WATCH (ExtPict) ÷ [0.3] ÷ 000D ÷ 0308 ÷ 231A ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 000D ÷ 0300 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 000D ÷ 0308 × 0300 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 000D ÷ 094D ÷ # ÷ [0.2] (CR) ÷ [4.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 000D ÷ 0308 × 094D ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ 000D ÷ 200D ÷ # ÷ [0.2] (CR) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 000D ÷ 0308 × 200D ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 000D ÷ 0378 ÷ # ÷ [0.2] (CR) ÷ [4.0] (Other) ÷ [0.3] @@ -116,10 +124,14 @@ ÷ 000A ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 000A ÷ AC01 ÷ # ÷ [0.2] (LF) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 000A ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 000A ÷ 0915 ÷ # ÷ [0.2] (LF) ÷ [4.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 000A ÷ 0308 ÷ 0915 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ 000A ÷ 231A ÷ # ÷ [0.2] (LF) ÷ [4.0] WATCH (ExtPict) ÷ [0.3] ÷ 000A ÷ 0308 ÷ 231A ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 000A ÷ 0300 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 000A ÷ 0308 × 0300 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 000A ÷ 094D ÷ # ÷ [0.2] (LF) ÷ [4.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 000A ÷ 0308 × 094D ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ 000A ÷ 200D ÷ # ÷ [0.2] (LF) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 000A ÷ 0308 × 200D ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 000A ÷ 0378 ÷ # ÷ [0.2] (LF) ÷ [4.0] (Other) ÷ [0.3] @@ -150,10 +162,14 @@ ÷ 0001 ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0001 ÷ AC01 ÷ # ÷ [0.2] (Control) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0001 ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 0001 ÷ 0915 ÷ # ÷ [0.2] (Control) ÷ [4.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 0001 ÷ 0308 ÷ 0915 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ 0001 ÷ 231A ÷ # ÷ [0.2] (Control) ÷ [4.0] WATCH (ExtPict) ÷ [0.3] ÷ 0001 ÷ 0308 ÷ 231A ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0001 ÷ 0300 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0001 ÷ 0308 × 0300 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 0001 ÷ 094D ÷ # ÷ [0.2] (Control) ÷ [4.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 0001 ÷ 0308 × 094D ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ 0001 ÷ 200D ÷ # ÷ [0.2] (Control) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0001 ÷ 0308 × 200D ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0001 ÷ 0378 ÷ # ÷ [0.2] (Control) ÷ [4.0] (Other) ÷ [0.3] @@ -184,10 +200,14 @@ ÷ 034F × 0308 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 034F ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 034F × 0308 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 034F ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 034F × 0308 ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ 034F ÷ 231A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 034F × 0308 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 034F × 0300 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 034F × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 034F × 094D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 034F × 0308 × 094D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ 034F × 200D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 034F × 0308 × 200D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 034F ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] (Other) ÷ [0.3] @@ -218,10 +238,14 @@ ÷ 1F1E6 × 0308 ÷ AC00 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 1F1E6 ÷ AC01 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ AC01 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 1F1E6 ÷ 0915 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 1F1E6 × 0308 ÷ 0915 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ 1F1E6 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 1F1E6 × 0308 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 1F1E6 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 1F1E6 × 0308 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 1F1E6 × 094D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 1F1E6 × 0308 × 094D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ 1F1E6 × 200D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 1F1E6 × 0308 × 200D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 1F1E6 ÷ 0378 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] (Other) ÷ [0.3] @@ -252,10 +276,14 @@ ÷ 0600 × 0308 ÷ AC00 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0600 × AC01 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0600 × 0308 ÷ AC01 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 0600 × 0915 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 0600 × 0308 ÷ 0915 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ 0600 × 231A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] WATCH (ExtPict) ÷ [0.3] ÷ 0600 × 0308 ÷ 231A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0600 × 0300 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0600 × 0308 × 0300 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 0600 × 094D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 0600 × 0308 × 094D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ 0600 × 200D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0600 × 0308 × 200D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0600 × 0378 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] (Other) ÷ [0.3] @@ -286,10 +314,14 @@ ÷ 0903 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0903 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0903 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 0903 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 0903 × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ 0903 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0903 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0903 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0903 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 0903 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 0903 × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ 0903 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0903 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0903 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] (Other) ÷ [0.3] @@ -320,10 +352,14 @@ ÷ 1100 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 1100 × AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 1100 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 1100 ÷ 0915 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 1100 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ 1100 ÷ 231A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 1100 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 1100 × 0300 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 1100 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 1100 × 094D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 1100 × 0308 × 094D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ 1100 × 200D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 1100 × 0308 × 200D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 1100 ÷ 0378 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] (Other) ÷ [0.3] @@ -354,10 +390,14 @@ ÷ 1160 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 1160 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 1160 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 1160 ÷ 0915 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 1160 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ 1160 ÷ 231A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 1160 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 1160 × 0300 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 1160 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 1160 × 094D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 1160 × 0308 × 094D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ 1160 × 200D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 1160 × 0308 × 200D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 1160 ÷ 0378 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] (Other) ÷ [0.3] @@ -388,10 +428,14 @@ ÷ 11A8 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 11A8 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 11A8 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 11A8 ÷ 0915 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 11A8 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ 11A8 ÷ 231A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 11A8 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 11A8 × 0300 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 11A8 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 11A8 × 094D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 11A8 × 0308 × 094D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ 11A8 × 200D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 11A8 × 0308 × 200D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 11A8 ÷ 0378 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] (Other) ÷ [0.3] @@ -422,10 +466,14 @@ ÷ AC00 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ AC00 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ AC00 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ AC00 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ AC00 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ AC00 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ AC00 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ AC00 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ AC00 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ AC00 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ AC00 × 0308 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ AC00 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ AC00 × 0308 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ AC00 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] (Other) ÷ [0.3] @@ -456,14 +504,56 @@ ÷ AC01 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ AC01 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ AC01 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ AC01 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ AC01 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ AC01 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ AC01 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ AC01 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ AC01 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ AC01 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ AC01 × 0308 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ AC01 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ AC01 × 0308 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ AC01 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] (Other) ÷ [0.3] ÷ AC01 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] +÷ 0915 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] SPACE (Other) ÷ [0.3] +÷ 0915 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] +÷ 0915 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [5.0] (CR) ÷ [0.3] +÷ 0915 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] +÷ 0915 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [5.0] (LF) ÷ [0.3] +÷ 0915 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] +÷ 0915 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [5.0] (Control) ÷ [0.3] +÷ 0915 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] +÷ 0915 × 034F ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] +÷ 0915 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] +÷ 0915 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] +÷ 0915 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] +÷ 0915 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] +÷ 0915 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] +÷ 0915 × 0903 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] +÷ 0915 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] +÷ 0915 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] +÷ 0915 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] +÷ 0915 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] +÷ 0915 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] +÷ 0915 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] +÷ 0915 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] +÷ 0915 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] +÷ 0915 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] +÷ 0915 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 0915 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 0915 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 0915 × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 0915 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] +÷ 0915 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] +÷ 0915 × 0300 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 0915 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 0915 × 094D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 0915 × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 0915 × 200D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] +÷ 0915 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] +÷ 0915 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] (Other) ÷ [0.3] +÷ 0915 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 231A ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 231A × 0308 ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 231A ÷ 000D ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] (CR) ÷ [0.3] @@ -490,10 +580,14 @@ ÷ 231A × 0308 ÷ AC00 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 231A ÷ AC01 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 231A × 0308 ÷ AC01 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 231A ÷ 0915 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 231A × 0308 ÷ 0915 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ 231A ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 231A × 0308 ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 231A × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 231A × 0308 × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 231A × 094D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 231A × 0308 × 094D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ 231A × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 231A × 0308 × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 231A ÷ 0378 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] (Other) ÷ [0.3] @@ -524,14 +618,56 @@ ÷ 0300 × 0308 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0300 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0300 × 0308 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 0300 ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 0300 × 0308 ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ 0300 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0300 × 0308 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0300 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0300 × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 0300 × 094D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 0300 × 0308 × 094D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ 0300 × 200D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0300 × 0308 × 200D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0300 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 0300 × 0308 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] +÷ 094D ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] +÷ 094D × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] +÷ 094D ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] +÷ 094D × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] +÷ 094D ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] +÷ 094D × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] +÷ 094D ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] +÷ 094D × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] +÷ 094D × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] +÷ 094D × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] +÷ 094D ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] +÷ 094D × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] +÷ 094D ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] +÷ 094D × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] +÷ 094D × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] +÷ 094D × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] +÷ 094D ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] +÷ 094D × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] +÷ 094D ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] +÷ 094D × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] +÷ 094D ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] +÷ 094D × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] +÷ 094D ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] +÷ 094D × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] +÷ 094D ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 094D × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 094D ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 094D × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 094D ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] +÷ 094D × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] +÷ 094D × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 094D × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 094D × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 094D × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 094D × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] +÷ 094D × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] +÷ 094D ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] +÷ 094D × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] ÷ 200D ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 200D × 0308 ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] ÷ 200D ÷ 000D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] @@ -558,10 +694,14 @@ ÷ 200D × 0308 ÷ AC00 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 200D ÷ AC01 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 200D × 0308 ÷ AC01 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 200D ÷ 0915 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 200D × 0308 ÷ 0915 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ 200D ÷ 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 200D × 0308 ÷ 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 200D × 0300 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 200D × 0308 × 0300 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 200D × 094D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 200D × 0308 × 094D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ 200D × 200D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 200D × 0308 × 200D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 200D ÷ 0378 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] @@ -592,10 +732,14 @@ ÷ 0378 × 0308 ÷ AC00 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] ÷ 0378 ÷ AC01 ÷ # ÷ [0.2] (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] ÷ 0378 × 0308 ÷ AC01 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] +÷ 0378 ÷ 0915 ÷ # ÷ [0.2] (Other) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] +÷ 0378 × 0308 ÷ 0915 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3] ÷ 0378 ÷ 231A ÷ # ÷ [0.2] (Other) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0378 × 0308 ÷ 231A ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0378 × 0300 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] ÷ 0378 × 0308 × 0300 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] +÷ 0378 × 094D ÷ # ÷ [0.2] (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] +÷ 0378 × 0308 × 094D ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3] ÷ 0378 × 200D ÷ # ÷ [0.2] (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0378 × 0308 × 200D ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] ÷ 0378 ÷ 0378 ÷ # ÷ [0.2] (Other) ÷ [999.0] (Other) ÷ [0.3] @@ -616,6 +760,15 @@ ÷ 0061 × 0308 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] ÷ 0061 × 0903 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] ÷ 0061 ÷ 0600 × 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) × [9.2] LATIN SMALL LETTER B (Other) ÷ [0.3] +÷ 0915 ÷ 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] DEVANAGARI LETTER TA (LinkingConsonant) ÷ [0.3] +÷ 0915 × 094D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (LinkingConsonant) ÷ [0.3] +÷ 0915 × 094D × 200D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (LinkingConsonant) ÷ [0.3] +÷ 0915 × 093C × 200D × 094D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (LinkingConsonant) ÷ [0.3] +÷ 0915 × 093C × 094D × 200D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (LinkingConsonant) ÷ [0.3] +÷ 0915 × 094D × 0924 × 094D × 092F ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.3] DEVANAGARI LETTER YA (LinkingConsonant) ÷ [0.3] +÷ 0915 × 094D ÷ 0061 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] LATIN SMALL LETTER A (Other) ÷ [0.3] +÷ 0061 × 094D ÷ 0924 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER TA (LinkingConsonant) ÷ [0.3] +÷ 003F × 094D ÷ 0924 ÷ # ÷ [0.2] QUESTION MARK (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER TA (LinkingConsonant) ÷ [0.3] ÷ 1F476 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3] ÷ 0061 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3] ÷ 0061 × 1F3FF ÷ 1F476 × 200D × 1F6D1 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] @@ -625,6 +778,6 @@ ÷ 2701 × 200D × 2701 ÷ # ÷ [0.2] UPPER BLADE SCISSORS (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] UPPER BLADE SCISSORS (Other) ÷ [0.3] ÷ 0061 × 200D ÷ 2701 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] UPPER BLADE SCISSORS (Other) ÷ [0.3] # -# Lines: 602 +# Lines: 755 # # EOF diff --git a/source/test/testdata/break_rules/README.md b/source/test/testdata/break_rules/README.md new file mode 100644 index 0000000..b5b9bd8 --- /dev/null +++ b/source/test/testdata/break_rules/README.md @@ -0,0 +1,100 @@ + + +This directory contains the break iterator reference rule files used by intltest rbbi/RBBIMonkeyTest/testMonkey. +=========================================== + +The rules in this directory track the boundary rules from Unicode UAX 14 and 29. They are interpreted +to provide an expected set of boundary positions to compare with the results from ICU break iteration. + +ICU4J also includes copies of the test reference rules, located in the directory +main/tests/core/src/com/ibm/icu/dev/test/rbbi/break_rules/ +The copies should be kept synchronized; there should be no differences. + +Each set of reference break rules lives in a separate file. +The list of rule files to run by default is hard coded into the test code, in rbbimonkeytest.cpp. + +Each test file includes + - The type of ICU break iterator to create (word, line, sentence, etc.) + - The locale to use + - Character Class definitions + - Rule definitions + +To Do + - Extend the syntax to support rule tailoring. + + +**character class definition** + + name = set_regular_expression; + +*caution* When referenced, these definitions are textually substituted into the overall rule. +To avoid unexpected behavior, include [brackets] around the full definition + + letter_number = [:Letter:][:Number:]; + +Will compile, but will produce unexpected results. + + letter_number = [[:Letter:][:Number:]]; + +is safe. The issue is similar to the problems that can occur with the C preprocessor +and the use of parentheses around macro paramteters. + +**rule definition** + + rule_regular_expression; + +**name** + + [A-Za-z_][A-Za-z0-9_]* + +**set_regular_expression** + +The intersection of an ICU regular expression [set] expression and a UnicodeSet pattern +(They are mostly the same). May include previously defined set names, which are logically +expanded in-place. + +**rule_regular_expression** + + An ICU Regular Expression. + May include set names, which are logically expanded in-place. + May include a '÷', which defines a boundary position. + +Application of the rules: + +Matching begins at the start of text, or after a previously identified boundary. +The pseudo-code below finds the next boundary. + + while position < end of text + for each rule + if the text at position matches this rule + if the rule has a '÷' + Boundary is found. + return the position of the '÷' within the match. + else + position = last character of the rule match. + break from the inner rule loop, continue the outer loop. + +This differs from the Unicode UAX algorithm in that each position in the text is +not tested separately. Instead, when a rule match is found, rule application restarts with the last +character of the preceding rule match. ICU's break rules also operate this way. + +Expressing rules this way simplifies UAX rules that have leading or trailing context; it +is no longer necessary to write expressions that match the context starting from +any position within it. + +This rule form differs from ICU rules in that the rules are applied sequentially, as they +are with the Unicode UAX rules. With the main ICU break rules, all are applied in parallel. + +**Word Dictionaries** + + +The monkey test does not test dictionary based breaking. The set named 'dictionary' is special, +as it is in the main ICU rules. For the monkey test, no characters from the dictionary set are +included in the randomly-generated test data. + + diff --git a/source/test/testdata/break_rules/grapheme.txt b/source/test/testdata/break_rules/grapheme.txt index 27498c1..c57a898 100644 --- a/source/test/testdata/break_rules/grapheme.txt +++ b/source/test/testdata/break_rules/grapheme.txt @@ -37,6 +37,13 @@ LVT = [\p{Grapheme_Cluster_Break = LVT}]; Extended_Pict = [:ExtPict:]; +# Indic Sequences +Virama_ = [[\p{Gujr}\p{sc=Telu}\p{sc=Mlym}\p{sc=Orya}\p{sc=Beng}\p{sc=Deva}] & [\p{Indic_Syllabic_Category=Virama}]]; + +LinkingConsonant = [[\p{Gujr}\p{sc=Telu}\p{sc=Mlym}\p{sc=Orya}\p{sc=Beng}\p{sc=Deva}] & [\p{Indic_Syllabic_Category=Consonant}]]; + +ExtCccZwj = [[Extend-[\p{ccc=0}]] ZWJ]; + GB3: CR LF; GB4: (Control | CR | LF) ÷; GB5: . ÷ (Control | CR | LF); @@ -46,6 +53,7 @@ GB7: (LV | V) (V | T); GB8: (LVT | T) T; GB11: Extended_Pict Extend* ZWJ Extended_Pict; +GB9c: LinkingConsonant ExtCccZwj* Virama_ ExtCccZwj* LinkingConsonant; GB9: . (Extend | ZWJ); GB9a: . SpacingMark; diff --git a/source/test/testdata/break_rules/readme.txt b/source/test/testdata/break_rules/readme.txt deleted file mode 100644 index 52d54a0..0000000 --- a/source/test/testdata/break_rules/readme.txt +++ /dev/null @@ -1,76 +0,0 @@ -file: testdata/break_rules/readme.txt -Copyright (C) 2016 and later: Unicode, Inc. and others. -License & terms of use: http://www.unicode.org/copyright.html#License - -Copyright (c) 2015-2016, International Business Machines Corporation and others. All Rights Reserved. - -This directory contains the break iterator reference rule files used by intltest rbbi/RBBIMonkeyTest/testMonkey. -The rules in this directory track the boundary rules from Unicode UAX 14 and 29. They are interpreted -to provide an expected set of boundary positions to compare with the results from ICU break iteration. - -ICU4J also includes copies of the test reference rules, located in the directory -main/tests/core/src/com/ibm/icu/dev/test/rbbi/break_rules/ -The copies should be kept synchronized; there should be no differences. - -Each set of reference break rules lives in a separate file. -The list of rule files to run by default is hard coded into the test code, in rbbimonkeytest.cpp. - -Each test file includes - - The type of ICU break iterator to create (word, line, sentence, etc.) - - The locale to use - - Character Class definitions - - Rule definitions - -To Do - - Extend the syntax to support rule tailoring. - - -Character Class Definition: - name = set_regular_expression; - -Rule Definition: - rule_regular_expression; - -name: - [A-Za-z_][A-Za-z0-9_]* - -set_regular_expression: - The intersection of an ICU regular expression [set] expression and a UnicodeSet pattern. - (They are mostly the same) - May include previously defined set names, which are logically expanded in-place. - -rule_regular_expression: - An ICU Regular Expression. - May include set names, which are logically expanded in-place. - May include a '÷', which defines a boundary position. - -Application of the rules: - Matching begins at the start of text, or after a previously identified boundary. - The pseudo-code below finds the next boundary. - - while position < end of text - for each rule - if the text at position matches this rule - if the rule has a '÷' - Boundary is found. - return the position of the '÷' within the match. - else - position = last character of the rule match. - break from the inner rule loop, continue the outer loop. - - This differs from the Unicode UAX algorithm in that each position in the text is - not tested separately. Instead, when a rule match is found, rule application restarts with the last - character of the preceding rule match. ICU's break rules also operate this way. - - Expressing rules this way simplifies UAX rules that have leading or trailing context; it - is no longer necessary to write expressions that match the context starting from - any position within it. - - This rule form differs from ICU rules in that the rules are applied sequentially, as they - are with the Unicode UAX rules. With the main ICU break rules, all are applied in parallel. - -Word Dictionaries - The monkey test does not test dictionary based breaking. The set named 'dictionary' is special, - as it is in the main ICU rules. For the monkey test, no characters from the dictionary set are - included in the randomly-generated test data. - diff --git a/source/test/testdata/filters/filtertest.txt b/source/test/testdata/filters/filtertest.txt index 91c7801..f884dd1 100644 --- a/source/test/testdata/filters/filtertest.txt +++ b/source/test/testdata/filters/filtertest.txt @@ -1,6 +1,7 @@ # Copyright (C) 2018 and later: Unicode, Inc. and others. # License & terms of use: http://www.unicode.org/copyright.html +-/ -/alabama +/alabama/alaska/arizona -/fornia/illinois @@ -9,3 +10,4 @@ +/mississippi/*/maine -/mississippi/*/iowa +/mississippi/louisiana/iowa ++/northCarolina diff --git a/source/test/testdata/filtertest.txt b/source/test/testdata/filtertest.txt index 4d9aeb5..1fbc71c 100644 --- a/source/test/testdata/filtertest.txt +++ b/source/test/testdata/filtertest.txt @@ -34,4 +34,7 @@ filtertest { missouri {"new-york"} } } + northCarolina { + northDakota {"west-virginia"} + } } diff --git a/source/test/testdata/localeMatcherTest.txt b/source/test/testdata/localeMatcherTest.txt new file mode 100644 index 0000000..21c9b60 --- /dev/null +++ b/source/test/testdata/localeMatcherTest.txt @@ -0,0 +1,1959 @@ +# © 2017 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html#License +# +# Data-driven test for the language/locale matcher. +# Format: +# +# Everything after "#" is a comment. +# ** test: This line starts a group of test cases. +# +# Lines starting with an '@' sign provide matcher parameters. +# @supported= +# @default= # no value = no explicit default +# @favor=[normal|script] # no value = no explicit setting +# @threshold= # no value = no explicit setting +# +# A line with ">>" is a getBestMatch() test case: +# >> match | desired | combined +# - match is the expected best supported language +# - desired is the expected best desired language +# - combined is the expected result of combine(match, desired) +# An expected language can be "null" to check for the matcher returning null. +# An empty or omitted value is not tested. (Omitted = not even the '|' separator.) +# +# ** test: A new test group resets all matcher parameters. + +## X + +** test: testParentLocales + +# es-419, es-AR, and es-MX are in a cluster; es is in a different one + +@supported=es-419, es-ES +es-AR >> es-419 +@supported=es-ES, es-419 +es-AR >> es-419 + +@supported=es-419, es +es-AR >> es-419 +@supported=es, es-419 +es-AR >> es-419 + +@supported=es-MX, es +es-AR >> es-MX +@supported=es, es-MX +es-AR >> es-MX + +# en-GB, en-AU, and en-NZ are in a cluster; en in a different one + +@supported=en-GB, en-US +en-AU >> en-GB +@supported=en-US, en-GB +en-AU >> en-GB + +@supported=en-GB, en +en-AU >> en-GB +@supported=en, en-GB +en-AU >> en-GB + +@supported=en-NZ, en-US +en-AU >> en-NZ +@supported=en-US, en-NZ +en-AU >> en-NZ + +@supported=en-NZ, en +en-AU >> en-NZ +@supported=en, en-NZ +en-AU >> en-NZ + +# pt-AU and pt-PT in one cluster; pt-BR in another + +@supported=pt-PT, pt-BR +pt-AO >> pt-PT +@supported=pt-BR, pt-PT +pt-AO >> pt-PT + +@supported=pt-PT, pt +pt-AO >> pt-PT +@supported=pt, pt-PT +pt-AO >> pt-PT + +@supported=zh-MO, zh-TW +zh-HK >> zh-MO +@supported=zh-TW, zh-MO +zh-HK >> zh-MO + +@supported=zh-MO, zh-CN +zh-HK >> zh-MO +@supported=zh-CN, zh-MO +zh-HK >> zh-MO + +@supported=zh-MO, zh +zh-HK >> zh-MO +@supported=zh, zh-MO +zh-HK >> zh-MO + +@favor=script +@supported=es-419, es-ES +es-AR >> es-419 +@supported=es-ES, es-419 +es-AR >> es-419 +@supported=es-419, es +es-AR >> es-419 +@supported=es, es-419 +es-AR >> es-419 +@supported=es-MX, es +es-AR >> es-MX +@supported=es, es-MX +es-AR >> es-MX +@supported=en-GB, en-US +en-AU >> en-GB +@supported=en-US, en-GB +en-AU >> en-GB +@supported=en-GB, en +en-AU >> en-GB +@supported=en, en-GB +en-AU >> en-GB +@supported=en-NZ, en-US +en-AU >> en-NZ +@supported=en-US, en-NZ +en-AU >> en-NZ +@supported=en-NZ, en +en-AU >> en-NZ +@supported=en, en-NZ +en-AU >> en-NZ +@supported=pt-PT, pt-BR +pt-AO >> pt-PT +@supported=pt-BR, pt-PT +pt-AO >> pt-PT +@supported=pt-PT, pt +pt-AO >> pt-PT +@supported=pt, pt-PT +pt-AO >> pt-PT +@supported=zh-MO, zh-TW +zh-HK >> zh-MO +@supported=zh-TW, zh-MO +zh-HK >> zh-MO +@supported=zh-MO, zh-CN +zh-HK >> zh-MO +@supported=zh-CN, zh-MO +zh-HK >> zh-MO +@supported=zh-MO, zh +zh-HK >> zh-MO +@supported=zh, zh-MO +zh-HK >> zh-MO + +** test: testChinese + +@supported=zh-CN, zh-TW, iw +zh-Hant-TW >> zh-TW +zh-Hant >> zh-TW +zh-TW >> zh-TW +zh-Hans-CN >> zh-CN +zh-CN >> zh-CN +zh >> zh-CN + +@favor=script +zh-Hant-TW >> zh-TW +zh-Hant >> zh-TW +zh-TW >> zh-TW +zh-Hans-CN >> zh-CN +zh-CN >> zh-CN +zh >> zh-CN + +** test: testenGB + +@supported=fr, en, en-GB, es-419, es-MX, es +en-NZ >> en-GB +es-ES >> es +es-AR >> es-419 +es-MX >> es-MX + +@favor=script +en-NZ >> en-GB +es-ES >> es +es-AR >> es-419 +es-MX >> es-MX + +** test: testFallbacks + +@supported=91, en, hi +sa >> hi + +@favor=script +sa >> hi + +** test: testBasics + +@supported=fr, en-GB, en +en-GB >> en-GB +en >> en +fr >> fr +ja >> fr # return first if no match + +@favor=script +en-GB >> en-GB +en >> en +fr >> fr +ja >> fr + +** test: testFallback + +# check that script fallbacks are handled right + +@supported=zh-CN, zh-TW, iw +zh-Hant >> zh-TW +zh >> zh-CN +zh-Hans-CN >> zh-CN +zh-Hant-HK >> zh-TW +he-IT >> iw + +@favor=script +zh-Hant >> zh-TW +zh >> zh-CN +zh-Hans-CN >> zh-CN +zh-Hant-HK >> zh-TW +he-IT >> iw + +** test: testSpecials + +# check that nearby languages are handled + +@supported=en, fil, ro, nn +tl >> fil +mo >> ro +nb >> nn + +# make sure default works + +ja >> en + +@favor=script +tl >> fil +mo >> ro +nb >> nn +ja >> en + +** test: testRegionalSpecials + +# verify that en-AU is closer to en-GB than to en (which is en-US) + +@supported=en, en-GB, es, es-419 +es-MX >> es-419 +en-AU >> en-GB +es-ES >> es + +@favor=script +es-MX >> es-419 +en-AU >> en-GB +es-ES >> es + +** test: testHK + +# HK and MO are closer to each other for Hant than to TW + +@supported=zh, zh-TW, zh-MO +zh-HK >> zh-MO +@supported=zh, zh-TW, zh-HK +zh-MO >> zh-HK + +@favor=script +@supported=zh, zh-TW, zh-MO +zh-HK >> zh-MO +@supported=zh, zh-TW, zh-HK +zh-MO >> zh-HK + +** test: testMatch-matchOnMazimized + +@supported=zh, zh-Hant +und-TW >> zh-Hant # und-TW should be closer to zh-Hant than to zh + +@supported=en-Hant-TW, und-TW +zh-Hant >> und-TW # zh-Hant should be closer to und-TW than to en-Hant-TW +zh >> und-TW # zh should be closer to und-TW than to en-Hant-TW + +@favor=script +@supported=zh, zh-Hant +und-TW >> zh-Hant +@supported=en-Hant-TW, und-TW +zh-Hant >> und-TW +zh >> und-TW + +** test: testMatchGrandfatheredCode + +@supported=fr, i-klingon, en-Latn-US +en-GB-oed >> en-Latn-US + +@favor=script +en-GB-oed >> en-Latn-US + +** test: testGetBestMatchForList-exactMatch +@supported=fr, en-GB, ja, es-ES, es-MX +ja, de >> ja + +@favor=script +ja, de >> ja + +** test: testGetBestMatchForList-simpleVariantMatch +@supported=fr, en-GB, ja, es-ES, es-MX +de, en-US >> en-GB # Intentionally avoiding a perfect-match or two candidates for variant matches. + +# Fallback. + +de, zh >> fr + +@favor=script +de, en-US >> en-GB +de, zh >> fr + +** test: testGetBestMatchForList-matchOnMaximized +# Check that if the preference is maximized already, it works as well. + +@supported=en, ja +ja-Jpan-JP, en-AU >> ja # Match for ja-Jpan-JP (maximized already) + +# ja-JP matches ja on likely subtags, and it's listed first, thus it wins over the second preference en-GB. + +ja-JP, en-US >> ja # Match for ja-Jpan-JP (maximized already) + +# Check that if the preference is maximized already, it works as well. + +ja-Jpan-JP, en-US >> ja # Match for ja-Jpan-JP (maximized already) + +@favor=script +ja-Jpan-JP, en-AU >> ja +ja-JP, en-US >> ja +ja-Jpan-JP, en-US >> ja + +** test: testGetBestMatchForList-noMatchOnMaximized +# Regression test for http://b/5714572 . +# de maximizes to de-DE. Pick the exact match for the secondary language instead. +@supported=en, de, fr, ja +de-CH, fr >> de + +@favor=script +de-CH, fr >> de + +** test: testBestMatchForTraditionalChinese + +# Scenario: An application that only supports Simplified Chinese (and some other languages), +# but does not support Traditional Chinese. zh-Hans-CN could be replaced with zh-CN, zh, or +# zh-Hans, it wouldn't make much of a difference. + +# The script distance (simplified vs. traditional Han) is considered small enough +# to be an acceptable match. The regional difference is considered almost insignificant. + +@supported=fr, zh-Hans-CN, en-US +zh-TW >> zh-Hans-CN +zh-Hant >> zh-Hans-CN + +# For geopolitical reasons, you might want to avoid a zh-Hant -> zh-Hans match. +# In this case, if zh-TW, zh-HK or a tag starting with zh-Hant is requested, you can +# change your call to getBestMatch to include a 2nd language preference. +# "en" is a better match since its distance to "en-US" is closer than the distance +# from "zh-TW" to "zh-CN" (script distance). + +zh-TW, en >> en-US +zh-Hant-CN, en >> en-US +zh-Hans, en >> zh-Hans-CN + +@favor=script +zh-TW >> zh-Hans-CN +zh-Hant >> zh-Hans-CN +zh-TW, en >> en-US +zh-Hant-CN, en >> en-US +zh-Hans, en >> zh-Hans-CN + +** test: testUndefined +# When the undefined language doesn't match anything in the list, +# getBestMatch returns the default, as usual. + +@supported=it, fr +und >> it + +# When it *does* occur in the list, bestMatch returns it, as expected. +@supported=it, und +und >> und + +# The unusual part: max("und") = "en-Latn-US", and since matching is based on maximized +# tags, the undefined language would normally match English. But that would produce the +# counterintuitive results that getBestMatch("und", XLocaleMatcher("it,en")) would be "en", and +# getBestMatch("en", XLocaleMatcher("it,und")) would be "und". + +# To avoid that, we change the matcher's definitions of max +# so that max("und")="und". That produces the following, more desirable +# results: + +@supported=it, en +und >> it +@supported=it, und +en >> it + +@favor=script +@supported=it, fr +und >> it +@supported=it, und +und >> und +@supported=it, en +und >> it +@supported=it, und +en >> it + +** test: testGetBestMatch-regionDistance + +@supported=es-AR, es +es-MX >> es-AR +@supported=fr, en, en-GB +en-CA >> en-GB +@supported=de-AT, de-DE, de-CH +de >> de-DE + +@favor=script +@supported=es-AR, es +es-MX >> es-AR +@supported=fr, en, en-GB +en-CA >> en-GB +@supported=de-AT, de-DE, de-CH +de >> de-DE + +** test: testAsymmetry + +@supported=mul, nl +af >> nl # af => nl +@supported=mul, af +nl >> mul # but nl !=> af + +@favor=script +@supported=mul, nl +af >> nl +@supported=mul, af +nl >> mul + +** test: testGetBestMatchForList-matchOnMaximized2 + +# ja-JP matches ja on likely subtags, and it's listed first, thus it wins over the second preference en-GB. + +@supported=fr, en-GB, ja, es-ES, es-MX +ja-JP, en-GB >> ja # Match for ja-JP, with likely region subtag + +# Check that if the preference is maximized already, it works as well. + +ja-Jpan-JP, en-GB >> ja # Match for ja-Jpan-JP (maximized already) + +@favor=script +ja-JP, en-GB >> ja +ja-Jpan-JP, en-GB >> ja + +** test: testGetBestMatchForList-closeEnoughMatchOnMaximized + +@supported=en-GB, en, de, fr, ja +de-CH, fr >> de +en-US, ar, nl, de, ja >> en + +@favor=script +de-CH, fr >> de +en-US, ar, nl, de, ja >> en + +** test: testGetBestMatchForPortuguese + +# pt might be supported and not pt-PT + +# European user who prefers Spanish over Brazilian Portuguese as a fallback. + +@supported=pt-PT, pt-BR, es, es-419 +pt-PT, es, pt >> pt-PT +@supported=pt-PT, pt, es, es-419 +pt-PT, es, pt >> pt-PT # pt implicit + +# Brazilian user who prefers South American Spanish over European Portuguese as a fallback. +# The asymmetry between this case and above is because it's "pt-PT" that's missing between the +# matchers as "pt-BR" is a much more common language. + +@supported=pt-PT, pt-BR, es, es-419 +pt, es-419, pt-PT >> pt-BR +pt-PT, es, pt >> pt-PT +@supported=pt-PT, pt, es, es-419 +pt-PT, es, pt >> pt-PT +pt, es-419, pt-PT >> pt + +@supported=pt-BR, es, es-419 +pt, es-419, pt-PT >> pt-BR + +# Code that adds the user's country can get "pt-US" for a user's language. +# That should fall back to "pt-BR". + +@supported=pt-PT, pt-BR, es, es-419 +pt-US, pt-PT >> pt-BR +@supported=pt-PT, pt, es, es-419 +pt-US, pt-PT, pt >> pt # pt-BR implicit + +@favor=script +@supported=pt-PT, pt-BR, es, es-419 +pt-PT, es, pt >> pt-PT +@supported=pt-PT, pt, es, es-419 +pt-PT, es, pt >> pt-PT + +@supported=pt-PT, pt-BR, es, es-419 +pt, es-419, pt-PT >> pt-BR +pt-PT, es, pt >> pt-PT +@supported=pt-PT, pt, es, es-419 +pt-PT, es, pt >> pt-PT +pt, es-419, pt-PT >> pt + +@supported=pt-BR, es, es-419 +pt, es-419, pt-PT >> pt-BR + +@supported=pt-PT, pt-BR, es, es-419 +pt-US, pt-PT >> pt-BR +@supported=pt-PT, pt, es, es-419 +pt-US, pt-PT, pt >> pt + +** test: testVariantWithScriptMatch 1 and 2 + +@supported=fr, en, sv +en-GB >> en +@supported=en, sv +en-GB, sv >> en + +@favor=script +@supported=fr, en, sv +en-GB >> en +@supported=en, sv +en-GB, sv >> en + +** test: testLongLists + +@supported=en, sv +sv >> sv + +@supported=af, am, ar, az, be, bg, bn, bs, ca, cs, cy, da, de, el, en, en-GB, es, es-419, et, eu, fa, fi, fil, fr, ga, gl, gu, hi, hr, hu, hy, id, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, ne, nl, no, pa, pl, pt, pt-PT, ro, ru, si, sk, sl, sq, sr, sr-Latn, sv, sw, ta, te, th, tr, uk, ur, uz, vi, zh-CN, zh-TW, zu +sv >> sv + +@supported=af, af-NA, af-ZA, agq, agq-CM, ak, ak-GH, am, am-ET, ar, ar-001, ar-AE, ar-BH, ar-DJ, ar-DZ, ar-EG, ar-EH, ar-ER, ar-IL, ar-IQ, ar-JO, ar-KM, ar-KW, ar-LB, ar-LY, ar-MA, ar-MR, ar-OM, ar-PS, ar-QA, ar-SA, ar-SD, ar-SO, ar-SS, ar-SY, ar-TD, ar-TN, ar-YE, as, as-IN, asa, asa-TZ, ast, ast-ES, az, az-Cyrl, az-Cyrl-AZ, az-Latn, az-Latn-AZ, bas, bas-CM, be, be-BY, bem, bem-ZM, bez, bez-TZ, bg, bg-BG, bm, bm-ML, bn, bn-BD, bn-IN, bo, bo-CN, bo-IN, br, br-FR, brx, brx-IN, bs, bs-Cyrl, bs-Cyrl-BA, bs-Latn, bs-Latn-BA, ca, ca-AD, ca-ES, ca-ES-VALENCIA, ca-FR, ca-IT, ce, ce-RU, cgg, cgg-UG, chr, chr-US, ckb, ckb-IQ, ckb-IR, cs, cs-CZ, cu, cu-RU, cy, cy-GB, da, da-DK, da-GL, dav, dav-KE, de, de-AT, de-BE, de-CH, de-DE, de-LI, de-LU, dje, dje-NE, dsb, dsb-DE, dua, dua-CM, dyo, dyo-SN, dz, dz-BT, ebu, ebu-KE, ee, ee-GH, ee-TG, el, el-CY, el-GR, en, en-001, en-150, en-AG, en-AI, en-AS, en-AT, en-AU, en-BB, en-BE, en-BI, en-BM, en-BS, en-BW, en-BZ, en-CA, en-CC, en-CH, en-CK, en-CM, en-CX, en-CY, en-DE, en-DG, en-DK, en-DM, en-ER, en-FI, en-FJ, en-FK, en-FM, en-GB, en-GD, en-GG, en-GH, en-GI, en-GM, en-GU, en-GY, en-HK, en-IE, en-IL, en-IM, en-IN, en-IO, en-JE, en-JM, en-KE, en-KI, en-KN, en-KY, en-LC, en-LR, en-LS, en-MG, en-MH, en-MO, en-MP, en-MS, en-MT, en-MU, en-MW, en-MY, en-NA, en-NF, en-NG, en-NL, en-NR, en-NU, en-NZ, en-PG, en-PH, en-PK, en-PN, en-PR, en-PW, en-RW, en-SB, en-SC, en-SD, en-SE, en-SG, en-SH, en-SI, en-SL, en-SS, en-SX, en-SZ, en-TC, en-TK, en-TO, en-TT, en-TV, en-TZ, en-UG, en-UM, en-US, en-US-POSIX, en-VC, en-VG, en-VI, en-VU, en-WS, en-ZA, en-ZM, en-ZW, eo, eo-001, es, es-419, es-AR, es-BO, es-CL, es-CO, es-CR, es-CU, es-DO, es-EA, es-EC, es-ES, es-GQ, es-GT, es-HN, es-IC, es-MX, es-NI, es-PA, es-PE, es-PH, es-PR, es-PY, es-SV, es-US, es-UY, es-VE, et, et-EE, eu, eu-ES, ewo, ewo-CM, fa, fa-AF, fa-IR, ff, ff-CM, ff-GN, ff-MR, ff-SN, fi, fi-FI, fil, fil-PH, fo, fo-DK, fo-FO, fr, fr-BE, fr-BF, fr-BI, fr-BJ, fr-BL, fr-CA, fr-CD, fr-CF, fr-CG, fr-CH, fr-CI, fr-CM, fr-DJ, fr-DZ, fr-FR, fr-GA, fr-GF, fr-GN, fr-GP, fr-GQ, fr-HT, fr-KM, fr-LU, fr-MA, fr-MC, fr-MF, fr-MG, fr-ML, fr-MQ, fr-MR, fr-MU, fr-NC, fr-NE, fr-PF, fr-PM, fr-RE, fr-RW, fr-SC, fr-SN, fr-SY, fr-TD, fr-TG, fr-TN, fr-VU, fr-WF, fr-YT, fur, fur-IT, fy, fy-NL, ga, ga-IE, gd, gd-GB, gl, gl-ES, gsw, gsw-CH, gsw-FR, gsw-LI, gu, gu-IN, guz, guz-KE, gv, gv-IM, ha, ha-GH, ha-NE, ha-NG, haw, haw-US, he, he-IL, hi, hi-IN, hr, hr-BA, hr-HR, hsb, hsb-DE, hu, hu-HU, hy, hy-AM, id, id-ID, ig, ig-NG, ii, ii-CN, is, is-IS, it, it-CH, it-IT, it-SM, ja, ja-JP, jgo, jgo-CM, jmc, jmc-TZ, ka, ka-GE, kab, kab-DZ, kam, kam-KE, kde, kde-TZ, kea, kea-CV, khq, khq-ML, ki, ki-KE, kk, kk-KZ, kkj, kkj-CM, kl, kl-GL, kln, kln-KE, km, km-KH, kn, kn-IN, ko, ko-KP, ko-KR, kok, kok-IN, ks, ks-IN, ksb, ksb-TZ, ksf, ksf-CM, ksh, ksh-DE, kw, kw-GB, ky, ky-KG, lag, lag-TZ, lb, lb-LU, lg, lg-UG, lkt, lkt-US, ln, ln-AO, ln-CD, ln-CF, ln-CG, lo, lo-LA, lrc, lrc-IQ, lrc-IR, lt, lt-LT, lu, lu-CD, luo, luo-KE, luy, luy-KE, lv, lv-LV, mas, mas-KE, mas-TZ, mer, mer-KE, mfe, mfe-MU, mg, mg-MG, mgh, mgh-MZ, mgo, mgo-CM, mk, mk-MK, ml, ml-IN, mn, mn-MN, mr, mr-IN, ms, ms-BN, ms-MY, ms-SG, mt, mt-MT, mua, mua-CM, my, my-MM, mzn, mzn-IR, naq, naq-NA, nb, nb-NO, nb-SJ, nd, nd-ZW, ne, ne-IN, ne-NP, nl, nl-AW, nl-BE, nl-BQ, nl-CW, nl-NL, nl-SR, nl-SX, nmg, nmg-CM, nn, nn-NO, nnh, nnh-CM, nus, nus-SS, nyn, nyn-UG, om, om-ET, om-KE, or, or-IN, os, os-GE, os-RU, pa, pa-Arab, pa-Arab-PK, pa-Guru, pa-Guru-IN, pl, pl-PL, prg, prg-001, ps, ps-AF, pt, pt-AO, pt-BR, pt-CV, pt-GW, pt-MO, pt-MZ, pt-PT, pt-ST, pt-TL, qu, qu-BO, qu-EC, qu-PE, rm, rm-CH, rn, rn-BI, ro, ro-MD, ro-RO, rof, rof-TZ, root, ru, ru-BY, ru-KG, ru-KZ, ru-MD, ru-RU, ru-UA, rw, rw-RW, rwk, rwk-TZ, sah, sah-RU, saq, saq-KE, sbp, sbp-TZ, se, se-FI, se-NO, se-SE, seh, seh-MZ, ses, ses-ML, sg, sg-CF, shi, shi-Latn, shi-Latn-MA, shi-Tfng, shi-Tfng-MA, si, si-LK, sk, sk-SK, sl, sl-SI, smn, smn-FI, sn, sn-ZW, so, so-DJ, so-ET, so-KE, so-SO, sq, sq-AL, sq-MK, sq-XK, sr, sr-Cyrl, sr-Cyrl-BA, sr-Cyrl-ME, sr-Cyrl-RS, sr-Cyrl-XK, sr-Latn, sr-Latn-BA, sr-Latn-ME, sr-Latn-RS, sr-Latn-XK, sv, sv-AX, sv-FI, sv-SE, sw, sw-CD, sw-KE, sw-TZ, sw-UG, ta, ta-IN, ta-LK, ta-MY, ta-SG, te, te-IN, teo, teo-KE, teo-UG, th, th-TH, ti, ti-ER, ti-ET, tk, tk-TM, to, to-TO, tr, tr-CY, tr-TR, twq, twq-NE, tzm, tzm-MA, ug, ug-CN, uk, uk-UA, ur, ur-IN, ur-PK, uz, uz-Arab, uz-Arab-AF, uz-Cyrl, uz-Cyrl-UZ, uz-Latn, uz-Latn-UZ, vai, vai-Latn, vai-Latn-LR, vai-Vaii, vai-Vaii-LR, vi, vi-VN, vo, vo-001, vun, vun-TZ, wae, wae-CH, xog, xog-UG, yav, yav-CM, yi, yi-001, yo, yo-BJ, yo-NG, zgh, zgh-MA, zh, zh-Hans, zh-Hans-CN, zh-Hans-HK, zh-Hans-MO, zh-Hans-SG, zh-Hant, zh-Hant-HK, zh-Hant-MO, zh-Hant-TW, zu, zu-ZA +sv >> sv + +@favor=script +@supported=en, sv +sv >> sv + +@supported=af, am, ar, az, be, bg, bn, bs, ca, cs, cy, da, de, el, en, en-GB, es, es-419, et, eu, fa, fi, fil, fr, ga, gl, gu, hi, hr, hu, hy, id, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, ne, nl, no, pa, pl, pt, pt-PT, ro, ru, si, sk, sl, sq, sr, sr-Latn, sv, sw, ta, te, th, tr, uk, ur, uz, vi, zh-CN, zh-TW, zu +sv >> sv + +@supported=af, af-NA, af-ZA, agq, agq-CM, ak, ak-GH, am, am-ET, ar, ar-001, ar-AE, ar-BH, ar-DJ, ar-DZ, ar-EG, ar-EH, ar-ER, ar-IL, ar-IQ, ar-JO, ar-KM, ar-KW, ar-LB, ar-LY, ar-MA, ar-MR, ar-OM, ar-PS, ar-QA, ar-SA, ar-SD, ar-SO, ar-SS, ar-SY, ar-TD, ar-TN, ar-YE, as, as-IN, asa, asa-TZ, ast, ast-ES, az, az-Cyrl, az-Cyrl-AZ, az-Latn, az-Latn-AZ, bas, bas-CM, be, be-BY, bem, bem-ZM, bez, bez-TZ, bg, bg-BG, bm, bm-ML, bn, bn-BD, bn-IN, bo, bo-CN, bo-IN, br, br-FR, brx, brx-IN, bs, bs-Cyrl, bs-Cyrl-BA, bs-Latn, bs-Latn-BA, ca, ca-AD, ca-ES, ca-ES-VALENCIA, ca-FR, ca-IT, ce, ce-RU, cgg, cgg-UG, chr, chr-US, ckb, ckb-IQ, ckb-IR, cs, cs-CZ, cu, cu-RU, cy, cy-GB, da, da-DK, da-GL, dav, dav-KE, de, de-AT, de-BE, de-CH, de-DE, de-LI, de-LU, dje, dje-NE, dsb, dsb-DE, dua, dua-CM, dyo, dyo-SN, dz, dz-BT, ebu, ebu-KE, ee, ee-GH, ee-TG, el, el-CY, el-GR, en, en-001, en-150, en-AG, en-AI, en-AS, en-AT, en-AU, en-BB, en-BE, en-BI, en-BM, en-BS, en-BW, en-BZ, en-CA, en-CC, en-CH, en-CK, en-CM, en-CX, en-CY, en-DE, en-DG, en-DK, en-DM, en-ER, en-FI, en-FJ, en-FK, en-FM, en-GB, en-GD, en-GG, en-GH, en-GI, en-GM, en-GU, en-GY, en-HK, en-IE, en-IL, en-IM, en-IN, en-IO, en-JE, en-JM, en-KE, en-KI, en-KN, en-KY, en-LC, en-LR, en-LS, en-MG, en-MH, en-MO, en-MP, en-MS, en-MT, en-MU, en-MW, en-MY, en-NA, en-NF, en-NG, en-NL, en-NR, en-NU, en-NZ, en-PG, en-PH, en-PK, en-PN, en-PR, en-PW, en-RW, en-SB, en-SC, en-SD, en-SE, en-SG, en-SH, en-SI, en-SL, en-SS, en-SX, en-SZ, en-TC, en-TK, en-TO, en-TT, en-TV, en-TZ, en-UG, en-UM, en-US, en-US-POSIX, en-VC, en-VG, en-VI, en-VU, en-WS, en-ZA, en-ZM, en-ZW, eo, eo-001, es, es-419, es-AR, es-BO, es-CL, es-CO, es-CR, es-CU, es-DO, es-EA, es-EC, es-ES, es-GQ, es-GT, es-HN, es-IC, es-MX, es-NI, es-PA, es-PE, es-PH, es-PR, es-PY, es-SV, es-US, es-UY, es-VE, et, et-EE, eu, eu-ES, ewo, ewo-CM, fa, fa-AF, fa-IR, ff, ff-CM, ff-GN, ff-MR, ff-SN, fi, fi-FI, fil, fil-PH, fo, fo-DK, fo-FO, fr, fr-BE, fr-BF, fr-BI, fr-BJ, fr-BL, fr-CA, fr-CD, fr-CF, fr-CG, fr-CH, fr-CI, fr-CM, fr-DJ, fr-DZ, fr-FR, fr-GA, fr-GF, fr-GN, fr-GP, fr-GQ, fr-HT, fr-KM, fr-LU, fr-MA, fr-MC, fr-MF, fr-MG, fr-ML, fr-MQ, fr-MR, fr-MU, fr-NC, fr-NE, fr-PF, fr-PM, fr-RE, fr-RW, fr-SC, fr-SN, fr-SY, fr-TD, fr-TG, fr-TN, fr-VU, fr-WF, fr-YT, fur, fur-IT, fy, fy-NL, ga, ga-IE, gd, gd-GB, gl, gl-ES, gsw, gsw-CH, gsw-FR, gsw-LI, gu, gu-IN, guz, guz-KE, gv, gv-IM, ha, ha-GH, ha-NE, ha-NG, haw, haw-US, he, he-IL, hi, hi-IN, hr, hr-BA, hr-HR, hsb, hsb-DE, hu, hu-HU, hy, hy-AM, id, id-ID, ig, ig-NG, ii, ii-CN, is, is-IS, it, it-CH, it-IT, it-SM, ja, ja-JP, jgo, jgo-CM, jmc, jmc-TZ, ka, ka-GE, kab, kab-DZ, kam, kam-KE, kde, kde-TZ, kea, kea-CV, khq, khq-ML, ki, ki-KE, kk, kk-KZ, kkj, kkj-CM, kl, kl-GL, kln, kln-KE, km, km-KH, kn, kn-IN, ko, ko-KP, ko-KR, kok, kok-IN, ks, ks-IN, ksb, ksb-TZ, ksf, ksf-CM, ksh, ksh-DE, kw, kw-GB, ky, ky-KG, lag, lag-TZ, lb, lb-LU, lg, lg-UG, lkt, lkt-US, ln, ln-AO, ln-CD, ln-CF, ln-CG, lo, lo-LA, lrc, lrc-IQ, lrc-IR, lt, lt-LT, lu, lu-CD, luo, luo-KE, luy, luy-KE, lv, lv-LV, mas, mas-KE, mas-TZ, mer, mer-KE, mfe, mfe-MU, mg, mg-MG, mgh, mgh-MZ, mgo, mgo-CM, mk, mk-MK, ml, ml-IN, mn, mn-MN, mr, mr-IN, ms, ms-BN, ms-MY, ms-SG, mt, mt-MT, mua, mua-CM, my, my-MM, mzn, mzn-IR, naq, naq-NA, nb, nb-NO, nb-SJ, nd, nd-ZW, ne, ne-IN, ne-NP, nl, nl-AW, nl-BE, nl-BQ, nl-CW, nl-NL, nl-SR, nl-SX, nmg, nmg-CM, nn, nn-NO, nnh, nnh-CM, nus, nus-SS, nyn, nyn-UG, om, om-ET, om-KE, or, or-IN, os, os-GE, os-RU, pa, pa-Arab, pa-Arab-PK, pa-Guru, pa-Guru-IN, pl, pl-PL, prg, prg-001, ps, ps-AF, pt, pt-AO, pt-BR, pt-CV, pt-GW, pt-MO, pt-MZ, pt-PT, pt-ST, pt-TL, qu, qu-BO, qu-EC, qu-PE, rm, rm-CH, rn, rn-BI, ro, ro-MD, ro-RO, rof, rof-TZ, root, ru, ru-BY, ru-KG, ru-KZ, ru-MD, ru-RU, ru-UA, rw, rw-RW, rwk, rwk-TZ, sah, sah-RU, saq, saq-KE, sbp, sbp-TZ, se, se-FI, se-NO, se-SE, seh, seh-MZ, ses, ses-ML, sg, sg-CF, shi, shi-Latn, shi-Latn-MA, shi-Tfng, shi-Tfng-MA, si, si-LK, sk, sk-SK, sl, sl-SI, smn, smn-FI, sn, sn-ZW, so, so-DJ, so-ET, so-KE, so-SO, sq, sq-AL, sq-MK, sq-XK, sr, sr-Cyrl, sr-Cyrl-BA, sr-Cyrl-ME, sr-Cyrl-RS, sr-Cyrl-XK, sr-Latn, sr-Latn-BA, sr-Latn-ME, sr-Latn-RS, sr-Latn-XK, sv, sv-AX, sv-FI, sv-SE, sw, sw-CD, sw-KE, sw-TZ, sw-UG, ta, ta-IN, ta-LK, ta-MY, ta-SG, te, te-IN, teo, teo-KE, teo-UG, th, th-TH, ti, ti-ER, ti-ET, tk, tk-TM, to, to-TO, tr, tr-CY, tr-TR, twq, twq-NE, tzm, tzm-MA, ug, ug-CN, uk, uk-UA, ur, ur-IN, ur-PK, uz, uz-Arab, uz-Arab-AF, uz-Cyrl, uz-Cyrl-UZ, uz-Latn, uz-Latn-UZ, vai, vai-Latn, vai-Latn-LR, vai-Vaii, vai-Vaii-LR, vi, vi-VN, vo, vo-001, vun, vun-TZ, wae, wae-CH, xog, xog-UG, yav, yav-CM, yi, yi-001, yo, yo-BJ, yo-NG, zgh, zgh-MA, zh, zh-Hans, zh-Hans-CN, zh-Hans-HK, zh-Hans-MO, zh-Hans-SG, zh-Hant, zh-Hant-HK, zh-Hant-MO, zh-Hant-TW, zu, zu-ZA +sv >> sv + +** test: test8288 + +@supported=it, en +und >> it +und, en >> en + +# examples from +# http://unicode.org/repos/cldr/tags/latest/common/bcp47/ +# http://unicode.org/repos/cldr/tags/latest/common/validity/variant.xml + +@favor=script +und >> it +und, en >> en + +** test: testUnHack + +@supported=en-NZ, en-IT +en-US >> en-NZ + +@favor=script +en-US >> en-NZ + +** test: testEmptySupported => null +en >> null + +# testVariantsAndExtensions + +** test: tests the .combine() method + +@supported=und, fr +fr-BE-fonipa >> fr | | fr-BE-fonipa +@supported=und, fr-CA +fr-BE-fonipa >> fr-CA | | fr-BE-fonipa +@supported=und, fr-fonupa +fr-BE-fonipa >> fr-fonupa | | fr-BE-fonipa +@supported=und, no +nn-BE-fonipa >> no | | no-BE-fonipa +@supported=und, en-GB-u-sd-gbsct +en-fonipa-u-nu-Arab-ca-buddhist-t-m0-iso-i0-pinyin >> en-GB-u-sd-gbsct | | en-GB-fonipa-u-nu-Arab-ca-buddhist-t-m0-iso-i0-pinyin + +@supported=en-PSCRACK, de-PSCRACK, fr-PSCRACK, pt-PT-PSCRACK +fr-PSCRACK >> fr-PSCRACK +fr >> en-PSCRACK +de-CH >> en-PSCRACK + +@favor=script +@supported=und, fr +fr-BE-fonipa >> fr +@supported=und, fr-CA +fr-BE-fonipa >> fr-CA +@supported=und, fr-fonupa +fr-BE-fonipa >> fr-fonupa +@supported=und, no +nn-BE-fonipa >> no | | no-BE-fonipa +@supported=und, en-GB-u-sd-gbsct +en-fonipa-u-nu-Arab-ca-buddhist-t-m0-iso-i0-pinyin >> en-GB-u-sd-gbsct | | en-GB-fonipa-u-nu-Arab-ca-buddhist-t-m0-iso-i0-pinyin + +@supported=en-PSCRACK, de-PSCRACK, fr-PSCRACK, pt-PT-PSCRACK +fr-PSCRACK >> fr-PSCRACK +fr >> en-PSCRACK +de-CH >> en-PSCRACK + +** test: testClusters +# we favor es-419 over others in cluster. Clusters: es- {ES, MA, EA} {419, AR, MX} + +@supported=und, es, es-MA, es-MX, es-419 +es-AR >> es-419 +@supported=und, es-MA, es, es-419, es-MX +es-AR >> es-419 +@supported=und, es, es-MA, es-MX, es-419 +es-EA >> es +@supported=und, es-MA, es, es-419, es-MX +es-EA >> es + +# of course, fall back to within cluster + +@supported=und, es, es-MA, es-MX +es-AR >> es-MX +@supported=und, es-MA, es, es-MX +es-AR >> es-MX +@supported=und, es-MA, es-MX, es-419 +es-EA >> es-MA +@supported=und, es-MA, es-419, es-MX +es-EA >> es-MA + +# we favor es-GB over others in cluster. Clusters: en- {US, GU, VI} {GB, IN, ZA} + +@supported=und, en, en-GU, en-IN, en-GB +en-ZA >> en-GB +@supported=und, en-GU, en, en-GB, en-IN +en-ZA >> en-GB +@supported=und, en, en-GU, en-IN, en-GB +en-VI >> en +@supported=und, en-GU, en, en-GB, en-IN +en-VI >> en + +# of course, fall back to within cluster + +@supported=und, en, en-GU, en-IN +en-ZA >> en-IN +@supported=und, en-GU, en, en-IN +en-ZA >> en-IN +@supported=und, en-GU, en-IN, en-GB +en-VI >> en-GU +@supported=und, en-GU, en-GB, en-IN +en-VI >> en-GU + +@favor=script +@supported=und, es, es-MA, es-MX, es-419 +es-AR >> es-419 +@supported=und, es-MA, es, es-419, es-MX +es-AR >> es-419 +@supported=und, es, es-MA, es-MX, es-419 +es-EA >> es +@supported=und, es-MA, es, es-419, es-MX +es-EA >> es + +@supported=und, es, es-MA, es-MX +es-AR >> es-MX +@supported=und, es-MA, es, es-MX +es-AR >> es-MX +@supported=und, es-MA, es-MX, es-419 +es-EA >> es-MA +@supported=und, es-MA, es-419, es-MX +es-EA >> es-MA + +@supported=und, en, en-GU, en-IN, en-GB +en-ZA >> en-GB +@supported=und, en-GU, en, en-GB, en-IN +en-ZA >> en-GB +@supported=und, en, en-GU, en-IN, en-GB +en-VI >> en +@supported=und, en-GU, en, en-GB, en-IN +en-VI >> en + +@supported=und, en, en-GU, en-IN +en-ZA >> en-IN +@supported=und, en-GU, en, en-IN +en-ZA >> en-IN +@supported=und, en-GU, en-IN, en-GB +en-VI >> en-GU +@supported=und, en-GU, en-GB, en-IN +en-VI >> en-GU + +** test: testThreshold +@supported=50, und, fr-CA-fonupa +@threshold=60 +fr-BE-fonipa >> fr-CA-fonupa | | fr-BE-fonipa +@supported=und, fr-Cyrl-CA-fonupa +fr-BE-fonipa >> fr-Cyrl-CA-fonupa | | fr-Cyrl-BE-fonipa +@threshold=50 +fr-BE-fonipa >> und + +@favor=script +@supported=50, und, fr-CA-fonupa +@threshold= +fr-BE-fonipa >> fr-CA-fonupa | | fr-BE-fonipa +@supported=und, fr-Cyrl-CA-fonupa +fr-BE-fonipa >> und + +** test: testScriptFirst +@supported=ru, fr +zh, pl >> ru +zh-Cyrl, pl >> ru +@supported=hr, en-Cyrl +sr >> hr +@supported=da, ru, hr +sr >> da + +@favor=script +@supported=ru, fr +zh, pl >> fr +zh-Cyrl, pl >> ru +@supported=hr, en-Cyrl +sr >> en-Cyrl +@supported=da, ru, hr +sr >> ru + +## III + +** test: testBasicsWithDefault +@supported=en-GB, en +@default=fr +en-GB >> en-GB +en-US >> en +fr >> fr +ja >> fr + +@favor=script +en-GB >> en-GB +en-US >> en +fr >> en-GB +ja >> fr + +** test: testEmptyWithDefault +@default=en +fr >> en + +** test: testGetBestMatchForList_exactMatch +@supported=fr, en-GB, ja, es-ES, es-MX +ja, de >> ja + +** test: testGetBestMatchForList_simpleVariantMatch +# Intentionally avoiding a perfect-match or two candidates for variant matches. +@supported=fr, en-GB, ja, es-ES, es-MX +de, en-US >> en-GB +# Fall back. +de, zh >> fr + +** test: TestEuHack +@supported=en-NZ, en-IT +en-US >> en-NZ + +** test: TestBasics +@supported=fr, en-GB, en +en-GB >> en-GB +en-US >> en +fr-FR >> fr +ja-JP >> fr +# For a language that doesn't match anything, return the default. +zu >> en-GB +zxx >> fr + +@favor=script +en-GB >> en-GB +en-US >> en +fr-FR >> fr +ja-JP >> fr +zu >> en-GB +zxx >> en + +** test: TestExactMatch +@supported=fr, en-GB, ja, es-ES, es-MX +ja, de >> ja + +** test: TestSimpleVariantMatch +@supported=fr, en-GB, ja, es-ES, es-MX +de, en-US >> en-GB +de, zh >> fr + +** test: TestMatchOnMaximized +# ja-JP matches ja on likely subtags, and it's listed first, thus it wins +# over the secondary preference en-GB. +@supported=fr, en-GB, ja, es-ES, es-MX +ja-JP, en-GB >> ja +# Check that if the preference is maximized already, it works as well. +ja-Jpan-JP, en-GB >> ja +@supported=fr, zh-Hant, en +zh, en >> en + +@favor=script +zh, en >> en + +** test: TestCloseEnoughMatchOnMaximized +@supported=en-GB, en, de, fr, ja +de-CH, fr >> de +en-US, ar, nl, de, ja >> en + +** test: TestGetBestMatchForPortuguese +# 1. a supported set containing an explicit pt: {pt-PT, pt-BR, es, es-419} +# 2. a supported set containing an implicit pt: {pt-PT, pt, es, es-419} +# 3. a supported set containing no pt: {pt-BR, es, es-419} +# European user who prefers Spanish over Brazilian Portuguese as a fallback. +@supported=pt-PT, pt-BR, es, es-419 +pt-PT, es, pt >> pt-PT +@supported=pt-PT, pt, es, es-419 +pt-PT, es, pt >> pt-PT +@supported=pt-BR, es, es-419 +pt-PT, es, pt >> pt-BR + +# Brazilian user who prefers South American Spanish over European Portuguese +# as a fallback. The asymmetry between this case and above is because it's +# "pt-PT" that's missing between the matchers. +@supported=pt-PT, pt-BR, es, es-419 +pt, es-419, pt-PT >> pt-BR +@supported=pt-PT, pt, es, es-419 +pt, es-419, pt-PT >> pt +@supported=pt-BR, es, es-419 +pt, es-419, pt-PT >> pt-BR + +# Sometimes we get "pt-US" for a user's language (which CLDR doesn't +# recognize) but we deal with that as a synonym for "pt-BR". +@supported=pt-PT, pt-BR, es, es-419 +pt-US, pt-PT >> pt-BR +@supported=pt-PT, pt, es, es-419 +pt-US, pt-PT >> pt + +@favor=script +@supported=pt-BR, es, es-419 +pt-PT, es, pt >> pt-BR +@supported=pt-PT, pt, es, es-419 +pt-US, pt-PT >> pt + +** test: TestScriptAndRegion +@supported=en-GB, en +en-CA >> en-GB +# fr-CA is a "close enough" match to "fr" to be returned in favor of "en-GB" +@supported=fr, en-GB, en +fr-CA, en-CA >> fr +@supported=zh-Hant, zh-TW +zh-HK >> zh-Hant + +@favor=script +@supported=en-GB, en +en-CA >> en-GB +@supported=fr, en-GB, en +fr-CA, en-CA >> fr +@supported=zh-Hant, zh-TW +zh-HK >> zh-Hant + +** test: TestFallback +@supported=zh-CN, zh-TW, iw +zh-Hant >> zh-TW +zh >> zh-CN +zh-Hans-CN >> zh-CN +zh-Hant-HK >> zh-TW +he-IT >> iw + +** test: TestFallbackWithDefault +# Check that script fallbacks are handled right and that we don't have to +# fall back to the default. +@supported=zh-CN, zh-TW, iw +@default=fr +zh-Hant >> zh-TW +zh >> zh-CN +zh-Hans-CN >> zh-CN +zh-Hant-HK >> zh-TW +he-IT >> iw + +@favor=script +zh-Hant >> zh-TW +zh >> zh-CN +zh-Hans-CN >> zh-CN +zh-Hant-HK >> zh-TW +he-IT >> iw + +** test: TestSpecials +# Check that nearby languages are handled. +@supported=en, fil, ro, nn +tl >> fil +mo >> ro +nb >> nn +ja >> en # Make sure default works. + +** test: TestRegionalSpecials +# Verify that en-AU is closer to en-GB than to en (which is en-US). +@supported=en, en-GB, es-ES, es-419 +en-AU >> en-GB +# Following 2 cases test closer/smaller region difference. +es-MX >> es-419 +es-PT >> es-ES + +@favor=script +en-AU >> en-GB +es-MX >> es-419 +es-PT >> es-ES + +** test: TestEmpty +fr >> null + +** test: TestUndefined +# When the undefined language doesn't match anything in the list, +# return the default. +@supported=it, fr +und >> it +# When it *does* occur in the list, return it. +@supported=it, und +und >> und +# The unusual part: +# max("und") = "en-Latn-US", and since matching is based on +# maximized tags, the undefined language would normally match +# English. But that would produce the counterintuitive results +# that BestMatchFor("und", LanguageMatcher("it,en")) would be "en", +# and BestMatchFor("en", LanguageMatcher("it,und")) would be "und". + +# To avoid that, we change the matcher's definitions of max +# (AddLikelySubtagsWithDefaults) so that max("und")="und". That +# produces the following, more desirable results: +@supported=it, en +und >> it +@supported=it, und +en >> it + +** test: TestVariantWithScriptMatch +@supported=fr, en, sv +en-GB >> en +en-GB, sv >> en + +@favor=script +en-GB, sv >> en + +** test: Serbian +@supported=und, sr +sr-ME >> sr +@supported=und, sr-ME +sr >> sr-ME +@supported=und, sr-Latn +bs >> und +@supported=und, bs +sr-Latn >> und +@supported=und, sr +bs >> und +@supported=und, bs +sr >> und +@supported=und, sr-Latn +sr >> sr-Latn +@supported=und, sr +sr-Latn >> sr + +@favor=script +sr-ME >> sr +@supported=und, sr-ME +sr >> sr-ME +@supported=und, sr-Latn +bs >> sr-Latn +@supported=und, bs +sr-Latn >> bs +@supported=und, sr +bs >> und +@supported=und, bs +sr >> und +@supported=und, sr-Latn +sr >> sr-Latn +@supported=und, sr +sr-Latn >> sr + +** test: MatchGooglePrivateUseSubtag +@supported=fr, x-bork, en-Latn-US +x-piglatin >> fr +x-bork >> x-bork +@supported=fr, en-GB, x-bork, es-ES, es-419 +x-piglatin >> fr +x-bork >> x-bork + +@favor=script +@supported=fr, x-bork, en-Latn-US +x-piglatin >> x-bork +x-bork >> x-bork +@supported=fr, en-GB, x-bork, es-ES, es-419 +x-piglatin >> x-bork +x-bork >> x-bork + +** test: MatchGrandfatheredCode +@supported=fr, i-klingon, en-Latn-US +en-GB-oed >> en-Latn-US +i-klingon >> tlh + +@favor=script +en-GB-oed >> en-Latn-US +i-klingon >> tlh + +** test: MatchGooglePseudoLocale +# Google pseudo locales using variant subtags. +# (See below for the region code based pseudo locales.) +@supported=fr, en-PSACCENT, ar-PSBIDI, en-PSCRACK, zh-Hans-PSCRACK, pt-PT-PSCRACK, pt +de >> fr +en-US >> fr +en >> fr +ar-PSBIDI >> ar-PSBIDI +en-PSACCENT >> en-PSACCENT +en-PSCRACK >> en-PSCRACK +pt-BR >> pt +pt-PT-PSCRACK >> pt-PT-PSCRACK +zh-Hans-PSCRACK >> zh-Hans-PSCRACK + +@favor=script +de >> fr +en-US >> fr +en >> fr +ar-PSBIDI >> ar-PSBIDI +en-PSACCENT >> en-PSACCENT +en-PSCRACK >> en-PSCRACK +pt-BR >> pt +pt-PT-PSCRACK >> pt-PT-PSCRACK +zh-Hans-PSCRACK >> zh-Hans-PSCRACK + +** test: MatchGooglePseudoLocaleWithFallbacks +# Pseudo locales based on the fall back option (XA..XC region codes). +@supported=fr, en-XA, ar-XB, en-XC, zh-Hans-XC, pt +de >> fr +en-US >> fr +en >> fr +ar-XB >> ar-XB +en-XA >> en-XA +en-XC >> en-XC +pt-BR >> pt +zh-Hans-XC >> zh-Hans-XC + +@favor=script +de >> fr +en-US >> fr +en >> fr +ar-XB >> ar-XB +en-XA >> en-XA +en-XC >> en-XC +pt-BR >> pt +zh-Hans-XC >> zh-Hans-XC + +** test: DoNotMatchGooglePseudoLocale +@supported=fr, en-XA, ar-XB, en-PSACCENT, ar-PSBIDI, en-DE, pt, ar-SY, ar-PSCRACK +de >> fr +# We wouldn't want to return pseudo locales when there's a good match for an +# ordinary locale. +# Note: If LanguageMatcher was not aware of PSACCENT, it would consider the +# distance from "en" to "en-PSACCENT" smaller than to "en-DE" (the standard +# variant distance is smaller than a region distance). +en >> en-DE +ar-EG >> ar-SY +pt-BR >> pt +ar-XB >> ar-XB +ar-PSBIDI >> ar-XB # These are equivalent. +en-XA >> en-XA +en-PSACCENT >> en-XA # These are equivalent. +ar-PSCRACK >> ar-PSCRACK + +@favor=script +de >> en-DE +en >> en-DE +ar-EG >> ar-SY +pt-BR >> pt +ar-XB >> ar-XB +ar-PSBIDI >> ar-XB # These are equivalent. +en-XA >> en-XA +en-PSACCENT >> en-XA # These are equivalent. +ar-PSCRACK >> ar-PSCRACK + +** test: BestMatchForTraditionalChinese +# Scenario: An application that only supports Simplified Chinese (and some +# other languages), but does not support Traditional Chinese. zh-Hans-CN +# could be replaced with zh-CN, zh, or zh-Hans, it wouldn't make much of a +# difference. +# The script distance (simplified vs. traditional Han) is considered small +# enough to be an acceptable match. The regional difference is considered +# almost insignificant. +@supported=fr, zh-Hans-CN, en-US +zh-TW >> zh-Hans-CN +zh-Hant >> zh-Hans-CN + +# For geopolitical reasons, you might want to avoid a zh-Hant -> zh-Hans +# match. In this case, if zh-TW, zh-HK or a tag starting with zh-Hant is +# requested, you can change your call to getBestMatch to include a 2nd +# language preference. "en" is a better match since its distance to "en-US" +# is closer than the distance from "zh-TW" to "zh-CN" (script distance). +zh-TW, en >> en-US +zh-Hant-CN, en >> en-US +zh-Hans, en >> zh-Hans-CN + +** test: MaxBeforeEquals +# Compare maximized forms of earlier items before testing equality +# of later items. +@supported=en, fr-CA +en-US, fr-CA >> en + +@favor=script +en-US, fr-CA >> en + +** test: SiblingDefaultRegion +@supported=de-AT, de-DE, de-CH +de >> de-DE + +** test: ReturnDefaultInsteadOfNullForEmptyPriorityList +@default=und +de >> und + +** test: ReturnSpecifiedDefaultForNoMatch +@supported=de, en, fr +@default=und +hi >> und + +@favor=script +hi >> und + +** test: MatchedLanguageIgnoresDefault +@supported=de, en, fr +@default=und +fr >> fr + +@favor=script +fr >> fr + +## GenX + +** test: TwoSpanishes +@supported=es, es-MX +@default=und +es-001 >> es +und >> und +ca >> und +gl-ES >> es +es >> es +es-MX >> es-MX +es-002 >> es +es-003 >> es-MX +es-005 >> es-MX +es-019 >> es-MX +es-029 >> es-MX +es-419 >> es-MX +es-142 >> es +es-150 >> es +es-AD >> es +es-AR >> es-MX +es-BO >> es-MX +es-BZ >> es-MX +es-CA >> es-MX +es-CL >> es-MX +es-CO >> es-MX +es-CR >> es-MX +es-CU >> es-MX +es-DO >> es-MX +es-EC >> es-MX +es-ES >> es +es-GI >> es +es-GQ >> es +es-GT >> es-MX +es-HN >> es-MX +es-NI >> es-MX +es-PA >> es-MX +es-PE >> es-MX +es-PH >> es +es-PR >> es-MX +es-PY >> es-MX +es-SV >> es-MX +es-US >> es-MX +es-UY >> es-MX +es-VE >> es-MX + +@favor=script +es-001 >> es +und >> und +ca >> es +gl-ES >> es +es >> es +es-MX >> es-MX +es-002 >> es +es-003 >> es-MX +es-005 >> es-MX +es-019 >> es-MX +es-029 >> es-MX +es-419 >> es-MX +es-142 >> es +es-150 >> es +es-AD >> es +es-AR >> es-MX +es-BO >> es-MX +es-BZ >> es-MX +es-CA >> es-MX +es-CL >> es-MX +es-CO >> es-MX +es-CR >> es-MX +es-CU >> es-MX +es-DO >> es-MX +es-EC >> es-MX +es-ES >> es +es-GI >> es +es-GQ >> es +es-GT >> es-MX +es-HN >> es-MX +es-NI >> es-MX +es-PA >> es-MX +es-PE >> es-MX +es-PH >> es +es-PR >> es-MX +es-PY >> es-MX +es-SV >> es-MX +es-US >> es-MX +es-UY >> es-MX +es-VE >> es-MX + +** test: Three Spanishes +@supported=es, es-419, es-MX +@default=und +es-001 >> es +und >> und +ca >> und +gl-ES >> es +es >> es +es-419 >> es-419 +es-002 >> es +es-003 >> es-419 +es-005 >> es-419 +es-019 >> es-419 +es-029 >> es-419 +es-142 >> es +es-150 >> es +es-AD >> es +es-AR >> es-419 +es-BO >> es-419 +es-BZ >> es-419 +es-CA >> es-419 +es-CL >> es-419 +es-CO >> es-419 +es-CR >> es-419 +es-CU >> es-419 +es-DO >> es-419 +es-EC >> es-419 +es-ES >> es +es-GI >> es +es-GQ >> es +es-GT >> es-419 +es-HN >> es-419 +es-MX >> es-MX +es-NI >> es-419 +es-PA >> es-419 +es-PE >> es-419 +es-PH >> es +es-PR >> es-419 +es-PY >> es-419 +es-SV >> es-419 +es-US >> es-419 +es-UY >> es-419 +es-VE >> es-419 + +@favor=script +es-001 >> es +und >> und +ca >> es +gl-ES >> es +es >> es +es-419 >> es-419 +es-002 >> es +es-003 >> es-419 +es-005 >> es-419 +es-019 >> es-419 +es-029 >> es-419 +es-142 >> es +es-150 >> es +es-AD >> es +es-AR >> es-419 +es-BO >> es-419 +es-BZ >> es-419 +es-CA >> es-419 +es-CL >> es-419 +es-CO >> es-419 +es-CR >> es-419 +es-CU >> es-419 +es-DO >> es-419 +es-EC >> es-419 +es-ES >> es +es-GI >> es +es-GQ >> es +es-GT >> es-419 +es-HN >> es-419 +es-MX >> es-MX +es-NI >> es-419 +es-PA >> es-419 +es-PE >> es-419 +es-PH >> es +es-PR >> es-419 +es-PY >> es-419 +es-SV >> es-419 +es-US >> es-419 +es-UY >> es-419 +es-VE >> es-419 + +** test: Englishes +@supported=en-GB, en-US +@default=und +und >> und +ja >> und +fr-CA >> und + +# Great Britain fallback +en-AU >> en-GB +en-BZ >> en-GB +en-CA >> en-GB +en-IN >> en-GB +en-IE >> en-GB +en-JM >> en-GB +en-NZ >> en-GB +en-PK >> en-GB +en-TT >> en-GB +en-ZA >> en-GB + +# United States fallback +en-US >> en-US +en >> en-US + +@favor=script +und >> und +ja >> und +fr-CA >> en-GB +en-AU >> en-GB +en-BZ >> en-GB +en-CA >> en-GB +en-IN >> en-GB +en-IE >> en-GB +en-JM >> en-GB +en-NZ >> en-GB +en-PK >> en-GB +en-TT >> en-GB +en-ZA >> en-GB +en-US >> en-US +en >> en-US + +** test: TestFallback +# manyEnMatcher +@supported=en-GB, en-US, en, en-AU +@default=und +und >> und +ja >> und +fr-CA >> und + +# nonUsMatcher +fr >> und + +# onlyAuMatcher +@supported=en-AU, ja, ca +fr >> und + +# noEnMatcher +@supported=pl, ja, ca +fr >> und + +@favor=script +@supported=en-GB, en-US, en, en-AU +und >> und +ja >> und +fr-CA >> en-GB +fr >> en-GB +@supported=en-AU, ja, ca +fr >> en-AU +@supported=pl, ja, ca +fr >> pl + +## Go + +** test: basics +@supported=fr, en-GB, en +en-GB >> en-GB +en-US >> en +fr-FR >> fr +ja-JP >> fr + +** test: script fallbacks +@supported=zh-CN, zh-TW, iw +zh-Hant >> zh-TW +zh >> zh-CN +zh-Hans-CN >> zh-CN +zh-Hant-HK >> zh-TW +@default=iw +he-IT >> iw + +@favor=script +he-IT >> iw + +** test: language-specific script fallbacks 1 +@supported=en, sr, nl +sr-Latn >> sr +sh >> en +hr >> en +bs >> en +nl-Cyrl >> en # Mark: Expected value should be en not sr. Script difference exceeds threshold, so can't be nl + +@favor=script +sr-Latn >> sr +hr >> en +bs >> en +nl-Cyrl >> sr + +** test: language-specific script fallbacks 2 +@supported=en, sr-Latn +sr >> sr-Latn +sr-Cyrl >> sr-Latn +@default=und +hr >> und + +@favor=script +@default= +sr >> sr-Latn +sr-Cyrl >> sr-Latn +@default=und +hr >> en + +** test: don't match hr to sr-Latn +@supported=en, sr-Latn +hr >> en + +@favor=script +hr >> en + +** test: both deprecated and not +@supported=fil, tl, iw, he +he-IT >> iw +he >> iw +iw >> iw +fil-IT >> fil +fil >> fil +tl >> fil + +@favor=script +he-IT >> iw +he >> iw +iw >> iw +fil-IT >> fil +fil >> fil +tl >> fil + +** test: nearby languages: Nynorsk to BokmÃ¥l +@supported=en, nb +nn >> nb + +@favor=script +nn >> nb + +** test: nearby languages: Danish does not match nn +@supported=en, nn +da >> en + +@favor=script +da >> en + +** test: nearby languages: Danish matches no +@supported=en, no +da >> no + +@favor=script +da >> no + +** test: nearby languages: Danish matches nb +@supported=en, nb +da >> nb + +** test: prefer matching languages over language variants. +@supported=nn, en-GB +no, en-US >> nn +nb, en-US >> nn + +@favor=script +no, en-US >> nn +nb, en-US >> nn + +** test: deprecated version is closer than same language with other differences +@supported=nl, he, en-GB +iw, en-US >> he + +@favor=script +iw, en-US >> he + +** test: macro equivalent is closer than same language with other differences +@supported=nl, zh, en-GB, no +cmn, en-US >> zh +nb, en-US >> no + +@favor=script +cmn, en-US >> zh +nb, en-US >> no + +** test: legacy equivalent is closer than same language with other differences +@supported=nl, fil, en-GB +tl, en-US >> fil + +@favor=script +tl, en-US >> fil + +** test: distinguish near equivalents +@supported=en, ro, mo, ro-MD +ro >> ro +mo >> ro # ro=mo for the locale matcher +ro-MD >> ro-MD + +@favor=script +ro >> ro +mo >> ro # ro=mo for the locale matcher +ro-MD >> ro-MD + +** test: maximization of legacy +@supported=sr-Cyrl, sr-Latn, ro, ro-MD +sh >> sr-Latn +mo >> ro + +@favor=script +sh >> sr-Latn +mo >> ro + +** test: empty +fr >> null +en >> null + +** test: private use subtags +@supported=fr, en-GB, x-bork, es-ES, es-419 +x-piglatin >> fr +x-bork >> x-bork + +** test: grandfathered codes +@supported=fr, i-klingon, en-Latn-US +en-GB-oed >> en-Latn-US +i-klingon >> tlh + + +** test: simple variant match +@supported=fr, en-GB, ja, es-ES, es-MX +de, en-US >> en-GB +de, zh >> fr + +** test: best match for traditional Chinese +@supported=fr, zh-Hans-CN, en-US +zh-TW >> zh-Hans-CN +zh-Hant >> zh-Hans-CN +zh-TW, en >> en-US +zh-Hant-CN, en >> en-US +zh-Hans, en >> zh-Hans-CN + +** test: return first among likely-subtags equivalent locales +# Was: more specific script should win in case regions are identical +# with some different results. +@supported=af, af-Latn, af-Arab +af >> af +af-ZA >> af +af-Latn-ZA >> af +af-Latn >> af + +@favor=script +af >> af +af-ZA >> af +af-Latn-ZA >> af +af-Latn >> af + +# Was: more specific region should win +# with some different results. +@supported=nl, nl-NL, nl-BE +@favor= +nl >> nl +nl-Latn >> nl +nl-Latn-NL >> nl +nl-NL >> nl + +@favor=script +nl >> nl +nl-Latn >> nl +nl-Latn-NL >> nl +nl-NL >> nl + +# Was: more specific region wins over more specific script +# with some different results. +@supported=nl, nl-Latn, nl-NL, nl-BE +@favor= +nl >> nl +nl-Latn >> nl +nl-NL >> nl +nl-Latn-NL >> nl + +@favor=script +nl >> nl +nl-Latn >> nl +nl-NL >> nl +nl-Latn-NL >> nl + +** test: region may replace matched if matched is enclosing +@supported=es-419, es +@default=es-MX +es-MX >> es-419 +@default= +es-SG >> es + +@favor=script +@default=es-MX +es-MX >> es-419 +@default= +es-SG >> es + +** test: region distance Portuguese +@supported=pt, pt-PT +pt-ES >> pt-PT + +@favor=script +pt-ES >> pt-PT + +** test: if no preferred locale specified, pick top language, not regional +@supported=en, fr, fr-CA, fr-CH +fr-US >> fr + +@favor=script +fr-US >> fr + +** test: region distance German +@supported=de-AT, de-DE, de-CH +de >> de-DE + +** test: en-AU is closer to en-GB than to en (which is en-US) +@supported=en, en-GB, es-ES, es-419 +en-AU >> en-GB +@default=es-MX +es-MX >> es-419 +@default= +es-PT >> es-ES + +@favor=script +en-AU >> en-GB +es-MX >> es-419 +@default= +es-PT >> es-ES + +** test: undefined +@supported=it, fr +und >> it + +** test: und does not match en +@supported=it, en +und >> it + +** test: undefined in priority list +@supported=it, und +und >> und +en >> it + +** test: undefined +@supported=it, fr, zh +und-FR >> fr +und-CN >> zh +und-Hans >> zh +und-Hant >> zh +und-Latn >> it + +@favor=script +und-FR >> fr +und-CN >> zh +und-Hans >> zh +und-Hant >> zh +und-Latn >> it + +** test: match on maximized tag +@supported=fr, en-GB, ja, es-ES, es-MX +ja-JP, en-GB >> ja +ja-Jpan-JP, en-GB >> ja + +** test: pick best maximized tag +@supported=ja, ja-Jpan-US, ja-JP, en, ru +ja-Jpan, ru >> ja +ja-JP, ru >> ja +ja-US, ru >> ja-Jpan-US + +@favor=script +ja-Jpan, ru >> ja +ja-JP, ru >> ja +ja-US, ru >> ja-Jpan-US + +** test: termination: pick best maximized match +@supported=ja, ja-Jpan, ja-JP, en, ru +ja-Jpan-JP, ru >> ja +ja-Jpan, ru >> ja + +@favor=script +ja-Jpan-JP, ru >> ja +ja-Jpan, ru >> ja + +** test: same language over exact, but distinguish when user is explicit +@supported=fr, en-GB, ja, es-ES, es-MX +ja, de >> ja +@supported=en, de, fr, ja +de-CH, fr >> de +@supported=en-GB, nl +en, nl >> en-GB +en, nl, en-GB >> en-GB + +@favor=script +@supported=fr, en-GB, ja, es-ES, es-MX +ja, de >> ja +@supported=en, de, fr, ja +de-CH, fr >> de +@supported=en-GB, nl +en, nl >> en-GB +en, nl, en-GB >> en-GB + +** test: parent relation preserved +@supported=en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK +en-150 >> en-GB +en-AU >> en-GB +en-BE >> en-GB +en-GG >> en-GB +en-GI >> en-GB +en-HK >> en-GB +en-IE >> en-GB +en-IM >> en-GB +en-IN >> en-GB +en-JE >> en-GB +en-MT >> en-GB +en-NZ >> en-GB +en-PK >> en-GB +en-SG >> en-GB +en-DE >> en-GB +@default=es-AR +es-AR >> es-419 +@default=es-BO +es-BO >> es-419 +@default=es-CL +es-CL >> es-419 +@default=es-CO +es-CO >> es-419 +@default=es-CR +es-CR >> es-419 +@default=es-CU +es-CU >> es-419 +@default=es-DO +es-DO >> es-419 +@default=es-EC +es-EC >> es-419 +@default=es-GT +es-GT >> es-419 +@default=es-HN +es-HN >> es-419 +@default=es-MX +es-MX >> es-419 +@default=es-NI +es-NI >> es-419 +@default=es-PA +es-PA >> es-419 +@default=es-PE +es-PE >> es-419 +@default=es-PR +es-PR >> es-419 +@default= +es-PT >> es +@default=es-PY +es-PY >> es-419 +@default=es-SV +es-SV >> es-419 +@default= +es-US >> es-419 +@default=es-UY +es-UY >> es-419 +@default=es-VE +es-VE >> es-419 +@default= +pt-AO >> pt-PT +pt-CV >> pt-PT +pt-GW >> pt-PT +pt-MO >> pt-PT +pt-MZ >> pt-PT +pt-ST >> pt-PT +pt-TL >> pt-PT + +@favor=script +en-150 >> en-GB +en-AU >> en-GB +en-BE >> en-GB +en-GG >> en-GB +en-GI >> en-GB +en-HK >> en-GB +en-IE >> en-GB +en-IM >> en-GB +en-IN >> en-GB +en-JE >> en-GB +en-MT >> en-GB +en-NZ >> en-GB +en-PK >> en-GB +en-SG >> en-GB +en-DE >> en-GB +@default=es-AR +es-AR >> es-419 +@default=es-BO +es-BO >> es-419 +@default=es-CL +es-CL >> es-419 +@default=es-CO +es-CO >> es-419 +@default=es-CR +es-CR >> es-419 +@default=es-CU +es-CU >> es-419 +@default=es-DO +es-DO >> es-419 +@default=es-EC +es-EC >> es-419 +@default=es-GT +es-GT >> es-419 +@default=es-HN +es-HN >> es-419 +@default=es-MX +es-MX >> es-419 +@default=es-NI +es-NI >> es-419 +@default=es-PA +es-PA >> es-419 +@default=es-PE +es-PE >> es-419 +@default=es-PR +es-PR >> es-419 +@default= +es-PT >> es +@default=es-PY +es-PY >> es-419 +@default=es-SV +es-SV >> es-419 +@default= +es-US >> es-419 +@default=es-UY +es-UY >> es-419 +@default=es-VE +es-VE >> es-419 +@default= +pt-AO >> pt-PT +pt-CV >> pt-PT +pt-GW >> pt-PT +pt-MO >> pt-PT +pt-MZ >> pt-PT +pt-ST >> pt-PT +pt-TL >> pt-PT + +** test: preserve extensions +@supported=en, de, sl-NEDIS +@default=de-u-co-phonebk +de-FR-u-co-phonebk >> de +@default=sl-NEDIS-u-cu-eur +sl-NEDIS-u-cu-eur >> sl-NEDIS +sl-u-cu-eur >> sl-NEDIS +sl-HR-NEDIS-u-cu-eur >> sl-NEDIS +@default=de-t-m0-iso-i0-pinyin +de-t-m0-iso-i0-pinyin >> de + +@favor=script +@default=de-u-co-phonebk +de-FR-u-co-phonebk >> de +@default=sl-NEDIS-u-cu-eur +sl-NEDIS-u-cu-eur >> sl-NEDIS +sl-u-cu-eur >> sl-NEDIS +sl-HR-NEDIS-u-cu-eur >> sl-NEDIS +@default=de-t-m0-iso-i0-pinyin +de-t-m0-iso-i0-pinyin >> de + +## ULS + +** test: testEmptyUserLanguagesGetsEmpty_getBestMatches +@supported=de + >> de + +** test: testNoStrongMatchGetsEmpty_getBestMatches +@supported=de +fr >> de + +@favor=script +fr >> de + +** test: testLooseMatchForGeneral_getBestMatches +@supported=es-419 +es-MX >> es-419 + +@favor=script +es-MX >> es-419 + +** test: testLooseMatchForEnglish_getBestMatches +@supported=en, en-GB +en-CA >> en-GB + +@favor=script +en-CA >> en-GB + +** test: testLooseMatchForChinese_getBestMatches +@supported=zh +zh-TW >> zh + +@favor=script +zh-TW >> zh + +## Geo + +** test: testGetBestMatchWithMinMatchScore +@supported=fr-FR, fr, fr-CA, en +@default=und +fr >> fr-FR # First likely-subtags equivalent match is chosen. +@supported=en, fr, fr-CA +fr-FR >> fr # Parent match is chosen. +@supported=en, fr-CA +fr-FR >> fr-CA # Sibling match is chosen. +@supported=fr-CA, fr-FR +fr >> fr-FR # Inferred region match is chosen. +fr-SN >> fr-CA +@supported=en, fr-FR +fr >> fr-FR # Child match is chosen. +@supported=de, en, it +fr >> und +@supported=iw, en +iw-Latn >> und +@supported=iw, no +ru >> und +@supported=iw-Latn, iw-Cyrl, iw +ru >> und +@supported=iw, iw-Latn +ru >> und +en >> und +@supported=en, uk +ru >> und +@supported=zh-TW, en +zh-CN >> zh-TW +@supported=ja +ru >> und + +@favor=script +@supported=fr-FR, fr, fr-CA, en +fr >> fr-FR +@supported=en, fr, fr-CA +fr-FR >> fr +@supported=en, fr-CA +fr-FR >> fr-CA +@supported=fr-CA, fr-FR +fr >> fr-FR +fr-SN >> fr-CA +@supported=en, fr-FR +fr >> fr-FR +@supported=de, en, it +fr >> en +@supported=iw, en +iw-Latn >> en +@supported=iw, no +ru >> und +@supported=iw-Latn, iw-Cyrl, iw +ru >> iw-Cyrl +@supported=iw, iw-Latn +ru >> und +en >> iw-Latn +@supported=en, uk +ru >> uk +@supported=zh-TW, en +zh-CN >> zh-TW +@supported=ja +ru >> und diff --git a/source/test/testdata/numberformattestspecification.txt b/source/test/testdata/numberformattestspecification.txt index b48cc6c..aa4fa3c 100644 --- a/source/test/testdata/numberformattestspecification.txt +++ b/source/test/testdata/numberformattestspecification.txt @@ -10,7 +10,6 @@ // per line. // // Field names: -// H = ICU4J 58 (archive) // J = ICU4J (current) // K = JDK (ignored if not OpenJDK 1.8) // C = ICU4C (current) @@ -25,7 +24,7 @@ set locale ar-EG set pattern +0;-# begin format output breaks -6 \u061C+\u0666 HK +6 \u061C+\u0666 K -6 \u061C-\u0666 K test basic patterns @@ -188,7 +187,7 @@ pattern format output breaks // JDK gives 12,3001E3 ##0.000#E0 12300.1 12,30E3 K ##0.000#E0 12301 12,301E3 -0.05E0 12301.2 1,25E4 HK +0.05E0 12301.2 1,25E4 K ##0.000#E0 0.17 170,0E-3 // JDK doesn't support significant digits in exponents @@@E0 6.235 6,24E0 K @@ -270,17 +269,16 @@ $**####,##0 1234 $***1\u202f234 K ####,##0$*x;n#'*' -1234 n1\u202f234*xx K *y%4.2###### 4.33 yyyy%432,6 K // In J ICU adds padding as if 'EUR' is only 2 chars (2 * 0xa4) -\u00a4\u00a4 **####0.00 433.0 EUR *433,00 HK -// In H ICU adds padding as if 'EUR' is only 2 chars (2 * 0xa4) +\u00a4\u00a4 **####0.00 433.0 EUR *433,00 K // P fails this one because the test code bypasses CurrencyUsage -\u00a4\u00a4 **#######0 433.0 EUR *433,00 HKP +\u00a4\u00a4 **#######0 433.0 EUR *433,00 KP test padding and currencies begin locale currency pattern format output breaks // In J, JPY is considered 2 char (2 * 0xa4) even though padding is done // after prefix. In C this test works. -fr JPY \u00a4\u00a4 **#######0 433.22 JPY ****433 HK +fr JPY \u00a4\u00a4 **#######0 433.22 JPY ****433 K // JDK doesn't correct rounding for currency, shows USD (433 en USD \u00a4\u00a4 **#######0;\u00a4\u00a4 (#) -433.22 USD (433.22) K @@ -310,9 +308,7 @@ set pattern #,##0 set minGroupingDigits 2 begin format output breaks -// min grouping digits not supported in any existing implementation -// but could be easily added to the new DecimalFormat C code. -1000 1000 HK +1000 1000 K 10000 10,000 100000 100,000 1000000 1,000,000 @@ -351,7 +347,7 @@ minIntegerDigits maxIntegerDigits minFractionDigits maxFractionDigits output bre // JDK gives E0 instead of allowing for unlimited precision 0 0 0 0 2.99792458E8 K // J gives 2.9979E8 -0 1 0 5 2.99792E8 HK +0 1 0 5 2.99792E8 K // JDK gives 300E6 0 3 0 0 299.792458E6 K // JDK gives 299.8E6 (maybe maxInt + maxFrac instead of minInt + maxFrac)? @@ -368,7 +364,7 @@ minIntegerDigits maxIntegerDigits minFractionDigits maxFractionDigits output bre // JDK gives E0 0 0 1 0 2.99792458E8 K // J gives 2.998E8 -0 0 0 4 .29979E9 HK +0 0 0 4 .29979E9 K // According to the spec, if maxInt>minInt and minInt>1, then set // Context: #13289 2 8 1 6 2.9979246E8 K @@ -423,7 +419,7 @@ begin format maxIntegerDigits output breaks 123 1 3 // C obeys maxIntegerDigits and prints after the decimal place -0 0 .0 HKP +0 0 .0 KP // CJP ignore max integer if it is less than zero and prints "123" 123 -2147483648 0 CJP 12345 1 5 @@ -516,7 +512,7 @@ begin output grouping grouping2 minGroupingDigits breaks 1,23,45,6789 4 2 2 K 123,456789 6 6 3 -123456789 6 6 4 HK +123456789 6 6 4 K test multiplier setters set locale en_US @@ -524,10 +520,10 @@ begin format multiplier output breaks 23 -12 -276 23 -1 -23 -// H (ICU4J 58) and J (current ICU4J) throw exception on zero multiplier. +// J (current ICU4J) throws exception on zero multiplier. // ICU4C prints 23. // Q multiplies by zero and prints 0. -23 0 0 CHJ +23 0 0 CJ 23 1 23 23 12 276 -23 12 -276 @@ -599,12 +595,12 @@ begin currency currencyUsage toPattern breaks // These work in J, but it prepends an extra hash sign to the pattern. // K does not support this feature. -USD standard 0.00 HK -CHF standard 0.00 HK -CZK standard 0.00 HK -USD cash 0.00 HK -CHF cash 0.05 HK -CZK cash 0 HK +USD standard 0.00 K +CHF standard 0.00 K +CZK standard 0.00 K +USD cash 0.00 K +CHF cash 0.05 K +CZK cash 0 K test currency rounding set locale en @@ -688,7 +684,7 @@ Inf [\u221e] -Inf (\u221e) K // J does not print the affixes // K prints \uFFFD -NaN [NaN] HK +NaN [NaN] K test nan and infinity with multiplication set locale en @@ -711,10 +707,10 @@ Inf beforeSuffix $$$\u221e $ K Inf afterSuffix $$$\u221e$ K // J does not print the affixes // K prints \uFFFD -NaN beforePrefix $$$NaN$ HK -NaN afterPrefix $$$ NaN$ HK -NaN beforeSuffix $$$NaN $ HK -NaN afterSuffix $$$NaN$ HK +NaN beforePrefix $$$NaN$ K +NaN afterPrefix $$$ NaN$ K +NaN beforeSuffix $$$NaN $ K +NaN afterSuffix $$$NaN$ K test apply formerly localized patterns begin @@ -742,8 +738,7 @@ begin pattern toPattern breaks // All of the C and S failures in this section are because of functionally equivalent patterns // JDK doesn't support any patterns with padding or both negative prefix and suffix -// Breaks ICU4J See ticket 11671 -**0,000 **0,000 HK +**0,000 **0,000 K **##0,000 **##0,000 K **###0,000 **###0,000 K **####0,000 **#,##0,000 CJKP @@ -783,25 +778,24 @@ parse output breaks +5347,,, 5347 +5347,,,d8 5347 (5,347.25) -5347.25 -// H requires prefix and suffix for lenient parsing, but C doesn't -5,347.25 5347.25 HK -(5,347.25 -5347.25 H +5,347.25 5347.25 K +(5,347.25 -5347.25 // S is successful at parsing this as -5347.25 in lenient mode --5,347.25 -5347.25 HK +-5,347.25 -5347.25 K +3.52E4 35200 (34.8E-3) -0.0348 // JDK stops parsing at the spaces. JDK doesn't see space as a grouping separator (34 25E-1) -342.5 K (34,,25E-1) -342.5 // Trailing grouping separators are not OK. -// H fails; C/J/P stop at the offending separator. +// C/J/P stop at the offending separator. (34,,25,E-1) fail CJKP -(34,,25,E-1) -3425 HK -(34 25 E-1) -342.5 HK -(34,,25 E-1) -342.5 HK +(34,,25,E-1) -3425 K +(34 25 E-1) -342.5 K +(34,,25 E-1) -342.5 K // Spaces are not allowed after exponent symbol -// C parses up to the E but H bails -(34 25E -1) -3425 HK +// C parses up to the E +(34 25E -1) -3425 K +3.52EE4 3.52 +1,234,567.8901 1234567.8901 +1,23,4567.8901 1234567.8901 @@ -818,29 +812,21 @@ parse output breaks + 79 79 K +,79,,20,33 792033 +7920d3 7920 -// Whitespace immediately after prefix doesn't count as digit separator -// in C but is does in H -+ ,79,,20,33 792033 HK +// Whitespace immediately after prefix doesn't count as digit separator in C ++ ,79,,20,33 792033 K ( 19 45) -1945 K // C allows trailing separators when there is a prefix and suffix. -// H allows trailing separators only when there is just a prefix. -// In this case, H just bails -( 19 45 ) -1945 HK +( 19 45 ) -1945 K (,,19,45) -1945 -// C parses to the space, but H bails -(,,19 45) -19 H -// H bails b/c comma different separator than space. C doesn't treat leading spaces -// as a separator. -( 19,45) -1945 HK -// H bails. Doesn't allow trailing separators when there is prefix and suffix. -(,,19,45,) -1945 H -// H bails on next 4 because H doesn't allow letters inside prefix and suffix. +// C parses to the spaces +(,,19 45) -19 +( 19,45) -1945 K +(,,19,45,) -1945 // C will parse up to the letter. -(,,19,45,d1) -1945 H -(,,19,45d1) -1945 H -( 19 45 d1) -1945 HK -( 19 45d1) -1945 HK -// H does allow trailing separator before a decimal point +(,,19,45,d1) -1945 +(,,19,45d1) -1945 +( 19 45 d1) -1945 K +( 19 45d1) -1945 K (19,45,.25) -1945.25 // 2nd decimal points are ignored +4.12.926 4.12 @@ -851,18 +837,16 @@ set pattern #,##0.0###+;#- begin parse output breaks // J and K just bail. -3426 3426 HK +3426 3426 K 3426+ 3426 // J bails; K sees -34 -34 d1+ 34 HK +34 d1+ 34 K // JDK sees this as -1234 for some reason -// H bails b/c of trailing separators -1,234,,,+ 1234 HK +1,234,,,+ 1234 K 1,234- -1234 -// H, C, and P bail because of trailing separators -1,234,- -1234 CHJP -// J bails here too -1234 - -1234 H +// C and P bail because of trailing separators +1,234,- -1234 CJP +1234 - -1234 @@ -888,8 +872,7 @@ parse output breaks (3425E-1) -342.5 // Strict doesn't allow separators in sci notation. (63,425) -63425 -// H does not allow grouping separators in scientific notation. -(63,425E-1) -6342.5 H +(63,425E-1) -6342.5 // Both prefix and suffix needed for strict. // JDK accepts this and parses as -342.5 (3425E-1 fail K @@ -913,8 +896,7 @@ parse output breaks +1,234.5 1234.5 // Comma after decimal means parse to a comma +1,23,456.78,9 123456.78 -// H fails upon seeing the second decimal point -+1,23,456.78.9 123456.78 H ++1,23,456.78.9 123456.78 +79 79 +79 79 + 79 fail @@ -952,8 +934,7 @@ set parseIntegerOnly 1 begin parse output breaks 35 35 -// S accepts leading plus signs -+35 35 HK ++35 35 K -35 -35 2.63 2 -39.99 -39 @@ -967,8 +948,8 @@ parseNoExponent parse output breaks 0 5e2 500 K 0 5.3E2 530 // See ticket 11725 -1 5e2 5 H -1 5.3E2 5.3 HK +1 5e2 5 +1 5.3E2 5.3 K test parse currency fail set pattern 0 @@ -1006,8 +987,8 @@ begin parse output breaks // A non-greedy parse is required to pass these cases. // All of the implementations being tested are greedy. -6549K 654 CHJKP -6549N -654 CHJKP +6549K 654 CJKP +6549N -654 CJKP test really strange prefix set locale en @@ -1076,41 +1057,41 @@ parse output outputCurrency breaks $53.45 53.45 USD C 53.45 USD 53.45 USD 53.45 GBP 53.45 GBP -USD 53.45 53.45 USD H -53.45USD 53.45 USD H +USD 53.45 53.45 USD +53.45USD 53.45 USD USD53.45 53.45 USD (7.92) USD -7.92 USD (7.92) GBP -7.92 GBP (7.926) USD -7.926 USD -(7.926 USD) -7.926 USD H -(USD 7.926) -7.926 USD H -USD (7.926) -7.926 USD H -USD (7.92) -7.92 USD H -(7.92)USD -7.92 USD H -USD(7.92) -7.92 USD H +(7.926 USD) -7.926 USD +(USD 7.926) -7.926 USD +USD (7.926) -7.926 USD +USD (7.92) -7.92 USD +(7.92)USD -7.92 USD +USD(7.92) -7.92 USD (8) USD -8 USD -8 USD -8 USD 67 USD 67 USD -53.45$ 53.45 USD CH -US Dollars 53.45 53.45 USD H +53.45$ 53.45 USD C +US Dollars 53.45 53.45 USD 53.45 US Dollars 53.45 USD -US Dollar 53.45 53.45 USD H +US Dollar 53.45 53.45 USD 53.45 US Dollar 53.45 USD US Dollars53.45 53.45 USD -53.45US Dollars 53.45 USD H +53.45US Dollars 53.45 USD US Dollar53.45 53.45 USD US Dollat53.45 fail USD -53.45US Dollar 53.45 USD H -US Dollars (53.45) -53.45 USD H +53.45US Dollar 53.45 USD +US Dollars (53.45) -53.45 USD (53.45) US Dollars -53.45 USD (53.45) Euros -53.45 EUR -US Dollar (53.45) -53.45 USD H +US Dollar (53.45) -53.45 USD (53.45) US Dollar -53.45 USD -US Dollars(53.45) -53.45 USD H -(53.45)US Dollars -53.45 USD H -US Dollar(53.45) -53.45 USD H +US Dollars(53.45) -53.45 USD +(53.45)US Dollars -53.45 USD +US Dollar(53.45) -53.45 USD US Dollat(53.45) fail USD -(53.45)US Dollar -53.45 USD H +(53.45)US Dollar -53.45 USD test parse currency ISO negative @@ -1123,27 +1104,27 @@ parse output outputCurrency breaks $53.45 53.45 USD C 53.45 USD 53.45 USD 53.45 GBP 53.45 GBP -USD 53.45 53.45 USD H -53.45USD 53.45 USD H +USD 53.45 53.45 USD +53.45USD 53.45 USD USD53.45 53.45 USD -7.92 USD -7.92 USD -7.92 GBP -7.92 GBP -7.926 USD -7.926 USD -USD -7.926 -7.926 USD H --7.92USD -7.92 USD H -USD-7.92 -7.92 USD H +USD -7.926 -7.926 USD +-7.92USD -7.92 USD +USD-7.92 -7.92 USD -8 USD -8 USD 67 USD 67 USD -53.45$ 53.45 USD CH -US Dollars 53.45 53.45 USD H +53.45$ 53.45 USD C +US Dollars 53.45 53.45 USD 53.45 US Dollars 53.45 USD -US Dollar 53.45 53.45 USD H +US Dollar 53.45 53.45 USD 53.45 US Dollar 53.45 USD US Dollars53.45 53.45 USD -53.45US Dollars 53.45 USD H +53.45US Dollars 53.45 USD US Dollar53.45 53.45 USD US Dollat53.45 fail USD -53.45US Dollar 53.45 USD H +53.45US Dollar 53.45 USD test parse currency long @@ -1151,38 +1132,36 @@ set pattern 0.00 \u00a4\u00a4\u00a4;(#) \u00a4\u00a4\u00a4 set locale en_GB begin parse output outputCurrency breaks -// H throws a NullPointerException on the first case 53.45 fail GBP £53.45 53.45 GBP $53.45 53.45 USD C 53.45 USD 53.45 USD 53.45 GBP 53.45 GBP -USD 53.45 53.45 USD H -53.45USD 53.45 USD H +USD 53.45 53.45 USD +53.45USD 53.45 USD USD53.45 53.45 USD (7.92) USD -7.92 USD (7.92) GBP -7.92 GBP (7.926) USD -7.926 USD -(7.926 USD) -7.926 USD H -(USD 7.926) -7.926 USD H -USD (7.926) -7.926 USD H -USD (7.92) -7.92 USD H -(7.92)USD -7.92 USD H -USD(7.92) -7.92 USD H +(7.926 USD) -7.926 USD +(USD 7.926) -7.926 USD +USD (7.926) -7.926 USD +USD (7.92) -7.92 USD +(7.92)USD -7.92 USD +USD(7.92) -7.92 USD (8) USD -8 USD -8 USD -8 USD 67 USD 67 USD -// H throws a NullPointerException on the next case -53.45$ 53.45 USD CH -US Dollars 53.45 53.45 USD H +53.45$ 53.45 USD C +US Dollars 53.45 53.45 USD 53.45 US Dollars 53.45 USD -US Dollar 53.45 53.45 USD H +US Dollar 53.45 53.45 USD 53.45 US Dollar 53.45 USD US Dollars53.45 53.45 USD -53.45US Dollars 53.45 USD H +53.45US Dollars 53.45 USD US Dollar53.45 53.45 USD US Dollat53.45 fail USD -53.45US Dollar 53.45 USD H +53.45US Dollar 53.45 USD test parse currency short @@ -1195,31 +1174,31 @@ parse output outputCurrency breaks $53.45 53.45 USD C 53.45 USD 53.45 USD 53.45 GBP 53.45 GBP -USD 53.45 53.45 USD H -53.45USD 53.45 USD H +USD 53.45 53.45 USD +53.45USD 53.45 USD USD53.45 53.45 USD (7.92) USD -7.92 USD (7.92) GBP -7.92 GBP (7.926) USD -7.926 USD -(7.926 USD) -7.926 USD H -(USD 7.926) -7.926 USD H -USD (7.926) -7.926 USD H -USD (7.92) -7.92 USD H -(7.92)USD -7.92 USD H -USD(7.92) -7.92 USD H +(7.926 USD) -7.926 USD +(USD 7.926) -7.926 USD +USD (7.926) -7.926 USD +USD (7.92) -7.92 USD +(7.92)USD -7.92 USD +USD(7.92) -7.92 USD (8) USD -8 USD -8 USD -8 USD 67 USD 67 USD -53.45$ 53.45 USD CH -US Dollars 53.45 53.45 USD H +53.45$ 53.45 USD C +US Dollars 53.45 53.45 USD 53.45 US Dollars 53.45 USD -US Dollar 53.45 53.45 USD H +US Dollar 53.45 53.45 USD 53.45 US Dollar 53.45 USD US Dollars53.45 53.45 USD -53.45US Dollars 53.45 USD H +53.45US Dollars 53.45 USD US Dollar53.45 53.45 USD US Dollat53.45 fail USD -53.45US Dollar 53.45 USD H +53.45US Dollar 53.45 USD test parse currency short prefix @@ -1232,31 +1211,31 @@ parse output outputCurrency breaks $53.45 53.45 USD C 53.45 USD 53.45 USD 53.45 GBP 53.45 GBP -USD 53.45 53.45 USD H -53.45USD 53.45 USD H +USD 53.45 53.45 USD +53.45USD 53.45 USD USD53.45 53.45 USD // C and P fail these because '(' is an incomplete prefix. -(7.92) USD -7.92 USD CHJP -(7.92) GBP -7.92 GBP CHJP -(7.926) USD -7.926 USD CHJP -(7.926 USD) -7.926 USD CHJP -(USD 7.926) -7.926 USD H -USD (7.926) -7.926 USD CHJP -USD (7.92) -7.92 USD CHJP -(7.92)USD -7.92 USD CHJP -USD(7.92) -7.92 USD CHJP -(8) USD -8 USD CHJP +(7.92) USD -7.92 USD CJP +(7.92) GBP -7.92 GBP CJP +(7.926) USD -7.926 USD CJP +(7.926 USD) -7.926 USD CJP +(USD 7.926) -7.926 USD +USD (7.926) -7.926 USD CJP +USD (7.92) -7.92 USD CJP +(7.92)USD -7.92 USD CJP +USD(7.92) -7.92 USD CJP +(8) USD -8 USD CJP -8 USD -8 USD 67 USD 67 USD -53.45$ 53.45 USD CH -US Dollars 53.45 53.45 USD H +53.45$ 53.45 USD C +US Dollars 53.45 53.45 USD 53.45 US Dollars 53.45 USD -US Dollar 53.45 53.45 USD H +US Dollar 53.45 53.45 USD 53.45 US Dollar 53.45 USD US Dollars53.45 53.45 USD -53.45US Dollars 53.45 USD H +53.45US Dollars 53.45 USD US Dollar53.45 53.45 USD -53.45US Dollar 53.45 USD H +53.45US Dollar 53.45 USD test format foreign currency set locale fa_IR @@ -1371,7 +1350,7 @@ USD (7.92) fail USD (7.92)USD fail USD USD(7.92) fail USD (8) USD -8 USD --8 USD fail USD H +-8 USD fail USD 67 USD 67 USD 53.45$ fail USD US Dollars 53.45 fail USD @@ -1400,7 +1379,7 @@ set minFractionDigits 0 set maxFractionDigits 0 begin format output breaks --0.99 -0 HK +-0.99 -0 K test parse decimalPatternMatchRequired set locale en @@ -1409,11 +1388,11 @@ begin pattern parse output breaks // K doesn't support this feature. 0 123 123 -0 123. fail HK -0 1.23 fail HK +0 123. fail K +0 1.23 fail K 0 -513 -513 -0 -513. fail HK -0 -5.13 fail HK +0 -513. fail K +0 -5.13 fail K 0.0 123 fail K 0.0 123. 123 0.0 1.23 1.23 @@ -1427,13 +1406,13 @@ set pattern # begin pattern parse output breaks # -123 -123 -# - 123 -123 HK -# -123 -123 HK -# - 123 -123 HK +# - 123 -123 K +# -123 -123 K +# - 123 -123 K # 123- 123 # 123 - 123 #;#- 123- -123 -#;#- 123 - -123 HK +#;#- 123 - -123 K test parse case sensitive set locale en @@ -1444,19 +1423,18 @@ parse parseCaseSensitive output breaks Aa1.23 1 1.23 Aa1.23 0 1.23 AA1.23 1 fail -// H and K do not support case-insensitive parsing for prefix/suffix. -// H supports it for the exponent separator, but not K. -AA1.23 0 1.23 HK +// K does not support case-insensitive parsing for prefix/suffix. +AA1.23 0 1.23 K aa1.23 1 fail -aa1.23 0 1.23 HK +aa1.23 0 1.23 K Aa1.23E3 1 1230 Aa1.23E3 0 1230 -Aa1.23e3 1 1.23 H +Aa1.23e3 1 1.23 Aa1.23e3 0 1230 K NaN 1 NaN K NaN 0 NaN K nan 1 fail -nan 0 NaN HK +nan 0 NaN K test parse infinity and scientific notation overflow set locale en @@ -1472,13 +1450,13 @@ NaN NaN K -1E-99999999999999 -0.0 1E2147483648 Inf K 1E2147483647 Inf K -// H, J and K get Infinity -1E2147483646 1E+2147483646 HJK +// J and K get Infinity +1E2147483646 1E+2147483646 JK 1E-2147483649 0 1E-2147483648 0 -// H and K return zero here -1E-2147483647 1E-2147483647 HJK -1E-2147483646 1E-2147483646 HJK +// K returns zero here +1E-2147483647 1E-2147483647 JK +1E-2147483646 1E-2147483646 JK test format push limits set locale en @@ -1506,13 +1484,13 @@ begin pattern lenient parse output breaks // Groups after the first group need 2 digits to be accepted. // JDK does not see space as grouping and parses most of these as 9. -#,##0 1 9 9 9 H +#,##0 1 9 9 9 #,##0 1 9 99 999 K #,##0 1 9 999 9999 K -#,##0 1 9 9 9 9 H +#,##0 1 9 9 9 9 #,##0 1 ,9 9 #,##0 1 99,.0 99 -#,##0 1 9 9. 9 H +#,##0 1 9 9. 9 #,##0 1 9 99. 999 K 0 1 9 9 9 0 1 9 99 9 @@ -1559,36 +1537,36 @@ parse output breaks x a‎b56c df 56 x a‎b56c df 56 K x ab56c df 56 K -x ab56c df 56 HK +x ab56c df 56 K x ab56c df 56 K -x ab56 56 HK -x a b56 56 HK -56cdf 56 HK -56c df 56 HK -56cd f 56 HK -56c‎d‎f 56 HK -56cdf 56 HK -56c d‎f 56 HK -56‎c df 56 HK +x ab56 56 K +x a b56 56 K +56cdf 56 K +56c df 56 K +56cd f 56 K +56c‎d‎f 56 K +56cdf 56 K +56c d‎f 56 K +56‎c df 56 K y g‎h56i jk -56 y g‎h56i jk -56 K y gh56i jk -56 K -y gh56i jk -56 HK +y gh56i jk -56 K y gh56i jk -56 K -y gh56 -56 HK -y g h56 -56 HK +y gh56 -56 K +y g h56 -56 K // S stops parsing after the 'i' for these and returns -56 // C stops before the 'i' and gets 56 -56ijk -56 HK -56i jk -56 HK -56ij k -56 HK -56i‎j‎k -56 HK -56ijk -56 HK -56i j‎k -56 HK -56‎i jk -56 HK -// S and C get 56 (accepts ' ' gs grouping); H and K get null +56ijk -56 K +56i jk -56 K +56ij k -56 K +56i‎j‎k -56 K +56ijk -56 K +56i j‎k -56 K +56‎i jk -56 K +// S and C get 56 (accepts ' ' gs grouping); K gets null 5 6 fail CJP -5‎6 5 HK +5‎6 5 K test parse spaces in grouping // This test gives the ideal behavior of these cases, which @@ -1598,7 +1576,7 @@ set locale en set pattern #,##0 begin parse output breaks -1 2 1 H +1 2 1 1 23 123 K // K gets 1 here; doesn't pick up the grouping separator 1 234 1234 K @@ -1614,7 +1592,7 @@ format output breaks // C and J get "1" // P gets "1.0" // K gets "1.1" (??) -0.975 0.98 CHJKP +0.975 0.98 CJKP test lenient parse currency match // This test is for #13112 @@ -1622,8 +1600,8 @@ set locale en set pattern ¤#,##0.00 begin parse output breaks -// H and K get null -1.23!@#$%^ 1.23 HK +// K gets null +1.23!@#$%^ 1.23 K test percentage parsing multiplier // This test is for #13114 @@ -1632,9 +1610,9 @@ set pattern 0% begin parse output breaks 55% 0.55 -// H and K get null +// K gets null // C and P scale by 100 even if the percent sign is not present -55 0.55 HK +55 0.55 K test trailing grouping separators in pattern // This test is for #13115 @@ -1653,8 +1631,8 @@ begin pattern format output breaks 0 -15 -15 0; -15 -15 -// H and K still prepend a '-' even though the pattern says otherwise -0;0 -15 15 HK +// K still prepends a '-' even though the pattern says otherwise +0;0 -15 15 K test percentage multiplier parsing // This test is for #13129 @@ -1670,9 +1648,9 @@ set pattern 0 set signAlwaysShown 1 begin format output breaks -// H and K do not support this feature -42 +42 HK -0 +0 HK +// K does not support this feature +42 +42 K +0 +0 K -42 -42 test parse strict with plus sign @@ -1683,14 +1661,14 @@ begin lenient parse output breaks 1 42 42 1 -42 -42 -1 +42 42 HK +1 +42 42 K 1 0 0 -1 +0 0 HK -0 42 fail HK +1 +0 0 K +0 42 fail K 0 -42 -42 -0 +42 42 HK -0 0 fail HK -0 +0 0 HK +0 +42 42 K +0 0 fail K +0 +0 0 K test parse with scientific-separator-affix overlap set locale en @@ -1708,13 +1686,13 @@ set currency USD begin parse output breaks USD123 123 -USD 123 123 HK +USD 123 123 K usd123 123 K -usd 123 123 HK +usd 123 123 K Usd123 123 K -Usd 123 123 HK +Usd 123 123 K // US$ is not used for US dollars in en-US -US$123 fail H +US$123 fail us$123 fail Us$123 fail 123 US dollars 123 K @@ -1733,11 +1711,11 @@ set currency USD begin parse output outputCurrency breaks USD123 123 USD -USD 123 123 USD H +USD 123 123 USD usd123 123 USD -usd 123 123 USD H +usd 123 123 USD Usd123 123 USD -Usd 123 123 USD H +Usd 123 123 USD US$123 123 USD C us$123 fail fail Us$123 fail fail @@ -1746,10 +1724,16 @@ Us$123 fail fail 123 us dollars 123 USD GBP123 123 GBP gbp123 123 GBP C -British pounds 123 123 GBP H -british POUNDS 123 123 GBP H - +British pounds 123 123 GBP +british POUNDS 123 123 GBP +test parse scientific with bidi marks +begin +locale parse output breaks +en 4E\u200E+02 400 K +en 4E+02 400 K +he 4E\u200E+02 400 K +he 4E+02 400 K diff --git a/source/test/testdata/numberpermutationtest.txt b/source/test/testdata/numberpermutationtest.txt new file mode 100644 index 0000000..b9c8558 --- /dev/null +++ b/source/test/testdata/numberpermutationtest.txt @@ -0,0 +1,9103 @@ +# © 2019 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +compact-short percent unit-width-narrow + es-MX + 0 % + 92 k + -0.22 % + zh-TW + 0% + 9.2萬 + -0.22% + bn-BD + ০% + ৯২ হা + -০.২২% + +compact-short percent unit-width-full-name + es-MX + 0 % + 92 k + -0.22 % + zh-TW + 0% + 9.2萬 + -0.22% + bn-BD + ০% + ৯২ হা + -০.২২% + +compact-short currency/EUR unit-width-narrow + es-MX + €0 + 92 k€ + -€0.22 + zh-TW + €0 + €9.2萬 + -€0.22 + bn-BD + ০€ + ৯২ হা€ + -০.২২€ + +compact-short currency/EUR unit-width-full-name + es-MX + 0 euros + 92 k euros + -0.22 euros + zh-TW + 0 歐元 + 9.2萬 歐元 + -0.22 歐元 + bn-BD + ০ ইউরো + ৯২ হা ইউরো + -০.২২ ইউরো + +compact-short measure-unit/length-furlong unit-width-narrow + es-MX + 0 fur + 92 k fur + -0.22 fur + zh-TW + 0化朗 + 9.2萬化朗 + -0.22化朗 + bn-BD + ০ ফার্লং + ৯২ হা ফার্লং + -০.২২ ফার্লং + +compact-short measure-unit/length-furlong unit-width-full-name + es-MX + 0 fur + 92 k fur + -0.22 fur + zh-TW + 0 化朗 + 9.2萬 化朗 + -0.22 化朗 + bn-BD + ০ ফার্লং + ৯২ হা ফার্লং + -০.২২ ফার্লং + +scientific/+ee/sign-always percent unit-width-narrow + es-MX + 0E+00 % + 9.182736E+04 % + -2.2222E-01 % + zh-TW + 0E+00% + 9.182736E+04% + -2.2222E-01% + bn-BD + ০E+০০% + ৯.১৮২৭৩৬E+০৪% + -২.২২২২E-০১% + +scientific/+ee/sign-always percent unit-width-full-name + es-MX + 0E+00 % + 9.182736E+04 % + -2.2222E-01 % + zh-TW + 0E+00% + 9.182736E+04% + -2.2222E-01% + bn-BD + ০E+০০% + ৯.১৮২৭৩৬E+০৪% + -২.২২২২E-০১% + +scientific/+ee/sign-always currency/EUR unit-width-narrow + es-MX + €0.00E+00 + €9.18E+04 + -€2.22E-01 + zh-TW + €0.00E+00 + €9.18E+04 + -€2.22E-01 + bn-BD + ০.০০E+০০€ + ৯.১৮E+০৪€ + -২.২২E-০১€ + +scientific/+ee/sign-always currency/EUR unit-width-full-name + es-MX + 0.00E+00 euros + 9.18E+04 euros + -2.22E-01 euros + zh-TW + 0.00E+00 歐元 + 9.18E+04 歐元 + -2.22E-01 歐元 + bn-BD + ০.০০E+০০ ইউরো + ৯.১৮E+০৪ ইউরো + -২.২২E-০১ ইউরো + +scientific/+ee/sign-always measure-unit/length-furlong unit-width-narrow + es-MX + 0E+00 fur + 9.182736E+04 fur + -2.2222E-01 fur + zh-TW + 0E+00化朗 + 9.182736E+04化朗 + -2.2222E-01化朗 + bn-BD + ০E+০০ ফার্লং + ৯.১৮২৭৩৬E+০৪ ফার্লং + -২.২২২২E-০১ ফার্লং + +scientific/+ee/sign-always measure-unit/length-furlong unit-width-full-name + es-MX + 0E+00 fur + 9.182736E+04 fur + -2.2222E-01 fur + zh-TW + 0E+00 化朗 + 9.182736E+04 化朗 + -2.2222E-01 化朗 + bn-BD + ০E+০০ ফার্লং + ৯.১৮২৭৩৬E+০৪ ফার্লং + -২.২২২২E-০১ ফার্লং + +compact-short percent precision-integer + es-MX + 0 % + 92 k + -0 % + zh-TW + 0% + 9萬 + -0% + bn-BD + ০% + ৯২ হা + -০% + +compact-short percent .000 + es-MX + 0.000 % + 91.827 k + -0.222 % + zh-TW + 0.000% + 9.183萬 + -0.222% + bn-BD + ০.০০০% + ৯১.৮২৭ হা + -০.২২২% + +compact-short percent .##/@@@+ + es-MX + 0 % + 91.83 k + -0.222 % + zh-TW + 0% + 9.18萬 + -0.222% + bn-BD + ০% + ৯১.৮৩ হা + -০.২২২% + +compact-short percent @@ + es-MX + 0.0 % + 92 k + -0.22 % + zh-TW + 0.0% + 9.2萬 + -0.22% + bn-BD + ০.০% + ৯২ হা + -০.২২% + +compact-short currency/EUR precision-integer + es-MX + EUR 0 + 92 kEUR + -EUR 0 + zh-TW + €0 + €9萬 + -€0 + bn-BD + ০€ + ৯২ হা€ + -০€ + +compact-short currency/EUR .000 + es-MX + EUR 0.000 + 91.827 kEUR + -EUR 0.222 + zh-TW + €0.000 + €9.183萬 + -€0.222 + bn-BD + ০.০০০€ + ৯১.৮২৭ হা€ + -০.২২২€ + +compact-short currency/EUR .##/@@@+ + es-MX + EUR 0 + 91.83 kEUR + -EUR 0.222 + zh-TW + €0 + €9.18萬 + -€0.222 + bn-BD + ০€ + ৯১.৮৩ হা€ + -০.২২২€ + +compact-short currency/EUR @@ + es-MX + EUR 0.0 + 92 kEUR + -EUR 0.22 + zh-TW + €0.0 + €9.2萬 + -€0.22 + bn-BD + ০.০€ + ৯২ হা€ + -০.২২€ + +compact-short measure-unit/length-furlong precision-integer + es-MX + 0 fur + 92 k fur + -0 fur + zh-TW + 0 化朗 + 9萬 化朗 + -0 化朗 + bn-BD + ০ ফার্লং + ৯২ হা ফার্লং + -০ ফার্লং + +compact-short measure-unit/length-furlong .000 + es-MX + 0.000 fur + 91.827 k fur + -0.222 fur + zh-TW + 0.000 化朗 + 9.183萬 化朗 + -0.222 化朗 + bn-BD + ০.০০০ ফার্লং + ৯১.৮২৭ হা ফার্লং + -০.২২২ ফার্লং + +compact-short measure-unit/length-furlong .##/@@@+ + es-MX + 0 fur + 91.83 k fur + -0.222 fur + zh-TW + 0 化朗 + 9.18萬 化朗 + -0.222 化朗 + bn-BD + ০ ফার্লং + ৯১.৮৩ হা ফার্লং + -০.২২২ ফার্লং + +compact-short measure-unit/length-furlong @@ + es-MX + 0.0 fur + 92 k fur + -0.22 fur + zh-TW + 0.0 化朗 + 9.2萬 化朗 + -0.22 化朗 + bn-BD + ০.০ ফার্লং + ৯২ হা ফার্লং + -০.২২ ফার্লং + +scientific/+ee/sign-always percent precision-integer + es-MX + 0E+00 % + 9E+04 % + -2E-01 % + zh-TW + 0E+00% + 9E+04% + -2E-01% + bn-BD + ০E+০০% + ৯E+০৪% + -২E-০১% + +scientific/+ee/sign-always percent .000 + es-MX + 0.000E+00 % + 9.183E+04 % + -2.222E-01 % + zh-TW + 0.000E+00% + 9.183E+04% + -2.222E-01% + bn-BD + ০.০০০E+০০% + ৯.১৮৩E+০৪% + -২.২২২E-০১% + +scientific/+ee/sign-always percent .##/@@@+ + es-MX + 0E+00 % + 9.18E+04 % + -2.22E-01 % + zh-TW + 0E+00% + 9.18E+04% + -2.22E-01% + bn-BD + ০E+০০% + ৯.১৮E+০৪% + -২.২২E-০১% + +scientific/+ee/sign-always percent @@ + es-MX + 0.0E+00 % + 9.2E+04 % + -2.2E-01 % + zh-TW + 0.0E+00% + 9.2E+04% + -2.2E-01% + bn-BD + ০.০E+০০% + ৯.২E+০৪% + -২.২E-০১% + +scientific/+ee/sign-always currency/EUR precision-integer + es-MX + EUR 0E+00 + EUR 9E+04 + -EUR 2E-01 + zh-TW + €0E+00 + €9E+04 + -€2E-01 + bn-BD + ০E+০০€ + ৯E+০৪€ + -২E-০১€ + +scientific/+ee/sign-always currency/EUR .000 + es-MX + EUR 0.000E+00 + EUR 9.183E+04 + -EUR 2.222E-01 + zh-TW + €0.000E+00 + €9.183E+04 + -€2.222E-01 + bn-BD + ০.০০০E+০০€ + ৯.১৮৩E+০৪€ + -২.২২২E-০১€ + +scientific/+ee/sign-always currency/EUR .##/@@@+ + es-MX + EUR 0E+00 + EUR 9.18E+04 + -EUR 2.22E-01 + zh-TW + €0E+00 + €9.18E+04 + -€2.22E-01 + bn-BD + ০E+০০€ + ৯.১৮E+০৪€ + -২.২২E-০১€ + +scientific/+ee/sign-always currency/EUR @@ + es-MX + EUR 0.0E+00 + EUR 9.2E+04 + -EUR 2.2E-01 + zh-TW + €0.0E+00 + €9.2E+04 + -€2.2E-01 + bn-BD + ০.০E+০০€ + ৯.২E+০৪€ + -২.২E-০১€ + +scientific/+ee/sign-always measure-unit/length-furlong precision-integer + es-MX + 0E+00 fur + 9E+04 fur + -2E-01 fur + zh-TW + 0E+00 化朗 + 9E+04 化朗 + -2E-01 化朗 + bn-BD + ০E+০০ ফার্লং + ৯E+০৪ ফার্লং + -২E-০১ ফার্লং + +scientific/+ee/sign-always measure-unit/length-furlong .000 + es-MX + 0.000E+00 fur + 9.183E+04 fur + -2.222E-01 fur + zh-TW + 0.000E+00 化朗 + 9.183E+04 化朗 + -2.222E-01 化朗 + bn-BD + ০.০০০E+০০ ফার্লং + ৯.১৮৩E+০৪ ফার্লং + -২.২২২E-০১ ফার্লং + +scientific/+ee/sign-always measure-unit/length-furlong .##/@@@+ + es-MX + 0E+00 fur + 9.18E+04 fur + -2.22E-01 fur + zh-TW + 0E+00 化朗 + 9.18E+04 化朗 + -2.22E-01 化朗 + bn-BD + ০E+০০ ফার্লং + ৯.১৮E+০৪ ফার্লং + -২.২২E-০১ ফার্লং + +scientific/+ee/sign-always measure-unit/length-furlong @@ + es-MX + 0.0E+00 fur + 9.2E+04 fur + -2.2E-01 fur + zh-TW + 0.0E+00 化朗 + 9.2E+04 化朗 + -2.2E-01 化朗 + bn-BD + ০.০E+০০ ফার্লং + ৯.২E+০৪ ফার্লং + -২.২E-০১ ফার্লং + +compact-short percent rounding-mode-floor + es-MX + 0 % + 91 k + -0.23 % + zh-TW + 0% + 9.1萬 + -0.23% + bn-BD + ০% + ৯১ হা + -০.২৩% + +compact-short currency/EUR rounding-mode-floor + es-MX + EUR 0 + 91 kEUR + -EUR 0.23 + zh-TW + €0 + €9.1萬 + -€0.23 + bn-BD + ০€ + ৯১ হা€ + -০.২৩€ + +compact-short measure-unit/length-furlong rounding-mode-floor + es-MX + 0 fur + 91 k fur + -0.23 fur + zh-TW + 0 化朗 + 9.1萬 化朗 + -0.23 化朗 + bn-BD + ০ ফার্লং + ৯১ হা ফার্লং + -০.২৩ ফার্লং + +scientific/+ee/sign-always percent rounding-mode-floor + es-MX + 0E+00 % + 9.182736E+04 % + -2.2222E-01 % + zh-TW + 0E+00% + 9.182736E+04% + -2.2222E-01% + bn-BD + ০E+০০% + ৯.১৮২৭৩৬E+০৪% + -২.২২২২E-০১% + +scientific/+ee/sign-always currency/EUR rounding-mode-floor + es-MX + EUR 0.00E+00 + EUR 9.18E+04 + -EUR 2.23E-01 + zh-TW + €0.00E+00 + €9.18E+04 + -€2.23E-01 + bn-BD + ০.০০E+০০€ + ৯.১৮E+০৪€ + -২.২৩E-০১€ + +scientific/+ee/sign-always measure-unit/length-furlong rounding-mode-floor + es-MX + 0E+00 fur + 9.182736E+04 fur + -2.2222E-01 fur + zh-TW + 0E+00 化朗 + 9.182736E+04 化朗 + -2.2222E-01 化朗 + bn-BD + ০E+০০ ফার্লং + ৯.১৮২৭৩৬E+০৪ ফার্লং + -২.২২২২E-০১ ফার্লং + +compact-short percent integer-width/##00 + es-MX + 00 % + 92 k + -00.22 % + zh-TW + 00% + 09.2萬 + -00.22% + bn-BD + ০০% + ৯২ হা + -০০.২২% + +compact-short currency/EUR integer-width/##00 + es-MX + EUR 00 + 92 kEUR + -EUR 00.22 + zh-TW + €00 + €09.2萬 + -€00.22 + bn-BD + ০০€ + ৯২ হা€ + -০০.২২€ + +compact-short measure-unit/length-furlong integer-width/##00 + es-MX + 00 fur + 92 k fur + -00.22 fur + zh-TW + 00 化朗 + 09.2萬 化朗 + -00.22 化朗 + bn-BD + ০০ ফার্লং + ৯২ হা ফার্লং + -০০.২২ ফার্লং + +scientific/+ee/sign-always percent integer-width/##00 + es-MX + 00E+00 % + 09.182736E+04 % + -02.2222E-01 % + zh-TW + 00E+00% + 09.182736E+04% + -02.2222E-01% + bn-BD + ০০E+০০% + ০৯.১৮২৭৩৬E+০৪% + -০২.২২২২E-০১% + +scientific/+ee/sign-always currency/EUR integer-width/##00 + es-MX + EUR 00.00E+00 + EUR 09.18E+04 + -EUR 02.22E-01 + zh-TW + €00.00E+00 + €09.18E+04 + -€02.22E-01 + bn-BD + ০০.০০E+০০€ + ০৯.১৮E+০৪€ + -০২.২২E-০১€ + +scientific/+ee/sign-always measure-unit/length-furlong integer-width/##00 + es-MX + 00E+00 fur + 09.182736E+04 fur + -02.2222E-01 fur + zh-TW + 00E+00 化朗 + 09.182736E+04 化朗 + -02.2222E-01 化朗 + bn-BD + ০০E+০০ ফার্লং + ০৯.১৮২৭৩৬E+০৪ ফার্লং + -০২.২২২২E-০১ ফার্লং + +compact-short percent scale/0.5 + es-MX + 0 % + 46 k + -0.11 % + zh-TW + 0% + 4.6萬 + -0.11% + bn-BD + ০% + ৪৬ হা + -০.১১% + +compact-short currency/EUR scale/0.5 + es-MX + EUR 0 + 46 kEUR + -EUR 0.11 + zh-TW + €0 + €4.6萬 + -€0.11 + bn-BD + ০€ + ৪৬ হা€ + -০.১১€ + +compact-short measure-unit/length-furlong scale/0.5 + es-MX + 0 fur + 46 k fur + -0.11 fur + zh-TW + 0 化朗 + 4.6萬 化朗 + -0.11 化朗 + bn-BD + ০ ফার্লং + ৪৬ হা ফার্লং + -০.১১ ফার্লং + +scientific/+ee/sign-always percent scale/0.5 + es-MX + 0E+00 % + 4.591368E+04 % + -1.1111E-01 % + zh-TW + 0E+00% + 4.591368E+04% + -1.1111E-01% + bn-BD + ০E+০০% + ৪.৫৯১৩৬৮E+০৪% + -১.১১১১E-০১% + +scientific/+ee/sign-always currency/EUR scale/0.5 + es-MX + EUR 0.00E+00 + EUR 4.59E+04 + -EUR 1.11E-01 + zh-TW + €0.00E+00 + €4.59E+04 + -€1.11E-01 + bn-BD + ০.০০E+০০€ + ৪.৫৯E+০৪€ + -১.১১E-০১€ + +scientific/+ee/sign-always measure-unit/length-furlong scale/0.5 + es-MX + 0E+00 fur + 4.591368E+04 fur + -1.1111E-01 fur + zh-TW + 0E+00 化朗 + 4.591368E+04 化朗 + -1.1111E-01 化朗 + bn-BD + ০E+০০ ফার্লং + ৪.৫৯১৩৬৮E+০৪ ফার্লং + -১.১১১১E-০১ ফার্লং + +compact-short percent group-on-aligned + es-MX + 0 % + 92 k + -0.22 % + zh-TW + 0% + 9.2萬 + -0.22% + bn-BD + ০% + ৯২ হা + -০.২২% + +compact-short currency/EUR group-on-aligned + es-MX + EUR 0 + 92 kEUR + -EUR 0.22 + zh-TW + €0 + €9.2萬 + -€0.22 + bn-BD + ০€ + ৯২ হা€ + -০.২২€ + +compact-short measure-unit/length-furlong group-on-aligned + es-MX + 0 fur + 92 k fur + -0.22 fur + zh-TW + 0 化朗 + 9.2萬 化朗 + -0.22 化朗 + bn-BD + ০ ফার্লং + ৯২ হা ফার্লং + -০.২২ ফার্লং + +scientific/+ee/sign-always percent group-on-aligned + es-MX + 0E+00 % + 9.182736E+04 % + -2.2222E-01 % + zh-TW + 0E+00% + 9.182736E+04% + -2.2222E-01% + bn-BD + ০E+০০% + ৯.১৮২৭৩৬E+০৪% + -২.২২২২E-০১% + +scientific/+ee/sign-always currency/EUR group-on-aligned + es-MX + EUR 0.00E+00 + EUR 9.18E+04 + -EUR 2.22E-01 + zh-TW + €0.00E+00 + €9.18E+04 + -€2.22E-01 + bn-BD + ০.০০E+০০€ + ৯.১৮E+০৪€ + -২.২২E-০১€ + +scientific/+ee/sign-always measure-unit/length-furlong group-on-aligned + es-MX + 0E+00 fur + 9.182736E+04 fur + -2.2222E-01 fur + zh-TW + 0E+00 化朗 + 9.182736E+04 化朗 + -2.2222E-01 化朗 + bn-BD + ০E+০০ ফার্লং + ৯.১৮২৭৩৬E+০৪ ফার্লং + -২.২২২২E-০১ ফার্লং + +compact-short percent latin + es-MX + 0 % + 92 k + -0.22 % + zh-TW + 0% + 9.2萬 + -0.22% + bn-BD + 0% + 92 হা + -0.22% + +compact-short currency/EUR latin + es-MX + EUR 0 + 92 kEUR + -EUR 0.22 + zh-TW + €0 + €9.2萬 + -€0.22 + bn-BD + 0€ + 92 হা€ + -0.22€ + +compact-short measure-unit/length-furlong latin + es-MX + 0 fur + 92 k fur + -0.22 fur + zh-TW + 0 化朗 + 9.2萬 化朗 + -0.22 化朗 + bn-BD + 0 ফার্লং + 92 হা ফার্লং + -0.22 ফার্লং + +scientific/+ee/sign-always percent latin + es-MX + 0E+00 % + 9.182736E+04 % + -2.2222E-01 % + zh-TW + 0E+00% + 9.182736E+04% + -2.2222E-01% + bn-BD + 0E+00% + 9.182736E+04% + -2.2222E-01% + +scientific/+ee/sign-always currency/EUR latin + es-MX + EUR 0.00E+00 + EUR 9.18E+04 + -EUR 2.22E-01 + zh-TW + €0.00E+00 + €9.18E+04 + -€2.22E-01 + bn-BD + 0.00E+00€ + 9.18E+04€ + -2.22E-01€ + +scientific/+ee/sign-always measure-unit/length-furlong latin + es-MX + 0E+00 fur + 9.182736E+04 fur + -2.2222E-01 fur + zh-TW + 0E+00 化朗 + 9.182736E+04 化朗 + -2.2222E-01 化朗 + bn-BD + 0E+00 ফার্লং + 9.182736E+04 ফার্লং + -2.2222E-01 ফার্লং + +compact-short percent sign-accounting-except-zero + es-MX + 0 % + +92 k + -0.22 % + zh-TW + 0% + +9.2萬 + -0.22% + bn-BD + ০% + +৯২ হা + -০.২২% + +compact-short currency/EUR sign-accounting-except-zero + es-MX + EUR 0 + +92 kEUR + -EUR 0.22 + zh-TW + €0 + +€9.2萬 + (€0.22) + bn-BD + ০€ + +৯২ হা€ + (০.২২ €) + +compact-short measure-unit/length-furlong sign-accounting-except-zero + es-MX + 0 fur + +92 k fur + -0.22 fur + zh-TW + 0 化朗 + +9.2萬 化朗 + -0.22 化朗 + bn-BD + ০ ফার্লং + +৯২ হা ফার্লং + -০.২২ ফার্লং + +scientific/+ee/sign-always percent sign-accounting-except-zero + es-MX + 0E+00 % + +9.182736E+04 % + -2.2222E-01 % + zh-TW + 0E+00% + +9.182736E+04% + -2.2222E-01% + bn-BD + ০E+০০% + +৯.১৮২৭৩৬E+০৪% + -২.২২২২E-০১% + +scientific/+ee/sign-always currency/EUR sign-accounting-except-zero + es-MX + EUR 0.00E+00 + +EUR 9.18E+04 + -EUR 2.22E-01 + zh-TW + €0.00E+00 + +€9.18E+04 + (€2.22E-01) + bn-BD + ০.০০E+০০€ + +৯.১৮E+০৪€ + (২.২২E-০১ €) + +scientific/+ee/sign-always measure-unit/length-furlong sign-accounting-except-zero + es-MX + 0E+00 fur + +9.182736E+04 fur + -2.2222E-01 fur + zh-TW + 0E+00 化朗 + +9.182736E+04 化朗 + -2.2222E-01 化朗 + bn-BD + ০E+০০ ফার্লং + +৯.১৮২৭৩৬E+০৪ ফার্লং + -২.২২২২E-০১ ফার্লং + +compact-short percent decimal-always + es-MX + 0. % + 92. k + -0.22 % + zh-TW + 0.% + 9.2萬 + -0.22% + bn-BD + ০.% + ৯২. হা + -০.২২% + +compact-short currency/EUR decimal-always + es-MX + EUR 0. + 92. kEUR + -EUR 0.22 + zh-TW + €0. + €9.2萬 + -€0.22 + bn-BD + ০.€ + ৯২. হা€ + -০.২২€ + +compact-short measure-unit/length-furlong decimal-always + es-MX + 0. fur + 92. k fur + -0.22 fur + zh-TW + 0. 化朗 + 9.2萬 化朗 + -0.22 化朗 + bn-BD + ০. ফার্লং + ৯২. হা ফার্লং + -০.২২ ফার্লং + +scientific/+ee/sign-always percent decimal-always + es-MX + 0.E+00 % + 9.182736E+04 % + -2.2222E-01 % + zh-TW + 0.E+00% + 9.182736E+04% + -2.2222E-01% + bn-BD + ০.E+০০% + ৯.১৮২৭৩৬E+০৪% + -২.২২২২E-০১% + +scientific/+ee/sign-always currency/EUR decimal-always + es-MX + EUR 0.00E+00 + EUR 9.18E+04 + -EUR 2.22E-01 + zh-TW + €0.00E+00 + €9.18E+04 + -€2.22E-01 + bn-BD + ০.০০E+০০€ + ৯.১৮E+০৪€ + -২.২২E-০১€ + +scientific/+ee/sign-always measure-unit/length-furlong decimal-always + es-MX + 0.E+00 fur + 9.182736E+04 fur + -2.2222E-01 fur + zh-TW + 0.E+00 化朗 + 9.182736E+04 化朗 + -2.2222E-01 化朗 + bn-BD + ০.E+০০ ফার্লং + ৯.১৮২৭৩৬E+০৪ ফার্লং + -২.২২২২E-০১ ফার্লং + +compact-short unit-width-narrow precision-integer + es-MX + 0 + 92 k + -0 + zh-TW + 0 + 9萬 + -0 + bn-BD + ০ + ৯২ হা + -০ + +compact-short unit-width-narrow .000 + es-MX + 0.000 + 91.827 k + -0.222 + zh-TW + 0.000 + 9.183萬 + -0.222 + bn-BD + ০.০০০ + ৯১.৮২৭ হা + -০.২২২ + +compact-short unit-width-narrow .##/@@@+ + es-MX + 0 + 91.83 k + -0.222 + zh-TW + 0 + 9.18萬 + -0.222 + bn-BD + ০ + ৯১.৮৩ হা + -০.২২২ + +compact-short unit-width-narrow @@ + es-MX + 0.0 + 92 k + -0.22 + zh-TW + 0.0 + 9.2萬 + -0.22 + bn-BD + ০.০ + ৯২ হা + -০.২২ + +compact-short unit-width-full-name precision-integer + es-MX + 0 + 92 k + -0 + zh-TW + 0 + 9萬 + -0 + bn-BD + ০ + ৯২ হা + -০ + +compact-short unit-width-full-name .000 + es-MX + 0.000 + 91.827 k + -0.222 + zh-TW + 0.000 + 9.183萬 + -0.222 + bn-BD + ০.০০০ + ৯১.৮২৭ হা + -০.২২২ + +compact-short unit-width-full-name .##/@@@+ + es-MX + 0 + 91.83 k + -0.222 + zh-TW + 0 + 9.18萬 + -0.222 + bn-BD + ০ + ৯১.৮৩ হা + -০.২২২ + +compact-short unit-width-full-name @@ + es-MX + 0.0 + 92 k + -0.22 + zh-TW + 0.0 + 9.2萬 + -0.22 + bn-BD + ০.০ + ৯২ হা + -০.২২ + +scientific/+ee/sign-always unit-width-narrow precision-integer + es-MX + 0E+00 + 9E+04 + -2E-01 + zh-TW + 0E+00 + 9E+04 + -2E-01 + bn-BD + ০E+০০ + ৯E+০৪ + -২E-০১ + +scientific/+ee/sign-always unit-width-narrow .000 + es-MX + 0.000E+00 + 9.183E+04 + -2.222E-01 + zh-TW + 0.000E+00 + 9.183E+04 + -2.222E-01 + bn-BD + ০.০০০E+০০ + ৯.১৮৩E+০৪ + -২.২২২E-০১ + +scientific/+ee/sign-always unit-width-narrow .##/@@@+ + es-MX + 0E+00 + 9.18E+04 + -2.22E-01 + zh-TW + 0E+00 + 9.18E+04 + -2.22E-01 + bn-BD + ০E+০০ + ৯.১৮E+০৪ + -২.২২E-০১ + +scientific/+ee/sign-always unit-width-narrow @@ + es-MX + 0.0E+00 + 9.2E+04 + -2.2E-01 + zh-TW + 0.0E+00 + 9.2E+04 + -2.2E-01 + bn-BD + ০.০E+০০ + ৯.২E+০৪ + -২.২E-০১ + +scientific/+ee/sign-always unit-width-full-name precision-integer + es-MX + 0E+00 + 9E+04 + -2E-01 + zh-TW + 0E+00 + 9E+04 + -2E-01 + bn-BD + ০E+০০ + ৯E+০৪ + -২E-০১ + +scientific/+ee/sign-always unit-width-full-name .000 + es-MX + 0.000E+00 + 9.183E+04 + -2.222E-01 + zh-TW + 0.000E+00 + 9.183E+04 + -2.222E-01 + bn-BD + ০.০০০E+০০ + ৯.১৮৩E+০৪ + -২.২২২E-০১ + +scientific/+ee/sign-always unit-width-full-name .##/@@@+ + es-MX + 0E+00 + 9.18E+04 + -2.22E-01 + zh-TW + 0E+00 + 9.18E+04 + -2.22E-01 + bn-BD + ০E+০০ + ৯.১৮E+০৪ + -২.২২E-০১ + +scientific/+ee/sign-always unit-width-full-name @@ + es-MX + 0.0E+00 + 9.2E+04 + -2.2E-01 + zh-TW + 0.0E+00 + 9.2E+04 + -2.2E-01 + bn-BD + ০.০E+০০ + ৯.২E+০৪ + -২.২E-০১ + +compact-short unit-width-narrow rounding-mode-floor + es-MX + 0 + 91 k + -0.23 + zh-TW + 0 + 9.1萬 + -0.23 + bn-BD + ০ + ৯১ হা + -০.২৩ + +compact-short unit-width-full-name rounding-mode-floor + es-MX + 0 + 91 k + -0.23 + zh-TW + 0 + 9.1萬 + -0.23 + bn-BD + ০ + ৯১ হা + -০.২৩ + +scientific/+ee/sign-always unit-width-narrow rounding-mode-floor + es-MX + 0E+00 + 9.182736E+04 + -2.2222E-01 + zh-TW + 0E+00 + 9.182736E+04 + -2.2222E-01 + bn-BD + ০E+০০ + ৯.১৮২৭৩৬E+০৪ + -২.২২২২E-০১ + +scientific/+ee/sign-always unit-width-full-name rounding-mode-floor + es-MX + 0E+00 + 9.182736E+04 + -2.2222E-01 + zh-TW + 0E+00 + 9.182736E+04 + -2.2222E-01 + bn-BD + ০E+০০ + ৯.১৮২৭৩৬E+০৪ + -২.২২২২E-০১ + +compact-short unit-width-narrow integer-width/##00 + es-MX + 00 + 92 k + -00.22 + zh-TW + 00 + 09.2萬 + -00.22 + bn-BD + ০০ + ৯২ হা + -০০.২২ + +compact-short unit-width-full-name integer-width/##00 + es-MX + 00 + 92 k + -00.22 + zh-TW + 00 + 09.2萬 + -00.22 + bn-BD + ০০ + ৯২ হা + -০০.২২ + +scientific/+ee/sign-always unit-width-narrow integer-width/##00 + es-MX + 00E+00 + 09.182736E+04 + -02.2222E-01 + zh-TW + 00E+00 + 09.182736E+04 + -02.2222E-01 + bn-BD + ০০E+০০ + ০৯.১৮২৭৩৬E+০৪ + -০২.২২২২E-০১ + +scientific/+ee/sign-always unit-width-full-name integer-width/##00 + es-MX + 00E+00 + 09.182736E+04 + -02.2222E-01 + zh-TW + 00E+00 + 09.182736E+04 + -02.2222E-01 + bn-BD + ০০E+০০ + ০৯.১৮২৭৩৬E+০৪ + -০২.২২২২E-০১ + +compact-short unit-width-narrow scale/0.5 + es-MX + 0 + 46 k + -0.11 + zh-TW + 0 + 4.6萬 + -0.11 + bn-BD + ০ + ৪৬ হা + -০.১১ + +compact-short unit-width-full-name scale/0.5 + es-MX + 0 + 46 k + -0.11 + zh-TW + 0 + 4.6萬 + -0.11 + bn-BD + ০ + ৪৬ হা + -০.১১ + +scientific/+ee/sign-always unit-width-narrow scale/0.5 + es-MX + 0E+00 + 4.591368E+04 + -1.1111E-01 + zh-TW + 0E+00 + 4.591368E+04 + -1.1111E-01 + bn-BD + ০E+০০ + ৪.৫৯১৩৬৮E+০৪ + -১.১১১১E-০১ + +scientific/+ee/sign-always unit-width-full-name scale/0.5 + es-MX + 0E+00 + 4.591368E+04 + -1.1111E-01 + zh-TW + 0E+00 + 4.591368E+04 + -1.1111E-01 + bn-BD + ০E+০০ + ৪.৫৯১৩৬৮E+০৪ + -১.১১১১E-০১ + +compact-short unit-width-narrow group-on-aligned + es-MX + 0 + 92 k + -0.22 + zh-TW + 0 + 9.2萬 + -0.22 + bn-BD + ০ + ৯২ হা + -০.২২ + +compact-short unit-width-full-name group-on-aligned + es-MX + 0 + 92 k + -0.22 + zh-TW + 0 + 9.2萬 + -0.22 + bn-BD + ০ + ৯২ হা + -০.২২ + +scientific/+ee/sign-always unit-width-narrow group-on-aligned + es-MX + 0E+00 + 9.182736E+04 + -2.2222E-01 + zh-TW + 0E+00 + 9.182736E+04 + -2.2222E-01 + bn-BD + ০E+০০ + ৯.১৮২৭৩৬E+০৪ + -২.২২২২E-০১ + +scientific/+ee/sign-always unit-width-full-name group-on-aligned + es-MX + 0E+00 + 9.182736E+04 + -2.2222E-01 + zh-TW + 0E+00 + 9.182736E+04 + -2.2222E-01 + bn-BD + ০E+০০ + ৯.১৮২৭৩৬E+০৪ + -২.২২২২E-০১ + +compact-short unit-width-narrow latin + es-MX + 0 + 92 k + -0.22 + zh-TW + 0 + 9.2萬 + -0.22 + bn-BD + 0 + 92 হা + -0.22 + +compact-short unit-width-full-name latin + es-MX + 0 + 92 k + -0.22 + zh-TW + 0 + 9.2萬 + -0.22 + bn-BD + 0 + 92 হা + -0.22 + +scientific/+ee/sign-always unit-width-narrow latin + es-MX + 0E+00 + 9.182736E+04 + -2.2222E-01 + zh-TW + 0E+00 + 9.182736E+04 + -2.2222E-01 + bn-BD + 0E+00 + 9.182736E+04 + -2.2222E-01 + +scientific/+ee/sign-always unit-width-full-name latin + es-MX + 0E+00 + 9.182736E+04 + -2.2222E-01 + zh-TW + 0E+00 + 9.182736E+04 + -2.2222E-01 + bn-BD + 0E+00 + 9.182736E+04 + -2.2222E-01 + +compact-short unit-width-narrow sign-accounting-except-zero + es-MX + 0 + +92 k + -0.22 + zh-TW + 0 + +9.2萬 + -0.22 + bn-BD + ০ + +৯২ হা + -০.২২ + +compact-short unit-width-full-name sign-accounting-except-zero + es-MX + 0 + +92 k + -0.22 + zh-TW + 0 + +9.2萬 + -0.22 + bn-BD + ০ + +৯২ হা + -০.২২ + +scientific/+ee/sign-always unit-width-narrow sign-accounting-except-zero + es-MX + 0E+00 + +9.182736E+04 + -2.2222E-01 + zh-TW + 0E+00 + +9.182736E+04 + -2.2222E-01 + bn-BD + ০E+০০ + +৯.১৮২৭৩৬E+০৪ + -২.২২২২E-০১ + +scientific/+ee/sign-always unit-width-full-name sign-accounting-except-zero + es-MX + 0E+00 + +9.182736E+04 + -2.2222E-01 + zh-TW + 0E+00 + +9.182736E+04 + -2.2222E-01 + bn-BD + ০E+০০ + +৯.১৮২৭৩৬E+০৪ + -২.২২২২E-০১ + +compact-short unit-width-narrow decimal-always + es-MX + 0. + 92. k + -0.22 + zh-TW + 0. + 9.2萬 + -0.22 + bn-BD + ০. + ৯২. হা + -০.২২ + +compact-short unit-width-full-name decimal-always + es-MX + 0. + 92. k + -0.22 + zh-TW + 0. + 9.2萬 + -0.22 + bn-BD + ০. + ৯২. হা + -০.২২ + +scientific/+ee/sign-always unit-width-narrow decimal-always + es-MX + 0.E+00 + 9.182736E+04 + -2.2222E-01 + zh-TW + 0.E+00 + 9.182736E+04 + -2.2222E-01 + bn-BD + ০.E+০০ + ৯.১৮২৭৩৬E+০৪ + -২.২২২২E-০১ + +scientific/+ee/sign-always unit-width-full-name decimal-always + es-MX + 0.E+00 + 9.182736E+04 + -2.2222E-01 + zh-TW + 0.E+00 + 9.182736E+04 + -2.2222E-01 + bn-BD + ০.E+০০ + ৯.১৮২৭৩৬E+০৪ + -২.২২২২E-০১ + +compact-short precision-integer rounding-mode-floor + es-MX + 0 + 91 k + -1 + zh-TW + 0 + 9萬 + -1 + bn-BD + ০ + ৯১ হা + -১ + +compact-short .000 rounding-mode-floor + es-MX + 0.000 + 91.827 k + -0.223 + zh-TW + 0.000 + 9.182萬 + -0.223 + bn-BD + ০.০০০ + ৯১.৮২৭ হা + -০.২২৩ + +compact-short .##/@@@+ rounding-mode-floor + es-MX + 0 + 91.82 k + -0.223 + zh-TW + 0 + 9.18萬 + -0.223 + bn-BD + ০ + ৯১.৮২ হা + -০.২২৩ + +compact-short @@ rounding-mode-floor + es-MX + 0.0 + 91 k + -0.23 + zh-TW + 0.0 + 9.1萬 + -0.23 + bn-BD + ০.০ + ৯১ হা + -০.২৩ + +scientific/+ee/sign-always precision-integer rounding-mode-floor + es-MX + 0E+00 + 9E+04 + -3E-01 + zh-TW + 0E+00 + 9E+04 + -3E-01 + bn-BD + ০E+০০ + ৯E+০৪ + -৩E-০১ + +scientific/+ee/sign-always .000 rounding-mode-floor + es-MX + 0.000E+00 + 9.182E+04 + -2.223E-01 + zh-TW + 0.000E+00 + 9.182E+04 + -2.223E-01 + bn-BD + ০.০০০E+০০ + ৯.১৮২E+০৪ + -২.২২৩E-০১ + +scientific/+ee/sign-always .##/@@@+ rounding-mode-floor + es-MX + 0E+00 + 9.18E+04 + -2.23E-01 + zh-TW + 0E+00 + 9.18E+04 + -2.23E-01 + bn-BD + ০E+০০ + ৯.১৮E+০৪ + -২.২৩E-০১ + +scientific/+ee/sign-always @@ rounding-mode-floor + es-MX + 0.0E+00 + 9.1E+04 + -2.3E-01 + zh-TW + 0.0E+00 + 9.1E+04 + -2.3E-01 + bn-BD + ০.০E+০০ + ৯.১E+০৪ + -২.৩E-০১ + +compact-short precision-integer integer-width/##00 + es-MX + 00 + 92 k + -00 + zh-TW + 00 + 09萬 + -00 + bn-BD + ০০ + ৯২ হা + -০০ + +compact-short .000 integer-width/##00 + es-MX + 00.000 + 91.827 k + -00.222 + zh-TW + 00.000 + 09.183萬 + -00.222 + bn-BD + ০০.০০০ + ৯১.৮২৭ হা + -০০.২২২ + +compact-short .##/@@@+ integer-width/##00 + es-MX + 00 + 91.83 k + -00.222 + zh-TW + 00 + 09.18萬 + -00.222 + bn-BD + ০০ + ৯১.৮৩ হা + -০০.২২২ + +compact-short @@ integer-width/##00 + es-MX + 00.0 + 92 k + -00.22 + zh-TW + 00.0 + 09.2萬 + -00.22 + bn-BD + ০০.০ + ৯২ হা + -০০.২২ + +scientific/+ee/sign-always precision-integer integer-width/##00 + es-MX + 00E+00 + 09E+04 + -02E-01 + zh-TW + 00E+00 + 09E+04 + -02E-01 + bn-BD + ০০E+০০ + ০৯E+০৪ + -০২E-০১ + +scientific/+ee/sign-always .000 integer-width/##00 + es-MX + 00.000E+00 + 09.183E+04 + -02.222E-01 + zh-TW + 00.000E+00 + 09.183E+04 + -02.222E-01 + bn-BD + ০০.০০০E+০০ + ০৯.১৮৩E+০৪ + -০২.২২২E-০১ + +scientific/+ee/sign-always .##/@@@+ integer-width/##00 + es-MX + 00E+00 + 09.18E+04 + -02.22E-01 + zh-TW + 00E+00 + 09.18E+04 + -02.22E-01 + bn-BD + ০০E+০০ + ০৯.১৮E+০৪ + -০২.২২E-০১ + +scientific/+ee/sign-always @@ integer-width/##00 + es-MX + 00.0E+00 + 09.2E+04 + -02.2E-01 + zh-TW + 00.0E+00 + 09.2E+04 + -02.2E-01 + bn-BD + ০০.০E+০০ + ০৯.২E+০৪ + -০২.২E-০১ + +compact-short precision-integer scale/0.5 + es-MX + 0 + 46 k + -0 + zh-TW + 0 + 5萬 + -0 + bn-BD + ০ + ৪৬ হা + -০ + +compact-short .000 scale/0.5 + es-MX + 0.000 + 45.914 k + -0.111 + zh-TW + 0.000 + 4.591萬 + -0.111 + bn-BD + ০.০০০ + ৪৫.৯১৪ হা + -০.১১১ + +compact-short .##/@@@+ scale/0.5 + es-MX + 0 + 45.91 k + -0.111 + zh-TW + 0 + 4.59萬 + -0.111 + bn-BD + ০ + ৪৫.৯১ হা + -০.১১১ + +compact-short @@ scale/0.5 + es-MX + 0.0 + 46 k + -0.11 + zh-TW + 0.0 + 4.6萬 + -0.11 + bn-BD + ০.০ + ৪৬ হা + -০.১১ + +scientific/+ee/sign-always precision-integer scale/0.5 + es-MX + 0E+00 + 5E+04 + -1E-01 + zh-TW + 0E+00 + 5E+04 + -1E-01 + bn-BD + ০E+০০ + ৫E+০৪ + -১E-০১ + +scientific/+ee/sign-always .000 scale/0.5 + es-MX + 0.000E+00 + 4.591E+04 + -1.111E-01 + zh-TW + 0.000E+00 + 4.591E+04 + -1.111E-01 + bn-BD + ০.০০০E+০০ + ৪.৫৯১E+০৪ + -১.১১১E-০১ + +scientific/+ee/sign-always .##/@@@+ scale/0.5 + es-MX + 0E+00 + 4.59E+04 + -1.11E-01 + zh-TW + 0E+00 + 4.59E+04 + -1.11E-01 + bn-BD + ০E+০০ + ৪.৫৯E+০৪ + -১.১১E-০১ + +scientific/+ee/sign-always @@ scale/0.5 + es-MX + 0.0E+00 + 4.6E+04 + -1.1E-01 + zh-TW + 0.0E+00 + 4.6E+04 + -1.1E-01 + bn-BD + ০.০E+০০ + ৪.৬E+০৪ + -১.১E-০১ + +compact-short precision-integer group-on-aligned + es-MX + 0 + 92 k + -0 + zh-TW + 0 + 9萬 + -0 + bn-BD + ০ + ৯২ হা + -০ + +compact-short .000 group-on-aligned + es-MX + 0.000 + 91.827 k + -0.222 + zh-TW + 0.000 + 9.183萬 + -0.222 + bn-BD + ০.০০০ + ৯১.৮২৭ হা + -০.২২২ + +compact-short .##/@@@+ group-on-aligned + es-MX + 0 + 91.83 k + -0.222 + zh-TW + 0 + 9.18萬 + -0.222 + bn-BD + ০ + ৯১.৮৩ হা + -০.২২২ + +compact-short @@ group-on-aligned + es-MX + 0.0 + 92 k + -0.22 + zh-TW + 0.0 + 9.2萬 + -0.22 + bn-BD + ০.০ + ৯২ হা + -০.২২ + +scientific/+ee/sign-always precision-integer group-on-aligned + es-MX + 0E+00 + 9E+04 + -2E-01 + zh-TW + 0E+00 + 9E+04 + -2E-01 + bn-BD + ০E+০০ + ৯E+০৪ + -২E-০১ + +scientific/+ee/sign-always .000 group-on-aligned + es-MX + 0.000E+00 + 9.183E+04 + -2.222E-01 + zh-TW + 0.000E+00 + 9.183E+04 + -2.222E-01 + bn-BD + ০.০০০E+০০ + ৯.১৮৩E+০৪ + -২.২২২E-০১ + +scientific/+ee/sign-always .##/@@@+ group-on-aligned + es-MX + 0E+00 + 9.18E+04 + -2.22E-01 + zh-TW + 0E+00 + 9.18E+04 + -2.22E-01 + bn-BD + ০E+০০ + ৯.১৮E+০৪ + -২.২২E-০১ + +scientific/+ee/sign-always @@ group-on-aligned + es-MX + 0.0E+00 + 9.2E+04 + -2.2E-01 + zh-TW + 0.0E+00 + 9.2E+04 + -2.2E-01 + bn-BD + ০.০E+০০ + ৯.২E+০৪ + -২.২E-০১ + +compact-short precision-integer latin + es-MX + 0 + 92 k + -0 + zh-TW + 0 + 9萬 + -0 + bn-BD + 0 + 92 হা + -0 + +compact-short .000 latin + es-MX + 0.000 + 91.827 k + -0.222 + zh-TW + 0.000 + 9.183萬 + -0.222 + bn-BD + 0.000 + 91.827 হা + -0.222 + +compact-short .##/@@@+ latin + es-MX + 0 + 91.83 k + -0.222 + zh-TW + 0 + 9.18萬 + -0.222 + bn-BD + 0 + 91.83 হা + -0.222 + +compact-short @@ latin + es-MX + 0.0 + 92 k + -0.22 + zh-TW + 0.0 + 9.2萬 + -0.22 + bn-BD + 0.0 + 92 হা + -0.22 + +scientific/+ee/sign-always precision-integer latin + es-MX + 0E+00 + 9E+04 + -2E-01 + zh-TW + 0E+00 + 9E+04 + -2E-01 + bn-BD + 0E+00 + 9E+04 + -2E-01 + +scientific/+ee/sign-always .000 latin + es-MX + 0.000E+00 + 9.183E+04 + -2.222E-01 + zh-TW + 0.000E+00 + 9.183E+04 + -2.222E-01 + bn-BD + 0.000E+00 + 9.183E+04 + -2.222E-01 + +scientific/+ee/sign-always .##/@@@+ latin + es-MX + 0E+00 + 9.18E+04 + -2.22E-01 + zh-TW + 0E+00 + 9.18E+04 + -2.22E-01 + bn-BD + 0E+00 + 9.18E+04 + -2.22E-01 + +scientific/+ee/sign-always @@ latin + es-MX + 0.0E+00 + 9.2E+04 + -2.2E-01 + zh-TW + 0.0E+00 + 9.2E+04 + -2.2E-01 + bn-BD + 0.0E+00 + 9.2E+04 + -2.2E-01 + +compact-short precision-integer sign-accounting-except-zero + es-MX + 0 + +92 k + -0 + zh-TW + 0 + +9萬 + -0 + bn-BD + ০ + +৯২ হা + -০ + +compact-short .000 sign-accounting-except-zero + es-MX + 0.000 + +91.827 k + -0.222 + zh-TW + 0.000 + +9.183萬 + -0.222 + bn-BD + ০.০০০ + +৯১.৮২৭ হা + -০.২২২ + +compact-short .##/@@@+ sign-accounting-except-zero + es-MX + 0 + +91.83 k + -0.222 + zh-TW + 0 + +9.18萬 + -0.222 + bn-BD + ০ + +৯১.৮৩ হা + -০.২২২ + +compact-short @@ sign-accounting-except-zero + es-MX + 0.0 + +92 k + -0.22 + zh-TW + 0.0 + +9.2萬 + -0.22 + bn-BD + ০.০ + +৯২ হা + -০.২২ + +scientific/+ee/sign-always precision-integer sign-accounting-except-zero + es-MX + 0E+00 + +9E+04 + -2E-01 + zh-TW + 0E+00 + +9E+04 + -2E-01 + bn-BD + ০E+০০ + +৯E+০৪ + -২E-০১ + +scientific/+ee/sign-always .000 sign-accounting-except-zero + es-MX + 0.000E+00 + +9.183E+04 + -2.222E-01 + zh-TW + 0.000E+00 + +9.183E+04 + -2.222E-01 + bn-BD + ০.০০০E+০০ + +৯.১৮৩E+০৪ + -২.২২২E-০১ + +scientific/+ee/sign-always .##/@@@+ sign-accounting-except-zero + es-MX + 0E+00 + +9.18E+04 + -2.22E-01 + zh-TW + 0E+00 + +9.18E+04 + -2.22E-01 + bn-BD + ০E+০০ + +৯.১৮E+০৪ + -২.২২E-০১ + +scientific/+ee/sign-always @@ sign-accounting-except-zero + es-MX + 0.0E+00 + +9.2E+04 + -2.2E-01 + zh-TW + 0.0E+00 + +9.2E+04 + -2.2E-01 + bn-BD + ০.০E+০০ + +৯.২E+০৪ + -২.২E-০১ + +compact-short precision-integer decimal-always + es-MX + 0. + 92. k + -0. + zh-TW + 0. + 9.萬 + -0. + bn-BD + ০. + ৯২. হা + -০. + +compact-short .000 decimal-always + es-MX + 0.000 + 91.827 k + -0.222 + zh-TW + 0.000 + 9.183萬 + -0.222 + bn-BD + ০.০০০ + ৯১.৮২৭ হা + -০.২২২ + +compact-short .##/@@@+ decimal-always + es-MX + 0. + 91.83 k + -0.222 + zh-TW + 0. + 9.18萬 + -0.222 + bn-BD + ০. + ৯১.৮৩ হা + -০.২২২ + +compact-short @@ decimal-always + es-MX + 0.0 + 92. k + -0.22 + zh-TW + 0.0 + 9.2萬 + -0.22 + bn-BD + ০.০ + ৯২. হা + -০.২২ + +scientific/+ee/sign-always precision-integer decimal-always + es-MX + 0.E+00 + 9.E+04 + -2.E-01 + zh-TW + 0.E+00 + 9.E+04 + -2.E-01 + bn-BD + ০.E+০০ + ৯.E+০৪ + -২.E-০১ + +scientific/+ee/sign-always .000 decimal-always + es-MX + 0.000E+00 + 9.183E+04 + -2.222E-01 + zh-TW + 0.000E+00 + 9.183E+04 + -2.222E-01 + bn-BD + ০.০০০E+০০ + ৯.১৮৩E+০৪ + -২.২২২E-০১ + +scientific/+ee/sign-always .##/@@@+ decimal-always + es-MX + 0.E+00 + 9.18E+04 + -2.22E-01 + zh-TW + 0.E+00 + 9.18E+04 + -2.22E-01 + bn-BD + ০.E+০০ + ৯.১৮E+০৪ + -২.২২E-০১ + +scientific/+ee/sign-always @@ decimal-always + es-MX + 0.0E+00 + 9.2E+04 + -2.2E-01 + zh-TW + 0.0E+00 + 9.2E+04 + -2.2E-01 + bn-BD + ০.০E+০০ + ৯.২E+০৪ + -২.২E-০১ + +compact-short rounding-mode-floor integer-width/##00 + es-MX + 00 + 91 k + -00.23 + zh-TW + 00 + 09.1萬 + -00.23 + bn-BD + ০০ + ৯১ হা + -০০.২৩ + +scientific/+ee/sign-always rounding-mode-floor integer-width/##00 + es-MX + 00E+00 + 09.182736E+04 + -02.2222E-01 + zh-TW + 00E+00 + 09.182736E+04 + -02.2222E-01 + bn-BD + ০০E+০০ + ০৯.১৮২৭৩৬E+০৪ + -০২.২২২২E-০১ + +compact-short rounding-mode-floor scale/0.5 + es-MX + 0 + 45 k + -0.12 + zh-TW + 0 + 4.5萬 + -0.12 + bn-BD + ০ + ৪৫ হা + -০.১২ + +scientific/+ee/sign-always rounding-mode-floor scale/0.5 + es-MX + 0E+00 + 4.591368E+04 + -1.1111E-01 + zh-TW + 0E+00 + 4.591368E+04 + -1.1111E-01 + bn-BD + ০E+০০ + ৪.৫৯১৩৬৮E+০৪ + -১.১১১১E-০১ + +compact-short rounding-mode-floor group-on-aligned + es-MX + 0 + 91 k + -0.23 + zh-TW + 0 + 9.1萬 + -0.23 + bn-BD + ০ + ৯১ হা + -০.২৩ + +scientific/+ee/sign-always rounding-mode-floor group-on-aligned + es-MX + 0E+00 + 9.182736E+04 + -2.2222E-01 + zh-TW + 0E+00 + 9.182736E+04 + -2.2222E-01 + bn-BD + ০E+০০ + ৯.১৮২৭৩৬E+০৪ + -২.২২২২E-০১ + +compact-short rounding-mode-floor latin + es-MX + 0 + 91 k + -0.23 + zh-TW + 0 + 9.1萬 + -0.23 + bn-BD + 0 + 91 হা + -0.23 + +scientific/+ee/sign-always rounding-mode-floor latin + es-MX + 0E+00 + 9.182736E+04 + -2.2222E-01 + zh-TW + 0E+00 + 9.182736E+04 + -2.2222E-01 + bn-BD + 0E+00 + 9.182736E+04 + -2.2222E-01 + +compact-short rounding-mode-floor sign-accounting-except-zero + es-MX + 0 + +91 k + -0.23 + zh-TW + 0 + +9.1萬 + -0.23 + bn-BD + ০ + +৯১ হা + -০.২৩ + +scientific/+ee/sign-always rounding-mode-floor sign-accounting-except-zero + es-MX + 0E+00 + +9.182736E+04 + -2.2222E-01 + zh-TW + 0E+00 + +9.182736E+04 + -2.2222E-01 + bn-BD + ০E+০০ + +৯.১৮২৭৩৬E+০৪ + -২.২২২২E-০১ + +compact-short rounding-mode-floor decimal-always + es-MX + 0. + 91. k + -0.23 + zh-TW + 0. + 9.1萬 + -0.23 + bn-BD + ০. + ৯১. হা + -০.২৩ + +scientific/+ee/sign-always rounding-mode-floor decimal-always + es-MX + 0.E+00 + 9.182736E+04 + -2.2222E-01 + zh-TW + 0.E+00 + 9.182736E+04 + -2.2222E-01 + bn-BD + ০.E+০০ + ৯.১৮২৭৩৬E+০৪ + -২.২২২২E-০১ + +compact-short integer-width/##00 scale/0.5 + es-MX + 00 + 46 k + -00.11 + zh-TW + 00 + 04.6萬 + -00.11 + bn-BD + ০০ + ৪৬ হা + -০০.১১ + +scientific/+ee/sign-always integer-width/##00 scale/0.5 + es-MX + 00E+00 + 04.591368E+04 + -01.1111E-01 + zh-TW + 00E+00 + 04.591368E+04 + -01.1111E-01 + bn-BD + ০০E+০০ + ০৪.৫৯১৩৬৮E+০৪ + -০১.১১১১E-০১ + +compact-short integer-width/##00 group-on-aligned + es-MX + 00 + 92 k + -00.22 + zh-TW + 00 + 09.2萬 + -00.22 + bn-BD + ০০ + ৯২ হা + -০০.২২ + +scientific/+ee/sign-always integer-width/##00 group-on-aligned + es-MX + 00E+00 + 09.182736E+04 + -02.2222E-01 + zh-TW + 00E+00 + 09.182736E+04 + -02.2222E-01 + bn-BD + ০০E+০০ + ০৯.১৮২৭৩৬E+০৪ + -০২.২২২২E-০১ + +compact-short integer-width/##00 latin + es-MX + 00 + 92 k + -00.22 + zh-TW + 00 + 09.2萬 + -00.22 + bn-BD + 00 + 92 হা + -00.22 + +scientific/+ee/sign-always integer-width/##00 latin + es-MX + 00E+00 + 09.182736E+04 + -02.2222E-01 + zh-TW + 00E+00 + 09.182736E+04 + -02.2222E-01 + bn-BD + 00E+00 + 09.182736E+04 + -02.2222E-01 + +compact-short integer-width/##00 sign-accounting-except-zero + es-MX + 00 + +92 k + -00.22 + zh-TW + 00 + +09.2萬 + -00.22 + bn-BD + ০০ + +৯২ হা + -০০.২২ + +scientific/+ee/sign-always integer-width/##00 sign-accounting-except-zero + es-MX + 00E+00 + +09.182736E+04 + -02.2222E-01 + zh-TW + 00E+00 + +09.182736E+04 + -02.2222E-01 + bn-BD + ০০E+০০ + +০৯.১৮২৭৩৬E+০৪ + -০২.২২২২E-০১ + +compact-short integer-width/##00 decimal-always + es-MX + 00. + 92. k + -00.22 + zh-TW + 00. + 09.2萬 + -00.22 + bn-BD + ০০. + ৯২. হা + -০০.২২ + +scientific/+ee/sign-always integer-width/##00 decimal-always + es-MX + 00.E+00 + 09.182736E+04 + -02.2222E-01 + zh-TW + 00.E+00 + 09.182736E+04 + -02.2222E-01 + bn-BD + ০০.E+০০ + ০৯.১৮২৭৩৬E+০৪ + -০২.২২২২E-০১ + +compact-short scale/0.5 group-on-aligned + es-MX + 0 + 46 k + -0.11 + zh-TW + 0 + 4.6萬 + -0.11 + bn-BD + ০ + ৪৬ হা + -০.১১ + +scientific/+ee/sign-always scale/0.5 group-on-aligned + es-MX + 0E+00 + 4.591368E+04 + -1.1111E-01 + zh-TW + 0E+00 + 4.591368E+04 + -1.1111E-01 + bn-BD + ০E+০০ + ৪.৫৯১৩৬৮E+০৪ + -১.১১১১E-০১ + +compact-short scale/0.5 latin + es-MX + 0 + 46 k + -0.11 + zh-TW + 0 + 4.6萬 + -0.11 + bn-BD + 0 + 46 হা + -0.11 + +scientific/+ee/sign-always scale/0.5 latin + es-MX + 0E+00 + 4.591368E+04 + -1.1111E-01 + zh-TW + 0E+00 + 4.591368E+04 + -1.1111E-01 + bn-BD + 0E+00 + 4.591368E+04 + -1.1111E-01 + +compact-short scale/0.5 sign-accounting-except-zero + es-MX + 0 + +46 k + -0.11 + zh-TW + 0 + +4.6萬 + -0.11 + bn-BD + ০ + +৪৬ হা + -০.১১ + +scientific/+ee/sign-always scale/0.5 sign-accounting-except-zero + es-MX + 0E+00 + +4.591368E+04 + -1.1111E-01 + zh-TW + 0E+00 + +4.591368E+04 + -1.1111E-01 + bn-BD + ০E+০০ + +৪.৫৯১৩৬৮E+০৪ + -১.১১১১E-০১ + +compact-short scale/0.5 decimal-always + es-MX + 0. + 46. k + -0.11 + zh-TW + 0. + 4.6萬 + -0.11 + bn-BD + ০. + ৪৬. হা + -০.১১ + +scientific/+ee/sign-always scale/0.5 decimal-always + es-MX + 0.E+00 + 4.591368E+04 + -1.1111E-01 + zh-TW + 0.E+00 + 4.591368E+04 + -1.1111E-01 + bn-BD + ০.E+০০ + ৪.৫৯১৩৬৮E+০৪ + -১.১১১১E-০১ + +compact-short group-on-aligned latin + es-MX + 0 + 92 k + -0.22 + zh-TW + 0 + 9.2萬 + -0.22 + bn-BD + 0 + 92 হা + -0.22 + +scientific/+ee/sign-always group-on-aligned latin + es-MX + 0E+00 + 9.182736E+04 + -2.2222E-01 + zh-TW + 0E+00 + 9.182736E+04 + -2.2222E-01 + bn-BD + 0E+00 + 9.182736E+04 + -2.2222E-01 + +compact-short group-on-aligned sign-accounting-except-zero + es-MX + 0 + +92 k + -0.22 + zh-TW + 0 + +9.2萬 + -0.22 + bn-BD + ০ + +৯২ হা + -০.২২ + +scientific/+ee/sign-always group-on-aligned sign-accounting-except-zero + es-MX + 0E+00 + +9.182736E+04 + -2.2222E-01 + zh-TW + 0E+00 + +9.182736E+04 + -2.2222E-01 + bn-BD + ০E+০০ + +৯.১৮২৭৩৬E+০৪ + -২.২২২২E-০১ + +compact-short group-on-aligned decimal-always + es-MX + 0. + 92. k + -0.22 + zh-TW + 0. + 9.2萬 + -0.22 + bn-BD + ০. + ৯২. হা + -০.২২ + +scientific/+ee/sign-always group-on-aligned decimal-always + es-MX + 0.E+00 + 9.182736E+04 + -2.2222E-01 + zh-TW + 0.E+00 + 9.182736E+04 + -2.2222E-01 + bn-BD + ০.E+০০ + ৯.১৮২৭৩৬E+০৪ + -২.২২২২E-০১ + +compact-short latin sign-accounting-except-zero + es-MX + 0 + +92 k + -0.22 + zh-TW + 0 + +9.2萬 + -0.22 + bn-BD + 0 + +92 হা + -0.22 + +scientific/+ee/sign-always latin sign-accounting-except-zero + es-MX + 0E+00 + +9.182736E+04 + -2.2222E-01 + zh-TW + 0E+00 + +9.182736E+04 + -2.2222E-01 + bn-BD + 0E+00 + +9.182736E+04 + -2.2222E-01 + +compact-short latin decimal-always + es-MX + 0. + 92. k + -0.22 + zh-TW + 0. + 9.2萬 + -0.22 + bn-BD + 0. + 92. হা + -0.22 + +scientific/+ee/sign-always latin decimal-always + es-MX + 0.E+00 + 9.182736E+04 + -2.2222E-01 + zh-TW + 0.E+00 + 9.182736E+04 + -2.2222E-01 + bn-BD + 0.E+00 + 9.182736E+04 + -2.2222E-01 + +compact-short sign-accounting-except-zero decimal-always + es-MX + 0. + +92. k + -0.22 + zh-TW + 0. + +9.2萬 + -0.22 + bn-BD + ০. + +৯২. হা + -০.২২ + +scientific/+ee/sign-always sign-accounting-except-zero decimal-always + es-MX + 0.E+00 + +9.182736E+04 + -2.2222E-01 + zh-TW + 0.E+00 + +9.182736E+04 + -2.2222E-01 + bn-BD + ০.E+০০ + +৯.১৮২৭৩৬E+০৪ + -২.২২২২E-০১ + +percent unit-width-narrow precision-integer + es-MX + 0 % + 91,827 % + -0 % + zh-TW + 0% + 91,827% + -0% + bn-BD + ০% + ৯১,৮২৭% + -০% + +percent unit-width-narrow .000 + es-MX + 0.000 % + 91,827.364 % + -0.222 % + zh-TW + 0.000% + 91,827.364% + -0.222% + bn-BD + ০.০০০% + ৯১,৮২৭.৩৬৪% + -০.২২২% + +percent unit-width-narrow .##/@@@+ + es-MX + 0 % + 91,827.36 % + -0.222 % + zh-TW + 0% + 91,827.36% + -0.222% + bn-BD + ০% + ৯১,৮২৭.৩৬% + -০.২২২% + +percent unit-width-narrow @@ + es-MX + 0.0 % + 92,000 % + -0.22 % + zh-TW + 0.0% + 92,000% + -0.22% + bn-BD + ০.০% + ৯২,০০০% + -০.২২% + +percent unit-width-full-name precision-integer + es-MX + 0 % + 91,827 % + -0 % + zh-TW + 0% + 91,827% + -0% + bn-BD + ০% + ৯১,৮২৭% + -০% + +percent unit-width-full-name .000 + es-MX + 0.000 % + 91,827.364 % + -0.222 % + zh-TW + 0.000% + 91,827.364% + -0.222% + bn-BD + ০.০০০% + ৯১,৮২৭.৩৬৪% + -০.২২২% + +percent unit-width-full-name .##/@@@+ + es-MX + 0 % + 91,827.36 % + -0.222 % + zh-TW + 0% + 91,827.36% + -0.222% + bn-BD + ০% + ৯১,৮২৭.৩৬% + -০.২২২% + +percent unit-width-full-name @@ + es-MX + 0.0 % + 92,000 % + -0.22 % + zh-TW + 0.0% + 92,000% + -0.22% + bn-BD + ০.০% + ৯২,০০০% + -০.২২% + +currency/EUR unit-width-narrow precision-integer + es-MX + €0 + €91,827 + -€0 + zh-TW + €0 + €91,827 + -€0 + bn-BD + ০€ + ৯১,৮২৭€ + -০€ + +currency/EUR unit-width-narrow .000 + es-MX + €0.000 + €91,827.364 + -€0.222 + zh-TW + €0.000 + €91,827.364 + -€0.222 + bn-BD + ০.০০০€ + ৯১,৮২৭.৩৬৪€ + -০.২২২€ + +currency/EUR unit-width-narrow .##/@@@+ + es-MX + €0 + €91,827.36 + -€0.222 + zh-TW + €0 + €91,827.36 + -€0.222 + bn-BD + ০€ + ৯১,৮২৭.৩৬€ + -০.২২২€ + +currency/EUR unit-width-narrow @@ + es-MX + €0.0 + €92,000 + -€0.22 + zh-TW + €0.0 + €92,000 + -€0.22 + bn-BD + ০.০€ + ৯২,০০০€ + -০.২২€ + +currency/EUR unit-width-full-name precision-integer + es-MX + 0 euros + 91,827 euros + -0 euros + zh-TW + 0 歐元 + 91,827 歐元 + -0 歐元 + bn-BD + ০ ইউরো + ৯১,৮২৭ ইউরো + -০ ইউরো + +currency/EUR unit-width-full-name .000 + es-MX + 0.000 euros + 91,827.364 euros + -0.222 euros + zh-TW + 0.000 歐元 + 91,827.364 歐元 + -0.222 歐元 + bn-BD + ০.০০০ ইউরো + ৯১,৮২৭.৩৬৪ ইউরো + -০.২২২ ইউরো + +currency/EUR unit-width-full-name .##/@@@+ + es-MX + 0 euros + 91,827.36 euros + -0.222 euros + zh-TW + 0 歐元 + 91,827.36 歐元 + -0.222 歐元 + bn-BD + ০ ইউরো + ৯১,৮২৭.৩৬ ইউরো + -০.২২২ ইউরো + +currency/EUR unit-width-full-name @@ + es-MX + 0.0 euros + 92,000 euros + -0.22 euros + zh-TW + 0.0 歐元 + 92,000 歐元 + -0.22 歐元 + bn-BD + ০.০ ইউরো + ৯২,০০০ ইউরো + -০.২২ ইউরো + +measure-unit/length-furlong unit-width-narrow precision-integer + es-MX + 0 fur + 91,827 fur + -0 fur + zh-TW + 0化朗 + 91,827化朗 + -0化朗 + bn-BD + ০ ফার্লং + ৯১,৮২৭ ফার্লং + -০ ফার্লং + +measure-unit/length-furlong unit-width-narrow .000 + es-MX + 0.000 fur + 91,827.364 fur + -0.222 fur + zh-TW + 0.000化朗 + 91,827.364化朗 + -0.222化朗 + bn-BD + ০.০০০ ফার্লং + ৯১,৮২৭.৩৬৪ ফার্লং + -০.২২২ ফার্লং + +measure-unit/length-furlong unit-width-narrow .##/@@@+ + es-MX + 0 fur + 91,827.36 fur + -0.222 fur + zh-TW + 0化朗 + 91,827.36化朗 + -0.222化朗 + bn-BD + ০ ফার্লং + ৯১,৮২৭.৩৬ ফার্লং + -০.২২২ ফার্লং + +measure-unit/length-furlong unit-width-narrow @@ + es-MX + 0.0 fur + 92,000 fur + -0.22 fur + zh-TW + 0.0化朗 + 92,000化朗 + -0.22化朗 + bn-BD + ০.০ ফার্লং + ৯২,০০০ ফার্লং + -০.২২ ফার্লং + +measure-unit/length-furlong unit-width-full-name precision-integer + es-MX + 0 fur + 91,827 fur + -0 fur + zh-TW + 0 化朗 + 91,827 化朗 + -0 化朗 + bn-BD + ০ ফার্লং + ৯১,৮২৭ ফার্লং + -০ ফার্লং + +measure-unit/length-furlong unit-width-full-name .000 + es-MX + 0.000 fur + 91,827.364 fur + -0.222 fur + zh-TW + 0.000 化朗 + 91,827.364 化朗 + -0.222 化朗 + bn-BD + ০.০০০ ফার্লং + ৯১,৮২৭.৩৬৪ ফার্লং + -০.২২২ ফার্লং + +measure-unit/length-furlong unit-width-full-name .##/@@@+ + es-MX + 0 fur + 91,827.36 fur + -0.222 fur + zh-TW + 0 化朗 + 91,827.36 化朗 + -0.222 化朗 + bn-BD + ০ ফার্লং + ৯১,৮২৭.৩৬ ফার্লং + -০.২২২ ফার্লং + +measure-unit/length-furlong unit-width-full-name @@ + es-MX + 0.0 fur + 92,000 fur + -0.22 fur + zh-TW + 0.0 化朗 + 92,000 化朗 + -0.22 化朗 + bn-BD + ০.০ ফার্লং + ৯২,০০০ ফার্লং + -০.২২ ফার্লং + +percent unit-width-narrow rounding-mode-floor + es-MX + 0 % + 91,827.3645 % + -0.22222 % + zh-TW + 0% + 91,827.3645% + -0.22222% + bn-BD + ০% + ৯১,৮২৭.৩৬৪৫% + -০.২২২২২% + +percent unit-width-full-name rounding-mode-floor + es-MX + 0 % + 91,827.3645 % + -0.22222 % + zh-TW + 0% + 91,827.3645% + -0.22222% + bn-BD + ০% + ৯১,৮২৭.৩৬৪৫% + -০.২২২২২% + +currency/EUR unit-width-narrow rounding-mode-floor + es-MX + €0.00 + €91,827.36 + -€0.23 + zh-TW + €0.00 + €91,827.36 + -€0.23 + bn-BD + ০.০০€ + ৯১,৮২৭.৩৬€ + -০.২৩€ + +currency/EUR unit-width-full-name rounding-mode-floor + es-MX + 0.00 euros + 91,827.36 euros + -0.23 euros + zh-TW + 0.00 歐元 + 91,827.36 歐元 + -0.23 歐元 + bn-BD + ০.০০ ইউরো + ৯১,৮২৭.৩৬ ইউরো + -০.২৩ ইউরো + +measure-unit/length-furlong unit-width-narrow rounding-mode-floor + es-MX + 0 fur + 91,827.3645 fur + -0.22222 fur + zh-TW + 0化朗 + 91,827.3645化朗 + -0.22222化朗 + bn-BD + ০ ফার্লং + ৯১,৮২৭.৩৬৪৫ ফার্লং + -০.২২২২২ ফার্লং + +measure-unit/length-furlong unit-width-full-name rounding-mode-floor + es-MX + 0 fur + 91,827.3645 fur + -0.22222 fur + zh-TW + 0 化朗 + 91,827.3645 化朗 + -0.22222 化朗 + bn-BD + ০ ফার্লং + ৯১,৮২৭.৩৬৪৫ ফার্লং + -০.২২২২২ ফার্লং + +percent unit-width-narrow integer-width/##00 + es-MX + 00 % + 1827.3645 % + -00.22222 % + zh-TW + 00% + 1,827.3645% + -00.22222% + bn-BD + ০০% + ১,৮২৭.৩৬৪৫% + -০০.২২২২২% + +percent unit-width-full-name integer-width/##00 + es-MX + 00 % + 1827.3645 % + -00.22222 % + zh-TW + 00% + 1,827.3645% + -00.22222% + bn-BD + ০০% + ১,৮২৭.৩৬৪৫% + -০০.২২২২২% + +currency/EUR unit-width-narrow integer-width/##00 + es-MX + €00.00 + €1827.36 + -€00.22 + zh-TW + €00.00 + €1,827.36 + -€00.22 + bn-BD + ০০.০০€ + ১,৮২৭.৩৬€ + -০০.২২€ + +currency/EUR unit-width-full-name integer-width/##00 + es-MX + 00.00 euros + 1827.36 euros + -00.22 euros + zh-TW + 00.00 歐元 + 1,827.36 歐元 + -00.22 歐元 + bn-BD + ০০.০০ ইউরো + ১,৮২৭.৩৬ ইউরো + -০০.২২ ইউরো + +measure-unit/length-furlong unit-width-narrow integer-width/##00 + es-MX + 00 fur + 1827.3645 fur + -00.22222 fur + zh-TW + 00化朗 + 1,827.3645化朗 + -00.22222化朗 + bn-BD + ০০ ফার্লং + ১,৮২৭.৩৬৪৫ ফার্লং + -০০.২২২২২ ফার্লং + +measure-unit/length-furlong unit-width-full-name integer-width/##00 + es-MX + 00 fur + 1827.3645 fur + -00.22222 fur + zh-TW + 00 化朗 + 1,827.3645 化朗 + -00.22222 化朗 + bn-BD + ০০ ফার্লং + ১,৮২৭.৩৬৪৫ ফার্লং + -০০.২২২২২ ফার্লং + +percent unit-width-narrow scale/0.5 + es-MX + 0 % + 45,913.68225 % + -0.11111 % + zh-TW + 0% + 45,913.68225% + -0.11111% + bn-BD + ০% + ৪৫,৯১৩.৬৮২২৫% + -০.১১১১১% + +percent unit-width-full-name scale/0.5 + es-MX + 0 % + 45,913.68225 % + -0.11111 % + zh-TW + 0% + 45,913.68225% + -0.11111% + bn-BD + ০% + ৪৫,৯১৩.৬৮২২৫% + -০.১১১১১% + +currency/EUR unit-width-narrow scale/0.5 + es-MX + €0.00 + €45,913.68 + -€0.11 + zh-TW + €0.00 + €45,913.68 + -€0.11 + bn-BD + ০.০০€ + ৪৫,৯১৩.৬৮€ + -০.১১€ + +currency/EUR unit-width-full-name scale/0.5 + es-MX + 0.00 euros + 45,913.68 euros + -0.11 euros + zh-TW + 0.00 歐元 + 45,913.68 歐元 + -0.11 歐元 + bn-BD + ০.০০ ইউরো + ৪৫,৯১৩.৬৮ ইউরো + -০.১১ ইউরো + +measure-unit/length-furlong unit-width-narrow scale/0.5 + es-MX + 0 fur + 45,913.68225 fur + -0.11111 fur + zh-TW + 0化朗 + 45,913.68225化朗 + -0.11111化朗 + bn-BD + ০ ফার্লং + ৪৫,৯১৩.৬৮২২৫ ফার্লং + -০.১১১১১ ফার্লং + +measure-unit/length-furlong unit-width-full-name scale/0.5 + es-MX + 0 fur + 45,913.68225 fur + -0.11111 fur + zh-TW + 0 化朗 + 45,913.68225 化朗 + -0.11111 化朗 + bn-BD + ০ ফার্লং + ৪৫,৯১৩.৬৮২২৫ ফার্লং + -০.১১১১১ ফার্লং + +percent unit-width-narrow group-on-aligned + es-MX + 0 % + 91,827.3645 % + -0.22222 % + zh-TW + 0% + 91,827.3645% + -0.22222% + bn-BD + ০% + ৯১,৮২৭.৩৬৪৫% + -০.২২২২২% + +percent unit-width-full-name group-on-aligned + es-MX + 0 % + 91,827.3645 % + -0.22222 % + zh-TW + 0% + 91,827.3645% + -0.22222% + bn-BD + ০% + ৯১,৮২৭.৩৬৪৫% + -০.২২২২২% + +currency/EUR unit-width-narrow group-on-aligned + es-MX + €0.00 + €91,827.36 + -€0.22 + zh-TW + €0.00 + €91,827.36 + -€0.22 + bn-BD + ০.০০€ + ৯১,৮২৭.৩৬€ + -০.২২€ + +currency/EUR unit-width-full-name group-on-aligned + es-MX + 0.00 euros + 91,827.36 euros + -0.22 euros + zh-TW + 0.00 歐元 + 91,827.36 歐元 + -0.22 歐元 + bn-BD + ০.০০ ইউরো + ৯১,৮২৭.৩৬ ইউরো + -০.২২ ইউরো + +measure-unit/length-furlong unit-width-narrow group-on-aligned + es-MX + 0 fur + 91,827.3645 fur + -0.22222 fur + zh-TW + 0化朗 + 91,827.3645化朗 + -0.22222化朗 + bn-BD + ০ ফার্লং + ৯১,৮২৭.৩৬৪৫ ফার্লং + -০.২২২২২ ফার্লং + +measure-unit/length-furlong unit-width-full-name group-on-aligned + es-MX + 0 fur + 91,827.3645 fur + -0.22222 fur + zh-TW + 0 化朗 + 91,827.3645 化朗 + -0.22222 化朗 + bn-BD + ০ ফার্লং + ৯১,৮২৭.৩৬৪৫ ফার্লং + -০.২২২২২ ফার্লং + +percent unit-width-narrow latin + es-MX + 0 % + 91,827.3645 % + -0.22222 % + zh-TW + 0% + 91,827.3645% + -0.22222% + bn-BD + 0% + 91,827.3645% + -0.22222% + +percent unit-width-full-name latin + es-MX + 0 % + 91,827.3645 % + -0.22222 % + zh-TW + 0% + 91,827.3645% + -0.22222% + bn-BD + 0% + 91,827.3645% + -0.22222% + +currency/EUR unit-width-narrow latin + es-MX + €0.00 + €91,827.36 + -€0.22 + zh-TW + €0.00 + €91,827.36 + -€0.22 + bn-BD + 0.00€ + 91,827.36€ + -0.22€ + +currency/EUR unit-width-full-name latin + es-MX + 0.00 euros + 91,827.36 euros + -0.22 euros + zh-TW + 0.00 歐元 + 91,827.36 歐元 + -0.22 歐元 + bn-BD + 0.00 ইউরো + 91,827.36 ইউরো + -0.22 ইউরো + +measure-unit/length-furlong unit-width-narrow latin + es-MX + 0 fur + 91,827.3645 fur + -0.22222 fur + zh-TW + 0化朗 + 91,827.3645化朗 + -0.22222化朗 + bn-BD + 0 ফার্লং + 91,827.3645 ফার্লং + -0.22222 ফার্লং + +measure-unit/length-furlong unit-width-full-name latin + es-MX + 0 fur + 91,827.3645 fur + -0.22222 fur + zh-TW + 0 化朗 + 91,827.3645 化朗 + -0.22222 化朗 + bn-BD + 0 ফার্লং + 91,827.3645 ফার্লং + -0.22222 ফার্লং + +percent unit-width-narrow sign-accounting-except-zero + es-MX + 0 % + +91,827.3645 % + -0.22222 % + zh-TW + 0% + +91,827.3645% + -0.22222% + bn-BD + ০% + +৯১,৮২৭.৩৬৪৫% + -০.২২২২২% + +percent unit-width-full-name sign-accounting-except-zero + es-MX + 0 % + +91,827.3645 % + -0.22222 % + zh-TW + 0% + +91,827.3645% + -0.22222% + bn-BD + ০% + +৯১,৮২৭.৩৬৪৫% + -০.২২২২২% + +currency/EUR unit-width-narrow sign-accounting-except-zero + es-MX + €0.00 + +€91,827.36 + -€0.22 + zh-TW + €0.00 + +€91,827.36 + (€0.22) + bn-BD + ০.০০€ + +৯১,৮২৭.৩৬€ + (০.২২ €) + +currency/EUR unit-width-full-name sign-accounting-except-zero + es-MX + 0.00 euros + +91,827.36 euros + -0.22 euros + zh-TW + 0.00 歐元 + +91,827.36 歐元 + -0.22 歐元 + bn-BD + ০.০০ ইউরো + +৯১,৮২৭.৩৬ ইউরো + -০.২২ ইউরো + +measure-unit/length-furlong unit-width-narrow sign-accounting-except-zero + es-MX + 0 fur + +91,827.3645 fur + -0.22222 fur + zh-TW + 0化朗 + +91,827.3645化朗 + -0.22222化朗 + bn-BD + ০ ফার্লং + +৯১,৮২৭.৩৬৪৫ ফার্লং + -০.২২২২২ ফার্লং + +measure-unit/length-furlong unit-width-full-name sign-accounting-except-zero + es-MX + 0 fur + +91,827.3645 fur + -0.22222 fur + zh-TW + 0 化朗 + +91,827.3645 化朗 + -0.22222 化朗 + bn-BD + ০ ফার্লং + +৯১,৮২৭.৩৬৪৫ ফার্লং + -০.২২২২২ ফার্লং + +percent unit-width-narrow decimal-always + es-MX + 0. % + 91,827.3645 % + -0.22222 % + zh-TW + 0.% + 91,827.3645% + -0.22222% + bn-BD + ০.% + ৯১,৮২৭.৩৬৪৫% + -০.২২২২২% + +percent unit-width-full-name decimal-always + es-MX + 0. % + 91,827.3645 % + -0.22222 % + zh-TW + 0.% + 91,827.3645% + -0.22222% + bn-BD + ০.% + ৯১,৮২৭.৩৬৪৫% + -০.২২২২২% + +currency/EUR unit-width-narrow decimal-always + es-MX + €0.00 + €91,827.36 + -€0.22 + zh-TW + €0.00 + €91,827.36 + -€0.22 + bn-BD + ০.০০€ + ৯১,৮২৭.৩৬€ + -০.২২€ + +currency/EUR unit-width-full-name decimal-always + es-MX + 0.00 euros + 91,827.36 euros + -0.22 euros + zh-TW + 0.00 歐元 + 91,827.36 歐元 + -0.22 歐元 + bn-BD + ০.০০ ইউরো + ৯১,৮২৭.৩৬ ইউরো + -০.২২ ইউরো + +measure-unit/length-furlong unit-width-narrow decimal-always + es-MX + 0. fur + 91,827.3645 fur + -0.22222 fur + zh-TW + 0.化朗 + 91,827.3645化朗 + -0.22222化朗 + bn-BD + ০. ফার্লং + ৯১,৮২৭.৩৬৪৫ ফার্লং + -০.২২২২২ ফার্লং + +measure-unit/length-furlong unit-width-full-name decimal-always + es-MX + 0. fur + 91,827.3645 fur + -0.22222 fur + zh-TW + 0. 化朗 + 91,827.3645 化朗 + -0.22222 化朗 + bn-BD + ০. ফার্লং + ৯১,৮২৭.৩৬৪৫ ফার্লং + -০.২২২২২ ফার্লং + +percent precision-integer rounding-mode-floor + es-MX + 0 % + 91,827 % + -1 % + zh-TW + 0% + 91,827% + -1% + bn-BD + ০% + ৯১,৮২৭% + -১% + +percent .000 rounding-mode-floor + es-MX + 0.000 % + 91,827.364 % + -0.223 % + zh-TW + 0.000% + 91,827.364% + -0.223% + bn-BD + ০.০০০% + ৯১,৮২৭.৩৬৪% + -০.২২৩% + +percent .##/@@@+ rounding-mode-floor + es-MX + 0 % + 91,827.36 % + -0.223 % + zh-TW + 0% + 91,827.36% + -0.223% + bn-BD + ০% + ৯১,৮২৭.৩৬% + -০.২২৩% + +percent @@ rounding-mode-floor + es-MX + 0.0 % + 91,000 % + -0.23 % + zh-TW + 0.0% + 91,000% + -0.23% + bn-BD + ০.০% + ৯১,০০০% + -০.২৩% + +currency/EUR precision-integer rounding-mode-floor + es-MX + EUR 0 + EUR 91,827 + -EUR 1 + zh-TW + €0 + €91,827 + -€1 + bn-BD + ০€ + ৯১,৮২৭€ + -১€ + +currency/EUR .000 rounding-mode-floor + es-MX + EUR 0.000 + EUR 91,827.364 + -EUR 0.223 + zh-TW + €0.000 + €91,827.364 + -€0.223 + bn-BD + ০.০০০€ + ৯১,৮২৭.৩৬৪€ + -০.২২৩€ + +currency/EUR .##/@@@+ rounding-mode-floor + es-MX + EUR 0 + EUR 91,827.36 + -EUR 0.223 + zh-TW + €0 + €91,827.36 + -€0.223 + bn-BD + ০€ + ৯১,৮২৭.৩৬€ + -০.২২৩€ + +currency/EUR @@ rounding-mode-floor + es-MX + EUR 0.0 + EUR 91,000 + -EUR 0.23 + zh-TW + €0.0 + €91,000 + -€0.23 + bn-BD + ০.০€ + ৯১,০০০€ + -০.২৩€ + +measure-unit/length-furlong precision-integer rounding-mode-floor + es-MX + 0 fur + 91,827 fur + -1 fur + zh-TW + 0 化朗 + 91,827 化朗 + -1 化朗 + bn-BD + ০ ফার্লং + ৯১,৮২৭ ফার্লং + -১ ফার্লং + +measure-unit/length-furlong .000 rounding-mode-floor + es-MX + 0.000 fur + 91,827.364 fur + -0.223 fur + zh-TW + 0.000 化朗 + 91,827.364 化朗 + -0.223 化朗 + bn-BD + ০.০০০ ফার্লং + ৯১,৮২৭.৩৬৪ ফার্লং + -০.২২৩ ফার্লং + +measure-unit/length-furlong .##/@@@+ rounding-mode-floor + es-MX + 0 fur + 91,827.36 fur + -0.223 fur + zh-TW + 0 化朗 + 91,827.36 化朗 + -0.223 化朗 + bn-BD + ০ ফার্লং + ৯১,৮২৭.৩৬ ফার্লং + -০.২২৩ ফার্লং + +measure-unit/length-furlong @@ rounding-mode-floor + es-MX + 0.0 fur + 91,000 fur + -0.23 fur + zh-TW + 0.0 化朗 + 91,000 化朗 + -0.23 化朗 + bn-BD + ০.০ ফার্লং + ৯১,০০০ ফার্লং + -০.২৩ ফার্লং + +percent precision-integer integer-width/##00 + es-MX + 00 % + 1827 % + -00 % + zh-TW + 00% + 1,827% + -00% + bn-BD + ০০% + ১,৮২৭% + -০০% + +percent .000 integer-width/##00 + es-MX + 00.000 % + 1827.364 % + -00.222 % + zh-TW + 00.000% + 1,827.364% + -00.222% + bn-BD + ০০.০০০% + ১,৮২৭.৩৬৪% + -০০.২২২% + +percent .##/@@@+ integer-width/##00 + es-MX + 00 % + 1827.36 % + -00.222 % + zh-TW + 00% + 1,827.36% + -00.222% + bn-BD + ০০% + ১,৮২৭.৩৬% + -০০.২২২% + +percent @@ integer-width/##00 + es-MX + 00.0 % + 2000 % + -00.22 % + zh-TW + 00.0% + 2,000% + -00.22% + bn-BD + ০০.০% + ২,০০০% + -০০.২২% + +currency/EUR precision-integer integer-width/##00 + es-MX + EUR 00 + EUR 1827 + -EUR 00 + zh-TW + €00 + €1,827 + -€00 + bn-BD + ০০€ + ১,৮২৭€ + -০০€ + +currency/EUR .000 integer-width/##00 + es-MX + EUR 00.000 + EUR 1827.364 + -EUR 00.222 + zh-TW + €00.000 + €1,827.364 + -€00.222 + bn-BD + ০০.০০০€ + ১,৮২৭.৩৬৪€ + -০০.২২২€ + +currency/EUR .##/@@@+ integer-width/##00 + es-MX + EUR 00 + EUR 1827.36 + -EUR 00.222 + zh-TW + €00 + €1,827.36 + -€00.222 + bn-BD + ০০€ + ১,৮২৭.৩৬€ + -০০.২২২€ + +currency/EUR @@ integer-width/##00 + es-MX + EUR 00.0 + EUR 2000 + -EUR 00.22 + zh-TW + €00.0 + €2,000 + -€00.22 + bn-BD + ০০.০€ + ২,০০০€ + -০০.২২€ + +measure-unit/length-furlong precision-integer integer-width/##00 + es-MX + 00 fur + 1827 fur + -00 fur + zh-TW + 00 化朗 + 1,827 化朗 + -00 化朗 + bn-BD + ০০ ফার্লং + ১,৮২৭ ফার্লং + -০০ ফার্লং + +measure-unit/length-furlong .000 integer-width/##00 + es-MX + 00.000 fur + 1827.364 fur + -00.222 fur + zh-TW + 00.000 化朗 + 1,827.364 化朗 + -00.222 化朗 + bn-BD + ০০.০০০ ফার্লং + ১,৮২৭.৩৬৪ ফার্লং + -০০.২২২ ফার্লং + +measure-unit/length-furlong .##/@@@+ integer-width/##00 + es-MX + 00 fur + 1827.36 fur + -00.222 fur + zh-TW + 00 化朗 + 1,827.36 化朗 + -00.222 化朗 + bn-BD + ০০ ফার্লং + ১,৮২৭.৩৬ ফার্লং + -০০.২২২ ফার্লং + +measure-unit/length-furlong @@ integer-width/##00 + es-MX + 00.0 fur + 2000 fur + -00.22 fur + zh-TW + 00.0 化朗 + 2,000 化朗 + -00.22 化朗 + bn-BD + ০০.০ ফার্লং + ২,০০০ ফার্লং + -০০.২২ ফার্লং + +percent precision-integer scale/0.5 + es-MX + 0 % + 45,914 % + -0 % + zh-TW + 0% + 45,914% + -0% + bn-BD + ০% + ৪৫,৯১৪% + -০% + +percent .000 scale/0.5 + es-MX + 0.000 % + 45,913.682 % + -0.111 % + zh-TW + 0.000% + 45,913.682% + -0.111% + bn-BD + ০.০০০% + ৪৫,৯১৩.৬৮২% + -০.১১১% + +percent .##/@@@+ scale/0.5 + es-MX + 0 % + 45,913.68 % + -0.111 % + zh-TW + 0% + 45,913.68% + -0.111% + bn-BD + ০% + ৪৫,৯১৩.৬৮% + -০.১১১% + +percent @@ scale/0.5 + es-MX + 0.0 % + 46,000 % + -0.11 % + zh-TW + 0.0% + 46,000% + -0.11% + bn-BD + ০.০% + ৪৬,০০০% + -০.১১% + +currency/EUR precision-integer scale/0.5 + es-MX + EUR 0 + EUR 45,914 + -EUR 0 + zh-TW + €0 + €45,914 + -€0 + bn-BD + ০€ + ৪৫,৯১৪€ + -০€ + +currency/EUR .000 scale/0.5 + es-MX + EUR 0.000 + EUR 45,913.682 + -EUR 0.111 + zh-TW + €0.000 + €45,913.682 + -€0.111 + bn-BD + ০.০০০€ + ৪৫,৯১৩.৬৮২€ + -০.১১১€ + +currency/EUR .##/@@@+ scale/0.5 + es-MX + EUR 0 + EUR 45,913.68 + -EUR 0.111 + zh-TW + €0 + €45,913.68 + -€0.111 + bn-BD + ০€ + ৪৫,৯১৩.৬৮€ + -০.১১১€ + +currency/EUR @@ scale/0.5 + es-MX + EUR 0.0 + EUR 46,000 + -EUR 0.11 + zh-TW + €0.0 + €46,000 + -€0.11 + bn-BD + ০.০€ + ৪৬,০০০€ + -০.১১€ + +measure-unit/length-furlong precision-integer scale/0.5 + es-MX + 0 fur + 45,914 fur + -0 fur + zh-TW + 0 化朗 + 45,914 化朗 + -0 化朗 + bn-BD + ০ ফার্লং + ৪৫,৯১৪ ফার্লং + -০ ফার্লং + +measure-unit/length-furlong .000 scale/0.5 + es-MX + 0.000 fur + 45,913.682 fur + -0.111 fur + zh-TW + 0.000 化朗 + 45,913.682 化朗 + -0.111 化朗 + bn-BD + ০.০০০ ফার্লং + ৪৫,৯১৩.৬৮২ ফার্লং + -০.১১১ ফার্লং + +measure-unit/length-furlong .##/@@@+ scale/0.5 + es-MX + 0 fur + 45,913.68 fur + -0.111 fur + zh-TW + 0 化朗 + 45,913.68 化朗 + -0.111 化朗 + bn-BD + ০ ফার্লং + ৪৫,৯১৩.৬৮ ফার্লং + -০.১১১ ফার্লং + +measure-unit/length-furlong @@ scale/0.5 + es-MX + 0.0 fur + 46,000 fur + -0.11 fur + zh-TW + 0.0 化朗 + 46,000 化朗 + -0.11 化朗 + bn-BD + ০.০ ফার্লং + ৪৬,০০০ ফার্লং + -০.১১ ফার্লং + +percent precision-integer group-on-aligned + es-MX + 0 % + 91,827 % + -0 % + zh-TW + 0% + 91,827% + -0% + bn-BD + ০% + ৯১,৮২৭% + -০% + +percent .000 group-on-aligned + es-MX + 0.000 % + 91,827.364 % + -0.222 % + zh-TW + 0.000% + 91,827.364% + -0.222% + bn-BD + ০.০০০% + ৯১,৮২৭.৩৬৪% + -০.২২২% + +percent .##/@@@+ group-on-aligned + es-MX + 0 % + 91,827.36 % + -0.222 % + zh-TW + 0% + 91,827.36% + -0.222% + bn-BD + ০% + ৯১,৮২৭.৩৬% + -০.২২২% + +percent @@ group-on-aligned + es-MX + 0.0 % + 92,000 % + -0.22 % + zh-TW + 0.0% + 92,000% + -0.22% + bn-BD + ০.০% + ৯২,০০০% + -০.২২% + +currency/EUR precision-integer group-on-aligned + es-MX + EUR 0 + EUR 91,827 + -EUR 0 + zh-TW + €0 + €91,827 + -€0 + bn-BD + ০€ + ৯১,৮২৭€ + -০€ + +currency/EUR .000 group-on-aligned + es-MX + EUR 0.000 + EUR 91,827.364 + -EUR 0.222 + zh-TW + €0.000 + €91,827.364 + -€0.222 + bn-BD + ০.০০০€ + ৯১,৮২৭.৩৬৪€ + -০.২২২€ + +currency/EUR .##/@@@+ group-on-aligned + es-MX + EUR 0 + EUR 91,827.36 + -EUR 0.222 + zh-TW + €0 + €91,827.36 + -€0.222 + bn-BD + ০€ + ৯১,৮২৭.৩৬€ + -০.২২২€ + +currency/EUR @@ group-on-aligned + es-MX + EUR 0.0 + EUR 92,000 + -EUR 0.22 + zh-TW + €0.0 + €92,000 + -€0.22 + bn-BD + ০.০€ + ৯২,০০০€ + -০.২২€ + +measure-unit/length-furlong precision-integer group-on-aligned + es-MX + 0 fur + 91,827 fur + -0 fur + zh-TW + 0 化朗 + 91,827 化朗 + -0 化朗 + bn-BD + ০ ফার্লং + ৯১,৮২৭ ফার্লং + -০ ফার্লং + +measure-unit/length-furlong .000 group-on-aligned + es-MX + 0.000 fur + 91,827.364 fur + -0.222 fur + zh-TW + 0.000 化朗 + 91,827.364 化朗 + -0.222 化朗 + bn-BD + ০.০০০ ফার্লং + ৯১,৮২৭.৩৬৪ ফার্লং + -০.২২২ ফার্লং + +measure-unit/length-furlong .##/@@@+ group-on-aligned + es-MX + 0 fur + 91,827.36 fur + -0.222 fur + zh-TW + 0 化朗 + 91,827.36 化朗 + -0.222 化朗 + bn-BD + ০ ফার্লং + ৯১,৮২৭.৩৬ ফার্লং + -০.২২২ ফার্লং + +measure-unit/length-furlong @@ group-on-aligned + es-MX + 0.0 fur + 92,000 fur + -0.22 fur + zh-TW + 0.0 化朗 + 92,000 化朗 + -0.22 化朗 + bn-BD + ০.০ ফার্লং + ৯২,০০০ ফার্লং + -০.২২ ফার্লং + +percent precision-integer latin + es-MX + 0 % + 91,827 % + -0 % + zh-TW + 0% + 91,827% + -0% + bn-BD + 0% + 91,827% + -0% + +percent .000 latin + es-MX + 0.000 % + 91,827.364 % + -0.222 % + zh-TW + 0.000% + 91,827.364% + -0.222% + bn-BD + 0.000% + 91,827.364% + -0.222% + +percent .##/@@@+ latin + es-MX + 0 % + 91,827.36 % + -0.222 % + zh-TW + 0% + 91,827.36% + -0.222% + bn-BD + 0% + 91,827.36% + -0.222% + +percent @@ latin + es-MX + 0.0 % + 92,000 % + -0.22 % + zh-TW + 0.0% + 92,000% + -0.22% + bn-BD + 0.0% + 92,000% + -0.22% + +currency/EUR precision-integer latin + es-MX + EUR 0 + EUR 91,827 + -EUR 0 + zh-TW + €0 + €91,827 + -€0 + bn-BD + 0€ + 91,827€ + -0€ + +currency/EUR .000 latin + es-MX + EUR 0.000 + EUR 91,827.364 + -EUR 0.222 + zh-TW + €0.000 + €91,827.364 + -€0.222 + bn-BD + 0.000€ + 91,827.364€ + -0.222€ + +currency/EUR .##/@@@+ latin + es-MX + EUR 0 + EUR 91,827.36 + -EUR 0.222 + zh-TW + €0 + €91,827.36 + -€0.222 + bn-BD + 0€ + 91,827.36€ + -0.222€ + +currency/EUR @@ latin + es-MX + EUR 0.0 + EUR 92,000 + -EUR 0.22 + zh-TW + €0.0 + €92,000 + -€0.22 + bn-BD + 0.0€ + 92,000€ + -0.22€ + +measure-unit/length-furlong precision-integer latin + es-MX + 0 fur + 91,827 fur + -0 fur + zh-TW + 0 化朗 + 91,827 化朗 + -0 化朗 + bn-BD + 0 ফার্লং + 91,827 ফার্লং + -0 ফার্লং + +measure-unit/length-furlong .000 latin + es-MX + 0.000 fur + 91,827.364 fur + -0.222 fur + zh-TW + 0.000 化朗 + 91,827.364 化朗 + -0.222 化朗 + bn-BD + 0.000 ফার্লং + 91,827.364 ফার্লং + -0.222 ফার্লং + +measure-unit/length-furlong .##/@@@+ latin + es-MX + 0 fur + 91,827.36 fur + -0.222 fur + zh-TW + 0 化朗 + 91,827.36 化朗 + -0.222 化朗 + bn-BD + 0 ফার্লং + 91,827.36 ফার্লং + -0.222 ফার্লং + +measure-unit/length-furlong @@ latin + es-MX + 0.0 fur + 92,000 fur + -0.22 fur + zh-TW + 0.0 化朗 + 92,000 化朗 + -0.22 化朗 + bn-BD + 0.0 ফার্লং + 92,000 ফার্লং + -0.22 ফার্লং + +percent precision-integer sign-accounting-except-zero + es-MX + 0 % + +91,827 % + -0 % + zh-TW + 0% + +91,827% + -0% + bn-BD + ০% + +৯১,৮২৭% + -০% + +percent .000 sign-accounting-except-zero + es-MX + 0.000 % + +91,827.364 % + -0.222 % + zh-TW + 0.000% + +91,827.364% + -0.222% + bn-BD + ০.০০০% + +৯১,৮২৭.৩৬৪% + -০.২২২% + +percent .##/@@@+ sign-accounting-except-zero + es-MX + 0 % + +91,827.36 % + -0.222 % + zh-TW + 0% + +91,827.36% + -0.222% + bn-BD + ০% + +৯১,৮২৭.৩৬% + -০.২২২% + +percent @@ sign-accounting-except-zero + es-MX + 0.0 % + +92,000 % + -0.22 % + zh-TW + 0.0% + +92,000% + -0.22% + bn-BD + ০.০% + +৯২,০০০% + -০.২২% + +currency/EUR precision-integer sign-accounting-except-zero + es-MX + EUR 0 + +EUR 91,827 + -EUR 0 + zh-TW + €0 + +€91,827 + (€0) + bn-BD + ০€ + +৯১,৮২৭€ + (০ €) + +currency/EUR .000 sign-accounting-except-zero + es-MX + EUR 0.000 + +EUR 91,827.364 + -EUR 0.222 + zh-TW + €0.000 + +€91,827.364 + (€0.222) + bn-BD + ০.০০০€ + +৯১,৮২৭.৩৬৪€ + (০.২২২ €) + +currency/EUR .##/@@@+ sign-accounting-except-zero + es-MX + EUR 0 + +EUR 91,827.36 + -EUR 0.222 + zh-TW + €0 + +€91,827.36 + (€0.222) + bn-BD + ০€ + +৯১,৮২৭.৩৬€ + (০.২২২ €) + +currency/EUR @@ sign-accounting-except-zero + es-MX + EUR 0.0 + +EUR 92,000 + -EUR 0.22 + zh-TW + €0.0 + +€92,000 + (€0.22) + bn-BD + ০.০€ + +৯২,০০০€ + (০.২২ €) + +measure-unit/length-furlong precision-integer sign-accounting-except-zero + es-MX + 0 fur + +91,827 fur + -0 fur + zh-TW + 0 化朗 + +91,827 化朗 + -0 化朗 + bn-BD + ০ ফার্লং + +৯১,৮২৭ ফার্লং + -০ ফার্লং + +measure-unit/length-furlong .000 sign-accounting-except-zero + es-MX + 0.000 fur + +91,827.364 fur + -0.222 fur + zh-TW + 0.000 化朗 + +91,827.364 化朗 + -0.222 化朗 + bn-BD + ০.০০০ ফার্লং + +৯১,৮২৭.৩৬৪ ফার্লং + -০.২২২ ফার্লং + +measure-unit/length-furlong .##/@@@+ sign-accounting-except-zero + es-MX + 0 fur + +91,827.36 fur + -0.222 fur + zh-TW + 0 化朗 + +91,827.36 化朗 + -0.222 化朗 + bn-BD + ০ ফার্লং + +৯১,৮২৭.৩৬ ফার্লং + -০.২২২ ফার্লং + +measure-unit/length-furlong @@ sign-accounting-except-zero + es-MX + 0.0 fur + +92,000 fur + -0.22 fur + zh-TW + 0.0 化朗 + +92,000 化朗 + -0.22 化朗 + bn-BD + ০.০ ফার্লং + +৯২,০০০ ফার্লং + -০.২২ ফার্লং + +percent precision-integer decimal-always + es-MX + 0. % + 91,827. % + -0. % + zh-TW + 0.% + 91,827.% + -0.% + bn-BD + ০.% + ৯১,৮২৭.% + -০.% + +percent .000 decimal-always + es-MX + 0.000 % + 91,827.364 % + -0.222 % + zh-TW + 0.000% + 91,827.364% + -0.222% + bn-BD + ০.০০০% + ৯১,৮২৭.৩৬৪% + -০.২২২% + +percent .##/@@@+ decimal-always + es-MX + 0. % + 91,827.36 % + -0.222 % + zh-TW + 0.% + 91,827.36% + -0.222% + bn-BD + ০.% + ৯১,৮২৭.৩৬% + -০.২২২% + +percent @@ decimal-always + es-MX + 0.0 % + 92,000. % + -0.22 % + zh-TW + 0.0% + 92,000.% + -0.22% + bn-BD + ০.০% + ৯২,০০০.% + -০.২২% + +currency/EUR precision-integer decimal-always + es-MX + EUR 0. + EUR 91,827. + -EUR 0. + zh-TW + €0. + €91,827. + -€0. + bn-BD + ০.€ + ৯১,৮২৭.€ + -০.€ + +currency/EUR .000 decimal-always + es-MX + EUR 0.000 + EUR 91,827.364 + -EUR 0.222 + zh-TW + €0.000 + €91,827.364 + -€0.222 + bn-BD + ০.০০০€ + ৯১,৮২৭.৩৬৪€ + -০.২২২€ + +currency/EUR .##/@@@+ decimal-always + es-MX + EUR 0. + EUR 91,827.36 + -EUR 0.222 + zh-TW + €0. + €91,827.36 + -€0.222 + bn-BD + ০.€ + ৯১,৮২৭.৩৬€ + -০.২২২€ + +currency/EUR @@ decimal-always + es-MX + EUR 0.0 + EUR 92,000. + -EUR 0.22 + zh-TW + €0.0 + €92,000. + -€0.22 + bn-BD + ০.০€ + ৯২,০০০.€ + -০.২২€ + +measure-unit/length-furlong precision-integer decimal-always + es-MX + 0. fur + 91,827. fur + -0. fur + zh-TW + 0. 化朗 + 91,827. 化朗 + -0. 化朗 + bn-BD + ০. ফার্লং + ৯১,৮২৭. ফার্লং + -০. ফার্লং + +measure-unit/length-furlong .000 decimal-always + es-MX + 0.000 fur + 91,827.364 fur + -0.222 fur + zh-TW + 0.000 化朗 + 91,827.364 化朗 + -0.222 化朗 + bn-BD + ০.০০০ ফার্লং + ৯১,৮২৭.৩৬৪ ফার্লং + -০.২২২ ফার্লং + +measure-unit/length-furlong .##/@@@+ decimal-always + es-MX + 0. fur + 91,827.36 fur + -0.222 fur + zh-TW + 0. 化朗 + 91,827.36 化朗 + -0.222 化朗 + bn-BD + ০. ফার্লং + ৯১,৮২৭.৩৬ ফার্লং + -০.২২২ ফার্লং + +measure-unit/length-furlong @@ decimal-always + es-MX + 0.0 fur + 92,000. fur + -0.22 fur + zh-TW + 0.0 化朗 + 92,000. 化朗 + -0.22 化朗 + bn-BD + ০.০ ফার্লং + ৯২,০০০. ফার্লং + -০.২২ ফার্লং + +percent rounding-mode-floor integer-width/##00 + es-MX + 00 % + 1827.3645 % + -00.22222 % + zh-TW + 00% + 1,827.3645% + -00.22222% + bn-BD + ০০% + ১,৮২৭.৩৬৪৫% + -০০.২২২২২% + +currency/EUR rounding-mode-floor integer-width/##00 + es-MX + EUR 00.00 + EUR 1827.36 + -EUR 00.23 + zh-TW + €00.00 + €1,827.36 + -€00.23 + bn-BD + ০০.০০€ + ১,৮২৭.৩৬€ + -০০.২৩€ + +measure-unit/length-furlong rounding-mode-floor integer-width/##00 + es-MX + 00 fur + 1827.3645 fur + -00.22222 fur + zh-TW + 00 化朗 + 1,827.3645 化朗 + -00.22222 化朗 + bn-BD + ০০ ফার্লং + ১,৮২৭.৩৬৪৫ ফার্লং + -০০.২২২২২ ফার্লং + +percent rounding-mode-floor scale/0.5 + es-MX + 0 % + 45,913.68225 % + -0.11111 % + zh-TW + 0% + 45,913.68225% + -0.11111% + bn-BD + ০% + ৪৫,৯১৩.৬৮২২৫% + -০.১১১১১% + +currency/EUR rounding-mode-floor scale/0.5 + es-MX + EUR 0.00 + EUR 45,913.68 + -EUR 0.12 + zh-TW + €0.00 + €45,913.68 + -€0.12 + bn-BD + ০.০০€ + ৪৫,৯১৩.৬৮€ + -০.১২€ + +measure-unit/length-furlong rounding-mode-floor scale/0.5 + es-MX + 0 fur + 45,913.68225 fur + -0.11111 fur + zh-TW + 0 化朗 + 45,913.68225 化朗 + -0.11111 化朗 + bn-BD + ০ ফার্লং + ৪৫,৯১৩.৬৮২২৫ ফার্লং + -০.১১১১১ ফার্লং + +percent rounding-mode-floor group-on-aligned + es-MX + 0 % + 91,827.3645 % + -0.22222 % + zh-TW + 0% + 91,827.3645% + -0.22222% + bn-BD + ০% + ৯১,৮২৭.৩৬৪৫% + -০.২২২২২% + +currency/EUR rounding-mode-floor group-on-aligned + es-MX + EUR 0.00 + EUR 91,827.36 + -EUR 0.23 + zh-TW + €0.00 + €91,827.36 + -€0.23 + bn-BD + ০.০০€ + ৯১,৮২৭.৩৬€ + -০.২৩€ + +measure-unit/length-furlong rounding-mode-floor group-on-aligned + es-MX + 0 fur + 91,827.3645 fur + -0.22222 fur + zh-TW + 0 化朗 + 91,827.3645 化朗 + -0.22222 化朗 + bn-BD + ০ ফার্লং + ৯১,৮২৭.৩৬৪৫ ফার্লং + -০.২২২২২ ফার্লং + +percent rounding-mode-floor latin + es-MX + 0 % + 91,827.3645 % + -0.22222 % + zh-TW + 0% + 91,827.3645% + -0.22222% + bn-BD + 0% + 91,827.3645% + -0.22222% + +currency/EUR rounding-mode-floor latin + es-MX + EUR 0.00 + EUR 91,827.36 + -EUR 0.23 + zh-TW + €0.00 + €91,827.36 + -€0.23 + bn-BD + 0.00€ + 91,827.36€ + -0.23€ + +measure-unit/length-furlong rounding-mode-floor latin + es-MX + 0 fur + 91,827.3645 fur + -0.22222 fur + zh-TW + 0 化朗 + 91,827.3645 化朗 + -0.22222 化朗 + bn-BD + 0 ফার্লং + 91,827.3645 ফার্লং + -0.22222 ফার্লং + +percent rounding-mode-floor sign-accounting-except-zero + es-MX + 0 % + +91,827.3645 % + -0.22222 % + zh-TW + 0% + +91,827.3645% + -0.22222% + bn-BD + ০% + +৯১,৮২৭.৩৬৪৫% + -০.২২২২২% + +currency/EUR rounding-mode-floor sign-accounting-except-zero + es-MX + EUR 0.00 + +EUR 91,827.36 + -EUR 0.23 + zh-TW + €0.00 + +€91,827.36 + (€0.23) + bn-BD + ০.০০€ + +৯১,৮২৭.৩৬€ + (০.২৩ €) + +measure-unit/length-furlong rounding-mode-floor sign-accounting-except-zero + es-MX + 0 fur + +91,827.3645 fur + -0.22222 fur + zh-TW + 0 化朗 + +91,827.3645 化朗 + -0.22222 化朗 + bn-BD + ০ ফার্লং + +৯১,৮২৭.৩৬৪৫ ফার্লং + -০.২২২২২ ফার্লং + +percent rounding-mode-floor decimal-always + es-MX + 0. % + 91,827.3645 % + -0.22222 % + zh-TW + 0.% + 91,827.3645% + -0.22222% + bn-BD + ০.% + ৯১,৮২৭.৩৬৪৫% + -০.২২২২২% + +currency/EUR rounding-mode-floor decimal-always + es-MX + EUR 0.00 + EUR 91,827.36 + -EUR 0.23 + zh-TW + €0.00 + €91,827.36 + -€0.23 + bn-BD + ০.০০€ + ৯১,৮২৭.৩৬€ + -০.২৩€ + +measure-unit/length-furlong rounding-mode-floor decimal-always + es-MX + 0. fur + 91,827.3645 fur + -0.22222 fur + zh-TW + 0. 化朗 + 91,827.3645 化朗 + -0.22222 化朗 + bn-BD + ০. ফার্লং + ৯১,৮২৭.৩৬৪৫ ফার্লং + -০.২২২২২ ফার্লং + +percent integer-width/##00 scale/0.5 + es-MX + 00 % + 5913.68225 % + -00.11111 % + zh-TW + 00% + 5,913.68225% + -00.11111% + bn-BD + ০০% + ৫,৯১৩.৬৮২২৫% + -০০.১১১১১% + +currency/EUR integer-width/##00 scale/0.5 + es-MX + EUR 00.00 + EUR 5913.68 + -EUR 00.11 + zh-TW + €00.00 + €5,913.68 + -€00.11 + bn-BD + ০০.০০€ + ৫,৯১৩.৬৮€ + -০০.১১€ + +measure-unit/length-furlong integer-width/##00 scale/0.5 + es-MX + 00 fur + 5913.68225 fur + -00.11111 fur + zh-TW + 00 化朗 + 5,913.68225 化朗 + -00.11111 化朗 + bn-BD + ০০ ফার্লং + ৫,৯১৩.৬৮২২৫ ফার্লং + -০০.১১১১১ ফার্লং + +percent integer-width/##00 group-on-aligned + es-MX + 00 % + 1,827.3645 % + -00.22222 % + zh-TW + 00% + 1,827.3645% + -00.22222% + bn-BD + ০০% + ১,৮২৭.৩৬৪৫% + -০০.২২২২২% + +currency/EUR integer-width/##00 group-on-aligned + es-MX + EUR 00.00 + EUR 1,827.36 + -EUR 00.22 + zh-TW + €00.00 + €1,827.36 + -€00.22 + bn-BD + ০০.০০€ + ১,৮২৭.৩৬€ + -০০.২২€ + +measure-unit/length-furlong integer-width/##00 group-on-aligned + es-MX + 00 fur + 1,827.3645 fur + -00.22222 fur + zh-TW + 00 化朗 + 1,827.3645 化朗 + -00.22222 化朗 + bn-BD + ০০ ফার্লং + ১,৮২৭.৩৬৪৫ ফার্লং + -০০.২২২২২ ফার্লং + +percent integer-width/##00 latin + es-MX + 00 % + 1827.3645 % + -00.22222 % + zh-TW + 00% + 1,827.3645% + -00.22222% + bn-BD + 00% + 1,827.3645% + -00.22222% + +currency/EUR integer-width/##00 latin + es-MX + EUR 00.00 + EUR 1827.36 + -EUR 00.22 + zh-TW + €00.00 + €1,827.36 + -€00.22 + bn-BD + 00.00€ + 1,827.36€ + -00.22€ + +measure-unit/length-furlong integer-width/##00 latin + es-MX + 00 fur + 1827.3645 fur + -00.22222 fur + zh-TW + 00 化朗 + 1,827.3645 化朗 + -00.22222 化朗 + bn-BD + 00 ফার্লং + 1,827.3645 ফার্লং + -00.22222 ফার্লং + +percent integer-width/##00 sign-accounting-except-zero + es-MX + 00 % + +1827.3645 % + -00.22222 % + zh-TW + 00% + +1,827.3645% + -00.22222% + bn-BD + ০০% + +১,৮২৭.৩৬৪৫% + -০০.২২২২২% + +currency/EUR integer-width/##00 sign-accounting-except-zero + es-MX + EUR 00.00 + +EUR 1827.36 + -EUR 00.22 + zh-TW + €00.00 + +€1,827.36 + (€00.22) + bn-BD + ০০.০০€ + +১,৮২৭.৩৬€ + (০০.২২ €) + +measure-unit/length-furlong integer-width/##00 sign-accounting-except-zero + es-MX + 00 fur + +1827.3645 fur + -00.22222 fur + zh-TW + 00 化朗 + +1,827.3645 化朗 + -00.22222 化朗 + bn-BD + ০০ ফার্লং + +১,৮২৭.৩৬৪৫ ফার্লং + -০০.২২২২২ ফার্লং + +percent integer-width/##00 decimal-always + es-MX + 00. % + 1827.3645 % + -00.22222 % + zh-TW + 00.% + 1,827.3645% + -00.22222% + bn-BD + ০০.% + ১,৮২৭.৩৬৪৫% + -০০.২২২২২% + +currency/EUR integer-width/##00 decimal-always + es-MX + EUR 00.00 + EUR 1827.36 + -EUR 00.22 + zh-TW + €00.00 + €1,827.36 + -€00.22 + bn-BD + ০০.০০€ + ১,৮২৭.৩৬€ + -০০.২২€ + +measure-unit/length-furlong integer-width/##00 decimal-always + es-MX + 00. fur + 1827.3645 fur + -00.22222 fur + zh-TW + 00. 化朗 + 1,827.3645 化朗 + -00.22222 化朗 + bn-BD + ০০. ফার্লং + ১,৮২৭.৩৬৪৫ ফার্লং + -০০.২২২২২ ফার্লং + +percent scale/0.5 group-on-aligned + es-MX + 0 % + 45,913.68225 % + -0.11111 % + zh-TW + 0% + 45,913.68225% + -0.11111% + bn-BD + ০% + ৪৫,৯১৩.৬৮২২৫% + -০.১১১১১% + +currency/EUR scale/0.5 group-on-aligned + es-MX + EUR 0.00 + EUR 45,913.68 + -EUR 0.11 + zh-TW + €0.00 + €45,913.68 + -€0.11 + bn-BD + ০.০০€ + ৪৫,৯১৩.৬৮€ + -০.১১€ + +measure-unit/length-furlong scale/0.5 group-on-aligned + es-MX + 0 fur + 45,913.68225 fur + -0.11111 fur + zh-TW + 0 化朗 + 45,913.68225 化朗 + -0.11111 化朗 + bn-BD + ০ ফার্লং + ৪৫,৯১৩.৬৮২২৫ ফার্লং + -০.১১১১১ ফার্লং + +percent scale/0.5 latin + es-MX + 0 % + 45,913.68225 % + -0.11111 % + zh-TW + 0% + 45,913.68225% + -0.11111% + bn-BD + 0% + 45,913.68225% + -0.11111% + +currency/EUR scale/0.5 latin + es-MX + EUR 0.00 + EUR 45,913.68 + -EUR 0.11 + zh-TW + €0.00 + €45,913.68 + -€0.11 + bn-BD + 0.00€ + 45,913.68€ + -0.11€ + +measure-unit/length-furlong scale/0.5 latin + es-MX + 0 fur + 45,913.68225 fur + -0.11111 fur + zh-TW + 0 化朗 + 45,913.68225 化朗 + -0.11111 化朗 + bn-BD + 0 ফার্লং + 45,913.68225 ফার্লং + -0.11111 ফার্লং + +percent scale/0.5 sign-accounting-except-zero + es-MX + 0 % + +45,913.68225 % + -0.11111 % + zh-TW + 0% + +45,913.68225% + -0.11111% + bn-BD + ০% + +৪৫,৯১৩.৬৮২২৫% + -০.১১১১১% + +currency/EUR scale/0.5 sign-accounting-except-zero + es-MX + EUR 0.00 + +EUR 45,913.68 + -EUR 0.11 + zh-TW + €0.00 + +€45,913.68 + (€0.11) + bn-BD + ০.০০€ + +৪৫,৯১৩.৬৮€ + (০.১১ €) + +measure-unit/length-furlong scale/0.5 sign-accounting-except-zero + es-MX + 0 fur + +45,913.68225 fur + -0.11111 fur + zh-TW + 0 化朗 + +45,913.68225 化朗 + -0.11111 化朗 + bn-BD + ০ ফার্লং + +৪৫,৯১৩.৬৮২২৫ ফার্লং + -০.১১১১১ ফার্লং + +percent scale/0.5 decimal-always + es-MX + 0. % + 45,913.68225 % + -0.11111 % + zh-TW + 0.% + 45,913.68225% + -0.11111% + bn-BD + ০.% + ৪৫,৯১৩.৬৮২২৫% + -০.১১১১১% + +currency/EUR scale/0.5 decimal-always + es-MX + EUR 0.00 + EUR 45,913.68 + -EUR 0.11 + zh-TW + €0.00 + €45,913.68 + -€0.11 + bn-BD + ০.০০€ + ৪৫,৯১৩.৬৮€ + -০.১১€ + +measure-unit/length-furlong scale/0.5 decimal-always + es-MX + 0. fur + 45,913.68225 fur + -0.11111 fur + zh-TW + 0. 化朗 + 45,913.68225 化朗 + -0.11111 化朗 + bn-BD + ০. ফার্লং + ৪৫,৯১৩.৬৮২২৫ ফার্লং + -০.১১১১১ ফার্লং + +percent group-on-aligned latin + es-MX + 0 % + 91,827.3645 % + -0.22222 % + zh-TW + 0% + 91,827.3645% + -0.22222% + bn-BD + 0% + 91,827.3645% + -0.22222% + +currency/EUR group-on-aligned latin + es-MX + EUR 0.00 + EUR 91,827.36 + -EUR 0.22 + zh-TW + €0.00 + €91,827.36 + -€0.22 + bn-BD + 0.00€ + 91,827.36€ + -0.22€ + +measure-unit/length-furlong group-on-aligned latin + es-MX + 0 fur + 91,827.3645 fur + -0.22222 fur + zh-TW + 0 化朗 + 91,827.3645 化朗 + -0.22222 化朗 + bn-BD + 0 ফার্লং + 91,827.3645 ফার্লং + -0.22222 ফার্লং + +percent group-on-aligned sign-accounting-except-zero + es-MX + 0 % + +91,827.3645 % + -0.22222 % + zh-TW + 0% + +91,827.3645% + -0.22222% + bn-BD + ০% + +৯১,৮২৭.৩৬৪৫% + -০.২২২২২% + +currency/EUR group-on-aligned sign-accounting-except-zero + es-MX + EUR 0.00 + +EUR 91,827.36 + -EUR 0.22 + zh-TW + €0.00 + +€91,827.36 + (€0.22) + bn-BD + ০.০০€ + +৯১,৮২৭.৩৬€ + (০.২২ €) + +measure-unit/length-furlong group-on-aligned sign-accounting-except-zero + es-MX + 0 fur + +91,827.3645 fur + -0.22222 fur + zh-TW + 0 化朗 + +91,827.3645 化朗 + -0.22222 化朗 + bn-BD + ০ ফার্লং + +৯১,৮২৭.৩৬৪৫ ফার্লং + -০.২২২২২ ফার্লং + +percent group-on-aligned decimal-always + es-MX + 0. % + 91,827.3645 % + -0.22222 % + zh-TW + 0.% + 91,827.3645% + -0.22222% + bn-BD + ০.% + ৯১,৮২৭.৩৬৪৫% + -০.২২২২২% + +currency/EUR group-on-aligned decimal-always + es-MX + EUR 0.00 + EUR 91,827.36 + -EUR 0.22 + zh-TW + €0.00 + €91,827.36 + -€0.22 + bn-BD + ০.০০€ + ৯১,৮২৭.৩৬€ + -০.২২€ + +measure-unit/length-furlong group-on-aligned decimal-always + es-MX + 0. fur + 91,827.3645 fur + -0.22222 fur + zh-TW + 0. 化朗 + 91,827.3645 化朗 + -0.22222 化朗 + bn-BD + ০. ফার্লং + ৯১,৮২৭.৩৬৪৫ ফার্লং + -০.২২২২২ ফার্লং + +percent latin sign-accounting-except-zero + es-MX + 0 % + +91,827.3645 % + -0.22222 % + zh-TW + 0% + +91,827.3645% + -0.22222% + bn-BD + 0% + +91,827.3645% + -0.22222% + +currency/EUR latin sign-accounting-except-zero + es-MX + EUR 0.00 + +EUR 91,827.36 + -EUR 0.22 + zh-TW + €0.00 + +€91,827.36 + (€0.22) + bn-BD + 0.00€ + +91,827.36€ + (0.22 €) + +measure-unit/length-furlong latin sign-accounting-except-zero + es-MX + 0 fur + +91,827.3645 fur + -0.22222 fur + zh-TW + 0 化朗 + +91,827.3645 化朗 + -0.22222 化朗 + bn-BD + 0 ফার্লং + +91,827.3645 ফার্লং + -0.22222 ফার্লং + +percent latin decimal-always + es-MX + 0. % + 91,827.3645 % + -0.22222 % + zh-TW + 0.% + 91,827.3645% + -0.22222% + bn-BD + 0.% + 91,827.3645% + -0.22222% + +currency/EUR latin decimal-always + es-MX + EUR 0.00 + EUR 91,827.36 + -EUR 0.22 + zh-TW + €0.00 + €91,827.36 + -€0.22 + bn-BD + 0.00€ + 91,827.36€ + -0.22€ + +measure-unit/length-furlong latin decimal-always + es-MX + 0. fur + 91,827.3645 fur + -0.22222 fur + zh-TW + 0. 化朗 + 91,827.3645 化朗 + -0.22222 化朗 + bn-BD + 0. ফার্লং + 91,827.3645 ফার্লং + -0.22222 ফার্লং + +percent sign-accounting-except-zero decimal-always + es-MX + 0. % + +91,827.3645 % + -0.22222 % + zh-TW + 0.% + +91,827.3645% + -0.22222% + bn-BD + ০.% + +৯১,৮২৭.৩৬৪৫% + -০.২২২২২% + +currency/EUR sign-accounting-except-zero decimal-always + es-MX + EUR 0.00 + +EUR 91,827.36 + -EUR 0.22 + zh-TW + €0.00 + +€91,827.36 + (€0.22) + bn-BD + ০.০০€ + +৯১,৮২৭.৩৬€ + (০.২২ €) + +measure-unit/length-furlong sign-accounting-except-zero decimal-always + es-MX + 0. fur + +91,827.3645 fur + -0.22222 fur + zh-TW + 0. 化朗 + +91,827.3645 化朗 + -0.22222 化朗 + bn-BD + ০. ফার্লং + +৯১,৮২৭.৩৬৪৫ ফার্লং + -০.২২২২২ ফার্লং + +unit-width-narrow precision-integer rounding-mode-floor + es-MX + 0 + 91,827 + -1 + zh-TW + 0 + 91,827 + -1 + bn-BD + ০ + ৯১,৮২৭ + -১ + +unit-width-narrow .000 rounding-mode-floor + es-MX + 0.000 + 91,827.364 + -0.223 + zh-TW + 0.000 + 91,827.364 + -0.223 + bn-BD + ০.০০০ + ৯১,৮২৭.৩৬৪ + -০.২২৩ + +unit-width-narrow .##/@@@+ rounding-mode-floor + es-MX + 0 + 91,827.36 + -0.223 + zh-TW + 0 + 91,827.36 + -0.223 + bn-BD + ০ + ৯১,৮২৭.৩৬ + -০.২২৩ + +unit-width-narrow @@ rounding-mode-floor + es-MX + 0.0 + 91,000 + -0.23 + zh-TW + 0.0 + 91,000 + -0.23 + bn-BD + ০.০ + ৯১,০০০ + -০.২৩ + +unit-width-full-name precision-integer rounding-mode-floor + es-MX + 0 + 91,827 + -1 + zh-TW + 0 + 91,827 + -1 + bn-BD + ০ + ৯১,৮২৭ + -১ + +unit-width-full-name .000 rounding-mode-floor + es-MX + 0.000 + 91,827.364 + -0.223 + zh-TW + 0.000 + 91,827.364 + -0.223 + bn-BD + ০.০০০ + ৯১,৮২৭.৩৬৪ + -০.২২৩ + +unit-width-full-name .##/@@@+ rounding-mode-floor + es-MX + 0 + 91,827.36 + -0.223 + zh-TW + 0 + 91,827.36 + -0.223 + bn-BD + ০ + ৯১,৮২৭.৩৬ + -০.২২৩ + +unit-width-full-name @@ rounding-mode-floor + es-MX + 0.0 + 91,000 + -0.23 + zh-TW + 0.0 + 91,000 + -0.23 + bn-BD + ০.০ + ৯১,০০০ + -০.২৩ + +unit-width-narrow precision-integer integer-width/##00 + es-MX + 00 + 1827 + -00 + zh-TW + 00 + 1,827 + -00 + bn-BD + ০০ + ১,৮২৭ + -০০ + +unit-width-narrow .000 integer-width/##00 + es-MX + 00.000 + 1827.364 + -00.222 + zh-TW + 00.000 + 1,827.364 + -00.222 + bn-BD + ০০.০০০ + ১,৮২৭.৩৬৪ + -০০.২২২ + +unit-width-narrow .##/@@@+ integer-width/##00 + es-MX + 00 + 1827.36 + -00.222 + zh-TW + 00 + 1,827.36 + -00.222 + bn-BD + ০০ + ১,৮২৭.৩৬ + -০০.২২২ + +unit-width-narrow @@ integer-width/##00 + es-MX + 00.0 + 2000 + -00.22 + zh-TW + 00.0 + 2,000 + -00.22 + bn-BD + ০০.০ + ২,০০০ + -০০.২২ + +unit-width-full-name precision-integer integer-width/##00 + es-MX + 00 + 1827 + -00 + zh-TW + 00 + 1,827 + -00 + bn-BD + ০০ + ১,৮২৭ + -০০ + +unit-width-full-name .000 integer-width/##00 + es-MX + 00.000 + 1827.364 + -00.222 + zh-TW + 00.000 + 1,827.364 + -00.222 + bn-BD + ০০.০০০ + ১,৮২৭.৩৬৪ + -০০.২২২ + +unit-width-full-name .##/@@@+ integer-width/##00 + es-MX + 00 + 1827.36 + -00.222 + zh-TW + 00 + 1,827.36 + -00.222 + bn-BD + ০০ + ১,৮২৭.৩৬ + -০০.২২২ + +unit-width-full-name @@ integer-width/##00 + es-MX + 00.0 + 2000 + -00.22 + zh-TW + 00.0 + 2,000 + -00.22 + bn-BD + ০০.০ + ২,০০০ + -০০.২২ + +unit-width-narrow precision-integer scale/0.5 + es-MX + 0 + 45,914 + -0 + zh-TW + 0 + 45,914 + -0 + bn-BD + ০ + ৪৫,৯১৪ + -০ + +unit-width-narrow .000 scale/0.5 + es-MX + 0.000 + 45,913.682 + -0.111 + zh-TW + 0.000 + 45,913.682 + -0.111 + bn-BD + ০.০০০ + ৪৫,৯১৩.৬৮২ + -০.১১১ + +unit-width-narrow .##/@@@+ scale/0.5 + es-MX + 0 + 45,913.68 + -0.111 + zh-TW + 0 + 45,913.68 + -0.111 + bn-BD + ০ + ৪৫,৯১৩.৬৮ + -০.১১১ + +unit-width-narrow @@ scale/0.5 + es-MX + 0.0 + 46,000 + -0.11 + zh-TW + 0.0 + 46,000 + -0.11 + bn-BD + ০.০ + ৪৬,০০০ + -০.১১ + +unit-width-full-name precision-integer scale/0.5 + es-MX + 0 + 45,914 + -0 + zh-TW + 0 + 45,914 + -0 + bn-BD + ০ + ৪৫,৯১৪ + -০ + +unit-width-full-name .000 scale/0.5 + es-MX + 0.000 + 45,913.682 + -0.111 + zh-TW + 0.000 + 45,913.682 + -0.111 + bn-BD + ০.০০০ + ৪৫,৯১৩.৬৮২ + -০.১১১ + +unit-width-full-name .##/@@@+ scale/0.5 + es-MX + 0 + 45,913.68 + -0.111 + zh-TW + 0 + 45,913.68 + -0.111 + bn-BD + ০ + ৪৫,৯১৩.৬৮ + -০.১১১ + +unit-width-full-name @@ scale/0.5 + es-MX + 0.0 + 46,000 + -0.11 + zh-TW + 0.0 + 46,000 + -0.11 + bn-BD + ০.০ + ৪৬,০০০ + -০.১১ + +unit-width-narrow precision-integer group-on-aligned + es-MX + 0 + 91,827 + -0 + zh-TW + 0 + 91,827 + -0 + bn-BD + ০ + ৯১,৮২৭ + -০ + +unit-width-narrow .000 group-on-aligned + es-MX + 0.000 + 91,827.364 + -0.222 + zh-TW + 0.000 + 91,827.364 + -0.222 + bn-BD + ০.০০০ + ৯১,৮২৭.৩৬৪ + -০.২২২ + +unit-width-narrow .##/@@@+ group-on-aligned + es-MX + 0 + 91,827.36 + -0.222 + zh-TW + 0 + 91,827.36 + -0.222 + bn-BD + ০ + ৯১,৮২৭.৩৬ + -০.২২২ + +unit-width-narrow @@ group-on-aligned + es-MX + 0.0 + 92,000 + -0.22 + zh-TW + 0.0 + 92,000 + -0.22 + bn-BD + ০.০ + ৯২,০০০ + -০.২২ + +unit-width-full-name precision-integer group-on-aligned + es-MX + 0 + 91,827 + -0 + zh-TW + 0 + 91,827 + -0 + bn-BD + ০ + ৯১,৮২৭ + -০ + +unit-width-full-name .000 group-on-aligned + es-MX + 0.000 + 91,827.364 + -0.222 + zh-TW + 0.000 + 91,827.364 + -0.222 + bn-BD + ০.০০০ + ৯১,৮২৭.৩৬৪ + -০.২২২ + +unit-width-full-name .##/@@@+ group-on-aligned + es-MX + 0 + 91,827.36 + -0.222 + zh-TW + 0 + 91,827.36 + -0.222 + bn-BD + ০ + ৯১,৮২৭.৩৬ + -০.২২২ + +unit-width-full-name @@ group-on-aligned + es-MX + 0.0 + 92,000 + -0.22 + zh-TW + 0.0 + 92,000 + -0.22 + bn-BD + ০.০ + ৯২,০০০ + -০.২২ + +unit-width-narrow precision-integer latin + es-MX + 0 + 91,827 + -0 + zh-TW + 0 + 91,827 + -0 + bn-BD + 0 + 91,827 + -0 + +unit-width-narrow .000 latin + es-MX + 0.000 + 91,827.364 + -0.222 + zh-TW + 0.000 + 91,827.364 + -0.222 + bn-BD + 0.000 + 91,827.364 + -0.222 + +unit-width-narrow .##/@@@+ latin + es-MX + 0 + 91,827.36 + -0.222 + zh-TW + 0 + 91,827.36 + -0.222 + bn-BD + 0 + 91,827.36 + -0.222 + +unit-width-narrow @@ latin + es-MX + 0.0 + 92,000 + -0.22 + zh-TW + 0.0 + 92,000 + -0.22 + bn-BD + 0.0 + 92,000 + -0.22 + +unit-width-full-name precision-integer latin + es-MX + 0 + 91,827 + -0 + zh-TW + 0 + 91,827 + -0 + bn-BD + 0 + 91,827 + -0 + +unit-width-full-name .000 latin + es-MX + 0.000 + 91,827.364 + -0.222 + zh-TW + 0.000 + 91,827.364 + -0.222 + bn-BD + 0.000 + 91,827.364 + -0.222 + +unit-width-full-name .##/@@@+ latin + es-MX + 0 + 91,827.36 + -0.222 + zh-TW + 0 + 91,827.36 + -0.222 + bn-BD + 0 + 91,827.36 + -0.222 + +unit-width-full-name @@ latin + es-MX + 0.0 + 92,000 + -0.22 + zh-TW + 0.0 + 92,000 + -0.22 + bn-BD + 0.0 + 92,000 + -0.22 + +unit-width-narrow precision-integer sign-accounting-except-zero + es-MX + 0 + +91,827 + -0 + zh-TW + 0 + +91,827 + -0 + bn-BD + ০ + +৯১,৮২৭ + -০ + +unit-width-narrow .000 sign-accounting-except-zero + es-MX + 0.000 + +91,827.364 + -0.222 + zh-TW + 0.000 + +91,827.364 + -0.222 + bn-BD + ০.০০০ + +৯১,৮২৭.৩৬৪ + -০.২২২ + +unit-width-narrow .##/@@@+ sign-accounting-except-zero + es-MX + 0 + +91,827.36 + -0.222 + zh-TW + 0 + +91,827.36 + -0.222 + bn-BD + ০ + +৯১,৮২৭.৩৬ + -০.২২২ + +unit-width-narrow @@ sign-accounting-except-zero + es-MX + 0.0 + +92,000 + -0.22 + zh-TW + 0.0 + +92,000 + -0.22 + bn-BD + ০.০ + +৯২,০০০ + -০.২২ + +unit-width-full-name precision-integer sign-accounting-except-zero + es-MX + 0 + +91,827 + -0 + zh-TW + 0 + +91,827 + -0 + bn-BD + ০ + +৯১,৮২৭ + -০ + +unit-width-full-name .000 sign-accounting-except-zero + es-MX + 0.000 + +91,827.364 + -0.222 + zh-TW + 0.000 + +91,827.364 + -0.222 + bn-BD + ০.০০০ + +৯১,৮২৭.৩৬৪ + -০.২২২ + +unit-width-full-name .##/@@@+ sign-accounting-except-zero + es-MX + 0 + +91,827.36 + -0.222 + zh-TW + 0 + +91,827.36 + -0.222 + bn-BD + ০ + +৯১,৮২৭.৩৬ + -০.২২২ + +unit-width-full-name @@ sign-accounting-except-zero + es-MX + 0.0 + +92,000 + -0.22 + zh-TW + 0.0 + +92,000 + -0.22 + bn-BD + ০.০ + +৯২,০০০ + -০.২২ + +unit-width-narrow precision-integer decimal-always + es-MX + 0. + 91,827. + -0. + zh-TW + 0. + 91,827. + -0. + bn-BD + ০. + ৯১,৮২৭. + -০. + +unit-width-narrow .000 decimal-always + es-MX + 0.000 + 91,827.364 + -0.222 + zh-TW + 0.000 + 91,827.364 + -0.222 + bn-BD + ০.০০০ + ৯১,৮২৭.৩৬৪ + -০.২২২ + +unit-width-narrow .##/@@@+ decimal-always + es-MX + 0. + 91,827.36 + -0.222 + zh-TW + 0. + 91,827.36 + -0.222 + bn-BD + ০. + ৯১,৮২৭.৩৬ + -০.২২২ + +unit-width-narrow @@ decimal-always + es-MX + 0.0 + 92,000. + -0.22 + zh-TW + 0.0 + 92,000. + -0.22 + bn-BD + ০.০ + ৯২,০০০. + -০.২২ + +unit-width-full-name precision-integer decimal-always + es-MX + 0. + 91,827. + -0. + zh-TW + 0. + 91,827. + -0. + bn-BD + ০. + ৯১,৮২৭. + -০. + +unit-width-full-name .000 decimal-always + es-MX + 0.000 + 91,827.364 + -0.222 + zh-TW + 0.000 + 91,827.364 + -0.222 + bn-BD + ০.০০০ + ৯১,৮২৭.৩৬৪ + -০.২২২ + +unit-width-full-name .##/@@@+ decimal-always + es-MX + 0. + 91,827.36 + -0.222 + zh-TW + 0. + 91,827.36 + -0.222 + bn-BD + ০. + ৯১,৮২৭.৩৬ + -০.২২২ + +unit-width-full-name @@ decimal-always + es-MX + 0.0 + 92,000. + -0.22 + zh-TW + 0.0 + 92,000. + -0.22 + bn-BD + ০.০ + ৯২,০০০. + -০.২২ + +unit-width-narrow rounding-mode-floor integer-width/##00 + es-MX + 00 + 1827.3645 + -00.22222 + zh-TW + 00 + 1,827.3645 + -00.22222 + bn-BD + ০০ + ১,৮২৭.৩৬৪৫ + -০০.২২২২২ + +unit-width-full-name rounding-mode-floor integer-width/##00 + es-MX + 00 + 1827.3645 + -00.22222 + zh-TW + 00 + 1,827.3645 + -00.22222 + bn-BD + ০০ + ১,৮২৭.৩৬৪৫ + -০০.২২২২২ + +unit-width-narrow rounding-mode-floor scale/0.5 + es-MX + 0 + 45,913.68225 + -0.11111 + zh-TW + 0 + 45,913.68225 + -0.11111 + bn-BD + ০ + ৪৫,৯১৩.৬৮২২৫ + -০.১১১১১ + +unit-width-full-name rounding-mode-floor scale/0.5 + es-MX + 0 + 45,913.68225 + -0.11111 + zh-TW + 0 + 45,913.68225 + -0.11111 + bn-BD + ০ + ৪৫,৯১৩.৬৮২২৫ + -০.১১১১১ + +unit-width-narrow rounding-mode-floor group-on-aligned + es-MX + 0 + 91,827.3645 + -0.22222 + zh-TW + 0 + 91,827.3645 + -0.22222 + bn-BD + ০ + ৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +unit-width-full-name rounding-mode-floor group-on-aligned + es-MX + 0 + 91,827.3645 + -0.22222 + zh-TW + 0 + 91,827.3645 + -0.22222 + bn-BD + ০ + ৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +unit-width-narrow rounding-mode-floor latin + es-MX + 0 + 91,827.3645 + -0.22222 + zh-TW + 0 + 91,827.3645 + -0.22222 + bn-BD + 0 + 91,827.3645 + -0.22222 + +unit-width-full-name rounding-mode-floor latin + es-MX + 0 + 91,827.3645 + -0.22222 + zh-TW + 0 + 91,827.3645 + -0.22222 + bn-BD + 0 + 91,827.3645 + -0.22222 + +unit-width-narrow rounding-mode-floor sign-accounting-except-zero + es-MX + 0 + +91,827.3645 + -0.22222 + zh-TW + 0 + +91,827.3645 + -0.22222 + bn-BD + ০ + +৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +unit-width-full-name rounding-mode-floor sign-accounting-except-zero + es-MX + 0 + +91,827.3645 + -0.22222 + zh-TW + 0 + +91,827.3645 + -0.22222 + bn-BD + ০ + +৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +unit-width-narrow rounding-mode-floor decimal-always + es-MX + 0. + 91,827.3645 + -0.22222 + zh-TW + 0. + 91,827.3645 + -0.22222 + bn-BD + ০. + ৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +unit-width-full-name rounding-mode-floor decimal-always + es-MX + 0. + 91,827.3645 + -0.22222 + zh-TW + 0. + 91,827.3645 + -0.22222 + bn-BD + ০. + ৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +unit-width-narrow integer-width/##00 scale/0.5 + es-MX + 00 + 5913.68225 + -00.11111 + zh-TW + 00 + 5,913.68225 + -00.11111 + bn-BD + ০০ + ৫,৯১৩.৬৮২২৫ + -০০.১১১১১ + +unit-width-full-name integer-width/##00 scale/0.5 + es-MX + 00 + 5913.68225 + -00.11111 + zh-TW + 00 + 5,913.68225 + -00.11111 + bn-BD + ০০ + ৫,৯১৩.৬৮২২৫ + -০০.১১১১১ + +unit-width-narrow integer-width/##00 group-on-aligned + es-MX + 00 + 1,827.3645 + -00.22222 + zh-TW + 00 + 1,827.3645 + -00.22222 + bn-BD + ০০ + ১,৮২৭.৩৬৪৫ + -০০.২২২২২ + +unit-width-full-name integer-width/##00 group-on-aligned + es-MX + 00 + 1,827.3645 + -00.22222 + zh-TW + 00 + 1,827.3645 + -00.22222 + bn-BD + ০০ + ১,৮২৭.৩৬৪৫ + -০০.২২২২২ + +unit-width-narrow integer-width/##00 latin + es-MX + 00 + 1827.3645 + -00.22222 + zh-TW + 00 + 1,827.3645 + -00.22222 + bn-BD + 00 + 1,827.3645 + -00.22222 + +unit-width-full-name integer-width/##00 latin + es-MX + 00 + 1827.3645 + -00.22222 + zh-TW + 00 + 1,827.3645 + -00.22222 + bn-BD + 00 + 1,827.3645 + -00.22222 + +unit-width-narrow integer-width/##00 sign-accounting-except-zero + es-MX + 00 + +1827.3645 + -00.22222 + zh-TW + 00 + +1,827.3645 + -00.22222 + bn-BD + ০০ + +১,৮২৭.৩৬৪৫ + -০০.২২২২২ + +unit-width-full-name integer-width/##00 sign-accounting-except-zero + es-MX + 00 + +1827.3645 + -00.22222 + zh-TW + 00 + +1,827.3645 + -00.22222 + bn-BD + ০০ + +১,৮২৭.৩৬৪৫ + -০০.২২২২২ + +unit-width-narrow integer-width/##00 decimal-always + es-MX + 00. + 1827.3645 + -00.22222 + zh-TW + 00. + 1,827.3645 + -00.22222 + bn-BD + ০০. + ১,৮২৭.৩৬৪৫ + -০০.২২২২২ + +unit-width-full-name integer-width/##00 decimal-always + es-MX + 00. + 1827.3645 + -00.22222 + zh-TW + 00. + 1,827.3645 + -00.22222 + bn-BD + ০০. + ১,৮২৭.৩৬৪৫ + -০০.২২২২২ + +unit-width-narrow scale/0.5 group-on-aligned + es-MX + 0 + 45,913.68225 + -0.11111 + zh-TW + 0 + 45,913.68225 + -0.11111 + bn-BD + ০ + ৪৫,৯১৩.৬৮২২৫ + -০.১১১১১ + +unit-width-full-name scale/0.5 group-on-aligned + es-MX + 0 + 45,913.68225 + -0.11111 + zh-TW + 0 + 45,913.68225 + -0.11111 + bn-BD + ০ + ৪৫,৯১৩.৬৮২২৫ + -০.১১১১১ + +unit-width-narrow scale/0.5 latin + es-MX + 0 + 45,913.68225 + -0.11111 + zh-TW + 0 + 45,913.68225 + -0.11111 + bn-BD + 0 + 45,913.68225 + -0.11111 + +unit-width-full-name scale/0.5 latin + es-MX + 0 + 45,913.68225 + -0.11111 + zh-TW + 0 + 45,913.68225 + -0.11111 + bn-BD + 0 + 45,913.68225 + -0.11111 + +unit-width-narrow scale/0.5 sign-accounting-except-zero + es-MX + 0 + +45,913.68225 + -0.11111 + zh-TW + 0 + +45,913.68225 + -0.11111 + bn-BD + ০ + +৪৫,৯১৩.৬৮২২৫ + -০.১১১১১ + +unit-width-full-name scale/0.5 sign-accounting-except-zero + es-MX + 0 + +45,913.68225 + -0.11111 + zh-TW + 0 + +45,913.68225 + -0.11111 + bn-BD + ০ + +৪৫,৯১৩.৬৮২২৫ + -০.১১১১১ + +unit-width-narrow scale/0.5 decimal-always + es-MX + 0. + 45,913.68225 + -0.11111 + zh-TW + 0. + 45,913.68225 + -0.11111 + bn-BD + ০. + ৪৫,৯১৩.৬৮২২৫ + -০.১১১১১ + +unit-width-full-name scale/0.5 decimal-always + es-MX + 0. + 45,913.68225 + -0.11111 + zh-TW + 0. + 45,913.68225 + -0.11111 + bn-BD + ০. + ৪৫,৯১৩.৬৮২২৫ + -০.১১১১১ + +unit-width-narrow group-on-aligned latin + es-MX + 0 + 91,827.3645 + -0.22222 + zh-TW + 0 + 91,827.3645 + -0.22222 + bn-BD + 0 + 91,827.3645 + -0.22222 + +unit-width-full-name group-on-aligned latin + es-MX + 0 + 91,827.3645 + -0.22222 + zh-TW + 0 + 91,827.3645 + -0.22222 + bn-BD + 0 + 91,827.3645 + -0.22222 + +unit-width-narrow group-on-aligned sign-accounting-except-zero + es-MX + 0 + +91,827.3645 + -0.22222 + zh-TW + 0 + +91,827.3645 + -0.22222 + bn-BD + ০ + +৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +unit-width-full-name group-on-aligned sign-accounting-except-zero + es-MX + 0 + +91,827.3645 + -0.22222 + zh-TW + 0 + +91,827.3645 + -0.22222 + bn-BD + ০ + +৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +unit-width-narrow group-on-aligned decimal-always + es-MX + 0. + 91,827.3645 + -0.22222 + zh-TW + 0. + 91,827.3645 + -0.22222 + bn-BD + ০. + ৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +unit-width-full-name group-on-aligned decimal-always + es-MX + 0. + 91,827.3645 + -0.22222 + zh-TW + 0. + 91,827.3645 + -0.22222 + bn-BD + ০. + ৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +unit-width-narrow latin sign-accounting-except-zero + es-MX + 0 + +91,827.3645 + -0.22222 + zh-TW + 0 + +91,827.3645 + -0.22222 + bn-BD + 0 + +91,827.3645 + -0.22222 + +unit-width-full-name latin sign-accounting-except-zero + es-MX + 0 + +91,827.3645 + -0.22222 + zh-TW + 0 + +91,827.3645 + -0.22222 + bn-BD + 0 + +91,827.3645 + -0.22222 + +unit-width-narrow latin decimal-always + es-MX + 0. + 91,827.3645 + -0.22222 + zh-TW + 0. + 91,827.3645 + -0.22222 + bn-BD + 0. + 91,827.3645 + -0.22222 + +unit-width-full-name latin decimal-always + es-MX + 0. + 91,827.3645 + -0.22222 + zh-TW + 0. + 91,827.3645 + -0.22222 + bn-BD + 0. + 91,827.3645 + -0.22222 + +unit-width-narrow sign-accounting-except-zero decimal-always + es-MX + 0. + +91,827.3645 + -0.22222 + zh-TW + 0. + +91,827.3645 + -0.22222 + bn-BD + ০. + +৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +unit-width-full-name sign-accounting-except-zero decimal-always + es-MX + 0. + +91,827.3645 + -0.22222 + zh-TW + 0. + +91,827.3645 + -0.22222 + bn-BD + ০. + +৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +precision-integer rounding-mode-floor integer-width/##00 + es-MX + 00 + 1827 + -01 + zh-TW + 00 + 1,827 + -01 + bn-BD + ০০ + ১,৮২৭ + -০১ + +.000 rounding-mode-floor integer-width/##00 + es-MX + 00.000 + 1827.364 + -00.223 + zh-TW + 00.000 + 1,827.364 + -00.223 + bn-BD + ০০.০০০ + ১,৮২৭.৩৬৪ + -০০.২২৩ + +.##/@@@+ rounding-mode-floor integer-width/##00 + es-MX + 00 + 1827.36 + -00.223 + zh-TW + 00 + 1,827.36 + -00.223 + bn-BD + ০০ + ১,৮২৭.৩৬ + -০০.২২৩ + +@@ rounding-mode-floor integer-width/##00 + es-MX + 00.0 + 1000 + -00.23 + zh-TW + 00.0 + 1,000 + -00.23 + bn-BD + ০০.০ + ১,০০০ + -০০.২৩ + +precision-integer rounding-mode-floor scale/0.5 + es-MX + 0 + 45,913 + -1 + zh-TW + 0 + 45,913 + -1 + bn-BD + ০ + ৪৫,৯১৩ + -১ + +.000 rounding-mode-floor scale/0.5 + es-MX + 0.000 + 45,913.682 + -0.112 + zh-TW + 0.000 + 45,913.682 + -0.112 + bn-BD + ০.০০০ + ৪৫,৯১৩.৬৮২ + -০.১১২ + +.##/@@@+ rounding-mode-floor scale/0.5 + es-MX + 0 + 45,913.68 + -0.112 + zh-TW + 0 + 45,913.68 + -0.112 + bn-BD + ০ + ৪৫,৯১৩.৬৮ + -০.১১২ + +@@ rounding-mode-floor scale/0.5 + es-MX + 0.0 + 45,000 + -0.12 + zh-TW + 0.0 + 45,000 + -0.12 + bn-BD + ০.০ + ৪৫,০০০ + -০.১২ + +precision-integer rounding-mode-floor group-on-aligned + es-MX + 0 + 91,827 + -1 + zh-TW + 0 + 91,827 + -1 + bn-BD + ০ + ৯১,৮২৭ + -১ + +.000 rounding-mode-floor group-on-aligned + es-MX + 0.000 + 91,827.364 + -0.223 + zh-TW + 0.000 + 91,827.364 + -0.223 + bn-BD + ০.০০০ + ৯১,৮২৭.৩৬৪ + -০.২২৩ + +.##/@@@+ rounding-mode-floor group-on-aligned + es-MX + 0 + 91,827.36 + -0.223 + zh-TW + 0 + 91,827.36 + -0.223 + bn-BD + ০ + ৯১,৮২৭.৩৬ + -০.২২৩ + +@@ rounding-mode-floor group-on-aligned + es-MX + 0.0 + 91,000 + -0.23 + zh-TW + 0.0 + 91,000 + -0.23 + bn-BD + ০.০ + ৯১,০০০ + -০.২৩ + +precision-integer rounding-mode-floor latin + es-MX + 0 + 91,827 + -1 + zh-TW + 0 + 91,827 + -1 + bn-BD + 0 + 91,827 + -1 + +.000 rounding-mode-floor latin + es-MX + 0.000 + 91,827.364 + -0.223 + zh-TW + 0.000 + 91,827.364 + -0.223 + bn-BD + 0.000 + 91,827.364 + -0.223 + +.##/@@@+ rounding-mode-floor latin + es-MX + 0 + 91,827.36 + -0.223 + zh-TW + 0 + 91,827.36 + -0.223 + bn-BD + 0 + 91,827.36 + -0.223 + +@@ rounding-mode-floor latin + es-MX + 0.0 + 91,000 + -0.23 + zh-TW + 0.0 + 91,000 + -0.23 + bn-BD + 0.0 + 91,000 + -0.23 + +precision-integer rounding-mode-floor sign-accounting-except-zero + es-MX + 0 + +91,827 + -1 + zh-TW + 0 + +91,827 + -1 + bn-BD + ০ + +৯১,৮২৭ + -১ + +.000 rounding-mode-floor sign-accounting-except-zero + es-MX + 0.000 + +91,827.364 + -0.223 + zh-TW + 0.000 + +91,827.364 + -0.223 + bn-BD + ০.০০০ + +৯১,৮২৭.৩৬৪ + -০.২২৩ + +.##/@@@+ rounding-mode-floor sign-accounting-except-zero + es-MX + 0 + +91,827.36 + -0.223 + zh-TW + 0 + +91,827.36 + -0.223 + bn-BD + ০ + +৯১,৮২৭.৩৬ + -০.২২৩ + +@@ rounding-mode-floor sign-accounting-except-zero + es-MX + 0.0 + +91,000 + -0.23 + zh-TW + 0.0 + +91,000 + -0.23 + bn-BD + ০.০ + +৯১,০০০ + -০.২৩ + +precision-integer rounding-mode-floor decimal-always + es-MX + 0. + 91,827. + -1. + zh-TW + 0. + 91,827. + -1. + bn-BD + ০. + ৯১,৮২৭. + -১. + +.000 rounding-mode-floor decimal-always + es-MX + 0.000 + 91,827.364 + -0.223 + zh-TW + 0.000 + 91,827.364 + -0.223 + bn-BD + ০.০০০ + ৯১,৮২৭.৩৬৪ + -০.২২৩ + +.##/@@@+ rounding-mode-floor decimal-always + es-MX + 0. + 91,827.36 + -0.223 + zh-TW + 0. + 91,827.36 + -0.223 + bn-BD + ০. + ৯১,৮২৭.৩৬ + -০.২২৩ + +@@ rounding-mode-floor decimal-always + es-MX + 0.0 + 91,000. + -0.23 + zh-TW + 0.0 + 91,000. + -0.23 + bn-BD + ০.০ + ৯১,০০০. + -০.২৩ + +precision-integer integer-width/##00 scale/0.5 + es-MX + 00 + 5914 + -00 + zh-TW + 00 + 5,914 + -00 + bn-BD + ০০ + ৫,৯১৪ + -০০ + +.000 integer-width/##00 scale/0.5 + es-MX + 00.000 + 5913.682 + -00.111 + zh-TW + 00.000 + 5,913.682 + -00.111 + bn-BD + ০০.০০০ + ৫,৯১৩.৬৮২ + -০০.১১১ + +.##/@@@+ integer-width/##00 scale/0.5 + es-MX + 00 + 5913.68 + -00.111 + zh-TW + 00 + 5,913.68 + -00.111 + bn-BD + ০০ + ৫,৯১৩.৬৮ + -০০.১১১ + +@@ integer-width/##00 scale/0.5 + es-MX + 00.0 + 6000 + -00.11 + zh-TW + 00.0 + 6,000 + -00.11 + bn-BD + ০০.০ + ৬,০০০ + -০০.১১ + +precision-integer integer-width/##00 group-on-aligned + es-MX + 00 + 1,827 + -00 + zh-TW + 00 + 1,827 + -00 + bn-BD + ০০ + ১,৮২৭ + -০০ + +.000 integer-width/##00 group-on-aligned + es-MX + 00.000 + 1,827.364 + -00.222 + zh-TW + 00.000 + 1,827.364 + -00.222 + bn-BD + ০০.০০০ + ১,৮২৭.৩৬৪ + -০০.২২২ + +.##/@@@+ integer-width/##00 group-on-aligned + es-MX + 00 + 1,827.36 + -00.222 + zh-TW + 00 + 1,827.36 + -00.222 + bn-BD + ০০ + ১,৮২৭.৩৬ + -০০.২২২ + +@@ integer-width/##00 group-on-aligned + es-MX + 00.0 + 2,000 + -00.22 + zh-TW + 00.0 + 2,000 + -00.22 + bn-BD + ০০.০ + ২,০০০ + -০০.২২ + +precision-integer integer-width/##00 latin + es-MX + 00 + 1827 + -00 + zh-TW + 00 + 1,827 + -00 + bn-BD + 00 + 1,827 + -00 + +.000 integer-width/##00 latin + es-MX + 00.000 + 1827.364 + -00.222 + zh-TW + 00.000 + 1,827.364 + -00.222 + bn-BD + 00.000 + 1,827.364 + -00.222 + +.##/@@@+ integer-width/##00 latin + es-MX + 00 + 1827.36 + -00.222 + zh-TW + 00 + 1,827.36 + -00.222 + bn-BD + 00 + 1,827.36 + -00.222 + +@@ integer-width/##00 latin + es-MX + 00.0 + 2000 + -00.22 + zh-TW + 00.0 + 2,000 + -00.22 + bn-BD + 00.0 + 2,000 + -00.22 + +precision-integer integer-width/##00 sign-accounting-except-zero + es-MX + 00 + +1827 + -00 + zh-TW + 00 + +1,827 + -00 + bn-BD + ০০ + +১,৮২৭ + -০০ + +.000 integer-width/##00 sign-accounting-except-zero + es-MX + 00.000 + +1827.364 + -00.222 + zh-TW + 00.000 + +1,827.364 + -00.222 + bn-BD + ০০.০০০ + +১,৮২৭.৩৬৪ + -০০.২২২ + +.##/@@@+ integer-width/##00 sign-accounting-except-zero + es-MX + 00 + +1827.36 + -00.222 + zh-TW + 00 + +1,827.36 + -00.222 + bn-BD + ০০ + +১,৮২৭.৩৬ + -০০.২২২ + +@@ integer-width/##00 sign-accounting-except-zero + es-MX + 00.0 + +2000 + -00.22 + zh-TW + 00.0 + +2,000 + -00.22 + bn-BD + ০০.০ + +২,০০০ + -০০.২২ + +precision-integer integer-width/##00 decimal-always + es-MX + 00. + 1827. + -00. + zh-TW + 00. + 1,827. + -00. + bn-BD + ০০. + ১,৮২৭. + -০০. + +.000 integer-width/##00 decimal-always + es-MX + 00.000 + 1827.364 + -00.222 + zh-TW + 00.000 + 1,827.364 + -00.222 + bn-BD + ০০.০০০ + ১,৮২৭.৩৬৪ + -০০.২২২ + +.##/@@@+ integer-width/##00 decimal-always + es-MX + 00. + 1827.36 + -00.222 + zh-TW + 00. + 1,827.36 + -00.222 + bn-BD + ০০. + ১,৮২৭.৩৬ + -০০.২২২ + +@@ integer-width/##00 decimal-always + es-MX + 00.0 + 2000. + -00.22 + zh-TW + 00.0 + 2,000. + -00.22 + bn-BD + ০০.০ + ২,০০০. + -০০.২২ + +precision-integer scale/0.5 group-on-aligned + es-MX + 0 + 45,914 + -0 + zh-TW + 0 + 45,914 + -0 + bn-BD + ০ + ৪৫,৯১৪ + -০ + +.000 scale/0.5 group-on-aligned + es-MX + 0.000 + 45,913.682 + -0.111 + zh-TW + 0.000 + 45,913.682 + -0.111 + bn-BD + ০.০০০ + ৪৫,৯১৩.৬৮২ + -০.১১১ + +.##/@@@+ scale/0.5 group-on-aligned + es-MX + 0 + 45,913.68 + -0.111 + zh-TW + 0 + 45,913.68 + -0.111 + bn-BD + ০ + ৪৫,৯১৩.৬৮ + -০.১১১ + +@@ scale/0.5 group-on-aligned + es-MX + 0.0 + 46,000 + -0.11 + zh-TW + 0.0 + 46,000 + -0.11 + bn-BD + ০.০ + ৪৬,০০০ + -০.১১ + +precision-integer scale/0.5 latin + es-MX + 0 + 45,914 + -0 + zh-TW + 0 + 45,914 + -0 + bn-BD + 0 + 45,914 + -0 + +.000 scale/0.5 latin + es-MX + 0.000 + 45,913.682 + -0.111 + zh-TW + 0.000 + 45,913.682 + -0.111 + bn-BD + 0.000 + 45,913.682 + -0.111 + +.##/@@@+ scale/0.5 latin + es-MX + 0 + 45,913.68 + -0.111 + zh-TW + 0 + 45,913.68 + -0.111 + bn-BD + 0 + 45,913.68 + -0.111 + +@@ scale/0.5 latin + es-MX + 0.0 + 46,000 + -0.11 + zh-TW + 0.0 + 46,000 + -0.11 + bn-BD + 0.0 + 46,000 + -0.11 + +precision-integer scale/0.5 sign-accounting-except-zero + es-MX + 0 + +45,914 + -0 + zh-TW + 0 + +45,914 + -0 + bn-BD + ০ + +৪৫,৯১৪ + -০ + +.000 scale/0.5 sign-accounting-except-zero + es-MX + 0.000 + +45,913.682 + -0.111 + zh-TW + 0.000 + +45,913.682 + -0.111 + bn-BD + ০.০০০ + +৪৫,৯১৩.৬৮২ + -০.১১১ + +.##/@@@+ scale/0.5 sign-accounting-except-zero + es-MX + 0 + +45,913.68 + -0.111 + zh-TW + 0 + +45,913.68 + -0.111 + bn-BD + ০ + +৪৫,৯১৩.৬৮ + -০.১১১ + +@@ scale/0.5 sign-accounting-except-zero + es-MX + 0.0 + +46,000 + -0.11 + zh-TW + 0.0 + +46,000 + -0.11 + bn-BD + ০.০ + +৪৬,০০০ + -০.১১ + +precision-integer scale/0.5 decimal-always + es-MX + 0. + 45,914. + -0. + zh-TW + 0. + 45,914. + -0. + bn-BD + ০. + ৪৫,৯১৪. + -০. + +.000 scale/0.5 decimal-always + es-MX + 0.000 + 45,913.682 + -0.111 + zh-TW + 0.000 + 45,913.682 + -0.111 + bn-BD + ০.০০০ + ৪৫,৯১৩.৬৮২ + -০.১১১ + +.##/@@@+ scale/0.5 decimal-always + es-MX + 0. + 45,913.68 + -0.111 + zh-TW + 0. + 45,913.68 + -0.111 + bn-BD + ০. + ৪৫,৯১৩.৬৮ + -০.১১১ + +@@ scale/0.5 decimal-always + es-MX + 0.0 + 46,000. + -0.11 + zh-TW + 0.0 + 46,000. + -0.11 + bn-BD + ০.০ + ৪৬,০০০. + -০.১১ + +precision-integer group-on-aligned latin + es-MX + 0 + 91,827 + -0 + zh-TW + 0 + 91,827 + -0 + bn-BD + 0 + 91,827 + -0 + +.000 group-on-aligned latin + es-MX + 0.000 + 91,827.364 + -0.222 + zh-TW + 0.000 + 91,827.364 + -0.222 + bn-BD + 0.000 + 91,827.364 + -0.222 + +.##/@@@+ group-on-aligned latin + es-MX + 0 + 91,827.36 + -0.222 + zh-TW + 0 + 91,827.36 + -0.222 + bn-BD + 0 + 91,827.36 + -0.222 + +@@ group-on-aligned latin + es-MX + 0.0 + 92,000 + -0.22 + zh-TW + 0.0 + 92,000 + -0.22 + bn-BD + 0.0 + 92,000 + -0.22 + +precision-integer group-on-aligned sign-accounting-except-zero + es-MX + 0 + +91,827 + -0 + zh-TW + 0 + +91,827 + -0 + bn-BD + ০ + +৯১,৮২৭ + -০ + +.000 group-on-aligned sign-accounting-except-zero + es-MX + 0.000 + +91,827.364 + -0.222 + zh-TW + 0.000 + +91,827.364 + -0.222 + bn-BD + ০.০০০ + +৯১,৮২৭.৩৬৪ + -০.২২২ + +.##/@@@+ group-on-aligned sign-accounting-except-zero + es-MX + 0 + +91,827.36 + -0.222 + zh-TW + 0 + +91,827.36 + -0.222 + bn-BD + ০ + +৯১,৮২৭.৩৬ + -০.২২২ + +@@ group-on-aligned sign-accounting-except-zero + es-MX + 0.0 + +92,000 + -0.22 + zh-TW + 0.0 + +92,000 + -0.22 + bn-BD + ০.০ + +৯২,০০০ + -০.২২ + +precision-integer group-on-aligned decimal-always + es-MX + 0. + 91,827. + -0. + zh-TW + 0. + 91,827. + -0. + bn-BD + ০. + ৯১,৮২৭. + -০. + +.000 group-on-aligned decimal-always + es-MX + 0.000 + 91,827.364 + -0.222 + zh-TW + 0.000 + 91,827.364 + -0.222 + bn-BD + ০.০০০ + ৯১,৮২৭.৩৬৪ + -০.২২২ + +.##/@@@+ group-on-aligned decimal-always + es-MX + 0. + 91,827.36 + -0.222 + zh-TW + 0. + 91,827.36 + -0.222 + bn-BD + ০. + ৯১,৮২৭.৩৬ + -০.২২২ + +@@ group-on-aligned decimal-always + es-MX + 0.0 + 92,000. + -0.22 + zh-TW + 0.0 + 92,000. + -0.22 + bn-BD + ০.০ + ৯২,০০০. + -০.২২ + +precision-integer latin sign-accounting-except-zero + es-MX + 0 + +91,827 + -0 + zh-TW + 0 + +91,827 + -0 + bn-BD + 0 + +91,827 + -0 + +.000 latin sign-accounting-except-zero + es-MX + 0.000 + +91,827.364 + -0.222 + zh-TW + 0.000 + +91,827.364 + -0.222 + bn-BD + 0.000 + +91,827.364 + -0.222 + +.##/@@@+ latin sign-accounting-except-zero + es-MX + 0 + +91,827.36 + -0.222 + zh-TW + 0 + +91,827.36 + -0.222 + bn-BD + 0 + +91,827.36 + -0.222 + +@@ latin sign-accounting-except-zero + es-MX + 0.0 + +92,000 + -0.22 + zh-TW + 0.0 + +92,000 + -0.22 + bn-BD + 0.0 + +92,000 + -0.22 + +precision-integer latin decimal-always + es-MX + 0. + 91,827. + -0. + zh-TW + 0. + 91,827. + -0. + bn-BD + 0. + 91,827. + -0. + +.000 latin decimal-always + es-MX + 0.000 + 91,827.364 + -0.222 + zh-TW + 0.000 + 91,827.364 + -0.222 + bn-BD + 0.000 + 91,827.364 + -0.222 + +.##/@@@+ latin decimal-always + es-MX + 0. + 91,827.36 + -0.222 + zh-TW + 0. + 91,827.36 + -0.222 + bn-BD + 0. + 91,827.36 + -0.222 + +@@ latin decimal-always + es-MX + 0.0 + 92,000. + -0.22 + zh-TW + 0.0 + 92,000. + -0.22 + bn-BD + 0.0 + 92,000. + -0.22 + +precision-integer sign-accounting-except-zero decimal-always + es-MX + 0. + +91,827. + -0. + zh-TW + 0. + +91,827. + -0. + bn-BD + ০. + +৯১,৮২৭. + -০. + +.000 sign-accounting-except-zero decimal-always + es-MX + 0.000 + +91,827.364 + -0.222 + zh-TW + 0.000 + +91,827.364 + -0.222 + bn-BD + ০.০০০ + +৯১,৮২৭.৩৬৪ + -০.২২২ + +.##/@@@+ sign-accounting-except-zero decimal-always + es-MX + 0. + +91,827.36 + -0.222 + zh-TW + 0. + +91,827.36 + -0.222 + bn-BD + ০. + +৯১,৮২৭.৩৬ + -০.২২২ + +@@ sign-accounting-except-zero decimal-always + es-MX + 0.0 + +92,000. + -0.22 + zh-TW + 0.0 + +92,000. + -0.22 + bn-BD + ০.০ + +৯২,০০০. + -০.২২ + +rounding-mode-floor integer-width/##00 scale/0.5 + es-MX + 00 + 5913.68225 + -00.11111 + zh-TW + 00 + 5,913.68225 + -00.11111 + bn-BD + ০০ + ৫,৯১৩.৬৮২২৫ + -০০.১১১১১ + +rounding-mode-floor integer-width/##00 group-on-aligned + es-MX + 00 + 1,827.3645 + -00.22222 + zh-TW + 00 + 1,827.3645 + -00.22222 + bn-BD + ০০ + ১,৮২৭.৩৬৪৫ + -০০.২২২২২ + +rounding-mode-floor integer-width/##00 latin + es-MX + 00 + 1827.3645 + -00.22222 + zh-TW + 00 + 1,827.3645 + -00.22222 + bn-BD + 00 + 1,827.3645 + -00.22222 + +rounding-mode-floor integer-width/##00 sign-accounting-except-zero + es-MX + 00 + +1827.3645 + -00.22222 + zh-TW + 00 + +1,827.3645 + -00.22222 + bn-BD + ০০ + +১,৮২৭.৩৬৪৫ + -০০.২২২২২ + +rounding-mode-floor integer-width/##00 decimal-always + es-MX + 00. + 1827.3645 + -00.22222 + zh-TW + 00. + 1,827.3645 + -00.22222 + bn-BD + ০০. + ১,৮২৭.৩৬৪৫ + -০০.২২২২২ + +rounding-mode-floor scale/0.5 group-on-aligned + es-MX + 0 + 45,913.68225 + -0.11111 + zh-TW + 0 + 45,913.68225 + -0.11111 + bn-BD + ০ + ৪৫,৯১৩.৬৮২২৫ + -০.১১১১১ + +rounding-mode-floor scale/0.5 latin + es-MX + 0 + 45,913.68225 + -0.11111 + zh-TW + 0 + 45,913.68225 + -0.11111 + bn-BD + 0 + 45,913.68225 + -0.11111 + +rounding-mode-floor scale/0.5 sign-accounting-except-zero + es-MX + 0 + +45,913.68225 + -0.11111 + zh-TW + 0 + +45,913.68225 + -0.11111 + bn-BD + ০ + +৪৫,৯১৩.৬৮২২৫ + -০.১১১১১ + +rounding-mode-floor scale/0.5 decimal-always + es-MX + 0. + 45,913.68225 + -0.11111 + zh-TW + 0. + 45,913.68225 + -0.11111 + bn-BD + ০. + ৪৫,৯১৩.৬৮২২৫ + -০.১১১১১ + +rounding-mode-floor group-on-aligned latin + es-MX + 0 + 91,827.3645 + -0.22222 + zh-TW + 0 + 91,827.3645 + -0.22222 + bn-BD + 0 + 91,827.3645 + -0.22222 + +rounding-mode-floor group-on-aligned sign-accounting-except-zero + es-MX + 0 + +91,827.3645 + -0.22222 + zh-TW + 0 + +91,827.3645 + -0.22222 + bn-BD + ০ + +৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +rounding-mode-floor group-on-aligned decimal-always + es-MX + 0. + 91,827.3645 + -0.22222 + zh-TW + 0. + 91,827.3645 + -0.22222 + bn-BD + ০. + ৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +rounding-mode-floor latin sign-accounting-except-zero + es-MX + 0 + +91,827.3645 + -0.22222 + zh-TW + 0 + +91,827.3645 + -0.22222 + bn-BD + 0 + +91,827.3645 + -0.22222 + +rounding-mode-floor latin decimal-always + es-MX + 0. + 91,827.3645 + -0.22222 + zh-TW + 0. + 91,827.3645 + -0.22222 + bn-BD + 0. + 91,827.3645 + -0.22222 + +rounding-mode-floor sign-accounting-except-zero decimal-always + es-MX + 0. + +91,827.3645 + -0.22222 + zh-TW + 0. + +91,827.3645 + -0.22222 + bn-BD + ০. + +৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +integer-width/##00 scale/0.5 group-on-aligned + es-MX + 00 + 5,913.68225 + -00.11111 + zh-TW + 00 + 5,913.68225 + -00.11111 + bn-BD + ০০ + ৫,৯১৩.৬৮২২৫ + -০০.১১১১১ + +integer-width/##00 scale/0.5 latin + es-MX + 00 + 5913.68225 + -00.11111 + zh-TW + 00 + 5,913.68225 + -00.11111 + bn-BD + 00 + 5,913.68225 + -00.11111 + +integer-width/##00 scale/0.5 sign-accounting-except-zero + es-MX + 00 + +5913.68225 + -00.11111 + zh-TW + 00 + +5,913.68225 + -00.11111 + bn-BD + ০০ + +৫,৯১৩.৬৮২২৫ + -০০.১১১১১ + +integer-width/##00 scale/0.5 decimal-always + es-MX + 00. + 5913.68225 + -00.11111 + zh-TW + 00. + 5,913.68225 + -00.11111 + bn-BD + ০০. + ৫,৯১৩.৬৮২২৫ + -০০.১১১১১ + +integer-width/##00 group-on-aligned latin + es-MX + 00 + 1,827.3645 + -00.22222 + zh-TW + 00 + 1,827.3645 + -00.22222 + bn-BD + 00 + 1,827.3645 + -00.22222 + +integer-width/##00 group-on-aligned sign-accounting-except-zero + es-MX + 00 + +1,827.3645 + -00.22222 + zh-TW + 00 + +1,827.3645 + -00.22222 + bn-BD + ০০ + +১,৮২৭.৩৬৪৫ + -০০.২২২২২ + +integer-width/##00 group-on-aligned decimal-always + es-MX + 00. + 1,827.3645 + -00.22222 + zh-TW + 00. + 1,827.3645 + -00.22222 + bn-BD + ০০. + ১,৮২৭.৩৬৪৫ + -০০.২২২২২ + +integer-width/##00 latin sign-accounting-except-zero + es-MX + 00 + +1827.3645 + -00.22222 + zh-TW + 00 + +1,827.3645 + -00.22222 + bn-BD + 00 + +1,827.3645 + -00.22222 + +integer-width/##00 latin decimal-always + es-MX + 00. + 1827.3645 + -00.22222 + zh-TW + 00. + 1,827.3645 + -00.22222 + bn-BD + 00. + 1,827.3645 + -00.22222 + +integer-width/##00 sign-accounting-except-zero decimal-always + es-MX + 00. + +1827.3645 + -00.22222 + zh-TW + 00. + +1,827.3645 + -00.22222 + bn-BD + ০০. + +১,৮২৭.৩৬৪৫ + -০০.২২২২২ + +scale/0.5 group-on-aligned latin + es-MX + 0 + 45,913.68225 + -0.11111 + zh-TW + 0 + 45,913.68225 + -0.11111 + bn-BD + 0 + 45,913.68225 + -0.11111 + +scale/0.5 group-on-aligned sign-accounting-except-zero + es-MX + 0 + +45,913.68225 + -0.11111 + zh-TW + 0 + +45,913.68225 + -0.11111 + bn-BD + ০ + +৪৫,৯১৩.৬৮২২৫ + -০.১১১১১ + +scale/0.5 group-on-aligned decimal-always + es-MX + 0. + 45,913.68225 + -0.11111 + zh-TW + 0. + 45,913.68225 + -0.11111 + bn-BD + ০. + ৪৫,৯১৩.৬৮২২৫ + -০.১১১১১ + +scale/0.5 latin sign-accounting-except-zero + es-MX + 0 + +45,913.68225 + -0.11111 + zh-TW + 0 + +45,913.68225 + -0.11111 + bn-BD + 0 + +45,913.68225 + -0.11111 + +scale/0.5 latin decimal-always + es-MX + 0. + 45,913.68225 + -0.11111 + zh-TW + 0. + 45,913.68225 + -0.11111 + bn-BD + 0. + 45,913.68225 + -0.11111 + +scale/0.5 sign-accounting-except-zero decimal-always + es-MX + 0. + +45,913.68225 + -0.11111 + zh-TW + 0. + +45,913.68225 + -0.11111 + bn-BD + ০. + +৪৫,৯১৩.৬৮২২৫ + -০.১১১১১ + +group-on-aligned latin sign-accounting-except-zero + es-MX + 0 + +91,827.3645 + -0.22222 + zh-TW + 0 + +91,827.3645 + -0.22222 + bn-BD + 0 + +91,827.3645 + -0.22222 + +group-on-aligned latin decimal-always + es-MX + 0. + 91,827.3645 + -0.22222 + zh-TW + 0. + 91,827.3645 + -0.22222 + bn-BD + 0. + 91,827.3645 + -0.22222 + +group-on-aligned sign-accounting-except-zero decimal-always + es-MX + 0. + +91,827.3645 + -0.22222 + zh-TW + 0. + +91,827.3645 + -0.22222 + bn-BD + ০. + +৯১,৮২৭.৩৬৪৫ + -০.২২২২২ + +latin sign-accounting-except-zero decimal-always + es-MX + 0. + +91,827.3645 + -0.22222 + zh-TW + 0. + +91,827.3645 + -0.22222 + bn-BD + 0. + +91,827.3645 + -0.22222 + diff --git a/source/test/testdata/rbbitst.txt b/source/test/testdata/rbbitst.txt index a19419c..d0533c0 100644 --- a/source/test/testdata/rbbitst.txt +++ b/source/test/testdata/rbbitst.txt @@ -164,6 +164,498 @@ # #•\u0e40\u0e01•\u0e44\u0301\u0e23\u0302\u0303•\u0e40•\u0e40\u0e02•\u0e02• • +# +# ICU-13637 and CLDR-10994 - Indic Grapheme Cluster Boundary changes to support aksaras +# New rule: LinkingConsonant ExtCccZwj* Virama ExtCccZwj* × LinkingConsonant +# Sample Chars: LinkingConsonant: \u0915 +# Virama: \u094d [also Extend] +# ExtCccZWJ: \u0308 +# Extend but not ExtCCCZWJ \u093A + +•\u0915\u094d\u0915• +•\u0915\u0308\u0308\u094d\u0308\u0308\u0915• +•\u0915\u0308\u0308\u094d\u0308\u0308•\u0041• +•\u0915\u0308\u0308\u094d\u093A\u093A•\u0915• + +# +# From cldr/common/testData/segmentation/graphemeCluster/TestSegmenter-Bengali.txt +# + +# ব্যক্তিত্বের ; +•ব্য•ক্তি•ত্বে•র• +# আত্মবিশ্বাস ; +•আ•ত্ম•বি•শ্বা•স• +# ব্যাক্টেরিয়া ; +•ব্যা•ক্টে•রি•য়া• +# সমস্যার ; +•স•ম•স্যা•র• +# মিশ্রণ ; +•মি•শ্র•ণ• +# দুর্গন্ধ ; +•দু•র্গ•ন্ধ• +# পরীক্ষার ; +•প•রী•ক্ষা•র• +# কোলেস্টেরল ; +•কো•লে•স্টে•র•ল• +# ব্যায়ামকে ; +•ব্যা•য়া•ম•কে• +# সপ্তাহে ; +•স•প্তা•হে• +# পরীক্ষার ; +•প•রী•ক্ষা•র• +# চর্বিজাতীয় ; +•চ•র্বি•জা•তী•য়• +# নিয়ণ্ত্রণ ; +•নি•য়•ণ্ত্র•ণ• +# অবশ্যই ; +•অ•ব•শ্য•ই• +# নয়াদিল্লির ; +•ন•য়া•দি•ল্লি•র• +# সমীক্ষাটা ; +•স•মী•ক্ষা•টা• +# #ভূমিকম্পের ; +# •ভূ•মি•ক•ম্পের• # line 17 in TestSegmenter-Bengali.txt +# কেন্দ্রীয় ; +•কে•ন্দ্রী•য়• +# উস্কানিই ; +•উ•স্কা•নি•ই• +# সমীক্ষকরা ; +•স•মী•ক্ষ•ক•রা• +# মুহূর্তে ; +•মু•হূ•র্তে• +# সম্পর্কে ; +•স•ম্প•র্কে• +# পৌষসংক্রান্তির ; +•পৌ•ষ•সং•ক্রা•ন্তি•র• +# মুখ্যমন্ত্রী ; +•মু•খ্য•ম•ন্ত্রী• + +# +# from cldr/common/testData/segmentation/graphemeCluster/TestSegmenter-Devanagari.txt +# + +# संदिग्ध ; +•सं•दि•ग्ध• +# सुरक्षा ; +•सु•र•क्षा• +# टक्कर ; +•ट•क्क•र• +# सत्र ; +•स•त्र• +# दक्षिण ; +•द•क्षि•ण• +# मिश्रणाने ; +•मि•श्र•णा•ने• +# दुर्घटनाग्रस्त ; +•दु•र्घ•ट•ना•ग्र•स्त• +# मुहूर्त ; +•मु•हू•र्त• +# शर्करायुक्त ; +•श•र्क•रा•यु•क्त• +# अंतरराष्ट्रीय ; +•अं•त•र•रा•ष्ट्री•य• +# राष्ट्रपति ; +•रा•ष्ट्र•प•ति• +# फ्रांस ; +•फ्रां•स• +# ट्रैक्टर ; +•ट्रै•क्ट•र• +# सिट्रोनेलाचे ; +•सि•ट्रो•ने•ला•चे• +# टुक्रालाई ; +•टु•क्रा•ला•ई• +# इकट्ठा ; +•इ•क•ट्ठा• +# शास्त्र ; +•शा•स्त्र• +# स्त्री ; +•स्त्री• +# लक्ष्य ; +•ल•क्ष्य• +# तीक्ष्ण ; +•ती•क्ष्ण• +# Words ; +•W•o•r•d•s• +# त्रिवेदी ; +•त्रि•वे•दी• +# कृत्रिम ; +•कृ•त्रि•म• +# मात्रामा ; +•मा•त्रा•मा• +# सिद्धार्थनगर ; +•सि•द्धा•र्थ•न•ग•र• +# श्रद्धालुओं ; +•श्र•द्धा•लु•ओं• +# वृद्धिसँग ; +•वृ•द्धि•सँ•ग• +# अंतःज्ञानी ; +•अं•तः•ज्ञा•नी•• +# गन्नदी॑धिम ; +•ग•न्न•दी॑•धि•म• +# प्प्रप॑द्ये॒ ; +•प्प्र•प॑•द्ये॒• +# मनस्तापः ; +•म•न•स्ता•पः• +# हविष्करोमि ; +•ह•वि•ष्क•रो•मि• +# अहर्पतिः ; +•अ•ह•र्प•तिः• +# गच्छति ; +•ग•च्छ•ति• +# अयम् ; +•अ•य•म्• +# शिवश्चोदति ; +•शि•व•श्चो•द•ति• +# मनष्टालयति ; +•म•न•ष्टा•ल•य•ति• +# अश्वष्ठक्कस्य ; +•अ•श्व•ष्ठ•क्क•स्य• +# दुष्पुत्रः ; +•दु•ष्पु•त्रः• +# द्विःपक्वम् ; +•द्विः•प•क्व•म्• +# द्विष्कामः ; +•द्वि•ष्का•मः• +# भर्तुर्भोगः ; +•भ•र्तु•र्भो•गः• +# शॆत्युल ; +•शॆ•त्यु•ल•• +# महारॆन्य ; +•म•हा•रॆ•न्य• +# सॆक्युल ; +•सॆ•क्यु•ल• +# ल्यॊदुर ; +•ल्यॊ•दु•र• +# फयॊक ; +•फ•यॊ•क• +# मॊहन्युव ; +•मॊ•ह•न्यु•व• +# अन्यर ; +•अ•न्य•र• +# ख्वजि ; +•ख्व•जि• +# खॅरिन्य ; +•खॅ•रि•न्य• +# उच्छ्वास ; +•उ•च्छ्वा•स• +# व्यक्तिमत्व ; +•व्य•क्ति•म•त्व• +# दातांच्यामध्ये ; +•दा•तां•च्या•म•ध्ये• +# दुर्गंधी ; +•दु•र्गं•धी• +# दुर्गंधीपासूनसुद्धा ; +•दु•र्गं•धी•पा•सू•न•सु•द्धा• +# नित्यकर्मामध्ये ; +•नि•त्य•क•र्मा•म•ध्ये• +# आजारांपासूनसुद्धा ; +•आ•जा•रां•पा•सू•न•सु•द्धा• +# भाज्यांमध्ये ; +•भा•ज्यां•म•ध्ये• +# उच्छ्वासाच्या ; +•उ•च्छ्वा•सा•च्या• +# सुकिल्लीं ; +•सु•कि•ल्लीं• +# स्लिपां ; +•स्लि•पां• +# मिसळिल्ल्यान ; +•मि•स•ळि•ल्ल्या•न• +# रोंप्यांची ; +•रों•प्यां•ची• +# वर्सांतल्यान ; +•व•र्सां•त•ल्या•न• +# रोंप्याच्या ; +•रों•प्या•च्या• +# नाशिल्ल्यान ; +•ना•शि•ल्ल्या•न• +# जिल्ल्याच्या ; +•जि•ल्ल्या•च्या• +# कुरुक्षेत्रांतल्या ; +•कु•रु•क्षे•त्रां•त•ल्या• +# भाज्ज्यांची ; +•भा•ज्ज्यां•ची• +# सिट्रोनेलाका ; +•सि•ट्रो•ने•ला•का• +# गरिनुपर्छ ; +•ग•रि•नु•प•र्छ• +# सामान्यतः ; +•सा•मा•न्य•तः• +# वृद्धिसँग ; +•वृ•द्धि•सँ•ग• +# रिपोर्टनि ; +•रि•पो•र्ट•नि• +# टोस्टर्ज़ ; +•टो•स्ट•र्ज़• +# वक्तव्य ; +•व•क्त•व्य• +# प्रक्रिया ; +•प्र•क्रि•या• +# निर्दिष्ट ; +•नि•र्दि•ष्ट• +# अस्वीकृत ; +•अ•स्वी•कृ•त• +# प्रयोक्ता ; +•प्र•यो•क्ता• +# प्रकार्यक ; +•प्र•का•र्य•क• +# ट्रेक्टरु ; +•ट्रे•क्ट•रु• +# स्थानधारक ; +•स्था•न•धा•र•क• +# प्रकार्यक ; +•प्र•का•र्य•क• +# अनुच्छेदसँ ; +•अ•नु•च्छे•द•सँ• +# गर्मीपदु ; +•ग•र्मी•प•दु• +# शास्त्रु ; +•शा•स्त्रु• +# इन्द्री ; +•इ•न्द्री• +# श्रधालू ; +•श्र•धा•लू• +# आस्तिकु ; +•आ•स्ति•कु• +# सकार्थो ; +•स•का•र्थो• +# सन्ॿंधु ; +•स•न्ॿं•धु• +# मनुक्खो ; +•म•नु•क्खो• +# हानिफ्राय ; +•हा•नि•फ्रा•य• +# दैथाइहरग्रा ; +•दै•था•इ•ह•र•ग्रा• +# बोसोरब्रै ; +•बो•सो•र•ब्रै• +# रांखान्थियारि ; +•रां•खा•न्थि•या•रि• +# खान्थियाव ; +•खा•न्थि•या•व• +# स्लिप्स ; +•स्लि•प्स• + +# +# cldr/common/testData/segmentation/graphemeCluster/TestSegmenter-Gujarati.txt +# + +# અંગ્રેજી ; +•અં•ગ્રે•જી• +# શબ્દકોશ ; +•શ•બ્દ•કો•શ• +# બાપ્તિસ્મા ; +•બા•પ્તિ•સ્મા• +# મિસ્ત્રી ; +•મિ•સ્ત્રી• +# સિક્કા ; +•સિ•ક્કા• +#6 ; એકત્રીસમું ; એ÷કત્રી÷સ÷મું + +# સ્વસ્થાને ; +•સ્વ•સ્થા•ને• +# પ્રશ્નાર્થ ; +•પ્ર•શ્ના•ર્થ• +# વર્તમાનકૃદંત ; +•વ•ર્ત•મા•ન•કૃ•દં•ત• +# વાક્યની ; +•વા•ક્ય•ની• +# સાર્વજનિક ; +•સા•ર્વ•જ•નિ•ક• +# સમાપ્તિ ; +•સ•મા•પ્તિ• +# પધાર્યા ; +•પ•ધા•ર્યા• +# વ્યક્તિત્વને ; +•વ્ય•ક્તિ•ત્વ•ને• +# આત્મવિશ્વાસ ; +•આ•ત્મ•વિ•શ્વા•સ• +# વ્યાયામથી ; +•વ્યા•યા•મ•થી• +# યુક્ત ; +•યુ•ક્ત• +# #18 ; પુરુષોત્તમ ; +•પ•રુ•ષો•ત્ત•મ• +# કેન્દ્રીય ; +•કે•ન્દ્રી•ય• +# ક્ષત્રિય ; +•ક્ષ•ત્રિ•ય• +# ફોર્મ્યુલા ; +•ફો•ર્મ્યુ•લા• +# કેન્દ્રમાં ; +•કે•ન્દ્ર•માં• +# સ્પ્રિંગ ; +•સ્પ્રિં•ગ• +# પ્રારંભ ; +•પ્રા•રં•ભ• +# વિદ્યાર્થીઓ ; +•વિ•દ્યા•ર્થી•ઓ• +# સ્વાર્થની ; +•સ્વા•ર્થ•ની• +# લોન્ગયરબ્યેન ; +•લો•ન્ગ•ય•ર•બ્યે•ન• +# સ્થાનિક ; +•સ્થા•નિ•ક• +# બિલ્ડિંગની ; +•બિ•લ્ડિં•ગ•ની• +# ઉત્પાદક ; +•ઉ•ત્પા•દ•ક• +# ઝૂકાવ્યું ; +•ઝૂ•કા•વ્યું• +# પ્રપૌત્ર ; +•પ્ર•પૌ•ત્ર• + + +# +# cldr/common/testData/segmentation/graphemeCluster/TestSegmenter-Malayalam.txt +# + +# സ്ഥാനമൊഴിയുക ; +•സ്ഥാ•ന•മൊ•ഴി•യു•ക• +# വ്യക്തി ; +•വ്യ•ക്തി• +# കൗമാരക്കാരി ; +•കൗ•മാ•ര•ക്കാ•രി• +# കല്യാണം ; +•ക•ല്യാ•ണം• +# റദ്ദാക്കിയ ; +•റ•ദ്ദാ•ക്കി•യ• +# വ്യാപിക്കുക ; +•വ്യാ•പി•ക്കു•ക• +# സ്തുതി ; +•സ്തു•തി• +# ഭക്ഷ്യസുരക്ഷ ; +•ഭ•ക്ഷ്യ•സു•ര•ക്ഷ• +# പൂഴ്ത്തിവെക്കുക ; +•പൂ•ഴ്ത്തി•വെ•ക്കു•ക• +# നിശ്ചയിച്ച ; +•നി•ശ്ച•യി•ച്ച• +# പ്രശ്നം ; +•പ്ര•ശ്നം• +# സംസ്ഥാനം ; +•സം•സ്ഥാ•നം• +# പ്രോത്സാഹം ; +•പ്രോ•ത്സാ•ഹം• +# ഉദ്യോഗസ്ഥ ; +•ഉ•ദ്യോ•ഗ•സ്ഥ• +# സ്ഥാപനം ; +•സ്ഥാ•പ•നം• +# അത്ഭുതം ; +•അ•ത്ഭു•തം• +# പ്രഖ്യാപനം ; +•പ്ര•ഖ്യാ•പ•നം• + +# +# cldr/common/testData/segmentation/graphemeCluster/TestSegmenter-Odia.txt +# + +# ଅସ୍ବରାନ୍ତ ; +•ଅ•ସ୍ବ•ରା•ନ୍ତ• +# ଅକର୍ମଣ୍ୟତା ; +•ଅ•କ•ର୍ମ•ଣ୍ୟ•ତା• +# ଅକର୍ମା ; +•ଅ•କ•ର୍ମା• +# ଆକର୍ଣ୍ଣ ; +•ଆ•କ•ର୍ଣ୍ଣ• +# ଆକସ୍ମିକୀ ; +•ଆ•କ•ସ୍ମି•କୀ• +# ଇଞ୍ଚମନୌତୀ ; +•ଇ•ଞ୍ଚ•ମ•ନୌ•ତୀ• +# ଅଗତ୍ୟା ; +•ଅ•ଗ•ତ୍ୟା• +# ଇନ୍ଦ୍ରଧ୍ବଜ ; +•ଇ•ନ୍ଦ୍ର•ଧ୍ବ•ଜ• +# ଊରୁତ୍ରାଣ ; +•ଊ•ରୁ•ତ୍ରା•ଣ• +# ଐଶ୍ବର୍ଯ୍ୟ ; +•ଐ•ଶ୍ବ•ର୍ଯ୍ୟ• +# ଅଗତ୍ୟା ; +•ଅ•ଗ•ତ୍ୟା• +# ଔପନ୍ୟାସିକ ; +•ଔ•ପ•ନ୍ୟା•ସି•କ• +# ଔଷ୍ଠ୍ୟ ; +•ଔ•ଷ୍ଠ୍ୟ• +# ଯଜୁର୍ବେଦୀ ; +•ଯ•ଜୁ•ର୍ବେ•ଦୀ• +# ପକ୍ଷ୍ମ ; +•ପ•କ୍ଷ୍ମ• +# ପଞ୍ଚଭୌତିକ ; +•ପ•ଞ୍ଚ•ଭୌ•ତି•କ• +# ତନ୍ତ୍ରିକାତନ୍ତ୍ର ; +•ତ•ନ୍ତ୍ରି•କା•ତ•ନ୍ତ୍ର• +# ସ୍ନାୟୁତନ୍ତ୍ର ; +•ସ୍ନା•ୟୁ•ତ•ନ୍ତ୍ର• +# ତପ୍ତକୁଣ୍ଡ ; +•ତ•ପ୍ତ•କୁ•ଣ୍ଡ• +# ଚଣ୍ଡୋଦରୀ ; +•ଚ•ଣ୍ଡୋ•ଦ•ରୀ• +# ଝଙ୍କାର ; +•ଝ•ଙ୍କା•ର• +# କଙ୍କପୃଷ୍ଠୀ ; +•କ•ଙ୍କ•ପୃ•ଷ୍ଠୀ• +# ଖଣ୍ଡନୀୟ ; +•ଖ•ଣ୍ଡ•ନୀ•ୟ• +# ଖମ୍ଭାବତୀ ; +•ଖ•ମ୍ଭା•ବ•ତୀ• +# ଘାଣେନ୍ଦ୍ରିୟ ; +•ଘା•ଣେ•ନ୍ଦ୍ରି•ୟ• +# ଘୁଞ୍ଚାଇବା ; +•ଘୁ•ଞ୍ଚା•ଇ•ବା• + +# +# cldr/common/testData/segmentation/graphemeCluster/TestSegmenter-Telugu.txt +# + +# అదృశ్యం ; +•అ•దృ•శ్యం• +# ఉద్యోగాలు ; +•ఉ•ద్యో•గా•లు• +# ఉన్నాయన్న ; +•ఉ•న్నా•య•న్న• +# కార్యదర్శి ; +•కా•ర్య•ద•ర్శి• +# సామర్థ్యం ; +•సా•మ•ర్థ్యం• +# అభిప్రాయం ; +•అ•భి•ప్రా•యం• +# రాష్ట్రస్థాయి ; +•రా•ష్ట్ర•స్థా•యి• +# నిర్లక్ష్యం ; +•ని•ర్ల•క్ష్యం• +# వ్యాజ్యాలన్నీ ; +•వ్యా•జ్యా•ల•న్నీ• +# న్యాయవ్యవస్థ ; +•న్యా•య•వ్య•వ•స్థ• +# వ్యాఖ్యలు ; +•వ్యా•ఖ్య•లు• +# నేతృత్వం ; +•నే•తృ•త్వం• +# ఉద్రిక్తత ; +•ఉ•ద్రి•క్త•త• +# వ్యాఖ్యలు ; +•వ్యా•ఖ్య•లు• +# అత్యున్నత ; +•అ•త్యు•న్న•త• +# మనస్పర్ధలు ; +•మ•న•స్ప•ర్ధ•లు• +# కార్యక్రమం ; +•కా•ర్య•క్ర•మం• +# గుప్పిస్తున్నారు ; +•గు•ప్పి•స్తు•న్నా•రు• +# నటిస్తున్నారు ; +•న•టి•స్తు•న్నా•రు• +# ద్వితీయార్ధం ; +•ద్వి•తీ•యా•ర్ధం• +# జీర్ణవ్యవస్థ ; +•జీ•ర్ణ•వ్య•వ•స్థ• +# ఉత్సాహం ; +•ఉ•త్సా•హం• +# హృద్రోగాలు ; +•హృ•ద్రో•గా•లు• +# పాల్గొనాల్సింది ; +•పా•ల్గొ•నా•ల్సిం•ది• +# మార్గదర్శకాలు ; +•మా•ర్గ•ద•ర్శ•కా•లు• + ######################################################################################## # diff --git a/source/test/testdata/regextst.txt b/source/test/testdata/regextst.txt index ba84af0..9135612 100644 --- a/source/test/testdata/regextst.txt +++ b/source/test/testdata/regextst.txt @@ -89,6 +89,28 @@ "abc(?!def)" b "<0>abcxyz" # +# Nested Lookahead / Behind +# +"one(?=(?:(?!).)*)" "<0>one stuff" +"one(?=(?:(?!).)*)" "one " + +# More nesting lookaround: pattern matches "qq" when not preceded by 'a' and followed by 'z' +"(?qqc" +"(?qqc" +"(?A<0>jk<2>B" +"(?=(?<=(\p{Lu})(?=..(\p{Lu})))).." "ajkB" +"(?=(?<=(\p{Lu})(?=..(\p{Lu})))).." "Ajkb" + +# Nested lookaround cases from bug ICU-20564 +"(?<=(?<=((?=)){0}+))" "<0>abc" +"(?<=c(?<=c((?=c)){1}+))" "c<0><1>cc" + +# # Anchoring Bounds # "^def$" "abc<0>defghi" # anchoring (default) bounds @@ -1439,12 +1461,30 @@ "[^\u0000-\U0010ffff]" "a" "[^[^\u0000-\U0010ffff]]" "<0>a" +"This is a string with (?:one |two |three )endings" "<0>This is a string with two endings" -# Random debugging, Temporary +# Bug ICU-20544. Similar to 20385, above. Assertion failure with a negative look-behind assertion containing +# a set with no contents. Look-behind pattern includes more than just the empty set. + +"(?abc" # note: first 'â°¿' is \u2c3f, hence empty set. +"(?abc" +"(?<=[^[^]]†)" "abc" # Problem also exists w positive look-behind + +# Bug ICU-20391. Crash in computation of minimum match length with nested look-around patterns. # +"(?<=(?<=((?=)){0}+)" E "aaa" +"(?<=(?<=((?=)){0}+))" "<0>" +"(?<=c(?<=b((?=a)){1}+))" "aaa" +"abc(?=de(?=f))...g" "<0>abcdefg" +"abc(?=de(?=f))...g" "abcdxfg" +# Bug ICU-20618 Assertion failure with nested look-around expressions. +# +"(?<=(?<=b?(?=a)))" "hello, world." +# Random debugging, Temporary +# # # Regexps from http://www.regexlib.com diff --git a/source/test/testdata/root.txt b/source/test/testdata/root.txt index 828ce28..7fd5b2a 100644 --- a/source/test/testdata/root.txt +++ b/source/test/testdata/root.txt @@ -13,8 +13,8 @@ root { Version { 44.0 } - ExpectCLDRVersionAtLeast { 35.0 } // 'base' cldr version. Allow up to version =.=.* of this - CurrentCLDRVersion { 35.0 } // Current CLDR version as of the test update. Warn if not an exact match. + ExpectCLDRVersionAtLeast { 36.0 } // 'base' cldr version. Allow up to version =.=.* of this + CurrentCLDRVersion { 36.0 } // Current CLDR version as of the test update. Warn if not an exact match. ShortLanguage { xxx } diff --git a/source/test/testdata/structLocale.txt b/source/test/testdata/structLocale.txt index 466ba9d..601be7d 100644 --- a/source/test/testdata/structLocale.txt +++ b/source/test/testdata/structLocale.txt @@ -5806,6 +5806,7 @@ structLocale:table(nofallback){ mn{""} mnc{""} mni{""} + mo{""} moh{""} mos{""} mr{""} @@ -6059,6 +6060,10 @@ structLocale:table(nofallback){ Languages%long{ zh{""} } + Languages%menu{ + yue{""} + zh{""} + } Languages%secondary{ crh{""} fa{""} diff --git a/source/test/testdata/testdata.mak b/source/test/testdata/testdata.mak index 879af99..2809efd 100644 --- a/source/test/testdata/testdata.mak +++ b/source/test/testdata/testdata.mak @@ -34,8 +34,8 @@ CREATE_DIRS : "$(TESTDATAOUT)\testdata.dat" : @echo Building test data - set PYTHONPATH=$(ICUSRCDATA);%PYTHONPATH% - py -3 -B -m buildtool \ + set PYTHONPATH=$(ICUP)\source\python;%PYTHONPATH% + py -3 -B -m icutools.databuilder \ --mode windows-exec \ --tool_dir "$(ICUTOOLS)" \ --tool_cfg "$(CFG)" \ diff --git a/source/test/testdata/tstfiles.mk b/source/test/testdata/tstfiles.mk deleted file mode 100644 index a8a5d53..0000000 --- a/source/test/testdata/tstfiles.mk +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (C) 2016 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# Copyright (C) 2007-2014, International Business Machines Corporation and others. All Rights Reserved. -# -# TEST_RES_SOURCE defines data driven tests and other resource files to be included with -# the testdata package. For ordinary resource bundles, they only need to be referenced here. -# -# Not everything has been moved to this file yet, as this is a new facility. -# - -TEST_RES_SOURCE=calendar.txt format.txt - diff --git a/source/tools/ctestfw/ctest.c b/source/tools/ctestfw/ctest.c index 5df32a9..f0f6654 100644 --- a/source/tools/ctestfw/ctest.c +++ b/source/tools/ctestfw/ctest.c @@ -891,18 +891,22 @@ log_data_err(const char* pattern, ...) static int traceFnNestingDepth = 0; U_CDECL_BEGIN static void U_CALLCONV TraceEntry(const void *context, int32_t fnNumber) { + (void)context; // suppress compiler warnings about unused variable char buf[500]; - utrace_format(buf, sizeof(buf), traceFnNestingDepth*3, "%s() enter.\n", utrace_functionName(fnNumber)); buf[sizeof(buf)-1]=0; + utrace_format(buf, sizeof(buf), traceFnNestingDepth*3, "%s() enter.\n", utrace_functionName(fnNumber)); + buf[sizeof(buf)-1]=0; fputs(buf, stdout); traceFnNestingDepth++; } -static void U_CALLCONV TraceExit(const void *context, int32_t fnNumber, const char *fmt, va_list args) { char buf[500]; - +static void U_CALLCONV TraceExit(const void *context, int32_t fnNumber, const char *fmt, va_list args) { + (void)context; // suppress compiler warnings about unused variable + char buf[500]; if (traceFnNestingDepth>0) { traceFnNestingDepth--; } - utrace_format(buf, sizeof(buf), traceFnNestingDepth*3, "%s() ", utrace_functionName(fnNumber)); buf[sizeof(buf)-1]=0; + utrace_format(buf, sizeof(buf), traceFnNestingDepth*3, "%s() ", utrace_functionName(fnNumber)); + buf[sizeof(buf)-1]=0; fputs(buf, stdout); utrace_vformat(buf, sizeof(buf), traceFnNestingDepth*3, fmt, args); buf[sizeof(buf)-1]=0; @@ -912,6 +916,10 @@ static void U_CALLCONV TraceExit(const void *context, int32_t fnNumber, const ch static void U_CALLCONV TraceData(const void *context, int32_t fnNumber, int32_t level, const char *fmt, va_list args) { + // suppress compiler warnings about unused variables + (void)context; + (void)fnNumber; + (void)level; char buf[500]; utrace_vformat(buf, sizeof(buf), traceFnNestingDepth*3, fmt, args); buf[sizeof(buf)-1]=0; @@ -920,6 +928,7 @@ static void U_CALLCONV TraceData(const void *context, int32_t fnNumber, } static void *U_CALLCONV ctest_libMalloc(const void *context, size_t size) { + (void)context; // suppress compiler warnings about unused variable /*if (VERBOSITY) { printf("Allocated %ld\n", (long)size); }*/ @@ -929,6 +938,7 @@ static void *U_CALLCONV ctest_libMalloc(const void *context, size_t size) { return malloc(size); } static void *U_CALLCONV ctest_libRealloc(const void *context, void *mem, size_t size) { + (void)context; // suppress compiler warnings about unused variable /*if (VERBOSITY) { printf("Reallocated %ld\n", (long)size); }*/ @@ -939,6 +949,7 @@ static void *U_CALLCONV ctest_libRealloc(const void *context, void *mem, size_t return realloc(mem, size); } static void U_CALLCONV ctest_libFree(const void *context, void *mem) { + (void)context; // suppress compiler warnings about unused variable free(mem); } diff --git a/source/tools/ctestfw/ctestfw.vcxproj b/source/tools/ctestfw/ctestfw.vcxproj index 9e2e7f3..b3b1895 100644 --- a/source/tools/ctestfw/ctestfw.vcxproj +++ b/source/tools/ctestfw/ctestfw.vcxproj @@ -33,128 +33,59 @@ <_ProjectFileVersion>10.0.30319.1 - .\..\..\..\lib\ - .\x86\Release\ - false - .\..\..\..\lib\ - .\x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false + + $(OutDir)/icutest.tlb + ..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories) T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) true Level3 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\..\..\..\lib\icutest.tlb - - - true - MultiThreadedDLL - true - .\x86\Release/icutest.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ Default + $(OutDir)/icutest.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/icutest.pdb - ..\..\..\bin\icutest64.dll - icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\..\..\..\lib\icutest.pdb - UseLinkTimeCodeGeneration - false - - - .\..\..\..\lib\icutest.lib + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - .\..\..\..\lib\icutestd.tlb - + + - MultiThreadedDebugDLL - .\x86\Debug/icutest.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ true - EditAndContinue - Default + MultiThreadedDebugDLL - ..\..\..\bin\icutest64d.dll + ..\..\..\$(IcuBinOutputDir)\icutest65d.exe + .\..\..\..\$(IcuLibOutputDir)\icutestd.pdb + .\..\..\..\$(IcuLibOutputDir)\icutestd.lib icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\..\..\..\lib\icutestd.pdb - false - - - .\..\..\..\lib\icutestd.lib - - - .\..\..\..\lib64\icutest.tlb - + + - true MultiThreadedDLL true - .\x64\Release/icutest.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Default - ..\..\..\bin64\icutest64.dll + ..\..\..\$(IcuBinOutputDir)\icutest65.exe + .\..\..\..\$(IcuLibOutputDir)\icutest.pdb + .\..\..\..\$(IcuLibOutputDir)\icutest.lib icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\..\..\..\lib64\icutest.pdb - UseLinkTimeCodeGeneration - .\..\..\..\lib64\icutest.lib - - - - - .\..\..\..\lib64\icutestd.tlb - - - MultiThreadedDebugDLL - .\x64\Debug/icutest.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - true - ProgramDatabase - Default - - - ..\..\..\bin64\icutest64d.dll - icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\..\..\..\lib64\icutestd.pdb - .\..\..\..\lib64\icutestd.lib diff --git a/source/tools/genbrk/genbrk.cpp b/source/tools/genbrk/genbrk.cpp index 0a4ec3c..38df3ee 100644 --- a/source/tools/genbrk/genbrk.cpp +++ b/source/tools/genbrk/genbrk.cpp @@ -262,7 +262,7 @@ int main(int argc, char **argv) { if (status != U_BUFFER_OVERFLOW_ERROR) { fprintf(stderr, "ucnv_toUChars: ICU Error \"%s\"\n", u_errorName(status)); exit(status); - }; + } status = U_ZERO_ERROR; UChar *ruleSourceU = new UChar[destCap+1]; @@ -275,7 +275,7 @@ int main(int argc, char **argv) { if (U_FAILURE(status)) { fprintf(stderr, "ucnv_toUChars: ICU Error \"%s\"\n", u_errorName(status)); exit(status); - }; + } ucnv_close(conv); @@ -296,7 +296,7 @@ int main(int argc, char **argv) { fprintf(stderr, "createRuleBasedBreakIterator: ICU Error \"%s\" at line %d, column %d\n", u_errorName(status), (int)parseError.line, (int)parseError.offset); exit(status); - }; + } // diff --git a/source/tools/genbrk/genbrk.vcxproj b/source/tools/genbrk/genbrk.vcxproj index 46f5b10..dff44bc 100644 --- a/source/tools/genbrk/genbrk.vcxproj +++ b/source/tools/genbrk/genbrk.vcxproj @@ -33,195 +33,58 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\Release\ - .\x86\Release\ - false - .\x86\Debug\ - .\x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) - + + - .\x86\Release/genbrk.tlb + $(OutDir)/genbrk.tlb - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - false - true - .\x86\Release/genbrk.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ Level3 - true Default - /utf-8 %(AdditionalOptions) - true + false + ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) + $(OutDir)/genbrk.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/genbrk.pdb - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Release/genbrk.exe - true - icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Release/genbrk.pdb Console - false - - + $(OutDir)/genbrk.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) + copy "$(TargetPath)" ..\..\..\$(IcuBinOutputDir) + ..\..\..\$(IcuBinOutputDir)\$(TargetFileName);%(Outputs) - - .\x86\Debug/genbrk.tlb - + + + - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - false - true - .\x86\Debug/genbrk.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ true - Level3 - true - EditAndContinue - Default - /utf-8 %(AdditionalOptions) - true + MultiThreadedDebugDLL - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Debug/genbrk.exe - true icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\x86\Debug/genbrk.pdb - Console - false - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Release/genbrk.tlb - + + - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - false - true - .\x64\Release/genbrk.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Level3 - true - Default - /utf-8 %(AdditionalOptions) - true - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x64\Release/genbrk.exe - true icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Release/genbrk.pdb - Console - MachineX64 - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Debug/genbrk.tlb - - - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - false - true - .\x64\Debug/genbrk.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - true - Level3 - true - ProgramDatabase - Default - /utf-8 %(AdditionalOptions) - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - .\x64\Debug/genbrk.exe - true - icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Debug/genbrk.pdb - Console - MachineX64 diff --git a/source/tools/genccode/genccode.c b/source/tools/genccode/genccode.c index d35b589..91e94d7 100644 --- a/source/tools/genccode/genccode.c +++ b/source/tools/genccode/genccode.c @@ -63,6 +63,7 @@ enum { kOptHelpH = 0, kOptHelpQuestionMark, kOptDestDir, + kOptQuiet, kOptName, kOptEntryPoint, #ifdef CAN_GENERATE_OBJECTS @@ -77,6 +78,7 @@ static UOption options[]={ /*0*/UOPTION_HELP_H, UOPTION_HELP_QUESTION_MARK, UOPTION_DESTDIR, + UOPTION_QUIET, UOPTION_DEF("name", 'n', UOPT_REQUIRES_ARG), UOPTION_DEF("entrypoint", 'e', UOPT_REQUIRES_ARG), #ifdef CAN_GENERATE_OBJECTS @@ -116,6 +118,7 @@ main(int argc, char* argv[]) { "options:\n" "\t-h or -? or --help this usage text\n" "\t-d or --destdir destination directory, followed by the path\n" + "\t-q or --quiet do not display warnings and progress\n" "\t-n or --name symbol prefix, followed by the prefix\n" "\t-e or --entrypoint entry point name, followed by the name (_dat will be appended)\n" "\t-r or --revision Specify a version\n" @@ -159,6 +162,9 @@ main(int argc, char* argv[]) { writeCode = CALL_WRITECCODE; /* TODO: remove writeCode=&writeCCode; */ } + if (options[kOptQuiet].doesOccur) { + verbose = FALSE; + } while(--argc) { filename=getLongPathname(argv[argc]); if (verbose) { @@ -170,13 +176,15 @@ main(int argc, char* argv[]) { writeCCode(filename, options[kOptDestDir].value, options[kOptName].doesOccur ? options[kOptName].value : NULL, options[kOptFilename].doesOccur ? options[kOptFilename].value : NULL, - NULL); + NULL, + 0); break; case CALL_WRITEASSEMBLY: writeAssemblyCode(filename, options[kOptDestDir].value, options[kOptEntryPoint].doesOccur ? options[kOptEntryPoint].value : NULL, options[kOptFilename].doesOccur ? options[kOptFilename].value : NULL, - NULL); + NULL, + 0); break; #ifdef CAN_GENERATE_OBJECTS case CALL_WRITEOBJECT: @@ -184,7 +192,8 @@ main(int argc, char* argv[]) { options[kOptEntryPoint].doesOccur ? options[kOptEntryPoint].value : NULL, options[kOptMatchArch].doesOccur ? options[kOptMatchArch].value : NULL, options[kOptFilename].doesOccur ? options[kOptFilename].value : NULL, - NULL); + NULL, + 0); break; #endif default: diff --git a/source/tools/genccode/genccode.vcxproj b/source/tools/genccode/genccode.vcxproj index 1bff87b..f319514 100644 --- a/source/tools/genccode/genccode.vcxproj +++ b/source/tools/genccode/genccode.vcxproj @@ -33,191 +33,58 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\Release\ - .\x86\Release\ - false - .\x86\Debug\ - .\x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) - + + - .\x86\Release/genccode.tlb + $(OutDir)/genccode.tlb - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - true - .\x86\Release/genccode.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ Level3 - true Default - /utf-8 %(AdditionalOptions) - true + false + ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) + $(OutDir)/genccode.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/genccode.pdb - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Release/genccode.exe - true - icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Release/genccode.pdb Console - false - - + $(OutDir)/genccode.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) + copy "$(TargetPath)" ..\..\..\$(IcuBinOutputDir) + ..\..\..\$(IcuBinOutputDir)\$(TargetFileName);%(Outputs) - - .\x86\Debug/genccode.tlb - + + + - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - true - .\x86\Debug/genccode.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ true - Level3 - true - EditAndContinue - Default - /utf-8 %(AdditionalOptions) - true + MultiThreadedDebugDLL - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Debug/genccode.exe - true icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\x86\Debug/genccode.pdb - Console - false - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Release/genccode.tlb - + + - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - .\x64\Release/genccode.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Level3 - true - Default - /utf-8 %(AdditionalOptions) - true - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x64\Release/genccode.exe - true icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Release/genccode.pdb - Console - MachineX64 - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Debug/genccode.tlb - - - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - true - .\x64\Debug/genccode.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - true - Level3 - true - ProgramDatabase - Default - /utf-8 %(AdditionalOptions) - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - .\x64\Debug/genccode.exe - true - icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Debug/genccode.pdb - Console - MachineX64 diff --git a/source/tools/gencfu/gencfu.cpp b/source/tools/gencfu/gencfu.cpp index 1ac9ad3..9bc62bd 100644 --- a/source/tools/gencfu/gencfu.cpp +++ b/source/tools/gencfu/gencfu.cpp @@ -236,7 +236,7 @@ int main(int argc, char **argv) { fprintf(stderr, "gencfu: uspoof_openFromSource error \"%s\" at file %s, line %d, column %d\n", u_errorName(status), confFileName, (int)parseError.line, (int)parseError.offset); exit(status); - }; + } // diff --git a/source/tools/gencfu/gencfu.vcxproj b/source/tools/gencfu/gencfu.vcxproj index a857bd7..0627f02 100644 --- a/source/tools/gencfu/gencfu.vcxproj +++ b/source/tools/gencfu/gencfu.vcxproj @@ -33,175 +33,58 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\Debug\ - .\x86\Debug\ - true - .\x86\Release\ - .\x86\Release\ - false - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - - - copy "$(TargetPath)" ..\..\..\bin - ..\..\..\bin\$(TargetFileName);%(Outputs) - + + + + $(OutDir)\gencfu.tlb + - Disabled - ..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebugDLL - true - false - - - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ - true Level3 - EditAndContinue Default - /utf-8 %(AdditionalOptions) - true + false + ..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories) + $(OutDir)\gencfu.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)\gencfu.pdb - .\x86\Debug\gencfu.exe - true - icuucd.lib;icuind.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true Console + $(OutDir)\gencfu.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - copy "$(TargetPath)" ..\..\..\bin - ..\..\..\bin\$(TargetFileName);%(Outputs) + copy "$(TargetPath)" ..\..\..\$(IcuBinOutputDir) + ..\..\..\$(IcuBinOutputDir)\$(TargetFileName);%(Outputs) + + + - ..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true - false - MultiThreadedDLL - true - false - true - - - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ - Level3 - ProgramDatabase - Default - /utf-8 %(AdditionalOptions) - true + true + MultiThreadedDebugDLL - .\x86\Release\gencfu.exe - true - true - icuuc.lib;icuin.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - Console - false - - + icuucd.lib;icuind.lib;icutud.lib;%(AdditionalDependencies) - - - copy "$(TargetPath)" ..\..\..\bin64%3b - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Release/gencfu.tlb - + + - ..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - false - true - .\x64\Release/gencfu.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Level3 - true - Default - /utf-8 %(AdditionalOptions) - true - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x64\Release/gencfu.exe - true icuuc.lib;icuin.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Release/gencfu.pdb - Console - MachineX64 - - - - - copy "$(TargetPath)" ..\..\..\bin64%3b - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Debug/gencfu.tlb - - - Disabled - ..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - false - true - .\x64\Debug/gencfu.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - true - Level3 - true - ProgramDatabase - Default - /utf-8 %(AdditionalOptions) - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - .\x64\Debug/gencfu.exe - true - icuucd.lib;icuind.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Debug/gencfu.pdb - Console - MachineX64 diff --git a/source/tools/gencmn/gencmn.vcxproj b/source/tools/gencmn/gencmn.vcxproj index 5d0b274..dffc419 100644 --- a/source/tools/gencmn/gencmn.vcxproj +++ b/source/tools/gencmn/gencmn.vcxproj @@ -33,195 +33,58 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\Release\ - .\x86\Release\ - false - .\x86\Debug\ - .\x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) - + + - .\x86\Release/gencmn.tlb + $(OutDir)/gencmn.tlb - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - true - true - .\x86\Release/gencmn.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ Level3 - true Default - /utf-8 %(AdditionalOptions) - true + true + ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) + $(OutDir)/gencmn.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/gencmn.pdb - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Release/gencmn.exe - true - icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Release/gencmn.pdb Console - false - - + $(OutDir)/gencmn.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) + copy "$(TargetPath)" ..\..\..\$(IcuBinOutputDir) + ..\..\..\$(IcuBinOutputDir)\$(TargetFileName);%(Outputs) - - .\x86\Debug/gencmn.tlb - + + + - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - true - true - .\x86\Debug/gencmn.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ true - Level3 - true - EditAndContinue - Default - /utf-8 %(AdditionalOptions) - true + MultiThreadedDebugDLL - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Debug/gencmn.exe - true icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\x86\Debug/gencmn.pdb - Console - false - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Release/gencmn.tlb - + + - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - true - .\x64\Release/gencmn.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Level3 - true - Default - /utf-8 %(AdditionalOptions) - true - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x64\Release/gencmn.exe - true icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Release/gencmn.pdb - Console - MachineX64 - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Debug/gencmn.tlb - - - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - true - true - .\x64\Debug/gencmn.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - true - Level3 - true - ProgramDatabase - Default - /utf-8 %(AdditionalOptions) - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - .\x64\Debug/gencmn.exe - true - icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Debug/gencmn.pdb - Console - MachineX64 diff --git a/source/tools/gencnval/gencnval.c b/source/tools/gencnval/gencnval.c index dcc664b..82cf65d 100644 --- a/source/tools/gencnval/gencnval.c +++ b/source/tools/gencnval/gencnval.c @@ -582,6 +582,7 @@ addTaggedAlias(uint16_t tag, const char *alias, uint16_t converter) { static void addOfficialTaggedStandards(char *line, int32_t lineLen) { + (void) lineLen; // suppress compiler warnings about unused variable char *atag; char *endTagExp; char *tag; diff --git a/source/tools/gencnval/gencnval.vcxproj b/source/tools/gencnval/gencnval.vcxproj index 6423bc3..57b5f95 100644 --- a/source/tools/gencnval/gencnval.vcxproj +++ b/source/tools/gencnval/gencnval.vcxproj @@ -33,195 +33,58 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\Release\ - .\x86\Release\ - false - .\x86\Debug\ - .\x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) - + + - .\x86\Release/gencnval.tlb + $(OutDir)/gencnval.tlb - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - false - true - .\x86\Release/gencnval.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ Level3 - true Default - /utf-8 %(AdditionalOptions) - true + false + ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) + $(OutDir)/gencnval.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/gencnval.pdb - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Release/gencnval.exe - true - icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Release/gencnval.pdb Console - false - - + $(OutDir)/gencnval.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) + copy "$(TargetPath)" ..\..\..\$(IcuBinOutputDir) + ..\..\..\$(IcuBinOutputDir)\$(TargetFileName);%(Outputs) - - .\x86\Debug/gencnval.tlb - + + + - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - false - true - .\x86\Debug/gencnval.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ true - Level3 - true - EditAndContinue - Default - /utf-8 %(AdditionalOptions) - true + MultiThreadedDebugDLL - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Debug/gencnval.exe - true icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\x86\Debug/gencnval.pdb - Console - false - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Release/gencnval.tlb - + + - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - false - true - .\x64\Release/gencnval.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Level3 - true - Default - /utf-8 %(AdditionalOptions) - true - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x64\Release/gencnval.exe - true icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Release/gencnval.pdb - Console - MachineX64 - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Debug/gencnval.tlb - - - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - false - true - .\x64\Debug/gencnval.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - true - Level3 - true - ProgramDatabase - Default - /utf-8 %(AdditionalOptions) - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - .\x64\Debug/gencnval.exe - true - icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Debug/gencnval.pdb - Console - MachineX64 diff --git a/source/tools/gendict/gendict.vcxproj b/source/tools/gendict/gendict.vcxproj index 7e203bc..4f36956 100644 --- a/source/tools/gendict/gendict.vcxproj +++ b/source/tools/gendict/gendict.vcxproj @@ -33,195 +33,58 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\Release\ - .\x86\Release\ - false - .\x86\Debug\ - .\x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) - + + - .\x86\Release/gendict.tlb + $(OutDir)\gendict.tlb - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - true - true - .\x86\Release/gendict.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ Level3 - true Default - /utf-8 %(AdditionalOptions) - true + true + ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) + $(OutDir)\gendict.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)\gendict.pdb - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Release/gendict.exe - true - icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Release/gendict.pdb Console - false - - + $(OutDir)\gendict.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) + copy "$(TargetPath)" ..\..\..\$(IcuBinOutputDir) + ..\..\..\$(IcuBinOutputDir)\$(TargetFileName);%(Outputs) - - .\x86\Debug/gendict.tlb - + + + - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - true - true - .\x86\Debug/gendict.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ true - Level3 - true - EditAndContinue - Default - /utf-8 %(AdditionalOptions) - true + MultiThreadedDebugDLL - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Debug/gendict.exe - true icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\x86\Debug/gendict.pdb - Console - false - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Release/gendict.tlb - + + - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - true - .\x64\Release/gendict.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Level3 - true - Default - /utf-8 %(AdditionalOptions) - true - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x64\Release/gendict.exe - true icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Release/gendict.pdb - Console - MachineX64 - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Debug/gendict.tlb - - - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - true - true - .\x64\Debug/gendict.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - true - Level3 - true - ProgramDatabase - Default - /utf-8 %(AdditionalOptions) - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - .\x64\Debug/gendict.exe - true - icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Debug/gendict.pdb - Console - MachineX64 diff --git a/source/tools/gennorm2/gennorm2.vcxproj b/source/tools/gennorm2/gennorm2.vcxproj index c1e5d7b..2f41299 100644 --- a/source/tools/gennorm2/gennorm2.vcxproj +++ b/source/tools/gennorm2/gennorm2.vcxproj @@ -32,145 +32,58 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\Release\ - .\x86\Release\ - false - .\x86\Debug\ - .\x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - + + + $(OutDir)\gennorm2.tlb + - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - false Level3 - - - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) - - - MaxSpeed - true - MultiThreadedDLL - true - .\x86\Release\gennorm2.pch - .\x86\Release\ - .\x86\Release\ - .\x86\Release\ - ProgramDatabase Default + false + ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) + $(OutDir)\gennorm2.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)\gennorm2.pdb - .\x86\Release\gennorm2.exe - true - icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Release\gennorm2.pdb - true Console - true - true - MachineX86 - false - false + $(OutDir)\gennorm2.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) + copy "$(TargetPath)" ..\..\..\$(IcuBinOutputDir) + ..\..\..\$(IcuBinOutputDir)\$(TargetFileName);%(Outputs) + + + - true - MultiThreadedDebugDLL - .\x86\Debug\gennorm2.pch - .\x86\Debug\ - .\x86\Debug\ - .\x86\Debug\ true - EditAndContinue - Default + MultiThreadedDebugDLL - .\x86\Debug\gennorm2.exe icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\x86\Debug\gennorm2.pdb - Console - false - false - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - + + - MaxSpeed - true MultiThreadedDLL true - .\x64\Release\gennorm2.pch - .\x64\Release\ - .\x64\Release\ - .\x64\Release\ - ProgramDatabase - Default - .\x64\Release\gennorm2.exe icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Release\gennorm2.pdb - true - Console - true - false - false - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - true - MultiThreadedDebugDLL - .\x64\Debug\gennorm2.pch - .\x64\Debug\ - .\x64\Debug\ - .\x64\Debug\ - true - EditAndContinue - Default - - - .\x64\Debug\gennorm2.exe - true - icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Debug\gennorm2.pdb - Console - false - false diff --git a/source/tools/genrb/derb.cpp b/source/tools/genrb/derb.cpp index ac26d95..997b400 100644 --- a/source/tools/genrb/derb.cpp +++ b/source/tools/genrb/derb.cpp @@ -631,7 +631,7 @@ static const char *getEncodingName(const char *encoding) { if (!(enc = ucnv_getStandardName(encoding, "MIME", &err))) { err = U_ZERO_ERROR; if (!(enc = ucnv_getStandardName(encoding, "IANA", &err))) { - ; + // do nothing } } diff --git a/source/tools/genrb/derb.vcxproj b/source/tools/genrb/derb.vcxproj index 3361bfb..43edf4c 100644 --- a/source/tools/genrb/derb.vcxproj +++ b/source/tools/genrb/derb.vcxproj @@ -33,207 +33,58 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\Release_derb\ - .\x86\Release_derb\ - false - .\x86\Debug_derb\ - .\x86\Debug_derb\ - true - .\x64\Release_derb\ - .\x64\Release_derb\ - false - .\x64\Debug_derb\ - .\x64\Debug_derb\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) - + + - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\x86\Release_derb/derb.tlb + $(OutDir)/derb.tlb - ..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - true - true - .\x86\Release_derb/derb.pch - .\x86\Release_derb/ - .\x86\Release_derb/ - .\x86\Release_derb/ Level3 - true Default - /utf-8 %(AdditionalOptions) - true + true + ..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories) + $(OutDir)/derb.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/derb.pdb - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Release_derb/derb.exe - true - icuuc.lib;icuin.lib;icuio.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Release_derb/derb.pdb Console - false - - + $(OutDir)/derb.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) + copy "$(TargetPath)" ..\..\..\$(IcuBinOutputDir) + ..\..\..\$(IcuBinOutputDir)\$(TargetFileName);%(Outputs) - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\x86\Debug_derb/derb.tlb - + + + - Disabled - ..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks + true MultiThreadedDebugDLL - true - true - true - .\x86\Debug_derb/derb.pch - .\x86\Debug_derb/ - .\x86\Debug_derb/ - .\x86\Debug_derb/ - Level3 - true - EditAndContinue - Default - /utf-8 %(AdditionalOptions) - true - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Debug_derb/derb.exe - true icuucd.lib;icuind.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\x86\Debug_derb/derb.pdb - Console - false - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 - .\x64\Release_derb/derb.tlb - + + - ..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - true - .\x64\Release_derb/derb.pch - .\x64\Release_derb/ - .\x64\Release_derb/ - .\x64\Release_derb/ - Level3 - true - Default - /utf-8 %(AdditionalOptions) - true - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x64\Release_derb/derb.exe - true icuuc.lib;icuin.lib;icuio.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Release_derb/derb.pdb - Console - MachineX64 - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - _DEBUG;%(PreprocessorDefinitions) - true - true - X64 - .\x64\Debug_derb/derb.tlb - - - Disabled - ..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - true - true - .\x64\Debug_derb/derb.pch - .\x64\Debug_derb/ - .\x64\Debug_derb/ - .\x64\Debug_derb/ - Level3 - true - ProgramDatabase - Default - /utf-8 %(AdditionalOptions) - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - .\x64\Debug_derb/derb.exe - true - icuucd.lib;icuind.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Debug_derb/derb.pdb - Console - MachineX64 diff --git a/source/tools/genrb/filterrb.cpp b/source/tools/genrb/filterrb.cpp index d62d185..dcc02fc 100644 --- a/source/tools/genrb/filterrb.cpp +++ b/source/tools/genrb/filterrb.cpp @@ -23,6 +23,9 @@ ResKeyPath::ResKeyPath(const std::string& path, UErrorCode& status) { status = U_PARSE_ERROR; return; } + if (path.length() == 1) { + return; + } size_t i; size_t j = 0; while (true) { diff --git a/source/tools/genrb/genrb.cpp b/source/tools/genrb/genrb.cpp index 885f303..6f3a13a 100644 --- a/source/tools/genrb/genrb.cpp +++ b/source/tools/genrb/genrb.cpp @@ -205,10 +205,10 @@ main(int argc, "\t-c or --copyright include copyright notice\n"); fprintf(stderr, "\t-e or --encoding encoding of source files\n" - "\t-d of --destdir destination directory, followed by the path, defaults to %s\n" - "\t-s or --sourcedir source directory for files followed by path, defaults to %s\n" + "\t-d or --destdir destination directory, followed by the path, defaults to '%s'\n" + "\t-s or --sourcedir source directory for files followed by path, defaults to '%s'\n" "\t-i or --icudatadir directory for locating any needed intermediate data files,\n" - "\t followed by path, defaults to %s\n", + "\t followed by path, defaults to '%s'\n", u_getDataDirectory(), u_getDataDirectory(), u_getDataDirectory()); fprintf(stderr, "\t-j or --write-java write a Java ListResourceBundle for ICU4J, followed by optional encoding\n" @@ -240,7 +240,7 @@ main(int argc, "\t (--writePoolBundle and --usePoolBundle cannot be combined)\n"); fprintf(stderr, "\t --filterDir Input directory where filter files are available.\n" - "\t For more on filter files, see Python buildtool.\n"); + "\t For more on filter files, see ICU Data Build Tool.\n"); return illegalArg ? U_ILLEGAL_ARGUMENT_ERROR : U_ZERO_ERROR; } diff --git a/source/tools/genrb/genrb.vcxproj b/source/tools/genrb/genrb.vcxproj index 2dd68f2..166ce73 100644 --- a/source/tools/genrb/genrb.vcxproj +++ b/source/tools/genrb/genrb.vcxproj @@ -33,195 +33,58 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\Release\ - .\x86\Release\ - false - .\x86\Debug\ - .\x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - - WINVER=0x0601;_WIN32_WINNT=0x0601;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - - - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) - - .\x86\Release/genrb.tlb + $(OutDir)/genrb.tlb - ..\..\..\include;..\..\common;..\toolutil;..\..\i18n;%(AdditionalIncludeDirectories) - true - MultiThreadedDLL - true - true - .\x86\Release/genrb.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ Level3 - true Default - /utf-8 %(AdditionalOptions) - true + true + ..\..\..\include;..\..\common;..\toolutil;..\..\i18n;%(AdditionalIncludeDirectories) + $(OutDir)/genrb.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/genrb.pdb - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Release/genrb.exe - true - icuuc.lib;icuin.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Release/genrb.pdb Console - false - - + $(OutDir)/genrb.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) + copy "$(TargetPath)" ..\..\..\$(IcuBinOutputDir) + ..\..\..\$(IcuBinOutputDir)\$(TargetFileName);%(Outputs) - - .\x86\Debug/genrb.tlb - + + + - Disabled - ..\..\..\include;..\..\common;..\toolutil;..\..\i18n;%(AdditionalIncludeDirectories) - EnableFastChecks - MultiThreadedDebugDLL - true - true - true - .\x86\Debug/genrb.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ true - Level3 - true - EditAndContinue - Default - /utf-8 %(AdditionalOptions) - true + MultiThreadedDebugDLL - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Debug/genrb.exe - true icuucd.lib;icuind.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\x86\Debug/genrb.pdb - Console - false - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Release/genrb.tlb - + + - ..\..\..\include;..\..\common;..\toolutil;..\..\i18n;%(AdditionalIncludeDirectories) - true MultiThreadedDLL - true - true - .\x64\Release/genrb.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Level3 - true - Default - /utf-8 %(AdditionalOptions) - true + true - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x64\Release/genrb.exe - true icuuc.lib;icuin.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Release/genrb.pdb - Console - MachineX64 - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Debug/genrb.tlb - - - Disabled - ..\..\..\include;..\..\common;..\toolutil;..\..\i18n;%(AdditionalIncludeDirectories) - EnableFastChecks - MultiThreadedDebugDLL - true - true - true - .\x64\Debug/genrb.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - true - Level3 - true - ProgramDatabase - Default - /utf-8 %(AdditionalOptions) - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - .\x64\Debug/genrb.exe - true - icuucd.lib;icuind.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Debug/genrb.pdb - Console - MachineX64 diff --git a/source/tools/genrb/parse.cpp b/source/tools/genrb/parse.cpp index 884d5d5..18a8c76 100644 --- a/source/tools/genrb/parse.cpp +++ b/source/tools/genrb/parse.cpp @@ -274,11 +274,11 @@ expect(ParseState* state, enum ETokenType expectedToken, struct UString **tokenV } } -static char *getInvariantString(ParseState* state, uint32_t *line, struct UString *comment, UErrorCode *status) +static char *getInvariantString(ParseState* state, uint32_t *line, struct UString *comment, + int32_t &stringLength, UErrorCode *status) { struct UString *tokenValue; char *result; - uint32_t count; expect(state, TOK_STRING, &tokenValue, comment, line, status); @@ -287,14 +287,13 @@ static char *getInvariantString(ParseState* state, uint32_t *line, struct UStrin return NULL; } - count = u_strlen(tokenValue->fChars); - if(!uprv_isInvariantUString(tokenValue->fChars, count)) { + if(!uprv_isInvariantUString(tokenValue->fChars, tokenValue->fLength)) { *status = U_INVALID_FORMAT_ERROR; error(*line, "invariant characters required for table keys, binary data, etc."); return NULL; } - result = static_cast(uprv_malloc(count+1)); + result = static_cast(uprv_malloc(tokenValue->fLength+1)); if (result == NULL) { @@ -302,7 +301,8 @@ static char *getInvariantString(ParseState* state, uint32_t *line, struct UStrin return NULL; } - u_UCharsToChars(tokenValue->fChars, result, count+1); + u_UCharsToChars(tokenValue->fChars, result, tokenValue->fLength+1); + stringLength = tokenValue->fLength; return result; } @@ -1371,7 +1371,6 @@ parseIntVector(ParseState* state, char *tag, uint32_t startline, const struct US int32_t value; UBool readToken = FALSE; char *stopstring; - uint32_t len; struct UString memberComments; IntVectorResource *result = intvector_open(state->bundle, tag, comment, status); @@ -1404,7 +1403,8 @@ parseIntVector(ParseState* state, char *tag, uint32_t startline, const struct US return result; } - string = getInvariantString(state, NULL, NULL, status); + int32_t stringLength; + string = getInvariantString(state, NULL, NULL, stringLength, status); if (U_FAILURE(*status)) { @@ -1414,9 +1414,9 @@ parseIntVector(ParseState* state, char *tag, uint32_t startline, const struct US /* For handling illegal char in the Intvector */ value = uprv_strtoul(string, &stopstring, 0);/* make intvector support decimal,hexdigit,octal digit ranging from -2^31-2^32-1*/ - len=(uint32_t)(stopstring-string); + int32_t len = (int32_t)(stopstring-string); - if(len==uprv_strlen(string)) + if(len==stringLength) { result->add(value, *status); uprv_free(string); @@ -1454,7 +1454,8 @@ static struct SResource * parseBinary(ParseState* state, char *tag, uint32_t startline, const struct UString *comment, UErrorCode *status) { uint32_t line; - LocalMemory string(getInvariantString(state, &line, NULL, status)); + int32_t stringLength; + LocalMemory string(getInvariantString(state, &line, NULL, stringLength, status)); if (string.isNull() || U_FAILURE(*status)) { return NULL; @@ -1470,46 +1471,45 @@ parseBinary(ParseState* state, char *tag, uint32_t startline, const struct UStri printf(" binary %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline); } - uint32_t count = (uint32_t)uprv_strlen(string.getAlias()); - if (count > 0){ - if((count % 2)==0){ - LocalMemory value; - if (value.allocateInsteadAndCopy(count) == NULL) - { - *status = U_MEMORY_ALLOCATION_ERROR; - return NULL; - } - - char toConv[3] = {'\0', '\0', '\0'}; - for (uint32_t i = 0; i < count; i += 2) - { - toConv[0] = string[i]; - toConv[1] = string[i + 1]; + LocalMemory value; + int32_t count = 0; + if (stringLength > 0 && value.allocateInsteadAndCopy(stringLength) == NULL) + { + *status = U_MEMORY_ALLOCATION_ERROR; + return NULL; + } - char *stopstring; - value[i >> 1] = (uint8_t) uprv_strtoul(toConv, &stopstring, 16); - uint32_t len=(uint32_t)(stopstring-toConv); + char toConv[3] = {'\0', '\0', '\0'}; + for (int32_t i = 0; i < stringLength;) + { + // Skip spaces (which may have been line endings). + char c0 = string[i++]; + if (c0 == ' ') { continue; } + if (i == stringLength) { + *status=U_INVALID_CHAR_FOUND; + error(line, "Encountered invalid binary value (odd number of hex digits)"); + return NULL; + } + toConv[0] = c0; + toConv[1] = string[i++]; - if(len!=2) - { - *status=U_INVALID_CHAR_FOUND; - return NULL; - } - } + char *stopstring; + value[count++] = (uint8_t) uprv_strtoul(toConv, &stopstring, 16); + uint32_t len=(uint32_t)(stopstring-toConv); - return bin_open(state->bundle, tag, count >> 1, value.getAlias(), NULL, comment, status); - } - else + if(len!=2) { - *status = U_INVALID_CHAR_FOUND; - error(line, "Encountered invalid binary value (length is odd)"); + *status=U_INVALID_CHAR_FOUND; + error(line, "Encountered invalid binary value (not all pairs of hex digits)"); return NULL; } } - else - { + + if (count == 0) { warning(startline, "Encountered empty binary value"); return bin_open(state->bundle, tag, 0, NULL, "", comment, status); + } else { + return bin_open(state->bundle, tag, count, value.getAlias(), NULL, comment, status); } } @@ -1520,9 +1520,9 @@ parseInteger(ParseState* state, char *tag, uint32_t startline, const struct UStr int32_t value; char *string; char *stopstring; - uint32_t len; - string = getInvariantString(state, NULL, NULL, status); + int32_t stringLength; + string = getInvariantString(state, NULL, NULL, stringLength, status); if (string == NULL || U_FAILURE(*status)) { @@ -1541,7 +1541,7 @@ parseInteger(ParseState* state, char *tag, uint32_t startline, const struct UStr printf(" integer %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline); } - if (uprv_strlen(string) <= 0) + if (stringLength == 0) { warning(startline, "Encountered empty integer. Default value is 0."); } @@ -1549,8 +1549,8 @@ parseInteger(ParseState* state, char *tag, uint32_t startline, const struct UStr /* Allow integer support for hexdecimal, octal digit and decimal*/ /* and handle illegal char in the integer*/ value = uprv_strtoul(string, &stopstring, 0); - len=(uint32_t)(stopstring-string); - if(len==uprv_strlen(string)) + int32_t len = (int32_t)(stopstring-string); + if(len==stringLength) { result = int_open(state->bundle, tag, value, comment, status); } @@ -1567,7 +1567,8 @@ static struct SResource * parseImport(ParseState* state, char *tag, uint32_t startline, const struct UString* comment, UErrorCode *status) { uint32_t line; - LocalMemory filename(getInvariantString(state, &line, NULL, status)); + int32_t stringLength; + LocalMemory filename(getInvariantString(state, &line, NULL, stringLength, status)); if (U_FAILURE(*status)) { return NULL; @@ -1628,12 +1629,11 @@ parseInclude(ParseState* state, char *tag, uint32_t startline, const struct UStr UCHARBUF *ucbuf; char *fullname = NULL; - int32_t count = 0; const char* cp = NULL; const UChar* uBuffer = NULL; - filename = getInvariantString(state, &line, NULL, status); - count = (int32_t)uprv_strlen(filename); + int32_t stringLength; + filename = getInvariantString(state, &line, NULL, stringLength, status); if (U_FAILURE(*status)) { @@ -1652,7 +1652,7 @@ parseInclude(ParseState* state, char *tag, uint32_t startline, const struct UStr printf(" include %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline); } - fullname = (char *) uprv_malloc(state->inputdirLength + count + 2); + fullname = (char *) uprv_malloc(state->inputdirLength + stringLength + 2); /* test for NULL */ if(fullname == NULL) { diff --git a/source/tools/genrb/reslist.cpp b/source/tools/genrb/reslist.cpp index bf57516..3186c78 100644 --- a/source/tools/genrb/reslist.cpp +++ b/source/tools/genrb/reslist.cpp @@ -1371,7 +1371,7 @@ SRBRoot::compactKeys(UErrorCode &errorCode) { } int32_t keysCount = fUsePoolBundle->fKeysCount + fKeysCount; - if (U_FAILURE(errorCode) || fKeysCount == 0 || fKeyMap != NULL) { + if (U_FAILURE(errorCode) || fKeyMap != NULL) { return; } map = (KeyMapEntry *)uprv_malloc(keysCount * sizeof(KeyMapEntry)); diff --git a/source/tools/genrb/rle.c b/source/tools/genrb/rle.c index 91be063..279684a 100644 --- a/source/tools/genrb/rle.c +++ b/source/tools/genrb/rle.c @@ -91,14 +91,14 @@ encodeRunByte(uint16_t* buffer,uint16_t* bufLimit, uint8_t value, int32_t length return buffer; } -#define APPEND( buffer, bufLimit, value, num, status){ \ +#define APPEND( buffer, bufLimit, value, num, status) UPRV_BLOCK_MACRO_BEGIN { \ if(buffer <_ProjectFileVersion>10.0.30319.1 - .\x86\Release\ - .\x86\Release\ - false - .\x86\Debug\ - .\x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) - + + - .\x86\Release/gensprep.tlb + $(OutDir)\gensprep.tlb - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - false - true - .\x86\Release/gensprep.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ Level3 - true Default - /utf-8 %(AdditionalOptions) - true + false + ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) + $(OutDir)\gensprep.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)\gensprep.pdb - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Release/gensprep.exe - true - icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Release/gensprep.pdb Console - false - - + $(OutDir)\gensprep.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) + copy "$(TargetPath)" ..\..\..\$(IcuBinOutputDir) + ..\..\..\$(IcuBinOutputDir)\$(TargetFileName);%(Outputs) - - .\x86\Debug/gensprep.tlb - + + + - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks + true MultiThreadedDebugDLL - true - false - true - .\x86\Debug/gensprep.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ - Level3 - true - EditAndContinue - Default - /utf-8 %(AdditionalOptions) - true - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Debug/gensprep.exe - true icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\x86\Debug/gensprep.pdb - Console - false - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Release/gensprep.tlb - + + - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - false - true - .\x64\Release/gensprep.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Level3 - true - Default - /utf-8 %(AdditionalOptions) - true - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x64\Release/gensprep.exe - true icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Release/gensprep.pdb - Console - MachineX64 - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - X64 - .\x64\Debug/gensprep.tlb - - - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - false - true - .\x64\Debug/gensprep.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - Level3 - true - ProgramDatabase - Default - /utf-8 %(AdditionalOptions) - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - .\x64\Debug/gensprep.exe - true - icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Debug/gensprep.pdb - Console - MachineX64 diff --git a/source/tools/gensprep/store.c b/source/tools/gensprep/store.c index 60252b9..3d75a39 100644 --- a/source/tools/gensprep/store.c +++ b/source/tools/gensprep/store.c @@ -464,7 +464,8 @@ storeMapping(uint32_t codepoint, uint32_t* mapping,int32_t length, extern void -storeRange(uint32_t start, uint32_t end, UStringPrepType type,UErrorCode* status){ +storeRange(uint32_t start, uint32_t end, UStringPrepType type, UErrorCode* status){ + (void)status; // suppress compiler warnings about unused variable uint16_t trieWord = 0; if((int)(_SPREP_TYPE_THRESHOLD + type) > 0xFFFF){ diff --git a/source/tools/gentest/gentest.vcxproj b/source/tools/gentest/gentest.vcxproj index dd4ddc8..2c6c768 100644 --- a/source/tools/gentest/gentest.vcxproj +++ b/source/tools/gentest/gentest.vcxproj @@ -34,175 +34,55 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\Release\ - .\x86\Release\ - false - .\x86\Debug\ - .\x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - + + - .\x86\Release/gentest.tlb + $(OutDir)/gentest.tlb - ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - true - true - .\x86\Release/gentest.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ Level3 - true Default - /utf-8 %(AdditionalOptions) - true + true + ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) + $(OutDir)/gentest.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/gentest.pdb - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Release/gentest.exe - true - icuuc.lib;icutest.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Release/gentest.pdb Console - false - - + $(OutDir)/gentest.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) + $(OutDir)/gentest.pdb - - - .\x86\Debug/gentest.tlb - + + - Disabled - ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - true - true - .\x86\Debug/gentest.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ true - Level3 - true - EditAndContinue - Default - /utf-8 %(AdditionalOptions) - true + MultiThreadedDebugDLL - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x86\Debug/gentest.exe - true icuucd.lib;icutestd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\x86\Debug/gentest.pdb - Console - false - - - - - X64 - .\x64\Release/gentest.tlb - + + - ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - true - .\x64\Release/gentest.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Level3 - true - Default - /utf-8 %(AdditionalOptions) - true - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - .\x64\Release/gentest.exe - true icuuc.lib;icutest.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Release/gentest.pdb - Console - MachineX64 - - - - - X64 - .\x64\Debug/gentest.tlb - - - Disabled - ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - true - true - .\x64\Debug/gentest.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - true - Level3 - true - ProgramDatabase - Default - /utf-8 %(AdditionalOptions) - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - .\x64\Debug/gentest.exe - true - icuucd.lib;icutestd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\x64\Debug/gentest.pdb - Console - MachineX64 diff --git a/source/tools/icuinfo/icuinfo.vcxproj b/source/tools/icuinfo/icuinfo.vcxproj index 4597f94..78ac7fa 100644 --- a/source/tools/icuinfo/icuinfo.vcxproj +++ b/source/tools/icuinfo/icuinfo.vcxproj @@ -33,125 +33,58 @@ <_ProjectFileVersion>10.0.30319.1 - x86\Release\ - x86\Release\ - false - x86\Debug\ - x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - + + + $(OutDir)\icuinfo.tlb + - ..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - true Level4 - - - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) - - - MultiThreadedDLL - true - x86\Release/icuinfo.pch - x86\Release/ - x86\Release/ - x86\Release/ Default + false + ..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) + $(OutDir)\icuinfo.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)\icuinfo.pdb - $(OutDir)icuinfo.exe - icuuc.lib;icuin.lib;icutu.lib;icutest.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - x86\Release/icuinfo.pdb Console - false - - + $(OutDir)\icuinfo.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) + copy "$(TargetPath)" ..\..\..\$(IcuBinOutputDir) + ..\..\..\$(IcuBinOutputDir)\$(TargetFileName);%(Outputs) + + + - MultiThreadedDebugDLL - Debug/icuinfo.pch - Debug/ - Debug/ - Debug/ true - EditAndContinue - Default + MultiThreadedDebugDLL - $(OutDir)icuinfo.exe icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - $(OutDir)icuinfo.pdb - Console - false - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - + + MultiThreadedDLL true - x64\Release/icuinfo.pch - x64\Release/ - x64\Release/ - x64\Release/ - Default - $(OutDir)icuinfo.exe icuuc.lib;icuin.lib;icutu.lib;icutest.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - x64\Release/icuinfo.pdb - Console - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - MultiThreadedDebugDLL - Debug/icuinfo.pch - Debug/ - Debug/ - Debug/ - true - ProgramDatabase - Default - - - $(OutDir)icuinfo.exe - icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - $(OutDir)icuinfo.pdb - Console diff --git a/source/tools/icuinfo/testplug.vcxproj b/source/tools/icuinfo/testplug.vcxproj index a288ec9..ca81f1a 100644 --- a/source/tools/icuinfo/testplug.vcxproj +++ b/source/tools/icuinfo/testplug.vcxproj @@ -33,195 +33,61 @@ <_ProjectFileVersion>10.0.30319.1 - .\..\..\..\lib\ - .\x86\Release-testplug\ - false - .\..\..\..\lib\ - .\x86\Debug-testplug\ - true - .\x64\Release-testplug\ - .\x64\Release-testplug\ - false - .\x64\Debug-testplug\ - .\x64\Debug-testplug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - + + - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\..\..\..\lib\testplug.tlb + $(OutDir)\testplug.tlb - true ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true + T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) true - true - .\x86\Release-testplug/testplug.pch - .\x86\Release-testplug/ - .\x86\Release-testplug/ - .\x86\Release-testplug/ Level3 - true Default - /utf-8 %(AdditionalOptions) - true + ProgramDatabase + $(OutDir)\testplug.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)\testplug.pdb - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - ..\..\..\bin\testplug.dll - true - icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\..\..\..\lib\testplug.pdb - true - UseLinkTimeCodeGeneration - false - - - .\..\..\..\lib\testplug.lib + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\..\..\..\lib\testplugd.tlb - + + - Disabled - ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - true - true - .\x86\Debug-testplug/testplug.pch - .\x86\Debug-testplug/ - .\x86\Debug-testplug/ - .\x86\Debug-testplug/ true - Level3 - true - EditAndContinue - Default - /utf-8 %(AdditionalOptions) - true + MultiThreadedDebugDLL - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - ..\..\..\bin\testplug.dll - true - icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) true - .\..\..\..\lib\testplugd.pdb - false - - - .\..\..\..\lib\testplugd.lib + ..\..\..\$(IcuBinOutputDir)\testplugd.dll + ..\..\..\$(IcuLibOutputDir)\testplugd.pdb + ..\..\..\$(IcuLibOutputDir)\testplugd.lib + icuucd.lib;icutud.lib;%(AdditionalDependencies) - - - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 - .\..\..\..\lib64\testplug.tlb - + + - true - ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - true - .\x64\Release-testplug/testplug.pch - .\x64\Release-testplug/ - .\x64\Release-testplug/ - .\x64\Release-testplug/ - Level3 - true - Default - /utf-8 %(AdditionalOptions) - true - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - ..\..\..\bin64\testplug.dll - true + ..\..\..\$(IcuBinOutputDir)\testplug.dll + ..\..\..\$(IcuLibOutputDir)\testplug.pdb + ..\..\..\$(IcuLibOutputDir)\testplug.lib icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\..\..\..\lib64\testplug.pdb - true - UseLinkTimeCodeGeneration - .\..\..\..\lib64\testplug.lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - X64 - .\..\..\..\lib64\testplugd.tlb - - - Disabled - ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - true - true - .\x64\Debug-testplug/testplug.pch - .\x64\Debug-testplug/ - .\x64\Debug-testplug/ - .\x64\Debug-testplug/ - true - Level3 - true - ProgramDatabase - Default - /utf-8 %(AdditionalOptions) - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ..\..\..\bin64\testplug.dll - true - icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - true - .\..\..\..\lib64\testplugd.pdb - .\..\..\..\lib64\testplugd.lib - MachineX64 diff --git a/source/tools/icupkg/icupkg.vcxproj b/source/tools/icupkg/icupkg.vcxproj index ffbef9a..1af31e0 100644 --- a/source/tools/icupkg/icupkg.vcxproj +++ b/source/tools/icupkg/icupkg.vcxproj @@ -33,126 +33,58 @@ <_ProjectFileVersion>10.0.30319.1 - x86\Release\ - x86\Release\ - false - x86\Debug\ - x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - + + + $(OutDir)\icupkg.tlb + - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - true Level4 - - - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) - - - MultiThreadedDLL - true - x86\Release/icupkg.pch - x86\Release/ - x86\Release/ - x86\Release/ Default + true + ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) + $(OutDir)\icupkg.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)\icupkg.pdb - $(OutDir)icupkg.exe - icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - x86\Release/icupkg.pdb Console - false - - + $(OutDir)\icupkg.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) + copy "$(TargetPath)" ..\..\..\$(IcuBinOutputDir) + ..\..\..\$(IcuBinOutputDir)\$(TargetFileName);%(Outputs) + + + - MultiThreadedDebugDLL - Debug/icupkg.pch - Debug/ - Debug/ - Debug/ true - EditAndContinue - Default + MultiThreadedDebugDLL - $(OutDir)icupkg.exe icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - $(OutDir)icupkg.pdb - Console - false - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - + + MultiThreadedDLL true - x64\Release/icupkg.pch - x64\Release/ - x64\Release/ - x64\Release/ - Default - $(OutDir)icupkg.exe icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - x64\Release/icupkg.pdb - Console - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - MultiThreadedDebugDLL - Debug/icupkg.pch - Debug/ - Debug/ - Debug/ - true - ProgramDatabase - Default - - - $(OutDir)icupkg.exe - icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - $(OutDir)icupkg.pdb - Console diff --git a/source/tools/makeconv/gencnvex.c b/source/tools/makeconv/gencnvex.c index dcc849d..726a1e5 100644 --- a/source/tools/makeconv/gencnvex.c +++ b/source/tools/makeconv/gencnvex.c @@ -107,12 +107,17 @@ CnvExtClose(NewConverter *cnvData) { static UBool CnvExtIsValid(NewConverter *cnvData, const uint8_t *bytes, int32_t length) { + // suppress compiler warnings about unused variables + (void)cnvData; + (void)bytes; + (void)length; return FALSE; } static uint32_t CnvExtWrite(NewConverter *cnvData, const UConverterStaticData *staticData, UNewDataMemory *pData, int32_t tableType) { + (void) staticData; // suppress compiler warnings about unused variable CnvExtData *extData=(CnvExtData *)cnvData; int32_t length, top, headerSize; @@ -121,7 +126,7 @@ CnvExtWrite(NewConverter *cnvData, const UConverterStaticData *staticData, if(tableType&TABLE_BASE) { headerSize=0; } else { - _MBCSHeader header={ { 0, 0, 0, 0 }, 0, 0, 0, 0, 0, 0, 0 }; + _MBCSHeader header={ { 0, 0, 0, 0 }, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; /* write the header and base table name for an extension-only table */ length=(int32_t)uprv_strlen(extData->ucm->baseName)+1; diff --git a/source/tools/makeconv/makeconv.vcxproj b/source/tools/makeconv/makeconv.vcxproj index 7471759..73c94a7 100644 --- a/source/tools/makeconv/makeconv.vcxproj +++ b/source/tools/makeconv/makeconv.vcxproj @@ -33,135 +33,58 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\Debug\ - .\x86\Debug\ - true - .\x86\Release\ - .\x86\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - + - - ..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - false - Level3 - - - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) - - .\x86\Debug/makeconv.tlb + $(OutDir)/makeconv.tlb - MultiThreadedDebugDLL - .\x86\Debug/makeconv.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ - true - EditAndContinue + Level3 Default + false + ..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories) + $(OutDir)/makeconv.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/makeconv.pdb - .\x86\Debug/makeconv.exe - icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Debug/makeconv.pdb Console - false - - + $(OutDir)/makeconv.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) + copy "$(TargetPath)" ..\..\..\$(IcuBinOutputDir) + ..\..\..\$(IcuBinOutputDir)\$(TargetFileName);%(Outputs) - - .\x86\Release/makeconv.tlb - - - MultiThreadedDLL - .\x86\Release/makeconv.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ - Default - - - .\x86\Release/makeconv.exe - icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Release/makeconv.pdb - Console - false - - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - .\x64\Debug/makeconv.tlb - + + - MultiThreadedDebugDLL - .\x64\Debug/makeconv.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ true - ProgramDatabase - Default + MultiThreadedDebugDLL - .\x64\Debug/makeconv.exe icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Debug/makeconv.pdb - Console - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - .\x64\Release/makeconv.tlb - + + MultiThreadedDLL - .\x64\Release/makeconv.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Default + true - .\x64\Release/makeconv.exe icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Release/makeconv.pdb - Console diff --git a/source/tools/pkgdata/pkgdata.cpp b/source/tools/pkgdata/pkgdata.cpp index 226e4b3..1f318ac 100644 --- a/source/tools/pkgdata/pkgdata.cpp +++ b/source/tools/pkgdata/pkgdata.cpp @@ -122,8 +122,9 @@ enum { QUIET, WITHOUT_ASSEMBLY, PDS_BUILD, - UWP_BUILD, - UWP_ARM_BUILD + WIN_UWP_BUILD, + WIN_DLL_ARCH, + WIN_DYNAMICBASE }; /* This sets the modes that are available */ @@ -167,7 +168,8 @@ static UOption options[]={ /*20*/ UOPTION_DEF( "without-assembly", 'w', UOPT_NO_ARG), /*21*/ UOPTION_DEF("zos-pds-build", 'z', UOPT_NO_ARG), /*22*/ UOPTION_DEF("windows-uwp-build", 'u', UOPT_NO_ARG), - /*23*/ UOPTION_DEF("windows-uwp-arm-build", 'a', UOPT_NO_ARG) + /*23*/ UOPTION_DEF("windows-DLL-arch", 'a', UOPT_REQUIRES_ARG), + /*24*/ UOPTION_DEF("windows-dynamicbase", 'b', UOPT_NO_ARG), }; /* This enum and the following char array should be kept in sync. */ @@ -258,7 +260,8 @@ const char options_help[][320]={ "Build the data without assembly code", "Build PDS dataset (zOS build only)", "Build for Universal Windows Platform (Windows build only)", - "Set DLL machine type for UWP to target windows ARM (Windows UWP build only)" + "Specify the DLL machine architecture for LINK.exe (Windows build only)", + "Ignored. Enable DYNAMICBASE on the DLL. This is now the default. (Windows build only)", }; const char *progname = "PKGDATA"; @@ -468,6 +471,10 @@ main(int argc, char* argv[]) { #endif } + if (options[WIN_DYNAMICBASE].doesOccur) { + fprintf(stdout, "Note: Ignoring option -b (windows-dynamicbase).\n"); + } + /* OK options are set up. Now the file lists. */ tail = NULL; for( n=1; n3) && checkAssemblyHeaderName(genccodeAssembly+3)) { - writeAssemblyCode(datFileNamePath, o->tmpDir, o->entryName, NULL, gencFilePath); + writeAssemblyCode( + datFileNamePath, + o->tmpDir, + o->entryName, + NULL, + gencFilePath, + sizeof(gencFilePath)); result = pkg_createWithAssemblyCode(targetDir, mode, gencFilePath); if (result != 0) { @@ -753,7 +766,14 @@ static int32_t pkg_executeOptions(UPKGOptions *o) { /* Try to detect the arch type, use NULL if unsuccessful */ char optMatchArch[10] = { 0 }; pkg_createOptMatchArch(optMatchArch); - writeObjectCode(datFileNamePath, o->tmpDir, o->entryName, (optMatchArch[0] == 0 ? NULL : optMatchArch), NULL, gencFilePath); + writeObjectCode( + datFileNamePath, + o->tmpDir, + o->entryName, + (optMatchArch[0] == 0 ? NULL : optMatchArch), + NULL, + gencFilePath, + sizeof(gencFilePath)); pkg_destroyOptMatchArch(optMatchArch); #if U_PLATFORM_IS_LINUX_BASED result = pkg_generateLibraryFile(targetDir, mode, gencFilePath); @@ -1685,7 +1705,13 @@ static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD printf("# Generating %s \n", gencmnFile); } - writeCCode(file, o->tmpDir, dataName[0] != 0 ? dataName : o->shortName, newName[0] != 0 ? newName : NULL, gencmnFile); + writeCCode( + file, + o->tmpDir, + dataName[0] != 0 ? dataName : o->shortName, + newName[0] != 0 ? newName : NULL, + gencmnFile, + sizeof(gencmnFile)); #ifdef USE_SINGLE_CCODE_FILE sprintf(cmd, "#include \"%s\"\n", gencmnFile); @@ -1758,14 +1784,12 @@ static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD #ifdef WINDOWS_WITH_MSVC #define LINK_CMD "link.exe /nologo /release /out:" -#define LINK_FLAGS "/DLL /NOENTRY /MANIFEST:NO /implib:" -#ifdef _WIN64 -#define LINK_EXTRA_UWP_FLAGS "/NXCOMPAT /DYNAMICBASE /APPCONTAINER " -#else -#define LINK_EXTRA_UWP_FLAGS "/NXCOMPAT /SAFESEH /DYNAMICBASE /APPCONTAINER /MACHINE:X86" -#endif -#define LINK_EXTRA_UWP_FLAGS_ARM "/NXCOMPAT /DYNAMICBASE /APPCONTAINER /MACHINE:ARM" -#define LINK_EXTRA_NO_UWP_FLAGS "/base:0x4ad00000 " +#define LINK_FLAGS "/NXCOMPAT /DYNAMICBASE /DLL /NOENTRY /MANIFEST:NO /implib:" + +#define LINK_EXTRA_UWP_FLAGS "/APPCONTAINER " +#define LINK_EXTRA_UWP_FLAGS_X86_ONLY "/SAFESEH " + +#define LINK_EXTRA_FLAGS_MACHINE "/MACHINE:" #define LIB_CMD "LIB.exe /nologo /out:" #define LIB_FILE "icudt.lib" #define LIB_EXT UDATA_LIB_SUFFIX @@ -1845,23 +1869,23 @@ static int32_t pkg_createWindowsDLL(const char mode, const char *gencFilePath, U return 0; } - char *extraFlags = ""; + char extraFlags[SMALL_BUFFER_MAX_SIZE] = ""; #ifdef WINDOWS_WITH_MSVC - if (options[UWP_BUILD].doesOccur) - { - if (options[UWP_ARM_BUILD].doesOccur) - { - extraFlags = LINK_EXTRA_UWP_FLAGS_ARM; - } - else - { - extraFlags = LINK_EXTRA_UWP_FLAGS; + if (options[WIN_UWP_BUILD].doesOccur) { + uprv_strcat(extraFlags, LINK_EXTRA_UWP_FLAGS); + + if (options[WIN_DLL_ARCH].doesOccur) { + if (uprv_strcmp(options[WIN_DLL_ARCH].value, "X86") == 0) { + uprv_strcat(extraFlags, LINK_EXTRA_UWP_FLAGS_X86_ONLY); + } } } - else - { - extraFlags = LINK_EXTRA_NO_UWP_FLAGS; + + if (options[WIN_DLL_ARCH].doesOccur) { + uprv_strcat(extraFlags, LINK_EXTRA_FLAGS_MACHINE); + uprv_strcat(extraFlags, options[WIN_DLL_ARCH].value); } + #endif sprintf(cmd, "%s\"%s\" %s %s\"%s\" \"%s\" %s", LINK_CMD, diff --git a/source/tools/pkgdata/pkgdata.vcxproj b/source/tools/pkgdata/pkgdata.vcxproj index 955f172..f2efdbd 100644 --- a/source/tools/pkgdata/pkgdata.vcxproj +++ b/source/tools/pkgdata/pkgdata.vcxproj @@ -33,151 +33,58 @@ <_ProjectFileVersion>10.0.30319.1 - .\x86\Debug\ - .\x86\Debug\ - true - .\x86\Release\ - .\x86\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false - + - - ../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories) - true - Level3 - - - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) - - .\x86\Debug/pkgdata.tlb + $(OutDir)/pkgdata.tlb - MultiThreadedDebugDLL - .\x86\Debug/pkgdata.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ - true - EditAndContinue + Level3 Default + true + ../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories) + $(OutDir)/pkgdata.pch + $(OutDir)/ + $(OutDir)/ + $(OutDir)/pkgdata.pdb - - 0x0411 - - .\x86\Debug/pkgdata.exe - icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - true - .\x86\Debug/pkgdata.pdb Console - false - - + $(OutDir)/pkgdata.exe + ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories) - - - copy "$(TargetPath)" ..\..\..\bin - - ..\..\..\bin\$(TargetFileName);%(Outputs) + copy "$(TargetPath)" ..\..\..\$(IcuBinOutputDir) + ..\..\..\$(IcuBinOutputDir)\$(TargetFileName);%(Outputs) - - .\x86\Release/pkgdata.tlb - - - MultiThreadedDLL - true - .\x86\Release/pkgdata.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ - Default - - - 0x0411 - - - .\x86\Release/pkgdata.exe - icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) - .\x86\Release/pkgdata.pdb - Console - false - - - - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - .\x64\Debug/pkgdata.tlb - + + - MultiThreadedDebugDLL - .\x64\Debug/pkgdata.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ true - ProgramDatabase - Default + MultiThreadedDebugDLL - - 0x0411 - - .\x64\Debug/pkgdata.exe icuucd.lib;icutud.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Debug/pkgdata.pdb - Console - - - copy "$(TargetPath)" ..\..\..\bin64 - - ..\..\..\bin64\$(TargetFileName);%(Outputs) - - - .\x64\Release/pkgdata.tlb - + + MultiThreadedDLL true - .\x64\Release/pkgdata.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - true - Default - - 0x0411 - - .\x64\Release/pkgdata.exe icuuc.lib;icutu.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\x64\Release/pkgdata.pdb - Console diff --git a/source/tools/toolutil/filetools.cpp b/source/tools/toolutil/filetools.cpp index 6e88c94..0f0e9c5 100644 --- a/source/tools/toolutil/filetools.cpp +++ b/source/tools/toolutil/filetools.cpp @@ -65,7 +65,7 @@ isFileModTimeLater(const char *filePath, const char *checkAgainst, UBool isDir) if (U_FAILURE(status)) { fprintf(stderr, "%s:%d: %s\n", __FILE__, __LINE__, u_errorName(status)); return FALSE; - }; + } if ((subDirp = opendir(newpath.data())) != NULL) { /* If this new path is a directory, make a recursive call with the newpath. */ diff --git a/source/tools/toolutil/pkg_genc.cpp b/source/tools/toolutil/pkg_genc.cpp index ae8b3ec..3f71e00 100644 --- a/source/tools/toolutil/pkg_genc.cpp +++ b/source/tools/toolutil/pkg_genc.cpp @@ -48,6 +48,8 @@ #include "uoptions.h" #include "pkg_genc.h" #include "filetools.h" +#include "charstr.h" +#include "unicode/errorcode.h" #define MAX_COLUMN ((uint32_t)(0xFFFFFFFFU)) @@ -56,7 +58,15 @@ /* prototypes --------------------------------------------------------------- */ static void -getOutFilename(const char *inFilename, const char *destdir, char *outFilename, char *entryName, const char *newSuffix, const char *optFilename); +getOutFilename( + const char *inFilename, + const char *destdir, + char *outFilename, + int32_t outFilenameCapacity, + char *entryName, + int32_t entryNameCapacity, + const char *newSuffix, + const char *optFilename); static uint32_t write8(FileStream *out, uint8_t byte, uint32_t column); @@ -259,13 +269,21 @@ printAssemblyHeadersToStdErr(void) { } U_CAPI void U_EXPORT2 -writeAssemblyCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optFilename, char *outFilePath) { +writeAssemblyCode( + const char *filename, + const char *destdir, + const char *optEntryPoint, + const char *optFilename, + char *outFilePath, + size_t outFilePathCapacity) { uint32_t column = MAX_COLUMN; - char entry[64]; - uint32_t buffer[1024]; - char *bufferStr = (char *)buffer; + char entry[96]; + union { + uint32_t uint32s[1024]; + char chars[4096]; + } buffer; FileStream *in, *out; - size_t i, length; + size_t i, length, count; in=T_FileStream_open(filename, "rb"); if(in==NULL) { @@ -273,15 +291,27 @@ writeAssemblyCode(const char *filename, const char *destdir, const char *optEntr exit(U_FILE_ACCESS_ERROR); } - getOutFilename(filename, destdir, bufferStr, entry, ".S", optFilename); - out=T_FileStream_open(bufferStr, "w"); + getOutFilename( + filename, + destdir, + buffer.chars, + sizeof(buffer.chars), + entry, + sizeof(entry), + ".S", + optFilename); + out=T_FileStream_open(buffer.chars, "w"); if(out==NULL) { - fprintf(stderr, "genccode: unable to open output file %s\n", bufferStr); + fprintf(stderr, "genccode: unable to open output file %s\n", buffer.chars); exit(U_FILE_ACCESS_ERROR); } if (outFilePath != NULL) { - uprv_strcpy(outFilePath, bufferStr); + if (uprv_strlen(buffer.chars) >= outFilePathCapacity) { + fprintf(stderr, "genccode: filename too long\n"); + exit(U_ILLEGAL_ARGUMENT_ERROR); + } + uprv_strcpy(outFilePath, buffer.chars); } #if defined (WINDOWS_WITH_GNUC) && U_PLATFORM != U_PF_CYGWIN @@ -302,29 +332,42 @@ writeAssemblyCode(const char *filename, const char *destdir, const char *optEntr } } - sprintf(bufferStr, assemblyHeader[assemblyHeaderIndex].header, + count = snprintf( + buffer.chars, sizeof(buffer.chars), + assemblyHeader[assemblyHeaderIndex].header, entry, entry, entry, entry, entry, entry, entry, entry); - T_FileStream_writeLine(out, bufferStr); + if (count >= sizeof(buffer.chars)) { + fprintf(stderr, "genccode: entry name too long (long filename?)\n"); + exit(U_ILLEGAL_ARGUMENT_ERROR); + } + T_FileStream_writeLine(out, buffer.chars); T_FileStream_writeLine(out, assemblyHeader[assemblyHeaderIndex].beginLine); for(;;) { - memset(buffer, 0, sizeof(buffer)); - length=T_FileStream_read(in, buffer, sizeof(buffer)); + memset(buffer.uint32s, 0, sizeof(buffer.uint32s)); + length=T_FileStream_read(in, buffer.uint32s, sizeof(buffer.uint32s)); if(length==0) { break; } - for(i=0; i<(length/sizeof(buffer[0])); i++) { - column = write32(out, buffer[i], column); + for(i=0; i<(length/sizeof(buffer.uint32s[0])); i++) { + // TODO: What if the last read sees length not as a multiple of 4? + column = write32(out, buffer.uint32s[i], column); } } T_FileStream_writeLine(out, "\n"); - sprintf(bufferStr, assemblyHeader[assemblyHeaderIndex].footer, + count = snprintf( + buffer.chars, sizeof(buffer.chars), + assemblyHeader[assemblyHeaderIndex].footer, entry, entry, entry, entry, entry, entry, entry, entry); - T_FileStream_writeLine(out, bufferStr); + if (count >= sizeof(buffer.chars)) { + fprintf(stderr, "genccode: entry name too long (long filename?)\n"); + exit(U_ILLEGAL_ARGUMENT_ERROR); + } + T_FileStream_writeLine(out, buffer.chars); if(T_FileStream_error(in)) { fprintf(stderr, "genccode: file read error while generating from file %s\n", filename); @@ -341,11 +384,17 @@ writeAssemblyCode(const char *filename, const char *destdir, const char *optEntr } U_CAPI void U_EXPORT2 -writeCCode(const char *filename, const char *destdir, const char *optName, const char *optFilename, char *outFilePath) { +writeCCode( + const char *filename, + const char *destdir, + const char *optName, + const char *optFilename, + char *outFilePath, + size_t outFilePathCapacity) { uint32_t column = MAX_COLUMN; - char buffer[4096], entry[64]; + char buffer[4096], entry[96]; FileStream *in, *out; - size_t i, length; + size_t i, length, count; in=T_FileStream_open(filename, "rb"); if(in==NULL) { @@ -354,16 +403,35 @@ writeCCode(const char *filename, const char *destdir, const char *optName, const } if(optName != NULL) { /* prepend 'icudt28_' */ - strcpy(entry, optName); - strcat(entry, "_"); + // +2 includes the _ and the NUL + if (uprv_strlen(optName) + 2 > sizeof(entry)) { + fprintf(stderr, "genccode: entry name too long (long filename?)\n"); + exit(U_ILLEGAL_ARGUMENT_ERROR); + } + strcpy(entry, optName); + strcat(entry, "_"); } else { - entry[0] = 0; + entry[0] = 0; } - getOutFilename(filename, destdir, buffer, entry+uprv_strlen(entry), ".c", optFilename); + getOutFilename( + filename, + destdir, + buffer, + sizeof(buffer), + entry + uprv_strlen(entry), + sizeof(entry) - uprv_strlen(entry), + ".c", + optFilename); + if (outFilePath != NULL) { + if (uprv_strlen(buffer) >= outFilePathCapacity) { + fprintf(stderr, "genccode: filename too long\n"); + exit(U_ILLEGAL_ARGUMENT_ERROR); + } uprv_strcpy(outFilePath, buffer); } + out=T_FileStream_open(buffer, "w"); if(out==NULL) { fprintf(stderr, "genccode: unable to open output file %s\n", buffer); @@ -391,7 +459,7 @@ writeCCode(const char *filename, const char *destdir, const char *optName, const magic numbers we must still use the initial double. [grhoten 4/24/2003] */ - sprintf(buffer, + count = snprintf(buffer, sizeof(buffer), "#ifndef IN_GENERATED_CCODE\n" "#define IN_GENERATED_CCODE\n" "#define U_DISABLE_RENAMING 1\n" @@ -403,6 +471,10 @@ writeCCode(const char *filename, const char *destdir, const char *optName, const " const char *bytes; \n" "} %s={ 0.0, \n", entry); + if (count >= sizeof(buffer)) { + fprintf(stderr, "genccode: entry name too long (long filename?)\n"); + exit(U_ILLEGAL_ARGUMENT_ERROR); + } T_FileStream_writeLine(out, buffer); for(;;) { @@ -418,7 +490,7 @@ writeCCode(const char *filename, const char *destdir, const char *optName, const T_FileStream_writeLine(out, "\"\n};\nU_CDECL_END\n"); #else /* Function renaming shouldn't be done in data */ - sprintf(buffer, + count = snprintf(buffer, sizeof(buffer), "#ifndef IN_GENERATED_CCODE\n" "#define IN_GENERATED_CCODE\n" "#define U_DISABLE_RENAMING 1\n" @@ -430,6 +502,10 @@ writeCCode(const char *filename, const char *destdir, const char *optName, const " uint8_t bytes[%ld]; \n" "} %s={ 0.0, {\n", (long)T_FileStream_size(in), entry); + if (count >= sizeof(buffer)) { + fprintf(stderr, "genccode: entry name too long (long filename?)\n"); + exit(U_ILLEGAL_ARGUMENT_ERROR); + } T_FileStream_writeLine(out, buffer); for(;;) { @@ -583,66 +659,84 @@ write8str(FileStream *out, uint8_t byte, uint32_t column) { #endif static void -getOutFilename(const char *inFilename, const char *destdir, char *outFilename, char *entryName, const char *newSuffix, const char *optFilename) { +getOutFilename( + const char *inFilename, + const char *destdir, + char *outFilename, + int32_t outFilenameCapacity, + char *entryName, + int32_t entryNameCapacity, + const char *newSuffix, + const char *optFilename) { const char *basename=findBasename(inFilename), *suffix=uprv_strrchr(basename, '.'); + icu::CharString outFilenameBuilder; + icu::CharString entryNameBuilder; + icu::ErrorCode status; + /* copy path */ if(destdir!=NULL && *destdir!=0) { - do { - *outFilename++=*destdir++; - } while(*destdir!=0); - if(*(outFilename-1)!=U_FILE_SEP_CHAR) { - *outFilename++=U_FILE_SEP_CHAR; - } - inFilename=basename; + outFilenameBuilder.append(destdir, status); + outFilenameBuilder.ensureEndsWithFileSeparator(status); } else { - while(inFilename= outFilenameCapacity) { + fprintf(stderr, "genccode: output filename too long\n"); + exit(U_ILLEGAL_ARGUMENT_ERROR); + } + + if (entryNameBuilder.length() >= entryNameCapacity) { + fprintf(stderr, "genccode: entry name too long (long filename?)\n"); + exit(U_ILLEGAL_ARGUMENT_ERROR); + } + + uprv_strcpy(outFilename, outFilenameBuilder.data()); + uprv_strcpy(entryName, entryNameBuilder.data()); } #ifdef CAN_GENERATE_OBJECTS @@ -777,7 +871,14 @@ getArchitecture(uint16_t *pCPU, uint16_t *pBits, UBool *pIsBigEndian, const char } U_CAPI void U_EXPORT2 -writeObjectCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optMatchArch, const char *optFilename, char *outFilePath) { +writeObjectCode( + const char *filename, + const char *destdir, + const char *optEntryPoint, + const char *optMatchArch, + const char *optFilename, + char *outFilePath, + size_t outFilePathCapacity) { /* common variables */ char buffer[4096], entry[96]={ 0 }; FileStream *in, *out; @@ -1061,8 +1162,21 @@ writeObjectCode(const char *filename, const char *destdir, const char *optEntryP } size=T_FileStream_size(in); - getOutFilename(filename, destdir, buffer, entry+entryOffset, newSuffix, optFilename); + getOutFilename( + filename, + destdir, + buffer, + sizeof(buffer), + entry + entryOffset, + sizeof(entry) - entryOffset, + newSuffix, + optFilename); + if (outFilePath != NULL) { + if (uprv_strlen(buffer) >= outFilePathCapacity) { + fprintf(stderr, "genccode: filename too long\n"); + exit(U_ILLEGAL_ARGUMENT_ERROR); + } uprv_strcpy(outFilePath, buffer); } diff --git a/source/tools/toolutil/pkg_genc.h b/source/tools/toolutil/pkg_genc.h index 5039f27..47e8304 100644 --- a/source/tools/toolutil/pkg_genc.h +++ b/source/tools/toolutil/pkg_genc.h @@ -75,12 +75,31 @@ U_INTERNAL UBool U_EXPORT2 checkAssemblyHeaderName(const char* optAssembly); U_INTERNAL void U_EXPORT2 -writeCCode(const char *filename, const char *destdir, const char *optName, const char *optFilename, char *outFilePath); +writeCCode( + const char *filename, + const char *destdir, + const char *optName, + const char *optFilename, + char *outFilePath, + size_t outFilePathCapacity); U_INTERNAL void U_EXPORT2 -writeAssemblyCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optFilename, char *outFilePath); +writeAssemblyCode( + const char *filename, + const char *destdir, + const char *optEntryPoint, + const char *optFilename, + char *outFilePath, + size_t outFilePathCapacity); U_INTERNAL void U_EXPORT2 -writeObjectCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optMatchArch, const char *optFilename, char *outFilePath); +writeObjectCode( + const char *filename, + const char *destdir, + const char *optEntryPoint, + const char *optMatchArch, + const char *optFilename, + char *outFilePath, + size_t outFilePathCapacity); #endif diff --git a/source/tools/toolutil/pkgitems.cpp b/source/tools/toolutil/pkgitems.cpp index cb23b45..7b86c55 100644 --- a/source/tools/toolutil/pkgitems.cpp +++ b/source/tools/toolutil/pkgitems.cpp @@ -305,7 +305,8 @@ ures_enumDependencies(const char *itemName, break; } int32_t length; - const UChar *alias=res_getString(pResData, res, &length); + // No tracing: build tool + const UChar *alias=res_getStringNoTrace(pResData, res, &length); checkAlias(itemName, res, alias, length, useResSuffix, check, context, pErrorCode); } break; diff --git a/source/tools/toolutil/toolutil.cpp b/source/tools/toolutil/toolutil.cpp index 4a43ffd..a035f23 100644 --- a/source/tools/toolutil/toolutil.cpp +++ b/source/tools/toolutil/toolutil.cpp @@ -243,7 +243,7 @@ struct UToolMemory { char name[64]; int32_t capacity, maxCapacity, size, idx; void *array; - UAlignedMemory staticArray[1]; + alignas(max_align_t) char staticArray[1]; }; U_CAPI UToolMemory * U_EXPORT2 diff --git a/source/tools/toolutil/toolutil.vcxproj b/source/tools/toolutil/toolutil.vcxproj index 22ab0ef..d6ab104 100644 --- a/source/tools/toolutil/toolutil.vcxproj +++ b/source/tools/toolutil/toolutil.vcxproj @@ -33,18 +33,14 @@ <_ProjectFileVersion>10.0.30319.1 - .\..\..\..\lib\ - .\x86\Release\ - false - .\..\..\..\lib\ - .\x86\Debug\ - true - .\x64\Release\ - .\x64\Release\ - false - .\x64\Debug\ - .\x64\Debug\ - true + .\$(Platform)\$(Configuration)\ + .\$(Platform)\$(Configuration)\ + + .\x86\$(Configuration)\ + .\x86\$(Configuration)\ + + true + false @@ -53,30 +49,49 @@ U_TOOLUTIL_IMPLEMENTATION;%(PreprocessorDefinitions) false Level3 + Default - - - .\..\..\..\lib\icutu.tlb - + + + + true + MultiThreadedDebugDLL + EditAndContinue + + + icuucd.lib;icuind.lib;%(AdditionalDependencies) + + + + - true MultiThreadedDLL true - .\x86\Release/toolutil.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ - Default - ..\..\..\bin\icutu64.dll icuuc.lib;icuin.lib;%(AdditionalDependencies) + + + + + + .\x86\$(Configuration)/toolutil.pch + .\x86\$(Configuration)/ + .\x86\$(Configuration)/ + .\x86\$(Configuration)/ + + ..\..\..\lib;%(AdditionalLibraryDirectories) + + + + + .\..\..\..\lib\icutu.tlb + + + ..\..\..\bin\icutu65.dll .\..\..\..\lib\icutu.pdb - UseLinkTimeCodeGeneration - 0x4ac00000 - false ..\..\..\lib\icutu.lib @@ -86,48 +101,36 @@ .\..\..\..\lib\icutud.tlb - - MultiThreadedDebugDLL - .\x86\Debug/toolutil.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ - EditAndContinue - Default - - ..\..\..\bin\icutu64d.dll - icuucd.lib;icuind.lib;%(AdditionalDependencies) - ..\..\..\lib;%(AdditionalLibraryDirectories) + ..\..\..\bin\icutu65d.dll .\..\..\..\lib\icutud.pdb - 0x4ac00000 - false ..\..\..\lib\icutud.lib + + + + .\x64\$(Configuration)/toolutil.pch + .\x64\$(Configuration)/ + .\x64\$(Configuration)/ + .\x64\$(Configuration)/ + + + ..\..\..\lib64;%(AdditionalLibraryDirectories) + + .\..\..\..\lib64\icutu.tlb true - MultiThreadedDLL - true - .\x64\Release/toolutil.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ - Default - ..\..\..\bin64\icutu64.dll - icuuc.lib;icuin.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) + ..\..\..\bin64\icutu65.dll .\..\..\..\lib64\icutu.pdb - UseLinkTimeCodeGeneration - 0x4ac00000 ..\..\..\lib64\icutu.lib @@ -135,22 +138,78 @@ .\..\..\..\lib64\icutud.tlb + + ..\..\..\bin64\icutu65d.dll + .\..\..\..\lib64\icutud.pdb + ..\..\..\lib64\icutud.lib + + + + + .\ARM\$(Configuration)/toolutil.pch + .\ARM\$(Configuration)/ + .\ARM\$(Configuration)/ + .\ARM\$(Configuration)/ + + + .\..\..\..\libARM;%(AdditionalLibraryDirectories) + + + + + ..\..\..\libARM\icutu.tlb + + + ..\..\..\binARM\icutu65.dll + .\..\..\..\libARM\icutu.pdb + ..\..\..\libARM\icutu.lib + + + + + .\..\..\..\libARM\icutud.tlb + - MultiThreadedDebugDLL - .\x64\Debug/toolutil.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ ProgramDatabase - Default - ..\..\..\bin64\icutu64d.dll - icuucd.lib;icuind.lib;%(AdditionalDependencies) - ..\..\..\lib64;%(AdditionalLibraryDirectories) - .\..\..\..\lib64\icutud.pdb - 0x4ac00000 - ..\..\..\lib64\icutud.lib + ..\..\..\binARM\icutu65d.dll + .\..\..\..\libARM\icutud.pdb + ..\..\..\libARM\icutud.lib + + + + + .\ARM64\$(Configuration)/toolutil.pch + .\ARM64\$(Configuration)/ + .\ARM64\$(Configuration)/ + .\ARM64\$(Configuration)/ + + + .\..\..\..\libARM64;%(AdditionalLibraryDirectories) + + + + + .\..\..\..\libARM64\icutu.tlb + + + ..\..\..\binARM64\icutu65.dll + .\..\..\..\libARM64\icutu.pdb + ..\..\..\libARM64\icutu.lib + + + + + .\..\..\..\libARM64\icutud.tlb + + + ProgramDatabase + + + ..\..\..\binARM64\icutu65d.dll + .\..\..\..\libARM64\icutud.pdb + ..\..\..\libARM64\icutud.lib diff --git a/source/tools/toolutil/ucbuf.h b/source/tools/toolutil/ucbuf.h index 81f8ba6..116da37 100644 --- a/source/tools/toolutil/ucbuf.h +++ b/source/tools/toolutil/ucbuf.h @@ -32,11 +32,11 @@ typedef struct UCHARBUF UCHARBUF; /** * End of file value */ -#define U_EOF 0xFFFFFFFF +#define U_EOF ((int32_t)0xFFFFFFFF) /** * Error value if a sequence cannot be unescaped */ -#define U_ERR 0xFFFFFFFE +#define U_ERR ((int32_t)0xFFFFFFFE) typedef struct ULine ULine; diff --git a/source/tools/toolutil/xmlparser.cpp b/source/tools/toolutil/xmlparser.cpp index 1ca111c..a9650cc 100644 --- a/source/tools/toolutil/xmlparser.cpp +++ b/source/tools/toolutil/xmlparser.cpp @@ -313,7 +313,7 @@ UXMLParser::parseFile(const char *filename, UErrorCode &errorCode) { // reached end of file, convert once more to flush the converter flush=TRUE; } - }; + } exit: ucnv_close(cnv); diff --git a/source/tools/tzcode/icuzdump.vcxproj b/source/tools/tzcode/icuzdump.vcxproj index 15c9432..4f7b96f 100644 --- a/source/tools/tzcode/icuzdump.vcxproj +++ b/source/tools/tzcode/icuzdump.vcxproj @@ -77,7 +77,6 @@ true .\x86\Debug/icuzdump.pdb Console - false NotSet @@ -97,7 +96,6 @@ Console true true - false MachineX86 -- 2.7.4