🦁
psqlでlc_messages=Cを指定しているのに日本語が表示される理由
windowsに直にインストールしたPostgresql環境です。
postgresql.conf
にlc_messages = C
を指定しているのに、psqlで接続した時に何故日本語が表示されるのか?
結論
psql上に表示されるシステムメッセージの言語を決めるパラメータは2つある模様。
- 接続元の環境変数の
LC_MESSAGES
、未指定の場合は接続元のOSの言語- psql接続後に値を確認する事や変更する事は一切出来ないと思う。せめて確認をしたい。
- ここの変数をなんと言うのか不明。
- 接続先のDBの設定の
LC_MESSAGES
- 接続先のDBのconfファイルを書き換えたり、接続後のシェルで
SET LC_MESSAGES TO 'C'
などで変更可能。一般的にググって出てくるpsqlの設定はこれを指す
- 接続先のDBのconfファイルを書き換えたり、接続後のシェルで
前者の接続元に依存する言語は、\l
や接続時のパスワードを促す文章などの言語に使われる。
pg_settings
で取れる値は全てC
なのに日本語になってる。
後者の接続先のDBに依存する言語は以下の通り。赤枠の部分はlc_messages
を日本語にして水色の部分はC
を指定しているので、DBのサーバー側から渡されたエラーメッセージの言語に反映されている。
C
の場合でも行 1
の部分は接続元に依存しているようだ。
postgresql公式ドキュメントやチュートリアルを見ても前者の概念は記載が見つからなかった。
どこに書いてあるか知ってる人おしえてくれ
Discussion
client_encoding
?