###############################################################################
# Copyright (c) 2007, 2009 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
# 20071212   209858 ericdp@ca.ibm.com - Eric Peters, Enhancing service policy framework and UI
# 20090306   224632 ericdp@ca.ibm.com - Eric D. Peters, Fix Service Policies preference page 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_DEPENDENCIES=Dependencies of selected tree node
TOOLTIP_PSP_TREE=Select a tree node and use the panel on the right to define related preferences
TOOLTIP_PSP_DETAILSTREE=Select a tree node and use the panel below 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
LABEL_SERVICEPOLICIES_PAGE_DESCRIPTION=Specify quality of service related settings:

