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

# Palette Action display name
CTL_Component_palette=Paleta

#Component palette labels, hints, menus
CTL_NewCategory=Categoria paleta
CTL_NewCategoryTitle=Nova categoria paleta
CTL_NewCategoryName=Nom &nova categoria:
CTL_NewCategoryValue=Categoria

HINT_PaletteComponent=Paleta component


# context menu on palette item button
CTL_Cut=Tallar
CTL_Copy=Copiar
CTL_Delete=Treure
FMT_ConfirmBeanDelete=Esteu segurs que voleu treure l'element \"{0}\" de la paleta?
CTL_ConfirmBeanTitle=Confirmaci\u00f3 per l'eliminaci\u00f3 de l'element de la paleta
CTL_ShowNames=Mostrar noms elements
CTL_HideNames=Ocultar noms elements
CTL_IconSize=Mostrar icones {0,choice,1#Grans|2#Petites}

# context menu on palette category
CTL_OrderItems=Canviar ordre elements
CTL_SortItems=Ordenar pel nom de l'element
CTL_Paste=Enganxar element
CTL_DeleteCategory=Eliminar categoria
CTL_RenameCategory=Canviar el nom de la categoria
FMT_ConfirmCategoryDelete=Esteu segurs que voleu eliminar la categoria de paleta \"{0}\"\ni tots els seus continguts?
CTL_ConfirmCategoryTitle=Confirmaci\u00f3 per l'eliminaci\u00f3 de la categoria de la paleta
CTL_Rename=Canviar el nom
CTL_NewName=&Nou nom:

# context menu on palette
CTL_SortCategories=Ordenar per nom categoria
CTL_OrderCategories=Canviar ordre categories
CTL_CreateCategory=Crear categoria nova
CTL_RefreshPalette=Refrescar paleta

# Formating of error message shown when user enters invalid name of new palette category.
ERR_InvalidName={0} no \u00e9s un nom v\u00e0lid.

# Formatting of warning message displayed when creating palette category and category with provided name already exists
# {0} - name of the palette category requested to be created
FMT_CategoryExists=La categoria de paleta "{0}" ja existeix.


# Palette Manager
CTL_Customizer_Title=Gesti\u00f3 de la paleta
CTL_Caption=Contingut de la pale&ta:
CTL_NewCategory_Button=&Nova categoria...
CTL_Remove_Button=T&reure...
CTL_MoveUp_Button=Moure am&unt
CTL_MoveDown_Button=Moure abaix
CTL_Close_Button=Tan&car
MSG_ConfirmPaletteDelete=Esteu segurs que voleu treure el contingut seleccionat de la paleta?
CTL_ConfirmDeleteTitle=Confirmaci\u00f3 per l'eliminaci\u00f3 del contingut de la paleta
ACSD_PaletteCustomizer=Gesti\u00f3 de la paleta
ACSD_MoveUp=Moure l'element o la categoria cap amunt
ACSD_MoveDown=Moure l'element o la categoria cap abaix
ACSD_Remove=Treure la categoria o element seleccionat
ACSD_NewCategory=Afegir nova categoria
ACSD_Close=Tancar la finestra de la gesti\u00f3 de la paleta
ACSN_PaletteContentsTree=Arbre de continguts de la paleta
ACSD_PaletteContentsTree=Els elements i les categories de la paleta s\u00f3n mostrats com un arbre
CTL_ResetPalette=Restablir &paleta
ASCN_ResetPalette=Bot\u00f3 restablir paleta
ASCD_ResetPalette=Restableix els components de la paleta al seu estat predeterminat

CTL_ResetPalettePopup=Restablir paleta
MSG_ConfirmPaletteReset=Esteu segurs que voleu restablir la paleta?
CTL_ConfirmResetTitle=Confirmaci\u00f3 per al restabliment de la paleta


CTL_ShowCustomizer=Gesti\u00f3 de la paleta...

CTL_PaletteAction=Pale&ta

# Editor Palette Item parsing error messages
MSG_UnknownEditorPaletteItemVersion=Versi\u00f3 de l'editor de l'element de la paleta desconegut
MSG_UnsupportedEditorPaletteItemVersion=Versi\u00f3 de l'editor de l'element de la paleta no suportat

Err_StoreSettings=Error mentre es desaven les prefer\u00e8ncies de la paleta



