RPi2でubuntu14.04LTS(8)x-window日本語化
x-window専用のロケール設定
x-windowを日本語化するとき問題となるのが、ttyのローカルコンソールでメッセージが文字化けしてしまうことです。
export LANG=Cとすれば済むことではありますが、それをいちいちやるのは面倒です。
x-windowだけのロケール設定ができないものかと調べてみたら、PAMでLightDMの認証時にスクリプトをフックできることが判りました。ローカルコンソールはLightDMを通らないので、x-windowセッションのときだけシステムロケール設定を上書きできます。
ロケールファイル作成
/etc/default/localeをコピーして/etc/default/x-localeを作成します。
1 |
sudo cp /etc/default/locale /etc/default/x-locale |
x-localeに対してupdate-localeを実行して、ロケールを設定します。
1 |
sudo update-locale --reset --locale-file=/etc/default/x-locale LANG=ja_JP.UTF-8 LC_ALL=ja_JP.UTF-8 |
メニューなども日本語化するには、上記にLANGUAGE=jp_JP.UTF-8
を追加します。
PAM設定
/etc/pam.d/lightdmを編集して、セッションのロケールファイルをlocaleからx-localeに変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#%PAM-1.0 auth requisite pam_nologin.so auth sufficient pam_succeed_if.so user ingroup nopasswdlogin @include common-auth auth optional pam_gnome_keyring.so auth optional pam_kwallet.so @include common-account session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close session required pam_limits.so @include common-session session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open session optional pam_gnome_keyring.so auto_start session optional pam_kwallet.so auto_start session required pam_env.so readenv=1 #session required pam_env.so readenv=1 user_readenv=1 envfile=/etc/default/locale session required pam_env.so readenv=1 user_readenv=1 envfile=/etc/default/x-locale @include common-password |
LightDMのログイン画面も日本語化するなら、/etc/pam.d/lightdm-greeterも同様に変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#%PAM-1.0 auth required pam_permit.so auth optional pam_gnome_keyring.so auth optional pam_kwallet.so @include common-account session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close session required pam_limits.so @include common-session session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open session optional pam_gnome_keyring.so auto_start session optional pam_kwallet.so auto_start session required pam_env.so readenv=1 #session required pam_env.so readenv=1 user_readenv=1 envfile=/etc/default/locale session required pam_env.so readenv=1 user_readenv=1 envfile=/etc/default/x-locale |
ログイン画面はLANGの値を見ているようで、LANGUAGEの設定は関係ないようです。