# /**
#  * Copyright (c) 2002-2010 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 - Initial API and implementation
#  */

# NLS_MESSAGEFORMAT_VAR

pluginName = EMF RAP Edit UI
providerName = Eclipse Modeling Project


_UI_Copy_menu_item = &Copy
_UI_Cut_menu_item = Cu&t
_UI_Delete_menu_item = &Delete
_UI_Paste_menu_item = &Paste

_UI_Redo_menu_item = &Redo {0}@Ctrl+Y
_UI_Redo_menu_item_simple_description = Redo the most recently undone action
_UI_Redo_menu_item_description = Redo: {0}

_UI_Undo_menu_item = &Undo {0}@Ctrl+Z
_UI_Undo_menu_item_simple_description = Undo do the most recent action
_UI_Undo_menu_item_description = Undo: {0}

# The feature is 0, and object is 1
_UI_FeatureEditorDialog_title =  {0} -- {1}
_UI_Feature_label = &Feature
_UI_Value_label = &Value
_UI_Choices_label = &Choices
_UI_Choices_pattern_group = Filter Available Choices
_UI_Choices_pattern_label = Choice &Pattern (* or ?)
_UI_Up_label = &Up
_UI_Down_label = &Down
_UI_Add_label = &Add
_UI_Remove_label = &Remove

_UI_Validate_menu_item = &Validate
_UI_Validate_simple_description = Validate the selected item

_UI_ValidationProblems_title = Validation Problems
_UI_ValidationProblems_message = Problems encountered during validation

_UI_LoadResource_menu_item = &Load Resource...
_UI_LoadResource_menu_item_description = Load a resource by specifying a URI
_UI_LoadResourceDialog_title = Load Resource

_UI_Validating_message = Validating {0}

_UI_ValidationOK_message = Validation completed successfully

_UI_LocateValue_action = &Locate Value
_UI_LocateValue_action_tool_tip = Locate Value

_UI_ValidationResults_title = Validation Information
_UI_ValidationResults_message = Information encountered during validation

_UI_ControlCommand_label = Control
_UI_UncontrolCommand_label = Uncontrol

_UI_Control_menu_item = &Control...
_UI_Control_menu_item_description = Move the selected object into another resource without changing its container
_UI_Uncontrol_menu_item = Un&control
_UI_Uncontrol_menu_item_description = Return the selected object to the same resource as its container

_UI_ControlDialog_title = Control

_UI_InvalidURI_label = Invalid URI
_WARN_AlreadyInResource = The object is already in the specified resource.
_WARN_ReadOnlyResource = The specified resource is read-only.
_WARN_CannotCreateResource = Unable to create a resource for the specified URI.

_UI_ExistingResource_label = Existing Resource
_WARN_ReplaceResource = The specified resource already exists, but cannot be loaded. Replace it?
_WARN_AddToResource = The specified resource already exists. Add the object to it?
_UI_MarkerLocation = line {0}, column {1}

_UI_MultiLineInputDialog_message = &Enter a value:

_UI_DiagnosisOfNObjects_message = Diagnosis of {0} objects
