Bug 837961 - Part 1: Add scripts to update tzdata in ICU data files. r=Waldo

This commit is contained in:
André Bargull 2016-10-06 22:37:20 -07:00
parent 96a41c3380
commit c52b3dc6ca
22 changed files with 9920 additions and 18 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,606 @@
// ***************************************************************************
// *
// * Copyright (C) 2014 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/bcp47/timezone.xml
// *
// ***************************************************************************
timezoneTypes:table(nofallback){
bcpTypeAlias{
tz{
aqams{"nzakl"}
cnckg{"cnsha"}
cnhrb{"cnsha"}
cnkhg{"cnurc"}
usnavajo{"usden"}
}
}
typeAlias{
timezone{
"Africa:Asmara"{"Africa/Asmera"}
"Africa:Timbuktu"{"Africa/Bamako"}
"America:Argentina:Buenos_Aires"{"America/Buenos_Aires"}
"America:Argentina:Catamarca"{"America/Catamarca"}
"America:Argentina:ComodRivadavia"{"America/Catamarca"}
"America:Argentina:Cordoba"{"America/Cordoba"}
"America:Argentina:Jujuy"{"America/Jujuy"}
"America:Argentina:Mendoza"{"America/Mendoza"}
"America:Atikokan"{"America/Coral_Harbour"}
"America:Atka"{"America/Adak"}
"America:Ensenada"{"America/Tijuana"}
"America:Fort_Wayne"{"America/Indianapolis"}
"America:Indiana:Indianapolis"{"America/Indianapolis"}
"America:Kentucky:Louisville"{"America/Louisville"}
"America:Knox_IN"{"America/Indiana/Knox"}
"America:Porto_Acre"{"America/Rio_Branco"}
"America:Rosario"{"America/Cordoba"}
"America:Shiprock"{"America/Denver"}
"America:Virgin"{"America/St_Thomas"}
"Antarctica:South_Pole"{"Pacific/Auckland"}
"Asia:Ashkhabad"{"Asia/Ashgabat"}
"Asia:Chongqing"{"Asia/Shanghai"}
"Asia:Chungking"{"Asia/Shanghai"}
"Asia:Dacca"{"Asia/Dhaka"}
"Asia:Harbin"{"Asia/Shanghai"}
"Asia:Ho_Chi_Minh"{"Asia/Saigon"}
"Asia:Istanbul"{"Europe/Istanbul"}
"Asia:Kashgar"{"Asia/Urumqi"}
"Asia:Kathmandu"{"Asia/Katmandu"}
"Asia:Kolkata"{"Asia/Calcutta"}
"Asia:Macao"{"Asia/Macau"}
"Asia:Tel_Aviv"{"Asia/Jerusalem"}
"Asia:Thimbu"{"Asia/Thimphu"}
"Asia:Ujung_Pandang"{"Asia/Makassar"}
"Asia:Ulan_Bator"{"Asia/Ulaanbaatar"}
"Atlantic:Faroe"{"Atlantic/Faeroe"}
"Atlantic:Jan_Mayen"{"Arctic/Longyearbyen"}
"Australia:ACT"{"Australia/Sydney"}
"Australia:Canberra"{"Australia/Sydney"}
"Australia:LHI"{"Australia/Lord_Howe"}
"Australia:NSW"{"Australia/Sydney"}
"Australia:North"{"Australia/Darwin"}
"Australia:Queensland"{"Australia/Brisbane"}
"Australia:South"{"Australia/Adelaide"}
"Australia:Tasmania"{"Australia/Hobart"}
"Australia:Victoria"{"Australia/Melbourne"}
"Australia:West"{"Australia/Perth"}
"Australia:Yancowinna"{"Australia/Broken_Hill"}
"Brazil:Acre"{"America/Rio_Branco"}
"Brazil:DeNoronha"{"America/Noronha"}
"Brazil:East"{"America/Sao_Paulo"}
"Brazil:West"{"America/Manaus"}
"Canada:Atlantic"{"America/Halifax"}
"Canada:Central"{"America/Winnipeg"}
"Canada:East-Saskatchewan"{"America/Regina"}
"Canada:Eastern"{"America/Toronto"}
"Canada:Mountain"{"America/Edmonton"}
"Canada:Newfoundland"{"America/St_Johns"}
"Canada:Pacific"{"America/Vancouver"}
"Canada:Saskatchewan"{"America/Regina"}
"Canada:Yukon"{"America/Whitehorse"}
"Chile:Continental"{"America/Santiago"}
"Chile:EasterIsland"{"Pacific/Easter"}
"Etc:GMT+0"{"Etc/GMT"}
"Etc:GMT-0"{"Etc/GMT"}
"Etc:GMT0"{"Etc/GMT"}
"Etc:Greenwich"{"Etc/GMT"}
"Etc:UCT"{"Etc/GMT"}
"Etc:UTC"{"Etc/GMT"}
"Etc:Universal"{"Etc/GMT"}
"Etc:Zulu"{"Etc/GMT"}
"Europe:Belfast"{"Europe/London"}
"Europe:Nicosia"{"Asia/Nicosia"}
"Europe:Tiraspol"{"Europe/Chisinau"}
"Mexico:BajaNorte"{"America/Tijuana"}
"Mexico:BajaSur"{"America/Mazatlan"}
"Mexico:General"{"America/Mexico_City"}
"Pacific:Chuuk"{"Pacific/Truk"}
"Pacific:Pohnpei"{"Pacific/Ponape"}
"Pacific:Samoa"{"Pacific/Pago_Pago"}
"Pacific:Yap"{"Pacific/Truk"}
"US:Alaska"{"America/Anchorage"}
"US:Aleutian"{"America/Adak"}
"US:Arizona"{"America/Phoenix"}
"US:Central"{"America/Chicago"}
"US:East-Indiana"{"America/Indianapolis"}
"US:Eastern"{"America/New_York"}
"US:Hawaii"{"Pacific/Honolulu"}
"US:Indiana-Starke"{"America/Indiana/Knox"}
"US:Michigan"{"America/Detroit"}
"US:Mountain"{"America/Denver"}
"US:Pacific"{"America/Los_Angeles"}
"US:Pacific-New"{"America/Los_Angeles"}
"US:Samoa"{"Pacific/Pago_Pago"}
Cuba{"America/Havana"}
EST{"Etc/GMT+5"}
Egypt{"Africa/Cairo"}
Eire{"Europe/Dublin"}
GB{"Europe/London"}
GB-Eire{"Europe/London"}
GMT{"Etc/GMT"}
GMT+0{"Etc/GMT"}
GMT-0{"Etc/GMT"}
GMT0{"Etc/GMT"}
Greenwich{"Etc/GMT"}
HST{"Etc/GMT+10"}
Hongkong{"Asia/Hong_Kong"}
Iceland{"Atlantic/Reykjavik"}
Iran{"Asia/Tehran"}
Israel{"Asia/Jerusalem"}
Jamaica{"America/Jamaica"}
Japan{"Asia/Tokyo"}
Kwajalein{"Pacific/Kwajalein"}
Libya{"Africa/Tripoli"}
MST{"Etc/GMT+7"}
NZ{"Pacific/Auckland"}
NZ-CHAT{"Pacific/Chatham"}
Navajo{"America/Denver"}
PRC{"Asia/Shanghai"}
Poland{"Europe/Warsaw"}
Portugal{"Europe/Lisbon"}
ROC{"Asia/Taipei"}
ROK{"Asia/Seoul"}
Singapore{"Asia/Singapore"}
Turkey{"Europe/Istanbul"}
UCT{"Etc/GMT"}
UTC{"Etc/GMT"}
Universal{"Etc/GMT"}
W-SU{"Europe/Moscow"}
Zulu{"Etc/GMT"}
}
}
typeMap{
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:Juba"{"ssjub"}
"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:Bahia_Banderas"{"mxpvr"}
"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:Creston"{"cacfq"}
"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:Kralendijk"{"bqkra"}
"America:La_Paz"{"bolpb"}
"America:Lima"{"pelim"}
"America:Los_Angeles"{"uslax"}
"America:Louisville"{"uslui"}
"America:Lower_Princes"{"sxphi"}
"America:Maceio"{"brmcz"}
"America:Managua"{"nimga"}
"America:Manaus"{"brmao"}
"America:Marigot"{"gpmsb"}
"America:Martinique"{"mqfdf"}
"America:Matamoros"{"mxmam"}
"America:Mazatlan"{"mxmzt"}
"America:Mendoza"{"armdz"}
"America:Menominee"{"usmnm"}
"America:Merida"{"mxmid"}
"America:Metlakatla"{"usmtm"}
"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"{"canpg"}
"America:Nome"{"usome"}
"America:Noronha"{"brfen"}
"America:North_Dakota:Beulah"{"usxul"}
"America:North_Dakota:Center"{"usndcnt"}
"America:North_Dakota:New_Salem"{"usndnsl"}
"America:Ojinaga"{"mxoji"}
"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:Santa_Isabel"{"mxstis"}
"America:Santarem"{"brstm"}
"America:Santiago"{"clscl"}
"America:Santo_Domingo"{"dosdq"}
"America:Sao_Paulo"{"brsao"}
"America:Scoresbysund"{"globy"}
"America:Sitka"{"ussit"}
"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:Macquarie"{"aumqi"}
"Antarctica:Mawson"{"aqmaw"}
"Antarctica:McMurdo"{"aqmcm"}
"Antarctica:Palmer"{"aqplm"}
"Antarctica:Rothera"{"aqrot"}
"Antarctica:Syowa"{"aqsyw"}
"Antarctica:Troll"{"aqtrl"}
"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:Chita"{"ruchita"}
"Asia:Choibalsan"{"mncoq"}
"Asia:Colombo"{"lkcmb"}
"Asia:Damascus"{"sydam"}
"Asia:Dhaka"{"bddac"}
"Asia:Dili"{"tldil"}
"Asia:Dubai"{"aedxb"}
"Asia:Dushanbe"{"tjdyu"}
"Asia:Gaza"{"gaza"}
"Asia:Hebron"{"hebron"}
"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:Katmandu"{"npktm"}
"Asia:Khandyga"{"rukhndg"}
"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:Novokuznetsk"{"runoz"}
"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:Srednekolymsk"{"rusred"}
"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:Ust-Nera"{"ruunera"}
"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:Busingen"{"debsngn"}
"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:Bougainville"{"pgraw"}
"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"}
CST6CDT{"cst6cdt"}
EST5EDT{"est5edt"}
MST7MDT{"mst7mdt"}
PST8PDT{"pst8pdt"}
}
}
}

