###############################################################################
# Copyright (c) 2006, 2007 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= Java Persistence API Tools - UI
providerName=Eclipse.org

JPA_PLATFORM="JPA Platform UI"


jpaWizardCategoryName = JPA
newJpaProjectWizardName = JPA Project
newJpaProjectWizardDesc = Create a JPA project

jpaMenuName = JPA Tools
generateEntities = Generate Entities...
generateDDL = Generate DDL...
synchronizeClasses = Synchronize Classes
addPersistentClass = Add persistent class ...
removePersistentClass = Remove persistent class
addPersistentAttributeToXml = Add persistent attribute to XML
addPersistentAttributeToXmlAndMap = Add persistent attribute to XML ...
removePersistentAttributeFromXml = Remove persistent attribute from XML

jpaPreferencePage = JPA

jpaProjectPropertiesPage = JPA

jpaPerspective = JPA Development
jpaDetails = JPA Details
jpaStructure = JPA Structure

JpaProposalCategory = JPA Proposals
