#!/bin/sh
# langconfig - A very light-weight text-based language configuration tool.
 
PATH="/bin:/sbin:/usr/bin:/usr/sbin"
export PATH

XDIALOG_HIGH_DIALOG_COMPAT=1
export XDIALOG_HIGH_DIALOG_COMPAT
  
TMP="/tmp/kbdconfig.tmp$$"
   
bailout(){
   rm -f "$TMP"
   exit $1
}

DIALOG="dialog"
[ -n "$DISPLAY" ] && [ -x /usr/bin/Xdialog ] && DIALOG="Xdialog"

trap bailout 2 15
    
rm -f "$TMP"

[ -f /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n
[ -f /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard

TITLE="Please choose your language"

LANG_LIST="ch-SwissDeutch cn-ChineseSimplified de-GermanDeutsch da-Danish es-Spanish fr-French it-Italian nl-Nederlandese pl-Polish ru-Russian sk-Slovak tr-Turkish tw-ChineseTraditional uk-EnglishGB us-EnglishUSA"

for i in $LANG_LIST; do
	FILE="${i%%.kmap*}"; NAME="${FILE##*/}"
	[ "$NAME" != "$LANGUAGE" ] && LANGUAGES="$LANGUAGES ${NAME%%-*} ${NAME-*} "
done

DEFAULT="${LANGUAGE%%-*} $LANGUAGE"
LANGUAGE_FALLBACK="$LANGUAGE"

dialog --timeout 20 --clear --title "$TITLE" --menu "Choose your language in the next 20 seconds and press ENTER (OK), or the default language/keyboard will be loaded.\n\nDefault: ${LANGUAGE:-none}" 22 70 12 $DEFAULT $LANGUAGES 2>"$TMP" || echo "$LANGUAGE_FALLBACK">"$TMP"

if [ -n "$LANGUAGE" ]; then
	LANGUAGE="`cat $TMP`"
	echo "LANGUAGE=\"$LANGUAGE\"" #>>/etc/sysconfig/keyboard
fi



### localization
# Allow language specification via commandline. The default language
# will be overridden via "lang=de" boot commandline
#LANGUAGE="$(getbootparam lang 2>/dev/null)"
#LANGUAGE=it
[ -n "$LANGUAGE" ] || LANGUAGE="us"

# The default language/keyboard to use. This CANNOT be autoprobed.
# Most of these variables will be used to generate the KDE defaults
# and will be inserted into /etc/sysconfig/* below.
case "$LANGUAGE" in
de)
# German version
COUNTRY="de"
LANG="de_DE@euro"
KEYTABLE="de-latin1-nodeadkeys"
XKEYBOARD="de"
KDEKEYBOARD="de(nodeadkeys)"
CHARSET="iso8859-15"
# Additional KDE Keyboards
KDEKEYBOARDS="us,fr"
TZ="Europe/Berlin"
;;
# Belgian version
be)
LANGUAGE="be"
COUNTRY="be"
LANG="C"
KEYTABLE="be2-latin1"
XKEYBOARD="be"
KDEKEYBOARD="be"
CHARSET="iso8859-15"
# Additional KDE Keyboards
KDEKEYBOARDS="us,de(nodeadkeys),fr"
TZ="Europe/Brussels"
;;
# Bulgarian version
bg)
LANGUAGE="bg"
COUNTRY="bg"
LANG="bg_BG"
KEYTABLE="bg"
XKEYBOARD="bg"
KDEKEYBOARD="bg"
CHARSET="microsoft-cp1251"
# Additional KDE Keyboards
KDEKEYBOARDS="us,de(nodeadkeys),fr"
TZ="Europe/Sofia"
;;
# Swiss version (basically de with some modifications)
ch)
LANGUAGE="de"
COUNTRY="ch"
LANG="de_CH"
KEYTABLE="sg-latin1"
XKEYBOARD="ch"
KDEKEYBOARD="ch"
CHARSET="iso8859-15"
# Additional KDE Keyboards
KDEKEYBOARDS="de(nodeadkeys),us,fr"
TZ="Europe/Zurich"
;;
cn)
# Simplified Chinese version
COUNTRY="cn"
LANG="zh_CN.GB2312"
KEYTABLE="us"
XKEYBOARD="us"
KDEKEYBOARD="us"
CHARSET="gb2312.1980-0"
# Additional KDE Keyboards
KDEKEYBOARDS="us,de(nodeadkeys),fr"
XMODIFIERS="@im=Chinput"
TZ="Asia/Shanghai"
;;
# Czech version
cs|cz)
LANGUAGE="cs"
COUNTRY="cs"
LANG="cs_CZ"
KEYTABLE="cz-lat2"
XKEYBOARD="cs"
KDEKEYBOARD="cz"
CHARSET="iso8859-2"
# Additional KDE Keyboards
KDEKEYBOARDS="us,de(nodeadkeys),fr"
TZ="Europe/Prague"
CONSOLEFONT="iso02g"
;;
dk|da)
# Dansk version
COUNTRY="dk"
LANG="da_DK"
# Workaround: "dk" broken in gettext, use da:da_DK
LANGUAGE="da:da_DK"
# Keytable "dk" is correct.
KEYTABLE="dk"
XKEYBOARD="dk"
KDEKEYBOARD="dk"
CHARSET="iso8859-15"
# Additional KDE Keyboards
KDEKEYBOARDS="dk,de(nodeadkeys),us,fr"
TZ="Europe/Copenhagen"
;;
es)
# Spanish version
COUNTRY="es"
LANG="es_ES@euro"
KEYTABLE="es"
XKEYBOARD="es"
KDEKEYBOARD="es"
CHARSET="iso8859-15"
# Additional KDE Keyboards
KDEKEYBOARDS="de(nodeadkeys),us,fr"
TZ="Europe/Madrid"
;;
fi)
# Finnish version, though we may not have the kde-i18n files
COUNTRY="fi"
LANG="fi_FI@euro"
KEYTABLE="fi"
XKEYBOARD="fi"
KDEKEYBOARD="fi"
CHARSET="iso8859-15"
# Additional KDE Keyboards
KDEKEYBOARDS="us"
TZ="Europe/Helsinki"
;;
fr)
# French version
COUNTRY="fr"
LANG="fr_FR@euro"
KEYTABLE="fr"
XKEYBOARD="fr"
KDEKEYBOARD="fr"
CHARSET="iso8859-15"
# Additional KDE Keyboards
KDEKEYBOARDS="de(nodeadkeys),us"
TZ="Europe/Paris"
;;
hu)
# Hungarian version
COUNTRY="hu"
LANG="hu_HU"
LANGUAGE="hu_HU"
KEYTABLE="hu"
XKEYBOARD="hu"
KDEKEYBOARD="hu"
CHARSET="iso-8859-2"
# Additional KDE Keyboards
KDEKEYBOARDS="us,de(nodeadkeys)"
TZ="Europe/Budapest"
CONSOLEFONT="iso02g"
;;
he|il)
# Hebrew version
LANGUAGE="he"
COUNTRY="il"
LANG="he_IL"
KEYTABLE="us"
XKEYBOARD="us"
KDEKEYBOARD="il"
CHARSET="iso8859-8"
# Additional KDE Keyboards
KDEKEYBOARDS="us,fr,de(nodeadkeys)"
TZ="Asia/Jerusalem"
;;
ie)
# Irish (English) version
COUNTRY="ie"
LANG="en_IE@euro"
KEYTABLE="uk"
XKEYBOARD="uk"
KDEKEYBOARD="gb"
CHARSET="iso8859-15"
#Additional KDE Keyboards
KDEKEYBOARDS="us,de(nodeadkeys),es,fr,it"
TZ="Europe/Dublin"
;;
it)
# Italian version
COUNTRY="it"
LANG="it_IT@euro"
KEYTABLE="it"
XKEYBOARD="it"
KDEKEYBOARD="it"
CHARSET="iso8859-15"
# Additional KDE Keyboards
KDEKEYBOARDS="fr,us,de(nodeadkeys)"
TZ="Europe/Rome"
;;
ja)
# (limited) Japanese version
COUNTRY="jp"
LANG="ja_JP"
LANGUAGE="ja"
KEYTABLE="us"
XKEYBOARD="us"
KDEKEYBOARD="us"
CHARSET="iso8859-15"
# Additional KDE Keyboards
KDEKEYBOARDS="fr,us,de(nodeadkeys)"
TZ="Asia/Tokyo"
;;
nl)
# Dutch version
COUNTRY="nl"
LANG="nl_NL@euro"
KEYTABLE="us"
XKEYBOARD="us"
KDEKEYBOARD="en_US"
CHARSET="iso8859-15"
# Additional KDE Keyboards
KDEKEYBOARDS="nl,de(nodeadkeys),fr"
TZ="Europe/Amsterdam"
;;
pl)
# Polish version
COUNTRY="pl"
LANG="pl_PL"
KEYTABLE="pl"
XKEYBOARD="pl"
KDEKEYBOARD="pl"
CHARSET="iso8859-2"
# Additional KDE Keyboards
KDEKEYBOARDS="de(nodeadkeys),us,fr"
TZ="Europe/Warsaw"
CONSOLEFONT="iso02g"
;;
ru)
# Russian version
COUNTRY="ru"
LANG="ru_RU.KOI8-R"
KEYTABLE="ru"
XKEYBOARD="ru"
KDEKEYBOARD="ru"
CHARSET="koi8-r"
CONSOLEFONT="Cyr_a8x16"
# Additional KDE Keyboards
KDEKEYBOARDS="de(nodeadkeys),us,fr"
TZ="Europe/Moscow"
;;
sk)
# Slovak version (guessed)
COUNTRY="sk"
LANG="sk"
KEYTABLE="sk-qwerty"
XKEYBOARD="sk"
KDEKEYBOARD="sk"
CHARSET="iso8859-2"
# Additional KDE Keyboards
KDEKEYBOARDS="us,de(nodeadkeys)"
TZ="Europe/Bratislava"
CONSOLEFONT="iso02g"
;;
# Slovenian keyboard
sl)
LANGUAGE="sl"
COUNTRY="si"
LANG="sl_SI"
KEYTABLE="slovene"
XKEYBOARD="sl"
KDEKEYBOARD="si"
CHARSET="iso8859-2"
# Additional KDE Keyboards
KDEKEYBOARDS="us,de(nodeadkeys)"
TZ="Europe/Ljubljana"
CONSOLEFONT="iso02g"
;;
tr)
# Turkish version (guessed)
COUNTRY="tr"
LANG="tr_TR"
KEYTABLE="tr_q-latin5"
XKEYBOARD="tr"
KDEKEYBOARD="tr"
CHARSET="iso8859-9"
# Additional KDE Keyboards
KDEKEYBOARDS="us,de(nodeadkeys),fr"
TZ="Europe/Istanbul"
;;
tw)
# Traditional Chinese version (thanks to Chung-Yen Chang)
COUNTRY="tw"
LANG="zh_TW.Big5"
LANGUAGE="zh_TW.Big5"
KEYTABLE="us"
XKEYBOARD="us"
KDEKEYBOARD="us"
# CHARSET="big5-0"
CHARSET="iso8859-1"
# Additional KDE Keyboards
KDEKEYBOARDS="us"
XMODIFIERS="@im=xcin"
TZ="Asia/Taipei"
;;
uk)
# British version
COUNTRY="uk"
LANG="en_GB"
LANGUAGE="en"
KEYTABLE="uk"
XKEYBOARD="uk"
KDEKEYBOARD="gb"
CHARSET="iso8859-1"
# Additional KDE Keyboards
KDEKEYBOARDS="us"
TZ="Europe/London"
;;
*)
# American version
LANGUAGE="us"
COUNTRY="us"
LANG="C"
KEYTABLE="us"
XKEYBOARD="us"
KDEKEYBOARD="us"
CHARSET="iso8859-1"
# Additional KDE Keyboards
KDEKEYBOARDS="de(nodeadkeys),fr"
TZ="America/New_York"
;;
esac

