# This properties file is used to create a PropertyResourceBundle
# It contains Locale specific strings used in Swing
# Currently, the following components need this for support:
#
#    ColorChooser
#    FileChooser
#    OptionPane
#
# 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.
#
#                        MNEMONIC NOTE:
# Many of strings in this file are used by widgets that have a
# mnemonic, for example:
#   ColorChooser.rgbNameText=RGB
#   ColorChooser.rgbMnemonic=71
#   ColorChooser.rgbDisplayedMnemonicIndex=1
# Indicates that the tab in the ColorChooser for RGB colors will have
# the text 'RGB', further the mnemonic character will be 'g' and that
# a decoration will be provided under the 'G'. This will typically
# look like:  RGB
#              -
# 71 corresponds to the decimal value of the VK constant defined
# in java/awt/KeyEvent.java. VK_G is defined as:
#
#    public static final int VK_G              = 0x47;
#
# 0x47 is a hex number and needs to be converted to decimal.
# A simple way to calculate this for a-z is to add 64 to the index of
# the letter in the alphabet. As 'a' is in the 1st letter the mnemonic
# for 'a' is 65, 'b' is 66...
#
# The xxDisplayedMnemonicIndex is used to indicate the index of the
# character that should be underlined in the String, with 0
# corresponding to the first character in the String.
#
# One important thing to remember is that the mnemonic MUST exist in
# the String, if it does not exist you should add text that makes it
# exist. This will typically take the form 'XXXX (M)' where M is the
# character for the mnemonic.
# 
# @author Steve Wilson

############ FILE CHOOSER STRINGS #############
FileChooser.fileDescriptionText=File generico
FileChooser.directoryDescriptionText=Directory
FileChooser.newFolderErrorText=Errore durante la creazione della nuova cartella
FileChooser.newFolderErrorSeparator= : 
FileChooser.newFolderParentDoesntExistTitleText=Unable to create folder
FileChooser.newFolderParentDoesntExistText=Unable to create the folder.\n\nThe system cannot find the path specified.
FileChooser.renameErrorTitleText=Error Renaming File or Folder
FileChooser.renameErrorText=Cannot rename {0}
FileChooser.renameErrorFileExistsText=Cannot rename {0}: A file with the name you specified already exists. \
  Specify a different file name.
FileChooser.acceptAllFileFilterText=Tutti i file
FileChooser.cancelButtonText=Annulla
FileChooser.cancelButtonMnemonic=65
FileChooser.saveButtonText=Salva
FileChooser.saveButtonMnemonic=83
FileChooser.openButtonText=Apri
FileChooser.openButtonMnemonic=80
FileChooser.saveDialogTitleText=Salva
FileChooser.openDialogTitleText=Apri
FileChooser.updateButtonText=Aggiorna
FileChooser.updateButtonMnemonic=71
FileChooser.helpButtonText=?
FileChooser.helpButtonMnemonic=63
FileChooser.directoryOpenButtonText=Apri
FileChooser.directoryOpenButtonMnemonic=82

# File Size Units
FileChooser.fileSizeKiloBytes={0} KB
FileChooser.fileSizeMegaBytes={0} MB
FileChooser.fileSizeGigaBytes={0} GB

# These strings are platform dependent not look and feel dependent.
FileChooser.win32.newFolder=Nuova cartella
FileChooser.win32.newFolder.subsequent=Nuova cartella ({0})
FileChooser.other.newFolder=Nuova cartella
FileChooser.other.newFolder.subsequent=Nuova cartella.{0}


## file chooser tooltips ###
FileChooser.cancelButtonToolTipText=Finestra di dialogo Interrompi selezione file
FileChooser.saveButtonToolTipText=Salva file selezionato
FileChooser.openButtonToolTipText=Apri file selezionato
FileChooser.updateButtonToolTipText=Aggiorna elenco directory
FileChooser.helpButtonToolTipText=Guida di Selezione file
FileChooser.directoryOpenButtonToolTipText=Apri directory selezionata

