Computer Assited Medical Intervention Tool Kit  version 4.0
CamiTKTranslate.h
Go to the documentation of this file.
17 
18  if(NOT CAMITK_DISABLE_TRANSLATION) #To allow enabling or not translation, directly from CMake configure command
19 
20  parse_arguments(CAMITK_TRANSLATION
21  "EXTRA_LANGUAGE" # possible lists
22  "USE_FLAGS" # possible options
23  ${ARGN}
24  )
25 
26  #insert here your new language _xx
27  set(CAMITK_TRANSLATIONS _en_fr)
28 
29  if(CAMITK_TRANSLATION_EXTRA_LANGUAGE)
30  set(CAMITK_TRANSLATIONS ${CAMITK_TRANSLATIONS}_${CAMITK_TRANSLATION_EXTRA_LANGUAGE})
31  endif()
32 
33  #create translate.pro file
34  file (GLOB HEADER_FILES *.h *.hpp)
35  file (GLOB CPP_FILES *.cpp)
36  file (GLOB UI_FILES *.ui)
37  set (FILES_TO_TRANSLATE ${FILES_TO_TRANSLATE} ${CPP_FILES} ${UI_FILES} ${HEADER_FILES} CACHE INTERNAL "Files to translate")
38 
39  file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/translate.pro "\nHEADERS = ")
40  foreach(F ${HEADER_FILES})
41  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/translate.pro ${F})
42  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/translate.pro " ")
43  endforeach()
44 
45  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/translate.pro "\nSOURCES = ")
46  foreach(F ${CPP_FILES})
47  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/translate.pro ${F})
48  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/translate.pro " ")
49  endforeach()
50 
51  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/translate.pro "\nFORMS = ")
52  foreach(F ${UI_FILES})
53  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/translate.pro ${F})
54  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/translate.pro " ")
55  endforeach()
56 
57  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/translate.pro "\nTRANSLATIONS = ")
58 
59  string(TOLOWER ${CAMITK_TRANSLATIONS} CAMITK_TRANSLATIONS)
60  string(LENGTH ${CAMITK_TRANSLATIONS} longueur)
61  string(FIND ${CAMITK_TRANSLATIONS} "_" index)
62 
63  while(index GREATER -1)
64  string(SUBSTRING ${CAMITK_TRANSLATIONS} ${index} 3 language)
65 
66  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/translate.pro ${CMAKE_CURRENT_BINARY_DIR}/translate${language}.ts)
67  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/translate.pro " ")
68 
69  string(LENGTH ${CAMITK_TRANSLATIONS} longueur)
70  math(EXPR index "${index} + 1 ")
71  math(EXPR longueur "${longueur} - ${index}")
72  string(SUBSTRING ${CAMITK_TRANSLATIONS} ${index} ${longueur} CAMITK_TRANSLATIONS)
73 
74  string(LENGTH ${CAMITK_TRANSLATIONS} longueur)
75  string(FIND ${CAMITK_TRANSLATIONS} "_" index)
76 
77  endwhile(index GREATER -1)
78 
79  #update translate_xx.ts files and create translate_xx.qm files
80  set(WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate )
81  find_path(QT_BINARY_DIR NAMES lupdate)
82  execute_process (COMMAND ${QT_BINARY_DIR}/lupdate -silent ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/translate.pro)
83  find_path(QT_BINARY_DIR NAMES lrelease)
84  execute_process (COMMAND ${QT_BINARY_DIR}/lrelease -silent ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/translate.pro)
85 
86  # remove the translate.pro file
87  file(REMOVE ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/translate.pro)
88 
89 
90  # create the translate_extension_name.qrc file
91  # Remember that the .qrc filename must be unique
92  # Also, when having loaded all .qrc files within the application, you have to point on
93  # each .qm file separately (i.e. use a specific prefix on each .qrc file)
94  get_directory_name(${CMAKE_CURRENT_SOURCE_DIR} EXTENSION_NAME)
95 
96  #create the translate.qrc file
97  set(TRANSLATE_QRC_FILE ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate_${EXTENSION_NAME}.qrc)
98  file(WRITE ${TRANSLATE_QRC_FILE} "<!DOCTYPE RCC>\n")
99  file(APPEND ${TRANSLATE_QRC_FILE} "<RCC version=\"1.0\">\n")
100  file(APPEND ${TRANSLATE_QRC_FILE} "\t<qresource prefix=\"/translate_${EXTENSION_NAME}\">\n")
101 
102  file (GLOB QM_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate ${CMAKE_CURRENT_SOURCE_DIR}/resources/translate/*.qm)
103  foreach(F ${QM_FILES})
104  file(APPEND ${TRANSLATE_QRC_FILE} "\t\t<file>translate/${F}</file>\n")
105  endforeach(F ${QM_FILES})
106 
107  file(APPEND ${TRANSLATE_QRC_FILE} "\t</qresource>\n")
108  file(APPEND ${TRANSLATE_QRC_FILE} "</RCC>\n")
109 
110  #create the flags.qrc file
111  if(CAMITK_TRANSLATION_USE_FLAGS)
112  file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/resources/flags.qrc "<!DOCTYPE RCC>\n")
113  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/flags.qrc "<RCC version=\"1.0\">\n")
114  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/flags.qrc "\t<qresource prefix=\"/flags\">\n")
115 
116  file(GLOB PNG_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/resources ${CMAKE_CURRENT_SOURCE_DIR}/resources/flags/16/*.png)
117 
118  foreach(F ${PNG_FILES})
119  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/flags.qrc "\t\t<file>${F}</file>\n")
120  endforeach(F ${PNG_FILES})
121 
122  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/flags.qrc "\t</qresource>\n")
123  file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/resources/flags.qrc "</RCC>\n")
124  endif()
125  endif()
126 end(){)
A pseudo-namespace used to group CMake macros and functions.
get_directory_name()
macro get_directory_name set the variable VariableName to the name of the last directory of FullPathD...
Definition: GetDirectoryName.h:14
camitk_translate()
macro camitk_translate allows to perform the translation of any project (action, component, application and libraries) in several languages.
Definition: CamiTKTranslate.h:16
parse_arguments()
macro parse_arguments is a fork from CMakeMacroParseArguments see http://www.cmake.org/Wiki/CMakeMacroParseArguments for more information
Definition: ParseArguments.h:13
test result execute_process(COMMAND ${CMAKE_COMMAND} -E remove -f ${CAMITK_TEST_COMMAND_FILE} ${CAMITK_TEST_COMMAND_RESULT_FILE} ${CAMITK_TEST_COMMAND_OUTPUT_FILE} ${CAMITK_TEST_PASS_FILE_COMMAND_FILE} ${CAMITK_TEST_PASS_FILE_OUTPUT_FILE} ${CAMITK_TEST_PASS_FILE_RESULT_FILE}) file(WRITE $
Definition: CamiTKTestPassFile.h:19