///** @file
//
//  String definitions for Boot Option description.
//
//  Copyright (c) 2010 - 2018, 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"
