You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ublinux-init/ublinux/rc.xorg/03-profile-locale

30 lines
1.3 KiB

#!/usr/bin/env bash
#
# Author: Dmitry Razumov <asmeron@ublinux.com>
# Copyright (c) 2021-2025 UBLinux <support@ublinux.com>
#
# Used as a source
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
## Если в профиле пользователя имеется файл "${XDG_CONFIG_HOME}/locale.conf" или "${HOME}/.config/locale.conf",
## то установить указанною локаль на терущую сессию и обновить пути XDG каталогов под локаль
set_user_locale(){
[[ -n $1 ]] && LOCALE_USER_FILE=$1 || return 0
[[ $(< "${LOCALE_USER_FILE}") =~ (^|$'\n')LANG=([^$|$'\n']+)($|$'\n') ]] && LANG_USER=${BASH_REMATCH[2],,}
LOCALEDEF_LIST="$(localedef --list-archive)"
LOW_LOCALEDEF_LIST="${LOCALEDEF_LIST,,}"
if [[ "${LOW_LOCALEDEF_LIST//-/}" =~ (^|$'\n')"${LANG_USER//-/}"($|$'\n') ]]; then
unset LANG
source /etc/profile.d/locale.sh
command -v xdg-user-dirs-update &>/dev/null && xdg-user-dirs-update --force
fi
}
if [[ -n "${XDG_CONFIG_HOME}" && -r "${XDG_CONFIG_HOME}/locale.conf" ]]; then
set_user_locale "${XDG_CONFIG_HOME}/locale.conf"
elif [[ -n "${HOME}" && -r "${HOME}/.config/locale.conf" ]]; then
set_user_locale "${HOME}/.config/locale.conf"
fi