2023-02-27 21:18:25 +01:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
# written by Tobias Powalowski <tpowa@archlinux.org>
|
2023-07-14 10:22:11 +02:00
|
|
|
_ANSWER="/tmp/.localize"
|
2023-06-29 19:49:08 +02:00
|
|
|
_RUNNING_ARCH="$(uname -m)"
|
2023-07-14 10:25:04 +02:00
|
|
|
_TITLE="Archboot ${_RUNNING_ARCH} | Arch Linux Setup | Localization"
|
2023-02-27 21:18:25 +01:00
|
|
|
# _dialog()
|
|
|
|
# an el-cheapo dialog wrapper
|
|
|
|
#
|
|
|
|
# parameters: see dialog(1)
|
|
|
|
# returns: whatever dialog did
|
|
|
|
_dialog() {
|
|
|
|
dialog --backtitle "${_TITLE}" --aspect 15 "$@"
|
|
|
|
return $?
|
|
|
|
}
|
|
|
|
|
2023-07-13 16:03:02 +02:00
|
|
|
_abort() {
|
2023-07-14 10:52:49 +02:00
|
|
|
_dialog --yesno "Abort Arch Linux Localization?" 5 40 || return 0
|
2023-07-14 10:22:11 +02:00
|
|
|
[[ -e /tmp/.localize-running ]] && rm /tmp/.localize-running
|
|
|
|
[[ -e /tmp/.localize ]] && rm /tmp/.localize
|
2023-03-03 07:14:07 +01:00
|
|
|
clear
|
2023-02-27 21:18:25 +01:00
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
2023-07-14 10:22:11 +02:00
|
|
|
_localize_menu() {
|
2023-02-27 21:18:25 +01:00
|
|
|
_LOCALE=""
|
2023-03-05 14:05:51 +01:00
|
|
|
_LOCALES="en_US English de_DE German es_ES Spanish fr_FR French pt_PT Portuguese OTHER Other"
|
2023-03-05 14:37:59 +01:00
|
|
|
_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"
|
2023-02-27 21:18:25 +01:00
|
|
|
_CANCEL=""
|
|
|
|
#shellcheck disable=SC2086
|
2023-07-14 10:22:11 +02:00
|
|
|
_dialog --title " Locale Menu " --menu "" 12 35 5 ${_LOCALES} 2>${_ANSWER} || _abort
|
2023-02-27 21:18:25 +01:00
|
|
|
_LOCALE=$(cat ${_ANSWER})
|
2023-03-05 14:05:51 +01:00
|
|
|
if [[ "${_LOCALE}" == "OTHER" ]]; then
|
|
|
|
#shellcheck disable=SC2086
|
2023-07-14 10:22:11 +02:00
|
|
|
_dialog --title " Other Locale Menu " --menu "" 17 35 11 ${_OTHER_LOCALES} 2>${_ANSWER} || _abort
|
2023-03-05 14:05:51 +01:00
|
|
|
_LOCALE=$(cat ${_ANSWER})
|
|
|
|
fi
|
2023-02-27 21:18:25 +01:00
|
|
|
}
|
|
|
|
|
2023-07-14 10:22:11 +02:00
|
|
|
_localize() {
|
2023-07-14 10:25:04 +02:00
|
|
|
_dialog --infobox "Localization set to ${_LOCALE}.UTF-8..." 3 50
|
2023-07-14 10:22:11 +02:00
|
|
|
echo "LANG=${_LOCALE}.UTF-8" > /etc/localize.conf
|
|
|
|
echo "LANG=${_LOCALE}.UTF-8" > /tmp/.localize
|
|
|
|
echo LC_COLLATE=C >> /etc/localize.conf
|
2023-07-14 10:51:10 +02:00
|
|
|
localectl set-localize "${_LOCALE}.UTF-8" &>/dev/null
|
2023-07-14 10:22:11 +02:00
|
|
|
sed -i -e "s:^[a-z]:#&:g" /etc/localize.gen
|
|
|
|
sed -i -e "s:^#${_LOCALE}.UTF-8:${_LOCALE}.UTF-8:g" /etc/localize.gen
|
2023-07-14 10:51:10 +02:00
|
|
|
locale-gen &>/dev/null
|
2023-07-14 10:22:11 +02:00
|
|
|
sleep 2
|
|
|
|
}
|
|
|
|
|
|
|
|
if [[ -e /tmp/.localize-running ]]; then
|
2023-07-14 10:25:34 +02:00
|
|
|
echo "localize already runs on a different console!"
|
2023-07-14 10:22:11 +02:00
|
|
|
echo "Please remove /tmp/.localize-running first!"
|
2023-02-27 21:18:25 +01:00
|
|
|
exit 1
|
|
|
|
fi
|
2023-07-14 10:22:11 +02:00
|
|
|
: >/tmp/.localize-running
|
2023-02-27 21:18:25 +01:00
|
|
|
while [[ -z ${_LOCALE} ]]; do
|
2023-07-14 10:22:11 +02:00
|
|
|
_localize_menu
|
2023-02-27 21:18:25 +01:00
|
|
|
done
|
2023-07-14 10:22:11 +02:00
|
|
|
_localize
|
|
|
|
[[ -e /tmp/.localize-running ]] && rm /tmp/.localize-running
|
2023-03-03 07:14:07 +01:00
|
|
|
clear
|
2023-02-27 21:18:25 +01:00
|
|
|
exit 0
|
|
|
|
# vim: set ts=4 sw=4 et:
|