[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 メーリングリストの案内