From 62f67faaed7577e5bfab2148ffcdda529dfe19a6 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 26 May 2025 14:14:52 +0200 Subject: gui: generate locales --- gui/CMakeLists.txt | 50 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 5222efa..d9d3410 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -1,9 +1,15 @@ # SPDX-FileCopyrightText: 2025 Felix Morgner # SPDX-License-Identifier: LGPL-2.1-only +find_package("Gettext" REQUIRED) + # Resources -add_library("resources" STATIC) +file(GLOB UI_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/ui" CONFIGURE_DEPENDS "ui/*.ui") +file(GLOB STYLE_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/ui" CONFIGURE_DEPENDS "ui/*.css") +file(GLOB LANGUAGES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/lang" CONFIGURE_DEPENDS "lang/*.po") + +add_library("resources" OBJECT) target_link_libraries("resources" PUBLIC "PkgConfig::glib" @@ -13,15 +19,8 @@ glib_add_resources("resources" NAME "ui" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/ui" PREFIX "/ch/arknet/Turns" - XML_FILES - "participant_editor.ui" - "participant_row.ui" - "preferences.ui" - "tracker.ui" - "turn_order_view.ui" - CSS_FILES - "style.css" - "style-dark.css" + XML_FILES ${UI_SOURCES} + CSS_FILES ${STYLE_SOURCES} ) glib_add_resources("resources" @@ -31,8 +30,36 @@ glib_add_resources("resources" "metainfo.xml" ) +list(TRANSFORM LANGUAGES REPLACE "\.po" "") + +foreach(LANGUAGE IN LISTS LANGUAGES) + set(OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/locale/${LANGUAGE}/LC_MESSAGES") + set(OUTPUT_FILE "${OUTPUT_DIRECTORY}/turns.mo") + + add_custom_command(OUTPUT "${OUTPUT_FILE}" + COMMAND "${CMAKE_COMMAND}" + "-E" + "make_directory" + "${OUTPUT_DIRECTORY}" + COMMAND "${GETTEXT_MSGFMT_EXECUTABLE}" + "-D" + "${CMAKE_CURRENT_SOURCE_DIR}/lang" + "-o" + "${OUTPUT_FILE}" + "${LANGUAGE}.po" + COMMENT "Generating translations for ${LANGUAGE}" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/lang/${LANGUAGE}.po" + ) + + target_sources("resources" PRIVATE "${OUTPUT_FILE}") +endforeach() + +install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/locale" + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}" +) + target_compile_definitions("resources" PUBLIC - "LOCALEDIR=\"$,${CMAKE_INSTALL_FULL_LOCALEDIR},${CMAKE_CURRENT_BINARY_DIR}/$>\"" + "LOCALEDIR=\"$,${CMAKE_INSTALL_FULL_LOCALEDIR},${CMAKE_CURRENT_BINARY_DIR}/locale>\"" ) # Application @@ -81,6 +108,7 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ch.arknet.Turns.metainfo.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo" ) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ch.arknet.Turns.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/mime/packages" -- cgit v1.2.3