FullCalendar.globalLocales.push(function () {
  'use strict';

  function affix(buttonText) {
    return (buttonText === 'Tag' || buttonText === 'Monat') ? 'r' :
      buttonText === 'Jahr' ? 's' : ''
  }

  var de = {
    code: 'de',
    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.
    },
    buttonText: {
      prev: 'Zurück',
      next: 'Vor',
      today: 'Heute',
      year: 'Jahr',
      month: 'Monat',
      week: 'Woche',
      day: 'Tag',
      list: 'Terminübersicht',
    },
    weekText: 'KW',
    weekTextLong: 'Woche',
    allDayText: 'Ganztägig',
    moreLinkText: function(n) {
      return '+ weitere ' + n
    },
    noEventsText: 'Keine Ereignisse anzuzeigen',
    buttonHints: {
      prev(buttonText) {
        return `Vorherige${affix(buttonText)} ${buttonText}`
      },
      next(buttonText) {
        return `Nächste${affix(buttonText)} ${buttonText}`
      },
      today(buttonText) {
        // → Heute, Diese Woche, Dieser Monat, Dieses Jahr
        if (buttonText === 'Tag') {
          return 'Heute'
        }
        return `Diese${affix(buttonText)} ${buttonText}`
      },
    },
    viewHint(buttonText) {
      // → Tagesansicht, Wochenansicht, Monatsansicht, Jahresansicht
      const glue = buttonText === 'Woche' ? 'n' : buttonText === 'Monat' ? 's' : 'es';
      return buttonText + glue + 'ansicht'
    },
    navLinkHint: 'Gehe zu $0',
    moreLinkHint(eventCnt) {
      return 'Zeige ' + (eventCnt === 1 ?
        'ein weiteres Ereignis' :
        eventCnt + ' weitere Ereignisse')
    },
    closeHint: 'Schließen',
    timeHint: 'Uhrzeit',
    eventHint: 'Ereignis',
  };

  return de;

}());