#-------------------------------------------------------------------------------
# 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:
#

# Import XML Wizard
importXMLWizard_title=Importer du langage XML

# Select Import XML File Wizard Page
selectXMLFilePage_title=Sp\u00e9cifier un fichier d'importation
selectXMLFilePage_desc=Sp\u00e9cifiez le fichier XML incluant le contenu de la biblioth\u00e8que de m\u00e9thodes \u00e0 importer et s\u00e9lectionnez l'op\u00e9ration d'importation ad\u00e9quate \u00e0 effectuer.
fileLabel_text=Fichier XML :
browseButton_text=Parcourir...
optionGroup_text=Option de fusion
optionGroup1_text=Option V\u00e9rifier le plug-in de base
overwriteRadioButton_text=Ecrasez le contenu de la biblioth\u00e8que de m\u00e9thodes existante avec le contenu import\u00e9
mergeRadioButton_text=Fusionnez le contenu import\u00e9 dans la biblioth\u00e8que de m\u00e9thodes existante

# Progress Messages
importingXML_text=Importation du contenu de la biblioth\u00e8que XML dans la biblioth\u00e8que de m\u00e9thodes en cours...

# Import XML Error Dialog
review_log_files=L''op\u00e9ration d''importation est termin\u00e9e. R\u00e9visez les fichiers journaux dans le dossier \n''{0}'' en cas d''erreur.
importXMLError_msg=IUPM0000E : L'op\u00e9ration d'importation ne peut pas se poursuivre.
importXMLError_reason=IUPM0009E : La biblioth\u00e8que de m\u00e9thodes en cours est en lecture seulement.\n\nAssurez-vous que ''{0}'' est modifiable ou cr\u00e9ez une nouvelle biblioth\u00e8que de m\u00e9thodes et r\u00e9essayez.

# Error Messages
invalidXMLFile_error=Le fichier XML sp\u00e9cifi\u00e9 est non valide.
versionMismatch_oldData=IUPM0010E : Le fichier XML sp\u00e9cifi\u00e9 a \u00e9t\u00e9 export\u00e9 par une version ant\u00e9rieure ({0}) de {1}. Vous devez exporter les fichiers en utilisant la version actuelle de {1}.
versionMismatch_oldData_unknown=IUPM0011E : Le fichier XML sp\u00e9cifi\u00e9 a \u00e9t\u00e9 export\u00e9 par une version ant\u00e9rieure de {0}. Vous devez exporter les fichiers en utilisant la version actuelle de {0}.
versionMismatch_oldTool=IUPM0012E : Le fichier XML sp\u00e9cifi\u00e9 a \u00e9t\u00e9 export\u00e9 par une version plus r\u00e9cente ({0}) de {1}. Vous devez effectuer une mise \u00e0 niveau de {1} pour importer le fichier.  
versionMismatch_oldTool_unknown=IUPM0013E: Impossible d''ouvrir le fichier XML sp\u00e9cifi\u00e9. Vous devez effectuer une mise \u00e0 niveau de {0} pour importer le fichier.  

importXMLService_element_not_handled=El\u00e9ment non g\u00e9r\u00e9 : {0}
importXMLService_element_without_id=El\u00e9ment sans identificateur : {0}
importXMLService_import_failed=Echec de l''importation : {0}
importXMLService_missing_plugin=Plug-in requis manquant {0}
importXMLService_error_missing_plugins=Plug-in(s) requis manquants. V\u00e9rifiez les fichiers journaux pour plus de d\u00e9tails.

library_error_no_eclass=Erreur lors de la cr\u00e9ation d''une cat\u00e9gorie de contenu : Impossible d''obtenir EClass pour {0}
library_no_package=Impossible de trouver le package d''appartenance pour l''objet {0}
library_error_create_element=Erreur lors de la cr\u00e9ation de l''\u00e9l\u00e9ment : {0}
library_object_string=objet {0}, fonction {1}
library_error_set_attribute_2=Erreur lors de la d\u00e9finition d''un attribut : Valeur de la fonction d''attribut non valide {0}
library_error_set_attribute=Erreur lors de la d\u00e9finition d''un attribut pour l''objet {0}, la fonction {1} et la valeur {2}
library_error_set_attribute_3=Ignore comment d\u00e9finir un attribut pour l''objet {0}, la fonction {1} et la valeur {2}
library_error_set_reference=Erreur lors de la d\u00e9finition d''une r\u00e9f\u00e9rence pour la fonction {0}: aucun \u00e9l\u00e9ment contenant un identificateur {1}
library_error_set_reference_2=Erreur lors de la d\u00e9finition d''une r\u00e9f\u00e9rence pour l''objet {0}, la fonction {1} et la valeur {2}

