#-------------------------------------------------------------------------------
# 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

# Export Microsoft Project Wizard
exportMSPWizard_title=Exporter un projet de Microsoft Project

# Select Export Options Wizard Page
selectExportOptionsWizardPage_title=S\u00e9lectionner les options d'exportation
selectExportOptionsWizardPage_text=S\u00e9lectionnez la m\u00e9thode de configuration et les options d'exportation \u00e0 utiliser pour exporter le processus choisi.
selectedProcessLabel_text=Processus s\u00e9lectionn\u00e9 :
configurationLabel_text=Configuration de m\u00e9thode :
publishWebSiteCheckBox_text=Publier le site Web de processus
publishConfigButton_text=Publier la m\u00e9thode de configuration enti\u00e8re
publishProcessButton_text=Publier uniquement le contenu en rapport avec le processus s\u00e9lectionn\u00e9
exportOnlyPlannedElementsCheckBox_text=Exportez uniquement les \u00e9l\u00e9ments de r\u00e9partition qui sont planifi\u00e9s

# Select Publishing Options Wizard Page
selectPublishOptionsWizardPage_title=S\u00e9lectionner les options de publication
selectPublishOptionsWizardPage_text=S\u00e9lectionnez les options de publication qui seront utilis\u00e9es pour publier le site Web pour le processus export\u00e9.

# Select Export Directory Wizard page
selectExportDirWizardPage_title=Sp\u00e9cifier le nom du projet et le r\u00e9pertoire d'exportation
selectExportDirWizardPage_text=Sp\u00e9cifiez le nom du projet Microsoft et le r\u00e9pertoire d'exportation.
projectNameLabel_text=Nom :
dirLabel_text=R\u00e9pertoire :
browseButton_text=Parcourir...

# Progress Messages
exportMSPTask_name=Exportation du processus s\u00e9lectionn\u00e9 vers Microsoft Project...

# Warning Messages
overwriteText_msg=IUPM0100W : Un projet Microsoft ''{0}'' existe d\u00e9j\u00e0 dans ''{1}''.\n\nVoulez-vous l''\u00e9craser ?
missingProcessContentWarning_msg=IUPM0102W: Le site Web du processus publi\u00e9 ne contiendra aucun contenu li\u00e9 au processus export\u00e9.\n\nVoulez-vous continuer ?

# Informational Messages
completedText_msg=IUPM0103I : Le processus s\u00e9lectionn\u00e9 ''{0}'' a \u00e9t\u00e9 correctement export\u00e9 dans le fichier XML ''{1}'' de Microsoft Project.

# Error Messages
exportMSPError_msg=IUPM0105E : Une erreur s''est produite lors de l''exportation du processus s\u00e9lectionn\u00e9 ''{0}'' vers Microsoft Project ''{1}''.
exportMSPError_reason=Cliquez sur D\u00e9tails pour plus d'informations.
exportMSPInternalError_msg=Une erreur interne s'est produite.
illegalArgument_msg={0} renvoie une valeur null ou incorrecte.
