#!/bin/sh

. alterator-sh-functions

i18n_conf="/etc/sysconfig/i18n"
langmap_conf="/etc/sysconfig/langmap"
rpm_conf="/etc/rpm/macros"

langlist="/etc/alterator/sysconfig/lang/langlist"
po_charset="UTF-8"

write_locale()
{
    local l="$1";shift

    [ "$l" != "POSIX" ] && echo "$l.$po_charset" || echo "$l"
}

on_message()
{
        case "$in_action" in
        	list)
			local lang_file=
			if [ -n "$LANG" -a "$LANG" != "POSIX" -a "$LANG" != "C" ]; then
				lang_file="$langlist.$(printf %s "$LANG" |
						sed -r -e 's,[a-z]+_([^\.]+)(\..*)?,\1,' |
						tr '[:upper:]' '[:lower:]')"
			fi

			[ -s "$lang_file" ] || lang_file="$langlist.all"

			echo '('
			write_enum_item <"$lang_file"
			echo ')'
                        ;;
		write)
			mkdir -p -- "${i18n_conf%/*}"
			mkdir -p -- "${langmap_conf%/*}"
			mkdir -p -- "${rpm_conf%/*}"

			local firstlang="${in_lang%%;*}"

			printf 'LANG=%s\n' "$(write_locale "$firstlang")">"$i18n_conf"

			if echo "$in_language" | fgrep -qs ';'; then
			    printf 'SUPPORTED=%s\n' "$(write_language "$in_language")">>"$i18n_conf"
			    printf '%s\n' "$(write_language "$in_language")">"$langmap_conf"
			else
			    printf 'SUPPORTED=%s\n' "$(write_locale "$firstlang")">>"$i18n_conf"
			fi
			
			sed 's,^%_install_langs[[:space:]].*,%_install_langs all,' -i "$rpm_conf"

			write_nop
			;;
		*)
			echo '#f'
			;;
        esac
}

message_loop
