I want to use English language with German locale settings.

Right now my system runs with the following setup (configured during installation procedure in Debian Expert Installer):

  • Language: English - English (Default)
  • Country, territory or area: other -> Europe -> Austria
  • Country to base default locale settings on: United States - en_US.UTF-8
  • Keyboard: German

My question now is:

How can I preserve English language but switch the current locale (United States - en_US.UTF-8) to desired German locale (de_DE.UTF-8)?

During installation procedure this was not possible because an error occurred ("Invalid language/locale settings combination detected").

  • Related (duplicate?): unix.stackexchange.com/questions/15291/set-lc-but-not-lc-all – Heinzi Jul 17 '18 at 13:24
  • I was just looking on how to setup English with Dutch locale (same problem) and the first Google hit is this one. Long live StackExchange :-) – Tonny Jul 17 '18 at 13:55
  • 1
    Found this in "hot network questions" and now I'm interested: What are you trying to achieve? English, but with some words different specifically for German speakers? Like "I just took an Abitur exam" or "This is a train from Deutsche Bahn"? – Fabian Röling Jul 17 '18 at 14:18
  • @Fabian I suspect the use-case here is to have English messages, but German date formats etc. – Stephen Kitt Jul 19 '18 at 17:34

en_DE doesn’t exist as a default locale, so you can’t select English localised for German-speaking countries as a locale during installation. (Why should one use update-locale instead of directly setting LANGUAGE? describes the checks involved in choosing a locale.)

There are two approaches to achieve what you’re after.

  1. One is to create a new locale with your settings; see How to (easily) be able to use a new en_** locale? for details.
  2. The other is to set up your locale settings in a finer-grained fashion, using the various LC_ variables; for example:

    export LANG=en_US.UTF-8
    export LC_MONETARY=de_DE.UTF-8
    export LC_TIME=de_DE.UTF-8

    or, if you want German to be the default except for messages:

    export LANG=de_DE.UTF-8
    export LC_MESSAGES=en_US.UTF-8

    (and unset any other conflicting LC_ variables, in particular LC_ALL which overrides all other settings). You can check your settings using the locale program; see How does the "locale" program work? for details.

  • Since LANG is only a fallback, your proposal does not work in case there are other LC_* variables. – schily Jul 17 '18 at 10:04
  • 1
    Well that’s the whole point of using LANG here, but I’ve clarified that, thanks. – Stephen Kitt Jul 17 '18 at 10:06
  • Thanks a lot for your great help Stephen! Do I first have to generate the German locale before I can type it into /etc/default/locale? I guess right now I only have US-locale existent, so I fear de_DE.UTF-8 is not yet available on my system? – Dave Jul 17 '18 at 10:46
  • 2
    @Dave you’ll need to make it available, yes, either by running sudo dpkg-reconfigure locales or by installing locales-all. You shouldn’t edit /etc/default/locale directly, but use update-locale instead (see the first link in the answer). – Stephen Kitt Jul 17 '18 at 11:07
  • @StephenKitt thanks! Could you give me a pointer on where to add the export commands to (on archlinux) to make them available for all programs and be set on boot? – bonanza Apr 9 '19 at 18:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.