diff --git a/levels-i18n/CMakeLists.txt b/levels-i18n/CMakeLists.txt index be9649f1..764550a8 100644 --- a/levels-i18n/CMakeLists.txt +++ b/levels-i18n/CMakeLists.txt @@ -31,90 +31,90 @@ set(_levels_i18n_target "levels_i18n") file(GLOB levelfiles "${CMAKE_CURRENT_SOURCE_DIR}/${SCENEFILE}") foreach(levelfile ${levelfiles}) - if(DEFINED SCENEDEST) - get_filename_component(_scenedest ${SCENEDEST} NAME) - else() - get_filename_component(_scenedest ${levelfile} NAME) - endif() - get_filename_component(_levelfile ${levelfile} NAME_WE) - if(PO4A AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PODIR}") - file(GLOB pofiles "${CMAKE_CURRENT_SOURCE_DIR}/${PODIR}/*.po") - add_custom_command(OUTPUT ${_levels_i18n_target}/${_scenedest} - COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target} - COMMAND ${LEVELS_I18N_PATH}/scripts/03_inject_translations.sh ${levelfile} ${CMAKE_CURRENT_BINARY_DIR}/${LEVEL_CODENAME}/${_levelfile} ${PODIR} ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target}/${_scenedest} - DEPENDS po4a-${LEVEL_CODENAME} ${pofiles} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - COMMENT "${LEVEL_CODENAME}: Inject translation in ${_scenedest}" - ) - else() - add_custom_command(OUTPUT ${_levels_i18n_target}/${_scenedest} - COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target} - COMMAND cp ${levelfile} ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target}/${_scenedest} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - COMMENT "${LEVEL_CODENAME}: Move untranslatable ${_scenedest}" - ) - endif() - add_custom_target(level_i18n-${LEVEL_CODENAME}_${_levelfile} ALL DEPENDS ${_levels_i18n_target}/${_scenedest}) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target}/${_scenedest} - DESTINATION ${LEVEL_INSTALL_DATA_DIR}) + if(DEFINED SCENEDEST) + get_filename_component(_scenedest ${SCENEDEST} NAME) + else() + get_filename_component(_scenedest ${levelfile} NAME) + endif() + get_filename_component(_levelfile ${levelfile} NAME_WE) + if(PO4A AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PODIR}") + file(GLOB pofiles "${CMAKE_CURRENT_SOURCE_DIR}/${PODIR}/*.po") + add_custom_command(OUTPUT ${_levels_i18n_target}/${_scenedest} + COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target} + COMMAND ${LEVELS_I18N_PATH}/scripts/03_inject_translations.sh ${levelfile} ${CMAKE_CURRENT_BINARY_DIR}/${LEVEL_CODENAME}/${_levelfile} ${PODIR} ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target}/${_scenedest} + DEPENDS po4a-${LEVEL_CODENAME} ${pofiles} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMENT "${LEVEL_CODENAME}: Inject translation in ${_scenedest}" + ) + else() + add_custom_command(OUTPUT ${_levels_i18n_target}/${_scenedest} + COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target} + COMMAND cp ${levelfile} ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target}/${_scenedest} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMENT "${LEVEL_CODENAME}: Move untranslatable ${_scenedest}" + ) + endif() + add_custom_target(level_i18n-${LEVEL_CODENAME}_${_levelfile} ALL DEPENDS ${_levels_i18n_target}/${_scenedest}) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target}/${_scenedest} + DESTINATION ${LEVEL_INSTALL_DATA_DIR}) endforeach() file(GLOB helpfiles "${CMAKE_CURRENT_SOURCE_DIR}/${HELPDIR}/E/*.txt") list(SORT helpfiles) if(PO4A AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PODIR}") - foreach(helpfile ${helpfiles}) - get_filename_component(_helpfile_we ${helpfile} NAME_WE) - get_filename_component(_helpfile ${helpfile} NAME) - - ### STEP 4 # Put translated help files in the correct place - set(_help_i18n_target "help_i18n_${LEVEL_CODENAME}_${_helpfile_we}") - add_custom_command(OUTPUT moved-all-${LEVEL_CODENAME}-${_helpfile} - COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${_help_i18n_target} - COMMAND ${LEVELS_I18N_PATH}/scripts/04_move_helpfiles_to_paths.sh ${LEVEL_CODENAME} ${LEVEL_CODENAME}-help/${_helpfile} ${_help_i18n_target} '${HELPDIR}' '${HELPDEST}' ${CMAKE_CURRENT_SOURCE_DIR} > moved-all-${LEVEL_CODENAME}-${_helpfile} - DEPENDS po4a-${LEVEL_CODENAME} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "${LEVEL_CODENAME}: Move ${_helpfile} translations around" - ) - add_custom_target(help_i18n-${LEVEL_CODENAME}_${_helpfile_we} ALL DEPENDS moved-all-${LEVEL_CODENAME}-${_helpfile}) - install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_help_i18n_target}/ - DESTINATION ${HELP_INSTALL_DATA_DIR}) + foreach(helpfile ${helpfiles}) + get_filename_component(_helpfile_we ${helpfile} NAME_WE) + get_filename_component(_helpfile ${helpfile} NAME) - endforeach() + ### STEP 4 # Put translated help files in the correct place + set(_help_i18n_target "help_i18n_${LEVEL_CODENAME}_${_helpfile_we}") + add_custom_command(OUTPUT moved-all-${LEVEL_CODENAME}-${_helpfile} + COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${_help_i18n_target} + COMMAND ${LEVELS_I18N_PATH}/scripts/04_move_helpfiles_to_paths.sh ${LEVEL_CODENAME} ${LEVEL_CODENAME}-help/${_helpfile} ${_help_i18n_target} '${HELPDIR}' '${HELPDEST}' ${CMAKE_CURRENT_SOURCE_DIR} > moved-all-${LEVEL_CODENAME}-${_helpfile} + DEPENDS po4a-${LEVEL_CODENAME} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "${LEVEL_CODENAME}: Move ${_helpfile} translations around" + ) + add_custom_target(help_i18n-${LEVEL_CODENAME}_${_helpfile_we} ALL DEPENDS moved-all-${LEVEL_CODENAME}-${_helpfile}) + install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_help_i18n_target}/ + DESTINATION ${HELP_INSTALL_DATA_DIR}) + + endforeach() elseif(DEFINED HELPDIR AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${HELPDIR}") - set(_help_i18n_target "help_i18n_${LEVEL_CODENAME}") - add_custom_command(OUTPUT moved-all-${LEVEL_CODENAME} - COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${_help_i18n_target} - COMMAND ${LEVELS_I18N_PATH}/scripts/05_move_untranslated_helpfiles_to_paths.sh '${_help_i18n_target}' '${HELPDEST}' '${CMAKE_CURRENT_SOURCE_DIR}/${HELPDIR}' > moved-all-${LEVEL_CODENAME}-${_helpfile} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "${LEVEL_CODENAME}: Move untranslatable help files" - ) - add_custom_target(help_i18n-${LEVEL_CODENAME} ALL DEPENDS moved-all-${LEVEL_CODENAME}) - install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_help_i18n_target}/ - DESTINATION ${HELP_INSTALL_DATA_DIR}) + set(_help_i18n_target "help_i18n_${LEVEL_CODENAME}") + add_custom_command(OUTPUT moved-all-${LEVEL_CODENAME} + COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${_help_i18n_target} + COMMAND ${LEVELS_I18N_PATH}/scripts/05_move_untranslated_helpfiles_to_paths.sh '${_help_i18n_target}' '${HELPDEST}' '${CMAKE_CURRENT_SOURCE_DIR}/${HELPDIR}' > moved-all-${LEVEL_CODENAME}-${_helpfile} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "${LEVEL_CODENAME}: Move untranslatable help files" + ) + add_custom_target(help_i18n-${LEVEL_CODENAME} ALL DEPENDS moved-all-${LEVEL_CODENAME}) + install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_help_i18n_target}/ + DESTINATION ${HELP_INSTALL_DATA_DIR}) endif() #### STEP 1 # Create po4a.cfg file out of the list of files add_custom_command(OUTPUT po4a-${LEVEL_CODENAME}.cfg - COMMAND ${LEVELS_I18N_PATH}/scripts/01_create_po4a_file.sh ${CMAKE_CURRENT_SOURCE_DIR} ${PODIR} ${LEVEL_CODENAME} '${SCENEFILE}' '${HELPDIR}/E' > ${CMAKE_CURRENT_BINARY_DIR}/po4a-${LEVEL_CODENAME}.cfg - COMMENT "${LEVEL_CODENAME}: Create po4a configuration file" - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) + COMMAND ${LEVELS_I18N_PATH}/scripts/01_create_po4a_file.sh ${CMAKE_CURRENT_SOURCE_DIR} ${PODIR} ${LEVEL_CODENAME} '${SCENEFILE}' '${HELPDIR}/E' > ${CMAKE_CURRENT_BINARY_DIR}/po4a-${LEVEL_CODENAME}.cfg + COMMENT "${LEVEL_CODENAME}: Create po4a configuration file" + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) if(PO4A AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${PODIR}) - #### STEP 2 # Run po4a - file(GLOB pofiles "${CMAKE_CURRENT_SOURCE_DIR}/${PODIR}/*.po") - add_custom_command(OUTPUT po4a-ran-${LEVEL_CODENAME} - COMMAND ${LEVELS_I18N_PATH}/scripts/02_run_po4a.sh ${LEVELS_I18N_PATH} ${CMAKE_CURRENT_BINARY_DIR}/po4a-${LEVEL_CODENAME}.cfg - COMMAND touch po4a-ran-${LEVEL_CODENAME} - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/po4a-${LEVEL_CODENAME}.cfg ${pofiles} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "${LEVEL_CODENAME}: Run po4a to generate the translated files out of the .po files") - add_custom_target(po4a-${LEVEL_CODENAME} DEPENDS po4a-ran-${LEVEL_CODENAME}) + #### STEP 2 # Run po4a + file(GLOB pofiles "${CMAKE_CURRENT_SOURCE_DIR}/${PODIR}/*.po") + add_custom_command(OUTPUT po4a-ran-${LEVEL_CODENAME} + COMMAND ${LEVELS_I18N_PATH}/scripts/02_run_po4a.sh ${LEVELS_I18N_PATH} ${CMAKE_CURRENT_BINARY_DIR}/po4a-${LEVEL_CODENAME}.cfg + COMMAND touch po4a-ran-${LEVEL_CODENAME} + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/po4a-${LEVEL_CODENAME}.cfg ${pofiles} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "${LEVEL_CODENAME}: Run po4a to generate the translated files out of the .po files") + add_custom_target(po4a-${LEVEL_CODENAME} DEPENDS po4a-ran-${LEVEL_CODENAME}) else() - message(STATUS "${LEVEL_CODENAME}: No translation needed or possible") - file(GLOB levelfiles "${CMAKE_CURRENT_SOURCE_DIR}/levels/*.txt") - install(FILES ${levelfiles} DESTINATION ${LEVEL_INSTALL_DATA_DIR}/) + message(STATUS "${LEVEL_CODENAME}: No translation needed or possible") + file(GLOB levelfiles "${CMAKE_CURRENT_SOURCE_DIR}/levels/*.txt") + install(FILES ${levelfiles} DESTINATION ${LEVEL_INSTALL_DATA_DIR}/) endif() diff --git a/levels-i18n/scripts/01_create_po4a_file.sh b/levels-i18n/scripts/01_create_po4a_file.sh index ad90a089..5f4411d5 100755 --- a/levels-i18n/scripts/01_create_po4a_file.sh +++ b/levels-i18n/scripts/01_create_po4a_file.sh @@ -11,8 +11,8 @@ SCENEFILE=$4 # relative HELPDIR=$5 # relative if [ ! -d $LEVEL_CODENAME-po -o -h $LEVEL_CODENAME-po ]; then - rm -f $LEVEL_CODENAME-po - ln -sf $srcdir/$PODIR $LEVEL_CODENAME-po + rm -f $LEVEL_CODENAME-po + ln -sf $srcdir/$PODIR $LEVEL_CODENAME-po fi echo "[po_directory] $LEVEL_CODENAME-po" @@ -24,31 +24,31 @@ echo "E" > ${LEVEL_CODENAME}.languagecode mkdir -p $LEVEL_CODENAME if [ -n "$SCENEFILE" ]; then - # Levels are precompiled, they are already in the current dir - for scene in $(cd $srcdir/; ls $SCENEFILE); do - scene_=$(basename $scene .txt) - $(cd $LEVEL_CODENAME; - if [ ! -f $scene_.txt -o -h $scene_.txt ]; then - rm -f $scene_.txt; - ln -sf $srcdir/$scene $scene_.txt; - fi - ) - echo "[type:colobotlevel] $LEVEL_CODENAME/$scene_.txt \$lang:$LEVEL_CODENAME/$scene_.\$lang.txt" - done + # Levels are precompiled, they are already in the current dir + for scene in $(cd $srcdir/; ls $SCENEFILE); do + scene_=$(basename $scene .txt) + $(cd $LEVEL_CODENAME; + if [ ! -f $scene_.txt -o -h $scene_.txt ]; then + rm -f $scene_.txt; + ln -sf $srcdir/$scene $scene_.txt; + fi + ) + echo "[type:colobotlevel] $LEVEL_CODENAME/$scene_.txt \$lang:$LEVEL_CODENAME/$scene_.\$lang.txt" + done fi # Create symlink for relative paths in po4a mkdir -p $LEVEL_CODENAME-help if [ -d $srcdir/$HELPDIR ]; then - for helpfile in $(cd $srcdir/$HELPDIR; ls *.txt); do - helpfile_=$(basename $helpfile .txt) - $(cd $LEVEL_CODENAME-help; - if [ ! -f $helpfile_.txt -o -h $helpfile_.txt ]; then - rm -f $helpfile_.txt; - ln -sf $srcdir/$HELPDIR/$helpfile $helpfile_.txt; - fi - ) - echo "[type:colobothelp] $LEVEL_CODENAME-help/$helpfile_.txt \$lang:$LEVEL_CODENAME-help/$helpfile_.\$lang.txt" - done + for helpfile in $(cd $srcdir/$HELPDIR; ls *.txt); do + helpfile_=$(basename $helpfile .txt) + $(cd $LEVEL_CODENAME-help; + if [ ! -f $helpfile_.txt -o -h $helpfile_.txt ]; then + rm -f $helpfile_.txt; + ln -sf $srcdir/$HELPDIR/$helpfile $helpfile_.txt; + fi + ) + echo "[type:colobothelp] $LEVEL_CODENAME-help/$helpfile_.txt \$lang:$LEVEL_CODENAME-help/$helpfile_.\$lang.txt" + done fi diff --git a/levels-i18n/scripts/02_run_po4a.sh b/levels-i18n/scripts/02_run_po4a.sh index a9811958..8c93f233 100755 --- a/levels-i18n/scripts/02_run_po4a.sh +++ b/levels-i18n/scripts/02_run_po4a.sh @@ -5,6 +5,6 @@ set -e LEVELS_I18N_PATH=$1 PO4A_FILE=$2 -export PERLLIB=${LEVELS_I18N_PATH}/scripts/perllib +export PERL5LIB=${LEVELS_I18N_PATH}/scripts/perllib${PERL5LIB+:}$PERL5LIB po4a -k0 -v -f $PO4A_FILE diff --git a/levels-i18n/scripts/03_inject_translations.sh b/levels-i18n/scripts/03_inject_translations.sh index 09c1f8d2..a3dc69d3 100755 --- a/levels-i18n/scripts/03_inject_translations.sh +++ b/levels-i18n/scripts/03_inject_translations.sh @@ -17,14 +17,14 @@ echo -n "" > $targetfile # Make sure we take english (first, but it's not really important) for lang in en $linguas; do - dotlang=".$lang" - if [ "$lang" = "en" ]; then - dotlang=""; - fi - i18nfile=$translations_prefix$dotlang.txt - if [ -f $i18nfile ]; then - sed -n '/^Title/p;/^Resume/p;/^ScriptName/p' $i18nfile >> $targetfile - fi + dotlang=".$lang" + if [ "$lang" = "en" ]; then + dotlang=""; + fi + i18nfile=$translations_prefix$dotlang.txt + if [ -f $i18nfile ]; then + sed -n '/^Title/p;/^Resume/p;/^ScriptName/p' $i18nfile >> $targetfile + fi done echo "// End of level headers translations" >> $targetfile echo "" >> $targetfile diff --git a/levels-i18n/scripts/04_move_helpfiles_to_paths.sh b/levels-i18n/scripts/04_move_helpfiles_to_paths.sh index 45b7c372..5506c9f9 100755 --- a/levels-i18n/scripts/04_move_helpfiles_to_paths.sh +++ b/levels-i18n/scripts/04_move_helpfiles_to_paths.sh @@ -14,27 +14,27 @@ orig_l10n_dir=$(dirname $orig_file) # Get all language codes for lcodef in $(ls ${codename}.*.languagecode); do - # Get the one-letter language code - LCODE=$(cat $lcodef) - lang=$(echo $lcodef | sed -e 's/.*\.\(.*\)\.languagecode/\1/') - # Foreach, rename the source files - mkdir -p $dest_dir/$LCODE/$HELPDEST + # Get the one-letter language code + LCODE=$(cat $lcodef) + lang=$(echo $lcodef | sed -e 's/.*\.\(.*\)\.languagecode/\1/') + # Foreach, rename the source files + mkdir -p $dest_dir/$LCODE/$HELPDEST - orig_trans=$CMAKE_CURRENT_SOURCE_DIR/$HELPDIR/$LCODE/$orig_l10n_file.txt + orig_trans=$CMAKE_CURRENT_SOURCE_DIR/$HELPDIR/$LCODE/$orig_l10n_file.txt - # Copy the translated file to the correct pathi - if [ -e $orig_l10n_dir/$orig_l10n_file.$lang.txt ]; then - cp -Lf $orig_l10n_dir/$orig_l10n_file.$lang.txt $dest_dir/$LCODE/$HELPDEST/$orig_l10n_file.txt - # Mark the source file that the translation is supposed to replace # Replace false by true to make it happen - if [ -e $orig_trans ] && false; then - sed -e '/Obsoleted translation/d;/This translated file/d' $orig_trans >$orig_trans.temp - echo "\\\\b; Obsoleted translation\nThis translated file has been replaced by it's PO-based counterpart and should be removed.\n" > $orig_trans - cat $orig_trans.temp >> $orig_trans - rm $orig_trans.temp - fi - elif [ -e $orig_trans ]; then - cp -Lf $orig_trans $dest_dir/$LCODE/$HELPDEST/$orig_l10n_file.txt - fi + # Copy the translated file to the correct pathi + if [ -e $orig_l10n_dir/$orig_l10n_file.$lang.txt ]; then + cp -Lf $orig_l10n_dir/$orig_l10n_file.$lang.txt $dest_dir/$LCODE/$HELPDEST/$orig_l10n_file.txt + # Mark the source file that the translation is supposed to replace # Replace false by true to make it happen + if [ -e $orig_trans ] && false; then + sed -e '/Obsoleted translation/d;/This translated file/d' $orig_trans >$orig_trans.temp + echo "\\\\b; Obsoleted translation\nThis translated file has been replaced by it's PO-based counterpart and should be removed.\n" > $orig_trans + cat $orig_trans.temp >> $orig_trans + rm $orig_trans.temp + fi + elif [ -e $orig_trans ]; then + cp -Lf $orig_trans $dest_dir/$LCODE/$HELPDEST/$orig_l10n_file.txt + fi done mkdir -p $dest_dir/E/$HELPDEST diff --git a/levels-i18n/scripts/05_move_untranslated_helpfiles_to_paths.sh b/levels-i18n/scripts/05_move_untranslated_helpfiles_to_paths.sh index 150fe8da..d3e9655d 100755 --- a/levels-i18n/scripts/05_move_untranslated_helpfiles_to_paths.sh +++ b/levels-i18n/scripts/05_move_untranslated_helpfiles_to_paths.sh @@ -7,8 +7,8 @@ HELPDEST=$2 HELPDIR_FULL=$3 for langdir in $(ls ${HELPDIR_FULL}); do - if [ "$langdir" != "po" ]; then - mkdir -p ${HELP_I18N_TARGET}/$langdir/${HELPDEST} - cp ${HELPDIR_FULL}/$langdir/* ${HELP_I18N_TARGET}/$langdir/${HELPDEST}/ - fi -done + if [ "$langdir" != "po" ]; then + mkdir -p ${HELP_I18N_TARGET}/$langdir/${HELPDEST} + cp ${HELPDIR_FULL}/$langdir/* ${HELP_I18N_TARGET}/$langdir/${HELPDEST}/ + fi +done diff --git a/levels/CMakeLists.txt b/levels/CMakeLists.txt index 46fcda22..d1cd2264 100644 --- a/levels/CMakeLists.txt +++ b/levels/CMakeLists.txt @@ -14,7 +14,7 @@ foreach(levelheader_po ${levelheaders_po}) set(HELPDEST "") message(STATUS "Manage translations for level headers '${LEVEL_CODENAME}*'") include(${LEVELS_I18N_PATH}/CMakeLists.txt) -endforeach(levelheader_po) +endforeach() # Handle all levels' translations file(GLOB levelcategories_paths ${CMAKE_CURRENT_SOURCE_DIR}/*/scene.txt) @@ -26,6 +26,6 @@ foreach(levelcategory_path ${levelcategories_paths}) set(PODIR "${LEVEL_CODENAME}/po/") set(HELPDIR "${LEVEL_CODENAME}/help/") set(HELPDEST "") - MESSAGE(STATUS "Managing translations for level '${LEVEL_CODENAME}'") + message(STATUS "Managing translations for level '${LEVEL_CODENAME}'") include(${LEVELS_I18N_PATH}/CMakeLists.txt) -endforeach(levelcategory_path) +endforeach()