#-------------------------------------------------------------------------------
# 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 plug-ins de m\u00e9todo
selectPluginsDirWizardPage_title=Especificar directorio de importaci\u00f3n
selectPluginsDirWizardPage_text=Especifique el directorio que contiene los plug-ins de m\u00e9todo para importar.
selectPluginsWizardPage_title=Seleccionar plug-ins de m\u00e9todo
selectPluginsWizardPage_text=Seleccione uno o varios plug-ins de m\u00e9todo para importar. Si ya hay un plug-in seleccionado en la biblioteca de m\u00e9todos actual, compruebe las diferencias de la versi\u00f3n.
importPluginsWizard_ERR_Import_plugin=La importaci\u00f3n del plug-in 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 plug-in de m\u00e9todo...
ImportPluginWizard_error=Error
ImportPluginWizard_warn_existing_plugins=IUPE0200E: El siguiente plug-in seleccionado ya existe y, si se vuelve a importar, sobrescribir\u00e1 el plug-in 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 plug-ins

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=Plug-ins 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 plug-ins seleccionados...
PluginImportingService_MSG1=La v\u00eda de acceso especificada no contiene un plug-in de m\u00e9todo v\u00e1lido.
PluginImportingService_MSG3=Importando el plug-in de m\u00e9todo...
PluginImportingService_MSG5=No se puede importar el plug-in de m\u00e9todo seleccionado. El plug-in dependiente ''{0}'' no se puede encontrar en la biblioteca de m\u00e9todos actual.
PluginImportingService_MSG6=No se puede importar el plug-in de m\u00e9todo seleccionado. No se puede encontrar un plug-in 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 plug-in seleccionado en la biblioteca actual
SelectPluginsToImport_libraryPluginNotExists=No se ha podido encontrar el plug-in 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 plug-in.
SelectImportConfigurationSource_no_dir=No se ha especificado ning\u00fan directorio
SelectImportConfigurationSource_plugin_readonly=El plug-in {0} es de s\u00f3lo lectura\n
SelectImportConfigurationSource_plugin_locked=IUPE0203E: El plug-in {0} est\u00e1 bloqueado\n
SelectImportConfigurationSource_error_not_updatable=Algunos de los plug-ins de la biblioteca est\u00e1n bloqueados o son de s\u00f3lo lectura.\n Desbloquee los plug-ins y aseg\u00farese de que los archivos se pueden actualizar.
SelectPluginsToImport_pluginDataLabel=Plug-in 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.
optionGroup_text=Opci\u00f3n Importar
checkBaseRadioButton_text=Comprobar plug-ins base
ignoreRemoveRadioButton_text=Ignorar y eliminar referencias sin resolver
