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

TXT_ioWindowTitle=Servidor de E/S BEA WebLogic

MSG_START_SERVER_IN_PROGRESS=Iniciando {0}
MSG_SERVER_STARTED={0} iniciado
MSG_START_SERVER_FAILED=Fallou o inicio de {0}
MSG_START_SERVER_TIMEOUT=IDE could not recognize whether the server has been started. Usa o bot\u00f3n Actualizar ou o elemento do men\u00fa contextual Actualizar para actualizar o seu estado.
MSG_START_SERVER_INTERRUPTED=Non foi pos\u00edbel que o IDE comprobe se se iniciou o servidor. Usa o bot\u00f3n Actualizar ou o elemento do men\u00fa contextual Actualizar para actualizar o seu estado.
MSG_START_PROFILED_SERVER_FAILED={0} start for profiling failed

MSG_STOP_SERVER_IN_PROGRESS=Detendo {0}
MSG_SERVER_STOPPED={0} detido
MSG_STOP_SERVER_FAILED=Fallou a detenci\u00f3n de {0}
MSG_STOP_SERVER_TIMEOUT=IDE could not recognize whether the server has been stopped. Usa o bot\u00f3n Actualizar ou o elemento do men\u00fa contextual Actualizar para actualizar o seu estado.
MSG_STOP_SERVER_INTERRUPTED=Non foi pos\u00edbel que o IDE comprobe se se detivo o servidor. Usa o bot\u00f3n Actualizar ou o elemento do men\u00fa contextual Actualizar para actualizar o seu estado.

MSG_NO_DOMAIN_HOME=IDE cannot access WebLogic domain directory.

MSG_ExceptionOccurred=Produciuse unha excepci\u00f3n

