19

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").

4
  • Related (duplicate?): unix.stackexchange.com/questions/15291/set-lc-but-not-lc-all
    – Heinzi
    Jul 17, 2018 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, 2018 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"? Jul 17, 2018 at 14:18
  • @Fabian I suspect the use-case here is to have English messages, but German date formats etc. Jul 19, 2018 at 17:34

2 Answers 2

17

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.

6
  • Since LANG is only a fallback, your proposal does not work in case there are other LC_* variables.
    – schily
    Jul 17, 2018 at 10:04
  • 1
    Well that’s the whole point of using LANG here, but I’ve clarified that, thanks. Jul 17, 2018 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, 2018 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). Jul 17, 2018 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, 2019 at 18:31
0

Based on the accepted answer by Stephen and this post I built the desired en_DE locale together with some merged installing instructions for download here. Feel free to try it out and give some feedback.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .