Discussion:
bash Meldungen auf deutsch - warum?
Add Reply
Ulli Horlacher
2025-02-20 10:45:12 UTC
Antworten
Permalink
Wieso gibt die bash Fehlermeldungen auf deutsch aus trotz englischem locale?

***@mux22:~: ;
-bash: Syntaxfehler beim unerwarteten Wort »;«

***@mux22:~: locale
LANG=en_US.UTF-8
LANGUAGE=en:de
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_DK.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES=en_US
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
LC_ALL=

Wenn ich LC_ALL setze und danach wieder loesche, bleibts bei englisch - HAE?

***@mux22:~: LC_ALL=C
***@mux22:~: ;
-bash: syntax error near unexpected token `;'

***@mux22:~: unset LC_ALL
***@mux22:~: ;
-bash: syntax error near unexpected token `;'

***@mux22:~: locale
LANG=en_US.UTF-8
LANGUAGE=en:de
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_DK.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES=en_US
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
LC_ALL=


***@mux22:~: cat /etc/default/locale
LANGUAGE=en:de
LANG=en_US.UTF-8
LC_MESSAGES="en_US"
#LC_NUMERIC="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"
LC_TIME="en_DK.UTF-8"


***@mux22:~# ll /etc/locale.conf /etc/default/locale
lrwxrwxrwx root root - 2024-09-03 11:02:37 /etc/default/locale -> ../locale.conf
-rw-r--r-- root root 304 2025-01-14 19:03:47 /etc/locale.conf


System ist Mint 22 mit 5.2.21 (basiert auf Ubuntu 24).
--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail: ***@tik.uni-stuttgart.de
Allmandring 30a Tel: ++49-711-68565868
70569 Stuttgart (Germany) WWW: https://www.tik.uni-stuttgart.de/
Urs Janßen
2025-02-20 14:14:04 UTC
Antworten
Permalink
Post by Ulli Horlacher
Wieso gibt die bash Fehlermeldungen auf deutsch aus trotz englischem locale?
LANG=en_US.UTF-8
LANGUAGE=en:de
^^ ^^
Post by Ulli Horlacher
LC_MESSAGES=en_US
^^^^^
hier fehlt (wahrscheinlich, um das genau zu sagen muesste man
wohl gucken obs fallback links gibt) der zeichensatz, daher greift
die erste LANGUAGE nicht und du landest bei de?
Ulli Horlacher
2025-02-20 14:31:56 UTC
Antworten
Permalink
Post by Urs Janßen
Post by Ulli Horlacher
Wieso gibt die bash Fehlermeldungen auf deutsch aus trotz englischem locale?
LANG=en_US.UTF-8
LANGUAGE=en:de
^^ ^^
Post by Ulli Horlacher
LC_MESSAGES=en_US
^^^^^
hier fehlt (wahrscheinlich, um das genau zu sagen muesste man
wohl gucken obs fallback links gibt) der zeichensatz, daher greift
die erste LANGUAGE nicht und du landest bei de?
***@mux22:~: ;
bash: Syntaxfehler beim unerwarteten Wort »;«

***@mux22:~: locale
LANG=en_US.UTF-8
LANGUAGE=en:de
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_DK.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.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
LC_ALL=

***@mux22:~: LANGUAGE=en_US.UTF-8
***@mux22:~: ;
bash: Syntaxfehler beim unerwarteten Wort »;«
***@mux22:~: unset LANGUAGE
***@mux22:~: ;
bash: Syntaxfehler beim unerwarteten Wort »;«

***@mux22:~: locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_DK.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.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
LC_ALL=
--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail: ***@tik.uni-stuttgart.de
Allmandring 30a Tel: ++49-711-68565868
70569 Stuttgart (Germany) WWW: https://www.tik.uni-stuttgart.de/
Peter Heitzer
2025-02-20 14:52:18 UTC
Antworten
Permalink
Post by Ulli Horlacher
Post by Urs Janßen
Post by Ulli Horlacher
Wieso gibt die bash Fehlermeldungen auf deutsch aus trotz englischem locale?
LANG=en_US.UTF-8
LANGUAGE=en:de
^^ ^^
Post by Ulli Horlacher
LC_MESSAGES=en_US
^^^^^
hier fehlt (wahrscheinlich, um das genau zu sagen muesste man
wohl gucken obs fallback links gibt) der zeichensatz, daher greift
die erste LANGUAGE nicht und du landest bei de?
bash: Syntaxfehler beim unerwarteten Wort »;«
LANG=en_US.UTF-8
LANGUAGE=en:de
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_DK.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.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
LC_ALL=
bash: Syntaxfehler beim unerwarteten Wort »;«
bash: Syntaxfehler beim unerwarteten Wort »;«
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_DK.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.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
LC_ALL=
Keine Ahnung, ob das der Grund ist, aber mach mal die Doublequotes bei
LC_MESSAGES weg.
--
Dipl.-Inform(FH) Peter Heitzer, ***@rz.uni-regensburg.de
Peter J. Holzer
2025-02-20 17:44:51 UTC
Antworten
Permalink
On 2025-02-20 14:52, Peter Heitzer <***@rz.uni-regensburg.de> wrote:
[ exzessives Quoting zusammengestutzt ]
Post by Peter Heitzer
Post by Ulli Horlacher
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_DK.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.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
LC_ALL=
Keine Ahnung, ob das der Grund ist, aber mach mal die Doublequotes bei
LC_MESSAGES weg.
man locale:

