# Copyright (c) 2017, 2018 Jonah Graham and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
# 
# Contributors:
#     Jonah Graham - initial API and implementation
pluginName = EASE Core UI Components
providerName = eclipse.org

moduleExplorer = Modules Explorer
scriptShell = Script Shell
scripting = Scripting
clearDisplay = Clear Display
abortScript = Abort script execution
abortScriptDesc = Terminate Current Script
resetEngine = Reset Engine
switchScriptEngine = Switch Script Engine
spawnShell = Spawn new shell
loadModule = Load Module
toggleDropins = Toggle Dropins Section
openScriptHelp = Open Script Help
performSign = Perform Signature...
pasteText = Paste Text to Script Shell
openHelp = Open Help
showPreferences = Show Module Preferences
switchEngine = Switch engine
reset = Reset
newShell = New shell
modules = Modules
shell = Shell
runScriptDesc = Run a script file
easeScript = EASE Script
consoleTextColor = Console input text color

_UI_CreateChild_text = {0}
_UI_CreateChild_text2 = {1} {0}
_UI_CreateChild_text3 = {1}
_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
_UI_PropertyDescriptor_description = The {0} of the {1}
_UI_ScriptGraph_type = Script Graph
_UI_Node_type = Node
_UI_ParentNode_type = Parent Node
_UI_SubNode_type = Sub Node
_UI_ScriptSetUI_type = Script Set UI
_UI_StoredScriptUI_type = Stored Script UI
_UI_Root_type = Root
_UI_Unknown_type = Object
_UI_Unknown_datatype= Value
_UI_ScriptGraph_nodes_feature = Nodes
_UI_Node_name_feature = Name
_UI_ParentNode_children_feature = Children
_UI_SubNode_parent_feature = Parent
_UI_ScriptSetUI_EReference0_feature = EReference0
_UI_StoredScriptUI_EReference0_feature = EReference0
_UI_StoredScriptUI_storedScript_feature = Stored Script
_UI_Unknown_feature = Unspecified

_UI_StoredScriptUI_path_feature = Path
_UI_StoredScriptUI_description_feature = Description
_UI_ScriptuigraphEditor_menu = &Scriptuigraph Editor
_UI_CreateChild_menu_item = &New Child
_UI_CreateSibling_menu_item = N&ew Sibling
_UI_ShowPropertiesView_menu_item = Show &Properties View
_UI_RefreshViewer_menu_item = &Refresh
_UI_SelectionPage_label = Selection
_UI_NoObjectSelected = Selected Nothing
_UI_SingleObjectSelected = Selected Object: {0}
_UI_MultiObjectSelected = Selected {0} Objects
_UI_OpenEditorError_label = Open Editor
_UI_Wizard_category = Example EMF Model Creation Wizards
_UI_CreateModelError_message = Problems encountered in file "{0}"
_UI_ScriptuigraphEditor_label = Scriptuigraph Model Editor
_UI_ScriptuigraphEditorFilenameDefaultBase = My
_UI_ScriptuigraphEditorFilenameExtensions = scriptuigraph
_UI_Wizard_label = New
_WARN_FilenameExtension = The file name must end in ''.{0}''
_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
_UI_ModelObject = &Model Object
_UI_XMLEncoding = &XML Encoding
_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
_UI_Wizard_initial_object_description = Select a model object to create
_UI_FileConflict_label = File Conflict
_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor.  Do you wish to discard this editor's changes?

_UI_StoredScriptUI_script_feature = Script

easePresentation.label= EASE
moduledocDisplayFontDefiniton.label= Module documentation display font
moduledocDisplayFontDefiniton.description= The Module documentation display font is used in the Modules Explorer view for hovers.
