| Server IP : 209.205.66.10 / Your IP : 216.73.216.173 Web Server : Apache/2.4.52 (Ubuntu) System : Linux ammon 5.15.0-186-generic #196-Ubuntu SMP Sat Jun 20 16:09:34 UTC 2026 x86_64 User : ( 1006) PHP Version : 8.5.8 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/language-tools/ |
Upload File : |
#!/bin/sh -pe
#
# update-langlist maintains the LANGUAGE priority list. It does so in
# a simplified manner, unlike the UI in language-selector-gnome for
# setting the user language which provides full control.
first_language=$1
homedir=$2
renewed_langlist=
[ -n "$first_language" -a -n "$homedir" ] || exit 1
is_valid_language() {
case "$1" in
''|*[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.@+-]*|*:*)
return 1
;;
*)
return 0
;;
esac
}
is_valid_language_list() {
case "$1" in
''|*[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.@:+-]*)
return 1
;;
*)
return 0
;;
esac
}
get_old_langlist() {
if [ -r "$homedir/.pam_environment" ]; then
while IFS= read -r line || [ -n "$line" ]; do
if [ "$( printf '%s\n' "${line%%=*}" | sed -r 's/[[:space:]]+DEFAULT$//' )" = 'LANGUAGE' ]; then
old_langlist=${line#*=}
is_valid_language_list "$old_langlist" || old_langlist=
break
fi
done < "$homedir/.pam_environment"
fi
}
is_valid_language "$first_language" || exit 1
old_langlist=
english=true
if [ "${first_language%%[_@]*}" != 'en' ]; then
get_old_langlist
english=false
fi
if [ -n "$old_langlist" ] && ! $english; then
renewed_langlist=$first_language
old_ifs=$IFS
IFS=:
for lang in $old_langlist; do
[ -n "$lang" ] || continue
[ "$lang" = "$first_language" ] && continue
renewed_langlist=$renewed_langlist:$lang
done
IFS=$old_ifs
else
# build fresh list with 'en' as the last element
# no other languages needed if English was selected
renewed_langlist=$first_language
[ "$first_language" != 'en' ] && renewed_langlist=$renewed_langlist:en
fi
printf '%s\n' "$renewed_langlist"