1 | define(["../_base/lang", "../i18n"], function(lang, i18n){ |
---|
2 | |
---|
3 | // module: |
---|
4 | // dojo/cldr/supplemental |
---|
5 | |
---|
6 | |
---|
7 | var supplemental = { |
---|
8 | // summary: |
---|
9 | // TODOC |
---|
10 | }; |
---|
11 | lang.setObject("dojo.cldr.supplemental", supplemental); |
---|
12 | |
---|
13 | supplemental.getFirstDayOfWeek = function(/*String?*/locale){ |
---|
14 | // summary: |
---|
15 | // Returns a zero-based index for first day of the week |
---|
16 | // description: |
---|
17 | // Returns a zero-based index for first day of the week, as used by the local (Gregorian) calendar. |
---|
18 | // e.g. Sunday (returns 0), or Monday (returns 1) |
---|
19 | |
---|
20 | // from http://www.unicode.org/cldr/data/common/supplemental/supplementalData.xml:supplementalData/weekData/firstDay |
---|
21 | var firstDay = {/*default is 1=Monday*/ |
---|
22 | bd:5,mv:5, |
---|
23 | ae:6,af:6,bh:6,dj:6,dz:6,eg:6,iq:6,ir:6,jo:6,kw:6, |
---|
24 | ly:6,ma:6,om:6,qa:6,sa:6,sd:6,sy:6,ye:6, |
---|
25 | ag:0,ar:0,as:0,au:0,br:0,bs:0,bt:0,bw:0,by:0,bz:0,ca:0,cn:0, |
---|
26 | co:0,dm:0,'do':0,et:0,gt:0,gu:0,hk:0,hn:0,id:0,ie:0,il:0,'in':0, |
---|
27 | jm:0,jp:0,ke:0,kh:0,kr:0,la:0,mh:0,mm:0,mo:0,mt:0,mx:0,mz:0, |
---|
28 | ni:0,np:0,nz:0,pa:0,pe:0,ph:0,pk:0,pr:0,py:0,sg:0,sv:0,th:0, |
---|
29 | tn:0,tt:0,tw:0,um:0,us:0,ve:0,vi:0,ws:0,za:0,zw:0 |
---|
30 | }; |
---|
31 | |
---|
32 | var country = supplemental._region(locale); |
---|
33 | var dow = firstDay[country]; |
---|
34 | return (dow === undefined) ? 1 : dow; /*Number*/ |
---|
35 | }; |
---|
36 | |
---|
37 | supplemental._region = function(/*String?*/locale){ |
---|
38 | locale = i18n.normalizeLocale(locale); |
---|
39 | var tags = locale.split('-'); |
---|
40 | var region = tags[1]; |
---|
41 | if(!region){ |
---|
42 | // IE often gives language only (#2269) |
---|
43 | // Arbitrary mappings of language-only locales to a country: |
---|
44 | region = { |
---|
45 | aa:"et", ab:"ge", af:"za", ak:"gh", am:"et", ar:"eg", as:"in", av:"ru", ay:"bo", az:"az", ba:"ru", |
---|
46 | be:"by", bg:"bg", bi:"vu", bm:"ml", bn:"bd", bo:"cn", br:"fr", bs:"ba", ca:"es", ce:"ru", ch:"gu", |
---|
47 | co:"fr", cr:"ca", cs:"cz", cv:"ru", cy:"gb", da:"dk", de:"de", dv:"mv", dz:"bt", ee:"gh", el:"gr", |
---|
48 | en:"us", es:"es", et:"ee", eu:"es", fa:"ir", ff:"sn", fi:"fi", fj:"fj", fo:"fo", fr:"fr", fy:"nl", |
---|
49 | ga:"ie", gd:"gb", gl:"es", gn:"py", gu:"in", gv:"gb", ha:"ng", he:"il", hi:"in", ho:"pg", hr:"hr", |
---|
50 | ht:"ht", hu:"hu", hy:"am", ia:"fr", id:"id", ig:"ng", ii:"cn", ik:"us", "in":"id", is:"is", it:"it", |
---|
51 | iu:"ca", iw:"il", ja:"jp", ji:"ua", jv:"id", jw:"id", ka:"ge", kg:"cd", ki:"ke", kj:"na", kk:"kz", |
---|
52 | kl:"gl", km:"kh", kn:"in", ko:"kr", ks:"in", ku:"tr", kv:"ru", kw:"gb", ky:"kg", la:"va", lb:"lu", |
---|
53 | lg:"ug", li:"nl", ln:"cd", lo:"la", lt:"lt", lu:"cd", lv:"lv", mg:"mg", mh:"mh", mi:"nz", mk:"mk", |
---|
54 | ml:"in", mn:"mn", mo:"ro", mr:"in", ms:"my", mt:"mt", my:"mm", na:"nr", nb:"no", nd:"zw", ne:"np", |
---|
55 | ng:"na", nl:"nl", nn:"no", no:"no", nr:"za", nv:"us", ny:"mw", oc:"fr", om:"et", or:"in", os:"ge", |
---|
56 | pa:"in", pl:"pl", ps:"af", pt:"br", qu:"pe", rm:"ch", rn:"bi", ro:"ro", ru:"ru", rw:"rw", sa:"in", |
---|
57 | sd:"in", se:"no", sg:"cf", si:"lk", sk:"sk", sl:"si", sm:"ws", sn:"zw", so:"so", sq:"al", sr:"rs", |
---|
58 | ss:"za", st:"za", su:"id", sv:"se", sw:"tz", ta:"in", te:"in", tg:"tj", th:"th", ti:"et", tk:"tm", |
---|
59 | tl:"ph", tn:"za", to:"to", tr:"tr", ts:"za", tt:"ru", ty:"pf", ug:"cn", uk:"ua", ur:"pk", uz:"uz", |
---|
60 | ve:"za", vi:"vn", wa:"be", wo:"sn", xh:"za", yi:"il", yo:"ng", za:"cn", zh:"cn", zu:"za", |
---|
61 | ace:"id", ady:"ru", agq:"cm", alt:"ru", amo:"ng", asa:"tz", ast:"es", awa:"in", bal:"pk", |
---|
62 | ban:"id", bas:"cm", bax:"cm", bbc:"id", bem:"zm", bez:"tz", bfq:"in", bft:"pk", bfy:"in", |
---|
63 | bhb:"in", bho:"in", bik:"ph", bin:"ng", bjj:"in", bku:"ph", bqv:"ci", bra:"in", brx:"in", |
---|
64 | bss:"cm", btv:"pk", bua:"ru", buc:"yt", bug:"id", bya:"id", byn:"er", cch:"ng", ccp:"in", |
---|
65 | ceb:"ph", cgg:"ug", chk:"fm", chm:"ru", chp:"ca", chr:"us", cja:"kh", cjm:"vn", ckb:"iq", |
---|
66 | crk:"ca", csb:"pl", dar:"ru", dav:"ke", den:"ca", dgr:"ca", dje:"ne", doi:"in", dsb:"de", |
---|
67 | dua:"cm", dyo:"sn", dyu:"bf", ebu:"ke", efi:"ng", ewo:"cm", fan:"gq", fil:"ph", fon:"bj", |
---|
68 | fur:"it", gaa:"gh", gag:"md", gbm:"in", gcr:"gf", gez:"et", gil:"ki", gon:"in", gor:"id", |
---|
69 | grt:"in", gsw:"ch", guz:"ke", gwi:"ca", haw:"us", hil:"ph", hne:"in", hnn:"ph", hoc:"in", |
---|
70 | hoj:"in", ibb:"ng", ilo:"ph", inh:"ru", jgo:"cm", jmc:"tz", kaa:"uz", kab:"dz", kaj:"ng", |
---|
71 | kam:"ke", kbd:"ru", kcg:"ng", kde:"tz", kdt:"th", kea:"cv", ken:"cm", kfo:"ci", kfr:"in", |
---|
72 | kha:"in", khb:"cn", khq:"ml", kht:"in", kkj:"cm", kln:"ke", kmb:"ao", koi:"ru", kok:"in", |
---|
73 | kos:"fm", kpe:"lr", krc:"ru", kri:"sl", krl:"ru", kru:"in", ksb:"tz", ksf:"cm", ksh:"de", |
---|
74 | kum:"ru", lag:"tz", lah:"pk", lbe:"ru", lcp:"cn", lep:"in", lez:"ru", lif:"np", lis:"cn", |
---|
75 | lki:"ir", lmn:"in", lol:"cd", lua:"cd", luo:"ke", luy:"ke", lwl:"th", mad:"id", mag:"in", |
---|
76 | mai:"in", mak:"id", man:"gn", mas:"ke", mdf:"ru", mdh:"ph", mdr:"id", men:"sl", mer:"ke", |
---|
77 | mfe:"mu", mgh:"mz", mgo:"cm", min:"id", mni:"in", mnk:"gm", mnw:"mm", mos:"bf", mua:"cm", |
---|
78 | mwr:"in", myv:"ru", nap:"it", naq:"na", nds:"de", "new":"np", niu:"nu", nmg:"cm", nnh:"cm", |
---|
79 | nod:"th", nso:"za", nus:"sd", nym:"tz", nyn:"ug", pag:"ph", pam:"ph", pap:"bq", pau:"pw", |
---|
80 | pon:"fm", prd:"ir", raj:"in", rcf:"re", rej:"id", rjs:"np", rkt:"in", rof:"tz", rwk:"tz", |
---|
81 | saf:"gh", sah:"ru", saq:"ke", sas:"id", sat:"in", saz:"in", sbp:"tz", scn:"it", sco:"gb", |
---|
82 | sdh:"ir", seh:"mz", ses:"ml", shi:"ma", shn:"mm", sid:"et", sma:"se", smj:"se", smn:"fi", |
---|
83 | sms:"fi", snk:"ml", srn:"sr", srr:"sn", ssy:"er", suk:"tz", sus:"gn", swb:"yt", swc:"cd", |
---|
84 | syl:"bd", syr:"sy", tbw:"ph", tcy:"in", tdd:"cn", tem:"sl", teo:"ug", tet:"tl", tig:"er", |
---|
85 | tiv:"ng", tkl:"tk", tmh:"ne", tpi:"pg", trv:"tw", tsg:"ph", tts:"th", tum:"mw", tvl:"tv", |
---|
86 | twq:"ne", tyv:"ru", tzm:"ma", udm:"ru", uli:"fm", umb:"ao", unr:"in", unx:"in", vai:"lr", |
---|
87 | vun:"tz", wae:"ch", wal:"et", war:"ph", xog:"ug", xsr:"np", yao:"mz", yap:"fm", yav:"cm", zza:"tr" |
---|
88 | }[tags[0]]; |
---|
89 | }else if(region.length == 4){ |
---|
90 | // The ISO 3166 country code is usually in the second position, unless a |
---|
91 | // 4-letter script is given. See http://www.ietf.org/rfc/rfc4646.txt |
---|
92 | region = tags[2]; |
---|
93 | } |
---|
94 | return region; |
---|
95 | }; |
---|
96 | |
---|
97 | supplemental.getWeekend = function(/*String?*/locale){ |
---|
98 | // summary: |
---|
99 | // Returns a hash containing the start and end days of the weekend |
---|
100 | // description: |
---|
101 | // Returns a hash containing the start and end days of the weekend according to local custom using locale, |
---|
102 | // or by default in the user's locale. |
---|
103 | // e.g. {start:6, end:0} |
---|
104 | |
---|
105 | // from http://www.unicode.org/cldr/data/common/supplemental/supplementalData.xml:supplementalData/weekData/weekend{Start,End} |
---|
106 | var weekendStart = {/*default is 6=Saturday*/ |
---|
107 | 'in':0, |
---|
108 | af:4,dz:4,ir:4,om:4,sa:4,ye:4, |
---|
109 | ae:5,bh:5,eg:5,il:5,iq:5,jo:5,kw:5,ly:5,ma:5,qa:5,sd:5,sy:5,tn:5 |
---|
110 | }, |
---|
111 | |
---|
112 | weekendEnd = {/*default is 0=Sunday*/ |
---|
113 | af:5,dz:5,ir:5,om:5,sa:5,ye:5, |
---|
114 | ae:6,bh:5,eg:6,il:6,iq:6,jo:6,kw:6,ly:6,ma:6,qa:6,sd:6,sy:6,tn:6 |
---|
115 | }, |
---|
116 | |
---|
117 | country = supplemental._region(locale), |
---|
118 | start = weekendStart[country], |
---|
119 | end = weekendEnd[country]; |
---|
120 | |
---|
121 | if(start === undefined){start=6;} |
---|
122 | if(end === undefined){end=0;} |
---|
123 | return {start:start, end:end}; /*Object {start,end}*/ |
---|
124 | }; |
---|
125 | |
---|
126 | return supplemental; |
---|
127 | }); |
---|