| Values for variables set in the environment are printed without double
| quotes, implied values are printed with double quotes.

hp
Urs Janßen
2025-02-20 21:59:54 UTC
Antworten
Permalink
Post by Ulli Horlacher
bash: Syntaxfehler beim unerwarteten Wort »;«
LANG=en_US.UTF-8
LANGUAGE=en:de
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_DK.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.UTF-8"
^ ^
die "" haben da nix verloren (sofern der wert nicht von LC_ALL geerbt
wurde, was nicht der fall ist).
^^^^^^^^^
ist IIRC kein gueltiger wert fuer LANGUAGE (hab nicht nochmal in die
manpage geguckt).
Helmut Waitzmann
2025-02-20 23:35:30 UTC
Antworten
Permalink
Post by Urs Janßen
Post by Ulli Horlacher
bash: Syntaxfehler beim unerwarteten Wort »;«
LANG=en_US.UTF-8
LANGUAGE=en:de
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_DK.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.UTF-8"
^ ^
die "" haben da nix verloren (sofern der wert nicht von LC_ALL geerbt
wurde, was nicht der fall ist).
Doch, das haben sie:  Die Anführungszeichen in der Ausgabe von
„locale“ zeigen an, dass der Wert nicht aus der
Umgebungsvariablen „LC_MESSAGES“ (die keinen beisteuert) kommt,
sondern in diesem Fall von der Umgebungsvariablen „LANG“ geerbt
wird.
Urs Janßen
2025-02-21 04:07:53 UTC
Antworten
Permalink
Post by Helmut Waitzmann
Post by Urs Janßen
Post by Ulli Horlacher
LANG=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
^ ^
die "" haben da nix verloren (sofern der wert nicht von LC_ALL geerbt
wurde, was nicht der fall ist).
sondern in diesem Fall von der Umgebungsvariablen „LANG“ geerbt
*gnaa* LANG hab ich uebersehen. aber dann sollte LANG (und damit
LC_MESSAGES) hier greifen (sofern das eine gueltige (installierte))
locale ist).

ok, irgendwas ist da faul:

***@urs:~/src/cproc$ locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
***@urs:~$ ;
bash: syntax error near unexpected token `;'
***@urs:~$ export LC_TIME=fr_FR.UTF-8
***@urs:~$ ;
bash: syntax error near unexpected token `;'
***@urs:~$ export LANG=en_US.UTF-8
***@urs:~$ ;
bash: syntax error near unexpected token `;'
***@urs:~$ export LANGUAGE=en:de
***@urs:~$ ;
bash: syntax error near unexpected token `;'
***@urs:~$ unset LANG
***@urs:~$ ;
bash: syntax error near unexpected token `;'
# soweit so gut

***@urs:~$ export LANG=en_US.UTF-8
***@urs:~$ ;
bash: Syntaxfehler beim unerwarteten Symbol »;«
# WTF?

***@urs:~$ locale
LANG=en_US.UTF-8
LANGUAGE=en:de
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=fr_FR.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

***@urs:~$ date
ven. 21 févr. 2025 04:52:29 CET
***@urs:~$ export LC_ALL=en_GB.UTF-8
***@urs:~$ ;
bash: Syntaxfehler beim unerwarteten Symbol »;«
***@urs:~$ unset LANGUAGE
***@urs:~$ ;
bash: Syntaxfehler beim unerwarteten Symbol »;«
***@urs:~$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=en_GB.UTF-8
***@urs:~$ ;
bash: Syntaxfehler beim unerwarteten Symbol »;«
***@urs:~$ date
Fri 21 Feb 04:57:50 CET 2025

***@urs:~$ uname -rsm
Linux 6.12.9-amd64 x86_64
***@urs:~$ /lib/x86_64-linux-gnu/libc.so.6 | head -n 1

***@urs:~$ bash --version | head -n 1
GNU bash, version 5.2.37(1)-release (x86_64-pc-linux-gnu)

aber mit
urs% zsh --version
zsh 5.9 (x86_64-debian-linux-gnu)

kann man das auch nachvollziehen (halt nicht mit ';').
kommt also eher aus der Drepper ecke (libc/gettext).
Urs Janßen
2025-02-21 04:09:54 UTC
Antworten
Permalink
Post by Helmut Waitzmann
Post by Urs Janßen
Post by Ulli Horlacher
LANG=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
^ ^
die "" haben da nix verloren (sofern der wert nicht von LC_ALL geerbt
wurde, was nicht der fall ist).
sondern in diesem Fall von der Umgebungsvariablen „LANG“ geerbt
*gnaa* LANG hab ich uebersehen. aber dann sollte LANG (und damit
LC_MESSAGES) hier greifen (sofern das eine gueltige (installierte))
locale ist).

ok, irgendwas ist da faul:

***@urs:~$ locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
***@urs:~$ ;
bash: syntax error near unexpected token `;'
***@urs:~$ export LC_TIME=fr_FR.UTF-8
***@urs:~$ ;
bash: syntax error near unexpected token `;'
***@urs:~$ export LANG=en_US.UTF-8
***@urs:~$ ;
bash: syntax error near unexpected token `;'
***@urs:~$ export LANGUAGE=en:de
***@urs:~$ ;
bash: syntax error near unexpected token `;'
***@urs:~$ unset LANG
***@urs:~$ ;
bash: syntax error near unexpected token `;'
# soweit so gut

