#-------------------------------------------------------------------------------
# Copyright (c) 2005, 2006 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

unknown_text=Unbekannt

# Error Reasons
emptyLibraryPathError_reason=Der Pfad der Methodenbibliothek ist leer.
missingLibraryFileError_reason=Die Modelldatei f\u00fcr die Methodenbibliothek ist nicht vorhanden.
unresolvedProxyError_reason=Die ausgew\u00e4hlte Methodenbibliothek enth\u00e4lt nicht aufgel\u00f6ste Elementreferenzen. Dieses Problem tritt in der Regel auf, wenn XMI-Dateien im Bibliotheksordner fehlen oder an die falsche Position kopiert wurden.\n\nSchlie\u00dfen Sie den Dialog und rufen Sie die Sicht "Probleme" auf, um die nicht aufgel\u00f6sten Referenzen zu ermitteln. Um die Bibliothek nicht zu besch\u00e4digen, wird dringend empfohlen, die Referenzen zuerst aufzul\u00f6sen, bevor der Bibliothek weitere \u00c4nderungen hinzugef\u00fcgt werden.

# Warning Messages
configClosureWarning_msg1=IUPL0007W: In mindestens einem untergeordneten Element fehlen Referenzen.
configClosureWarning_msg2=IUPL0008W: Dieses Element sollte ausgew\u00e4hlt werden, um fehlende Referenzen aufzul\u00f6sen.
configClosureWarning_msg3=IUPL0009W: Dieses Element verweist auf mindestens ein Element in einem nicht ausgew\u00e4hlten Paket.

# Error Messages
loadResourcesError_msg=IUPL0000E: Die Methodenbibliothek wurde zwar geladen, aber es sind einige Fehler aufgetreten.
unsupportedGuidanceTypeError_msg=IUPL0001E: Diese Anleitung kann nicht in einen anderen Typ konvertiert werden.
convertGuidanceError_msg=IUPL0002E: Diese Anleitung kann nicht in den Zieltyp konvertiert werden.
saveConvertedGuidanceError_msg=IUPL0003E: Die konvertierte Anleitung ''{0}'' kann nicht gespeichert werden.

# Convert activity
convertActivityError_title=Fehler beim Konvertieren des Aktivit\u00e4tstyps
convertActivityError_msg=IUPL0006E: Diese Aktivit\u00e4t kann nicht in den Zieltyp konvertiert werden.
saveConvertedActivityError_msg=IUPL0007E: Die konvertierte Aktivit\u00e4t ''{0}'' kann nicht gespeichert werden.

# Error Reasons
error_reason=IUPL0004E: Es ist ein Fehler aufgetreten. Klicken Sie auf "OK", um weitere Informationen zu erhalten.
unsupportedGuidanceTypeError_reason=Es ist kein kompatibler Anleitungstyp f\u00fcr {0} vorhanden.
invalidLibraryPathError_reason=Ung\u00fcltiger Bibliothekspfad. Die Datei mit der Erweiterung .project konnte nicht erstellt werden.
couldNotLockLibrary_reason=Die Bibliothek konnte nicht gesperrt werden.

# Progress Messages
copyingAttachmentsTask_name=Anh\u00e4nge werden kopiert...

# Convert Guidance Dialog
convertGuidanceDialog_title=Anleitungstyp konvertieren
convertGuidanceDialog_text=W\u00e4hlen Sie den Zielanleitungstyp aus.

# Guidance type names for Convert Guidance Dialog - should be refactored into library.ui
checklist_text=Pr\u00fcfliste
concept_text=Konzept
example_text=Beispiel
guideline_text=Richtlinie
estimate_text=Sch\u00e4tzen
estimatingMetric_text=Sch\u00e4tzmetrik
estimationConsiderations_text=Hinweise zum Sch\u00e4tzen
report_text=Bericht
template_text=Vorlage
supportingMaterial_text=Unterst\u00fctzendes Material
toolMentor_text=Toolmentor
whitepaper_text=White Paper
termDefinition_text=Begriffsdefinition
practice_text=Verfahren
reusableAsset_text=Wiederverwendbares Asset

