#-------------------------------------------------------------------------------
# Copyright (c) 2000, 2007 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

# Publish Method Configuration Wizard
publishConfigWizard_title=Publish Method Configuration

# Select Method Configuration Wizard Page
selectConfigWizardPage_title=Select method configuration
selectConfigWizardPage_text=Select a method configuration that contains the method content and processes which you would like to publish.
configLabel_text=Method configuration:

# Select Method Configuration Content Wizard Page
selectContentWizardPage_title=Select method configuration content
selectContentWizardPage_text=Select the method configuration content to publish. You can choose to publish the entire configuration or only a few select processes in the configuration.
publishConfigRadioButton_text=Publish the entire configuration
publishProcessesRadioButton_text=Publish selected processes:
includeBaseProcessesCheckboxLabel_text=Publish referenced base processes

# Select Publishing Options Wizard Page
selectPublishingOptionsWizardPage_title=Select publishing options
selectPublishingOptionsWizardPage_text=Select the publishing options. These options will be used to customize the look and behavior of the published website.
titleAndLinksGroup_text=Title and links
titleLabel_text=Title:
aboutHTMLLabel_text=About content:
feedbackURLLabel_text=Feedback URL:
glossaryAndIndexGroup_text=Glossary and index
publishGlossaryLabel_text=Publish glossary
publishIndexLabel_text=Publish index
lookAndFeelGroup_text=Look and feel
bannerImageLabel_text=Banner image:
validationGroup_text=Validation
checkExternalLinksLabel_text=Check external hyperlinks
convertBrokenLinksLabel_text=Convert broken hyperlinks to plain text
diagramGroup_text=Diagrams
publishActivityDetailDiagramsLabel_text=Publish activity detail diagrams that have not been manually created
publishExtendedActivityDiagramsLabel_text=Publish activity diagrams for unmodified activity extensions
layoutGroup_text=Layout
publishLightWeightTreeLabel_text=Show relationship sub-folders in navigation trees
publishExtraDescriptorInfoLabel_text=Include method content in descriptor pages
publishEmptyCategoriesLabel_text=Publish categories with no categorized elements
publishWebSiteGroup_text=Published website
browsingLayoutGroup_text=Browsing Layout
showRelatedDescriptors_text=Include links to related descriptors in role, task and work product pages
showDescriptorsInNavigationTree_text=Show task descriptors in navigation trees
selectDefaultActivityTab_text=Default tab for activity pages:

# Select Destination Wizard Page
selectDestinationWizardPage_title=Select destination directory and website format
selectDestinationWizardPage_text=Select the destination directory and format for the published website.
dirLabel_text=Directory:
webAppGroup_text=Website format
staticWebSiteRadioButton_text=Static web site
dynamicWebAppRadioButton_text=Java EE web application packaged in a WAR file (requires Java Servlet 2.3 or above compliant servlet container)
includeSearchCheckbox_text=Include search capability
webApplicationNameLabel_text=Web application name:

destinationDirectoryGroup_text=Destination directory
pathLabel_text=Path:
useDefaultPathCheckbox_text=Use default path
useDefaultFeedbackLabel_text=Use default feedback URL

includeSearchCheckbox_text=Include search capability (requires container for servlet)
includeSearchesLabel_text=Include search capability
clientSideSearchRadioButton_text= Client side search (requires Java applet support in browser)
serverSideSearchRadioButton_text= Server side search (requires Container for servlet)
generateWARFileLabel_text=Generate WAR (Web ARchive) file

useAppletCheckbox_text=Support view customization (requires Java applet support in browser)

siteCustomizationWizardPage_title=Customize Website
siteCustomizationWizardPage_text=Customize Website look and feel
themeAndSkinGroup_text=Theme and Skin
showBannerCheckbox_text=Show banner
selectSkinLabel_text=Select skin:

# FIXME! Should these be warning messages?
# Information Message
invalidViewsInfo_msg=The following view(s) in configuration ''{0}'' will not be published:
invalidViewContributorInfo_msg={0}: The view is a contributor
invalidViewSameViewInfo_msg={0}: This view is a duplicate of another view

capabilityPatterns_text=Capability Patterns
deliveryProcesses_text=Delivery Processes

# Publishing Preference Page
preferencePage_defaultPath_text=Default path:

# Role Diagram Preference Page
elementSpacingGroup_text=Spacing between task and work product elements
tasksHorizonalSpacingLabel_text=Horizontal spacing:
tasksVerticalSpacingLabel_text=Vertical spacing:
elementTextLabelGroup_text=Element labels
maxLineOfTextLabel_text=Maximum line of text:

# Role Diagram Preference Page Error Messages
invalidHorizonalSpacingError_msg=Horizontal spacing must be an integer with value ranging from {0} to {1}.
invalidVerticalSpacingError_msg=Vertical spacing must be an integer with value ranging from {0} to {1}.
invalidTextLinesError_msg=Number of text lines must be an integer with value ranging from {0} to {1}.

# Confirmation Dialogs
publishConfigDialog_title=Publish Method Configuration
confirmPathDialog_text=The destination path has been resolved to ''{0}''. Do you want to proceed?
overwriteDialog_text=The destination path ''{0}'' already exists. All files in the folder will be deleted. Do you want to proceed?
cancelPublishConfig_msg=The publishing operation has been cancelled.

# Error Dialogs
previewConfigError_title=Preview Published Method Configuration
viewReportError_title=View Publishing Report

# Error Messages
missingViewError_msg=IUPP0100E: The selected configuration does not contain a valid view. Edit the configuration and add a view, or select another configuration.
cannotPublishError_msg=IUPP0101E: The selected configuration cannot be published.
invalidPathError_msg=IUPP0102E: The destination path is blank or invalid.
invalidPathCharsError_msg=IUPP0103E: The destination path cannot contain these characters: \\ # * ? " < > | ! % /
publishConfigError_msg=IUPP0104E: The selected configuration was not published successfully.
previewConfigError_msg=IUPP0105E: Unable to open an HTML browser to preview the published configuration.
viewReportError_msg=IUPP0106E: Unable to open an HTML browser to view the publishing report.
webAppNameError_msg=IUPP0107E: The web application name must be specified.
webAppNameCharsError_msg=IUPP0108E: The web application name cannot contain these characters: \\ # * ? " < > | ! % /
invalidAboutPathError_msg=IUPP0109E: The path is invalid.
invalidAboutPathCharsError_msg=IUPP0110E: The path cannot contain these characters: # * ? " < > | ! % /

# Error Reasons & Recommended Actions
publishConfigError_reason=Click Details for more information.
deleteFilesError_reason=The destination path ''{0}'' contains files that cannot be deleted.\n\nClose this dialog and specify another path.
createDirError_reason=The destination path ''{0}'' cannot be created.\n\nClose this dialog and specify another path.
openBrowserError_reason=The default HTML browser on this system cannot be detected or located.\n\nClose this dialog and open the file ''{0}'' manually with an HTML browser.