archboot/usr/bin/archboot-localize.sh

90 lines
3.2 KiB
Bash
Raw Normal View History

2023-02-27 21:18:25 +01:00
#!/usr/bin/env bash
2023-08-11 17:19:18 +02:00
# SPDX-License-Identifier: GPL-3.0-or-later
2023-02-27 21:18:25 +01:00
# written by Tobias Powalowski <tpowa@archlinux.org>
2023-09-03 22:02:48 +02:00
. /usr/lib/archboot/common.sh
2023-07-17 08:48:21 +02:00
_TITLE="Archboot ${_RUNNING_ARCH} | Basic Setup | Localization"
2023-02-27 21:18:25 +01:00
2023-07-21 15:15:42 +02:00
_locale_menu() {
2023-02-27 21:18:25 +01:00
_LOCALE=""
2023-07-21 15:19:41 +02:00
while [[ -z "${_LOCALE}" ]]; do
_LOCALE=""
_LOCALES="en_US English de_DE German es_ES Spanish fr_FR French pt_PT Portuguese OTHER Other"
_OTHER_LOCALES="be_BY Belarusian bg_BG Bulgarian cs_CZ Czech da_DK Dansk fi_FI Finnish el_GR Greek hu_HU Hungarian it_IT Italian lt_LT Lithuanian lv_LV Latvian mk_MK Macedonian nl_NL Dutch nn_NO Norwegian pl_PL Polish ro_RO Romanian ru_RU Russian sk_SK Slovak sr_RS Serbian sv_SE Swedish uk_UA Ukrainian"
_CANCEL=""
2023-03-05 14:05:51 +01:00
#shellcheck disable=SC2086
2023-09-06 09:27:01 +02:00
_dialog --cancel-label "${_LABEL}" --title " Locale " --menu "" 12 35 5 ${_LOCALES} 2>${_ANSWER} || _abort
2023-07-21 15:25:22 +02:00
_LOCALE=$(cat "${_ANSWER}")
2023-07-21 15:19:41 +02:00
if [[ "${_LOCALE}" == "OTHER" ]]; then
#shellcheck disable=SC2086
2023-09-06 09:09:26 +02:00
if _dialog --title " Other Locale " --menu "" 17 35 11 ${_OTHER_LOCALES} 2>${_ANSWER}; then
2023-07-21 15:19:41 +02:00
_LOCALE=$(cat ${_ANSWER})
else
_LOCALE=""
fi
2023-07-14 16:44:30 +02:00
fi
2023-07-21 15:19:41 +02:00
done
2023-02-27 21:18:25 +01:00
}
2023-07-21 14:50:27 +02:00
_vconsole_keymap() {
2023-07-21 14:59:02 +02:00
_LIST_MAPS="localectl list-keymaps --no-pager"
2023-07-21 14:50:27 +02:00
_KEYMAPS="us de es fr pt be bg br ca cz dk et fi gr hu it l lv mk nl no pl ro ru sk sr sv uk"
2023-07-21 15:25:22 +02:00
_LOW_LOCALE="$(echo "${_LOCALE}" | tr "[:upper:]" "[:lower:]")"
2023-07-21 14:50:27 +02:00
_KEYMAP=""
2023-07-21 14:59:02 +02:00
for i in ${_KEYMAPS}; do
2023-07-21 15:02:34 +02:00
echo "${_LOW_LOCALE}" | grep -q "${i}" && _KEYMAP="${i}"
2023-07-21 14:50:27 +02:00
[[ -n ${_KEYMAP} ]] && break
done
2023-07-21 14:59:02 +02:00
_KEYMAPS=""
2023-09-22 20:55:07 +02:00
if $(${_LIST_MAPS} | grep "^${_KEYMAP}" | grep "nodeadkeys"); then
_KEYMAP="$(${_LIST_MAPS} | grep "^${_KEYMAP}" | grep "nodeadkeys")"
2023-09-22 21:01:35 +02:00
return
2023-09-22 20:55:07 +02:00
elif $(${_LIST_MAPS} | grep "^${_KEYMAP}" | grep "latin1$"); then
_KEYMAP="$(${_LIST_MAPS} | grep "^${_KEYMAP}" | grep "latin1$")"
2023-09-22 21:01:35 +02:00
return
2023-09-22 20:55:07 +02:00
elif $(${_LIST_MAPS} | grep "^${_KEYMAP}$"); then
_KEYMAP="$(${_LIST_MAPS} | grep "^${_KEYMAP}$")"
2023-09-22 21:01:35 +02:00
return
2023-07-21 14:59:02 +02:00
fi
2023-07-21 14:50:27 +02:00
}
2023-08-30 21:51:43 +02:00
_localize_task() {
2023-08-30 21:41:56 +02:00
echo "LANG=${_LOCALE}.UTF-8" > /etc/locale.conf
echo "LANG=${_LOCALE}.UTF-8" > /.localize
echo LC_COLLATE=C >> /etc/locale.conf
localectl set-locale "${_LOCALE}.UTF-8" &>"${_NO_LOG}"
sed -i -e "s:^[a-z]:#&:g" /etc/locale.gen
sed -i -e "s:^#${_LOCALE}.UTF-8:${_LOCALE}.UTF-8:g" /etc/locale.gen
locale-gen &>"${_NO_LOG}"
2023-07-21 15:07:04 +02:00
# Terminus font size detection
if grep -q '^FONT=.*32' /etc/vconsole.conf; then
_FONT="ter-v32n"
else
_FONT="ter-v16n"
fi
2023-07-21 14:50:27 +02:00
echo KEYMAP="${_KEYMAP}" > /etc/vconsole.conf
echo FONT="${_FONT}" >> /etc/vconsole.conf
systemctl restart systemd-vconsole-setup
2023-08-30 21:35:02 +02:00
rm /.archboot
2023-07-21 14:50:27 +02:00
}
2023-08-30 21:35:02 +02:00
_run() {
: >/.archboot
2023-08-30 21:51:43 +02:00
_localize_task &
2023-08-31 08:56:01 +02:00
_progress_wait "0" "99" "Using ${_LOCALE}.UTF-8 and ${_KEYMAP}..." "0.25"
2023-08-01 19:12:57 +02:00
_progress "100" "Localization completed successfully."
2023-08-01 19:58:22 +02:00
sleep 2
2023-08-01 19:12:57 +02:00
}
2023-07-21 15:07:04 +02:00
_localize() {
2023-08-30 21:41:56 +02:00
_run | _dialog --title " Localization " --no-mouse --gauge "Using ${_LOCALE}.UTF-8 and ${_KEYMAP}..." 6 50 0
2023-07-21 15:07:04 +02:00
}
2023-07-17 09:18:53 +02:00
_check
2023-07-21 15:21:04 +02:00
while [[ -z "${_LOCALE}" ]]; do
2023-07-21 15:15:42 +02:00
_locale_menu
2023-07-21 15:04:33 +02:00
_vconsole_keymap
2023-02-27 21:18:25 +01:00
done
_localize
2023-07-17 09:18:53 +02:00
_cleanup
2023-02-27 21:18:25 +01:00
# vim: set ts=4 sw=4 et: