昔書いた記事が古くなったので改めてまとめておきます。
- Homebrew 2.1.3
- MacPorts 2.5.4
- WineHQ Binary 4.0.1
Homebrew の Wine は依存関係に gettext が入っていないためメニューの「ファイル」や「編集」などの部分が日本語にならないことがあります。これは翻訳データの中にそもそも日本語が入っていないのでレジストリの設定ではどうすることもできません。gettext をインストールした状態で Wine を再インストールすれば有効になる可能性はありますがバイナリ形式でインストールされる場合はどうしようもありません。Mojave の Homebrew では恐らくボトルというバイナリ形式でインストールされています。解決策が無いわけではありませんが長くなるのでここには書きません。
なお、一部が英語になる可能性はありますが Windows アプリケーション内の日本語の部分は問題ないはずです。
英語環境では LANG
環境変数が en_US.UTF-8
になっているため、単に wine
というコマンドを叩いただけでは日本語は表示出来ません。wine
コマンドを叩く前に LANG=ja_JP.UTF-8
をエクスポートしてください。なお、この設定は現在のシェルでのみ有効となるため、ターミナルを新たに立ち上げたりした場合は再度エクスポートする必要があります。
export LANG=ja_JP.UTF-8
毎回入力するのが面倒な場合は ~/.bash_profile
などに export LANG=ja_JP.UTF-8
を書いておくか、alias
や関数を使って wine
コマンドが LANG=ja_JP.UTF-8
で起動するようにしてください。
alias wine="LANG=ja_JP.UTF-8 wine"
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows NT\CurrentVersion\FontSubstitute
というキーに MS Shell Dlg
という値があり、こちらを変更することでもフォントを設定することができますがこの値は Wine が初期値に書き換えることがあるため変更しても元に戻る可能性があります。例えば LANG=ja_JP.UTF-8
では MS UI Gothic
に、LANG=en_US.UTF-8
では Tahoma
に戻します。
さくっと設定したい人
これが一番手っ取り早い方法です。下記のコードを最後の改行までしっかりコピーして 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