# NLS_ENCODING=UNICODE
#-------------------------------------------------------------------------------
# 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
mergeRadioButton2_text=Fusionner le contenu import\u00e9 dans la biblioth\u00e8que de m\u00e9thodes existante (fusion de niveau \u00e9l\u00e9ment)

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

