/** @file
  String definitions for the User Identify Manager driver.

Copyright (c) 2009 - 2010, 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 "Francais"

#string STR_TITLE                                 #language en-US  "User Identity Manager"
                                                  #language fr-FR  "User Identity Manager(French)" 
#string STR_USER_SELECT                           #language en-US  "User Selection"
                                                  #language fr-FR  "User Selection(French)"
#string STR_PROVIDER_SELECT                       #language en-US  "Provider Selection"
                                                  #language fr-FR  "User Selection(French)" 
#string STR_NULL_STRING                           #language en-US  ""
                                                  #language fr-FR  ""

																									
