はじめに

こんにちは!今回はlocaleコマンドについて解説します。

localeは、システムのロケール設定を表示・確認するコマンドです。ロケールって何?という人も多いと思いますが、簡単には「言語、地域、文字コード」の設定のこと。「日本語で日付表示したい」「UTF-8で統一したい」というときに重要なんですよ。

多言語対応のシステムやスクリプト開発で、言語・地域設定による問題を解決する際に活躍します。

localeコマンドとは

localeは、現在のシステムロケール設定を表示する外部コマンドです。“locale"は「地域、ロケール」という意味ですね。

言語、国、文字コード、時間形式、通貨単位など、地域化に関連するさまざまな設定が含まれています。トラブルシューティングやシステム設定の確認に重要です。

基本構文

1
locale [オプション]

オプションなしで実行すると、現在のロケール設定をすべて表示します。

主なオプション

オプション 説明
-a インストール済みのすべてのロケール一覧表示
-m 利用可能なエンコーディング一覧表示
-c ロケール定義を簡潔に表示

使用例

例1: 現在のロケール設定を表示

1
locale

実行結果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"

現在のシステムロケール設定がすべて表示されます。

例2: インストール済みのロケール一覧

1
locale -a

実行結果:

1
2
3
4
5
6
7
8
C
C.UTF-8
en_AG
en_AU
en_BW
ja_JP.UTF-8
zh_CN.UTF-8
...

システムにインストール済みのロケール一覧。

例3: 日本語ロケール情報

1
locale -a | grep ja

実行結果:

1
2
ja_JP
ja_JP.UTF-8

日本語関連のロケールを抽出。

例4: 利用可能なエンコーディング一覧

1
locale -m

実行結果:

1
2
3
UTF-8
ISO-8859-1
...

システムがサポートしているエンコーディング。

例5: LANG環境変数の確認

1
echo $LANG

実行結果:

1
en_US.UTF-8

現在の言語ロケール設定。

例6: 時間フォーマットを確認

1
locale -c LC_TIME

実行結果:

1
LC_TIME="en_US.UTF-8"

時間フォーマットのロケール設定。

例7: 通貨フォーマットを確認

1
locale -c LC_MONETARY

実行結果:

1
LC_MONETARY="en_US.UTF-8"

通貨表示フォーマットのロケール設定。

例8: 日本語ロケールの詳細情報

1
locale -c ja_JP.UTF-8

実行結果:

1
(ja_JP.UTF-8のすべての設定を表示)

特定ロケールの完全な設定情報。

例9: ロケール指定で実行

1
LANG=ja_JP.UTF-8 locale

実行結果:

1
(日本語ロケール設定が表示)

特定ロケール環境での設定を表示。

例10: 簡潔表示で確認

1
locale -k LC_TIME

実行結果:

1
(時間フォーマット設定の詳細)

特定カテゴリの詳細情報。

Tips・注意点

ロケール設定の構成

1
2
3
# ja_JP.UTF-8 の構成
# ja_JP = 言語(ja)_国(JP)
# UTF-8 = エンコーディング

言語_国.エンコーディングの形式。

LANGとLC_*の関係

1
2
3
4
5
6
# LANG: デフォルト設定
export LANG=ja_JP.UTF-8

# LC_*: 個別設定(LANGより優先)
export LC_TIME=en_US.UTF-8
export LC_NUMERIC=ja_JP.UTF-8

LC_*はLANGより優先されます。

ロケール不足時の対応

1
2
3
4
5
# ロケールが見つからない場合
localedef -i ja_JP -f UTF-8 ja_JP.UTF-8

# または
sudo locale-gen ja_JP.UTF-8

必要なロケールをインストール。

文字コード問題の診断

1
2
3
# 文字化けが発生する場合
locale
# LANGとファイルの文字コードが一致しているか確認

エンコーディング不一致をチェック。

実践的な使い方

スクリプトで言語を統一

1
2
3
4
5
#!/bin/bash
export LC_ALL=en_US.UTF-8

# 英語環境でスクリプト実行
./myscript.sh

言語依存を排除したスクリプト実行。

システムロケール設定変更

1
2
3
4
5
6
7
8
9
# 現在の設定確認
locale

# 日本語ロケールに変更
export LANG=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8

# 変更確認
locale

一時的にロケールを変更。

ログファイルの文字コード統一

1
2
3
4
5
# 現在のロケール確認
locale | grep UTF

# UTF-8環境を確認
export LC_ALL=C.UTF-8

ログの文字化けを防ぐ設定。

開発環境の統一

1
2
3
# .bashrc に追加
export LANG=C.UTF-8
export LC_ALL=C.UTF-8

チーム全体でロケール統一。

まとめ

localeコマンドのポイント:

  • システムのロケール設定を表示・確認
  • ロケール = 言語、地域、文字コードの設定
  • -a: インストール済みロケール一覧
  • -m: 利用可能エンコーディング一覧
  • LANGとLC_*で細かく制御可能
  • 文字化けやコード問題の診断に有効
  • よく使う組み合わせ: locale, locale -a, locale -c LC_TIME

ロケール設定は目立たないですが、国際化対応やトラブルシューティングの際に重要。複数言語対応システムやスクリプト開発では、localeコマンドでしっかり設定を確認することが大切ですよ!