#-------------------------------------------------------------------------------
# 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

################################################################################
# BEGIN NO TRANSLATION
################################################################################
# Default Publish Path
# !! DO NOT TRANSLATE THE FOLLOWING LINE !!
publishPath=<user.home>/<app.name>/Publish
################################################################################
# END NO TRANSLATION
################################################################################

# Plug-in
pluginName=UI de publicaci\u00f3n de EPF
providerName=Eclipse.org

# Default Feedback URL
feedbackURL=http://www.published_website.com/feedback

# Publish Configuration Action
publishConfigAction=&Publicar...
publishConfigActionTooltip=Publicar un sitio web para una configuraci\u00f3n

# Preference Page
rootPageName=Publicar/Examinar
roleDiagramPageName=Diagrama de roles
activityDiagramPageName=Diagramas de actividad
supportingPluginPageName=Plug-ins de soporte
publishingOptions=Opciones de publicaci\u00f3n

# Publishing Actions
configActionSet=Configuraci\u00f3n
configMenu=C&onfiguraci\u00f3n

# Print Configuration Action
printConfigAction=Imprimir

# the title for the published site
#don't define here, let user specify it.
#title=OpenUP/Basic

