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

## RepositoryPanel.java
BK0001=Especifique la ubicaci\u00f3n del repositorio Subversion\:
BK0002=&URL del repositorio\:
BK0003=&Usuario\:
BK0004=&Contrase\u00f1a\:
BK0005=(dejar en blanco para acceso an\u00f3nimo)
BK0006=Configuraci\u00f3n del Pro&xy ...
BK0007=Guardar usuario y contrase\u00f1a
BK0009=Utilizar t\u00fanel externo
BK0010=Orden para el t\u00fanel\:
BK0011=Guarda su usuario y contrase\u00f1a

ACSN_RepositoryURL=URL del repositorio
ACSD_RepositoryURL=URLs del repositorio utilizadas recientemente

TT_svn_xxx=<html><body><tt><dl><dt>en Windows:</dt><dd>plink -l nombre_de_usuario -pw contrase\u00f1a<br>plink -l nombre_de_usuario -i C:\\Ruta\\De\\Clave.privada</dd><dt>en Unix:</dt><dd>ssh -l nombre_de_usuario -i ruta/de/clavePrivada</dd></tt></body></html>

TT_UserName=Su nombre de usuario
TT_Password=Su contrase\u00f1a utilizada para la autenticaci\u00f3n
ACSD_RepositoryPanel= En este panel se especifica la URL del repositorio y cualquier otro par\u00e1metro necesario para establecer la conexi\u00f3n.

BK2018=Dep\u00f3sito

ACSD_ProxyDialog=Este cuadro de di\u00e1logo permite especificar los par\u00e1metros de la conexi\u00f3n de red que se van a utilizar para conectar con un servidor Mercurial determinado. Las opciones posibles son: Proxy HTTP, proxy SOCKS, conexi\u00f3n directa o predeterminada del sistema.

MSG_Repository_WrongRevision = N\u00famero de revisi\u00f3n err\u00f3neo: {0}
MSG_Repository_OnlyHEADRevision = La \u00fanica revisi\u00f3n permitida aqu\u00ed es CABEZA.

MSG_Repository_Url_Help = <html><body>El IDE es compatible con los siguientes tipos de URL de Mercurial:<dl><dt><tt>{0}</tt></dt><dd>para acceso directo a repositorios Mercurial</dd><dt><tt>{1}</tt></dt><dd>para conectar al repositorio Mercurial por medio del protocolo WebDAV</dd><dt><tt>{2}</tt></dt><dd>para conectar al repositorio Mercurial por medio del protocolo WebDAV con encriptaci\u00f3n SSL</dd><dt><tt>{3}</tt></dt><dd>para conectar al repositorio Mercurial sin necesidad de un servidor especializado en el servidor web</dd><dt><tt>{4}</tt></dt><dd>para conectar a un repositorio Mercurial por medio de un protocolo ssh</dd></dl></body></html>

ACSD_RepositoryPanel_Title=Especifica la ubicaci\u00f3n del repositorio de Mercurial

ACSD_InfoLabel=Mensaje informativo

# HgURL
MSG_INVALID_URL = URL hg inv\u00e1lida: {0}
MSG_UNSUPPORTED_PROTOCOL = Protocolo/Esquema no admimitido: {0}
ChangesetPanel.jPanel1.border.title=Detalles
ChangesetPanel.jLabel1.text=&Descripci\u00f3n:
ChangesetPanel.jLabel2.text=A&utor:
ChangesetPanel.jLabel3.text=F&echa:
ChangesetPanel.jTextField1.text=
ChangesetPanel.jTextField2.text=
ChangesetPanel.jTextField3.text=
UserPasswordPanel.lblUsername.text=nombre usuario:
UserPasswordPanel.lblPassword.text=&Contrase\u00f1a:
ACSN_UserPasswordPanel_Username=Nombre de usuario
ACSN_UserPasswordPanel_Password=Contrase\u00f1a
UserPasswordPanel.cbRememberPassword.text=&Guardar como predeterminado en hgrc
ACSN_UserPasswordPanel_Remember=Guardar como predeterminado en hgrc
ACSD_UserPasswordPanel_Remember=Guardar valores como parte predeterminada de las URL en el archivo de configuraci\u00f3n de hgrc
UserPasswordPanel.cbRememberPassword.AccessibleContext.accessibleName=
UserPasswordPanel.cbRememberPassword.AccessibleContext.accessibleDescription=
UserPasswordPanel.lblMessage.text=
MSG_UserPasswordPanel_AuthRequired=<html>Se necesita autenticaci\u00f3n para el repositorio ubicado en:<br>{0}</html>
CTL_UserPasswordPanel_AuthRequired=Se requiere autenticaci\u00f3n
ChangesetPanel.jTextField1.AccessibleContext.accessibleDescription=No disponible
ChangesetPanel.jTextField2.AccessibleContext.accessibleDescription=No disponible
ChangesetPanel.jTextField3.AccessibleContext.accessibleDescription=No disponible
RepositoryPanel.chooseFolderButton.text=Seleccione carpeta..
RepositoryPanel.chooseFolderButton.toolTipText=Abre un cuadro de dialogo donde podras elegir el repositorio local.
RepositoryPanel.FileChooser.Descritpion=Selecciona el repositorio local que quieres clonar
RepositoryPanel.FileChooser.Title=Seleccione repositorio local
ChangesetPickerPanel.revisionsLabel.text=Es&coger de entre las Re&visiones:
ChangesetPickerPanel.options=Opciones
MSG_Fetch_20_Revisions = Cargando hasta 20 Revisiones...
MSG_Fetch_50_Revisions = Cargando hasta 50 Revisiones...
MSG_Fetch_All_Revisions = Cargando todas las Revisiones...
MSG_Tip_Revision = tip
MSG_Fetching_Revisions = Cargando Revisiones...
MSG_Revision_Default = <no existe la revisi\u00f3n>
MSG_Refreshing_Revisions=Actualizando versiones
MSG_ChangesetPickerPanel.currentHead=padre
MSG_Repository.kenai.insufficientRights.read=Falta de permisos: No estas autorizado para acceder al repositorio
MSG_Repository.kenai.insufficientRights.write=Insufficient rights: You are not authorized to push into the repository.

