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

# Error Reasons
emptyLibraryPathError_reason=The method library path is empty.
missingLibraryFileError_reason=The method library model file is missing.
unresolvedProxyError_reason=The selected method library contains unresolved element references. This is usually caused by missing or displaced XMI files in the library folder.\n\nClose this dialog and bring up the Problems view to help identify the unresolved references. To avoid corrupting the library, it is highly recommended that you resolve these references first before adding more changes to the library.

# Warning Messages
configClosureWarning_msg1=IUPL0007W: One or more child elements contain missing references
configClosureWarning_msg2=IUPL0008W: This element should be selected to resolve one or more missing references
configClosureWarning_msg3=IUPL0009W: This element references one or more elements in an unselected package

# Error Messages
loadResourcesError_msg=IUPL0000E: The method library has been loaded but some errors have been detected.
unsupportedGuidanceTypeError_msg=IUPL0001E: This guidance cannot be converted to another type.
convertGuidanceError_msg=IUPL0002E: This guidance cannot be converted to the target type.
saveConvertedGuidanceError_msg=IUPL0003E: The converted guidance ''{0}'' cannot be saved.

# Convert activity
convertActivityError_title=Convert Activity Type Error
convertActivityError_msg=IUPL0006E: This activity cannot be converted to the target type.
saveConvertedActivityError_msg=IUPL0007E: The converted activity ''{0}'' cannot be saved.

# Error Reasons
error_reason=IUPL0004E: An error has occurred. Click OK for more information.
unsupportedGuidanceTypeError_reason=There is no compatible guidance type for {0}.
invalidLibraryPathError_reason=Invalid library path. The .project file could not be created.
couldNotLockLibrary_reason=Could not lock library.

# Progress Messages
copyingAttachmentsTask_name=Copying attachments...

# Convert Guidance Dialog
convertGuidanceDialog_title=Convert Guidance Type
convertGuidanceDialog_text=Select the target guidance type.

# Guidance type names for Convert Guidance Dialog - should be refactored into library.ui
checklist_text=Checklist
concept_text=Concept
example_text=Example
guideline_text=Guideline
estimate_text=Estimate
estimatingMetric_text=Estimating Metric
estimationConsiderations_text=Estimation Considerations
report_text=Report
template_text=Template
supportingMaterial_text=Supporting Material
toolMentor_text=Tool Mentor
whitepaper_text=Whitepaper
termDefinition_text=Term Definition
practice_text=Practice
reusableAsset_text=Reusable Asset

#activity breakdown info strings
ActivityLayout_primaryTasks_text=Performs as Owner
ActivityLayout_additionalTasks_text=Performs as Additional


# Convert Guidance Error Messages
convertGuidanceError_title=Convert Guidance Type Error

# Load Resources Error Dialog
loadResourcesError_title=Open Method Library Error
loadResourcesError_reason=Some library resources could not be loaded.\n\nClick Details to review the errors and resolve them before adding more changes to the library.

# Role Diagrams
roleDiagramPerforms_text=performs
roleDiagramResponsibleFor_text=responsible for

DefaultContentValidator_MSG0=Referenced element: {0}
DefaultContentValidator_MSG1=Info: {0}
DefaultContentValidator_MSG4=Warning: {0}
DefaultContentValidator_MSG7=Error: {0}
DefaultContentValidator_MSG10=Missing referenced element {0}
DefaultContentValidator_MSG11=Unable to find element for guid {0}
DefaultContentValidator_MSG12=File ''{0}'' references missing resource ''{1}''
DefaultContentValidator_MSG15=missing resource file ''{0}''
DefaultContentValidator_MSG17=Unable to connect to url ''{0}''
DefaultContentValidator_MSG19=Unable to connect to url ''{0}'': {1}
ImportExportUtil_MSG8=Could not find file ''{0}''.
ImportExportUtil_MSG9=Could not create temp directory ''{0}''.
unknownGuidance_text=Unknown

CopyAttachmentsToNewLocation_log_noContentPath=CopyAttachmentsToNewLocation.HandleAttachmentsPlugin: no contentPath for {0}
LibraryModificationHelper_cannotUpdate=IUPL0006W: Cannot update {0} {1}
warningDlg_title=Warning
errorDlg_title=Error
errorDlg_saveError=IUPL0005E: Error saving changes to file ''{0}''

# activity diagram names
activityDiagramName=Activity diagram: {0}
activityDetailDiagramName=Activity detail diagram: {0}
wpDependencyDiagramName=Workpruduct dependency diagram: {0}

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

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


