Решено: LANG, LC_* + GDM (LANG, LC_*, GDM_LANG, GDM)

Модератор: Модераторы разделов

Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Решено: LANG, LC_* + GDM

Сообщение serzh-z »

Есть необходимость выставить LANG в "ru_RU.utf8", а LC_MESSAGES в "en_EN.utf8". Интересует *правильный*, для Arch Linux, способ задания подобных переменных. Желательно, чтобы это выставлялось только для одного пользователя (используется GDM), но устроит и общесистемный вариант.

Последние годы все дистрибутивы стали предполагать, что пользователь выставляет LANG и не манипулирует отдельными переменными LC_*.

P.S.: как я понимаю - добавить файл с LC_MESSAGES в /etc/profile.d/ и надеятся на то, что /etc/rc.sysinit выполнит этот файл после системного /etc/profile.d/locale.sh - не стоит.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Решено: LANG, LC_* + GDM

Сообщение SLEDopit »

а почему не рассматривается вариант с $HOME/.profile ? тем более, что нужно затронуть только одного юзера.
он же позже исполняется, заодно поверх все и запишет, не?
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Решено: LANG, LC_* + GDM

Сообщение serzh-z »

SLEDopit писал(а):
29.11.2010 17:58
$HOME/.profile
Не работает. Судя по всему он вообще не исполняется - нужно где-то крутить и инициировать выполнение этого скрипта.
Спасибо сказали:
Аватара пользователя
ATIpro
Сообщения: 614
ОС: Arch Linux x86_64

Re: Решено: LANG, LC_* + GDM

Сообщение ATIpro »

Можно добавить в /etc/profile
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Решено: LANG, LC_* + GDM

Сообщение serzh-z »

ATIpro писал(а):
29.11.2010 19:58
Можно добавить в /etc/profile
Т.е. я правильно понимаю, что единственно идеологически правильного (как, скажем, в Gentoo Linux - в /etc/env.d/) и рекомендуемого способа нет и можно добавлять туда, где удобно (вплоть до расширения формата /etc/rc.conf и исправления /etc/rc,sysinit)?
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Решено: LANG, LC_* + GDM

Сообщение SLEDopit »

serzh-z писал(а):
29.11.2010 18:37
Не работает. Судя по всему он вообще не исполняется - нужно где-то крутить и инициировать выполнение этого скрипта.
А есть всякие $HOME/.$SHELL_login или $HOME/.$SHELL_profile? просто если есть, то $HOME/.profile не обрабатывается, и вместо $HOME/.profile можно использовать вышеперечисленные файлы.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Davinel
Сообщения: 481
ОС: Ubuntu

Re: Решено: LANG, LC_* + GDM

Сообщение Davinel »

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.

Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Решено: LANG, LC_* + GDM

Сообщение serzh-z »

Всё фигня, кроме пчёл...

Поизучал скрипты GDM и выяснил, что его скрипт, запускающий X-сессию пользователя (gnome-session или другую) предварительно перекрывает LANG (неважно где оно было выставлено до этого) языком, выбранным при логине в GDM (а какой-нибудь язык выбран всегда).

Но к счастью - перед сбросом LANG, скрипт вызывает ~/.profile и ~/.xprofile, в которых можно сбросить значение языка, установленное в GDM, и установить свои значения для LC_*. Не опасаясь, что скрипты GDM заменят LANG.

Решение:

Код: Выделить всё

unset -v GDM_LANG
export LANG='ru_RU.utf8'
export LC_MESSAGES='en_US.utf8'
в одном из следующих файлов: /etc/profile, $HOME/.profile, /etc/xprofile или $HOME/.xprofile

Интересно, что багрепорты на подобное поведение GDM имеются, но без ответа. Например: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=471508. Есть и другие, тоже без внятных ответов.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Решено: LANG, LC_* + GDM

Сообщение eddy »

Странно, у меня в gdm и функции выбора локали-то нет. И переменная GDM_LANG отсутствует...
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Решено: LANG, LC_* + GDM

Сообщение serzh-z »

eddy писал(а):
04.12.2010 02:38
Странно, у меня в gdm и функции выбора локали-то нет.
В GDM 2.32, как я заметил, - выбор локали становится доступным только после выбора пользователя.
Спасибо сказали: