###############################################################################
# Copyright (c) 2005, 2020 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v2.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v20.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 OCL

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

OCL_category=OCL (Object Constraint Language) Plug-ins

OCL_ExtLibrary_name=OCL Extended Library
OCL_ExtLibrary_description=Example extended library project (local clone of EMF's variant)

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
