index.js 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import buildLocalizeFn from "../../../_lib/buildLocalizeFn/index.js";
  2. var eraValues = {
  3. narrow: ['пр.н.е.', 'н.е.'],
  4. abbreviated: ['преди н. е.', 'н. е.'],
  5. wide: ['преди новата ера', 'новата ера']
  6. };
  7. var quarterValues = {
  8. narrow: ['1', '2', '3', '4'],
  9. abbreviated: ['1-во тримес.', '2-ро тримес.', '3-то тримес.', '4-то тримес.'],
  10. wide: ['1-во тримесечие', '2-ро тримесечие', '3-то тримесечие', '4-то тримесечие']
  11. };
  12. var monthValues = {
  13. abbreviated: ['яну', 'фев', 'мар', 'апр', 'май', 'юни', 'юли', 'авг', 'сеп', 'окт', 'ное', 'дек'],
  14. wide: ['януари', 'февруари', 'март', 'април', 'май', 'юни', 'юли', 'август', 'септември', 'октомври', 'ноември', 'декември']
  15. };
  16. var dayValues = {
  17. narrow: ['Н', 'П', 'В', 'С', 'Ч', 'П', 'С'],
  18. short: ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
  19. abbreviated: ['нед', 'пон', 'вто', 'сря', 'чет', 'пет', 'съб'],
  20. wide: ['неделя', 'понеделник', 'вторник', 'сряда', 'четвъртък', 'петък', 'събота']
  21. };
  22. var dayPeriodValues = {
  23. wide: {
  24. am: 'преди обяд',
  25. pm: 'след обяд',
  26. midnight: 'в полунощ',
  27. noon: 'на обяд',
  28. morning: 'сутринта',
  29. afternoon: 'следобед',
  30. evening: 'вечерта',
  31. night: 'през нощта'
  32. }
  33. };
  34. function isFeminine(unit) {
  35. return unit === 'year' || unit === 'week' || unit === 'minute' || unit === 'second';
  36. }
  37. function isNeuter(unit) {
  38. return unit === 'quarter';
  39. }
  40. function numberWithSuffix(number, unit, masculine, feminine, neuter) {
  41. var suffix = isNeuter(unit) ? neuter : isFeminine(unit) ? feminine : masculine;
  42. return number + '-' + suffix;
  43. }
  44. var ordinalNumber = function ordinalNumber(dirtyNumber, options) {
  45. var number = Number(dirtyNumber);
  46. var unit = options === null || options === void 0 ? void 0 : options.unit;
  47. if (number === 0) {
  48. return numberWithSuffix(0, unit, 'ев', 'ева', 'ево');
  49. } else if (number % 1000 === 0) {
  50. return numberWithSuffix(number, unit, 'ен', 'на', 'но');
  51. } else if (number % 100 === 0) {
  52. return numberWithSuffix(number, unit, 'тен', 'тна', 'тно');
  53. }
  54. var rem100 = number % 100;
  55. if (rem100 > 20 || rem100 < 10) {
  56. switch (rem100 % 10) {
  57. case 1:
  58. return numberWithSuffix(number, unit, 'ви', 'ва', 'во');
  59. case 2:
  60. return numberWithSuffix(number, unit, 'ри', 'ра', 'ро');
  61. case 7:
  62. case 8:
  63. return numberWithSuffix(number, unit, 'ми', 'ма', 'мо');
  64. }
  65. }
  66. return numberWithSuffix(number, unit, 'ти', 'та', 'то');
  67. };
  68. var localize = {
  69. ordinalNumber: ordinalNumber,
  70. era: buildLocalizeFn({
  71. values: eraValues,
  72. defaultWidth: 'wide'
  73. }),
  74. quarter: buildLocalizeFn({
  75. values: quarterValues,
  76. defaultWidth: 'wide',
  77. argumentCallback: function argumentCallback(quarter) {
  78. return quarter - 1;
  79. }
  80. }),
  81. month: buildLocalizeFn({
  82. values: monthValues,
  83. defaultWidth: 'wide'
  84. }),
  85. day: buildLocalizeFn({
  86. values: dayValues,
  87. defaultWidth: 'wide'
  88. }),
  89. dayPeriod: buildLocalizeFn({
  90. values: dayPeriodValues,
  91. defaultWidth: 'wide'
  92. })
  93. };
  94. export default localize;