#-------------------------------------------------------------------------------
# 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=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 compilaci\u00f3n: {0}\n\
\n\
(c) Copyright Colaboradores de Eclipse y otros 2000, 2008. 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.
