###############################################################################
# Copyright (c) 2005 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 API and implementation
###############################################################################

#
# Messages in plugin.xml.
#
PLUGIN_NAME=Web Services UI
PLUGIN_VENDOR=Eclipse.org
PLUGIN_DESC=\
The Web services GUI plugin delivers the graphical \
user interface to the Web services function in the WST subproject.

PLUGIN_NEW_CATEGORY_NAME_WS=Web Services


#
#  WS-I Preference pages
#
# WS-I Compliance Page
#
PREFERENCE_CATEGORY_WSI=WS-I Compliance
STOP_NON_WSI=Require compliance
WARN_NON_WSI=Suggest compliance
IGNORE_NON_WSI=Ignore compliance
FOLLOW_WSI_PREFERENCE=Follow Preference

TOOLTIP_PWSI_PAGE=Web Services Interoperability
TOOLTIP_PWSI_RADIO_STOP_NON_WSI=Stop and produce an error message if you make a choice that does not comply with WS-I.
TOOLTIP_PWSI_RADIO_WARNING_NON_WSI=Produce a warning message if you make a choice that does not comply with WS-I.
TOOLTIP_PWSI_RADIO_IGNORE_NON_WSI=Silently allow choices that do not comply with WS-I.
TOOLTIP_PWSI_RADIO_FOLLOW_WSI_PREFERENCE=Project would use WS-I compliance level set in Workspace Preference.

LABEL_WSI_SSBP=WS-I SSBP compliance level
TOOLTIP_PWSI_SSBP_LABEL=WS-I Simple SOAP Binding Profile compliance level
TOOLTIP_PWSI_SSBP_COMBO=Choose the WS-I Simple SOAP Binding Profile compliance level

LABEL_WSI_AP=WS-I AP compliance level
TOOLTIP_PWSI_AP_LABEL=WS-I Attachment Profile compliance level
TOOLTIP_PWSI_AP_COMBO=Choose the WS-I Attachment Profile compliance level


#
#	WS-I Compliance Messages
#
WSI_SSBP_ERROR=You have made a choice that may result in a Web service that does not comply with the WS-I Simple SOAP Binding Profile. Your current Web services preference is set to require compliance with WS-I SSBP.
WSI_SSBP_WARNING=You have made a choice that may result in a Web service that does not comply with the WS-I Simple SOAP Binding Profile. Do you wish to ignore this warning and continue?
WSI_SSBP_INCOMPLIANT_RUNTIME=The selected Web Service runtime does not comply with the WS-I Simple SOAP Binding Profile.
WSI_AP_ERROR=You have made a choice that may result in a Web service that does not comply with the WS-I Attachment Profile. Your current Web services preference is set to require compliance with WS-I AP.
WSI_AP_WARNING=You have made a choice that may result in a Web service that does not comply with the WS-I Attachment Profile. Do you wish to ignore this warning and continue?
WSI_AP_INCOMPLIANT_RUNTIME=The selected Web Service runtime does not comply with the WS-I Attachment Profile.
IGNORE_LABEL=Ignore
IGNORE_DESCRIPTION=Ignore the WS-I non-compliance and continue
IGNORE_ALL_LABEL=Ignore All
IGNORE_ALL_DESCRIPTION=Always ignore the WS-I non-compliance and continue
CANCEL_LABEL=Cancel
TASK_LABEL_WSI_NONCOMPLIANT=Check for WSI Compliance
TASK_DESC_WSI_NONCOMPLIANT=Check for WSI Compliance
CANCEL_DESCRIPTION=Cancel
NOT_OK=Cannot continue due to WS-I non-compliance

#
#	WSDL Validation
#
LABEL_WSDLVAL=Select whether WSDL validation should be performed on wizards that consume WSDL files  
LABEL_WSDLVAL_NONE=No WSDL validation
LABEL_WSDLVAL_REMOTE=WSDL validation for remote files only
LABEL_WSDLVAL_ALL=WSDL validation for all files
LABEL_WAIT_FOR_WSDLVAL=Wait for WSDL validation to complete before moving along the wizards?
BUTTON_WAIT_FOR_WSDLVAL=Wait for pending WSDL validation to complete 
TOOLTIP_PWSI_RADIO_WSDLVAL_NONE=Do not perform WSDL validation on the WSDL file or URL input to the Web Services wizard
TOOLTIP_PWSI_RADIO_WSDLVAL_REMOTE=Only perform WSDL validation on remote WSDL file or URL input to the Web Services wizard
TOOLTIP_PWSI_RADIO_WSDLVAL_ALL=Perform WSDL validation on all WSDL file or URL input to the Web Services wizard
TOOLTIP_PWSI_WSDLVAL_LABEL=Select whether WSDL validation should be performed on wizards that consume WSDL files, \nfor example, Web Service wizard in skeleton scenario and Web Service Client wizard.
TOOLTIP_PWSI_LABEL_WAIT_FOR_WSDLVAL=WSDL validation might not have completed during wizard flow, \nwould you like to wait for WSDL validation or cancel it?
TOOLTIP_PWSI_BUTTON_WAIT_FOR_WSDLVAL=Wait for pending WSDL validation to complete and continue with the wizard