View File

@ -0,0 +1,701 @@
// ***************************************************************************
// *
// * Copyright (C) 2015 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/windowsZones.xml
// *
// ***************************************************************************
windowsZones:table(nofallback){
mapTimezones{
"AUS Central Standard Time"{
001{"Australia/Darwin"}
AU{"Australia/Darwin"}
}
"AUS Eastern Standard Time"{
001{"Australia/Sydney"}
AU{"Australia/Sydney Australia/Melbourne"}
}
"Afghanistan Standard Time"{
001{"Asia/Kabul"}
AF{"Asia/Kabul"}
}
"Alaskan Standard Time"{
001{"America/Anchorage"}
US{
"America/Anchorage America/Juneau America/Nome America/Sitka America/"
"Yakutat"
}
}
"Arab Standard Time"{
001{"Asia/Riyadh"}
BH{"Asia/Bahrain"}
KW{"Asia/Kuwait"}
QA{"Asia/Qatar"}
SA{"Asia/Riyadh"}
YE{"Asia/Aden"}
}
"Arabian Standard Time"{
001{"Asia/Dubai"}
AE{"Asia/Dubai"}
OM{"Asia/Muscat"}
ZZ{"Etc/GMT-4"}
}
"Arabic Standard Time"{
001{"Asia/Baghdad"}
IQ{"Asia/Baghdad"}
}
"Argentina Standard Time"{
001{"America/Buenos_Aires"}
AR{
"America/Buenos_Aires America/Argentina/La_Rioja America/Argentina/Ri"
"o_Gallegos America/Argentina/Salta America/Argentina/San_Juan Americ"
"a/Argentina/San_Luis America/Argentina/Tucuman America/Argentina/Ush"
"uaia America/Catamarca America/Cordoba America/Jujuy America/Mendoza"
}
}
"Atlantic Standard Time"{
001{"America/Halifax"}
BM{"Atlantic/Bermuda"}
CA{"America/Halifax America/Glace_Bay America/Goose_Bay America/Moncton"}
GL{"America/Thule"}
}
"Azerbaijan Standard Time"{
001{"Asia/Baku"}
AZ{"Asia/Baku"}
}
"Azores Standard Time"{
001{"Atlantic/Azores"}
GL{"America/Scoresbysund"}
PT{"Atlantic/Azores"}
}
"Bahia Standard Time"{
001{"America/Bahia"}
BR{"America/Bahia"}
}
"Bangladesh Standard Time"{
001{"Asia/Dhaka"}
BD{"Asia/Dhaka"}
BT{"Asia/Thimphu"}
}
"Belarus Standard Time"{
001{"Europe/Minsk"}
BY{"Europe/Minsk"}
}
"Canada Central Standard Time"{
001{"America/Regina"}
CA{"America/Regina America/Swift_Current"}
}
"Cape Verde Standard Time"{
001{"Atlantic/Cape_Verde"}
CV{"Atlantic/Cape_Verde"}
ZZ{"Etc/GMT+1"}
}
"Caucasus Standard Time"{
001{"Asia/Yerevan"}
AM{"Asia/Yerevan"}
}
"Cen. Australia Standard Time"{
001{"Australia/Adelaide"}
AU{"Australia/Adelaide Australia/Broken_Hill"}
}
"Central America Standard Time"{
001{"America/Guatemala"}
BZ{"America/Belize"}
CR{"America/Costa_Rica"}
EC{"Pacific/Galapagos"}
GT{"America/Guatemala"}
HN{"America/Tegucigalpa"}
NI{"America/Managua"}
SV{"America/El_Salvador"}
ZZ{"Etc/GMT+6"}
}
"Central Asia Standard Time"{
001{"Asia/Almaty"}
AQ{"Antarctica/Vostok"}
CN{"Asia/Urumqi"}
IO{"Indian/Chagos"}
KG{"Asia/Bishkek"}
KZ{"Asia/Almaty Asia/Qyzylorda"}
ZZ{"Etc/GMT-6"}
}
"Central Brazilian Standard Time"{
001{"America/Cuiaba"}
BR{"America/Cuiaba America/Campo_Grande"}
}
"Central Europe Standard Time"{
001{"Europe/Budapest"}
AL{"Europe/Tirane"}
CZ{"Europe/Prague"}
HU{"Europe/Budapest"}
ME{"Europe/Podgorica"}
RS{"Europe/Belgrade"}
SI{"Europe/Ljubljana"}
SK{"Europe/Bratislava"}
}
"Central European Standard Time"{
001{"Europe/Warsaw"}
BA{"Europe/Sarajevo"}
HR{"Europe/Zagreb"}
MK{"Europe/Skopje"}
PL{"Europe/Warsaw"}
}
"Central Pacific Standard Time"{
001{"Pacific/Guadalcanal"}
AU{"Antarctica/Macquarie"}
FM{"Pacific/Ponape Pacific/Kosrae"}
NC{"Pacific/Noumea"}
PG{"Pacific/Bougainville"}
SB{"Pacific/Guadalcanal"}
VU{"Pacific/Efate"}
ZZ{"Etc/GMT-11"}
}
"Central Standard Time (Mexico)"{
001{"America/Mexico_City"}
MX{
"America/Mexico_City America/Bahia_Banderas America/Merida America/Mo"
"nterrey"
}
}
"Central Standard Time"{
001{"America/Chicago"}
CA{
"America/Winnipeg America/Rainy_River America/Rankin_Inlet America/Re"
"solute"
}
MX{"America/Matamoros"}
US{
"America/Chicago America/Indiana/Knox America/Indiana/Tell_City Ameri"
"ca/Menominee America/North_Dakota/Beulah America/North_Dakota/Center"
" America/North_Dakota/New_Salem"
}
ZZ{"CST6CDT"}
}
"China Standard Time"{
001{"Asia/Shanghai"}
CN{"Asia/Shanghai"}
HK{"Asia/Hong_Kong"}
MO{"Asia/Macau"}
}
"Dateline Standard Time"{
001{"Etc/GMT+12"}
ZZ{"Etc/GMT+12"}
}
"E. Africa Standard Time"{
001{"Africa/Nairobi"}
AQ{"Antarctica/Syowa"}
DJ{"Africa/Djibouti"}
ER{"Africa/Asmera"}
ET{"Africa/Addis_Ababa"}
KE{"Africa/Nairobi"}
KM{"Indian/Comoro"}
MG{"Indian/Antananarivo"}
SD{"Africa/Khartoum"}
SO{"Africa/Mogadishu"}
SS{"Africa/Juba"}
TZ{"Africa/Dar_es_Salaam"}
UG{"Africa/Kampala"}
YT{"Indian/Mayotte"}
ZZ{"Etc/GMT-3"}
}
"E. Australia Standard Time"{
001{"Australia/Brisbane"}
AU{"Australia/Brisbane Australia/Lindeman"}
}
"E. South America Standard Time"{
001{"America/Sao_Paulo"}
BR{"America/Sao_Paulo"}
}
"Eastern Standard Time (Mexico)"{
001{"America/Cancun"}
MX{"America/Cancun"}
}
"Eastern Standard Time"{
001{"America/New_York"}
BS{"America/Nassau"}
CA{
"America/Toronto America/Iqaluit America/Montreal America/Nipigon Ame"
"rica/Pangnirtung America/Thunder_Bay"
}
CU{"America/Havana"}
HT{"America/Port-au-Prince"}
US{
"America/New_York America/Detroit America/Indiana/Petersburg America/"
"Indiana/Vincennes America/Indiana/Winamac America/Kentucky/Monticell"
"o America/Louisville"
}
ZZ{"EST5EDT"}
}
"Egypt Standard Time"{
001{"Africa/Cairo"}
EG{"Africa/Cairo"}
}
"Ekaterinburg Standard Time"{
001{"Asia/Yekaterinburg"}
RU{"Asia/Yekaterinburg"}
}
"FLE Standard Time"{
001{"Europe/Kiev"}
AX{"Europe/Mariehamn"}
BG{"Europe/Sofia"}
EE{"Europe/Tallinn"}
FI{"Europe/Helsinki"}
LT{"Europe/Vilnius"}
LV{"Europe/Riga"}
UA{"Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye"}
}
"Fiji Standard Time"{
001{"Pacific/Fiji"}
FJ{"Pacific/Fiji"}
}
"GMT Standard Time"{
001{"Europe/London"}
ES{"Atlantic/Canary"}
FO{"Atlantic/Faeroe"}
GB{"Europe/London"}
GG{"Europe/Guernsey"}
IE{"Europe/Dublin"}
IM{"Europe/Isle_of_Man"}
JE{"Europe/Jersey"}
PT{"Europe/Lisbon Atlantic/Madeira"}
}
"GTB Standard Time"{
001{"Europe/Bucharest"}
CY{"Asia/Nicosia"}
GR{"Europe/Athens"}
MD{"Europe/Chisinau"}
RO{"Europe/Bucharest"}
}
"Georgian Standard Time"{
001{"Asia/Tbilisi"}
GE{"Asia/Tbilisi"}
}
"Greenland Standard Time"{
001{"America/Godthab"}
GL{"America/Godthab"}
}
"Greenwich Standard Time"{
001{"Atlantic/Reykjavik"}
BF{"Africa/Ouagadougou"}
CI{"Africa/Abidjan"}
GH{"Africa/Accra"}
GM{"Africa/Banjul"}
GN{"Africa/Conakry"}
GW{"Africa/Bissau"}
IS{"Atlantic/Reykjavik"}
LR{"Africa/Monrovia"}
ML{"Africa/Bamako"}
MR{"Africa/Nouakchott"}
SH{"Atlantic/St_Helena"}
SL{"Africa/Freetown"}
SN{"Africa/Dakar"}
ST{"Africa/Sao_Tome"}
TG{"Africa/Lome"}
}
"Hawaiian Standard Time"{
001{"Pacific/Honolulu"}
CK{"Pacific/Rarotonga"}
PF{"Pacific/Tahiti"}
UM{"Pacific/Johnston"}
US{"Pacific/Honolulu"}
ZZ{"Etc/GMT+10"}
}
"India Standard Time"{
001{"Asia/Calcutta"}
IN{"Asia/Calcutta"}
}
"Iran Standard Time"{
001{"Asia/Tehran"}
IR{"Asia/Tehran"}
}
"Israel Standard Time"{
001{"Asia/Jerusalem"}
IL{"Asia/Jerusalem"}
}
"Jordan Standard Time"{
001{"Asia/Amman"}
JO{"Asia/Amman"}
}
"Kaliningrad Standard Time"{
001{"Europe/Kaliningrad"}
RU{"Europe/Kaliningrad"}
}
"Korea Standard Time"{
001{"Asia/Seoul"}
KR{"Asia/Seoul"}
}
"Libya Standard Time"{
001{"Africa/Tripoli"}
LY{"Africa/Tripoli"}
}
"Line Islands Standard Time"{
001{"Pacific/Kiritimati"}
KI{"Pacific/Kiritimati"}
ZZ{"Etc/GMT-14"}
}
"Magadan Standard Time"{
001{"Asia/Magadan"}
RU{"Asia/Magadan"}
}
"Mauritius Standard Time"{
001{"Indian/Mauritius"}
MU{"Indian/Mauritius"}
RE{"Indian/Reunion"}
SC{"Indian/Mahe"}
}
"Middle East Standard Time"{
001{"Asia/Beirut"}
LB{"Asia/Beirut"}
}
"Montevideo Standard Time"{
001{"America/Montevideo"}
UY{"America/Montevideo"}
}
"Morocco Standard Time"{
001{"Africa/Casablanca"}
EH{"Africa/El_Aaiun"}
MA{"Africa/Casablanca"}
}
"Mountain Standard Time (Mexico)"{
001{"America/Chihuahua"}
MX{"America/Chihuahua America/Mazatlan"}
}
"Mountain Standard Time"{
001{"America/Denver"}
CA{
"America/Edmonton America/Cambridge_Bay America/Inuvik America/Yellow"
"knife"
}
MX{"America/Ojinaga"}
US{"America/Denver America/Boise"}
ZZ{"MST7MDT"}
}
"Myanmar Standard Time"{
001{"Asia/Rangoon"}
CC{"Indian/Cocos"}
MM{"Asia/Rangoon"}
}
"N. Central Asia Standard Time"{
001{"Asia/Novosibirsk"}
RU{"Asia/Novosibirsk Asia/Omsk"}
}
"Namibia Standard Time"{
001{"Africa/Windhoek"}
NA{"Africa/Windhoek"}
}
"Nepal Standard Time"{
001{"Asia/Katmandu"}
NP{"Asia/Katmandu"}
}
"New Zealand Standard Time"{
001{"Pacific/Auckland"}
AQ{"Antarctica/McMurdo"}
NZ{"Pacific/Auckland"}
}
"Newfoundland Standard Time"{
001{"America/St_Johns"}
CA{"America/St_Johns"}
}
"North Asia East Standard Time"{
001{"Asia/Irkutsk"}
RU{"Asia/Irkutsk Asia/Chita"}
}
"North Asia Standard Time"{
001{"Asia/Krasnoyarsk"}
RU{"Asia/Krasnoyarsk Asia/Novokuznetsk"}
}
"Pacific SA Standard Time"{
001{"America/Santiago"}
AQ{"Antarctica/Palmer"}
CL{"America/Santiago"}
}
"Pacific Standard Time (Mexico)"{
001{"America/Santa_Isabel"}
MX{"America/Santa_Isabel"}
}
"Pacific Standard Time"{
001{"America/Los_Angeles"}
CA{"America/Vancouver America/Dawson America/Whitehorse"}
MX{"America/Tijuana"}
US{"America/Los_Angeles"}
ZZ{"PST8PDT"}
}
"Pakistan Standard Time"{
001{"Asia/Karachi"}
PK{"Asia/Karachi"}
}
"Paraguay Standard Time"{
001{"America/Asuncion"}
PY{"America/Asuncion"}
}
"Romance Standard Time"{
001{"Europe/Paris"}
BE{"Europe/Brussels"}
DK{"Europe/Copenhagen"}
ES{"Europe/Madrid Africa/Ceuta"}
FR{"Europe/Paris"}
}
"Russia Time Zone 10"{
001{"Asia/Srednekolymsk"}
RU{"Asia/Srednekolymsk"}
}
"Russia Time Zone 11"{
001{"Asia/Kamchatka"}
RU{"Asia/Kamchatka Asia/Anadyr"}
}
"Russia Time Zone 3"{
001{"Europe/Samara"}
RU{"Europe/Samara"}
}
"Russian Standard Time"{
001{"Europe/Moscow"}
RU{"Europe/Moscow Europe/Simferopol Europe/Volgograd"}
}
"SA Eastern Standard Time"{
001{"America/Cayenne"}
AQ{"Antarctica/Rothera"}
BR{
"America/Fortaleza America/Araguaina America/Belem America/Maceio Ame"
"rica/Recife America/Santarem"
}
FK{"Atlantic/Stanley"}
GF{"America/Cayenne"}
SR{"America/Paramaribo"}
ZZ{"Etc/GMT+3"}
}
"SA Pacific Standard Time"{
001{"America/Bogota"}
BR{"America/Rio_Branco America/Eirunepe"}
CA{"America/Coral_Harbour"}
CO{"America/Bogota"}
EC{"America/Guayaquil"}
JM{"America/Jamaica"}
KY{"America/Cayman"}
PA{"America/Panama"}
PE{"America/Lima"}
ZZ{"Etc/GMT+5"}
}
"SA Western Standard Time"{
001{"America/La_Paz"}
AG{"America/Antigua"}
AI{"America/Anguilla"}
AW{"America/Aruba"}
BB{"America/Barbados"}
BL{"America/St_Barthelemy"}
BO{"America/La_Paz"}
BQ{"America/Kralendijk"}
BR{"America/Manaus America/Boa_Vista America/Porto_Velho"}
CA{"America/Blanc-Sablon"}
CW{"America/Curacao"}
DM{"America/Dominica"}
DO{"America/Santo_Domingo"}
GD{"America/Grenada"}
GP{"America/Guadeloupe"}
GY{"America/Guyana"}
KN{"America/St_Kitts"}
LC{"America/St_Lucia"}
MF{"America/Marigot"}
MQ{"America/Martinique"}
MS{"America/Montserrat"}
PR{"America/Puerto_Rico"}
SX{"America/Lower_Princes"}
TC{"America/Grand_Turk"}
TT{"America/Port_of_Spain"}
VC{"America/St_Vincent"}
VG{"America/Tortola"}
VI{"America/St_Thomas"}
ZZ{"Etc/GMT+4"}
}
"SE Asia Standard Time"{
001{"Asia/Bangkok"}
AQ{"Antarctica/Davis"}
CX{"Indian/Christmas"}
ID{"Asia/Jakarta Asia/Pontianak"}
KH{"Asia/Phnom_Penh"}
LA{"Asia/Vientiane"}
MN{"Asia/Hovd"}
TH{"Asia/Bangkok"}
VN{"Asia/Saigon"}
ZZ{"Etc/GMT-7"}
}
"Samoa Standard Time"{
001{"Pacific/Apia"}
WS{"Pacific/Apia"}
}
"Singapore Standard Time"{
001{"Asia/Singapore"}
BN{"Asia/Brunei"}
ID{"Asia/Makassar"}
MY{"Asia/Kuala_Lumpur Asia/Kuching"}
PH{"Asia/Manila"}
SG{"Asia/Singapore"}
ZZ{"Etc/GMT-8"}
}
"South Africa Standard Time"{
001{"Africa/Johannesburg"}
BI{"Africa/Bujumbura"}
BW{"Africa/Gaborone"}
CD{"Africa/Lubumbashi"}
LS{"Africa/Maseru"}
MW{"Africa/Blantyre"}
MZ{"Africa/Maputo"}
RW{"Africa/Kigali"}
SZ{"Africa/Mbabane"}
ZA{"Africa/Johannesburg"}
ZM{"Africa/Lusaka"}
ZW{"Africa/Harare"}
ZZ{"Etc/GMT-2"}
}
"Sri Lanka Standard Time"{
001{"Asia/Colombo"}
LK{"Asia/Colombo"}
}
"Syria Standard Time"{
001{"Asia/Damascus"}
SY{"Asia/Damascus"}
}
"Taipei Standard Time"{
001{"Asia/Taipei"}
TW{"Asia/Taipei"}
}
"Tasmania Standard Time"{
001{"Australia/Hobart"}
AU{"Australia/Hobart Australia/Currie"}
}
"Tokyo Standard Time"{
001{"Asia/Tokyo"}
ID{"Asia/Jayapura"}
JP{"Asia/Tokyo"}
PW{"Pacific/Palau"}
TL{"Asia/Dili"}
ZZ{"Etc/GMT-9"}
}
"Tonga Standard Time"{
001{"Pacific/Tongatapu"}
KI{"Pacific/Enderbury"}
TK{"Pacific/Fakaofo"}
TO{"Pacific/Tongatapu"}
ZZ{"Etc/GMT-13"}
}
"Turkey Standard Time"{
001{"Europe/Istanbul"}
TR{"Europe/Istanbul"}
}
"US Eastern Standard Time"{
001{"America/Indianapolis"}
US{"America/Indianapolis America/Indiana/Marengo America/Indiana/Vevay"}
}
"US Mountain Standard Time"{
001{"America/Phoenix"}
CA{"America/Dawson_Creek America/Creston"}
MX{"America/Hermosillo"}
US{"America/Phoenix"}
ZZ{"Etc/GMT+7"}
}
"UTC"{
001{"Etc/GMT"}
GL{"America/Danmarkshavn"}
ZZ{"Etc/GMT"}
}
"UTC+12"{
001{"Etc/GMT-12"}
KI{"Pacific/Tarawa"}
MH{"Pacific/Majuro Pacific/Kwajalein"}
NR{"Pacific/Nauru"}
TV{"Pacific/Funafuti"}
UM{"Pacific/Wake"}
WF{"Pacific/Wallis"}
ZZ{"Etc/GMT-12"}
}
"UTC-02"{
001{"Etc/GMT+2"}
BR{"America/Noronha"}
GS{"Atlantic/South_Georgia"}
ZZ{"Etc/GMT+2"}
}
"UTC-11"{
001{"Etc/GMT+11"}
AS{"Pacific/Pago_Pago"}
NU{"Pacific/Niue"}
UM{"Pacific/Midway"}
ZZ{"Etc/GMT+11"}
}
"Ulaanbaatar Standard Time"{
001{"Asia/Ulaanbaatar"}
MN{"Asia/Ulaanbaatar Asia/Choibalsan"}
}
"Venezuela Standard Time"{
001{"America/Caracas"}
VE{"America/Caracas"}
}
"Vladivostok Standard Time"{
001{"Asia/Vladivostok"}
RU{"Asia/Vladivostok Asia/Sakhalin Asia/Ust-Nera"}
}
"W. Australia Standard Time"{
001{"Australia/Perth"}
AQ{"Antarctica/Casey"}
AU{"Australia/Perth"}
}
"W. Central Africa Standard Time"{
001{"Africa/Lagos"}
AO{"Africa/Luanda"}
BJ{"Africa/Porto-Novo"}
CD{"Africa/Kinshasa"}
CF{"Africa/Bangui"}
CG{"Africa/Brazzaville"}
CM{"Africa/Douala"}
DZ{"Africa/Algiers"}
GA{"Africa/Libreville"}
GQ{"Africa/Malabo"}
NE{"Africa/Niamey"}
NG{"Africa/Lagos"}
TD{"Africa/Ndjamena"}
TN{"Africa/Tunis"}
ZZ{"Etc/GMT-1"}
}
"W. Europe Standard Time"{
001{"Europe/Berlin"}
AD{"Europe/Andorra"}
AT{"Europe/Vienna"}
CH{"Europe/Zurich"}
DE{"Europe/Berlin Europe/Busingen"}
GI{"Europe/Gibraltar"}
IT{"Europe/Rome"}
LI{"Europe/Vaduz"}
LU{"Europe/Luxembourg"}
MC{"Europe/Monaco"}
MT{"Europe/Malta"}
NL{"Europe/Amsterdam"}
NO{"Europe/Oslo"}
SE{"Europe/Stockholm"}
SJ{"Arctic/Longyearbyen"}
SM{"Europe/San_Marino"}
VA{"Europe/Vatican"}
}
"West Asia Standard Time"{
001{"Asia/Tashkent"}
AQ{"Antarctica/Mawson"}
KZ{"Asia/Oral Asia/Aqtau Asia/Aqtobe"}
MV{"Indian/Maldives"}
TF{"Indian/Kerguelen"}
TJ{"Asia/Dushanbe"}
TM{"Asia/Ashgabat"}
UZ{"Asia/Tashkent Asia/Samarkand"}
ZZ{"Etc/GMT-5"}
}
"West Pacific Standard Time"{
001{"Pacific/Port_Moresby"}
AQ{"Antarctica/DumontDUrville"}
FM{"Pacific/Truk"}
GU{"Pacific/Guam"}
MP{"Pacific/Saipan"}
PG{"Pacific/Port_Moresby"}
ZZ{"Etc/GMT-10"}
}
"Yakutsk Standard Time"{
001{"Asia/Yakutsk"}
RU{"Asia/Yakutsk Asia/Khandyga"}
}
}
}