############ COLOR CHOOSER STRINGS #############
ColorChooser.previewText=Anteprima
ColorChooser.okText=OK
ColorChooser.cancelText=Annulla
ColorChooser.resetText=Ripristina
# VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
ColorChooser.resetMnemonic=82
ColorChooser.sampleText=Testo di prova          Testo di prova
ColorChooser.swatchesNameText=Colori campione
ColorChooser.swatchesMnemonic=67
ColorChooser.swatchesDisplayedMnemonicIndex=0
ColorChooser.swatchesRecentText=Recenti:
ColorChooser.hsbNameText=HSB
# Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
# constant, and an index into the text to render the mnemonic as. The
# mnemonic is xxxMnemonic and the index of the character to underline is
# xxxDisplayedMnemonicIndex.
ColorChooser.hsbMnemonic=72
ColorChooser.hsbDisplayedMnemonicIndex=0
ColorChooser.hsbHueText=H
ColorChooser.hsbSaturationText=S
ColorChooser.hsbBrightnessText=B
ColorChooser.hsbRedText=R
ColorChooser.hsbGreenText=G
ColorChooser.hsbBlueText=B
ColorChooser.rgbNameText=RGB
ColorChooser.rgbMnemonic=71
ColorChooser.rgbDisplayedMnemonicIndex=1
ColorChooser.rgbRedText=Rosso
ColorChooser.rgbRedMnemonic=79
ColorChooser.rgbGreenText=Verde
ColorChooser.rgbGreenMnemonic=69
ColorChooser.rgbBlueText=Blu
ColorChooser.rgbBlueMnemonic=66

############ OPTION PANE STRINGS #############
# Mnemonic keys correspond to KeyEvent.VK_XXX constant
# We only define mnemonics for YES/NO, but for completeness you can
# define mnemonics for any of the buttons.
OptionPane.yesButtonText=S\u00ec
OptionPane.yesButtonMnemonic=83
OptionPane.noButtonText=No
OptionPane.noButtonMnemonic=78
OptionPane.okButtonText=OK
OptionPane.okButtonMnemonic=79
OptionPane.cancelButtonText=Annulla
OptionPane.cancelButtonMnemonic=65
OptionPane.titleText=Selezionare una opzione
# Title for the dialog for the showInputDialog methods. Only used if
# the developer uses one of the variants that doesn't take a title.
OptionPane.inputDialogTitle=Input
# Title for the dialog for the showMessageDialog methods. Only used if
# the developer uses one of the variants that doesn't take a title.
OptionPane.messageDialogTitle=Messaggio

############ Printing Dialog Strings ############
PrintingDialog.titleProgressText=Stampa in corso
PrintingDialog.titleAbortingText=Stampa in corso (operazione interrotta)

PrintingDialog.contentInitialText=Stampa in corso...

# The following string will be formatted by a MessageFormat
# and {0} will be replaced by page number being printed
PrintingDialog.contentProgressText=Pagina stampata {0}...

PrintingDialog.contentAbortingText=Interruzione della stampa...

PrintingDialog.abortButtonText=Interrompi
PrintingDialog.abortButtonMnemonic=73
PrintingDialog.abortButtonDisplayedMnemonicIndex=0
PrintingDialog.abortButtonToolTipText=Interrompi la stampa

############ Internal Frame Strings ############
InternalFrame.iconButtonToolTip=Riduci a icona
InternalFrame.maxButtonToolTip=Ingrandisci
InternalFrame.restoreButtonToolTip=Ripristina
InternalFrame.closeButtonToolTip=Chiudi

############ Internal Frame Title Pane Strings ############
InternalFrameTitlePane.restoreButtonText=Ripristina
InternalFrameTitlePane.moveButtonText=Sposta
InternalFrameTitlePane.sizeButtonText=Dimensioni
InternalFrameTitlePane.minimizeButtonText=Riduci a icona
InternalFrameTitlePane.maximizeButtonText=Ingrandisci
InternalFrameTitlePane.closeButtonText=Chiudi

############ Text strings #############
# Used for html forms
FormView.submitButtonText=Invia query
FormView.resetButtonText=Ripristina
FormView.browseFileButtonText=Sfoglia...

############ Abstract Document Strings ############
AbstractDocument.styleChangeText=cambiamento di stile
AbstractDocument.additionText=aggiunta
AbstractDocument.deletionText=eliminazione
AbstractDocument.undoText=Annulla
AbstractDocument.redoText=Ripeti

############ Abstract Button Strings ############
AbstractButton.clickText=fare clic

############ Abstract Undoable Edit Strings ############
AbstractUndoableEdit.undoText=Annulla
AbstractUndoableEdit.redoText=Ripeti

############ Combo Box Strings ############
ComboBox.togglePopupText=togglePopup

############ Progress Monitor Strings ############
ProgressMonitor.progressText=Avanzamento...

############ Split Pane Strings ############
SplitPane.leftButtonText=tasto sinistro
SplitPane.rightButtonText=tasto destro
# Used for Isindex
IsindexView.prompt=Questo \u00e8 un indice di ricerca. Immettere le parole chiave:

############ InternalFrameTitlePane Strings ############
InternalFrameTitlePane.iconifyButtonAccessibleName=Riduci a icona
InternalFrameTitlePane.maximizeButtonAccessibleName=Ingrandisci
InternalFrameTitlePane.closeButtonAccessibleName=Chiudi
