###############################################################################
# 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: convalida WAR non riuscita: {0}
#EXPLANATION None.
#USERACTION None.


# --------------------------------
ERROR_EAR_DUPLICATE_ROLES=CHKJ1002E: ruolo di protezione duplicato con il nome {0}.
MESSAGE_WAR_VALIDATION_MISSING_JSP=CHKJ3001E: Impossibile trovare il file JSP, {0}, per servlet \"{1}\".
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_SMALL_ICON=CHKJ3002E: Impossibile trovare il file <small-icon>, {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_LARGE_ICON=CHKJ3003E: Impossibile trovare il file <large-icon>, {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_BROKEN_SERVLET_MAPPING=CHKJ3004W: L''associazione servlet \"{0}\" fa riferimento a un servlet non definito.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_NO_WELCOME_FILE=CHKJ3005E: Voce di riepilogo del file di benvenuto vuota.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_MISSING_WELCOME_FILE=CHKJ3006E: Impossibile trovare il file di benvenuto {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_MISSING_TLD=CHKJ3007E: Impossibile trovare il file del descrittore della libreria dei tag, {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_INVALID_WAR_FILE=CHKJ3008E: File WAR mancante o non valido.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_BROKEN_FILTER_MAPPING=CHKJ3009E: L''associazione del filtro \"{0}\" fa riferimento a un filtro non definito.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_WELCOME_FILE=CHKJ3010W: I file di benvenuto non possono iniziare o terminare con il carattere /.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
WAR_DD_PARSE_LINECOL=CHKJ1009E: Errore di analisi: {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
WAR_DD_PARSE_LINE=CHKJ1010E: Errore durante l'analisi del descrittore di distribuzione.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
WAR_DD_PARSE_NOINFO=CHKJ1011E: Errore durante l'analisi del descrittore di distribuzione.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
WAR_DD_CANNOT_OPEN_DD=CHKJ1012E: Impossibile aprire il descrittore di distribuzione. La convalida non pu\u00f2 essere completata.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_URL=CHKJ3013E: L''associazione URL \"{0}\" non \u00e8 valida.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_SEC_ROLE=CHKJ3014E: Collegamento al ruolo di protezione non valido: {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_HTTP_CMD=CHKJ3015E: Metodo HTTP non valido: {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_TRANSPORT=CHKJ3016E: Garanzia di trasporto non valida.  I valori validi sono \"NONE\", \"INTEGRAL\" o \"CONFIDENTIAL\".

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_JSPFILE_REF=CHKJ3018E: Il file jsp \"{0}\" richiamato dal servlet {1} deve essere un percorso assoluto completo.


# --------------------------------
ERROR_EAR_INVALID_CONTEXT_ROOT=CHKJ3017E: Il progetto Web: {0} \u00e8 associato a una cartella principale di contesto non valida: {1} nel progetto EAR: {2}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_ERROR_PAGE=IWAE0001E CHKJ3019E: Il percorso della pagina degli errori deve iniziare con il carattere /.
#EXPLANATION None.
#USERACTION None.

MESSAGE_WAR_VALIDATION_INVALID_SEC_ROLE_NAME=CHKJ3020E: Nome del ruolo di protezione non valido: {0}.
#EXPLANATION None.
#USERACTION None.

MESSAGE_WAR_VALIDATION_INVALID_AUTH_METHOD=CHKJ3021E: Metodo di autenticazione non valido.  I valori validi sono: \"BASIC\", \"DIGEST\", \"FORM\" o \"CLIENT-CERT\".
#EXPLANATION None.
#USERACTION None.

MESSAGE_WAR_VALIDATION_IGNORE_FORM_LOGIN=CHKJ3022E:  Il metodo di autenticazione \u00e8 {0}.  I valori form-login-config saranno ignorati a meno che non si utilizza il metodo di autenticazione FORM.
#EXPLANATION None.
#USERACTION None.

MESSAGE_WAR_VALIDATION_RES_AUTH_REQUIRED_22=CHKJ3023E:  Il riferimento risorsa {0} deve contenere res-auth di tipo "SERVLET" o "CONTAINER".
MESSAGE_WAR_VALIDATION_RES_AUTH_REQUIRED_23=CHKJ3024E:  Il riferimento risorsa {0} deve contenere res-auth di tipo "Application" o "Container".
MESSAGE_WAR_VALIDATION_RES_AUTH_INVALID_22=CHKJ3025E:  \"Application\" non \u00e8 un valore valido per res-auth in un descrittore di distribuzione di livello 2.2.  Utilizzare \"SERVLET\".
MESSAGE_WAR_VALIDATION_RES_AUTH_INVALID_23=CHKJ3026E:  \"SERVLET\" non \u00e8 un valore valido per res-auth in un descrittore di distribuzione di livello 2.2.  Utilizzare \"Application\".

MESSAGE_WAR_VALIDATION_INVALID_EXCEPTION_TYPE=CHKJ3027E: tipo di eccezione non valido {0}.  Il tipo di eccezione deve contenere un nome di classe completo di un tipo di eccezione Java.
#EXPLANATION None.
#USERACTION None.



# --------------------------------
MESSAGE_WAR_VALIDATION_DUPLICATE_MAPPING=CHKJ4010W: Associazione URL duplicata {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_DUPLICATE_SERVLET=CHKJ4011W: Voce servlet duplicata {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_SESSION_TIMEOUT=CHKJ4012W: Timeout di sessione non valido.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_DUPLICATE_ENTRY=CHKJ4013W: Voce duplicata {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_EMPTY_ENTRY=CHKJ4014W: Voce vuota {0}.

# --------------------------------
MESSAGE_WAR_VALIDATION_DUPLICATE_FILTER=CHKJ4015W: Voce filtro duplicata {0}.
#EXPLANATION None.
#USERACTION None.

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

# This was missing.  It's defined in constants...
ERROR_EAR_UNCONTAINED_MODULE_FILE_EXCEPTION=CHKJ4017W: ERRORE EAR. ECCEZIONE DI FILE DEL MODULO NON CONTENUTO

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_ERROR_CODE=IWAE0036E CHKJ4018W: Codice di errore sconosciuto: {0}.  Il codice di errore deve contenere un codice di stato HTTP valido.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_RES_SHARING_SCOPE=CHKJ4019W: Ambito di condivisione risorse non valido. I valori validi sono \"Condivisibile\" o \"Non condivisibile\".
#USERACTION None.

MESSAGE_WAR_VALIDATION_INVALID_ENV_ENTRY=CHKJ4020W: Tipo di ambiente non valido. I valori validi sono \"java.lang.TYPE\", in cui il TIPO \u00e8 uno dei seguenti: Booleano, Byte, Carattere, Stringa, Abbreviato, Intero, Lungo, Float o Doppio".
#USERACTION None.

MESSAGE_WAR_VALIDATION_MISSING_WLP_PROJECT=CHKJ4021W: Progetto libreria Web ({0}) mancante.  Controllare le propriet\u00e0 del progetto per correggere questo problema.
MESSAGE_WAR_VALIDATION_CONFLICTING_WLP_PROJECT=CHKJ4022W: Il JAR ({0}) del progetto libreria Web \u00e8 in conflitto con un JAR effettivo che si trova nella directory WEB-INF/lib.
MSG_SERVER_TARGET_MISMATCH=CHKJ4023W: il server di destinazione del progetto libreria Web ({1}) non corrisponde al server di questo progetto Web ({0}).  Se non si \u00e8 certi di questa condizione, eseguire la convalida del progetto Web.
MESSAGE_URL_PATTERN_END_WITH_CARRAIGE_RETURN=La stringa del modello URL "{0}" termina con un ritorno a capo non valido per il servlet {1}

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_EJB_REF_TYPE=CHKJ4023W: ejb-ref-type deve essere  'Entit\u00e0' o 'Sessione'.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_MISSING_EJB_ROLE=CHKJ2827W: l'elemento ''security-role-ref'' {0} definisce l'elemento ''role-link'' ma non gli elementi ''security-role'' nel descrittore dell'applicazione.
#EXPLANATION None.
#USERACTION None.

of_Type_Security_Role_Name_6=di tipo nome ruolo di protezione
Web_Archive_Validator_8=Validator archivio Web
of_Type_Role_Name_19=di tipo nome ruolo
of_Type_Parameter_Name_25=di tipo nome parametro
of_Type_Parameter_Value_26=di tipo valore parametro
of_Type_Parameter_Name_32=di tipo nome parametro
of_Type_Parameter_Value_33=di tipo valore parametro
of_Type_Parameter_Name_39=di tipo nome parametro
of_Type_Parameter_Value_40=di tipo valore parametro
of_Type_ejb-ref-name_44=di tipo nome riferimento ejb
of_Type_Error_Location_47=di tipo posizione errori
of_Type_Error_Location_49=di tipo posizione errori
of_Type_Mime_Extension_54=di tipo estensione mime
of_Type_Mime_Type_55=di tipo tipo mime
of_Type_Mime_Extension___56=di tipo estensione mime:
of_Type_Web_Resource_Collection_64=di tipo insieme di risorse Web
of_Type_Filter_Name_66=di tipo nome filtro
Invalid_URL_70=URL non valido
Invalid_URL_75=URL non valido
of_Type_Servlet_Name_77=di tipo nome servlet
of_Type_Taglib_80=di tipo taglib
of_Type_TagLib___81=di tipo taglib:
of_Type_Web_Resource_Name_84=di tipo nome risorsa Web
of_Type_Welcome_File_Name__87=di tipo nome file di benvenuto
of_Type_Env_Entry_Name___88=di tipo nome ambiente
