ICU-6661 ucal_getKeywordValuesForLocale to use calendarPreference data from CLDR. Updated supplementalData.txt generated from the CLDR CVS head version of supplementalData.xml (1.205).

X-SVN-Rev: 25652
This commit is contained in:
Yoshito Umaoka 2009-03-25 17:59:48 +00:00
parent 8cb0047a81
commit 9d0666f840
3 changed files with 727 additions and 176 deletions

View file

@ -1,4 +1,4 @@
// ***************************************************************************
// ***************************************************************************
// *
// * Copyright (C) 2009 International Business Machines
// * Corporation and others. All Rights Reserved.
@ -4539,10 +4539,6 @@ supplementalData:table(nofallback){
0,
0,
}
TWD:intvector{
0,
0,
}
TZS:intvector{
0,
0,
@ -4588,100 +4584,681 @@ supplementalData:table(nofallback){
0,
}
}
calendarData{
buddhist{
"TH",
bcp47KeywordMappings{
calendar{
ethiopic-amete-alem{"ethiopaa"}
gregorian{"gregory"}
islamic-civil{"islamicc"}
}
chinese{
"CN",
"CX",
"HK",
"MO",
"SG",
"TW",
colalternate{
non-ignorable{"nonignore"}
}
coptic{
"EG",
colbackwards{
no{"false"}
yes{"true"}
}
ethiopic{
"ET",
colcasefirst{
no{"false"}
}
gregorian{
"all",
colcaselevel{
no{"false"}
yes{"true"}
}
hebrew{
"IL",
colhiraganaquaternary{
no{"false"}
yes{"true"}
}
indian{
"IN",
collation{
digits-after{"digitaft"}
gb2312han{"gb2312"}
phonebook{"phonebk"}
}
islamic{
"AE",
"BH",
"DJ",
"DZ",
"EG",
"EH",
"ER",
"IL",
"IQ",
"JO",
"KM",
"KW",
"LB",
"LY",
"MA",
"MR",
"OM",
"PS",
"QA",
"SA",
"SD",
"SY",
"TD",
"TN",
"YE",
"AF",
"IR",
colnormalization{
no{"false"}
yes{"true"}
}
islamic-civil{
"AE",
"BH",
"DJ",
"DZ",
"EG",
"EH",
"ER",
"IL",
"IQ",
"JO",
"KM",
"KW",
"LB",
"LY",
"MA",
"MR",
"OM",
"PS",
"QA",
"SA",
"SD",
"SY",
"TD",
"TN",
"YE",
"AF",
"IR",
colnumeric{
no{"false"}
yes{"true"}
}
japanese{
"JP",
colstrength{
identical{"identic"}
primary{"level1"}
quaternary{"level4"}
secondary{"level2"}
tertiary{"level3"}
}
persian{
"AF",
"IR",
key{
calendar{"ca"}
colalternate{"ka"}
colbackwards{"kb"}
colcasefirst{"kf"}
colcaselevel{"kc"}
colhiraganaquaternary{"kh"}
collation{"co"}
colnormalization{"kk"}
colnumeric{"kn"}
colstrength{"ks"}
currency{"cu"}
numbers{"nu"}
timezone{"tz"}
variabletop{"vt"}
}
roc{
"TW",
timezone{
"africa:abidjan"{"ciabj"}
"africa:accra"{"ghacc"}
"africa:addis_ababa"{"etadd"}
"africa:algiers"{"dzalg"}
"africa:asmera"{"erasm"}
"africa:bamako"{"mlbko"}
"africa:bangui"{"cfbgf"}
"africa:banjul"{"gmbjl"}
"africa:bissau"{"gwoxb"}
"africa:blantyre"{"mwblz"}
"africa:brazzaville"{"cgbzv"}
"africa:bujumbura"{"bibjm"}
"africa:cairo"{"egcai"}
"africa:casablanca"{"macas"}
"africa:ceuta"{"esceu"}
"africa:conakry"{"gncky"}
"africa:dakar"{"sndkr"}
"africa:dar_es_salaam"{"tzdar"}
"africa:djibouti"{"djjib"}
"africa:douala"{"cmdla"}
"africa:el_aaiun"{"eheai"}
"africa:freetown"{"slfna"}
"africa:gaborone"{"bwgbe"}
"africa:harare"{"zwhre"}
"africa:johannesburg"{"zajnb"}
"africa:kampala"{"ugkla"}
"africa:khartoum"{"sdkrt"}
"africa:kigali"{"rwkgl"}
"africa:kinshasa"{"cdfih"}
"africa:lagos"{"nglos"}
"africa:libreville"{"galbv"}
"africa:lome"{"tglfw"}
"africa:luanda"{"aolad"}
"africa:lubumbashi"{"cdfbm"}
"africa:lusaka"{"zmlun"}
"africa:malabo"{"gqssg"}
"africa:maputo"{"mzmpm"}
"africa:maseru"{"lsmsu"}
"africa:mbabane"{"szqmn"}
"africa:mogadishu"{"somgq"}
"africa:monrovia"{"lrmlw"}
"africa:nairobi"{"kenbo"}
"africa:ndjamena"{"tdndj"}
"africa:niamey"{"nenim"}
"africa:nouakchott"{"mrnkc"}
"africa:ouagadougou"{"bfoua"}
"africa:porto-novo"{"bjptn"}
"africa:sao_tome"{"sttms"}
"africa:tripoli"{"lytip"}
"africa:tunis"{"tntun"}
"africa:windhoek"{"nawdh"}
"america:adak"{"usadk"}
"america:anchorage"{"usanc"}
"america:anguilla"{"aiaxa"}
"america:antigua"{"aganu"}
"america:araguaina"{"braux"}
"america:argentina:la_rioja"{"arirj"}
"america:argentina:rio_gallegos"{"arrgl"}
"america:argentina:salta"{"arsla"}
"america:argentina:san_juan"{"aruaq"}
"america:argentina:san_luis"{"arluq"}
"america:argentina:tucuman"{"artuc"}
"america:argentina:ushuaia"{"arush"}
"america:aruba"{"awaua"}
"america:asuncion"{"pyasu"}
"america:bahia"{"brssa"}
"america:barbados"{"bbbgi"}
"america:belem"{"brbel"}
"america:belize"{"bzbze"}
"america:blanc-sablon"{"caybx"}
"america:boa_vista"{"brbvb"}
"america:bogota"{"cobog"}
"america:boise"{"usboi"}
"america:buenos_aires"{"arbue"}
"america:cambridge_bay"{"caycb"}
"america:campo_grande"{"brcgr"}
"america:cancun"{"mxcun"}
"america:caracas"{"veccs"}
"america:catamarca"{"arctc"}
"america:cayenne"{"gfcay"}
"america:cayman"{"kygec"}
"america:chicago"{"uschi"}
"america:chihuahua"{"mxchi"}
"america:coral_harbour"{"cayzs"}
"america:cordoba"{"arcor"}
"america:costa_rica"{"crsjo"}
"america:cuiaba"{"brcgb"}
"america:curacao"{"ancur"}
"america:danmarkshavn"{"gldkshvn"}
"america:dawson"{"cayda"}
"america:dawson_creek"{"caydq"}
"america:denver"{"usden"}
"america:detroit"{"usdet"}
"america:dominica"{"dmdom"}
"america:edmonton"{"caedm"}
"america:eirunepe"{"brern"}
"america:el_salvador"{"svsal"}
"america:fortaleza"{"brfor"}
"america:glace_bay"{"caglb"}
"america:godthab"{"glgoh"}
"america:goose_bay"{"cagoo"}
"america:grand_turk"{"tcgdt"}
"america:grenada"{"gdgnd"}
"america:guadeloupe"{"gpbbr"}
"america:guatemala"{"gtgua"}
"america:guayaquil"{"ecgye"}
"america:guyana"{"gygeo"}
"america:halifax"{"cahal"}
"america:havana"{"cuhav"}
"america:hermosillo"{"mxhmo"}
"america:indiana:knox"{"usknx"}
"america:indiana:marengo"{"usaeg"}
"america:indiana:petersburg"{"uswsq"}
"america:indiana:tell_city"{"ustel"}
"america:indiana:vevay"{"usinvev"}
"america:indiana:vincennes"{"usoea"}
"america:indiana:winamac"{"uswlz"}
"america:indianapolis"{"usind"}
"america:inuvik"{"cayev"}
"america:iqaluit"{"caiql"}
"america:jamaica"{"jmkin"}
"america:jujuy"{"arjuj"}
"america:juneau"{"usjnu"}
"america:kentucky:monticello"{"usmoc"}
"america:la_paz"{"bolpb"}
"america:lima"{"pelim"}
"america:los_angeles"{"uslax"}
"america:louisville"{"uslui"}
"america:maceio"{"brmcz"}
"america:managua"{"nimga"}
"america:manaus"{"brmao"}
"america:marigot"{"gpmsb"}
"america:martinique"{"mqfdf"}
"america:mazatlan"{"mxmzt"}
"america:mendoza"{"armdz"}
"america:menominee"{"usmnm"}
"america:merida"{"mxmid"}
"america:mexico_city"{"mxmex"}
"america:miquelon"{"pmmqc"}
"america:moncton"{"camon"}
"america:monterrey"{"mxmty"}
"america:montevideo"{"uymvd"}
"america:montreal"{"camtr"}
"america:montserrat"{"msmni"}
"america:nassau"{"bsnas"}
"america:new_york"{"usnyc"}
"america:nipigon"{"cathu"}
"america:nome"{"usome"}
"america:noronha"{"brfen"}
"america:north_dakota:center"{"usndcnt"}
"america:north_dakota:new_salem"{"usndnsl"}
"america:panama"{"papty"}
"america:pangnirtung"{"capnt"}
"america:paramaribo"{"srpbm"}
"america:phoenix"{"usphx"}
"america:port-au-prince"{"htpap"}
"america:port_of_spain"{"ttpos"}
"america:porto_velho"{"brpvh"}
"america:puerto_rico"{"prsju"}
"america:rainy_river"{"caffs"}
"america:rankin_inlet"{"cayek"}
"america:recife"{"brrec"}
"america:regina"{"careg"}
"america:resolute"{"careb"}
"america:rio_branco"{"brrbr"}
"america:santarem"{"brstm"}
"america:santiago"{"clscl"}
"america:santo_domingo"{"dosdq"}
"america:sao_paulo"{"brsao"}
"america:scoresbysund"{"globy"}
"america:shiprock"{"usnavajo"}
"america:st_barthelemy"{"gpsbh"}
"america:st_johns"{"casjf"}
"america:st_kitts"{"knbas"}
"america:st_lucia"{"lccas"}
"america:st_thomas"{"vistt"}
"america:st_vincent"{"vcsvd"}
"america:swift_current"{"cayyn"}
"america:tegucigalpa"{"hntgu"}
"america:thule"{"glthu"}
"america:thunder_bay"{"cathu"}
"america:tijuana"{"mxtij"}
"america:toronto"{"cator"}
"america:tortola"{"vgtov"}
"america:vancouver"{"cavan"}
"america:whitehorse"{"cayxy"}
"america:winnipeg"{"cawnp"}
"america:yakutat"{"usyak"}
"america:yellowknife"{"cayzf"}
"antarctica:casey"{"aqcas"}
"antarctica:davis"{"aqdav"}
"antarctica:dumontdurville"{"aqddu"}
"antarctica:mawson"{"aqmaw"}
"antarctica:mcmurdo"{"aqmcm"}
"antarctica:palmer"{"aqplm"}
"antarctica:rothera"{"aqrot"}
"antarctica:south_pole"{"aqams"}
"antarctica:syowa"{"aqsyw"}
"antarctica:vostok"{"aqvos"}
"arctic:longyearbyen"{"sjlyr"}
"asia:aden"{"yeade"}
"asia:almaty"{"kzala"}
"asia:amman"{"joamm"}
"asia:anadyr"{"rudyr"}
"asia:aqtau"{"kzaau"}
"asia:aqtobe"{"kzakx"}
"asia:ashgabat"{"tmasb"}
"asia:baghdad"{"iqbgw"}
"asia:bahrain"{"bhbah"}
"asia:baku"{"azbak"}
"asia:bangkok"{"thbkk"}
"asia:beirut"{"lbbey"}
"asia:bishkek"{"kgfru"}
"asia:brunei"{"bnbwn"}
"asia:calcutta"{"inccu"}
"asia:choibalsan"{"mncoq"}
"asia:chongqing"{"cnckg"}
"asia:colombo"{"lkcmb"}
"asia:damascus"{"sydam"}
"asia:dhaka"{"bddac"}
"asia:dili"{"tldil"}
"asia:dubai"{"aedxb"}
"asia:dushanbe"{"tjdyu"}
"asia:gaza"{"gaza"}
"asia:harbin"{"cnhrb"}
"asia:hong_kong"{"hkhkg"}
"asia:hovd"{"mnhvd"}
"asia:irkutsk"{"ruikt"}
"asia:jakarta"{"idjkt"}
"asia:jayapura"{"iddjj"}
"asia:jerusalem"{"jeruslm"}
"asia:kabul"{"afkbl"}
"asia:kamchatka"{"rupkc"}
"asia:karachi"{"pkkhi"}
"asia:kashgar"{"cnkhg"}
"asia:katmandu"{"npktm"}
"asia:krasnoyarsk"{"rukra"}
"asia:kuala_lumpur"{"mykul"}
"asia:kuching"{"mykch"}
"asia:kuwait"{"kwkwi"}
"asia:macau"{"momfm"}
"asia:magadan"{"rugdx"}
"asia:makassar"{"idmak"}
"asia:manila"{"phmnl"}
"asia:muscat"{"ommct"}
"asia:nicosia"{"cynic"}
"asia:novosibirsk"{"ruovb"}
"asia:omsk"{"ruoms"}
"asia:oral"{"kzura"}
"asia:phnom_penh"{"khpnh"}
"asia:pontianak"{"idpnk"}
"asia:pyongyang"{"kpfnj"}
"asia:qatar"{"qadoh"}
"asia:qyzylorda"{"kzkzo"}
"asia:rangoon"{"mmrgn"}
"asia:riyadh"{"saruh"}
"asia:saigon"{"vnsgn"}
"asia:sakhalin"{"ruuus"}
"asia:samarkand"{"uzskd"}
"asia:seoul"{"krsel"}
"asia:shanghai"{"cnsha"}
"asia:singapore"{"sgsin"}
"asia:taipei"{"twtpe"}
"asia:tashkent"{"uztas"}
"asia:tbilisi"{"getbs"}
"asia:tehran"{"irthr"}
"asia:thimphu"{"btthi"}
"asia:tokyo"{"jptyo"}
"asia:ulaanbaatar"{"mnuln"}
"asia:urumqi"{"cnurc"}
"asia:vientiane"{"lavte"}
"asia:vladivostok"{"ruvvo"}
"asia:yakutsk"{"ruyks"}
"asia:yekaterinburg"{"ruyek"}
"asia:yerevan"{"amevn"}
"atlantic:azores"{"ptpdl"}
"atlantic:bermuda"{"bmbda"}
"atlantic:canary"{"eslpa"}
"atlantic:cape_verde"{"cvrai"}
"atlantic:faeroe"{"fotho"}
"atlantic:madeira"{"ptfnc"}
"atlantic:reykjavik"{"isrey"}
"atlantic:south_georgia"{"gsgrv"}
"atlantic:st_helena"{"shshn"}
"atlantic:stanley"{"fkpsy"}
"australia:adelaide"{"auadl"}
"australia:brisbane"{"aubne"}
"australia:broken_hill"{"aubhq"}
"australia:currie"{"aukns"}
"australia:darwin"{"audrw"}
"australia:eucla"{"aueuc"}
"australia:hobart"{"auhba"}
"australia:lindeman"{"auldc"}
"australia:lord_howe"{"auldh"}
"australia:melbourne"{"aumel"}
"australia:perth"{"auper"}
"australia:sydney"{"ausyd"}
"etc:gmt"{"utc"}
"etc:gmt+1"{"utcw01"}
"etc:gmt+10"{"utcw10"}
"etc:gmt+11"{"utcw11"}
"etc:gmt+12"{"utcw12"}
"etc:gmt+2"{"utcw02"}
"etc:gmt+3"{"utcw03"}
"etc:gmt+4"{"utcw04"}
"etc:gmt+5"{"utcw05"}
"etc:gmt+6"{"utcw06"}
"etc:gmt+7"{"utcw07"}
"etc:gmt+8"{"utcw08"}
"etc:gmt+9"{"utcw09"}
"etc:gmt-1"{"utce01"}
"etc:gmt-10"{"utce10"}
"etc:gmt-11"{"utce11"}
"etc:gmt-12"{"utce12"}
"etc:gmt-13"{"utce13"}
"etc:gmt-14"{"utce14"}
"etc:gmt-2"{"utce02"}
"etc:gmt-3"{"utce03"}
"etc:gmt-4"{"utce04"}
"etc:gmt-5"{"utce05"}
"etc:gmt-6"{"utce06"}
"etc:gmt-7"{"utce07"}
"etc:gmt-8"{"utce08"}
"etc:gmt-9"{"utce09"}
"etc:unknown"{"unk"}
"europe:amsterdam"{"nlams"}
"europe:andorra"{"adalv"}
"europe:athens"{"grath"}
"europe:belgrade"{"rsbeg"}
"europe:berlin"{"deber"}
"europe:bratislava"{"skbts"}
"europe:brussels"{"bebru"}
"europe:bucharest"{"robuh"}
"europe:budapest"{"hubud"}
"europe:chisinau"{"mdkiv"}
"europe:copenhagen"{"dkcph"}
"europe:dublin"{"iedub"}
"europe:gibraltar"{"gigib"}
"europe:guernsey"{"gggci"}
"europe:helsinki"{"fihel"}
"europe:isle_of_man"{"imdgs"}
"europe:istanbul"{"trist"}
"europe:jersey"{"jesth"}
"europe:kaliningrad"{"rukgd"}
"europe:kiev"{"uaiev"}
"europe:lisbon"{"ptlis"}
"europe:ljubljana"{"silju"}
"europe:london"{"gblon"}
"europe:luxembourg"{"lulux"}
"europe:madrid"{"esmad"}
"europe:malta"{"mtmla"}
"europe:mariehamn"{"fimhq"}
"europe:minsk"{"bymsq"}
"europe:monaco"{"mcmon"}
"europe:moscow"{"rumow"}
"europe:oslo"{"noosl"}
"europe:paris"{"frpar"}
"europe:podgorica"{"metgd"}
"europe:prague"{"czprg"}
"europe:riga"{"lvrix"}
"europe:rome"{"itrom"}
"europe:samara"{"rukuf"}
"europe:san_marino"{"smsai"}
"europe:sarajevo"{"basjj"}
"europe:simferopol"{"uasip"}
"europe:skopje"{"mkskp"}
"europe:sofia"{"bgsof"}
"europe:stockholm"{"sesto"}
"europe:tallinn"{"eetll"}
"europe:tirane"{"altia"}
"europe:uzhgorod"{"uauzh"}
"europe:vaduz"{"livdz"}
"europe:vatican"{"vavat"}
"europe:vienna"{"atvie"}
"europe:vilnius"{"ltvno"}
"europe:volgograd"{"ruvog"}
"europe:warsaw"{"plwaw"}
"europe:zagreb"{"hrzag"}
"europe:zaporozhye"{"uaozh"}
"europe:zurich"{"chzrh"}
"indian:antananarivo"{"mgtnr"}
"indian:chagos"{"iodga"}
"indian:christmas"{"cxxch"}
"indian:cocos"{"cccck"}
"indian:comoro"{"kmyva"}
"indian:kerguelen"{"tfpfr"}
"indian:mahe"{"scmaw"}
"indian:maldives"{"mvmle"}
"indian:mauritius"{"muplu"}
"indian:mayotte"{"ytmam"}
"indian:reunion"{"rereu"}
"pacific:apia"{"wsapw"}
"pacific:auckland"{"nzakl"}
"pacific:chatham"{"nzcht"}
"pacific:easter"{"clipc"}
"pacific:efate"{"vuvli"}
"pacific:enderbury"{"kipho"}
"pacific:fakaofo"{"tkfko"}
"pacific:fiji"{"fjsuv"}
"pacific:funafuti"{"tvfun"}
"pacific:galapagos"{"ecgps"}
"pacific:gambier"{"pfgmr"}
"pacific:guadalcanal"{"sbhir"}
"pacific:guam"{"gugum"}
"pacific:honolulu"{"ushnl"}
"pacific:johnston"{"umjon"}
"pacific:kiritimati"{"kicxi"}
"pacific:kosrae"{"fmksa"}
"pacific:kwajalein"{"mhkwa"}
"pacific:majuro"{"mhmaj"}
"pacific:marquesas"{"pfnhv"}
"pacific:midway"{"ummdy"}
"pacific:nauru"{"nrinu"}
"pacific:niue"{"nuiue"}
"pacific:norfolk"{"nfnlk"}
"pacific:noumea"{"ncnou"}
"pacific:pago_pago"{"asppg"}
"pacific:palau"{"pwror"}
"pacific:pitcairn"{"pnpcn"}
"pacific:ponape"{"fmpni"}
"pacific:port_moresby"{"pgpom"}
"pacific:rarotonga"{"ckrar"}
"pacific:saipan"{"mpspn"}
"pacific:tahiti"{"pfppt"}
"pacific:tarawa"{"kitrw"}
"pacific:tongatapu"{"totbu"}
"pacific:truk"{"fmtkk"}
"pacific:wake"{"umawk"}
"pacific:wallis"{"wfmau"}
}
}
calendarPreferenceData{
001{
"gregorian",
}
AE{
"gregorian",
"islamic",
"islamic-civil",
}
AF{
"gregorian",
"persian",
"islamic",
"islamic-civil",
}
BH{
"gregorian",
"islamic",
"islamic-civil",
}
CN{
"gregorian",
"chinese",
}
CX{
"gregorian",
"chinese",
}
DJ{
"gregorian",
"islamic",
"islamic-civil",
}
DZ{
"gregorian",
"islamic",
"islamic-civil",
}
EG{
"gregorian",
"coptic",
"islamic",
"islamic-civil",
}
EH{
"gregorian",
"islamic",
"islamic-civil",
}
ER{
"gregorian",
"islamic",
"islamic-civil",
}
ET{
"gregorian",
"ethiopic",
}
HK{
"gregorian",
"chinese",
}
IL{
"gregorian",
"hebrew",
"islamic",
"islamic-civil",
}
IN{
"gregorian",
"indian",
}
IQ{
"gregorian",
"islamic",
"islamic-civil",
}
IR{
"gregorian",
"persian",
"islamic",
"islamic-civil",
}
JO{
"gregorian",
"islamic",
"islamic-civil",
}
JP{
"gregorian",
"japanese",
}
KM{
"gregorian",
"islamic",
"islamic-civil",
}
KW{
"gregorian",
"islamic",
"islamic-civil",
}
LB{
"gregorian",
"islamic",
"islamic-civil",
}
LY{
"gregorian",
"islamic",
"islamic-civil",
}
MA{
"gregorian",
"islamic",
"islamic-civil",
}
MO{
"gregorian",
"chinese",
}
MR{
"gregorian",
"islamic",
"islamic-civil",
}
OM{
"gregorian",
"islamic",
"islamic-civil",
}
PS{
"gregorian",
"islamic",
"islamic-civil",
}
QA{
"gregorian",
"islamic",
"islamic-civil",
}
SA{
"gregorian",
"islamic",
"islamic-civil",
}
SD{
"gregorian",
"islamic",
"islamic-civil",
}
SG{
"gregorian",
"chinese",
}
SY{
"gregorian",
"islamic",
"islamic-civil",
}
TD{
"gregorian",
"islamic",
"islamic-civil",
}
TH{
"buddhist",
"gregorian",
}
TN{
"gregorian",
"islamic",
"islamic-civil",
}
TW{
"gregorian",
"roc",
"chinese",
}
YE{
"gregorian",
"islamic",
"islamic-civil",
}
}
cldrVersion{"1.7"}
@ -5288,6 +5865,7 @@ supplementalData:table(nofallback){
secondary{
territories{
"CN",
"IN",
}
}
}

View file

@ -560,51 +560,6 @@ static const char * const CAL_TYPES[] = {
NULL
};
#define CALPREF_LENGTH 39
#define CALPREF_MAX_NUM_KEYWORDS 4
static const char * const CALPREF[CALPREF_LENGTH][CALPREF_MAX_NUM_KEYWORDS+1] = {
{ "001", "gregorian", NULL, NULL, NULL },
{ "AE", "gregorian", "islamic", "islamic-civil", NULL },
{ "AF", "gregorian", "islamic", "islamic-civil", "persian" },
{ "BH", "gregorian", "islamic", "islamic-civil", NULL },
{ "CN", "gregorian", "chinese", NULL, NULL },
{ "CX", "gregorian", "chinese", NULL, NULL },
{ "DJ", "gregorian", "islamic", "islamic-civil", NULL },
{ "DZ", "gregorian", "islamic", "islamic-civil", NULL },
{ "EG", "gregorian", "islamic", "islamic-civil", "coptic" },
{ "EH", "gregorian", "islamic", "islamic-civil", NULL },
{ "ER", "gregorian", "islamic", "islamic-civil", NULL },
{ "ET", "gregorian", "ethiopic", "ethiopic-amete-alem", NULL },
{ "HK", "gregorian", "chinese", NULL, NULL },
{ "IL", "gregorian", "hebrew", NULL, NULL },
{ "IL", "gregorian", "islamic", "islamic-civil", NULL },
{ "IN", "gregorian", "indian", NULL, NULL },
{ "IQ", "gregorian", "islamic", "islamic-civil", NULL },
{ "IR", "gregorian", "islamic", "islamic-civil", "persian" },
{ "JO", "gregorian", "islamic", "islamic-civil", NULL },
{ "JP", "gregorian", "japanese", NULL, NULL },
{ "KM", "gregorian", "islamic", "islamic-civil", NULL },
{ "KW", "gregorian", "islamic", "islamic-civil", NULL },
{ "LB", "gregorian", "islamic", "islamic-civil", NULL },
{ "LY", "gregorian", "islamic", "islamic-civil", NULL },
{ "MA", "gregorian", "islamic", "islamic-civil", NULL },
{ "MO", "gregorian", "chinese", NULL, NULL },
{ "MR", "gregorian", "islamic", "islamic-civil", NULL },
{ "OM", "gregorian", "islamic", "islamic-civil", NULL },
{ "PS", "gregorian", "islamic", "islamic-civil", NULL },
{ "QA", "gregorian", "islamic", "islamic-civil", NULL },
{ "SA", "gregorian", "islamic", "islamic-civil", NULL },
{ "SD", "gregorian", "islamic", "islamic-civil", NULL },
{ "SG", "gregorian", "chinese", NULL, NULL },
{ "SY", "gregorian", "islamic", "islamic-civil", NULL },
{ "TD", "gregorian", "islamic", "islamic-civil", NULL },
{ "TH", "buddhist", "gregorian", NULL, NULL },
{ "TN", "gregorian", "islamic", "islamic-civil", NULL },
{ "TW", "gregorian", "roc", "chinese", NULL },
{ "YE", "gregorian", "islamic", "islamic-civl", NULL }
};
#define MAX_LOC_SIZE_KEYWORD_VALUES 64
#define MAX_LENGTH_KEYWORD_VALUE 64
@ -623,55 +578,71 @@ ucal_getKeywordValuesForLocale(const char *key, const char* locale, UBool common
}
// Read preferred calendar values from supplementalData calendarPreference
UList *values = ulist_createEmptyList(status);
UEnumeration *en = (UEnumeration *)uprv_malloc(sizeof(UEnumeration));
if (U_FAILURE(*status) || en == NULL) {
if (en == NULL) {
*status = U_MEMORY_ALLOCATION_ERROR;
} else {
uprv_free(en);
}
ulist_deleteList(values);
return NULL;
UResourceBundle *rb = ures_openDirect(NULL, "supplementalData", status);
ures_getByKey(rb, "calendarPreferenceData", rb, status);
UResourceBundle *order = ures_getByKey(rb, prefRegion, NULL, status);
if (*status == U_MISSING_RESOURCE_ERROR && rb != NULL) {
*status = U_ZERO_ERROR;
order = ures_getByKey(rb, "001", NULL, status);
}
memcpy(en, &defaultKeywordValues, sizeof(UEnumeration));
en->context = values;
int32_t preferences = 0;
for (int32_t i = 0; i < CALPREF_LENGTH; i++) {
if (uprv_strcmp(prefRegion, CALPREF[i][0]) == 0) {
preferences = i;
break;
}
}
for (int32_t i = 1; CALPREF[preferences][i] != NULL && i <= CALPREF_MAX_NUM_KEYWORDS; i++) {
if (!ulist_containsString(values, CALPREF[preferences][i], uprv_strlen(CALPREF[preferences][i]))) {
ulist_addItemEndList(values, CALPREF[preferences][i], FALSE, status);
if (U_FAILURE(*status)) {
break;
}
}
}
if (U_SUCCESS(*status) && !commonlyUsed) {
// If not commonlyUsed, add other available values
for (int32_t i = 0; CAL_TYPES[i] != NULL; i++) {
if (!ulist_containsString(values, CAL_TYPES[i], uprv_strlen(CAL_TYPES[i]))) {
ulist_addItemEndList(values, CAL_TYPES[i], FALSE, status);
// Create a list of calendar type strings
UList *values = NULL;
if (U_SUCCESS(*status)) {
values = ulist_createEmptyList(status);
if (U_SUCCESS(*status)) {
for (int i = 0; i < ures_getSize(order); i++) {
int32_t len;
const UChar *type = ures_getStringByIndex(order, i, &len, status);
char *caltype = (char*)uprv_malloc(len + 1);
if (caltype == NULL) {
*status = U_MEMORY_ALLOCATION_ERROR;
break;
}
u_UCharsToChars(type, caltype, len);
*(caltype + len) = 0;
ulist_addItemEndList(values, caltype, TRUE, status);
if (U_FAILURE(*status)) {
break;
}
}
if (U_SUCCESS(*status) && !commonlyUsed) {
// If not commonlyUsed, add other available values
for (int32_t i = 0; CAL_TYPES[i] != NULL; i++) {
if (!ulist_containsString(values, CAL_TYPES[i], uprv_strlen(CAL_TYPES[i]))) {
ulist_addItemEndList(values, CAL_TYPES[i], FALSE, status);
if (U_FAILURE(*status)) {
break;
}
}
}
}
if (U_FAILURE(*status)) {
ulist_deleteList(values);
values = NULL;
}
}
}
if (U_FAILURE(*status)) {
uenum_close(en);
ures_close(order);
ures_close(rb);
if (U_FAILURE(*status) || values == NULL) {
return NULL;
}
// Create string enumeration
UEnumeration *en = (UEnumeration*)uprv_malloc(sizeof(UEnumeration));
if (en == NULL) {
*status = U_MEMORY_ALLOCATION_ERROR;
ulist_deleteList(values);
return NULL;
}
ulist_resetList(values);
memcpy(en, &defaultKeywordValues, sizeof(UEnumeration));
en->context = values;
return en;
}

View file

@ -1390,7 +1390,7 @@ void TestGregorianChange() {
}
static void TestGetKeywordValuesForLocale() {
#define PREFERRED_SIZE 13
#define PREFERRED_SIZE 15
#define MAX_NUMBER_OF_KEYWORDS 4
const char *PREFERRED[PREFERRED_SIZE][MAX_NUMBER_OF_KEYWORDS+1] = {
{ "root", "gregorian", NULL, NULL, NULL },
@ -1400,14 +1400,16 @@ static void TestGetKeywordValuesForLocale() {
{ "th_TH", "buddhist", "gregorian", NULL, NULL },
{ "und_TH", "buddhist", "gregorian", NULL, NULL },
{ "en_TH", "buddhist", "gregorian", NULL, NULL },
{ "he_IL", "gregorian", "hebrew", NULL, NULL },
{ "ar_EG", "gregorian", "islamic", "islamic-civil", "coptic" },
{ "he_IL", "gregorian", "hebrew", "islamic", "islamic-civil" },
{ "ar_EG", "gregorian", "coptic", "islamic", "islamic-civil" },
{ "ja", "gregorian", "japanese", NULL, NULL },
{ "ps_Guru_IN", "gregorian", "indian", NULL, NULL },
{ "th@calendar=gregorian", "buddhist", "gregorian", NULL, NULL },
{ "en@calendar=islamic", "gregorian", NULL, NULL, NULL },
{ "zh_TW", "gregorian", "roc", "chinese", NULL },
{ "ar_IR", "gregorian", "persian", "islamic", "islamic-civil" },
};
const int32_t EXPECTED_SIZE[PREFERRED_SIZE] = { 1, 1, 1, 1, 2, 2, 2, 2, 4, 2, 2, 2, 1 };
const int32_t EXPECTED_SIZE[PREFERRED_SIZE] = { 1, 1, 1, 1, 2, 2, 2, 4, 4, 2, 2, 2, 1, 3, 4 };
UErrorCode status = U_ZERO_ERROR;
int32_t i, size, j;
UEnumeration *all, *pref;