supplemental.js 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*
  2. Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
  3. Available via Academic Free License >= 2.1 OR the modified BSD license.
  4. see: http://dojotoolkit.org/license for details
  5. */
  6. if(!dojo._hasResource["dojo.cldr.supplemental"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
  7. dojo._hasResource["dojo.cldr.supplemental"] = true;
  8. dojo.provide("dojo.cldr.supplemental");
  9. dojo.require("dojo.i18n");
  10. dojo.getObject("cldr.supplemental", true, dojo);
  11. dojo.cldr.supplemental.getFirstDayOfWeek = function(/*String?*/locale){
  12. // summary: Returns a zero-based index for first day of the week
  13. // description:
  14. // Returns a zero-based index for first day of the week, as used by the local (Gregorian) calendar.
  15. // e.g. Sunday (returns 0), or Monday (returns 1)
  16. // from http://www.unicode.org/cldr/data/common/supplemental/supplementalData.xml:supplementalData/weekData/firstDay
  17. var firstDay = {/*default is 1=Monday*/
  18. mv:5,
  19. ae:6,af:6,bh:6,dj:6,dz:6,eg:6,er:6,et:6,iq:6,ir:6,jo:6,ke:6,kw:6,
  20. ly:6,ma:6,om:6,qa:6,sa:6,sd:6,so:6,sy:6,tn:6,ye:6,
  21. ar:0,as:0,az:0,bw:0,ca:0,cn:0,fo:0,ge:0,gl:0,gu:0,hk:0,
  22. il:0,'in':0,jm:0,jp:0,kg:0,kr:0,la:0,mh:0,mn:0,mo:0,mp:0,
  23. mt:0,nz:0,ph:0,pk:0,sg:0,th:0,tt:0,tw:0,um:0,us:0,uz:0,
  24. vi:0,zw:0
  25. // variant. do not use? gb:0,
  26. };
  27. var country = dojo.cldr.supplemental._region(locale);
  28. var dow = firstDay[country];
  29. return (dow === undefined) ? 1 : dow; /*Number*/
  30. };
  31. dojo.cldr.supplemental._region = function(/*String?*/locale){
  32. locale = dojo.i18n.normalizeLocale(locale);
  33. var tags = locale.split('-');
  34. var region = tags[1];
  35. if(!region){
  36. // IE often gives language only (#2269)
  37. // Arbitrary mappings of language-only locales to a country:
  38. region = {de:"de", en:"us", es:"es", fi:"fi", fr:"fr", he:"il", hu:"hu", it:"it",
  39. ja:"jp", ko:"kr", nl:"nl", pt:"br", sv:"se", zh:"cn"}[tags[0]];
  40. }else if(region.length == 4){
  41. // The ISO 3166 country code is usually in the second position, unless a
  42. // 4-letter script is given. See http://www.ietf.org/rfc/rfc4646.txt
  43. region = tags[2];
  44. }
  45. return region;
  46. };
  47. dojo.cldr.supplemental.getWeekend = function(/*String?*/locale){
  48. // summary: Returns a hash containing the start and end days of the weekend
  49. // description:
  50. // Returns a hash containing the start and end days of the weekend according to local custom using locale,
  51. // or by default in the user's locale.
  52. // e.g. {start:6, end:0}
  53. // from http://www.unicode.org/cldr/data/common/supplemental/supplementalData.xml:supplementalData/weekData/weekend{Start,End}
  54. var weekendStart = {/*default is 6=Saturday*/
  55. 'in':0,
  56. af:4,dz:4,ir:4,om:4,sa:4,ye:4,
  57. 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
  58. };
  59. var weekendEnd = {/*default is 0=Sunday*/
  60. af:5,dz:5,ir:5,om:5,sa:5,ye:5,
  61. 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
  62. };
  63. var country = dojo.cldr.supplemental._region(locale);
  64. var start = weekendStart[country];
  65. var end = weekendEnd[country];
  66. if(start === undefined){start=6;}
  67. if(end === undefined){end=0;}
  68. return {start:start, end:end}; /*Object {start,end}*/
  69. };
  70. }