I removed lightdm cache and .dmrc and did some testing. Disposition:
$ cat /etc/default/locale # File generated by update-locale LANG=en_US.UTF-8@ISO LANGUAGE="en_US:en" There are 4 locales in the system: en_US.UTF-8 en_US.UTF-8@ISO #custom with ISO dates ru_RU.UTF-8 ru_RU.UTF-8@ISO #custom with ISO dates First login with locale en_US.utf8 (in lightdm syntax) $ locale LANG=en_US.UTF-8@ISO LANGUAGE=en_US:en LC_CTYPE="en_US.UTF-8@ISO" LC_NUMERIC="en_US.UTF-8@ISO" LC_TIME="en_US.UTF-8@ISO" LC_COLLATE="en_US.UTF-8@ISO" LC_MONETARY="en_US.UTF-8@ISO" LC_MESSAGES="en_US.UTF-8@ISO" LC_PAPER="en_US.UTF-8@ISO" LC_NAME="en_US.UTF-8@ISO" LC_ADDRESS="en_US.UTF-8@ISO" LC_TELEPHONE="en_US.UTF-8@ISO" LC_MEASUREMENT="en_US.UTF-8@ISO" LC_IDENTIFICATION="en_US.UTF-8@ISO" LC_ALL= $ echo $GDM_LANG [NULL] (where dit that var came in previous attempts?) $ cat .dmrc [Desktop] Language=en_US.utf8 Session=lightdm-xsession Second login with locale en_US.utf8@ISO $ locale LANG=en_US.UTF-8@ISO LANGUAGE=en_US:en LC_CTYPE="en_US.UTF-8@ISO" LC_NUMERIC="en_US.UTF-8@ISO" LC_TIME="en_US.UTF-8@ISO" LC_COLLATE="en_US.UTF-8@ISO" LC_MONETARY="en_US.UTF-8@ISO" LC_MESSAGES="en_US.UTF-8@ISO" LC_PAPER="en_US.UTF-8@ISO" LC_NAME="en_US.UTF-8@ISO" LC_ADDRESS="en_US.UTF-8@ISO" LC_TELEPHONE="en_US.UTF-8@ISO" LC_MEASUREMENT="en_US.UTF-8@ISO" LC_IDENTIFICATION="en_US.UTF-8@ISO" LC_ALL= $ echo $GDM_LANG $ cat .dmrc [Desktop] Language=en_US.utf8@ISO Session=lightdm-xsession Third login with locale ru_RU.utf8 $ locale LANG=en_US.UTF-8@ISO LANGUAGE=en_US:en LC_CTYPE="en_US.UTF-8@ISO" LC_NUMERIC="en_US.UTF-8@ISO" LC_TIME="en_US.UTF-8@ISO" LC_COLLATE="en_US.UTF-8@ISO" LC_MONETARY="en_US.UTF-8@ISO" LC_MESSAGES="en_US.UTF-8@ISO" LC_PAPER="en_US.UTF-8@ISO" LC_NAME="en_US.UTF-8@ISO" LC_ADDRESS="en_US.UTF-8@ISO" LC_TELEPHONE="en_US.UTF-8@ISO" LC_MEASUREMENT="en_US.UTF-8@ISO" LC_IDENTIFICATION="en_US.UTF-8@ISO" LC_ALL= $ echo $GDM_LANG $ cat .dmrc [Desktop] Language=ru_RU.utf8 Session=lightdm-xsession Fourth login with locale ru_RU.utf8@ISO $ locale LANG=en_US.UTF-8@ISO LANGUAGE=en_US:en LC_CTYPE="en_US.UTF-8@ISO" LC_NUMERIC="en_US.UTF-8@ISO" LC_TIME="en_US.UTF-8@ISO" LC_COLLATE="en_US.UTF-8@ISO" LC_MONETARY="en_US.UTF-8@ISO" LC_MESSAGES="en_US.UTF-8@ISO" LC_PAPER="en_US.UTF-8@ISO" LC_NAME="en_US.UTF-8@ISO" LC_ADDRESS="en_US.UTF-8@ISO" LC_TELEPHONE="en_US.UTF-8@ISO" LC_MEASUREMENT="en_US.UTF-8@ISO" LC_IDENTIFICATION="en_US.UTF-8@ISO" LC_ALL= $ echo $GDM_LANG $ cat .dmrc [Desktop] Language=ru_RU.utf8@ISO Session=lightdm-xsession Restarted lightdm. It started creating $GDM_LANG again First login with locale ru_RU.utf8@ISO $ locale LANG=en_US.UTF-8@ISO LANGUAGE=en_US:en LC_CTYPE="en_US.UTF-8@ISO" LC_NUMERIC="en_US.UTF-8@ISO" LC_TIME="en_US.UTF-8@ISO" LC_COLLATE="en_US.UTF-8@ISO" LC_MONETARY="en_US.UTF-8@ISO" LC_MESSAGES="en_US.UTF-8@ISO" LC_PAPER="en_US.UTF-8@ISO" LC_NAME="en_US.UTF-8@ISO" LC_ADDRESS="en_US.UTF-8@ISO" LC_TELEPHONE="en_US.UTF-8@ISO" LC_MEASUREMENT="en_US.UTF-8@ISO" LC_IDENTIFICATION="en_US.UTF-8@ISO" LC_ALL= $ echo $GDM_LANG ru_RU.utf8@ISO $ cat .dmrc [Desktop] Language=ru_RU.utf8@ISO Session=lightdm-xsession Second login with locale en_US.utf8 $ locale LANG=en_US.UTF-8@ISO LANGUAGE=en_US:en LC_CTYPE="en_US.UTF-8@ISO" LC_NUMERIC="en_US.UTF-8@ISO" LC_TIME="en_US.UTF-8@ISO" LC_COLLATE="en_US.UTF-8@ISO" LC_MONETARY="en_US.UTF-8@ISO" LC_MESSAGES="en_US.UTF-8@ISO" LC_PAPER="en_US.UTF-8@ISO" LC_NAME="en_US.UTF-8@ISO" LC_ADDRESS="en_US.UTF-8@ISO" LC_TELEPHONE="en_US.UTF-8@ISO" LC_MEASUREMENT="en_US.UTF-8@ISO" LC_IDENTIFICATION="en_US.UTF-8@ISO" LC_ALL= $ echo $GDM_LANG ru_RU.utf8@ISO $ cat .dmrc [Desktop] Language=en_US.utf8 Session=lightdm-xsession Third login with locale en_US.utf8@ISO $ locale LANG=en_US.UTF-8@ISO LANGUAGE=en_US:en LC_CTYPE="en_US.UTF-8@ISO" LC_NUMERIC="en_US.UTF-8@ISO" LC_TIME="en_US.UTF-8@ISO" LC_COLLATE="en_US.UTF-8@ISO" LC_MONETARY="en_US.UTF-8@ISO" LC_MESSAGES="en_US.UTF-8@ISO" LC_PAPER="en_US.UTF-8@ISO" LC_NAME="en_US.UTF-8@ISO" LC_ADDRESS="en_US.UTF-8@ISO" LC_TELEPHONE="en_US.UTF-8@ISO" LC_MEASUREMENT="en_US.UTF-8@ISO" LC_IDENTIFICATION="en_US.UTF-8@ISO" LC_ALL= $ echo $GDM_LANG ru_RU.utf8@ISO $ cat .dmrc [Desktop] Language=en_US.utf8@ISO Session=lightdm-xsession Stopped lightdm, removed .dmrc, started lightdm Login with locale en_US.utf8 $ locale LANG=en_US.UTF-8@ISO LANGUAGE=en_US:en LC_CTYPE="en_US.UTF-8@ISO" LC_NUMERIC="en_US.UTF-8@ISO" LC_TIME="en_US.UTF-8@ISO" LC_COLLATE="en_US.UTF-8@ISO" LC_MONETARY="en_US.UTF-8@ISO" LC_MESSAGES="en_US.UTF-8@ISO" LC_PAPER="en_US.UTF-8@ISO" LC_NAME="en_US.UTF-8@ISO" LC_ADDRESS="en_US.UTF-8@ISO" LC_TELEPHONE="en_US.UTF-8@ISO" LC_MEASUREMENT="en_US.UTF-8@ISO" LC_IDENTIFICATION="en_US.UTF-8@ISO" LC_ALL= $ echo $GDM_LANG en_US.utf8@ISO $ cat .dmrc [Desktop] Language=en_US.utf8 Session=lightdm-xsession ####################################### Summary: 1. $GDM_LANG is produced only when lightdm is started with some cache present. 2. $GDM_LANG does not always contain correct locale. Usually, it contains locale chosen first after lighdm is started, or sometimes system default. 3. $LANG and $LANGUAGE are completely untouched by lightdm. 4. ~/.dmrc is always written with correct settings on login Based on all that, I`ve updated the workaround script /etc/X11/Xsession.d/21-lightdm-locale-fix ---------------------------------------------------------- # workaround for session language selection in lightdm greeter # we need this only if lightdm is being used if pidof lightdm then # use Language setting from ~/.dmrc export LANG=`cat "$HOME/.dmrc" | grep '^Language=' | cut -d '=' -f 2- | sed 's/utf8/UTF-8/'` # if $LANGUAGE is set, sync it with chosen locale [ -n "$LANGUAGE" ] && export LANGUAGE=`echo $LANG | cut -d '.' -f 1`:`echo -n $LANG | cut -d '.' -f 1 | cut -d '_' -f 1` # remove untrustworthy $GDM_LANG [ -n "$GDM_LANG" ] && unset GDM_LANG fi ---------------------------------------------------------- -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org