slitaz-tools annotate tinyutils/tazlocale @ rev 749

tazlocale: update and use libtaz.sh
author Christophe Lincoln <pankso@slitaz.org>
date Mon Apr 30 12:00:30 2012 +0200 (2012-04-30)
parents 433b4e383048
children efed9a606ecc
rev   line source
pankso@5 1 #!/bin/sh
pankso@5 2 #
pankso@5 3 # Tazlocale: SliTaz GNU/Linux locale setting using dialog boxes.
pankso@5 4 # Configuration file is : /etc/locale.conf
pankso@5 5 #
pankso@749 6 # Copyright (C) 2008-2012 SliTaz GNU/Linux - BSD License
pankso@5 7 #
pankso@749 8 # Author: Christophe Lincoln <pankso@slitaz.org>
pankso@749 9 #
pankso@749 10 . /lib/libtaz.sh
pankso@749 11 check_root
pankso@5 12
pankso@622 13 # Internationalization
pankso@622 14 . /usr/bin/gettext.sh
pankso@622 15 TEXTDOMAIN='slitaz-tools'
pankso@622 16 export TEXTDOMAIN
pankso@622 17
paul@725 18 # Create symlink to translated files provided by SliTaz language pack,
pankso@338 19 # doc and config files.
pankso@338 20 link_language_files()
pankso@338 21 {
pankso@338 22 . /etc/locale.conf
pankso@338 23 LANGUAGE=${LANG%_*}
pankso@338 24 [ "$LANG" = "C" ] && LANGUAGE="en"
pankso@338 25 # Openbox menu in /usr/share/doc/slitaz
pankso@338 26 if [ -f /etc/xdg/openbox/menu.$LANGUAGE.xml ]; then
pankso@338 27 cd /etc/xdg/openbox && rm -f menu.xml
pankso@338 28 ln -s menu.$LANGUAGE.xml menu.xml
pankso@338 29 fi
pankso@338 30 # Documentation in /usr/share/doc/slitaz
pankso@338 31 if [ -f /usr/share/doc/slitaz/index.$LANGUAGE.html ]; then
pankso@338 32 cd /usr/share/doc/slitaz && rm -f index.html
pankso@338 33 ln -s index.$LANGUAGE.html index.html
pankso@338 34 fi
pankso@338 35 # SliTaz Software Manuals
pankso@622 36 for soft in tazpkg tazlito tazusb tazwok tazweb tazpanel
pankso@338 37 do
pankso@338 38 if [ -f /usr/share/doc/$soft/$soft.$LANGUAGE.html ]; then
pankso@338 39 cd /usr/share/doc/$soft && rm -f $soft.html
pankso@338 40 ln -s $soft.$LANGUAGE.html $soft.html
pankso@338 41 fi
pankso@338 42 done
al@716 43 # SliTaz TazWeb "My Web Home"
al@716 44 if [ -f /usr/share/tazweb/home.$LANGUAGE.html ]; then
al@716 45 cd /usr/share/tazweb && rm -f home.html
al@716 46 ln -s home.$LANGUAGE.html home.html
al@716 47 fi
al@728 48 # SliTaz WebHome
al@728 49 if [ -f /usr/share/webhome/index.$LANGUAGE.html ]; then
al@728 50 cd /usr/share/webhome && rm -f index.html
al@728 51 ln -s index.$LANGUAGE.html index.html
al@728 52 fi
pankso@622 53 # SliTaz Tools Manuals
pankso@749 54 for soft in tazinst
pankso@622 55 do
pankso@749 56 if [ -f /usr/share/doc/slitaz/$soft.$LANGUAGE.html ]; then
pankso@749 57 cd /usr/share/doc/slitaz && rm -f $soft.html
pankso@622 58 ln -s $soft.$LANGUAGE.html $soft.html
pankso@622 59 fi
pankso@622 60 done
pankso@338 61 }
pankso@338 62
pankso@170 63 # Locale name displayed.
pankso@170 64 get_locale_name()
pankso@170 65 {
pankso@749 66 for i in $(ls -1 /usr/share/i18n/locales | grep ^[a-z][a-z]_[A-Z][A-Z])
pankso@170 67 do
pankso@568 68 #desc=$(grep ^title /usr/share/i18n/locales/$i | cut -d '"' -f 2)
pankso@426 69 echo "$i Locale"
pankso@170 70 done
pankso@170 71 }
pankso@170 72
pankso@426 73 # We have no locale files in /usr/lib/locale by default. Run localedef in
pankso@426 74 # background to have a faster boot.
pankso@426 75 gen_utf8_locale()
pankso@426 76 {
pankso@426 77 localedef -i $locale -c -f UTF-8 /usr/lib/locale/$locale &
pankso@426 78 }
pankso@426 79
pankso@749 80 # Config /etc/locale.conf
pankso@749 81 system_config() {
pankso@749 82 export LANG=$locale LC_ALL=$locale
pankso@749 83 gettext "Configuring system locale for:"; echo -n " $locale"
pankso@749 84 echo "LANG=$locale" > /etc/locale.conf
pankso@749 85 echo "LC_ALL=$locale" >> /etc/locale.conf
pankso@749 86 status
pankso@749 87 gen_utf8_locale
pankso@749 88 link_language_files
pankso@749 89 }
pankso@749 90
pankso@5 91 # Dialog menu.
pankso@338 92 dialog_menu()
pankso@338 93 {
pankso@338 94 exec 3>&1
pankso@749 95 locale=$($DIALOG --clear \
pankso@623 96 --title " $(gettext "SliTaz language configuration") " \
pankso@338 97 --menu "" 15 70 5 \
pankso@170 98 "en" "English" \
pankso@170 99 $(get_locale_name) \
pankso@749 100 2>&1 1>&3)
pankso@338 101 retval=$?
pankso@338 102 exec 3>&-
pankso@338 103 case $retval in
pankso@622 104 0) continue ;;
pankso@622 105 1|255) exit 0 ;;
pankso@338 106 esac
al@728 107
pankso@338 108 # Default: C = English
pankso@426 109 [ "$locale" = "en" ] && locale="en_US"
pankso@338 110 [ -s /etc/locale.conf ] && RECONFIG="yes"
al@728 111
pankso@338 112 # If it's a reconfiguration give an info message.
pankso@338 113 if [ -n "$RECONFIG" ]; then
pankso@622 114 msg=$(gettext "\
pankso@622 115 Please logout of your current session and login again to use new locale.")
pankso@338 116 $DIALOG --clear \
pankso@338 117 --title " Information " \
pankso@622 118 --msgbox "$msg" 16 70
pankso@338 119 fi
pankso@749 120 system_config
pankso@338 121 }
pankso@5 122
pankso@338 123 case "$1" in
pankso@338 124 list)
pankso@749 125 for i in $(ls -1 /usr/share/i18n/locales | grep ^[a-z][a-z]_[A-Z][A-Z])
pankso@749 126 do
pankso@749 127 desc=$(grep ^title /usr/share/i18n/locales/$i | cut -d '"' -f 2)
pankso@749 128 echo "$i $desc"
pankso@749 129 done ;;
pankso@749 130 "")
pankso@749 131 # No args: display Ncurses dialog.
pankso@749 132 : ${DIALOG=dialog}
pankso@749 133 dialog_menu ;;
pankso@749 134 *)
pankso@749 135 # Usage: tazlocale LANG_COUNTRY
pankso@749 136 locale=$1
pankso@749 137 system_config
pankso@568 138 gen_utf8_locale
pankso@568 139 link_language_files ;;
pankso@5 140 esac
pankso@5 141
pankso@5 142 exit 0