# *******************************************************************************
# Copyright (c) 2016 Red Hat Inc. and others.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   Mickael Istria (Red Hat Inc.) - initial implementation
#  Jan Koehnlein (TypeFox) add rename empty message
# *******************************************************************************/
hyperlinkLabel=Open Declaration

PreferencesPage_Intro=Language Servers are applications that implement the Language Server Protocol. The IDE can connect \
to them to take advantage of editor support such as code completion, diagnostics, and refactoring.
PreferencesPage_staticServers=The following Language Server <-> <A>Content-Type</A> associations are provided statically:
PreferencesPage_manualServers=You can also associate <A>content-types</A> \
with a Launch Configuration which starts a language server chatting via stdin/stdout.
PreferencesPage_LaunchConfiguration=Launch Configuration
PreferencesPage_LaunchMode=Launch Mode
PreferencesPage_contentType=Content Type
PreferencesPage_Add=Add...
PreferencesPage_Remove=Remove
PreferencesPage_languageServer=Language Server
PreferencesPage_Enabled=Enabled
PreferencesPage_enablementCondition=Enablement condition
PreferencePage_enablementCondition_true=\u2714\ufe0f
PreferencePage_enablementCondition_false=\u274c
PreferencePage_enablementCondition_enableAll=Enable all
PreferencePage_enablementCondition_disableAll=Disable all
PreferencesPage_logging_toFile_title=Log to File
PreferencesPage_logging_toFile_description=Log language server communications to folder ({0})
PreferencesPage_logging_toConsole_title=Log to Console
PreferencesPage_logging_toConsole_description=Log language server communications to console
preferencesPage_logging_info=Double click on individual server logging statuses to set logging on a per server basis
PreferencesPage_restartWarning_title=Restart Required
PreferencesPage_restartWarning_message=Changes to the logging settings may require a restart to fully take affect. Would you like to restart Eclipse SDK to apply the changes?
PreferencesPage_restartWarning_restart=Restart Now
NewContentTypeLSPLaunchDialog_associateContentType=Associate content-type...
NewContentTypeLSPLaunchDialog_withLSPLaunch=...with Language Server Launch Configuration

codeActions_description=Code Actions from language server.
codeActions_label=Code Actions
codeActions_emptyMenu=No available code actions
codeLens_emptyMenu=No available code lenses
updateCodeActions_menu=Update Code Actions
initializeLanguageServer_job=Initialize language server
computing=Computing...
LSPSymbolInWorkspaceDialog_DialogLabel=Select an item to open.
LSPSymbolInWorkspaceDialog_DialogTitle=Open Symbol in Workspace
updateCodelensMenu_job=Update CodeLens menu
outline_computingSymbols=Computing symbols...
notImplemented=Not implemented
completionError=Error while computing completion

rename_title=Rename
rename_label=New name:
rename_processor_name=Rename Symbol
rename_processor_required=new rename cannot be null
rename_empty_message=Nothing to rename.

serverEdit=Edit from Language Server

linkWithEditor_label=Lin&k with Editor
linkWithEditor_description=Link with active editor
linkWithEditor_tooltip=Link with Editor

# References
LSSearchQuery_label=References Search
LSSearchQuery_singularReference= ''{0}'' at [{1}:{2}] - 1 reference in {3}ms
LSSearchQuery_pluralReferences=  ''{0}'' at [{1}:{2}] - {3} references in {4}ms

enableDisableLSJob=Enable/Disable Language Servers

edit_CreateFile=Create file {0}
workspaceSymbols=Workspace symbols