#-------------------------------------------------------------------------------
# Copyright (c) 2000, 2007 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# IBM Corporation - initial implementation.
#-------------------------------------------------------------------------------
# NLS_MESSAGEFORMAT_VAR
#
# Message ID Range: IUPE0200E - IUPE0299E
#

# Import Library Configuration Wizard
importConfigWizard_title=Importar configuraci\u00f3n de la biblioteca
selectConfigDirWizardPage_title=Especificar directorio de importaci\u00f3n
selectConfigDirWizardPage_text=Especifique el directorio que contiene la configuraci\u00f3n de la biblioteca para importar.
reviewChangesWizardPage_title=Revisar cambios de la biblioteca
reviewChangesWizardPage_text=Revise los cambios que se realizar\u00e1n en la biblioteca de m\u00e9todos actual.
selectConfigSpecsWizardPage_title=Seleccionar especificaciones de la configuraci\u00f3n
selectConfigSpecsWizardPage_text=Seleccione una o varias especificaciones de la configuraci\u00f3n para importar.

# Import Method Plug-ins Wizard
importPluginsWizard_title=Importar conectores de m\u00e9todo
selectPluginsDirWizardPage_title=Especificar directorio de importaci\u00f3n
selectPluginsDirWizardPage_text=Especifique el directorio que contiene los conectores de m\u00e9todo para importar.
selectPluginsWizardPage_title=Seleccionar conectores de m\u00e9todo
selectPluginsWizardPage_text=Seleccione uno o varios conectores de m\u00e9todo para importar. Si ya hay un conector seleccionado en la biblioteca de m\u00e9todos actual, compruebe las diferencias de la versi\u00f3n.
importPluginsWizard_ERR_Import_plugin=La importaci\u00f3n del conector ha fallado

ConfigurationImportService_MSG0=Validando la configuraci\u00f3n de la biblioteca seleccionada...
ConfigurationImportService_MSG1=El directorio especificado no contiene una configuraci\u00f3n v\u00e1lida.
ConfigurationImportService_MSG3=Importando la configuraci\u00f3n de m\u00e9todo...
ConfigurationImportService_MSG2=No puede importarse sobre s\u00ed misma la biblioteca abierta actualmente.
ImportConfigurationWizard_MSG1=Importando la configuraci\u00f3n de m\u00e9todo...
ImportConfigurationWizard_ERR_Import_configuration=La configuraci\u00f3n de la importaci\u00f3n ha fallado

FileModifyChecker_Checkout_failed_title=La confirmaci\u00f3n ha fallado
FileModifyChecker_Checkout_failed_msg=Algunos archivos no se han confirmado, \u00bfdesea intentarlo de nuevo?

ImportConfigReportPage_title=Importando el informe de configuraci\u00f3n
ImportPluginWizard_readonly=IUPE0201E: La biblioteca es de s\u00f3lo lectura.
ImportPluginWizard_MSG1=Importando el conector de m\u00e9todo...
ImportPluginWizard_error=Error
ImportPluginWizard_warn_existing_plugins=IUPE0200E: El siguiente conector seleccionado ya existe y, si se vuelve a importar, sobrescribir\u00e1 el conector existente:\n\n {0} \n\n\u00bfEst\u00e1 seguro de que desea continuar?
ImportPluginWizard_confirm_continue=\n\n\u00bfEst\u00e1 seguro de que desea continuar?
ImportPluginWizard_warn_circular_plugins=Referencias circulares detectadas entre los siguientes conectores

