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.preinit.d/53-language

50 lines
2.3 KiB

#!/usr/bin/env bash
#
# Author: Dmitry Razumov <asmeron@ublinux.com>
# Copyright (c) 2021-2025 UBLinux <support@ublinux.com>
#
# Initial script for Linux UBLinux
# This script are launching before starting init from initrd script
# Current dir allways must be set to root (/)
# All system path must be relative, except initrd dirs
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || exit 0
DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
[[ -d /usr/lib/ublinux ]] && { ROOTFS= ; CMD_CHROOT= ; } || { [[ -d /sysroot ]] && ROOTFS="/sysroot" || ROOTFS="."; CMD_CHROOT="chroot ${ROOTFS}"; }
SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
debug_mode "$0" "$@"
SYSCONF="${ROOTFS}${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/keyboard; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/locale; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
NEWLANG=$(cmdline_value lang)
[[ -z ${NEWLANG} ]] || { LOCALE+=",${NEWLANG}"; LANG="${NEWLANG}"; }
for I_LOCALE in ${LOCALE//,/ }; do
sed -i "s/^#${I_LOCALE} /${I_LOCALE} /g" ${ROOTFS}/etc/locale.gen
done
${CMD_CHROOT} env LANG=${LANG} locale > ${ROOTFS}/etc/locale.conf 2>/dev/null
[[ -n ${FORCE_LOCARCHIVE} ]] && FORCEGEN=1
[[ ! -f ${ROOTFS}/usr/lib/locale/locale-archive ]] && FORCEGEN=1
LOCALE_CONF=${LOCALE//-/}; LOCALE_CONF=${LOCALE_CONF,,}; LOCALE_CONF=${LOCALE_CONF//,/$'\n'}; LOCALE_CONF=$(sort -fu <<< ${LOCALE_CONF})
LOCALE_SYSTEM=$(${CMD_CHROOT} localedef --list-archive | sort -fu); LOCALE_SYSTEM=${LOCALE_SYSTEM,,}
[[ "${LOCALE_CONF}" == "${LOCALE_SYSTEM}" ]] || FORCEGEN=1
[[ -n ${FORCEGEN} ]] && ${CMD_CHROOT} locale-gen &>/dev/null
#; unset LANG; source /etc/profile.d/locale.sh"
# Если имеются языкозависимые файлы, то копируем в корень
[[ -d ${ROOTFS}/usr/share/ublinux/langs/${LANG} ]] && cp -pfr ${ROOTFS}/usr/share/ublinux/langs/${LANG}/* ${ROOTFS}/
[[ -z ${CONSOLE_FONT} ]] || echo FONT=${CONSOLE_FONT} > ${ROOTFS}/etc/vconsole.conf
[[ -z ${CONSOLE_KEYMAP} ]] || echo KEYMAP=${CONSOLE_KEYMAP} >> ${ROOTFS}/etc/vconsole.conf
[[ -z ${CONSOLE_KEYMAP_TOGGLE} ]] || echo KEYMAP_TOGGLE="${CONSOLE_KEYMAP_TOGGLE}" >> ${ROOTFS}/etc/vconsole.conf