manコマンドのメッセージと付属の日本語manページをUTF-8化
(2014/9/22)本記事の内容は2007年時点のGentoo向けとなっている。
ja_JP.UTF-8な環境において、manコマンドで表示されるマニュアルページについては、iconvコマンドで各マニュアルページのエンコーディングをUTF-8化していく作業で、化けずに表示されるようになったのだが、manコマンドが出力するメッセージは変な記号に化けたまま。
上は、本来「どのマニュアルを表示しますか?」というメッセージが出るはずの部分。端末のエンコーディングをEUC-JPに変更すると化けずに表示されたため、どこかでEUC-JP固定にされているのかと思い、ソースツリーを見ると、msgs/mess.jaというファイルで、日本語のメッセージがEUC-JPのエンコーディングで書かれていた。メッセージの国際化にgettextのNLSは使用されていない。
これをUTF-8へ変換し、更に、付属しているmanページもUTF-8へ変換してインストールする手順をメモしておく。
(2007/9/28)以下の作業を手動で行うことなく、パッケージをemergeでインストールするだけで行えるebuildファイルを作成した。→「manコマンドの出力と付属の日本語manページをUTF-8化するebuild」
$ su # emerge -av man (ソース展開後Ctrl+Z) # cd /var/tmp/portage/sys-apps/man-1.6e-r3/work/man-1.6e/ # mv msgs/mess.ja msgs/mess.ja.old # iconv -f eucjp -t utf8 msgs/mess.ja.old > msgs/mess.ja # sed -i -e s/euc-jp/utf8/ msgs/mess.ja.codeset # for file in man/ja/*.man; do mv ${file} ${file}.old; iconv -f eucjp -t utf8 ${file}.old > ${file}; done # fg
これで、manコマンドの出力メッセージがUTF-8環境で正常に表示されるようになった。