<?xml version='1.0' encoding='utf-8' standalone='no' ?>
<!--

  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.

-->


<!--  

   Note that error id="1179" does not need to be translated, its for internal use only.
-->

<errors>
	<error id="1000" label="kError_AmbiguousReference">Tvetydig referens till %s.
	<description><![CDATA[
	A reference might be to more than one item. For example, the following uses the namespaces <code>rss</code> and <code>xml</code>, each of which defines a 
	different value for the <code>hello()</code> function. The 		
	<code>trace(hello())</code> statement returns this error because it cannot determine which namespace to use.<br>
	
<pre><code>private namespace rss;
private namespace xml;
    
public function ErrorExamples() {
  	use namespace rss;
   	use namespace xml;
	trace(hello());
}
    
rss function hello():String {
      	return "hola";
    }
    
    xml function hello():String {
        return "foo";
    }</code></pre>
 

	<p>Correct an ambiguous reference by making the reference specific. The following example 	uses the form <i>namespace</i>::<i>function</i> to specify 
	which namespace to use:


<pre><code>public function ErrorExamples() {
    
    trace(rss::hello());
    trace(xml::hello());
}</code></pre>
        
	]]>
	</description>

</error>
	<error id="1003" label="kError_NamespaceAccessSpecifiers">Åtkomstspecifikationer är inte tillåtna med namnutrymmesattribut.
		<description>You can not use both an access specifier (such as private or public) and a namespace attribute on a definition.</description></error>
	<error id="1004" label="kError_Unknown_Namespace">Namnutrymmet hittades inte eller är inte en kompileringskonstant.
	
<description><![CDATA[
		The namespace is either unknown or is an expression that could have different values at run time.
		Check that you are spelling the namespace correctly and that its definition is imported correctly.]]></description>
</error>

	<error id="1006" label="kError_InvalidSuperExpression">Ett superuttryck får bara användas inuti metoder för klassförekomster.</error>
	<error id="1007" label="kError_InvalidSuperStatement">En superprogramsats får bara användas i konstruktorer för klassförekomster.
<description><![CDATA[
		You cannot use the <code>super</code> statement within static members. You can 
		use the <code>super</code> statement only within class instances.
	]]>
	</description>
</error>
	<error id="1008" label="kError_InvalidAttribute">Attributet är ogiltigt.</error>
	<error id="1010" label="kError_InvalidOverride">Attributet override får bara användas på definitioner av klassegenskaper.
<description><![CDATA[
		You cannot use the <code>override</code> keyword within a function block.
	]]></description>

</error>
	<error id="1011" label="kError_InvalidVirtual">Attributet virtual får bara användas på definitioner av klassegenskaper.
<description><![CDATA[
		You cannot use the <code>virtual</code> attribute when you declare a property that does not belong to a class 
		(for example, when you declare a variable within a function block).
	]]></description>
</error>
	<error id="1012" label="kError_InvalidStatic">Attributet static får bara användas på definitioner i en klass.</error>
	<error id="1013" label="kError_InvalidPrivate">Attributet private får bara användas på definitioner av klassegenskaper.</error>
	<error id="1014" label="kError_Unsupported_Intrinsic">Attributet intrinsic stöds inte längre.
<description>
		ActionScript 3.0 does not support the <code>intrinsic</code> keyword.
	</description>

</error>
	<error id="1016" label="kError_BaseClassIsFinal">Basklassen är final.
<description><![CDATA[
		The superclass cannot be extended because it is marked 
		as <code>final</code>.
	]]></description>

</error>
	<error id="1017" label="kError_UnknownBaseClass">Definitionen för basklass %s hittades inte.</error>
	<error id="1018" label="kError_DuplicateClassDefinition">Klassdefinitionen är en dubblett: %s.</error>
	<error id="1020" label="kError_OverrideNotFound">En metod som är markerad som override måste åsidosätta en annan metod.</error>
	<error id="1021" label="kError_DuplicateFunction">Funktionsdefinition är en dubblett.
<description>
		You cannot declare more than one function with the same identifier name within the same scope.
	</description>

</error>
	<error id="1022" label="kError_OverrideFinalAccessor">Det går inte att åsidosätta en åtkomst av typen final.</error>
	<error id="1023" label="kError_IncompatibleOverride">Inkompatibel åsidosättning.
<description> A function marked override must exactly match the parameter and return type declaration of the function it is overriding. 
It must have the same number of parameters, each of the same type, and declare the same return type.  If any of the parameters are optional, that
must match as well.  Both functions must use the same access specifier (public, private, and so on) or namespace attribute as well.</description></error>
	<error id="1024" label="kError_OverrideOfFuncNotMarkedForOverride">Åsidosätter en funktion som inte är markerad för åsidosättning.
<description>
		<![CDATA[
		If a method in a class overrides a method in a base class, you must explicitly declare it by using the <code>override</code> attribute, as this example shows:

		<pre>public override function foo():void{};</pre>
	]]>
	</description>

