# NLS_ENCODING=UNICODE
#-------------------------------------------------------------------------------
# Copyright (c) 2000, 2008 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 implementation.
#-------------------------------------------------------------------------------
# NLS_MESSAGEFORMAT_VAR

# Plug-in
pluginName=EPF Composer RCP UI
productName=EPF Composer
providerName=Eclipse.org

# About text
aboutText=Eclipse Process Framework Composer\n\
\n\
Version: {0}\n\
\n\
(c) Copyright Eclipse contributors and others {1}, {2}. All Rights Reserved.\n

# Category
methodCategoryName=Method

# Views
welcomeViewName=Welcome

# Actions
globalActionSet=Global Action Set
newAction=&New
newActionTooltip=New
openAction=&Open...
openActionTooltip=Open
searchAction=&Search...
searchActionTooltip=Search
welcomeAction=&Welcome
welcomeActionToolTip=Welcome

# Tooltips
shortcut.overview.tooltip=Return to Overview page
shortcut.tutorials.tooltip=Return to Tutorial page
shortcut.firststeps.tooltip=Return to First Steps page
shortcut.webresources.tooltip=Return to Web Resources page       

#Action Set
actionSet.description = Help System Toolbar Actions
actionSet.label = Help System
searchAction.label = S&earch Help
searchAction.tooltip = Search Help
dynamicHelpAction.label = &Dynamic Help 
dynamicHelpAction.tooltip = Dynamic Help

#Activities/Capabilities
activity.general=Import and Export Projects and Resources
activity.general.desc=Use the standard Eclipse Import/Export Project/Resources capabilities.
activity.team.cvs=CVS Support
activity.team.cvs.desc=Use the Concurrent Versions System (CVS) to manage resources.
activity.team=Core Team Support
activity.team.desc=Share projects using configuration management systems.

activity.cat.general=General
activity.cat.general.desc=Use the standard Eclipse capabilities.
activity.cat.team=Team
activity.cat.team.desc=Use configuration management systems to manage resources.

PreferencePages.Capabilities = Capabilities
PreferencePages.Capabilities.activityName = &Capabilities
PreferencePages.Capabilities.categoryName = &Capabilities
PreferencePages.Capabilities.activityPromptButton = &Prompt when enabling capabilities
PreferencePages.Capabilities.activityPromptButtonTooltip = Prompt when a feature is first used that requires enablement of capabilities
PreferencePages.Capabilities.captionMessage = Capabilities allow you to enable or disable various product components.  These capabilities are grouped according to a set of predefined categories.
