///** @file
//  String definitions for platform variable cleanup.
//
//  Copyright (c) 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 "Francais"

#string STR_ENTRY_TITLE                         #language en-US  "Platform Variable Cleanup Form"
                                                #language fr-FR  "fr-FR: Platform Variable Cleanup Form"
#string STR_TITLE                               #language en-US  "Platform Variable Cleanup"
                                                #language fr-FR  "fr-FR: Platform Variable Cleanup"
#string STR_TITLE_HELP                          #language en-US  "Select and cleanup variables"
                                                #language fr-FR  "fr-FR: Select and cleanup variables"
#string STR_SELECT_ALL_PROMPT                   #language en-US  "Select all"
                                                #language fr-FR  "fr-FR: Select all"
#string STR_SELECT_ALL_HELP                     #language en-US  "Select all, then all the listed user variables below will be deleted when Commit or Save."
                                                #language fr-FR  "fr-FR: Select all, then all the listed user variables below will be deleted when Commit or Save."
#string STR_NULL_STRING                         #language en-US  ""
                                                #language fr-FR  ""
#string STR_SAVE_AND_EXIT                       #language en-US  "Commit Changes and Exit"
                                                #language fr-FR  "fr-FR: Commit Changes and Exit"
#string STR_NO_SAVE_AND_EXIT                    #language en-US  "Discard Changes and Exit"
                                                #language fr-FR  "fr-FR: Discard Changes and Exit"