#activity breakdown info strings
ActivityLayout_primaryTasks_text=Ausf\u00fchrung als Eigner
ActivityLayout_additionalTasks_text=Ausf\u00fchrung als zus\u00e4tzlicher Ausf\u00fchrender


# Convert Guidance Error Messages
convertGuidanceError_title=Fehler beim Konvertieren des Anleitungstyps

# Load Resources Error Dialog
loadResourcesError_title=Fehler beim \u00d6ffnen der Methodenbibliothek
loadResourcesError_reason=Einige Bibliotheksressourcen konnten nicht geladen werden.\n\nKlicken Sie auf Details, um sich die Fehler anzusehen und zu beheben, bevor Sie der Bibliothek weitere \u00c4nderungen hinzuf\u00fcgen.

# Role Diagrams
roleDiagramPerforms_text=f\u00fchrt aus
roleDiagramResponsibleFor_text=verantwortlich f\u00fcr

DefaultContentValidator_MSG0=Referenziertes Element: {0}
DefaultContentValidator_MSG1=Info: {0}
DefaultContentValidator_MSG4=Warnung: {0}
DefaultContentValidator_MSG7=Fehler: {0}
DefaultContentValidator_MSG10=Das referenzierte Element {0} ist nicht vorhanden.
DefaultContentValidator_MSG11=Element f\u00fcr guid {0} wurde nicht gefunden.
DefaultContentValidator_MSG12=Die Datei ''{0}'' verweist auf die nicht vorhandene Ressource ''{1}''.
DefaultContentValidator_MSG15=Die Ressourcendatei ''{0}'' ist nicht vorhanden.
DefaultContentValidator_MSG17=Es kann keine Verbindung zum URL ''{0}'' hergestellt werden.
DefaultContentValidator_MSG19=Es kann keine Verbindung zum URL ''{0}'' hergestellt werden: {1}
ImportExportUtil_MSG8=Die Datei ''{0}'' wurde nicht gefunden.
ImportExportUtil_MSG9=Das tempor\u00e4re Verzeichnis ''{0}'' konnte nicht erstellt werden.
unknownGuidance_text=Unbekannt

CopyAttachmentsToNewLocation_log_noContentPath=CopyAttachmentsToNewLocation.HandleAttachmentsPlugin: Es ist kein contentPath f\u00fcr {0} vorhanden.
LibraryModificationHelper_cannotUpdate=IUPL0006W: {0} {1} kann nicht aktualisiert werden.
warningDlg_title=Warnung
errorDlg_title=Fehler
errorDlg_saveError=IUPL0005E: Fehler beim Speichern der \u00c4nderungen in der Datei ''{0}''

# activity diagram names
activityDiagramName=Aktivit\u00e4tsdiagramm: {0}
activityDetailDiagramName=Aktivit\u00e4tsdetaildiagramm: {0}
wpDependencyDiagramName=Arbeitsergebnisabh\u00e4ngigkeitsdiagramm: {0}

################################################################################
# THE FOLLOWING PROPERTIES SHOULD NOT BE TRANSLATED!!!
################################################################################

# Role diagram fonts and layout
roleDiagramFont_name=Arial
roleDiagramFont_name_win32=Arial
roleDiagramFont_size=10
roleDiagramFont_size_win32=10
roleDiagram_xMargin=200
roleDiagram_xSpacing=70
roleDiagram_ySpacing=30

# localize the value based on locale.  for example, 
# for English, the value is ". "
#colon_with_space=: 
# for french, the value is " . ", you need to use a \ to preserve the leading space
#colon_with_space=\ : 
# for chinese, the colon should be double bytes
# Dont trim the spaces after the colon.
colon_with_space=: 
