#!/bin/sh
set -e
LOCALEGEN=/etc/locale.gen
unset POSIXLY_CORRECT || true

[ -f $LOCALEGEN -a -s $LOCALEGEN ] || exit 0;

# Remove all old locale dir and locale-archive before generating new
# locale data.
[ -f /usr/lib/locale/locale-archive ] && rm -f /usr/lib/locale/locale-archive

umask 022

echo "Generating locales..."
while read locale charset; do
	case $locale in \#*|"")
		continue;;
	esac;
	[ -n "$locale" -a -n "$charset" ] || { echo "E: Bad entry '$locale $charset', skipping.">&2; continue; }
	echo -n "${locale%%[.@]*}.$charset"
	_t="${locale##*@}"; [ "$_t" != "$locale" -a -n "$_t" ] && echo -n "@${_t}" || _t=''
	echo -n '...'
        if [ -f /usr/share/i18n/locales/$locale ]; then
        	input=$locale
        else
        	input="${locale%%[.@]*}${_t:+@$_t}"
        fi
	localedef -i $input -c -f $charset -A /usr/share/locale/locale.alias $locale &&
	echo ' done'
done < $LOCALEGEN
echo "Generation complete."
