Bug 30329

Summary: Не применяется локаль
Product: Sisyphus Reporter: Andrey Cherepanov <cas>
Component: lightdmAssignee: manowar <manowar>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: minor    
Priority: P3 CC: aen, akv, antohami, cas, gbophuk_alt, glebfm, ildar, manowar, mike, shaba, vercha
Version: unstableKeywords: regression
Hardware: all   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=40585

Description Andrey Cherepanov 2014-09-17 15:55:40 MSK
Меняем локаль из выпадающего списка на Russian-Russia. На панели показывается ru_RU.utf8.

1. Локаль интерфейса не меняется
2. В сеансе остаётся en_US.utf8
Comment 1 Michael Shigorin 2014-09-17 19:38:08 MSK
Подтверждаю на regular-mate-20140917-i586.iso;
притом на altlinux-p7-mate-20140912-x86_64.iso работает
(там lightdm-1.5.3-alt1 и lightdm-gtk-greeter-1.5.1-alt1).
Comment 2 Alexey Shabalin 2014-09-19 21:43:13 MSK
если разлогинится и снова войти - настройки языка применяются.
Где-то не происходит синхронизации. По диффам отследить не смог - слишком много изменений.
Comment 3 Michael Shigorin 2014-09-24 17:24:35 MSK
Можно попробовать обновить до 1.11.9 для начала.
Comment 4 Alexey Shabalin 2014-09-24 17:30:07 MSK
не помогает.
#130619 TESTED #2 [test-only] sisyphus lightdm.git=1.11.9-alt1 lightdm-gtk-greeter.git=1.9.0-alt1
Comment 5 Michael Shigorin 2014-11-04 13:12:50 MSK
*** Bug 30441 has been marked as a duplicate of this bug. ***
Comment 6 gBopHuk 2016-04-28 16:36:08 MSK
Обновил 2 машины с p7 до p8 в vbox:

В первой получил английский язык без возможности смены локали.
Локаль всегда в таком виде:
$ locale
  LANG=aa_DJ.utf8
  LC_CTYPE="aa_DJ.utf8"
  LC_NUMERIC="aa_DJ.utf8"
  LC_TIME="aa_DJ.utf8"
  LC_COLLATE="aa_DJ.utf8"
  LC_MONETARY="aa_DJ.utf8"
  LC_MESSAGES="aa_DJ.utf8"
  LC_PAPER="aa_DJ.utf8"
  LC_NAME="aa_DJ.utf8"
  LC_ADDRESS="aa_DJ.utf8"
  LC_TELEPHONE="aa_DJ.utf8"
  LC_MEASUREMENT="aa_DJ.utf8"
  LC_IDENTIFICATION="aa_DJ.utf8"

Не помню, были ли сегодня обновления или просто помогла команда apt-get --reinstall install lightdm-gtk-greeter, но после перезапуска теперь всегда ru_RU.utf8. Замечу что перезапуск выполнялся и сразу после обновления, и несколько раз позже, но локаль я смог получить после сегодняшних действий - каких именно я не знаю.

Во второй машине, которую обновил сегодня, сразу получил русский язык, но смена локали на любую другую всё ещё не работает.
-------------------------------------------

Нашёл в интернете 3 баги по этому поводу:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=679386
https://bugs.launchpad.net/lightdm/+bug/1019314
https://bugzilla.redhat.com/show_bug.cgi?id=885161

Прошу прощения если надо было вешать на p8
Comment 7 Константин Артюшкин 2017-11-07 17:12:33 MSK
B снова эта проблема. Что удалось узнать 
https://bugs.launchpad.net/lightdm/+bug/1507854/comments/3

