Don't alter source levels anymore

- Build them in another directory.
- That "other" directory is the cmake binary dir.
dev-ui
Didier Raboud 2013-01-02 10:19:04 +01:00
parent 1b2ee98e27
commit 124133ec9f
2 changed files with 14 additions and 8 deletions

View File

@ -5,7 +5,7 @@ find_program(PO4A po4a)
if(PO4A)
add_custom_command(OUTPUT levels_i18n
COMMAND ./gen_levels_xml.sh
COMMAND ./gen_levels_xml.sh ${CMAKE_CURRENT_BINARY_DIR}/
COMMAND touch ${CMAKE_CURRENT_BINARY_DIR}/levels_i18n
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Handle level instruction translations"
@ -13,6 +13,5 @@ if(PO4A)
add_custom_target(translate_levels ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/levels_i18n)
endif()
file(GLOB levelfiles "${CMAKE_CURRENT_SOURCE_DIR}/*.txt")
list(REMOVE_ITEM levelfiles "${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt")
file(GLOB levelfiles "${CMAKE_CURRENT_BINARY_DIR}/*.txt")
install(FILES ${levelfiles} DESTINATION ${COLOBOT_INSTALL_DATA_DIR}/levels/)

View File

@ -2,6 +2,13 @@
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
lang_short="E F" # P"
lang_long="en fr" # pl"
@ -31,6 +38,7 @@ fi
for lang in $lang_short; do
dot=".";
langcode="";
src_dotlang=".$lang";
case $lang in
E) dot="";;
F) langcode=fr;;
@ -42,7 +50,7 @@ for lang in $lang_short; do
echo "<h1><!-- Level: $levelfile --></h1>" >> $allsfile
for key in Title Resume ScriptName; do
for subkey in text resume; do
subval=$(grep "^$key.$lang.*$subkey" $levelfileorig | sed -e "s/^.*$subkey=\"\([^\"]*\)\".*$/\1/")
subval=$(grep "^$key$src_dotlang.*$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 "<p type=\"$key $subkey\">$levelfile:$subval</p>" >> $allsfile
@ -114,9 +122,9 @@ echo -n "* Inject translation in level files: "
for levelfile in $(ls *.txt); do
rootfilename=$(echo $levelfile | sed 's/\.txt$//g')
mv $levelfile $levelfile.old
for lang in $lang_long; do
dotlang=".$lang"
langcode="";
case $lang in
en) dotlang=""; langcode=".E";;
fr) langcode=".F";;
@ -134,13 +142,12 @@ for levelfile in $(ls *.txt); do
fi
done
if [ -n "$lineend" ]; then
echo "$key$langcode$lineend" >> $levelfile
echo "$key$langcode$lineend" >> $outdir/$levelfile
fi
done
fi
done
sed -e '/^Title/d;/^Resume/d;/^ScriptName/d' $levelfile.old >> $levelfile
rm $levelfile.old
sed -e '/^Title/d;/^Resume/d;/^ScriptName/d' $levelfile >> $outdir/$levelfile
done
echo "done."