###############################################################################
# Copyright (c) 2001, 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
###############################################################################
# NLS_MESSAGEFORMAT_VAR
_UI_DEPENDENCIES_CHANGED=Dependencies Changed
_UI_DEPENDENCIES_CHANGED_REFRESH=One or more dependencies have changed.  Do you want to refresh the editor to reflect these changes?
_UI_EDIT_NAMESPACES_DIALOG_TITLE=Edit Namespaces
_UI_PREF_PAGE_CREATING_FILES=Creating files
_UI_REMEMBER_MY_DECISION_LABEL=Remember my decision
_UI_PREF_PAGE_DEFAULT_TARGET_NAMESPACE=Default Target Namespace:
_UI_REGEN_BINDINGS_ON_SAVE_QUESTIONMARK=Regenerate Bindings On Save?
_UI_LABEL_WARNING_DUPLICATE_NAME_EXISTS=Warning: duplicate name already exists
_UI_LABEL_NAMESPACE_URIS_TO_BE_INCLUDED=Namespace URIs to be included
_UI_PREF_PAGE_AUTO_REGENERATE_BINDING=Regenerate Binding on save
_UI_PREF_PAGE_PROMPT_REGEN_BINDING_ON_SAVE=Prompt Regenerate Binding on save
_UI_EDIT_NAMESPACES=Edit Namespaces...
_UI_ACTION_ADD_IMPORT=Add Import
_UI_ACTION_ADD_BINDING=Add Binding
_UI_ACTION_ADD_PART=Add Part
_UI_ACTION_ADD_XML_SCHEMA_ELEMENT=Add XML Schema Element
_UI_ACTION_REORDER_PART=Reorder Part
_UI_ACTION_REORDER_MESSAGE_REFERENCE=Reorder Message Reference
_UI_ACTION_OPEN_IN_NEW_EDITOR=Open In New Editor
_UI_ACTION_EXISTING_MESSAGE=Existing Message...
_UI_ACTION_EXISTING_ELEMENT=Existing Element...
_UI_ERROR_NAMESPACE_INVALID=The target namespace is invalid
_UI_ERROR_FILE_ALREADY_EXISTS=File already exists: {0}
_UI_DESCRIPTION_NEW_WSDL_FILE=Specify the attributes for the new WSDL file.
_UI_REGEN_BINDINDS_ON_SAVE=Regenerate Bindings On Save
_UI_RADIO_DOCUMENT_LITERAL=document literal
_UI_TITLE_SPECIFY_PORTTYPE=Specify Port Type
_UI_LABEL_BINDING_PROTOCOL=Protocol:
_UI_LABEL_INLINE_SCHEMA_OF=Inline Schema of 
_UI_LABEL_TARGET_NAMESPACE=Target namespace:
_UI_LABEL_PREFIX_WITH_COLON=Prefix:
_UI_LABEL_CREATE_WSDL_SKELETON=Create WSDL Skeleton
_UI_LABEL_CREATE_NEW_WSDL_FILE=Create a new WSDL File
_UI_LABEL_SOAP_BINDING_OPTIONS=SOAP Binding Options
_UI_LABEL_HTTP_BINDING_OPTIONS=HTTP Binding Options
_UI_LABEL_ADD_EXTENSION_ELEMENT=Add Extension Element
_UI_SPECIFY_BINDING_DETAILS_LABEL=Specify the details of the binding that will be created
_UI_SPECIFY_PORT_DETAILS_TO_BE_CREATED=Specify the details of the port that will be created
_UI_LABEL_NEW_BINDING=New Binding
_UI_LABEL_NEW_PORTTYPE=New PortType
_UI_LABEL_REFERENCE_KIND=Reference Kind
_UI_LABEL_NEW_MESSAGE=New Message
_UI_RADIO_RPC_ENCODED=rpc encoded
_UI_RADIO_RPC_LITERAL=rpc literal
_UI_ACTION_EXISTING_TYPE=Existing Type...
_UI_SPECIFY_PORT_DETAILS=Specify Port Details
_UI_TITLE_SPECIFY_BINDING=Specify Binding
_UI_TITLE_SPECIFY_BINDING_DETAILS=Specify Binding Details
_UI_ERROR_FILE_MUST_END_WITH_WSDL=Error: File must end with wsdl
_UI_TITLE_SPECIFY_MESSAGE=Specify Message
_UI_TITLE_NEW_WSDL_FILE=New WSDL File
_UI_NAME_INVALID_CHAR_END=')
_UI_ACTION_RENAME=Rename
_UI_FOLDER_TYPES=Types
_UI_CANCEL_LABEL=Cancel
_UI_ACTION_NEW_TYPE=New Type...
_UI_ACTION_SET_TYPE=Set Type
_UI_FOLDER_IMPORTS=Imports
_UI_FOLDER_SERVICES=Services
_UI_FOLDER_BINDINGS=Bindings
_UI_FOLDER_INTERFACES=Interfaces
_UI_FOLDER_PORTTYPES=PortTypes
_UI_FOLDER_MESSAGES=Messages
_UI_ACTION_NEW_MESSAGE=New Message...
_UI_ACTION_NEW_ELEMENT=New Element...
_UI_ACTION_SET_ELEMENT=Set Element
_UI_ACTION_SET_MESSAGE=Set Message
_UI_ACTION_SET_BINDING=Set Binding
_UI_CHECKBOX_OVERWRITE=Overwrite existing binding information
_UI_ACTION_SET_PORTTYPE=Set PortType
_UI_ACTION_EDIT_PORT_ADDRESS=Edit Address
_UI_ACTION_ADD=Add
_UI_ACTION_OPEN_IMPORT=Open Import
_UI_UNSPECIFIED=(unspecified)
_UI_LABEL_NAME=Name
_UI_LABEL_TYPE=Type
_UI_BUTTON_NEW=New...
_UI_LABEL_ELEMENT=Element
_UI_BUTTON_BROWSE=Browse...
_UI_BINDING_WIZARD=Binding Wizard
_UI_BINDING=Binding
_UI_LABEL_MESSAGE=Message
_UI_LABEL_REMOVE=Remove
_UI_TITLE_SELECT=Select
_UI_TITLE_SELECT_FILE = Select File
_UI_DESCRIPTION_SELECT_WSDL_OR_XSD = Select a WSDL or XSD file to import.
_UI_TITLE_OPTIONS=Options
_UI_YES_LABEL=Yes
_UI_PORT_TYPE=Port Type
_UI_PORT_WIZARD=Port Wizard
_UI_NO_LABEL=No
_UI_ADD=Add...
_UI_HELP=Help
_UI_LABEL_NAME_FILTER=Name (? = character, * = any string):
_WARN_NAME_MUST_CONTAIN_AT_LEAST_ONE_CHAR=IWAX1415W Name field must contain at least one character
_WARN_NAME_HAS_SPACE=IWAX1402W Name field cannot contain a space
_WARN_NAME_INVALID_FIRST=IWAX1403W First character in name field must be one of the following ('_', ':', 'letter')
_WARN_NAME_INVALID_CHAR=IWAX1404W Name field contains invalid character ('
_WARN_WSI_COMPLIANCE_SOAP_PROTOCOL=WS-I compliance warning: protocol should be SOAP
_ERROR_WSI_COMPLIANCE_SOAP_PROTOCOL=WS-I compliance error: protocol must be SOAP
_WARN_WSI_COMPLIANCE_RPC_ENCODING=WS-I compliance warning: binding should not be rpc encoded
_ERROR_WSI_COMPLIANCE_RPC_ENCODING=WS-I compliance error: binding cannot be rpc encoded
_WSI_COMPLIANCE_LINK_TEXT=Modify project compliance setting

_UI_LABEL_UNDEFINED_ARG1={0} undefined
_UI_LABEL_UNDEFINED_ARG2={0} undefined: ''{1}''
_UI_LABEL_OR_UNDEFINED_ARG2={0} or {1} undefined
_UI_LABEL_OR_UNDEFINED_ARG3={0} or {1} undefined: ''{2}''
_UI_LABEL_NO_OBJECT_SPECIFIED_ARG1=no {0} specified
_UI_LABEL_NO_PARAMETERS_SPECIFIED=no parameters specified

_UI_LABEL_DEFAULT = default

_UI_EDITOR_NAME=WSDL Editor
