###############################################################################
# Copyright (c) 2006, 2012 Oracle. 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:
#     Oracle - initial API and implementation
###############################################################################

# ====================================================================
# To code developer:
#   Do NOT change the properties between this line and the
#   "%%% END OF TRANSLATED PROPERTIES %%%" line.
#   Make a new property name, append to the end of the file and change
#   the code to use the new property.
# ====================================================================

# ====================================================================
# %%% END OF TRANSLATED PROPERTIES %%%
# ====================================================================
pluginName= Dali Java Persistence Tools - JPA UI
providerName=Eclipse Web Tools Platform

JPA_PLATFORM_UI="JPA Platform UI"

jpaNavigatorContent=JPA Content

jpaWizardCategoryName = JPA
newJpaProjectWizardName = JPA Project
newJpaProjectWizardDesc = Create a JPA project
newJpaEntityWizardName = JPA Entity
newJpaEntityWizardDesc = Create a JPA Entity 
newJpaMappingFileWizardName = JPA ORM Mapping File
newJpaMappingFileWizardDesc = Create a JPA ORM Mapping File
newJpaEntityFromTableWizardName = JPA Entities from Tables
newJpaEntityFromTableWizardDesc = Create JPA Entities from database tables 

upgradeToLatestVersion = Upgrade Document Version
jpaStructureViewCommandCategory = JPA Structure View
addPersistentClass = Add Class...
removePersistentClass = Remove Class
addPersistentAttributeToXml = Add Attribute to XML
addPersistentAttributeToXmlAndMap = Add Attribute to XML and Map...
removePersistentAttributeFromXml = Remove Attribute from XML
mapAs=Map As
mapAsMnemonic=M
mapAsParameterName=mapping key
mapAsSpecifiedMappingParameterName=specified mapping key
mapAsDefaultMappingParameterName=default mapping key
convertJavaProjectToJpaCommandName=Convert to JPA Project...

jpaMenuName = JPA Tools
generateEntities = Generate Entities from Tables...
generateDDL = Generate Tables from Entities...
moveToXml = Move to XML
convertJavaQueries = Java Queries...
convertJavaGenerators= Java Generators...
jpaMetadataConversionCommandCategory=JPA Metadata Conversion
synchronizeClasses = Synchronize Class List
makePersistent = Make Persistent...
persistenceEditor = Persistence XML Editor

javaPersistenceNode = Java Persistence
jpaNode = JPA
jpaEntityGenNode = Entity Generation
jpaProblemSeveritiesNode = Errors/Warnings

jpaPerspective = JPA
jpaPerspectiveDescription = This perspective is designed to support Java Persistence (JPA) development. It offers a Project Explorer, JPA Details, JPA Structure and a Data Source Explorer.
jpaDetails = JPA Details
jpaStructure = JPA Structure
JpaProposalCategory = JPA Proposals

JptCreationActionSet.label = Jpt Creation
JptCreationActionSet.description = Jpt Creation Action Set

NewEntityAction.label = New Entity