#-------------------------------------------------------------------------------
# Copyright (c) 2000, 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 implementation.
#-------------------------------------------------------------------------------
# NLS_MESSAGEFORMAT_VAR

# Plug-in
pluginName=UI de RCP de compositor de EPF
productName=Compositor de EPF
providerName=Eclipse.org

# About text
aboutText=Eclipse Process Framework Composer\n\
\n\
Versi\u00f3n: {1}\n\
Etiqueta de build: {0}\n\
\n\
(c) Copyright Colaboradores de Eclipse y otros 2000, 2007. Reservados todos los derechos.\n

# Category
methodCategoryName=M\u00e9todo

# Views
welcomeViewName=Bienvenida

# Actions
globalActionSet=Conjunto de acciones globales
newAction=&Nuevo
newActionTooltip=Nuevo
openAction=&Abrir...
openActionTooltip=Abrir
searchAction=&Buscar...
searchActionTooltip=Buscar
welcomeAction=&Bienvenida
welcomeActionToolTip=Bienvenida

# Tooltips
shortcut.overview.tooltip=Volver a la p\u00e1gina Visi\u00f3n general
shortcut.tutorials.tooltip=Volver a la p\u00e1gina Gu\u00eda de aprendizaje
shortcut.firststeps.tooltip=Volver a la p\u00e1gina Primeros pasos
shortcut.webresources.tooltip=Volver a la p\u00e1gina Recursos web       

#Action Set
actionSet.description = Acciones de la barra de herramientas del sistema de ayuda
actionSet.label = Sistema de ayuda
searchAction.label = B&uscar en la ayuda
searchAction.tooltip = Buscar en la ayuda
dynamicHelpAction.label = A&yuda din\u00e1mica 
dynamicHelpAction.tooltip = Ayuda din\u00e1mica

#Activities/Capabilities
activity.general=Importar y exportar proyectos y recursos
activity.general.desc=Utilizar las funciones est\u00e1ndar de Importar/Exportar proyectos/recursos de Eclipse.
activity.team.cvs=Soporte de CVS
activity.team.cvs.desc=Utilizar el Sistema de versiones concurrentes (CVS) para gestionar recursos.
activity.team=Soporte del equipo b\u00e1sico
activity.team.desc=Compartir proyectos mediante sistemas de gesti\u00f3n de la configuraci\u00f3n.

activity.cat.general=General
activity.cat.general.desc=Utilizar las funciones est\u00e1ndar de Eclipse.
activity.cat.team=Equipo
activity.cat.team.desc=Utilizar sistemas de gesti\u00f3n de la configuraci\u00f3n para gestionar recursos.

PreferencePages.Capabilities = Funciones
PreferencePages.Capabilities.activityName = &Funciones
PreferencePages.Capabilities.categoryName = &Funciones
PreferencePages.Capabilities.activityPromptButton = Mostrar &solicitud al habilitar funciones
PreferencePages.Capabilities.activityPromptButtonTooltip = Mostrar solicitud cuando una caracter\u00edstica que necesite la habilitaci\u00f3n de funciones se utilice por primera vez
PreferencePages.Capabilities.captionMessage = Las funciones le permiten habilitar o inhabilitar diversos componentes del producto.  Estas funciones se agrupan de acuerdo a un conjunto de categor\u00edas predefinidas.
