# This properties file is used to create a PropertyResourceBundle
# It contains Locale specific strings used be the Motif 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.acceptAllFileFilter.textAndMnemonic=*
FileChooser.cancelButton.textAndMnemonic=Annulla
FileChooser.saveButton.textAndMnemonic=Salva
FileChooser.openButton.textAndMnemonic=OK
FileChooser.saveDialogTitle.textAndMnemonic=Salva
FileChooser.openDialogTitle.textAndMnemonic=Apri
FileChooser.updateButton.textAndMnemonic=Aggiorna
FileChooser.helpButton.textAndMnemonic=?
FileChooser.pathLabel.textAndMnemonic=&Percorso o nome cartella:
FileChooser.filterLabel.textAndMnemonic=Filt&ro
FileChooser.foldersLabel.textAndMnemonic=Car&telle
FileChooser.filesLabel.textAndMnemonic=F&ile
FileChooser.enterFileNameLabel.textAndMnemonic=Immettere il &nome file: 
FileChooser.enterFolderNameLabel.textAndMnemonic=Nome cartella:

FileChooser.cancelButtonToolTip.textAndMnemonic=Chiude la finestra di dialogo di selezione file.
FileChooser.saveButtonToolTip.textAndMnemonic=Salva il file selezionato.
FileChooser.openButtonToolTip.textAndMnemonic=Apre il file selezionato.
FileChooser.updateButtonToolTip.textAndMnemonic=Aggiorna lista directory.
FileChooser.helpButtonToolTip.textAndMnemonic=Guida FileChooser.
