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

Rui F Ribeiro
  • 56,709
  • 26
  • 150
  • 232
Dave
  • 1,036
  • Related (duplicate?): https://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

2 Answers2

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.

Stephen Kitt
  • 434,908
  • 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 09 '19 at 18:31
  • @bonanza I don’t know what the idiomatic approach is on Arch Linux. You could ask a new question if you like! – Stephen Kitt Apr 09 '19 at 19:19
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.

El John
  • 41