Android Studio / IntelliJ IDEA の日本語化と設定

:::note warn
2022/12 追記
JetBrains 公式の日本語言語パックがリリースされたため、Pleiades での IntelliJ 系 IDE の対応は廃止しました。問題が発生する可能性があるため、Pleiades で Android Studio や IDEA を 日本語化しないでください。日本語化する場合は下記を参照してください。

Android Studio を日本語化する方法 | CBTDEV
https://cbtdev.net/android-studio-japanese/
IntelliJ ベース IDE 向け日本語言語パック | jetbrains.com
https://www.jetbrains.com/ja-jp/lp/language-pack/
:::
　

IntelliJ IDEA 向けに有志により公開されている日本語リソースファイルがいくつかありますが、新しい機能で文字列連結やハードコードが多用されていて対応できなかったり、内部的に id として使用されているツールウィンドウ名を翻訳すると動作しなくなったりするなどの問題が発生するようになってしまっていました。Pleiades を使用することで、これらの問題を回避し、以下のように多くの部分を日本語化することができます。

Android Studio + Pleiades
![設定](https://qiita-image-store.s3.amazonaws.com/0/45147/e3ba173d-b3f9-48e5-ae5f-c7e068905dbb.png)
![エミュレータ](https://qiita-image-store.s3.amazonaws.com/0/45147/7c334f56-d517-2b19-c7dd-58c585596cb9.png)

**Pleiades って Eclipse のあれ？**

* Pleiades は IntelliJ や Eclipse 固有のプラグイン機構を利用したものではなく、Java クラスロード時のバイトコード操作による AOP (横断的関心事を解決するテクノロジー) で、画面に表示される文字列を実行時に書き換えて日本語化する汎用ツールです。ライセンスは EPL です。
<br><br>
* 以前の Pleiades のバージョンでは Eclipse 以外で日本語化される部分が少なかったり、動作しない部分がありましたが対応済みです。また処理の見直しにより高速化され、初回起動の後は日本語化によるオーバーヘッドはほとんどありません。ただし、もちろん負荷は 0 ではないため、対象の IDE 自体が重い、固まるなどの環境の場合、Pleiades はおすすめできません。

#<i class="fa fa-check-circle" style="font-size:1em;"></i> 日本語化する手順

[Jetbrains 製品の日本語化マニュアル](https://pleiades.io/pages/pleiades_jetbrains_manual.html)に記載されているとおり、基本的には Eclipse と同じように Pleiades を配置して、設定ファイルに pleiades.jar へのパスを追記するだけです。以下、[Android Studio](https://developer.android.com/studio/index.html?hl=ja) を例に説明します。他の IntelliJ IDEA ベースの IDE でも手順は同じです。未翻訳箇所を見つけた場合は、[readme.txt](https://osdn.net/projects/mergedoc/scm/svn/blobs/head/trunk/Pleiades/readme/readme_pleiades.txt) の翻訳追加を参照し、ぜひ[フォーラム](https://osdn.net/projects/mergedoc/forums/2758/)まで翻訳をコントリビュートください。

**前提事項**

* 日本語リソース resources_jp.jar との併用はできません。使用している場合は先に削除しておいてください。
* ベータ版 (Android Studio Beta など) では動作確認されていません。正常に動作しない可能性があります。

> _<font color="red">2017/09/21 追記</font>_
> _Pleiades は Windows と Mac に関してはインストーラーが付属するようになりました。Linux や手動で導入する場合は、以下の 1. と 2. を参照してください。_

<br>
####**1. Pleiades の配置**

[http://mergedoc.osdn.jp/](http://mergedoc.osdn.jp/#pleiades.html#PLUGIN) から使用する OS に該当する Pleiades プラグインをダウンロードします。

![pleiades.png](https://qiita-image-store.s3.amazonaws.com/0/45147/cc35be86-c288-b18e-acc0-a1357895b803.png)

zip ファイルを展開して plugins/jp.sourceforge.mergedoc.pleiades を下記などの場所に配置します。X.X の部分はバージョンにより異なります。基本的には、どこに配置しても動作しますが、複数の異なる IDE やバージョンで同じ場所の 1 つの Pleiades を共用しないでください。また、すでに使用している Pleiades をコピーして使用する場合は、そのままでは正常動作しなかったり、起動できなくなる場合があるため、jp.sourceforge.mergedoc.pleiades/cache ディレクトリを必ず削除してください。

```
Windows : (ユーザホーム)/.AndroidStudioX.X/config/jp.sourceforge.mergedoc.pleiades
macOS   : (ユーザホーム)/Library/Preferences/AndroidStudioX.X/jp.sourceforge.mergedoc.pleiades
```

インストールしたディレクトリ内に配置すると、Android Studio をアップデートしたときに、削除される場合があるため、上記のようにインストールディレクトリ以外に配置します。

<br>
####**2. 起動オプションの編集**

起動オプションが設定されている vmoptions ファイルを編集します。bin にあるデフォルトの vmoptions はアプリ本体をアップデートすると上書きされる場合があるため、編集は推奨されていません。代わりに、最初にメニューから Help > Edit Custom VM Options... で下記のカスタマイズ用の vmoptions を作成しておきます。このカスタマイズ用のファイルがデフォルトより優先されます。ただし、Android Studio の場合、作成したときに中身が空の場合があるので、Android Studio をインストールしたディレクトリ内の bin にある vmoptions ファイルから内容を手動でコピーしてください。

```
Windows : (ユーザホーム)/.AndroidStudioX.X/config/studio64.exe.vmoptions
macOS   : (ユーザホーム)/Library/Preferences/AndroidStudioX.X/studio.vmoptions
```

この vmoptions ファイルの末尾に、以下のオプションを追加します。pleiades.jar へのパスは相対パスや ~ を使用せずに完全なフルパスを指定してください。相対パスでも指定可能ですが、IDEA 系の IDE は OS や環境によりカレントディレクトリの解釈が異なるため、避けたほうが無難です。また、Pleiades はキャッシュなどでメモリを最大 20〜30 MB 程度消費するため、メモリに余裕がある場合は -Xmx の値を増やしておきましょう。

```properties:*.vmoptions
-Xverify:none
-javaagent:（Pleiades を配置した場所のフルパス）/jp.sourceforge.mergedoc.pleiades/pleiades.jar
```

> **Mac の場合**
~~(app ディレクトリ)/Contents/Info.plist の 6 行目あたりの English を Japanese に変更してください。これはメニューにあるりんごアイコンの右側のメニュー内を日本語にするための指定です。(ただし、このファイルは Android Studio 本体をアップデートすると元に戻ってしまいま
す)~~ 
&nbsp;
→ *2017/09/27 初回起動時に Info.plist を自動的に書き換えるようにしました。2 回目起動以降に有効になります。*
➔ *<font color="red">2017/10/16</font> Japanese にすると High Sierra でメニューが表示されない不具合が発生するため自動書き換えを廃止しました。改善された場合、インストーラーに組み込むかもしれません。*

#<i class="fa fa-check-circle" style="font-size:1em;"></i> 日本語に関する設定

####**プログラミング用フォント Fira Code と合字 (リガチャ) 設定**

合字は == や != などを合成して 1 つの文字のように表示することができるもので、IDEA 2016.3 からは合字対応フォント Fira Code が付属しています。Pleiades では合字や日本語を確認しやすいように、フォント・プレビュー用のテキストに日本語サンプルと合字確認用の記号を追加しています。

![リガチャ合字](https://qiita-image-store.s3.amazonaws.com/0/45147/6a6c3159-7688-082e-84e6-958d532f21ff.png)

<br>
####**プロパティー・ファイルのエンコーディング**

プロパティー・ファイルのエンコーディングのデフォルトは OS のデフォルトになっています。Windows の場合、以下のように Windows-31J になっているため、UTF-8 に変更しましょう。ユニコード・エスケープを使用しなければならない場合は、自動変換にチェックします。ちなみに Java 9 から ResourceBundle のデフォルトはエスケープなしの UTF-8 となるため自動変換にチェックすると逆に文字化けします (JEP 226)。

![プロパティファイルの設定](https://qiita-image-store.s3.amazonaws.com/0/45147/c381b207-e8bb-79d4-6f3a-fe22839dda34.png)

<br>
####**日本語 Javadoc の設定**
これは、今のところ Android Studio にはない IntelliJ IDEA 固有の設定です。Java 標準 API のメソッドなどの Javadoc ドキュメントを日本語で表示する場合は、プロジェクト構造またはモジュールの設定を開き、下記のように日本語 API の URL を設定します。

![日本語API Javadoc](https://qiita-image-store.s3.amazonaws.com/0/45147/08ac3d28-f4c6-f2f8-c306-ce7d604c52f1.png)

|機能|Win / Linux|Mac|
|:--|:--|:--|
|クイック・ドキュメント|Ctrl+Q|F1|
|外部ドキュメント|Shift+F1|Shift+F1|

Java の外部ドキュメントはドキュメント・パスを設定している場合のみ有効になります。カーソルを合わせたときにクイック・ドキュメントを自動的に表示したい場合は 設定 > エディター > 一般 > その他 > マウス移動でクイック・ドキュメントを表示する を ON にしてください。

<br>
####**日本語 PHPDoc の設定** (PhpStorm)
デフォルトでは Shift+F1 で外部ドキュメントをブラウザで開いたときに英語でマニュアルが表示されますが、Java のように日本語のマニュアルを開くように設定することができません。**Pleiades では外部ドキュメントを開くときに URL を日本語版に差し替えて開くように AOP 定義されています。**ただし、クイック・ドキュメント (ポップアップ) は PHP 関数ソースコード内の PHPDoc が表示されるため、今のところ英語のままです。

<br>
####**日本語でアクションの検索**
Windows では問題ありませんが、Mac は、どこでも検索 (Search Everywhere) で日本語が入力できないため、日本語でアクションを検索する場合は、以下のようにアクションの検索 (Find Action) を使用してください。

![アクションの検索](https://qiita-image-store.s3.amazonaws.com/0/45147/52e5d26f-2369-386f-4410-a4e4c377f29f.png)

||Win / Linux|Mac|
|:--|:--|:--|
|どこでも検索|Shift 2 回|同左|
|アクションの検索|Shift+Ctrl+A|Shift+Cmd+A|

ちなみにアクションの検索の候補一覧で ON/OFF できる設定が表示された場合は、設定画面を開かずに直接設定を変更することができます。なお、上記で表示されている背景画像の設定は IntelliJ 2016.2 で追加された機能 (現時点では Android Studio にはありません) でエディターやツール・ウィンドウの背景に画像を設定することができます。

#<i class="fa fa-check-circle" style="font-size:1em;"></i> よくある初期設定

####**エディター**

これは日本語化に関係なく、多くの人が設定すると思われる項目です。お好みに応じて設定してください。

- エディター > 一般
    - マウス・ホイールでフォント・サイズ変更する = ON
    - 保管時に行末のスペースを除去する = 変更行のみ
    - 自動インポート
        - 明確なインポートをオンザフライで追加する = ON
    - コード補完
       - 補完での大/小文字の区別 = なし
    - 外観
       - 行番号の表示 = ON
       - 空白を表示する = ON (全角空白は □ で表示されます)
           - 先頭 = OFF

![エディター設定](https://qiita-image-store.s3.amazonaws.com/0/45147/41ac4a75-506e-39f6-ac22-406085429fc8.png)

####**セマンティック強調表示**

IDEA 2016.3 以降では各パラメーターと各ローカル変数に対してプリセットされた色を使用できます。

- エディター > 色とフォント
    - 言語デフォルト > セマンティック強調表示
    - Java > セマンティック強調表示

![セマンティック強調表示](https://qiita-image-store.s3.amazonaws.com/0/45147/f6066cac-845f-6b9d-cdcd-46a4569e9dda.png)

####**ソースとツリーの同期**

プロジェクト・ツール・ウィンドウの歯車アイコンをクリックして、「ソースから自動スクロール」を ON にすることで、検索などから開いたエディターに同期してツリーを表示できます。毎回ツリーを連動させたくない場合は、左側にある「ソースからスクロール」アイコンを押すことで、現在開いているエディターに同期できます。

![ソースからスクロール](https://qiita-image-store.s3.amazonaws.com/0/45147/e1ab78e2-b178-359d-4a12-b8fd02ef91ac.png)

####**デバッグ**

デフォルトではブレークポイントで参照しているオブジェクトの toString メソッドが呼び出されます。エディター上にインライン表示されるのは便利なのですが、場合によっては困ることもあるため、必要に応じて下記などを設定してください。

- ビルド、実行、デプロイ > デバッガー > データ・ビュー
    - 値をインラインで表示する = ON (デフォルト)
    - Java
        - 'toString()' オブジェクト表示を使用可能にする = ON (デフォルト)

![デバッグ設定](https://qiita-image-store.s3.amazonaws.com/0/45147/a0483656-8228-c561-c464-18905787af38.png)

####**プロジェクト選択画面を表示せずにプロジェクトを開く**

「スタートアップ時に最後に使用したプロジェクトを再開する」を ON にします。ファイル > プロジェクトを閉じる でプロジェクト選択画面に戻ることができます。

![プロジェクト再開](https://qiita-image-store.s3.amazonaws.com/0/45147/f93d7fb9-b6ba-71b2-4fae-845115e11fc0.png)

#<i class="fa fa-check-circle" style="font-size:1em;"></i> プラグイン、各種 IDE の対応

以下のような定番プラグインや各種 IDE のメニューや設定などの一部も日本語化されます。

####**Scala**
![Scala設定](https://qiita-image-store.s3.amazonaws.com/0/45147/03f5ba66-3e01-a4a3-6b37-ee262bb34af1.png)

####**IdeaVim** (Vim キーバインド)
![VIM](https://qiita-image-store.s3.amazonaws.com/0/45147/36c92f81-bc9a-269c-6f2b-05b6530d120d.png)

####**.ignore** (.gitignore などの ignore ファイルを生成)
![スクリーンショット 2017-02-08 17.00.53.png](https://qiita-image-store.s3.amazonaws.com/0/45147/db6ea20b-b9e9-ea3e-d656-4f1e52367878.png)

####**String Manipulation** (文字列操作)
![String Manipulation](https://qiita-image-store.s3.amazonaws.com/0/45147/d75368fc-80b0-1fc7-3d03-7a845c8bafae.png)

####**ようこそ画面色々**

![ようこそ画面](https://qiita-image-store.s3.amazonaws.com/0/45147/fc54910f-c865-a93f-0409-9a65f0f35c04.png)

#<i class="fa fa-check-circle" style="font-size:1em;"></i> 日本語化トラブルシューティング

####**起動しなくなった**

起動オプションに pleiades.jar の実際の配置場所が正しく絶対パスで指定されているか確認してください。

####**英語に戻したい**

起動オプションに指定した -javaagent 行を # でコメントアウトしてください。

####**動作がおかしい？**

毎回クラスを書き換えると遅いため、Pleiades は AOP 適用後のクラスバイトコードをディスクにキャッシュします。最新版では対象アプリが更新されていた場合、自動的にキャッシュをクリーンするようになったため、基本的には手動でクリアする必要はありません。もし、何らかの理由でキャッシュをクリアしたい場合は、メニューから ファイル > キャッシュの破棄 > 破棄して再始動 してください。再起動時に IDEA のキャッシュ破棄機能に連動して、Pleiades のキャッシュ jp.sourceforge.mergedoc.pleiades/cache もクリアされます。そもそも起動できない場合は、この cache ディレクトリを手動で削除してください。

####**壊れているため開けません** (Mac)

Mac では一度も起動しないで app 内に含まれるファイルを変更した後に起動すると「壊れているため開けません。"ゴミ箱"に入れる必要があります。」と警告が表示され、開くボタンが押せない場合があります。これはアプリケーションが署名された後に改竄されていると Gatekeeper が判断した場合に発生します。自分で変更した場合など、信頼できる場合は、次のようなコマンドで拡張属性を削除した後に起動してください。

```sh
xattr -rc /Applications/Android Studio.app
```

#<i class="fa fa-check-circle" style="font-size:1em;"></i> Pleiades 翻訳の今後

元々 Pleiades は統合開発環境のメニューなどのラベルはよく似ているため、コーパス (対訳) の蓄積と、実行時の句読点分割や入れ替えで、対訳追加はほとんど不要になると思い、実装を開始したのですが、IntelliJ の数千を超えるインスペクションの説明のような文章にはほとんど対応できていません。

共用されないコーパスを追加してもあれなので、Google のライブラリ TensorFlow を使用して Pleiades のコーパスで学習させて人工知能による翻訳を検討したりしましたが、今のところ、実用的な精度やパフォーマンスを確保できそうにありません。将来、これらを解決できるようのものがあれば、対応したいと思います。