試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

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環境で正常に表示されるようになった。