index.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. import buildLocalizeFn from "../../../_lib/buildLocalizeFn/index.js";
  2. /**
  3. * General information
  4. * Reference: https://aplicacions.llengua.gencat.cat
  5. * Reference: https://www.uoc.edu/portal/ca/servei-linguistic/convencions/abreviacions/simbols/simbols-habituals.html
  6. */
  7. /**
  8. * Abans de Crist: https://aplicacions.llengua.gencat.cat/llc/AppJava/index.html?input_cercar=abans+de+crist&action=Principal&method=detall_completa&numPagina=1&idHit=6876&database=FITXES_PUB&tipusFont=Fitxes%20de%20l%27Optimot&idFont=6876&titol=abans%20de%20Crist%20(abreviatura)%20/%20abans%20de%20Crist%20(sigla)&numeroResultat=1&clickLink=detall&tipusCerca=cerca.fitxes
  9. * Desprest de Crist: https://aplicacions.llengua.gencat.cat/llc/AppJava/index.html?input_cercar=despr%E9s+de+crist&action=Principal&method=detall_completa&numPagina=1&idHit=6879&database=FITXES_PUB&tipusFont=Fitxes%20de%20l%27Optimot&idFont=6879&titol=despr%E9s%20de%20Crist%20(sigla)%20/%20despr%E9s%20de%20Crist%20(abreviatura)&numeroResultat=1&clickLink=detall&tipusCerca=cerca.fitxes
  10. */
  11. var eraValues = {
  12. narrow: ['aC', 'dC'],
  13. abbreviated: ['a. de C.', 'd. de C.'],
  14. wide: ['abans de Crist', 'després de Crist']
  15. };
  16. var quarterValues = {
  17. narrow: ['1', '2', '3', '4'],
  18. abbreviated: ['T1', 'T2', 'T3', 'T4'],
  19. wide: ['1r trimestre', '2n trimestre', '3r trimestre', '4t trimestre']
  20. };
  21. /**
  22. * Dins d'un text convé fer servir la forma sencera dels mesos, ja que sempre és més clar el mot sencer que l'abreviatura, encara que aquesta sigui força coneguda.
  23. * Cal reservar, doncs, les abreviatures per a les llistes o classificacions, els gràfics, les taules o quadres estadístics, els textos publicitaris, etc.
  24. *
  25. * Reference: https://aplicacions.llengua.gencat.cat/llc/AppJava/index.html?input_cercar=abreviacions+mesos&action=Principal&method=detall_completa&numPagina=1&idHit=8402&database=FITXES_PUB&tipusFont=Fitxes%20de%20l%27Optimot&idFont=8402&titol=abreviatures%20dels%20mesos%20de%20l%27any&numeroResultat=5&clickLink=detall&tipusCerca=cerca.fitxes
  26. */
  27. var monthValues = {
  28. narrow: ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'],
  29. /**
  30. * Les abreviatures dels mesos de l'any es formen seguint una de les normes generals de formació d'abreviatures.
  31. * S'escriu la primera síl·laba i les consonants de la síl·laba següent anteriors a la primera vocal.
  32. * Els mesos de març, maig i juny no s'abreugen perquè són paraules d'una sola síl·laba.
  33. */
  34. abbreviated: ['gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.'],
  35. wide: ['gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', 'novembre', 'desembre']
  36. };
  37. /**
  38. * Les abreviatures dels dies de la setmana comencen totes amb la lletra d.
  39. * Tot seguit porten la consonant següent a la i, excepte en el cas de dimarts, dimecres i diumenge, en què aquesta consonant és la m i, per tant, hi podria haver confusió.
  40. * Per evitar-ho, s'ha substituït la m per una t (en el cas de dimarts), una c (en el cas de dimecres) i una g (en el cas de diumenge), respectivament.
  41. *
  42. * Seguint la norma general d'ús de les abreviatures, les dels dies de la setmana sempre porten punt final.
  43. * Igualment, van amb la primera lletra en majúscula quan la paraula sencera també hi aniria.
  44. * En canvi, van amb la primera lletra en minúscula quan la inicial de la paraula sencera també hi aniria.
  45. *
  46. * Reference: https://aplicacions.llengua.gencat.cat/llc/AppJava/index.html?input_cercar=abreviatures+dies&action=Principal&method=detall_completa&numPagina=1&idHit=8387&database=FITXES_PUB&tipusFont=Fitxes%20de%20l%27Optimot&idFont=8387&titol=abreviatures%20dels%20dies%20de%20la%20setmana&numeroResultat=1&clickLink=detall&tipusCerca=cerca.tot
  47. */
  48. var dayValues = {
  49. narrow: ['dg.', 'dl.', 'dt.', 'dm.', 'dj.', 'dv.', 'ds.'],
  50. short: ['dg.', 'dl.', 'dt.', 'dm.', 'dj.', 'dv.', 'ds.'],
  51. abbreviated: ['dg.', 'dl.', 'dt.', 'dm.', 'dj.', 'dv.', 'ds.'],
  52. wide: ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte']
  53. };
  54. /**
  55. * Reference: https://aplicacions.llengua.gencat.cat/llc/AppJava/index.html?action=Principal&method=detall&input_cercar=parts+del+dia&numPagina=1&database=FITXES_PUB&idFont=12801&idHit=12801&tipusFont=Fitxes+de+l%27Optimot&numeroResultat=1&databases_avansada=&categories_avansada=&clickLink=detall&titol=Nom+de+les+parts+del+dia&tematica=&tipusCerca=cerca.fitxes
  56. */
  57. var dayPeriodValues = {
  58. narrow: {
  59. am: 'am',
  60. pm: 'pm',
  61. midnight: 'mitjanit',
  62. noon: 'migdia',
  63. morning: 'matí',
  64. afternoon: 'tarda',
  65. evening: 'vespre',
  66. night: 'nit'
  67. },
  68. abbreviated: {
  69. am: 'a.m.',
  70. pm: 'p.m.',
  71. midnight: 'mitjanit',
  72. noon: 'migdia',
  73. morning: 'matí',
  74. afternoon: 'tarda',
  75. evening: 'vespre',
  76. night: 'nit'
  77. },
  78. wide: {
  79. am: 'ante meridiem',
  80. pm: 'post meridiem',
  81. midnight: 'mitjanit',
  82. noon: 'migdia',
  83. morning: 'matí',
  84. afternoon: 'tarda',
  85. evening: 'vespre',
  86. night: 'nit'
  87. }
  88. };
  89. var formattingDayPeriodValues = {
  90. narrow: {
  91. am: 'am',
  92. pm: 'pm',
  93. midnight: 'de la mitjanit',
  94. noon: 'del migdia',
  95. morning: 'del matí',
  96. afternoon: 'de la tarda',
  97. evening: 'del vespre',
  98. night: 'de la nit'
  99. },
  100. abbreviated: {
  101. am: 'AM',
  102. pm: 'PM',
  103. midnight: 'de la mitjanit',
  104. noon: 'del migdia',
  105. morning: 'del matí',
  106. afternoon: 'de la tarda',
  107. evening: 'del vespre',
  108. night: 'de la nit'
  109. },
  110. wide: {
  111. am: 'ante meridiem',
  112. pm: 'post meridiem',
  113. midnight: 'de la mitjanit',
  114. noon: 'del migdia',
  115. morning: 'del matí',
  116. afternoon: 'de la tarda',
  117. evening: 'del vespre',
  118. night: 'de la nit'
  119. }
  120. };
  121. /**
  122. * Quan van en singular, els nombres ordinals es representen, en forma d’abreviatura, amb la xifra seguida de l’última lletra del mot desplegat.
  123. * És optatiu posar punt després de la lletra.
  124. *
  125. * Reference: https://aplicacions.llengua.gencat.cat/llc/AppJava/pdf/abrevia.pdf#page=18
  126. */
  127. var ordinalNumber = function ordinalNumber(dirtyNumber, _options) {
  128. var number = Number(dirtyNumber);
  129. var rem100 = number % 100;
  130. if (rem100 > 20 || rem100 < 10) {
  131. switch (rem100 % 10) {
  132. case 1:
  133. return number + 'r';
  134. case 2:
  135. return number + 'n';
  136. case 3:
  137. return number + 'r';
  138. case 4:
  139. return number + 't';
  140. }
  141. }
  142. return number + 'è';
  143. };
  144. var localize = {
  145. ordinalNumber: ordinalNumber,
  146. era: buildLocalizeFn({
  147. values: eraValues,
  148. defaultWidth: 'wide'
  149. }),
  150. quarter: buildLocalizeFn({
  151. values: quarterValues,
  152. defaultWidth: 'wide',
  153. argumentCallback: function argumentCallback(quarter) {
  154. return quarter - 1;
  155. }
  156. }),
  157. month: buildLocalizeFn({
  158. values: monthValues,
  159. defaultWidth: 'wide'
  160. }),
  161. day: buildLocalizeFn({
  162. values: dayValues,
  163. defaultWidth: 'wide'
  164. }),
  165. dayPeriod: buildLocalizeFn({
  166. values: dayPeriodValues,
  167. defaultWidth: 'wide',
  168. formattingValues: formattingDayPeriodValues,
  169. defaultFormattingWidth: 'wide'
  170. })
  171. };
  172. export default localize;