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

# flex2.tools
Mxmlc.OutputMessage=${name} (${length} byte)
Compc.OutputMessage=${name} (${length} byte)
Compiler.NoUpdateMessage=${name} \u00e4r aktuell och beh\u00f6ver inte kompileras om.
Compc.NoUpdateMessage=${name} \u00e4r aktuell och beh\u00f6ver inte kompileras om.
CompcPreLink.HigherMinimumSupportedVersionRequired=SWC-filen ${swc} \u00e4r endast kompatibel med version ${swcMinimumSupportedVersion} eller senare. 
CompcPreLink.PotentialForMissingSkins=SWC-filen ${swc} har standardstilar och finns i library-path, vilket inneb\u00e4r att beroenden kommer att l\u00e4nkas in utan stilarna. Detta kan medf\u00f6ra att program som anv\u00e4nder den utg\u00e5ende SWC-filen saknar skal. SWC-filen b\u00f6r placeras i external-library-path.
PreLink.DependencyNotCompatible=Beroendet ${definition} fr\u00e5n ${swc} st\u00f6ds i version ${swcMinimumVersion} eller senare, vilket \u00e4r h\u00f6gre \u00e4n kompatibilitetsversionen ${compatibilityVersion}.
PreLink.NoExternalVisibleDefinition=M\u00e5lfilen har inte n\u00e5gon externt synlig definition
PreLink.MissingFactoryClassInFrameMetadata=Denna kompileringsenhet saknade factoryClass i Frame-metadata, varf\u00f6r de konfigurerade delade k\u00f6rningsbiblioteken inte kunde l\u00e4sas in. Om du vill kompilera utan delade k\u00f6rningsbibliotek anger du -static-link-runtime-shared-libraries som sant eller tar bort alternativet -runtime-shared-libraries.
PreLink.InvalidBackgroundColor=Ogiltig bakgrundsf\u00e4rg: ${backgroundColor}
PreLink.CouldNotParseNumber=Kunde inte analysera '${num}' som tal f\u00f6r ${attribute}.
PreLink.MissingSignedLibraryDigest=N\u00e5gra signerade sammanfattningar har inte hittats i bibliotekets catalog.xml-fil, ${libraryPath}. Kompilera biblioteket med -create-digest=true och f\u00f6rs\u00f6k igen.
PreLink.MissingUnsignedLibraryDigest=N\u00e5gra osignerade sammanfattningar har inte hittats i bibliotekets catalog.xml-fil, ${libraryPath}. Kompilera biblioteket med -create-digest=true och f\u00f6rs\u00f6k igen.
PreLink.ClassesMappedToSameRemoteAlias=En mappning f\u00f6r "${existingClassName}" till fj\u00e4rrklassaliasen "${alias}" hittades n\u00e4r klassen "${className}" bearbetades. Flex genererar nu kod f\u00f6r att kontrollera om ett alias redan har registrerats. N\u00e4r fj\u00e4rrdata avserialiseras kan endast ett alias mappas till en enstaka klass. 
PreLink.RequiredRsls=Obligatoriska RSL:er:
PreLink.RequiredRslUrl=\u0020\u0020\u0020\u0020${rslUrl}
PreLink.RequiredRslUrlWithFailover=\u0020\u0020\u0020\u0020${rslUrl} med 1 automatisk reserv (failover).
PreLink.RequiredRslUrlWithMultipleFailovers=\u0020\u0020\u0020\u0020${rslUrl} med ${failoverCount} automatiska reserver (failoveradresser).
PreLink.CompiledAsAComponent=${className} \u00e4r en modul eller ett program som refereras direkt. Detta g\u00f6r att ${className} och allt som har en beroenderelation till den l\u00e4nkas till ${mainDefinition}. Att anv\u00e4nda ett gr\u00e4nssnitt brukar rekommenderas f\u00f6r att detta ska undvikas.
ToolsConfiguration.FailedToLoadLicenseFile=Det gick inte att l\u00e4sa in licensfilen: ${fileName}
ToolsConfiguration.BadAS3ESCombination=Ogiltig -as3 och -es-kombination. -as3=${as3} och -es=${es}. Endera av dem kan vara sann.
ToolsConfiguration.BadESStrictCombination=-es=${es} och -strict=${strict}. -strict \u00e4r till\u00e5tet, men kan resultera i kompileringsfel f\u00f6r referenser till dynamiska egenskaper.
ToolsConfiguration.DeprecatedConfigurationOption=${var}' har ersatt since ${since}. Anv\u00e4nd '${replacement}'.
Optimizer.NotAValidSwfFile=${fileName} \u00e4r inte en giltig SWC-fil.
