slitaz-tools annotate tinyutils/tazlocale @ rev 338
tazlocale: Add support for i18n Slitaz files from locale pack
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Thu Apr 30 23:21:22 2009 +0200 (2009-04-30) |
parents | af65458ca488 |
children | adf1e99ee3e8 |
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@338 | 6 # 20090428 <pankso@slitaz.org> - GNU gpl. |
pankso@5 | 7 # |
pankso@5 | 8 |
pankso@5 | 9 # Check if user is root. |
pankso@5 | 10 if test $(id -u) != 0; then |
pankso@145 | 11 echo -e "\nYou must be root to run `basename $0`!" |
pankso@145 | 12 echo -e "Type su and root password to become super-user.\n" |
pankso@145 | 13 exit 1 |
pankso@5 | 14 fi |
pankso@5 | 15 |
pankso@338 | 16 get_messages() |
pankso@338 | 17 { |
pankso@338 | 18 . /etc/locale.conf |
pankso@338 | 19 LANGUAGE=${LANG%_*} |
pankso@338 | 20 [ "$LANG" = "C" ] && LANGUAGE="en" |
pankso@338 | 21 case $LANGUAGE in |
pankso@338 | 22 fr) |
pankso@338 | 23 RECONFIG_MSG=" |
pankso@338 | 24 Veuilliez fermer votre session et vous reloguer pour utiliser |
pankso@338 | 25 SliTaz avec la locale : fr." ;; |
pankso@338 | 26 *) |
pankso@338 | 27 RECONFIG_MSG=" |
pankso@338 | 28 Please logout of your current session and login again to SliTaz |
pankso@338 | 29 and locale : $LANGUAGE" ;; |
pankso@338 | 30 esac |
pankso@338 | 31 } |
pankso@338 | 32 |
pankso@338 | 33 # Create symlink to translated files provide by SliTaz language pack, |
pankso@338 | 34 # doc and config files. |
pankso@338 | 35 link_language_files() |
pankso@338 | 36 { |
pankso@338 | 37 . /etc/locale.conf |
pankso@338 | 38 LANGUAGE=${LANG%_*} |
pankso@338 | 39 [ "$LANG" = "C" ] && LANGUAGE="en" |
pankso@338 | 40 # Openbox menu in /usr/share/doc/slitaz |
pankso@338 | 41 if [ -f /etc/xdg/openbox/menu.$LANGUAGE.xml ]; then |
pankso@338 | 42 cd /etc/xdg/openbox && rm -f menu.xml |
pankso@338 | 43 ln -s menu.$LANGUAGE.xml menu.xml |
pankso@338 | 44 fi |
pankso@338 | 45 # Documentation in /usr/share/doc/slitaz |
pankso@338 | 46 if [ -f /usr/share/doc/slitaz/index.$LANGUAGE.html ]; then |
pankso@338 | 47 cd /usr/share/doc/slitaz && rm -f index.html |
pankso@338 | 48 ln -s index.$LANGUAGE.html index.html |
pankso@338 | 49 fi |
pankso@338 | 50 # SliTaz Software Manuals |
pankso@338 | 51 for soft in tazpkg tazlito tazusb tazwok |
pankso@338 | 52 do |
pankso@338 | 53 if [ -f /usr/share/doc/$soft/$soft.$LANGUAGE.html ]; then |
pankso@338 | 54 cd /usr/share/doc/$soft && rm -f $soft.html |
pankso@338 | 55 ln -s $soft.$LANGUAGE.html $soft.html |
pankso@338 | 56 fi |
pankso@338 | 57 done |
pankso@338 | 58 } |
pankso@338 | 59 |
pankso@170 | 60 # Locale name displayed. |
pankso@170 | 61 get_locale_name() |
pankso@170 | 62 { |
pankso@170 | 63 for i in `locale -a | grep "[a-z]_"` |
pankso@170 | 64 do |
pankso@170 | 65 name=`locale -a -v | grep -A 2 "locale: $i" | grep "title" | \ |
pankso@170 | 66 cut -d " " -f 7` |
pankso@170 | 67 echo "$i $name" |
pankso@170 | 68 done |
pankso@170 | 69 } |
pankso@170 | 70 |
pankso@5 | 71 # Dialog menu. |
pankso@338 | 72 dialog_menu() |
pankso@338 | 73 { |
pankso@338 | 74 exec 3>&1 |
pankso@338 | 75 value=`$DIALOG --clear \ |
pankso@338 | 76 --title " SliTaz language configuration " \ |
pankso@338 | 77 --menu "" 15 70 5 \ |
pankso@170 | 78 "en" "English" \ |
pankso@170 | 79 $(get_locale_name) \ |
pankso@5 | 80 2>&1 1>&3` |
pankso@338 | 81 retval=$? |
pankso@338 | 82 exec 3>&- |
pankso@338 | 83 case $retval in |
pankso@338 | 84 0) |
pankso@338 | 85 continue ;; |
pankso@338 | 86 1) |
pankso@338 | 87 echo "Cancel pressed." |
pankso@338 | 88 exit 0 ;; |
pankso@338 | 89 255) |
pankso@338 | 90 if test -n "$value"; then |
pankso@338 | 91 echo "$value" |
pankso@338 | 92 else |
pankso@338 | 93 echo "ESC pressed." |
pankso@338 | 94 exit 0 |
pankso@338 | 95 fi ;; |
pankso@338 | 96 esac |
pankso@338 | 97 # Default: C = English |
pankso@338 | 98 [ "$value" = "en" ] && value="C" |
pankso@338 | 99 [ -s /etc/locale.conf ] && RECONFIG="yes" |
pankso@338 | 100 # System configuration |
pankso@338 | 101 echo "LANG=$value" > /etc/locale.conf |
pankso@338 | 102 echo "LC_ALL=$value" >> /etc/locale.conf |
pankso@338 | 103 export LANG=$value LC_ALL=$value |
pankso@338 | 104 get_messages |
pankso@338 | 105 # If it's a reconfiguration give an info message. |
pankso@338 | 106 if [ -n "$RECONFIG" ]; then |
pankso@338 | 107 $DIALOG --clear \ |
pankso@338 | 108 --title " Information " \ |
pankso@338 | 109 --msgbox "\n$RECONFIG_MSG\n" 16 70 |
pankso@338 | 110 fi |
pankso@338 | 111 } |
pankso@5 | 112 |
pankso@338 | 113 case "$1" in |
pankso@338 | 114 *_*) |
pankso@338 | 115 # Execute functions (can be called from an other apps). |
pankso@338 | 116 $1 ;; |
pankso@338 | 117 link-files) |
pankso@338 | 118 link_language_files ;; |
pankso@338 | 119 dialog) |
pankso@338 | 120 : ${DIALOG=dialog} |
pankso@338 | 121 dialog_menu |
pankso@338 | 122 link_language_files ;; |
pankso@338 | 123 list) |
pankso@338 | 124 echo "" |
pankso@338 | 125 locale -a |
pankso@338 | 126 echo "" ;; |
pankso@338 | 127 *) |
pankso@338 | 128 : ${DIALOG=tazdialog} |
pankso@338 | 129 export ICON="preferences-desktop-locale" |
pankso@338 | 130 dialog_menu |
pankso@338 | 131 link_language_files ;; |
pankso@5 | 132 esac |
pankso@5 | 133 |
pankso@5 | 134 exit 0 |