///** @file
//  
//  String definitions for Boot Option description.
//  
//  Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
//  This program and the accompanying materials
//  are licensed and made available under the terms and conditions of the BSD License
//  which accompanies this distribution.  The full text of the license may be found at
//  http://opensource.org/licenses/bsd-license.php
//  
//  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
//  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
//  
//**/

/=#

#langdef   en-US "English"
#langdef   fr-FR "Français"

#string STR_DESCRIPTION_FLOPPY         #language en-US  "EFI Floppy"
                                       #language fr-FR  "fr-FR: EFI Floppy"
#string STR_DESCRIPTION_CD_DVD         #language en-US  "EFI DVD/CDROM"
                                       #language fr-FR  "fr-FR: EFI DVD/CDROM"
#string STR_DESCRIPTION_HARDDRIVE      #language en-US  "EFI Hard Drive"
                                       #language fr-FR  "fr-FR: EFI Hard Drive"
#string STR_DESCRIPTION_USB            #language en-US  "EFI USB Device"
                                       #language fr-FR  "fr-FR: EFI USB Device"
#string STR_DESCRIPTION_SCSI           #language en-US  "EFI SCSI Device"
                                       #language fr-FR  "fr-FR: EFI SCSI Device"
#string STR_DESCRIPTION_MISC           #language en-US  "EFI Misc Device"
                                       #language fr-FR  "fr-FR: EFI Misc Device"
#string STR_DESCRIPTION_NETWORK        #language en-US  "EFI Network"
                                       #language fr-FR  "fr-FR: EFI Network"
#string STR_DESCRIPTION_NON_BLOCK      #language en-US  "EFI Non-Block Boot Device"
                                       #language fr-FR  "fr-FR: EFI Non-Block Boot Device"
