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

# Export Microsoft Project Wizard
exportMSPWizard_title=Export Microsoft Project

# Select Process Wizard Page
selectProcessWizardPage_title=Select process and export options
selectProcessWizardPage_text=Select a process to export and specify the export options.
processGroup_text=Process
capabilityPatternRadioButton_text=Capability Pattern
deliveryProcessRadioButton_text=Delivery Process
optionsGroup_text=Export options
processNameLabel_text=Name:
contextNameLabel_text=Configuration:
publishConfigurationCheckBox_text=Publish the selected configuration
exportOnlyPlannedElementsCheckBox_text=Export only breakdown elements that are planned

# Select Publishing Options Wizard Page
selectPublishOptionsWizardPage_title=Select publishing options
selectPublishOptionsWizardPage_text=Select the publishing options that will be used to publish the specified configuration.

# Select Export Directory Wizard page
selectExportDirWizardPage_title=Specify project name and export directory
selectExportDirWizardPage_text=Specify the Microsoft Project name and export directory.
projectNameLabel_text=Name:
dirLabel_text=Directory:
browseButton_text=Browse...

# Progress Messages
exportMSPTask_name=Exporting selected process to Microsoft Project...

# Confirmation Messages
overwriteText_msg=A Microsoft Project ''{0}'' already exists in ''{1}''.\nDo you want to overwrite it?
completedText_msg=The selected process ''{0}'' has been successfully exported to Microsoft Project XML file ''{1}''.

# Error Messages
exportMSPError_msg=An error has occurred while exporting the selected process ''{0}'' to Microsoft Project ''{1}''.
exportMSPError_reason=Click Details for more information.
