#!/bin/sh set -e outdir=$1 if [ -z "$outdir" ] || [ "$outdir" = "." ] || [ ! -d $outdir ]; then echo "No existing output directory provided; syntax is : $0 output_directory" return 1; fi linguas="en fr" categories="defi free lost perso proto" for sc_i in $(seq 1 9); do categories="$categories scene$sc_i" done for tr_i in $(seq 1 7); do categories="$categories train$tr_i" done # Empty categories: "win" common_i18n_ext=xhtml gen_i18n_file () { levelfileorig=$1 common_i18n_file=$2 if [ -z "$levelfileorig" ] || [ ! -f $levelfileorig ]; then echo "No file name provided; syntax is : $0 filename.txt" return 1; fi levelfile=$(echo $levelfileorig | sed -e "s/\.txt$//g") destfile=$levelfile.xml; allsfile=$common_i18n_file.$common_i18n_ext; echo "<$levelfile>" > $destfile echo "
" >> $allsfile for key in Title Resume ScriptName; do for subkey in text resume; do subval=$(grep "^$key\.E.*$subkey" $levelfileorig | sed -e "s/^.*$subkey=\"\([^\"]*\)\".*$/\1/") # Always write entries, even when empty, otherwise breaks po4a-gettextize echo "<${key}_$subkey>$levelfile:$subval${key}_$subkey>" >> $destfile echo "$levelfile:$subval
" >> $allsfile done done echo "$levelfile>" >> $destfile echo "[type:xml] $levelfile.xml \$lang:$levelfile.\$lang.xml" >> $common_i18n_file-po4a.cfg echo -n "." } for category in $categories; do echo "* Category: $category " rm -f $category*.xml rm -f $category-po4a.cfg echo " 0 - Create initial files" echo "[po_directory] $category-po/" > $category-po4a.cfg mkdir -p $category-po echo -n " 1 - Generate transitional source translation files from level files" echo "" > $category.$common_i18n_ext for lang in $linguas; do if [ $lang = "en" ]; then continue; fi; echo "" > $category.$lang.$common_i18n_ext done for level in $(ls $category*.txt); do gen_i18n_file $level $category done echo "" >> $category.$common_i18n_ext echo "done" echo -n " 3 - Generate pristine potfile: " po4a-gettextize -M UTF-8 -f xhtml -m $category.$common_i18n_ext > $category-po/$category.pot 2>/dev/null echo "done" echo -n " 4 - Generate translation files: " for lang in $linguas; do if [ $lang = "en" ]; then continue; fi; echo -n "$lang " echo "" >> $category.$lang.$common_i18n_ext pofile=$category-po/$lang.po if [ ! -f $pofile ]; then sed -e 's/charset=CHARSET/charset=UTF-8/g' $category-po/$category.pot > $pofile fi po4a-updatepo -M UTF-8 -f xhtml -m $category.$common_i18n_ext -p $pofile 2>/dev/null done echo " done" echo -n " 5 - Cleanup po4a infrastructure, run po4a … " po4a -f $category-po4a.cfg 2>/dev/null 1>&2 echo "done" echo -n " 6 - Inject translation in level files: " for levelfile in $(ls $category*.txt); do # Always start afresh rm -f $outdir/$levelfile rootfilename=$(echo $levelfile | sed 's/\.txt$//g') for lang in $linguas; do dotlang=".$lang" langcode=""; case $lang in en) dotlang=""; langcode=".E";; fr) langcode=".F";; pl) langcode=".P";; esac xmlfile=$rootfilename$dotlang.xml echo -n "." if [ -f $xmlfile ]; then for key in Title Resume ScriptName; do lineend="" for subkey in text resume; do keyval=$(grep "^<${key}_${subkey}>" $xmlfile | sed -e "s|^<${key}\_${subkey}>${rootfilename}:\(.*\)<\/${key}\_${subkey}>$|\1|g") if [ -n "$keyval" ]; then lineend="$lineend $subkey=\"$keyval\"" fi done if [ -n "$lineend" ]; then echo "$key$langcode$lineend" >> $outdir/$levelfile fi done fi done sed -e '/^Title/d;/^Resume/d;/^ScriptName/d' $levelfile >> $outdir/$levelfile done echo "done." done