diff --git a/lang_locale_fix.sh b/lang_locale_fix.sh new file mode 100644 index 0000000..a3050b6 --- /dev/null +++ b/lang_locale_fix.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash + +set -euo pipefail + +MAIN_LANG="en_US.UTF-8" +CTYPE_LANG="ru_RU.UTF-8" + +if [[ "${EUID}" -ne 0 ]]; then + echo "Run this script as root: sudo bash $0" + exit 1 +fi + +ensure_locale_in_locale_gen() { + local locale_line="$1" + local locale_file="/etc/locale.gen" + + if grep -Eq "^[#[:space:]]*${locale_line//./\\.}[[:space:]]*$" "$locale_file"; then + sed -i "s|^[#[:space:]]*\\(${locale_line//./\\.}\\)[[:space:]]*$|\\1|" "$locale_file" + else + echo "$locale_line" >> "$locale_file" + fi +} + +echo "Configuring UTF-8 locales..." + +ensure_locale_in_locale_gen "en_US.UTF-8 UTF-8" +ensure_locale_in_locale_gen "ru_RU.UTF-8 UTF-8" + +locale-gen + +update-locale LANG="$MAIN_LANG" LC_CTYPE="$CTYPE_LANG" + +echo +echo "Done." +echo "You should re-login to the shell or reboot for a clean session." +echo +echo "Current settings from /etc/default/locale:" +cat /etc/default/locale || true +echo +echo "Available locales:" +locale -a | grep -E 'en_US|ru_RU' || true +echo +echo "After re-login, 'locale' should look roughly like this:" +echo "LANG=${MAIN_LANG}" +echo "LC_CTYPE=${CTYPE_LANG}"