123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #!/bin/bash
- set -e
- update_linguas() {
- local DIR="$1"
- local LINGUAS_FILE="$DIR/LINGUAS"
- echo "update $LINGUAS_FILE"
- ls -1 "$DIR"/*.po | while read FILE; do
- basename -s .po "$FILE";
- done > "$LINGUAS_FILE"
- }
- firstword() {
- echo "$1"
- }
- read_linguas() {
- local FILE="$1"
- echo " - read $FILE"
- while read LINE; do
- local CODE="$(firstword $LINE)"
- if [ ! -z "$CODE" ]; then
- CODE_MAP[$CODE]="$CODE"
- NAME_MAP[$CODE]=""
- COMMENT_MAP[$CODE]=" <------- TODO: Set language name and remove this comment"
- else
- echo "$LINE" >> "$TMPFILE"
- fi
- done < "$FILE"
- }
- update_languages_inc() {
- local LANGUAGES_FILE="synfig-studio/src/languages.inc.c"
- echo "update LANGUAGES_FILE"
- local TMPFILE="$LANGUAGES_FILE.process"
- rm -f "$TMPFILE"
- declare -A CODE_MAP
- declare -A NAME_MAP
- declare -A COMMENT_MAP
- read_linguas "synfig-core/po/LINGUAS"
- read_linguas "synfig-studio/po/LINGUAS"
- echo " - read $LANGUAGES_FILE"
- while read LINE; do
- local COMMENT="$(echo "$LINE" | sed "s|//|#|" | cut -d \# -f 2- -s)"
- local SUBLINE="$(echo "$LINE" | sed "s|//|#|" | cut -d \# -f 1)"
- local CODE="$(echo "$SUBLINE" | cut -d \" -f 2)"
- local NAME="$(echo "$SUBLINE" | cut -d \" -f 4)"
- if [ ! -z "$CODE" ] || [ ! -z "$NAME" ]; then
- CODE_MAP[$CODE]="$CODE"
- NAME_MAP[$CODE]="$NAME"
- COMMENT_MAP[$CODE]="$COMMENT"
- else
- # write all unknown rows to begining of file
- echo "$LINE" >> "$TMPFILE"
- fi
- done < "$LANGUAGES_FILE"
- # fit the colums to make beautifulest table in the world
- local CODE_LEN=0
- local NAME_LEN=0
- for i in ${!CODE_MAP[@]}; do
- if [ ${#CODE_MAP[$i]} -gt $CODE_LEN ]; then
- CODE_LEN=${#CODE_MAP[$i]}
- fi
- if [ ${#NAME_MAP[$i]} -gt $NAME_LEN ]; then
- NAME_LEN=${#NAME_MAP[$i]}
- fi
- done
- CODE_LEN=$((CODE_LEN+3))
- NAME_LEN=$((NAME_LEN+3))
- # sort
- SORTED=$(for i in ${!CODE_MAP[@]}; do echo $i; done | sort | while read l; do echo -n "$l "; done)
- # write languages
- NEW_LANGS=
- for i in $SORTED; do
- CODE=${CODE_MAP[$i]}
- NAME=${NAME_MAP[$i]}
- COMMENT=${COMMENT_MAP[$i]}
- if [ ! -z "$COMMENT" ]; then
- COMMENT=" // $COMMENT"
- fi
- if [ -z "$NAME" ]; then
- NEW_LANGS="$NEW_LANGS $CODE"
- fi
- printf "{ %-${CODE_LEN}s %-${NAME_LEN}s },%s\\n" "\"$CODE\"," "\"$NAME\"," "$COMMENT" >> "$TMPFILE"
- done
- # update file
- mv $TMPFILE $LANGUAGES_FILE
- if [ ! -z "$NEW_LANGS" ]; then
- echo ""
- echo "please, enter names for following languages:$NEW_LANGS"
- echo ""
- echo "see file $LANGUAGES_FILE"
- echo ""
- fi
- }
- cd "$(cd `dirname "$0"`; pwd)/.."
- update_linguas "synfig-core/po"
- update_linguas "synfig-studio/po"
- update_languages_inc
- echo "done"
|