###############################################################################
# Copyright (c) 2016 Angelo Zerr 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:
#	Angelo Zerr <angelo.zerr@gmail.com> - Initial API and implementation
#	Patrik Suzzi <psuzzi@gmail.com> - Bug 487050
###############################################################################
Bundle-Vendor.0 = Eclipse Web Tools Platform
Bundle-Name.0 = Eclipse Web Developer Tools


providerName=Eclipse Web Tools Platform
pluginName=Eclipse JSON Editors and Tools

# Extension point
completionProposalCollectors.name=Completion proposal collectors extension

# JSON Preferences
JSON.name=JSON
JSON_Files.name=JSON Files
JSON_Source.name=Editor
JSON_Content_Assist.name=Content Assist
JSON_Validator.name=Validation
JSON_Templates.name=Templates
_UI_PREF_JSON_CATALOG=JSON Catalog
JSON_Styles.name=Styles
JSON_Syntax_Coloring=Syntax Coloring
JSON_Typing=Typing
JSON_Editor.name=JSON Editor
JSON_Property_validation=JSON Syntax
###############################################################################
JSON_Editor.name=JSON Editor

# content assist
proposalCategory.json=JSON Proposals
proposalCategory.jsonTemplates=JSON Template Proposals

All_JSON_context_type_Extension_Element.name=All JSON
JSON_New_context_type_Extension_Element.name=New JSON
JSON_Package_context_type_Extension_Element.name=New package.json

preferenceKeywords.jsoncatalog=JSON Catalog
