概要
Ubuntu でロケールを日本に設定する方法について解説します。
まとめ
先に必要なコマンドを記載し、次節以降で内容について解説します。
sudo apt install -y locales
sudo sed -i '/^# *ja_JP.UTF-8 UTF-8/s/^# *//g' /etc/locale.gen
sudo locale-gen
sudo update-locale LANG=ja_JP.UTF-8
ロケール
ロケール (locale) は、特定の地域や文化に関連する設定を指します。プログラムやシステムがユーザーの地域や文化に合わせた表示や動作を行うために使用されます。例えば、日付や時刻の表示形式、数値のフォーマット、通貨の表記などがロケールによって異なるため、適切なロケール設定を行うことで、ユーザーにとって直感的で使いやすいインターフェースを提供できます。
ロケールの要素:
- 言語: 使用する言語 (例: 日本語、英語)。
- 国または地域: 特定の国や地域 (例: 日本、アメリカ)。
- 文字コード: 使用する文字エンコーディング (例: UTF-8)。
- 日時の形式: 日付や時刻の表示形式 (例: YYYY-MM-DD、DD/MM/YYYY)。
- 数値の形式: 数値の表示形式 (例: 小数点の記号、桁区切りの記号)。
- 通貨の表示: 通貨の記号や形式 (例: ¥、$)。
ロケールの設定
1. ロケールの設定ファイルをインストールする
ロケールの設定ファイルを含むパッケージ locales
をインストールします。
sudo apt install -y locales
インストールすると、/usr/share/i18n/
以下にロケールの設定ファイルや文字コードが配置されます。
tree /usr/share/i18n
/usr/share/i18n
├── charmaps
├── locales
└── SUPPORTED
2. ロケール設定をコンパイルする
ロケール設定をコンパイルするには、localedef
コマンドを使用する方法と、localedef
をラップした locale-gen
コマンドを使用する方法があります。
localedef コマンドを使用する場合
sudo localedef -c -i ja_JP -f UTF-8 -A /etc/locale.alias ja_JP.UTF-8
-c
: エラーを無視します。-i
: ロケール名 (/usr/share/i18n/locales
からこの名前のロケール設定を取得)。-f
: 文字コード名 (/usr/share/i18n/charmaps
からこの名前の文字コード設定を取得)。-A
: ロケール名のエイリアスを登録 (/etc/locale.alias
にja_JP.UTF-8
をja_JP
という名前で参照できるよう登録)。
コンパイルが完了すると、ロケールアーカイブ /usr/lib/locale/locale-archive
に ja_JP.UTF-8
のロケール情報が追加されます。このファイルには、システムで利用可能なすべてのロケールのデータが含まれています。このファイルはメモリ上にマッピングされ、プログラムがロケール情報に高速にアクセスできるようになります。
ロケールアーカイブに存在するロケールの一覧は以下のコマンドで確認できます。
localedef --list-archive
locale-gen コマンドを使用する場合
locale-gen
は、localedef
によるコンパイルを簡単に行えるようにラップしたスクリプトです。このスクリプトでは、/etc/locale.gen
に記載されたロケールのコンパイルをまとめて行い、ロケールアーカイブに追加します。
/etc/locale.gen
には、ロケールおよび文字コードの一覧がコメントアウトした形で記載されているため、コンパイルしたいロケールのコメントアウトを外して、locale-gen
を実行します。
# /etc/locale.gen を編集して ja_JP.UTF-8 を有効にする
sudo sed -i '/^# *ja_JP.UTF-8 UTF-8/s/^# *//g' /etc/locale.gen
# ロケール設定をコンパイルする
sudo locale-gen
利用可能なロケールは、以下のコマンドで確認できます。
locale -a
3. ロケールを設定する
環境変数
ロケールの設定には、以下の環境変数が使用されます。優先順位は LANGUAGE > LC_ALL > LC_XXX > LANG
の順です。
環境変数名 | 内容 |
---|---|
LC_ALL | 全てのロケール設定を一括で適用する場合に使用 |
LANG | システムのデフォルト言語を設定 |
LANGUAGE | 使用言語を指定 |
LC_CTYPE | 文字エンコーディング |
LC_NUMERIC | 数値の書式 |
LC_TIME | 日時の書式 |
LC_COLLATE | 文字列のソート順 |
LC_MONETARY | 通貨の書式 |
LC_MESSAGES | メッセージの言語 |
LC_PAPER | 用紙サイズの書式 |
LC_NAME | 名前の書式 |
LC_ADDRESS | 住所の書式 |
LC_TELEPHONE | 電話番号の書式 |
LC_MEASUREMENT | 数量の書式 |
LC_IDENTIFICATION | ロケールの識別情報 |
これらの環境変数を設定することで、システムのロケールを制御できます。基本的には LANG
だけ設定すれば、他の環境変数も同じロケールが適用されますが、特定の設定を上書きしたい場合に LC_XXX
の各変数を使用します。
ロケールの設定方法
update-locale
コマンドを使用すると、ロケールの環境変数を /etc/default/locale
ファイルに追加できます。
update-locale
は設定の整合性がチェックするため、安全に環境変数を設定できます。
# ロケールを ja_JP.UTF-8 に設定
$ sudo update-locale LANG=ja_JP.UTF-8
# 設定が反映されたことを確認する
$ locale
設定を反映させるためには、ログアウトして再度ログインする必要があります。
4. 設定が反映されたことを確認する
設定が反映されたことを確認するために、日付コマンドを実行します。
$ date
2024年 12月 26日 木曜日 08:29:52 UTC
コメント