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>
|
|
|
|
_ANSWER="/tmp/.locale"
|
2023-03-02 17:58:58 +01:00
|
|
|
_TITLE="Archboot Arch Linux --> System Wide Locale Setting"
|
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 $?
|
|
|
|
}
|
|
|
|
|
|
|
|
_abort()
|
|
|
|
{
|
2023-03-02 18:11:17 +01:00
|
|
|
_dialog --yesno "Abort Arch Linux System Wide Locale Setting?" 5 60 || return 0
|
2023-02-27 21:18:25 +01:00
|
|
|
[[ -e /tmp/.locale-running ]] && rm /tmp/.locale-running
|
2023-03-03 07:15:47 +01:00
|
|
|
[[ -e /tmp/.locale ]] && rm /tmp/.locale
|
2023-03-03 07:14:07 +01:00
|
|
|
clear
|
2023-02-27 21:18:25 +01:00
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
_do_locale() {
|
2023-03-03 08:19:32 +01:00
|
|
|
_dialog --infobox "Setting System Wide Locale ${_LOCALE}.UTF-8..." 3 50
|
2023-02-27 21:18:25 +01:00
|
|
|
echo "LANG=${_LOCALE}.UTF-8" > /etc/locale.conf
|
2023-02-27 21:29:06 +01:00
|
|
|
echo "LANG=${_LOCALE}.UTF-8" > /tmp/.locale
|
2023-02-27 21:18:25 +01:00
|
|
|
echo LC_COLLATE=C >> /etc/locale.conf
|
2023-03-01 14:28:43 +01:00
|
|
|
localectl set-locale "${_LOCALE}.UTF-8" &>/dev/null
|
2023-03-01 15:12:13 +01:00
|
|
|
echo "${_LOCALE}.UTF-8 UTF-8" >> /etc/locale.gen
|
2023-03-01 14:28:43 +01:00
|
|
|
locale-gen &>/dev/null
|
2023-02-27 21:18:25 +01:00
|
|
|
sleep 2
|
|
|
|
}
|
|
|
|
|
|
|
|
_set_locale() {
|
|
|
|
_LOCALE=""
|
2023-03-04 14:31:42 +01:00
|
|
|
_LOCALES="en_US English de_DE German es_ES Spanish fr_FR French pt_PT Portuguese ar_IN Arabic hi_IN Indian ja_JP Japanese ru_RU Russian zh_CN Chinese"
|
2023-02-27 21:18:25 +01:00
|
|
|
_CANCEL=""
|
|
|
|
#shellcheck disable=SC2086
|
|
|
|
_dialog --menu "Select A System Wide Locale:" 13 35 8 ${_LOCALES} 2>${_ANSWER} || _abort
|
|
|
|
_LOCALE=$(cat ${_ANSWER})
|
2023-03-02 18:09:28 +01:00
|
|
|
if [[ -n ${_LOCALE} ]]; then
|
2023-03-04 14:31:42 +01:00
|
|
|
_dialog --yesno "Do you want to use ${_LOCALE}.UTF-8 as System Wide Locale?" 10 60 || _LOCALE=""
|
2023-03-02 18:05:09 +01:00
|
|
|
fi
|
2023-02-27 21:18:25 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
if [[ -e /tmp/.locale-running ]]; then
|
|
|
|
echo "System Wide Locale Setting already runs on a different console!"
|
2023-02-27 21:29:06 +01:00
|
|
|
echo "Please remove /tmp/.locale-running first!"
|
2023-02-27 21:18:25 +01:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
: >/tmp/.locale-running
|
|
|
|
while [[ -z ${_LOCALE} ]]; do
|
|
|
|
_set_locale
|
|
|
|
done
|
|
|
|
_do_locale
|
|
|
|
[[ -e /tmp/.locale-running ]] && rm /tmp/.locale-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:
|