# NLS_ENCODING=UNICODE
#-------------------------------------------------------------------------------
# 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:
#

# Export XML Wizard
exportXMLWizard_title=Exportar XML

# Select Export Type Wizard Page
selectExportTypePage_desc=Seleccione el tipo de contenido de la biblioteca de m\u00e9todos para exportar.
exportLibraryRadioButton_text=Exportar la biblioteca de m\u00e9todos entera
exportPluginsRadioButton_text=Exportar uno o m\u00e1s plug-ins de m\u00e9todo
exportConfigsRadioButton_text=Exportar una configuraci\u00f3n de m\u00e9todo

# Select Destination XML File Wizard Page
selectXMLFilePage_title=Especificar archivo de exportaci\u00f3n
selectXMLFilePage_desc=Especifique un archivo XML de destino para almacenar el contenido de la biblioteca de m\u00e9todos exportada.
fileLabel_text=Archivo XML:
browseButton_text=Examinar...

# Overwrite Confirmation Dialog
overwriteText_msg=''{0}'' ya existe.\n\u00bfDesea sobrescribirlo?
overwriteText_msg1=''{0}'' ya existe.\n\u00bfDesea sobrescribirlo y a su archivo contenedor ''{1}''?

# Progress Messages
exportingXML_text=Exportando contenido de biblioteca de m\u00e9todos a archivo XML...

# Error Messages
invalidXMLFile_error=El archivo XML especificado no es v\u00e1lido.
exportXMLWizard_error=IUPM0000E: La exportaci\u00f3n ha fallado: {0}
exportXMLWizard_reviewLog=La exportaci\u00f3n ha concluido. Revise los archivos de registro bajo el directorio de exportaci\u00f3n.
exportXMLService_error=Error al exportar la biblioteca: {0}
exportXMLService_feature_error=Error al establecer el valor de la caracter\u00edstica: Elemento={0}, caracter\u00edstica={1}
xmlLibrary_error_load_xml=No se ha podido cargar el archivo origen XML ''{0}''
xmlLibrary_no_plugin=No hay ning\u00fan plug-in de m\u00e9todo para el ID {0}
xmlLibrary_no_feature=No se ha podido obtener la caracter\u00edstica XML para {0}_{1}
xmlLibrary_no_class=No se ha podido obtener EClass para {0}
xmlLibrary_error_create_element=Error al crear el elemento, no se sabe c\u00f3mo establecer el valor para la caracter\u00edstica {0}
xmlLibrary_error_set_value=Error al crear elemento, no se puede establecer el valor {0} en el contenedor {1}
xmlLibrary_invalid_feature_value=Valor de caracter\u00edstica de atributo no v\u00e1lido para la caracter\u00edstica {0}, con el valor {1}
xmlLibrary_error_set_value_2=Error al establecer atributo, no se puede establecer el valor para la caracter\u00edstica={0}, objeto={1}, valor={2}
xmlLibrary_error_set_value_3=No se sabe c\u00f3mo establecer el valor para la caracter\u00edstica={0}, objeto={1}, valor={2}
xmlLibrary_error_set_reference=Error al establecer referencia, no se puede establecer el valor para la caracter\u00edstica={0}, objeto={1}, valor={2}
xmlLibrary_error_process_wrong_container=El proceso ''{0}'' no tiene un contenedor v\u00e1lido. El contenedor es del tipo ''{1}'', que no es un paquete de proceso.
xmlLibrary_new_id=El elemento {0} se ha asignado con un ID nuevo {1} porque no tiene uno v\u00e1lido
xmlLibrary_id_not_unique=M\u00e1s de un elemento utiliza el ID de elemento ''{0}''

export_config_to_temp_location=Exportar configuraci\u00f3n a una ubicaci\u00f3n temporal
open_lib_from_temp_exported_location=Abrir biblioteca desde la ubicaci\u00f3n temporal exportada


