<?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">
    %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">名前空間の属性にはアクセス指定子を使用できません。<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">名前空間が見つからないか、コンパイル時定数ではありません。<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">super 式はクラスインスタンスのメソッド内でのみ使用できます。</error>
	<error id="1007" label="kError_InvalidSuperStatement">
    super 式はクラスインスタンスのコンストラクタ内でのみ使用できます。
    <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">属性が無効です。</error>
	<error id="1010" label="kError_InvalidOverride">
    override 属性はクラスプロパティの定義でのみ使用できます。
    <description><![CDATA[
		You cannot use the <code>override</code> keyword within a function block.
	]]></description>

</error>
	<error id="1011" label="kError_InvalidVirtual">
    virtual 属性はクラスプロパティの定義でのみ使用できます。
    <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">static 属性はクラス内の定義でのみ使用できます。</error>
	<error id="1013" label="kError_InvalidPrivate">private 属性はクラスプロパティの定義でのみ使用できます。</error>
	<error id="1014" label="kError_Unsupported_Intrinsic">
    intrinsic 属性はサポートされていません。
    <description>
		ActionScript 3.0 does not support the <code>intrinsic</code> keyword.
	</description>

</error>
	<error id="1016" label="kError_BaseClassIsFinal">
    基本クラスは final です。
    <description><![CDATA[
		The superclass cannot be extended because it is marked 
		as <code>final</code>.
	]]></description>

</error>
	<error id="1017" label="kError_UnknownBaseClass">基本クラス %s の定義が見つかりませんでした。</error>
	<error id="1018" label="kError_DuplicateClassDefinition">クラス定義が重複しています :%s。</error>
	<error id="1020" label="kError_OverrideNotFound">override としてマークされたメソッドは、別のメソッドをオーバーライドする必要があります。</error>
	<error id="1021" label="kError_DuplicateFunction">
    関数の定義が重複しています。
    <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">final アクセサをオーバーライドすることはできません。</error>
	<error id="1023" label="kError_IncompatibleOverride">オーバーライドに対応していません。<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">
    オーバーライドに対応していない関数をオーバーライドしています。
    <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">
    最後のメソッドを再定義することはできません。
    <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">コンストラクタ関数はインスタンスメソッドでなければなりません。</error>
	<error id="1027" label="kError_FuncIsStaticAndOverride">関数を同時に static および override として設定することはできません。</error>
	<error id="1028" label="kError_FuncIsStaticAndVirtual">関数を同時に static および virtual として設定することはできません。</error>
	<error id="1029" label="kError_FuncIsVirtualAndFinal">関数を同時に final および virtual として設定することはできません。</error>
	<error id="1030" label="kError_RestParameterNotNamed">
    変数の引数配列の名前を指定する必要があります。
    <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">仮想変数はサポートされていません。</error>
	<error id="1034" label="kError_NativeVars">変数がネイティブであることはできません。</error>
	<error id="1035" label="kError_VarIsFinalAndVirtual">変数を同時に final および virtual として設定することはできません。</error>
	<error id="1037" label="kError_NestedPackage">パッケージをネストすることはできません。</error>
	<error id="1038" label="kError_BreakHasNoTarget">break ステートメントのターゲットが見つかりませんでした。</error>
	<error id="1039" label="kError_ContinueHasNoTarget">continue ステートメントのターゲットが見つかりませんでした。</error>
	<error id="1040" label="kError_DuplicateLabel">ラベルの定義が重複しています。</error>
	<error id="1041" label="kError_AttributesAreNotCallable">属性は呼び出し可能ではありません。</error>
	<error id="1042" label="kError_ThisUsedInStaticFunction">
    this キーワードは静的メソッドで使用できません。このキーワードはインスタンスのメソッド、関数閉包、グローバルコード内でのみ使用できます。
    <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">名前空間が未定義です。</error>
	<error id="1044" label="kError_UnknownInterfaceMethod">インターフェイスメソッド %s (名前空間 %s) はクラス %s によって実装されません。</error>
	<error id="1045" label="kError_UnknownInterface">インターフェイス %s が見つかりませんでした。</error>
	<error id="1046" label="kError_UnknownType">
    型が見つからないか、コンパイル時定数ではありません : %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">パラメータ初期化子が不明か、コンパイル時定数ではありません。<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">メソッドをコンストラクタとして使用することはできません。<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">定数として指定した変数への代入が無効です。</error>
	<error id="1050" label="kError_AssignmentToNonRefVar">参照値以外の代入はできません。</error>
	<error id="1051" label="kError_ReturnTypeMustBeUndefined">
    戻り値は未定義でなければなりません。
    <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">
    定数初期化子が不明か、コンパイル時定数ではありません。
    <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">アクセサの型が一致している必要があります。</error>
	<error id="1054" label="kError_BadSetterReturnType">
    setter 定義の戻り型は未指定または 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">プロパティは書き込み専用です。</error>
	<error id="1059" label="kError_PropertyIsReadOnly">
    プロパティは読み取り専用です。
    <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">
    未定義である可能性のあるメソッド %s を、静的型 %s の参照を使用して呼び出しました。
    <description><![CDATA[
	You are calling a method that is not defined.
	]]></description>

