var messages = {
  en: {
    title: 'Stairs',
    systemID: 'System ID',
    firmwareVersion: 'Firmware version: ',
    copyright: 'Copyright © 2017 Mark van Renswoude',
    loading: 'Please wait, loading configuration...',
    rebootPending: 'The system will be rebooted, please refresh this page afterwards',

    applyButton: 'Apply',
    applyButtonSaving: 'Saving...',
    deviceTime: 'Time: ',

    wifiStatus: {
      accesspoint: {
        title: 'AP: ',
        disabled: 'Disabled'
      },

      stationmode: {
        title: 'WiFi: ',
        disabled: 'Disabled',
        idle: 'Idle',
        noSSID: 'SSID not found',
        scanCompleted: 'Scan completed',
        connectFailed: 'Failed to connect',
        connectionLost: 'Connection lost',
        disconnected: 'Disconnected'
      }
    },

    status: {
      tabTitle: 'Status',
      title: 'Current status',

      allStepsTrue: 'Set intensity for all steps',
      allStepsFalse: 'Set intensity individually'
    },

    triggers: {
      tabTitle: 'Triggers',
      timeTitle: 'Time',
      timeInternet: 'Please note that time triggers require an internet connection.',
      timeNoData: 'No time triggers defined yet',

      timeEnabled: 'Enable time triggers',
      timeTransitionTime: 'Transition time in milliseconds',

      timeAdd: 'Add',
      timeDelete: 'Delete',

      timeTriggerEnabled: 'Enabled',
      timeFixedTime: 'Fixed time',
      timeSunrise: 'Sunrise',
      timeSunset: 'Sunset',
      timeTime: 'Time in minutes',

      timeMonday: 'Monday',
      timeTuesday: 'Tuesday',
      timeWednesday: 'Wednesday',
      timeThursday: 'Thursday',
      timeFriday: 'Friday',
      timeSaturday: 'Saturday',
      timeSunday: 'Sunday',

      motionTitle: 'Motion',
      motionNoData: 'No motion triggers defined yet',

      motionEnabled: 'Enable motion triggers',
      motionEnabledDuringTimeTrigger: 'Activate when a time trigger is active',
      motionEnabledDuringTimeTriggerNever: 'Do not activate when a time trigger is active',
      motionEnabledDuringTimeTriggerAlways: 'Activate even if a time trigger is active',
      motionEnabledDuringTimeTriggerOnly: 'Activate only when a time trigger is active',
      motionEnabledDuringDay: 'Activate during the day (between sunrise and sunset)',
      motionTransitionTime: 'Transition time in milliseconds',
      motionDelay: 'Keep on time in milliseconds',

      motionTriggerEnabled: 'Enabled',
      motionAdd: 'Add',
      motionDelete: 'Delete',

      motionPin: 'GPIO pin (active high)',
      motionDirection: 'Sweep animation',
      motionDirectionNonDirectional: 'None (all steps at the same time)',
      motionDirectionTopDown: 'Top down',
      motionDirectionBottomUp: 'Bottom up'
    },

    connection: {
      tabTitle: 'Connection',
      title: 'Connection parameters',

      accesspoint: 'Enable access point',
      accesspointHint: 'Allows for a direct connection from your device to this Stairs module for configuration purposes. The Stairs configuration is available on http://192.168.1.4/ when you are connected to it. Turn it off as soon as station mode is configured, as it is not secured in any way. You can always turn this option back on by pushing the access point button until the LED lights up.',

      stationmode: 'Enable station mode',
      stationmodeHint: 'Connect this Stairs module to your own WiFi router. Please enter the SSID, password and further configuration below.',

      ssid: 'SSID',
      password: 'Password',

      dhcp: 'Use DHCP',
      dhcpHint: 'Automatically assigns an IP address to this Stairs module. You probably want to keep this on unless you know what you\'re doing.',

      ipaddress: 'IP address',
      subnetmask: 'Subnet mask',
      gateway: 'Gateway',
      hostname: 'Hostname',
      hostnamePlaceholder: 'Default: mac address'
    },

    system: {
      tabTitle: 'System',
      ntpTitle: 'Time synchronisation (NTP)',
      pinsTitle: 'Hardware pinout',
      mapsTitle: 'Google Maps API',
      firmwareTitle: 'Firmware update',
      calibrateTitle: 'Calibrate',

      calibrateButton: 'Calibrate steps',
      calibrateHint: 'Use the button below to configure the number of steps, and to adjust the brightness of each individual step',

      ntpServer: 'NTP server',
      ntpInterval: 'Refresh interval (in minutes)',
      ntpLat: 'Latitude',
      ntpLng: 'Longitude',
      ntpLocation: 'Get latitude / longitude from location',
      ntpLocationSearch: 'Search',

      pinLEDAP: 'Access Point status LED pin (+3.3v)',
      pinLEDSTA: 'Station Mode status LED pin (+3.3v)',
      pinAPButton: 'Enable Access Point button pin (active low)',
      pinPWMDriverSDA: 'PCA9685 PWM driver SDA pin (data)',
      pinPWMDriverSCL: 'PCA9685 PWM driver SCL pin (clock)',
      pwmAddress: 'PCA9685 PWM driver I²C address',
      pwmFrequency: 'PCA9685 PWM driver frequency',

      mapsAPIKey: 'Google Maps API key',
      mapsAPIKeyhint: 'Recommended if using time triggers. Used for looking up the current timezone. Will work without an API key, but Google might throttle your request. Register for a free API key at http://console.developers.google.com/ and activate it\'s use for the Maps API.'
    },

    error: {
      loadStatus: 'Could not load system status',
      loadConnection: 'Could not load connection settings',
      loadSystem: 'Could not load system settings',
      loadTimeTriggers: 'Could not load time trigger settings',
      loadMotionTriggers: 'Could not load motion trigger settings',
      applyConnection: 'Could not save connection settings',
      applySystem: 'Could not save system settings',
      updateWiFiStatus: 'Could not retrieve WiFi status',
      uploadFirmware: 'Error while uploading firmware',
      updateSteps: 'Could not apply new step values',
      searchLocation: 'Could not look up location coordinates',
      applyTimeTriggers: 'Could not save time trigger settings',
      applyMotionTriggers: 'Could not save motion trigger settings',
      loadSteps: 'Could not load calibration settings',
      updateCalibration: 'Could not save calibration settings',

      resetError: 'The system reports that it has been reset unexpectedly. The last power up status is:',
      resetReason: {
        0: 'Normal startup',
        1: 'Unresponsive, reset by hardware watchdog',
        2: 'Unhandled exception',
        3: 'Unresponsive, reset by software watchdog',
        4: 'System restart requested',
        5: 'Wake up from deep sleep',
        6: 'System reset'
      },
      stackTrace: 'A stack trace is available. Please send it to your nearest developer and/or delete it from this Stairs device to remove this message.',
      stackTraceDownload: 'Download',
      stackTraceDelete: 'Remove',

      stackTraceDeleteError: 'Could not remove stack trace'
    },

    calibration: {
      title: 'Calibration wizard',
      backButton: 'Back',
      count: 'Number of steps',
      nextButton: 'Next',
      applyButton: 'Complete',
      allStepsValue: 'Intensity for all steps',
      ranges: 'Min / max values per step',
      useCurve: 'Use logarithmic curve for intensity (recommended for LEDs)'
    }
  },

  nl: {
    title: 'Trap',
    systemID: 'Systeem ID',
    firmwareVersion: 'Firmware versie: ',
    copyright: 'Copyright © 2017 Mark van Renswoude',
    loading: 'Een ogenblik geduld, bezig met laden van configuratie...',
    rebootPending: 'Het systeem wordt opnieuw opgestart, ververse deze pagina nadien',

    applyButton: 'Opslaan',
    applyButtonSaving: 'Bezig met opslaan...',
    deviceTime: 'Tijd: ',

    wifiStatus: {
      accesspoint: {
        title: 'AP: ',
        disabled: 'Uitgeschakeld'
      },

      stationmode: {
        title: 'WiFi: ',
        disabled: 'Uitgeschakeld',
        idle: 'Slaapstand',
        noSSID: 'SSID niet gevonden',
        scanCompleted: 'Scan afgerond',
        connectFailed: 'Kan geen verbinding maken',
        connectionLost: 'Verbinding verloren',
        disconnected: 'Niet verbonden'
      }
    },

    status: {
      tabTitle: 'Status',
      title: 'Huidige status',

      allStepsTrue: 'Alle treden dezelfde intensiteit',
      allStepsFalse: 'Treden individueel instellen'
    },

    triggers: {
      tabTitle: 'Triggers',
      timeTitle: 'Tijd',
      timeInternet: 'Let op dat voor tijd triggers een internetverbinding vereist is.',
      timeNoData: 'Nog geen tijd triggers geconfigureerd',

      timeEnabled: 'Tijd triggers inschakelen',
      timeTransitionTime: 'Transitie tijd in milliseconden',

      timeAdd: 'Toevoegen',
      timeDelete: 'Verwijderen',

      timeTriggerEnabled: 'Actief',
      timeFixedTime: 'Vaste tijd',
      timeSunrise: 'Zonsopkomst',
      timeSunset: 'Zonsondergang',
      timeTime: 'Tijd in minuten',

      timeMonday: 'Maandag',
      timeTuesday: 'Dinsdag',
      timeWednesday: 'Woensdag',
      timeThursday: 'Donderdag',
      timeFriday: 'Vrijdag',
      timeSaturday: 'Zaterdag',
      timeSunday: 'Zondag',

      motionTitle: 'Beweging',
      motionNoData: 'Nog geen beweging triggers geconfigureerd',

      motionEnabled: 'Beweging triggers inschakelen',
      motionEnabledDuringTimeTrigger: 'Inschakelen als er een tijd trigger actief is',
      motionEnabledDuringTimeTriggerNever: 'Niet activeren als er een tijd trigger actief is',
      motionEnabledDuringTimeTriggerAlways: 'Activeer ook als er een tijd trigger actief is',
      motionEnabledDuringTimeTriggerOnly: 'Alleen activeren als er een tijd trigger actief is',
      motionEnabledDuringDay: 'Ook overdag inschakelen (tussen zonsopgang en zonsondergang)',
      motionTransitionTime: 'Transitie tijd in milliseconden',
      motionDelay: 'Tijd aan in milliseconden',

      motionTriggerEnabled: 'Actief',
      motionAdd: 'Toevoegen',
      motionDelete: 'Verwijderen',

      motionPin: 'GPIO pin (actief hoog)',
      motionDirection: 'Animatie',
      motionDirectionNonDirectional: 'Geen (alle treden gelijktijdig)',
      motionDirectionTopDown: 'Boven naar beneden',
      motionDirectionBottomUp: 'Beneden naar boven'
    },

    connection: {
      tabTitle: 'Verbinding',
      title: 'Verbinding configuratie',

      accesspoint: 'Access point inschakelen',
      accesspointHint: 'Maakt het mogelijk om een directe connectie vanaf een apparaat naar deze Trap module te maken om de module te configureren. De Trap module is te benaderen via http://192.168.1.4/ nadat je connectie hebt gemaakt. Schakel deze optie uit na het configureren, aangezien deze niet beveiligd is. Je kunt deze optie ook inschakelen door op de Access point knop te drukken totdat de LED aan gaat.',

      stationmode: 'Verbinding met WiFi maken',
      stationmodeHint: 'Verbind deze Trap module aan je eigen WiFi router. Vul hieronder het SSID en wachtwoord in, en configureer eventuel de overige opties.',

      ssid: 'SSID',
      password: 'Wachtwoord',

      dhcp: 'Gebruik DHCP',
      dhcpHint: 'Automatisch een IP adres toewijzen aan deze Trap module. Waarschijnlijk wil je deze optie aan laten, tenzij je weet waar je mee bezig bent.',

      ipaddress: 'IP adres',
      subnetmask: 'Subnet masker',
      gateway: 'Gateway',
      hostname: 'Hostnaam',
      hostnamePlaceholder: 'Standaard: mac adres'
    },

    system: {
      tabTitle: 'Systeem',
      ntpTitle: 'Tijd synchronisatie (NTP)',
      pinsTitle: 'Hardware aansluitingen',
      mapsTitle: 'Google Maps API',
      firmwareTitle: 'Firmware bijwerken',
      calibrateTitle: 'Kalibratie',

      calibrateButton: 'Kalibreer treden',
      calibrateHint: 'Gebruik onderstaande knop om het aantal treden in te stellen, en om de helderheid van elke trede aan te passen',

      ntpServer: 'NTP server',
      ntpInterval: 'Ververs interval (in minuten)',
      ntpLat: 'Breedtegraad',
      ntpLng: 'Lengtegraad',
      ntpLocation: 'Breedtegraad / lengtegraad ophalen op basis van locatie',
      ntpLocationSearch: 'Zoeken',

      pinLEDAP: 'Access Point status LED pin (+3.3v)',
      pinLEDSTA: 'WiFi status LED pin (+3.3v)',
      pinAPButton: 'Access Point inschakelen knop pin (actief laag)',
      pinPWMDriverSDA: 'PCA9685 PWM driver SDA pin (data)',
      pinPWMDriverSCL: 'PCA9685 PWM driver SCL pin (klok)',
      pwmAddress: 'PCA9685 PWM driver I²C address',
      pwmFrequency: 'PCA9685 PWM driver frequency',

      mapsAPIKey: 'Google Maps API key',
      mapsAPIKeyhint: 'Aangeraden bij gebruik van de tijd triggers. Wordt gebruikt om de huidige tijdzone te bepalen. Werkt ook zonder API key, maar Google beperkt dan sterk de requests. Registreer een gratis API key op http://console.developers.google.com/ en activeer het voor gebruik met de Maps API.'
    },

    error: {
      loadStatus: 'Kan systeemstatus niet ophalen',
      loadConnection: 'Kan verbinding instellingen niet ophalen',
      loadSystem: 'Kan systeem instellingen niet ophalen',
      loadTimeTriggers: 'Kan tijd trigger instellingen niet ophalen',
      loadMotionTriggers: 'Kan beweging trigger instellingen niet ophalen',
      applyConnection: 'Kan verbinding instellingen niet opslaan',
      applySystem: 'Kan systeem instellingen niet opslaan',
      updateWiFiStatus: 'Kan WiFi status niet ophalen',
      uploadFirmware: 'Fout tijdens bijwerken van firmware',
      updateSteps: 'Kan trap instellingen niet opslaan',
      searchLocation: 'Kan locatie coordinaten niet bepalen',
      applyTimeTriggers: 'Kan tijd trigger instellingen niet opslaan',
      applyMotionTriggers: 'Kan beweging trigger instellingen niet opslaan',
      loadSteps: 'Kan kalibratie instellingen niet ophalen',
      updateCalibration: 'Kan kalibratie instellingen niet opslaan',

      resetError: 'Het systeem is onverwachts herstart. De laatste status is:',
      resetReason: {
        0: 'Normaal opgestart',
        1: 'Reageert niet, herstart door hardware watchdog',
        2: 'Onafgehandelde fout',
        3: 'Reageert niet, herstart door software watchdog',
        4: 'Herstart verzoek door systeem',
        5: 'Wakker geworden uit diepe slaap',
        6: 'Systeem gereset'
      },
      stackTrace: 'Een stack trace is beschikbaar. Stuur het naar de dichtsbijzijnde ontwikkelaar en/of verwijder het van deze Trap module om dit bericht te verbergen.',
      stackTraceDownload: 'Downloaden',
      stackTraceDelete: 'Verwijderen',

      stackTraceDeleteError: 'Kan stack trace niet verwijderen'
    },

    calibration: {
      title: 'Kalibratie wizard',
      backButton: 'Terug',
      count: 'Aantal treden',
      nextButton: 'Volgende',
      applyButton: 'Voltooien',
      allStepsValue: 'Intensiteit voor alle treden',
      ranges: 'Min / max waarden per trede',
      useCurve: 'Gebruik logaritmische curve voor intensiteit (aangeraden voor LEDs)'
    }
  }
}