###############################################################################
# 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 Le marqueur ne peut pas \u00eatre ajout\u00e9 \u00e0 la ressource {0} dans la liste des t\u00e2ches.
VBF_EXC_CANNOT_REMOVE_MARKER=IWAE0002E Le marqueur ne peut pas \u00eatre supprim\u00e9 de la ressource {0} dans la liste des t\u00e2ches.

VBF_EXC_HELPER_MISSING=IWAE0003E Impossible de charger {0} car il n''a pas sp\u00e9cifi\u00e9 d''\u00e9l\u00e9ment <helper>. Chaque valideur doit identifier la classe helper qui charge son mod\u00e8le MOF.
VBF_EXC_HELPER_CANNOTLOAD=IWAE0004E Impossible de charger {0} car son \u00e9l\u00e9ment <helper>, {1}, n''a pas pu \u00eatre charg\u00e9. V\u00e9rifiez que le nom du fichier est correctement orthographi\u00e9 et que la casse est respect\u00e9e.

VBF_EXC_INTERNAL=IWAE0005E Une erreur interne est survenue lors de la validation. La validation \u00e9tait en cours d''ex\u00e9cution sur le projet {0} avec le valideur {1}. Message g\u00e9n\u00e9r\u00e9 : {2}.

# 2TC: In the following string, "type" is a noun
VBF_EXC_INVALID_TYPE_FILTER=IWAE0006E Type de filtre non valide ; {0} doit \u00eatre une instance de {1}.
VBF_EXC_INVALID_RESOURCE=IWAE0007E Impossible d''ajouter le message "{0}" avec l''objet cible "{1}" car aucun fichier, dossier ou projet auquel le message doit \u00eatre associ\u00e9 n''a \u00e9t\u00e9 trouv\u00e9.

VBF_EXC_MISSING_VALIDATOR_EP=IWAE0008E La structure du valideur n''a pas pu \u00eatre d\u00e9marr\u00e9e. Le point d''extension \"{0}\" est introuvable. Sauvegardez tous les fichiers journaux, puis adressez-vous \u00e0 votre repr\u00e9sentant IBM.
VBF_EXC_MISSING_PROJECTNATURE_ID=IWAE0009E Une nature de projet doit \u00eatre associ\u00e9e \u00e0 un ID. La validation ignore cette balise et se poursuit.

VBF_EXC_RUNTIME=IWAE0010E Exception d''ex\u00e9cution {0} lors de la validation. Valideur ex\u00e9cut\u00e9 : {1} ; message g\u00e9n\u00e9r\u00e9 : {2}.

VBF_EXC_SYNTAX_NULL_NAME=IWAE0011E La ressource {0} ne peut pas \u00eatre ajout\u00e9e \u00e0 la liste des fichiers car IHelper.getPortableName() renvoie NULL. Cette ressource ne sera pas valid\u00e9e par le valideur {1}.
VBF_EXC_SYNTAX_NO_HELPER=IWAE0012E Aucun \u00e9l\u00e9ment <helper> n''est sp\u00e9cifi\u00e9 dans le fichier plugin.xml du valideur {0}. L''auxiliaire ne pouvant pas \u00eatre cr\u00e9\u00e9, le valideur ne sera pas charg\u00e9.
VBF_EXC_SYNTAX_NO_HELPER_CLASS=IWAE0013E Aucun attribut "class" de l''\u00e9l\u00e9ment <helper> n''est sp\u00e9cifi\u00e9 dans le fichier plugin.xml du valideur {0}. L''auxiliaire ne peut pas \u00eatre cr\u00e9\u00e9 sans le nom de la classe qui l'impl\u00e9mente. L''auxiliaire ne pouvant pas \u00eatre cr\u00e9\u00e9, le valideur ne sera pas charg\u00e9.
VBF_EXC_SYNTAX_NO_HELPER_THROWABLE=IWAE0014E L''auxiliaire {0} ne peut pas \u00eatre cr\u00e9\u00e9 car une exception Throwable a \u00e9t\u00e9 d\u00e9tect\u00e9e.
VBF_EXC_SYNTAX_NO_VAL_RUN=IWAE0015E Le valideur ne peut pas \u00eatre cr\u00e9\u00e9 car aucun \u00e9l\u00e9ment <run> n''est sp\u00e9cifi\u00e9 dans le fichier plugin.xml du valideur {0}. Impossible de cr\u00e9er un valideur s'il n'existe pas d''\u00e9l\u00e9ment <run> qui sp\u00e9cifie l''attribut "class". La valeur de l''attribut "class" doit correspondre au nom de la classe qui impl\u00e9mente l''interface IWorkbenchHelper.
VBF_EXC_SYNTAX_NO_VAL_CLASS=IWAE0016E Le valideur ne peut pas \u00eatre cr\u00e9\u00e9 car aucun attribut "class" n''est sp\u00e9cifi\u00e9 dans l''\u00e9l\u00e9ment <run> du fichier plugin.xml du valideur {0}. Impossible de cr\u00e9er un valideur s'il n'existe pas d''\u00e9l\u00e9ment <run> qui sp\u00e9cifie l''attribut "class". La valeur de l''attribut "class" doit correspondre au nom de la classe qui impl\u00e9mente l''interface IWorkbenchHelper.
VBF_EXC_SYNTAX_NO_VAL_THROWABLE=IWAE0017E Impossible de cr\u00e9er le valideur {0} car une exception Throwable a \u00e9t\u00e9 d\u00e9tect\u00e9e.
VBF_EXC_SYNTAX_NO_VAL_NULL=IWAE0018E La classe de valideur {0} n''a pas pu \u00eatre cr\u00e9\u00e9e. IConfigurationElement.createExecutableExtension(String) a renvoy\u00e9 NULL.

