################################################################################
##
##  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.
##
################################################################################
# Developer RTE Section

# AutomationManager

notVisible='{0}' non visible.
unsupportedValues='{0}' ne prend pas en charge allAutomationValues.
unsupportedReplay='{0}' ne prend pas en charge la r\u00e9ex\u00e9cution.
rootApplication=La racine de l'ID reproductible ['{0}'] doit correspondre \u00e0 l'application.
notResolved=Impossible de r\u00e9soudre le n\u0153ud enfant de la partie '{0}':'{1}' du n\u0153ud parent '{2}'.
resolvedTo='{0}' r\u00e9solu sur '{1}'.
idResolved=L'ID {0} est r\u00e9solu pr\u00e9matur\u00e9ment.
idNotResolved=Impossible de r\u00e9soudre l'ID {0}.
nullReturned=Aucun n\u0153ud enfant nul n'a \u00e9t\u00e9 renvoy\u00e9 \u00e0 '{0}' par '{1}' sur '{2}' n\u0153uds enfants.
matchesMsg={0} r\u00e9sultats pour le crit\u00e8re {'{1}'}.
notDefined=La propri\u00e9t\u00e9 '{0}' n'est pas d\u00e9finie dans '{1}'.
classNotFound=Impossible de trouver la classe d'automatisation {0}.
methodNotFound=Impossible de trouver la m\u00e9thode d'automatisation '{0}' pour la classe '{1}'.
missingArgument=Valeur d'argument manquant : '{0}'.

# TextFieldAutomationHelper

notReplayable=Impossible de r\u00e9ex\u00e9cuter KeyboardEvent avec le code  '{0}'.

# codec/AssetPropertyCodec

notSettable=Vous ne pouvez pas d\u00e9finir de ressource.

# codec/DefaultPropertyCodec

precisionLoss=Perte de pr\u00e9cision possible lors de la conversion de la propri\u00e9t\u00e9 '{0}'.

# codec/ListDataObjectCodec

notSupported=La d\u00e9finition de selectedItem n'est pas prise en charge.

# qtp/QTPAdapter

invisible=Non visible.
notActiveX=Impossible de charger le plug-in Adobe Flex 4 pour HP Quick Test Pro. Le plug-in Adobe Flex pour HP Quick Test Pro prend uniquement en charge Microsoft Internet Explorer.
notWindows=Impossible de charger le plug-in Adobe Flex 4 pour HP Quick Test Pro. Le plug-in Adobe Flex 4 pour HP Quick Test Pro n'est pas pris en charge sur '{0}'.
noExternalInterface=Impossible de charger le plug-in Adobe Flex 4 pour HP Quick Test Pro. ExternalInterface n'est pas disponible dans ce lecteur.
noPlayerID=Impossible de charger le plug-in Adobe Flex 4 pour HP Quick Test Pro. Aucun ID sp\u00e9cifi\u00e9 pour le lecteur dans la page html.
invalidPlayerID=Impossible de charger le plug-in Adobe Flex 4 pour HP Quick Test Pro. ID de lecteur non valide '{0}'.
unableToLoadPluginGeneric=Impossible de charger le plug-in Adobe Flex 4 pour HP Quick Test Pro - '{0}'.
notSynchronized=Attente de la fin de l'op\u00e9ration pr\u00e9c\u00e9dente.

# qtp/QTPEnvironment

autClassNotFound=Impossible de trouver AutomationClass pour {0} {1}.



# Licence handler messages 
recordLimitReached=Licence manquante. Avec la version d'\u00e9valuation, seuls des enregistrements limit\u00e9s sont autoris\u00e9s.
replayLimitReached=Licence manquante. Avec la version d'\u00e9valuation, seules des r\u00e9ex\u00e9cutions limit\u00e9es sont autoris\u00e9es.
