#!/bin/sh

desktop_value()
{
    local name="$1";shift
    local dfile="$1";shift
    local mfile="$1";shift

    local value="$(sed -n "s,^$name[[:space:]]*=[[:space:]]*,,p" "$dfile")"
    [ -z "$value" ] || $SDK_DIR/msggrep -v msgid="$value" "$mfile"
}

desktop_append_tr()
{
    local name="$1";shift
    local dfile="$1";shift
    local mfile="$1";shift

    local lang="${mfile##*/}"
    lang="${lang%%.po}"

    local value="$(desktop_value "$name" "$dfile" "$mfile")"
    if [ -n "$value" ]; then
       [ -z "$(tail -c1 "$dfile")" ] || echo >> "$dfile"
       printf '%s[%s]=%s\n' "$name" "$lang" "$value" >>"$dfile"
    fi
}

desktop_msgfmt()
{
    local dfile="$1";shift
    local mfile="$1";shift
    local lang="$1";shift

    for v in Name Comment; do
	grep -qs "^$v\[$lang\]" "$f" ||
		desktop_append_tr "$v" "$dfile" "$mfile"
    done
}

msgfmt_po()
{
    for f in "$@"; do
	for i in $PO_LANGUAGES; do
		desktop_msgfmt  "$f" "po/$i.po" "$i"
	done;
    done
}

PO_DESKTOP_TRLIST="$PO_DESKTOP_TRLIST $(find applications -name '*.desktop' 2>/dev/null)"
PO_DESKTOP_TRLIST="$PO_DESKTOP_TRLIST $(find desktop-directories -name '*.directory' 2>/dev/null)"

msgfmt_po $PO_DESKTOP_TRLIST
