Fix namespace handling for uncategorized-categories-exceptionlist
[mediawiki.git] / resources / lib / moment / locale / lb.js
blobfe6b34beb08dd2404237ff2832fb4272e4e34822
1 // moment.js locale configuration
2 // locale : Luxembourgish (lb)
3 // author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz
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
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     }
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     }
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     }
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     }
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 }));