#!/usr/bin/bash
#
# Author: Dmitry Razumov <asmeron@ublinux.com>
# Copyright (c) 2021-2025 UBLinux <support@ublinux.com>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
#
# Used as a source

ENABLED=yes
if [[ ${ENABLED} == "yes" ]]; then
    DEFAULT_CONF=$(< /usr/lib/ublinux/default)
    [[ ${DEFAULT_CONF} =~ (^|$'\n')[[:blank:]]*SYSCONF=([^$|$'\n']+)[[:blank:]]*($|$'\n') ]] && SYSCONF=${BASH_REMATCH[2]} || SYSCONF="/etc/sysconf"

    [[ -f ${SYSCONF}/locale && $(< ${SYSCONF}/locale) =~ (^|$'\n')[[:blank:]]*LANG=\"?\'?([^$'\n'\"\']+)\"?\'?[[:blank:]]*($'\n'|$) ]] && CONF_LANG=${BASH_REMATCH[2]} || CONF_LANG="en_US.UTF-8"

    ## Если в профиле пользователя имеется файл "${XDG_CONFIG_HOME}/locale.conf" или "${HOME}/.config/locale.conf",
    ## то установить указанною локаль на терущую сессию и обновить пути XDG каталогов под локаль
    set_user_locale(){
        local ARG_LANG=$1
        if [[ -f ${ARG_LANG} ]]; then
            [[ $(< "${ARG_LANG}") =~ (^|$'\n')LANG=([^$|$'\n']+)($|$'\n') ]] && LANG_USER=${BASH_REMATCH[2],,}
        elif [[ -n ${ARG_LANG} ]]; then
            LANG_USER=${ARG_LANG}
        else
            return 0
        fi
        LANG_USER=${LANG_USER//-/}; LANG_USER=${LANG_USER,,}
        LOCALEDEF_LIST="$(localedef --list-archive)"
        LOCALEDEF_LIST="${LOCALEDEF_LIST//-/}"; LOCALEDEF_LIST="${LOCALEDEF_LIST,,}"
        if [[ "${LOCALEDEF_LIST}" =~ (^|$'\n')"${LANG_USER}"($|$'\n') ]]; then
            LANG=
            unset LANG
            . /etc/profile.d/locale.sh
            #if [[ $(readlink -fq /usr/bin/init 2>/dev/null) =~ "lib/systemd/systemd"$ ]]; then
    	    #	if [[ -n ${SUDO_USER} ]]; then
    	    #	    USER=${SUDO_USER}
    	    #	elif [[ -n ${PKEXEC_UID} ]]; then
    	    #	    USER=$(getent passwd ${PKEXEC_UID} | cut -d: -f1)
    	    #	fi
            #    systemctl ${USER:+-M ${USER}@} --user import-environment LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY \
            #    LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION
            #    #systemctl --user daemon-reexec
            #fi
            # Даём пользователю выбор оставлять старые имена или создать новые под локализацию
            if [[ -z ${SUDO_USER} && -z ${PKEXEC_UID} ]]; then
        	[[ -f /etc/xdg/autostart/user-dirs-update-gtk.desktop ]] || { command -v xdg-user-dirs-update &>/dev/null && xdg-user-dirs-update --force; }
    	    fi
        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"
    elif [[ ${LANG} != ${CONF_LANG} ]]; then
        set_user_locale ${CONF_LANG}
    fi
fi
