138 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
//! moment.js locale configuration
 | 
						|
//! locale : Luxembourgish [lb]
 | 
						|
//! author : mweimerskirch : https://github.com/mweimerskirch
 | 
						|
//! author : David Raison : https://github.com/kwisatz
 | 
						|
 | 
						|
import moment from '../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);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
export default 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(
 | 
						|
            '_'
 | 
						|
        ),
 | 
						|
    monthsParseExact: true,
 | 
						|
    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('_'),
 | 
						|
    weekdaysParseExact: true,
 | 
						|
    longDateFormat: {
 | 
						|
        LT: 'H:mm [Auer]',
 | 
						|
        LTS: 'H:mm:ss [Auer]',
 | 
						|
        L: 'DD.MM.YYYY',
 | 
						|
        LL: 'D. MMMM YYYY',
 | 
						|
        LLL: 'D. MMMM YYYY H:mm [Auer]',
 | 
						|
        LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
 | 
						|
    },
 | 
						|
    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',
 | 
						|
        ss: '%d 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',
 | 
						|
    },
 | 
						|
    dayOfMonthOrdinalParse: /\d{1,2}\./,
 | 
						|
    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.
 | 
						|
    },
 | 
						|
});
 |