#-------------------------------------------------------------------------------
# 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
moveDialog_title=Move
deleteDialog_title=Delete Element
errorDialog_title=Error
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
deleteReferencesDialog_title=Confirm References Removal
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
resolveNameConflictDialog_title=Resolve Element Name Conflict
resolveNameConflictDialog_text=Enter a new {0} for ''{1}'':

# Select Deliverables Dialog
selectDeliverablesDialog_title=Select Deliverables
selectDeliverablesDialog_text=Select a deliverable where you want work product ''{0}'' to be assigned.

# New Process Component Dialog
newProcessComponentDialog_title=New Process Component
nameLabel_text=Name:
defaultConfigLabel_text=Default Configuration:
baseProcessLabel_text=Base Process:
basedOnProcessesLabel_text=Based on Processes:

# Role Association Dialog
selectAssociationLabel_text=Select association for the task ''{0}''

# Remove Association dialog
removeAssociationDialog_text=Remove Association

# Select Teams Dialog
selectTeamsDialog_title=Select Teams
selectTeamsDialog_text=Select a team where you want a role ''{0}'' to be assigned.

# Tasl Selection Dialog
taskSelectionDialog_title=Task Selection
titleLabel_text=Select tasks..

# Error Messages
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.
emptyElementNameError_simple_msg=The name cannot be empty. Please specify a valid name.
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.
duplicateElementNameError_msg2=Enter a different name and try again.
duplicateElementNameError_simple_msg=The same element name already exits. Please specify another name.
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.
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.
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.
invalidElementNameError4_msg=IUPL0105E: The name ''{0}'' is invalid.\n\nA method element name cannot contain the character: & & \n\nEnter a valid name and try again.
noConfigError_msg=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.
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.
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.
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.
createProcessError_msg=IUPL0109E: The process cannot be created successfully.
createElementError_msg=IUPL0110E: The element cannot be created successfully.
deleteElementError_msg=IUPL0111E: The element cannot be deleted successfully.
duplicateContentFileError_msg=IUPL0112E: The content file for the element cannot be created or renamed to match the element name.\n\nA file ''{0}'' already exists.\n\nEnter a different name and try again.
duplicateContentFileError_simple_msg=A content file with the same name exits. Please specify another name.
undoCommandError_msg=IUPL0113E: The undo command ''{0}'' cannot be completed.\n\nAn error has occurred: {1}
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.
UserInteractionHelper_errRelationshipExists=IUPL0100W: ''{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}''.
error_msgWithDetails=IUPL0116E: An error has occurred. Click Details for more information.
error_msg=IUPL0117E: An error has occurred. See error log for more details.
Suppression_nameDuplication=IUPL0118E: Name conflict will occur after this operation. Check element's name for duplication and try again
Suppression_presentationNameDuplication=IUPL0119E: Name conflict will occur after this operation. Check element's presentation name for duplication and try again

# Error Reasons
error_reason=An error has occurred. Click Details for more information.
saveProcessError_reason=An error has occurred while saving the process ''{0}''. Click Details for more information.
deleteReferencesError_reason=An error has occurred while removing references associated with this element. Click Details for more information.
saveFileError_reason=An error has occurred while saving the file ''{0}''. Click Details for more information.
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?
unresolvedObjectError_reason=Cannot modify an unresolved object: {0}(URI = {1}){2}

# Warning messages
MethodElementAddCommand_originalNotFoundWarning_msg=IUPL0118W: Could not find one or more source elements. Associated files in the resources folder will not be copied.
ActivityAddCommand_originalNotFoundWarning_msg=IUPL0119W: Could not find one or more source elements. Associated Process Packages will not be copied.
ActivityDropCommand_deepCopy_promptConfigurationMsg=Do you want to copy all descriptors?\n\nClicking on No will copy only the descriptors that are part of the current configuration.
deepCopy_promptMsg=You will get a copy of all dynamically linked elements that you need to maintain separately from now on. Do you want to continue?
deepCopy_title=Deep Copy

