Rewrite level files translations
parent
83c923a3d1
commit
526db5373c
|
@ -44,7 +44,7 @@ function(generate_chaptertitles_i18n result_translated_chaptertitle_files source
|
|||
|
||||
foreach(po_file ${po_files})
|
||||
get_filename_component(po_file_name ${po_file} NAME)
|
||||
# get language code e.g. "de"
|
||||
# get language code e.g. "de.po" -> "de"
|
||||
string(REPLACE ".po" "" language_code ${po_file_name})
|
||||
# generated file for single language
|
||||
set(generated_language_file ${output_chaptertitle_file}.${language_code})
|
||||
|
@ -80,13 +80,94 @@ function(generate_chaptertitles_i18n result_translated_chaptertitle_files source
|
|||
string(REGEX REPLACE "[/\\]" "_" target_suffix ${po_dir})
|
||||
add_custom_target(level_i18n-${target_suffix} ALL DEPENDS ${translation_signalfile} ${po_clean_signalfile})
|
||||
|
||||
# return the translated files
|
||||
set(${result_translated_chaptertitle_files} ${translated_chaptertitle_files} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
##
|
||||
# Generate translated level file using po4a
|
||||
# Generate translated level and help files using po4a
|
||||
##
|
||||
function(generate_scene_i18n translated_scene_file_path source_level_file)
|
||||
# TODO finish level translation...
|
||||
function(generate_level_i18n result_translated_level_file result_translated_help_files source_level_file help_dir po_dir)
|
||||
get_filename_component(abs_po_dir ${po_dir} ABSOLUTE)
|
||||
# generated config file for po4a
|
||||
set(po4a_cfg_file ${LEVELS_I18N_WORK_DIR}/${po_dir}/scene_po4a.cfg)
|
||||
# generated dummy file for translation of "E", "D", "F", "P", etc. language letters
|
||||
set(langchar_file ${LEVELS_I18N_WORK_DIR}/${po_dir}/scene_langchar.txt)
|
||||
|
||||
file(WRITE ${langchar_file} "E")
|
||||
|
||||
# get translations from po directory
|
||||
file(WRITE ${po4a_cfg_file} "[po_directory] ${abs_po_dir}\n")
|
||||
# add content of dummy language file to translation
|
||||
file(APPEND ${po4a_cfg_file} "[type:text] ${langchar_file}")
|
||||
|
||||
get_filename_component(abs_source_level_file ${source_level_file} ABSOLUTE)
|
||||
set(output_level_file ${LEVELS_I18N_WORK_DIR}/${source_level_file})
|
||||
|
||||
# translation rule for scene file
|
||||
file(APPEND ${po4a_cfg_file} "\n[type:colobotlevel] ${abs_source_level_file}")
|
||||
|
||||
file(GLOB po_files ${po_dir}/*.po)
|
||||
foreach(po_file ${po_files})
|
||||
get_filename_component(po_file_name ${po_file} NAME)
|
||||
# get language code e.g. "de.po" -> "de"
|
||||
string(REPLACE ".po" "" language_code ${po_file_name})
|
||||
# generated file for single language
|
||||
set(generated_language_file ${output_level_file}.${language_code})
|
||||
file(APPEND ${po4a_cfg_file} " \\\n ${language_code}:${generated_language_file}")
|
||||
endforeach()
|
||||
|
||||
# translation rules for help files
|
||||
set(output_help_dir ${LEVELS_I18N_WORK_DIR}/${po_dir}/help)
|
||||
set(translated_help_files "")
|
||||
|
||||
file(GLOB help_files ${help_dir}/*.txt)
|
||||
list(SORT help_files)
|
||||
foreach(help_file ${help_files})
|
||||
get_filename_component(help_file_name ${help_file} NAME)
|
||||
|
||||
file(APPEND ${po4a_cfg_file} "\n[type:colobothelp] ${help_file}")
|
||||
foreach(po_file ${po_files})
|
||||
get_filename_component(po_file_name ${po_file} NAME)
|
||||
# get language code e.g. "de.po" -> "de"
|
||||
string(REPLACE ".po" "" language_code ${po_file_name})
|
||||
# get language letter e.g. "de.po" -> "d"
|
||||
string(REGEX REPLACE ".\\.po" "" language_char ${po_file_name})
|
||||
string(TOUPPER ${language_char} language_char)
|
||||
# generated file for single language
|
||||
string(REPLACE ".E." ".${language_char}." generated_help_file_name ${help_file_name})
|
||||
set(generated_help_file ${output_help_dir}/${generated_help_file_name})
|
||||
file(APPEND ${po4a_cfg_file} " \\\n ${language_code}:${generated_help_file}")
|
||||
|
||||
list(APPEND translated_help_files ${generated_help_file})
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
# dummy files to signal that scripts have finished running
|
||||
set(translation_signalfile ${LEVELS_I18N_WORK_DIR}/${po_dir}/translations)
|
||||
set(po_clean_signalfile ${LEVELS_I18N_WORK_DIR}/${po_dir}/po_clean)
|
||||
|
||||
# script to run po4a and consolidate the translations
|
||||
add_custom_command(OUTPUT ${translation_signalfile}
|
||||
COMMAND ${DATA_SOURCE_DIR}/i18n-tools/scripts/create_translations.sh ${abs_source_level_file} ${output_level_file} ${po4a_cfg_file} ${translation_signalfile}
|
||||
DEPENDS ${po_files})
|
||||
|
||||
file(GLOB pot_file ${po_dir}/*.pot)
|
||||
set(po_files ${po_files} ${pot_file})
|
||||
|
||||
# script to do some cleanups in updated *.po and *.pot files
|
||||
string(REPLACE ";" ":" escaped_po_files "${po_files}")
|
||||
add_custom_command(OUTPUT ${po_clean_signalfile}
|
||||
COMMAND ${DATA_SOURCE_DIR}/i18n-tools/scripts/clean_po_files.sh ${escaped_po_files} ${translation_signalfile} ${po_clean_signalfile}
|
||||
DEPENDS ${translation_signalfile}
|
||||
)
|
||||
|
||||
# generate some unique string for target name
|
||||
string(REGEX REPLACE "[/\\]" "_" target_suffix ${po_dir})
|
||||
add_custom_target(level_i18n-${target_suffix} ALL DEPENDS ${translation_signalfile} ${po_clean_signalfile})
|
||||
|
||||
# return the translated files
|
||||
set(${result_translated_level_file} ${output_level_file} PARENT_SCOPE)
|
||||
set(${result_translated_help_files} ${translated_help_files} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
|
|
|
@ -44,17 +44,16 @@ endfunction()
|
|||
# Add level directory
|
||||
##
|
||||
function(add_level level_dir)
|
||||
if(PO4A)
|
||||
generate_scene_i18n(translated_scene_path ${level_dir}/scene.txt)
|
||||
if(PO4A AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${level_dir}/po/)
|
||||
generate_level_i18n(translated_level_file translated_help_files ${level_dir}/scene.txt ${level_dir}/help ${level_dir}/po)
|
||||
else()
|
||||
set(translated_scene_path ${level_dir}/scene.txt)
|
||||
set(translated_level_file ${level_dir}/scene.txt)
|
||||
endif()
|
||||
install(FILES ${translated_scene_path} DESTINATION ${LEVEL_INSTALL_DATA_DIR}/${level_dir})
|
||||
install(FILES ${translated_level_file} DESTINATION ${LEVEL_INSTALL_DATA_DIR}/${level_dir})
|
||||
|
||||
# TODO install help files
|
||||
# if(EXISTS ${level_dir}/help)
|
||||
# install(DIRECTORY ${level_dir}/help DESTINATION ${LEVEL_INSTALL_DATA_DIR}/${level_dir})
|
||||
# endif()
|
||||
file(GLOB original_help_files ${level_dir}/help/*.txt)
|
||||
install(FILES ${original_help_files} DESTINATION ${LEVEL_INSTALL_DATA_DIR}/${level_dir}/help)
|
||||
install(FILES ${translated_help_files} DESTINATION ${LEVEL_INSTALL_DATA_DIR}/${level_dir}/help)
|
||||
endfunction()
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue