summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbill-auger <mr.j.spam.me@gmail.com>2022-05-14 02:06:26 -0400
committerbill-auger <mr.j.spam.me@gmail.com>2022-08-15 02:12:00 -0400
commita4f6bd343bf9bf5af4060861ce7bd4233cd91c60 (patch)
treee3f50174908b814d466e70521e2d6c7ea31ee0b5
parent47b4e8624020984c534a7d5144a1b0277769b0da (diff)
consolidate locales and language selections
-rw-r--r--chroot-environment.sh8
-rwxr-xr-xinstall.sh54
-rw-r--r--session-common.sh.inc12
-rwxr-xr-xsession-init.sh10
4 files changed, 41 insertions, 43 deletions
diff --git a/chroot-environment.sh b/chroot-environment.sh
index cdeb1a4..45a1de1 100644
--- a/chroot-environment.sh
+++ b/chroot-environment.sh
@@ -42,15 +42,13 @@ ln -s /usr/share/zoneinfo/$(GetStateVar 'TIMEZONE') /etc/localtime
echo "KEYMAP=$(GetStateVar 'KEYMAP')" > /etc/vconsole.conf
# configure locales
-locales=$(echo $(GetStateVar 'LOCALES') | sed -e 's/" "/\n/g' -e 's/ /#/g' -e 's/"//g')
-for locale in ${locales[@]}
-do locale=$(echo ${locale} | sed -e 's/#/ /g')
- sed -i -e "s/#${locale}/${locale}/g" /etc/locale.gen
+for locale in $(GetStateVar 'LOCALES')
+do sed -i "s|^#${locale} |${locale} |" /etc/locale.gen
done
locale-gen
# configure language
-echo "LANG=$(GetStateVar 'LANGUAGE')" > /etc/locale.conf
+echo "LANG=$(GetStateVar 'LANG')" > /etc/locale.conf
# prepare initrd
mkinitcpio -p linux-libre
diff --git a/install.sh b/install.sh
index ff0f509..9fded53 100755
--- a/install.sh
+++ b/install.sh
@@ -107,9 +107,8 @@ SelectDefaults()
SetStateVar 'WMDE' ${DEF_WMDE}
SetStateVar 'HOSTNAME' ${DEF_HOSTNAME}
SetStateVar 'TIMEZONE' ${DEF_TIMEZONE}
- SetStateVar 'KEYMAP' $(GetStateVar 'XKBMAP' ${DEF_KEYMAP} )
- SetStateVar 'LOCALES' $(GetStateVar 'LANG' ${DEF_LOCALE} )
- SetStateVar 'LANGUAGE' $(GetStateVar 'LANG' ${DEF_LANGUAGE})
+ SetStateVar 'KEYMAP' $(GetStateVar 'XKBMAP')
+ SetStateVar 'LOCALES' $(GetStateVar 'LANG' )
fi
}
@@ -235,11 +234,12 @@ SelectEnv()
{
# MOCK_SELECTENV ; return 0 ;
- [[ -z "$(GetStateVar 'HOSTNAME')" || -z "$(GetStateVar 'TIMEZONE')" || \
- -z "$(GetStateVar 'KEYMAP' )" || -z "$(GetStateVar 'LOCALES' )" || \
- -z "$(GetStateVar 'LANGUAGE')" ]] || return 0
+ # checks to skip this stage per SelectDefaults()
+ [[ -z "$(GetStateVar 'HOSTNAME')" || -z "$(GetStateVar 'TIMEZONE')" ]] || \
+ [[ -z "$(GetStateVar 'KEYMAP' )" || -z "$(GetStateVar 'LOCALES' )" ]] || return 0
local curr_msg="${TR[option_current-${Lang}]}"
+ local host_lang=$(GetStateVar 'LANG')
# prompt for hostname, if not set per SelectDefaults()
local hostname=''
@@ -274,8 +274,8 @@ SelectEnv()
local keymaps=()
for keymap in $(sort -u "${THIS_DIR}"/KEYMAPS_VT)
do if [[ ${keymap} =~ ^$(GetStateVar 'XKBMAP' 'us') ]]
- then keymaps=( "${keymap}" "${keymap} ${curr_msg}" "${keymaps[@]}" )
- else keymaps+=( "${keymap}" "${keymap}" )
+ then keymaps=( "${keymap}" "${curr_msg}" "${keymaps[@]}" )
+ else keymaps+=( "${keymap}" '' )
fi
done
keymap=$( WizardDlg "${TR[dlg_env-${Lang}]}" \
@@ -283,36 +283,38 @@ SelectEnv()
"${keymaps[@]}" )
[[ -n "${keymap}" ]] && SetStateVar 'KEYMAP' ${keymap} || exit
- # prompt for locale
- local all_locales=$( sed -e '1,23d' -e 's/#//g' -e 's/ /#/g' -e 's/..$//' /etc/locale.gen )
- local locales=()
- for locale in ${all_locales}
- do locale=$(echo ${locale} | sed -e 's/#/ /g')
- if [[ ${locale} =~ ^$(GetStateVar 'LANG' 'en_US') ]]
- then locales=( "${locale}" "${locale}" 'on' "${locales[@]}" )
- else locales+=( "${locale}" "${locale}" 'off' )
+ # prompt for locales
+ local all_locales=()
+ local locale
+ local display_locales=()
+ local locales
+ mapfile -t all_locales < <(sed '1,23d ; s|^#||' /etc/locale.gen)
+ for locale in "${all_locales[@]}"
+ do if [[ ${locale} =~ ^${host_lang} ]]
+ then display_locales=( ${locale} 'on' "${display_locales[@]}" )
+ else display_locales+=( ${locale} 'off' )
fi
done
locales=$( WizardDlg "${TR[dlg_env-${Lang}]}" \
--checklist "${TR[locales-${Lang}]}" 20 70 50 \
- "${locales[@]}" )
+ ${display_locales[@]} )
[[ -n "${locales}" ]] && SetStateVar 'LOCALES' "${locales}" || exit
# prompt for language
local language
- local _languages=()
local languages=()
- mapfile -t _languages < <(sort -u "${THIS_DIR}"/LANGUAGES)
- for language in "${_languages[@]}"
- do if [[ ${language} =~ ^$(GetStateVar 'LANG' 'en_US.UTF-8') ]]
- then languages=( "${language% *}" "${language#*\ } ${curr_msg}" "${languages[@]}" )
- else languages+=( "${language% *}" "${language#*\ }" )
+ for language in ${locales}
+ do if [[ ${language} == ${host_lang} ]]
+ then languages=( "${language}" "${curr_msg}" "${languages[@]}" )
+ else languages+=( "${language}" '' )
fi
done
- language=$( WizardDlg "${TR[dlg_env-${Lang}]}" \
+ language=$( DIALOGOPTS="--default-item ${host_lang}" \
+ WizardDlg "${TR[dlg_env-${Lang}]}" \
--menu "${TR[language-${Lang}]}" 20 70 50 \
+ 'POSIX' '' \
"${languages[@]}" )
- [[ -n "${language}" ]] && SetStateVar 'LANGUAGE' ${language} || exit
+ [[ -n "${language}" ]] && SetStateVar 'LANG' ${language} || exit
}
SelectPartition()
@@ -489,7 +491,7 @@ ConfigChroot()
[[ -n "$(GetStateVar 'TIMEZONE' )" ]]
[[ -n "$(GetStateVar 'KEYMAP' )" ]]
[[ -n "$(GetStateVar 'LOCALES' )" ]]
- [[ -n "$(GetStateVar 'LANGUAGE' )" ]]
+ [[ -n "$(GetStateVar 'LANG' )" ]]
[[ -n "$(GetStateVar 'BOOT' )" ]]
[[ -n "$(GetStateVar 'DEVICE' )" ]]
[[ -n "$(GetStateVar 'ROOT_PASS' )" ]]
diff --git a/session-common.sh.inc b/session-common.sh.inc
index ab7379d..2e9880c 100644
--- a/session-common.sh.inc
+++ b/session-common.sh.inc
@@ -23,8 +23,7 @@
readonly THIS_DIR="$(cd $(dirname ${BASH_SOURCE[0]}) ; pwd)"
readonly DEF_KEYMAP='us'
-readonly DEF_LOCALE='en_US'
-readonly DEF_LANGUAGE='en_US.UTF-8'
+readonly DEF_LANG='en_US.UTF-8'
readonly DEF_TRKEY='en'
readonly DEF_INSTALL='offline'
readonly DEF_PKG_SET='standard'
@@ -303,21 +302,22 @@ LogError() # (source_file func_name line_n)
## debugging helpers ##
+MOCK_INIT() { SetStateVar 'XKBMAP' ${DEF_KEYMAP} ; SetStateVar 'LANG' ${DEF_LANG} ; SetStateVar 'TR_KEY' ${DEF_TRKEY} ; SetStateVar 'INSTALL' ${DEF_INSTALL} ; }
MOCK_INITKEYRING() { SetStateVar 'KEYRING' 'ready' ; }
-MOCK_SELECTDEFAULTS() { SetStateVar 'INSTALL' ${DEF_INSTALL} ; SetStateVar 'BASE' ${DEF_PKG_SET} ; SetStateVar 'INIT' ${DEF_INIT} ; SetStateVar 'WMDE' ${DEF_WMDE} ; SetStateVar 'HOSTNAME' ${DEF_HOSTNAME} ; SetStateVar 'TIMEZONE' ${DEF_TIMEZONE} ; SetStateVar 'KEYMAP' $(GetStateVar 'XKBMAP' ${DEF_KEYMAP} ) ; SetStateVar 'LOCALES' $(GetStateVar 'LANG' ${DEF_LOCALE} ) ; SetStateVar 'LANGUAGE' $(GetStateVar 'LANG' ${DEF_LANGUAGE}) ; }
+MOCK_SELECTDEFAULTS() { SetStateVar 'INSTALL' ${DEF_INSTALL} ; SetStateVar 'BASE' ${DEF_PKG_SET} ; SetStateVar 'INIT' ${DEF_INIT} ; SetStateVar 'WMDE' ${DEF_WMDE} ; SetStateVar 'HOSTNAME' ${DEF_HOSTNAME} ; SetStateVar 'TIMEZONE' ${DEF_TIMEZONE} ; SetStateVar 'KEYMAP' $(GetStateVar 'XKBMAP') ; SetStateVar 'LOCALES' $(GetStateVar 'LANG') ; }
MOCK_SELECTDEFAULTS_NO() { : ; }
MOCK_SELECTLOGINS() { SetStateVar 'ROOT_PASS' ROOT_PASS ; MOCK_SELECTLOGINS_USER ; }
MOCK_SELECTLOGINS_USER() { SetStateVar 'USER_LOGIN' USER_LOGIN ; SetStateVar 'USER_PASS' USER_PASS ; }
MOCK_SELECTBASE() { SetStateVar 'INSTALL' ${DEF_INSTALL} ; SetStateVar 'BASE' ${DEF_PKG_SET} ; SetStateVar 'INIT' ${DEF_INIT} ; }
MOCK_SELECTBOOT() { SetStateVar 'BOOT' 'grub' ; }
MOCK_SELECTWMDE() { [[ -n "$(GetStateVar 'WMDE')" ]] || SetStateVar 'WMDE' 'cli' ; }
-MOCK_SELECTENV() { SetStateVar 'HOSTNAME' ${DEF_HOSTNAME} ; SetStateVar 'TIMEZONE' ${DEF_TIMEZONE} ; SetStateVar 'KEYMAP' $(GetStateVar 'XKBMAP' ${DEF_KEYMAP}) ; SetStateVar 'LOCALES' $(GetStateVar 'LANG' ${DEF_LOCALE}) ; SetStateVar 'LANGUAGE' $(GetStateVar 'LANG' ${DEF_LANGUAGE}) ; }
+MOCK_SELECTENV() { SetStateVar 'HOSTNAME' ${DEF_HOSTNAME} ; SetStateVar 'TIMEZONE' ${DEF_TIMEZONE} ; SetStateVar 'KEYMAP' $(GetStateVar 'XKBMAP') ; SetStateVar 'LOCALES' $(GetStateVar 'LANG') ; }
## translations for user-facing strings ##
source "${THIS_DIR}"/translations.sh.inc
-SetLang() { Lang=$( (( ${TRANSLATIONS[$1]} )) && echo $1 || echo 'en' ) ; }
+SetLang() { Lang=$( (( ${TRANSLATIONS[$1]} )) && echo $1 || echo ${DEF_TRKEY} ) ; }
-Lang='' ; SetLang $(GetStateVar 'TR_KEY' 'en') ;
+Lang='' ; SetLang $(GetStateVar 'TR_KEY' ${DEF_TRKEY}) ;
diff --git a/session-init.sh b/session-init.sh
index 2cdf42f..c9a0dca 100755
--- a/session-init.sh
+++ b/session-init.sh
@@ -40,8 +40,6 @@ readonly N_ITEMS=10
readonly LANG_TITLE="System language selection"
readonly LANG_PROMPT="Select your language:"
-readonly LANG_DEFAULT='en_US.UTF-8'
-readonly KEYMAP_DEFAULT='us'
readonly -a LANGUAGES=( $(sort -u "${THIS_DIR}"/LANGUAGES) )
readonly -a KEYMAPS=( $(sort -u "${THIS_DIR}"/KEYMAPS_X) )
readonly -a ALL_SESSIONS=( 'live' "Live desktop" \
@@ -59,8 +57,8 @@ esac
Language=$(GetStateVar 'LANG' '_UNDEFINED_')
if [[ "${Language}" == '_UNDEFINED_' ]]
-then Language=$( InitDlg "$LANG_TITLE" "$LANG_PROMPT" ${LANG_DEFAULT} "${LANGUAGES[@]}" )
- [[ "${Language}" == "" ]] && Language=${LANG_DEFAULT}
+then Language=$( InitDlg "$LANG_TITLE" "$LANG_PROMPT" ${DEF_LANG} "${LANGUAGES[@]}" )
+ [[ "${Language}" == "" ]] && Language=${DEF_LANG}
logger "$0: selected language='${Language}'"
@@ -78,8 +76,8 @@ fi
Keymap=$(GetStateVar 'XKBMAP' '_UNDEFINED_')
if [[ "${Keymap}" == '_UNDEFINED_' ]]
-then Keymap=$( InitDlg "${TR[dlg_keymap-${Lang}]}" "${TR[keymap-${Lang}]}" ${KEYMAP_DEFAULT} "${KEYMAPS[@]}" )
- [[ "${Keymap}" == "" ]] && Keymap=${KEYMAP_DEFAULT}
+then Keymap=$( InitDlg "${TR[dlg_keymap-${Lang}]}" "${TR[keymap-${Lang}]}" ${DEF_KEYMAP} "${KEYMAPS[@]}" )
+ [[ "${Keymap}" == "" ]] && Keymap=${DEF_KEYMAP}
logger "$0: selected keymap='${Keymap}'"