# NLS_ENCODING=UNICODE
#-------------------------------------------------------------------------------
# Copyright (c) 2000, 2008 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

# Plug-in
pluginName=RCP-Benutzerschnittstelle f\u00fcr EPF Composer
productName=EPF Composer
providerName=Eclipse.org

# About text
aboutText=Eclipse Process Framework Composer\n\
\n\
Version: {0}\n\
\n\
(c) Copyright Eclipse contributors and others {1}, {2}. All Rights Reserved.\n

# Category
methodCategoryName=Methode

# Views
welcomeViewName=Willkommen

# Actions
globalActionSet=Globale Aktionsgruppe
newAction=&Neu
newActionTooltip=Neu
openAction=\u00d6&ffnen...
openActionTooltip=\u00d6ffnen
searchAction=&Suchen...
searchActionTooltip=Suchen
welcomeAction=&Willkommen
welcomeActionToolTip=Willkommen

# Tooltips
shortcut.overview.tooltip=Zur Seite "\u00dcbersicht" zur\u00fcckkehren
shortcut.tutorials.tooltip=Zur Seite "Lernprogramm" zur\u00fcckkehren
shortcut.firststeps.tooltip=Zur Seite "Erste Schritte" zur\u00fcckkehren
shortcut.webresources.tooltip=Zur Seite "Webressourcen" zur\u00fcckkehren

#Action Set
actionSet.description = Aktionen in der Funktionsleiste des Hilfesystems
actionSet.label = Hilfesystem
searchAction.label = Hilf&e durchsuchen
searchAction.tooltip = Hilfe durchsuchen
dynamicHelpAction.label = &Dynamische Hilfe 
dynamicHelpAction.tooltip = Dynamische Hilfe
#Activities/Capabilities
activity.general=Projekte und Ressourcen importieren und exportieren
activity.general.desc=Standard-Eclipse-Funktionen f\u00fcr den Import und Export von Projekten und Ressourcen verwenden.
activity.team.cvs=CVS-Unterst\u00fctzung
activity.team.cvs.desc=Concurrent Versions System (CVS) f\u00fcr die Verwaltung von Ressourcen verwenden.
activity.team=Basisteamunterst\u00fctzung
activity.team.desc=Projekte unter Verwendung von Konfigurationsmanagementsystemen gemeinsam nutzen.

activity.cat.general=Allgemein
activity.cat.general.desc=Standard-Eclipse-Funktionen verwenden.
activity.cat.team=Team
activity.cat.team.desc=Konfigurationsmanagementsysteme f\u00fcr die Verwaltung von Ressourcen verwenden.

PreferencePages.Capabilities = Funktionen
PreferencePages.Capabilities.activityName = &Funktionen
PreferencePages.Capabilities.categoryName = &Funktionen
PreferencePages.Capabilities.activityPromptButton = &Systemanfrage beim Aktivieren von Funktionen
PreferencePages.Capabilities.activityPromptButtonTooltip = Es erscheint eine Systemanfrage, wenn ein Feature, das die Aktivierung von Funktion voraussetzt, zum ersten Mal verwendet wird.
PreferencePages.Capabilities.captionMessage = Mit Funktionen k\u00f6nnen Sie verschiedene Produktkomponenten aktivieren und inaktivieren. Diese Funktionen sind nach einer Gruppe vordefinierter Kategorien gruppiert.