</error> <!-- edited -->
	<error id="1063" label="kError_UnableToOpenFile">ファイルを開けません :%s。</error>
	<error id="1064" label="kError_InvalidMetaData">
    メタデータが無効です。
    <description><![CDATA[
	This metadata is unrecognized.
	]]></description>


</error>
	<error id="1065" label="kError_MetaDataAttributesHasMoreThanOneElement">メタデータ属性が複数のエレメントを持つことはできません。</error>
	<error id="1067" label="kError_ImplicitCoercisionOfUnrelatedType">
    型 %s の値が、関連しない型 %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">付属ファイルを開けません : %s。</error>
	<error id="1069" label="kError_Parser_DefinitionOrDirectiveExpected">
    シンタックスエラー : 定義またはディレクティブが必要です。
    <description>
		Check the syntax in the line.
	</description>

</error>
	<error id="1071" label="kError_Parser_ExpectingAnnotatableDirectiveAfterAttributes">
    シンタックスエラー : 属性 %s の後には、%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">
    シンタックスエラー : namespace の前に xml が必要です。
    <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">シンタックスエラー : catch 節または finally 節が必要です。</error>
	<error id="1075" label="kError_Parser_EachWithoutIn">シンタックスエラー : 'each' キーワードを 'in' 演算子なしで使用することはできません。</error>
	<error id="1076" label="kError_Parser_ExpectedLeftParen">シンタックスエラー : 識別子の前に左括弧が必要です。</error>
	<error id="1077" label="kError_Parser_ExpectedCaseLabel">
    CaseLabel が必要です。
    <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">ラベルは単純な識別子でなければなりません。</error>
	<error id="1079" label="kError_Parser_WrongNumberOfSuperArgs">super 式には 1 つのオペランドが必要です。</error>
	<error id="1080" label="kError_Parser_ExpectingIncrOrDecrOperator">インクリメント演算子またはデクリメント演算子が必要です。</error>
	<error id="1082" label="kError_Parser_ExpectingASingleExpressionWithinParenthesis">括弧内に 1 つの式が必要です。</error>
	<error id="1083" label="kError_Parser_ExpectedPrimaryExprBefore">
    シンタックスエラー : %s は不要です。
    <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">
    シンタックスエラー : %s が %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">シンタックスエラー : %s の前にセミコロンが必要です。</error>
	<error id="1087" label="kError_Parser_ExtraCharsAfterEndOfProgram">シンタックスエラー : プログラムの末尾の後に余分な文字が見つかりました。</error>
	<error id="1093" label="kError_Lexical_General">シンタックスエラー。</error>
	<error id="1094" label="kError_Lexical_LineTerminatorInSingleQuotedStringLiteral">シンタックスエラー : ストリングリテラルは改行の前に終了する必要があります。</error>
	<error id="1095" label="kError_Lexical_LineTerminatorInDoubleQuotedStringLiteral">シンタックスエラー : ストリングリテラルは改行の前に終了する必要があります。</error>
	<error id="1097" label="kError_Lexical_EndOfStreamInStringLiteral">シンタックスエラー : ストリングリテラルを閉じる引用符に達する前に入力が終了しました。</error>
	<error id="1099" label="kError_Lexical_SyntaxError">シンタックスエラー。</error>
	<error id="1100" label="kError_Lexical_NoMatchingTag">シンタックスエラー : XML の開始タグと終了タグが一致していません。</error>
	<error id="1102" label="kError_CannotDeleteSuperDecendants">super の子孫を削除することはできません。</error>
	<error id="1103" label="kError_DuplicateNamespaceDefinition">
    名前空間の定義が重複しています。
    <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">
    代入のターゲットは参照値でなければなりません。
    <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">
    インクリメントのオペランドは参照でなければなりません。
    <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">
    インクリメントのオペランドが無効です。
    <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">
    デクリメントのオペランドが無効です。
    <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">
    式が必要です。
    <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">XML タグ名が見つかりません。</error>
	<error id="1111" hidden="true" label="kError_InvalidAbcFile">ファイル %s は有効な ABC ファイルではありません。</error>
    <error id="1112" label="kError_Parser_FileIncludesItself">
    このファイルインクルードにより、無限再帰の可能性があります : %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">
    %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">public 属性はパッケージ内でのみ使用できます。</error>
	<error id="1115" label="kError_InvalidInternal">internal 属性はパッケージ内でのみ使用できます。</error>
	<error id="1116" label="kError_InvalidNamespace">ユーザー定義の名前空間の属性は、クラス定義のトップレベルでのみ使用できます。</error>
	<error id="1118" label="kError_ImplicitCoercionToSubtype">
    静的型 %s の値が、関連しない可能性が高い型 %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">
    未定義である可能性が高いプロパティ %s に静的型 %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">
    未定義のプロパティ %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">getter 定義にはパラメータを使用できません。</error>
    <error id="1122" label="kError_SetterMustHaveOneParameter">setter 定義には 1 つのパラメータが必要です。</error>
    <error id="1123" label="kError_SetterCannotHaveOptional">setter 定義には任意指定のパラメータを使用できません。</error>
    <error id="1124" label="kError_BadGetterReturnType">
    getter 定義の戻り型は 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">インターフェイスで定義されたメソッドにボディを含めることはできません。</error>
    <error id="1126" label="kError_FunctionWithoutBody">関数にボディを含めることはできません。</error>
    <error id="1127" label="kError_DuplicateAttribute">
    属性 %s は複数回指定されています。
    <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">
    インターフェイス定義が重複しています : %s。
    <description><![CDATA[
	Change or delete the duplicate definitions.
	]]></description>

