<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<!-- $Id: cmsui_de.xml 446564 2006-09-15 10:13:16Z andreas $ -->

<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

  <message key="Documents in trash">Dokumente im Papierkorb</message>
  <message key="The trash is empty.">Der Papierkorb ist leer.</message>
  <message key="Sessions">Sitzungen</message>
  <message key="Path">Pfad</message>
  <message key="Inbox">Posteingang</message>
  <message key="usecase-policies-message">Hier können Sie festlegen, welche Usecases durch welche Rollen ausgeführt werden dürfen.</message>
  <message key="Server Status">Server-Status</message>
  <message key="e-mail">E-Mail</message>
  <message key="No groups assigned">Keine Gruppen zugeordnet</message>
  
  <message key="Local User">Lokalen Benutzer</message>
  <message key="add-user">{0} hinzufügen</message>
  <message key="This is not a valid user ID.">Die Benutzer-ID ist ungültig.</message>
  <message key="Please enter a valid e-mail address.">Bitte geben Sie eine gültige E-Mail-Adresse ein.</message>
  <message key="Password and confirmed password are not equal.">Passwort und Passwortbestätigung stimmen nicht überein.</message>
  <message key="This is not a valid group ID.">Die Gruppen-ID ist ungültig.</message>
  <message key="Group Users">Gruppen-Benutzer</message>
  <message key="All Users">Alle Benutzer</message>
  <message key="This is not a valid IP range ID.">Die IP-Bereichs-ID ist ungültig.</message>
  <message key="invalid-ip-address-part">Abschnitt {0} des Feldes "{1}" ist ungültig.</message>
  <message key="The old password is not correct.">Das bestehende Passwort wurde nicht korrekt eingegeben.</message>
  <message key="The password must be at least six characters long.">Das Passwort muss mindestens 6 Zeichen lang sein.</message>
  <message key="The password must contain at least one number.">Das Passwort muss mindestens eine Ziffer enthalten.</message>
  <message key="IP Range Groups">Gruppen des<br/>IP-Bereichs</message>
  
  <message key="cannot-assign-role">Die Rolle <xhtml:q>{0}</xhtml:q> kann nicht zugeordnet werden.</message>
  <message key="credential-already-contained">
    Die Rolle <xhtml:q>{1}</xhtml:q> wurde dem Objekt <xhtml:q>{0}</xhtml:q> bereits zugeordnet.
  </message>
  
</catalogue>

