# 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:
#

# Import XML Wizard
importXMLWizard_title=Importar XML

# Select Import XML File Wizard Page
selectXMLFilePage_title=Especificar arquivo de importa\u00e7\u00e3o
selectXMLFilePage_desc=Especifique o arquivo XML que cont\u00e9m o conte\u00fado da biblioteca de m\u00e9todo a ser importado e selecione a opera\u00e7\u00e3o de importa\u00e7\u00e3o apropriada a ser executada.
fileLabel_text=Arquivo XML:
browseButton_text=Procurar...
optionGroup_text=Op\u00e7\u00e3o de mesclagem
optionGroup1_text=Op\u00e7\u00e3o de verifica\u00e7\u00e3o do plug-in de base
overwriteRadioButton_text=Substituir conte\u00fado da biblioteca de m\u00e9todo existente pelo conte\u00fado importado
mergeRadioButton_text=Mesclar conte\u00fado importado na biblioteca de m\u00e9todo existente
mergeRadioButton2_text=Mesclar conte\u00fado importado na biblioteca de m\u00e9todo existente (mesclagem de n\u00edvel de elemento)

# Progress Messages
importingXML_text=Importando o conte\u00fado da biblioteca XML na biblioteca de m\u00e9todo atual...

# Import XML Error Dialog
review_log_files=A opera\u00e7\u00e3o de importa\u00e7\u00e3o foi conclu\u00edda. Reveja os arquivos de log na \npasta ''{0}'' em busca de qualquer erro.
importXMLError_msg=IUPM0000E: A opera\u00e7\u00e3o de importa\u00e7\u00e3o n\u00e3o pode continuar.
importXMLError_reason=IUPM0009E: A biblioteca de m\u00e9todo atual \u00e9 de leitura.\n\nCertifique-se de que ''{0}'' seja grav\u00e1vel ou crie uma nova biblioteca de m\u00e9todo e tente novamente.

# Error Messages
invalidXMLFile_error=O arquivo XML especificado n\u00e3o \u00e9 v\u00e1lido.
versionMismatch_oldData=IUPM0010E: O arquivo XML especificado foi exportado por uma vers\u00e3o anterior ({0}) de {1}. Os arquivos devem ser exportados utilizando a vers\u00e3o atual do {1}.
versionMismatch_oldData_unknown=IUPM0011E: O arquivo XML especificado foi exportado por uma vers\u00e3o anterior de {0}. Os arquivos devem ser exportados utilizando a vers\u00e3o atual do {0}.
versionMismatch_oldTool=IUPM0012E: O arquivo XML especificado foi exportado por uma vers\u00e3o mais recente ({0}) de {1}. Voc\u00ea deve fazer upgrade de {1} para importar o arquivo.  
versionMismatch_oldTool_unknown=IUPM0013E: O arquivo XML especificado n\u00e3o pode ser aberto. Voc\u00ea deve fazer upgrade de {0} para importar o arquivo.  

importXMLService_element_not_handled=Elemento n\u00e3o identificado: {0}
importXMLService_element_without_id=Elemento sem ID: {0}
importXMLService_import_failed=Falha ao importar: {0}
importXMLService_missing_plugin=Falta o plug-in necess\u00e1rio {0}
importXMLService_error_missing_plugins=Falta(m) o(s) plug-in(s) necess\u00e1rio(s). Verifique os arquivos de log para detalhes.

library_error_no_eclass=Erro ao criar ContentCategory: imposs\u00edvel obter EClass para {0}
library_no_package=Imposs\u00edvel encontrar pacote propriet\u00e1rio do objeto {0}
library_error_create_element=Erro ao criar elemento: {0}
library_object_string=objeto {0}, recurso {1}
library_error_set_attribute_2=Erro ao definir atributo: valor de recurso de atributo inv\u00e1lido {0}
library_error_set_attribute=Erro ao definir atributo para objeto {0}, recurso {1} e valor {2}
library_error_set_attribute_3=Sem saber como definir atributo para o objeto {0}, recurso {1} e valor {2}
library_error_set_reference=Erro ao definir refer\u00eancia para recurso {0}: nenhum elemento com o id {1}
library_error_set_reference_2=Erro ao definir refer\u00eancia para objeto {0}, recurso {1} e valor {2}

