#!/bin/bash

# This script configures the system locale.

# Translations only work with utf8 locales
if ! locale -k charmap|grep -q UTF-8 ; then
	LANG=C
fi

# Gettext internationalization
export TEXTDOMAIN="localesetup"
export TEXTDOMAINDIR="/usr/share/locale"
. gettext.sh

dialog="dialog"

# Just to be sure
unset locale newlocale

# usage screen
usage(){
	gettext -s "USAGE: localesetup [locale]"
	gettext -s "EXAMPLE: localesetup en_US"
	exit 1
}

if [ $# -gt 1 ]; then
	gettext -s "ERROR: Too many arguments"
	usage
fi

# check for root privileges
if [ "$UID" != "0" ]; then
	gettext -s "You need root privileges to run this"
	exit 1
fi

if [ ! -z $1 ]; then
	newlocale="$1"
	if LANG="$newlocale" locale -k charmap 2>/dev/null|grep -q UTF-8 ; then
		locale="$newlocale"
		eval_gettext "Setting locale to $locale"
		echo
	else
		eval_gettext "ERROR: $newlocale is not a valid locale"
		echo
		usage
	fi
else

# start of interactive section

# find current locale
currentlocale=$(sed -n '
	 /^ *export LANG=/{
	s/^ *export LANG=\(.*\)$/\1/p}' /etc/profile.d/lang.sh)

# default to en_US.utf8 if what is set in lang.sh is only just en_US 
if [ "$currentlocale" = "en_US" ]; then
	defaultlocale="en_US.utf8"
else
	defaultlocale="$currentlocale"
fi

# probe for available locales
# modified to includes all UTF-8 encoded locales - Didier
list=$(locale -avc|LC_CTYPE=C sed -n '
/^locale:/H
/title |/H
/^  codeset | /{
	/UTF-8/{
		g
		s/\nlocale: \([^ ]*\)[^|]\{1,\}| \([^\n]\{1,\}\).*/"\1" "\2" \\/
		s/[lL]anguage //
		s/[lL]ocale //
		p
	}
	/UTF-8/!{
		s/.*//
		h
	}
}')

# generate a menu
locale="$(eval $dialog \
--stdout \
--title \"`eval_gettext 'System language configuration'`\" \
--default-item \"${defaultlocale}\" \
--ok-label "`eval_gettext 'OK'`" \
--cancel-label "`eval_gettext 'Exit'`" \
--menu \
\"\\n`eval_gettext 'The current locale is $currentlocale.'` \\n\\n\
`eval_gettext 'Please select your preferred system language:'`\" 0 0 11 \
"${list}"
)"

fi

# end of interactive section

# set locale
if [ "$locale" ]; then
	sed -i "s/^ *\(export LANG=\).*$/\1$locale/" /etc/profile.d/lang.sh
	/bin/bash /etc/profile.d/lang.sh
	locale_noutf8=`echo $locale | sed "s/.utf8//"`
	if [ -f /etc/kde/kdm/kdmrc ]; then
		sed -i "s/\(^\|^#\)Language=.*/Language=$locale_noutf8/" /etc/kde/kdm/kdmrc
	fi
fi

# end

