###############################################################################
# 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 hold all the externalised strings for eTools J2EE Validation project
# Validation project
#
# Messages should be according to the format at:
#     http://hany.austin.ibm.com/messages/index.html
#
# Briefly:
#     MESSAGE_ID=<ComponentPrefix><MessageNumber><TypeCode>: <MessageText>
#
# The prefix for this component is:
#     CHKJ (IBM WebSphere Validation)
#
# Note the ": " that appears between the type code and the message text.
#
# :Begin: WebSphere Quality Validation Information :Begin:
#COMPONENTPREFIX CHKJ
#COMPONENTNAMEFOR CHKJ IBM WebSphere Validation
#CMVCPATHNAME ncf/src/java/com/ibm/websphere/validation/erefvalidation.properties
# :End: WebSphere Quality Validation Information :End:
#
# 14-October-2001:
#

# --------------------------------
ERROR_EAR_MISSING_EREFNAME=CHKJ3009E: No m\u00f3dulo {1}, o elemento ''ejb-ref-name'' de ejb-ref: {0} \u00e9 inv\u00e1lido.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_INVALID_EREFTYPE=CHKJ3010E: No m\u00f3dulo {1}, o elemento ''ejb-ref-type'' de ejb-ref: {0} \u00e9 inv\u00e1lido.
#EXPLANATION None.
#USERACTION None.

ERROR_EAR_MISSING_EREFTYPE=CHKJ3014E: No m\u00f3dulo {1}, o elemento ''ejb-ref-type'' de ejb-ref: {0} est\u00e1 faltando.


# --------------------------------
ERROR_EAR_MISSING_EREFHOME=CHKJ3011E: No m\u00f3dulo {1}, a interface Posi\u00e7\u00e3o Inicial est\u00e1 faltando no elemento {0} de ejb-ref.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_MISSING_EREFREMOTE=CHKJ3012E: No m\u00f3dulo {1}, a interface Remota est\u00e1 faltando no elemento {0} de ejb-ref.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_MISSING_EJB_ROLE=CHKJ2827W: O elemento {0} do ''security-role-ref'' define elemento ''role-link'', por\u00e9m, n\u00e3o h\u00e1 elementos do ''security-role'' no descritor do aplicativo.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_DUPLICATE_RESREF=CHKJ3013E: O elemento do ''resource-ref'' , nomeado {0}, est\u00e1 duplicado.
#EXPLANATION None.
#USERACTION None.

# new string added for version 5 WSAD
UNRESOLVED_EJB_REF_WARN_=IWAE0034W O elemento link do EJB {0} n\u00e3o pode ser resolvido no m\u00f3dulo {1} e EAR {2}.

ERROR_EAR_DUPLICATE_SERVICEREF=CHKJ3015E: Elemento ''service-ref'' denominado {0} duplicado.
ERROR_EAR_DUPLICATE_SECURITYROLEREF=CHKJ3016E: Elemento ''security role-ref'' denominado {0} duplicado.
ERROR_EAR_DUPLICATE_EJBREF=CHKJ3017E: Elemento ''ejb-ref'' denominado {0} duplicado.
ERROR_EAR_DUPLICATE_RESENVREF=CHKJ3018E: Elemento ''resource environment-ref'' denominado {0} duplicado.
ERROR_EAR_DUPLICATE_MESSSAGEDESTINATIONREF=CHKJ3019E: Elemento ''message destination-ref'' denominado {0} duplicado.




