#-------------------------------------------------------------------------------
# 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

# Plug-in
pluginName=EPF - Dokumentation
providerName=Eclipse.org


# Cheat Sheets
methodAuthoringCheatSheetsName=Spickzettel f\u00fcr Methoden-Authoring
CheatsheetGetstartedCategoryText=Erste Schritte
CheatsheetReusableContentCategoryText=Wiederverwendbaren Methodeninhalt erstellen
CheatsheetWriteContentCategoryText=Methodeninhalt schreiben
CheatsheetProcessesCategoryText=Mit Prozessen arbeiten
CheatsheetNavigateMethodContent=Im Methodeninhalt navigieren
CheatsheetCreateMethodConfiguration=Eigene Methodenkonfiguration erstellen
CheatsheetCreateMethodPlugin=Eigenes Methoden-Plug-in erstellen
CheatsheetAddMethodContent=Neuen Methodeninhalt wie Rollen, Aufgaben, Arbeitsergebnisse oder Anleitungen hinzuf\u00fcgen
CheatsheetTailorMethodElements=Vorhandene Methodenelemente (Rollen, Aufgaben, Arbeitsergebnisse oder Anleitungen) mit Beitr\u00e4gen anpassen
CheatsheetReplaceMehtodElements=Vorhandene Methodenelemente (Rollen, Aufgaben, Arbeitsergebnisse oder Anleitungen) ersetzen
CheatsheetAddMethodRefOrHyperlink=Methodenreferenz oder Hyperlink (URL) hinzuf\u00fcgen
CheatsheetApplyCapabilityPattern=Prozessmuster anwenden
CheatsheetCreateProcess=Prozess erstellen (Prozessmuster oder Bereitstellungsprozess)



               
