# Special targets for translations: # # translations # Converts all PO files to GMO files. Note that it does *not* update # the PO files or the PO templates -- in fact, these files are never # updated automatically. # # generate-pot # Re-creates all POT files unconditionally. # # update-po # Updates all PO files unconditionally. Note that it takes care of # updating the POT files. # # translations- # generate-pot- # update-po- # Same as above, but only affect the files in the corresponding # po/ directory. (DOMAIN is actually the base name of the POT # file in the subdirectory, but that should match the directory name # anyway.) ADD_CUSTOM_TARGET(translations) SET_TARGET_PROPERTIES(translations PROPERTIES FOLDER "po") IF(NOT MSVC) # These packages are now used only to generate .pot and .po files FIND_PACKAGE(Gettext) FIND_PACKAGE(XGettext) IF(${XGETTEXT_FOUND}) ADD_CUSTOM_TARGET(generate-pot) ENDIF() IF(${GETTEXT_FOUND}) ADD_CUSTOM_TARGET(update-po) ENDIF() ENDIF() FIND_PACKAGE(Qt${QT_VERSION_MAJOR}LinguistTools REQUIRED) GET_TARGET_PROPERTY(lupdate_executable Qt${QT_VERSION_MAJOR}::lupdate IMPORTED_LOCATION) IF(EXISTS "${lupdate_executable}") MESSAGE(STATUS "Found lupdate: ${lupdate_executable}") ELSE() MESSAGE(STATUS "Could NOT find lupdate (missing: LUPDATE_EXECUTABLE)") ENDIF() GET_TARGET_PROPERTY(lconvert_executable Qt${QT_VERSION_MAJOR}::lconvert IMPORTED_LOCATION) IF(EXISTS "${lconvert_executable}") MESSAGE(STATUS "Found lconvert: ${lconvert_executable}") ELSE() MESSAGE(STATUS "Could NOT find lconvert (missing: LCONVERT_EXECUTABLE)") ENDIF() #GET_FILENAME_COMPONENT(qtbindirectory ${lupdate_executable} PATH) #SET(lconvert_executable "${qtbindirectory}/lconvert") # Creates translations directory if it doesn't exist file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/translations) # GETTEXT_CREATE_TRANSLATIONS(domain [DEFAULT_TARGET] lang1 ... langN) # # Creates custom build rules to create and install (G)MO files for the # specified languages. If the DEFAULT_TARGET option is used, the # translations will also be created when building the default target. # # "domain" is the translation domain, eg. "stellarium". A POT file # with the name ${domain}.pot must exist in the directory of the # CMakeLists.txt file invoking the macro. # # This macro also creates the "translations-${domain}" and # "update-po-${domain}" targets (see above for an explanation). # MACRO(GETTEXT_CREATE_TRANSLATIONS _domain _firstLang) file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/translations/${_domain}) SET(_gmoFiles) GET_FILENAME_COMPONENT(_absPotFile ${_domain}.pot ABSOLUTE) IF(${GETTEXT_FOUND}) # Update these PO files when building the "update-po-" and # "update-po" targets. ADD_CUSTOM_TARGET(update-po-${_domain}) ADD_DEPENDENCIES(update-po update-po-${_domain}) # Make sure the POT file is updated before updating the PO files. ADD_DEPENDENCIES(update-po-${_domain} generate-pot-${_domain}) ENDIF() SET(_addToAll) IF(${_firstLang} STREQUAL "DEFAULT_TARGET") SET(_addToAll "ALL") SET(_firstLang) ENDIF(${_firstLang} STREQUAL "DEFAULT_TARGET") FOREACH (_lang ${ARGN}) GET_FILENAME_COMPONENT(_absFile ${_lang}.po ABSOLUTE) FILE(RELATIVE_PATH _relFile ${PROJECT_SOURCE_DIR} ${_absFile}) SET(_gmoFile ${CMAKE_BINARY_DIR}/translations/${_domain}/${_lang}.qm) # Convert a PO file into a qm file. ADD_CUSTOM_COMMAND( OUTPUT ${_gmoFile} COMMAND ${lconvert_executable} -i ${_absFile} -o ${_gmoFile} DEPENDS ${_absFile} ) IF(${GETTEXT_MSGMERGE_EXECUTABLE}) # Update the PO file unconditionally when building the # "update-po-" target. Note that to see the file being # processed, we have to run "cmake -E echo", because the # COMMENT is not displayed by cmake... ADD_CUSTOM_COMMAND( TARGET update-po-${_domain} POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo "** Updating ${_relFile}" COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update -m --backup=none -s --lang=${_lang} ${_absFile} ${_absPotFile} VERBATIM ) ENDIF() INSTALL(FILES ${_gmoFile} DESTINATION ${SDATALOC}/translations/${_domain}/) SET(_gmoFiles ${_gmoFiles} ${_gmoFile}) ENDFOREACH (_lang) # Create the .qm files when building the "translations-" and # "translations" targets. ADD_CUSTOM_TARGET(translations-${_domain} ${_addToAll} DEPENDS ${_gmoFiles}) ADD_DEPENDENCIES(translations translations-${_domain}) SET_TARGET_PROPERTIES(translations-${_domain} PROPERTIES FOLDER "po") ENDMACRO(GETTEXT_CREATE_TRANSLATIONS ) ADD_SUBDIRECTORY(stellarium) ADD_SUBDIRECTORY(stellarium-sky) ADD_SUBDIRECTORY(stellarium-skycultures) ADD_SUBDIRECTORY(stellarium-skycultures-descriptions) ADD_SUBDIRECTORY(stellarium-planetary-features) IF(ENABLE_SCRIPTING) ADD_SUBDIRECTORY(stellarium-scripts) ENDIF() IF(USE_PLUGIN_REMOTECONTROL) ADD_SUBDIRECTORY(stellarium-remotecontrol) ENDIF()