###############################################################################
# Copyright (c) 2006, 2010 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 - Core
providerName = Eclipse Web Tools Platform

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 content for JPA XML files
PERSISTENCE_XML_CONTENT = JPA persistence.xml files
MAPPING_FILE_CONTENT = Base content for JPA XML mapping files
ORM_XML_CONTENT = JPA orm.xml mapping files
JAR_CONTENT = JAR Content

GENERIC_1_0_PLATFORM_LABEL=Generic 1.0
GENERIC_2_0_PLATFORM_LABEL=Generic 2.0

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_PREREQ_GROUP_LABEL="JPA prerequisite facets"
JPA_FACET_LABEL=JPA
JPA_FACET_DESCRIPTION=Adds support for writing persistent meta-data using the Java Persistence API (JPA).
JPA_1.0_PRESET_LABEL=Minimal JPA 1.0 Configuration
JPA_2.0_PRESET_LABEL=Minimal JPA 2.0 Configuration
JPA_TEMPLATE_LABEL=JPA Project
JPA_VALIDATOR=JPA Validator
