###############################################################################
# Copyright (c) 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
# -------- -------- -----------------------------------------------------------
# 20071025 196997   ericdp@ca.ibm.com - Eric Peters
# 20071107 196997   ericdp@ca.ibm.com - Eric Peters
# 20071120   209858 ericdp@ca.ibm.com - Eric Peters, Enhancing service policy framework and UI
###############################################################################

#
# Service Policies Preference page
#

LABEL_SERVICEPOLICIES_DESCRIPTION=Description:
LABEL_SERVICEPOLICIES_DEPENDENCIES=Dependencies:
#example message below is Compliance level "Suggest compliance" requires WS-I AP 1.0  [ suggest|ignore ]
SERVICEPOLICIES_DEPENDENCIES={0} \"{1}\" requires {2} {3} [{4}]
#example message below is WS-I SSBP Compliance level "Suggest compliance" requires WS-I AP 1.0  [ suggest|ignore ]
SERVICEPOLICIES_DEPENDENCY_ERROR= {0} {1} \"{2}\" requires {3} {4} [{5}]
SERVICEPOLICIES_DEPENDENCIES_NONE=None
TOOLTIP_PSP_DESCRIPTION=Description of selected tree node
TOOLTIP_PSP_TREE=Select a tree node and use the panel on the right to define related preferences

LABEL_QFLINK=Quick Fix
TEXT_QFIX_NOSUG=No Suggestions. See the error message and any listed dependencies for {1} to resolve the error.
TEXT_DETAILS=details
LINK_CONFIGWORKSPACE_SETTINGS=Configure Workspace Settings...
LABEL_ENABLE_PROJECT_SETTINGS=Enable project specific settings

