################################################################################
##
##  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 = Row %1 of %2
sortedAscending = Sorted
sortedDescending = Sorted descending
sortLevel = Level %1

# DataGroup
cannotDisplayVisualElement=DataGroup cannot display visual elements directly unless the elements are display objects and implement IVisualElement.
unableToCreateRenderer=Could not create an item renderer for {0}.
addChildDataGroupError=DataGroup manages its own display objects, and you should not call addChild() directly. To add, remove, or swap items, modify the dataProvider.
addChildAtDataGroupError=DataGroup manages its own display objects, and you should not call addChildAt() directly. To add, remove, or swap items, modify the dataProvider.
removeChildDataGroupError=DataGroup manages its own display objects, and you should not call removeChild() directly. To add, remove, or swap items, modify the dataProvider.
removeChildAtDataGroupError=DataGroup manages its own display objects, and you should not call removeChildAt() directly. To add, remove, or swap items, modify the dataProvider.
setChildIndexDataGroupError=DataGroup manages its own display objects, and you should not call setChildIndex() directly. To add, remove, or swap items, modify the dataProvider.
swapChildrenDataGroupError=DataGroup manages its own display objects, and you should not call swapChildren() directly. To add, remove, or swap items, modify the dataProvider.
swapChildrenAtDataGroupError=DataGroup manages its own display objects, and you should not call swapChildrenAt() directly. To add, remove, or swap items, modify the dataProvider.
	
# Application
viewSource=View Source

# VideoPlayer
videoPlayerVideoDisplayAccName=Video Player
videoPlayerPlayButtonAccName=Play,Pause
videoPlayerScrubBarAccName=Scrub
videoPlayerMuteButtonAccName=Not Muted,Muted
videoPlayerVolumeBarAccName=Volume
videoPlayerFullScreenButtonAccName=Full screen

# SkinnableComponent
skinNotFound=Skin for {0} cannot be found.
requiredSkinPartNotFound=Required skin part {0} cannot be found.

# SkinnableComponent, Group
addChildError=addChild() is not available in this class. Instead, use addElement() or modify the skin, if you have one.
addChildAtError=addChildAt() is not available in this class. Instead, use addElementAt() or modify the skin, if you have one.
removeChildError=removeChild() is not available in this class. Instead, use removeElement() or modify the skin, if you have one.
removeChildAtError=removeChildAt() is not available in this class. Instead, use removeElementAt() or modify the skin, if you have one.
setChildIndexError=setChildIndex() is not available in this class. Instead, use setElementIndex() or modify the skin, if you have one.
swapChildrenError=swapChildren() is not available in this class. Instead, use swapElements() or modify the skin, if you have one.
swapChildrenAtError=swapChildrenAt() is not available in this class. Instead, use swapElementsAt() or modify the skin, if you have one.

# HGroup, VGroup
layoutReadOnly=You are not allowed to change the layout for this class.  It is read-only.

# Scroller
elementNotFoundInScroller={0} is not found in this Scroller.
operationNotSupported=This operation is not supported.
operationSupportedForOneAxisOnly=This operation is only supported when scrolling either horizontally or vertically, but not both.
operationRequiresViewportLayout=This operation requires that the viewport have a layout.
operationRequiresSnappingMode=This operation requires scrollSnappingMode to be set to something other than NONE.  

# Group
cannotAddYourselfAsYourChild=Cannot add an element as a child of itself.
elementNotFoundInGroup={0} is not found in this Group.
mxmlElementNoMultipleParents=MXML element {0} can only have one parent.
scaleGridGroupError=ScaleGrid properties can not be set on this Group since at least one child element is a DisplayObject.

# Scroller, Group
indexOutOfRange=Index {0} is out of range.

# DisplayLayer
objectNotFoundInDisplayLayer={0} is not found in this DisplayLayer.

# Slider
sliderPageUpAccName=Page up
sliderPageDownAccName=Page down
sliderPageLeftAccName=Page left
sliderPageRightAccName=Page right
sliderPositionAccName=Position

# Spinner
spinnerLessAccName=Less
spinnerMoreAccName=More

# ToggleSwitch
toggleSwitchSelectedLabel=ON
toggleSwitchUnselectedLabel=OFF

# StyleableTextField
styleSheetError=This method or property cannot be used on a text field with a style sheet.

