# NLS_MESSAGEFORMAT_VAR          needed to handle quotes correctly

###############################################################################
# Copyright (c) 2005 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################


! Please do not translate following strings  in this file (appears exactly, case sensitive) :
! WITH
! SQL
! SELECT
! FULLSELECT
! UNION
! CASE
! CAST

! plugin.xml
!
! Menu action labels
!
_UI_PLUGIN_PROVIDER            = Eclipse Data Tools Platform
_UI_PLUGIN_NAME                = SQL Builder
_NL1_PLUGIN_NAME 			   = SQL Builder Nl1 Fragment
_UI_BUILDER_NAME               = SQL Query Builder

!
! SQL Statement actions
!
datatools_sqlbuilder_sqlstatement_actions_new = New...
datatools_sqlbuilder_sqlstatement_actions_newSQLStatement = New SQL Statement...
datatools_sqlbuilder_sqlstatement_actions_newSQLStatement_tooltip = Create a New Query Statement
datatools_sqlbuilder_sqlstatement_actions_openwith = Open With
datatools_sqlbuilder_sqlstatement_actions_sqlbuilder = SQL Query Builder
datatools_sqlbuilder_sqlstatement_actions_sqleditor = SQL Editor

!SQL Editor
datatools_sqlbuilder_sqleditor_tooltip = Open SQL Editor
datatools_sqlbuilder_sqleditor_title = &SQL Editor

## Resources for the standard editor actions

ContentAssistProposal_label       =Co&ntent Assist@Ctrl+SPACE
ContentAssistProposal_tooltip     =Content Assist
ContentAssistProposal_image       =
ContentAssistProposal_description =Content Assist

ContentTip_label       =Content Tip@Ctrl+SHIFT+SPACE
ContentTip_tooltip     =Content Tip
ContentTip_image       =
ContentTip_description =Content Tip

# Preference page name
SQLBuilder.PreferencePageName = SQL Query Builder

# Editor name for the editor which implements sqleditor's SQLBuilder extension point
SQLEditor.SQLBuilderName = SQL Query Builder