///** @file
//
//  String definitions for BdsPlatform formset.
//
//  Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
//  SPDX-License-Identifier: BSD-2-Clause-Patent
//
//**/

/=#

#langdef   en-US "English"
#langdef   fr-FR "Français"
#langdef   en    "Standard English"
#langdef   fr    "Standard Français"

#string STR_FRONT_PAGE_TITLE           #language en-US  "Front Page"
                                       #language fr-FR  "Front Page"
#string STR_FRONT_PAGE_COMPUTER_MODEL  #language en-US  ""
                                       #language fr-FR  ""
#string STR_FRONT_PAGE_CPU_MODEL       #language en-US  ""
                                       #language fr-FR  ""
#string STR_FRONT_PAGE_CPU_SPEED       #language en-US  ""
                                       #language fr-FR  ""
#string STR_FRONT_PAGE_MEMORY_SIZE     #language en-US  ""
                                       #language fr-FR  ""
#string STR_FRONT_PAGE_BIOS_VERSION    #language en-US  ""
                                       #language fr-FR  ""
#string STR_FRONT_PAGE_BANNER_0_LEFT   #language en-US  "Wonder Computer Model 1000Z  Manufactured by Intel®"
                                       #language fr-FR  "Demander le Modèle d'Ordinateur 1000Z A Fabriqué par Intel®"
#string STR_FRONT_PAGE_BANNER_0_RIGHT  #language en-US  "OK"
                                       #language fr-FR  "Bon"
#string STR_FRONT_PAGE_BANNER_1_LEFT   #language en-US  "2 Pentium® X Xeon processors running at 800Thz"
                                       #language fr-FR  "2 processeurs Pentium® X Xeon tournants à 800Thz"
#string STR_FRONT_PAGE_BANNER_1_RIGHT  #language en-US  "24 TB System RAM"
                                       #language fr-FR  "24 TB RAM de Système"
#string STR_FRONT_PAGE_BANNER_2_LEFT   #language en-US  "ACME® EFI BIOS Version 13.5 Release 1039.92"
                                       #language fr-FR  "ACME® EFI BIOS Version 13.5 Release 1039.92"
#string STR_FRONT_PAGE_BANNER_3_LEFT   #language en-US  "Serial Number: 1Z123456789MARMAR (Need SMBIOS entries)"
                                       #language fr-FR  "Numéro de série: 1Z123456789MARMAR (Les entrées de SMBIOS de besoin)"
#string STR_CONTINUE_PROMPT            #language en-US  "Continue"
                                       #language fr-FR  "Continuer"
#string STR_CONTINUE_HELP              #language en-US  "This selection will direct the system to continue to booting process"
                                       #language fr-FR  "Cette sélection dirigera le système pour continuer au processus d'amorçage"
#string STR_LANGUAGE_SELECT            #language en-US  "Select Language"
                                       #language fr-FR  "Choisir la Langue"
#string STR_LANGUAGE_SELECT_HELP       #language en-US  "This is the option one adjusts to change the language for the current system"
                                       #language fr-FR  "Ceci est l'option qu'on ajuste pour changer la langue pour le système actuel"
#string STR_MISSING_STRING             #language en-US  "Missing String"
                                       #language fr-FR  "Missing String"
#string STR_EMPTY_STRING               #language en-US  ""
                                       #language fr-FR  ""
#string STR_RESET_STRING               #language en-US  "Reset"
                                       #language fr-FR  "Reset"
#string STR_RESET_STRING_HELP          #language en-US  "Reset the current setting."
                                       #language fr-FR  "Reset the current setting."
#string STR_CUSTOMIZE_BANNER_LINE4_LEFT  #language en-US  ""
                                         #language fr-FR  ""
#string STR_CUSTOMIZE_BANNER_LINE4_RIGHT #language en-US  ""
                                         #language fr-FR  ""
#string STR_CUSTOMIZE_BANNER_LINE5_LEFT  #language en-US  ""
                                         #language fr-FR  ""
#string STR_CUSTOMIZE_BANNER_LINE5_RIGHT #language en-US  ""
                                         #language fr-FR  ""
#string STR_TEST_KEY_USED                #language en-US  "WARNING: Test key detected."
                                         #language fr-FR  "WARNING: Test key detected."
#string STR_NULL_STRING                #language en-US  " "
                                       #language fr-FR  " "