File diff suppressed because it is too large Load Diff

10
intl/tzdata/SVN-INFO Normal file
View File

@ -0,0 +1,10 @@
Path: 44
URL: https://ssl.icu-project.org/repos/icu/data/trunk/tzdata/icunew/2015f/44
Relative URL: ^/data/trunk/tzdata/icunew/2015f/44
Repository Root: https://ssl.icu-project.org/repos/icu
Repository UUID: 251d0590-4201-4cf1-90de-194747b24ca1
Node Kind: directory
Last Changed Author: yoshito
Last Changed Rev: 37762
Last Changed Date: 2015-08-12 20:21:44 +0000 (Wed, 12 Aug 2015)

5
intl/tzdata/files.txt Normal file
View File

@ -0,0 +1,5 @@
# tzdata resources in icudt*.dat
zoneinfo64.res
windowsZones.res
timezoneTypes.res
metaZones.res

View File

@ -73,3 +73,6 @@ python ${topsrcdir}/js/src/tests/ecma_6/String/make-normalize-generateddata-inpu
python `dirname $0`/icu_sources_data.py $topsrcdir
hg addremove ${icu_dir} ${topsrcdir}/config/external/icu
# Check local tzdata version.
`dirname $0`/update-tzdata.sh -c

166
intl/update-tzdata.sh Executable file
View File

