###############################################################################
# Copyright (c) 2005, 2014 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
#     Zeligsoft - Bug 254297
#     E.D.Willink - Bug 289761
###############################################################################

# NLS_MESSAGEFORMAT_VAR

# ==============================================================================
# Do not change the properties between this line and the last line containing:
# %%% END OF TRANSLATED PROPERTIES %%%
# Instead, either redefine an existing property, or create a new property,
# append it to the end of the file, and change the code to use the new name.
# ==============================================================================

Plugin.name=OCL Examples and Editors
Plugin.providerName=Eclipse Modeling Project

# ==============================================================================
# %%% END OF TRANSLATED PROPERTIES %%%
# The above properties have been shipped for translation.
# ==============================================================================

OCL_category=OCL (Object Constraint Language) Plug-ins

OCL_Interpreter_name=OCL Interpreter
OCL_Interpreter_description=Example project defining an interactive OCL interpreter console
_UI_LibraryModelProject_desc = This project contains the extended library model and the implementation generated from it.  
_UI_LibraryEditProject_desc = This project contains the item providers generated to support viewing and editing instances of the extended library model.
_UI_LibraryEditorProjector_desc = This project contains the sample editor generated from the extended library model.

CompleteOCL_Tutorial_name=Complete OCL Tutorial
CompleteOCL_Tutorial_description=Tutorial example demonstrating use of independent OCL to complement Ecore or UML models or Xtext grammars

OCLinEcore_Tutorial_name=OCLinEcore Tutorial
OCLinEcore_Tutorial_description=Tutorial example demonstrating use of embedded OCL to enrich an Ecore model 

EmptyOCL_name=Empty OCL Project
EmptyOCL_description=Empty OCL project

Royal_and_Loyal_name=Royal and Loyal Example
Royal_and_Loyal_description=Example project containing the Royal and Loyal Example
