################################################################################
##
##  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} er opdateret og skal ikke bygges igen.
Compc.NoUpdateMessage=${name} er opdateret og skal ikke bygges igen.
CompcPreLink.HigherMinimumSupportedVersionRequired=Swc '${swc}' kr\u00e6ver som minimum at ${swcMinimumSupportedVersion} er den underst\u00f8ttede version. 
CompcPreLink.PotentialForMissingSkins=Swc '${swc}' har typestandarder og findes i library-path, hvilket betyder, at afh\u00e6ngigheder bliver sammenk\u00e6det uden typerne.  Dette kan betyde, at der er programmer, der bruger output-swc, der mangler temaer.  Swc'en b\u00f8r placeres i external-library-path.
PreLink.DependencyNotCompatible=Afh\u00e6ngigheden ${definition} fra ${swc} har ${swcMinimumVersion} som minimumsv\u00e6rdi for underst\u00f8ttet version, hvilket er h\u00f8jere end kompatibilitetsversionen, nemlig ${compatibilityVersion}.
PreLink.NoExternalVisibleDefinition=M\u00e5lfilen har ingen eksternt synlig definition.
PreLink.MissingFactoryClassInFrameMetadata=Denne kompileringsenhed har ingen angivet factoryClass i Frame-metadata til indl\u00e6sning af de konfigurerede delte biblioteker p\u00e5 k\u00f8rselstidspunktet. Hvis du vil kompilere uden delte biblioteker p\u00e5 k\u00f8rselstidspunktet, skal du enten indstille -static-link-runtime-shared-libraries til true eller fjerne -runtime-shared-libraries.
PreLink.InvalidBackgroundColor=Ugyldig baggrundsfarve: ${backgroundColor}
PreLink.CouldNotParseNumber='${num}' kan ikke fortolkes som et tal for ${attribute}.
PreLink.MissingSignedLibraryDigest=Ingen signeret digest blev fundet i catalog.xml i biblioteket, ${libraryPath}. Kompiler biblioteket med -create-digest=true, og pr\u00f8v igen.
PreLink.MissingUnsignedLibraryDigest=Ingen usigneret digest blev fundet i catalog.xml i biblioteket, ${libraryPath}. Kompiler biblioteket med -create-digest=true, og pr\u00f8v igen.
PreLink.ClassesMappedToSameRemoteAlias=Der blev fundet en tilknytning af '${existingClassName}' til fjernklassealiaset '${alias}' under behandling af klassen '${className}'. Flex genererer nu kode, for at kontrollere om et alias allerede er blevet registreret. N\u00e5r fjerndatas serieorden opl\u00f8ses, kan et alias kun knyttes til en enkelt klasse.
PreLink.RequiredRsls=P\u00e5kr\u00e6vede RSL'er:
PreLink.RequiredRslUrl=\u0020\u0020\u0020\u0020${rslUrl}
PreLink.RequiredRslUrlWithFailover=\u0020\u0020\u0020\u0020${rslUrl} med 1 i reserve.
PreLink.RequiredRslUrlWithMultipleFailovers=\u0020\u0020\u0020\u0020${rslUrl} med ${failoverCount} i reserve.
PreLink.CompiledAsAComponent=${className} er et modul eller en applikation, der henvises til direkte. Det vil f\u00e5 ${className} og alt, hvad der afh\u00e6nger af den, til at blive knyttet til ${mainDefinition}. Hvis du benytter en brugerflade, frar\u00e5des dette.
ToolsConfiguration.FailedToLoadLicenseFile=Licensfilen kunne ikke indl\u00e6ses: ${fileName}
ToolsConfiguration.BadAS3ESCombination=Ugyldig kombination af -as3 og -es. -as3=${as3} og -es=${es}. Den ene af dem kan v\u00e6re 'true'.
ToolsConfiguration.BadESStrictCombination=-es=${es} og -strict=${strict}. -strict er tilladt, men kan medf\u00f8re kompileringsfejl i referencer til dynamiske egenskaber.
ToolsConfiguration.DeprecatedConfigurationOption='${var}' har v\u00e6ret frar\u00e5det siden ${since}. Brug '${replacement}'.
Optimizer.NotAValidSwfFile=${fileName} er ikke en gyldig SWF-fil
