Skip to content

Commit fc6087c

Browse files
authored
Merge branch 'master' into feature/issue_12113
2 parents e3a5da5 + a367f2b commit fc6087c

41 files changed

Lines changed: 12891 additions & 6224 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/skills/translation/SKILL.md

Lines changed: 407 additions & 0 deletions
Large diffs are not rendered by default.

addon/doxywizard/CMakeLists.txt

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,16 @@ if (force_qt STREQUAL "Qt6" OR NOT force_qt)
44
if (Qt6Core_FOUND)
55
message(STATUS "Using Qt6")
66
find_package(Qt6 REQUIRED COMPONENTS Widgets Gui Xml Svg)
7+
set(QT_VERSION_MAJOR "6")
78
macro(qt_wrap_cpp)
89
qt6_wrap_cpp(${ARGN})
910
endmacro()
1011
macro(qt_add_resources)
1112
qt6_add_resources(${ARGN})
1213
endmacro()
14+
macro(qt_add_translation)
15+
qt6_add_translation(${ARGN})
16+
endmacro()
1317
elseif (force_qt STREQUAL "Qt6")
1418
# no fallback to Qt5
1519
message(FATAL_ERROR "Qt6 not found")
@@ -22,12 +26,16 @@ if (force_qt STREQUAL "Qt5" OR NOT Qt6_FOUND)
2226
if (Qt5Core_FOUND)
2327
message(STATUS "Using Qt5")
2428
find_package(Qt5 REQUIRED COMPONENTS Widgets Gui Xml Svg)
29+
set(QT_VERSION_MAJOR "5")
2530
macro(qt_wrap_cpp)
2631
qt5_wrap_cpp(${ARGN})
2732
endmacro()
2833
macro(qt_add_resources)
2934
qt5_add_resources(${ARGN})
3035
endmacro()
36+
macro(qt_add_translation)
37+
qt5_add_translation(${ARGN})
38+
endmacro()
3139
elseif (force_qt STREQUAL "Qt5")
3240
message(FATAL_ERROR "Qt5 not found")
3341
else()
@@ -140,8 +148,58 @@ inputbool.h
140148
inputstring.h
141149
inputstrlist.h
142150
wizard.h
151+
languagedialog.h
143152
)
144153

154+
set(TRANSLATIONS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/i18n)
155+
file(GLOB DOXYWIZARD_TRANSLATION_FILES CONFIGURE_DEPENDS "${TRANSLATIONS_DIR}/doxywizard_*.ts")
156+
157+
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS LinguistTools QUIET)
158+
if(Qt${QT_VERSION_MAJOR}LinguistTools_FOUND)
159+
set(I18N_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/i18n)
160+
file(MAKE_DIRECTORY ${I18N_BINARY_DIR})
161+
set_source_files_properties(${DOXYWIZARD_TRANSLATION_FILES} PROPERTIES OUTPUT_LOCATION ${I18N_BINARY_DIR})
162+
qt_add_translation(doxywizard_QM_FILES ${DOXYWIZARD_TRANSLATION_FILES})
163+
get_target_property(QT_QMAKE_EXECUTABLE Qt${QT_VERSION_MAJOR}::qmake IMPORTED_LOCATION)
164+
execute_process(
165+
COMMAND "${QT_QMAKE_EXECUTABLE}" -query QT_INSTALL_TRANSLATIONS
166+
OUTPUT_VARIABLE QT_TRANSLATIONS_DIR
167+
OUTPUT_STRIP_TRAILING_WHITESPACE
168+
)
169+
message(STATUS "Qt translations dir: ${QT_TRANSLATIONS_DIR}")
170+
171+
set(TRANSLATIONS_QRC_CONTENT "<!DOCTYPE RCC>\n<RCC version=\"1.0\">\n <qresource>\n")
172+
set(doxywizard_QM_FILES_PATHS)
173+
foreach(ts_file ${DOXYWIZARD_TRANSLATION_FILES})
174+
get_filename_component(ts_name ${ts_file} NAME_WE)
175+
string(REGEX REPLACE "doxywizard_(.+)" "\\1" LOCALE "${ts_name}")
176+
set(qm_file "${I18N_BINARY_DIR}/${ts_name}.qm")
177+
list(APPEND doxywizard_QM_FILES_PATHS ${qm_file})
178+
179+
if (QT_TRANSLATIONS_DIR)
180+
if (EXISTS "${QT_TRANSLATIONS_DIR}/qtbase_${LOCALE}.qm")
181+
configure_file("${QT_TRANSLATIONS_DIR}/qtbase_${LOCALE}.qm" "${I18N_BINARY_DIR}/qtbase_${LOCALE}.qm" COPYONLY)
182+
string(APPEND TRANSLATIONS_QRC_CONTENT " <file>i18n/qtbase_${LOCALE}.qm</file>\n")
183+
else()
184+
message(WARNING "Qt translation file ${QT_TRANSLATIONS_DIR}/qtbase_${LOCALE}.qm not found")
185+
endif()
186+
endif()
187+
configure_file("${PROJECT_SOURCE_DIR}/src/i18n/config_${LOCALE}.xml" "${I18N_BINARY_DIR}/config_${LOCALE}.xml" COPYONLY)
188+
string(APPEND TRANSLATIONS_QRC_CONTENT " <file>i18n/config_${LOCALE}.xml</file>\n")
189+
string(APPEND TRANSLATIONS_QRC_CONTENT " <file>i18n/${ts_name}.qm</file>\n")
190+
endforeach()
191+
string(APPEND TRANSLATIONS_QRC_CONTENT " </qresource>\n</RCC>\n")
192+
193+
message(STATUS "i18n.qrc:\n${TRANSLATIONS_QRC_CONTENT}")
194+
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/i18n.qrc "${TRANSLATIONS_QRC_CONTENT}")
195+
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/i18n.qrc PROPERTIES OBJECT_DEPENDS "${doxywizard_QM_FILES_PATHS}")
196+
qt_add_resources(doxywizard_TRANSLATION_RESOURCES ${CMAKE_CURRENT_BINARY_DIR}/i18n.qrc)
197+
198+
else()
199+
message(STATUS "Qt Linguist tools not found, translation files will not be compiled")
200+
set(doxywizard_TRANSLATION_RESOURCES)
201+
endif()
202+
145203
qt_add_resources(doxywizard_RESOURCES_RCC doxywizard.qrc)
146204

147205
add_executable(doxywizard WIN32
@@ -153,11 +211,13 @@ inputbool.cpp
153211
inputstring.cpp
154212
inputint.cpp
155213
inputstrlist.cpp
214+
languagedialog.cpp
156215
${GENERATED_SRC_WIZARD}/settings.h
157216
${GENERATED_SRC_WIZARD}/config_doxyw.cpp
158217
${GENERATED_SRC_WIZARD}/config_doxyw.l.h
159218
${GENERATED_SRC_WIZARD}/configdoc.cpp
160219
${doxywizard_MOC}
220+
${doxywizard_TRANSLATION_RESOURCES}
161221
${doxywizard_RESOURCES_RCC}
162222
${PROJECT_SOURCE_DIR}/templates/icon/doxygen.rc
163223
)

0 commit comments

Comments
 (0)