#!/bin/sh -e # # update-langlist maintains the LANGUAGE priority list. It does so in # a simplified manner, unlike the principal UI for setting the user # language which provides full control. first_language=$1 user=$2 renewed_langlist= [ -n "$first_language" -a -n "$user" ] || exit 0 get_old_langlist() { while read line; do [ "${line%%:*}" = $user ] && break done < /etc/passwd if [ -n "$line" ]; then OLDIFS=$IFS IFS=':' i=1 for homedir in $line; do if [ $i -ne 6 ]; then i=$(( $i + 1 )) continue fi break done IFS=$OLDIFS fi if [ -r "$homedir/.profile" ]; then old_langlist=$( grep "^[[:space:]]*export LANGUAGE=" \ $homedir/.profile | cut -d '"' -f 2 ) fi } old_langlist= english=true if [ ${first_language%%[_@]*} != 'en' ]; then get_old_langlist english=false fi if [ -n "$old_langlist" ] && ! $english; then if expr $old_langlist : ".*:$first_language:" > /dev/null ; then renewed_langlist=$( echo $old_langlist | sed -r "s/(.+:)($first_language:)/\2\1/" ) elif [ ${old_langlist%%:*} = $first_language ]; then # no change renewed_langlist=$old_langlist else renewed_langlist=$first_language:$old_langlist fi 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 echo $renewed_langlist