Summary: | Не применяется локаль | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Andrey Cherepanov <cas> |
Component: | lightdm | Assignee: | 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: | unstable | Keywords: | 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
Подтверждаю на regular-mate-20140917-i586.iso; притом на altlinux-p7-mate-20140912-x86_64.iso работает (там lightdm-1.5.3-alt1 и lightdm-gtk-greeter-1.5.1-alt1). если разлогинится и снова войти - настройки языка применяются. Где-то не происходит синхронизации. По диффам отследить не смог - слишком много изменений. Можно попробовать обновить до 1.11.9 для начала. не помогает. #130619 TESTED #2 [test-only] sisyphus lightdm.git=1.11.9-alt1 lightdm-gtk-greeter.git=1.9.0-alt1 *** Bug 30441 has been marked as a duplicate of this bug. *** Обновил 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 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. Поскольку это происходит на странице самого проекта, то нужно проверить исправлено ли данное поведение в последних версиях. (В ответ на комментарий №6) > LANG=aa_DJ.utf8 Пронаблюдал такое, если системная локаль не-UTF8 (например, ru_RU.KOI8-R). И так продолжение исследования: 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. Пока работает и вроде устраивает. Минусы: Пока вижу только один : лишние действия при настроенном автологине - придётся выходить из сессии. (В ответ на комментарий №9) > Минусы: > Пока вижу только один : лишние действия при настроенном автологине - придётся > выходить из сессии. То есть всё сложнее: 1) выйти или service dm stop 2) service dm start 3) сменить язык Может стоит обновить? В апстриме уже 1.24 версия, а 1.16.7 за 2016 год. Локаль применяется только после второго логина. 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 p9 не применяется даже после 2-го и 3-го логина, локаль выставляется "C.utf8" %). Перед бывшими виндузятниками стыдно уже. Кто-нибудь нашёл решение или хотя бы причину? Ща починим… 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). Теперь ещё два момента: 1) Нужно проверить, починилось ли для гостевого входа. Для этого его нужно как-то включить. Кто знает, что для этого нужно, кроме параметра в lightdm.conf? Наверное завести пользователя с именем "guest"? 2) Про то, что язык не применяется сразу же к сеансу самого гритера — это отдельная проблема и её нужно в отдельную багу. (Ответ для manowar@altlinux.org на комментарий #16) > Теперь ещё два момента: > > 1) Нужно проверить, починилось ли для гостевого входа. Для этого его нужно > как-то включить. Кто знает, что для этого нужно, кроме параметра в > lightdm.conf? Наверное завести пользователя с именем "guest"? https://www.altlinux.org/Гостевой_сеанс Пользователь заводится автоматически. Большое человеческое спасибо! (Ответ для manowar@altlinux.org на комментарий #16) > Теперь ещё два момента: > > 2) Про то, что язык не применяется сразу же к сеансу самого гритера — это > отдельная проблема и её нужно в отдельную багу. Думал тут думал про переключение языка гритера и понял несколько вещей: 1. Язык гритера и язык сеанса пользователя это разные настройки. 2. Язык сеанса закрепляется за пользователем через файл ~/.dmrc. Туда же записывается и тип сеанса (XFCE, MATE, GNOME, KDE и т.д, и т.п.) 3. При выборе пользователя из списка в гритере, эти настройки должны восстанавливаться — переключатель языка должен быть переключён на сохранённый язык пользователя, а переключатель сеанса — на сохранённый сеанс. В противном случае после логина язык и сеанс могут оказаться не теми, которые в прошлый раз выбрал пользователь. 4. Между прочим, lightdm предполагает переключение и некоторых других настроек в зависимости от пользователя, например фонового изображения (background). Он их пытается читать откуда-то из D-Bus и я пока не понял, где это настраивается. 4. Так вот, если мы решим переключать язык самого гритера тем же самым переключателем на верхней панели, который предназначен для выбора языка сеанса, то получится, что при выборе очередного пользователя из списка язык гритера будет переключаться на язык этого пользователя. Мы точно этого хотим? (Ответ для manowar@altlinux.org на комментарий #19) > (Ответ для manowar@altlinux.org на комментарий #16) > > Теперь ещё два момента: > > > > 2) Про то, что язык не применяется сразу же к сеансу самого гритера — это > > отдельная проблема и её нужно в отдельную багу. > > Думал тут думал про переключение языка гритера и понял несколько вещей: > > 1. Язык гритера и язык сеанса пользователя это разные настройки. > > 2. Язык сеанса закрепляется за пользователем через файл ~/.dmrc. Туда же > записывается и тип сеанса (XFCE, MATE, GNOME, KDE и т.д, и т.п.) > > 3. При выборе пользователя из списка в гритере, эти настройки должны > восстанавливаться — переключатель языка должен быть переключён на > сохранённый язык пользователя, а переключатель сеанса — на сохранённый > сеанс. В противном случае после логина язык и сеанс могут оказаться не теми, > которые в прошлый раз выбрал пользователь. > > 4. Между прочим, lightdm предполагает переключение и некоторых других > настроек в зависимости от пользователя, например фонового изображения > (background). Он их пытается читать откуда-то из D-Bus и я пока не понял, > где это настраивается. > > 4. Так вот, если мы решим переключать язык самого гритера тем же самым > переключателем на верхней панели, который предназначен для выбора языка > сеанса, > то получится, что при выборе очередного пользователя из списка язык гритера > будет переключаться на язык этого пользователя. Мы точно этого хотим? Нет, он не должен зависеть от пользователя. Так как индикатор со списком выбора языка убрали в последних дистрибутивах, бага перестала быть актуальной. Так наверняка убрали потому, что не работало. А теперь работает — можно возвращать. (Ответ для manowar@altlinux.org на комментарий #21) > Так наверняка убрали потому, что не работало. А теперь работает — можно > возвращать. Нет, убрали не поэтому. Пользователи считали, что это переключалка раскладки и получали англоязычный интерфейс сеанса. К сожалению, пришлось вернуть как было из-за #40585. Патч придётся заменить на более хитрый, обходящийся без перечитывания .dmrc. 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). прошу прощения, а в p10 не планируется? Эта бага меня (и многих) достала, если это будет продолжаться в p10, то печаль... |