#-------------------------------------------------------------------------------
# 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: IUPE0000E - IUPE0099E
#

# Export Library Configuration Wizard
exportConfigWizard_title=Exporter la configuration de biblioth\u00e8que
selectExportTypePage_title=S\u00e9lectionner le type d'exportation
selectExportTypePage_desc=S\u00e9lectionner le type de configuration de biblioth\u00e8que \u00e0 exporter.
selectExportTypePage_configLabel_text=Exporter une configuration de m\u00e9thode et de tous ses plug-in de m\u00e9thodes
selectExportTypePage_configSpecsLabel_text=Exporter une ou plusieurs sp\u00e9cifications de configuration de m\u00e9thode
selectConfigPage_title=S\u00e9lectionner la configuration de m\u00e9thode
selectConfigPage_desc=S\u00e9lectionnez une configuration de m\u00e9thode \u00e0 exporter. Tous les plug-in de m\u00e9thodes r\u00e9f\u00e9renc\u00e9s dans la configuration s\u00e9lectionn\u00e9e seront inclus dans l'exportation.
selectConfigPage_configsLabel_text=Configurations de m\u00e9thode :
selectConfigSpecsPage_title=S\u00e9lectionner les sp\u00e9cifications de configuration
selectConfigSpecsPage_desc=S\u00e9lectionnez une ou plusieurs sp\u00e9cifications de configuration de m\u00e9thode \u00e0 exporter.
selectConfigSpecsPage_configsLabel_text=Configurations de m\u00e9thode :
checkConfigPage_title=R\u00e9viser les erreurs de configuration
checkConfigPage_desc=Un contr\u00f4le d'int\u00e9grit\u00e9 a \u00e9t\u00e9 r\u00e9alis\u00e9 sur la configuration de m\u00e9thode s\u00e9lectionn\u00e9e. R\u00e9visez le rapport d'erreurs et effectuez les actions correctives n\u00e9cessaires.
selectDestinationPage_title=Sp\u00e9cifier le r\u00e9pertoire d'exportation
selectDestinationPage_desc=Sp\u00e9cifiez un r\u00e9pertoire de destination pour stocker la configuration export\u00e9e.

# Export Method Plug-ins Wizard
exportPluginsWizard_title=Exporter les plug-in de m\u00e9thodes
selectPluginsPage_title=S\u00e9lectionner les plug-in de m\u00e9thodes
selectPluginsPage_desc=S\u00e9lectionnez un ou plusieurs plug-in de m\u00e9thodes \u00e0 exporter.
selectPluginsPage_pluginsLabel_text=Plug-in de m\u00e9thodes :
reviewPluginsPage_title=R\u00e9viser les d\u00e9pendances
reviewPluginsPage_desc=S\u00e9lectionnez chaque plug-in de m\u00e9thodes pour r\u00e9viser ses d\u00e9pendances. Cliquez sur Pr\u00e9c\u00e9dent pour s\u00e9lectionner les plug-in d\u00e9pendants s'ils doivent \u00eatre inclus dans l'exportation.
reviewPluginsPage_pluginsLabel_text=Plug-in de m\u00e9thodes :
reviewPluginsPage_dependentPluginsLabel_text=Plug-in de m\u00e9thodes d\u00e9pendants :
reviewPluginsPage_associatedConfigsLabel_text=Configurations de m\u00e9thode associ\u00e9es :
exportPluginSummaryPage_title=Confirmer l'exportation
exportPluginSummaryPage_desc=Confirmez les plug-in de m\u00e9thodes \u00e0 exporter.
exportPluginSummaryPage_noPlugin_text=Aucun plug-in de m\u00e9thodes n'a \u00e9t\u00e9 s\u00e9lectionn\u00e9.
specifyPathPage_title=Sp\u00e9cifier le r\u00e9pertoire d'exportation
specifyPathPage_desc=Sp\u00e9cifiez un r\u00e9pertoire de destination pour stocker les plug-in de m\u00e9thodes export\u00e9s.
SavePluginPage_desc=Exportez les plug-in et configurations s\u00e9lectionn\u00e9s vers le r\u00e9pertoire de destination indiqu\u00e9.
ExportPluginWizard_title=Erreur de l'assistant Exporter le plug-in de m\u00e9thodes
ExportPluginError_msg=IUPE0000E : Erreur lors de l'exportation

