# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2009 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-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.

# Help system
# {0} - URL
EXC_nbdocs_cannot_connect=\u0644\u0627\u064a\u0645\u0643\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u0639\u0646\u0648\u0627\u0646 {0}; \u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0645\u0635\u062f\u0631 \u0645\u0646\u0627\u0633\u0628

# JavaHelp
# {0} - ID
MSG_jh_id_not_found=\u062a\u062d\u0630\u064a\u0631: \u0627\u0644\u0645\u0648\u0636\u0648\u0639 \u0630\u0648 \u0627\u0644\u0631\u0642\u0645 {0} \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f
#LBL_Empty_HelpComponent=<JavaHelp not found>
# master index menu item
#LBL_MasterIndex=Master Index
TITLE_loading_help_sets=\u062c\u0627\u0631\u064a \u062a\u062d\u0645\u064a\u0644 \u0645\u062c\u0645\u0648\u0639\u0627\u062a \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0629 ...
ACSD_JavaHelp_viewer=\u0639\u0631\u0636 \u0648\u0627\u062d\u062f \u0623\u0648 \u0623\u0643\u062b\u0631 \u0645\u0646 \u0645\u0631\u0627\u062c\u0639 \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0629 \u0639\u0644\u0649 \u0627\u0644\u0627\u0646\u062a\u0631\u0646\u062a \u0628\u0635\u064a\u063a\u0629 \u0645\u0644\u0641\u0627\u062a \u0645\u0633\u0627\u0639\u062f\u0629
ACSD_Loading_Dialog=\u062a\u062d\u0645\u064a\u0644 \u0645\u062c\u0645\u0648\u0639\u0627\u062a \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0629

# HelpAction
LBL_HelpAction=\u0645\u0633\u0627\u0639\u062f\u0629
CTL_OpeningHelp=\u062c\u0627\u0631\u064a \u0641\u062a\u062d \u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0629 ....

# Display name of known modules
org.netbeans.modules.web.monitor=\u0646\u0631\u0627\u0642\u0628 \u0627\u0644 HTTP

# a11y - BrowserDisplayer
ACSD_Label=\u0627\u0636\u063a\u0637 \u0647\u0646\u0627 \u0644\u0641\u062a\u062d \u0647\u0630\u0627 \u0627\u0644\u0631\u0627\u0628\u0637 \u0641\u064a \u0627\u0644\u0645\u0633\u062a\u0639\u0631\u0636

# log messages
# {0} HelpCtx of the help to be shown
LOG_SHOWING_HELP=\u0639\u0631\u0636 : \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0629 {0} 
#LOG_SHOWING_HELP_ICON_BASE=org/netbeans/modules/javahelp/resources/help.gif

# usage logging
# {0} HelpCtx of the help to be shown
USG_HELP_SHOW=\u0639\u0631\u0636 : \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0629 {0} 

QuickSearch/Help=\u0645\u0633\u0627\u0639\u062f\u0629
Err_CreateJavaHelpSearchEngine=\u0641\u0634\u0644 \u0625\u0646\u0634\u0627\u0621 \u0645\u0633\u0627\u0639\u062f \u0627\u0644\u0628\u062d\u062b.

# Copy link location action
LBL_CopyLinkLocationAction=\u0646\u0633\u062e \u0645\u0643\u0627\u0646 \u0627\u0644\u0631\u0627\u0628\u0637

