# 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.
#
# 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.lookInLabel.textAndMnemonic=\u30D5\u30A1\u30A4\u30EB\u306E\u5834\u6240(&I):
FileChooser.saveInLabel.textAndMnemonic=\u4FDD\u5B58:
FileChooser.fileNameLabel.textAndMnemonic=\u30D5\u30A1\u30A4\u30EB\u540D(&N):
FileChooser.folderNameLabel.textAndMnemonic=\u30D5\u30A9\u30EB\u30C0\u540D(&N):
FileChooser.filesOfTypeLabel.textAndMnemonic=\u30D5\u30A1\u30A4\u30EB\u306E\u30BF\u30A4\u30D7(&T):
FileChooser.upFolderToolTip.textAndMnemonic=1\u30EC\u30D9\u30EB\u4E0A\u3078
FileChooser.upFolderAccessibleName=\u4E0A\u3078
FileChooser.homeFolderToolTip.textAndMnemonic=\u30DB\u30FC\u30E0
FileChooser.homeFolderAccessibleName=\u30DB\u30FC\u30E0
FileChooser.newFolderToolTip.textAndMnemonic=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u306E\u4F5C\u6210
FileChooser.newFolderAccessibleName=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
FileChooser.newFolderActionLabel.textAndMnemonic=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
FileChooser.listViewButtonToolTip.textAndMnemonic=\u30EA\u30B9\u30C8
FileChooser.listViewButtonAccessibleName=\u30EA\u30B9\u30C8
FileChooser.listViewActionLabel.textAndMnemonic=\u30EA\u30B9\u30C8
FileChooser.detailsViewButtonToolTip.textAndMnemonic=\u8A73\u7D30
FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30
FileChooser.detailsViewActionLabel.textAndMnemonic=\u8A73\u7D30
FileChooser.refreshActionLabel.textAndMnemonic=\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5
FileChooser.viewMenuLabel.textAndMnemonic=\u8868\u793A
FileChooser.fileNameHeader.textAndMnemonic=\u540D\u524D
FileChooser.fileSizeHeader.textAndMnemonic=\u30B5\u30A4\u30BA
FileChooser.fileTypeHeader.textAndMnemonic=\u30BF\u30A4\u30D7
FileChooser.fileDateHeader.textAndMnemonic=\u4FEE\u6B63\u65E5
FileChooser.fileAttrHeader.textAndMnemonic=\u5C5E\u6027
