###############################################################################
# Copyright (c) 2005, 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 API and implementation
# yyyymmdd bug      Email and other contact information
# -------- -------- -----------------------------------------------------------
# 20060816   151632 kathy@ca.ibm.com - Kathy Chan, Removed unused properties for "Wait for wizard WSDL validation"
# 20070424   182376 pmoogk@ca.ibm.com - Peter Moogk
# 20071120   209858 ericdp@ca.ibm.com - Eric Peters, Enhancing service policy framework and UI
###############################################################################

#
# 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 S&SBP 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 A&P compliance level
TOOLTIP_PWSI_AP_LABEL=WS-I Attachment Profile compliance level
TOOLTIP_PWSI_AP_COMBO=Choose the WS-I Attachment Profile compliance level

#
#	WSDL Validation
#
LABEL_WSDLVAL=Select whether WSDL validation should be performed on wizards that consume WSDL files
LABEL_WSDLVAL_NONE=&No wizard WSDL validation
LABEL_WSDLVAL_REMOTE=Wizard WSDL validation for &remote files only
LABEL_WSDLVAL_ALL=Wizard WSDL validation for &all WSDL files
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.


WEBSERVICE_CATEGORY_PREF=Expand this preferences category to set specific Web services preferences.
WEBSERVICE_CATEGORY_PREF_LINK=See <a href=\"org.eclipse.wst.ws.internal.ui.wsi.preferences.WSICompliancePreferencePage\">'Service Policies'</a> for WS-I compliance preferences.