138 lines
4.9 KiB
JavaScript
138 lines
4.9 KiB
JavaScript
|
// moment.js locale configuration
|
||
|
// locale : Luxembourgish (lb)
|
||
|
// author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz
|
||
|
|
||
|
// Note: Luxembourgish has a very particular phonological rule ("Eifeler Regel") that causes the
|
||
|
// deletion of the final "n" in certain contexts. That's what the "eifelerRegelAppliesToWeekday"
|
||
|
// and "eifelerRegelAppliesToNumber" methods are meant for
|
||
|
|
||
|
(function (factory) {
|
||
|
if (typeof define === 'function' && define.amd) {
|
||
|
define(['moment'], factory); // AMD
|
||
|
} else if (typeof exports === 'object') {
|
||
|
module.exports = factory(require('../moment')); // Node
|
||
|
} else {
|
||
|
factory(window.moment); // Browser global
|
||
|
}
|
||
|
}(function (moment) {
|
||
|
function processRelativeTime(number, withoutSuffix, key, isFuture) {
|
||
|
var format = {
|
||
|
'm': ['eng Minutt', 'enger Minutt'],
|
||
|
'h': ['eng Stonn', 'enger Stonn'],
|
||
|
'd': ['een Dag', 'engem Dag'],
|
||
|
'M': ['ee Mount', 'engem Mount'],
|
||
|
'y': ['ee Joer', 'engem Joer']
|
||
|
};
|
||
|
return withoutSuffix ? format[key][0] : format[key][1];
|
||
|
}
|
||
|
|
||
|
function processFutureTime(string) {
|
||
|
var number = string.substr(0, string.indexOf(' '));
|
||
|
if (eifelerRegelAppliesToNumber(number)) {
|
||
|
return "a " + string;
|
||
|
}
|
||
|
return "an " + string;
|
||
|
}
|
||
|
|
||
|
function processPastTime(string) {
|
||
|
var number = string.substr(0, string.indexOf(' '));
|
||
|
if (eifelerRegelAppliesToNumber(number)) {
|
||
|
return "viru " + string;
|
||
|
}
|
||
|
return "virun " + string;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns true if the word before the given number loses the "-n" ending.
|
||
|
* e.g. "an 10 Deeg" but "a 5 Deeg"
|
||
|
*
|
||
|
* @param number {integer}
|
||
|
* @returns {boolean}
|
||
|
*/
|
||
|
function eifelerRegelAppliesToNumber(number) {
|
||
|
number = parseInt(number, 10);
|
||
|
if (isNaN(number)) {
|
||
|
return false;
|
||
|
}
|
||
|
if (number < 0) {
|
||
|
// Negative Number --> always true
|
||
|
return true;
|
||
|
} else if (number < 10) {
|
||
|
// Only 1 digit
|
||
|
if (4 <= number && number <= 7) {
|
||
|
return true;
|
||
|
}
|
||
|
return false;
|
||
|
} else if (number < 100) {
|
||
|
// 2 digits
|
||
|
var lastDigit = number % 10, firstDigit = number / 10;
|
||
|
if (lastDigit === 0) {
|
||
|
return eifelerRegelAppliesToNumber(firstDigit);
|
||
|
}
|
||
|
return eifelerRegelAppliesToNumber(lastDigit);
|
||
|
} else if (number < 10000) {
|
||
|
// 3 or 4 digits --> recursively check first digit
|
||
|
while (number >= 10) {
|
||
|
number = number / 10;
|
||
|
}
|
||
|
return eifelerRegelAppliesToNumber(number);
|
||
|
} else {
|
||
|
// Anything larger than 4 digits: recursively check first n-3 digits
|
||
|
number = number / 1000;
|
||
|
return eifelerRegelAppliesToNumber(number);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return moment.defineLocale('lb', {
|
||
|
months: "Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),
|
||
|
monthsShort: "Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),
|
||
|
weekdays: "Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),
|
||
|
weekdaysShort: "So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),
|
||
|
weekdaysMin: "So_Mé_Dë_Më_Do_Fr_Sa".split("_"),
|
||
|
longDateFormat: {
|
||
|
LT: "H:mm [Auer]",
|
||
|
L: "DD.MM.YYYY",
|
||
|
LL: "D. MMMM YYYY",
|
||
|
LLL: "D. MMMM YYYY LT",
|
||
|
LLLL: "dddd, D. MMMM YYYY LT"
|
||
|
},
|
||
|
calendar: {
|
||
|
sameDay: "[Haut um] LT",
|
||
|
sameElse: "L",
|
||
|
nextDay: '[Muer um] LT',
|
||
|
nextWeek: 'dddd [um] LT',
|
||
|
lastDay: '[Gëschter um] LT',
|
||
|
lastWeek: function () {
|
||
|
// Different date string for "Dënschdeg" (Tuesday) and "Donneschdeg" (Thursday) due to phonological rule
|
||
|
switch (this.day()) {
|
||
|
case 2:
|
||
|
case 4:
|
||
|
return '[Leschten] dddd [um] LT';
|
||
|
default:
|
||
|
return '[Leschte] dddd [um] LT';
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
relativeTime : {
|
||
|
future : processFutureTime,
|
||
|
past : processPastTime,
|
||
|
s : "e puer Sekonnen",
|
||
|
m : processRelativeTime,
|
||
|
mm : "%d Minutten",
|
||
|
h : processRelativeTime,
|
||
|
hh : "%d Stonnen",
|
||
|
d : processRelativeTime,
|
||
|
dd : "%d Deeg",
|
||
|
M : processRelativeTime,
|
||
|
MM : "%d Méint",
|
||
|
y : processRelativeTime,
|
||
|
yy : "%d Joer"
|
||
|
},
|
||
|
ordinal: '%d.',
|
||
|
week: {
|
||
|
dow: 1, // Monday is the first day of the week.
|
||
|
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||
|
}
|
||
|
});
|
||
|
}));
|