mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 10:00:33 +00:00
Further tidy. More robust.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6002 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
5448faaefb
commit
df8a77437e
@ -1,3 +1,7 @@
|
||||
2003-01-29 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* postats.sh: further tidy. More robust.
|
||||
|
||||
2003-01-28 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* es.po: msgfmt complained about a missing '\n'.
|
||||
|
220
po/postats.sh
220
po/postats.sh
@ -15,20 +15,26 @@
|
||||
# Invocation:
|
||||
# postats.sh po_files > "pathToWebPages"/i18n.php3
|
||||
|
||||
|
||||
warning () {
|
||||
echo $* 1>&2
|
||||
}
|
||||
|
||||
|
||||
error () {
|
||||
while [ $# -ne 0 ]
|
||||
do
|
||||
echo $1
|
||||
shift
|
||||
done
|
||||
warning $*
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
# $1 is a string like
|
||||
# '588 translated messages, 1248 fuzzy translations, 2 untranslated messages.'
|
||||
# Any one of these substrings may not appear if the associated number is 0.
|
||||
#
|
||||
# $2 is the word following the number to be extracted,
|
||||
# ie, 'translated', 'fuzzy', or 'untranslated'.
|
||||
# Fills var $number with this number, or sets it to zero if the
|
||||
#
|
||||
# extract_number fills var $number with this number, or sets it to zero if the
|
||||
# word is not found in the string.
|
||||
extract_number () {
|
||||
test $# -eq 2 || error 'extract_number expects 2 args'
|
||||
@ -36,83 +42,93 @@ extract_number () {
|
||||
number=0
|
||||
echo $1 | grep $2 >/dev/null || return
|
||||
# It /is/ safe to use 'Z' as a delimiter here.
|
||||
number=`echo $1 | sed "s/\([0-9]*\)[ ]*$2.*/Z\1/" | cut -d 'Z' -f 2`
|
||||
number=`echo $1 | sed "s/\([0-9]*\)[ ]*$2/Z\1Z/" | cut -d 'Z' -f 2`
|
||||
}
|
||||
|
||||
|
||||
# Takes the name of the .po file and the .gmo file as input
|
||||
# Regenerates the .gmo file and manipulates the output to stderr to
|
||||
# fill var $output
|
||||
# $template is used by run_msgfmt, below, to fill $output. The function extracts
|
||||
# the appropriate values from the data.
|
||||
template="array ( 'langcode' => 'LC',
|
||||
\"msg_tr\" => TR, \"msg_fu\" => FU, \"msg_nt\" => NT,
|
||||
\"translator\" => \"AUTHOR\", \"email\" => \"EMAIL\",
|
||||
\"date\" => \"DATE\" )"
|
||||
readonly template
|
||||
|
||||
|
||||
# $1 is the name of the po file.
|
||||
#
|
||||
# The function runs msgfmt on it and fills var $output.
|
||||
# All other variables created in the function are unset on exit.
|
||||
run_msgfmt () {
|
||||
test $# -eq 2 || error 'run_msgfmt expects 2 args'
|
||||
test $# -eq 1 || error 'run_msgfmt expects 1 arg'
|
||||
|
||||
rm -f $2
|
||||
message=`$msgfmt --statistics -o $2 $1 2>&1 | grep "^[1-9]"`
|
||||
#message=`make $2 2>&1 | grep "^[1-9]"`
|
||||
|
||||
extract_number "$message" translated
|
||||
output='"msg_tr" => '$number
|
||||
extract_number "$message" fuzzy
|
||||
output=$output', "msg_fu" => '$number
|
||||
extract_number "$message" untranslated
|
||||
output=$output', "msg_nt" => '$number
|
||||
}
|
||||
|
||||
|
||||
# Passed the name of the .po file
|
||||
dump_stats () {
|
||||
test $# -eq 1 || error 'dump_stats expects 1 arg'
|
||||
|
||||
file=$1
|
||||
test -f $file || {
|
||||
echo "File $file does not exist"
|
||||
output=
|
||||
test -f $1 || {
|
||||
warning "File $1 does not exist"
|
||||
return
|
||||
}
|
||||
|
||||
dir=`dirname $file`
|
||||
pofile=`basename $file`
|
||||
origdir=`pwd`
|
||||
dir=`dirname $1`
|
||||
pofile=`basename $1`
|
||||
gmofile=`echo $pofile | sed 's/po$/gmo/'`
|
||||
test $pofile != '' -a $pofile != $gmofile || {
|
||||
echo "File $file is not a po file"
|
||||
warning "File $1 is not a po file"
|
||||
unset origdir dir pofile gmofile
|
||||
return
|
||||
}
|
||||
|
||||
(
|
||||
cd $dir
|
||||
# $output is a string of the form
|
||||
# '"msg_tr" => A, "msg_fu" => B, "msg_nt" => C'
|
||||
# where A, B, C are extracted from the process of generating the .gmo
|
||||
# file
|
||||
run_msgfmt $pofile $gmofile
|
||||
unset dir
|
||||
|
||||
# earching for a string of the form
|
||||
# '"Last-Translator: Michael Schmitt <Michael.Schmitt@teststep.org>\n"'
|
||||
translator='"translator" => ""'
|
||||
email='"email" => ""'
|
||||
|
||||
input=`grep "Last-Translator" $pofile` && {
|
||||
input=`echo $input | sed 's/ */ /g' | cut -d ' ' -f 2-`
|
||||
|
||||
translator=`echo $input | cut -d '<' -f 1 | sed 's/ *$//'`
|
||||
translator='"translator" => "'$translator'"'
|
||||
|
||||
email=`echo $input | cut -d '<' -f 2 | cut -d '>' -f 1`
|
||||
email='"email" => "'$email'"'
|
||||
}
|
||||
langcode=`echo $pofile | sed 's/\.po$//'`
|
||||
|
||||
# Searching for a string of the form
|
||||
# '"PO-Revision-Date: 2003-01-18 03:00+0100\n"'
|
||||
date=`grep 'Revision-Date' $pofile | sed 's/ */ /g' | cut -d ' ' -f 2`
|
||||
date='"date" => "'$date'"'
|
||||
|
||||
langcode=`echo $pofile | sed 's/\.po//'`
|
||||
echo "array ( 'langcode' => '"$langcode"',"
|
||||
echo ${output},
|
||||
echo ${translator}, ${email},
|
||||
echo "${date} )"
|
||||
)
|
||||
# Searching for a string of the form
|
||||
# '"Last-Translator: Michael Schmitt <Michael.Schmitt@teststep.org>\n"'
|
||||
translator=
|
||||
email=
|
||||
input=`grep "Last-Translator" $pofile` && {
|
||||
input=`echo $input | sed 's/ */ /g' | cut -d ' ' -f 2-`
|
||||
|
||||
translator=`echo $input | cut -d '<' -f 1 | sed 's/ *$//'`
|
||||
email=`echo $input | cut -d '<' -f 2 | cut -d '>' -f 1`
|
||||
}
|
||||
unset input
|
||||
|
||||
# Run msgfmt on the pofile, filling $message with the raw info.
|
||||
message=`$msgfmt --statistics -o $gmofile $pofile 2>&1 | grep "^[1-9]"` || {
|
||||
warning "Unable to run msgfmt successfully on file $1"
|
||||
cg $origdir
|
||||
unset origdir pofile gmofile
|
||||
return
|
||||
}
|
||||
unset pofile gmofile
|
||||
|
||||
extract_number "$message" 'translated'
|
||||
translated=$number
|
||||
|
||||
extract_number "$message" 'fuzzy'
|
||||
fuzzy=$number
|
||||
|
||||
extract_number "$message" 'untranslated'
|
||||
untranslated=$number
|
||||
unset message number
|
||||
|
||||
output=`echo "$template" | sed "s/LC/$langcode/; \
|
||||
s/TR/$translated/; s/FU/$fuzzy/; s/NT/$untranslated/; \
|
||||
s/AUTHOR/$translator/; s/EMAIL/$email/; s/DATE/$date/"`
|
||||
|
||||
unset langcode date translator email untranslated fuzzy translated
|
||||
cd $origdir
|
||||
unset origdir
|
||||
}
|
||||
|
||||
|
||||
# The head of the generated php file.
|
||||
dump_head () {
|
||||
cat <<EOF
|
||||
<?
|
||||
@ -137,10 +153,11 @@ EOF
|
||||
}
|
||||
|
||||
|
||||
# The foot of the generated php file.
|
||||
dump_tail () {
|
||||
cat <<EOF
|
||||
<?
|
||||
\$lang = array(
|
||||
<?
|
||||
\$lang = array(
|
||||
'bg' => 'Bulgarian',
|
||||
'ca' => 'Catalan',
|
||||
'cs' => 'Czech',
|
||||
@ -163,41 +180,41 @@ cat <<EOF
|
||||
'sl' => 'Slovenian',
|
||||
'sv' => 'Swedish',
|
||||
'tr' => 'Turkish',
|
||||
'wa' => 'Wallon'
|
||||
);
|
||||
'wa' => 'Walloon'
|
||||
);
|
||||
|
||||
\$noOfMsg = \$podata[0]['msg_tr'] + \$podata[0]['msg_fu'] + \$podata[0]['msg_nt'];
|
||||
\$noOfMsg = \$podata[0]['msg_tr'] + \$podata[0]['msg_fu'] + \$podata[0]['msg_nt'];
|
||||
|
||||
function cmp (\$a, \$b) {
|
||||
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");
|
||||
?>
|
||||
usort (\$podata, "cmp");
|
||||
?>
|
||||
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
<p>
|
||||
The following table details the current state of the translations of the
|
||||
LyX GUI for the main LyX development branch (currently 1.3.0cvs).
|
||||
Unfortunately, only a few languages are well-supported. The LyX term may,
|
||||
therefore, decide to exclude some of the translations from a formal
|
||||
release in order not to confuse the user with a strongly mixed-language
|
||||
interface.
|
||||
</p>
|
||||
<p>
|
||||
Explanation:
|
||||
</p>
|
||||
<ul>
|
||||
</p>
|
||||
<ul>
|
||||
<li><i>Translated:</i> The number of translated messages</li>
|
||||
<li><i>Fuzzy:</i> The number of fuzzy messages; these are not considered
|
||||
for LyX output but solely serve as a hint for the translators</li>
|
||||
<li><i>Untranslated:</i> The number of untranslated messages; the
|
||||
default language (i.e., English) will be used in the LyX outputs</li>
|
||||
</ul>
|
||||
<table class="center" frame="box" rules="all" border="2" cellpadding="5">
|
||||
<thead>
|
||||
</ul>
|
||||
<table class="center" frame="box" rules="all" border="2" cellpadding="5">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Language</td>
|
||||
<td>Translated</td>
|
||||
@ -206,10 +223,10 @@ cat <<EOF
|
||||
<td>Revision Date</td>
|
||||
<td>Translator</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?
|
||||
while (list(\$foo,\$info) = each(\$podata)) {
|
||||
</thead>
|
||||
<tbody>
|
||||
<?
|
||||
while (list(\$foo,\$info) = each(\$podata)) {
|
||||
print "<tr>";
|
||||
|
||||
if ( \$info['msg_tr'] > \$noOfMsg * 2 / 3 ) {
|
||||
@ -252,34 +269,35 @@ cat <<EOF
|
||||
print "</td>";
|
||||
|
||||
print "</tr>\n";
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?
|
||||
include("end.php3");
|
||||
?>
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?
|
||||
include("end.php3");
|
||||
?>
|
||||
EOF
|
||||
}
|
||||
|
||||
|
||||
# The main body of the script
|
||||
msgfmt=`type msgfmt | sed 's/msgfmt is *//'`
|
||||
test msgfmt != '' || error "Unable to find 'msgfmt'"
|
||||
msgfmt=`which msgfmt`
|
||||
test $msgfmt != '' || error "Unable to find 'msgfmt'. Cannot proceed."
|
||||
|
||||
dump_head
|
||||
|
||||
while [ $# -ne 0 ]
|
||||
do
|
||||
dump_stats $1
|
||||
run_msgfmt $1
|
||||
shift
|
||||
if [ $# -eq 0 ]; then
|
||||
echo ');'
|
||||
echo "${output});"
|
||||
echo '?>'
|
||||
else
|
||||
echo ','
|
||||
echo "${output},"
|
||||
echo
|
||||
fi
|
||||
done
|
||||
|
||||
dump_tail
|
||||
|
||||
# The end
|
||||
|
Loading…
Reference in New Issue
Block a user