# Progress messages
creatingProcessComponentTask_name=Creating process component ''{0}''...
processingReferencesTask_name=Processing references...
deletingElementsTask_name=Deleting elements and associated files...
checkingReferencesTask_name=Checking for references...
removingReferencestask_name=Removing references...
savingModifiedFilesTask_name=Saving modified file(s)...
checkAffectedResourcesTask_name=Checking affected resources...
movingTask_name=Moving...
movingFilesTask_name=Moving files...
copyingResourcesTask_name=Copying resources...
copyingActivities_msg=Copying activity ''{0}''
savingFileTask_name=Saving file ''{0}''...

# UI Text
element_text=element
createElement_text=Create Element
createProcess_text=Create Process
contributesTo_text=Contributes to
localContributesTo_text=Locally Contributes to
extends_text=Extends
replaces_text=Replaces
localReplaces_text=Locally Replaces
localReplacementAndDeepCopy_text=Local Replacement and Deep Cop&y
elementType_text={0}: {1}
deliverables_text=Deliverables
contributeToActivity_text=Contribute To Activity
ActivityDropCommand_label=Drop Activity
replaceActivity_text=Replace Activity
file_text=file
directory_text=directory
unresolved_text=(unresolved ''{0}'')
assists_text=Assists
unknown_text=Unknown
command_done=Done

# The following UI text should be reviewed.
Util_labelpath_variabilitywithplugin_info={0} ({1} ''{2}'' in ''{3}'')
Util_labelpath_variability_info={0} ({1} ''{2}'')
ui_ref_delete=The descriptor ''{0}'' has the following references which are not used anywhere.\nSelect the ones which you would like to delete:
ui_ref_delete2=These following references are not being used anywhere.\nSelect the ones which you would like to delete:
ui_references=References
ui_workproduct_descriptor_description=Work product descriptor ''{0}'' is associated (Output From) with task descriptor ''{1}''
ui_workproductdescriptor_options=Options
ui_workproductdescriptor_outputlabel=Remove work product descriptor as output of the task descriptor
ui_workproductdescriptor_delete_task=Delete task descriptor from the activity
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?
ui_UserInteractionHelper_genericErr_message_text=Errors occured in the operation. Click on details for more information
ProcessAutoSynchronizeAction_noDescriptorToSynch=No descriptor with linked method element found to synchronize
util_configurablecomposedadapter_refershingviewer=Error refreshing viewer
confirm_remove_references_text=Element(s) listed in Details might have illegal reference to this guidance after conversion. Click OK to remove them and continue.
util_configurablecomposedadapter_unhandled_exception=Unhandled exception
util_ProcessUtil_err_same_breakdown_element=Cannot have the same breakdown element as predecessor and successor
ui_UserInteractionHelper_wplistdlg_msg=The work product ''{0}'' is an output to the following tasks.\nSelect the tasks for which you would like to create the corresponding descriptors.
ui_UserInteractionHelper_rolelistdlg_msg=The role ''{0}'' has the following responsible work products.\nSelect the work products for which you would like to create the corresponding descriptors.
util_configurablecomposedadapter_fatalerr=Fatal error
ui_UserInteractionHelper_workproducts=Work Products
util_ProcessUtil_err_same_sub_element=Cannot link a breakdown element to one of its subelement
util_ProcessUtil_err_wrong_element=Cannot link to element other than work breakdown element.
util_ProcessUtil_err_child_element=Cannot link a breakdown element to one of its children.
ui_UserInteractionHelper_tasks=Tasks
ui_association_task_selection=Task Selection...
util_ProcessUtil_childadapter=\ \ child's adapter:

