diff options
Diffstat (limited to 'cmake/opentrack-i18n.cmake')
| -rw-r--r-- | cmake/opentrack-i18n.cmake | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/cmake/opentrack-i18n.cmake b/cmake/opentrack-i18n.cmake new file mode 100644 index 00000000..1f0c67d9 --- /dev/null +++ b/cmake/opentrack-i18n.cmake @@ -0,0 +1,97 @@ +include_guard(GLOBAL) + +add_custom_target(i18n-lupdate) +add_custom_target(i18n-lrelease DEPENDS i18n-lupdate) +add_custom_target(i18n ALL DEPENDS i18n-lrelease) + +function(otr_i18n_for_target_directory n) + set(k "opentrack-${n}") + + get_property(lupdate-binary TARGET "${Qt5_LUPDATE_EXECUTABLE}" PROPERTY IMPORTED_LOCATION) + + #make_directory("${CMAKE_CURRENT_BINARY_DIR}/lang") + + set(ts-files "") + foreach(k ${opentrack_all-translations}) + list(APPEND ts-files "${CMAKE_CURRENT_SOURCE_DIR}/lang/${k}.ts") + set_property(GLOBAL APPEND PROPERTY "opentrack-ts-files-${k}" "${CMAKE_CURRENT_SOURCE_DIR}/lang/${k}.ts") + endforeach() + set(stamp "${CMAKE_CURRENT_BINARY_DIR}/lupdate.stamp") + + foreach(i ${opentrack_all-translations}) + set(t "${CMAKE_CURRENT_SOURCE_DIR}/lang/${i}.ts") + set(input "${${k}-all}") + if (NOT EXISTS "${t}") + file(MAKE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/lang") + file(READ "${CMAKE_SOURCE_DIR}/cmake/translation-stub.ts" stub) + string(REPLACE "@LANG@" "${i}" stub "${stub}") + file(WRITE "${t}" "${stub}") + endif() + endforeach() + + # all sorts of problems + if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") + set(to-null "2>NUL") + else() + set(to-null "2>/dev/null") + endif() + + add_custom_command(OUTPUT "${stamp}" + COMMAND "${lupdate-binary}" + -I "${CMAKE_SOURCE_DIR}" + -silent + -recursive + -no-obsolete + -locations none + . + -ts ${ts-files} + ${to-null} + COMMAND "${CMAKE_COMMAND}" -E touch "${stamp}" + #BYPRODUCTS ${ts-files} + DEPENDS "opentrack-${n}" + COMMENT "Running lupdate for ${n}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") + set(target-name "i18n-module-${n}") + add_custom_target(${target-name} DEPENDS "${stamp}" COMMENT "") + add_dependencies(i18n-lupdate ${target-name}) +endfunction() + +function(otr_merge_translations) + otr_escape_string(i18n-pfx "${opentrack-i18n}") + #install(CODE "message(FATAL_ERROR \"foo \${CMAKE_INSTALL_PREFIX}\")") + #install(CODE "file(REMOVE_RECURSE \"\${CMAKE_INSTALL_PREFIX}/${i18n-pfx}\")") + + foreach(i ${opentrack_all-translations}) + get_property(ts-files GLOBAL PROPERTY "opentrack-ts-files-${i}") + get_property(lrelease-binary TARGET "${Qt5_LRELEASE_EXECUTABLE}" PROPERTY IMPORTED_LOCATION) + + set(qm-output "${CMAKE_BINARY_DIR}/${i}.qm") + + # whines about duplicate messages since tracker-pt-base is static + if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") + set(to-null "2>NUL") + else() + set(to-null "2>/dev/null") + endif() + + add_custom_command(OUTPUT "${qm-output}" + COMMAND "${lrelease-binary}" + -nounfinished + -silent + #-verbose + ${ts-files} + -qm "${qm-output}" + ${to-null} + DEPENDS i18n-lupdate ${ts-files} + COMMENT "Running lrelease for ${i}" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}") + + set(target-name i18n-qm-${i}) + add_custom_target(${target-name} DEPENDS "${qm-output}") + add_dependencies(i18n-lrelease ${target-name}) + + install(FILES "${qm-output}" + DESTINATION "${opentrack-i18n}" + PERMISSIONS ${opentrack-perms-file}) + endforeach() +endfunction() |
