# 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=\u53d6\u6d88
FileChooser.saveButtonText=\u4fdd\u5b58
FileChooser.openButtonText=\u786e\u5b9a
FileChooser.saveDialogTitleText=\u4fdd\u5b58
FileChooser.openDialogTitleText=\u6253\u5f00
FileChooser.updateButtonText=\u66f4\u65b0
FileChooser.helpButtonText=\u5e2e\u52a9
FileChooser.pathLabelText=\u952e\u5165\u8def\u5f84\u6216\u6587\u4ef6\u5939\u540d\uff1a
FileChooser.filterLabelText=\u8fc7\u6ee4\u5668
FileChooser.foldersLabelText=\u6587\u4ef6\u5939
FileChooser.filesLabelText=\u6587\u4ef6
FileChooser.enterFileNameLabelText=\u952e\u5165\u6587\u4ef6\u540d\uff1a
FileChooser.enterFolderNameLabelText=Enter folder name:

FileChooser.cancelButtonToolTipText=\u7ec8\u6b62\u6587\u4ef6\u9009\u62e9\u5668\u5bf9\u8bdd\u6846
FileChooser.saveButtonToolTipText=\u4fdd\u5b58\u9009\u62e9\u7684\u6587\u4ef6
FileChooser.openButtonToolTipText=\u6253\u5f00\u9009\u62e9\u7684\u6587\u4ef6
FileChooser.updateButtonToolTipText=\u66f4\u65b0\u76ee\u5f55\u5217\u8868
FileChooser.helpButtonToolTipText=\u6587\u4ef6\u9009\u62e9\u5668\u5e2e\u52a9
