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

# Export XML Wizard
exportXMLWizard_title=Exporter en langage XML

# Select Export Type Wizard Page
selectExportTypePage_desc=S\u00e9lectionnez le type de contenu de la biblioth\u00e8que de m\u00e9thodes \u00e0 exporter.
exportLibraryRadioButton_text=Exporter la biblioth\u00e8que de m\u00e9thodes enti\u00e8re
exportPluginsRadioButton_text=Exporter un ou plusieurs plug-in de m\u00e9thodes
exportConfigsRadioButton_text=Exporter une configuration de m\u00e9thode

# Select Destination XML File Wizard Page
selectXMLFilePage_title=Sp\u00e9cifier un fichier d'exportation
selectXMLFilePage_desc=Sp\u00e9cifiez un fichier XML de destination pour stocker le contenu export\u00e9 de la biblioth\u00e8que de m\u00e9thodes.
fileLabel_text=Fichier XML :
browseButton_text=Parcourir...

# Overwrite Confirmation Dialog
overwriteText_msg=''{0}'' existe d\u00e9j\u00e0.\nVoulez-vous l''\u00e9craser ?

# Progress Messages
exportingXML_text=Exportation du contenu de la biblioth\u00e8que de m\u00e9thodes dans le fichier XML...

# Error Messages
invalidXMLFile_error=Le fichier XML sp\u00e9cifi\u00e9 est non valide.
exportXMLWizard_error=IUPM0000E : Echec de l''exportation : {0}
exportXMLWizard_reviewLog=Exportation termin\u00e9e. Consultez les fichiers journaux dans le r\u00e9pertoire d'exportation.
exportXMLService_error=Erreur lors de l''exportation de la biblioth\u00e8que : {0}
exportXMLService_feature_error=Erreur lors de la d\u00e9finition de la valeur de la fonction : Element={0}, feature={1}
xmlLibrary_error_load_xml=Impossible de charger la source XML ''{0}''
xmlLibrary_no_plugin=Pas de plug-in de m\u00e9thodes pour l''ID {0}
xmlLibrary_no_feature=Impossible d''obtenir la fonction XML pour {0}_{1}
xmlLibrary_no_class=Impossible d''obtenir EClass pour {0}
xmlLibrary_error_create_element=Erreur lors de la cr\u00e9ation d''un \u00e9l\u00e9ment, Ignore comment d\u00e9finir la valeur de la fonction {0}
xmlLibrary_error_set_value=Erreur lors de la cr\u00e9ation d''un \u00e9l\u00e9ment, Impossible de d\u00e9finir la valeur {0} pour le conteneur {1}
xmlLibrary_invalid_feature_value=Valeur de la fonction d''attribut non valide pour la fonction {0}, avec la valeur {1}
xmlLibrary_error_set_value_2=Erreur lors de la d\u00e9finition d''un attribut, Impossible de d\u00e9finir une valeur pour feature={0}, object={1}, value={2}
xmlLibrary_error_set_value_3=Ignore comment d\u00e9finir une valeur pour feature={0}, object={1}, value={2}
xmlLibrary_error_set_reference=Erreur lors de la d\u00e9finition d''une r\u00e9f\u00e9rence, Impossible de d\u00e9finir une valeur pour feature={0}, object={1}, value={2}
xmlLibrary_error_process_wrong_container=Le processus ''{0}'' n''a pas de conteneur valide. Le conteneur est de type ''{1}'' qui n''est pas un package de processus
xmlLibrary_new_id=L''\u00e9l\u00e9ment {0} est affect\u00e9 \u00e0 un nouvel identificateur {1} car il ne dispose pas d''un identificateur valide
xmlLibrary_id_not_unique=L''identificateur de l''\u00e9l\u00e9ment ''{0}'' est utilis\u00e9 par plusieurs \u00e9l\u00e9ments


