Raspberry Pi で日本語設定したのに表示できないので locale の設定をするメモ

Linux,お役立ち情報,プログラムlocale,Raspberry Pi,UTF-8,ラズパイ,日本語設定

Raspberry Pi で日本語を使用しようと思ったら、すぐに表示ができなかったので解決する方法をメモしておきます。

状況

適当に GUI で起動して初期設定が色々終わった後、再起動したらターミナルで日本語の表示がうまくいってないことに気づきました<ref>初期設定で「Japan」とか設定したのに「表示は英語にします」とか余計なことをしたせいかもしれないけど。</ref>。とりあえず locale コマンドを使うと以下のように ja_JP.UTF-8 が設定されているものの、色々エラーを吐いています。

$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=ja_JP.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=ja_JP.UTF-8

続いて localectl locale-list を実行すると ja_JP.UTF-8 が存在しません。

$ localectl list-locales
C.UTF-8
en_US.UTF-8

なお使用しているのは Raspberry Pi OS です。

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 11 (bullseye)
Release:	11
Codename:	bullseye

解決方法

root 権限で locale を追加します。ここでは sudo を使います。

$ sudo localedef -f UTF-8 -i ja_JP ja_JP

これで locale が適切に設定されます。

$ localectl list-locales
C.UTF-8
en_US.UTF-8
ja_JP.UTF-8
$ locale
LANG=ja_JP.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=ja_JP.UTF-8