################################################################################
##
##  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.
##
################################################################################

# DataGridAccImpl
rowMofN = Linha %1 de %2
sortedAscending = Ordenado
sortedDescending = Ordenado de forma descendente
sortLevel = Nível %1

# DataGroup
cannotDisplayVisualElement=DataGroup não consegue exibir elementos visuais directamente a não ser que os elementos sejam display objects e implementem IVisualElement.
unableToCreateRenderer=Não foi possível criar um item renderer para [[0]].
addChildDataGroupError=DataGroup gere os seus próprios display objects, você não deve chamar addChild() directamente. Para adicionar, remover ou trocar itens, modifique o dataProvider.
addChildAtDataGroupError=DataGroup gere os seus próprios display objects, você não deve chamar addChildAt() directamente. Para adicionar, remover ou trocar itens, modifique o dataProvider.
removeChildDataGroupError=DataGroup gere os seus próprios display objects, você não deve chamar removeChild() directamente. Para adicionar, remover ou trocar itens, modifique o dataProvider.
removeChildAtDataGroupError=DataGroup gere os seus próprios display objects, você não deve chamar removeChildAt() directamente. Para adicionar, remover ou trocar itens, modifique o dataProvider.
setChildIndexDataGroupError=DataGroup gere os seus próprios display objects, você não deve chamar setChildIndex() directamente. Para adicionar, remover ou trocar itens, modifique  o dataProvider.
swapChildrenDataGroupError=DataGroup gere os seus próprios display objects, você não deve chamar swapChildren() directamente. Para adicionar, remover ou trocar itens, modifique o dataProvider.
swapChildrenAtDataGroupError=DataGroup gere os seus próprios display objects, você não deve chamar swapChildrenAt() directamente. Para adicionar, remover ou trocar itens, modifique o dataProvider.
	
# Application
viewSource=Ver Fonte

# VideoPlayer
videoPlayerVideoDisplayAccName=Leitor de Video
videoPlayerPlayButtonAccName=Reproduzir,Pausar
videoPlayerScrubBarAccName=Navegar
videoPlayerMuteButtonAccName=Com som,Sem som
videoPlayerVolumeBarAccName=Volume
videoPlayerFullScreenButtonAccName=Ecrã inteiro

# SkinnableComponent
skinNotFound=A Skin para [[0]] não foi encontrada.
requiredSkinPartNotFound=A parte obrigatória [[0]] não foi encontrada na skin.

# SkinnableComponent, Group
addChildError=addChild() não está disponível nesta classe. Em vez disso deve ser usado addElement() ou modificada a skin, se é que tem uma.
addChildAtError=addChildAt() não está disponível nesta classe. Em vez disso deve ser usado addElementAt() ou modificada a skin, se é que tem uma.
removeChildError=removeChild() não está disponível nesta classe. Em vez disso deve ser usado removeElement() ou modificada a skin, se é que tem uma.
removeChildAtError=removeChildAt() não está disponível nesta classe. Em vez disso deve ser usado removeElementAt() ou modificada a skin, se é que tem uma.
setChildIndexError=setChildIndex() não está disponível nesta classe. Em vez disso deve ser usado setElementIndex() ou modificada a skin, se é que tem uma.
swapChildrenError=swapChildren() não está disponível nesta classe. Em vez disso deve ser usado swapElements() ou modificada a skin, se é que tem uma.
swapChildrenAtError=swapChildrenAt() não está disponível nesta classe. Em vez disso deve ser usado swapElementsAt() ou modificada a skin, se é que tem uma.

# HGroup, VGroup
layoutReadOnly=Você não está autorizado a alterar o layout para esta classe. É read-only.

# Scroller
elementNotFoundInScroller=[[0]] não foi encontrado neste Scroller.
operationNotSupported=Esta operação não é suportada.
operationSupportedForOneAxisOnly=Esta operação só é suportada quando se está a fazer scrolling horizontal ou vertical, mas não ambos.
operationRequiresViewportLayout=Esta operação requer que o viewport tenha um layout.
operationRequiresSnappingMode=Esta operação requer que um valor differente de NONE seja atribuído a scrollSnappingMode .

# Group
cannotAddYourselfAsYourChild=Não pode adicionar um element como seu próprio child.
elementNotFoundInGroup=[[0]] não foi encontrado neste Group.
mxmlElementNoMultipleParents=MXML element [[0]] só pode ter um parent.
scaleGridGroupError=As propriedades da ScaleGrid não podem ser alteradas neste Group desde que pelo menos um child element é um DisplayObject.

# Scroller, Group
indexOutOfRange=Index [[0]] está fora do intervalo.

# DisplayLayer
objectNotFoundInDisplayLayer=[[0]] não foi encontrado nesta DisplayLayer.

# Slider
sliderPageUpAccName=Página acima
sliderPageDownAccName=Página abaixo
sliderPageLeftAccName=Página à esquerda
sliderPageRightAccName=Página à direita
sliderPositionAccName=Posição

# Spinner
spinnerLessAccName=Menos
spinnerMoreAccName=Mais

# ToggleSwitch
toggleSwitchSelectedLabel=LIGADO
toggleSwitchUnselectedLabel=DESLIGADO

# StyleableTextField
styleSheetError=Este método ou propriedade não pode ser usado on campo de texto com uma folha de estilos.

# FormItem
formItemRequired=Obrigatório
