KDOC 76: コンテナでLocaleを設定する
この文書のステータス
- 作成
- 2024-02-07 貴島
- レビュー
- 2024-02-08 貴島
イントロ
Localeとは「その地域で使われる言語や通貨の単位などのまとまり」1のことである。
localectl
| System | Locale: | LANG=en_US.UTF-8 | | LC_NUMERIC=ja_JP.UTF-8 | | | | LC_MONETARY=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 | | | | VC | Keymap: | n/a | | X11 | Layout: | jp | | X11 | Model: | pc105 |
手順
手順は2段階である。Docker環境は公式のubuntuイメージで確認した。
- 言語パックをインストールする
- 環境変数を設定する
まず、インストール前に確認する。
locale -a
C C.utf8 POSIX
このとき、日本語ファイルを表示すると文字化けする。
apt update apt install language-pack-ja
locale -a
C C.utf8 POSIX ja_JP.utf8
Localeは環境変数で設定できるので、コマンド実行時にexportするか、DockerfileのEnvに記載する。以下はコマンド実行時にexportする例。
export LC_ALL=ja_JP.UTF-8
Locale前後でファイル名の日本語が正しく表示できるのを確認する。設定前はバイト列が見えている。
# 設定前 touch あ ls # => ''$'\343\201\202' # ================ # ... # ================ # 設定後 ls # => あ