/** @file
  String definitions for the Password Credential Provider.

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_CREDENTIAL_TITLE                	  #language en-US  "Password Credential Provider"
                                                  #language fr-FR  "Password Credential Provider (French)"
#string STR_FORM_TITLE    												#language en-US  "Get Password"
																									#language fr-FR  "Get Password(French)"
#string STR_NULL_STRING                           #language en-US  ""
                                                  #language fr-FR  ""
#string STR_INPUT_PASSWORD											  #language en-US  "Please Input Password"
																									#language fr-FR  "Please Input Password(French)"
#string STR_PROVIDER_NAME                      	  #language en-US  "INTEL Password Credential Provider"
                                                  #language fr-FR  "INTEL Password Credential Provider(French)"
#string STR_PROVIDER_TYPE_NAME                    #language en-US  "Password Credential Provider"
                                                  #language fr-FR  "Password Credential Provider(French)"                                                  
#string STR_INPUT_PASSWORD_AGAIN                  #language en-US  "Input Password Again"
																			            #language fr-FR  "Input Password Again (French)"																			            
#string STR_DRAW_A_LINE                           #language en-US  "-----------------------------"
                                                  #language fr-FR  "------------------------------------"
#string STR_PASSWORD_INCORRECT                    #language en-US  "     Incorrect Password!     "
                                                  #language fr-FR  "    Incorrect Password! (French)    "
#string STR_PASSWORD_MISMATCH                     #language en-US  "    The Password Mismatch!    "
                                                  #language fr-FR  "   The Password Mismatch! (French)  "

