###############################################################################
# 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
###############################################################################
# To avoid name collisions, each extension point should preface their property names with an identifier.
#
#     *************************************************************************
#     * Code oriented instructions:
#     *
#     * In the string, you may see the following special sequences:
#     * a) {n}  where n is a number. These are replaceable parameters.
#     * b) ''  In .properties files, in order to see one apostrophe (') in the final
#     *    string, sometimes two apostrophes must be entered in the string. In the translated
#     *    string, if there is at least one {n} in the string, then to show one apostrophe
#     *    to the user, put two apostrophes in the string. If there are no {n} in the string,
#     *    then put one apostrophe.
#     *    For example, say that you want the user to read "George's file". 
#     *        GEORGE=George's file was on the desk.
#     *        GEORGE2=George''s file and {0} were on the desk.
#     *    GEORGE uses one apostrophe because there are no {n} and GEORGE2
#     *    uses two apostrophes because there is a {n}.
#     * c) '' text '' where text can be any word(s). The text between the double
#     *    apostrophes should not be translated. 
#     * d) <text> where text can be any word(s). The text between the angle
#     *    brackets should NOT be translated.
#     * e) "text" where text can be any word(s). The text between the quotation 
#     *    marks should NOT be translated.
#     *    
#     *************************************************************************
#     * Other instructions
#     * a) Do not translate any text that is on a line which begins with a comment 
#     *    symbol (#).
#     * b) Do not translate these words: 
#     *        schema, EJB, RDB, JAR, RMI, BMP, CMP, OOSQL
#     * c) Please return the .properties files using the same directory structure.
#     *    This is necessary because two of the files have the same name.
#     *
#     *************************************************************************
# Any other comments to the translators are on lines which start like this:  # 2TC:
#
# Version 1.14
#
#
# ID:
#    VBF - Validation Builder Framework
#       VBF_EXC=Exception or error text
#       VBF_STATUS=Status message
#       VBF_TASK=Task list message
#

# 
# Begin Validation Builder Framework Strings
#
# IDs:
#    VBF_EXC=Exception or error text
#    VBF_STATUS=Status message
#    VBF_TASK=Task list message
#
VBF_EXC_CANNOT_ADD_MARKER=IWAE0001E L''indicatore non pu\u00f2 essere aggiunto alla risorsa {0} nell''elenco attivit\u00e0.
VBF_EXC_CANNOT_REMOVE_MARKER=IWAE0002E L''indicatore non pu\u00f2 essere rimosso dalla risorsa {0} nell''elenco attivit\u00e0.

VBF_EXC_HELPER_MISSING=IWAE0003E Impossibile caricare {0}. Non \u00e8 stato specificato alcun <helper>. Ciascun validator deve identificare la classe helper che carica il modello MOF.
VBF_EXC_HELPER_CANNOTLOAD=IWAE0004E Impossibile caricare {0}. L''<helper>, {1}, non pu\u00f2 essere caricato. Verificare che il nome, che segue la distinzione maiuscolo/minuscolo, sia specificato correttamente.

VBF_EXC_INTERNAL=IWAE0005E Errore interno durante la convalida. La convalida era in corso sul progetto {0} con il validator {1}. Il messaggio attivato era {2}.

# 2TC: In the following string, "type" is a noun
VBF_EXC_INVALID_TYPE_FILTER=IWAE0006E Filtro di tipo non valido; {0} deve essere un''istanza di {1}.
VBF_EXC_INVALID_RESOURCE=IWAE0007E Il messaggio "{0}" non pu\u00f2 essere aggiunto con l''oggetto di destinazione "{1}". Impossibile trovare file, cartelle o progetti con cui associare il messaggio.

VBF_EXC_MISSING_VALIDATOR_EP=IWAE0008E Impossibile avviare la struttura del validator. Non \u00e8 stato possibile individuare il punto di estensione \"{0}\". Salvare tutti i file di log e contattare il rappresentante IBM.
VBF_EXC_MISSING_PROJECTNATURE_ID=IWAE0009E projectNature deve essere associato a un ID. La convalida ignora questo tag e continua.

VBF_EXC_RUNTIME=IWAE0010E Eccezione run-time {0} durante la convalida. Il validator in corso di esecuzione era {1} e il messaggio generato era {2}.

VBF_EXC_SYNTAX_NULL_NAME=IWAE0011E Impossibile aggiungere la risorsa {0} all''elenco dei file. IHelper.getPortableName() restituisce null. Questa risorsa non sar\u00e0 convalidata dal validator {1}.
VBF_EXC_SYNTAX_NO_HELPER=IWAE0012E Non \u00e8 stato specificato alcun <helper> nel file plugin.xml per il validator {0}. Dal momento che l''helper non pu\u00f2 essere creato, il validator non verr\u00e0 caricato.
VBF_EXC_SYNTAX_NO_HELPER_CLASS=IWAE0013E Non \u00e8 stato specificato alcun attributo "class" nell''elemento <helper> nel file plugin.xml per il validator {0}. Impossibile creare l''helper senza il nome della classe che lo implementa. Dal momento che l''helper non pu\u00f2 essere creato, il validator non verr\u00e0 caricato.
VBF_EXC_SYNTAX_NO_HELPER_THROWABLE=IWAE0014E Impossibile creare l''helper {0} perch\u00e9 \u00e8 stata rilevata un''eccezione Throwable.
VBF_EXC_SYNTAX_NO_VAL_RUN=IWAE0015E Impossibile creare il validator. Non \u00e8 stato specificato alcun elemento <run> nel file plugin.xml per il validator {0}. Impossibile creare un validator a meno che non esiste un elemento <run> che specifichi l''attributo "class". Il valore dell''attributo "class" deve corrispondere al nome della classe che implementa l''interfaccia IWorkbenchHelper.
VBF_EXC_SYNTAX_NO_VAL_CLASS=IWAE0016E Impossibile creare il validator. Non \u00e8 stato specificato alcun attributo "class" nell''elemento <run> del file plugin.xml per il validator {0}. Impossibile creare un validator a meno che non esiste un elemento <run> che specifichi l''attributo "class". Il valore dell''attributo "class" deve corrispondere al nome della classe che implementa l''interfaccia IWorkbenchHelper.
VBF_EXC_SYNTAX_NO_VAL_THROWABLE=IWAE0017E Impossibile creare un validator {0}. \u00c8 stato rilevato un Throwable.
VBF_EXC_SYNTAX_NO_VAL_NULL=IWAE0018E Impossibile creare la classe {0} del validator. IConfigurationElement.createExecutableExtension(String) ha restituito null.

