Change language of system and error messages in PostgreSQL

Solution 1:

SET lc_messages TO 'en_US.UTF-8';

More info on requirements and limitations here.

Solution 2:

Milen's answer didn't work for me.

I got it working by modifying a file postgresql.conf. If you're on Linux, write:

sudo find / -iname postgresql.conf

I had mine in /var/lib/pgsql/data. Then edit the file and search for a variable lc_messages and change it to your preferred language, e.g. 'en_US.UTF-8'.

If PostgreSQL stops working and you check in its log that you have an error that looks like this:

invalid value for parameter "lc_messages": "en_US.UTF-8"

You have to edit /etc/locale.gen and uncomment line with encoding from the error message (e.g. en_US.UTF-8). Then you have to run locale-gen (as root) to update the locales. Finally, to check if the locale is set you can run locale -a.

Or, if you want the language to be English, you can just set lc_messages = 'C'.

Solution 3:

For me neither Milen A. Radev's nor user1's answer worked - editing PostgreSQL\11\data\postgresql.conf had absolutely no effect. Even after setting lc_messages = 'random value' PostgreSQL would still start.

What helped was to delete PostgreSQL\11\share\locale\*\LC_MESSAGES, after that I finally got English messages.