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

# Generic Dialog Titles
LibraryEdit.moveDialog.title=Move
LibraryEdit.deleteDialog.title=Delete Element
LibraryEdit.errorDialog.title=Error
LibraryEdit.errorDialog.cannotRename=Cannot rename {0} ''{1}'' to ''{2}''. Resolve the issue shown in Details and click OK to continue or Cancel to abort this operation.

# Confirm References Removal Dialog
LibraryEdit.deleteReferencesDialog.title=Confirm References Removal
LibraryEdit.deleteReferencesDialog.text=The element(s) you are about to delete are still being referenced by other elements in the method library. Deleting these elements will remove references to them, therefore, will update the referring elements as well.  Make sure you have permission to update the referring elements before clicking OK.  Click Details to review the list of elements that reference the element(s) that you are about to delete.

# Resolve Name Conflict Dialog
LibraryEdit.resolveNameConflictDialog.title=Resolve Element Name Conflict
LibraryEdit.resolveNameConflictDialog.text=Enter a new {0} for ''{1}'':

# Select Deliverables Dialog
LibraryEdit.selectDeliverablesDialog.title=Select Deliverables
LibraryEdit.selectDeliverablesDialog.text=Select a deliverable where you want work product ''{0}'' to be assigned.

# New Process Component Dialog
LibraryEdit.newProcessComponentDialog.title=New Process Component
LibraryEdit.nameLabel.text=Name:
LibraryEdit.defaultConfigLabel.text=Default Configuration:
LibraryEdit.baseProcessLabel.text=Base Process:
LibraryEdit.basedOnProcessesLabel.text=Based on Processes:

# Role Association Dialog
LibraryEdit.selectAssociationLabel.text=Select association for the task ''{0}''

# Remove Association dialog
LibraryEdit.removeAssociationDialog.text=Remove Association

# Select Teams Dialog
LibraryEdit.selectTeamsDialog.title=Select Teams
LibraryEdit.selectTeamsDialog.text=Select a team where you want a role ''{0}'' to be assigned.

# Tasl Selection Dialog
LibraryEdit.taskSelectionDialog.title=Task Selection
LibraryEdit.titleLabel.text=Select tasks..

# Error Messages
LibraryEdit.emptyElementNameError.msg=IUPL0100E: The {0} name is missing.\n\nAll method and process elements must have a name.\n\nEnter a valid name and try again.
LibraryEdit.emptyElementNameError.simple.msg=The name cannot be empty. Please specify a valid name.
LibraryEdit.duplicateElementNameError.msg=IUPL0101E: The name ''{0}'' already exists. \n\nA method element must have a unique name.\n\nEnter a different name and try again.
LibraryEdit.duplicateElementNameError.simple.msg=The same element name already exits. Please specify another name.
LibraryEdit.invalidElementNameError1.msg=IUPL0102E: The name ''{0}'' is invalid.\n\nA method element name cannot start with a space.\n\nEnter a valid name and try again.
LibraryEdit.invalidElementNameError2.msg=IUPL0103E: The name ''{0}'' is invalid.\n\nA method element name cannot end with a period.\n\nEnter a valid name and try again.
LibraryEdit.invalidElementNameError3.msg=IUPL0104E: The name ''{0}'' is invalid.\n\nA method element name cannot contain these characters: \\ / : * ? " < > |\n\nEnter a valid name and try again.
LibraryEdit.noConfigError.msg=IUPL0105E: The current method library does not contain any method configuration.\n\nA method configuration is needed to create a new process.\n\nCreate a method configuration and try again.
LibraryEdit.noDeliveryProcessError.msg=IUPL0106E: The current method library does not contain any delivery process.\n\nA base delivery process is needed to create a new process contribution.\n\nCreate a delivery process and try again.
LibraryEdit.noDefaultConfigError.msg=IUPL0107E: No method configuration has been selected.\n\nA default method configuration must be assigned to the new process.\n\nSelect a method configuration and try again.
LibraryEdit.noBaseProcessError.msg=IUPL0108E: No delivery process has been selected.\n\nA process contribution requires a base delivery process.\n\nSelect a delivery process and try again.
LibraryEdit.createProcessError.msg=IUPL0109E: The process cannot be created successfully.
LibraryEdit.createElementError.msg=IUPL0110E: The element cannot be created successfully.
LibraryEdit.deleteElementError.msg=IUPL0111E: The element cannot be deleted successfully.
LibraryEdit.duplicateContentFileError.msg=IUPL0112E: The content file for the element cannot be created.\n\nA file ''{0}'' already exists.\n\nEnter a different name and try again.
LibraryEdit.duplicateContentFileError.simple.msg=A content file with the same name exits. Please specify another name.
LibraryEdit.undoCommandError.msg=IUPL0113E: The undo command ''{0}'' cannot be completed.\n\nAn error has occurred: {1}
LibraryEdit.invalidPredecessorError.msg=IUPL0114E: The specified predecessor index is invalid.\n\nA predecessor index must be an integer value from the 'Index' column.\n\nSpecify a valid value and try again.
LibraryEdit.UserInteractionHelper.errRelationshipExists=IUPL0115E: ''{0}'' is already associated to ''{1}''.  Only one association of this kind is allowed.  To assign ''{0}'' to ''{2}'' you need to first remove it from ''{1}''.
LibraryEdit.error.msgWithDetails=IUPL0116E: An error has occurred. Click Details for more information.
LibraryEdit.error.msg=IUPL0117E: An error has occurred. See error log for more details.
LibraryEdit.Suppression.nameDuplication=IUPL0118E: Name conflict will occur after this operation. Check element''s name for duplication and try again
LibraryEdit.Suppression.presentationNameDuplication=IUPL0119E: Name conflict will occur after this operation. Check element''s presentation name for duplication and try again

