# Copyright (c) 2005, 2018 IBM Corporation, Embarcadero Technologies, CEA, 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
#   Kenn Hussey (Embarcadero Technologies) - 227392, 226178, 226101, 204200
#   Kenn Hussey (CEA) - 327039, 416833
#   Christian W. Damus (CEA) - 326915, 268444, 180744
#   Kenn Hussey - 529769, 535301
#

# NLS_MESSAGEFORMAT_VAR

pluginName = UML2 UML Editor
providerName = Eclipse Modeling Project

_UI_UMLEditor_menu = &UML Editor

_UI_CreateChild_menu_item = &New Child
_UI_CreateSibling_menu_item = N&ew Sibling

_UI_ShowPropertiesView_menu_item = Show &Properties View
_UI_RefreshViewer_menu_item = &Refresh

_UI_SelectionPage_label = Selection
_UI_ParentPage_label = Parent
_UI_ListPage_label = List
_UI_TreePage_label = Tree
_UI_TablePage_label = Table
_UI_TreeWithColumnsPage_label = Tree with Columns
_UI_ObjectColumn_label = Object
_UI_SelfColumn_label = Self

_UI_NoObjectSelected = Selected Nothing
_UI_SingleObjectSelected = Selected Object: {0}
_UI_MultiObjectSelected = Selected {0} Objects

_UI_OpenEditorError_label = Open Editor

_UI_Wizard_category = Example EMF Model Creation Wizards

_UI_UMLModelWizard_label = UML Model
_UI_UMLModelWizard_description = Create a new UML model

_UI_UMLEditor_label = UML Model Editor

_UI_UMLEditorFilenameDefaultBase = My

_UI_Wizard_label = New

_WARN_FilenameExtension = The file name must end in ".{0}"

_UI_ModelObject = Model Object
_UI_XMLEncoding = XML Encoding

# These are the XML encodings that will be presented in the new model wizard.
# The translated version of this property should include the encodings popular in the locale.
# The first one listed here will be the default, so please list the most popular choice first.
_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1

_UI_Wizard_initial_object_description = Select a model object to create

_UI_FileConflict_label = File Conflict
_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor.  Do you wish to discard this editor's changes?

_UI_ElementMenu_label = &Element
_UI_PackageMenu_label = P&ackage
_UI_ProfileMenu_label = Pr&ofile
_UI_StereotypeMenu_label = &Stereotype

_UI_ApplyStereotypeAction_label = &Apply Stereotype...
_UI_DestroyElementAction_label = &Destroy
_UI_UnapplyStereotypeAction_label = &Unapply Stereotype...
_UI_ExpandTemplatesAction_label = Expand &Templates...

_UI_ApplyProfileAction_label = (Re-)&Apply Profile...
_UI_ImportPrimitiveTypeAction_label = &Import Primitive Type...
_UI_MergePackageAction_label = &Merge...
_UI_UnapplyProfileAction_label = &Unapply Profile...

_UI_DefineProfileAction_label = &Define
_UI_ReferenceMetaclassAction_label = Reference Meta&class...
_UI_ReferenceMetamodelAction_label = Reference Meta&model...

_UI_CreateExtensionAction_label = &Create Extension...

_UI_ApplyStereotypeActionCommand_label = Apply Stereotype(s)
_UI_DestroyElementActionCommand_label = Destroy ''{0}''
_UI_UnapplyStereotypeActionCommand_label = Unapply Stereotype(s)
_UI_ExpandTemplatesActionCommand_label = Expand Template(s) of ''{0}''

_UI_ApplyProfileActionCommand_label = (Re-)Apply Profile(s)
_UI_ImportPrimitiveTypeActionCommand_label = Import Primitive Type(s)
_UI_MergePackageActionCommand_label = Merge Package ''{0}''
_UI_UnapplyProfileActionCommand_label = Unapply Profile(s)

_UI_DefineProfileActionCommand_label = Define ''{0}''
_UI_ReferenceMetaclassActionCommand_label = Reference Metaclass(es)
_UI_ReferenceMetamodelActionCommand_label = Reference Metamodel(s)

_UI_CreateExtensionActionCommand_label = Create Extension(s)

_UI_MergingPackage_message = Merging package ''{0}''...
_UI_ExpandingTemplates_message = Expanding templates of ''{0}''...

_UI_DiagnosticOK_message = The operation was successful.
_UI_DiagnosticProblems_message = Problems were encountered.

_UI_OptionsDialog_message = Please choose options.

_UI_DifferentPropertyStaticity_label = Different Property Staticity
_UI_DifferentPropertyUniqueness_label = Different Property Uniqueness
_UI_EmptyUnions_label = Empty Unions
_UI_ImplicitRedefinitions_label = Implicit Redefinitions
_UI_InvalidRedefinitions_label = Invalid Redefinitions
_UI_InvalidSubsets_label = Invalid Subsets
_UI_AssociationSpecializations_label = Association Specializations
_UI_RedundantGeneralizations_label = Redundant Generalizations
_UI_Capabilities_label = Capabilities
_UI_EmptyQualifiedNames_label = Empty Qualified Names
_UI_IndistinguishableClassifiers_label = Indistinguishable Classifiers
_UI_AttributeTransformations_label = Attribute Transformations

_UI_UMLEditorDiagnostic_marker = UML Problem
_UI_CreateModelError_message = Problems encountered in file "{0}"

_UI_ImportTypeAction_label = &Import Type...
_UI_ImportTypeActionCommand_label = Import Type(s)

_UI_DefiningProfile_message = Defining profile ''{0}''...

_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}

_UI_Save_All_Resources_As = Save all ''.{0}'' resources with new file extension of ''.{1}''?

# 0 - the client-supplied dialog label
# 1 - and the user-friendly label of the object being edited
_UI_ChoicesDialog_title =  {0} -- {1}

_UI_ApplicableStereotypes_label = Applicable Stereotypes
_UI_AvailableProfiles_label = Available Profiles
_UI_AppliedStereotypes_label = Applied Stereotypes
_UI_AppliedProfiles_label = Applied Profiles

_UI_StereotypesToApply_label = Stereotypes to Apply
_UI_StereotypesToUnapply_label = Stereotypes to Unapply
_UI_ProfilesToApply_label = Profiles to (Re-)Apply
_UI_ProfilesToUnapply_label = Profiles to Unapply

_UI_Apply_label = Apply
_UI_Unapply_label = Unapply

_UI_StereotypesResource_label = Create stereotype applications in:
_UI_StereotypesResource_existing_label = Load existing resource...
_UI_StereotypesResource_new_label = Create new resource...
_UI_StereotypesResource_existingDialog_label = Load Existing Resource
_UI_StereotypesResource_newDialog_label = Create New Resource
_UI_StereotypesResource_notExists_message = The selected resource does not exist.
_UI_StereotypesResource_exists_message = The selected resource already exists.
_UI_StereotypesResource_createFailed_message = Could not create resource. See log for details.
_UI_StereotypesResource_loadFailed_message = Could not load resource. See log for details.

# START NON-TRANSLATABLE
_UI_UMLEditorFilenameExtensions = uml
# END NON-TRANSLATABLE
