# 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=Leta i:
FileChooser.saveInLabelText=Spara i:
FileChooser.fileNameLabelText=Filnamn:
FileChooser.folderNameLabelText=Folder name:
FileChooser.filesOfTypeLabelText=Filformat:
FileChooser.upFolderToolTipText=Upp en niv\u00e5
FileChooser.upFolderAccessibleName=Upp
FileChooser.homeFolderToolTipText=Hem
FileChooser.homeFolderAccessibleName=Hem
FileChooser.newFolderToolTipText=Skapa ny mapp
FileChooser.newFolderAccessibleName=Ny mapp
FileChooser.newFolderActionLabelText=Ny mapp
FileChooser.listViewButtonToolTipText=Lista
FileChooser.listViewButtonAccessibleName=Lista
FileChooser.listViewActionLabelText=Lista
FileChooser.detailsViewButtonToolTipText=Detaljerad lista
FileChooser.detailsViewButtonAccessibleName=Detaljerad lista
FileChooser.viewMenuButtonToolTipText = View Menu
FileChooser.viewMenuButtonAccessibleName = View Menu
FileChooser.detailsViewActionLabelText=Detaljerad lista
FileChooser.refreshActionLabelText=Uppdatera
FileChooser.viewMenuLabelText=Vy
FileChooser.fileNameHeaderText=Namn
FileChooser.fileSizeHeaderText=Storlek
FileChooser.fileTypeHeaderText=Typ
FileChooser.fileDateHeaderText=\u00c4ndrad
FileChooser.fileAttrHeaderText=Attribut
