Hi folks,

Here is a little script that generates a table detailing
the i18n status. It works by comparing the last updated
timestamp from CVS of the language file with the master file.

It generates a matrix like this (hopefully it's not wrapped):

Legend:
  '.' -- translation appears to be uptodate
  'x' -- translation needs updating
  '?' -- unknown status (file not under CVS control)
  ' ' -- translation missing
Master language is En

  Module / Language       Ca Cn Cs Da De En Eo Es Fi Fr Hu It Ja Ko Nl No Pl Pt Ru Si 
Sk Sv Sw Va Wa Xx Zh
            dlls/avifil32             .  .     .           .                 .  .  .
            dlls/comctl32    .        .  .     .                 .        .  .  .  .
             dlls/commdlg .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  
.  .        .     .
     dlls/msvideo/msrle32             .  .     .     .                       .  .  .
            dlls/serialui                .                                      .
            dlls/setupapi                .                                      .
             dlls/shell32 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  
.  .        .     .
      dlls/user/resources .     .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  
.  .        .     .
              dlls/wineps             .  .     .     .           .           .  .  .  .
             dlls/wininet                .     .                             .  .  .
               dlls/winmm                .     .     .              .        .  .  .  .
           programs/clock          .  .  .     .  .  .  .  .                 .  .  .  
.     .     .     .
        programs/cmdlgtst                .           .     .                 .  .  .
         programs/notepad          .  .  .     .  .  .  .  .                 .  .  .  
.     .     .     .
         programs/progman          x  x  .     .  .  .  .  .     .           .  .  .  
.     .  .  .  .  .
            programs/view                .     .     .     .                 .  .  .
            programs/wcmd                .           .                       .  .  .
     programs/wineconsole             .  .           .  .                    .  .      
                 .
        programs/winemine                .     .                             .  .  .
         programs/winhelp          .  .  .     .  .  .  .  .     .           .  .  .  
.     .  .  .     .
         programs/regedit                .     .     .                       .  .  .
        programs/winefile             .  .           .  .                    .  .  .   
                 .
           programs/start                .                 .                 .  .  .
         programs/winecfg                .     x                             x  x  x
        programs/wineproc                ?


Run it, it's fun! :) I guess I will submit it to the tree.

-- 
Dimi.
#!/bin/sh

MASTER_LANG=En
MASTER_FILES=`find . -name "*$MASTER_LANG.rc"`

list_translations()
{
    MASTER_FILE=$1
    TRANSLATIONS=`ls ${MASTER_FILE%$MASTER_LANG.rc}??.rc`
    for translation in $TRANSLATIONS; do
        LANG=`echo "$translation" | sed 's/.*\(..\)\.rc/\1/'`
        if [ "$LANG" != 'xx' ]; then echo "$LANG"; fi
    done
}

seconds_since_epoch()
{
    FILE="$1"
    STATUS="`cvs status $FILE 2>/dev/null | grep 'Working revision:'`"
    if ! echo "$STATUS" | grep -q "No entry for"; then
        DATE="`echo "$STATUS" | sed 's/[^0-9]*[^ ]* *//'`"
        date -d "$DATE" '+%s'
    fi
}


echo "Legend:"
echo "  '.' -- translation appears to be uptodate"
echo "  'x' -- translation needs updating"
echo "  '?' -- unknown status (file not under CVS control)"
echo "  ' ' -- translation missing"
echo "Master language is $MASTER_LANG"
echo

ALL_LANGS=`(for file in $MASTER_FILES; do list_translations "$file"; done) | sort -u`

echo "  Module / Language      " $ALL_LANGS

for master in $MASTER_FILES; do
    MASTER_TIMESTAMP=`seconds_since_epoch "$master"`
    APP=`echo "${master%/*}" | sed 's/..//'`
    printf "%25s" "$APP"
    for lang in $ALL_LANGS; do
        LANG_FILE="${master%$MASTER_LANG.rc}$lang.rc"
        if [ -f "$LANG_FILE" ]; then
            if [ -z $MASTER_TIMESTAMP ]; then
                STATUS="?"
            else
                LANG_TIMESTAMP=`seconds_since_epoch "$LANG_FILE"`
                if [ "$LANG_TIMESTAMP" -lt "$MASTER_TIMESTAMP" ]; then
                    STATUS="x"
                else
                    STATUS="."
                fi
            fi
        else
            STATUS=" "
        fi
        echo -n " $STATUS "
    done
    echo
done

Reply via email to