システムワイドなロケール設定 〜 Mac OS X (その2)
その1では、「ターミナル」や、SSH 経由でのアクセスなど、主にCUI系アクセスでのロケール設定に関してまとめました。
本エントリでは、主に GUI 経由で起動されるアプリに対して、ロケール設定を反映させる方法についてまとめます。
GUI 経由で起動されるアプリへのロケール設定
GUI 経由でアプリを起動した場合、起動されたプロセスに対して、ロケール系環境変数は設定されません。GUI 経由でのアプリ起動では、シェルが介在していないので、~/.bashrc
等での設定も意味を持ちません。
GUI 経由で起動される全てのアプリに対して、ロケール系のものを含めた、環境変数設定を行うには、設定ファイル /etc/launchd.conf
を使用します。
例えば、LANG
環境変数に ja_JP.UTF-8
を設定する場合、設定ファイル /etc/launchd.conf
(存在しない場合は新規作成) に対して、以下のような行を追加します (格納場所が /etc
なので、ルート権限が必要です)。
setenv LANG ja_JP.UTF-8
記述追加後の OS 再起動以降は、GUI 経由で起動されるアプリに対して、環境変数 LANG
に ja_JP.UTF-8
が設定されるようになります。
もしも、/etc/launchd.conf
の編集前 (あるいは OS 再起動の前) に、環境変数設定の効果を確認したい場合は、ターミナル等から "launchctl setenv 環境変数名 値
" を実行した上で、改めて GUI 経由でアプリを起動してみてください。
launchctl
コマンドには、環境変数設定周りに関する以下のような機能もあります。
- 特定の環境変数の設定状況は "
launchctl getenv 環境変数名
" - 環境変数設定の解除は "
launchctl unsetenv 環境変数名
" - 設定済み環境変数の一覧は "
launchctl export
"
$ launchctl getenv LANG $ launchctl setenv LANG ja_JP.UTF-8 $ launchctl getenv LANG ja_JP.UTF-8 $ launchctl export : : LANG="ja_JP.UTF-8"; export LANG;
設定変更が正しく機能することを確認したなら、設定の内容を /etc/launchd.conf
に保存して、OSを再起動しましょう。
なお、/etc/launchd.conf
での記述内容は、OS 起動時に一度読み込まれるだけなので、現状では「言語とテキスト」での設定変更を即時に反映することはできません。
個人的な TODO になりますが、 TortoiseHg のスタートアップ処理部分に:
上記のような処理を追加することで、Nightly build として提供されている TortoiseHg アプリを GUI 経由で起動した場合等に発生する、以下のような文字コードの問題を、/etc/launchd.conf
等を設定することなく解消したいなぁ、などと考えています(ついでに「言語とテキスト」の設定変更への動的追従も可能になりますし)。