# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

ExtensionPoint_ValueEditors_name=Editeurs de valeur

ValueEditors_InPlaceTextValueEditor_name=Editeur de texte en-place

ValueEditors_TextValueEditor_name=Editeur de texte

ValueEditors_HexValueEditor_name=Editeur Hex

NewWizards_Category_name=Navigateur LDAP

PrefPage_MainPreferencePage_name=Navigateur LDAP

PrefPage_AttributesPreferencePage_name=Attributs

PrefPage_BinaryAttributesAndSyntaxesPreferencePage_name=Attributs binaires

PrefPage_ValueEditorsPreferencePage_name=Editeurs de valeur

PrefPage_BrowserPreferencePage_name=Vue navigateur

PrefPage_EntryEditorPreferencePage_name=Editeur d'entr\u00E9e tabulaire

PrefPage_TextFormatsPreferencePage_name=Formats de texte

PrefPage_ViewsPreferencePage_name=Vues

CtxType_LdapFilter_Template_name=Filtre LDAP

Keyword_Colors_label=Couleurs

Keyword_Fonts_label=Polices

Keyword_LDAP_label=LDAP

Keyword_LDIF_label=LDIF

Cmd_Category_name=Navigateur LDAP

Cmd_AddValue_name=Ajouter une valeur
Cmd_AddValue_description=Ajoute une valeur \u00E0 un attribut existant

Cmd_AddAttribute_name=Ajouter un attribut
Cmd_AddAttribute_description=Ajoute un attribute \u00E0 une entr\u00E9e existante

Cmd_EditAttributeDescription_name=Editer la description d'un attribut
Cmd_EditAttributeDescription_description=Edite la description d'un attribut

Cmd_EditValue_name=Editer la valeur
Cmd_EditValue_description=Edite la valeur

Cmd_EditRecord_name=Editer l'enregistrement
Cmd_EditRecord_description=Edite un enregistrement

Cmd_Delete_name=Supprimer
Cmd_Delete_description=Supprime un \u00E9l\u00E9ment

Cmd_Copy_name=Copier
Cmd_Copy_description=Copie un \u00E9l\u00E9ment

Cmd_Paste_name=Coller
Cmd_Paste_description=Colle un \u00E9l\u00E9ment

Cmd_Find_name=Rechercher
Cmd_Find_description=Recherche un \u00E9l\u00E9ment

Cmd_Properties_name=Propri\u00E9t\u00E9s
Cmd_Properties_description=Propri\u00E9t\u00E9s d'un \u00E9l\u00E9ment

Cmd_LocateInDit_name=Localiser dans le DIT
Cmd_LocateInDit_description=Localise un DN ou le r\u00E9sultat d'une recherche dans le DIT

Cmd_OpenSearchResult_name=Ouvrir le r\u00E9sultat de recherche
Cmd_OpenSearchResult_description=Ouvre le r\u00E9sultat de recherche

Ctx_LdapBrowserWindows_name=Dans les fen\u00EAtres du navigateur LDAP
Ctx_LdapBrowserWindows_description=Dans les fen\u00EAtres du navigateur LDAP

Ctx_LdapBrowserDialogs_name=Dans les fen\u00EAtres de dialogue du navigateur LDAP
Ctx_LdapBrowserDialogs_description=Dans les fen\u00EAtres de dialogue du navigateur LDAP

ConnectionParameterPage_BrowserParameterPage_name=Options du navigateur
ConnectionParameterPage_BrowserParameterPage_description=Vous pouvez sp\u00E9cifier des param\u00E8tres de connexion additionels

ConnectionParameterPage_EditorParameterPage_name=Options d'\u00E9dition
ConnectionParameterPage_EditorParameterPage_description=Vous pouvez sp\u00E9cifier des param\u00E8tres pour l'\u00E9dition des entr\u00E9es.
