// /**
//
// Copyright (c) 2005 - 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.
//
// Abstract:
//
// Additional string definitions for UEFI Shell 2.0 Debug1 profile Edit command
//
//
// **/

/=#

#langdef   en-US "english"

#string STR_EDIT_LIBEDITOR_TITLEBAR           #language en-US "%EMainEditor init failed on TitleBar init\r\n%N"
#string STR_EDIT_LIBEDITOR_MAINMENU           #language en-US "%EMainEditor init was not successful on MainMenu init\r\n%N"
#string STR_EDIT_LIBEDITOR_STATUSBAR          #language en-US "%EMainEditor init was not successful on StatusBar init\r\n%N"
#string STR_EDIT_LIBEDITOR_INPUTBAR           #language en-US "%EMainEditor init was not successful on InputBar init\r\n%N"
#string STR_EDIT_LIBEDITOR_FILEBUFFER         #language en-US "%EMainEditor init was not successful on FileBuffer init\r\n%N"
#string STR_EDIT_LIBEDITOR_TITLEBAR_CLEANUP   #language en-US "TitleBar cleanup was not successful\r\n"
#string STR_EDIT_LIBEDITOR_MENUBAR_CLEANUP    #language en-US "MenuBar cleanup was not successful\r\n"
#string STR_EDIT_LIBEDITOR_STATUSBAR_CLEANUP  #language en-US "StatusBar cleanup was not successful\r\n"
#string STR_EDIT_LIBEDITOR_INPUTBAR_CLEANUP    #language en-US "InputBar cleanup was not successful\r\n"
#string STR_EDIT_LIBEDITOR_FILEBUFFER_CLEANUP  #language en-US "FileBuffer cleanup was not successful\r\n"
#string STR_EDIT_LIBEDITOR_MAINEDITOR_INIT    #language en-US "%EMainEditor init was not succesful on TitleBar init\r\n%N"
#string STR_EDIT_LIBINPUTBAR_MAININPUTBAR     #language en-US "%s"
#string STR_EDIT_LIBMENUBAR_OPEN_FILE          #language en-US "Open File"
#string STR_EDIT_LIBMENUBAR_SAVE_FILE          #language en-US "Save File"
#string STR_EDIT_LIBMENUBAR_EXIT              #language en-US "Exit"
#string STR_EDIT_LIBMENUBAR_CUT_LINE          #language en-US "Cut Line"
#string STR_EDIT_LIBMENUBAR_PASTE_LINE        #language en-US "Paste Line"
#string STR_EDIT_LIBMENUBAR_GO_TO_LINE        #language en-US "Go To Line"
#string STR_EDIT_LIBMENUBAR_SEARCH            #language en-US "Search"
#string STR_EDIT_LIBMENUBAR_SEARCH_REPLACE    #language en-US "Search/Replace"
#string STR_EDIT_LIBMENUBAR_FILE_TYPE          #language en-US "File Type"
#string STR_EDIT_LIBMENUBAR_F1                #language en-US "F1"
#string STR_EDIT_LIBMENUBAR_F2                #language en-US "F2"
#string STR_EDIT_LIBMENUBAR_F3                #language en-US "F3"
#string STR_EDIT_LIBMENUBAR_F4                #language en-US "F4"
#string STR_EDIT_LIBMENUBAR_F5                #language en-US "F5"
#string STR_EDIT_LIBMENUBAR_F6                #language en-US "F6"
#string STR_EDIT_LIBMENUBAR_F7                #language en-US "F7"
#string STR_EDIT_LIBMENUBAR_F8                #language en-US "F8"
#string STR_EDIT_LIBMENUBAR_F9                #language en-US "F9"
#string STR_EDIT_LIBMENUBAR_F10               #language en-US "F10"
#string STR_EDIT_LIBMENUBAR_F11               #language en-US "F11"
#string STR_EDIT_LIBMENUBAR_F12               #language en-US "F12"
#string STR_EDIT_LIBMENUBAR_CTRL_E               #language en-US "Ctrl+E"
#string STR_EDIT_LIBMENUBAR_CTRL_W               #language en-US "Ctrl+W"
#string STR_EDIT_HELP_TITLE                   #language en-US "Help                                                        \n"
#string STR_EDIT_HELP_BLANK                   #language en-US "                                                            \n"
#string STR_EDIT_HELP_LIST_TITLE              #language en-US "Control Key   Function Key   Command                        \n"
#string STR_EDIT_HELP_DIV                     #language en-US "-----------   ------------   -----------------              \n"
#string STR_EDIT_HELP_GO_TO_LINE              #language en-US "Ctrl-G        F1             Go To Line                     \n"
#string STR_EDIT_HELP_SAVE_FILE               #language en-US "Ctrl-S        F2             Save File                      \n"
#string STR_EDIT_HELP_EXIT                    #language en-US "Ctrl-Q        F3             Exit                           \n"
#string STR_EDIT_HELP_SEARCH                  #language en-US "Ctrl-F        F4             Search                         \n"
#string STR_EDIT_HELP_SEARCH_REPLACE          #language en-US "Ctrl-R        F5             Search/Replace                 \n"
#string STR_EDIT_HELP_CUT_LINE                #language en-US "Ctrl-K        F6             Cut Line                       \n"
#string STR_EDIT_HELP_PASTE_LINE              #language en-US "Ctrl-U        F7             Paste Line                     \n"
#string STR_EDIT_HELP_OPEN_FILE               #language en-US "Ctrl-O        F8             Open File                      \n"
#string STR_EDIT_HELP_FILE_TYPE               #language en-US "Ctrl-T        F9             File Type                      \n"
#string STR_EDIT_HELP_EXIT_HELP               #language en-US "Use Ctrl-W to exit this help                                \n"
#string STR_EDIT_MAIN_INVALID_FILE_NAME        #language en-US "%Hedit%N: Invalid File Name\r\n"
#string STR_EDIT_MAIN_INIT_FAILED              #language en-US "%Hedit%N: Initialization was not successful\r\n"
#string STR_EDIT_MAIN_BUFFER                  #language en-US "%Hedit%N: %s\r\n"
#string STR_EDIT_MAIN_UNKNOWN_EDITOR_ERR      #language en-US "%Hedit%N: Unknown Editor Error\r\n"
