#!/bin/bash readonly TIMEOUT=30 readonly H=15 readonly W=40 readonly N_ITEMS=10 readonly DEFAULT_LANG='en_US.UTF-8' readonly LANG_TITLE="System language selection" readonly LANG_PROMPT="Choose your language:" readonly DEFAULT_KEYMAP='us' readonly KEYMAP_TITLE="System keymap selection" readonly KEYMAP_PROMPT="Choose your keymap:" readonly -a LANGUAGES=( 'en_US.UTF-8' "English" \ 'eo' "Esperanto" \ 'es_ES.UTF-8' "Spanish" \ 'fr_FR.UTF-8' "French" \ 'gl_ES.UTF-8' "Galego" \ 'it_IT.UTF-8' "Italian" \ 'pl_PL.UTF-8' "Polish" \ 'pt_BR.UTF-8' "Brazilian-Portuguese" ) readonly -a ESPERANTO_LANG_PACKS=( 'iceweasel-l10n-es-eo' ) readonly -a SPANISH_LANG_PACKS=( 'iceweasel-l10n-es-ar' 'icedove-l10n-es-ar' 'iceweasel-l10n-es-cl' 'iceweasel-l10n-es-es' 'icedove-l10n-es-es' 'iceweasel-l10n-es-mx' ) readonly -a FRENCH_LANG_PACKS=( 'iceweasel-l10n-fr' 'icedove-l10n-fr' ) readonly -a GALEGO_LANG_PACKS=( 'iceweasel-l10n-gl' 'icedove-l10n-gl' ) readonly -a ITALIAN_LANG_PACKS=( 'iceweasel-l10n-it' 'icedove-l10n-it' ) readonly -a POLISH_LANG_PACKS=( 'iceweasel-l10n-pl' 'icedove-l10n-pl' ) readonly -a PORTUGUESE_LANG_PACKS=( 'iceweasel-l10n-pt-br' 'icedove-l10n-pt-br' ) readonly -a KEYMAPS=( 'af' "Afrikaans-Lang" \ 'al' "Albanian" \ 'am' "Amharic" \ 'ara' "Arabic" \ 'at' "at" \ 'au' "au" \ 'az' "Azerbaijani" \ 'ba' "Bashkir" \ 'be' "Belarusian" \ 'bg' "Bulgarian" \ 'bn' "Bihari-Languages" \ 'br' "Breton" \ 'brai' "brai" \ 'bt' "bt" \ 'bw' "bw" \ 'by' "by" \ 'ca' "Catalan" \ 'cd' "cd" \ 'ch' "Chamorro" \ 'cm' "cm" \ 'cn' "cn" \ 'cz' "Czech" \ 'de' "German" \ 'dk' "dk" \ 'dz' "Dzongkha" \ 'ee' "Ewe" \ 'epo' "Esperanto" \ 'es' "Spanish" \ 'et' "Estonian" \ 'fi' "Finnish" \ 'fo' "Faroese" \ 'fr' "French" \ 'gb' "gb" \ 'ge' "ge" \ 'gh' "gh" \ 'gn' "GuaranĂ­" \ 'gr' "gr" \ 'hr' "Croatian" \ 'hu' "Hungarian" \ 'id' "Indonesian" \ 'ie' "Interlingue" \ 'il' "il" \ 'in' "in" \ 'iq' "iq" \ 'ir' "ir" \ 'is' "Icelandic" \ 'it' "Italian" \ 'jp' "Japanese" \ 'ke' "ke" \ 'kg' "Kongo" \ 'kh' "kh" \ 'kr' "Kanuri" \ 'kz' "kz" \ 'la' "Latin" \ 'latam' "Latin-American" \ 'lk' "lk" \ 'lt' "Lithuanian" \ 'lv' "Latvian" \ 'ma' "ma" \ 'mao' "Maori" \ 'md' "md" \ 'me' "me" \ 'mk' "Macedonian" \ 'ml' "Malayalam" \ 'mm' "mm" \ 'mn' "Mongolian" \ 'mt' "Maltese" \ 'mv' "mv" \ 'my' "Burmese" \ 'nec_vndr/jp' "nec_vndr/jp" \ 'ng' "Ndonga" \ 'nl' "Dutch" \ 'no' "Norwegian" \ 'np' "np" \ 'ph' "ph" \ 'pk' "pk" \ 'pl' "Polish" \ 'pt' "Portuguese" \ 'ro' "Romanian" \ 'rs' "rs" \ 'ru' "Russian" \ 'se' "Northern-Sami" \ 'si' "Sinhala" \ 'sk' "Slovak" \ 'sn' "Shona" \ 'sy' "sy" \ 'tg' "Tajik" \ 'th' "Thai" \ 'tj' "tj" \ 'tm' "tm" \ 'tr' "Turkish" \ 'tw' "Twi" \ 'tz' "tz" \ 'ua' "ua" \ 'us' "English" \ 'uz' "Uzbek" \ 'vn' "vn" \ 'za' "Zhuang" ) readonly -a INSTALLER_DIRS=( './.install-openrc-lxde/packages' \ './.install-systemd-mate/packages' ) Prompt() # (title , prompt , default_option , options) { declare -l title=$1 declare -l prompt=$2 declare -l default_option=$3 declare -l options="${@:4}" dialog --backtitle "$title" --stdout --no-tags --no-cancel --timeout $TIMEOUT \ --default-item $default_option --menu "$prompt" $H $W $N_ITEMS $options } ### prompt for language if not already selected ### language=$(grep 'LANG=' /root/.codecheck | cut -d '=' -f 2) if [ "${language// /}" == '_UNDEFINED_' ] then language=$(Prompt "$LANG_TITLE" "$LANG_PROMPT" $DEFAULT_LANG "${LANGUAGES[@]}") [ "${language}" == "" ] && language=$DEFAULT_LANG logger "$0: selected language='$language'" # prepare locale echo "LANG=${language}" > /etc/locale.conf # prepare language-specific install wizard language=${language/_*/} for init_de in `ls -d /root/.install-* | sed 's|/root/\.install-\(.*\)|\1|'` do ls /root/.install-${init_de}/language/${language}/ &> /dev/null || language='en' cp -a /root/.install-${init_de}/language/${language}/* /root/.install-${init_de}/ done # include language-specific language packs in the install wizard package set for installer_dir in ${INSTALLER_DIRS[@]} do case ${language} in 'eo') echo "${ESPERANTO_LANG_PACKS[@]}" >> ${installer_dir}/packages ;; 'es') echo "${SPANISH_LANG_PACKS[@]}" >> ${installer_dir}/packages ;; 'fr') echo "${FRENCH_LANG_PACKS[@]}" >> ${installer_dir}/packages ;; 'gl') echo "${GALEGO_LANG_PACKS[@]}" >> ${installer_dir}/packages ;; 'it') echo "${ITALIAN_LANG_PACKS[@]}" >> ${installer_dir}/packages ;; 'pl') echo "${POLISH_LANG_PACKS[@]}" >> ${installer_dir}/packages ;; 'pt') echo "${PORTUGUESE_LANG_PACKS[@]}" >> ${installer_dir}/packages ;; esac done # confirm this selection sed -i "s/^LANG=.*/LANG=${language}/" /root/.codecheck fi ### prompt for X11 keymap if not already selected ### keymap=$(grep 'XKBMAP=' /root/.codecheck | cut -d '=' -f 2) if [ "${keymap// /}" == '_UNDEFINED_' ] then keymap=$(Prompt "$KEYMAP_TITLE" "$KEYMAP_PROMPT" $DEFAULT_KEYMAP "${KEYMAPS[@]}") [ "${keymap}" == "" ] && keymap=$DEFAULT_KEYMAP logger "$0: selected keymap='$keymap'" # set keymap setxkbmap ${keymap} 2> /dev/null # confirm this selection sed -i "s/^XKBMAP=.*/XKBMAP=${keymap}/" /root/.codecheck fi clear