SelectConfigsToImport_label1=Se importar\u00e1n los siguientes elementos:
ImportConfigurationWizard_error=Error
SelectImportConfigurationSource_MSG1=Analizando
SelectConfigSpecsToImportPage_title2=Seleccionar especificaciones de la configuraci\u00f3n para importar
SelectImportPluginSource_not_used=no se utiliza
SelectImportPluginSource_no_path=El directorio especificado no existe.
SelectImportPluginSource_no_dir=No se ha especificado ning\u00fan directorio
SelectPluginsToImport_label_plugins=Conectores disponibles en el directorio de importaci\u00f3n:
SelectPluginsToImport_label_author=Autor:
SelectPluginsToImport_label_version=Versi\u00f3n:
SelectPluginsToImport_label_desc=Descripci\u00f3n breve:
ImportConfigurationWizard_readonly=IUPE0201E: La biblioteca es de s\u00f3lo lectura.
PluginImportingService_MSG0=Validando los conectores seleccionados...
PluginImportingService_MSG1=La v\u00eda de acceso especificada no contiene un conector de m\u00e9todo v\u00e1lido.
PluginImportingService_MSG3=Importando el conector de m\u00e9todo...
PluginImportingService_MSG5=No se puede importar el conector de m\u00e9todo seleccionado. El conector dependiente ''{0}'' no se puede encontrar en la biblioteca de m\u00e9todos actual.
PluginImportingService_MSG6=No se puede importar el conector de m\u00e9todo seleccionado. No se puede encontrar un conector dependiente en la biblioteca de m\u00e9todos actual.
DiffReportViewer_content=Contenido
DiffReportViewer_in_import=En importaci\u00f3n
SelectPluginsToImport_MSG1=Analizando archivos...
DiffReportLabelProvider_yes=S\u00ed
SelectPluginsToImport_error=Error
DiffReportViewer_in_lib=En la biblioteca
DiffReportViewer_status=Estado
SelectPluginsToImport_libraryPluginExists=Se ha encontrado el conector seleccionado en la biblioteca actual
SelectPluginsToImport_libraryPluginNotExists=No se ha podido encontrar el conector seleccionado en la biblioteca actual
SelectConfigSpecsToImportPage_libraryConfigSpecExists=Se ha encontrado la configuraci\u00f3n en la biblioteca actual
SelectConfigSpecsToImportPage_configSpecNoSelection=No se ha seleccionado ninguna especificaci\u00f3n de la configuraci\u00f3n.
SelectConfigSpecsToImportPage_configSpecDataLabel=Configuraci\u00f3n seleccionada en el directorio de importaci\u00f3n
SelectConfigSpecsToImportPage_label_configs=Especificaciones de la configuraci\u00f3n disponibles en el directorio de importaci\u00f3n:
SelectImportConfigurationSource_not_used=no se utiliza
SelectConfigSpecsToImportPage_label_desc=Descripci\u00f3n breve:
SelectImportConfigurationSource_no_path=La v\u00eda de acceso especificada no existe.
SelectPluginsToImport_pluginNoSelection=No se ha seleccionado ning\u00fan conector.
SelectImportConfigurationSource_no_dir=No se ha especificado ning\u00fan directorio
SelectImportConfigurationSource_plugin_readonly=El conector {0} es de s\u00f3lo lectura\n
SelectImportConfigurationSource_plugin_locked=IUPE0203E: El conector {0} est\u00e1 bloqueado\n
SelectImportConfigurationSource_error_not_updatable=Algunos de los conectores de la biblioteca est\u00e1n bloqueados o son de s\u00f3lo lectura.\n Desbloquee los conectores y aseg\u00farese de que los archivos se pueden actualizar.
SelectPluginsToImport_pluginDataLabel=Conector seleccionado en el directorio de importaci\u00f3n
DiffReportViewer_type=Tipo de contenido
SelectConfigSpecsToImportPage_libraryConfigSpecNotExists=No se ha podido encontrar la configuraci\u00f3n seleccionada en la biblioteca actual.
versionMismatch_oldData=IUPE0204E: Una versi\u00f3n anterior ({0}) de {1} ha exportado los archivos especificados. Los archivos se deben exportar con la versi\u00f3n actual de {1}.
versionMismatch_oldData_unknown=IUPE0205E: Una versi\u00f3n anterior de {0} ha exportado los archivos especificados. Los archivos se deben exportar con la versi\u00f3n actual de {0}.
versionMismatch_oldTool=IUPE0206E: Una versi\u00f3n m\u00e1s reciente ({0}) de {1} ha exportado los archivos especificados. Debe actualizar {1} para importar los archivos.  
versionMismatch_oldTool_unknown=IUPE0207E: No se pueden abrir los archivos especificados. Debe actualizar {0} para importar los archivos.
ConfigurationImportService_handleToolVersion_error=IUPE0208E: No se han podido actualizar el o los conectores.
optionGroup_text=Opci\u00f3n Importar
checkBaseRadioButton_text=Comprobar conectores base
ignoreRemoveRadioButton_text=Ignorar y eliminar referencias sin resolver
