<?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.xml 447395 2006-09-18 13:01:33Z andreas $ -->

<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">
  
  <message key="Reformat">Formatieren</message>

  <message key="insertLink.heading">Link einfügen</message>
  <message key="insertLink.clickTreeOrType">
    Sie können entweder ein Dokument im Baum auswählen oder eine beliebige URL eingeben.
  </message>
  <message key="insertLink.URL">URL</message>
  <message key="insertLink.text">Link-Text</message>
  <message key="insertLink.title">Link-Titel</message>
  <message key="insertLink.submit">Link einfügen</message> 
   
  <message key="insertAsset.headingAsset">Anlage einfügen</message>
  <message key="insertAsset.headingImage">Bild einfügen</message>
  <message key="insertAsset.availableAsset">Verfügbare Anlagen</message>
  <message key="insertAsset.availableImage">Verfügbare Bilder</message>
  <message key="insertAsset.file">Datei</message>
  <message key="insertAsset.preview">Vorschau</message>
  <message key="insertAsset.title">Titel</message>
  <message key="insertAsset.fileSize">Größe</message>
  <message key="insertAsset.imageSize">B x H</message>
  <message key="insertAsset.creationDate">erstellt am</message>
  <message key="insertAsset.captionAsset">Anlagentext</message>
  <message key="insertAsset.captionImage">Bildbeschreibung</message>
  <message key="insertAsset.width">Breite</message>
  <message key="insertAsset.height">Höhe</message>
  <message key="insertAsset.insertAsset">Anlage einfügen</message>
  <message key="insertAsset.insertImage">Bild einfügen</message>
  <message key="insertAsset.createResource">Neue Datei hochladen...</message>

  <message key="Choose element ...">Element wählen ...</message>
</catalogue>