VBF_EXC_DISABLEV=IWAE0019E Impossibile creare l''istanza del validator {0}. Disabilitazione del validator in corso; leggere il log per i dettagli.
VBF_EXC_DISABLEH=IWAE0020E Impossibile creare l''istanza dell''helper {0}. Disabilitazione del validator {1} in corso; leggere il log per i dettagli.
VBF_EXC_ORPHAN_IVALIDATOR=IWAE0021E Impossibile rilevare i metadati del validator {0}.

VBF_EXC_VALIDATORNAME_IS_NULL=IWAE0022E Il plugin con ID {0} \u00e8 stato disattivato. Il suo metodo getName() restituisce null. Il metodo deve restituire un valore.

VBF_EXC_NULLCREATE=IWAE0023E Impossibile creare una configurazione di convalida su una risorsa null.
VBF_EXC_NULLSAVE=IWAE0024E Impossibile salvare una configurazione di convalida su una risorsa null.
VBF_EXC_SAVE=IWAE0025E Impossibile salvare la configurazione di convalida per la risorsa {0}.
VBF_EXC_NULLRETRIEVE=IWAE0026E Impossibile richiamare la configurazione di convalida perch\u00e9 la risorsa \u00e8 null.
VBF_EXC_RETRIEVE=IWAE0027E Impossibile richiamare la configurazione di convalida per la risorsa {0}.

VBF_EXC_BADVMD=IWAE0028E ValidatorMetaData[] non deve essere null o vuoto.
VBF_EXC_OPENPRJ=IWAE0029E Il progetto {0} deve essere aperto.
VBF_EXC_EXISTPRJ=IWAE0030E Il progetto {0} deve esistere.
VBF_EXC_BADPRJ=IWAE0031E Il progetto {0} deve contenere le risorse in IResource[].
VBF_EXC_MULTIPRJ=IWAE0032E Tutte le istanze IResource in IResource[] devono appartenere alla stessa instanza IProject. La risorsa viene dai seguenti progetti: {0}.
VBF_EXC_BADVAL=IWAE0033E Il validator {0} deve essere configurato su {1};

VBF_STATUS_INITIALIZING=Inizializzazione di {0}.

VBF_STATUS_VALIDATOR_CLEANUP=Esecuzione pulitura su {0} prima della terminazione.

VBF_STATUS_PROGRESSMONITOR_TITLE=Convalida in corso
VBF_STATUS_NULL_DELTA=\u00c8 impossibile recuperare l''ultimo stato di generazione di {0}. Esecuzione di una operazione di convalida completa.

VBF_STATUS_VALIDATOR_TERMINATED=La convalida di {0} mediante {1} \u00e8 stata annullata.

VBF_STATUS_START_REMOVING_OLD_MESSAGES=L''eliminazione di {0} messaggi mediante {1} \u00e8 stata avviata...
VBF_STATUS_FINISH_REMOVING_OLD_MESSAGES=Messaggi eliminati.

VBF_STATUS_STARTING_VALIDATION=La convalida di {0} mediante {1} \u00e8 stata avviata...
VBF_STATUS_ENDING_VALIDATION=La convalida di {0} mediante {1} \u00e8 completa. \u00c8 stato creato un prospetto di tutti i problemi noti.
VBF_STATUS_ENDING_VALIDATION_ABNORMALLY=La convalida di {0} mediante {1} \u00e8 terminata in modo anomalo. L''elenco dei problemi potrebbe essere incompleto. Controllare i messaggi di informazione per individuare la causa della terminazione anomala.

VBF_STATUS_LOOKING=Ricerca di messaggi di convalida dei validator disinstallati...
VBF_STATUS_LOOKINGDONE=Ricerca di messaggi di convalida dei validator disinstallati...eseguito.
VBF_STATUS_REMOVING=Rimozione dei messaggi di convalida dei validator disinstallati...
VBF_STATUS_REMOVINGDONE=Rimozione dei messaggi di convalida dei validator disinstallati...eseguito.

# The following message will be deleted soon.
VBF_TASK_WARN_MESSAGE_LIMIT_ABORT=IWAE0034W IWAD3000I: {1} ha interrotto la convalida di {0} poich\u00e9 \u00e8 stato rilevato il numero massimo di messaggi. Alcuni messaggi potrebbero mancare.

VBF_TASK_WARN_MESSAGE_LIMIT_VAL=IWAE0035W IWAD3000I: Raggiunto il numero massimo di messaggi visualizzabili. Aumentare il numero massimo di messaggi e provare nuovamente.

#
# End Validation Builder Framework Strings
#

