178de4c2ce9963974167c7e202035641ae3a96f808a1d41d8812dd853949682e48f6dc1569ddc40db8f2570859117ec2470423ab986cfcd7a5bc3ce5a2aa4d 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. //! moment.js locale configuration
  2. //! locale : Luxembourgish (lb)
  3. //! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz
  4. import moment from '../moment';
  5. function processRelativeTime(number, withoutSuffix, key, isFuture) {
  6. var format = {
  7. 'm': ['eng Minutt', 'enger Minutt'],
  8. 'h': ['eng Stonn', 'enger Stonn'],
  9. 'd': ['een Dag', 'engem Dag'],
  10. 'M': ['ee Mount', 'engem Mount'],
  11. 'y': ['ee Joer', 'engem Joer']
  12. };
  13. return withoutSuffix ? format[key][0] : format[key][1];
  14. }
  15. function processFutureTime(string) {
  16. var number = string.substr(0, string.indexOf(' '));
  17. if (eifelerRegelAppliesToNumber(number)) {
  18. return 'a ' + string;
  19. }
  20. return 'an ' + string;
  21. }
  22. function processPastTime(string) {
  23. var number = string.substr(0, string.indexOf(' '));
  24. if (eifelerRegelAppliesToNumber(number)) {
  25. return 'viru ' + string;
  26. }
  27. return 'virun ' + string;
  28. }
  29. /**
  30. * Returns true if the word before the given number loses the '-n' ending.
  31. * e.g. 'an 10 Deeg' but 'a 5 Deeg'
  32. *
  33. * @param number {integer}
  34. * @returns {boolean}
  35. */
  36. function eifelerRegelAppliesToNumber(number) {
  37. number = parseInt(number, 10);
  38. if (isNaN(number)) {
  39. return false;
  40. }
  41. if (number < 0) {
  42. // Negative Number --> always true
  43. return true;
  44. } else if (number < 10) {
  45. // Only 1 digit
  46. if (4 <= number && number <= 7) {
  47. return true;
  48. }
  49. return false;
  50. } else if (number < 100) {
  51. // 2 digits
  52. var lastDigit = number % 10, firstDigit = number / 10;
  53. if (lastDigit === 0) {
  54. return eifelerRegelAppliesToNumber(firstDigit);
  55. }
  56. return eifelerRegelAppliesToNumber(lastDigit);
  57. } else if (number < 10000) {
  58. // 3 or 4 digits --> recursively check first digit
  59. while (number >= 10) {
  60. number = number / 10;
  61. }
  62. return eifelerRegelAppliesToNumber(number);
  63. } else {
  64. // Anything larger than 4 digits: recursively check first n-3 digits
  65. number = number / 1000;
  66. return eifelerRegelAppliesToNumber(number);
  67. }
  68. }
  69. export default moment.defineLocale('lb', {
  70. months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
  71. monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
  72. monthsParseExact : true,
  73. weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
  74. weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
  75. weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
  76. weekdaysParseExact : true,
  77. longDateFormat: {
  78. LT: 'H:mm [Auer]',
  79. LTS: 'H:mm:ss [Auer]',
  80. L: 'DD.MM.YYYY',
  81. LL: 'D. MMMM YYYY',
  82. LLL: 'D. MMMM YYYY H:mm [Auer]',
  83. LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'
  84. },
  85. calendar: {
  86. sameDay: '[Haut um] LT',
  87. sameElse: 'L',
  88. nextDay: '[Muer um] LT',
  89. nextWeek: 'dddd [um] LT',
  90. lastDay: '[Gëschter um] LT',
  91. lastWeek: function () {
  92. // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
  93. switch (this.day()) {
  94. case 2:
  95. case 4:
  96. return '[Leschten] dddd [um] LT';
  97. default:
  98. return '[Leschte] dddd [um] LT';
  99. }
  100. }
  101. },
  102. relativeTime : {
  103. future : processFutureTime,
  104. past : processPastTime,
  105. s : 'e puer Sekonnen',
  106. m : processRelativeTime,
  107. mm : '%d Minutten',
  108. h : processRelativeTime,
  109. hh : '%d Stonnen',
  110. d : processRelativeTime,
  111. dd : '%d Deeg',
  112. M : processRelativeTime,
  113. MM : '%d Méint',
  114. y : processRelativeTime,
  115. yy : '%d Joer'
  116. },
  117. ordinalParse: /\d{1,2}\./,
  118. ordinal: '%d.',
  119. week: {
  120. dow: 1, // Monday is the first day of the week.
  121. doy: 4 // The week that contains Jan 4th is the first week of the year.
  122. }
  123. });