</error>
	<error id="1025" label="kError_FinalMethodRedefinition">Det går inte att omdefiniera en final metod.
<description><![CDATA[
		The method cannot be extended because it is marked
		as <code>final</code> in the base class.
	]]></description>

</error>
	<error id="1026" label="kError_ConstructorsMustBeInstanceMethods">Konstruktorfunktioner måste vara förekomstmetoder.</error>
	<error id="1027" label="kError_FuncIsStaticAndOverride">Funktioner kan inte vara både static och override.</error>
	<error id="1028" label="kError_FuncIsStaticAndVirtual">Funktioner kan inte vara både static och virtual.</error>
	<error id="1029" label="kError_FuncIsVirtualAndFinal">Funktioner kan inte vara både final och virtual.</error>
	<error id="1030" label="kError_RestParameterNotNamed">Du måste ange namnet på arrayen med argumentvariabler.
<description>
	<![CDATA[
		The ...(rest) parameter definition specifies that all values supplied after ...(rest) 
		are collected into any array.  
		You must specify a name for the array, as in the expression 
		<code>function foo(x,...(rest))</code>.

	]]>
	</description>

</error>
	<error id="1033" label="kError_VirtualVars">Virtuella variabler stöds inte.</error>
	<error id="1034" label="kError_NativeVars">Variabler kan inte vara interna.</error>
	<error id="1035" label="kError_VarIsFinalAndVirtual">Variabler kan inte vara både final och virtual.</error>
	<error id="1037" label="kError_NestedPackage">Paket kan inte vara inkapslade.</error>
	<error id="1038" label="kError_BreakHasNoTarget">Målet för programsatsen break hittades inte.</error>
	<error id="1039" label="kError_ContinueHasNoTarget">Målet för programsatsen continue hittades inte.</error>
	<error id="1040" label="kError_DuplicateLabel">Duplicerad etikettsdefinition.</error>
	<error id="1041" label="kError_AttributesAreNotCallable">Det går inte att anropa attribut.</error>
	<error id="1042" label="kError_ThisUsedInStaticFunction">Nyckelordet this kan inte användas i statiska metoder. Det kan bara användas i förekomstmetoder, funktionsslut och global kod.
<description>
	<![CDATA[
		You cannot use the <code>this</code> keyword within a static member, because 
		<code>this</code> would have no context.
	]]>
	</description>


</error>
	<error id="1043" label="kError_UndefinedNamespace">Odefinierat namnutrymme.</error>
	<error id="1044" label="kError_UnknownInterfaceMethod">Gränssnittsmetoden %s i namnutrymmet %s implementerades inte av klassen %s.</error>
	<error id="1045" label="kError_UnknownInterface">Gränssnittet %s hittades inte.</error>
	<error id="1046" label="kError_UnknownType">Typen hittades inte eller är inte en kompileringskonstant: %s.
<description>
		<![CDATA[
		The class used as a type declaration is either unknown or is an expression that could have different values at run time.
		Check that you are importing the correct class and that its package location
		has not changed. Also, check that the package that contains the code (not the
		imported class) is defined correctly (for example, make sure to use proper
		ActionScript 3.0 package syntax, and not ActionScript 2.0 syntax).</p>

		<p>The error can also occur if the class being referenced is not defined in a namespace that is in use or is not defined as public:</p>

		<pre><code>public class Foo{}</code></pre>

        <span class="flexonly"><p>If you are using Flex&#153 Builder&#153 2 and the class is in a library,
		make sure to set the class path for the project.</p></span>


	]]>
	</description>


</error>
	<error id="1047" label="kError_NonConstantParamInitializer">Parameterinitieraren är okänd eller är inte en kompileringskonstant.
	
	<description><![CDATA[
	The value used as the default value for the parameter is either undefined or could have different values at run time. Check that the initializer is spelled 
	correctly, and that the initializer value isn't an expression that could result in different possible values at run time.
	]]></description>
</error>
	
	<error id="1048" label="kError_MethodIsNotAConstructor">Metoden kan inte användas som en konstruktor.
	
	<description><![CDATA[
	It is not possible to create an instance of a method of a class.  Only global functions can be used in <code>new</code> expressions.
	
<pre>class D { function xx() { return 22; } }
var d:D = new D();
var x = new d.xx(); // error, method cannot be used as constructor
function yy() { this.a = 22; }
var z = new yy(); // no error, global functions can be used as constructors.</pre>

	]]></description>	
</error>
	<error id="1049" label="kError_AssignmentToConstVar">Ogiltig tilldelning till en variabel som angetts som constant.</error>
	<error id="1050" label="kError_AssignmentToNonRefVar">Det går inte att tilldela till icke-referensvärden.</error>
	<error id="1051" label="kError_ReturnTypeMustBeUndefined">Returvärdet måste vara odefinierat.
<description><![CDATA[
		You are attempting to use the <code>return</code> statement within a method that
		has a declared return type <code>void</code>.
	]]></description>


