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