Я попал в сложную ситуацию.
Я настраиваю компьютер общего доступа, на котором желательно, чтобы люди входили в систему, используя гостевую учетную запись. Люди, которым нужно пользоваться компьютером, говорят на разных языках.
Компьютер старый и в настоящее время работает под управлением Lubuntu 15.10, Lightdm login.
Однако, поскольку переключение системных языков возможно только при выходе из системы и обратно в учетную запись, в сочетании с тем фактом, что учетная запись гостя стирается после выхода из системы ... Немного подвох 22.
Вероятно, мне придется решить эту проблему с помощью какого-либо скриптового средства выбора языка. Я вижу два возможных решения, и они формируют мой вопрос (ы):
Есть ли способ изменить язык системы без полного выхода из системы?
Как вариант, можно ли запустить скрипт во время логин? Я думаю о нескольких альтернативах guest-account / skel и создаю символическую ссылку при входе в систему.
Возможно изменить переменные среды ЛЕНГ и ЯЗЫК в рамках сессии, но это уже не будет влиять на рабочие процессы. Так не, нет никакого практического способа сделать это без того, чтобы выходить из системы.
Рассмотрение, что lightdm-gtk-greeter уже имеет селектор языка для выбора языка при входе в обычный аккаунт самое изящное решение состояло бы в том, чтобы, вероятно, так или иначе использовать ту функцию. Не может сказать как, хотя...
ниже решения в качестве примера использует сценарий обертки, чтобы позволить пользователю выбрать язык дисплея через zenity диалоговое окно. Пример включает английский и шведский язык; языки, которые Вы используете, должны, конечно, быть установлены. Это решение должно работать и с зазывалой единицы и с lightdm-gtk-greeter на более поздних версиях Ubuntu. Я протестировал на 15,10 и 16.04.
Создают /etc/guest-session/choose-language-wrapper.sh
, дают его, это удовлетворяет:
#!/bin/sh -e
# show zenity dialog only when launched from greeter
ONLYGUEST=true
for U in $(users); do
if [ "${U%%-*}" != 'guest' ]; then
ONLYGUEST=false
break
fi
done
if $ONLYGUEST && [ -x /usr/bin/zenity ]; then
guestlang=$( zenity --list --title 'Select language' \
--text 'Select language for the guest session' --radiolist \
--column 'Pick' --column '' TRUE 'English' FALSE 'Swedish' )
if [ "$guestlang" = 'English' ]; then
echo 'export LANGUAGE=en_US' >> "$HOME/.profile"
echo 'export LANG=en_US.UTF-8' >> "$HOME/.profile"
elif [ "$guestlang" = 'Swedish' ]; then
echo 'export LANGUAGE=sv' >> "$HOME/.profile"
echo 'export LANG=sv_SE.UTF-8' >> "$HOME/.profile"
fi
fi
exec /usr/lib/lightdm/lightdm-guest-session "$@"
и делают это исполняемым файлом:
sudo chmod +x /etc/guest-session/choose-language-wrapper.sh
Затем заставляют lightdm использовать сценарий обертки путем создания этого файла:
$ cat /etc/lightdm/lightdm.conf.d/50-choose-guest-language.conf
[Seat:*]
guest-wrapper=/etc/guest-session/choose-language-wrapper.sh
После следующей перезагрузки zenity диалоговое окно должно обнаружиться при запуске гостевой сессии от зазывалы.