# Refer to the note in basic.properties for a description as to what
# the mnemonics correspond to and how to calculate them.



# GTK specific properties

# GTK color chooser properties:
GTKColorChooserPanel.nameText=Selezione colore GTK
# mnemonic as a VK_ constant
GTKColorChooserPanel.mnemonic=71
# Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you
# want an index other than would normally be underlined by
# GTKColorChooserPanel.mnemonic to be underlined. This is only useful
# if GTKColorChooserPanel.nameText defines the mnemonic character more
# than once and you want a character other than the first underlined.

# Text and mnemonics for the spinner. You can also defined a different
# index for the mnemonic via xxxMnemonicIndex, for example
# GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
# character of GTKColorChooserPanel.hueText should be underlined to
# represent the mnemonic.
GTKColorChooserPanel.hueText=Tonalit\u00e0:
GTKColorChooserPanel.hueMnemonic=84

GTKColorChooserPanel.redText=Rosso:
GTKColorChooserPanel.redMnemonic=82

GTKColorChooserPanel.saturationText=Saturazione:
GTKColorChooserPanel.saturationMnemonic=83

GTKColorChooserPanel.greenText=Verde:
GTKColorChooserPanel.greenMnemonic=69

GTKColorChooserPanel.valueText=Valore:
GTKColorChooserPanel.valueMnemonic=86

GTKColorChooserPanel.blueText=Blu:
GTKColorChooserPanel.blueMnemonic=66

GTKColorChooserPanel.colorNameText=Nome colore:
GTKColorChooserPanel.colorNameMnemonic=78



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

FileChooser.acceptAllFileFilterText=Tutti i file
FileChooser.newFolderButtonText=Nuova cartella
FileChooser.newFolderButtonMnemonic=78
FileChooser.newFolderDialogText=Nome della cartella:
FileChooser.newFolderNoDirectoryErrorTitleText=Error
FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory
FileChooser.deleteFileButtonText=Elimina file
FileChooser.deleteFileButtonMnemonic=76
FileChooser.renameFileButtonText=Rinomina file
FileChooser.renameFileButtonMnemonic=82
FileChooser.cancelButtonText=Annulla
FileChooser.cancelButtonMnemonic=67
FileChooser.saveButtonText=Salva
FileChooser.saveButtonMnemonic=82
FileChooser.openButtonText=OK
FileChooser.openButtonMnemonic=79
FileChooser.saveDialogTitleText=Salva
FileChooser.openDialogTitleText=Apri
FileChooser.pathLabelText=Selezione:
FileChooser.filterLabelText=Filtro:
FileChooser.pathLabelMnemonic=83
FileChooser.foldersLabelText=Cartelle
FileChooser.foldersLabelMnemonic=79
FileChooser.filesLabelText=File
FileChooser.filesLabelMnemonic=70

FileChooser.cancelButtonToolTipText=Chiude la finestra di dialogo di selezione colore.
FileChooser.saveButtonToolTipText=Salva il file selezionato.
FileChooser.openButtonToolTipText=Apre il file selezionato.

FileChooser.renameFileDialogText=Rinomina del file "{0}" in
FileChooser.renameFileErrorTitle=Errore 
FileChooser.renameFileErrorText=Errore nella rinomina del file "{0}" in "{1}"

OptionPane.okButtonMnemonic=79
OptionPane.cancelButtonMnemonic=67
