[Pkg-xfce-devel] Bug#765077: Extensive testing and updated workaround
Vladimir K
pzs-fs at yandex.ru
Sun Nov 30 13:19:33 UTC 2014
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 at ISO
LANGUAGE="en_US:en"
There are 4 locales in the system:
en_US.UTF-8
en_US.UTF-8 at ISO #custom with ISO dates
ru_RU.UTF-8
ru_RU.UTF-8 at ISO #custom with ISO dates
First login with locale en_US.utf8 (in lightdm syntax)
$ locale
LANG=en_US.UTF-8 at ISO
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8 at ISO"
LC_NUMERIC="en_US.UTF-8 at ISO"
LC_TIME="en_US.UTF-8 at ISO"
LC_COLLATE="en_US.UTF-8 at ISO"
LC_MONETARY="en_US.UTF-8 at ISO"
LC_MESSAGES="en_US.UTF-8 at ISO"
LC_PAPER="en_US.UTF-8 at ISO"
LC_NAME="en_US.UTF-8 at ISO"
LC_ADDRESS="en_US.UTF-8 at ISO"
LC_TELEPHONE="en_US.UTF-8 at ISO"
LC_MEASUREMENT="en_US.UTF-8 at ISO"
LC_IDENTIFICATION="en_US.UTF-8 at 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 at ISO
$ locale
LANG=en_US.UTF-8 at ISO
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8 at ISO"
LC_NUMERIC="en_US.UTF-8 at ISO"
LC_TIME="en_US.UTF-8 at ISO"
LC_COLLATE="en_US.UTF-8 at ISO"
LC_MONETARY="en_US.UTF-8 at ISO"
LC_MESSAGES="en_US.UTF-8 at ISO"
LC_PAPER="en_US.UTF-8 at ISO"
LC_NAME="en_US.UTF-8 at ISO"
LC_ADDRESS="en_US.UTF-8 at ISO"
LC_TELEPHONE="en_US.UTF-8 at ISO"
LC_MEASUREMENT="en_US.UTF-8 at ISO"
LC_IDENTIFICATION="en_US.UTF-8 at ISO"
LC_ALL=
$ echo $GDM_LANG
$ cat .dmrc
[Desktop]
Language=en_US.utf8 at ISO
Session=lightdm-xsession
Third login with locale ru_RU.utf8
$ locale
LANG=en_US.UTF-8 at ISO
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8 at ISO"
LC_NUMERIC="en_US.UTF-8 at ISO"
LC_TIME="en_US.UTF-8 at ISO"
LC_COLLATE="en_US.UTF-8 at ISO"
LC_MONETARY="en_US.UTF-8 at ISO"
LC_MESSAGES="en_US.UTF-8 at ISO"
LC_PAPER="en_US.UTF-8 at ISO"
LC_NAME="en_US.UTF-8 at ISO"
LC_ADDRESS="en_US.UTF-8 at ISO"
LC_TELEPHONE="en_US.UTF-8 at ISO"
LC_MEASUREMENT="en_US.UTF-8 at ISO"
LC_IDENTIFICATION="en_US.UTF-8 at ISO"
LC_ALL=
$ echo $GDM_LANG
$ cat .dmrc
[Desktop]
Language=ru_RU.utf8
Session=lightdm-xsession
Fourth login with locale ru_RU.utf8 at ISO
$ locale
LANG=en_US.UTF-8 at ISO
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8 at ISO"
LC_NUMERIC="en_US.UTF-8 at ISO"
LC_TIME="en_US.UTF-8 at ISO"
LC_COLLATE="en_US.UTF-8 at ISO"
LC_MONETARY="en_US.UTF-8 at ISO"
LC_MESSAGES="en_US.UTF-8 at ISO"
LC_PAPER="en_US.UTF-8 at ISO"
LC_NAME="en_US.UTF-8 at ISO"
LC_ADDRESS="en_US.UTF-8 at ISO"
LC_TELEPHONE="en_US.UTF-8 at ISO"
LC_MEASUREMENT="en_US.UTF-8 at ISO"
LC_IDENTIFICATION="en_US.UTF-8 at ISO"
LC_ALL=
$ echo $GDM_LANG
$ cat .dmrc
[Desktop]
Language=ru_RU.utf8 at ISO
Session=lightdm-xsession
Restarted lightdm. It started creating $GDM_LANG again
First login with locale ru_RU.utf8 at ISO
$ locale
LANG=en_US.UTF-8 at ISO
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8 at ISO"
LC_NUMERIC="en_US.UTF-8 at ISO"
LC_TIME="en_US.UTF-8 at ISO"
LC_COLLATE="en_US.UTF-8 at ISO"
LC_MONETARY="en_US.UTF-8 at ISO"
LC_MESSAGES="en_US.UTF-8 at ISO"
LC_PAPER="en_US.UTF-8 at ISO"
LC_NAME="en_US.UTF-8 at ISO"
LC_ADDRESS="en_US.UTF-8 at ISO"
LC_TELEPHONE="en_US.UTF-8 at ISO"
LC_MEASUREMENT="en_US.UTF-8 at ISO"
LC_IDENTIFICATION="en_US.UTF-8 at ISO"
LC_ALL=
$ echo $GDM_LANG
ru_RU.utf8 at ISO
$ cat .dmrc
[Desktop]
Language=ru_RU.utf8 at ISO
Session=lightdm-xsession
Second login with locale en_US.utf8
$ locale
LANG=en_US.UTF-8 at ISO
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8 at ISO"
LC_NUMERIC="en_US.UTF-8 at ISO"
LC_TIME="en_US.UTF-8 at ISO"
LC_COLLATE="en_US.UTF-8 at ISO"
LC_MONETARY="en_US.UTF-8 at ISO"
LC_MESSAGES="en_US.UTF-8 at ISO"
LC_PAPER="en_US.UTF-8 at ISO"
LC_NAME="en_US.UTF-8 at ISO"
LC_ADDRESS="en_US.UTF-8 at ISO"
LC_TELEPHONE="en_US.UTF-8 at ISO"
LC_MEASUREMENT="en_US.UTF-8 at ISO"
LC_IDENTIFICATION="en_US.UTF-8 at ISO"
LC_ALL=
$ echo $GDM_LANG
ru_RU.utf8 at ISO
$ cat .dmrc
[Desktop]
Language=en_US.utf8
Session=lightdm-xsession
Third login with locale en_US.utf8 at ISO
$ locale
LANG=en_US.UTF-8 at ISO
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8 at ISO"
LC_NUMERIC="en_US.UTF-8 at ISO"
LC_TIME="en_US.UTF-8 at ISO"
LC_COLLATE="en_US.UTF-8 at ISO"
LC_MONETARY="en_US.UTF-8 at ISO"
LC_MESSAGES="en_US.UTF-8 at ISO"
LC_PAPER="en_US.UTF-8 at ISO"
LC_NAME="en_US.UTF-8 at ISO"
LC_ADDRESS="en_US.UTF-8 at ISO"
LC_TELEPHONE="en_US.UTF-8 at ISO"
LC_MEASUREMENT="en_US.UTF-8 at ISO"
LC_IDENTIFICATION="en_US.UTF-8 at ISO"
LC_ALL=
$ echo $GDM_LANG
ru_RU.utf8 at ISO
$ cat .dmrc
[Desktop]
Language=en_US.utf8 at ISO
Session=lightdm-xsession
Stopped lightdm, removed .dmrc, started lightdm
Login with locale en_US.utf8
$ locale
LANG=en_US.UTF-8 at ISO
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8 at ISO"
LC_NUMERIC="en_US.UTF-8 at ISO"
LC_TIME="en_US.UTF-8 at ISO"
LC_COLLATE="en_US.UTF-8 at ISO"
LC_MONETARY="en_US.UTF-8 at ISO"
LC_MESSAGES="en_US.UTF-8 at ISO"
LC_PAPER="en_US.UTF-8 at ISO"
LC_NAME="en_US.UTF-8 at ISO"
LC_ADDRESS="en_US.UTF-8 at ISO"
LC_TELEPHONE="en_US.UTF-8 at ISO"
LC_MEASUREMENT="en_US.UTF-8 at ISO"
LC_IDENTIFICATION="en_US.UTF-8 at ISO"
LC_ALL=
$ echo $GDM_LANG
en_US.utf8 at 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
----------------------------------------------------------
More information about the Pkg-xfce-devel
mailing list