-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/117560/
-----------------------------------------------------------

(Updated April 16, 2014, 8:28 a.m.)


Status
------

This change has been marked as submitted.


Review request for Build System, Extra Cmake Modules and KDE Frameworks.


Repository: extra-cmake-modules


Description
-------

Translators (are going to) translate KF5 in trunk/l10n-kf5 ( 
http://websvn.kde.org/trunk/l10n-kf5/ ). It is necessary to support their 
work-flow, which consists of:
1) build the code from git
2) builds and installs all translations from one language

The patch makes several changes to ECMCreateQmFromPoFiles to support this 
work-flow:

- It splits the code into two functions: one to create the .qm and install 
them, another to build the .qm loader. This way the loader can be generated 
even if no translations are available.

- It changes the syntax of ecm_create_qm_from_po_files() to accept po files 
instead of a po directory. This is needed because within the same language 
directory some .po are going to be turned into .qm while others are turned into 
.mo.

- It creates "translation-N" targets (like CMake gettext code does) to support 
multiple calls within one cmake project.

- It installs to share/locale/<lang>/LC_MESSAGES (like gettext), because 
l10n-kf5 build system cannot know where the framework would decide to keep its 
.qm file, so it's simpler to use a standard place.

This potentially breaks existing framework builds, but only for developers who 
created manually po/ directories in their work tree (almost nobody, I expect), 
so I think it can be pushed as is. I already have the code ready to fix 
existing frameworks.

Those changes still support shipping translations within frameworks tarballs. 
Assuming this patch gets in, the build system of each framework is going to be 
patched like this:

-----------------------------------------------------
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b5e445c..c9a706c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,6 +16,8 @@ include(GenerateExportHeader)
 include(ECMSetupVersion)
 include(ECMGenerateHeaders)
 
+include(ECMCreateQmFromPoFiles)
+
 set(KF5_VERSION "4.98.0")
 
 ecm_setup_version(${KF5_VERSION}
@@ -37,14 +39,9 @@ if ("${CMAKE_BINARY_DIR}" STREQUAL 
"${CMAKE_CURRENT_BINARY_DIR}")
   find_package(KF5XmlGui ${KF5_VERSION} REQUIRED)
 endif()
 
-if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/po)
-  include(ECMCreateQmFromPoFiles)
-  ecm_create_qm_from_po_files(
-    PO_DIR po
-    POT_NAME kbookmarks5.pot
-    DATA_INSTALL_SUB_DIR kbookmarks
-    CREATE_LOADER kbookmarks_QM_LOADER
-  )
+file(GLOB PO_FILES "po/*.po")
+if (PO_FILES)
+  ecm_create_qm_from_po_files(PO_FILES ${PO_FILES} CATALOG_NAME kbookmarks5)
 endif()
 
 add_subdirectory(src)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 676b172..faa25e1 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,6 +1,8 @@
 # TODO
 remove_definitions(-DQT_NO_CAST_FROM_ASCII)
 
+ecm_create_qm_loader(kbookmarks_QM_LOADER kbookmarks5)
+
 set(kbookmarks_SRCS
   kbookmark.cpp
   kbookmarkaction.cpp
-----------------------------------------------------


Diffs
-----

  modules/ECMCreateQmFromPoFiles.cmake 92d0d1a 
  modules/ECMQmLoader.cpp.in 4fd9c11 

Diff: https://git.reviewboard.kde.org/r/117560/diff/


Testing
-------

Built translations for KF5 from within frameworks source and from a patched 
l10n-kf5.


Thanks,

Aurélien Gâteau

_______________________________________________
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel

Reply via email to