# <copyright>
#------------------------------------------------------------------------------
# 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
#------------------------------------------------------------------------------
# </copyright>
#
# $Id: plugin_fr.properties,v 1.2 2008/09/02 18:31:29 klow Exp $

# ====================================================================
# To code developer:
#   Do NOT change the properties between this line and the
#   "%%% END OF TRANSLATED PROPERTIES %%%" line.
#   Make a new property name, append to the end of the file and change
#   the code to use the new property.
# ====================================================================

# ====================================================================
# %%% END OF TRANSLATED PROPERTIES %%%
# ====================================================================
# NLS_MESSAGEFORMAT_VAR

pluginName=Prise en charge de la modification de diagramme EPF
providerName=Eclipse.org

_UI_CreateChild_text = {0}
_UI_CreateChild_text2 = {1} {0}
_UI_CreateChild_text3 = {1}
_UI_CreateChild_tooltip = Cr\u00e9er nouveau {0} sous la fonction {1}
_UI_CreateChild_description = Cr\u00e9er un nouvel enfant du type {0} pour la fonction {1} du {2} s\u00e9lectionn\u00e9.
_UI_CreateSibling_description = Cr\u00e9er un nouveau soeur/fr\u00e8re de type {0} pour le {2} s\u00e9lectionn\u00e9, dans la fonction {1} de son parent.

_UI_PropertyDescriptor_description = Le {0} du {1}

_UI_Diagram_type = Diagramme
_UI_Link_type = Lien
_UI_LinkedObject_type = Objet li\u00e9
_UI_NamedNode_type = Noeud nomm\u00e9
_UI_Node_type = Noeud
_UI_ActivityDiagram_type = Diagramme d'activit\u00e9
_UI_TypedNode_type = Noeud de type
_UI_WorkProductDependencyDiagram_type = Diagramme de d\u00e9pendance de produit de travail
_UI_WorkProductNode_type = Noeud de produit de travail
_UI_ActivityDetailDiagram_type = Diagramme d\u00e9taill\u00e9 d'activit\u00e9
_UI_NodeContainer_type = Conteneur de noeud
_UI_RoleNode_type = Noeud de r\u00f4le
_UI_RoleTaskComposite_type = Composite de t\u00e2che de r\u00f4le
_UI_TaskNode_type = Noeud de t\u00e2che
_UI_WorkProductDescriptorNode_type = Noeud de descripteur de produit de travail
_UI_WorkBreakdownElementNode_type = Noeud d'\u00e9l\u00e9ment de r\u00e9partition de travail
_UI_WorkProductComposite_type = Composite de produit de travail
_UI_Unknown_type = Objet

_UI_Unknown_datatype= Valeur

_UI_Link_source_feature = Source
_UI_Link_target_feature = Cible
_UI_Link_bendpoints_feature = Points d'infl\u00e9chissement
_UI_Link_sourceEndPoint_feature = Point final source
_UI_Link_targetEndPoint_feature = Point final cible
_UI_LinkedObject_linkedElement_feature = El\u00e9ment li\u00e9
_UI_LinkedObject_object_feature = Objet
_UI_NamedNode_name_feature = Nom
_UI_Node_location_feature = Emplacement
_UI_Node_width_feature = Largeur
_UI_Node_height_feature = Hauteur
_UI_Node_incomingConnections_feature = Connexions entrantes
_UI_Node_outgoingConnections_feature = Connexions sortantes
_UI_Node_readOnly_feature = Lecture seule
_UI_TypedNode_type_feature = Type
_UI_WorkProductNode_type_feature = Type
_UI_NodeContainer_nodes_feature = Noeuds
_UI_WorkProductComposite_type_feature = Type
_UI_Unknown_feature = Non sp\u00e9cifi\u00e9

_UI_Link_name_feature = Nom
_UI_ActivityDetailDiagram_autoLayout_feature = Disposition automatique
_UI_TaskNode_index_feature = Index
_UI_RoleTaskComposite_rowIndex_feature = Index de ligne
_UI_WorkProductDescriptorNode_state_feature = Etat
