# ***************************************************************
#  * Licensed to the Apache Software Foundation (ASF) under one
#  * or more contributor license agreements.  See the NOTICE file
#  * distributed with this work for additional information
#  * regarding copyright ownership.  The ASF licenses this file
#  * to you under the Apache License, Version 2.0 (the
#  * "License"); you may not use this file except in compliance
#  * with the License.  You may obtain a copy of the License at
#  * 
#  * http://www.apache.org/licenses/LICENSE-2.0
#  * 
#  * Unless required by applicable law or agreed to in writing,
#  * software distributed under the License is distributed on an
#  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#  * KIND, either express or implied.  See the License for the
#  * specific language governing permissions and limitations
#  * under the License.
# ***************************************************************

rutaContentType=UIMA Ruta Source File

parserBuildParticipant.name = UIMA Ruta Source Parser
taskTagsBuildParticipant.name = UIMA Ruta Task Tags Build Participant

sourceParser.name = UIMA Ruta Source Parser
sourceParser.description = UIMA Ruta Source Parser

pluginProvider=Apache UIMA
pluginName=Apache UIMA Workbench IDE

Console.PreferencePage = Console
Interpreters.PreferencePage = Interpreters
Debug.PreferencePage = Debug
Engines.PreferencePage = Engines

Debug.PropertyPage = Debug
Engines.PropertyPage = Engines

ToggleBreakpoint.label = Toggle &Breakpoint
EnableDisableBreakpoint.label = Toggl&e Enablement
BreakpointProperties.label = Breakpoint Properties...
ScriptWatch.label=Watch
ScriptInspect.label=Inspect
ScriptDisplay.label=Display
WatchVariable = Watch as Variable
showStaticAction.label=Show Function Objects
VariablesViewRutaSubmenu.label=UIMA Ruta
scriptConsole = Script Console

RutaConsole.Console = UIMA Ruta Console
RutaConsole.Actions.PasteToRutaConsole = Paste to UIMA Ruta Console


RutaVariableHoverLabel=UIMA Ruta Debug Hover
RutaVariableHoverDescription=UIMA Ruta Debug Hover

variablesViewMenu.name = UIMA Ruta

showGlobalVarsCommand.name = Show Global Variables
showGlobalVarsCommand.description = Show Global Variables
showGlobalVarsCommand.tooltip = Toggles global variable display

showClassVarsCommand.name = Show Class Variables
showClassVarsCommand.description = Show Class Variables
showClassVarsCommand.tooltip = Toggles class variable display

showLocalVarsCommand.name = Show Local Variables
showLocalVarsCommand.description = Show Local Variables
showLocalVarsCommand.tooltip = Toggles local variable display


PreferencePage.name = UIMA Ruta
PropertyPage.name = UIMA Ruta

DebuggingEngine.name = UIMA Ruta debugging engine
DebuggingEngine.description = UIMA Ruta debugging engine

RutaLaunchShortcut.name = UIMA Ruta Testing
RutaLaunchShortcut.description = UIMA Ruta Testing


RutaPerspective.name = UIMA Ruta

# Context
RutaEditContext.name = Editing UIMA Ruta Source
RutaEditContext.description = Editing UIMA Ruta Source Context

# Editor
RutaEditor.name = UIMA Ruta Source Editor 

# Wizards
RutaWizardsCategory.name = UIMA Ruta

NewRutaPackage.label=UIMA Ruta Package
NewRutaPackage.description=Create a Ruta package

NewRutaFile.label=UIMA Ruta File
NewRutaFile.description=Create a UIMA Ruta script file

NewSourceFolderCreationWizard.label=Source Folder
NewSourceFolderCreationWizard.description=Create a DLTK source folder

# Preference Pages
RutaPreferencePage.name = UIMA Ruta
RutaEditorPreferencePage.name = Editor
RutaEditorAssistancePreferencePage.name = Code Assistance
RutaEditorSyntaxColoringPreferencePage.name = Syntax Coloring
RutaEditorSmartTypingPreferencePage.name = Smart Typing
RutaEditorFoldingPreferencePage.name = Folding
RutaCodeTemplatesPreferencePage.name = Templates
RutaEditorHoversPreferencePage.name = Hovers
RutaTaskTags.name = Task Tags

# Property Pages
RutaPropertyPage.name = UIMA Ruta
RutaBuildPathPropertyPage.name = Build Path
RutaTodoPropertyPage.name = Todo Properties

# Search page
RutaSearchPage.label = UIMA Ruta Search

# Template
RutaTemplateContext.name = UIMA Ruta

# Views
RutaViewsCategory.name = UIMA Ruta
RutaNamespacesView.name = UIMA Ruta Namespaces
RutaFunctionsView.name = UIMA Ruta Functions
RutaPackagesView.name = UIMA Ruta Packages
RutaDocumentationView.name = UIMA Ruta Documentation

# Decorators
RutaProjectDecorator.name = UIMA Ruta Project Decorator

# Actions
RutaActionSet.label= UIMA Ruta Navigation
RutaActionSet.description= UIMA Ruta Navigation Action Set

OpenTypeAction.label=Open &Namespace...
OpenTypeAction.tooltip=Open Namespace

# Navigate menu
ActionDefinition.OpenType.name= Open Namespace
ActionDefinition.OpenType.description= Open a namespace in a Ruta editor

# Search page
RutaSearchActionSet.label = UIMA Ruta Search
RutaSearchActionSet.description = UIMA Ruta Search Actions

OpenRutaSearchPageAction.label = UIMA Ruta...

SearchMenu.label = Search

RutaEditorAssistancePreferencePage.name = Code Assistance 

OpenTypeInHierarchyAction.label=Open Type in Hierarch&y...
OpenTypeInHierarchyAction.tooltip=Opens a Type in a Type Hierarchy


ActionDefinition.sourceQuickMenu.name= Show Source Quick Menu
ActionDefinition.sourceQuickMenu.description= Shows the source quick menu
ActionDefinition.comment.name= Comment
ActionDefinition.comment.description= Turn the selected lines into DLTK comments
ActionDefinition.uncomment.name= Uncomment
ActionDefinition.uncomment.description= Uncomment the selected DLTK comment lines
ActionDefinition.toggleComment.name= Toggle Comment
ActionDefinition.toggleComment.description= Toggle comment the selected lines
ActionDefinition.addBlockComment.name= Add Block Comment
ActionDefinition.addBlockComment.description= Enclose the selection with a block comment
ActionDefinition.removeBlockComment.name= Remove Block Comment
ActionDefinition.removeBlockComment.description= Remove the block comment enclosing the selection
ActionDefinition.indent.name= Indent
ActionDefinition.indent.description= Indent
ActionDefinition.format.name= Format
ActionDefinition.format.description= Format the selected text
ActionDefinition.copyQualifiedName.name= Copy Qualified Name
ActionDefinition.copyQualifiedName.description= Copy a fully qualified name to the system clipboard
ActionDefinition.quickformat.name= Format Element
ActionDefinition.quickformat.description= Format enclosing text element