###############################################################################
# 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 = 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 JPA Content
PERSISTENCE_FILE_CONTENT = Persistence File Content
PERSISTENCE_XML_CONTENT = Persistence 1.0 XML Content
PERSISTENCE2_0_XML_CONTENT = Persistence 2.0 XML Content
MAPPING_FILE_CONTENT = Mapping File Content
ORM_XML_CONTENT = ORM 1.0 XML Content
ORM2_0_XML_CONTENT = ORM 2.0 XML Content
JAR_CONTENT = JAR Content

GENERIC_PLATFORM_LABEL=Generic
GENERIC2_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_FACET_LABEL=Java Persistence
JPA_FACET_DESCRIPTION=Adds support for writing persistent meta-data using Java Persistence Architecture.
JPA_PRESET_LABEL=Default JPA 2.0 Configuration
JPA_TEMPLATE_LABEL=JPA Project
JPA_VALIDATOR=JPA Validator
