-# Set locale if it is not set or doesn't contain a dot;
-# but all system messages should still be in "native" ("C") language.
-[ "$LANG" = "${LANG#*.}" ] && export LANG="${LANG:-de_DE}.ISO8859-1"
-export LC_MESSAGES="C"
+# Make sure UID is set
+[ -n "$UID" ] || UID=`id -u`
+export UID
+
+# Indicates LC_CTYPE an UTF-8 terminal?
+if [ -n "$LC_CTYPE" ]; then
+ LC_encoding="${LC_CTYPE#*.}"
+else
+ case "$TERM" in
+ "xterm-"*)
+ LC_encoding="UTF-8"; ;;
+ *)
+ LC_encoding="ISO8859-1"
+ esac
+fi
+# Set locale if it is not set or doesn't contain a dot:
+[ "$LANG" = "${LANG#*.}" -a "$LANG" != "C" ] \
+ && export LANG="${LANG:-de_DE}.${LC_encoding}"
+# All system messages should still be in "native" ("C") language for
+# non-X11 sessions:
+[ -z "$GDMSESSION" -a -z "$XDG_SESSION_COOKIE" ] \
+ && export LC_MESSAGES="C"
+# Clean up ...
+unset LC_CTYPE LC_encoding 2>/dev/null