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

FetchingPlugins=Agarde... Obtendo a lista de engadidos dende o servidor

GrailsPluginPanel.reloadInstalledButton.text=&Recargar os engadidos
GrailsPluginPanel.uninstallButton.text=Desinsta&lar
GrailsPluginPanel.reloadAvailableButton.text=&Recargar os engadidos
GrailsPluginPanel.installButton.text=&Instalar
GrailsPluginPanel.pluginBrowseButton.text=E&xaminar...
GrailsPluginPanel.pluginLocationLabel.text=&Localizaci\u00f3n do engadido

GrailsPluginPanel.installedPlugins.accessibleName=Engadidos instalados
GrailsPluginPanel.availablePlugins.accessibleName=Engadidos dispo\u00f1\u00edbeis
GrailsPluginPanel.reloadInstalledButton.accessibleName=Recargar os engadidos
GrailsPluginPanel.reloadAvailableButton.accessibleName=Recargar os engadidos
GrailsPluginPanel.pluginBrowseButton.accessibleName=Examinar
GrailsPluginPanel.pluginZipPath.accessibleName=Localizaci\u00f3n do engadido
GrailsPluginPanel.pluginsPanel.accessibleName=Engadidos
GrailsPluginPanel.accessibleName=Engadidos de Grails

GrailsPluginPanel.installedPlugins.accessibleDescription=Engadidos instalados no proxecto
GrailsPluginPanel.availablePlugins.accessibleDescription=Engadidos dispo\u00f1\u00edbeis para o proxecto
GrailsPluginPanel.reloadInstalledButton.accessibleDescription=Recargar os engadidos instalados
GrailsPluginPanel.reloadAvailableButton.accessibleDescription=Recargar os engadidos dispo\u00f1\u00edbeis
GrailsPluginPanel.pluginBrowseButton.accessibleDescription=Examinar por engadido
GrailsPluginPanel.pluginZipPath.accessibleDescription=Localizaci\u00f3n do ficheiro do engadido
GrailsPluginPanel.pluginsPanel.accessibleDescription=Engadidos
GrailsPluginPanel.accessibleDescription=Engadidos de Grails

GrailsPluginPanel.newPlugins=Novos engadidos
GrailsPluginPanel.installed=Instalado

LBL_BuildAction_Name=Compilar
LBL_RunAction_Name=Executar
LBL_DebugAction_Name=Depurar
LBL_TestAction_Name=Proba
LBL_CleanAction_Name=Limpar
LBL_ShellAction_Name=Int\u00e9rprete de ordes de Grails
LBL_Compile_Name=Compilar
LBL_Stats_Name=Estat\u00edsticas
LBL_Upgrade_Name=Actualizar

TITLE_BrowsePluginLocation=Examinar a localizaci\u00f3n do engadido
LBL_BrowsePluginLocation_OK_Button=Aceptar

LBL_CreateNewController=Crear novo controlador
LBL_CreateNewDomainClass=Crear nova clase de dominio
LBL_CreateNewCommandScript=Crear un novo script de ordes
LBL_CreateNewService=Crear un novo servizo
LBL_CreateNewTagLibrary=Crear unha nova biblioteca de etiquetas

MSG_InvalidPackageName=O nome non \u00e9 un paquete de Java correcto.