Для определения переменной $LANG используется local -a, которая возвращает ответ
в формате xx_YY.utf8 вместо xx_YY.UTF-8. По идее можно просто создать alias в 
файле /usr/share/X11/locale/locale.alias ( https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=607138#89).
Но у нас он уже есть и ничего не работает.

Дальше https://bugs.launchpad.net/lightdm/+bug/1507854/comments/4 человек предложил патч 
https://bugs.launchpad.net/lightdm/+bug/1507854/+attachment/4508943/+files/utf8.patch.

Поскольку это происходит на странице самого проекта, то нужно проверить исправлено
ли данное поведение в последних версиях.
Comment 8 Michael Shigorin 2017-11-07 22:19:34 MSK
(В ответ на комментарий №6)
>   LANG=aa_DJ.utf8
Пронаблюдал такое, если системная локаль не-UTF8 (например, ru_RU.KOI8-R).
Comment 9 Константин Артюшкин 2017-11-08 12:54:41 MSK
И так продолжение исследования:
vbox/simply linux 8.2.0:
  Выбор локали не влияет на язык сеанса. При этом команда service dm ( или prefdm ) restart не работают - результат failed. Почему это происходит, думаю, тема отдельной баги. Как оказалось, локаль применяется та что была выбрана первой при первом успешном запуске lightdm после старта машины. Проверяется это просто: перезапускаем машину и выбираем локаль en_US.utf8, теперь её никогда не сменить. Затем перезапускаем машину и при логине выбираем ru_RU.utf8, теперь сеанс русский и его тоже не сменить.

Физическая машина p8:
  Выбор локали при логине так же не влияет на язык сеанса. По какой-то причине мне повезло и на этой машине работают команды service dm restart|stop|start. Локаль удаётся сменить только при выполнении такой последовательности serivce dm stop && service dm start. При выполнении service dm restart локаль остаётся прежней. Видимо при restart используются старые настройки.
Так же я получил странный формат локали ru_RU.utf8 вместо ru_RU.UTF-8, но может дело в том что я игрался с locale.alias. Пока работает и вроде устраивает.

Минусы:
  Пока вижу только один : лишние действия при настроенном автологине - придётся выходить из сессии.
Comment 10 Константин Артюшкин 2017-11-08 12:56:31 MSK
(В ответ на комментарий №9)
> Минусы:
>   Пока вижу только один : лишние действия при настроенном автологине - придётся
> выходить из сессии.

То есть всё сложнее:
1) выйти или service dm stop
2) service dm start
3) сменить язык
Comment 11 gBopHuk 2018-07-02 11:01:23 MSK
Может стоит обновить? В апстриме уже 1.24 версия, а 1.16.7 за 2016 год.
Comment 12 Vera Blagoveschenskaya 2019-11-08 14:59:38 MSK
Локаль применяется только после второго логина.

sisyphus
[root@server-9-x86-64-office ~]# rpm -qa | grep lightdm
lightdm-gtk-greeter-2.0.1-alt14.x86_64
lightdm-1.30.0-alt6.x86_64
liblightdm-gobject-1.30.0-alt6.x86_64
Comment 13 ildar 2020-10-21 14:25:24 MSK
p9
не применяется даже после 2-го и 3-го логина, локаль выставляется "C.utf8" %). Перед бывшими виндузятниками стыдно уже.

Кто-нибудь нашёл решение или хотя бы причину?
Comment 14 manowar@altlinux.org 2021-02-26 14:50:20 MSK
Ща починим…
Comment 15 Repository Robot 2021-02-26 15:33:46 MSK
lightdm-1.30.0-alt11 -> sisyphus:

 Fri Feb 26 2021 Paul Wolneykien <manowar@altlinux> 1.30.0-alt11
 - Quick fix: always re-read .dmrc in order to get the up to date
   locale settings (patch) (closes: 30329).
Comment 16 manowar@altlinux.org 2021-02-26 15:37:12 MSK
Теперь ещё два момента:

1) Нужно проверить, починилось ли для гостевого входа. Для этого его нужно как-то включить. Кто знает, что для этого нужно, кроме параметра в lightdm.conf? Наверное завести пользователя с именем "guest"?

2) Про то, что язык не применяется сразу же к сеансу самого гритера — это отдельная проблема и её нужно в отдельную багу.
Comment 17 Andrey Cherepanov 2021-02-26 17:15:14 MSK
(Ответ для manowar@altlinux.org на комментарий #16)
> Теперь ещё два момента:
> 
> 1) Нужно проверить, починилось ли для гостевого входа. Для этого его нужно
> как-то включить. Кто знает, что для этого нужно, кроме параметра в
> lightdm.conf? Наверное завести пользователя с именем "guest"?
https://www.altlinux.org/Гостевой_сеанс

Пользователь заводится автоматически.
Comment 18 ildar 2021-02-26 18:04:19 MSK
Большое человеческое спасибо!
Comment 19 manowar@altlinux.org 2021-03-03 16:04:49 MSK
(Ответ для manowar@altlinux.org на комментарий #16)
> Теперь ещё два момента:
> 
> 2) Про то, что язык не применяется сразу же к сеансу самого гритера — это
> отдельная проблема и её нужно в отдельную багу.

