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

# Console selection
ConsoleType_LBL=Tipus de consola
ConsoleType_HINT=Controla on s'executa el programa
ConsoleType_Default=Predeterminat
ConsoleType_External=Terminal extern
ConsoleType_Internal=Terminal intern
ConsoleType_Output=Standard Output

TerminalType_LBL=External Terminal Type
TerminalType_HINT=Quin emulador de terminal s'ha d'utilitzar
TerminalType_None=Sense
TerminalType_Default=Predeterminat
TerminalType_GNOME=Terminal de Gnome
TerminalType_KDE=Konsole de KDE
TerminalType_XTerm=XTerm
TerminalType_CommandWindow=Finestra de comandes

RemoveInstrumentation_LBL=Treure instrumentaci\u00f3
RemoveInstrumentation_HINT=Remove "-xinstrument=datarace" instrumentation on run action
RemoveInstrumentation_Ask=Preguntar
RemoveInstrumentation_Yes=Si
RemoveInstrumentation_No=No

LBL_RunPrompt=[Premeu RETORN per tancar la finestra]

Err_NoTermFound=No s'ha trobat cap programa de terminal. Re-direccionant la sortida a la Finestra Sortida. No estar\u00e0 disponible cap entrada.
Err_MissingDorunScript=Falta l'script dorun

GeneralName=General
GeneralTT=General
ArgumentsName=Arguments
ArgumentsHint=Argument per la funci\u00f3 main()
RunDirectoryName=Directori d'execuci\u00f3
RunDirectoryHint=El directori des d'on s'ha d'executar el binari
RunCommandName=Run Command
RunCommandHint=The command to be executed including arguments. "${OUTPUT_PATH}" expands to project build output.
ComplexRunCommandHint=The command to be executed. Note that profiling is not available for such command.
ComplexCommandText=For such kind of commands profiling is not available.
ComplexCommandTitle=Profiling is not available
BuildFirstName=Primer construir
BuildFirstHint=Construir el projecte abans d'executar el binari
EnvironmentName=Entorn
EnvironmentHint=Variables d'entorn
DirectoryChooserPanel.directoryLabel.text=&Directory:
DirectoryChooserPanel.directoryTextField.text=
DirectoryChooserPanel.browseButton.text=Navegar
DirectoryChooserPanel.directoryLabel.mn=C
DirectoryChooserPanel.directoryLabel.mn=C
DirectoryChooserPanel.browseButton.mn=B

Run_Directory=Directori d'execuci\u00f3
SelectLabel=Seleccionar