util_ProcessUtil_err_setparent=Could not set parent for child
util_tngutil_cannot_edit_resource=Cannot edit resource.
util_ProcessUtil_contributesto=contributes to ''{0}''
util_ProcessUtil_localContributesto=locally contributes to ''{0}''
process_extends=extends ''{0}''
process_replaces=replaces ''{0}''
process_localReplaces=locally replaces ''{0}''
# Filter constants externalized strings.
FilterConstants_disciplines_text=Disciplines
FilterConstants_disciplinegroupings_text=Discipline Groupings
FilterConstants_whitepapers_text=Whitepapers
FilterConstants_toolmentors_text=Tool Mentors
FilterConstants_tools_text=Tools
FilterConstants_roles_text=Roles
FilterConstants_tasks_text=Tasks
FilterConstants_reusableassets_text=Reusable Assets
FilterConstants_all_text=All
FilterConstants_processes_text=Processes
FilterConstants_practices_text=Practices
FilterConstants_templates_text=Templates
FilterConstants_workproducts_text=Work Products
FilterConstants_checklists_text=Checklists
FilterConstants_guidelines_text=Guidelines
FilterConstants_rolesets_text=Role Sets
FilterConstants_guidance_text=Guidance
FilterConstants_concepts_text=Concepts
FilterConstants_examples_text=Examples
FilterConstants_contentpackages_text=Content Packages
FilterConstants_roledescriptors_text=Role Descriptors
FilterConstants_rolesetgropuings_text=Role Set Groupings
FilterConstants_taskdescriptors_text=Task Descriptors
FilterConstants_contentelements_text=Content Elements
ProcessAutoSynchronizeAction_prepare=Preparing synchronization...
FilterConstants_workproductdescriptors_text=Work Product Descriptors
FilterConstants_allcontentelements_text=All Content Elements
FilterConstants_supportingmaterials_text=Supporting Materials
MethodElementAddCommand_errorSavingFiles=Error saving file(s)
FilterConstants_customcategories_text=Custom Categories
FilterConstants_workproducttypes_text=Work Product Kinds
DeleteMethodElementCommand_warningMsg=Deletion completed with warning
FilterConstants_methodplugins_text=Method Plug-ins
UserInteractionHelper_lockedPlugin=IUPL0120E: The plugin ''{0}'' is locked.
FilterConstants_domains_text=Domains
FilterConstants_roadmap_text=Roadmaps
FilterConstants_reports_text=Reports
AutoSynchronizeCommand_label=Default S&ynchronization from Method Content
ManualSynchronizeCommand_label=Custom Synchroni&zation...
SynchronizeCompleteDialog_Title=Synchronization Complete
AutoSynchronizeCommand_sucessful=Synchronization has been completed successfully.
selectDescriptorsToDelete_msg=The following descriptors are not used anywhere after deletion of the selected elements.\nSelect descriptors you want to delete.

CreateProcessComponentCommand_Message=Specify name and default configuration for the {0} to be created.
# UserInteractionHelper
UserInteractionHelper_ProcessPackage_Name=Name:

# MethodCreateChildCommand
newElement_text=New {0}
update_outofsynch_title=Update conflict
update_outofsynch_msg=The file(s) has been changed on the file system. Do you want to overwrite the changes?
duplicateFeatureValue=Cannot have 2 elements under ''{0}'' with the same value for ''{1}''
apply_pattern_error_msg=Cannot apply activity ''{0}'' to the process ''{1}'' since it will result in circular dependency.
apply_pattern_error_msg1=Cannot apply activity ''{0}'' to the process ''{1}'' since ''{0}'' already has one or more contributed/replaced activities as its children.
activity_variability_error_msg1=Activity ''{0}'' cannot set variability with one of its direct parent.
activity_variability_error_msg2=Activity ''{0}'' cannot set variability with ''{1}'' since it will result in circular dependency.
activity_variability_error_msg3=Cannot replaces a top process with an activity.
activity_variability_error_msg=Activity ''{0}'' cannot set variability with ''{1}'' since ''{1}'' already has one or more contributed/replaced activities as its children.
variability_error_msg=Variability element ''{0}'' cannot set variability with ''{1}'' since it will result in circular dependency.
circular_dependency_error_msg=Cannot perform the operation since it will result in circular dependency.

# Validation messages
variability_element_circular_loop_error_msg=Circular dependency loop detected ... 
replacing_ancestor_error_msg=Replacing an ancestor error is detected.
cannot_copy_or_extend_delivery_process=Cannot copy or extend a delivery process or any of its activities.

# Sort options
SortType_Label=Sort Type:
SortType_Manual=Manual
SortType_Alphabetic=Alphabetic
SortType_ReverseAlphabetic=Reverse Alphabetic
SortType_MethodType=Element Type
