Indicate the actual version of HHVM in use
[lhc/web/wiklou.git] / resources / lib / moment / lang / lb.js
1 // moment.js language configuration
2 // language : Luxembourgish (lb)
3 // author : mweimerskirch : https://github.com/mweimerskirch
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 'dd': [number + ' Deeg', number + ' Deeg'],
24 'M': ['ee Mount', 'engem Mount'],
25 'MM': [number + ' Méint', number + ' Méint'],
26 'y': ['ee Joer', 'engem Joer'],
27 'yy': [number + ' Joer', number + ' Joer']
28 };
29 return withoutSuffix ? format[key][0] : format[key][1];
30 }
31
32 function processFutureTime(string) {
33 var number = string.substr(0, string.indexOf(' '));
34 if (eifelerRegelAppliesToNumber(number)) {
35 return "a " + string;
36 }
37 return "an " + string;
38 }
39
40 function processPastTime(string) {
41 var number = string.substr(0, string.indexOf(' '));
42 if (eifelerRegelAppliesToNumber(number)) {
43 return "viru " + string;
44 }
45 return "virun " + string;
46 }
47
48 function processLastWeek(string1) {
49 var weekday = this.format('d');
50 if (eifelerRegelAppliesToWeekday(weekday)) {
51 return '[Leschte] dddd [um] LT';
52 }
53 return '[Leschten] dddd [um] LT';
54 }
55
56 /**
57 * Returns true if the word before the given week day loses the "-n" ending.
58 * e.g. "Leschten Dënschdeg" but "Leschte Méindeg"
59 *
60 * @param weekday {integer}
61 * @returns {boolean}
62 */
63 function eifelerRegelAppliesToWeekday(weekday) {
64 weekday = parseInt(weekday, 10);
65 switch (weekday) {
66 case 0: // Sonndeg
67 case 1: // Méindeg
68 case 3: // Mëttwoch
69 case 5: // Freideg
70 case 6: // Samschdeg
71 return true;
72 default: // 2 Dënschdeg, 4 Donneschdeg
73 return false;
74 }
75 }
76
77 /**
78 * Returns true if the word before the given number loses the "-n" ending.
79 * e.g. "an 10 Deeg" but "a 5 Deeg"
80 *
81 * @param number {integer}
82 * @returns {boolean}
83 */
84 function eifelerRegelAppliesToNumber(number) {
85 number = parseInt(number, 10);
86 if (isNaN(number)) {
87 return false;
88 }
89 if (number < 0) {
90 // Negative Number --> always true
91 return true;
92 } else if (number < 10) {
93 // Only 1 digit
94 if (4 <= number && number <= 7) {
95 return true;
96 }
97 return false;
98 } else if (number < 100) {
99 // 2 digits
100 var lastDigit = number % 10, firstDigit = number / 10;
101 if (lastDigit === 0) {
102 return eifelerRegelAppliesToNumber(firstDigit);
103 }
104 return eifelerRegelAppliesToNumber(lastDigit);
105 } else if (number < 10000) {
106 // 3 or 4 digits --> recursively check first digit
107 while (number >= 10) {
108 number = number / 10;
109 }
110 return eifelerRegelAppliesToNumber(number);
111 } else {
112 // Anything larger than 4 digits: recursively check first n-3 digits
113 number = number / 1000;
114 return eifelerRegelAppliesToNumber(number);
115 }
116 }
117
118 return moment.lang('lb', {
119 months: "Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),
120 monthsShort: "Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),
121 weekdays: "Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),
122 weekdaysShort: "So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),
123 weekdaysMin: "So_Mé_Dë_Më_Do_Fr_Sa".split("_"),
124 longDateFormat: {
125 LT: "H:mm [Auer]",
126 L: "DD.MM.YYYY",
127 LL: "D. MMMM YYYY",
128 LLL: "D. MMMM YYYY LT",
129 LLLL: "dddd, D. MMMM YYYY LT"
130 },
131 calendar: {
132 sameDay: "[Haut um] LT",
133 sameElse: "L",
134 nextDay: '[Muer um] LT',
135 nextWeek: 'dddd [um] LT',
136 lastDay: '[Gëschter um] LT',
137 lastWeek: processLastWeek
138 },
139 relativeTime: {
140 future: processFutureTime,
141 past: processPastTime,
142 s: "e puer Sekonnen",
143 m: processRelativeTime,
144 mm: "%d Minutten",
145 h: processRelativeTime,
146 hh: "%d Stonnen",
147 d: processRelativeTime,
148 dd: processRelativeTime,
149 M: processRelativeTime,
150 MM: processRelativeTime,
151 y: processRelativeTime,
152 yy: processRelativeTime
153 },
154 ordinal: '%d.',
155 week: {
156 dow: 1, // Monday is the first day of the week.
157 doy: 4 // The week that contains Jan 4th is the first week of the year.
158 }
159 });
160 }));