# This properties file is used to create a PropertyResourceBundle
# It contains Locale specific strings used be the Synth 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.
#
# @author Steve Wilson


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

FileChooser.lookInLabelText=\uac80\uc0c9 \uc704\uce58:
FileChooser.saveInLabelText=\uc800\uc7a5 \uc704\uce58
FileChooser.fileNameLabelText=\ud30c\uc77c \uc774\ub984:
FileChooser.folderNameLabelText=Folder name:
FileChooser.filesOfTypeLabelText=\ud30c\uc77c \uc885\ub958:
FileChooser.upFolderToolTipText=\ud55c \ub2e8\uacc4 \uc704\ub85c
FileChooser.upFolderAccessibleName=\uc704
FileChooser.homeFolderToolTipText=\ud648
FileChooser.homeFolderAccessibleName=\ud648
FileChooser.newFolderToolTipText=\uc0c8 \ud3f4\ub354 \uc791\uc131
FileChooser.newFolderAccessibleName=\uc0c8 \ud3f4\ub354
FileChooser.newFolderActionLabelText=\uc0c8 \ud3f4\ub354
FileChooser.listViewButtonToolTipText=\ubaa9\ub85d
FileChooser.listViewButtonAccessibleName=\ubaa9\ub85d
FileChooser.listViewActionLabelText=\ubaa9\ub85d
FileChooser.detailsViewButtonToolTipText=\uc790\uc138\ud788
FileChooser.detailsViewButtonAccessibleName=\uc790\uc138\ud788
FileChooser.detailsViewActionLabelText=\uc790\uc138\ud788
FileChooser.refreshActionLabelText=\uac31\uc2e0
FileChooser.viewMenuLabelText=\ubcf4\uae30
FileChooser.fileNameHeaderText=\uc774\ub984
FileChooser.fileSizeHeaderText=\ud06c\uae30
FileChooser.fileTypeHeaderText=\uc885\ub958
FileChooser.fileDateHeaderText=\uc218\uc815
FileChooser.fileAttrHeaderText=\uc18d\uc131

