# 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?
overwriteText_msg1=''{0}'' j\u00e1 existe.\nDeseja sobrescrev\u00ea-lo e sua pasta de conte\u00fado ''{1}''?

# 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


