昔書いた記事が古くなったので改めてまとめておきます。
Homebrew の Wine は依存関係に gettext が入っていないためメニューの「ファイル」や「編集」などの部分が日本語にならないことがあります。これは翻訳データの中にそもそも日本語が入っていないのでレジストリの設定ではどうすることもできません。gettext をインストールした状態で Wine を再インストールすれば有効になる可能性はありますがバイナリ形式でインストールされる場合はどうしようもありません。Mojave の Homebrew では恐らくボトルというバイナリ形式でインストールされています。解決策が無いわけではありませんが長くなるのでここには書きません。
なお、一部が英語になる可能性はありますが Windows アプリケーション内の日本語の部分は問題ないはずです。
さくっと設定したい人
これが一番手っ取り早い方法です。下記のコードを最後の改行までしっかりコピーして Terminal.app に貼り付ければ完了です。お疲れさまでした。
iconv -f UTF-8-t CP932 <<! | LANG=ja_JP.UTF-8 wine regedit -REGEDIT4[HKEY_CURRENT_USER\\Control Panel\\Desktop]"FontSmoothingType"=dword:00000002[HKEY_CURRENT_USER\\Software\\Wine\\Fonts\\Replacements]"MS UI Gothic"="ヒラギノ丸ゴ ProN W4""MS ゴシック"="ヒラギノ丸ゴ ProN W4""MS Pゴシック"="ヒラギノ丸ゴ ProN W4""MS 明朝"="ヒラギノ明朝 ProN W3""MS P明朝"="ヒラギノ明朝 ProN W3"!
FontSmoothingType の違いについては下記の画像を参考にしてください。
以下は Wine に興味がある方のみ引き続きお読みください。
日本語を含むレジストリデータを regedit.exe に渡す場合、以下のことを守る必要があります。例えば REGEDIT4
が書いてない場合、regedit.exe はデータを読み込みません。また、文字コードを CP932 にしていても Wine が LANG=ja_JP.UTF-8
以外(例えば LANG=en_US.UTF-8
)で実行されると正しくデータが登録されません。
実際の Windows 10 のレジストリエディタを確認しましたが、REGEDIT4
が Windows Registry Editor Version 5.00
に変わり、文字コードも UTF-16LE のようでした。この方法が Wine の方で使えるかはいまのところ確認していません。
system.reg や user.reg を直接編集したい人
system.reg や user.reg(以下、user.reg としてまとめて説明します)はアスキーテキストになっているので文字列型値(REG_SZ)に直接日本語を書くことができません。例えばレジストリエディタで HKEY_CURRENT_USER\Software\Wine\Fonts\Replacements
というキーに文字列値として名前が「MS UI Gothic」でデータが「ヒラギノ丸ゴ ProN W4」という設定をしたとします。
この場合、user.reg
には下記のように登録されます。
[Software\\Wine\\Fonts\\Replacements] "MS UI Gothic"="\x30d2\x30e9\x30ae\x30ce\x4e38\x30b4 ProN W4"
Wine のフォント設定を紹介しているサイトでは「この文字をコピーして貼り付けてください」と説明しているのを見かけますがこれだとアレンジが効かないんですよね。そもそもエスケープされた文字の元がなんだったのかもわからないので不安です。ここではちゃんと自分で日本語から設定を作成して user.reg の形式に合うように変換する方法を紹介します。
まず、テキストエディタで設定を作ります。user.reg の書式は下記のようになっています。ダブルクォートなどの規則をしっかり守りましょう。
"名前"="データ"
私がよく使う HKEY_CURRENT_USER\Software\Wine\Fonts\Replacements
に設定するスタンダードな設定は下記の通りです。
"MS UI Gothic"="ヒラギノ丸ゴ ProN W4""MS ゴシック"="ヒラギノ丸ゴ ProN W4""MS Pゴシック"="ヒラギノ丸ゴ ProN W4""MS 明朝"="ヒラギノ明朝 ProN W3""MS P明朝"="ヒラギノ明朝 ProN W3"
これを iconv
に通しますが、--unicode-subst
オプションを使って \xhhhh
で出力されるようにします。
/usr/bin/iconv -f UTF-8--unicode-subst="\x%04x"-t ISO-8859-1レジストリ.reg
"MS UI Gothic"="\x30d2\x30e9\x30ae\x30ce\x4e38\x30b4 ProN W4" "\xff2d\xff33 \x30b4\x30b7\x30c3\x30af"="\x30d2\x30e9\x30ae\x30ce\x4e38\x30b4 ProN W4" "\xff2d\xff33 \xff30\x30b4\x30b7\x30c3\x30af"="\x30d2\x30e9\x30ae\x30ce\x4e38\x30b4 ProN W4" "\xff2d\xff33 \x660e\x671d"="\x30d2\x30e9\x30ae\x30ce\x660e\x671d ProN W3" "\xff2d\xff33 \xff30\x660e\x671d"="\x30d2\x30e9\x30ae\x30ce\x660e\x671d ProN W3"
あとはコピーして貼ればいいんじゃないかな。
(余談)Linuxの場合
Linuxの iconv
には macOSのような --unicode-subst
オプションは無いが、uconv
の --to-callback escape-c
を使えば \uhhhh
形式で出てくるのでこれを sed
で変換する。
uconv -f UTF-8--to-callback escape-c -t ISO-8859-1<<! | sed 's/\u/\x/g'"MS UI Gothic"="VL Pゴシック""MS ゴシック"="VL ゴシック""MS Pゴシック"="VL Pゴシック"!
16進数部は大文字でも小文字でも user.reg
は気にしなくてよい。
"MS UI Gothic"="VL P\x30B4\x30B7\x30C3\x30AF" "\xFF2D\xFF33 \x30B4\x30B7\x30C3\x30AF"="VL \x30B4\x30B7\x30C3\x30AF" "\xFF2D\xFF33 \xFF30\x30B4\x30B7\x30C3\x30AF"="VL P\x30B4\x30B7\x30C3\x30AF"
rundll32.exe に INF を渡して登録する
面倒過ぎるのであまりおすすめしません。下記のファイルに説明が書いてあります。
https://github.com/mattintosh4/osx-wine-inf/blob/master/osx-wine.inf