***@urs:~$ export LANG=en_US.UTF-8
***@urs:~$ ;
bash: Syntaxfehler beim unerwarteten Symbol »;«
# WTF?

***@urs:~$ locale
LANG=en_US.UTF-8
LANGUAGE=en:de
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=fr_FR.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

***@urs:~$ date
ven. 21 févr. 2025 04:52:29 CET
***@urs:~$ export LC_ALL=en_GB.UTF-8
***@urs:~$ ;
bash: Syntaxfehler beim unerwarteten Symbol »;«
***@urs:~$ unset LANGUAGE
***@urs:~$ ;
bash: Syntaxfehler beim unerwarteten Symbol »;«
***@urs:~$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=en_GB.UTF-8
***@urs:~$ ;
bash: Syntaxfehler beim unerwarteten Symbol »;«
***@urs:~$ date
Fri 21 Feb 04:57:50 CET 2025

***@urs:~$ uname -rsm
Linux 6.12.9-amd64 x86_64
***@urs:~$ /lib/x86_64-linux-gnu/libc.so.6 | head -n 1

***@urs:~$ bash --version | head -n 1
GNU bash, version 5.2.37(1)-release (x86_64-pc-linux-gnu)

aber mit
urs% zsh --version
zsh 5.9 (x86_64-debian-linux-gnu)

kann ich das auch nachvollziehen (halt nicht mit ';').
kommt also eher aus der Drepper ecke (libc/gettext).
Peter J. Holzer
2025-02-21 07:07:45 UTC
Antworten
Permalink
Post by Ulli Horlacher
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
bash: syntax error near unexpected token `;'
bash: syntax error near unexpected token `;'
bash: syntax error near unexpected token `;'
bash: syntax error near unexpected token `;'
Interessant. Bei mir gibt die bash hier schon

bash: Syntaxfehler beim unerwarteten Wort »;«

aus. Das bleibt dann im Folgenden so, bis ich LANG auf en_US.utf8
(sic!) setze.

Ich versteh's nicht.

