diff --git a/lib/chroot-buildpackages.sh b/lib/chroot-buildpackages.sh index 7ff3ba4ad0..ca1896104e 100644 --- a/lib/chroot-buildpackages.sh +++ b/lib/chroot-buildpackages.sh @@ -82,9 +82,10 @@ create_chroot() APT::Install-Recommends "0"; APT::Install-Suggests "0"; EOF + [[ -f "${target_dir}"/etc/locale.gen ]] && \ - sed -i "s/^# en_US.UTF-8/en_US.UTF-8/" "${target_dir}"/etc/locale.gen - chroot "${target_dir}" /bin/bash -c "locale-gen; update-locale LANG=en_US:en LC_ALL=en_US.UTF-8" + sed -i '/en_US.UTF-8/s/^# //g' "${target_dir}"/etc/locale.gen + chroot "${target_dir}" /bin/bash -c "locale-gen; update-locale --reset LANG=en_US.UTF-8" printf '#!/bin/sh\nexit 101' > "${target_dir}"/usr/sbin/policy-rc.d chmod 755 "${target_dir}"/usr/sbin/policy-rc.d diff --git a/lib/debootstrap.sh b/lib/debootstrap.sh index cdb43ff98c..4f92765ee3 100644 --- a/lib/debootstrap.sh +++ b/lib/debootstrap.sh @@ -251,14 +251,14 @@ create_rootfs_cache() chmod 755 $SDCARD/sbin/start-stop-daemon # stage: configure language and locales - display_alert "Configuring locales" "$DEST_LANG" "info" - - [[ -f $SDCARD/etc/locale.gen ]] && sed -i "s/^# $DEST_LANG/$DEST_LANG/" $SDCARD/etc/locale.gen - eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "locale-gen C.UTF-8"' ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} - eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "locale-gen en_US.UTF-8"' ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} - eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "locale-gen $DEST_LANG"' ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} - eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "update-locale LANG=$DEST_LANG LANGUAGE=$DEST_LANG LC_MESSAGES=$DEST_LANG"' \ - ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} + display_alert "Generatining default locale" "info" + if [[ -f $SDCARD/etc/locale.gen ]]; then + sed -i '/ C.UTF-8/s/^# //g' $SDCARD/etc/locale.gen + sed -i '/en_US.UTF-8/s/^# //g' $SDCARD/etc/locale.gen + fi + eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "locale-gen"' ${OUTPUT_VERYSILENT:+' >/dev/null 2>&1'} + eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "update-locale --reset LANG=en_US.UTF-8"' \ + ${OUTPUT_VERYSILENT:+' >/dev/null 2>&1'} if [[ -f $SDCARD/etc/default/console-setup ]]; then sed -e 's/CHARMAP=.*/CHARMAP="UTF-8"/' -e 's/FONTSIZE=.*/FONTSIZE="8x16"/' \ diff --git a/lib/distributions.sh b/lib/distributions.sh index 49e00a8273..ee0180fede 100644 --- a/lib/distributions.sh +++ b/lib/distributions.sh @@ -633,6 +633,17 @@ install_distribution_specific() # rc.local is not existing but one might need it install_rclocal + # configure language and locales + display_alert "Configuring locales" "$DEST_LANG" "info" + if [[ -f $SDCARD/etc/locale.gen ]]; then + [ -n "$DEST_LANG" ] && sed -i "s/^# $DEST_LANG/$DEST_LANG/" $SDCARD/etc/locale.gen + sed -i '/ C.UTF-8/s/^# //g' $SDCARD/etc/locale.gen + sed -i '/en_US.UTF-8/s/^# //g' $SDCARD/etc/locale.gen + fi + eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "locale-gen"' ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} + [ -n "$DEST_LANG" ] && eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "update-locale --reset LANG=$DEST_LANG"' \ + ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} + ;; bullseye) @@ -645,7 +656,16 @@ install_distribution_specific() [[ $(grep -L "VERSION_ID=" "${SDCARD}"/etc/os-release) ]] && echo 'VERSION_ID="11"' >> "${SDCARD}"/etc/os-release [[ $(grep -L "VERSION=" "${SDCARD}"/etc/os-release) ]] && echo 'VERSION="11 (bullseye)"' >> "${SDCARD}"/etc/os-release - + # configure language and locales + display_alert "Configuring locales" "$DEST_LANG" "info" + if [[ -f $SDCARD/etc/locale.gen ]]; then + [ -n "$DEST_LANG" ] && sed -i "s/^# $DEST_LANG/$DEST_LANG/" $SDCARD/etc/locale.gen + sed -i '/ C.UTF-8/s/^# //g' $SDCARD/etc/locale.gen + sed -i '/en_US.UTF-8/s/^# //g' $SDCARD/etc/locale.gen + fi + eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "locale-gen"' ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} + [ -n "$DEST_LANG" ] && eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "update-locale --reset LANG=$DEST_LANG"' \ + ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} ;; focal|jammy) @@ -695,6 +715,12 @@ install_distribution_specific() # disable conflicting services chroot "${SDCARD}" /bin/bash -c "systemctl --no-reload mask ondemand.service >/dev/null 2>&1" + # configure language and locales + display_alert "Configuring locales" "$DEST_LANG" "info" + eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "locale-gen en_US.UTF-8 $DEST_LANG"' ${OUTPUT_VERYSILENT:+' >/dev/null 2>&1'} + [ -n "$DEST_LANG" ] && eval 'LC_ALL=C LANG=C chroot $SDCARD /bin/bash -c "update-locale --reset LANG=$DEST_LANG"' \ + ${OUTPUT_VERYSILENT:+' >/dev/null 2>&1'} + ;; esac