index.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. import buildLocalizeFn from "../../../_lib/buildLocalizeFn/index.js";
  2. var eraValues = {
  3. narrow: ['C', 'O'],
  4. abbreviated: ['CC', 'OC'],
  5. wide: ['Cyn Crist', 'Ar ôl Crist']
  6. };
  7. var quarterValues = {
  8. narrow: ['1', '2', '3', '4'],
  9. abbreviated: ['Ch1', 'Ch2', 'Ch3', 'Ch4'],
  10. wide: ['Chwarter 1af', '2ail chwarter', '3ydd chwarter', '4ydd chwarter']
  11. };
  12. // Note: in English, the names of days of the week and months are capitalized.
  13. // If you are making a new locale based on this one, check if the same is true for the language you're working on.
  14. // Generally, formatted dates should look like they are in the middle of a sentence,
  15. // e.g. in Spanish language the weekdays and months should be in the lowercase.
  16. var monthValues = {
  17. narrow: ['I', 'Ch', 'Ma', 'E', 'Mi', 'Me', 'G', 'A', 'Md', 'H', 'T', 'Rh'],
  18. abbreviated: ['Ion', 'Chwe', 'Maw', 'Ebr', 'Mai', 'Meh', 'Gor', 'Aws', 'Med', 'Hyd', 'Tach', 'Rhag'],
  19. wide: ['Ionawr', 'Chwefror', 'Mawrth', 'Ebrill', 'Mai', 'Mehefin', 'Gorffennaf', 'Awst', 'Medi', 'Hydref', 'Tachwedd', 'Rhagfyr']
  20. };
  21. var dayValues = {
  22. narrow: ['S', 'Ll', 'M', 'M', 'I', 'G', 'S'],
  23. short: ['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa'],
  24. abbreviated: ['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'],
  25. wide: ['dydd Sul', 'dydd Llun', 'dydd Mawrth', 'dydd Mercher', 'dydd Iau', 'dydd Gwener', 'dydd Sadwrn']
  26. };
  27. var dayPeriodValues = {
  28. narrow: {
  29. am: 'b',
  30. pm: 'h',
  31. midnight: 'hn',
  32. noon: 'hd',
  33. morning: 'bore',
  34. afternoon: 'prynhawn',
  35. evening: "gyda'r nos",
  36. night: 'nos'
  37. },
  38. abbreviated: {
  39. am: 'yb',
  40. pm: 'yh',
  41. midnight: 'hanner nos',
  42. noon: 'hanner dydd',
  43. morning: 'bore',
  44. afternoon: 'prynhawn',
  45. evening: "gyda'r nos",
  46. night: 'nos'
  47. },
  48. wide: {
  49. am: 'y.b.',
  50. pm: 'y.h.',
  51. midnight: 'hanner nos',
  52. noon: 'hanner dydd',
  53. morning: 'bore',
  54. afternoon: 'prynhawn',
  55. evening: "gyda'r nos",
  56. night: 'nos'
  57. }
  58. };
  59. var formattingDayPeriodValues = {
  60. narrow: {
  61. am: 'b',
  62. pm: 'h',
  63. midnight: 'hn',
  64. noon: 'hd',
  65. morning: 'yn y bore',
  66. afternoon: 'yn y prynhawn',
  67. evening: "gyda'r nos",
  68. night: 'yn y nos'
  69. },
  70. abbreviated: {
  71. am: 'yb',
  72. pm: 'yh',
  73. midnight: 'hanner nos',
  74. noon: 'hanner dydd',
  75. morning: 'yn y bore',
  76. afternoon: 'yn y prynhawn',
  77. evening: "gyda'r nos",
  78. night: 'yn y nos'
  79. },
  80. wide: {
  81. am: 'y.b.',
  82. pm: 'y.h.',
  83. midnight: 'hanner nos',
  84. noon: 'hanner dydd',
  85. morning: 'yn y bore',
  86. afternoon: 'yn y prynhawn',
  87. evening: "gyda'r nos",
  88. night: 'yn y nos'
  89. }
  90. };
  91. var ordinalNumber = function ordinalNumber(dirtyNumber, _options) {
  92. var number = Number(dirtyNumber);
  93. if (number < 20) {
  94. switch (number) {
  95. case 0:
  96. return number + 'fed';
  97. case 1:
  98. return number + 'af';
  99. case 2:
  100. return number + 'ail';
  101. case 3:
  102. case 4:
  103. return number + 'ydd';
  104. case 5:
  105. case 6:
  106. return number + 'ed';
  107. case 7:
  108. case 8:
  109. case 9:
  110. case 10:
  111. case 12:
  112. case 15:
  113. case 18:
  114. return number + 'fed';
  115. case 11:
  116. case 13:
  117. case 14:
  118. case 16:
  119. case 17:
  120. case 19:
  121. return number + 'eg';
  122. }
  123. } else if (number >= 50 && number <= 60 || number === 80 || number >= 100) {
  124. return number + 'fed';
  125. }
  126. return number + 'ain';
  127. };
  128. var localize = {
  129. ordinalNumber: ordinalNumber,
  130. era: buildLocalizeFn({
  131. values: eraValues,
  132. defaultWidth: 'wide'
  133. }),
  134. quarter: buildLocalizeFn({
  135. values: quarterValues,
  136. defaultWidth: 'wide',
  137. argumentCallback: function argumentCallback(quarter) {
  138. return quarter - 1;
  139. }
  140. }),
  141. month: buildLocalizeFn({
  142. values: monthValues,
  143. defaultWidth: 'wide'
  144. }),
  145. day: buildLocalizeFn({
  146. values: dayValues,
  147. defaultWidth: 'wide'
  148. }),
  149. dayPeriod: buildLocalizeFn({
  150. values: dayPeriodValues,
  151. defaultWidth: 'wide',
  152. formattingValues: formattingDayPeriodValues,
  153. defaultFormattingWidth: 'wide'
  154. })
  155. };
  156. export default localize;