</error>
	<error id="1052" label="kError_ConstInitializerNotConst">Konstantinitieraren är okänd eller är inte en kompileringskonstant.

	<description><![CDATA[
	The value used to initialize the constant is either undefined or could have different values at run time. Check that the initializer is spelled 
	correctly, and that the initializer value isn't an expression that could result in different possible values at run time.
	]]></description>

</error>
	<error id="1053" label="kError_AccessorTypesMustMatch">Åtkomstyperna måste matcha.</error>
	<error id="1054" label="kError_BadSetterReturnType">Returtypen för en set-definition måste vara ospecificerad eller void.
<description><![CDATA[
		You cannot specify a return value for a setter function. For example, the following is invalid:

		<pre>public function set gamma(g:Number):Number;</pre>

		<p>The following <em>is</em> valid:</p>

		<pre>public function set gamma(g:Number):void;</pre>
	]]></description>

</error>
	<error id="1058" label="kError_PropertyIsWriteOnly">Egenskapen är lässkyddad.</error>
	<error id="1059" label="kError_PropertyIsReadOnly">Egenskapen är skrivskyddad.

	<description><![CDATA[
	This property is defined through a getter function, which allows you to retrieve that property's value. There is no setter function defined 
	for this property, however, so it is read-only.
	<p>In the following example, line 3 generates an error because there is no setter function defined for <code>xx</code>:
	
<pre>class D { function get xx() { return 22; } }
var d:D = new D();
d.xx = 44; // error, property is read-only</pre>
	]]></description>

</error>
	<error id="1061" label="kError_Strict_UndefinedMethod">Anrop till den möjligen odefinierade metoden %s via en referens med den statiska typen %s.

	<description><![CDATA[
	You are calling a method that is not defined.
	]]></description>

</error> <!-- edited -->
	<error id="1063" label="kError_UnableToOpenFile">Det går inte att öppna filen: %s.</error>
	<error id="1064" label="kError_InvalidMetaData">Ogiltiga metadata.
	<description><![CDATA[
	This metadata is unrecognized.
	]]></description>


</error>
	<error id="1065" label="kError_MetaDataAttributesHasMoreThanOneElement">Attribut för metadata får inte ha fler än ett element.</error>
	<error id="1067" label="kError_ImplicitCoercisionOfUnrelatedType">Implicit tvång för ett värde av typen %s till den orelaterade typen %s.
<description><![CDATA[
		You are attempting to cast an object to a type to which it cannot be converted. This can happen
		if the class you are casting to is not in the inheritance chain of the object being cast.
		This error appears only when the compiler is running in strict mode.
	]]></description>


</error>
	<error id="1068" label="kError_Parser_UnableToOpenFile">Det går inte att öppna den inkluderade filen: %s.</error>
	<error id="1069" label="kError_Parser_DefinitionOrDirectiveExpected">Syntaxfel: definition eller ett direktiv förväntades.

<description>
		Check the syntax in the line.
	</description>

</error>
	<error id="1071" label="kError_Parser_ExpectingAnnotatableDirectiveAfterAttributes">Syntaxfel: ett definitionsnyckelord förväntades (till exempel en funktion) efter attributet %s, inte %s.
<description>
	<![CDATA[
		This error will occur if the author forgets to use the "var" or "function" keyword in a declaration.
<pre><code>public int z;// should be 'public var z:int;'</code></pre>

		This error might also occur when the compiler encounters an unexpected character. For example,
		the following use of the <code>trace()</code> function is invalid, because of the missing
		parentheses (the correct syntax is <code>trace("hello")</code>):

<pre>
trace "hello"
</pre>
	]]>
	</description>

</error>
	<error id="1072" label="kError_Parser_ExpectedXMLBeforeNameSpace">Syntaxfel: xml förväntades före namnutrymmet.
<description>
	<![CDATA[
		The correct statement syntax is <code>default xml namespace = </code> <em>ns</em>. Either the keyword <code>xml</code> (note the lowercase) 
		is missing or an incorrect keyword was used. For more
		information, see the <a href="statements.html#default_xml_namespace">default xml namespace</a>
		directive.
	]]>
	</description>

</error>
	<error id="1073" label="kError_Parser_ExpectingCatchOrFinally">Syntaxfel: en catch- eller finally-sats förväntades.</error>
	<error id="1075" label="kError_Parser_EachWithoutIn">Syntaxfel: nyckelordet 'each' är inte tillåtet utan operatorn 'in'.</error>
	<error id="1076" label="kError_Parser_ExpectedLeftParen">Syntaxfel: vänster parentes förväntades före identifieraren.</error>
	<error id="1077" label="kError_Parser_ExpectedCaseLabel">CaseLabel förväntades.

	<description><![CDATA[
	The compiler expected a <code>case</code> statement at this point in the switch block. The 	following switch block incorrectly includes a call to <code>print</code> before the first </code><code>case</code> statement:

<pre>switch(x)
{
trace(2);
case 0:  trace(0); 
break
}</pre>
	]]>
    </description>