# Error Reasons
LibraryEdit.error.reason=An error has occurred. Click Details for more information.
LibraryEdit.saveProcessError.reason=An error has occurred while saving the process ''{0}''. Click Details for more information.
LibraryEdit.deleteReferencesError.reason=An error has occurred while removing references associated with this element. Click Details for more information.
LibraryEdit.saveFileError.reason=An error has occurred while saving the file ''{0}''. Click Details for more information.
LibraryEdit.invalidReferencesError.reason=Detected method elements with invalid references as a result of cross-plugin copy.\nThese references will be removed. Do you want to continue?
LibraryEdit.unresolvedObjectError.reason=Cannot modify an unresolved object: {0}(URI = {1}){2}

# Warning messages
LibraryEdit.MethodElementAddCommand.originalNotFoundWarning.msg=IUPL0118W: Could not find one or more source elements. Associated files in the resources folder will not be copied.
LibraryEdit.ActivityAddCommand.originalNotFoundWarning.msg=IUPL0119W: Could not find one or more source elements. Associated Process Packages will not be copied.

# Progress messages
LibraryEdit.creatingProcessComponentTask.name=Creating process component ''{0}''...
LibraryEdit.processingReferencesTask.name=Processing references...
LibraryEdit.deletingElementsTask.name=Deleting elements and associated files...
LibraryEdit.checkingReferencesTask.name=Checking for references...
LibraryEdit.removingReferencestask.name=Removing references...
LibraryEdit.savingModifiedFilesTask.name=Saving modified file(s)...
LibraryEdit.checkAffectedResourcesTask.name=Checking affected resources...
LibraryEdit.movingTask.name=Moving...
LibraryEdit.movingFilesTask.name=Moving files...
LibraryEdit.copyingResourcesTask.name=Copying resources...
LibraryEdit.savingFileTask.name=Saving file ''{0}''...

# UI Text
LibraryEdit.element.text=element
LibraryEdit.createElement.text=Create Element
LibraryEdit.newElement.text=New
LibraryEdit.createProcess.text=Create Process
LibraryEdit.contributesTo.text=Contributes to
LibraryEdit.extends.text=Extends
LibraryEdit.replaces.text=Replaces
LibraryEdit.elementType.text={0}: {1}
LibraryEdit.deliverables.text=Deliverables
LibraryEdit.contributeToActivity.text=Contribute To Activity
LibraryEdit.ActivityDropCommand.label=Drop Activity
LibraryEdit.replaceActivity.text=Replace Activity
LibraryEdit.file.text=file
LibraryEdit.directory.text=directory
LibraryEdit.unresolved.text=(unresolved ''{0}'')
LibraryEdit.assists.text=Assists
LibraryEdit.unknown.text=Unknown
LibraryEdit.command.done=Done

# The following UI text should be reviewed.
LibraryEdit.Util.labelpath.variabilitywithplugin.info={0} ({1} ''{2}'' in ''{3}'')
LibraryEdit.Util.labelpath.variability.info={0} ({1} ''{2}'')
LibraryEdit.ui.ref_delete=The descriptor ''{0}'' has the following references which are not used anywhere.\nSelect the ones which you would like to delete:
LibraryEdit.ui.ref_delete2=These following references are not being used anywhere.\nSelect the ones which you would like to delete: 
LibraryEdit.ui.references=References
LibraryEdit.ui.workproduct_descriptor_description=Work product descriptor ''{0}'' is associated (Output From) with task descriptor ''{1}'' 
LibraryEdit.ui.workproductdescriptor_options=Options
LibraryEdit.ui.workproductdescriptor_outputlabel=Remove work product descriptor as output of the task descriptor
LibraryEdit.ui.workproductdescriptor_delete_task=Delete task descriptor from the activity
LibraryEdit.ui.UserInteractionHelper.defaultconfigcheck=The selected element ''{0}'' is not in the default configuration of your process.\nDo you want to add it and its dependencies to the default configuration?
LibraryEdit.ui.UserInteractionHelper.genericErr.message.text=Errors occured in the operation. Click on details for more information
LibraryEdit.ProcessAutoSynchronizeAction.noDescriptorToSynch=No descriptor with linked method element found to synchronize
LibraryEdit.util.configurablecomposedadapter.refershingviewer=Error refreshing viewer
LibraryEdit.command.deleteElement.confir.mremove.references.text=Illegal refernece(s) exist. Click on Details for more information.\n\nClick OK to remove them automatically. Close this dialog to quit.
LibraryEdit.util.configurablecomposedadapter.unhandled.exception=Unhandled exception
LibraryEdit.util.ProcessUtil.err_same_breakdown_element=Cannot have the same breakdown element as predecessor and successor
LibraryEdit.ui.UserInteractionHelper.wplistdlgtitle0=The work product "
LibraryEdit.ui.UserInteractionHelper.wplistdlgtitle1=" is an output to the following tasks.\nSelect the tasks for which you would like to create the corresponding descriptors.
LibraryEdit.ui.UserInteractionHelper.rolelistdlgtitle0=The role "
LibraryEdit.ui.UserInteractionHelper.rolelistdlgtitle1=" has the following responsible work products.\nSelect the work products for which you would like to create the corresponding descriptors.
LibraryEdit.util.configurablecomposedadapter.fatalerr=Fatal error
LibraryEdit.ui.UserInteractionHelper.workproducts=Work Products
LibraryEdit.util.ProcessUtil.err_same_sub_element=Cannot link a breakdown element to one of its subelement
LibraryEdit.util.ProcessUtil.err_wrong_element=Cannot link to element other than work breakdown element.
LibraryEdit.util.ProcessUtil.err_child_element=Cannot link a breakdown element to one of its children.
LibraryEdit.ui.UserInteractionHelper.tasks=Tasks
LibraryEdit.ui.association_task_selection=Task Selection...
LibraryEdit.util.ProcessUtil.childadapter=\ \ child's adapter: 