# Export it now, so error messages get translated, too
export LANG COUNTRY CHARSET

# Allow keyboard override by boot commandline
#KKEYBOARD="$(getbootparam keyboard 2>/dev/null)"
[ -n "$KKEYBOARD" ] && KEYTABLE="$KKEYBOARD"
#KXKEYBOARD="$(getbootparam xkeyboard 2>/dev/null)"
if [ -n "$KXKEYBOARD" ]; then
XKEYBOARD="$KXKEYBOARD"
KDEKEYBOARD="$KXKEYBOARD"
elif [ -n "$KKEYBOARD" ]; then
XKEYBOARD="$KKEYBOARD"
KDEKEYBOARD="$KKEYBOARD"
fi

# Write KNOPPIX config files for other scripts to parse
# Standard variables/files
echo "LANG=\"$LANG\""                 > /etc/sysconfig/i18n
echo "COUNTRY=\"$COUNTRY\""           >> /etc/sysconfig/i18n
echo "LANGUAGE=\"$LANGUAGE\""         >> /etc/sysconfig/i18n
echo "CHARSET=\"$CHARSET\""           >> /etc/sysconfig/i18n
echo "XMODIFIERS=\"$XMODIFIERS\""     >> /etc/sysconfig/i18n
echo "TZ=\"$TZ\""                     >> /etc/sysconfig/i18n

