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