#-------------------------------------------------------------------------------
# Copyright (c) 2000, 2007 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# IBM Corporation - initial implementation.
#-------------------------------------------------------------------------------
# NLS_MESSAGEFORMAT_VAR
#
# Message ID Range: IUPE0000E - IUPE0099E
#

# Export Library Configuration Wizard
exportConfigWizard_title=Bibliothekskonfiguration exportieren
selectExportTypePage_title=Exporttyp ausw\u00e4hlen
selectExportTypePage_desc=W\u00e4hlen Sie den Typ der zu exportierenden Bibliothekskonfiguration aus.
selectExportTypePage_configLabel_text=Methodenkonfiguration mit allen Methoden-Plug-ins exportieren
selectExportTypePage_configSpecsLabel_text=Eine oder mehrere Spezifikationen f\u00fcr Methodenkonfigurationen exportieren
selectConfigPage_title=Methodenkonfiguration ausw\u00e4hlen
selectConfigPage_desc=W\u00e4hlen Sie eine zu exportierende Methodenkonfiguration aus. Alle referenzierten Methoden-Plug-ins in der ausgew\u00e4hlten Konfiguration werden in den Export eingeschlossen.
selectConfigPage_configsLabel_text=Methodenkonfigurationen:
selectConfigSpecsPage_title=Konfigurationsspezifikationen ausw\u00e4hlen
selectConfigSpecsPage_desc=W\u00e4hlen Sie eine oder mehrere zu exportierende Konfigurationsspezifikationen aus.
selectConfigSpecsPage_configsLabel_text=Methodenkonfigurationen:
checkConfigPage_title=Konfigurationsfehler pr\u00fcfen
checkConfigPage_desc=F\u00fcr die ausgew\u00e4hlte Methodenkonfiguration wurde eine Integrit\u00e4tspr\u00fcfung durchgef\u00fchrt. Sehen Sie sich den Fehlerbericht an und f\u00fchren Sie die erforderlichen Fehlerberichtigungen durch.
selectDestinationPage_title=Exportverzeichnis angeben
selectDestinationPage_desc=Geben Sie ein Zielverzeichnis an, in dem die exportierte Konfiguration gespeichert werden soll.

# Export Method Plug-ins Wizard
exportPluginsWizard_title=Methoden-Plug-ins exportieren
selectPluginsPage_title=Methoden-Plug-ins ausw\u00e4hlen
selectPluginsPage_desc=W\u00e4hlen Sie mindestens ein zu exportierendes Methoden-Plug-in aus.
selectPluginsPage_pluginsLabel_text=Methoden-Plug-ins:
reviewPluginsPage_title=Abh\u00e4ngigkeiten pr\u00fcfen
reviewPluginsPage_desc=W\u00e4hlen Sie jedes Methoden-Plug-in aus, um die Abh\u00e4ngigkeiten zu pr\u00fcfen. Klicken Sie auf Zur\u00fcck, um die abh\u00e4ngigen Plug-ins auszuw\u00e4hlen, falls diese in den Export eingeschlossen werden m\u00fcssen.
reviewPluginsPage_pluginsLabel_text=Methoden-Plug-ins:
reviewPluginsPage_dependentPluginsLabel_text=Abh\u00e4ngige Methoden-Plug-ins:
reviewPluginsPage_associatedConfigsLabel_text=Zugeordnete Methodenkonfigurationen:
exportPluginSummaryPage_title=Export best\u00e4tigen
exportPluginSummaryPage_desc=Best\u00e4tigen Sie die zu exportierenden Methoden-Plug-ins.
exportPluginSummaryPage_noPlugin_text=Es wurde kein Methoden-Plug-in ausgew\u00e4hlt.
specifyPathPage_title=Exportverzeichnis angeben
specifyPathPage_desc=Geben Sie ein Zielverzeichnis an, in dem die exportierten Methoden-Plug-ins gespeichert werden sollen.
SavePluginPage_desc=Exportieren Sie die ausgew\u00e4hlten Plug-ins und Konfigurationen in das angegebene Zielverzeichnis.
ExportPluginWizard_title=Fehler im Exportassistenten f\u00fcr Methoden-Plug-ins
ExportPluginError_msg=IUPE0000E: Fehler beim Export

# Export Library Configuration Error Dialog
exportConfigErrorDialog_title=Bibliothekskonfiguration exportieren
exportConfigErrorDialog_msg=IUPE0001E: Die Exportoperation kann nicht fortgesetzt werden.

# Progress Messages
analyzingConfigTask_name=Bibliothekskonfiguration wird analysiert...

# The following messages have not been reviewed.
ConfigurationSpecsExportService_MSG0=Konfiguration wird exportiert...
ConfigurationSpecsExportService_MSG1=Der Export ist abgeschlossen.
ExportConfigCheckingPage_summary_1=Die Integrit\u00e4t der ausgew\u00e4hlten Konfiguration wird gepr\u00fcft...\n
ExportConfigCheckingPage_summary_2=Es wurde keine Konfiguration ausgew\u00e4hlt.\n
ExportConfigCheckingPage_summary_3=Es wurde kein Fehler in der ausgew\u00e4hlten Konfiguration gefunden.\n
ExportConfigCheckingPage_summary_4=Die ausgew\u00e4hlte Konfiguration enth\u00e4lt {0} Problem(e) ({1} Fehler, {2} Warnung(en), {3} Information(en)). \nSie k\u00f6nnen den Konfigurationseditor \u00f6ffnen und diese Fehler beheben.\nSie k\u00f6nnen die Fehler aber auch ignorieren und die Operation fortsetzen.
ExportConfigCheckingPage_checking=Konfiguration wird gepr\u00fcft. Bitte warten...
ExportConfigSelectConfigPage_title=Methodenkonfiguration ausw\u00e4hlen
DestinationCommonPage_label_browse=Durchsuchen...
DestinationCommonPage_label_default_dir=Standardverzeichnis verwenden
ConfigurationExportService_MSG0=Konfiguration wird exportiert...
ConfigurationExportService_MSG2=IUPE0002E: Export fehlgeschlagen: Fehler beim Laden der Bibliothek
ConfigurationExportService_MSG4=IUPE0003E: Export fehlgeschlagen: Fehler beim Kopieren der Bibliothek
ConfigurationExportService_MSG1=IUPE0004E: Export fehlgeschlagen: Fehler beim Erstellen der abgeschlossenen Konfiguration
ConfigurationExportService_MSG9=IUPE0005E: Export fehlgeschlagen: Fehler beim Speichern der Bibliothek
DestinationCommonPage_label_name=Name:
DestinationCommonPage_label_dir=Verzeichnis:
ExportPluginWizard_error=Fehler
DestinationCommonPage_title=Standardtitel
DestinationCommonPage_desc=Standardbeschreibung:
PluginExportService_MSG0=Plug-ins werden exportiert...
PluginExportService_MSG1=Exportverzeichnis wird erstellt...
PluginExportService_MSG2=Dateien werden kopiert...
PluginExportService_MSG3=Bibliothek und Ressourcendatei werden generiert...
PluginExportService_MSG4=Der Export ist abgeschlossen.
SaveLibraryPage_title=Methoden-Plug-in exportieren
SavePluginPage_label_name=Exportname:
SaveLibraryPage_desc=Exportieren Sie die ausgew\u00e4hlten Methoden-Plug-ins und die zugeordneten Konfigurationen.
ExportPluginWizard_MSG1=Bibliothekskonfiguration wird analysiert...