</error>
	<error id="1078" label="kError_Parser_LabelIsNotIdentifier">Etiketten måste vara en enkel identifierare.</error>
	<error id="1079" label="kError_Parser_WrongNumberOfSuperArgs">Ett superuttryck måste ha en operand.</error>
	<error id="1080" label="kError_Parser_ExpectingIncrOrDecrOperator">Öknings- eller minskningsoperator förväntades.</error>
	<error id="1082" label="kError_Parser_ExpectingASingleExpressionWithinParenthesis">Ett enda uttryck inom parentes förväntades.</error>
	<error id="1083" label="kError_Parser_ExpectedPrimaryExprBefore">Syntaxfel: %s förväntades inte.

<description>
	<![CDATA[
		The line of code is missing some information. In the following example,
		some expression (such as another number) needs to be included after the final plus sign:

		<pre>var sum:int = 1 + 2 + ;</pre>
	]]>
	</description>

</error>
	<error id="1084" label="kError_Parser_ExpectedToken">Syntaxfel: %s förväntades före %s.
<description>
	<![CDATA[
		The expression was unexpected at this point.
		If the error says "Expecting right brace before end of program," a block of code
		is missing a closing brace (&#125).

		<p>If the error says "Expecting left parenthesis before _," you may have omitted a  
		parenthesis from a conditional expression, as shown in the following example, which is intentionally incorrect: </p>

		<pre><code>var fact:int = 1 * 2 * 3;
if fact &gt; 2 {
	var bigger:Boolean = true;
}</code></pre>
	]]>
	</description>


</error>
	<error id="1086" label="kError_Parser_ExpectedSemicolon">Syntaxfel: semikolon förväntades före %s.</error>
	<error id="1087" label="kError_Parser_ExtraCharsAfterEndOfProgram">Syntaxfel: extra tecken hittades efter programslutet.</error>
	<error id="1093" label="kError_Lexical_General">Syntaxfel.</error>
	<error id="1094" label="kError_Lexical_LineTerminatorInSingleQuotedStringLiteral">Syntaxfel: Stränglitteralen måste avslutas före radbrytningen.</error>
	<error id="1095" label="kError_Lexical_LineTerminatorInDoubleQuotedStringLiteral">Syntaxfel: Stränglitteralen måste avslutas före radbrytningen.</error>
	<error id="1097" label="kError_Lexical_EndOfStreamInStringLiteral">Syntaxfel: indata tog slut före det avslutande citattecknet för en stränglitteral.</error>
	<error id="1099" label="kError_Lexical_SyntaxError">Syntaxfel.</error>
	<error id="1100" label="kError_Lexical_NoMatchingTag">Syntaxfel: XML har inte matchande start- och sluttaggar.</error>
	<error id="1102" label="kError_CannotDeleteSuperDecendants">Det går inte att ta bort underordnade objekt till super.</error>
	<error id="1103" label="kError_DuplicateNamespaceDefinition">Duplicerad namnutrymmesdefinition.

	<description><![CDATA[
	You defined the namespace more than once. Delete or modify the duplicate definition.
	]]></description>


</error>
	<error id="1104" hidden="true" label="kError_ErrorNodeError"> %s </error>
	<error id="1105" label="kError_AssignmentTargetNotRefVal">Tilldelningens mål måste vara ett referensvärde.

	<description><![CDATA[
	You can assign a value to a variable, but you cannot assign a value to another value. 
	]]></description> 
</error>
	<error id="1106" label="kError_IncrementOperatorNotAReference">Ökningsoperanden måste vara en referens.
	<description><![CDATA[
	The operand must be a variable, an element in an array, or a property of an object.
	]]></description>
</error>
	<error id="1107" label="kError_InvalidIncrementOperand">Ogiltig ökningsoperand.

	<description><![CDATA[
	The operand must be a variable, an element in an array, or a property of an object.
	]]></description>
</error>
	<error id="1108" label="kError_InvalidDecrementOperand">Ogiltig minskningsoperand.
	<description><![CDATA[
	The operand must be a variable, an element in an array, or a property of an object.
	]]></description>
</error>
	<error id="1109" label="kError_ExpectingExpression">Ett uttryck förväntades.

<description>
	<![CDATA[
		An expression is missing in a part of the code. For example, the following produces this
		error (there is a condition missing from the <code>if</code> statement:

<pre><code>var x = (5 &gt; 2) ? 
trace(x)</code></pre>
	]]>
	</description>


</error>
	<error id="1110" label="kError_MissingXMLTagName">Namnet på en XML-tagg saknas.</error>
	<error id="1111" hidden="true" label="kError_InvalidAbcFile">Filen %s är inte en giltig ABC-fil.</error>
    <error id="1112" label="kError_Parser_FileIncludesItself">Möjlig oändlig rekursion på grund av den här filen: %s.

	<description><![CDATA[
	A file that is included in the source being compiled contains other <code>include</code> 	statements that would cause an infinite loop. For example, the following files. a.as and 	b.as, generate this error because each file tries to include the other.
	<p>
	File a.as contains the following, which attempts to include the file b.as:
<pre>import foo.bar.baz;
include "b.as"
trace(2);</pre>
	<p>File b.as contains the following, which attempts to include the file a.as:
	<pre>include "a.as"</pre>

	]]></description>

</error>
	<error id="1113" label="kError_CircularReference">Cirkulär typreferens upptäcktes i %s.
	<description><![CDATA[
	A class is trying to extend a superclass. For example, class A cannot extend class B if B inherits from A:
<pre><code>class a extends b { }
class b extends a { }</code></pre>
	]]></description>

</error>
	<error id="1114" label="kError_InvalidPublic">Attributet public får bara användas i ett paket.</error>
	<error id="1115" label="kError_InvalidInternal">Attributet internal får bara användas i ett paket.</error>
	<error id="1116" label="kError_InvalidNamespace">Ett användardefinierat namnutrymmesattribut kan bara användas på den högsta nivån i en klassdefinition.</error>
	<error id="1118" label="kError_ImplicitCoercionToSubtype">Implicit tvång för ett värde av den statiska typen %s till den möjligen orelaterade typen %s.
	<description><![CDATA[You are using a value that is not of the expected type and no implicit coercion exists to convert it to the expected type.
	<p>Perhaps you are using a supertype where a subtype is expected. For example:
<pre><code>class A {}
var a:A = new A(); 
class B extends A { function f() }
var b : B = a // error</code></pre>
	<p>The last statement generates an error because it attempts to assign an object of type A to a variable of type B.
	<p>Similarly, the following defines the <code>foo()</code> function, which takes a parameter of type B. The statement <code> foo(a);</code> 
	generates an error because it attempts to use a parameter of type A:
<pre><code>function foo(x:B) { }
foo(a);</code></pre>
	<p>Also, the following statement generates an error because the returned value for 	<code>foo2()</code> must be type B:
	<pre><code>function foo2():B { return new A(); }</code></pre>
	]]></description>

</error>
	<error id="1119" label="kError_UndefinedProperty">Åtkomst till den möjligen odefinierade egenskapen %s via en referens med den statiska typen %s.


<description>
	<![CDATA[
		You are attempting to access a property that does not exist for the specified object. For example,
		the following code generates this error because an int object does not have a property named
		<code>assortment</code>:

<pre><code>var i:int = 44;
var str:String = i.assortment;</code></pre>

		This error appears only when the compiler is running in strict mode.
	]]>
	</description>


</error>
	<error id="1120" label="kError_UnfoundProperty">Åtkomst till den odefinierade egenskapen %s.

<description>
	<![CDATA[
		You are attempting to access an undefined variable. For example, if the variable
		<code>huh</code> has not been defined, a call to it generates this error:

<pre><code>huh = 55;</code></pre>

		This error can appear only when the compiler is running in strict mode.
	]]>
	</description>


</error>
    <error id="1121" label="kError_GetterCannotHaveParameters">En get-definition får inte ha några parametrar.</error>
    <error id="1122" label="kError_SetterMustHaveOneParameter">En set-definition måste ha exakt en parameter.</error>
    <error id="1123" label="kError_SetterCannotHaveOptional">En set-definition får inte ha valfria parametrar.</error>
    <error id="1124" label="kError_BadGetterReturnType">Returtypen för en get-definition får inte vara void.

	<description><![CDATA[
	A getter function simulates a variable. Because variables cannot be of type void, you cannot declare getter functions to return type void.
	]]></description>
</error>
    <error id="1125" label="kError_InterfaceMethodWithBody">Metoderna som är definierade i ett gränssnitt får inte har något innehåll.</error>
    <error id="1126" label="kError_FunctionWithoutBody">Funktionen har inget innehåll.</error>
    <error id="1127" label="kError_DuplicateAttribute">Attributet %s angavs flera gånger.

	<description><![CDATA[
	You specified an attribute more than once in the same statement. For example, the statement <code>public static public var x;</code> generates 
	this error because it specifies that the variable <code>x</code> is public twice. Delete duplicate declarations.
	]]></description>

</error>
    <error id="1129" label="kError_DuplicateInterfaceDefinition">Dubblett av gränssnittsdefinition: %s.

	<description><![CDATA[
	Change or delete the duplicate definitions.
	]]></description>

</error>
    <error id="1130" label="kError_CtorWithReturnType">En konstruktor kan inte ange en returtyp.</error>
    <error id="1131" label="kError_InvalidClassNesting">Klasser får inte kapslas in.</error>
    <error id="1132" label="kError_InvalidFinalUsage">Attributet final kan bara användas på en metod som är definierad i en klass.</error>
    <error id="1133" label="kError_InvalidNative">Attributet native kan bara användas med funktionsdefinitioner.</error>
    <error id="1134" label="kError_InvalidDynamic">Attributet dynamic kan bara användas med klassdefinitioner.</error>
    <error id="1135" label="kError_Parser_keywordInsteadOfTypeExpr">Syntaxfel: %s är inte en giltig typ.</error>
    <error id="1136" label="kError_WrongNumberOfArguments">Felaktigt antal argument.  %s.  förväntades
    <description><![CDATA[
	The function expects a different number of arguments than those you provided. For example, the 	following defines function <code>goo</code>, which has two arguments:
<pre>class A { static function goo(x:int,y:int) 
{ return(x+y); } }</pre>
	<p>The following statement would generate an error because it provides three arguments:
<pre>A.goo(1,2,3);</pre>
	]]></description>
</error>
    <error id="1137" label="kError_TooManyArguments">Felaktigt antal argument.  Högst %s förväntades.</error>
    <error id="1138" label="kError_BadRequiredParameter">Obligatoriska parametrar är inte tillåtna efter valfria parametrar.</error>
    <error id="1139" label="kError_VarInInterface">Variabeldeklarationer får inte förekomma i gränssnitt.</error>
    <error id="1140" label="kError_InvalidRestDecl">Parametrar som anges efter nyckelordet …rest i parameterdefinitionen kan bara ha datatypen Array.</error>
    <error id="1141" label="kError_CannotExtendInterface">En klass kan bara utöka en annan klass, inte ett gränssnitt.</error>
    <error id="1142" label="kError_CannotExtendClass">Ett gränssnitt kan bara utöka andra gränssnitt, men %s är en klass.
	<description><![CDATA[
	You are attempting to have the interface extend a class. An interface can only extend another 	interface.
	]]></description>

</error>
    <error id="1143" label="kError_InvalidOverrideUsage">Attributet override kan bara användas på en metod som är definierad i en klass.</error>
    <error id="1144" label="kError_IncompatibleInterfaceMethod">Gränssnittsmetoden %s i namnutrymmet %s implementerades med en inkompatibel signatur i klassen %s.

	<description><![CDATA[
	Method signatures must match exactly.
	]]></description>

</error>
    <error id="1145" label="kError_NativeMethodWithBody">Interna metoder får inte ha något innehåll.
	<description><![CDATA[
	You cannot use <code>native</code> because it is a reserved keyword.
	]]></description>

</error>
    <error id="1146" label="kError_ConstructorCannnotBeGetterSetter">En konstruktor får inte vara en get- eller set-metod.</error>
    <error id="1147" label="kError_MissingFilespec">Ingen AS-källfil har angetts.</error>
    <error id="1149" label="kError_CannotReturnFromStaticInit">Programsatsen return kan inte användas i statisk initieringskod.</error>
	<error id="1150" label="kError_InvalidProtected">Attributet protected får bara användas på definitioner av klassegenskaper.</error>
	<error id="1151" label="kError_ConflictingNameInNamespace">Konflikt med definitionen %s i namnutrymmet %s.

	<description><![CDATA[
	You cannot declare more than one variable with the same identifier name within the same scope unless all such variables are declared to be of 
	the same type. In ActionScript 3.0, different code 	blocks (such as those used in two <code>for</code> loops in the same function definition) are 	considered to be in the same scope. 
	<p>The following code example correctly casts the variable <code>x</code> as the same type:
<pre><code>function test()
{
	var x:int = 3;
	for(var x:int = 33; x &lt; 55; x++)
	trace(x);
	for(var x:int = 11; x &lt; 33; x++)
	trace(x)
}</code></pre>
	<p>The following code example generates an error because the type casting in the variable declaration and the <code>for</code> loops are different:
<pre><code>function test()
{
	var x:String = "The answer is";
	for(var x:int = 33; x &lt; 55; x++) // error
	trace(x);
	for(var x:unit = 11; x &lt; 33; x++) // error
	trace(x)
}</code></pre>
]]></description>


</error>
	<error id="1152" label="kError_ConflictingInheritedNameInNamespace"> Konflikt med den ärvda definitionen %s i namnutrymmet %s.</error>
    <error id="1153" label="kError_ConstructorMustBePublic">En konstruktor kan bara definieras som public.</error>
	<error id="1154" label="kError_ConflictingAccessSpecifiers">Endast en av public, private, protected och internal får anges för en definition.</error>
	<error id="1155" label="kError_InvalidNestedAccessor">Åtkomster får inte kapslas i andra funktioner.</error>
	<error id="1156" label="kError_CannotInstantiateInterface">Gränssnitt kan inte skapas med operatorn new.</error>
	<error id="1157" label="kError_BadAccessInterfaceMember">Gränssnittsmedlemmar får inte deklareras som public, private, protected eller internal.</error>
	<error id="1158" label="kError_Parser_ExpectedLeftBrace">Syntaxfel: vänsterklammer ({) före funktionsinnehållet saknas.</error>
    <error id="1159" label="kError_CannotReturnFromPackageInit">Programsatsen return kan inte användas i paketinitieringskod.</error>
    <error id="1160" label="kError_InvalidInterfaceNative">Attributet native kan inte användas i gränssnittsdefinitioner.
	<description><![CDATA[
	You cannot use <code>native</code> because it is a reserved keyword.
	]]></description>

</error>
    <error id="1162" label="kError_MultipleNamespaceAttributes">Endast ett namnutrymmesattribut får användas per definition.</error>
    <error id="1163" label="kError_ConflictingInheritedNameInInterface">Metoden %s står i konflikt med definitionen som har ärvts från gränssnittet %s.</error>
    <error id="1165" label="kError_InvalidInterfaceAttribute">Gränssnittsattributet %s är ogiltigt.</error>
    <error id="1166" label="kError_NamespaceInInterface">Namnutrymmesdeklarationer får inte förekomma i gränssnitt.</error>
    <error id="1167" label="kError_DuplicateImplements">Klassen %s implementerar gränssnittet %s flera gånger.

	<description><![CDATA[
	The class implements the same interface more than once. For example, the following generates this error because 
	class C implements interface A twice:

<pre><code>interface A {  public function f();  };
class C implements A,A {
public function f() { trace("f"); }
}</code></pre>
	
	<p>The correct implementing statement should be <code> class C implements A {</code>.
	]]></description>

</error>
    <error id="1168" label="kError_AssignmentToDefinedFunction">Ogiltig tilldelning till funktionen %s.

	<description><![CDATA[
	You are attempting to redefine a function. For example, the following defines the function 	<code>topLevel()</code> 
	to print the word "top". The second statement generates an error because it assigns a different return value to the function:
<pre><code>function topLevel() { trace("top"); }
topLevel = function() { trace("replacement works in ~");} // error</code></pre>
	]]></description>


</error>
    <error id="1169" label="kError_InterfaceNamespaceAttribute">Namnutrymmesattribut tillåts inte för gränssnittsmetoder.</error>
    <error id="1170" label="kError_MustReturnValue">Funktionen returnerar inget värde.

	<description><![CDATA[
	Every possible control flow in a function must return a value whenever the return type is 	something other than void. The following function 
	<code>f(x)</code> does not generate an error because the <code>if..else</code> statement always returns a value:

<pre><code>function f(x):int
{
if (x)
    	return 2;
else
    	return 3;
} // no error</code></pre>

<p>However, the function <code>g(x)</code> below generates the error because the <code>switch</code> statement does not always 
return a value.
<pre><code>function g(x:int):int
{
switch(x)
{
      	case 1: return 1;
      	case 2: return 2:
}
// return 2;//uncomment to remove the error
}</code></pre>

	<p>This checking is enabled only when the function declares a return type other than void. 
	]]></description>
</error>
    <error id="1171" label="kError_InvalidNamespaceInitializer">En namnutrymmesstart måste vara antingen en litteral sträng eller ett annat namnutrymme.</error>
    <error id="1172" label="kError_DefinitionNotFound">Definitionen %s kunde inte hittas.</error>
    <error id="1173" label="kError_InvalidLabel">Etikettdefinitionen är ogiltig.</error>
    <error id="1176" label="kError_IncompatableValueComparison">Jämförelse av ett värde av den statiska typen %s och den möjligen orelaterade typen %s.
<description>This error is enabled in strict mode.</description></error>
    <error id="1177" label="kError_CannotReturnFromGlobalInit">Programsatsen return kan inte användas i global initieringskod.</error>
    <error id="1178" label="kError_InaccessiblePropertyReference">Åtkomstförsök till otillgängliga egenskapen %s via en referens med den statiska typen %s.</error>
    <error id="1179" hidden="true" label="kError_ColonObjectAnnoOutOfService">:Objektet är tillfälligt otillgängligt. Använd :* i stället.</error>
	<error id="1180" label="kError_Strict_PlainUndefinedMethod">Anrop till den möjligen odefinierade metoden %s.
<description>This error appears only when the compiler is running in strict mode.</description></error>
	<error id="1181" label="kError_ForwardReferenceToBaseClass">Framåtreferens till basklassen %s.</error>
	<error id="1182" label="kError_IllegalPackageReference">Paket kan inte användas som ett värde: %s.</error>
	<error id="1184" label="kError_IncompatibleDefaultValue">Inkompatibelt standardvärde av typen %s där %s förväntas.</error>
	<error id="1185" label="kError_MultipleSwitchDefaults">Programsatsen switch har mer än ett standardvärde. Bara ett standardvärde får användas.</error>
    <error id="1188" label="kError_AssignmentToDefinedClass">Ogiltig tilldelning till klassen %s.</error>
    <error id="1189" label="kError_Strict_AttemptToDeleteFixedProperty">Försök att ta bort den fasta egenskapen %s.  Bara dynamiskt definierade egenskaper kan tas bort.
<description>Delete removes dynamically defined properties from an object.  Declared properties of a class can not be deleted.  This error appears only when the compiler is running in strict mode.</description></error>
	<error id="1190" label="kError_InvalidBaseTypeExpression">Basklassen hittades inte eller är inte en kompileringskonstant.</error>
    <error id="1191" label="kError_InvalidInterfaceTypeExpression">Gränssnittet hittades inte eller är inte en kompileringskonstant.</error>
    <error id="1192" label="kError_StaticModifiedNamespace">Attributet static tillåts inte i namnutrymmesdefinitioner.</error>
    <error id="1193" label="kError_InvalidInterfaceNesting">Gränssnittsdefinitioner får inte vara inkapslade i definitioner av klasser eller av andra gränssnitt.</error>
	<error id="1194" label="kError_PrototypeIsAnInvalidAttribute">Attributet prototype är ogiltigt.</error>
	<error id="1195" label="kError_InaccessibleMethodReference">Åtkomstförsök till den otillgängliga metoden %s via en referens med den statiska typen %s.
		<description><![CDATA[You are either calling a private method from another class, or calling a method defined in a namespace that is not in use.  If you are calling a method defined in an unused namespace, add a <code>use</code> statement for the required namespace.
	]]></description>
 	</error>
	<error id="1196" label="kError_Parser_ThrowWithoutExpression">Syntaxfel: ett uttryck förväntades efter throw.</error>
    <error id="1197" label="kError_Authoring_SymbolClassInheritance">Klassen %s kan inte utöka %s eftersom båda är kopplade till bibliotekssymboler eller till huvudtidslinjen.</error>
    <error id="1198" label="kError_AttributesOnPackage">Attribut får inte användas i paketdefinitioner.</error>
    <error id="1199" label="kError_InternalError">Internt fel: %s.</error>
    <error id="1200" label="kError_ParserInvalidForInInitializer">Syntaxfel: ogiltig for-in-initierare, bara 1 uttryck förväntades.</error>
	<error id="1201" label="kError_IllegalSuperStatement">En super-programsats får inte användas efter programsatserna this, super, return eller throw.</error>
	<error id="1202" label="kError_UnfoundPackageProperty">Åtkomst till den odefinierade egenskapen %s i paketet %s.

<description>
	<![CDATA[
		You are attempting to access an undefined variable in a package. For example, if the variable
		<code>p.huh</code> has not been defined, a call to it generates this error:

<pre><code>p.huh = 55;</code></pre>

		This error can only appear when the compiler is running in strict mode.
	]]>
</description>
    </error>
    <error id="1203" label="kError_NoDefaultBaseclassCtor">Ingen standardkonstruktor i basklassen %s.
    <description>You must explicitly call the constructor of the base class with a super() statement if it has 1 or more required arguments.</description></error>
	<error id="1204" label="kError_BlockCommentNotTerminated">/* påträffades utan matchande */ .
<description>
	<![CDATA[
		The characters '/*' where found, which indicate the beginning of a comment, but the corresponding characters, '*/', which indicate the end of the comment block, were not found.
    ]]></description>
	</error>
	<error id="1205" label="kError_ParserExpectingLeftBraceOrStringLiteral">Syntaxfel: vänster klammerparentes ({) eller stränglitteral ("") förväntades.</error>
	<error id="1206" label="kError_InvalidES4SuperStatement">En superprogramsats kan endast användas som det sista objektet i en initierarlista för en konstruktor.
<description><![CDATA[
		You cannot use the <code>super</code> statement within a constructor. You can 
		use the <code>super</code> statement only as the last item in the constructor initializer list.
	]]>
	</description>
    </error>
	<error id="1207" label="kError_ThisUsedInInitializer">Det här nyckelordet kan inte användas i egenskapsinitierare.
    <description>
	<![CDATA[
		You cannot use the <code>this</code> keyword within a property initializer.
	]]>
	</description>
    </error>
	<error id="1208" label="kError_NonConstantConfigInit">Initieraren för ett konfigurationsvärde måste vara en kompileringskonstant.
    <description>
	<![CDATA[
		The initializer of a configuration value must be a value known at compile time.  The initializer may be a constant string, number, or boolean, or 
		a reference to another previously defined configuration value.
	]]>
	</description>
    </error>
	<error id="1209" label="kError_NonConstConfigVar">En konfigurationsvariabel kan endast definieras som konstant.
    <description>
	<![CDATA[
		When defining a configuration variable, it must be declared as const.
	]]>
	</description>
    </error>
	<error id="1210" label="kError_InvalidConfigLocation">Ett konfigurationsvärde måste definieras på programmets eller paketets toppnivå.
    <description>
	<![CDATA[
		A configuration value must be declared at the top level of a program or package.
	]]>
	</description>
    </error>
	<error id="1211" label="kError_ShadowedConfigNamespace">Det finns en konflikt mellan namnutrymmet %s och ett konfigurationsnamnutrymme.
    <description>
	<![CDATA[
		A namespace may not have the same name as a configuration namespace.
	]]>
	</description>
    </error>
	<error id="1212" label="kError_InvalidPrecision">Precision måste vara ett heltal mellan 1 och 34.</error>
	<error id="1214" label="kError_WrongVersion">Inkompatibel version: det går inte att skapa referens för definitionen %s som lanserades i version %s utifrån koden med version %s.</error>
	<error id="1215" label="kError_LossyConversion">Ogiltig initiering: konvertering till typ %s kan orsaka dataförlust.</error>
</errors>