Думал тут думал про переключение языка гритера и понял несколько вещей:

1. Язык гритера и язык сеанса пользователя это разные настройки.

2. Язык сеанса закрепляется за пользователем через файл ~/.dmrc. Туда же записывается и тип сеанса (XFCE, MATE, GNOME, KDE и т.д, и т.п.)

3. При выборе пользователя из списка в гритере, эти настройки должны восстанавливаться — переключатель языка должен быть переключён на сохранённый язык пользователя, а переключатель сеанса — на сохранённый сеанс. В противном случае после логина язык и сеанс могут оказаться не теми, которые в прошлый раз выбрал пользователь.

4. Между прочим, lightdm предполагает переключение и некоторых других настроек в зависимости от пользователя, например фонового изображения (background). Он их пытается читать откуда-то из D-Bus и я пока не понял, где это настраивается.

4. Так вот, если мы решим переключать язык самого гритера тем же самым переключателем на верхней панели, который предназначен для выбора языка сеанса,
то получится, что при выборе очередного пользователя из списка язык гритера будет переключаться на язык этого пользователя. Мы точно этого хотим?
Comment 20 Andrey Cherepanov 2021-03-09 16:22:52 MSK
(Ответ для manowar@altlinux.org на комментарий #19)
> (Ответ для manowar@altlinux.org на комментарий #16)
> > Теперь ещё два момента:
> > 
> > 2) Про то, что язык не применяется сразу же к сеансу самого гритера — это
> > отдельная проблема и её нужно в отдельную багу.
> 
> Думал тут думал про переключение языка гритера и понял несколько вещей:
> 
> 1. Язык гритера и язык сеанса пользователя это разные настройки.
> 
> 2. Язык сеанса закрепляется за пользователем через файл ~/.dmrc. Туда же
> записывается и тип сеанса (XFCE, MATE, GNOME, KDE и т.д, и т.п.)
> 
> 3. При выборе пользователя из списка в гритере, эти настройки должны
> восстанавливаться — переключатель языка должен быть переключён на
> сохранённый язык пользователя, а переключатель сеанса — на сохранённый
> сеанс. В противном случае после логина язык и сеанс могут оказаться не теми,
> которые в прошлый раз выбрал пользователь.
> 
> 4. Между прочим, lightdm предполагает переключение и некоторых других
> настроек в зависимости от пользователя, например фонового изображения
> (background). Он их пытается читать откуда-то из D-Bus и я пока не понял,
> где это настраивается.
> 
> 4. Так вот, если мы решим переключать язык самого гритера тем же самым
> переключателем на верхней панели, который предназначен для выбора языка
> сеанса,
> то получится, что при выборе очередного пользователя из списка язык гритера
> будет переключаться на язык этого пользователя. Мы точно этого хотим?

Нет, он не должен зависеть от пользователя. Так как индикатор со списком выбора языка убрали в последних дистрибутивах, бага перестала быть актуальной.
Comment 21 manowar@altlinux.org 2021-03-09 17:15:32 MSK
Так наверняка убрали потому, что не работало. А теперь работает — можно возвращать.
Comment 22 Andrey Cherepanov 2021-03-09 17:45:07 MSK
(Ответ для manowar@altlinux.org на комментарий #21)
> Так наверняка убрали потому, что не работало. А теперь работает — можно
> возвращать.

Нет, убрали не поэтому. Пользователи считали, что это переключалка раскладки и получали англоязычный интерфейс сеанса.
Comment 23 manowar@altlinux.org 2021-08-20 03:10:36 MSK
К сожалению, пришлось вернуть как было из-за #40585. Патч придётся заменить на более хитрый, обходящийся без перечитывания .dmrc.
Comment 24 Repository Robot 2021-08-20 20:27:02 MSK
lightdm-1.30.0-alt17 -> sisyphus:

 Fri Aug 20 2021 Paul Wolneykien <manowar@altlinux> 1.30.0-alt17
 - Run the PAM session with the locale currently set in the greeter.
 Fri Aug 20 2021 Paul Wolneykien <manowar@altlinux> 1.30.0-alt16
 - Update the selected language internally (closes: 30329).
Comment 25 ildar 2021-09-21 09:44:07 MSK
прошу прощения, а в p10 не планируется? Эта бага меня (и многих) достала, если это будет продолжаться в p10, то печаль...
Comment 26 manowar@altlinux.org 2021-09-21 12:02:00 MSK
http://git.altlinux.org/tasks/285592/