tazpanel diff settings.cgi @ rev 458
boot.cgi/ISO mine: install in Linux partition
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Mon Apr 13 11:11:51 2015 +0200 (2015-04-13) |
parents | 169f1ccfb613 |
children | dd26a42bd40b |
line diff
1.1 --- a/settings.cgi Wed Apr 08 15:32:20 2015 +0300 1.2 +++ b/settings.cgi Mon Apr 13 11:11:51 2015 +0200 1.3 @@ -30,153 +30,6 @@ 1.4 } 1.5 1.6 1.7 -############################# 1.8 -# Get info from locale file # 1.9 -############################# 1.10 - 1.11 -get_locale_info() 1.12 -{ 1.13 - # Commands like `LC_ALL=fr_FR locale -k LC_MEASUREMENT` will do the job 1.14 - # only when your locale is generated and exists in the /usr/lib/locale. 1.15 - # Here we manually parse locale definition files from /usr/share/i18n/locales/. 1.16 - # Strange, bloated and not script-friendly format :( 1.17 - 1.18 - [ ! -e /usr/share/i18n/locales/$1 ] && return 1.19 - 1.20 - # Prepare file 1.21 - if [ ! -e /tmp/tazpanel-$1 ]; then 1.22 - sed 's|^[ \t]*||;/^%/d;/^comment_char/d;/^escape_char/d' /usr/share/i18n/locales/$1 | tr '\n' '&' | sed 's|/&||g' | tr '&' '\n' | sed 's|<U\([0-9a-fA-F]*\)>|\&#x\1;|g' | sed 's|�|\&#x|g' > /tmp/tazpanel-$1 1.23 - fi 1.24 - 1.25 - local ANS=$(grep -e "^$2[ ]" /tmp/tazpanel-$1 | sed 's|^[^ \t][^ \t]* *||') 1.26 - if [ -z "$ANS" ]; then 1.27 - # Not found, then section is copied from other locale definition file... 1.28 - case $2 in 1.29 - measurement) 1.30 - section='LC_MEASUREMENT';; 1.31 - width|height) 1.32 - section='LC_PAPER';; 1.33 - currency_symbol|int_curr_symbol) 1.34 - section='LC_MONETARY';; 1.35 - day|abday|mon|abmon|d_t_fmt|d_fmt|t_fmt|am_pm|t_fmt_ampm|date_fmt) 1.36 - section='LC_TIME';; 1.37 - esac 1.38 - # Recursive call 1.39 - get_locale_info $(sed -n '/^'$section'/,/^END '$section'/p' /tmp/tazpanel-$1 | grep 'copy' | cut -d'"' -f2) $2 1.40 - else 1.41 - case $2 in 1.42 - day|abday|mon|abmon|am_pm) # semicolon-separated list in double quotes 1.43 - echo "$ANS";; 1.44 - *) # single value in double qoutes 1.45 - echo "$ANS" | cut -d'"' -f2;; 1.46 - esac 1.47 - fi 1.48 -} 1.49 - 1.50 - 1.51 -# Get info from locale file about measurement system 1.52 - 1.53 -get_locale_info_measurement() 1.54 -{ 1.55 - # faster to use pre-processed values 1.56 - case $1 in 1.57 - en_AG|en_US|es_PR|es_US|nl_AW|yi_US) _ 'US' ;; 1.58 - POSIX) ;; 1.59 - *) _ 'metric' ;; 1.60 - esac 1.61 -} 1.62 - 1.63 - 1.64 -# Get info from locale file about paper size 1.65 - 1.66 -get_locale_info_paper() 1.67 -{ 1.68 - # faster to use pre-processed values 1.69 - case $1 in 1.70 - en_AG|en_US|es_PR|es_US|nl_AW|yi_US) echo '8½×11 (US Letter)';; 1.71 - en_CA|en_PH|es_CL|es_CO|es_CR|es_GT|es_MX|es_NI|es_PA|es_SV|es_VE|fil_PH|fr_CA|ik_CA|iu_CA|shs_CA|tl_PH) echo '216×279 (US Letter)';; 1.72 - POSIX) ;; 1.73 - *) echo '210×297 (A4)';; 1.74 - esac 1.75 -} 1.76 - 1.77 - 1.78 -# Get info from locale file about date and time format 1.79 - 1.80 -get_locale_info_date_time() 1.81 -{ 1.82 - case $2 in 1.83 - c) get_locale_info $1 d_t_fmt ;; 1.84 - x) get_locale_info $1 d_fmt ;; 1.85 - X) get_locale_info $1 t_fmt ;; 1.86 - r) get_locale_info $1 t_fmt_ampm ;; 1.87 - *) get_locale_info $1 date_fmt ;; 1.88 - esac | sed 's| | |g; s|%|%|g; s|,|,|g; s|-|-|g; s|.|.|g; s|/|/|g; s|:|:|g; s|A|A|g; s|B|B|g; s|C|C|g; s|F|F|g; s|H|H|g; s|I|I|g; s|M|M|g; s|O|O|g; s|R|R|g; s|S|S|g; s|T|T|g; s|X|X|g; s|Y|Y|g; s|Z|Z|g; s|a|a|g; s|b|b|g; s|e|e|g; s|d|d|g; s|k|k|g; s|m|m|g; s|n|n|g; s|o|o|g; s|p|p|g; s|r|r|g; s|t|t|g; s|x|x|g; s|y|y|g; s|z|z|g;' 1.89 - 1.90 -} 1.91 - 1.92 - 1.93 -parse_date() 1.94 -{ 1.95 - local weekday month day abday mon abmon rtime d_fmt t_fmt am_pm 1.96 - weekday=$(( $(date +%w) + 1 )) # 1=Sunday ... 1.97 - month=$(date +%-m) # 1=January ... 1.98 - day=$(get_locale_info $1 day | cut -d'"' -f$(( 2 * $weekday )) | sed 's|&|\\\&|g') # translated day of week 1.99 - abday=$(get_locale_info $1 abday | cut -d'"' -f$(( 2 * $weekday )) | sed 's|&|\\\&|g') # same, abbreviated 1.100 - mon=$(get_locale_info $1 mon | cut -d'"' -f$(( 2 * $month )) | sed 's|&|\\\&|g') # translated month 1.101 - abmon=$(get_locale_info $1 abmon | cut -d'"' -f$(( 2 * $month )) | sed 's|&|\\\&|g') # same, abbreviated 1.102 - # next %-codes expanded into other %-codes 1.103 - rtime=$(get_locale_info_date_time $1 r | sed 's|&|\\\&|g') # %r: 12-hour time 1.104 - d_fmt=$(get_locale_info_date_time $1 x | sed 's|&|\\\&|g') # %x: date 1.105 - t_fmt=$(get_locale_info_date_time $1 X | sed 's|&|\\\&|g') # %X: time 1.106 - 1.107 - case $(LC_ALL=POSIX date +%P) in # translated am/pm 1.108 - am) am_pm=$(get_locale_info $1 am_pm | cut -d'"' -f2 | sed 's|&|\\\&|g');; 1.109 - pm) am_pm=$(get_locale_info $1 am_pm | cut -d'"' -f4 | sed 's|&|\\\&|g');; 1.110 - esac 1.111 - 1.112 - # r x X | OC | Y y Oy Ey | m -m Om | d -d Od | e -e Oe | F | H OH k | I OI l | M OM | S OS | R T | Z z | t | P p Op A a B b 1.113 - # Note: %P=am/pm; %p=AM/PM. But here they the same because it is not a simple job to convert letters. 1.114 - echo "$2" | sed "s|%r|$rtime|; s|%x|$d_fmt|; s|%X|$t_fmt|; \ 1.115 - s|%OC|S(date +%OC)|; \ 1.116 - s|%Y|$(date +%Y)|; s|%y|$(date +%y )|; s|%Oy|$(date +%Oy)|; s|%Ey|$(date +%Ey)|; \ 1.117 - s|%m|$(date +%m)|; s|%-m|$(date +%-m)|; s|%Om|$(date +%Om)|; \ 1.118 - s|%d|$(date +%d)|; s|%-d|$(date +%-d)|; s|%Od|$(date +%Od)|; \ 1.119 - s|%e|$(date +%e)|; s|%-e|$(date +%-e)|; s|%Oe|$(date +%Oe)|; \ 1.120 - s|%F|$(date +%F)|; \ 1.121 - s|%H|$(date +%H)|; s|%OH|$(date +%OH)|; s|%k|$(date +%k)|; \ 1.122 - s|%I|$(date +%I)|; s|%OI|$(date +%OI)|; s|%l|$(date +%l)|; \ 1.123 - s|%M|$(date +%M)|; s|%OM|$(date +%OM)|; \ 1.124 - s|%S|$(date +%S)|; s|%OS|$(date +%OS)|; \ 1.125 - s|%R|$(date +%R)|; s|%T|$(date +%T )|; \ 1.126 - s|%Z|$(date +%Z)|; s|%z|$(date +%z )|; \ 1.127 - s|%t|\t|; \ 1.128 - s|%P|$am_pm|; s|%p|$am_pm|; s|%Op|$am_pm|; s|%A|$day|; s|%a|$abday|; s|%B|$mon|; s|%b|$abmon|;" 1.129 - 1.130 -} 1.131 - 1.132 -list_of() 1.133 -{ 1.134 - cd /usr/share/i18n/locales 1.135 - #mon=$(date +%-m); monn=$(( $mon * 2 )) 1.136 - #echo "mon=\"$mon\" monn=\"$monn\"" 1.137 - 1.138 - echo '<pre>' 1.139 -for LOC in be_BY ca_IT el_CY fr_CH ru_RU ru_UA; do 1.140 - case $LOC in 1.141 - iso*|translit*) ;; 1.142 - *) 1.143 - #echo -e "$LOC:\t$(parse_date $LOC $(get_locale_info_date_time $LOC c | sed 's|&|\\\&|g'))";; 1.144 - FMT="$(get_locale_info_date_time $LOC c)" 1.145 - echo -e "$LOC:\t$FMT" 1.146 - parse_date $LOC "$FMT" 1.147 - echo;; 1.148 - esac 1.149 -done 1.150 - echo '</pre>' 1.151 -} 1.152 - 1.153 - 1.154 1.155 1.156