Windowsを英語UIにしたときの変な感じをレジストリをいじって直した話

この記事は Kaigen Discord Advent Calendar 2018 3日目の記事です。
イキリオタクなのでWindowsのUIの言語を英語にし,ロケールは日本語のままにして文字化けを回避した状態でしばらく使っていましたが,根は日本人なので,アメリカンなものに少し違和感を覚えることがいくつかありました。

違和感を覚えたところ

その1 Dateformatがアメリカンなものしか選べなくなる

日本語UIでは(というか日本では) yyyy/MM/ddtt hh:mm:ss などが一般的に使われていると思いますが,英語圏ではそうではなく,MM/dd/yyyyhh:mm:ss tt など,普段日本で使われているものからいきなりこれになると強烈な違和感を感じるようなものになっています。
WindowsのDateformatの設定では融通があまり聞かないので,自由に設定できるわけではありません。

その2 Dialogのフォントが.fuckingshitになる

f:id:Rires_Magica:20181203171043p:plain
とんでもないことになっていますね。潰れていますし,カックカクです。
純粋にロケールまで英語ならこんなことにはならないのですが,日本語が第一言語なので扱えないと困るということでロケールを日本語にするとこうなります。日本語UIにすれば良い話ではあるのですが,そうではない。
何も考えずにダイアログを作るとMS Shell Dlgが指定され,MS Shell DlgはTahomaになっていて,TahomaのリンクがMS UI Gothicになっているということらしいです。よくわかりません。

Windowsの悪いところであり良いところでもある "レジストリ" で修正を図ってみたいと思います。

実際にレジストリを編集

その1 Dateformatを自由に変える

その1については,簡単に効果がわかりますし,即時反映されます。SettingsアプリでDateformatを変更したあとにログオフをしなくても変わるのと一緒です。
WindowsのDateformatは HKEY_CURRENT_USER\Control Panel\International というキーに存在します。
以下に一部のDateformatの値の意味を説明します。

  • sLongDate
    年,月,日,曜日 を指定しているものです。タスクバーの日時をクリックしてカレンダーを出したときに出てくる日付の表示に使われています。
  • sShortDate
    年,月,日 だけを簡潔に指定しているものです。(年月日ではなく"/") タスクバー右もしくは下の日付の表示に使われています。
  • sTimeFormat
    時,分,秒,午前午後 を指定しているものです。タスクバーの日時をクリックしてカレンダーを出したときに出てくる時間の表示に使われています。
  • sShortTime
    時,分,午前午後 だけを簡潔に指定しているものです。(秒がありません) タスクバー右もしくは下の時間の表示に使われています。
  • sYearMonth
    年,月 を指定しているものです。カレンダーの年月の表示に使われています。

もしDateformatに日本語などを含む場合は,'で囲ってください。
必ず意味通りに編集しなければいけないわけではありません。 ISO 8061に則って書けば,ちゃんと表示を行ってくれます。

その2 ダイアログのフォント変更

この変更にはログオフか再起動が必要になります。 ダイアログのフォントは HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes というキーに存在します。
FontSubstitutesキーには"MS Shell Dlg","MS Shell Dlg 2"という値が存在するので,2つとも好きなフォントに変更してください。(Segoe UIにすると統一感が出ます。)

以上です。私が違和感を感じて直したところはこんなところですが,まだまだ弄れそうであれば後日追記します!