| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- # translations.cmake - Translations using APT's translation system.
- # Copyright (C) 2009, 2016 Julian Andres Klode <jak@debian.org>
- function(apt_add_translation_domain domain)
- set(targets ${ARGN})
- # Build the list of source files of the target
- set(files "")
- foreach(target ${targets})
- get_target_property(source_dir ${target} SOURCE_DIR)
- get_target_property(sources ${target} SOURCES)
- foreach(source ${sources})
- string(SUBSTRING ${source} 0 1 init_char)
- string(COMPARE EQUAL ${init_char} "/" is_absolute)
- if (${is_absolute})
- set(file "${source}")
- else()
- set(file "${source_dir}/${source}")
- endif()
- file(RELATIVE_PATH relfile ${PROJECT_SOURCE_DIR} ${file})
- set(files ${files} ${relfile})
- endforeach()
- target_compile_definitions(${target} PRIVATE -DAPT_DOMAIN="${domain}")
- endforeach()
- # Create the template for this specific sub-domain
- add_custom_command (OUTPUT ${PROJECT_BINARY_DIR}/${domain}.pot
- COMMAND xgettext --add-comments --foreign -k_ -kN_
- -o ${PROJECT_BINARY_DIR}/${domain}.pot ${files}
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
- )
- # Build .mo files
- file(GLOB translations "${PROJECT_SOURCE_DIR}/po/*.po")
- list(SORT translations)
- foreach(file ${translations})
- get_filename_component(langcode ${file} NAME_WE)
- set(outdir ${PROJECT_BINARY_DIR}/locale/${langcode}/LC_MESSAGES)
- file(MAKE_DIRECTORY ${outdir})
- # Command to merge and compile the messages
- add_custom_command(OUTPUT ${outdir}/${domain}.mo
- COMMAND msgmerge -qo - ${file} ${PROJECT_BINARY_DIR}/${domain}.pot |
- msgfmt -o ${outdir}/${domain}.mo -
- DEPENDS ${file} ${PROJECT_BINARY_DIR}/${domain}.pot
- )
- set(mofiles ${mofiles} ${outdir}/${domain}.mo)
- install(FILES ${outdir}/${domain}.mo
- DESTINATION "${CMAKE_INSTALL_LOCALEDIR}/${langcode}/LC_MESSAGES")
- endforeach(file ${translations})
- add_custom_target(nls-${domain} ALL DEPENDS ${mofiles})
- endfunction()
|