###############################################################################
# Copyright (c) 2001, 2004 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
# IBM Corporation - initial API and implementation
###############################################################################
# This properties file holds all the externalized strings for the Application Client project
#
# :Begin: WebSphere Quality Validation Information :Begin:
#COMPONENTPREFIX CHKJ
#COMPONENTNAMEFOR CHKJ IBM WebSphere Validation
#CMVCPATHNAME ncf/src/java/com/ibm/websphere/validation/applicationclientvalidation.properties
# :End: WebSphere Quality Validation Information :End:


ERROR_APPLICATIONCLIENT_INVALID_APPCLIENT_FILE=CHKJ1000E: A valida\u00e7\u00e3o falhou porque o arquivo do cliente do aplicativo n\u00e3o \u00e9 v\u00e1lido. Verifique se o descritor de implementa\u00e7\u00e3o \u00e9 v\u00e1lido.
#EXPLANATION None.
#USERACTION None.

ERROR_APPCLIENT_VALIDATION_FAILED=CHKJ1001E: A valida\u00e7\u00e3o falhou:
#EXPLANATION None.
#USERACTION None.

ERROR_EJB_REFS=CHKJ1002E: Refer\u00eancias EJB n\u00e3o-solucion\u00e1veis em {0};
#EXPLANATION None.
#USERACTION None.

INVALID_DD=CHKJ1003E: O projeto do cliente do aplicativo tem um descritor de implementa\u00e7\u00e3o inv\u00e1lido.
#EXPLANATION None.
#USERACTION None.

MESSAGE_APPCLIENT_MISSING_URI=CHKJ1004E: O URI, {0}, corresponde a nada no arquivo do cliente do aplicativo.
#EXPLANATION None.
#USERACTION None.

APPCLIENT_DD_PARSE_LINECOL=CHKJ1005E: O descritor de implementa\u00e7\u00e3o n\u00e3o foi carregado devido a um erro de sintaxe desconhecido. A se\u00e7\u00e3o inv\u00e1lida inicia na linha {0}, coluna {1}.
#EXPLANATION None.
#USERACTION None.

APPCLIENT_DD_PARSE_LINE=CHKJ1006E: O descritor de implementa\u00e7\u00e3o n\u00e3o p\u00f4de ser carregado devido a um erro de sintaxe desconhecido. A se\u00e7\u00e3o inv\u00e1lida inicia na linha {0}.
#EXPLANATION None.
#USERACTION None.

APPCLIENT_DD_PARSE_NOINFO=CHKJ1007E: O descritor de implementa\u00e7\u00e3o n\u00e3o p\u00f4de ser carregado devido a um erro de sintaxe desconhecido. N\u00e3o h\u00e1 informa\u00e7\u00f5es dispon\u00edveis para ajudar a identificar a se\u00e7\u00e3o inv\u00e1lida.
#EXPLANATION None.
#USERACTION None.

APPCLIENT_DD_CANNOT_OPEN_DD=CHKJ1008E: A valida\u00e7\u00e3o n\u00e3o pode ser conclu\u00edda porque o descritor de implementa\u00e7\u00e3o n\u00e3o pode ser aberto.
#EXPLANATION None.
#USERACTION None.

APPCLIENT_DUP_RES_ENV_REF_ERROR_=IWAE0002E Refer\u00eancia de ambiente de recurso duplicada "{0}" no application-client.xml.
#EXPLANATION None.
#USERACTION None.

APPCLIENT_INVALID_DOC_TYPE_ERROR_=IWAE0003E A vers\u00e3o do tipo do documento "{0}" para application-client.xml no projeto "{1}" precisa ter a vers\u00e3o "{2}".
#EXPLANATION None.
#USERACTION None.

APPCLIENT_DUP_EJB_REF_ERROR_=IWAE0004E Refer\u00eancia do bean corporativo "{0}" em duplicata no application-client.xml.
APPCLIENT_MAIN_CLASS_ERROR_=IWAE0035E O atributo Main-Class deve ser definido no m\u00f3dulo de cliente do aplicativo.
