live-langset-data/langset.sh

44 lines
1.3 KiB
Bash
Raw Normal View History

#!/bin/sh
lang=en_US
for o in $(cat /proc/cmdline); do
case $o in
lang=*)
eval $o
;;
esac
done
# we need the _NOT so there is always a field 2
Country=$(echo "$lang"_NOT | cut -d_ -f2)
Language=$(echo "$lang" | cut -d_ -f1)
file="/usr/share/langset/$Language""_$Country"
if ! test -f "$file"; then
file="/usr/share/langset/$Language"
fi
# Read all values of the langset data files
. "$file"
# Apply all options
[ -n "$RC_LC_MESSAGES" ] || RC_LC_MESSAGES=$RC_LANG
[ -z "$RC_LANG" ] || localectl set-locale LANG=$RC_LANG LC_MESSAGES=$RC_LC_MESSAGES
[ -z "$CONSOLE_FONT" ] || echo "FONT=$CONSOLE_FONT" >> /etc/vconsole.conf
[ -z "$CONSOLE_SCREENMAP" ] || echo "FONT_MAP=$CONSOLE_SCREENMAP" >> /etc/vconsole.conf
[ -z "$CONSOLE_UNICODEMAP" ] || echo "FONT_UNIMAP=$CONSOLE_UNICODEMAP" >> /etc/vconsole.conf
[ -z "$KEYTABLE" ] || localectl set-keymap $KEYTABLE
[ -n "$TIMEZONE" ] && [ -f "/usr/share/zoneinfo/$TIMEZONE" ] && rm -f /etc/localtime && ln -s /usr/share/zoneinfo/$TIMEZONE /etc/localtime
if [ -n "$XkbLayout" ] && [ -n "$XkbModel" ] && [ -n "$XkbVariant" ] && [ -n "$XkbOptions" ]; then
localectl set-x11-keymap "$XkbLayout" "$XkbModel" "$XkbVariant" "$XkbOptions"
fi
echo "$Language""_$Country" > /var/lib/zypp/RequestedLocales
# Apply the settings
systemctl restart systemd-vconsole-setup