chiark / gitweb /
eglibc (2.11.3-4+deb6u3) squeeze-lts; urgency=medium
[eglibc.git] / debian / local / usr_sbin / locale-gen
1 #!/bin/sh
2
3 set -e
4
5 LOCALEGEN=/etc/locale.gen
6 LOCALES=/usr/share/i18n/locales
7 USER_LOCALES=/usr/local/share/i18n/locales
8 if [ -n "$POSIXLY_CORRECT" ]; then
9   unset POSIXLY_CORRECT
10 fi
11
12
13 [ -f $LOCALEGEN ] || exit 0;
14 [ -s $LOCALEGEN ] || exit 0;
15
16 KEEP=
17 if [ "$1" = '--keep-existing' ]; then
18         KEEP=1
19 fi
20
21 if [ -z "$KEEP" ]; then
22         # Remove all old locale dir and locale-archive before generating new
23         # locale data.
24         rm -rf /usr/lib/locale/* || true
25 fi
26
27 umask 022
28
29 is_entry_ok() {
30   if [ -n "$locale" -a -n "$charset" ] ; then
31     true
32   else
33     echo "error: Bad entry '$locale $charset'"
34     false
35   fi
36 }
37
38 echo "Generating locales (this might take a while)..."
39 while read locale charset; do \
40         case $locale in \#*) continue;; "") continue;; esac; \
41         is_entry_ok || continue
42         if [ "$KEEP" ] && PERL_BADLANG=0 perl -MPOSIX -e \
43             'exit 1 unless setlocale(LC_ALL, $ARGV[0])' "$locale"; then
44                 continue
45         fi
46         echo -n "  `echo $locale | sed 's/\([^.\@]*\).*/\1/'`"; \
47         echo -n ".$charset"; \
48         echo -n `echo $locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/'`; \
49         echo -n '...'; \
50         if [ -f $USER_LOCALES/$locale ] ; then
51             input=$USER_LOCALES/$locale
52         elif [ -f $LOCALES/$locale ]; then 
53             input=$locale
54         else
55             input=`echo $locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`
56             if [ -f $USER_LOCALES/$input ]; then
57                 input=$USER_LOCALES/$input
58             fi
59         fi
60         localedef -i $input -c -f $charset -A /usr/share/locale/locale.alias $locale || :; \
61         echo ' done'; \
62 done < $LOCALEGEN
63 echo "Generation complete."