@ -0,0 +1,166 @@
#!/bin/sh
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
set -e
# Usage: update-tzdata.sh <tzdata version>
# E.g., for tzdata2016f: update-tzdata.sh 2016f
# Ensure that $Date$ in the checked-out svn files expands timezone-agnostically,
# so that this script's behavior is consistent when run from any time zone.
export TZ=UTC
# Also ensure SVN-INFO isn't localized.
export LANG=C
# Path to icupkg executable, typically located at $ICU_DIR/bin/icupkg.
icu_pkg=
# Force updates even when current tzdata is newer than the requested version.
force=false
# Dry run, doesn't run 'svn export' and 'icupkg'.
dry=false
# Compare ICU and local tzdata versions (used by update-icu.sh).
check_version=false
while getopts ce:fd opt
do
case "$opt" in
c) check_version=true;;
e) icu_pkg="$OPTARG";;
f) force=true;;
d) dry=true;;
\?)
echo >&2 "Usage: $0 [-e <path to icupkg>] [-f] [-d] <tzdata version>"
exit 1;;
esac
done
shift "$((OPTIND - 1))"
if [ $# -ne 1 -a $check_version = false ]; then
echo >&2 "Usage: $0 [-e <path to icupkg>] [-f] [-d] <tzdata version>"
exit 1
fi
tzdata_version=$1
icudata_dir=`dirname "$0"`/../config/external/icu/data
icu_dir=`dirname "$0"`/icu
tzdata_dir=`dirname "$0"`/tzdata
tzdata_files="${tzdata_dir}"/files.txt
tzdata_version_dir="${tzdata_dir}"/${tzdata_version}
tzdata_url=https://ssl.icu-project.org/repos/icu/data/trunk/tzdata/icunew/${tzdata_version}/44/
icu_tzdata_version=`grep --only-matching --perl-regexp --regexp="tz version:\s+\K.*$" "${icu_dir}"/source/data/misc/zoneinfo64.txt`
local_tzdata_version=
if [ -f "${tzdata_dir}"/SVN-INFO ]; then
local_tzdata_version=`grep --only-matching --perl-regexp --regexp="^URL: .*tzdata/icunew/\K[0-9a-z]+" "${tzdata_dir}"/SVN-INFO`
fi
# Check ICU and current local tzdata versions.
if [ $check_version = true ]; then
if [ ! -z ${local_tzdata_version} ]; then
if [ ${local_tzdata_version} \> ${icu_tzdata_version} ]; then
echo >&2 "WARN: Local tzdata (${local_tzdata_version}) is newer than ICU tzdata (${icu_tzdata_version}), please run '$0 ${local_tzdata_version}'"
else
echo "INFO: ICU tzdata ${icu_tzdata_version} is newer than local tzdata (${local_tzdata_version})"
fi
else
echo "INFO: No local tzdata files found"
fi
exit 0
fi
# Find icu_pkg if not provided as an argument.
icu_pkg=${icu_pkg:-`which icupkg`}
# Test if we can execute icupkg.
if [ ! -x "${icu_pkg}" ]; then
echo >&2 "ERROR: icupkg is not an executable"
exit 1
fi
# Check ICU tzdata version.
if [ ${icu_tzdata_version} \> ${tzdata_version} ]; then
if [ $force = false ]; then
echo >&2 "ERROR: ICU tzdata (${icu_tzdata_version}) is newer than requested version ${tzdata_version}, use -f to force replacing"
exit 1
fi
fi
# Check tzdata version from last checkout.
if [ -n ${local_tzdata_version} -a ${local_tzdata_version} \> ${tzdata_version} ]; then
if [ $force = false ]; then
echo >&2 "ERROR: Local tzdata (${local_tzdata_version}) is newer than requested version ${tzdata_version}, use -f to force replacing"
exit 1
fi
fi
echo "INFO: Updating tzdata from ${local_tzdata_version:-$icu_tzdata_version} to ${tzdata_version}"
# Search for ICU data files.
# Little endian data files.
icudata_file_le=`find "${icudata_dir}" -type f -name 'icudt*l.dat'`
if [ -f "${icudata_file_le}" ]; then
icudata_file_le=`cd "$(dirname "${icudata_file_le}")" && pwd -P`/`basename "${icudata_file_le}"`
echo "INFO: ICU data file (little endian): ${icudata_file_le}"
else
echo >&2 "ERROR: ICU data (little endian) file not found"
exit 1
fi
# Big endian data files.
# Optional until https://bugzilla.mozilla.org/show_bug.cgi?id=1264836 is fixed.
icudata_file_be=`find "${icudata_dir}" -type f -name 'icudt*b.dat'`
if [ -f "${icudata_file_be}" ]; then
icudata_file_be=`cd "$(dirname "${icudata_file_be}")" && pwd -P`/`basename "${icudata_file_be}"`
echo "INFO: ICU data file (big endian): ${icudata_file_be}"
else
echo "INFO: ICU data file (big endian) not found, skipping..."
fi
# Retrieve tzdata from svn, unless already present.
if [ ! -d "$tzdata_version_dir" ]; then
if [ $dry = false ]; then
echo "INFO: Downloading tzdata${tzdata_version}"
svn export "${tzdata_url}" "${tzdata_version_dir}"
fi
else
echo "INFO: Skip downloading tzdata${tzdata_version}, directory already present"
fi
# Record `svn info`, eliding the line that changes every time the entire ICU
# tzdata repository (not just the path within it we care about) receives a
# commit.
if [ $dry = false ]; then
svn info "${tzdata_url}" | grep --invert-match '^Revision: [[:digit:]]\+$' > "${tzdata_dir}"/SVN-INFO
fi
# Update ICU data.
update_icu_data() {
set +e
local type="$1"
local file="$2"
local cmd="${icu_pkg} --add ${tzdata_files} --sourcedir ${tzdata_version_dir}/${type} ${file}"
eval "${cmd}"
local exit_status=$?
if [ $exit_status -ne 0 ]; then
echo >&2 "ERROR: Error updating tzdata"
echo >&2 "ERROR: If you see an error message like 'format version 03.00 not supported',\n"\
" ensure your icupkg version matches the current ICU version."
exit $exit_status
fi
}
if [ $dry = false ]; then
update_icu_data "le" "${icudata_file_le}"
if [ -n "${icudata_file_be}" ]; then
update_icu_data "be" "${icudata_file_be}"
fi
echo "INFO: Successfully updated tzdata!"
echo "INFO: Please run js/src/builtin/make_intl_data.py to update additional time zone files for SpiderMonkey."
fi

View File

@ -5,8 +5,13 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
""" Usage: make_intl_data.py [language-subtag-registry.txt]
""" Usage:
make_intl_data.py langtags [language-subtag-registry.txt]
make_intl_data.py tzdata --icu=$MOZ/intl/icu/source \\
--icutz=$MOZ/intl/tzdata/tz2016f \\
--version=2016f
Target "langtags":
This script extracts information about mappings between deprecated and
current BCP 47 language tags from the IANA Language Subtag Registry and
converts it to JavaScript object definitions in IntlData.js. The definitions
@ -16,8 +21,28 @@
http://www.iana.org/assignments/language-subtag-registry
and uses the syntax specified in
http://tools.ietf.org/html/rfc5646#section-3
Target "tzdata":
This script computes which time zone informations are not up-to-date in ICU
and provides the necessary mappings to workaround this problem.
http://bugs.icu-project.org/trac/ticket/12044
"""
from __future__ import print_function
import os
import re
import io
import codecs
import tarfile
import tempfile
import urllib2
import urlparse
from contextlib import closing
from functools import partial
from itertools import chain, ifilter, ifilterfalse, imap, tee
from operator import attrgetter, itemgetter
def readRegistryRecord(registry):
""" Yields the records of the IANA Language Subtag Registry as dictionaries. """
record = {}
@ -165,35 +190,433 @@ def writeLanguageTagData(intlData, fileDate, url, langTagMappings, langSubtagMap
writeMappingsVar(intlData, extlangMappings, "extlangMappings",
"Mappings from extlang subtags to preferred values", fileDate, url)
def updateLangTags(args):
""" Update the IntlData.js file. """
url = args.url
out = args.out
filename = args.file
if __name__ == '__main__':
import codecs
import sys
import urllib2
print("Arguments:")
print("\tDownload url: %s" % url)
print("\tLocal registry: %s" % filename)
print("\tOutput file: %s" % out)
print("")
url = "http://www.iana.org/assignments/language-subtag-registry"
if len(sys.argv) > 1:
if filename is not None:
print("Always make sure you have the newest language-subtag-registry.txt!")
registry = codecs.open(sys.argv[1], "r", encoding="utf-8")
registry = codecs.open(filename, "r", encoding="utf-8")
else:
print("Downloading IANA Language Subtag Registry...")
reader = urllib2.urlopen(url)
text = reader.read().decode("utf-8")
reader.close()
with closing(urllib2.urlopen(url)) as reader:
text = reader.read().decode("utf-8")
registry = codecs.open("language-subtag-registry.txt", "w+", encoding="utf-8")
registry.write(text)
registry.seek(0)
print("Processing IANA Language Subtag Registry...")
data = readRegistry(registry)
with closing(registry) as reg:
data = readRegistry(reg)
fileDate = data["fileDate"]
langTagMappings = data["langTagMappings"]
langSubtagMappings = data["langSubtagMappings"]
extlangMappings = data["extlangMappings"]
registry.close()
print("Writing Intl data...")
intlData = codecs.open("IntlData.js", "w", encoding="utf-8")
intlData.write("// Generated by make_intl_data.py. DO NOT EDIT.\n")
writeLanguageTagData(intlData, fileDate, url, langTagMappings, langSubtagMappings, extlangMappings)
intlData.close()
with codecs.open(out, "w", encoding="utf-8") as intlData:
intlData.write("// Generated by make_intl_data.py. DO NOT EDIT.\n")
writeLanguageTagData(intlData, fileDate, url, langTagMappings, langSubtagMappings, extlangMappings)
def flines(filepath, encoding="utf-8"):
""" Open filepath and iterate over its content. """
with io.open(filepath, mode="r", encoding=encoding) as f:
for line in f:
yield line
class Zone:
""" Time zone with optional file name. """
def __init__(self, name, filename=""):
self.name = name
self.filename = filename
def __eq__(self, other):
return hasattr(other, "name") and self.name == other.name
def __cmp__(self, other):
if self.name == other.name:
return 0
if self.name < other.name:
return -1
return 1
def __hash__(self):
return hash(self.name)
def __str__(self):
return self.name
def __repr__(self):
return self.name
class TzDataDir:
""" tzdata source from a directory. """
def __init__(self, obj):
self.name = partial(os.path.basename, obj)
self.resolve = partial(os.path.join, obj)
self.basename = os.path.basename
self.isfile = os.path.isfile
self.listdir = partial(os.listdir, obj)
self.readlines = flines
class TzDataFile:
""" tzdata source from a file (tar or gzipped). """
def __init__(self, obj):
self.name = lambda: os.path.splitext(os.path.splitext(os.path.basename(obj))[0])[0]
self.resolve = obj.getmember
self.basename = attrgetter("name")
self.isfile = tarfile.TarInfo.isfile
self.listdir = obj.getnames
self.readlines = partial(self._tarlines, obj)
def _tarlines(self, tar, m):
with closing(tar.extractfile(m)) as f:
for line in codecs.EncodedFile(f, "utf-8"):
yield line
def validateTimeZones(zones, links):
""" Validate the zone and link entries. """
linkZones = set(links.viewkeys())
intersect = linkZones.intersection(zones)
if intersect:
raise RuntimeError("Links also present in zones: %s" % intersect)
zoneNames = set(z.name for z in zones)
linkTargets = set(links.viewvalues())
if not linkTargets.issubset(zoneNames):
raise RuntimeError("Link targets not found: %s" % linkTargets.difference(zoneNames))
def readIANAFiles(tzdataDir, files):
""" Read all IANA time zone files from the given iterable. """
nameSyntax = "[\w/+\-]+"
pZone = re.compile(r"Zone\s+(?P<name>%s)\s+.*" % nameSyntax)
pLink = re.compile(r"Link\s+(?P<target>%s)\s+(?P<name>%s)(?:\s+#.*)?" % (nameSyntax, nameSyntax))
def createZone(line, fname):
match = pZone.match(line)
name = match.group("name")
return Zone(name, fname)
def createLink(line, fname):
match = pLink.match(line)
(name, target) = match.group("name", "target")
return (Zone(name, fname), target)
zones = set()
links = dict()
for filename in files:
filepath = tzdataDir.resolve(filename)
for line in tzdataDir.readlines(filepath):
if line.startswith("Zone"):
zones.add(createZone(line, filename))
if line.startswith("Link"):
(link, target) = createLink(line, filename)
links[link] = target
return (zones, links)
def readIANATimeZones(tzdataDir):
""" Read the IANA time zone information from `tzdataDir`. """
def partition(pred, it):
it1, it2 = tee(it)
return (ifilterfalse(pred, it1), ifilter(pred, it2))
def isTzFile(d, m, f):
return m(f) and d.isfile(d.resolve(f))
backzoneFiles = {"backzone"}
(tzfiles, bkfiles) = partition(
backzoneFiles.__contains__,
ifilter(partial(isTzFile, tzdataDir, re.compile("^[a-z0-9]+$").match), tzdataDir.listdir())
)
# Read zone and link infos.
(zones, links) = readIANAFiles(tzdataDir, tzfiles)
(backzones, backlinks) = readIANAFiles(tzdataDir, bkfiles)
# Merge with backzone data.
zones |= backzones
zones.remove(Zone("Factory"))
links = {name: target for name, target in links.iteritems() if name not in backzones}
links.update(backlinks)
validateTimeZones(zones, links)
return (zones, links)
def readICUResourceFile(filename):
""" Read an ICU resource file.
Returns ("table", <table-name>) when a table starts/ends.
Returns ("entry", <data>) for each table entry.
"""
p = re.compile(r"^(?P<name>.+)\{$")
q = re.compile(r'^(?P<quote>"?)(?P<key>.+)(?P=quote)\{"(?P<value>.+)"\}$')
tables = []
for line in flines(filename, "utf-8-sig"):
line = line.strip()
if line == "" or line.startswith("//"):
continue
m = p.match(line)
if m:
tables.append(m.group("name"))
yield ("table", m.group("name"))
continue
if line == "}":
yield ("table", tables.pop())
continue
m = q.match(line)
if not m:
raise RuntimeError("unknown entry: %s" % line)
yield ("entry", (m.group("key"), m.group("value")))
def readICUTimeZones(icuTzDir):
""" Read the ICU time zone information from `icuTzDir`/timezoneTypes.txt
and returns the tuple (zones, links).
"""
inTypeMap = False
inTypeMapTimezone = False
inTypeAlias = False
inTypeAliasTimezone = False
toTimeZone = lambda name: Zone(name.replace(":", "/"))
timezones = set()
aliases = dict()
for kind, value in readICUResourceFile(os.path.join(icuTzDir, "timezoneTypes.txt")):
if kind == "table":
if value == "typeMap":
inTypeMap = not inTypeMap
elif inTypeMap and value == "timezone":
inTypeMapTimezone = not inTypeMapTimezone
elif value == "typeAlias":
inTypeAlias = not inTypeAlias
elif inTypeAlias and value == "timezone":
inTypeAliasTimezone = not inTypeAliasTimezone
continue
(fst, snd) = value
if inTypeMapTimezone:
timezones.add(toTimeZone(fst))
if inTypeAliasTimezone:
aliases[toTimeZone(fst)] = snd
# Remove the ICU placeholder time zone "Etc/Unknown".
timezones.remove(Zone("Etc/Unknown"))
validateTimeZones(timezones, aliases)
return (timezones, aliases)
def readICULegacyZones(icuDir):
""" Read the ICU legacy time zones from `icuTzDir`/tools/tzcode/icuzones
and returns the tuple (zones, links).
"""
tzdir = TzDataDir(os.path.join(icuDir, "tools/tzcode"))
(zones, links) = readIANAFiles(tzdir, ["icuzones"])
# Remove the ICU placeholder time zone "Etc/Unknown".
zones.remove(Zone("Etc/Unknown"))
return (zones, links)
def icuTzDataVersion(icuTzDir):
""" Read the ICU time zone version from `icuTzDir`/zoneinfo64.txt. """
def searchInFile(pattern, f):
p = re.compile(pattern)
for line in flines(f, "utf-8-sig"):
m = p.search(line)
if m:
return m.group(1)
return None
zoneinfo = os.path.join(icuTzDir, "zoneinfo64.txt")
if os.path.isfile(zoneinfo):
version = searchInFile("^//\s+tz version:\s+([0-9]{4}[a-z])$", zoneinfo)
else:
version = None
return version
def findIncorrectICUZones(zones, links, timezones, aliases):
""" Find incorrect ICU zone entries. """
isIANATimeZone = lambda zone: zone in zones or zone in links
isICUTimeZone = lambda zone: zone in timezones or zone in aliases
isICULink = lambda zone: zone in aliases
# Zones which aren't present in ICU.
missingTimeZones = ((zone, "<not present>") for zone in zones if not isICUTimeZone(zone))
# Zones which are marked as links in ICU.
incorrectMapping = ((zone, aliases[zone]) for zone in zones if isICULink(zone))
# Zones which are only present in ICU?
removedTimeZones = [zone for zone in timezones if not isIANATimeZone(zone)]
if removedTimeZones:
raise RuntimeError("Removed zones? %s" % removedTimeZones)
result = chain(missingTimeZones, incorrectMapping)
# Remove unnecessary UTC mappings.
utcnames = ["Etc/UTC", "Etc/UCT", "Etc/GMT"]
result = ifilterfalse(lambda (zone, alias): zone.name in utcnames, result)
return sorted(result, key=itemgetter(0))
def findIncorrectICULinks(zones, links, timezones, aliases):
""" Find incorrect ICU link entries. """
isIANATimeZone = lambda zone: zone in zones or zone in links
isICUTimeZone = lambda zone: zone in timezones or zone in aliases
isICULink = lambda zone: zone in aliases
isICUZone = lambda zone: zone in timezones
# Links which aren't present in ICU.
missingTimeZones = ((zone, target, "<not present>") for (zone, target) in links.iteritems() if not isICUTimeZone(zone))
# Links which have a different target in ICU.
incorrectMapping = ((zone, target, aliases[zone]) for (zone, target) in links.iteritems() if isICULink(zone) and target != aliases[zone])
# Links which are zones in ICU.
incorrectMapping2 = ((zone, target, zone.name) for (zone, target) in links.iteritems() if isICUZone(zone))
# Links which are only present in ICU?
removedTimeZones = [zone for zone in aliases.iterkeys() if not isIANATimeZone(zone)]
if removedTimeZones:
raise RuntimeError("Removed zones? %s" % removedTimeZones)
result = chain(missingTimeZones, incorrectMapping, incorrectMapping2)
# Remove unnecessary UTC mappings.
utcnames = ["Etc/UTC", "Etc/UCT", "Etc/GMT"]
result = ifilterfalse(lambda (zone, target, alias): target in utcnames and alias in utcnames, result)
return sorted(result, key=itemgetter(0))
def processTimeZones(tzdataDir, icuDir, icuTzDir, tzversion, out):
""" Read the time zone info and create a new IntlTzData.js file. """
print("Processing tzdata mapping...")
(zones, links) = readIANATimeZones(tzdataDir)
(timezones, aliases) = readICUTimeZones(icuTzDir)
(legacyzones, legacylinks) = readICULegacyZones(icuDir)
icuversion = icuTzDataVersion(icuTzDir)
incorrectZones = findIncorrectICUZones(zones, links, timezones, aliases)
if not incorrectZones:
print("<<< No incorrect ICU time zones found, please update Intl.js! >>>")
print("<<< Maybe http://bugs.icu-project.org/trac/ticket/12044 was fixed? >>>")
incorrectLinks = findIncorrectICULinks(zones, links, timezones, aliases)
if not incorrectLinks:
print("<<< No incorrect ICU time zone links found, please update Intl.js! >>>")
print("<<< Maybe http://bugs.icu-project.org/trac/ticket/12044 was fixed? >>>")
print("Writing Intl tzdata file...")
with io.open(out, mode="w", encoding="utf-8", newline="") as f:
println = partial(print, file=f)
println(u"// Generated by make_intl_data.py. DO NOT EDIT.")
println(u"// tzdata version = %s" % tzversion)
println(u"// ICU tzdata version = %s" % icuversion)
println(u"")
println(u"// Format:")
println(u'// "ZoneName": true // ICU-Name [time zone file]')
println(u"var tzZoneNamesNonICU = {")
for (zone, alias) in incorrectZones:
println(u' "%s": true, // %s [%s]' % (zone, alias, zone.filename))
println(u"};")
println(u"")
println(u"// Format:")
println(u'// "LinkName": "Target" // ICU-Target [time zone file]')
println(u"var tzLinkNamesNonICU = {")
for (zone, target, alias) in incorrectLinks:
println(u' "%s": "%s", // %s [%s]' % (zone, target, alias, zone.filename))
println(u"};")
println(u"")
println(u"// Legacy ICU time zones, these are not valid IANA time zone names. We also")
println(u"// disallow the old and deprecated System V time zones.")
println(u"// http://source.icu-project.org/repos/icu/icu/trunk/source/tools/tzcode/icuzones")
println(u"var legacyICUTimeZones = {")
for zone in sorted(legacylinks.keys()) + sorted(list(legacyzones)):
println(u' "%s": true,' % zone)
println(u"};")
def updateTzdata(args):
""" Update the IntlTzData.js file. """
version = args.version
if not re.match("^([0-9]{4}[a-z])$", version):
raise RuntimeError("illegal version: %s" % version)
url = args.url
if url is None:
url = "https://www.iana.org/time-zones/repository/releases/tzdata%s.tar.gz" % version
tzDir = args.tz
if tzDir is not None and not (os.path.isdir(tzDir) or os.path.isfile(tzDir)):
raise RuntimeError("not a directory or file: %s" % tzDir)
icuDir = args.icu
if not os.path.isdir(icuDir):
raise RuntimeError("not a directory: %s" % icuDir)
icuTzDir = args.icutz
if icuTzDir is None:
icuTzDir = os.path.join(icuDir, "data/misc")
if not os.path.isdir(icuTzDir):
raise RuntimeError("not a directory: %s" % icuTzDir)
out = args.out
print("Arguments:")
print("\ttzdata version: %s" % version)
print("\ttzdata URL: %s" % url)
print("\ttzdata directory|file: %s" % tzDir)
print("\tICU directory: %s" % icuDir)
print("\tICU timezone directory: %s" % icuTzDir)
print("\tOutput file: %s" % out)
print("")
def updateFrom(f):
if os.path.isfile(f) and tarfile.is_tarfile(f):
with tarfile.open(f, "r:*") as tar:
processTimeZones(TzDataFile(tar), icuDir, icuTzDir, version, out)
elif os.path.isdir(f):
processTimeZones(TzDataDir(f), icuDir, icuTzDir, version, out)
else:
raise RuntimError("unknown format")
if tzDir is None:
print("Downloading tzdata file...")
with closing(urllib2.urlopen(url)) as tzfile:
fname = urlparse.urlsplit(tzfile.geturl()).path.split('/')[-1]
with tempfile.NamedTemporaryFile(suffix=fname) as tztmpfile:
print("File stored in %s" % tztmpfile.name)
tztmpfile.write(tzfile.read())
tztmpfile.flush()
updateFrom(tztmpfile.name)
else:
updateFrom(tzDir)
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser(description="Update intl data.")
subparsers = parser.add_subparsers(help="Select update mode")
parser_tags = subparsers.add_parser("langtags", help="Update language-subtag-registry", formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser_tags.add_argument("--url", metavar="URL", default="http://www.iana.org/assignments/language-subtag-registry", help="Download url for language-subtag-registry.txt")
parser_tags.add_argument("--out", default="IntlData.js", help="Output file")
parser_tags.add_argument("file", nargs="?", help="Local language-subtag-registry.txt file, if omitted uses <URL>")
parser_tags.set_defaults(func=updateLangTags)
parser_tz = subparsers.add_parser("tzdata", help="Update tzdata")
parser_tz.add_argument("--icu", metavar="ICU", required=True, help="ICU source directory")
parser_tz.add_argument("--icutz", help="ICU timezone directory, defaults to <ICU>/data/misc")
parser_tz.add_argument("--tz", help="Local tzdata directory or file, if omitted uses <URL>")
parser_tz.add_argument("--url", metavar="URL", help="Download url for tzdata, defaults to \"https://www.iana.org/time-zones/repository/releases/tzdata<VERSION>.tar.gz\"")
parser_tz.add_argument("--version", metavar="VERSION", required=True, help="tzdata version")
parser_tz.add_argument("--out", default="IntlTzData.js", help="Output file, defaults to \"IntlTzData.js\"")
parser_tz.set_defaults(func=updateTzdata)
args = parser.parse_args()
args.func(args)

View File

@ -4985,7 +4985,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<h1><a id="unicode"></a>Unicode License</h1>
<p>This license applies to certain files in the directories
<span class="path">intl/icu</span> and <span class="path">js/src/vm</span>.
<span class="path">intl/icu</span>, <span class="path">intl/tzdata</span>,
and <span class="path">js/src/vm</span>.
</p>
<pre>