# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU
# General Public License Version 2 only ("GPL") or the Common
# Development and Distribution License("CDDL") (collectively, the
# "License"). You may not use this file except in compliance with the
# License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html
# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
# specific language governing permissions and limitations under the
# License.  When distributing the software, include this License Header
# Notice in each file and include the License file at
# nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that
# accompanied this code. If applicable, add the following below the
# License Header, with the fields enclosed by brackets [] replaced by
# your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original
# Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
# Microsystems, Inc. All Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL
# or only the GPL Version 2, indicate your decision by adding
# "[Contributor] elects to include this software in this distribution
# under the [CDDL or GPL Version 2] license." If you do not indicate a
# single choice of license, a recipient has the option to distribute
# your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above.
# However, if you add GPL Version 2 code and therefore, elected the GPL
# Version 2 license, then the option applies only if the new code is
# made subject to such option by the copyright holder.

Templates/Persistence/PersistenceUnit=Persistence Unit
LBL_WizardTitle=Persistence Unit Wizard
LBL_DescriptorLocation=File location\:

LBL_Browse=G\u00f6zat...
LBL_UnitName=Persistence Unit Name\:
MN_UnitName=U
ACSD_UnitName=Persistence Unit Name

LBL_Provider=Persistence Provider\:
MN_Provider=S
ACSD_Provider = Persistence Provider

LBL_Step1=Provider and Database
LBL_SpecifyPersistenceProvider=Specify the persistence provider and database for entity classes.

LBL_SpecifyDatabase=Specify the database for persisting entity classes.

LBL_JdbcConnection=Database Connection\:
MN_JdbcConnection=O
ACSD_JdbcConnection=JDBC Connection

LBL_ServerDataSource=Data Source\:
LBL_ContainerManaged=Server Managed Persistence
LBL_ContainerManaged_Server_Name=Server Managed Persistence ({0})

LBL_ApplicationManaged=Application Managed Persistence

LBL_Library=Persistence Library\:
MN_Library=L
ACSD_Library=Persistence Library

LBL_DatasourceName=Datasource Name\:
MN_DatasourceName=A
ASCD_DatasourceName=Datasource Name

LBL_NonDefaultProvider=Non-default Provider\:

LBL_JTA=Use Java Transaction APIs
CHB_JTA_mnem = J
ACSD_JTA = Use Java Transaction APIs

LBL_TableGeneration=Table Generation Strategy\:
ACSD_TableGeneration=Table Generation Strategy

LBL_Create=Olu\u015ftur
CHB_Create_mnem = C
ACSD_Create=Olu\u015ftur

LBL_DropCreate=Drop and Create
CHB_DropCreate_mnem = V
ACSD_DropCreate=Drop and Create

LBL_None=Hi\u00e7biri
CHB_None_mnem= N
ACSD_None = Hi\u00e7biri

LBL_NoPersistenceLibraries=No Persistence libraries registered

ERR_NotSupportedJavaEEVersion=Persistence units are available only in Java EE 5.0 and higher.

ERR_PersistenceUnitNameNotUnique=The name of the persistence unit must be unique.

ERR_InvalidPersistenceXml=The project has an invalid persistence.xml file ({0})

ERR_MissingServer=<html>The target server for the project is not set properly. Java Persistence features<br>are server-dependent and some wizards in the IDE might not behave as expected<br> if the target server is not specified.</html>

ERR_WrongSourceLevel = Source level 1.6 is recommended for JPA 2.0. The source level for this project is currently {0}.
ERR_UnsupportedJpaVersion = JPA {0} is not supported by the server, JPA 1.0 will be used.


LBL_NewPersistenceLibrary=New Persistence Library...
LBL_ManageLibraries=Manage Libraries...

LBL_PersistenceProvider=Persistence Provider\:
LBL_NoAvailableConnection=No Available Connection
ACSD_DatasourceName=Datasource Name

MSG_LoadLibs=Processing libraries...
MSG_CreatePU=Creating persistence unit...

