#!/bin/sh -pe

homedir=$1
language=$2
validated_language=

[ -n "$language" -a -n "$homedir" ] || exit 1

langtoolsdir=/usr/share/language-tools

is_valid_language_list() {
    case "$1" in
        ''|*[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.@:+-]*|:*|*:|*::*)
            return 1
            ;;
        *)
            return 0
            ;;
    esac
}

validated_language=$( "$langtoolsdir/language-validate" "$language" )

if ! dpkg -l language-selector-gnome > /dev/null 2>&1; then
    renewed_langlist=$validated_language
elif [ "$language" = "${language%:*}" ]; then
    renewed_langlist=$( "$langtoolsdir/update-langlist" "$validated_language" "$homedir" )
else
    # $language contains a priority list
    language_tail=${language#*:}
    is_valid_language_list "$language_tail" || exit 1
    renewed_langlist=$validated_language:$language_tail
fi

locale_name=$( "$langtoolsdir/language2locale" "$validated_language" )

( "$langtoolsdir/save-to-pam-env" "$homedir" "$locale_name" "$renewed_langlist" ) || exit 1

printf '%s\n' "$validated_language"

