#-------------------------------------------------------------------------------
# Copyright (c) 2005, 2006 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

unknown_text=Desconhecido

# Error Reasons
emptyLibraryPathError_reason=O caminho da biblioteca de m\u00e9todos est\u00e1 vazio.
missingLibraryFileError_reason=O arquivo de modelo de biblioteca de m\u00e9todos est\u00e1 ausente.
unresolvedProxyError_reason=A biblioteca de m\u00e9todos selecionada cont\u00e9m refer\u00eancias de elementos n\u00e3o resolvidas. Isso geralmente \u00e9 causado por arquivos XMI ausentes ou colocados em local incorreto na pasta da biblioteca.\n\nFeche este di\u00e1logo e torne vis\u00edvel a visualiza\u00e7\u00e3o Problemas para ajudar a identificar as refer\u00eancias n\u00e3o resolvidas. Para evitar corromper a biblioteca, \u00e9 altamente recomend\u00e1vel resolver essas refer\u00eancias primeiro, antes de incluir mais altera\u00e7\u00f5es na biblioteca.

# Warning Messages
configClosureWarning_msg1=IUPL0007W: H\u00e1 refer\u00eancias ausentes em um ou mais elementos filhos
configClosureWarning_msg2=IUPL0008W: Este elemento deveria ser selecionado para resolver uma ou mais refer\u00eancias ausentes
configClosureWarning_msg3=IUPL0009W: Este elemento referencia um ou mais elementos em um pacote n\u00e3o-selecionado 
# Error Messages
loadResourcesError_msg=IUPL0000E: A biblioteca de m\u00e9todos foi carregada, mas alguns erros foram detectados.
unsupportedGuidanceTypeError_msg=IUPL0001E: Esta orienta\u00e7\u00e3o n\u00e3o pode ser convertida em outro tipo.
convertGuidanceError_msg=IUPL0002E: Esta orienta\u00e7\u00e3o n\u00e3o pode ser convertida no tipo de destino.
saveConvertedGuidanceError_msg=IUPL0003E: N\u00e3o \u00e9 poss\u00edvel salvar a orienta\u00e7\u00e3o convertida ''{0}''.

# Convert activity
convertActivityError_title=Converter Erro de Tipo de Atividade
convertActivityError_msg=IUPL0006E: Esta atividade n\u00e3o pode ser convertida para o tipo de destino.
saveConvertedActivityError_msg=IUPL0007E: A atividade convertida ''{0}'' n\u00e3o pode ser salva.

# Error Reasons
error_reason=IUPL0004E: Ocorreu um erro. Clique em OK para obter informa\u00e7\u00f5es adicionais.
unsupportedGuidanceTypeError_reason=N\u00e3o existe um tipo de orienta\u00e7\u00e3o compat\u00edvel para {0}.
invalidLibraryPathError_reason=Caminho de biblioteca inv\u00e1lido. N\u00e3o foi poss\u00edvel criar o arquivo .project.
couldNotLockLibrary_reason=N\u00e3o foi poss\u00edvel bloquear a biblioteca.

# Progress Messages
copyingAttachmentsTask_name=Copiando anexos...

# Convert Guidance Dialog
convertGuidanceDialog_title=Converter Tipo de Orienta\u00e7\u00e3o
convertGuidanceDialog_text=Selecione o tipo de orienta\u00e7\u00e3o de destino.

# Guidance type names for Convert Guidance Dialog - should be refactored into library.ui
checklist_text=Lista de Verifica\u00e7\u00e3o
concept_text=Conceito
example_text=Exemplo
guideline_text=Diretriz
estimate_text=Estimar
estimatingMetric_text=M\u00e9trica Estimativa
estimationConsiderations_text=Considera\u00e7\u00f5es Estimativas
report_text=Relat\u00f3rio
template_text=Template
supportingMaterial_text=Material Suportado
toolMentor_text=Mentor de Ferramentas
whitepaper_text=Whitepaper
termDefinition_text=Defini\u00e7\u00e3o de Termo
practice_text=Pr\u00e1tica
reusableAsset_text=Recurso Reutiliz\u00e1vel

#activity breakdown info strings
ActivityLayout_primaryTasks_text=Executa como Propriet\u00e1rio
ActivityLayout_additionalTasks_text=Executa como Adicional


# Convert Guidance Error Messages
convertGuidanceError_title=Erro de Convers\u00e3o de Tipo de Orienta\u00e7\u00e3o

# Load Resources Error Dialog
loadResourcesError_title=Erro de Abertura de Biblioteca de M\u00e9todos
loadResourcesError_reason=N\u00e3o foi poss\u00edvel carregar alguns recursos da biblioteca.\n\nClique em Detalhes para revisar os erros e resolv\u00ea-los antes de incluir mais altera\u00e7\u00f5es na biblioteca.

# Role Diagrams
roleDiagramPerforms_text=desempenha
roleDiagramResponsibleFor_text=respons\u00e1vel por

DefaultContentValidator_MSG0=Elemento referenciado: {0}
DefaultContentValidator_MSG1=Informa\u00e7\u00e3o: {0}
DefaultContentValidator_MSG4=Aviso: {0}
DefaultContentValidator_MSG7=Erro: {0}
DefaultContentValidator_MSG10=Elemento referenciado ausente {0}
DefaultContentValidator_MSG11=N\u00e3o foi poss\u00edvel localizar o elemento para o guid {0}
DefaultContentValidator_MSG12=O arquivo ''{0}'' referencia o recurso ausente ''{1}''
DefaultContentValidator_MSG15=arquivo de recursos ausente ''{0}''
DefaultContentValidator_MSG17=N\u00e3o foi poss\u00edvel conectar com a URL ''{0}''
DefaultContentValidator_MSG19=N\u00e3o foi poss\u00edvel conectar com a URL ''{0}'': {1}
ImportExportUtil_MSG8=N\u00e3o foi poss\u00edvel localizar o arquivo ''{0}''.
ImportExportUtil_MSG9=N\u00e3o foi poss\u00edvel criar o diret\u00f3rio ''{0}''.
unknownGuidance_text=Desconhecido

CopyAttachmentsToNewLocation_log_noContentPath=CopyAttachmentsToNewLocation.HandleAttachmentsPlugin: n\u00e3o existe contentPath para {0}
LibraryModificationHelper_cannotUpdate=IUPL0006W: N\u00e3o \u00e9 poss\u00edvel atualizar {0} {1}
warningDlg_title=Aviso
errorDlg_title=Erro
errorDlg_saveError=IUPL0005E: Erro ao salvar altera\u00e7\u00e3o no arquivo ''{0}''

# activity diagram names
activityDiagramName=Diagrama de atividade: {0}
activityDetailDiagramName=Diagrama de detalhe de atividade: {0}
wpDependencyDiagramName=Diagrama de depend\u00eancia do produto de trabalho: {0}

################################################################################
# THE FOLLOWING PROPERTIES SHOULD NOT BE TRANSLATED!!!
################################################################################

# Role diagram fonts and layout
roleDiagramFont_name=Arial
roleDiagramFont_name_win32=Arial
roleDiagramFont_size=10
roleDiagramFont_size_win32=10
roleDiagram_xMargin=200
roleDiagram_xSpacing=70
roleDiagram_ySpacing=30

# localize the value based on locale.  for example, 
# for English, the value is ". "
#colon_with_space=: 
# for french, the value is " . ", you need to use a \ to preserve the leading space
#colon_with_space=\ : 
# for chinese, the colon should be double bytes
# Dont trim the spaces after the colon.
colon_with_space=: 
