Ubuntu のロケールを LANG=en_US.UTF-8 にしているのですが、以下の点が気になるので LANG=en_US.UTF-8 のまま関連するロケールの環境変数を変更してみました。
- 日付書式が 2015-03-25 とかではなく、Wed 25 Mar 2015 になっている
- 時刻書式が 24H ではなく AM, PM になっている
- 通貨記号が \ ではなく $ になっている
Ubuntu バージョン
Ubuntu 14.04 (Trusty Tahr) Server
まずは現状のロケールの状態です。
システムのロケール設定
$ cat /etc/default/locale LANG="en_US.UTF-8" LANGUAGE="en_US:en"LANG 環境変数
$ echo $LANG en_US.UTF-8現在のロケール設定
$ locale LANG=en_US.UTF-8 LANGUAGE=en_US:en 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" LC_ALL=
日時フォーマットが YYYY-MM-DD HH:MM:SS (24時間表記) であるロケールを探す
以下を実施するといろいろな国や言語に関する 300以上の language-pack がインストールされます。今回は試しにやってみましたが、HDD 領域やパッケージをダウンロードする NW 帯域等のリソース消費が無駄なので検証環境以外では実施しないほうがよさそうです。
インストールする前の利用可能なロケール数を確認
$ locale -a | wc -l
24
全ての language-pack をインストール
$ apt-cache search language-pack | grep '^language-pack-' | awk '{print $1}' | xargs sudo apt-get -y install
インストール後の利用可能なロケール数を確認
$ locale -a | wc -l
360
日付の並びが YYYY MM DD のものを探す
$ locale -a | xargs -i{} bash -c 'printf "%-16s %s\n" {} "$(LC_TIME={} date +%c)"' | egrep '2015.*03.*26'
en_DK.utf8 2015-03-26T17:17:12 JST
ja_JP.utf8 2015年03月26日 17時17分13秒
ko_KR.utf8 2015년 03월 26일 (목) 오후 05시 17분 13초
si_LK 2015-03-26 17:17:14 +0900
si_LK.utf8 2015-03-26 17:17:14 +0900
ug_CN@latin Pe, 2015-03-26, 17:17:15
ug_CN.utf8@latin Pe, 2015-03-26, 17:17:15
zh_CN.utf8 2015年03月26日 星期四 17时17分16秒
zh_HK.utf8 2015年03月26日 星期四 17:17:16
zh_SG.utf8 2015年03月26日 17时17分16秒 JST
zh_TW.utf8 2015年03月26日 (週四) 17時17分16秒
- 360 あるロケールの中で YYYY MM DD の並びとなるものはこんなに少ないんですね。
- この中でなんとなく自分にあってる en_DK.utf8 を使うことにしました。
LANG=en_US.UTF-8 の状態で LC_TIME を変更しない場合
$ date +%c
Thu 26 Mar 2015 05:57:15 PM JST
LC_TIME=en_DK.utf8 の場合
$ LC_TIME=en_DK.utf8 date +%c
2015-03-26T17:58:46 JST
通貨記号を $ から \ に
python3 では以下のように LC_MONETARY=ja_JP.UTF-8 とすることで \ になりました。
LANG=en_US.UTF-8 の状態で LC_MONETARY を変更しない場合
$ python3 -c 'import locale; locale.setlocale(locale.LC_ALL, ""); print(locale.currency(123))'
$123.00
LC_MONETARY=ja_JP.UTF-8 の場合
$ LC_MONETARY=ja_JP.UTF-8 python3 -c 'import locale; locale.setlocale(locale.LC_ALL, ""); print(locale.currency(123))'
¥123
しかし、これだけだとなぜか LibreOffice の通貨記号は \ にならないので、いろいろ試したところ LC_CTYPE も ja_JP.UTF-8 にする必要がありました。
ロケールの変更をシステムに反映
まだの場合は language-pack をインストール
$ sudo apt-get install language-pack-en
$ sudo apt-get install language-pack-ja
目的のロケールが使えるようになっていることを確認
$ locale -a | egrep 'ja_JP|en_DK'
en_DK.utf8
ja_JP.utf8
システムのロケール設定を変更
$ sudo update-locale LC_TIME=en_DK.utf8 LC_MONETARY=ja_JP.UTF-8 LC_CTYPE=ja_JP.UTF-8
念のためシステム再起動
システムのロケール設定を確認
$ cat /etc/default/locale
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
LC_MONETARY=ja_JP.UTF-8
LC_TIME=en_DK.utf8
LC_CTYPE=ja_JP.UTF-8
現在のロケール設定を確認
$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE=ja_JP.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_DK.utf8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=ja_JP.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"
LC_ALL=
日時のフォーマットを確認
$ date +%c
2015-03-26T22:18:40 JST
通貨記号を確認
$ python3 -c 'import locale; locale.setlocale(locale.LC_ALL, ""); print(locale.currency(123))'
¥123
LibreOffice Calc の通貨記号も \ になりました。
0 件のコメント:
コメントを投稿