# NLS_ENCODING=UNICODE
#-------------------------------------------------------------------------------
# Copyright (c) 2000, 2008 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

# Plug-in
pluginName=Interface utilisateur d'EPF Composer RCP
productName=Composeur EPF
providerName=Eclipse.org

# About text
aboutText=Eclipse Process Framework Composer\n\
\n\
Version : {0}\n\
\n\
(c) Copyright Eclipse contributors and others 2000, 2011. All Rights Reserved.\n

# Category
methodCategoryName=M\u00e9thode

# Views
welcomeViewName=Bienvenue

# Actions
globalActionSet=Jeu d'actions global
newAction=&Nouveau
newActionTooltip=Nouveau
openAction=&Ouvrir...
openActionTooltip=Ouvrir
searchAction=&Rechercher...
searchActionTooltip=Rechercher
welcomeAction=&Bienvenue
welcomeActionToolTip=Bienvenue

# Tooltips
shortcut.overview.tooltip=Retourner \u00e0 la page G\u00e9n\u00e9ralit\u00e9s
shortcut.tutorials.tooltip=Retourner \u00e0 la page Tutoriel
shortcut.firststeps.tooltip=Retourner \u00e0 la page Premiers pas
shortcut.webresources.tooltip=Retourner \u00e0 la page Ressources Web       

#Action Set
actionSet.description = Actions de la barre d'outils du syst\u00e8me d'aide
actionSet.label = Syst\u00e8me d'aide
searchAction.label = &Rechercher dans l'aide
searchAction.tooltip = Rechercher dans l'aide
dynamicHelpAction.label = Aide &dynamique 
dynamicHelpAction.tooltip = Aide dynamique

#Activities/Capabilities
activity.general=Importer et exporter des projets et des ressources
activity.general.desc=Utilisez les fonctions standard Importer/Exporter le projet/les ressources d'Eclipse.
activity.team.cvs=Prise en charge CVS
activity.team.cvs.desc=Utilisez le syst\u00e8me CVS (Concurrent Versions System) pour g\u00e9rer les ressources.
activity.team=Prise en charge de l'\u00e9quipe principale
activity.team.desc=Partagez des projets \u00e0 l'aide des syst\u00e8mes de gestion de configuration.

activity.cat.general=Dispositions g\u00e9n\u00e9rales
activity.cat.general.desc=Utilisez les fonctions standard d'Eclipse.
activity.cat.team=Equipe
activity.cat.team.desc=Utilisez les syst\u00e8mes de gestion de configuration pour g\u00e9rer les ressources.

PreferencePages.Capabilities = Fonctions
PreferencePages.Capabilities.activityName = &Fonctions
PreferencePages.Capabilities.categoryName = &Fonctions
PreferencePages.Capabilities.activityPromptButton = &Invite lors de l'activation des fonctions
PreferencePages.Capabilities.activityPromptButtonTooltip = Lorsqu'une fonction est utilis\u00e9e pour la premi\u00e8re fois, une invite s'affiche et exige l'activation des fonctions
PreferencePages.Capabilities.captionMessage = Les fonctions vous permettent d'activer ou de d\u00e9sactiver plusieurs composants de produit.  Ces fonctions sont regroup\u00e9es selon un ensemble de cat\u00e9gories pr\u00e9d\u00e9finies.
