
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU
# General Public License Version 2 only ("GPL") or the Common
# Development and Distribution License("CDDL") (collectively, the
# "License"). You may not use this file except in compliance with the
# License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html
# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
# specific language governing permissions and limitations under the
# License.  When distributing the software, include this License Header
# Notice in each file and include the License file at
# nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that
# accompanied this code. If applicable, add the following below the
# License Header, with the fields enclosed by brackets [] replaced by
# your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original
# Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
# Microsystems, Inc. All Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL
# or only the GPL Version 2, indicate your decision by adding
# "[Contributor] elects to include this software in this distribution
# under the [CDDL or GPL Version 2] license." If you do not indicate a
# single choice of license, a recipient has the option to distribute
# your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above.
# However, if you add GPL Version 2 code and therefore, elected the GPL
# Version 2 license, then the option applies only if the new code is
# made subject to such option by the copyright holder.


OpenIDE-Module-Name=Visueller Queryeditor
OpenIDE-Module-Display-Category=Visual Web
OpenIDE-Module-Short-Description=Visueller Queryeditor
OpenIDE-Module-Long-Description=Stellt Unterst\u00fctzung f\u00fcr den Abfragen-Editor bereit

# Rave data toolbar
Toolbars/Data=Daten

CTL_DataconnectivitySettings="Drag and Drop"-Einstellungen f\u00fcr Datenquellen
Services/org-netbeans-modules-visualweb-dataconnectivity-DataconnectivitySettings.settings="Drag and Drop" f\u00fcr Datenquellen

PROP_MAKE_IN_SESSION=In Sitzung Zeilens\u00e4tze erstellen
PROP_CHECK_ROWSET=Auf Zeilensatz-Duplikate pr\u00fcfen

PROP_DATAPROVIDER=Suffix f\u00fcr Datenanbieter
PROP_ROWSET=Suffix f\u00fcr Zeilens\u00e4tze

CANT_GET_LOGGER=SCHWERWIEGEND: Konnte Logger nicht bekommen -- benutze globalen Logger

UI_EDITOR_OPENED=Abfrage-Editor ge\u00f6ffnet
#UI_EDITOR_OPENED_ICON_BASE=org/netbeans/modules/db/sql/visualeditor/resources/queryEditor.gif

