# This properties file is used to create a PropertyResourceBundle
# It contains Locale specific strings used be the Metal 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.lookInLabelText=\u67e5\u770b\uff1a
FileChooser.saveInLabelText=\u4fdd\u5b58\uff1a
FileChooser.fileNameLabelText=\u6587\u4ef6\u540d\uff1a
FileChooser.folderNameLabelText=Folder name:
FileChooser.filesOfTypeLabelText=\u6587\u4ef6\u7c7b\u578b\uff1a
FileChooser.upFolderToolTipText=\u5411\u4e0a\u4e00\u5c42
FileChooser.upFolderAccessibleName=\u5411\u4e0a
FileChooser.homeFolderToolTipText=\u8d77\u59cb\u76ee\u5f55
FileChooser.homeFolderAccessibleName=\u8d77\u59cb\u76ee\u5f55
FileChooser.newFolderToolTipText=\u521b\u5efa\u65b0\u7684\u6587\u4ef6\u5939
FileChooser.newFolderAccessibleName=\u65b0\u5efa\u6587\u4ef6\u5939
FileChooser.newFolderActionLabelText=\u65b0\u5efa\u6587\u4ef6\u5939
FileChooser.listViewButtonToolTipText=\u5217\u8868
FileChooser.listViewButtonAccessibleName=\u5217\u8868
FileChooser.listViewActionLabelText=\u5217\u8868
FileChooser.detailsViewButtonToolTipText=\u8be6\u7ec6\u4fe1\u606f
FileChooser.detailsViewButtonAccessibleName=\u8be6\u7ec6\u4fe1\u606f
FileChooser.detailsViewActionLabelText=\u8be6\u7ec6\u4fe1\u606f
FileChooser.refreshActionLabelText=\u5237\u65b0
FileChooser.viewMenuLabelText=\u89c6\u56fe
FileChooser.fileNameHeaderText=\u540d\u79f0
FileChooser.fileSizeHeaderText=\u5927\u5c0f
FileChooser.fileTypeHeaderText=\u7c7b\u578b
FileChooser.fileDateHeaderText=\u4fee\u6b63\u7248
FileChooser.fileAttrHeaderText=\u5c5e\u6027

############ Used by MetalTitlePane if rendering window decorations############
# All mnemonics are KeyEvent.VK_XXX as integers
MetalTitlePane.restoreTitle=\u6062\u590d (R)
MetalTitlePane.restoreMnemonic=82
MetalTitlePane.iconifyTitle=\u6700\u5c0f\u5316 (E)
MetalTitlePane.iconifyMnemonic=69
MetalTitlePane.maximizeTitle=\u6700\u5927\u5316 (X)
MetalTitlePane.maximizeMnemonic=88
MetalTitlePane.closeTitle=\u5173\u95ed (C)
MetalTitlePane.closeMnemonic=67
