# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU
# General Public License Version 2 only ("GPL") or the Common
# Development and Distribution License("CDDL") (collectively, the
# "License"). You may not use this file except in compliance with the
# License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html
# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
# specific language governing permissions and limitations under the
# License.  When distributing the software, include this License Header
# Notice in each file and include the License file at
# nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that
# accompanied this code. If applicable, add the following below the
# License Header, with the fields enclosed by brackets [] replaced by
# your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original
# Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
# Microsystems, Inc. All Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL
# or only the GPL Version 2, indicate your decision by adding
# "[Contributor] elects to include this software in this distribution
# under the [CDDL or GPL Version 2] license." If you do not indicate a
# single choice of license, a recipient has the option to distribute
# your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above.
# However, if you add GPL Version 2 code and therefore, elected the GPL
# Version 2 license, then the option applies only if the new code is
# made subject to such option by the copyright holder.



EXC_CannotHaveNullRootContext=No puede tener contexto ra\u00edz nulo.
# {0} - name of node to be selected
# {1} - name of node at root
EXC_ContextMustBeWithinRootContext=Un contexto explorado ({0}) debe estar dentro del contexto ra\u00edz ({1}).
# {0} - name of old node
EXC_handle_failed=No se ha podido restaurar la ventana del explorador; el nodo ra\u00edz "{0}" no se ha podido restaurar correctamente.
EXC_NodeCannotBeNull=No se puede utilizar un valor nulo para la selecci\u00f3n de nodo.
EXC_NoElementOfNodeSelectionMayBeNull=Ning\u00fan elemento de la selecci\u00f3n de nodo puede ser nulo.
# manifest
OpenIDE-Module-Name=API del Explorador y de la Hoja de Propiedades
OpenIDE-Module-Display-Category=Infraestructura
OpenIDE-Module-Short-Description=Varias vistas para mostrar las estructuras de nodos.
OpenIDE-Module-Long-Description=Permite definir nuevas vistas que muestran las estructuras creadas con la API de nodos.


#ExplorerPanel

# format for assigning the explorer's title

# {0} = displayName of current exploredContext
explorerTitle=Explorador [{0}]


# Currently unused:
# LBL_CouldNotDeserialize=(Could not restore)
# HINT_CouldNotDeserialize=This Explorer window could not be properly restored. Please close it and try again.

EXC_MustNotVetoEmptySelection=Una vista de explorador no debe vetar la selecci\u00f3n vac\u00eda.
EXC_NodeSelectionCannotContainNodes=Una selecci\u00f3n de nodos no puede contener nodos ({0}) que no est\u00e9n por debajo de la ra\u00edz ({1}).

# These messages are used from various places. DO NOT DELETE without checking all the usages!

#ExplorerActions
# {0}=name
MSG_ConfirmDeleteObject=\u00bfSeguro que desea suprimir {0}?
# {0}=name of folder
MSG_ConfirmDeleteFolder=\u00bfSeguro que desea suprimir {0} y todo su contenido?
# {0}=number of objects
MSG_ConfirmDeleteObjects=\u00bfSeguro que desea suprimir estos {0} elementos?
MSG_ConfirmDeleteObjectTitle=Confirmar Supresi\u00f3n de Objeto
MSG_ConfirmDeleteFolderTitle=Confirmar Supresi\u00f3n de Paquete
MSG_ConfirmDeleteObjectsTitle=Confirmar Supresi\u00f3n de Varios Objetos

# name for shadow of an object
# {0} real name of the shadow
# {1} real name of the original
# {2} full name of shadow file
# {3} full name of original file
MSG_ConfirmDeleteShadow=\u00bfSeguro que desea suprimir {0} (enlace a {3})?
MSG_ConfirmDeleteShadowTitle=Confirmar Supresi\u00f3n de Enlace

