################################################################################
##
##  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}" ikke synlig.
unsupportedValues="{0}" st\u00f8tter ikke allAutomationValues.
unsupportedReplay="{0}" st\u00f8tter ikke gjentatt avspilling.
rootApplication=Forventer at rot av reproduserbar id ['{0}'] er programmet.
notResolved=Kan ikke l\u00f8se underordnet for del "{0}":"{1}" i overordnet "{2}".
resolvedTo="{0}" l\u00f8st til "{1}".
idResolved="{0}"-id l\u00f8st for tidlig.
idNotResolved=Kan ikke l\u00f8se id "{0}".
nullReturned=Null-underordnet returnert i "{0}" av "{1}" med "{2}" underordnede.
matchesMsg="{0}" treff for kriteriet {'{1}'}.
notDefined=Egenskapen "{0}" ikke definert i "{1}".
classNotFound=Finner ikke automatiseringsklassen "{0}".
methodNotFound=Finner ikke automatiseringsmetode "{0}" for klassen "{1}".
missingArgument=Manglende argumentverdi: "{0}".

# TextFieldAutomationHelper

notReplayable=Kan ikke spille av KeyboardEvent p\u00e5 nytt med n\u00f8kkelkode "{0}".

# codec/AssetPropertyCodec

notSettable=Du kan ikke angi et aktivum.

# codec/DefaultPropertyCodec

precisionLoss=Mulig tap av presisjon ved konvertering av egenskapen "{0}".

# codec/ListDataObjectCodec

notSupported=Det er ikke st\u00f8tte for \u00e5 angi selectedItem.

# qtp/QTPAdapter

invisible=Ikke synlig.
notActiveX=Kan ikke laste inn Adobe Flex 4 Plug-in for HP Quick Test Pro. Adobe Flex 4 Plug-in for HP Quick Test Pro st\u00f8tter kun Microsoft Internet Explorer.
notWindows=Kan ikke laste inn Adobe Flex 4 Plug-in for HP Quick Test Pro. Adobe Flex 4 Plug-in for HP Quick Test Pro st\u00f8ttes ikke p\u00e5 '{0}'.
noExternalInterface=Kan ikke laste inn Adobe Flex 4 Plug-in for HP Quick Test Pro. ExternalInterface er ikke tilgjengelig i denne spilleren.
noPlayerID=Kan ikke laste inn Adobe Flex 4 Plug-in for HP Quick Test Pro. Ingen ID angitt for spiller p\u00e5 HTML-siden.
invalidPlayerID=Kan ikke laste inn Adobe Flex 4 Plug-in for HP Quick Test Pro. Ugyldig spiller-ID '{0}'.
unableToLoadPluginGeneric=Kan ikke laste inn Adobe Flex 4 Plug-in for HP Quick Test Pro \u2013 '{0}'.
notSynchronized=Venter p\u00e5 at forrige operasjon skal fullf\u00f8res.

# qtp/QTPEnvironment

autClassNotFound=Finner ikke AutomationClass for "{0}" "{1}".



# Licence handler messages 
recordLimitReached=Ingen lisens. Testversjonen tillater bare et begrenset antall oppf\u00f8ringer.
replayLimitReached=Ingen lisens. Testversjonen tillater bare et begrenset antall avspillinger.
