# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
#
# 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.  Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun 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-2008 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.

#Splash
#NOI18N
#SPLASH_WIDTH=473
#NOI18N
#SPLASH_HEIGHT=300

#NOI18N
#SplashShowProgressBar=true

# x, y, w, h
#NOI18N
#SplashRunningTextBounds=10, 235, 450, 12
#NOI18N
#SplashProgressBarBounds=0, 249, 473, 3
#16986: Special font size used only for splash screen
#NOI18N
#SplashRunningTextFontSize=11
# RGB
#NOI18N
#SplashRunningTextColor=0xFFFFFF
#NOI18N
#SplashProgressBarColor=0xE00000
#NOI18N
#SplashProgressBarEdgeColor=0xC5646F
#NOI18N
#SplashProgressBarCornerColor=0xB4A2B5
# x, y, w, h
#NOI18N
#AboutTextBounds=78, 60, 362, 20
# Hexadecimal color of printing text in RGB
#NOI18N
#AboutTextColor=0x000000

LBL_splash_window_title=\u555f\u52d5 NetBeans IDE
#currentVersion=NetBeans IDE Dev (Build {0})

MSG_warning=NetBeans IDE - \u8b66\u544a
MSG_info=NetBeans IDE - \u8cc7\u8a0a
