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


Err_CannotLoadIconFromFile=No es posible cargar el \u00edcono desde: {0}
Err_Title=Error
Err_IconTooBig=Las dimensiones del \u00edcono son demasiado grandes.
TextImporterUI.lblSmallIcon.text=
TextImporterUI.txtTooltip.text=
TextImporterUI.jLabel3.text=Icono peque\u00f1o (16x16):
TextImporterUI.btnSelectSmallIcon.text=Seleccionar...
TextImporterUI.jLabel4.text=icono grande (32x32):
TextImporterUI.lblLargeIcon.text=
TextImporterUI.txtName.text=
TextImporterUI.jLabel5.text=Contenido:
TextImporterUI.jLabel2.text=Sugerencia:
TextImporterUI.btnSelectLargeIcon.text=Seleccionar...
TextImporterUI.jLabel1.text=Nombre:
Err_NoTextDnDSupport=Esta paleta no soporta arrastrar y soltar.
Err_StoreItemToDisk=Error mientras se ordenaban los elementos de la paleta al disco.
Btn_AddToPalette=Agregar a la paleta
ACD_Btn_AddToPalette=Agregar nuevo elemento a la paleta
Btn_Cancel=Cancelar
ACD_Btn_Cancel=Cancelar agregar a la paleta
TextImporterUI.txtName.AccessibleContext.accessibleName=Nombre del fragmento de c\u00f3digo
TextImporterUI.txtContent.AccessibleContext.accessibleDescription=Contenido del fragmento de c\u00f3digo
TextImporterUI.btnSelectSmallIcon.AccessibleContext.accessibleDescription=Seleccione un icono peque\u00f1o
TextImporterUI.btnSelectLargeIcon.AccessibleContext.accessibleDescription=Seleccione un icono grande
TextImporterUI.lblLargeIcon.AccessibleContext.accessibleName=Icono grande
TextImporterUI.lblLargeIcon.AccessibleContext.accessibleDescription=Icono grande para el fragmento de c\u00f3digo
TextImporterUI.lblSmallIcon.AccessibleContext.accessibleName=icono peque\u00f1o
TextImporterUI.lblSmallIcon.AccessibleContext.accessibleDescription=icono peque\u00f1o para el fragmento de c\u00f3digo
TextImporterUI.txtTooltip.AccessibleContext.accessibleDescription=sugerencia para el fragmento de c\u00f3digo
TextImporterUI.txtName.AccessibleContext.accessibleDescription=nombre para el fragmento de c\u00f3digo

LBL_QUICKSEARCH=Buscar:

