Adding upstream version 1.157.1.
[live-boot-grml.git] / scripts / live-bottom / 14locales
index bdb1d8b..6348338 100755 (executable)
@@ -20,65 +20,109 @@ esac
 
 # live-initramfs header
 
+if [ -n "${NOLOCALES}" ]
+then
+       exit 0
+fi
+
 . /scripts/live-functions
 
-log_begin_msg "Setting up locales..."
+log_begin_msg "Setting up locales"
+
+# Cosmetic line wrapping for output of local-gen
+echo
 
 # live-initramfs script
 
-if [ -e /root/etc/default/locale ]; then
-    grep_file=/root/etc/default/locale
-elif [ -e /root/etc/environment ]; then # Old locales policy
-    grep_file=/root/etc/environment
+if [ -e /root/etc/default/locale ]
+then
+       grep_file=/root/etc/default/locale
+elif [ -e /root/etc/environment ]
+then
+       # Old locales policy
+       grep_file=/root/etc/environment
 fi
 
-if [ -n "${grep_file}" ]; then
-    # use rootfs configured locale
-    locale=$(grep -s 'LANG=' ${grep_file} | sed s/'LANG='// | tr -d '"' )
-else
-    grep_file=/root/etc/default/locale
+if [ -n "${grep_file}" ]
+then
+       # use rootfs configured locale
+       locale=$(grep -s 'LANG=' ${grep_file} | sed s/'LANG='// | tr -d '"' )
 fi
 
-if [ -n "${LOCALE}" ]; then
-    locale="${LOCALE}"
-    set_locale="true"
+if [ -n "${LOCALE}" ]
+then
+       locale="${LOCALE}"
+       set_locale="true"
 fi
 
-if [ -z "${locale}" ]; then
-    # Set a default one
-    locale=en_US.UTF-8
-    set_locale="true"
+if [ -z "${locale}" ]
+then
+       # Set a default one
+       locale=en_US.UTF-8
+       set_locale="true"
 fi
 
-if [ "${set_locale}" ]; then
-    if echo "${locale}" | grep -sqE '^[[:lower:]]{2}$' ; then
-        # input is like "locale=it", so we will convert and setup also the keyboard if not already set
-        if [ -z "${KBD}" ]; then
-            # FIXME: look if this keyb is supported
-            KBD="${locale}"
-            really_export KBD
-        fi
-        uploc=$(echo "${locale}" | tr '[a-z]' '[A-Z]')
-        locale="${locale}_${uploc}.UTF-8"
-    fi
-    LANG=$(grep "^${locale}" /root/usr/share/i18n/SUPPORTED | grep UTF-8 |sed -e 's, .*,,' -e q)
-    if [ -z "${LANG}" ]; then
-        log_warning_message "Locale ${locale} is unsupported."
-        locale="en_US.UTF-8"
-        LANG="${locale}"
-    fi
-
-    really_export LANG
-
-    if [ "${BUILD_SYSTEM}" = "Ubuntu" ]; then
-        printf 'LANG="%s"\n' "${LANG}" > "${grep_file}"
-        chroot /root /usr/sbin/locale-gen "${LANG}"
-        live-preseed /root debian-installer/locale "${locale}"
-    else
-        printf 'LANG=%s\n' "${LANG}" > "${grep_file}"
-        printf '%s UTF-8\n' "${LANG}" > /root/etc/locale.gen
-        chroot /root /usr/sbin/locale-gen
-    fi
+if [ "${set_locale}" ]
+then
+       if echo "${locale}" | grep -sqE '^[[:lower:]]{2}$'
+       then
+               # input is like "locale=it", so we will convert and setup also the keyboard if not already set
+               if [ -z "${KBD}" ]
+               then
+                       # FIXME: look if this keyb is supported
+                       KBD="${locale}"
+                       really_export KBD
+               fi
+
+               uploc=$(echo "${locale}" | tr '[a-z]' '[A-Z]')
+               locale="${locale}_${uploc}.UTF-8"
+       fi
+
+       LANG=
+       language="$(echo ${locale} | cut -d. -f1)"
+       eval $(awk '/^'"${locale}"'/ { print "LANG=" $1 " codepage=" $2; exit; }' /root/usr/share/i18n/SUPPORTED)
+
+       if [ -z "${LANG}" ]
+       then
+               # Try and fallback to another codepage for this language.
+               eval $(awk '/^'"${language}"'/ { print "LANG=" $1 " codepage=" $2; exit; }' /root/usr/share/i18n/SUPPORTED)
+
+               if [ -n "${LANG}" ]
+               then
+                       log_warning_msg "Choosing locale '${LANG}' as '${locale}' is unsupported."
+               fi
+       fi
+
+       if [ -z "${LANG}" ]
+       then
+               log_warning_msg "Locale '${locale}' is unsupported."
+               codepage="UTF-8"
+               language="en_US"
+               locale="${language}.${codepage}"
+               LANG="${language}.${codepage}"
+       fi
+
+       if [ -d /root/etc/default/kdm.d/ ]
+       then
+               printf 'LANGUAGE=%s\n' "${LANG}" >> /root/etc/default/kdm.d/live-autologin
+       elif [ -f /root/etc/kde3/kdm/kdmrc ]
+       then
+               sed -i -r -e "s/#Language=.*/Language=${language}/" \
+                       /root/etc/kde3/kdm/kdmrc
+       fi
+
+       really_export LANG
+
+       printf 'LANG="%s"\n' "${LANG}" >> /root/etc/default/locale
+       printf 'LANG="%s"\n' "${LANG}" >> /root/etc/environment
+       printf '%s %s\n' "${LANG}" "${codepage}" > /root/etc/locale.gen
+
+       if [ -z "${SILENT}" ]
+       then
+               chroot /root /usr/sbin/locale-gen
+       else
+               chroot /root /usr/sbin/locale-gen > /dev/null 2>&1
+       fi
 fi
 
 log_end_msg