# 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=Selecione o tipo de conte\u00fado de biblioteca de m\u00e9todo a ser exportado.
exportLibraryRadioButton_text=Exportar a biblioteca de m\u00e9todo inteira
exportPluginsRadioButton_text=Exportar um ou mais plug-ins de m\u00e9todo
exportConfigsRadioButton_text=Exportar uma configura\u00e7\u00e3o de m\u00e9todo

# Select Destination XML File Wizard Page
selectXMLFilePage_title=Especificar arquivo de exporta\u00e7\u00e3o
selectXMLFilePage_desc=Especifique um arquivo XML de destino para armazenar o conte\u00fado exportado da biblioteca de m\u00e9todo.
fileLabel_text=Arquivo XML:
browseButton_text=Procurar...

# Overwrite Confirmation Dialog
overwriteText_msg=''{0}'' j\u00e1 existe.\nDeseja sobrescrev\u00ea-lo?

# Progress Messages
exportingXML_text=Exportar conte\u00fado da biblioteca de m\u00e9todo para o arquivo XML...

# Error Messages
invalidXMLFile_error=O arquivo XML especificado n\u00e3o \u00e9 v\u00e1lido.
exportXMLWizard_error=IUPM0000E: A exporta\u00e7\u00e3o falhou: {0}
exportXMLWizard_reviewLog=Exporta\u00e7\u00e3o conclu\u00edda. Examine os arquivos de log no diret\u00f3rio de exporta\u00e7\u00e3o.
exportXMLService_error=Erro ao exportar biblioteca: {0}
exportXMLService_feature_error=Erro ao definir valor de recurso: Elemento={0}, recurso={1}
xmlLibrary_error_load_xml=Imposs\u00edvel carregar origem XML ''{0}''
xmlLibrary_no_plugin=Nenhum plug-in de m\u00e9todo para o id {0}
xmlLibrary_no_feature=Imposs\u00edvel obter recurso XML para {0}_{1}
xmlLibrary_no_class=Imposs\u00edvel obter EClass para {0}
xmlLibrary_error_create_element=Erro ao criar elemento; sem saber como definir o valor para o recurso {0}
xmlLibrary_error_set_value=Erro ao criar elemento; n\u00e3o \u00e9 poss\u00edvel definir o valor {0} para o cont\u00eainer {1}
xmlLibrary_invalid_feature_value=Valor de recurso de atributo inv\u00e1lido para o recurso {0}, com o valor {1}
xmlLibrary_error_set_value_2=Erro ao definir atributo; n\u00e3o \u00e9 poss\u00edvel definir valor para recurso={0}, objeto={1}, valor={2}
xmlLibrary_error_set_value_3=Sem saber como definir valor para recurso={0}, objeto={1}, valor={2}
xmlLibrary_error_set_reference=Erro ao definir refer\u00eancia; n\u00e3o \u00e9 poss\u00edvel definir valor para recurso={0}, objeto={1}, valor={2}
xmlLibrary_error_process_wrong_container=O processo ''{0}'' n\u00e3o tem um cont\u00eainer v\u00e1lido. O cont\u00eainer \u00e9 do tipo ''{1}'', que n\u00e3o \u00e9 um pacote de processo
xmlLibrary_new_id=O elemento {0} recebeu um novo id {1} porque n\u00e3o tem um v\u00e1lido
xmlLibrary_id_not_unique=O Id ''{0}'' do elemento \u00e9 utilizado por mais de um elemento

export_config_to_temp_location=Exportar configura\u00e7\u00e3o para um local tempor\u00e1rio
open_lib_from_temp_exported_location=Abrir biblioteca a partir de local exportado tempor\u00e1rio


