#! /bin/sh # file postats.sh # # This file is part of LyX, the document processor. # Licence details can be found in the file COPYING. # # author: Michael Schmitt, michael.schmitt@teststep.org # # This script extracts some information from the po file headers (last # translator, revision date), generates the corresponding gmo files # to retrieve the number of translated/fuzzy/untranslated messages, # and generates a PHP web page. # # Invocation: # postats.sh po_files > "pathToWebPages"/i18n.php3 # *** The PHP header *** cat < EOF # *** The po file analysis *** echo " '$y', " touch $x make 2>&1 $y.gmo | grep "^[1-9]" | sed -e 's/\([0-9]*\) translated m[a-z]*[.,]/"msg_tr" => \1,/' | sed -e 's/\([0-9]*\) fuzzy t[a-z]*[.,]/"msg_fu" => \1,/' | sed -e 's/\([0-9]*\) untranslated m[a-z]*./"msg_nt" => \1,/' # Format: "Last-Translator: Michael Schmitt \n" grep "Last-Translator" $x | sed -e 's/"Last-Translator: \(.*\)\( *\)<\(.*\)>\\n"/"translator" => "\1", "email" => "\3", /' # Format: "PO-Revision-Date: 2003-01-18 03:00+0100\n" grep "PO-Revision-Date" $x | sed -e 's/"PO-Revision-Date: \(.*\) .*/"date" => "\1" )/' done echo ");" echo "?>" # *** The PHP core part *** cat < 'Bulgarian', 'ca' => 'Catalan', 'cs' => 'Czech', 'da' => 'Danish', 'de' => 'German', 'es' => 'Spanish', 'eu' => 'Basque', 'fi' => 'Finnish', 'fr' => 'French', 'he' => 'Hebrew', 'hu' => 'Hungarian', 'it' => 'Italian', 'nl' => 'Dutch', 'no' => 'Norwegian', 'pl' => 'Polish', 'pt' => 'Portuguese', 'ro' => 'Romanian', 'ru' => 'Russian', 'sk' => 'Slovak', 'sl' => 'Slovenian', 'sv' => 'Swedish', 'tr' => 'Turkish', 'wa' => 'Wallon' ); \$noOfMsg = \$podata[0]['msg_tr'] + \$podata[0]['msg_fu'] + \$podata[0]['msg_nt']; function cmp (\$a, \$b) { if (\$a['msg_tr'] == \$b['msg_tr']) { return 0; } return (\$a['msg_tr'] > \$b['msg_tr']) ? -1 : 1; } usort (\$podata, "cmp"); ?>

The following table lists all translations available with the number of messages given for the LyX main development branch (currently 1.3.0cvs). Unfortunately, only a few languages are well-supported. For every release, the LyX development team may decide to exclude some of the translations from the distribution in order not to confuse the user by a strongly mixed-language interface.

Explanation:

  • Translated: The number of translated messages
  • Fuzzy: The number of fuzzy messages; these are not considered for LyX output but solely serve as a hint for the translators
  • Untranslated: The number of untranslated messages; the default language (i.e., English) will be used in the LyX outputs

"; if ( \$info['msg_tr'] > \$noOfMsg * 2 / 3 ) { \$style="style='background:#009900'"; } else if ( \$info['msg_tr'] > \$noOfMsg / 2 ) { \$style="style='background:#AAAA00'"; } else { \$style="style='background:#AA3333'"; } print ""; print ""; print ""; print ""; print ""; print ""; print "\n"; } ?>
Language Translated Fuzzy Untranslated Revision Date Translator
" . \$lang[\$info['langcode']] . "" . \$info['msg_tr'] . ""; if (isset(\$info['msg_fu'])) { print \$info['msg_fu']; } else { print "0"; } print ""; if (isset(\$info['msg_nt'])) { print \$info['msg_nt']; } else { print "0"; } print "" . \$info['date'] . ""; if (\$info['email'] == "") { print \$info['translator']; } else { print "" . \$info['translator'] . ""; } print "
EOF cat < EOF