How to use Ubuntu in English, but still show German formats

If you want to have an English Ubuntu UI, but still see dates, money amounts, paper formats, etc. in German formats, you can fine-tune your /etc/default/locale like this:

LANG="en_US.UTF-8"
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"

Make sure you have both en_US and de_DE locales installed:

sudo locale-gen en_US
sudo locale-gen en_US.UTF-8
sudo locale-gen de_DE
sudo locale-gen de_DE.UTF-8

If you needed to install a locale, make sure to do:

sudo update-locale

Now restart your system for the changes to take effect.

Known issues

You might encounter locale issues when you ssh to machines that don't have those locales set (de_DE) and some errors like this with postgresql might occur:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_PAPER = "de_DE.UTF-8",
        LC_ADDRESS = "de_DE.UTF-8",
        LC_MONETARY = "de_DE.UTF-8",
        LC_NUMERIC = "de_DE.UTF-8",
        LC_TELEPHONE = "de_DE.UTF-8",
        LC_MESSAGES = "en_US.UTF-8",
        LC_IDENTIFICATION = "de_DE.UTF-8",
        LC_COLLATE = "en_US.UTF-8",
        LC_MEASUREMENT = "de_DE.UTF-8",
        LC_CTYPE = "en_US.UTF-8",
        LC_TIME = "de_DE.UTF-8",
        LC_NAME = "de_DE.UTF-8",
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Then you might remove/comment this line from your /etc/ssh/ssh_config:

SendEnv LANG LC_*
Henning Koch Almost 13 years ago