///** @file
//  String definitions for platform variable cleanup.
//
//  Copyright (c) 2015 - 2018, 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"
