###############################################################################
# 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 WAR 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/warvalidation.properties
# :End: WebSphere Quality Validation Information :End:
#

# 2-July-2001:
#  This file has been tested using the ProcessMsgFile tool, written by 
#  Hany Salem and owned by Dennis Hebert.  Any future changes should 
#  also be verified using this tool.  Please contact Dennis 
#  (hebert@us.ibm.com or T/L 543-2520) for more information.
#

# --------------------------------
ERROR_WAR_VALIDATION_FAILED=CHKJ3000E: Falha na Valida\u00e7\u00e3o de WAR: {0}
#EXPLANATION None.
#USERACTION None.


# --------------------------------
ERROR_EAR_DUPLICATE_ROLES=CHKJ1002E: Fun\u00e7\u00e3o de seguran\u00e7a duplicada nomeada {0}.
MESSAGE_WAR_VALIDATION_MISSING_JSP=CHKJ3001E: O arquivo JSP, {0}, para o servlet \"{1}\" est\u00e1 ausente.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_SMALL_ICON=CHKJ3002E: O arquivo <small-icon>, {0}, est\u00e1 ausente.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_LARGE_ICON=CHKJ3003E: O arquivo <large-icon>, {0}, est\u00e1 ausente.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_BROKEN_SERVLET_MAPPING=CHKJ3004W: O mapeamento de servlet \"{0}\" se refere a um servlet que n\u00e3o est\u00e1 definido.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_NO_WELCOME_FILE=CHKJ3005E: Entrada da lista de arquivos de bem-vindo vazia.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_MISSING_WELCOME_FILE=CHKJ3006E: O arquivo de bem-vindo {0} est\u00e1 ausente.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_MISSING_TLD=CHKJ3007E: O Arquivo Descritor da Biblioteca de Tags, {0}, est\u00e1 ausente.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_INVALID_WAR_FILE=CHKJ3008E: Arquivo WAR ausente ou inv\u00e1lido.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_BROKEN_FILTER_MAPPING=CHKJ3009E: O mapeamento de filtro, \"{0}\" se refere a um filtro que n\u00e3o est\u00e1 definido.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_WELCOME_FILE=CHKJ3010W: Os Arquivos de Bem-Vindo n\u00e3o podem come\u00e7ar ou terminar com um /.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
WAR_DD_PARSE_LINECOL=CHKJ1009E: Erro de An\u00e1lise: {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
WAR_DD_PARSE_LINE=CHKJ1010E: Erro de An\u00e1lise do Descritor de Implementa\u00e7\u00e3o.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
WAR_DD_PARSE_NOINFO=CHKJ1011E: Erro de An\u00e1lise do Descritor de Implementa\u00e7\u00e3o.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
WAR_DD_CANNOT_OPEN_DD=CHKJ1012E: N\u00e3o \u00e9 poss\u00edvel abrir o descritor de implementa\u00e7\u00e3o. A valida\u00e7\u00e3o n\u00e3o pode ser conclu\u00edda.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_URL=CHKJ3013E: O Mapeamento de URL \"{0}\" \u00e9 inv\u00e1lido.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_SEC_ROLE=CHKJ3014E: Link de Fun\u00e7\u00e3o de Seguran\u00e7a inv\u00e1lido: {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_HTTP_CMD=CHKJ3015E: M\u00e9todo HTTP inv\u00e1lido: {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_TRANSPORT=CHKJ3016E: Garantia de Transporte Inv\u00e1lida. Os valores v\u00e1lidos s\u00e3o \"NONE\", \"INTEGRAL\" ou \"CONFIDENTIAL\".

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_JSPFILE_REF=CHKJ3018E: O arquivo jsp \"{0}\" referido pelo servlet {1} deve ser um caminho absoluto completo.


# --------------------------------
ERROR_EAR_INVALID_CONTEXT_ROOT=CHKJ3017E: Projeto da Web: {0} est\u00e1 mapeado para uma raiz de Contexto inv\u00e1lida: {1} no Projeto EAR: {2}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_ERROR_PAGE=IWAE0001E CHKJ3019E: A Localiza\u00e7\u00e3o da P\u00e1gina de Erro Deve Come\u00e7ar com um /.
#EXPLANATION None.
#USERACTION None.

MESSAGE_WAR_VALIDATION_INVALID_SEC_ROLE_NAME=CHKJ3020E: Nome da fun\u00e7\u00e3o de Seguran\u00e7a inv\u00e1lido: {0}.
#EXPLANATION None.
#USERACTION None.

MESSAGE_WAR_VALIDATION_INVALID_AUTH_METHOD=CHKJ3021E: M\u00e9todo de autentica\u00e7\u00e3o inv\u00e1lido.  Os valores v\u00e1lidos s\u00e3o: \"BASIC\", \"DIGEST\", \"FORM\" ou \"CLIENT-CERT\".
#EXPLANATION None.
#USERACTION None.

MESSAGE_WAR_VALIDATION_IGNORE_FORM_LOGIN=CHKJ3022E:  O m\u00e9todo de autentica\u00e7\u00e3o \u00e9 {0}.  Os valores de configura\u00e7\u00e3o de login do formul\u00e1rio ser\u00e1 ignorado, a n\u00e3o ser que seja utilizado o m\u00e9todo de autentica\u00e7\u00e3o FORM.
#EXPLANATION None.
#USERACTION None.

MESSAGE_WAR_VALIDATION_RES_AUTH_REQUIRED_22=CHKJ3023E: A refer\u00eancia de recurso {0} deve conter res-auth "SERVLET" ou "CONTAINER".
MESSAGE_WAR_VALIDATION_RES_AUTH_REQUIRED_23=CHKJ3024E: A refer\u00eancia de recurso {0} deve conter res-auth "Application" ou "Container".
MESSAGE_WAR_VALIDATION_RES_AUTH_INVALID_22=CHKJ3025E:  \"Application\" n\u00e3o \u00e9 um valor v\u00e1lido para res-auth em um descritor de implementa\u00e7\u00e3o de n\u00edvel 2.2. Utilize \"SERVLET\".
MESSAGE_WAR_VALIDATION_RES_AUTH_INVALID_23=CHKJ3026E:  \"SERVLET\" n\u00e3o \u00e9 um valor v\u00e1lido para res-auth em um descritor de implementa\u00e7\u00e3o de n\u00edvel 2.2. Utilize \"Application\".

MESSAGE_WAR_VALIDATION_INVALID_EXCEPTION_TYPE=CHKJ3027E: Tipo de Exce\u00e7\u00e3o Inv\u00e1lido {0}. O tipo de exce\u00e7\u00e3o deve conter um nome de classe completo do tipo de exce\u00e7\u00e3o Java.
#EXPLANATION None.
#USERACTION None.



# --------------------------------
MESSAGE_WAR_VALIDATION_DUPLICATE_MAPPING=CHKJ4010W: Mapeamento de URL duplicado {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_DUPLICATE_SERVLET=CHKJ4011W: Entrada de Servlet Duplicada {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_SESSION_TIMEOUT=CHKJ4012W: O Tempo Limite de Session n\u00e3o \u00e9 v\u00e1lido.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_DUPLICATE_ENTRY=CHKJ4013W: Entrada Duplicada {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_EMPTY_ENTRY=CHKJ4014W: Entrada Vazia {0}.

# --------------------------------
MESSAGE_WAR_VALIDATION_DUPLICATE_FILTER=CHKJ4015W: Entrada de Filtro Duplicada {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_DUPLICATE_EJB_REF=CHKJ4016W: Elemento ejb-ref duplicado denominado {0}.
#EXPLANATION None.
#USERACTION None.

# This was missing.  It's defined in constants...
ERROR_EAR_UNCONTAINED_MODULE_FILE_EXCEPTION=CHKJ4017W: ERROR EAR UNCONTAINED MODULE FILE EXCEPTION

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_ERROR_CODE=IWAE0036E CHKJ4018W: C\u00f3digo de Erro Desconhecido: {0}.  O c\u00f3digo de erro deve conter um c\u00f3digo de status HTTP.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_RES_SHARING_SCOPE=CHKJ4019W: res-sharing-scope inv\u00e1lido; valores v\u00e1lidos s\u00e3o \"Shareable\" ou \"Unshareable\".
#USERACTION None.

MESSAGE_WAR_VALIDATION_INVALID_ENV_ENTRY=CHKJ4020W: Tipo de Entrada de Ambiente Inv\u00e1lido. Os valores v\u00e1lidos s\u00e3o \"java.lang.TYPE\", em que TYPE \u00e9 um dos seguintes: Boolean, Byte, Character, String, Short, Integer, Long, Float ou Double."
#USERACTION None.

MESSAGE_WAR_VALIDATION_MISSING_WLP_PROJECT=CHKJ4021W: Projeto da Biblioteca da Web Ausente ({0}).  Verifique as propriedades deste projeto para corrigir este problema.
MESSAGE_WAR_VALIDATION_CONFLICTING_WLP_PROJECT=CHKJ4022W: O JAR do projeto da Biblioteca da Web ({0}) conflita com um JAR real no diret\u00f3rio WEB-INF/lib.
MSG_SERVER_TARGET_MISMATCH=CHKJ4023W: O servidor de destino do Projeto de Biblioteca da Web ({1}) n\u00e3o corresponde a este Projeto da Web ({0}).  Execute a valida\u00e7\u00e3o no Projeto da Web se acreditar que esse n\u00e3o \u00e9 o caso.
MESSAGE_URL_PATTERN_END_WITH_CARRAIGE_RETURN=A cadeia de padr\u00e3o de URL "{0}" termina com um retorno de carro inv\u00e1lido para o servlet {1}

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_EJB_REF_TYPE=CHKJ4023W: ejb-ref-type deve ser 'Entity' ou 'Session'.
#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.

of_Type_Security_Role_Name_6=do Tipo Nome da Fun\u00e7\u00e3o de Seguran\u00e7a
Web_Archive_Validator_8=Validador de Archive da Web
of_Type_Role_Name_19=do Tipo Nome da Fun\u00e7\u00e3o
of_Type_Parameter_Name_25=do Tipo Nome do Par\u00e2metro
of_Type_Parameter_Value_26=do Tipo Valor do Par\u00e2metro
of_Type_Parameter_Name_32=do Tipo Nome do Par\u00e2metro
of_Type_Parameter_Value_33=do Tipo Valor do Par\u00e2metro
of_Type_Parameter_Name_39=do Tipo Nome do Par\u00e2metro
of_Type_Parameter_Value_40=do Tipo Valor do Par\u00e2metro
of_Type_ejb-ref-name_44=do Tipo ejb-ref-name
of_Type_Error_Location_47=do Tipo Localiza\u00e7\u00e3o do Erro
of_Type_Error_Location_49=do Tipo Localiza\u00e7\u00e3o do Erro
of_Type_Mime_Extension_54=Do Tipo Extens\u00e3o Mime
of_Type_Mime_Type_55=do Tipo Tipo de Mime
of_Type_Mime_Extension___56=do Tipo Extens\u00e3o Mime:
of_Type_Web_Resource_Collection_64=do Tipo Coleta de Recursos da Web
of_Type_Filter_Name_66=do Tipo Nome do Filtro
Invalid_URL_70=URL Inv\u00e1lido
Invalid_URL_75=URL Inv\u00e1lido
of_Type_Servlet_Name_77=do Tipo Nome do Servlet
of_Type_Taglib_80=do Tipo Taglib
of_Type_TagLib___81=do Tipo TagLib:
of_Type_Web_Resource_Name_84=do Tipo Nome do Recurso da Web
of_Type_Welcome_File_Name__87=do Tipo Nome do Arquivo Bem-vindo
of_Type_Env_Entry_Name___88=do Tipo Nome da Entrada do Ambiente
