Another tool for lazy translators. See info inside.
authorslubek <slubek>
Mon, 19 May 2003 23:22:33 +0000 (23:22 +0000)
committerslubek <slubek>
Mon, 19 May 2003 23:22:33 +0000 (23:22 +0000)
lang/synch [new file with mode: 0755]

diff --git a/lang/synch b/lang/synch
new file mode 100755 (executable)
index 0000000..9339fbb
--- /dev/null
@@ -0,0 +1,78 @@
+#!/bin/bash
+# This script will synchronize language file with the master 
+# english translation using chriskl's langcheck utility.
+# It doesn't translate strings, only inserts english versions
+# to proper positions and deletes removed. Use it at your own risk!
+# You need to have GNU ed installed.
+# 
+# Usage: synch <language>
+#
+#   <language> is the filename without the .php extension
+   
+if [ -z $1 ] ; then
+       echo "You must tell me which language I should synchronize."
+       echo -e "for example: \n\t$0 polish"
+       exit
+fi
+
+if [ ! -f $1.php ] ; then
+       echo "Sorry, I cannot find $1.php"
+       exit
+fi
+
+php langcheck $1 | awk '
+
+function grep_n(what, where,   n, ln) {
+# Returns "last occurance" line number
+       n=1;    # current index
+       ln=-1   # line number
+       while ( (getline line < where ) > 0 ) {
+               if (index(line, what)>0) {
+                       ln=n;
+               }
+               n++;
+       }
+       close(where);
+       return ln;
+}
+
+BEGIN      { line=1   }
+# Analyse of "php langcheck language" output. 
+# Chris - please, do not change those texts in langcheck :-)
+/^Missing/   { oper="+" }
+/^Deleted/   { oper="-" }
+/^Source/    { src=$3  }
+/^Target/    { trg=$3  }
+/\$lang/    {
+               split($1, a, "\\x27");
+               # a[2] = strxxxxx
+               # Adding a line
+               if(oper=="+") {
+                       line = grep_n(a[2],src) - 1;
+                       if (line>0) {
+                               print line"a";
+                               # New lines got no "\t" at beginning because they are not 
+                               # translated yet, so it will help translator to find them
+                               print $0;
+                               print ".";
+                       }
+               }
+               # Deleting a line
+               if(oper=="-") {
+                       line = grep_n(a[2],trg);
+                       if (line>0) {
+                               print line"d"
+                       }
+               }
+               
+               # Writing changes after every edit
+               print "w";
+           }
+' > $1.ed
+
+cat $1.ed | ed $1.php
+
+# For testing
+exit
+
+rm $1.ed