📄 sync_lang.sh
字号:
#!/bin/sh# $Id: sync_lang.sh 9375 2006-08-29 15:33:28Z nijel $### Shell script that synchronises all translations in phpMyAdmin### Any parameters (except --iconv/--recode) will be passed to grep to filter# processed translation, for example: './sync_lang.sh czech' will process only# czech translation, './sync_lang.sh -e czech -e english' will process czech# and english translations.### Written by Michal Cihar <nijel at users.sourceforge.net>### Changes:# 2005-12-08# * less verbose output to allow quick overview# 2005-11-29# * hack for multibyte chars, so that \'; at the end will not fool PHP# 2004-09-22# * default to iconv, as it doesn't break things as recode does# 2004-09-03# * hack for hebrew# 2003-11-18# * switch php3 -> php# 2003-04-14# * convert only files that are needed to convert (checks mtime), --force to# avoid this checking# * get charset from filename when reading from file failed# * report failed translations at the end# 2002-09-18# * now accepts parameters --iconv/--recode for specifying which convertor# to use# 2002-08-13# * support for synchronisation only for selected language(s)# 2002-07-18# * can exclude some languages from conversion# 2002-07-17# * support for multiple convertors (recode added)##### convertor setup### CONVERTOR_PARAMS is used for printf and it also receives two params: source# and target charset#case "$1" in --iconv) echo Using iconv on user request CONVERTOR=iconv # the space on following is REQUIRED CONVERTOR_PARAMS=" -f %s -t %s" shift ;; --recode) echo Using recode on user request echo '(please use iconv for arabic)' CONVERTOR=recode CONVERTOR_PARAMS=" -f %s..%s" shift ;; *) echo Using iconv as default, force with --iconv/--recode CONVERTOR=iconv # the space on following is REQUIRED CONVERTOR_PARAMS=" -f %s -t %s" ;;esacif [ "$1" = "--force" ] ; then FORCE=1 shiftelse FORCE=0fi### names of translations to process### Here should be listed all translations for which conversion should be done.# The name is filename without inc.php.#BASE_TRANSLATIONS="afrikaans-iso-8859-1albanian-iso-8859-1arabic-windows-1256azerbaijani-iso-8859-9basque-iso-8859-1belarusian_cyrillic-windows-1251belarusian_latin-utf-8bosnian-windows-1250brazilian_portuguese-iso-8859-1bulgarian-utf-8catalan-iso-8859-1chinese_traditional-utf-8chinese_simplified-gb2312croatian-windows-1250czech-utf-8danish-iso-8859-1dutch-iso-8859-1english-iso-8859-1estonian-iso-8859-1finnish-iso-8859-1french-iso-8859-1galician-iso-8859-1german-utf-8greek-iso-8859-7hebrew-iso-8859-8-ihungarian-iso-8859-2indonesian-iso-8859-1italian-iso-8859-1japanese-utf-8korean-utf-8latvian-windows-1257lithuanian-windows-1257malay-iso-8859-1norwegian-iso-8859-1persian-windows-1256polish-iso-8859-2portuguese-iso-8859-1romanian-iso-8859-1russian-windows-1251serbian_cyrillic-windows-1251serbian_latin-windows-1250slovenian-iso-8859-2slovak-utf-8spanish-iso-8859-1swedish-iso-8859-1tatarish-iso-8859-9thai-utf-8turkish-utf-8ukrainian-windows-1251"### which translations should not be translated to utf-8### List here any translation that should not be converted to utf-8. The name is# same as above.#IGNORE_UTF=""### which translations should not be automatically generated### List here any translation should not be automatically generated from base# translation for that language (usually for those which are not correctly# supported by convertor).#IGNORE_TRANSLATIONS="russian-cp-866"### end of configuration, you hopefully won't need to edit anything bellow##TEMPFILE=`mktemp /tmp/pma-sync-lang.XXXXXX`cleanup() { rm -f $TEMPFILE}trap cleanup INT ABRT TERMFAILED=""echo "-------------------------------------------------------------------"# go through all file we should processfor base in $BASE_TRANSLATIONS ; do if [ "$#" -gt 0 ] ; then if ( echo $base | grep -q "$@" ) ; then true else continue fi fi # grep language from basename lang=$(echo $base|sed 's%-.*%%') # which files will we create from current? create_files=$(ls --color=none -1 $lang*.inc.php|grep -v $base.inc.php) for ignore in $IGNORE_TRANSLATIONS ; do create_files=$(echo "$create_files" | grep -v $ignore) done # charset of source file src_charset=$(grep '\$charset' $base.inc.php | sed "s%^[^'\"]*['\"]\\([^'\"]*\\)['\"][^'\"]*$%\\1%") replace_charset=$src_charset # special case for hebrew if [ $src_charset = 'iso-8859-8-i' ] ; then src_charset=iso-8859-8 fi echo -n "$base [charset $src_charset]" # do we already have utf-8 translation? if [ $src_charset = 'utf-8' ] ; then is_utf=yes else is_utf=no fi # at first update existing translations for file in $create_files ; do # charset of destination file # grepping from file causes problems when it is empty... charset=$(grep '\$charset' $file | sed "s%^[^'\"]*['\"]\\([^'\"]*\\)['\"][^'\"]*$%\\1%") if [ -z "$charset" ] ; then charset=$(echo $file | sed -e 's/^[^-]*-//' -e 's/\.inc\.php\?$//') fi if [ $charset = 'utf-8' ] ; then is_utf=yes fi # check whether we need to update translation if [ ! "$base.inc.php" -nt "$file" -a "$FORCE" -eq 0 -a -s "$file" ] ; then echo -n " ($file:ok)" continue fi echo -n " ($file:to $charset:" if [ $charset = 'utf-8' ] ; then # if we convert to utf-8, we should add allow_recoding is_utf=yes $CONVERTOR $(printf "$CONVERTOR_PARAMS" $src_charset $charset) < $base.inc.php| sed -e "s/$replace_charset/$charset/" -e '/\$charset/a\$allow_recoding = TRUE;' > $TEMPFILE elif [ $src_charset = 'utf-8' ] ; then is_utf=yes # if we convert from utf-8, we should remove allow_recoding $CONVERTOR $(printf "$CONVERTOR_PARAMS" $src_charset $charset) < $base.inc.php| grep -v allow_recoding | sed "s/$replace_charset/$charset/" > $TEMPFILE else # just convert $CONVERTOR $(printf "$CONVERTOR_PARAMS" $src_charset $charset) < $base.inc.php| sed "s/$replace_charset/$charset/" > $TEMPFILE fi if [ -s $TEMPFILE ] ; then sed "s/\\\\';[[:space:]]\+$/\\\\\\\\';/" $TEMPFILE > $file echo -n 'done)' else FAILED="$FAILED $file" echo -n 'FAILED)' fi done # now check whether we found utf-8 translation if [ $is_utf = no ] ; then if ( echo $IGNORE_UTF | grep -q $base ) ; then # utf-8 should not be created true else # we should create utf-8 translation charset=utf-8 file=$lang-$charset.inc.php echo -n " [$file:$charset:" $CONVERTOR $(printf "$CONVERTOR_PARAMS" $src_charset $charset) < $base.inc.php| sed -e "s/$replace_charset/$charset/" -e '/\$charset/a\$allow_recoding = TRUE;' > $TEMPFILE if [ -s $TEMPFILE ] ; then cat $TEMPFILE > $file echo -n 'done)' else FAILED="$FAILED $file" echo -n 'FAILED)' fi fi fi echodoneecho "-------------------------------------------------------------------"if [ -z "$FAILED" ] ; then echo "Everything seems to went okay"else echo "!!!SOME CONVERSION FAILED!!!" echo "Following file were NOT updated:" echo echo "$FAILED" echo echo "!!!SOME CONVERSION FAILED!!!"ficleanup
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -