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


# manifest
OpenIDE-Module-Name=\u30c6\u30ad\u30b9\u30c8API
OpenIDE-Module-Display-Category=\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3
OpenIDE-Module-Short-Description=Swing\u30d9\u30fc\u30b9\u306e\u30a8\u30c7\u30a3\u30bf\u30ad\u30c3\u30c8\u3092\u30e9\u30c3\u30d7\u3059\u308b\u6c4e\u7528API\u3002
OpenIDE-Module-Long-Description=Swing\u30c6\u30ad\u30b9\u30c8\u30fb\u30a8\u30c7\u30a3\u30bf\u3092\u57cb\u3081\u8fbc\u3080\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u30b5\u30dd\u30fc\u30c8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002



# Editor top component
CTL_ModeName=\u30a8\u30c7\u30a3\u30bf

# Print settings
CTL_Print_settings=\u5370\u5237\u8a2d\u5b9a
CTL_Header_format = {1}\u3067{2}\u3092\u5370\u5237\u4e2d
CTL_Footer_format = {0}\u30da\u30fc\u30b8

# Print BeanInfo
PROP_PAGE_FORMAT=\u30da\u30fc\u30b8\u66f8\u5f0f
HINT_PAGE_FORMAT=\u30da\u30fc\u30b8\u66f8\u5f0f
PROP_WRAP=\u6539\u884c\u3059\u308b
HINT_WRAP=\u6539\u884c\u3059\u308b\u304b\u3069\u3046\u304b\u3002
PROP_HEADER_FORMAT=\u30da\u30fc\u30b8\u30fb\u30d8\u30c3\u30c0\u30fc\u66f8\u5f0f

HINT_HEADER_FORMAT=\u305f\u3068\u3048\u3070\u3001"\u30d5\u30a1\u30a4\u30eb{2}\u306e\u30da\u30fc\u30b8{0}\u306e\u6700\u4e0a\u90e8(\u5370\u5237\u65e5: {1})"\u3002
PROP_FOOTER_FORMAT=\u30da\u30fc\u30b8\u30fb\u30d5\u30c3\u30bf\u30fc\u66f8\u5f0f
HINT_FOOTER_FORMAT=\u305f\u3068\u3048\u3070\u3001"\u30d5\u30a1\u30a4\u30eb{2}\u306e\u30da\u30fc\u30b8{0}\u306e\u6700\u4e0b\u90e8(\u5370\u5237\u65e5: {1})"\u3002
PROP_HEADER_FONT=\u30da\u30fc\u30b8\u30fb\u30d8\u30c3\u30c0\u30fc\u30fb\u30d5\u30a9\u30f3\u30c8
HINT_HEADER_FONT=\u30da\u30fc\u30b8\u30fb\u30d8\u30c3\u30c0\u30fc\u306e\u30d5\u30a9\u30f3\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002
PROP_FOOTER_FONT=\u30da\u30fc\u30b8\u30fb\u30d5\u30c3\u30bf\u30fc\u30fb\u30d5\u30a9\u30f3\u30c8
HINT_FOOTER_FONT=\u30da\u30fc\u30b8\u30fb\u30d5\u30c3\u30bf\u30fc\u306e\u30d5\u30a9\u30f3\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002
PROP_HEADER_ALIGNMENT=\u30da\u30fc\u30b8\u30fb\u30d8\u30c3\u30c0\u30fc\u4f4d\u7f6e\u63c3\u3048
HINT_HEADER_ALIGNMENT=\u30da\u30fc\u30b8\u30fb\u30d8\u30c3\u30c0\u30fc\u4f4d\u7f6e\u63c3\u3048 - LEFT\u3001CENTER\u3001RIGHT\u3002
PROP_FOOTER_ALIGNMENT=\u30da\u30fc\u30b8\u30fb\u30d5\u30c3\u30bf\u30fc\u4f4d\u7f6e\u63c3\u3048
HINT_FOOTER_ALIGNMENT=\u30da\u30fc\u30b8\u30fb\u30d5\u30c3\u30bf\u30fc\u4f4d\u7f6e\u63c3\u3048 - LEFT\u3001CENTER\u3001RIGHT\u3002
PROP_LINE_ASCENT_CORRECTION=\u884c\u30a2\u30bb\u30f3\u30c8\u4fee\u6b63
# [PENDING] this is very mysterious  --jglick
HINT_LINE_ASCENT_CORRECTION=\u884c\u30a2\u30bb\u30f3\u30c8\u3092\u4fee\u6b63\u3059\u308b\u305f\u3081\u306e\u4e57\u6570\u3002

