99c87a3b56e8f94ebdda0300d9d1ab9081ebc3ca
[quassel.git] / cmake / modules / QuasselGenerateTranslations.cmake
1 # This file contains macros dealing with translation
2 # files for Quassel IRC.
3
4 # Copyright (C) 2008 by the Quassel Project, devel@quassel-irc.org
5 #
6 # Redistribution and use is allowed according to the terms of the BSD license.
7 # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
8
9
10 macro(quassel_generate_qm outvar basename)
11   set(input ${CMAKE_SOURCE_DIR}/i18n/${basename}.ts)
12   set(output ${CMAKE_CURRENT_BINARY_DIR}/${basename}.qm)
13   add_custom_command(OUTPUT ${output}
14           COMMAND ${QT_LRELEASE_EXECUTABLE}
15           ARGS ${input}
16                -qm ${output}
17                -silent -compress
18           DEPENDS ${CMAKE_SOURCE_DIR}/i18n/${basename}.ts)
19   set(${outvar} ${output})
20 endmacro(quassel_generate_qm outvar basename)
21
22 macro(quassel_generate_i18n_resource outvar)
23   set(linguas ${ARGN})
24   if(QT_LRELEASE_EXECUTABLE)
25     # We always include quassel.ts
26     quassel_generate_qm(QM quassel)
27     set(outfiles ${QM})
28
29     # Find more languages
30     file(GLOB avail_tsfiles ${CMAKE_SOURCE_DIR}/i18n/quassel_*.ts)
31     foreach(TS_FILE ${avail_tsfiles})
32       get_filename_component(basename ${TS_FILE} NAME_WE)
33       string(REGEX REPLACE "quassel_(.+)$" "\\1" lang ${basename})
34       # test if we want this
35       set(flg 1)
36       if(linguas)
37         string(REGEX MATCH "${lang}" flg ${linguas})
38       endif(linguas)
39       if(flg)
40         quassel_generate_qm(QM ${basename})
41         set(outfiles ${outfiles} ${QM})
42         set(gen_linguas "${gen_linguas} ${lang}")
43       endif(flg)
44     endforeach(TS_FILE ${avail_tsfiles})
45
46     # Write resource file
47     set(resfile ${CMAKE_CURRENT_BINARY_DIR}/i18n.qrc)
48     file(WRITE ${resfile} "<!DOCTYPE RCC><RCC version=\"1.0\">\n"
49                           "<qresource prefix=\"/i18n\">\n")
50     foreach(file ${outfiles})
51       get_filename_component(file ${file} NAME)
52       file(APPEND ${resfile} "    <file>${file}</file>\n")
53     endforeach(file ${outfiles})
54     file(APPEND ${resfile} "</qresource>\n</RCC>\n")
55     add_custom_command(OUTPUT ${resfile} DEPENDS ${outfiles})
56     set_directory_properties(PROPERTIES
57           ADDITIONAL_MAKE_CLEAN_FILES "${outfiles} i18n.qrc")
58
59     # Generate resource
60     qt4_add_resources(RC_OUT ${resfile})
61     set(${outvar} ${RC_OUT})
62
63     message(STATUS "Including languages:${gen_linguas}")
64   else(QT_LRELEASE_EXECUTABLE)
65     message(STATUS "WARNING: lrelease not found, you won't have translations!")
66   endif(QT_LRELEASE_EXECUTABLE)
67 endmacro(quassel_generate_i18n_resource outvar)
68