###############################################################################
# Copyright (c) 2003, 2020 Wind River Systems, Inc. and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Initial Contributors:
# The following Wind River employees contributed to the Terminal component
# that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
# Helmut Haigermoser and Ted Williams.
#
# Contributors:
# Michael Scharf (Wind River) - split into core, view and connector plugins
# Martin Oberhuber (Wind River) - fixed copyright headers and beautified
# Martin Oberhuber (Wind River) - [378691][api] push Preferences into the Widget
###############################################################################

# NLS_MESSAGEFORMAT_NONE

pluginName = Terminal Control (Embeddable Widget)
providerName = Eclipse CDT

terminal.context.name.edit=Terminal Control in Focus
terminal.context.description.edit=Show modified keyboard shortcuts in context menu

terminal.context.name.terminal=Terminal Typing Connected
terminal.context.description.terminal=Override ALT+x menu access keys while typing into the Terminal

terminal.insertion.description=Terminal view insertion
terminal.insertion.name=Terminal view insert
terminal.insertion.category.name=Terminal view commands
terminal.view.insertion.description = Terminal view commands

terminal.command.copy.name=Copy
terminal.command.paste.name=Paste
terminal.command.maximize.name=Maximize Active View or Editor
terminal.command.quickaccess.name=Quick Access

terminal.preferences.name = Terminal
terminal.font.description = The font for the terminal console. Please also see the Terminal Preference pages for changing colors.
terminal.font.label = Terminal Console Font

terminal.views.theme.category.label = Terminal
terminal.views.theme.category.description = Fonts used in the Terminal View. Please also see the Terminal Preference pages for changing colors.

terminal.connectors.name = Terminal Connector Extensions