hp
Urs Janßen
2025-02-21 07:24:58 UTC
Antworten
Permalink
Post by Peter J. Holzer
Post by Ulli Horlacher
bash: syntax error near unexpected token `;'
bash: syntax error near unexpected token `;'
bash: syntax error near unexpected token `;'
Interessant. Bei mir gibt die bash hier schon
bash: Syntaxfehler beim unerwarteten Wort »;«
das koennte der fall sein wenn en auf en_GB zeigt, in en_GB aber der
msgstr zu msgid "syntax error near unexpected token '%c'" leer ist
(""). dann ist da keine uebersetzung (von en_US nach en_GB) vorhnden
und es wird zur naechsten sprache gewechselt (hab aber nicht in die
po-files der bash geguckt on das hier der fall ist, oft sind die po-files
fuer en_* sehr lueckenhaft weil sie an den stellen nicht vom original
abweichen); dagegen hilft "C" an zweiter stelle.
Urs Janßen
2025-02-21 07:39:06 UTC
Antworten
Permalink
Post by Peter J. Holzer
Post by Ulli Horlacher
bash: syntax error near unexpected token `;'
bash: syntax error near unexpected token `;'
bash: syntax error near unexpected token `;'
Interessant. Bei mir gibt die bash hier schon
bash: Syntaxfehler beim unerwarteten Wort »;«
das koennte der fall sein wenn in dem englischen po-file der
msgstr zu msgid "syntax error near unexpected token '%c'" leer ist
(""). dann ist da keine uebersetzung vorhanden und es wird zur
naechsten sprache gewechselt (hab aber nicht in die po-files der bash
geguckt ob das hier der fall ist, oft sind die po-files fuer en_* sehr
lueckenhaft weil sie an den stellen nicht vom original abweichen);
dagegen hilft "C" nach englisch in LANGUAGE; also etwa
LANGUAGE=en_ZA:en_IN:en:C:de_IT:de_CH:de
Stefan Ram
2025-02-21 10:07:41 UTC
Antworten
Permalink
Post by Urs Janßen
hier fehlt (wahrscheinlich, um das genau zu sagen muesste man
wohl gucken obs fallback links gibt) der zeichensatz, daher greift
die erste LANGUAGE nicht und du landest bei de?
Hier ist ein Python-3-Skript, das eine Vermutung darstellt,
wie bash die Sprache vielleicht herausfinden könnte. Damit
könnte man vielleicht nachvollziehen, wieso bash Meldungen
in einer bestimmten Sprache ausgibt, /falls/ diese Vermutung
stimmen sollte.

import os
import locale

def get_language_priority():
# Check LANGUAGE environment variable
language = os.environ.get('LANGUAGE')
if language:
return f"LANGUAGE: {language}"

# Check LC_ALL environment variable
lc_all = os.environ.get('LC_ALL')
if lc_all:
return f"LC_ALL: {lc_all}"

# Check LC_MESSAGES environment variable
lc_messages = os.environ.get('LC_MESSAGES')
if lc_messages:
return f"LC_MESSAGES: {lc_messages}"

# Check LANG environment variable
lang = os.environ.get('LANG')
if lang:
return f"LANG: {lang}"

# If no environment variables are set, use system default locale
system_locale = locale.getdefaultlocale()[0]
return f"System Default: {system_locale}"

print("Bash-like language priority for error messages:")
print(get_language_priority())

. Hier erscheint beispielsweise:

Bash-like language priority for error messages:
LANGUAGE: en_US.utf8

.
Stefan Ram
2025-02-21 10:10:59 UTC
Antworten
Permalink
Post by Stefan Ram
Hier ist ein Python-3-Skript, das eine Vermutung darstellt,
wie bash die Sprache vielleicht herausfinden könnte. Damit
Man vergleiche

bash-master/lib/intl/dcigettext.c
|/* Guess value of current locale from value of the environment variables. */
|static const char *
|internal_function
|guess_category_value (category, categoryname)
| int category;
| const char *categoryname;
|{
| const char *language;
| const char *retval;
|
| /* The highest priority value is the `LANGUAGE' environment
| variable. But we don't use the value if the currently selected
| locale is the C locale. This is a GNU extension. */
| language = getenv ("LANGUAGE");
| if (language != NULL && language[0] == '\0')
| language = NULL;
. . .

.

Helmut Waitzmann
2025-02-20 21:37:59 UTC
Antworten
Permalink
Post by Ulli Horlacher
Wieso gibt die bash Fehlermeldungen auf deutsch aus trotz englischem locale?
-bash: Syntaxfehler beim unerwarteten Wort »;«
Das folgende Shell‐Kommando zeigt für das Locale relevante Namen
Variabler, die entweder nur im Shell oder nur in der Umgebung
vorhanden sind oder in beiden unterschiedliche Werte haben:


(
locale | sed -n -e '/=.*$/s///p' |
while read -r variable
do
if eval '${'"$variable"'+:} false'
then
eval 'wert="${'"$variable"'}"'
printf '%5.5s %s=%s\n' shell "$variable" "$wert"
fi
if printenv "$variable" > /dev/null 2>&1
then
printf '%5.5s %s=' env. "$variable" &&
printenv "$variable" 2> /dev/null
fi
done |
uniq -f 1 -u
)


Gibt es etwas aus?
Post by Ulli Horlacher
LANG=en_US.UTF-8
LANGUAGE=en:de
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_DK.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES=en_US
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
LC_ALL=
Wenn ich LC_ALL setze und danach wieder loesche, bleibts bei englisch - HAE?
-bash: syntax error near unexpected token `;'
-bash: syntax error near unexpected token `;'
Was geschieht, wenn du LC_ALL nicht setzst, sondern nur löschst? 
Erhältst du dann ebenfalls englische Fehlermeldungen?
Loading...