# エディタの多言語対応

挙動スクリプトで使用できる属性やエディタ拡張では多言語対応ができます。

## 多言語ファイルの準備

多言語対応を行うには、各言語ファイルを追加する必要があります。

また、言語ファイルを配置するフォルダの登録も行います。

言語ファイルはエディタでしか使用できないため、Editorフォルダの中に配置します。

### LanguagePath

言語ファイルを配置するフォルダを登録するには、LanguagePathアセットをフォルダに配置します。

- 配置するフォルダをProjectウィンドウで選択し右クリック。
- 「Create / Arbor / Editor / LanguagePath」を選択。
- 名前は特に制限がないため、好きな名前を付けてください。

### 言語ファイルの作成

LanguagePathアセットを配置したフォルダに、「言語名.txt」のファイルを作成すると言語ファイルとして認識されます。

「言語名」はSystemLanguage列挙子の値と同名である必要があります。

Unity ScriptReference : SystemLanguage

### 言語ファイルの記入

言語ファイルでは、1行ごとに「ワードのキー: 表示する文字列」の形式で記入していきます。

また、行頭が「//」の場合はコメントとみなされ、その行は無視されます。

例えば、Japanese.txtを作成し、以下のように記入します。

    1
    2
    3
    4
    // ボスの挙動関連
    Menu_ExampleBossAttack: 多言語対応/ボスの攻撃
    ExampleBossAttack: ボスの攻撃
    ExampleBossDefense: ボスの防御

続いて、English.txtを作成し、以下のように記入します。

    1
    2
    3
    4
    // Boss behavior related
    Menu_ExampleBossAttack: Localization/Boss's attack
    ExampleBossAttack: Boss's attack
    ExampleBossDefense: Boss's defense

### フォルダ構成の例

- Assets
  - Editor
    - Languages
      - LanguagePath.asset
      - English.txt
      - Japanese.txt

## 多言語ワードの参照

### エディタ拡張からの参照

エディタ拡張から参照する場合は、ArborEditor.Localization.GetWord()やGetTextContent()を使用します。

#### エディタ拡張のスクリプト例

##### TestLocalizationBehaviour.cs

    1
    2
    3
    4
    5
    6
    7
    using UnityEngine;
    using Arbor;

    [AddComponentMenu("")]
    public class TestLocalizationBehaviour : StateBehaviour
    {
    }

##### TestLocalizationBehaviourEditor.cs

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    using UnityEditor;
    using ArborEditor;

    [CustomEditor(typeof(TestLocalizationBehaviour))]
    public class TestLocalizationBehaviourEditor : Editor
    {
    	public override void OnInspectorGUI()
    	{
    		EditorGUILayout.LabelField(Localization.GetWord("ExampleBossAttack"));
    		EditorGUILayout.LabelField(Localization.GetWord("ExampleBossDefense"));
    	}
    }

#### エディタ拡張の表示例

### 挙動の属性での参照

AddBehaviourMenuやBehaviourTitleでlocalizationフィールドをtrueにすると、言語ファイルから参照するようになります。

#### 属性を使ったスクリプト例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    using UnityEngine;
    using Arbor;

    [AddComponentMenu("")]
    [AddBehaviourMenu("Menu_ExampleBossAttack",localization=true)]
    [BehaviourTitle("ExampleBossAttack",localization =true)]
    public class ExampleBossAttackBehaviour : StateBehaviour
    {
    }

#### 属性を使った表示例

英語

日本語