# 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.

# Form Actions
ACT_Add=Paletten Ekle
ACT_Events=Olaylar
ACT_CustomizeLayout=Customize Layout...
ACT_SelectLayout=Set Layout
NAME_FreeDesign=Free Design
MSG_CannotSwitchToFreeDesign=Cannot change the layout to Free Design in the container that is not shown in the designer.Invoke Design This/Parent action on this container before you attempt to change the layout.
ACT_TestMode=Tasar\u0131m\u0131 \u00d6nizle
ACT_ReloadForm=Formu Yeniden Y\u00fckle
ACT_InstallBean=&Swing/AWT Components
ACT_InstallToPalette=Add to Palett&e...
ACT_InPlaceEdit=Metni D\u00fczenle
ACT_EditContainer=Design This Container
ACT_EditForm=Design Top Container
ACT_CustomizeEmptySpace=Space Around Component...
ACT_DefaultSize=Set Default Size
ACT_Bind=Ba\u011fla
MSG_NoBinding=No preferred binding

ACT_Align=Hizala
ACT_ChooseSameSize=Ayn\u0131 Boy
ACT_SetAnchoring=Anchor
ACT_SetResizability=Auto Resizing

CTL_InspectorAction=&Inspector

CTL_OK=Tamam
ACSD_CTL_OK=YOK
CTL_Cancel=\u0130ptal
ACSD_CTL_Cancel=YOK
CTL_RestoreDefault=Varsay\u0131lan &de\u011fere d\u00f6n
ACSD_CTL_RestoreDefault=YOK
MSG_InvalidValue=No valid value was entered.

CTL_ResizabilityH=Yatay
CTL_ResizabilityV=Dikey

CTL_AnchorLeft=Sol
CTL_AnchorRight=Sa\u011f
CTL_AnchorTop=\u00dcst
CTL_AnchorBottom=Alt

CTL_AlignLeft=Sol
CTL_AlignRight=Sa\u011f
CTL_AlignUp=\u00dcst
CTL_AlignDown=Alt

CTL_GroupLeft=Left to Column
CTL_GroupRight=Right to Column
CTL_GroupHCenter=Center to Column
CTL_GroupUp=Top to Row
CTL_GroupDown=Bottom to Row
CTL_GroupVCenter=Center to Row

CTL_SameSizeHorizontal=Same Width
CTL_SameSizeVertical=Same Height
TXT_ComponentsNotInOneContainer=Size of components cannot be linked because they are not in the same container.

# Formatting od event popup menu item, if it has no handlers
# {0}=name of event
FMT_CTL_EventNoHandlers={0}

# Formatting od event popup menu item, if it has exactly one handler
# {0}=name of event
# {1}=name of event handler
FMT_CTL_EventOneHandler={0} [{1}]

# Formatting od event popup menu item, if it has more than one handler
# {0}=name of event
FMT_CTL_EventMultipleHandlers={0}

# Formatting od handler popup menu item. These items are displayed as submenus of the event menu item
# {0}=name of handler
FMT_CTL_HandlerFromMultiple={0}

# Formatting of test form window title
FMT_TestingForm=Design Preview [{0}]

# Customize Empty Space action
TITLE_CustomizeEmptySpace=Space Around Component
TITLE_EmptySpace=Empty Space
NAME_LeftSpace=&Left
NAME_RightSpace=&Right
NAME_TopSpace=&Top
NAME_BottomSpace=&Bottom
NAME_SpaceSize=Size
NAME_SpaceResizable=Resizable
VALUE_PaddingDefault=Varsay\u0131lan
VALUE_PaddingRelated=Default Small
VALUE_PaddingUnrelated=Default Medium
VALUE_PaddingSeparate=Default Large
VALUE_NoEmptySpace=No Space
ACSD_LeftResizable=Determines whether the left space is resizable.
ACSD_RightResizable=Determines whether the right space is resizable.
ACSD_BottomResizable=Determines whether the bottom space is resizable.
ACSD_TopResizable=Determines whether the top space is resizable.
ACSD_EmptySpace=The dialog allows you to customize the empty space around the component.
MSG_NegativeSpaceSize=The size of the space cannot be negative.
MSG_TooLargeSpaceSize=The size of the space cannot exceed 32767.
MSG_CorruptedSpaceSize=The size of the space is invalid.

ACT_CustomCode=Kodu \u00d6zelle\u015ftir

# Duplicate action
ACT_Duplicate=\u00c7o\u011falt

# Enclose In action
ACT_EncloseInContainer=Enclose In
MSG_EncloseInPleaseWait=L\u00fctfen Bekleyiniz...
MSG_EncloseInFailed=The selected components cannot be enclosed in this container.
MSG_EncloseInNotEmpty=Cannot enclose components in a non-empty container.

# Design Parent action
ACT_DesignParentTopMenuItemName=[Top Parent]
ACT_DesignParentAction=Design Parent

