tools/find_outdated_engine_translations.sh
changeset 14165 8d9e3af8abce
parent 14163 e337e9920440
child 14173 ef14da7670f1
equal deleted inserted replaced
14164:1749961647b9 14165:8d9e3af8abce
     1 #!/bin/bash -
     1 #!/usr/bin/env bash
     2 #
     2 #
     3 # Tool which tries to find outdated translations in the engine strings (*.txt) using hg blame.
     3 # Tool which tries to find outdated translations in the engine strings (*.txt) using hg blame.
     4 # Note this is only a heuristic; the output might not be 100% accurate.
     4 # Note this is only a heuristic; the output might not be 100% accurate.
     5 # Strings which this tool lists MIGHT be outdated, so you might want to re-translate them, if needed.
     5 # Strings which this tool lists MIGHT be outdated, so you might want to re-translate them, if needed.
     6 # Run this in the tools/ directory.
     6 # Run this in the tools/ directory.
     9 #
     9 #
    10 # ./find_outdated_engine_translations.sh <LANGUAGE>
    10 # ./find_outdated_engine_translations.sh <LANGUAGE>
    11 #
    11 #
    12 # <LANGUAGE>: Language code of the language to check
    12 # <LANGUAGE>: Language code of the language to check
    13 #
    13 #
       
    14 shopt -s checkwinsize 
    14 
    15 
    15 cd ../share/hedgewars/Data/Locale
    16 cd ../share/hedgewars/Data/Locale
       
    17 
       
    18 IGNORE_CASE_WHITESPACE=1;
       
    19 if ((${#@}==2))
       
    20 then
       
    21     IGNORE_CASE_WHITESPACE=$2;
       
    22 fi;
    16 
    23 
    17 BLAMELANG=$1;
    24 BLAMELANG=$1;
    18 
    25 
    19 if [ -z $BLAMELANG ]
    26 if [ -z $BLAMELANG ]
    20 then
    27 then
    21 	echo "No language specified.";
    28     echo "No language specified.";
    22 	exit;
    29     exit;
    23 fi;
    30 fi;
    24 BLAMELANGFILE="$BLAMELANG.txt";
    31 BLAMELANGFILE="$BLAMELANG.txt";
    25 
    32 
    26 TEMP_EN=$(mktemp);
    33 TEMP_EN=$(mktemp);
    27 TEMP_LANG=$(mktemp);
    34 TEMP_LANG=$(mktemp);
    30 
    37 
    31 hg blame $BLAMELANGFILE | grep -P "^\s*\d+:\s+0[013-6]:" > $TEMP_LANG;
    38 hg blame $BLAMELANGFILE | grep -P "^\s*\d+:\s+0[013-6]:" > $TEMP_LANG;
    32 
    39 
    33 cat $TEMP_EN | while read f;
    40 cat $TEMP_EN | while read f;
    34 do
    41 do
    35 	REV=$(echo $f | sed 's/:.*//');
    42     REV=$(echo $f | sed 's/:.*//');
    36 	CODE=$(echo $f | sed 's/^[0-9]\+:\s\+//;s/=.*//');
    43     CODE=$(echo $f | sed 's/^[0-9]\+:\s\+//;s/=.*//');
    37 	OTHER=$(grep -P "^\s*\d+:\s+${CODE}" $TEMP_LANG);
    44     OTHER=$(grep -P "^\s*\d+:\s+${CODE}" $TEMP_LANG);
    38 	if (($?==0));
    45     if (($?==0));
    39 	then
    46     then
    40 		OTHER_REV=$(echo $OTHER | sed 's/:.*//');
    47         OTHER_REV=$(echo $OTHER | sed 's/:.*//');
    41 		if (($REV>$OTHER_REV));
    48         if (($REV>$OTHER_REV));
    42 		then
    49         then
    43 			TEXT=$(echo $f | sed 's/^\s*[0-9]\+:\s*[0-9]\+:[0-9]\+=//');
    50             TEXT=$(echo $f | sed 's/^\s*[0-9]\+:\s*[0-9]\+:[0-9]\+=//');
    44 			OLD_TEXT=$(hg grep --all -r "1:$OTHER_REV" "$CODE" en.txt | tail -n1 | sed 's/.*en.txt:[0-9]\+:[+-]:[0-9]\+:[0-9]\+=//;s/^M//');
    51             OLD_TEXT=$(hg grep --all -r "1:$OTHER_REV" "$CODE" en.txt | tail -n1 | sed 's/.*en.txt:[0-9]\+:[+-]:[0-9]\+:[0-9]\+=//;s/
    45 			if [ "$TEXT" != "$OLD_TEXT" ];
    52 //');
    46 			then
    53 
    47 				if [ -z $COLUMNS ];
    54             COMPARE_TEXT=$TEXT;
    48 				then
    55             COMPARE_OLD_TEXT=$OLD_TEXT;
    49 					printf '━%.0s' $(seq 74);
    56             if (($IGNORE_CASE_WHITESPACE==1));
    50 					echo "";
    57             then
    51 				else
    58                 COMPARE_TEXT=$(echo $TEXT | sed 's/\s*//g' | tr A-Z a-z);
    52 					printf '━%.0s' $(seq $COLUMNS);
    59                 COMPARE_OLD_TEXT=$(echo $OLD_TEXT | sed 's/\s*//g' | tr A-Z a-z);
    53 				fi;
    60             fi;
    54 				echo "$TEXT ← Current English";
    61 
    55 				echo "$OLD_TEXT ← English at time of translation";
    62             if [ "$COMPARE_TEXT" != "$COMPARE_OLD_TEXT" ];
    56 				echo "$(echo $OTHER | sed 's/^\s*[0-9]\+:\s*[0-9]\{2\}:[0-9]\{2\}=//') ← current translation";
    63             then
    57 			fi;
    64                 if [ -z $COLUMNS ];
    58 		fi;
    65                 then
    59 	fi;
    66                     printf '━%.0s' $(seq 74);
       
    67                     echo "";
       
    68                 else
       
    69                     printf '━%.0s' $(seq $COLUMNS);
       
    70                 fi;
       
    71                 echo "$TEXT ← Current English";
       
    72                 echo "$OLD_TEXT ← English at time of translation";
       
    73                 echo "$(echo $OTHER | sed 's/^\s*[0-9]\+:\s*[0-9]\{2\}:[0-9]\{2\}=//') ← current translation";
       
    74             fi;
       
    75         fi;
       
    76     fi;
    60 done
    77 done
    61 
    78 
    62 rm $TEMP_EN $TEMP_LANG
    79 rm $TEMP_EN $TEMP_LANG