初めてIntelliJに触れる人へ − Javadocの日本語化
File -> Project Structure -> SDKs -> 任意のJDK -> Documentation Paths にJavadocを指定するんだけど,EUC-JPな日本語Javadocを指定しても文字化けするだけなので,Eclipseみたくmergedocで日本語化したsrc.zipを使うのが通例。下図がその設定画面。
JDKのupdateが出るたびにsrc.zip再生成するのが面倒で,しばらく英語版のまま使ってたんだけど,思うところあって仕組みを整理してみたよ。
ちなみに,IntelliJのJavadocポップアップは,あまりスタイリッシュじゃない。さらに文字化けするとゲンナリ度がUPする。ついで言うと,EclipseやNetBeansみたいなJavadocプレビューウィンドウなんて無いから,探すだけ無駄だよ。
こんな感じで,がっかりしていいレベルにかっこ悪い。
経験則から,SDKに指定したJavadocは元のコンテンツのエンコードに関係無く,プラットフォームエンコードで解釈しようとするみたい。つまり,Windowsだったら,MS932(Windows-31J)なJavadocを用意すればすべて解決する。と言うことに今さら気付いたので,も一歩ふんばって,実際に用意してみた。
その際に使ったGroovyスクリプトはこんなやつ。
new File("./source").eachFileRecurse { File f -> def dist = new File(f.path.replace('.\\source', '.\\dist')) if (f.isDirectory()) { println "mkdir $dist" dist.mkdir() } if (f.path =~ /\.html$/) { dist.withWriter("MS932") { Writer w -> f.newReader("EUC_JP").readLines().each { String line -> w.println line.replace("charset=euc-jp", "charset=Windows-31J") } } } }
元にしたJavadocは,ここのを利用しました(なんとまあタイムリーな話だ)。
→ http://blogs.sun.com/katakai/entry/java_6_api_doc_updated
出来上がった,MS932版Javadocを指定してみたら,ほらご覧の通り。なんか知んないけど,フォントが小さくなっとる。副作用バンザイ。:-D
Javadocを直接直しちゃうから,updateのたびにmergedocでsrc.zip作り直す必要もない。...こんな,ほんのちょっとの手間で解決するんだったら,とっととやっとくんだった。:-(
ついでだから,mergedoc版も説明しとく。mergedocで作るsrc.zipのエンコードはプラットフォームエンコードが望ましい(正確には,IDE Encodingで指定したもの)。とりあえず,WindowsだったらMS932にしとくのが無難。
IDEA8からプロジェクトごとにファイルエンコードが指定できるようになったんだけど,エンコードごとにmergedocでsrc.zip用意するのも面倒なので,IDE Encodingは
#File -> Settings -> File Encodings -> IDE Encoding
だた,こんだけだとコンパイルすると「ソースにMS932で解釈できない文字あるんだけど?」言われるので,Java Compilerにオプション "-encoding UTF-8" を設定する。
#File -> Settings -> Compiler -> Java Compiler -> Additional command line parameters
ちょっとダサい。それと,src.zipを日本語化すると,こんな感じにポップアップしてた(見ての通りかこわるい)。なにがどうして,さっきみたいにフォントが小さくなったのか理由がわからん。