# Alignment Prop Editor
CTL_CENTER = CENTER
CTL_RIGHT = RIGHT
CTL_LEFT = LEFT

# Cancellation
CTL_Print_progress=\u30da\u30fc\u30b8\u756a\u53f7{0}\u306f\u5370\u5237\u3055\u308c\u307e\u3057\u305f\u3002
CTL_Print_cancellation=\u5370\u5237\u30b8\u30e7\u30d6\u9032\u884c\u4e2d
CTL_Cancel=\u53d6\u6d88

# EditorSupport
# Result when a user cancels print
CTL_Printer_Abort=\u73fe\u5728\u306e\u30d7\u30ea\u30f3\u30bf\u30fb\u30b8\u30e7\u30d6\u306f\u4e2d\u6b62\u3055\u308c\u307e\u3057\u305f\u3002
EXC_Printer_Problem=\u30d7\u30ea\u30f3\u30bf\u306e\u554f\u984c: {0}
EXC_ReadOnlyFile=\u30d5\u30a1\u30a4\u30eb{0}\u306f\u8aad\u53d6\u308a\u5c02\u7528\u3067\u3059\u3002
EXC_LoadDocument=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8{0}\u3092\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
LBL_EditorLoading=\u30ed\u30fc\u30c9\u4e2d...

# when a user wants to close unsaved file
LBL_SaveFile_Title=\u8cea\u554f
CTL_Save=\u4fdd\u5b58


#Note that the '&' goes just before the mnemonic character
CTL_Discard=\u7834\u68c4




# PositionBounds
MSG_Empty_string=\u7a7a\u306e\u6587\u5b57\u5217\u3092\u633f\u5165\u3067\u304d\u307e\u305b\u3093
#editor support warning message
FMT_FileNotFound=\u8b66\u544a: \u30d5\u30a1\u30a4\u30eb{0}\u304c\u5b58\u5728\u3057\u306a\u3044\u304b\u3001\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002

# NbDocument.Colors
# [PENDING] MSG_COLORS, as well as stuff for its hypothetical BeanInfo

# External modification
FMT_External_change=\u30d5\u30a1\u30a4\u30eb{0}\u306f\u5916\u90e8\u3067\u4fee\u6b63\u3055\u308c\u307e\u3057\u305f\u3002\u518d\u30ed\u30fc\u30c9\u3057\u307e\u3059\u304b\u3002
FMT_External_change_write=\u30d5\u30a1\u30a4\u30eb{0}\u306f\u5916\u90e8\u3067\u4fee\u6b63\u3055\u308c\u307e\u3057\u305f\u3002\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b\u3002



# format to create default display name for a line 
# {0} name of the editor support
# {1} line number 


CTL_Bad_File=\u7121\u52b9\u306a\u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002\u30d1\u30b9\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002

# Cloneable editor
ACS_CloneableEditor_QuietEditorPane={0}\u306e\u30a8\u30c7\u30a3\u30bf
ACSD_CloneableEditor_QuietEditorPane={0}\u306e\u30a8\u30c7\u30a3\u30bf
TITLE_SourceButton=\u30bd\u30fc\u30b9

TXT_Question=\u8cea\u554f

