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

# QTP_air messages

noConnectionToQTP=Programmet er knyttet til automatiseringsbiblioteket til AIR. Men der kunne ikke etableres forbindelse til QTP.
noConnectionToQTP_Recommendation=Kontroller, at QTP er \u00e5bent, og at AIR-pluginmodulet er aktiveret, inden du starter programmet.

securityError =Sikkerhedsfejl ved fors\u00f8g p\u00e5 at etablere forbindelse til QTP.
airHelperClassNotFound=Programmet er knyttet til automatiseringsbiblioteket til AIR. Hvis AIR-automatisering skal fungere, skal du bruge biblioteket automation_air. Det anbefales kraftigt, at du tilf\u00f8jer dette bibliotek inden du forts\u00e6tter.
propertyCannotBeEvaluated =Egenskaben '{0}' kunne ikke evalueres.
qtpConnectionAttempt=Fors\u00f8ger at etablere forbindelse til QTP. Denne handling kan tage et par sekunder.
qtpConnectionFailed=Der kunne ikke etableres forbindelse til QTP. QTP er muligvis ikke startet, eller m\u00e5ske k\u00f8rer der flere programmer med automatisering p\u00e5 samme tid. Luk alle forekomster af programmet, genstart QTP, og genstart programmet.
qtpConnectionSuccess=Der blev etableret forbindelse til QTP. 
