É possível alterar as variáveis de ambiente LANG e LANGUAGE dentro da sessão, mas isso não afetará os processos em execução. Então não, não há maneira prática de fazer isso sem sair.
Considerando que o lightdm-gtk-greeter já possui um seletor de idioma para escolher o idioma quando você efetua login em uma conta comum, a solução mais elegante provavelmente seria de alguma forma fazer uso desse recurso. Não sei dizer como, embora ...A solução de exemplo abaixo usa um script de wrapper para permitir que o usuário selecione o idioma de exibição por meio de um diálogo zenity. O exemplo inclui inglês e sueco; os idiomas que você usa devem ser instalados. Essa solução deve funcionar com o unity-greeter e o lightdm-gtk-greeter nas versões posteriores do Ubuntu. Eu testei em 15.10 e 16.04.
Crie /etc/guest-session/choose-language-wrapper.sh
, dê este conteúdo a ele:
#!/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 "$@"
e torná-lo executável:
sudo chmod +x /etc/guest-session/choose-language-wrapper.sh
Em seguida, faça o lightdm usar o script wrapper criando este arquivo:
$ cat /etc/lightdm/lightdm.conf.d/50-choose-guest-language.conf
[Seat:*]
guest-wrapper=/etc/guest-session/choose-language-wrapper.sh
Após a próxima reinicialização, a caixa de diálogo do zenity deve aparecer ao iniciar uma sessão de convidado a partir do greeter.