Search for and include Qt translations in static builds
[quassel.git] / i18n / CMakeLists.txt
1 # Generate and add translations
2 # The LINGUAS variable can be used to limit that set
3
4 if(QT_LRELEASE_EXECUTABLE)
5   # We always include quassel.ts
6   generate_qm(QM quassel)
7   set(qm_files ${QM})
8
9   # Find more languages
10   file(GLOB avail_tsfiles quassel_*.ts qt_*.ts)
11   foreach(TS_FILE ${avail_tsfiles})
12     get_filename_component(basename ${TS_FILE} NAME_WE)
13     string(REGEX REPLACE "q[^_]+_([a-zA-Z]+)(_.+)?$" "\\1" lang ${basename})
14     # test if we want this
15     set(flg 1)
16     if(LINGUAS)
17       string(REGEX MATCH "${lang}" flg ${LINGUAS})
18     endif(LINGUAS)
19     if(flg)
20       generate_qm(QM ${basename})
21       list(APPEND qm_files ${QM})
22       list(APPEND gen_linguas ${lang})
23     endif(flg)
24   endforeach(TS_FILE ${avail_tsfiles})
25   list(REMOVE_DUPLICATES gen_linguas)
26   message(STATUS "Including languages: ${gen_linguas}")
27 else(QT_LRELEASE_EXECUTABLE)
28   message(STATUS "WARNING: lrelease not found, you won't have translations!")
29 endif(QT_LRELEASE_EXECUTABLE)
30
31 # For a static build, we need to include Qt translations if available
32 if(STATIC AND QT_TRANSLATIONS_DIR)
33   foreach(LANG ${gen_linguas})
34     file(GLOB lang_files ${QT_TRANSLATIONS_DIR}/qt_${LANG}*.qm)
35     foreach(absfile ${lang_files})
36       get_filename_component(filename ${absfile} NAME)
37       message(STATUS "Importing ${filename}")
38       configure_file(${absfile} ${CMAKE_CURRENT_BINARY_DIR}/${filename} COPYONLY)
39       list(APPEND qm_files ${CMAKE_CURRENT_BINARY_DIR}/${filename})
40     endforeach(absfile ${lang_files})
41   endforeach(LANG ${gen_linguas})
42 endif(STATIC AND QT_TRANSLATIONS_DIR)
43
44 # Write resource file
45 set(resfile ${CMAKE_CURRENT_BINARY_DIR}/i18n.qrc)
46 file(WRITE ${resfile} "<!DOCTYPE RCC><RCC version=\"1.0\">\n"
47                       "<qresource prefix=\"/i18n\">\n")
48 foreach(file ${qm_files})
49   get_filename_component(file ${file} NAME)
50   file(APPEND ${resfile} "    <file>${file}</file>\n")
51 endforeach(file ${qm_files})
52 file(APPEND ${resfile} "</qresource>\n</RCC>\n")
53
54 #add_custom_command(OUTPUT ${resfile} DEPENDS ${qm_files})
55 set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${qm_files} i18n.qrc")
56
57 if(EMBED_DATA)
58   set(COMMON_RCS ${COMMON_RCS} ${resfile} PARENT_SCOPE)
59 else(EMBED_DATA)
60   install(FILES ${qm_files} DESTINATION ${DATA_INSTALL_DIR}/quassel/translations)
61 endif(EMBED_DATA)
62
63 add_custom_target(i18n DEPENDS ${qm_files})