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



###############################
#Global resources found in the package: ./end2end/src/org/netbeans/modules/mobility/end2end/codegenerator
###############################

# ProxyGenerator.class
MSG_WebProjectNotBuilt=Projeto Web deve ser constru\u00eddo antes de usar Cliente M\u00f3vel para o Gerador de Aplica\u00e7\u00f5es Web!

###############################
#Resources found in the file: ConnectionGenerator.java
###############################

# ConnectionGenerator.class
MSG_GeneratingJavonBridge=Gerando Cliente M\u00f3vel para Aplica\u00e7\u00e3o Web
MSG_GeneratingProxyStubs=Gerando proxy stubs
MSG_ScanningDataStructures=Varrendo estruturas de dados
MSG_CreatingJavaFiles=Criando arquivos java
MSG_SuccessGenerated=Cliente M\u00f3vel gerado com sucesso para a Aplica\u00e7\u00e3o Web.
MSG_Failure=Falha na gera\u00e7\u00e3o de Cliente M\u00f3vel para a Aplica\u00e7\u00e3o Web. Veja a guia Sa\u00edda para obter detalhes!
LBL_JavonTab=Cliente M\u00f3vel para Aplica\u00e7\u00e3o Web

TXT_CreatingFolder=Criando a pasta {0}...
TXT_FailedFolderCreation=N\u00e3o \u00e9 poss\u00edvel criar a pasta {0}
TXT_CreatingProxyClass=Criando a classe proxy {0}...
TXT_FailedProxyClassCreation=N\u00e3o \u00e9 poss\u00edvel criar a classe proxy {0}
TXT_ConfigureBindings=Configurar vincula\u00e7\u00f5es para a classe proxy...
TXT_GenerateProxyClass=Gerar classe proxy...
TXT_FailProxyGeneration=Falha na gera\u00e7\u00e3o da classe proxy.
TXT_GenerationSuccess=A gera\u00e7\u00e3o foi finalizada com sucesso.
TXT_GenerationUnsuccess==Gera\u00e7\u00e3o finalizada com erros.

