1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

macOS の locale バグ対応のついでに旧暦表示にしてみた

Last updated at Posted at 2025-07-10

まだバグってた

常用している MacBook Pro のOSは3周回遅れだったのだが、新しいマシンが届いたのでやっと macOS 15 を使うようになった。date の出力がおかしいという噂は聞いていたが、いくらなんでももう直っているだろうと思ったら、まだそのままだった。

なにしろ datecal の出力が壊れているので、どうしようもない。自作の week コマンドも影響を受けていた。

スクリーンショット 2025-07-10 19.26.21.png

これはひどい。2行ずれているせいで、1月と2月に意味不明な名前が表示され、3月からは2ヶ月前の名前が表示される。

とりあえず LC_TIME=C することで凌いだが、week の出力ももちろん英語になってしまう。日本語で使うと和暦が出るようになっていて、西暦との対応がわかりやすくて地味に便利なのだ。

スクリーンショット 2025-07-10 18.59.34.png

locale 関連ファイルの修正方法

macOS の /usr 以下は簡単には変更できないので、自分のホームに locale 関連ファイルをコピーして修正する。方法はこの答えに書いてある(この人は sudo しているが、その必要はない)。

要は /usr/share/locale/ja_JP.UTF-8 をたとえば ~/locale にコピーして、その下の LC_TIME というファイルからコメントを削除してやればいい。そして、そのファイルを参照するために PATH_LOCALE=$HOME/locale のように環境変数を設定する。

これで元通りになって、めでたしめでたし。

スクリーンショット 2025-07-10 19.06.17.png

旧暦に変えてみる

設定ファイルをいじったので、ちょっと遊んでみるかと、月の名称を旧暦に変えてみた。

スクリーンショット 2025-07-10 19.10.53.png

なかなか、いいじゃないの。

ちなみに、このコマンドは簡単に各国語でカレンダーを表示できて結構楽しい。
もっともエチオピアのカレンダーなんかは、ちゃんと表示しているかどうかすら判別できないのだが。

スクリーンショット 2025-07-10 19.16.42.png

どんな言語に対応しているかは week -l でわかります。
詳しくはこちらを。

追記:韓国語もだよ

他の言語はどうなのかと気になったので調べてみた。
LC_TIME は本来58行でなければならない。
それ以外のファイルを検索するとこのようになった。

$ wc -l */LC_TIME | grep -v 58
      59 ar_JO.UTF-8/LC_TIME
      59 ar_JO/LC_TIME
      60 ja_JP.UTF-8/LC_TIME
      60 ja_JP/LC_TIME
      60 ko_KR.UTF-8/LC_TIME
      60 ko_KR/LC_TIME
   16888 total

このうち ar_JO は、最後に1行コメントが追加されているので問題ないはず。
どうやら、世界中で日本と韓国だけがバグっているらしい。

スクリーンショット 2025-07-11 11.42.52.png

ということで、韓国語も直しておいてあげた。
ko_KR.UTF-8 とコード指定なしの ko_KR があるので、シンボリックリンクした。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?