# Default Keyboard layout for console and X
echo "KEYTABLE=\"$KEYTABLE\""         > /etc/sysconfig/keyboard
echo "XKEYBOARD=\"$XKEYBOARD\""       >> /etc/sysconfig/keyboard
echo "KDEKEYBOARD=\"$KDEKEYBOARD\""   >> /etc/sysconfig/keyboard
echo "KDEKEYBOARDS=\"$KDEKEYBOARDS\"" >> /etc/sysconfig/keyboard

# Desired desktop
#echo "DESKTOP=\"$DESKTOP\""            > /etc/sysconfig/desktop

# ONLY ADD to the knoppix, so we dont erase the contents
# Write all, including non-standard variables, to /etc/sysconfig/knoppix
echo "LANG=\"$LANG\""                 >> /etc/sysconfig/knoppix
echo "COUNTRY=\"$COUNTRY\""           >> /etc/sysconfig/knoppix
echo "LANGUAGE=\"$LANGUAGE\""         >> /etc/sysconfig/knoppix
echo "CHARSET=\"$CHARSET\""           >> /etc/sysconfig/knoppix
echo "KEYTABLE=\"$KEYTABLE\""         >> /etc/sysconfig/knoppix
echo "XKEYBOARD=\"$XKEYBOARD\""       >> /etc/sysconfig/knoppix
echo "KDEKEYBOARD=\"$KDEKEYBOARD\""   >> /etc/sysconfig/knoppix
echo "KDEKEYBOARDS=\"$KDEKEYBOARDS\"" >> /etc/sysconfig/knoppix
#echo "DESKTOP=\"$DESKTOP\""           >> /etc/sysconfig/knoppix
echo "TZ=\"$TZ\""                     >> /etc/sysconfig/knoppix

# OpenOffice & others
echo "LANG=\"$LANG\""                 > /etc/environment
echo "LANGUAGE=\"$LANGUAGE\""         >> /etc/environment
echo "LC_MESSAGES=\"$LC_MESSAGES\""   >> /etc/environment

export LANG="$LANG"
export COUNTRY="$COUNTRY"
export LANGUAGE="$LANGUAGE"
export CHARSET="$CHARSET"
export KEYTABLE="$KEYTABLE"
export XKEYBOARD="$XKEYBOARD"
export KDEKEYBOARD="$KDEKEYBOARD"
export KDEKEYBOARDS="$KDEKEYBOARDS"


# to re-create xorg.conf
touch /etc/X11/xorg.conf.in

bailout 0
