###############################################################################
# Copyright (c) 2006, 2009 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 - Core
providerName = Eclipse.org

JPA_PLATFORM=JPA Platform
JPA_RESOURCE_MODEL_PROVIDERS=JPA Resource Model Providers
JPA_PROBLEM_MARKER=JPA Problem Marker
JPA_FILE_CONTENT=JPA File Content

BASE_JPA_CONTENT = Base JPA Content
MAPPING_FILE_CONTENT = Mapping File Content
ORM_XML_CONTENT = ORM XML Content
PERSISTENCE_XML_CONTENT = Persistence XML Content
JAR_CONTENT = JAR Content

GENERIC_PLATFORM_LABEL=Generic

NO_OP_LIBRARY_PROVIDER_WARNING = Library configuration is disabled. The user may need to configure further classpath changes later.
NO_OP_LIBRARY_PROVIDER_MESSAGE = The JPA facet requires a JPA implementation library to be present on the project classpath. By disabling library configuration, the user takes on the responsibility of ensuring that the classpath is configured appropriately via alternate means.

JPA_FACET_LABEL=Java Persistence
JPA_FACET_DESCRIPTION=Adds support for writing persistent meta-data using Java Persistence Architecture.
JPA_PRESET_LABEL=Utility JPA project with Java 5.0
JPA_TEMPLATE_LABEL=JPA Project
JPA_VALIDATOR=JPA Validator
