#-------------------------------------------------------------------------------
# Copyright (c) 2000, 2007 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 implementation.
#-------------------------------------------------------------------------------
# NLS_MESSAGEFORMAT_VAR
#
# Message ID Range: IUPP0000E - IUPP0099E
#

# Progress Messages
publishingConfigurationTask_name=Publication de la configuration...
initializingDirTask_name=Initialisation du r\u00e9pertoire de destination...
copyingFilesTask_name=Copie des fichiers en cours...
generatingBookmarksTask_name=G\u00e9n\u00e9ration des signets...
generatingBookmarkTask_name=G\u00e9n\u00e9ration du signet ''{0}''...
generatingBookmarkIndexTask_name=G\u00e9n\u00e9ration de l'index du signet...
publishingLinkedElementTask_name=Publication des \u00e9l\u00e9ments de m\u00e9thode : {0} publi\u00e9(s), {1} restant(s)
publishingElementTask_name=Publication de l''\u00e9l\u00e9ment de m\u00e9thode : {0} : {1}
generatingGlossaryTask_name=G\u00e9n\u00e9ration du glossaire...
generatingSearchIndexTask_name=G\u00e9n\u00e9ration de l'index de l'aide...
generatingWARFileTask_name=G\u00e9n\u00e9ration du fichier WAR...
buildingProcessClosureTask_name=G\u00e9n\u00e9ration de la fermeture du processus...
buildingElementClosureTask_name=G\u00e9n\u00e9ration de la fermeture de l''\u00e9l\u00e9ment pour ''{0}''...
loadLibraryTask_name=Chargement du contenu de la biblioth\u00e8que...

# Error Messages logged in the Publishing Report
publishElementError_msg=IUPP0000E : Erreur de publication de l''\u00e9l\u00e9ment : {0}
serverError_msg=IUPP0001E : Aucune donn\u00e9e renvoy\u00e9e par le serveur.
invalidHttpResponseError_msg=IUPP0002E : R\u00e9ponse non valide de http://{0}:{1}:{2}

# Warning Messages logged in the Publishing Report
invalidElementWarning_msg=IUPP0003W : L'\u00e9l\u00e9ment n'a pas \u00e9t\u00e9 publi\u00e9 car il n'est pas un \u00e9l\u00e9ment valide de la configuration.
invalidMethodElementWarning_msg=IUPP0004W : L''\u00e9l\u00e9ment n''a pas \u00e9t\u00e9 publi\u00e9 car il n''est pas un \u00e9l\u00e9ment de m\u00e9thode : {0}
copyFileWarning_msg=IUPP0005W : Impossible de copier le fichier de ''{0}'' vers ''{1}''.
missingIconFileWarning_msg=IUPP0006W : Le fichier d''ic\u00f4ne de noeud ''{0}'' n''existe pas.
missingIconNameWarning_msg=IUPP0007W : Impossible de r\u00e9cup\u00e9rer le nom de l'ic\u00f4ne de noeud.
externalUrl_msg={0} millisecondes de r\u00e9f\u00e9rencement \u00e0 l''URL externe : {1}
discaredCategoryWarning_msg=Videz l'\u00e9l\u00e9ment de cat\u00e9gorie de contenu non publi\u00e9.

# Error Details
createSearchIndexError_msg=IUPP0008E : L'index de l'aide n'a pas \u00e9t\u00e9 cr\u00e9\u00e9.

# Process Tree Nodes
referenceWorkflowsNode_text=Encha\u00eenements d'activit\u00e9s de r\u00e9f\u00e9rence
taskNode_text=T\u00e2ches
primarilyPerformsNode_text=Effectue principalement
additionallyPerformsNode_text=Effectue \u00e9galement
performingRolesNode_text=Ex\u00e9cution des r\u00f4les
inputWorkProductsNode_text=Produits d'entr\u00e9e
outputWorkProductsNode_text=Produits de sortie
responsibleForNode_text=Responsable de
modifiesNode_text=Modifie
responsibleRoleNode_text=R\u00f4le responsable
containingWorkProductNode_text=Produit contenant
containedWorkProductsNode_text=Produits contenus
guidanceNode_text=Conseil
inputToNode_text=Entr\u00e9e vers
outputFromNode_text=Sortie de

# HTML Title for Index Page
indexLabel_text=Index
