################################################################################
##
##  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 = Rad %1 av %2
sortedAscending = Sorteras
sortedDescending = Sorteras fallande
sortLevel = Nivå %1

# DataGroup
cannotDisplayVisualElement=DataGroup kan inte visa visuella objekt direkt, såvida de inte är visningsobjekt som implementerar IVisualElement.
unableToCreateRenderer=Det gick inte att skapa objektsrenderare för {0}.
addChildDataGroupError=DataGroup hanterar sina egna visningsobjekt. Anropa därför inte addChild() direkt. Ändra dataProvider om du vill lägga till, ta bort eller växla objekt.
addChildAtDataGroupError=DataGroup hanterar sina egna visningsobjekt. Anropa därför inte addChildAt() direkt. Ändra dataProvider om du vill lägga till, ta bort eller växla objekt.
removeChildDataGroupError=DataGroup hanterar sina egna visningsobjekt. Anropa därför inte removeChild() direkt. Ändra dataProvider om du vill lägga till, ta bort eller växla objekt.
removeChildAtDataGroupError=DataGroup hanterar sina egna visningsobjekt. Anropa därför inte removeChildAt() direkt. Ändra dataProvider om du vill lägga till, ta bort eller växla objekt.
setChildIndexDataGroupError=DataGroup hanterar sina egna visningsobjekt. Anropa därför inte setChildIndex() direkt. Ändra dataProvider om du vill lägga till, ta bort eller växla objekt.
swapChildrenDataGroupError=DataGroup hanterar sina egna visningsobjekt. Anropa därför inte swapChildren() direkt. Ändra dataProvider om du vill lägga till, ta bort eller växla objekt.
swapChildrenAtDataGroupError=DataGroup hanterar sina egna visningsobjekt. Anropa därför inte swapChildrenAt() direkt. Ändra dataProvider om du vill lägga till, ta bort eller växla objekt.
	
# Application
viewSource=Visa källa

# VideoPlayer
videoPlayerVideoDisplayAccName=Videospelare
videoPlayerPlayButtonAccName=Spela upp, pausa 
videoPlayerScrubBarAccName=Snabbspolning
videoPlayerMuteButtonAccName=Ljud aktiverat, ljud avstängt
videoPlayerVolumeBarAccName=Volym
videoPlayerFullScreenButtonAccName=Helskärm

# SkinnableComponent
skinNotFound=Skalet för {0} hittades inte.
requiredSkinPartNotFound=Delen {0} av skalet är obligatorisk, men hittades inte.

# SkinnableComponent, Group
addChildError=addChild() är inte tillgänglig i den här klassen. Du bör istället ändra skalet (om du har något) med addElement().
addChildAtError=addChildAt() är inte tillgänglig i den här klassen. Du bör istället ändra skalet (om du har något) med addElementAt().
removeChildError=removeChild() är inte tillgänglig i den här klassen. Du bör istället ändra skalet (om du har något) med removeElement().
removeChildAtError=removeChildAt() är inte tillgänglig i den här klassen. Du bör istället ändra skalet (om du har något) med removeElementAt().
setChildIndexError=setChildIndex() är inte tillgänglig i den här klassen. Du bör istället ändra skalet (om du har något) med setElementIndex().
swapChildrenError=swapChildren() är inte tillgänglig i den här klassen. Du bör istället ändra skalet (om du har något) med swapElements().
swapChildrenAtError=swapChildrenAt() är inte tillgänglig i den här klassen. Du bör istället ändra skalet (om du har något) med swapElementsAt().

# HGroup, VGroup
layoutReadOnly=Det går inte att ändra layout för den här klassen.  eftersom den är skrivskyddad.

# Scroller
elementNotFoundInScroller={0} hittades inte i denna Scroller.
operationNotSupported=Det finns inte stöd för åtgärden.
operationSupportedForOneAxisOnly=Den här åtgärden stöds endast när bläddring sker antingen vågrätt eller lodrätt, men inte både och.
operationRequiresViewportLayout=Den här åtgärden kräver att visningsrutan har en layout.
operationRequiresSnappingMode=Den här åtgärden kräver att scrollSnappingMode har ett annat värde än NONE.  

# Group
cannotAddYourselfAsYourChild=Det går inte att lägga till ett element som är underordnat sig själv.
elementNotFoundInGroup={0} hittades inte i gruppen.
mxmlElementNoMultipleParents=MXLM-element {0} kan endast ha en överordnad.
scaleGridGroupError=Det går inte att ange egenskaper för ScaleGrid i den här gruppen eftersom ett eller flera underordnade element är DisplayObject.

# Scroller, Group
indexOutOfRange=Index {0} är utanför intervallet.

# DisplayLayer
objectNotFoundInDisplayLayer={0} hittades inte i detta DisplayLayer.

# Slider
sliderPageUpAccName=En sida upp
sliderPageDownAccName=En sida ned
sliderPageLeftAccName=En sida åt vänster
sliderPageRightAccName=En sida åt höger
sliderPositionAccName=Position

# Spinner
spinnerLessAccName=Mindre
spinnerMoreAccName=Mer

# ToggleSwitch
toggleSwitchSelectedLabel=ON
toggleSwitchUnselectedLabel=OFF

# StyleableTextField
styleSheetError=Den här metoden eller egenskapen kan inte användas för ett textfält med en formatmall.

# FormItem
formItemRequired=Krävs
