
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright (c) 2011, 2016 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]"
#
# 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.
#
# Contributor(s):
# {0} - the root to attach Javadoc to
TXT_AttachJavadocTo=Anexar Javadoc a "{0}"
# {0} - the root to attach Sources to
TXT_AttachSourcesTo=Anexar Fontes a "{0}"
TXT_InvalidJavadocRoot=Raiz Javadoc inv\u00e1lida
TXT_InvalidSourceRoot=Raiz de origem inv\u00e1lida
TXT_Javadoc=Javadoc da Biblioteca (pasta, arquivo ZIP ou JAR)
TXT_LocalSources=Fontes:
TXT_LocalJavadoc=Javadoc:
TXT_Browse=Adicionar Zip/Pasta...
TXT_Remove=&Remover
TXT_MoveUp=Mover para &Cima
TXT_MoveDown=Mover para &Baixo
TXT_AddURL=Adicionar URL...
TXT_RemoteJavadoc=URL do Javadoc &Remoto:
TXT_RemoteJavadoc_Title=Adicionar Javadoc Remoto
# {0} - the value of the invalid URI
TXT_InvalidRoot=URI inv\u00e1lida: {0}
# {0} - relative path in an archive, {1} - path to archive
PATTERN_RELPATH_IN_FILE={0} em {1}
TXT_Download=Fazer Download
# {0} - the root URL
ERR_DownloadSourcesFailed=Nenhum c\u00f3digo-fonte para {0} dispon\u00edvel.
# {0} - the root URL
ERR_DownloadJavadocFailed=Nenhum javadoc para {0} dispon\u00edvel.
TXT_Select=Adicionar ZIP/Pasta
TXT_SelectJavadoc=Selecionar Javadoc
TXT_SelectSources=Selecionar C\u00f3digos-fonte
TXT_Sources=Origens da Biblioteca (pasta, arquivo ZIP ou JAR)
TXT_Title=Procurar ZIP/Pasta