</error>
    <error id="1130" label="kError_CtorWithReturnType">コンストラクタは戻り型を指定できません。</error>
    <error id="1131" label="kError_InvalidClassNesting">クラスをネストすることはできません。</error>
    <error id="1132" label="kError_InvalidFinalUsage">final 属性はクラス内で定義されたメソッドでのみ使用できます。</error>
    <error id="1133" label="kError_InvalidNative">native 属性は関数定義でのみ使用できます。</error>
    <error id="1134" label="kError_InvalidDynamic">dynamic 属性はクラス定義でのみ使用できます。</error>
    <error id="1135" label="kError_Parser_keywordInsteadOfTypeExpr">シンタックスエラー : %s は有効なタイプではありません。</error>
    <error id="1136" label="kError_WrongNumberOfArguments">
    引数の数が正しくありません。正しくは %s です。
    <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">引数の数が正しくありません。%s 個以下であることが必要です。</error>
    <error id="1138" label="kError_BadRequiredParameter">必須パラメータを任意パラメータの後に指定することはできません。</error>
    <error id="1139" label="kError_VarInInterface">インターフェイスでは変数の宣言が許可されていません。</error>
    <error id="1140" label="kError_InvalidRestDecl">...残りパラメータ定義のキーワードの後に指定したパラメータで使用できるのは、Array データ型のみです。</error>
    <error id="1141" label="kError_CannotExtendInterface">クラスが拡張できるのは別のクラスのみです。インターフェイスを拡張することはできません。</error>
    <error id="1142" label="kError_CannotExtendClass">
    インターフェイスが拡張できるのは別のインターフェイスのみです。%s はクラスです。
    <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">override 属性はクラス内で定義されたメソッドでのみ使用できます。</error>
    <error id="1144" label="kError_IncompatibleInterfaceMethod">
    インターフェイスメソッド %s (名前空間 %s) は、対応していないシグネチャでクラス %s に実装されています。
    <description><![CDATA[
	Method signatures must match exactly.
	]]></description>