LibraryEdit.util.ProcessUtil.err_setparent=Could not set parent for child 
LibraryEdit.util.tngutil.cannot_edit_resource=Cannot edit resource.
LibraryEdit.util.ProcessUtil.contributesto=locally contributes to ''{0}''
LibraryEdit.process.extends=extends ''{0}''
LibraryEdit.process.replaces=locally replaces ''{0}''

# Filter constants externalized strings.
LibraryEdit.FilterConstants.disciplines.text=Disciplines
LibraryEdit.FilterConstants.disciplinegroupings.text=Discipline Groupings
LibraryEdit.FilterConstants.whitepapers.text=Whitepapers
LibraryEdit.FilterConstants.toolmentors.text=Tool Mentors
LibraryEdit.FilterConstants.tools.text=Tools
LibraryEdit.FilterConstants.roles.text=Roles
LibraryEdit.FilterConstants.tasks.text=Tasks
LibraryEdit.FilterConstants.reusableassets.text=Reusable Assets
LibraryEdit.FilterConstants.all.text=All
LibraryEdit.FilterConstants.processes.text=Processes
LibraryEdit.FilterConstants.practices.text=Practices
LibraryEdit.FilterConstants.templates.text=Templates
LibraryEdit.FilterConstants.workproducts.text=Work Products
LibraryEdit.FilterConstants.checklists.text=Checklists
LibraryEdit.FilterConstants.guidelines.text=Guidelines
LibraryEdit.FilterConstants.rolesets.text=Role Sets
LibraryEdit.FilterConstants.guidance.text=Guidance
LibraryEdit.FilterConstants.concepts.text=Concepts
LibraryEdit.FilterConstants.examples.text=Examples
LibraryEdit.FilterConstants.contentpackages.text=Content Packages
LibraryEdit.FilterConstants.roledescriptors.text=Role Descriptors
LibraryEdit.FilterConstants.rolesetgropuings.text=Role Set Groupings
LibraryEdit.FilterConstants.taskdescriptors.text=Task Descriptors
LibraryEdit.FilterConstants.contentelements.text=Content Elements
LibraryEdit.ProcessAutoSynchronizeAction.prepare=Preparing synchronization...
LibraryEdit.FilterConstants.workproductdescriptors.text=Work Product Descriptors
LibraryEdit.FilterConstants.allcontentelements.text=All Content Elements
LibraryEdit.FilterConstants.supportingmaterials.text=Supporting Materials
LibraryEdit.MethodElementAddCommand.errorSavingFiles=Error saving file(s)
LibraryEdit.FilterConstants.customcategories.text=Custom Categories
LibraryEdit.FilterConstants.workproducttypes.text=Work Product Kinds
LibraryEdit.DeleteMethodElementCommand.warningMsg=Deletion completed with warning
LibraryEdit.FilterConstants.methodplugins.text=Method Plug-ins
LibraryEdit.UserInteractionHelper.lockedPlugin=IUPL0120E: The plugin ''{0}'' is locked.
LibraryEdit.FilterConstants.domains.text=Domains
LibraryEdit.FilterConstants.roadmap.text=Roadmaps
LibraryEdit.FilterConstants.reports.text=Reports
LibraryEdit.AutoSynchronizeCommand.label=Default Synchronization from Method Content
LibraryEdit.ManualSynchronizeCommand.label=Custom Synchronization...
LibraryEdit.AutoSynchronizeCommand.sucessful=Synchronization has been completed successfully.

# UserInteractionHelper
LibraryEdit.UserInteractionHelper.ProcessPackage.Name=Name:

# MethodCreateChildCommand
LibraryEdit.newElement.text=New {0}