# Export Library Configuration Error Dialog
exportConfigErrorDialog_title=Exporter la configuration de biblioth\u00e8que
exportConfigErrorDialog_msg=IUPE0001E : L'op\u00e9ration d'exportation ne peut pas se poursuivre.

# Progress Messages
analyzingConfigTask_name=Analyse de la configuration de biblioth\u00e8que...

# The following messages have not been reviewed.
ConfigurationSpecsExportService_MSG0=Exportation de la configuration...
ConfigurationSpecsExportService_MSG1=Exportation termin\u00e9e.
ExportConfigCheckingPage_summary_1=V\u00e9rification de l'int\u00e9grit\u00e9 de la configuration s\u00e9lectionn\u00e9e...\n
ExportConfigCheckingPage_summary_2=Aucune configuration s\u00e9lectionn\u00e9e.\n
ExportConfigCheckingPage_summary_3=Aucun probl\u00e8me dans la configuration s\u00e9lectionn\u00e9e.\n
ExportConfigCheckingPage_summary_4=La configuration s\u00e9lectionn\u00e9e comporte {0} probl\u00e8mes ({1} erreurs, {2} avertissements et {3} informations. \nVous pouvez ouvrir l''\u00e9diteur de configuration et corriger ces probl\u00e8mes. \nVous pouvez \u00e9galement choisir d''ignorer ces probl\u00e8mes et continuer.
ExportConfigCheckingPage_checking=V\u00e9rification de la configuration, veuillez patienter...
ExportConfigSelectConfigPage_title=Choisir la configuration de m\u00e9thode
DestinationCommonPage_label_browse=Parcourir...
DestinationCommonPage_label_default_dir=Utiliser le r\u00e9pertoire par d\u00e9faut
ConfigurationExportService_MSG0=Exportation de la configuration...
ConfigurationExportService_MSG2=IUPE0002E : Echec de l'exportation : Erreur de chargement de la biblioth\u00e8que
ConfigurationExportService_MSG4=IUPE0003E : Echec de l'exportation : Erreur lors de la copie de la biblioth\u00e8que
ConfigurationExportService_MSG1=IUPE0004E : Echec de l'exportation : Erreur lors de la fermeture de la configuration de la biblioth\u00e8que
ConfigurationExportService_MSG9=IUPE0005E : Echec de l'exportation : Erreur lors de la sauvegarde de la biblioth\u00e8que
DestinationCommonPage_label_name=Nom :
DestinationCommonPage_label_dir=R\u00e9pertoire :
ExportPluginWizard_error=Erreur
DestinationCommonPage_title=Titre par d\u00e9faut
DestinationCommonPage_desc=Description par d\u00e9faut :
PluginExportService_MSG0=Exportation des plug-in...
PluginExportService_MSG1=Cr\u00e9ation du r\u00e9pertoire d'exportation...
PluginExportService_MSG2=Copie des fichiers en cours...
PluginExportService_MSG3=G\u00e9n\u00e9ration de la biblioth\u00e8que et des fichiers de ressources...
PluginExportService_MSG4=Exportation termin\u00e9e.
SaveLibraryPage_title=Exporter un plug-in de m\u00e9thodes
SavePluginPage_label_name=Nom d'exportation :
SaveLibraryPage_desc=Exporter les plug-in de m\u00e9thodes s\u00e9lectionn\u00e9s et les configurations associ\u00e9es
ExportPluginWizard_MSG1=Analyse de la configuration de biblioth\u00e8que...
