################################################################################
##
##  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}' n\u00e3o est\u00e1 vis\u00edvel.
unsupportedValues='{0}' n\u00e3o oferece suporte a allAutomationValues.
unsupportedReplay='{0}' n\u00e3o oferece suporte a repeti\u00e7\u00e3o.
rootApplication=Esperando que a raiz do id reproduz\u00edvel ['{0}'] seja o aplicativo.
notResolved=N\u00e3o foi poss\u00edvel resolver filho para a parte '{0}':'{1}' no pai '{2}'.
resolvedTo='{0}' resolvido como '{1}'.
idResolved=Id '{0}' resolvido prematuramente.
idNotResolved=N\u00e3o foi poss\u00edvel resolver o id '{0}'.
nullReturned=Filho nulo retornado em '{0}' por '{1}' com '{2}' filhos.
matchesMsg='{0}' correspond\u00eancias para crit\u00e9rio {'{1}'}.
notDefined=Propriedade '{0}' n\u00e3o definida em '{1}'.
classNotFound=N\u00e3o foi poss\u00edvel localizar a classe de automa\u00e7\u00e3o '{0}'.
methodNotFound=N\u00e3o foi poss\u00edvel localizar o m\u00e9todo de automa\u00e7\u00e3o '{0}' para a classe '{1}'.
missingArgument=Valor de argumento ausente: '{0}'.

# TextFieldAutomationHelper

notReplayable=N\u00e3o \u00e9 poss\u00edvel repetir KeyboardEvent com o c\u00f3digo de chave '{0}'.

# codec/AssetPropertyCodec

notSettable=Voc\u00ea n\u00e3o pode criar um ativo.

# codec/DefaultPropertyCodec

precisionLoss=Poss\u00edvel perda de precis\u00e3o ao converter a propriedade '{0}'.

# codec/ListDataObjectCodec

notSupported=N\u00e3o h\u00e1 suporte para definir selectedItem.

# qtp/QTPAdapter

invisible=N\u00e3o vis\u00edvel.
notActiveX=N\u00e3o \u00e9 poss\u00edvel carregar o Adobe Flex 4 Plug-in para HP Quick Test Pro. O Adobe Flex 4 Plug-in para HP Quick Test Pro oferece suporte somente ao Internet Explorer.
notWindows=N\u00e3o \u00e9 poss\u00edvel carregar o Adobe Flex 4 Plug-in para HP Quick Test Pro. O Adobe Flex 4 Plug-in para HP Quick Test Pro n\u00e3o tem suporte no '{0}'.
noExternalInterface=N\u00e3o \u00e9 poss\u00edvel carregar o Adobe Flex 4 Plug-in para HP Quick Test Pro. ExternalInterface n\u00e3o est\u00e1 dispon\u00edvel neste player.
noPlayerID=N\u00e3o \u00e9 poss\u00edvel carregar o Adobe Flex 4 Plug-in para HP Quick Test Pro. Nenhum ID foi especificado para o player na p\u00e1gina HTML.
invalidPlayerID=N\u00e3o \u00e9 poss\u00edvel carregar o Adobe Flex 4 Plug-in para HP Quick Test Pro. ID de player inv\u00e1lido '{0}'.
unableToLoadPluginGeneric=N\u00e3o \u00e9 poss\u00edvel carregar o Adobe Flex 4 Plug-in para HP Quick Test Pro - '{0}'.
notSynchronized=Aguardando a conclus\u00e3o da opera\u00e7\u00e3o anterior.

# qtp/QTPEnvironment

autClassNotFound=N\u00e3o foi poss\u00edvel localizar AutomationClass para '{0}' '{1}'.



# Licence handler messages 
recordLimitReached=A licen\u00e7a n\u00e3o est\u00e1 presente. Na vers\u00e3o de avalia\u00e7\u00e3o, somente registros limitados s\u00e3o permitidos.
replayLimitReached=A licen\u00e7a n\u00e3o est\u00e1 presente. Na vers\u00e3o de avalia\u00e7\u00e3o, somente repeti\u00e7\u00f5es limitadas s\u00e3o permitidas.
