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

SolrConnector.Arguments=Arguments
SolrConnector.KeepAllMetadata=Conserver toutes les metadonnées:
SolrConnector.Arguments2=Arguments:
SolrConnector.Commits=Commits
SolrConnector.Documents=Documents
SolrConnector.Schema=Schema
SolrConnector.Server=Serveur
SolrConnector.Paths=Chemins
SolrConnector.SolrType=Type de Solr
SolrConnector.Zookeeper=ZooKeeper
SolrConnector.SolrType2=Type de Solr:
SolrConnector.SingleServer=Serveur unique
SolrConnector.SolrCloud=SolrCloud
SolrConnector.ZookeeperHosts=Hôtes de ZooKeeper:
SolrConnector.Host=Hôte
SolrConnector.Port=Port:
SolrConnector.ZnodePath=Chemin de Znode:
SolrConnector.Protocol=Protocole:
SolrConnector.ServerName=Nom de Serveur:
SolrConnector.WebApplicationName=Nom d'application web:
SolrConnector.CoreName=Nom de Core/Collection:
SolrConnector.CollectionName=Nom de Collection:
SolrConnector.ConnectionTimeout=Timeout de la connexion (secondes):
SolrConnector.SocketTimeout=Timoute de la Socket (secondes):
SolrConnector.ZookeeperSocketTimeout=Timeout de socket (secondes):
SolrConnector.ZookeeperConnectionTimeout=Timeout de connection (secondes):
SolrConnector.UpdateHandler=Update handler:
SolrConnector.RemoveHandler=Remove handler:
SolrConnector.StatusHandler=Status handler:
SolrConnector.Realm=Realm:
SolrConnector.UserID=ID utilisateur:
SolrConnector.Password=Mot de passe:
SolrConnector.SSLTrustCertificateList=Liste de certificat de confiance SSL:
SolrConnector.NoCertificatesPresent=Aucun certificat présent
SolrConnector.AddCert=Ajouter cert
SolrConnector.Add=Ajouter
SolrConnector.AddZookeeperHost=Ajouter hôte ZooKeeper
SolrConnector.Certificate=Certificat:
SolrConnector.IDFieldName=Nom du champ ID:
SolrConnector.ModifiedDateFieldName=Nom du champ de date de modification:
SolrConnector.CreatedDateFieldName=Nom du champ de date de création:
SolrConnector.IndexedDateFieldName=Nom du champ de date d'indexation:
SolrConnector.FileNameFieldName=Nom du champ de nom de fichier:
SolrConnector.MimeTypeFieldName=Nom du champ Mime type:
SolrConnector.MaximumDocumentLength=Longueur maximum de document:
SolrConnector.IncludedMimeTypes=Types MIME inclus:
SolrConnector.ExcludedMimeTypes=Types MIME exclus:
SolrConnector.CommitAtEndOfEveryJob=Committer à la fin de chaque job:
SolrConnector.CommitEachDocumentWithin=Committer chaque document en moins de (ms):
SolrConnector.Name=Nom
SolrConnector.Value=Valeur
SolrConnector.NoArgumentsSpecified=Aucun argument spécifié
SolrConnector.Parameters=Paramètres:
SolrConnector.Arguments3=Arguments:
SolrConnector.NoArguments=Aucun argument
SolrConnector.SolrFieldMapping=Mapping de champ Solr (Solr Field Mapping)
SolrConnector.FieldMappings=Mappings de champ (Field mappings):
SolrConnector.MetadataFieldName=Nom de champ metadonnée
SolrConnector.SolrFieldName=Nom de champ Solr
SolrConnector.NoFieldMappingSpecified=Aucun mapping de champ spécifié (field mapping)
SolrConnector.NoZookeeperHostsSpecified=Aucun hôte Zookeeper spécifié
SolrConnector.AddFieldMapping=Ajouter un mapping de champ (field mapping)
SolrConnector.ChooseACertificateFile=Choisir un fichier certificat
SolrConnector.ZookeeperHostCannotBeNull=L'hôte ZooKeeper ne peut être null
SolrConnector.ZookeeperPortCannotBeNull=Le port ZooKeeper ne peut être null
SolrConnector.ZookeeperPortMustBeAnInteger=Le port ZooKeeper doit être un entier
SolrConnector.ZnodePathMustStartWithACharacter=Le chemin Znode doit commencer par le caractère '/'
SolrConnector.PleaseSupplyAValidSolrServerName=Veuillez fournir un nom de serveur Solr valide
SolrConnector.SolrServerPortMustBeAValidInteger=Le port du serveur Solr doit être un valide entier
SolrConnector.WebApplicationNameCannotHaveCharacters=Un nom d'application web ne peut contenir le caractère '/'
SolrConnector.CoreNameCannotHaveCharacters=Le nom d'un Core ne peut contenir le caractère '/'
SolrConnector.WebApplicationMustBeSpecifiedIfCoreIsSpecified=Unne application web diot être spécifiée si un core est spécifié
SolrConnector.ConnectionTimeoutMustBeInteger=Le timeout de la connexion doit être un entier
SolrConnector.SocketTimeoutMustBeInteger=Le timeout de la Socket doit être un entier
SolrConnector.UpdatePathMustStartWithACharacter=Le chemin d'update (Update path) doit commencer par le caractère '/'
SolrConnector.RemovePathMustStartWithACharacter=Le chemin de suppression (Remove path) doit commencer par le caractère '/'
SolrConnector.StatusPathMustStartWithACharacter=Le chemin de statut (Status path) doit commencer par le caractère '/'
SolrConnector.MaximumDocumentLengthMustBAnInteger=La longueur maximum d'un document doit être un entier
SolrConnector.CommitWithinValueMustBeAnInteger=La valeur de Commit-within doit être un entier
SolrConnector.MaximumDocumentLengthMustBeAnInteger=La longueur maximum d'un document doit être un entier
SolrConnector.ArgumentNameCannotBeAnEmptyString=Un nom d'argument ne peut être une chaîne de caractères vide
SolrConnector.DeleteCert=Supprimer cert 
SolrConnector.Delete=Supprimer
SolrConnector.DeleteArgument=Supprimer argument #
SolrConnector.DeleteZookeeperHost=Supprimer l'hôte ZooKeeper #
SolrConnector.FieldMapMustHaveNonNullSource=Field map doit avoir une source non null
SolrConnector.DeleteFieldMapping=Supprimer le mapping de champ (field mapping) #

