From 7def24826c298df77e34fd17bb72c570a22b04bd Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Sat, 6 Aug 2016 21:11:06 +0200 Subject: CMake: Add support for building and installing .mo files Introduce support for building translation domain-specific templates, merging them with the translations, and building a language-specific .mo file. The invocation of xgettext is done in the project source directory, not in the current source directory, and all paths are made relative to the project root, in order to have clean templates. This only supports the C++ source code for now, it unfortunately does not handle the shell scripts of deselect yet. --- po/CMakeLists.txt | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 po/CMakeLists.txt (limited to 'po/CMakeLists.txt') diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt new file mode 100644 index 000000000..0dd14839c --- /dev/null +++ b/po/CMakeLists.txt @@ -0,0 +1,20 @@ +apt_add_translation_domain(libapt-pkg${APT_PKG_MAJOR} apt-pkg) + +apt_add_translation_domain(apt # Domain + apt apt-cache apt-get apt-config apt-cdrom + apt-helper apt-mark + apt-private + # Methods + file copy store gpgv cdrom http https ftp rred rsh) + + +apt_add_translation_domain(apt-utils # Domain + apt-sortpkgs + apt-extracttemplates + apt-internal-solver + apt-dump-solver + apt-internal-planner + apt-ftparchive) + +# Add the translations for libapt-inst, and set the translation domain. +apt_add_translation_domain(libapt-inst${APT_INST_MAJOR} apt-inst) -- cgit v1.2.3 From 427fc68b2bfcf8fbc37c0443581db6e000cadfee Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Sun, 7 Aug 2016 14:24:14 +0200 Subject: CMake: po: Add mirror method I forgot this one, sorry --- po/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'po/CMakeLists.txt') diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index 0dd14839c..dc3622156 100644 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -5,7 +5,9 @@ apt_add_translation_domain(apt # Domain apt-helper apt-mark apt-private # Methods - file copy store gpgv cdrom http https ftp rred rsh) + file copy store gpgv cdrom http https ftp rred rsh + mirror +) apt_add_translation_domain(apt-utils # Domain -- cgit v1.2.3 From 6ff8727a0641b299ac32bc897d3ac1246b02061e Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Sun, 7 Aug 2016 15:52:59 +0200 Subject: CMake: Translations: Add support for shell scripts Rework the arguments to apt_add_translation_domain so a user can specify TARGETS and SCRIPTS, the latter being Shell scripts. For each language (TARGETS being C++, SCRIPTS being Shell), a separate template is generated via xgettext. Those templates are then merged together by using msgcomm. In case there are no Shell scripts in the translation domain, msgcomm will receive /dev/null instead of a shell translation template. This also reintroduces line numbers, as msgcomm would otherwise re-order the merged files not only by filename, but also by message string. It's unclear why it does that, it could just leave strings within a file alone. In contrast to the old build system, we use xgettext for shell scripts instead of bash --dump-strings, as it's just easier to use the same tool for everything. We also create valid headers. --- po/CMakeLists.txt | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) (limited to 'po/CMakeLists.txt') diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index dc3622156..c7dfcb0fb 100644 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -1,22 +1,28 @@ -apt_add_translation_domain(libapt-pkg${APT_PKG_MAJOR} apt-pkg) - -apt_add_translation_domain(apt # Domain - apt apt-cache apt-get apt-config apt-cdrom - apt-helper apt-mark - apt-private - # Methods - file copy store gpgv cdrom http https ftp rred rsh - mirror +apt_add_translation_domain( + DOMAIN libapt-pkg${APT_PKG_MAJOR} + TARGETS apt-pkg ) +apt_add_translation_domain( + DOMAIN apt + TARGETS apt apt-cache apt-get apt-config apt-cdrom apt-helper apt-mark + apt-private + # Methods + file copy store gpgv cdrom http https ftp rred rsh mirror + SCRIPTS ../dselect/install ../dselect/update +) -apt_add_translation_domain(apt-utils # Domain - apt-sortpkgs - apt-extracttemplates - apt-internal-solver - apt-dump-solver - apt-internal-planner - apt-ftparchive) +apt_add_translation_domain( + DOMAIN apt-utils + TARGETS apt-sortpkgs + apt-extracttemplates + apt-internal-solver + apt-dump-solver + apt-internal-planner + apt-ftparchive +) -# Add the translations for libapt-inst, and set the translation domain. -apt_add_translation_domain(libapt-inst${APT_INST_MAJOR} apt-inst) +apt_add_translation_domain( + DOMAIN libapt-inst${APT_INST_MAJOR} + TARGETS apt-inst +) -- cgit v1.2.3 From 9a5537fcc6d3ea98909360636a45bd3cf3aba1d1 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Sun, 7 Aug 2016 16:01:18 +0200 Subject: CMake: Translations: Build apt-all.pot and update .po files Merge all the per-domain templates into one template file using msgcomm, stripping any line numbers in the input files, and sorting the output per file. This should create reasonably stable .pot and .po files that do not change just because files move around. It should also be resilient against some line changes, as long as one translated line is not moved before/after another translated line. Gbp-Dch: ignore --- po/CMakeLists.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'po/CMakeLists.txt') diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index c7dfcb0fb..4fdac3959 100644 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -26,3 +26,13 @@ apt_add_translation_domain( DOMAIN libapt-inst${APT_INST_MAJOR} TARGETS apt-inst ) + +apt_add_update_po( + TEMPLATE + apt-all + DOMAINS + libapt-pkg${APT_PKG_MAJOR} + libapt-inst${APT_INST_MAJOR} + apt + apt-utils +) -- cgit v1.2.3 From ddf40a42f5a699086466990f85d86e6c4977524a Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Tue, 9 Aug 2016 11:58:28 +0200 Subject: CMake: Translations: Add a statistics target This is really useful stuff to have. Gbp-Dch: ignore --- po/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) (limited to 'po/CMakeLists.txt') diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index 4fdac3959..92ff39867 100644 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -36,3 +36,5 @@ apt_add_update_po( apt apt-utils ) + +apt_add_po_statistics() -- cgit v1.2.3 From 32a32d7501ace2859ba097ef8fb7ef665ca2f0ed Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Tue, 9 Aug 2016 18:14:41 +0200 Subject: CMake: Translations: Allow excluding languages from translation This seems to be needed for the hebrew translations. Gbp-Dch: ignore --- po/CMakeLists.txt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'po/CMakeLists.txt') diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index 92ff39867..174cc5d41 100644 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -1,6 +1,11 @@ +set(languages_excluded + he ## disabled by translator request #313283 +) + apt_add_translation_domain( DOMAIN libapt-pkg${APT_PKG_MAJOR} TARGETS apt-pkg + EXCLUDE_LANGUAGES ${languages_excluded} ) apt_add_translation_domain( @@ -10,6 +15,7 @@ apt_add_translation_domain( # Methods file copy store gpgv cdrom http https ftp rred rsh mirror SCRIPTS ../dselect/install ../dselect/update + EXCLUDE_LANGUAGES ${languages_excluded} ) apt_add_translation_domain( @@ -20,11 +26,13 @@ apt_add_translation_domain( apt-dump-solver apt-internal-planner apt-ftparchive + EXCLUDE_LANGUAGES ${languages_excluded} ) apt_add_translation_domain( DOMAIN libapt-inst${APT_INST_MAJOR} TARGETS apt-inst + EXCLUDE_LANGUAGES ${languages_excluded} ) apt_add_update_po( @@ -35,6 +43,8 @@ apt_add_update_po( libapt-inst${APT_INST_MAJOR} apt apt-utils + EXCLUDE_LANGUAGES + ${languages_excluded} ) -apt_add_po_statistics() +apt_add_po_statistics("${languages_excluded}") -- cgit v1.2.3