[pgsql-jp: 37841] Re: 透過的に翻訳メッセージを返す方法
Ebihara, Yuichiro
ebihara @ iplocks.co.jp
2006年 12月 22日 (金) 16:48:06 JST
海老原です。
片岡さん、貴重なご意見をありがとうございます。
> 何となく直感的に不安を感じてしまいます。lc_messagesを変更するとそれ
に
> あわせてPostgreSQLサーバからのメッセージが変わることがありますが、その
辺
> が副作用(というか求めていない動作)にならなければいいのですが。
メッセージそのものを使う気はないので、この点はたぶん大丈夫なんですが、
> lc_messagesはあくまでもサーバ側のOSの動作(メッセージの言語)を変更
す
> るパラメータですから、クライアント側とサーバ側とでOSがサポートしている
ロ
> ケールに相違がある場合、環境変数からの自動設定ではうまく機能しない可能
性
> があります。
あっ、と思って8.1.4 on Windowsでset lc_messagesを試してみたら(前回は
Linux)、
こんなエラーになりました。
iplocksdb=> set lc_messages to 'ja_JP.utf8';
ERROR: permission denied to set parameter "lc_messages"
普通に日本語Windows Server 2003にインストールしたのですが、
postgresql.conf
のlc_messagesのデフォルト設定は'C'になっています。
そして、psqlからlc_messagesを変更しようとすると上記のエラーになります。
'C'ですらダメなので、Windowsでは変更できないようになっているのかも。
こりゃ困ったってんで見つけたのがこれ。
http://www.postgresql.jp/document/pg820doc/html/runtime-config-custom.ht
ml
postgresql.confで以下の設定をして再起動します。
custom_variable_classes = 'session'
session.lang = 'en' # デフォルトは英語
あとは普通にセッション単位で異なる設定を持てますし、
set session.lang to 'ja';
設定値の取得も current_setting('session.lang') でいけました。
この機能、どうやら8.0で導入されたようです。
--
海老原 雄一郎 / EBIHARA, Yuichiro
pgsql-jp メーリングリストの案内