################################################################################
##
##  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}' niet zichtbaar.
unsupportedValues='{0}' biedt geen ondersteuning voor allAutomationValues.
unsupportedReplay='{0}' biedt geen ondersteuning voor opnieuw afspelen.
rootApplication=Als basis van de reproduceerbare id ['{0}'] wordt de toepassing verwacht.
notResolved=Kan onderliggend element voor deel '{0}' niet omzetten: '{1}' in bovenliggend element '{2}'.
resolvedTo='{0}' omgezet in '{1}'.
idResolved=id '{0}' voortijdig omgezet.
idNotResolved=Kan id '{0}' niet omzetten.
nullReturned=Leeg onderliggend element geretourneerd op '{0}' door '{1}' met '{2}' onderliggende elementen.
matchesMsg='{0}' overeenkomsten voor criteria {'{1}'}.
notDefined=Eigenschap '{0}' niet gedefinieerd in '{1}'.
classNotFound=Kan automatiseringsklasse '{0}' niet vinden.
methodNotFound=Kan automatiseringsmethode '{0}' voor klasse '{1}' niet vinden.
missingArgument=Ontbrekende argumentwaarde: '{0}'.

# TextFieldAutomationHelper

notReplayable=Kan KeyboardEvent niet opnieuw afspelen met toetscode '{0}'.

# codec/AssetPropertyCodec

notSettable=U kunt een activum niet instellen.

# codec/DefaultPropertyCodec

precisionLoss=Mogelijk verlies van precisie bij converteren van eigenschap '{0}'.

# codec/ListDataObjectCodec

notSupported=Instellen van selectedItem wordt niet ondersteund.

# qtp/QTPAdapter

invisible=Niet zichtbaar.
notActiveX=Kan Adobe Flex 4-invoegtoepassing voor HP Quick Test Pro niet laden. Adobe Flex 4-invoegtoepassing voor HP Quick Test Pro ondersteunt alleen Microsoft Internet Explorer.
notWindows=Kan Adobe Flex 4-invoegtoepassing voor HP Quick Test Pro niet laden. Adobe Flex 4-invoegtoepassing voor HP Quick Test Pro wordt niet ondersteund op '{0}'.
noExternalInterface=Kan Adobe Flex 4-invoegtoepassing voor HP Quick Test Pro niet laden. ExternalInterface is niet beschikbaar voor deze speler.
noPlayerID=Kan Adobe Flex 4-invoegtoepassing voor HP Quick Test Pro niet laden. Geen id opgegeven voor speler op html-pagina.
invalidPlayerID=Kan Adobe Flex 4-invoegtoepassing voor HP Quick Test Pro niet laden. Ongeldige spelers-id '{0}'.
unableToLoadPluginGeneric=Kan de Adobe Flex 4-invoegtoepassing voor HP Quick Test Pro niet laden - '{0}'.
notSynchronized=Wachten tot vorige bewerking is voltooid.

# qtp/QTPEnvironment

autClassNotFound=Kan AutomationClass voor '{0}' '{1}' niet vinden.



# Licence handler messages 
recordLimitReached=Licentie niet aanwezig. Bij de evaluatieversie zijn slechts beperkte records toegestaan.
replayLimitReached=Licentie niet aanwezig. Bij de evaluatieversie zijn slechts beperkte herhalingen toegestaan.
