// *++
//
// Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
// (C) Copyright 2017 Hewlett Packard Enterprise Development LP<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.             
// 
// Module Name:
//
//  MiscSubclassStrings.Vfr
// 
// Abstract:
// 
//   Misc. Subclass formset.
// 
// Revision History: 
// 
// --*/

/=#

#langdef en-US "English"
#langdef fr-FR "Français"


#string STR_MISC_SUBCLASS_DRIVER_TITLE #language en-US  "Not used"

#string STR_MISC_BASE_BOARD_MANUFACTURER     #language en-US  "Base Board Manufacturer"
#string STR_MISC_BASE_BOARD_PRODUCT_NAME     #language en-US  "Base Board Product Name"
#string STR_MISC_BASE_BOARD_VERSION          #language en-US  "Base Board Version"
#string STR_MISC_BASE_BOARD_SERIAL_NUMBER    #language en-US  "Base Board Serial Number"
#string STR_MISC_BASE_BOARD_ASSET_TAG        #language en-US  "Base Board Asset Tag"
#string STR_MISC_BASE_BOARD_CHASSIS_LOCATION #language en-US  "Base Board Chassis Location"

#string STR_MISC_BIOS_VENDOR           #language en-US  "Bios Vendor"
#string STR_MISC_BIOS_VERSION          #language en-US  "R9 Prime"
                                       #language fr-FR  "Perfection R9"
#string STR_MISC_BIOS_RELEASE_DATE     #language en-US  "Bios Release Date"

#string STR_MISC_CHASSIS_MANUFACTURER  #language en-US  "Chassis Manufacturer"
#string STR_MISC_CHASSIS_VERSION       #language en-US  "Chassis Version"
#string STR_MISC_CHASSIS_SERIAL_NUMBER #language en-US  "Chassis Serial Number"
#string STR_MISC_CHASSIS_ASSET_TAG     #language en-US  "Chassis Asset Tag"
#string STR_MISC_CHASSIS_SKU_NUMBER    #language en-US  "Chassis SKU Number"

#string STR_MISC_OEM_STRING            #language en-US  "System Language String"

