Предпочтение языка системы в XUbuntu
Предпочтения языков определяются переменной LANGUAGE, иногда она без видимых причин становится равной en и пользователи говорят что у них “слетел” русский язык в системе. Это наблюдается в XUbuntu 12.04, 12.10, 14.04 и 14.10. В моём случае, на парке в 350 ПК с XUbuntu это проявляется регулярно.
За языковые настройки отвечает файл ~/.pam_environment в профиле пользователя. Его нормальное содержание (для русского человека) такое:
LANGUAGE=ru:en
LANG=ru_RU.UTF-8
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
PAPERSIZE=a4
Мы можем ещё раз уточнить языковые установки командой locale
$ locale
LANG=ru_RU.UTF-8
LANGUAGE=ru:en
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=
Когда мы вызываем “Язык Системы” выполняется /usr/bin/gnome-language-selector, который в свою очередь вызывает специальный скрипт имеющий 3 аргумента:
/usr/share/language-tools/save-to-pam-env
Таким образом, мы можем восстановить нормальный порядок предпочтения языков выполнив от имени пользователя системы следующее:
$ sh /usr/share/language-tools/save-to-pam-env /home/user ru_RU.UTF-8 ru:en
Хорошей идеей будет после этого убрать права на редактирования этого файла как от имени пользователя, так и от имени root:
$ chmod 400 ~/.pam_environment
$ sudo chattr +i ~/.pam_environment
Коллекция скриптов Language Selector редактирует файл ~/.pam_environment от имени root и если мы не защитим его от root, языковые настройки всё равно можно будет редактировать и рано или поздно они “слетят”. Проверим что права выставлены верно:
$ ls -lah ~/.pam_environment
-r-------- 1 user user 258 июля 26 15:19 /home/user/.pam_environment
Настройки предпочтения языков применятся после завершения текущей сессии пользователя и открытия новой, никакие перезагрузки не требуются.
Почему предпочтения языка могут изменяться “сами по себе”: скорее всего из-за перекрытия конфигураций схем AccountsService имеющих высший приоритет по отношению к конфигурациям в /etc и профиле пользователя. Последствия отсутствия POSIX в Linux.
Автор: aGGreSSor
http://foss-blog.ru/?p=4037
|