# This properties file is used to create a PropertyResourceBundle
# It contains Locale specific strings used be the Windows 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=Suchen in:
FileChooser.saveInLabelText=Speichern in:
FileChooser.fileNameLabelText=Dateiname:
FileChooser.folderNameLabelText=Folder name:
FileChooser.filesOfTypeLabelText=Dateityp:
FileChooser.upFolderToolTipText=Eine Ebene h\u00f6her
FileChooser.upFolderAccessibleName=H\u00f6her
FileChooser.homeFolderToolTipText=Home
FileChooser.homeFolderAccessibleName=Home
FileChooser.newFolderToolTipText=Neuen Ordner erstellen
FileChooser.newFolderAccessibleName=Neuer Ordner
FileChooser.newFolderActionLabelText=Neuer Ordner
FileChooser.listViewButtonToolTipText=Liste
FileChooser.listViewButtonAccessibleName=Liste
FileChooser.listViewActionLabelText=Liste
FileChooser.detailsViewButtonToolTipText=Einzelheiten
FileChooser.detailsViewButtonAccessibleName=Einzelheiten
FileChooser.viewMenuButtonToolTipText = View Menu
FileChooser.viewMenuButtonAccessibleName = View Menu
FileChooser.detailsViewActionLabelText=Einzelheiten
FileChooser.refreshActionLabelText=Aktualisieren
FileChooser.viewMenuLabelText=Ansicht
FileChooser.fileNameHeaderText=Dateiname
FileChooser.fileSizeHeaderText=Gr\u00f6\u00dfe
FileChooser.fileTypeHeaderText=Typ
FileChooser.fileDateHeaderText=Ge\u00e4ndert
FileChooser.fileAttrHeaderText=Attribut
