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