# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 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]"
#
# 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.
#
# Contributor(s):
#
# Portions Copyrighted 2008 Sun Microsystems, Inc.

ERR_Project_validation=Project model validation failed.

ERR_SystemScope=A 'system' scope dependency was not found. Code completion is affected. 

MSG_SystemScope=There is a 'system' scoped dependency in the project but the path to the binary is not valid.\nPlease check that the path is absolute and points to an existing binary.

ERR_NonLocal=Some dependency artifacts are not in the local repository.

MSG_NonLocal=Your project has dependencies that are not resolved locally. Code completion in the IDE will not include classes from these dependencies or their transitive dependencies (unless they are among the open projects).\nPlease download the dependencies, or install them manually, if not available remotely.\n\nThe artifacts are\:\n {0}

ERR_NoParent=Parent POM file is not accessible. Project might be improperly setup.

MSG_NoParent=The parent POM with id {0}  was not found in sources or local repository. Please check that <relativePath> tag is present and correct, the version of parent POM in sources matches the version defined. \nIf parent is only available through a remote repository, please check that the repository hosting it is defined in the current POM.

ACT_OpenPom=Open pom.xml

LBL_Problems=&Problems\:

LBL_Description=&Description\:

BTN_Correct=Correct

ACT_DownloadDeps=Download Dependencies

ERR_MissingJ2eeModule=Maven J2EE support module missing
MSG_MissingJ2eeModule=You are missing the Maven J2EE support module in your installation. This means that all J2EE related functionality (for example, Deployment, File templates) is missing. The most probable cause is that part of the general J2EE support is missing as well. Please go to Tools/Plugins and install the plugins related to J2EE.

ERR_MissingApisupportModule=Maven NetBeans Development support module missing
MSG_MissingApisupportModule=You are missing the Maven APIsupport module in your installation. This means that all NetBeans development related functionality (for example, File templates, running platform application) is missing. The most probable cause is that part of the general API support is missing as well. Please go to Tools/Plugins and install the plugins related to NetBeans development.

ACT_validate=Revalidate

