# 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.acceptAllFileFilterText=*
FileChooser.cancelButtonText=Cancelar
FileChooser.saveButtonText=Guardar
FileChooser.openButtonText=Aceptar
FileChooser.saveDialogTitleText=Guardar
FileChooser.openDialogTitleText=Abrir
FileChooser.updateButtonText=Actualizar
FileChooser.helpButtonText=Ayuda
FileChooser.pathLabelText=Introducir v\u00eda de acceso o nombre de carpeta:
FileChooser.filterLabelText=Filtro
FileChooser.foldersLabelText=Carpetas
FileChooser.filesLabelText=Archivos
FileChooser.enterFileNameLabelText=Introducir nombre de archivo:
FileChooser.enterFolderNameLabelText=Enter folder name:

FileChooser.cancelButtonToolTipText=Cuadro de di\u00e1logo para cancelar elector de archivo.
FileChooser.saveButtonToolTipText=Guardar archivo seleccionado.
FileChooser.openButtonToolTipText=Abrir archivo seleccionado.
FileChooser.updateButtonToolTipText=Actualizar lista de directorios.
FileChooser.helpButtonToolTipText=Ayuda elector de archivos.