VBF_EXC_DISABLEV=IWAE0019E Impossible d''instancier le valideur {0}. D\u00e9sactivation du valideur ; consultez le journal pour plus de d\u00e9tails.
VBF_EXC_DISABLEH=IWAE0020E Impossible d''instancier l''auxiliaire {0}. D\u00e9sactivation du valideur {1} ; consultez le journal pour plus de d\u00e9tails.
VBF_EXC_ORPHAN_IVALIDATOR=IWAE0021E M\u00e9tadonn\u00e9es du valideur {0} introuvables.

VBF_EXC_VALIDATORNAME_IS_NULL=IWAE0022E Le plug-in dont l''ID est {0} a \u00e9t\u00e9 d\u00e9sactiv\u00e9 car sa m\u00e9thode getName() a renvoy\u00e9 NULL. Cette m\u00e9thode doit renvoyer une valeur.

VBF_EXC_NULLCREATE=IWAE0023E Impossible de cr\u00e9er une configuration de validation sur une ressource NULL.
VBF_EXC_NULLSAVE=IWAE0024E Impossible de sauvegarder une configuration de validation sur une ressource NULL.
VBF_EXC_SAVE=IWAE0025E Impossible de sauvegarder la configuration de validation sur la ressource {0}.
VBF_EXC_NULLRETRIEVE=IWAE0026E Impossible d'extraire la configuration de validation car la ressource est NULL.
VBF_EXC_RETRIEVE=IWAE0027E Impossible d''extraire la configuration de validation de la ressource {0}.

VBF_EXC_BADVMD=IWAE0028E ValidatorMetaData[] ne doit pas \u00eatre NULL ou vide.
VBF_EXC_OPENPRJ=IWAE0029E Le projet {0} doit \u00eatre ouvert.
VBF_EXC_EXISTPRJ=IWAE0030E Le projet {0} doit exister.
VBF_EXC_BADPRJ=IWAE0031E Le projet {0} doit correspondre au projet qui contient les ressources dans IResource[].
VBF_EXC_MULTIPRJ=IWAE0032E Toutes les instances IResource d''IResource[] doivent appartenir \u00e0 la m\u00eame instance IProject. Les ressources proviennent des projets suivants : {0}.
VBF_EXC_BADVAL=IWAE0033E Le valideur {0} doit \u00eatre configur\u00e9 sur {1} ;

VBF_STATUS_INITIALIZING=Initialisation de {0}.

VBF_STATUS_VALIDATOR_CLEANUP=Nettoyage sur {0} avant arr\u00eat.

VBF_STATUS_PROGRESSMONITOR_TITLE=Validation
VBF_STATUS_NULL_DELTA=Le dernier \u00e9tat de compilation de {0} n''a pas pu \u00eatre extrait. Validation int\u00e9grale en cours.

VBF_STATUS_VALIDATOR_TERMINATED=La validation de {0} \u00e0 l''aide de {1} a \u00e9t\u00e9 annul\u00e9e.

VBF_STATUS_START_REMOVING_OLD_MESSAGES=La suppression des messages {0} sur {1} a commenc\u00e9...
VBF_STATUS_FINISH_REMOVING_OLD_MESSAGES=Messages supprim\u00e9s.

VBF_STATUS_STARTING_VALIDATION=La validation de {0} par {1} a commenc\u00e9...
VBF_STATUS_ENDING_VALIDATION=La validation de {0} par {1} est termin\u00e9e. Tous les incidents recens\u00e9s ont \u00e9t\u00e9 signal\u00e9s.
VBF_STATUS_ENDING_VALIDATION_ABNORMALLY=La validation de {0} par {1} ne s''est pas termin\u00e9e correctement. La liste des incidents est peut-\u00eatre incompl\u00e8te. Recherchez le motif de cette fin anormale dans les messages d'information.

VBF_STATUS_LOOKING=Recherche des messages de validation des valideurs d\u00e9sinstall\u00e9s...
VBF_STATUS_LOOKINGDONE=Recherche des messages de validation des valideurs d\u00e9sinstall\u00e9s...termin\u00e9e.
VBF_STATUS_REMOVING=Suppression des messages de validation des valideurs d\u00e9sinstall\u00e9s...
VBF_STATUS_REMOVINGDONE=Suppression des messages de validation des valideurs d\u00e9sinstall\u00e9s...termin\u00e9e.

# The following message will be deleted soon.
VBF_TASK_WARN_MESSAGE_LIMIT_ABORT=IWAE0034W IWAD3000I: {1} a termin\u00e9 la validation de {0} car le nombre maximal de messages a \u00e9t\u00e9 signal\u00e9. Certains messages sont peut-\u00eatre manquants.

VBF_TASK_WARN_MESSAGE_LIMIT_VAL=IWAE0035W IWAD3000I: Certains messages peuvent \u00eatre manquants car le nombre de messages signal\u00e9s a atteint la limite admise. Augmentez le nombre maximal de messages autoris\u00e9s, puis recommencez.

#
# End Validation Builder Framework Strings
#