</error>
    <error id="1145" label="kError_NativeMethodWithBody">
    ネイティブなメソッドにボディを含めることはできません。
    <description><![CDATA[
	You cannot use <code>native</code> because it is a reserved keyword.
	]]></description>

</error>
    <error id="1146" label="kError_ConstructorCannnotBeGetterSetter">コンストラクタは getter メソッドまたは setter メソッド以外でなければなりません。</error>
    <error id="1147" label="kError_MissingFilespec">AS ソースファイルが指定されていません。</error>
    <error id="1149" label="kError_CannotReturnFromStaticInit">return ステートメントを static 初期化コードで使用することはできません。</error>
	<error id="1150" label="kError_InvalidProtected">protected 属性はクラスプロパティの定義でのみ使用できます。</error>
	<error id="1151" label="kError_ConflictingNameInNamespace">
    定義 %s (名前空間 %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">継承した定義 %s (名前空間 %s) にコンフリクトが存在します。</error>
    <error id="1153" label="kError_ConstructorMustBePublic">コンストラクタは public としてのみ宣言できます。</error>
	<error id="1154" label="kError_ConflictingAccessSpecifiers">定義には、public、private、protected、または internal のいずれか 1 つのみを指定できます。</error>
	<error id="1155" label="kError_InvalidNestedAccessor">アクセサを他の関数内にネストすることはできません。</error>
	<error id="1156" label="kError_CannotInstantiateInterface">インターフェイスを新しい演算子でインスタンス化することはできません。</error>
	<error id="1157" label="kError_BadAccessInterfaceMember">インターフェイスのメンバーを public、private、protected、または internal として宣言することはできません。</error>
	<error id="1158" label="kError_Parser_ExpectedLeftBrace">シンタックスエラー : 関数ボディの前に左括弧 ({) がありません。</error>
    <error id="1159" label="kError_CannotReturnFromPackageInit">return ステートメントを package 初期化コードで使用することはできません。</error>
    <error id="1160" label="kError_InvalidInterfaceNative">
    native 属性をインターフェイスの定義で使用することはできません。
    <description><![CDATA[
	You cannot use <code>native</code> because it is a reserved keyword.
	]]></description>

</error>
    <error id="1162" label="kError_MultipleNamespaceAttributes">1 つの定義に使用できる名前空間の属性は 1 つのみです。</error>
    <error id="1163" label="kError_ConflictingInheritedNameInInterface">メソッド %s は、インターフェイス %s から継承した定義とコンフリクトしています。</error>
    <error id="1165" label="kError_InvalidInterfaceAttribute">インターフェイスの属性 %s が無効です。</error>
    <error id="1166" label="kError_NamespaceInInterface">インターフェイスでは名前空間の宣言が許可されていません。</error>
    <error id="1167" label="kError_DuplicateImplements">
    クラス %s はインターフェイス %s を複数回実装しています。
    <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">
    関数 %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">インターフェイスのメソッドでは名前空間の属性が許可されていません。</error>
    <error id="1170" label="kError_MustReturnValue">
    関数は値を返しません。
    <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">名前空間の初期化子は、リテラルストリングまたは別の名前空間でなければなりません。</error>
    <error id="1172" label="kError_DefinitionNotFound">定義 %s が見つかりません。</error>
    <error id="1173" label="kError_InvalidLabel">ラベルの定義が無効です。</error>
    <error id="1176" label="kError_IncompatableValueComparison">静的型 %s の値と、関連しない可能性が高い型 %s の値とを比較しています。<description>This error is enabled in strict mode.</description></error>
    <error id="1177" label="kError_CannotReturnFromGlobalInit">return ステートメントを global 初期化コードで使用することはできません。</error>
    <error id="1178" label="kError_InaccessiblePropertyReference">アクセスできないプロパティ %s へのアクセスを、静的型 %s の参照を使用して試行しました。</error>
    <error id="1179" hidden="true" label="kError_ColonObjectAnnoOutOfService">:Object は一時的に使用できなくなっています。代わりに :* を使用してください。</error>
	<error id="1180" label="kError_Strict_PlainUndefinedMethod">未定義である可能性が高いメソッド %s の呼び出しです。<description>This error appears only when the compiler is running in strict mode.</description></error>
	<error id="1181" label="kError_ForwardReferenceToBaseClass">参照を基本クラス %s に送ります。</error>
	<error id="1182" label="kError_IllegalPackageReference">パッケージを値として使用することはできません : %s。</error>
	<error id="1184" label="kError_IncompatibleDefaultValue">対応していない型 %s のデフォルト値です。%s が必要です。</error>
	<error id="1185" label="kError_MultipleSwitchDefaults">switch には 1 つ以上のデフォルトがありますが、デフォルトは 1 つでなければなりません。</error>
    <error id="1188" label="kError_AssignmentToDefinedClass">クラス %s への代入が無効です。</error>
    <error id="1189" label="kError_Strict_AttemptToDeleteFixedProperty">固定プロパティ %s を削除しようとしています。削除できるのは、動的に定義されたプロパティだけです。<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">基本クラスが見つからないか、コンパイル時定数ではありません。</error>
    <error id="1191" label="kError_InvalidInterfaceTypeExpression">インターフェイスが見つからないか、コンパイル時定数ではありません。</error>
    <error id="1192" label="kError_StaticModifiedNamespace">static 属性を名前空間の定義で使用することはできません。</error>
    <error id="1193" label="kError_InvalidInterfaceNesting">インターフェイスの定義をクラスまたは他のインターフェイスの定義内にネストすることはできません。</error>
	<error id="1194" label="kError_PrototypeIsAnInvalidAttribute">プロトタイプの属性が無効です。</error>
	<error id="1195" label="kError_InaccessibleMethodReference">
    アクセスできないメソッド %s へのアクセスを、静的型 %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">シンタックスエラー : throw の後には式が必要です。</error>
    <error id="1197" label="kError_Authoring_SymbolClassInheritance">クラス %s は %s を拡張できません。これらは両方ともライブラリのシンボルまたはメインタイムラインに関連付けられているからです。</error>
    <error id="1198" label="kError_AttributesOnPackage">属性はパッケージ定義で許可されていません。</error>
    <error id="1199" label="kError_InternalError">内部エラー :%s。</error>
    <error id="1200" label="kError_ParserInvalidForInInitializer">シンタックスエラー : 無効な for-in イニシャライザです。式は 1 つだけにしてください。</error>
	<error id="1201" label="kError_IllegalSuperStatement">super ステートメントは、このステートメント、super ステートメント、return ステートメント、または throw ステートメントの後に続けることはできません。</error>
	<error id="1202" label="kError_UnfoundPackageProperty">パッケージ %s 内の未定義のプロパティ %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">基本クラス %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">対応する */ がない /* が見つかりました。<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">シンタックスエラー : 左かっこ ({) または文字列リテラル ("") が必要です。</error>
	<error id="1206" label="kError_InvalidES4SuperStatement">super ステートメントはコンストラクターのイニシャライザーリスト内の最後のアイテムとしてのみ使用できます。
<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">このキーワードはプロパティのイニシャライザーでは使用できません。
    <description>
	<![CDATA[
		You cannot use the <code>this</code> keyword within a property initializer.
	]]>
	</description>
    </error>
	<error id="1208" label="kError_NonConstantConfigInit">設定値のイニシャライザーはコンパイル時定数である必要があります。
    <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">設定変数は宣言された定数である必要があります。
    <description>
	<![CDATA[
		When defining a configuration variable, it must be declared as const.
	]]>
	</description>
    </error>
	<error id="1210" label="kError_InvalidConfigLocation">設定値はプログラムまたはパッケージの最上位レベルで宣言される必要があります。
    <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">名前空間 %s は設定名前空間と競合しています。
    <description>
	<![CDATA[
		A namespace may not have the same name as a configuration namespace.
	]]>
	</description>
    </error>
	<error id="1212" label="kError_InvalidPrecision">精度は 1 ～ 34 の整数である必要があります。</error>
	<error id="1214" label="kError_WrongVersion">互換性のないバージョン : 定義 %s (バージョン %s で導入) をバージョン %s のコードから参照できません。</error>
	<error id="1215" label="kError_LossyConversion">無効な初期化 : タイプ %s に変換すると、データが失われます。</error>
</errors>
