# Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) 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:
#    Eike Stepper - initial API and implementation
   
# 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.
# ==============================================================================

pluginName = CDO Model Repository Tests Model2 Edit Support
providerName = Eclipse Modeling Project

_UI_CreateChild_text = {0}
_UI_CreateChild_text2 = {1} {0}
_UI_CreateChild_text3 = {1}
_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.

_UI_PropertyDescriptor_description = The {0} of the {1}

_UI_SpecialPurchaseOrder_type = Purchase Order (Special)
_UI_Unknown_type = Object

_UI_Unknown_datatype= Value

_UI_SpecialPurchaseOrder_discountCode_feature = Discount Code
_UI_Unknown_feature = Unspecified

_UI_SpecialPurchaseOrder_shippingAddress_feature = Shipping Address

_UI_TaskContainer_type = Task Container
_UI_Task_type = Task
_UI_TaskContainer_tasks_feature = Tasks
_UI_Task_taskContainer_feature = Task Container
_UI_Task_description_feature = Description
_UI_Task_done_feature = Done

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