///** @file
//  
//    String definitions for the DriverHealthManager.
//  
//  Copyright (c) 2013 - 2015, 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_FORM_TITLE                 #language en-US  "Driver Health Manager"
                                       #language fr-FR  "Driver Health Manager"
#string STR_FORM_HELP                  #language en-US  "List all the Driver Health instances to manage"
                                       #language fr-FR  "List all the Driver Health instances to manage"
#string STR_NULL                       #language en-US  ""
                                       #lauguage fr-FR  ""

#string STR_REPAIR_REQUIRED            #language en-US  "Repair Required."
                                       #language fr-FR  "Repair Required."
#string STR_CONFIGURATION_REQUIRED     #language en-US  "Configuration Required."
                                       #language fr-FR  "Configuration Required."
#string STR_FAILED                     #language en-US  "Failed."
                                       #language fr-FR  "Failed."
#string STR_RECONNECT_REQUIRED         #language en-US  "Reconnect Required."
                                       #language fr-FR  "Reconnect Required."
#string STR_REBOOT_REQUIRED            #language en-US  "Reboot Required."
                                       #language fr-FR  "Reboot Required."
#string STR_HEALTHY                    #language en-US  "Healthy."
                                       #language fr-FR  "Healthy."
