# This properties file is used to create a PropertyResourceBundle
# It contains Locale specific strings used be the Metal Look and Feel.
# Currently, the following components need this for support:
#
#    FileChooser
#
# When this file is read in, the strings are put into the
# defaults table.  This is an implementation detail of the current
# workings of Swing.  DO NOT DEPEND ON THIS.
# This may change in future versions of Swing as we improve localization
# support.
#
# Refer to the note in basic.properties for a description as to what
# the mnemonics correspond to and how to calculate them.
#
# @author Steve Wilson


############ FILE CHOOSER STRINGS #############

FileChooser.lookInLabel.textAndMnemonic=Pesquisar &em:
FileChooser.saveInLabel.textAndMnemonic=Salvar Em:
FileChooser.fileNameLabel.textAndMnemonic=&Nome do Arquivo:
FileChooser.folderNameLabel.textAndMnemonic=&Nome da pasta:
FileChooser.filesOfTypeLabel.textAndMnemonic=Arquivos do &Tipo:
FileChooser.upFolderToolTip.textAndMnemonic=Um N\u00EDvel Acima
FileChooser.upFolderAccessibleName=Acima
FileChooser.homeFolderToolTip.textAndMnemonic=In\u00EDcio
FileChooser.homeFolderAccessibleName=In\u00EDcio
FileChooser.newFolderToolTip.textAndMnemonic=Criar Nova Pasta
FileChooser.newFolderAccessibleName=Nova Pasta
FileChooser.newFolderActionLabel.textAndMnemonic=Nova Pasta
FileChooser.listViewButtonToolTip.textAndMnemonic=Lista
FileChooser.listViewButtonAccessibleName=Lista
FileChooser.listViewActionLabel.textAndMnemonic=Lista
FileChooser.detailsViewButtonToolTip.textAndMnemonic=Detalhes
FileChooser.detailsViewButtonAccessibleName=Detalhes
FileChooser.detailsViewActionLabel.textAndMnemonic=Detalhes
FileChooser.refreshActionLabel.textAndMnemonic=Atualizar
FileChooser.viewMenuLabel.textAndMnemonic=Exibir
FileChooser.fileNameHeader.textAndMnemonic=Nome
FileChooser.fileSizeHeader.textAndMnemonic=Tamanho
FileChooser.fileTypeHeader.textAndMnemonic=Tipo
FileChooser.fileDateHeader.textAndMnemonic=Modificado
FileChooser.fileAttrHeader.textAndMnemonic=Atributos
FileChooser.saveButton.textAndMnemonic=Salvar
FileChooser.openButton.textAndMnemonic=Abrir

############ Used by MetalTitlePane if rendering window decorations############
MetalTitlePane.restore.titleAndMnemonic=&Restaurar
MetalTitlePane.iconify.titleAndMnemonic=&Minimizar
MetalTitlePane.maximize.titleAndMnemonic=Ma&ximizar
MetalTitlePane.close.titleAndMnemonic=&Fechar