#string STR_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR #language en-US  "Port Internal Connector"
#string STR_MISC_PORT_EXTERNAL_CONNECTOR_DESIGNATOR #language en-US  "Port External Connector"
#string STR_MISC_PORT_INTERNAL_KEYBOARD #language en-US  "J1A1"
#string STR_MISC_PORT_EXTERNAL_KEYBOARD #language en-US  "Keyboard"
#string STR_MISC_PORT_INTERNAL_MOUSE   #language en-US  "J1A1"
#string STR_MISC_PORT_EXTERNAL_MOUSE   #language en-US  "Mouse"
#string STR_MISC_PORT_INTERNAL_COM1    #language en-US  "J2A1"
#string STR_MISC_PORT_EXTERNAL_COM1    #language en-US  "COM 1"
#string STR_MISC_PORT_INTERNAL_LPT1    #language en-US  "J4A2"
#string STR_MISC_PORT_EXTERNAL_LPT1    #language en-US  "LPT 1"
#string STR_MISC_PORT_INTERNAL_EXTENSION_POWER #language en-US  "J5C1"
#string STR_MISC_PORT_EXTERNAL_EXTENSION_POWER #language en-US  "Extension Power Header"
#string STR_MISC_PORT_INTERNAL_USB1    #language en-US  "JA5A1"
#string STR_MISC_PORT_EXTERNAL_USB1    #language en-US  "USB"
#string STR_MISC_PORT_INTERNAL_USB2    #language en-US  "J2A2"
#string STR_MISC_PORT_EXTERNAL_USB2    #language en-US  "USB"
#string STR_MISC_PORT_INTERNAL_NETWORK #language en-US  "JA5A1"
#string STR_MISC_PORT_EXTERNAL_NETWORK #language en-US  "RJ-45 Type"
#string STR_MISC_PORT_INTERNAL_MIC     #language en-US  "J6A1"
#string STR_MISC_PORT_EXTERNAL_MIC     #language en-US  "Audio Mic In"
#string STR_MISC_PORT_INTERNAL_LINE_IN #language en-US  "J6A1"
#string STR_MISC_PORT_EXTERNAL_LINE_IN #language en-US  "Audio Line In"
#string STR_MISC_PORT_INTERNAL_LINE_OUT #language en-US  "J6A1"
#string STR_MISC_PORT_EXTERNAL_LINE_OUT #language en-US  "Audio Line Out"
#string STR_MISC_PORT_INTERNAL_FLOPPY  #language en-US  "J4H1"
#string STR_MISC_PORT_EXTERNAL_FLOPPY  #language en-US  "OnBoard Floppy Type"
#string STR_MISC_PORT_INTERNAL_IDE1    #language en-US  "J6H2"
#string STR_MISC_PORT_EXTERNAL_IDE1    #language en-US  "OnBoard Primary IDE"
#string STR_MISC_PORT_INTERNAL_IDE2    #language en-US  "J6H1"
#string STR_MISC_PORT_EXTERNAL_IDE2    #language en-US  "OnBoard Secondary IDE"
#string STR_MISC_PORT_INTERNAL_SOUND_IN1 #language en-US  "J8B1"
#string STR_MISC_PORT_EXTERNAL_SOUND_IN1 #language en-US  "OnBoard Sound Input Type"
#string STR_MISC_PORT_INTERNAL_SOUND_IN2 #language en-US  "J6B1"
#string STR_MISC_PORT_EXTERNAL_SOUND_IN2 #language en-US  "OnBoard Sound Input Type"
#string STR_MISC_PORT_INTERNAL_FRONT_PANEL #language en-US  "J9G1"
#string STR_MISC_PORT_EXTERNAL_FRONT_PANEL #language en-US  "Front Panel Header Type"
#string STR_MISC_PORT_INTERNAL_CPU_FAN #language en-US  "J2F1"
#string STR_MISC_PORT_EXTERNAL_CPU_FAN #language en-US  "CPU Fan Header"
#string STR_MISC_PORT_INTERNAL_FRONT_FAN #language en-US  "J9H3"
#string STR_MISC_PORT_EXTERNAL_FRONT_FAN #language en-US  "Front Chassis Fan"
#string STR_MISC_PORT_INTERNAL_REAR_FAN #language en-US  "J1B1"
#string STR_MISC_PORT_EXTERNAL_REAR_FAN #language en-US  "Rear Chassis Fan"
#string STR_MISC_PORT_INTERNAL_CONFIG_JUMPER #language en-US  "J9H2"
#string STR_MISC_PORT_EXTERNAL_CONFIG_JUMPER #language en-US  "Configuration Jumper"
#string STR_MISC_PORT_INTERNAL_AUDIO_PANEL #language en-US  "J8A1"
#string STR_MISC_PORT_EXTERNAL_AUDIO_PANEL #language en-US  "Audio Front Panel Header"
#string STR_MISC_PORT_INTERNAL_USB_PANEL #language en-US  "J9F1"
#string STR_MISC_PORT_EXTERNAL_USB_PANEL #language en-US  "USB Front Panel Header"
#string STR_MISC_PORT_INTERNAL_ATX_POWER #language en-US  "J2H1"
#string STR_MISC_PORT_EXTERNAL_ATX_POWER #language en-US  "ATX Power Header"
#string STR_MISC_PORT_INTERNAL_COM2       #language en-US     "J5A1"
#string STR_MISC_PORT_EXTERNAL_COM2       #language en-US     "COM 2" 
#string STR_MISC_PORT_INTERNAL_USB3       #language en-US     "J1D3"
#string STR_MISC_PORT_EXTERNAL_USB3       #language en-US     "USB"

#string STR_MISC_SYSTEM_LANGUAGE_STRING #language en-US  "System Language String"

#string STR_MISC_SYSTEM_MANUFACTURER   #language en-US  "System Manufacturer"
#string STR_MISC_SYSTEM_PRODUCT_NAME   #language en-US  "NT32 Emulation Environment"
                                       #language fr-FR  "Environnement De l'Émulation NT32"
                                       
#string STR_MISC_SYSTEM_VERSION        #language en-US  "System Version"
#string STR_MISC_SYSTEM_SERIAL_NUMBER  #language en-US  "System Serial Number"

#string STR_MISC_SYSTEM_OPTION_STRING  #language en-US  "System Option String"

#string STR_MISC_SYSTEM_SLOT_DESIGNATION #language en-US  "System Slot Designation"

