################################################################################
##
##  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}' er ikke synlig.
unsupportedValues='{0}' underst\u00f8tter ikke allAutomationValues.
unsupportedReplay='{0}' underst\u00f8tter ikke afspilning.
rootApplication=Forventer at roden af det reproducerbare id ['{0}'] er programmet.
notResolved=Kan ikke fortolke det underordnede element i delen '{0}':'{1}' i den overordnede del '{2}'.
resolvedTo='{0}' fortolket til '{1}'.
idResolved=Id'et '{0}' blev fortolket for tidligt.
idNotResolved=Id'et '{0}' kan ikke fortolkes.
nullReturned='{1}' med '{2}' underordnede elementer returnerede null underordnede elementer i '{0}'.
matchesMsg='{0}' match p\u00e5 kriteriet {'{1}'}.
notDefined=Egenskaben '{0}' er ikke defineret i '{1}'.
classNotFound=Automatiseringsklassen '{0}' blev ikke fundet.
methodNotFound=Automatiseringsmetoden '{0}' kan ikke findes til klassen '{1}'.
missingArgument=Manglende argumentv\u00e6rdi: '{0}'.

# TextFieldAutomationHelper

notReplayable=Kan ikke afspille KeyboardEvent med koden '{0}'.

# codec/AssetPropertyCodec

notSettable=Du kan ikke indstille et aktiv.

# codec/DefaultPropertyCodec

precisionLoss=Muligt tab af pr\u00e6cision ved konvertering af egenskaben '{0}'.

# codec/ListDataObjectCodec

notSupported=Indstilling af selectedItem underst\u00f8ttes ikke.

# qtp/QTPAdapter

invisible=Ikke synlig.
notActiveX=Adobe Flex 4 Plug-in til  HP Quick Test Pro kunne ikke indl\u00e6ses. Adobe Flex 4 Plug-in til HP Quick Test Pro underst\u00f8tter kun Microsoft Internet Explorer.
notWindows=Adobe Flex 4 Plug-in til HP Quick Test Pro kunne ikke indl\u00e6ses. Adobe Flex 4 Plug-in til HP Quick Test Pro underst\u00f8ttes ikke p\u00e5 '{0}'.
noExternalInterface=Adobe Flex 4 Plug-in til HP Quick Test Pro kunne ikke indl\u00e6ses. ExternalInterface findes ikke i denne afspiller.
noPlayerID=Adobe Flex 4 Plug-in til HP Quick Test Pro kunne ikke indl\u00e6ses. Der er ikke specificeret et id for afspilleren p\u00e5 html-siden.
invalidPlayerID=Adobe Flex 4 Plug-in til  HP Quick Test Pro kunne ikke indl\u00e6ses. Ugyldigt afspiller-id '{0}'.
unableToLoadPluginGeneric=Adobe Flex 4 Plug-in til HP Quick Test Pro - '{0}' kunne ikke indl\u00e6ses.
notSynchronized=Venter p\u00e5 at den tidligere handling fuldf\u00f8res.

# qtp/QTPEnvironment

autClassNotFound=AutomationClass til '{0}' '{1}' blev ikke fundet.



# Licence handler messages 
recordLimitReached=Der blev ikke fundet en licens. I pr\u00f8veversionen tillades kun et begr\u00e6nset antal poster.
replayLimitReached=Der blev ikke fundet en licens. I pr\u00f8veversionen tillades kun et begr\u00e6nse antal afspilninger.
